aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-04-09 18:00:49 +0000
committerChris Lattner <sabre@nondot.org>2002-04-09 18:00:49 +0000
commit8929cc230a2eec305f2c8f64ee0cb57c0cb3cc48 (patch)
tree08721c8d26be5b2260d85a4cb9c71961295023e6 /include
parent73c8d7520f8c7026153fd8d9ec9b7e00a57d0aa5 (diff)
downloadexternal_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.h49
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