From: Chris Lattner Date: Sat, 31 Jul 2004 01:59:11 +0000 (+0000) Subject: Add some machine CFG related stuff X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=dc4a4922d32b470acd68498d41e3b8130cf1e74e;p=oota-llvm.git Add some machine CFG related stuff git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15352 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/MachineBasicBlock.h b/include/llvm/CodeGen/MachineBasicBlock.h index 62657037d90..93713685ba9 100644 --- a/include/llvm/CodeGen/MachineBasicBlock.h +++ b/include/llvm/CodeGen/MachineBasicBlock.h @@ -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::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 diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h index eac9d8a37ef..3a01ab0fbfa 100644 --- a/include/llvm/CodeGen/MachineInstr.h +++ b/include/llvm/CodeGen/MachineInstr.h @@ -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;