diff options
| author | Dan Gohman <gohman@apple.com> | 2010-07-07 14:33:51 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-07-07 14:33:51 +0000 |
| commit | 88c547ede957e7f9325812ccb4db5eb478705f5c (patch) | |
| tree | 1ba3f430672355a9454e29c929eac9de86c40010 | |
| parent | 5b0a8a863f9ff540091e8c8333d497f715f5bf6a (diff) | |
| download | bcm5719-llvm-88c547ede957e7f9325812ccb4db5eb478705f5c.tar.gz bcm5719-llvm-88c547ede957e7f9325812ccb4db5eb478705f5c.zip | |
Add a getFirstNonPHI utility function.
llvm-svn: 107778
| -rw-r--r-- | llvm/include/llvm/CodeGen/MachineBasicBlock.h | 7 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/MachineBasicBlock.cpp | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/llvm/include/llvm/CodeGen/MachineBasicBlock.h b/llvm/include/llvm/CodeGen/MachineBasicBlock.h index dcbcb25cfb8..3cfc47ac4d8 100644 --- a/llvm/include/llvm/CodeGen/MachineBasicBlock.h +++ b/llvm/include/llvm/CodeGen/MachineBasicBlock.h @@ -282,6 +282,13 @@ public: /// branch to do so (e.g., a table jump). True is a conservative answer. bool canFallThrough(); + /// 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 end() is there's no non-PHI instruction. + iterator getFirstNonPHI(); + /// 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/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index dee478671f6..a27ee479433 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -139,6 +139,13 @@ void ilist_traits<MachineInstr>::deleteNode(MachineInstr* MI) { Parent->getParent()->DeleteMachineInstr(MI); } +MachineBasicBlock::iterator MachineBasicBlock::getFirstNonPHI() { + iterator I = begin(); + while (I != end() && I->isPHI()) + ++I; + return I; +} + MachineBasicBlock::iterator MachineBasicBlock::getFirstTerminator() { iterator I = end(); while (I != begin() && (--I)->getDesc().isTerminator()) |

