mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-12 13:38:21 +00:00
CodeGen: Assert that inlined-at locations agree
As a follow-up to r234021, assert that a debug info intrinsic variable's `MDLocalVariable::getInlinedAt()` always matches the `MDLocation::getInlinedAt()` of its `!dbg` attachment. The goal here is to get rid of `MDLocalVariable::getInlinedAt()` entirely (PR22778), but I'll let these assertions bake for a while first. If you have an out-of-tree backend that just broke, you're probably attaching the wrong `DebugLoc` to a `DBG_VALUE` instruction. The one you want is the location that was attached to the corresponding `@llvm.dbg.declare` or `@llvm.dbg.value` call that you started with. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234038 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -269,12 +269,6 @@ public:
|
||||
void emitDebugValues(VirtRegMap *VRM,
|
||||
LiveIntervals &LIS, const TargetInstrInfo &TRI);
|
||||
|
||||
/// findDebugLoc - Return DebugLoc used for this DBG_VALUE instruction. A
|
||||
/// variable may have more than one corresponding DBG_VALUE instructions.
|
||||
/// Only first one needs DebugLoc to identify variable's lexical scope
|
||||
/// in source file.
|
||||
DebugLoc findDebugLoc();
|
||||
|
||||
/// getDebugLoc - Return DebugLoc of this UserValue.
|
||||
DebugLoc getDebugLoc() { return dl;}
|
||||
void print(raw_ostream &, const TargetRegisterInfo *);
|
||||
@ -942,11 +936,6 @@ findInsertLocation(MachineBasicBlock *MBB, SlotIndex Idx,
|
||||
std::next(MachineBasicBlock::iterator(MI));
|
||||
}
|
||||
|
||||
DebugLoc UserValue::findDebugLoc() {
|
||||
DebugLoc D = dl;
|
||||
dl = DebugLoc();
|
||||
return D;
|
||||
}
|
||||
void UserValue::insertDebugValue(MachineBasicBlock *MBB, SlotIndex Idx,
|
||||
unsigned LocNo,
|
||||
LiveIntervals &LIS,
|
||||
@ -955,11 +944,13 @@ void UserValue::insertDebugValue(MachineBasicBlock *MBB, SlotIndex Idx,
|
||||
MachineOperand &Loc = locations[LocNo];
|
||||
++NumInsertedDebugValues;
|
||||
|
||||
assert(DIVariable(Variable)->isValidLocationForIntrinsic(getDebugLoc()) &&
|
||||
"Expected inlined-at fields to agree");
|
||||
if (Loc.isReg())
|
||||
BuildMI(*MBB, I, findDebugLoc(), TII.get(TargetOpcode::DBG_VALUE),
|
||||
BuildMI(*MBB, I, getDebugLoc(), TII.get(TargetOpcode::DBG_VALUE),
|
||||
IsIndirect, Loc.getReg(), offset, Variable, Expression);
|
||||
else
|
||||
BuildMI(*MBB, I, findDebugLoc(), TII.get(TargetOpcode::DBG_VALUE))
|
||||
BuildMI(*MBB, I, getDebugLoc(), TII.get(TargetOpcode::DBG_VALUE))
|
||||
.addOperand(Loc)
|
||||
.addImm(offset)
|
||||
.addMetadata(Variable)
|
||||
|
Reference in New Issue
Block a user