aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2018-09-07 21:14:48 +0000
committerAlina Sbirlea <asbirlea@google.com>2018-09-07 21:14:48 +0000
commitf98c2c5e6d65fb2a0194fd3ea9f52d793035f63c (patch)
treeb0690a03c5533133aa2f605d9b5e39b2d87aa881 /llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
parentc1416b60f2114d4237643c2aef6eddbf53c42d5b (diff)
downloadllvm-f98c2c5e6d65fb2a0194fd3ea9f52d793035f63c.zip
llvm-f98c2c5e6d65fb2a0194fd3ea9f52d793035f63c.tar.gz
llvm-f98c2c5e6d65fb2a0194fd3ea9f52d793035f63c.tar.bz2
[MemorySSA] Update MemoryPhi wiring for block splitting to consider if identical edges were merged.
Summary: Block splitting is done with either identical edges being merged, or not. Only critical edges can be split without merging identical edges based on an option. Teach the memoryssa updater to take this into account: for the same edge between two blocks only move one entry from the Phi in Old to the new Phi in New. Reviewers: george.burgess.iv Subscribers: sanjoy, jlebar, Prazek, llvm-commits Differential Revision: https://reviews.llvm.org/D51563 llvm-svn: 341709
Diffstat (limited to 'llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
index 3c3c9315..63b37e3 100644
--- a/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
+++ b/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp
@@ -201,7 +201,8 @@ llvm::SplitCriticalEdge(TerminatorInst *TI, unsigned SuccNum,
auto *LI = Options.LI;
auto *MSSAU = Options.MSSAU;
if (MSSAU)
- MSSAU->wireOldPredecessorsToNewImmediatePredecessor(DestBB, NewBB, {TIBB});
+ MSSAU->wireOldPredecessorsToNewImmediatePredecessor(
+ DestBB, NewBB, {TIBB}, Options.MergeIdenticalEdges);
if (!DT && !LI)
return NewBB;