aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/MachineFrameInfo.h15
-rw-r--r--lib/Target/X86/X86FrameLowering.cpp4
-rw-r--r--lib/Target/X86/X86MachineFunctionInfo.h19
3 files changed, 19 insertions, 19 deletions
diff --git a/include/llvm/CodeGen/MachineFrameInfo.h b/include/llvm/CodeGen/MachineFrameInfo.h
index 78898a4a69..8b958e437e 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 21ad062eda..bf0ba09e23 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 2bc308d86c..cdf907b8c0 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