class TargetData;
class TargetRegisterClass;
class Type;
-class MachineDebugInfo;
+class MachineModuleInfo;
class MachineFunction;
/// The CalleeSavedInfo class tracks the information need to locate where a
///
unsigned StackSize;
+ /// OffsetAdjustment - The amount that a frame offset needs to be adjusted to
+ /// have the actual offset from the stack/frame pointer. The calculation is
+ /// MFI->getObjectOffset(Index) + StackSize - TFI.getOffsetOfLocalArea() +
+ /// OffsetAdjustment. If OffsetAdjustment is zero (default) then offsets are
+ /// away from TOS. If OffsetAdjustment == StackSize then offsets are toward
+ /// TOS.
+ int OffsetAdjustment;
+
/// MaxAlignment - The prolog/epilog code inserter may process objects
/// that require greater alignment than the default alignment the target
/// provides. To handle this, MaxAlignment is set to the maximum alignment
/// handling.
std::vector<CalleeSavedInfo> CSInfo;
- /// DebugInfo - This field is set (via setMachineDebugInfo) by a debug info
+ /// MMI - This field is set (via setMachineModuleInfo) by a module info
/// consumer (ex. DwarfWriter) to indicate that frame layout information
/// should be acquired. Typically, it's the responsibility of the target's
- /// MRegisterInfo prologue/epilogue emitting code to inform MachineDebugInfo
+ /// MRegisterInfo prologue/epilogue emitting code to inform MachineModuleInfo
/// of frame layouts.
- MachineDebugInfo *DebugInfo;
+ MachineModuleInfo *MMI;
public:
MachineFrameInfo() {
- NumFixedObjects = StackSize = MaxAlignment = 0;
+ NumFixedObjects = StackSize = OffsetAdjustment = MaxAlignment = 0;
HasVarSizedObjects = false;
HasCalls = false;
MaxCallFrameSize = 0;
- DebugInfo = 0;
+ MMI = 0;
}
/// hasStackObjects - Return true if there are any stack objects in this
/// setStackSize - Set the size of the stack...
///
void setStackSize(unsigned Size) { StackSize = Size; }
+
+ /// getOffsetAdjustment - Return the correction for frame offsets.
+ ///
+ int getOffsetAdjustment() const { return OffsetAdjustment; }
+
+ /// setOffsetAdjustment - Set the correction for frame offsets.
+ ///
+ void setOffsetAdjustment(int Adj) { OffsetAdjustment = Adj; }
/// getMaxAlignment - Return the alignment in bytes that this function must be
/// aligned to, which is greater than the default stack alignment provided by
CSInfo = CSI;
}
- /// getMachineDebugInfo - Used by a prologue/epilogue emitter (MRegisterInfo)
+ /// getMachineModuleInfo - Used by a prologue/epilogue emitter (MRegisterInfo)
/// to provide frame layout information.
- MachineDebugInfo *getMachineDebugInfo() const { return DebugInfo; }
+ MachineModuleInfo *getMachineModuleInfo() const { return MMI; }
- /// setMachineDebugInfo - Used by a debug consumer (DwarfWriter) to indicate
- /// that frame layout information should be gathered.
- void setMachineDebugInfo(MachineDebugInfo *DI) { DebugInfo = DI; }
+ /// setMachineModuleInfo - Used by a meta info consumer (DwarfWriter) to
+ /// indicate that frame layout information should be gathered.
+ void setMachineModuleInfo(MachineModuleInfo *mmi) { MMI = mmi; }
/// print - Used by the MachineFunction printer to print information about
/// stack objects. Implemented in MachineFunction.cpp