|
@@ -441,26 +441,32 @@ public:
|
|
|
void pop_back() { Insts.pop_back(); }
|
|
|
void push_back(MachineInstr *MI) { Insts.push_back(MI); }
|
|
|
|
|
|
- template<typename IT>
|
|
|
- void insert(instr_iterator I, IT S, IT E) {
|
|
|
- Insts.insert(I, S, E);
|
|
|
- }
|
|
|
- instr_iterator insert(instr_iterator I, MachineInstr *M) {
|
|
|
- return Insts.insert(I, M);
|
|
|
- }
|
|
|
- instr_iterator insertAfter(instr_iterator I, MachineInstr *M) {
|
|
|
- return Insts.insertAfter(I, M);
|
|
|
- }
|
|
|
+ /// Insert MI into the instruction list before I, possibly inside a bundle.
|
|
|
+ ///
|
|
|
+ /// If the insertion point is inside a bundle, MI will be added to the bundle,
|
|
|
+ /// otherwise MI will not be added to any bundle. That means this function
|
|
|
+ /// alone can't be used to prepend or append instructions to bundles. See
|
|
|
+ /// MIBundleBuilder::insert() for a more reliable way of doing that.
|
|
|
+ instr_iterator insert(instr_iterator I, MachineInstr *M);
|
|
|
|
|
|
+ /// Insert a range of instructions into the instruction list before I.
|
|
|
template<typename IT>
|
|
|
void insert(iterator I, IT S, IT E) {
|
|
|
Insts.insert(I.getInstrIterator(), S, E);
|
|
|
}
|
|
|
- iterator insert(iterator I, MachineInstr *M) {
|
|
|
- return Insts.insert(I.getInstrIterator(), M);
|
|
|
+
|
|
|
+ /// Insert MI into the instruction list before I.
|
|
|
+ iterator insert(iterator I, MachineInstr *MI) {
|
|
|
+ assert(!MI->isBundledWithPred() && !MI->isBundledWithSucc() &&
|
|
|
+ "Cannot insert instruction with bundle flags");
|
|
|
+ return Insts.insert(I.getInstrIterator(), MI);
|
|
|
}
|
|
|
- iterator insertAfter(iterator I, MachineInstr *M) {
|
|
|
- return Insts.insertAfter(I.getInstrIterator(), M);
|
|
|
+
|
|
|
+ /// Insert MI into the instruction list after I.
|
|
|
+ iterator insertAfter(iterator I, MachineInstr *MI) {
|
|
|
+ assert(!MI->isBundledWithPred() && !MI->isBundledWithSucc() &&
|
|
|
+ "Cannot insert instruction with bundle flags");
|
|
|
+ return Insts.insertAfter(I.getInstrIterator(), MI);
|
|
|
}
|
|
|
|
|
|
/// Remove an instruction from the instruction list and delete it.
|