forked from OSchip/llvm-project
Better terminator avoidance.
This approach also works when the terminator doesn't have a slot index. (Which can happen??) llvm-svn: 123413
This commit is contained in:
parent
6cf14d828f
commit
088b30aa48
|
@ -589,14 +589,6 @@ findInsertLocation(MachineBasicBlock *MBB, SlotIndex Idx, DebugLoc &DL,
|
||||||
SlotIndex Start = LIS.getMBBStartIdx(MBB);
|
SlotIndex Start = LIS.getMBBStartIdx(MBB);
|
||||||
Idx = Idx.getBaseIndex();
|
Idx = Idx.getBaseIndex();
|
||||||
|
|
||||||
// Don't insert anything after the first terminator.
|
|
||||||
MachineBasicBlock::iterator Term = MBB->getFirstTerminator();
|
|
||||||
if (Term != MBB->end() && !LIS.isNotInMIMap(Term) &&
|
|
||||||
Idx >= LIS.getInstructionIndex(Term)) {
|
|
||||||
DL = Term->getDebugLoc();
|
|
||||||
return Term;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to find an insert location by going backwards from Idx.
|
// Try to find an insert location by going backwards from Idx.
|
||||||
MachineInstr *MI;
|
MachineInstr *MI;
|
||||||
while (!(MI = LIS.getInstructionFromIndex(Idx))) {
|
while (!(MI = LIS.getInstructionFromIndex(Idx))) {
|
||||||
|
@ -611,7 +603,9 @@ findInsertLocation(MachineBasicBlock *MBB, SlotIndex Idx, DebugLoc &DL,
|
||||||
}
|
}
|
||||||
// We found an instruction. The insert point is after the instr.
|
// We found an instruction. The insert point is after the instr.
|
||||||
DL = MI->getDebugLoc();
|
DL = MI->getDebugLoc();
|
||||||
return llvm::next(MachineBasicBlock::iterator(MI));
|
// Don't insert anything after the first terminator, though.
|
||||||
|
return MI->getDesc().isTerminator() ? MBB->getFirstTerminator() :
|
||||||
|
llvm::next(MachineBasicBlock::iterator(MI));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserValue::insertDebugValue(MachineBasicBlock *MBB, SlotIndex Idx,
|
void UserValue::insertDebugValue(MachineBasicBlock *MBB, SlotIndex Idx,
|
||||||
|
|
Loading…
Reference in New Issue