diff options
| author | Alina Sbirlea <asbirlea@google.com> | 2019-08-30 23:02:53 +0000 |
|---|---|---|
| committer | Alina Sbirlea <asbirlea@google.com> | 2019-08-30 23:02:53 +0000 |
| commit | 3d03769ba07c7fd30f8e6031140278e88a0d3f9c (patch) | |
| tree | 22de9a74a5e1fbbbfbae46df4a40bea49ee66b1f /llvm/lib/Analysis | |
| parent | 5ef5829fb02ac5e0daa2c2bfa6ef80366bee5224 (diff) | |
| download | bcm5719-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.cpp | 11 |
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); } |

