[llvm-commits] [llvm] r46598 - in /llvm/trunk/lib/Target/X86: X86RegisterInfo.cpp X86RegisterInfo.h

Evan Cheng evan.cheng at apple.com
Wed Jan 30 20:06:01 PST 2008


Author: evancheng
Date: Wed Jan 30 22:06:00 2008
New Revision: 46598

URL: http://llvm.org/viewvc/llvm-project?rev=46598&view=rev
Log:
Add x86 specific getFrameIndexOffset(). This fixes local variable debugging info.

Modified:
    llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
    llvm/trunk/lib/Target/X86/X86RegisterInfo.h

Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=46598&r1=46597&r2=46598&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Wed Jan 30 22:06:00 2008
@@ -835,6 +835,20 @@
   return hasFP(MF) ? FramePtr : StackPtr;
 }
 
+int
+X86RegisterInfo::getFrameIndexOffset(MachineFunction &MF, unsigned FI) const {
+  int Offset = MF.getFrameInfo()->getObjectOffset(FI) + SlotSize;
+  if (!hasFP(MF))
+    return Offset + MF.getFrameInfo()->getStackSize();
+
+  Offset += SlotSize;  // Skip the saved EBP
+  // Skip the RETADDR move area
+  X86MachineFunctionInfo *X86FI = MF.getInfo<X86MachineFunctionInfo>();
+  int TailCallReturnAddrDelta = X86FI->getTCReturnAddrDelta();
+  if (TailCallReturnAddrDelta < 0) Offset -= TailCallReturnAddrDelta;
+  return Offset;
+}
+
 void X86RegisterInfo::getInitialFrameState(std::vector<MachineMove> &Moves)
                                                                          const {
   // Calculate amount of bytes used for return address storing

Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.h?rev=46598&r1=46597&r2=46598&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86RegisterInfo.h (original)
+++ llvm/trunk/lib/Target/X86/X86RegisterInfo.h Wed Jan 30 22:06:00 2008
@@ -122,6 +122,7 @@
   // Debug information queries.
   unsigned getRARegister() const;
   unsigned getFrameRegister(MachineFunction &MF) const;
+  int getFrameIndexOffset(MachineFunction &MF, unsigned FI) const;
   void getInitialFrameState(std::vector<MachineMove> &Moves) const;
 
   // Exception handling queries.





More information about the llvm-commits mailing list