llvm-6502/test/Analysis/BasicAA
Ahmed Bougacha 9c252165a7 [BasicAA] Try to disambiguate GEPs through arrays of structs into
different fields.

We can show that two GEPs off of the same (possibly multidimensional)
array of structs, into different fields, can't alias.  Quoting:

For two GEPOperators GEP1 and GEP2, if we find that:
- both GEPs begin indexing from the exact same pointer;
- the last indices in both GEPs are constants, indexing into a struct;
- said indices are different, hence,the pointed-to fields are different;
- and both GEPs only index through arrays prior to that;

this lets us determine that the struct that GEP1 indexes into and the
struct that GEP2 indexes into must either precisely overlap or be
completely disjoint.  Because they cannot partially overlap, indexing
into different non-overlapping fields of the struct will never alias.

The other BasicAA::aliasGEP rules worked in some cases, but not all
(for example, the i32x3 struct in the testcase).
We can add this simple ad-hoc rule to complement them.

rdar://19717375
Differential Revision: http://reviews.llvm.org/D7453


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@228498 91177308-0d34-0410-b5e6-96231b3b80d8
2015-02-07 17:04:29 +00:00
..
2003-02-26-AccessSizeTest.ll
2003-03-04-GEPCrash.ll
2003-04-22-GEPProblem.ll
2003-04-25-GEPCrash.ll
2003-05-21-GEP-Problem.ll
2003-06-01-AliasCrash.ll
2003-07-03-BasicAACrash.ll
2003-09-19-LocalArgument.ll
2003-11-04-SimpleCases.ll [BasicAA] Add datalayouts to make some tests more useful. NFC. 2015-02-05 21:10:14 +00:00
2003-12-11-ConstExprGEP.ll [BasicAA] Add datalayouts to make some tests more useful. NFC. 2015-02-05 21:10:14 +00:00
2004-07-28-MustAliasbug.ll
2006-03-03-BadArraySubscript.ll BasicAA: Use reachabilty instead of dominance for checking value equality in phi 2014-01-03 05:47:03 +00:00
2006-11-03-BasicAAVectorCrash.ll
2007-01-13-BasePointerBadNoAlias.ll
2007-08-01-NoAliasAndCalls.ll
2007-08-01-NoAliasAndGEP.ll [BasicAA] Add datalayouts to make some tests more useful. NFC. 2015-02-05 21:10:14 +00:00
2007-08-05-GetOverloadedModRef.ll
2007-10-24-ArgumentsGlobals.ll
2007-11-05-SizeCrash.ll Reject alias to undefined symbols in the verifier. 2014-03-12 20:15:49 +00:00
2007-12-08-OutOfBoundsCrash.ll Reject alias to undefined symbols in the verifier. 2014-03-12 20:15:49 +00:00
2008-04-15-Byval.ll Delete -std-compile-opts. 2014-10-16 20:00:02 +00:00
2008-06-02-GEPTailCrash.ll
2008-11-23-NoaliasRet.ll
2009-03-04-GEPNoalias.ll
2009-10-13-AtomicModRef.ll
2009-10-13-GEP-BaseNoAlias.ll
2010-09-15-GEP-SignedArithmetic.ll
2014-03-18-Maxlookup-reached.ll PR15967 Fix in basicaa for faulty returning no alias. 2014-03-26 21:30:19 +00:00
aligned-overread.ll
args-rets-allocas-loads.ll
assume.ll Add @llvm.assume, lowering, and some basic properties 2014-07-25 21:13:35 +00:00
byval.ll
cas.ll
constant-over-index.ll [BasicAA] Add datalayouts to make some tests more useful. NFC. 2015-02-05 21:10:14 +00:00
cs-cs.ll Improve BasicAA CS-CS queries (redux) 2014-07-17 01:28:25 +00:00
dag.ll
empty.ll
featuretest.ll
full-store-partial-alias.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
gcsetest.ll CHECK-LABELize test 2014-09-15 17:56:56 +00:00
gep-alias.ll Use correct size for address space in BasicAA. 2013-11-16 00:36:43 +00:00
getmodrefinfo-cs-cs.ll
global-size.ll Use correct size for address space in BasicAA. 2013-11-16 00:36:43 +00:00
intrinsics.ll
invariant_load.ll IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
memset_pattern.ll
modref.ll CHECK-LABELize test 2014-09-15 17:56:56 +00:00
must-and-partial.ll
no-escape-call.ll
noalias-bugs.ll BasicAA: We need to check both access sizes when comparing a gep and an 2014-01-16 04:53:18 +00:00
noalias-geps.ll Use CHECK-LABEL 2013-09-30 23:31:55 +00:00
noalias-param.ll
nocapture.ll
phi-aa.ll Revert r219432 - "Revert "[BasicAA] Revert "Revert r218714 - Make better use of zext and sign information.""" 2014-11-13 09:16:54 +00:00
phi-and-select.ll
phi-spec-order.ll BasicAA: Use reachabilty instead of dominance for checking value equality in phi 2014-01-03 05:47:03 +00:00
phi-speculation.ll
pr18573.ll Test case I forgot to 'add' for r201126. 2014-02-12 03:58:47 +00:00
pure-const-dce.ll
store-promote.ll
struct-geps.ll [BasicAA] Try to disambiguate GEPs through arrays of structs into 2015-02-07 17:04:29 +00:00
tailcall-modref.ll
underlying-value.ll
unreachable-block.ll
zext.ll Revert r219432 - "Revert "[BasicAA] Revert "Revert r218714 - Make better use of zext and sign information.""" 2014-11-13 09:16:54 +00:00