From 6691a8935c9f2e049ff5eed45ba2894f60108909 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Wed, 28 Apr 2010 23:52:26 +0000 Subject: [PATCH] - 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 --- lib/CodeGen/LiveIntervalAnalysis.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/LiveIntervalAnalysis.cpp b/lib/CodeGen/LiveIntervalAnalysis.cpp index bd8a54cc22c..7a2feeacabc 100644 --- a/lib/CodeGen/LiveIntervalAnalysis.cpp +++ b/lib/CodeGen/LiveIntervalAnalysis.cpp @@ -1297,11 +1297,12 @@ rewriteInstructionsForSpills(const LiveInterval &li, bool TrySplit, ++ri; if (MI->isDebugValue()) { // 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(); const MDNode *MDPtr = MI->getOperand(2).getMetadata(); 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)) { DEBUG(dbgs() << "Modifying debug info due to spill:" << "\t" << *MI); ReplaceMachineInstrInMaps(MI, NewDV); -- 2.34.1