diff options
author | Chris Lattner <sabre@nondot.org> | 2002-04-09 18:00:49 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-04-09 18:00:49 +0000 |
commit | 8929cc230a2eec305f2c8f64ee0cb57c0cb3cc48 (patch) | |
tree | 08721c8d26be5b2260d85a4cb9c71961295023e6 /include | |
parent | 73c8d7520f8c7026153fd8d9ec9b7e00a57d0aa5 (diff) | |
download | external_llvm-8929cc230a2eec305f2c8f64ee0cb57c0cb3cc48.zip external_llvm-8929cc230a2eec305f2c8f64ee0cb57c0cb3cc48.tar.gz external_llvm-8929cc230a2eec305f2c8f64ee0cb57c0cb3cc48.tar.bz2 |
Rewrite MachineCodeForBasicBlock in terms of containment rather than
inheritance.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2200 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/MachineInstr.h | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/MachineInstr.h b/include/llvm/CodeGen/MachineInstr.h index 7893304..dacd4bd 100644 --- a/include/llvm/CodeGen/MachineInstr.h +++ b/include/llvm/CodeGen/MachineInstr.h @@ -434,10 +434,54 @@ MachineInstr::setImplicitRef(unsigned int i, //--------------------------------------------------------------------------- -class MachineCodeForBasicBlock: public std::vector<MachineInstr*> { +class MachineCodeForBasicBlock { + std::vector<MachineInstr*> Insts; public: + ~MachineCodeForBasicBlock() { +#if 0 + for (unsigned i = 0, e = Insts.size(); i != e; ++i) + delete Insts[i]; +#endif + } + typedef std::vector<MachineInstr*>::iterator iterator; typedef std::vector<MachineInstr*>::const_iterator const_iterator; + typedef std::reverse_iterator<const_iterator> const_reverse_iterator; + typedef std::reverse_iterator<iterator> reverse_iterator; + + unsigned size() const { return Insts.size(); } + bool empty() const { return Insts.empty(); } + + MachineInstr * operator[](unsigned i) const { return Insts[i]; } + MachineInstr *&operator[](unsigned i) { return Insts[i]; } + + MachineInstr *front() const { return Insts.front(); } + MachineInstr *back() const { return Insts.back(); } + + iterator begin() { return Insts.begin(); } + const_iterator begin() const { return Insts.begin(); } + iterator end() { return Insts.end(); } + const_iterator end() const { return Insts.end(); } + reverse_iterator rbegin() { return Insts.rbegin(); } + const_reverse_iterator rbegin() const { return Insts.rbegin(); } + reverse_iterator rend () { return Insts.rend(); } + const_reverse_iterator rend () const { return Insts.rend(); } + + void push_back(MachineInstr *MI) { Insts.push_back(MI); } + template<typename IT> + void insert(iterator I, IT S, IT E) { Insts.insert(I, S, E); } + iterator insert(iterator I, MachineInstr *M) { return Insts.insert(I, M); } + + // erase - Remove the specified range from the instruction list. This does + // not delete in instructions removed. + // + iterator erase(iterator I, iterator E) { return Insts.erase(I, E); } + + MachineInstr *pop_back() { + MachineInstr *R = back(); + Insts.pop_back(); + return R; + } }; @@ -454,7 +498,4 @@ std::ostream& operator<< (std::ostream& os, const MachineOperand& mop); void PrintMachineInstructions(const Function *F); - -//**************************************************************************/ - #endif |