llvm-project/llvm/test/Transforms/DeadStoreElimination
Artur Pilipenko 02e3d5c3a2 Fix DSE miscompile when store is clobbered across loop iterations
DSE would mistakenly remove store (2):

  a = calloc(n+1)
  for (int i = 0; i < n; i++) {
    store 1, a[i+1] // (1)
    store 0, a[i]   // (2)
  }

The fix is to do PHI transaltion while looking for clobbering
instructions between the store and the calloc.

Reviewed By: efriedma, bjope

Differential Revision: https://reviews.llvm.org/D68006
2020-02-27 14:43:01 -08:00
..
MSSA [DSE,MSSA] Do not attempt to remove un-removable memdefs. 2020-02-25 13:31:46 +00:00
X86
2011-03-25-DSEMiscompile.ll
2011-09-06-EndOfFunction.ll
2011-09-06-MemCpy.ll
2016-07-17-UseAfterFree.ll
DeleteThrowableInst.ll Fix for a dangling point bug in DeadStoreElimination pass 2020-01-03 14:28:44 +00:00
OverwriteStoreBegin.ll
OverwriteStoreEnd.ll
PartialStore.ll
PartialStore2.ll
atomic.ll
calloc-store.ll
combined-partial-overwrites.ll
const-pointers.ll
crash.ll
cs-cs-aliasing.ll
debuginfo.ll
dominate.ll
fence.ll
free.ll
inst-limits.ll
int_sideeffect.ll
invariant.start.ll
launder.invariant.group.ll
libcalls.ll DSE: fix bug where we would only check libcalls for name rather than whole decl 2020-01-11 11:57:29 +00:00
libcalls2.ll DSE: fix bug where we would only check libcalls for name rather than whole decl 2020-01-11 11:57:29 +00:00
lifetime.ll
mda-with-dbg-values.ll Migrate function attribute "no-frame-pointer-elim" to "frame-pointer"="all" as cleanups after D56351 2019-12-24 15:57:33 -08:00
memintrinsics.ll
memset-missing-debugloc.ll
merge-stores-big-endian.ll
merge-stores.ll
no-targetdata.ll
operand-bundles.ll
pr11390.ll
simple.ll Fix DSE miscompile when store is clobbered across loop iterations 2020-02-27 14:43:01 -08:00
tail-byval.ll