mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +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:
@ -301,13 +301,9 @@ void RAFast::spillVirtReg(MachineBasicBlock::iterator MI,
|
||||
const MDNode *Expr = DBG->getDebugExpression();
|
||||
bool IsIndirect = DBG->isIndirectDebugValue();
|
||||
uint64_t Offset = IsIndirect ? DBG->getOperand(1).getImm() : 0;
|
||||
DebugLoc DL;
|
||||
if (MI == MBB->end()) {
|
||||
// If MI is at basic block end then use last instruction's location.
|
||||
MachineBasicBlock::iterator EI = MI;
|
||||
DL = (--EI)->getDebugLoc();
|
||||
} else
|
||||
DL = MI->getDebugLoc();
|
||||
DebugLoc DL = DBG->getDebugLoc();
|
||||
assert(DIVariable(Var)->isValidLocationForIntrinsic(DL) &&
|
||||
"Expected inlined-at fields to agree");
|
||||
MachineInstr *NewDV =
|
||||
BuildMI(*MBB, MI, DL, TII->get(TargetOpcode::DBG_VALUE))
|
||||
.addFrameIndex(FI)
|
||||
@ -877,6 +873,8 @@ void RAFast::AllocateBasicBlock() {
|
||||
const MDNode *Expr = MI->getDebugExpression();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
MachineBasicBlock *MBB = MI->getParent();
|
||||
assert(DIVariable(Var)->isValidLocationForIntrinsic(DL) &&
|
||||
"Expected inlined-at fields to agree");
|
||||
MachineInstr *NewDV = BuildMI(*MBB, MBB->erase(MI), DL,
|
||||
TII->get(TargetOpcode::DBG_VALUE))
|
||||
.addFrameIndex(SS)
|
||||
|
Reference in New Issue
Block a user