add a new method.

llvm-svn: 20293
This commit is contained in:
Chris Lattner 2005-02-24 02:37:26 +00:00
parent b640bb0d88
commit 8044aa8d33
2 changed files with 16 additions and 1 deletions

View File

@ -107,7 +107,12 @@ public:
///
void eraseFromParent();
/// getSinglePredecessor - If this basic block has a single predecessor block,
/// return the block, otherwise return a null pointer.
BasicBlock *getSinglePredecessor();
const BasicBlock *getSinglePredecessor() const {
return const_cast<BasicBlock*>(this)->getSinglePredecessor();
}
//===--------------------------------------------------------------------===//
/// Instruction iterator methods

View File

@ -129,6 +129,16 @@ void BasicBlock::dropAllReferences() {
I->dropAllReferences();
}
/// getSinglePredecessor - If this basic block has a single predecessor block,
/// return the block, otherwise return a null pointer.
BasicBlock *BasicBlock::getSinglePredecessor() {
pred_iterator PI = pred_begin(this), E = pred_end(this);
if (PI == E) return 0; // No preds.
BasicBlock *ThePred = *PI;
++PI;
return (PI == E) ? ThePred : 0 /*multiple preds*/;
}
// removePredecessor - This method is used to notify a BasicBlock that the
// specified Predecessor of the block is no longer able to reach it. This is
// actually not used to update the Predecessor list, but is actually used to