[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