diff options
| -rw-r--r-- | include/llvm/CodeGen/MachineFrameInfo.h | 15 | ||||
| -rw-r--r-- | lib/Target/X86/X86FrameLowering.cpp | 4 | ||||
| -rw-r--r-- | lib/Target/X86/X86MachineFunctionInfo.h | 19 | 
3 files changed, 19 insertions, 19 deletions
diff --git a/include/llvm/CodeGen/MachineFrameInfo.h b/include/llvm/CodeGen/MachineFrameInfo.h index 78898a4..8b958e4 100644 --- a/include/llvm/CodeGen/MachineFrameInfo.h +++ b/include/llvm/CodeGen/MachineFrameInfo.h @@ -215,10 +215,6 @@ class MachineFrameInfo {    /// just allocate them normally.    bool UseLocalStackAllocationBlock; -  /// After the stack pointer has been restore from the base pointer we -  /// use a cached adjusment.  Currently only used for x86. -  int64_t BPAdj; -  public:      explicit MachineFrameInfo(const TargetFrameLowering &tfi) : TFI(tfi) {      StackSize = NumFixedObjects = OffsetAdjustment = MaxAlignment = 0; @@ -234,7 +230,6 @@ public:      LocalFrameSize = 0;      LocalFrameMaxAlign = 0;      UseLocalStackAllocationBlock = false; -    BPAdj = 0;    }    /// hasStackObjects - Return true if there are any stack objects in this @@ -543,16 +538,6 @@ public:    void setCalleeSavedInfoValid(bool v) { CSIValid = v; } -  /// setBasePtrStackAdjustment - If we're restoring the stack pointer from the -  /// base pointer, due to dynamic stack realignment + VLAs, we cache the -  /// number of bytes initially allocated for the stack frame.  In obscure -  /// cases (e.g., tail calls with byval argument and no stack protector), the -  /// stack gets adjusted outside of the prolog, but these shouldn't be  -  /// considered when restoring from the base pointer.  Currently, this is only -  /// needed for x86. -  void setBasePtrStackAdjustment(int64_t adj) { BPAdj = adj; } -  int64_t getBasePtrStackAdjustment() const { return BPAdj; } -    /// getPristineRegs - Return a set of physical registers that are pristine on    /// entry to the MBB.    /// diff --git a/lib/Target/X86/X86FrameLowering.cpp b/lib/Target/X86/X86FrameLowering.cpp index 21ad062..bf0ba09 100644 --- a/lib/Target/X86/X86FrameLowering.cpp +++ b/lib/Target/X86/X86FrameLowering.cpp @@ -925,7 +925,7 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF) const {        .addReg(StackPtr)        .setMIFlag(MachineInstr::FrameSetup); -    MFI->setBasePtrStackAdjustment(NumBytes); +    X86FI->setBasePtrStackAdjustment(NumBytes);    }    if (( (!HasFP && NumBytes) || PushedRegs) && needsFrameMoves) { @@ -1051,7 +1051,7 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF,              StackPtr).addReg(BasePtr);      // When restoring from the BP we must use a cached SP adjustment. -    NumBytes = MFI->getBasePtrStackAdjustment(); +    NumBytes = X86FI->getBasePtrStackAdjustment();    }    // If dynamic alloca is used, then reset esp to point to the last callee-saved diff --git a/lib/Target/X86/X86MachineFunctionInfo.h b/lib/Target/X86/X86MachineFunctionInfo.h index 2bc308d..cdf907b 100644 --- a/lib/Target/X86/X86MachineFunctionInfo.h +++ b/lib/Target/X86/X86MachineFunctionInfo.h @@ -69,6 +69,10 @@ class X86MachineFunctionInfo : public MachineFunctionInfo {    /// NumLocalDynamics - Number of local-dynamic TLS accesses.    unsigned NumLocalDynamics; +  /// After the stack pointer has been restore from the base pointer we +  /// use a cached adjusment. +  int64_t BPAdj; +  public:    X86MachineFunctionInfo() : ForceFramePointer(false),                               CalleeSavedFrameSize(0), @@ -97,8 +101,9 @@ public:        VarArgsGPOffset(0),        VarArgsFPOffset(0),        ArgumentStackSize(0), -      NumLocalDynamics(0) {} -   +      NumLocalDynamics(0), +      BPAdj(0) {} +    bool getForceFramePointer() const { return ForceFramePointer;}     void setForceFramePointer(bool forceFP) { ForceFramePointer = forceFP; } @@ -137,6 +142,16 @@ public:    unsigned getNumLocalDynamicTLSAccesses() const { return NumLocalDynamics; }    void incNumLocalDynamicTLSAccesses() { ++NumLocalDynamics; } + +  /// setBasePtrStackAdjustment - If we're restoring the stack pointer from the +  /// base pointer, due to dynamic stack realignment + VLAs, we cache the +  /// number of bytes initially allocated for the stack frame.  In obscure +  /// cases (e.g., tail calls with byval argument and no stack protector), the +  /// stack gets adjusted outside of the prolog, but these shouldn't be  +  /// considered when restoring from the base pointer.  Currently, this is only +  /// needed for x86. +  void setBasePtrStackAdjustment(int64_t adj) { BPAdj = adj; } +  int64_t getBasePtrStackAdjustment() const { return BPAdj; }  };  } // End llvm namespace  | 
