[DSE,MSSA] Eliminate stores by terminators (free,lifetime.end).
authorFlorian Hahn <flo@fhahn.com>
Wed, 8 Jul 2020 07:42:55 +0000 (08:42 +0100)
committerFlorian Hahn <flo@fhahn.com>
Wed, 8 Jul 2020 07:59:46 +0000 (08:59 +0100)
commit80970ac87574c6d0292894a4a912fa512336f434
tree62e5581ecdbb9ea23e0b429bf7c1696d1d154745
parentd8dfd6dcc143a2164ae781de6598e72b7183fc3f
[DSE,MSSA] Eliminate stores by terminators (free,lifetime.end).

This patch adds support for eliminating stores by free & lifetime.end
calls. We can remove stores that are not read before calling a memory
terminator and we can eliminate all stores after a memory terminator
until we see a new lifetime.start. The second case seems to not really
trigger much in practice though.

Reviewers: dmgreen, rnk, efriedma, bryant, asbirlea, Tyker

Reviewed By: asbirlea

Differential Revision: https://reviews.llvm.org/D72410
llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
llvm/test/Transforms/DeadStoreElimination/MSSA/2016-07-17-UseAfterFree.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/free.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/lifetime.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/memset-missing-debugloc.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-captures.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/multiblock-malloc-free.ll
llvm/test/Transforms/DeadStoreElimination/MSSA/simple.ll