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. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits