llvm-project/llvm/test/Analysis/BasicAA
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
..
128-bit-ptr.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-02-26-AccessSizeTest.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-03-04-GEPCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-04-22-GEPProblem.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-04-25-GEPCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-05-21-GEP-Problem.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-06-01-AliasCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-07-03-BasicAACrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-09-19-LocalArgument.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-11-04-SimpleCases.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2003-12-11-ConstExprGEP.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2004-07-28-MustAliasbug.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2006-03-03-BadArraySubscript.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2006-11-03-BasicAAVectorCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-01-13-BasePointerBadNoAlias.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-08-01-NoAliasAndCalls.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-08-01-NoAliasAndGEP.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-08-05-GetOverloadedModRef.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-10-24-ArgumentsGlobals.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-11-05-SizeCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2007-12-08-OutOfBoundsCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2008-04-15-Byval.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
2008-06-02-GEPTailCrash.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2008-11-23-NoaliasRet.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2009-03-04-GEPNoalias.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2009-10-13-AtomicModRef.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2009-10-13-GEP-BaseNoAlias.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2010-09-15-GEP-SignedArithmetic.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
2014-03-18-Maxlookup-reached.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
aligned-overread.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
args-rets-allocas-loads.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
assume-index-positive.ll [BasicAA] Make sure context instruction is symmetric 2020-12-25 11:35:46 +01:00
assume.ll [LangRef] Adjust guarantee for llvm.memcpy to also allow equal arguments. 2020-09-05 19:18:23 +01:00
bug.23540.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
bug.23626.ll [BasicAA] Handle known non-zero variable index 2020-12-13 13:20:05 +01:00
byval.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
call-attrs.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
cas.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
constant-over-index.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
cs-cs-arm.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
cs-cs.ll [AA] Split up LocationSize::unknown() 2020-11-26 18:39:55 +01:00
dag.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
deoptimize.ll [BasicAA] Deoptimize intrinsics don't modify memory 2020-11-19 12:08:33 -08:00
dereferenceable.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
empty.ll [BasicAA] Remove -basicaa alias 2020-07-07 10:44:23 -07:00
fallback-mayalias.ll [BasicAA] Migrate "same base pointer" logic to decomposed GEPs 2020-12-06 10:27:35 +01:00
featuretest.ll reland [InstCombine] convert assumes to operand bundles 2021-02-13 13:03:11 +01:00
full-store-partial-alias.ll [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
gcsetest.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
gep-alias.ll Reland "[Libcalls, Attrs] Annotate libcalls with noundef" 2021-02-20 06:18:48 +01:00
gep-and-alias-64.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
gep-and-alias.ll [BasicAA] Rename deprecated -basicaa to -basic-aa 2020-06-26 20:41:37 -07:00
gep-decomposition-limit.ll [BasicAA] Remove checks for GEP decomposition limit reached 2020-11-12 20:43:38 +01:00
getmodrefinfo-cs-cs.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
global-size.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
guards.ll [LangRef] Adjust guarantee for llvm.memcpy to also allow equal arguments. 2020-09-05 19:18:23 +01:00
intrinsics-arm.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
intrinsics.ll [IR] Make nosync, nofree and willreturn default for intrinsics. 2020-10-20 11:57:19 +02:00
invalidation.ll
invariant_group.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
invariant_load.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
libfuncs.ll [InferAttrs] Add nocapture/writeonly to string/mem libcalls 2020-10-29 20:06:43 +01:00
memset_pattern.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
modref.ll Recommit "[DSE] Switch to MemorySSA-backed DSE by default." 2020-10-16 09:02:53 +01:00
must-and-partial.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
negoffset.ll [basicaa] Rewrite isGEPBaseAtNegativeOffset in terms of index difference [mostly NFC] 2021-03-03 09:03:28 -08:00
no-escape-call.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
noalias-bugs.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
noalias-geps.ll [BasicAA] Remove unnecessary size limitation 2020-11-14 16:51:31 +01:00
noalias-param.ll [AA] byval argument is identified function local 2020-12-21 20:18:23 +01:00
noalias-scope-decl.ll [noalias.decl] Look through llvm.experimental.noalias.scope.decl 2021-01-19 20:09:42 +01:00
noalias-wraparound-bug.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
nocapture.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
phi-aa.ll [BasicAA] Always strip single-argument phi nodes 2021-02-18 23:07:50 +01:00
phi-and-select.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
phi-loop.ll [BasicAA] Enable -basic-aa-recphi by default 2020-08-04 10:43:42 +01:00
phi-spec-order.ll [BasicAA] Add extra check in phi-spec-order.ll (NFC) 2020-12-11 21:20:51 +01:00
phi-speculation.ll [BasicAA] Fix BatchAA results for phi-phi assumptions 2021-01-06 22:15:30 +01:00
phi-values-usage.ll [MemCopyOpt] Enable MemorySSA by default 2021-02-19 18:06:25 +01:00
pr18573.ll
pr31761.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
pr35821.ll
pr35843.ll
ptrmask.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
pure-const-dce.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
q.bad.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
recphi.ll [basicaa] Recurse through a single phi input 2021-03-04 13:07:06 -08:00
returned.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
sequential-gep.ll [BasicAA] Pass AC/DT to isKnownNonEqual() 2020-12-25 18:29:20 +01:00
store-promote.ll [NewPM][MSSA] Fix failures under NPM due to -enable-mssa-loop-dependency 2020-09-23 15:17:43 -07:00
struct-geps.ll [BasicAA] Generalize base offset modulus handling 2020-11-18 21:48:49 +01:00
tail-byval.ll OpaquePtr: Bulk update tests to use typed byval 2020-11-20 14:00:46 -05:00
tailcall-modref.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
underlying-value.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
unreachable-block.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
vscale.ll [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07:00
zext.ll [BasicAA] Make alias GEP positive offset handling symmetric 2020-11-17 18:05:34 +01:00