llvm-project/llvm/test/Analysis
Philip Reames 83ae49671d [basicaa] Recurse through a single phi input
BasicAA knows how to analyze phis, but to control compile time, we're fairly limited in doing so. This patch loosens that restriction just slightly when there is exactly one phi input (after discounting induction variable increments). The result of this is that we can handle more cases around nested and sibling loops with pointer induction variables.

A few points to note.
* This is deliberately extremely restrictive about recursing through at most one input of the phi.  There's a known general problem with BasicAA sometimes hitting exponential compile time already, and this patch makes every effort not to compound the problem.  Once the root issue is fixed, we can probably loosen the restrictions here a bit.
* As seen in the test file, we're still missing cases which aren't *directly* based on phis (e.g. using the indvar increment). I believe this to be a separate problem and am going to explore this in another patch once this one lands.
* As seen in the test file, this results in the unfortunate fact that using phivalues sometimes results in worse quality results. I believe this comes down to an oversight in how recursive phi detection was implemented for phivalues. I'm happy to tackle this in a follow up change.

Differential Revision: https://reviews.llvm.org/D97401
2021-03-04 13:07:06 -08:00
..
AliasSet [noalias.decl] Look through llvm.experimental.noalias.scope.decl 2021-01-19 20:09:42 +01:00
AssumptionCache Revert "[AssumptionCache] Avoid dangling llvm.assume calls in the cache" 2021-02-11 12:17:38 -06:00
BasicAA [basicaa] Recurse through a single phi input 2021-03-04 13:07:06 -08:00
BlockFrequencyInfo [BPI] Improve static heuristics for "cold" paths. 2020-12-23 22:47:36 +07:00
BranchProbabilityInfo [test] Pin some tests to legacy PM 2020-12-26 13:46:02 -08:00
CFLAliasAnalysis [BasicAA] Rename -disable-basicaa to -disable-basic-aa to be consistent with the canonical name "basic-aa" 2020-06-26 20:55:44 -07:00
CallGraph Option to ignore llvm[.compiler].used uses in hasAddressTaken() 2021-02-25 10:06:24 -08:00
CostModel [CostModel][SVE] Add cost model for shuffle reverse with i1 and scalable vector 2021-03-04 18:52:59 +00:00
DDG Fix print-dot-ddg.ll so it doesn't try to write to the source tree (& uses the test temp paths instead) 2021-01-07 19:57:14 -08:00
Delinearization [Delinearization][NewPM] Port delinearization to NPM 2020-09-21 17:59:08 -07:00
DemandedBits Precommit analysis/etc tests for inselt poison placeholder 2020-12-24 12:14:24 +09:00
DependenceAnalysis [DependenceAnalysis][NewPM] Fix tests to work under NPM 2020-09-15 11:11:23 -07:00
DivergenceAnalysis [NewPM] Introduce (GPU)DivergenceAnalysis in the new pass manager 2021-02-16 10:26:45 +05:30
DominanceFrontier
Dominators [Dominators][NewPM] Pin tests with -analyze to legacy PM 2020-09-15 11:59:00 -07:00
FunctionPropertiesAnalysis Add new function properties to FunctionPropertiesAnalysis 2020-07-23 12:46:47 -07:00
GlobalsModRef [GlobalsAA] Teach to handle `addrspacecast`. 2020-11-09 00:04:52 -05:00
IRSimilarityIdentifier [IROutliner] Adding instruction strings to IRSimilarityPrinting diagnostics. 2021-02-09 12:11:47 -06:00
IVUsers [SCEV] Strenthen nowrap flags after constant folding for mul exprs 2020-10-25 19:43:58 +01:00
LazyCallGraph [LazyCallGraph] Build SCCs of the reference graph in order 2020-11-02 13:22:42 -08:00
LazyValueAnalysis [JumpThreading] Make -print-lvi-after-jump-threading work with NPM 2020-11-17 23:15:20 -08:00
LegacyDivergenceAnalysis [NewPM] Introduce (GPU)DivergenceAnalysis in the new pass manager 2021-02-16 10:26:45 +05:30
Lint OpaquePtr: Update more tests to use typed sret 2020-11-20 20:08:43 -05:00
LoopAccessAnalysis [llvm][NFC] Disallow all warnings in TypeSize tests 2021-01-06 17:17:07 +00:00
LoopCacheAnalysis/PowerPC
LoopInfo [LoopInfo][NewPM] Fix tests in Analysis/LoopInfo under NPM 2020-09-22 11:31:00 -07:00
LoopNestAnalysis [LoopNest] Use `getUniqueSuccessor()` instead when checking empty blocks 2021-02-24 09:53:12 +08:00
MemoryDependenceAnalysis OpaquePtr: Update more tests to use typed sret 2020-11-20 20:08:43 -05:00
MemorySSA [MemorySSA] Don't treat lifetime.end as NoAlias 2021-02-04 20:58:28 +01:00
MustExecute Port print-must-be-executed-contexts and print-mustexecute to NPM 2020-11-03 21:06:46 -08:00
PhiValues
PostDominators [PostDominators][NewPM] Fix tests to work under NPM 2020-09-15 11:19:01 -07:00
ProfileSummary
RegionInfo [RegionInfo][NewPM] Fix RegionInfo tests to work under NPM 2020-09-15 11:12:14 -07:00
ScalarEvolution Add datalayout to test added in 7e3183d73 2021-02-19 13:10:19 -08:00
ScopedNoAliasAA [MemCpyOpt] Correctly merge alias scopes during call slot optimization 2020-12-03 09:23:37 -08:00
StackSafetyAnalysis [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
TypeBasedAliasAnalysis Reland "[Libcalls, Attrs] Annotate libcalls with noundef" 2021-02-20 06:18:48 +01:00
ValueTracking reland [InstCombine] convert assumes to operand bundles 2021-02-13 13:03:11 +01:00
alias-analysis-uses.ll [NewPM] Pin tests with -debug-pass to legacy PM 2020-09-22 17:54:25 -07:00