mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
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
0616a418b6
commit
18711b19c9
@ -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
Block a user