llvm-project/llvm/test/Analysis
Max Kazantsev dc80366d52 [ScalarEvolution] Apply Depth limit to getMulExpr
This is a fix for PR33292 that shows a case of extremely long compilation
of a single .c file with clang, with most time spent within SCEV.

We have a mechanism of limiting recursion depth for getAddExpr to avoid
long analysis in SCEV. However, there are calls from getAddExpr to getMulExpr
and back that do not propagate the info about depth. As result of this, a chain

  getAddExpr -> ... .> getAddExpr -> getMulExpr -> getAddExpr -> ... -> getAddExpr

can be extremely long, with every segment of getAddExpr's being up to max depth long.
This leads either to long compilation or crash by stack overflow. We face this situation while
analyzing big SCEVs in the test of PR33292.

This patch applies the same limit on max expression depth for getAddExpr and getMulExpr.

Differential Revision: https://reviews.llvm.org/D33984

llvm-svn: 305463
2017-06-15 11:48:21 +00:00
..
AliasSet Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts 2017-05-01 17:07:56 +00:00
AssumptionCache Add files I seem to have dropped in my revert (r290086). 2016-12-19 08:32:13 +00:00
BasicAA Add '#' to test regex that I forgot in r303025. 2017-05-15 04:58:27 +00:00
BlockFrequencyInfo [BFI] Add new LazyBFI analysis pass 2016-07-13 05:01:48 +00:00
BranchProbabilityInfo [BPI] Don't assume that strcmp returning >0 is more likely than <0 2017-06-08 09:44:40 +00:00
CFLAliasAnalysis [CFLAA] Add missing break; note things are broken. 2017-05-31 02:35:26 +00:00
CallGraph [CG] Add a new pass manager printer pass for the old call graph and 2016-03-10 11:24:11 +00:00
ConstantFolding [InstSimplify] Constant fold the new GEP in SimplifyGEPInst. 2017-06-06 10:17:14 +00:00
CostModel Revert r291254: [AArch64] Reduce vector insert/extract cost for Falkor 2017-05-24 16:48:39 +00:00
Delinearization [SCEV] Assume parameters coming from function calls contain IVs 2017-05-27 15:17:49 +00:00
DemandedBits [Analysis] Support bitreverse in -demanded-bits pass 2017-04-13 16:44:25 +00:00
DependenceAnalysis [DependenceAnalysis] Check if result of getConstantPart is null 2016-04-04 18:13:18 +00:00
DivergenceAnalysis AMDGPU: Change DivergenceAnalysis for function arguments 2017-04-19 17:42:34 +00:00
DominanceFrontier Another fix the testcase introduced by r261903 - Add the missing matches 2016-02-26 03:41:47 +00:00
Dominators Remove useless pass from the pipeline in test/Analysis/Dominators/2007-01-14-BreakCritEdges.ll. 2016-07-25 16:27:34 +00:00
GlobalsModRef Fix regression from my recent GlobalsAA fix. 2016-10-24 21:47:44 +00:00
IVUsers Re-enable "[SCEV] Do not fold dominated SCEVUnknown into AddRecExpr start" 2017-05-26 06:47:04 +00:00
LazyCallGraph [LCG] Spell the printing pass pipeline name for the lazy call graph 2016-03-10 11:24:06 +00:00
LazyValueAnalysis [LVI Printer] Rely on the LVI analysis functions rather than the LVI cache 2017-06-06 19:25:31 +00:00
Lint
LoopAccessAnalysis [LV/LoopAccess] Check statically if an unknown dependence distance can be 2017-02-12 09:32:53 +00:00
LoopInfo
MemoryDependenceAnalysis [PM] The assumption cache is fundamentally designed to be self-updating, 2017-01-15 00:26:18 +00:00
MemorySSA Remove readnone from invariant.group.barrier 2017-04-12 20:45:12 +00:00
PostDominators Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
ProfileSummary Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
RegionInfo Fix minor typo introduce in r297014 2017-03-06 16:03:26 +00:00
ScalarEvolution [ScalarEvolution] Apply Depth limit to getMulExpr 2017-06-15 11:48:21 +00:00
ScopedNoAliasAA [ScopedNoAliasAA] Make test basic.ll less confusing 2016-03-07 17:49:10 +00:00
TypeBasedAliasAnalysis AA: Use generic intrinsics for tests instead of target specific ones 2017-05-13 00:12:52 +00:00
ValueTracking [ValueTracking] use nonnull argument attribute to eliminate null checks 2017-02-12 15:35:34 +00:00
alias-analysis-uses.ll