forked from OSchip/llvm-project
parent
c944417749
commit
b5b6dc49e2
|
@ -92,6 +92,13 @@ public:
|
||||||
TerminatorInst *getTerminator();
|
TerminatorInst *getTerminator();
|
||||||
const TerminatorInst *const getTerminator() const;
|
const TerminatorInst *const getTerminator() const;
|
||||||
|
|
||||||
|
/// Returns a pointer to the first instructon in this block that is not a
|
||||||
|
/// PHINode instruction. When adding instruction to the beginning of the
|
||||||
|
/// basic block, they should be added before the returned value, not before
|
||||||
|
/// the first instruction, which might be PHI.
|
||||||
|
/// Returns 0 is there's no non-PHI instruction.
|
||||||
|
Instruction* getFirstNonPHI();
|
||||||
|
|
||||||
/// removeFromParent - This method unlinks 'this' from the containing
|
/// removeFromParent - This method unlinks 'this' from the containing
|
||||||
/// function, but does not delete it.
|
/// function, but does not delete it.
|
||||||
///
|
///
|
||||||
|
|
|
@ -121,6 +121,17 @@ const TerminatorInst *const BasicBlock::getTerminator() const {
|
||||||
return dyn_cast<TerminatorInst>(&InstList.back());
|
return dyn_cast<TerminatorInst>(&InstList.back());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Instruction* BasicBlock::getFirstNonPHI()
|
||||||
|
{
|
||||||
|
BasicBlock::iterator i = begin(), e = end();
|
||||||
|
// All valid basic blocks should have a terminator,
|
||||||
|
// which is not a PHINode. If we have invalid basic
|
||||||
|
// block we'll get assert when dereferencing past-the-end
|
||||||
|
// iterator.
|
||||||
|
while (isa<PHINode>(i)) ++i;
|
||||||
|
return &*i;
|
||||||
|
}
|
||||||
|
|
||||||
void BasicBlock::dropAllReferences() {
|
void BasicBlock::dropAllReferences() {
|
||||||
for(iterator I = begin(), E = end(); I != E; ++I)
|
for(iterator I = begin(), E = end(); I != E; ++I)
|
||||||
I->dropAllReferences();
|
I->dropAllReferences();
|
||||||
|
|
Loading…
Reference in New Issue