- // Provide a scoped predecessor and successor iterator
- typedef PredIterator<BasicBlock, Value::use_iterator> pred_iterator;
- typedef PredIterator<const BasicBlock,
- Value::use_const_iterator> pred_const_iterator;
-
- typedef SuccIterator<TerminatorInst*, BasicBlock> succ_iterator;
- typedef SuccIterator<const TerminatorInst*,
- const BasicBlock> succ_const_iterator;
+ /// 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();
+ const Instruction* getFirstNonPHI() const {
+ return const_cast<BasicBlock*>(this)->getFirstNonPHI();
+ }
+
+ /// removeFromParent - This method unlinks 'this' from the containing
+ /// function, but does not delete it.
+ ///
+ void removeFromParent();
+
+ /// eraseFromParent - This method unlinks 'this' from the containing function
+ /// and deletes it.
+ ///
+ void eraseFromParent();