diff options
author | Dan Gohman <gohman@apple.com> | 2008-10-02 22:09:09 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-10-02 22:09:09 +0000 |
commit | 901cf7c745f6054e96a793fe8cc8c2cbfec6e109 (patch) | |
tree | 9d3b8f495e13893431a3ae50ac05070bdce2cc4e | |
parent | adcf753e17e21426408100ec39765de144cf7511 (diff) | |
download | external_llvm-901cf7c745f6054e96a793fe8cc8c2cbfec6e109.zip external_llvm-901cf7c745f6054e96a793fe8cc8c2cbfec6e109.tar.gz external_llvm-901cf7c745f6054e96a793fe8cc8c2cbfec6e109.tar.bz2 |
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
-rw-r--r-- | include/llvm/CodeGen/MachineBasicBlock.h | 7 | ||||
-rw-r--r-- | lib/CodeGen/MachineBasicBlock.cpp | 5 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h index b47108a..09cca93 100644 --- a/include/llvm/CodeGen/MachineBasicBlock.h +++ b/include/llvm/CodeGen/MachineBasicBlock.h @@ -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() diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp index 0320aff..bac0a6c 100644 --- a/lib/CodeGen/MachineBasicBlock.cpp +++ b/lib/CodeGen/MachineBasicBlock.cpp @@ -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() { |