Add SkipPHIsAndLabels from PHIElimination to MachineBasicBlock. It is needed
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 30 Oct 2010 01:26:14 +0000 (01:26 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Sat, 30 Oct 2010 01:26:14 +0000 (01:26 +0000)
elsewhere.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117763 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineBasicBlock.h
lib/CodeGen/MachineBasicBlock.cpp

index b0d77c55f25ad21762f98e8066cffc4386b00803..49daf5f4d34cc9be3179b8a5a1255228d6ff0300 100644 (file)
@@ -290,6 +290,11 @@ public:
   /// Returns end() is there's no non-PHI instruction.
   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
   /// instruction of this basic block. If a terminator does not exist,
   /// it returns end()
index 834c9ed05868157455e8e253204fced783d01995..d4f901d7933255f6d835ccf9df9c4c8402cdde12 100644 (file)
@@ -147,6 +147,13 @@ MachineBasicBlock::iterator MachineBasicBlock::getFirstNonPHI() {
   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() {
   iterator I = end();
   while (I != begin() && (--I)->getDesc().isTerminator())