llvm-project/llvm/test/Analysis/BasicAA
Nikita Popov f6f6f6375d [BasicAA] Fix BatchAA results for phi-phi assumptions
Change the way NoAlias assumptions in BasicAA are handled. Instead of
handling this inside the phi-phi code, always initially insert a
NoAlias result into the map and keep track whether it is used.
If it is used, then we require that we also get back NoAlias from
the recursive queries. Otherwise, the entry is changed to MayAlias.

Additionally, keep track of all location pairs we inserted that may
still be based on assumptions higher up. If it turns out one of those
assumptions is incorrect, we flush them from the cache.

The compile-time impact for the new implementation is significantly
higher than the previous iteration of this patch:
https://llvm-compile-time-tracker.com/compare.php?from=c0bb9859de6991cc233e2dedb978dd118da8c382&to=c07112373279143e37568b5bcd293daf81a35973&stat=instructions
However, it should avoid the exponential runtime cases we run into
if we don't cache assumption-based results entirely.

This also produces better results in some cases, because NoAlias
assumptions can now start at any root, rather than just phi-phi pairs.
This is not just relevant for analysis quality, but also for BatchAA
consistency: Otherwise, results would once again depend on query order,
though at least they wouldn't be wrong.

This ended up both more complicated and more expensive than I hoped,
but I wasn't able to come up with another solution that satisfies all
the constraints.

Differential Revision: https://reviews.llvm.org/D91936
2021-01-06 22:15:30 +01: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 [ValueTracking] Add tracking of the alignment assume bundle 2020-10-27 12:16:45 +00: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 [NewPM][BasicAA] basicaa -> basic-aa in Analysis/BasicAA 2020-06-26 14:58:01 -07: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] Remove unnecessary known size requirement 2020-11-28 10:17:12 +01: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-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 Revert "[BasicAA] Handle two unknown sizes for GEPs" 2020-12-18 17:59:12 +00: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 [BasicAA] phi-values-usage.ll - remove unused check prefix 2020-11-10 14:31:03 +00: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 Revert "[BasicAA] Handle two unknown sizes for GEPs" 2020-12-18 17:59:12 +00: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