[LoopSimplifyCFG] Add missing MSSA edge deletion
When we create fictive switch in preheader, we should take
care about MSSA and delete edge between old preheader and
header.
llvm-svn: 354547
diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
index 55cf20a..bbf3551 100644
--- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
@@ -355,6 +355,8 @@
BasicBlock *NewPreheader = Preheader->splitBasicBlock(
Preheader->getTerminator(),
Twine(Preheader->getName()).concat("-split"));
+ if (MSSAU)
+ MSSAU->removeEdge(Preheader, L.getHeader());
DTUpdates.push_back({DominatorTree::Delete, Preheader, L.getHeader()});
DTUpdates.push_back({DominatorTree::Insert, NewPreheader, L.getHeader()});
DTUpdates.push_back({DominatorTree::Insert, Preheader, NewPreheader});