llvm-project/llvm/test/Transforms/GlobalOpt
David Green fc4b0fe0a2 [GlobalOpt] Test array indices inside structs for out-of-bounds accesses
We now, from clang, can turn arrays of
  static short g_data[] = {16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0};
into structs of the form
  @g_data = internal global <{ [8 x i16], [8 x i16] }> ...

GlobalOpt will incorrectly SROA it, not realising that the access to the first
element may overflow into the second. This fixes it by checking geps more
thoroughly.

I believe this makes the globalsra-partial.ll test case invalid as the %i value
could be out of bounds. I've re-purposed it as a negative test for this case.

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

llvm-svn: 338192
2018-07-28 08:20:10 +00:00
..
PowerPC Re-commit : [PowerPC] Add handling for ColdCC calling convention and a pass to mark 2018-01-30 16:17:22 +00:00
2004-10-10-CastStoreOnce.ll
2005-06-15-LocalizeConstExprCrash.ll
2005-09-27-Crash.ll
2006-07-07-InlineAsmCrash.ll
2006-11-01-ShrinkGlobalPhiCrash.ll
2007-04-05-Crash.ll
2007-05-13-Crash.ll
2007-06-04-PackedStruct.ll
2007-11-09-GEP-GEP-Crash.ll
2008-01-03-Crash.ll
2008-01-13-OutOfRangeSROA.ll
2008-01-29-VolatileGlobal.ll
2008-04-26-SROA-Global-Align.ll
2008-07-17-addrspace.ll
2008-12-16-HeapSRACrash-2.ll
2008-12-16-HeapSRACrash.ll
2009-01-13-phi-user.ll
2009-02-15-BitcastAlias.ll
2009-02-15-ResolveAlias.ll
2009-03-05-dbg.ll Canonicalize the representation of empty an expression in DIGlobalVariableExpression 2017-08-30 18:06:51 +00:00
2009-03-06-Anonymous.ll
2009-03-07-PromotePtrToBool.ll
2009-06-01-RecursivePHI.ll
2009-11-16-BrokenPerformHeapAllocSRoA.ll
2009-11-16-MallocSingleStoreToGlobalVar.ll
2010-02-25-MallocPromote.ll
2010-02-26-MallocSROA.ll
2010-10-19-WeakOdr.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
2011-04-09-EmptyGlobalCtors.ll
2012-05-11-blockaddress.ll
GSROA-section.ll
MallocSROA-section-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
MallocSROA-section.ll
SROA-section.ll
alias-resolve.ll
alias-used-address-space.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
alias-used-section.ll
alias-used.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
amdgcn-ctor-alloca.ll Fix evaluator for non-zero alloca addr space 2018-05-19 02:58:16 +00:00
array-elem-refs.ll
assume.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
atexit.ll
atomic.ll
available_externally_global_ctors.ll
basictest.ll
blockaddress.ll
cleanup-pointer-root-users.ll
coldcc_stress_test.ll Re-commit : [PowerPC] Add handling for ColdCC calling convention and a pass to mark 2018-01-30 16:17:22 +00:00
compiler-used.ll
constantexpr-dangle.ll
constantfold-initializers.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
crash-2.ll
crash.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
ctor-list-opt-constexpr.ll
ctor-list-opt-inbounds.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
ctor-list-opt.ll
cxx-dtor.ll
deaddeclaration.ll [GlobalOpt] Dead Eliminate declarations 2016-09-15 20:26:27 +00:00
deadfunction.ll
deadglobal-2.ll
deadglobal.ll
evaluate-bitcast.ll [Evaluator] Evaluate load/store with bitcast 2018-03-13 10:19:50 +00:00
evaluate-call-errors.ll [Evaluator] Improve evaluation of call instruction 2018-07-01 11:02:07 +00:00
evaluate-call.ll [Evaluator] Examine alias when evaluating function call 2018-07-10 16:34:23 +00:00
evaluate-constfold-call.ll [Evaluator] Improve evaluation of call instruction 2018-07-01 11:02:07 +00:00
externally-initialized-aggregate.ll Fix some broken CHECK lines. 2017-01-22 20:28:56 +00:00
externally-initialized-global-ctr.ll
externally-initialized.ll
fastcc.ll
global-demotion.ll
globalsra-multigep.ll [GlobalOpt] Test array indices inside structs for out-of-bounds accesses 2018-07-28 08:20:10 +00:00
globalsra-partial.ll [GlobalOpt] Test array indices inside structs for out-of-bounds accesses 2018-07-28 08:20:10 +00:00
globalsra-unknown-index.ll
globalsra.ll
heap-sra-1-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-1.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-2-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-2.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-3-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-3.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-4-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-4.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-phi-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
heap-sra-phi.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
int_sideeffect.ll Add an @llvm.sideeffect intrinsic 2017-11-08 21:59:51 +00:00
integer-bool-dwarf.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
integer-bool.ll
invariant-nodatalayout.ll Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
invariant.group.ll Implement strip.invariant.group 2018-07-02 04:49:30 +00:00
invariant.ll Revert "Revert "Invariant start/end intrinsics overloaded for address space"" 2016-08-13 23:31:24 +00:00
invoke.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
iterate.ll
load-store-global-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
load-store-global.ll
localize-constexpr-debuginfo.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
localize-constexpr.ll
malloc-promote-1-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
malloc-promote-1.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
malloc-promote-2-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
malloc-promote-2.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
malloc-promote-3.ll
memcpy.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
memset-null.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
memset.ll Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
metadata.ll IR: Drop uniquing when an MDNode Value operand is deleted 2016-08-03 18:19:43 +00:00
musttail_cc.ll [GlobalOpt] don't change CC of musttail calle(e|r) 2018-02-28 22:28:44 +00:00
naked_functions.ll [FunctionAttrs][ArgumentPromotion][GlobalOpt] Disable some optimisations passes for naked functions 2018-02-22 14:42:08 +00:00
phi-select.ll
pr21191.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
pr33686.ll [GlobalOpt] Autogenerate checks for the test in PR33686. 2017-07-13 15:55:34 +00:00
preserve-comdats.ll
shrink-address-to-bool.ll [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
static-const-bitcast.ll [GlobalOpt] Fix support for casts in ctors. 2018-04-06 15:54:47 +00:00
storepointer-compare-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
storepointer-compare.ll
storepointer-no-null-opt.ll llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
storepointer.ll
tls.ll
trivialstore.ll
undef-init.ll
unnamed-addr.ll IR: Introduce local_unnamed_addr attribute. 2016-06-14 21:01:22 +00:00
zeroinitializer-gep-load.ll