mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-23 02:32:11 +00:00
Allow for the possibility that a debug-value points
to a SDNode that didn't have code generated for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100566 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
639336e0bd
commit
c4d7b14a92
@ -517,8 +517,19 @@ MachineInstr *InstrEmitter::EmitDbgValue(SDDbgValue *SD,
|
||||
const TargetInstrDesc &II = TII->get(TargetOpcode::DBG_VALUE);
|
||||
MachineInstrBuilder MIB = BuildMI(*MF, DL, II);
|
||||
if (SD->getKind() == SDDbgValue::SDNODE) {
|
||||
AddOperand(&*MIB, SDValue(SD->getSDNode(), SD->getResNo()),
|
||||
(*MIB).getNumOperands(), &II, VRBaseMap, true /*IsDebug*/);
|
||||
SDNode *Node = SD->getSDNode();
|
||||
SDValue Op = SDValue(Node, SD->getResNo());
|
||||
// It's possible we replaced this SDNode with other(s) and therefore
|
||||
// didn't generate code for it. It's better to catch these cases where
|
||||
// they happen and transfer the debug info, but trying to guarantee that
|
||||
// in all cases would be very fragile; this is a safeguard for any
|
||||
// that were missed.
|
||||
DenseMap<SDValue, unsigned>::iterator I = VRBaseMap.find(Op);
|
||||
if (I==VRBaseMap.end())
|
||||
MIB.addReg(0U); // undef
|
||||
else
|
||||
AddOperand(&*MIB, Op, (*MIB).getNumOperands(), &II, VRBaseMap,
|
||||
true /*IsDebug*/);
|
||||
} else if (SD->getKind() == SDDbgValue::CONST) {
|
||||
Value *V = SD->getConst();
|
||||
if (ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user