Add a new MachineBasicBlock utility function, isLayoutSuccessor, that

can be used when deciding if a block can transfer control to another
via a fall-through instead of a branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56968 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2008-10-02 22:09:09 +00:00
parent e4a5ea3130
commit 6ade6f55a8
2 changed files with 12 additions and 0 deletions

View File

@ -234,6 +234,13 @@ public:
/// 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()

View File

@ -254,6 +254,11 @@ bool MachineBasicBlock::isSuccessor(MachineBasicBlock *MBB) const {
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() {