diff --git a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp index 4bfc4e041a0..abfa28b7528 100644 --- a/lib/Transforms/Utils/PromoteMemoryToRegister.cpp +++ b/lib/Transforms/Utils/PromoteMemoryToRegister.cpp @@ -193,6 +193,7 @@ bool PromoteMem2Reg::QueuePhiNode(BasicBlock *BB, unsigned AllocaNo) { void PromoteMem2Reg::RenamePass(BasicBlock *BB, BasicBlock *Pred, std::vector &IncomingVals) { + // If this BB needs a PHI node, update the PHI node for each variable we need // PHI nodes for. std::map >::iterator @@ -220,8 +221,7 @@ void PromoteMem2Reg::RenamePass(BasicBlock *BB, BasicBlock *Pred, // mark as visited Visited.insert(BB); - BasicBlock::iterator II = BB->begin(); - while (1) { + for (BasicBlock::iterator II = BB->begin(); !isa(II); ) { Instruction *I = II++; // get the instruction, increment iterator if (LoadInst *LI = dyn_cast(I)) { @@ -246,16 +246,15 @@ void PromoteMem2Reg::RenamePass(BasicBlock *BB, BasicBlock *Pred, BB->getInstList().erase(SI); } } - - } else if (TerminatorInst *TI = dyn_cast(I)) { - // Recurse across our successors - for (unsigned i = 0; i != TI->getNumSuccessors(); i++) { - std::vector OutgoingVals(IncomingVals); - RenamePass(TI->getSuccessor(i), BB, OutgoingVals); - } - break; } } + + // Recurse to our successors + TerminatorInst *TI = BB->getTerminator(); + for (unsigned i = 0; i != TI->getNumSuccessors(); i++) { + std::vector OutgoingVals(IncomingVals); + RenamePass(TI->getSuccessor(i), BB, OutgoingVals); + } } /// PromoteMemToReg - Promote the specified list of alloca instructions into