forked from OSchip/llvm-project
Don't propagate debug locations to instructions for materializing
constants, since they may not be emited near the other instructions which get the same line, and this confuses debug info. llvm-svn: 108302
This commit is contained in:
parent
ec00f12a22
commit
1f471435f8
|
@ -106,12 +106,17 @@ public:
|
|||
/// into the current block.
|
||||
void recomputeInsertPt();
|
||||
|
||||
struct SavePoint {
|
||||
MachineBasicBlock::iterator InsertPt;
|
||||
DebugLoc DL;
|
||||
};
|
||||
|
||||
/// enterLocalValueArea - Prepare InsertPt to begin inserting instructions
|
||||
/// into the local value area and return the old insert position.
|
||||
MachineBasicBlock::iterator enterLocalValueArea();
|
||||
SavePoint enterLocalValueArea();
|
||||
|
||||
/// leaveLocalValueArea - Reset InsertPt to the given old insert position
|
||||
void leaveLocalValueArea(MachineBasicBlock::iterator OldInsertPt);
|
||||
/// leaveLocalValueArea - Reset InsertPt to the given old insert position.
|
||||
void leaveLocalValueArea(SavePoint Old);
|
||||
|
||||
virtual ~FastISel();
|
||||
|
||||
|
|
|
@ -135,7 +135,7 @@ unsigned FastISel::getRegForValue(const Value *V) {
|
|||
!FuncInfo.StaticAllocaMap.count(cast<AllocaInst>(V))))
|
||||
return FuncInfo.InitializeRegForValue(V);
|
||||
|
||||
MachineBasicBlock::iterator SaveInsertPt = enterLocalValueArea();
|
||||
SavePoint SaveInsertPt = enterLocalValueArea();
|
||||
|
||||
// Materialize the value in a register. Emit any instructions in the
|
||||
// local value area.
|
||||
|
@ -286,18 +286,21 @@ void FastISel::recomputeInsertPt() {
|
|||
++FuncInfo.InsertPt;
|
||||
}
|
||||
|
||||
MachineBasicBlock::iterator FastISel::enterLocalValueArea() {
|
||||
FastISel::SavePoint FastISel::enterLocalValueArea() {
|
||||
MachineBasicBlock::iterator OldInsertPt = FuncInfo.InsertPt;
|
||||
recomputeInsertPt();
|
||||
return OldInsertPt;
|
||||
DL = DebugLoc();
|
||||
SavePoint SP = { OldInsertPt, DL };
|
||||
return SP;
|
||||
}
|
||||
|
||||
void FastISel::leaveLocalValueArea(MachineBasicBlock::iterator OldInsertPt) {
|
||||
void FastISel::leaveLocalValueArea(SavePoint OldInsertPt) {
|
||||
if (FuncInfo.InsertPt != FuncInfo.MBB->begin())
|
||||
LastLocalValue = llvm::prior(FuncInfo.InsertPt);
|
||||
|
||||
// Restore the previous insert position.
|
||||
FuncInfo.InsertPt = OldInsertPt;
|
||||
FuncInfo.InsertPt = OldInsertPt.InsertPt;
|
||||
DL = OldInsertPt.DL;
|
||||
}
|
||||
|
||||
/// SelectBinaryOp - Select and emit code for a binary operator instruction,
|
||||
|
|
|
@ -540,7 +540,7 @@ bool X86FastISel::X86SelectAddress(const Value *V, X86AddressMode &AM) {
|
|||
StubAM.GVOpFlags = GVFlags;
|
||||
|
||||
// Prepare for inserting code in the local-value area.
|
||||
MachineBasicBlock::iterator SaveInsertPt = enterLocalValueArea();
|
||||
SavePoint SaveInsertPt = enterLocalValueArea();
|
||||
|
||||
if (TLI.getPointerTy() == MVT::i64) {
|
||||
Opc = X86::MOV64rm;
|
||||
|
|
Loading…
Reference in New Issue