Add some machine CFG related stuff
authorChris Lattner <sabre@nondot.org>
Sat, 31 Jul 2004 01:59:11 +0000 (01:59 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 31 Jul 2004 01:59:11 +0000 (01:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15352 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/MachineBasicBlock.h
include/llvm/CodeGen/MachineInstr.h

index 62657037d905fe65abe401c3b3f22ccd63f02975..93713685ba9130c3492a7f7e86b0acf2cbb789e8 100644 (file)
@@ -115,30 +115,42 @@ public:
   pred_iterator        pred_end()         { return Predecessors.end ();   }
   const_pred_iterator  pred_end()   const { return Predecessors.end ();   }
   unsigned             pred_size()  const { return Predecessors.size ();  }
+  bool                 pred_empty() const { return Predecessors.empty();  }
   succ_iterator        succ_begin()       { return Successors.begin ();   }
   const_succ_iterator  succ_begin() const { return Successors.begin ();   }
   succ_iterator        succ_end()         { return Successors.end ();     }
   const_succ_iterator  succ_end()   const { return Successors.end ();     }
   unsigned             succ_size()  const { return Successors.size ();    }
+  bool                 succ_empty() const { return Successors.empty();    }
 
   // Machine-CFG mutators
 
   /// addSuccessor - Add succ as a successor of this MachineBasicBlock.
   /// The Predecessors list of succ is automatically updated.
   ///
-  void addSuccessor (MachineBasicBlock *succ) {
-    Successors.push_back (succ);
-    succ->addPredecessor (this);
+  void addSuccessor(MachineBasicBlock *succ) {
+    Successors.push_back(succ);
+    succ->addPredecessor(this);
   }
 
-  /// removeSuccessor - Remove succ from the successors list of this
+  /// removeSuccessor - Remove successor from the successors list of this
   /// MachineBasicBlock. The Predecessors list of succ is automatically updated.
   ///
-  void removeSuccessor (MachineBasicBlock *succ) {
-    succ->removePredecessor (this);
-    std::vector<MachineBasicBlock *>::iterator goner =
-      std::find (Successors.begin(), Successors.end (), succ);
-    Successors.erase (goner);
+  void removeSuccessor(MachineBasicBlock *succ) {
+    succ->removePredecessor(this);
+    succ_iterator I = std::find(Successors.begin(), Successors.end(), succ);
+    assert(I != Successors.end() && "Not a current successor!");
+    Successors.erase(I);
+  }
+
+  /// removeSuccessor - Remove specified successor from the successors list of
+  /// this MachineBasicBlock. The Predecessors list of succ is automatically
+  /// updated.
+  ///
+  void removeSuccessor(succ_iterator I) {
+    assert(I != Successors.end() && "Not a current successor!");
+    (*I)->removePredecessor(this);
+    Successors.erase(I);
   }
 
   /// getFirstTerminator - returns an iterator to the first terminator
index eac9d8a37ef384ba0d39ba1bc8754c23f278d071..3a01ab0fbfaea1ec0e60ebdd7682c2444dc4d0d6 100644 (file)
@@ -255,6 +255,10 @@ public:
     assert(isMachineBasicBlock() && "Wrong MachineOperand accessor");
     return contents.MBB;
   }
+  void setMachineBasicBlock(MachineBasicBlock *MBB) {
+    assert(isMachineBasicBlock() && "Wrong MachineOperand accessor");
+    contents.MBB = MBB;
+  }
   int getFrameIndex() const {
     assert(isFrameIndex() && "Wrong MachineOperand accessor");
     return contents.immedVal;