diff options
author | Alina Sbirlea <asbirlea@google.com> | 2018-08-21 23:32:03 +0000 |
---|---|---|
committer | Alina Sbirlea <asbirlea@google.com> | 2018-08-21 23:32:03 +0000 |
commit | ab6f84f7633f269114aaf02adfb38ec28f69167c (patch) | |
tree | 16d504d90b01a6965398956a3ad97a4117e3bd8b /llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp | |
parent | 887ec751732efa1cc4508ce524f7e72b4e597e45 (diff) | |
download | bcm5719-llvm-ab6f84f7633f269114aaf02adfb38ec28f69167c.tar.gz bcm5719-llvm-ab6f84f7633f269114aaf02adfb38ec28f69167c.zip |
Update MemorySSA in BasicBlockUtils.
Summary:
Extend BasicBlocksUtils to update MemorySSA.
Subscribers: sanjoy, arsenm, nhaehnle, jlebar, Prazek, llvm-commits
Differential Revision: https://reviews.llvm.org/D45300
llvm-svn: 340365
Diffstat (limited to 'llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp index 3e30c27a9f3..3c3c931556b 100644 --- a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp +++ b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp @@ -23,6 +23,7 @@ #include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/Analysis/CFG.h" #include "llvm/Analysis/LoopInfo.h" +#include "llvm/Analysis/MemorySSAUpdater.h" #include "llvm/IR/CFG.h" #include "llvm/IR/Dominators.h" #include "llvm/IR/Instructions.h" @@ -198,6 +199,10 @@ llvm::SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum, // If we have nothing to update, just return. auto *DT = Options.DT; auto *LI = Options.LI; + auto *MSSAU = Options.MSSAU; + if (MSSAU) + MSSAU->wireOldPredecessorsToNewImmediatePredecessor(DestBB, NewBB, {TIBB}); + if (!DT && !LI) return NewBB; @@ -283,7 +288,7 @@ llvm::SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum, if (!LoopPreds.empty()) { assert(!DestBB->isEHPad() && "We don't split edges to EH pads!"); BasicBlock *NewExitBB = SplitBlockPredecessors( - DestBB, LoopPreds, "split", DT, LI, Options.PreserveLCSSA); + DestBB, LoopPreds, "split", DT, LI, MSSAU, Options.PreserveLCSSA); if (Options.PreserveLCSSA) createPHIsForSplitLoopExit(LoopPreds, NewExitBB, DestBB); } |