FastISel can only apend to basic blocks.
Compute the insertion point from the end of the basic block instead of skipping labels from the front. This caused failures in landing pads when live-in copies where inserted before instruction selection. llvm-svn: 185616
This commit is contained in:
parent
bbbb53262a
commit
3d8560c382
|
@ -76,15 +76,12 @@ STATISTIC(NumFastIselDead, "Number of dead insts removed on failure");
|
|||
void FastISel::startNewBlock() {
|
||||
LocalValueMap.clear();
|
||||
|
||||
// Instructions are append to FuncInfo.MBB. If the basic block already
|
||||
// contains labels or copies, use the last instruction as the last local
|
||||
// value.
|
||||
EmitStartPt = 0;
|
||||
|
||||
// Advance the emit start point past any EH_LABEL instructions.
|
||||
MachineBasicBlock::iterator
|
||||
I = FuncInfo.MBB->begin(), E = FuncInfo.MBB->end();
|
||||
while (I != E && I->getOpcode() == TargetOpcode::EH_LABEL) {
|
||||
EmitStartPt = I;
|
||||
++I;
|
||||
}
|
||||
if (!FuncInfo.MBB->empty())
|
||||
EmitStartPt = &FuncInfo.MBB->back();
|
||||
LastLocalValue = EmitStartPt;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue