Issue exposed by noalias or more aggressive alias analysis.
Fixes http://llvm.org/PR25422.
Paths
| Differential D21007
DSE: Don't remove stores made live by a call which unwinds. ClosedPublic Authored by eli.friedman on Jun 5 2016, 3:54 PM.
Details
Diff Detail
Event Timelineeli.friedman retitled this revision from to DSE: Don't remove stores made live by a call which unwinds.. eli.friedman updated this object.
Comment Actions Updated. Unfortunately, the patch gets a lot more complicated because of the need to avoid iterator invalidation. On the plus side, I think I fixed a couple latent iterator invalidation bugs. Comment Actions The mechanical changes to deal with the iterators LGTM. I'll defer to Hal or someone else to approve the changes to remove stores made live by a call which unwinds.
Comment Actions Hi @eli.friedman, Chad • dberlin added inline comments.
Comment Actions InstrOrdering is basically an OrderedBasicBlock, I guess... I think I'd need to modify the interface a bit for this exact use to deal with modifications.
Closed by commit rL278451: [DSE] Don't remove stores made live by a call which unwinds. (authored by efriedma). · Explain WhyAug 11 2016, 6:17 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 67783 llvm/trunk/lib/Transforms/Scalar/DeadStoreElimination.cpp
llvm/trunk/test/Analysis/GlobalsModRef/func-memattributes.ll
llvm/trunk/test/Transforms/DeadStoreElimination/free.ll
llvm/trunk/test/Transforms/DeadStoreElimination/simple.ll
|