[llvm-branch-commits] [llvm-branch] r89623 - in /llvm/branches/Apple/Zoidberg: include/llvm/Target/TargetRegisterInfo.h lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Jim Grosbach
grosbach at apple.com
Sun Nov 22 12:35:13 PST 2009
Author: grosbach
Date: Sun Nov 22 14:35:13 2009
New Revision: 89623
URL: http://llvm.org/viewvc/llvm-project?rev=89623&view=rev
Log:
merge 89620
Modified:
llvm/branches/Apple/Zoidberg/include/llvm/Target/TargetRegisterInfo.h
llvm/branches/Apple/Zoidberg/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
Modified: llvm/branches/Apple/Zoidberg/include/llvm/Target/TargetRegisterInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Zoidberg/include/llvm/Target/TargetRegisterInfo.h?rev=89623&r1=89622&r2=89623&view=diff
==============================================================================
--- llvm/branches/Apple/Zoidberg/include/llvm/Target/TargetRegisterInfo.h (original)
+++ llvm/branches/Apple/Zoidberg/include/llvm/Target/TargetRegisterInfo.h Sun Nov 22 14:35:13 2009
@@ -696,6 +696,18 @@
/// the stack frame of the specified index.
virtual int getFrameIndexOffset(MachineFunction &MF, int FI) const;
+ /// getFrameIndexReference - This method should return the base register
+ /// and offset used to reference a frame index location. The offset is
+ /// returned directly, and the base register is returned via FrameReg.
+ virtual int getFrameIndexReference(MachineFunction &MF, int FI,
+ unsigned &FrameReg) const {
+ // By default, assume all frame indices are referenced via whatever
+ // getFrameRegister() says. The target can override this if it's doing
+ // something different.
+ FrameReg = getFrameRegister(MF);
+ return getFrameIndexOffset(MF, FI);
+ }
+
/// getRARegister - This method should return the register where the return
/// address can be found.
virtual unsigned getRARegister() const = 0;
Modified: llvm/branches/Apple/Zoidberg/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Zoidberg/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=89623&r1=89622&r2=89623&view=diff
==============================================================================
--- llvm/branches/Apple/Zoidberg/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
+++ llvm/branches/Apple/Zoidberg/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Sun Nov 22 14:35:13 2009
@@ -1293,8 +1293,9 @@
// Variables for abstract instances of inlined functions don't get a
// location.
MachineLocation Location;
- Location.set(RI->getFrameRegister(*MF),
- RI->getFrameIndexOffset(*MF, DV->getFrameIndex()));
+ unsigned FrameReg;
+ int Offset = RI->getFrameIndexReference(*MF, DV->getFrameIndex(), FrameReg);
+ Location.set(FrameReg, Offset);
if (VD.hasComplexAddress())
@@ -1564,10 +1565,10 @@
// Add variable address.
if (!Scope->isAbstractScope()) {
MachineLocation Location;
- Location.set(RI->getFrameRegister(*MF),
- RI->getFrameIndexOffset(*MF, DV->getFrameIndex()));
-
-
+ unsigned FrameReg;
+ int Offset = RI->getFrameIndexReference(*MF, DV->getFrameIndex(), FrameReg);
+ Location.set(FrameReg, Offset);
+
if (VD.hasComplexAddress())
AddComplexAddress(DV, VariableDie, dwarf::DW_AT_location, Location);
else if (VD.isBlockByrefVariable())
More information about the llvm-branch-commits
mailing list