/// block.
bool isSuccessor(MachineBasicBlock *MBB) const;
+ /// isLayoutSuccessor - Return true if the specified MBB will be emitted
+ /// immediately after this block, such that if this block exits by
+ /// falling through, control will transfer to the specified MBB. Note
+ /// that MBB need not be a successor at all, for example if this block
+ /// ends with an unconditional branch to some other block.
+ bool isLayoutSuccessor(MachineBasicBlock *MBB) const;
+
/// getFirstTerminator - returns an iterator to the first terminator
/// instruction of this basic block. If a terminator does not exist,
/// it returns end()
return I != Successors.end();
}
+bool MachineBasicBlock::isLayoutSuccessor(MachineBasicBlock *MBB) const {
+ MachineFunction::const_iterator I(this);
+ return next(I) == MachineFunction::const_iterator(MBB);
+}
+
/// removeFromParent - This method unlinks 'this' from the containing function,
/// and returns it, but does not delete it.
MachineBasicBlock *MachineBasicBlock::removeFromParent() {