mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 16:09:57 +00:00
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
This commit is contained in:
parent
73c8d7520f
commit
8929cc230a
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user