Add SkipPHIsAndLabels from PHIElimination to MachineBasicBlock. It is needed

elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117763 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2010-10-30 01:26:14 +00:00
parent ab56647e6b
commit 92095e7b3f
2 changed files with 12 additions and 0 deletions

View File

@ -290,6 +290,11 @@ public:
/// Returns end() is there's no non-PHI instruction. /// Returns end() is there's no non-PHI instruction.
iterator getFirstNonPHI(); iterator getFirstNonPHI();
/// SkipPHIsAndLabels - Return the first instruction in MBB after I that is
/// not a PHI or a label. This is the correct point to insert copies at the
/// beginning of a basic block.
iterator SkipPHIsAndLabels(iterator I);
/// getFirstTerminator - returns an iterator to the first terminator /// getFirstTerminator - returns an iterator to the first terminator
/// instruction of this basic block. If a terminator does not exist, /// instruction of this basic block. If a terminator does not exist,
/// it returns end() /// it returns end()

View File

@ -147,6 +147,13 @@ MachineBasicBlock::iterator MachineBasicBlock::getFirstNonPHI() {
return I; return I;
} }
MachineBasicBlock::iterator
MachineBasicBlock::SkipPHIsAndLabels(MachineBasicBlock::iterator I) {
while (I != end() && (I->isPHI() || I->isLabel() || I->isDebugValue()))
++I;
return I;
}
MachineBasicBlock::iterator MachineBasicBlock::getFirstTerminator() { MachineBasicBlock::iterator MachineBasicBlock::getFirstTerminator() {
iterator I = end(); iterator I = end();
while (I != begin() && (--I)->getDesc().isTerminator()) while (I != begin() && (--I)->getDesc().isTerminator())