summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis
diff options
context:
space:
mode:
authorAlina Sbirlea <asbirlea@google.com>2019-08-30 23:02:53 +0000
committerAlina Sbirlea <asbirlea@google.com>2019-08-30 23:02:53 +0000
commit3d03769ba07c7fd30f8e6031140278e88a0d3f9c (patch)
tree22de9a74a5e1fbbbfbae46df4a40bea49ee66b1f /llvm/lib/Analysis
parent5ef5829fb02ac5e0daa2c2bfa6ef80366bee5224 (diff)
downloadbcm5719-llvm-3d03769ba07c7fd30f8e6031140278e88a0d3f9c.tar.gz
bcm5719-llvm-3d03769ba07c7fd30f8e6031140278e88a0d3f9c.zip
[MemorySSA] Rename all phi entries.
When renaming Phis incoming values, there may be multiple edges incoming from the same block (switch). Rename all. llvm-svn: 370548
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r--llvm/lib/Analysis/MemorySSA.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/MemorySSA.cpp b/llvm/lib/Analysis/MemorySSA.cpp
index 91b2f1d03a1..ac95017af17 100644
--- a/llvm/lib/Analysis/MemorySSA.cpp
+++ b/llvm/lib/Analysis/MemorySSA.cpp
@@ -1088,9 +1088,14 @@ void MemorySSA::renameSuccessorPhis(BasicBlock *BB, MemoryAccess *IncomingVal,
AccessList *Accesses = It->second.get();
auto *Phi = cast<MemoryPhi>(&Accesses->front());
if (RenameAllUses) {
- int PhiIndex = Phi->getBasicBlockIndex(BB);
- assert(PhiIndex != -1 && "Incomplete phi during partial rename");
- Phi->setIncomingValue(PhiIndex, IncomingVal);
+ bool ReplacementDone = false;
+ for (unsigned I = 0, E = Phi->getNumIncomingValues(); I != E; ++I)
+ if (Phi->getIncomingBlock(I) == BB) {
+ Phi->setIncomingValue(I, IncomingVal);
+ ReplacementDone = true;
+ }
+ (void) ReplacementDone;
+ assert(ReplacementDone && "Incomplete phi during partial rename");
} else
Phi->addIncoming(IncomingVal, BB);
}
OpenPOWER on IntegriCloud