llvm-project/llvm/test/Transforms/DeadStoreElimination
Florian Hahn d03d3d7966
[DSE] Fall back to CFG scan for unreachable terminators.
Blocks with UnreachableInst terminators are considered as root nodes in
the PDT. This pessimize DSE, if there are no aliasing reads from the
potentially dead store and the block with the unreachable terminator.

If any of the root nodes of the PDF has UnreachableInst as terminator,
fall back to the CFG scan, even the common dominator of all killing
blocks does not post-dominate the block with potentially dead store.

It looks like the compile-time impact for the extra scans is negligible.
https://llvm-compile-time-tracker.com/compare.php?from=779bbbf27fe631154bdfaac7a443f198d4654688&to=ac59945f1bec1c6a7d7f5590c8c69fd9c5369c53&stat=instructions

Fixes #53800.

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D119760
2022-02-16 14:06:40 +00:00
..
X86
2011-03-25-DSEMiscompile.ll
2011-09-06-EndOfFunction.ll
2011-09-06-MemCpy.ll
2016-07-17-UseAfterFree.ll
OverwriteStoreBegin.ll [OpaquePtr] Forbid mixing typed and opaque pointers 2021-09-10 15:18:23 +02:00
OverwriteStoreEnd.ll
PartialStore.ll
PartialStore2.ll
atomic-overlapping.ll
atomic-todo.ll [NFC][llvm] Inclusive language: reword uses of sanity test and check 2021-11-25 07:21:42 -05:00
atomic.ll [NFC][llvm] Inclusive language: reword uses of sanity test and check 2021-11-25 07:21:42 -05:00
calloc-store.ll [DSE] Handle inaccessiblememonly calloc 2022-01-19 12:55:09 +01:00
captures-before-call.ll [AA] Move earliest escape tracking from DSE to AA 2021-09-25 22:40:41 +02:00
captures-before-load.ll [AA] Move earliest escape tracking from DSE to AA 2021-09-25 22:40:41 +02:00
combined-partial-overwrites.ll
const-pointers.ll
crash.ll
cs-cs-aliasing.ll
debug-counter.ll
debuginfo.ll
dominate.ll
fence-todo.ll
fence.ll
free.ll
inst-limits.ll
int_sideeffect.ll
invariant.start.ll [DSE][MemLoc] Handle intrinsics more generically 2021-12-24 09:29:57 +01:00
launder.invariant.group.ll
libcalls-darwin.ll [BuildLibCalls] Add nounwind,willreturn to memset_pattern{4,8,16}. 2022-01-12 10:32:53 +00:00
libcalls.ll [DSE] Add additional memset_chk tests. 2021-12-06 13:06:11 +00:00
lifetime.ll
loop-invariant-entry-block.ll
masked-dead-store-inseltpoison.ll
masked-dead-store.ll
mda-with-dbg-values.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
memcpy-complete-overwrite.ll
memcpy-lifetimes.ll
memintrinsics.ll
memory-intrinsics-sizes.ll
memoryssa-scan-limit.ll
memset-and-memcpy.ll
memset-missing-debugloc.ll
memset-unknown-sizes.ll [DSE] Make test more robust (NFC) 2022-01-11 11:49:52 +01:00
merge-stores-big-endian.ll
merge-stores.ll [Tests] Fix incorrect noalias metadata 2021-09-18 20:51:00 +02:00
multiblock-captures.ll
multiblock-exceptions.ll
multiblock-loop-carried-dependence.ll
multiblock-loops.ll [DSE] Remove stores in the same loop iteration 2021-06-20 17:03:30 +01:00
multiblock-malloc-free.ll [IR] Memory intrinsics are not unconditionally `nosync` 2021-05-21 03:40:59 +02:00
multiblock-memintrinsics.ll
multiblock-memoryphis.ll
multiblock-multipath-throwing.ll
multiblock-multipath.ll
multiblock-overlap.ll
multiblock-partial.ll
multiblock-simple.ll
multiblock-throwing.ll [DSE] Add test cases with more complex redundant stores. 2021-10-22 13:50:32 +01:00
multiblock-unreachable.ll [DSE] Fall back to CFG scan for unreachable terminators. 2022-02-16 14:06:40 +00:00
no-targetdata.ll
noop-stores.ll [DSE] Handle inaccessiblememonly calloc 2022-01-19 12:55:09 +01:00
offsetted-overlapping-stores.ll
opaque-ptr.ll [OpaquePtr] Forbid mixing typed and opaque pointers 2021-09-10 15:18:23 +02:00
operand-bundles.ll [DSE] Handle inaccessiblememonly calloc 2022-01-19 12:55:09 +01:00
out-of-bounds-stores.ll [DSE] Add test case with multiple inbounds stores, followed by OOB. 2021-11-12 09:40:03 +00:00
overlap.ll
phi-translation.ll
pr11390.ll
pr47285-not-overwritten-on-all-exit-paths.ll
read-clobber-after-overwrite.ll
scoped-noalias.ll
simple-preservation.ll
simple.ll [DSE] Add test with sret argument (NFC) 2022-01-26 14:25:31 +01:00
stats.ll
store-after-loop.ll [DSE] Fix invalid removal of store instruction 2021-12-22 16:11:23 -05:00
stores-of-existing-values.ll [DSE] Fix typo in recent commit 2021-12-24 11:25:25 +01:00
tail-byval.ll
trivial-dse-calls.ll [tests] Add coverage of writeonly attribute and operand bundle intersection 2022-01-18 12:08:14 -08:00