1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00

CodeGen: assert an instruction is being inserted with the correct iterator.

When "MBB->Insert(It, ...)" is called, we want It to be pointing inside the
correct basic block. No actual failures at the moment, but it's caused problems
before.

llvm-svn: 221953
This commit is contained in:
Tim Northover 2014-11-14 00:34:59 +00:00
parent 64f455849e
commit 4de13f6a1a

View File

@ -486,11 +486,15 @@ public:
/// Insert a range of instructions into the instruction list before I. /// Insert a range of instructions into the instruction list before I.
template<typename IT> template<typename IT>
void insert(iterator I, IT S, IT E) { void insert(iterator I, IT S, IT E) {
assert((I == end() || I->getParent() == this) &&
"iterator points outside of basic block");
Insts.insert(I.getInstrIterator(), S, E); Insts.insert(I.getInstrIterator(), S, E);
} }
/// Insert MI into the instruction list before I. /// Insert MI into the instruction list before I.
iterator insert(iterator I, MachineInstr *MI) { iterator insert(iterator I, MachineInstr *MI) {
assert((I == end() || I->getParent() == this) &&
"iterator points outside of basic block");
assert(!MI->isBundledWithPred() && !MI->isBundledWithSucc() && assert(!MI->isBundledWithPred() && !MI->isBundledWithSucc() &&
"Cannot insert instruction with bundle flags"); "Cannot insert instruction with bundle flags");
return Insts.insert(I.getInstrIterator(), MI); return Insts.insert(I.getInstrIterator(), MI);
@ -498,6 +502,8 @@ public:
/// Insert MI into the instruction list after I. /// Insert MI into the instruction list after I.
iterator insertAfter(iterator I, MachineInstr *MI) { iterator insertAfter(iterator I, MachineInstr *MI) {
assert((I == end() || I->getParent() == this) &&
"iterator points outside of basic block");
assert(!MI->isBundledWithPred() && !MI->isBundledWithSucc() && assert(!MI->isBundledWithPred() && !MI->isBundledWithSucc() &&
"Cannot insert instruction with bundle flags"); "Cannot insert instruction with bundle flags");
return Insts.insertAfter(I.getInstrIterator(), MI); return Insts.insertAfter(I.getInstrIterator(), MI);