mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 18:31:04 +00:00
- Really preserve dbg_value instructions when the register is spilled.
- Also, update dbg_value is the value is being re-matted from a frame slot, e.g. fixed slots for arguments. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102565 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f38c6c89f1
commit
6691a8935c
@ -1297,11 +1297,12 @@ rewriteInstructionsForSpills(const LiveInterval &li, bool TrySplit,
|
|||||||
++ri;
|
++ri;
|
||||||
if (MI->isDebugValue()) {
|
if (MI->isDebugValue()) {
|
||||||
// Modify DBG_VALUE now that the value is in a spill slot.
|
// Modify DBG_VALUE now that the value is in a spill slot.
|
||||||
if (Slot == VirtRegMap::NO_STACK_SLOT) {
|
if (Slot != VirtRegMap::MAX_STACK_SLOT || isLoadSS) {
|
||||||
uint64_t Offset = MI->getOperand(1).getImm();
|
uint64_t Offset = MI->getOperand(1).getImm();
|
||||||
const MDNode *MDPtr = MI->getOperand(2).getMetadata();
|
const MDNode *MDPtr = MI->getOperand(2).getMetadata();
|
||||||
DebugLoc DL = MI->getDebugLoc();
|
DebugLoc DL = MI->getDebugLoc();
|
||||||
if (MachineInstr *NewDV = tii_->emitFrameIndexDebugValue(*mf_, Slot,
|
int FI = isLoadSS ? LdSlot : (int)Slot;
|
||||||
|
if (MachineInstr *NewDV = tii_->emitFrameIndexDebugValue(*mf_, FI,
|
||||||
Offset, MDPtr, DL)) {
|
Offset, MDPtr, DL)) {
|
||||||
DEBUG(dbgs() << "Modifying debug info due to spill:" << "\t" << *MI);
|
DEBUG(dbgs() << "Modifying debug info due to spill:" << "\t" << *MI);
|
||||||
ReplaceMachineInstrInMaps(MI, NewDV);
|
ReplaceMachineInstrInMaps(MI, NewDV);
|
||||||
|
Loading…
Reference in New Issue
Block a user