MemorySSA is not properly updated in LoopSimplifyCFG after recent changes. Use SplitBlock utility to resolve that and clear all updates once handleDeadExits is finished.
All updates that follow are removal of edges which are safe to handle via the removeEdge() API.
Also, deleting dead blocks is done correctly as is, i.e. delete from MemorySSA before updating the CFG and DT.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp | ||
---|---|---|
592 | I believe we should also update MSSA here. This is the execution path taken when we don't have dead blocks. |
llvm/trunk/lib/Transforms/Scalar/LoopSimplifyCFG.cpp | ||
---|---|---|
592 | Thanks for looking at this! If you have a case showing otherwise, I'll be happy to take a look. |
I believe we should also update MSSA here. This is the execution path taken when we don't have dead blocks.