FailedChanges

Summary

  1. [DSE] Switch to MemorySSA-backed DSE by default. (details)
Commit fb109c42d91c30c8c7497ef1fd7aff6f2969c6e7 by flo
[DSE] Switch to MemorySSA-backed DSE by default.

The tests have been updated and I plan to move them from the MSSA
directory up.

Some end-to-end tests needed small adjustments. One difference to the
legacy DSE is that legacy DSE also deletes trivially dead instructions
that are unrelated to memory operations. Because MemorySSA-backed DSE
just walks the MemorySSA, we only visit/check memory instructions. But
removing unrelated dead instructions is not really DSE's job and other
passes will clean up.

One noteworthy change is in llvm/test/Transforms/Coroutines/ArgAddr.ll,
but I think this comes down to legacy DSE not handling instructions that
may throw correctly in that case. To cover this with MemorySSA-backed
DSE, we need an update to llvm.coro.begin to treat it's return value to
belong to the same underlying object as the passed pointer.

There are some minor cases MemorySSA-backed DSE currently misses, e.g. related
to atomic operations, but I think those can be implemented after the switch.

This has been discussed on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2020-August/144417.html

For the MultiSource/SPEC2000/SPEC2006 the number of eliminated stores
goes from ~17500 (legayc DSE) to ~26300 (MemorySSA-backed). More numbers
and details in the thread on llvm-dev.

Impact on CTMark:
```
                                     Legacy Pass Manager
                        exec instrs    size-text
O3                       + 0.60%        - 0.27%
ReleaseThinLTO           + 1.00%        - 0.42%
ReleaseLTO-g.            + 0.77%        - 0.33%
RelThinLTO (link only)   + 0.87%        - 0.42%
RelLO-g (link only)      + 0.78%        - 0.33%
```
http://llvm-compile-time-tracker.com/compare.php?from=3f22e96d95c71ded906c67067d75278efb0a2525&to=ae8be4642533ff03803967ee9d7017c0d73b0ee0&stat=instructions
```
                                     New Pass Manager
                       exec instrs.   size-text
O3                       + 0.95%       - 0.25%
ReleaseThinLTO           + 1.34%       - 0.41%
ReleaseLTO-g.            + 1.71%       - 0.35%
RelThinLTO (link only)   + 0.96%       - 0.41%
RelLO-g (link only)      + 2.21%       - 0.35%
```
http://195.201.131.214:8000/compare.php?from=3f22e96d95c71ded906c67067d75278efb0a2525&to=ae8be4642533ff03803967ee9d7017c0d73b0ee0&stat=instructions

Reviewed By: asbirlea, xbolva00, nikic

Differential Revision: https://reviews.llvm.org/D87163
The file was modifiedllvm/test/Other/opt-Os-pipeline.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/PartialStore2.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-multipath.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/memoryssa-scan-limit.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/memcpy-complete-overwrite.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/noop-stores.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/mda-with-dbg-values.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/pr11390.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/simple.ll (diff)
The file was modifiedclang/test/CodeGen/thinlto-distributed-newpm.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/OverwriteStoreEnd.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-malloc-free.ll (diff)
The file was modifiedllvm/test/Other/new-pm-thinlto-defaults.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/debuginfo.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/atomic-todo.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/debug-counter.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/memset-unknown-sizes.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/inst-limits.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/simple-preservation.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-loops.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/merge-stores-big-endian.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-simple.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/no-targetdata.ll (diff)
The file was modifiedllvm/test/CodeGen/AMDGPU/opt-pipeline.ll (diff)
The file was modifiedllvm/test/Other/new-pm-lto-defaults.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/stats.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/free.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-partial.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/2011-03-25-DSEMiscompile.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/2011-09-06-MemCpy.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/dominate.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-memintrinsics.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-overlap.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/crash.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/tail-byval.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/int_sideeffect.ll (diff)
The file was modifiedllvm/test/Other/opt-O3-pipeline-enable-matrix.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/2011-09-06-EndOfFunction.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/const-pointers.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/2016-07-17-UseAfterFree.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/overlap.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/simple-todo.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/merge-stores.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/pr47285-not-overwritten-on-all-exit-paths.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/operand-bundles.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/calloc-store.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-unreachable.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/memintrinsics.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/fence-todo.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/atomic.ll (diff)
The file was modifiedllvm/test/Other/opt-O2-pipeline.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/launder.invariant.group.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-multipath-throwing.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/lifetime.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/memset-missing-debugloc.ll (diff)
The file was modifiedllvm/test/Transforms/Coroutines/ArgAddr.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/cs-cs-aliasing.ll (diff)
The file was modifiedllvm/test/Other/new-pm-defaults.ll (diff)
The file was modifiedllvm/test/Analysis/BasicAA/modref.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/PartialStore.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/libcalls.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-exceptions.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-memoryphis.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/OverwriteStoreBegin.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/combined-partial-overwrites.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/fence.ll (diff)
The file was modifiedllvm/test/Transforms/MemCpyOpt/memcpy.ll (diff)
The file was modifiedllvm/test/Transforms/Coroutines/coro-retcon.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-captures.ll (diff)
The file was modifiedclang/test/CodeGenObjC/exceptions.m (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/X86/gather-null-pointer.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/atomic-overlapping.ll (diff)
The file was modifiedllvm/lib/Transforms/Scalar/DeadStoreElimination.cpp (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/memset-and-memcpy.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-throwing.ll (diff)
The file was modifiedllvm/test/Transforms/DeadStoreElimination/MSSA/invariant.start.ll (diff)
The file was modifiedllvm/test/Other/opt-O3-pipeline.ll (diff)