Tidy up BasicBlock::getFirstNonPHI, and change a bunch of places to

use it instead of duplicating its functionality.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51499 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2008-05-23 21:05:58 +00:00
parent ee335e35ac
commit 02dea8b39f
16 changed files with 38 additions and 62 deletions

View File

@@ -126,8 +126,7 @@ void CodeExtractor::severSplitPHINodes(BasicBlock *&Header) {
// containing PHI nodes merging values from outside of the region, and a
// second that contains all of the code for the block and merges back any
// incoming values from inside of the region.
BasicBlock::iterator AfterPHIs = Header->begin();
while (isa<PHINode>(AfterPHIs)) ++AfterPHIs;
BasicBlock::iterator AfterPHIs = Header->getFirstNonPHI();
BasicBlock *NewBB = Header->splitBasicBlock(AfterPHIs,
Header->getName()+".ce");

View File

@@ -225,9 +225,7 @@ void LCSSA::getLoopValuesUsedOutsideLoop(Loop *L,
// immediately here. It will be processed in next iteration.
BasicBlock::iterator InsertPoint;
if (InvokeInst *II = dyn_cast<InvokeInst>(I)) {
InsertPoint = II->getNormalDest()->begin();
while (isa<PHINode>(InsertPoint))
++InsertPoint;
InsertPoint = II->getNormalDest()->getFirstNonPHI();
} else {
InsertPoint = I;
InsertPoint++;

View File

@@ -282,8 +282,7 @@ void LowerInvoke::rewriteExpensiveInvoke(InvokeInst *II, unsigned InvokeNo,
// location afterward.
new StoreInst(InvokeNoC, InvokeNum, true, II); // volatile
BasicBlock::iterator NI = II->getNormalDest()->begin();
while (isa<PHINode>(NI)) ++NI;
BasicBlock::iterator NI = II->getNormalDest()->getFirstNonPHI();
// nonvolatile.
new StoreInst(Constant::getNullValue(Type::Int32Ty), InvokeNum, false, NI);

View File

@@ -1493,8 +1493,7 @@ bool llvm::SimplifyCFG(BasicBlock *BB) {
}
} else if (BranchInst *BI = dyn_cast<BranchInst>(BB->getTerminator())) {
if (BI->isUnconditional()) {
BasicBlock::iterator BBI = BB->begin(); // Skip over phi nodes...
while (isa<PHINode>(*BBI)) ++BBI;
BasicBlock::iterator BBI = BB->getFirstNonPHI();
BasicBlock *Succ = BI->getSuccessor(0);
if (BBI->isTerminator() && // Terminator is the only non-phi instruction!