forked from OSchip/llvm-project
Remove redundant TargetFrameLowering::getFrameIndexOffset virtual
function. This was the same as getFrameIndexReference, but without the FrameReg output. Differential Revision: http://reviews.llvm.org/D12042 llvm-svn: 245148
This commit is contained in:
parent
caad877d3e
commit
5567bafe93
|
@ -168,7 +168,7 @@ class MachineFrameInfo {
|
|||
/// SP then OffsetAdjustment is zero; if FP is used, OffsetAdjustment is set
|
||||
/// to the distance between the initial SP and the value in FP. For many
|
||||
/// targets, this value is only used when generating debug info (via
|
||||
/// TargetRegisterInfo::getFrameIndexOffset); when generating code, the
|
||||
/// TargetRegisterInfo::getFrameIndexReference); when generating code, the
|
||||
/// corresponding adjustments are performed directly.
|
||||
int OffsetAdjustment;
|
||||
|
||||
|
|
|
@ -207,10 +207,6 @@ public:
|
|||
// has any stack objects. However, targets may want to override this.
|
||||
virtual bool needsFrameIndexResolution(const MachineFunction &MF) const;
|
||||
|
||||
/// getFrameIndexOffset - Returns the displacement from the frame register to
|
||||
/// the stack frame of the specified index.
|
||||
virtual int getFrameIndexOffset(const 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.
|
||||
|
|
|
@ -320,7 +320,9 @@ void GCMachineCodeAnalysis::FindStackOffsets(MachineFunction &MF) {
|
|||
if (MF.getFrameInfo()->isDeadObjectIndex(RI->Num)) {
|
||||
RI = FI->removeStackRoot(RI);
|
||||
} else {
|
||||
RI->StackOffset = TFI->getFrameIndexOffset(MF, RI->Num);
|
||||
unsigned FrameReg; // FIXME: surely GCRoot ought to store the
|
||||
// register that the offset is from?
|
||||
RI->StackOffset = TFI->getFrameIndexReference(MF, RI->Num, FrameReg);
|
||||
++RI;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,25 +32,22 @@ bool TargetFrameLowering::noFramePointerElim(const MachineFunction &MF) const {
|
|||
return Attr.getValueAsString() == "true";
|
||||
}
|
||||
|
||||
/// getFrameIndexOffset - Returns the displacement from the frame register to
|
||||
/// the stack frame of the specified index. This is the default implementation
|
||||
/// which is overridden for some targets.
|
||||
int TargetFrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
return MFI->getObjectOffset(FI) + MFI->getStackSize() -
|
||||
getOffsetOfLocalArea() + MFI->getOffsetAdjustment();
|
||||
}
|
||||
|
||||
/// Returns the displacement from the frame register to the stack
|
||||
/// frame of the specified index, along with the frame register used
|
||||
/// (in output arg FrameReg). This is the default implementation which
|
||||
/// is overridden for some targets.
|
||||
int TargetFrameLowering::getFrameIndexReference(const MachineFunction &MF,
|
||||
int FI, unsigned &FrameReg) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const TargetRegisterInfo *RI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
// By default, assume all frame indices are referenced via whatever
|
||||
// getFrameRegister() says. The target can override this if it's doing
|
||||
// something different.
|
||||
FrameReg = RI->getFrameRegister(MF);
|
||||
return getFrameIndexOffset(MF, FI);
|
||||
|
||||
return MFI->getObjectOffset(FI) + MFI->getStackSize() -
|
||||
getOffsetOfLocalArea() + MFI->getOffsetAdjustment();
|
||||
}
|
||||
|
||||
bool TargetFrameLowering::needsFrameIndexResolution(
|
||||
|
|
|
@ -636,14 +636,6 @@ void AArch64FrameLowering::emitEpilogue(MachineFunction &MF,
|
|||
-(NumRestores - 1) * 16, TII, MachineInstr::NoFlags);
|
||||
}
|
||||
|
||||
/// getFrameIndexOffset - Returns the displacement from the frame register to
|
||||
/// the stack frame of the specified index.
|
||||
int AArch64FrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
unsigned FrameReg;
|
||||
return getFrameIndexReference(MF, FI, FrameReg);
|
||||
}
|
||||
|
||||
/// getFrameIndexReference - Provide a base+offset reference to an FI slot for
|
||||
/// debug info. It's the same as what we use for resolving the code-gen
|
||||
/// references for now. FIXME: This can go wrong when references are
|
||||
|
|
|
@ -37,7 +37,6 @@ public:
|
|||
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
|
||||
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
|
||||
|
||||
int getFrameIndexOffset(const MachineFunction &MF, int FI) const override;
|
||||
int getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const override;
|
||||
int resolveFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
|
|
|
@ -71,9 +71,15 @@ unsigned AMDGPUFrameLowering::getStackWidth(const MachineFunction &MF) const {
|
|||
}
|
||||
|
||||
/// \returns The number of registers allocated for \p FI.
|
||||
int AMDGPUFrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
int AMDGPUFrameLowering::getFrameIndexReference(const MachineFunction &MF,
|
||||
int FI,
|
||||
unsigned &FrameReg) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
const TargetRegisterInfo *RI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
// Fill in FrameReg output argument.
|
||||
FrameReg = RI->getFrameRegister(MF);
|
||||
|
||||
// Start the offset at 2 so we don't overwrite work group information.
|
||||
// XXX: We should only do this when the shader actually uses this
|
||||
// information.
|
||||
|
|
|
@ -34,7 +34,8 @@ public:
|
|||
/// \returns The number of 32-bit sub-registers that are used when storing
|
||||
/// values to the stack.
|
||||
unsigned getStackWidth(const MachineFunction &MF) const;
|
||||
int getFrameIndexOffset(const MachineFunction &MF, int FI) const override;
|
||||
int getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const override;
|
||||
const SpillSlot *
|
||||
getCalleeSavedSpillSlots(unsigned &NumEntries) const override;
|
||||
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
|
||||
|
|
|
@ -892,7 +892,9 @@ SDValue AMDGPUTargetLowering::LowerFrameIndex(SDValue Op,
|
|||
FrameIndexSDNode *FIN = cast<FrameIndexSDNode>(Op);
|
||||
|
||||
unsigned FrameIndex = FIN->getIndex();
|
||||
unsigned Offset = TFL->getFrameIndexOffset(MF, FrameIndex);
|
||||
unsigned IgnoredFrameReg;
|
||||
unsigned Offset =
|
||||
TFL->getFrameIndexReference(MF, FrameIndex, IgnoredFrameReg);
|
||||
return DAG.getConstant(Offset * 4 * TFL->getStackWidth(MF), SDLoc(Op),
|
||||
Op.getValueType());
|
||||
}
|
||||
|
|
|
@ -307,7 +307,9 @@ int AMDGPUInstrInfo::getIndirectIndexEnd(const MachineFunction &MF) const {
|
|||
return -1;
|
||||
}
|
||||
|
||||
Offset = MF.getSubtarget().getFrameLowering()->getFrameIndexOffset(MF, -1);
|
||||
unsigned IgnoredFrameReg;
|
||||
Offset = MF.getSubtarget().getFrameLowering()->getFrameIndexReference(
|
||||
MF, -1, IgnoredFrameReg);
|
||||
|
||||
return getIndirectIndexBegin(MF) + Offset;
|
||||
}
|
||||
|
|
|
@ -879,12 +879,6 @@ ARMFrameLowering::ResolveFrameIndexReference(const MachineFunction &MF,
|
|||
return Offset;
|
||||
}
|
||||
|
||||
int ARMFrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
unsigned FrameReg;
|
||||
return getFrameIndexReference(MF, FI, FrameReg);
|
||||
}
|
||||
|
||||
void ARMFrameLowering::emitPushInst(MachineBasicBlock &MBB,
|
||||
MachineBasicBlock::iterator MI,
|
||||
const std::vector<CalleeSavedInfo> &CSI,
|
||||
|
|
|
@ -50,7 +50,6 @@ public:
|
|||
unsigned &FrameReg) const override;
|
||||
int ResolveFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg, int SPAdj) const;
|
||||
int getFrameIndexOffset(const MachineFunction &MF, int FI) const override;
|
||||
|
||||
void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs,
|
||||
RegScavenger *RS) const override;
|
||||
|
|
|
@ -511,7 +511,13 @@ void HexagonFrameLowering::insertPrologueInBlock(MachineBasicBlock &MBB) const {
|
|||
for (unsigned I = 0, E = CSI.size(); I < E; ++I) {
|
||||
if (CSI[I].getReg() == regsToMove[i]) {
|
||||
// Subtract 8 to make room for R30 and R31, which are added above.
|
||||
int64_t Offset = getFrameIndexOffset(MF, CSI[I].getFrameIdx()) - 8;
|
||||
unsigned FrameReg;
|
||||
int64_t Offset =
|
||||
getFrameIndexReference(MF, CSI[I].getFrameIdx(), FrameReg) - 8;
|
||||
|
||||
assert(FrameReg == HRI.getFrameRegister() &&
|
||||
"FrameReg from getFrameIndexReference should be the default "
|
||||
"frame reg");
|
||||
|
||||
if (regsToMove[i] < Hexagon::D0 || regsToMove[i] > Hexagon::D15) {
|
||||
unsigned DwarfReg = HRI.getDwarfRegNum(regsToMove[i], true);
|
||||
|
@ -717,9 +723,14 @@ static void addCalleeSaveRegistersAsImpOperand(MachineInstr *Inst,
|
|||
}
|
||||
}
|
||||
|
||||
int HexagonFrameLowering::getFrameIndexReference(const MachineFunction &MF,
|
||||
int FI,
|
||||
unsigned &FrameReg) const {
|
||||
const TargetRegisterInfo *RI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
// Fill in FrameReg output argument.
|
||||
FrameReg = RI->getFrameRegister(MF);
|
||||
|
||||
int HexagonFrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
return MF.getFrameInfo()->getObjectOffset(FI);
|
||||
}
|
||||
|
||||
|
@ -1289,4 +1300,3 @@ bool HexagonFrameLowering::useRestoreFunction(MachineFunction &MF,
|
|||
: SpillFuncThreshold;
|
||||
return Threshold < NumCSI;
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,8 @@ public:
|
|||
bool targetHandlesStackFrameRounding() const override {
|
||||
return true;
|
||||
}
|
||||
int getFrameIndexOffset(const MachineFunction &MF, int FI) const override;
|
||||
int getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const override;
|
||||
bool hasFP(const MachineFunction &MF) const override;
|
||||
|
||||
const SpillSlot *getCalleeSavedSpillSlots(unsigned &NumEntries)
|
||||
|
|
|
@ -394,7 +394,10 @@ void SystemZFrameLowering::emitPrologue(MachineFunction &MF,
|
|||
|
||||
// Add CFI for the this save.
|
||||
unsigned DwarfReg = MRI->getDwarfRegNum(Reg, true);
|
||||
int64_t Offset = getFrameIndexOffset(MF, Save.getFrameIdx());
|
||||
unsigned IgnoredFrameReg;
|
||||
int64_t Offset =
|
||||
getFrameIndexReference(MF, Save.getFrameIdx(), IgnoredFrameReg);
|
||||
|
||||
unsigned CFIIndex = MMI.addFrameInst(MCCFIInstruction::createOffset(
|
||||
nullptr, DwarfReg, SPOffsetFromCFA + Offset));
|
||||
CFIIndexes.push_back(CFIIndex);
|
||||
|
@ -455,9 +458,14 @@ bool SystemZFrameLowering::hasFP(const MachineFunction &MF) const {
|
|||
MF.getInfo<SystemZMachineFunctionInfo>()->getManipulatesSP());
|
||||
}
|
||||
|
||||
int SystemZFrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
int SystemZFrameLowering::getFrameIndexReference(const MachineFunction &MF,
|
||||
int FI,
|
||||
unsigned &FrameReg) const {
|
||||
const MachineFrameInfo *MFFrame = MF.getFrameInfo();
|
||||
const TargetRegisterInfo *RI = MF.getSubtarget().getRegisterInfo();
|
||||
|
||||
// Fill in FrameReg output argument.
|
||||
FrameReg = RI->getFrameRegister(MF);
|
||||
|
||||
// Start with the offset of FI from the top of the caller-allocated frame
|
||||
// (i.e. the top of the 160 bytes allocated by the caller). This initial
|
||||
|
|
|
@ -43,7 +43,8 @@ public:
|
|||
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
|
||||
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override;
|
||||
bool hasFP(const MachineFunction &MF) const override;
|
||||
int getFrameIndexOffset(const MachineFunction &MF, int FI) const override;
|
||||
int getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const override;
|
||||
bool hasReservedCallFrame(const MachineFunction &MF) const override;
|
||||
void eliminateCallFramePseudoInstr(MachineFunction &MF,
|
||||
MachineBasicBlock &MBB,
|
||||
|
|
|
@ -69,8 +69,8 @@ SystemZRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI,
|
|||
|
||||
// Decompose the frame index into a base and offset.
|
||||
int FrameIndex = MI->getOperand(FIOperandNum).getIndex();
|
||||
unsigned BasePtr = getFrameRegister(MF);
|
||||
int64_t Offset = (TFI->getFrameIndexOffset(MF, FrameIndex) +
|
||||
unsigned BasePtr;
|
||||
int64_t Offset = (TFI->getFrameIndexReference(MF, FrameIndex, BasePtr) +
|
||||
MI->getOperand(FIOperandNum + 1).getImm());
|
||||
|
||||
// Special handling of dbg_value instructions.
|
||||
|
|
|
@ -905,7 +905,8 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF,
|
|||
int FI;
|
||||
if (unsigned Reg = TII.isStoreToStackSlot(FrameInstr, FI)) {
|
||||
if (X86::FR64RegClass.contains(Reg)) {
|
||||
int Offset = getFrameIndexOffset(MF, FI);
|
||||
unsigned IgnoredFrameReg;
|
||||
int Offset = getFrameIndexReference(MF, FI, IgnoredFrameReg);
|
||||
Offset += SEHFrameOffset;
|
||||
|
||||
BuildMI(MBB, MBBI, DL, TII.get(X86::SEH_SaveXMM))
|
||||
|
@ -955,8 +956,10 @@ void X86FrameLowering::emitPrologue(MachineFunction &MF,
|
|||
// it recovers the frame pointer from the base pointer rather than the
|
||||
// other way around.
|
||||
unsigned Opm = Uses64BitFramePtr ? X86::MOV64mr : X86::MOV32mr;
|
||||
unsigned IgnoredFrameReg;
|
||||
addRegOffset(BuildMI(MBB, MBBI, DL, TII.get(Opm)), BasePtr, true,
|
||||
getFrameIndexOffset(MF, X86FI->getSEHFramePtrSaveIndex()))
|
||||
getFrameIndexReference(MF, X86FI->getSEHFramePtrSaveIndex(),
|
||||
IgnoredFrameReg))
|
||||
.addReg(FramePtr)
|
||||
.setMIFlag(MachineInstr::FrameSetup);
|
||||
}
|
||||
|
@ -1107,9 +1110,24 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF,
|
|||
}
|
||||
}
|
||||
|
||||
int X86FrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
||||
int FI) const {
|
||||
// NOTE: this only has a subset of the full frame index logic. In
|
||||
// particular, the FI < 0 and AfterFPPop logic is handled in
|
||||
// X86RegisterInfo::eliminateFrameIndex, but not here. Possibly
|
||||
// (probably?) it should be moved into here.
|
||||
int X86FrameLowering::getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
|
||||
// We can't calculate offset from frame pointer if the stack is realigned,
|
||||
// so enforce usage of stack/base pointer. The base pointer is used when we
|
||||
// have dynamic allocas in addition to dynamic realignment.
|
||||
if (TRI->hasBasePointer(MF))
|
||||
FrameReg = TRI->getBaseRegister();
|
||||
else if (TRI->needsStackRealignment(MF))
|
||||
FrameReg = TRI->getStackRegister();
|
||||
else
|
||||
FrameReg = TRI->getFrameRegister(MF);
|
||||
|
||||
// Offset will hold the offset from the stack pointer at function entry to the
|
||||
// object.
|
||||
// We need to factor in additional offsets applied during the prologue to the
|
||||
|
@ -1180,22 +1198,10 @@ int X86FrameLowering::getFrameIndexOffset(const MachineFunction &MF,
|
|||
return Offset + FPDelta;
|
||||
}
|
||||
|
||||
int X86FrameLowering::getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const {
|
||||
// We can't calculate offset from frame pointer if the stack is realigned,
|
||||
// so enforce usage of stack/base pointer. The base pointer is used when we
|
||||
// have dynamic allocas in addition to dynamic realignment.
|
||||
if (TRI->hasBasePointer(MF))
|
||||
FrameReg = TRI->getBaseRegister();
|
||||
else if (TRI->needsStackRealignment(MF))
|
||||
FrameReg = TRI->getStackRegister();
|
||||
else
|
||||
FrameReg = TRI->getFrameRegister(MF);
|
||||
return getFrameIndexOffset(MF, FI);
|
||||
}
|
||||
|
||||
// Simplified from getFrameIndexOffset keeping only StackPointer cases
|
||||
int X86FrameLowering::getFrameIndexOffsetFromSP(const MachineFunction &MF, int FI) const {
|
||||
// Simplified from getFrameIndexReference keeping only StackPointer cases
|
||||
int X86FrameLowering::getFrameIndexReferenceFromSP(const MachineFunction &MF,
|
||||
int FI,
|
||||
unsigned &FrameReg) const {
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
// Does not include any dynamic realign.
|
||||
const uint64_t StackSize = MFI->getStackSize();
|
||||
|
@ -1222,6 +1228,9 @@ int X86FrameLowering::getFrameIndexOffsetFromSP(const MachineFunction &MF, int F
|
|||
#endif
|
||||
}
|
||||
|
||||
// Fill in FrameReg output argument.
|
||||
FrameReg = TRI->getStackRegister();
|
||||
|
||||
// This is how the math works out:
|
||||
//
|
||||
// %rsp grows (i.e. gets lower) left to right. Each box below is
|
||||
|
@ -1253,15 +1262,6 @@ int X86FrameLowering::getFrameIndexOffsetFromSP(const MachineFunction &MF, int F
|
|||
|
||||
return Offset + StackSize;
|
||||
}
|
||||
// Simplified from getFrameIndexReference keeping only StackPointer cases
|
||||
int X86FrameLowering::getFrameIndexReferenceFromSP(const MachineFunction &MF,
|
||||
int FI,
|
||||
unsigned &FrameReg) const {
|
||||
assert(!TRI->hasBasePointer(MF) && "we don't handle this case");
|
||||
|
||||
FrameReg = TRI->getStackRegister();
|
||||
return getFrameIndexOffsetFromSP(MF, FI);
|
||||
}
|
||||
|
||||
bool X86FrameLowering::assignCalleeSavedSpillSlots(
|
||||
MachineFunction &MF, const TargetRegisterInfo *TRI,
|
||||
|
|
|
@ -91,11 +91,9 @@ public:
|
|||
bool canSimplifyCallFramePseudos(const MachineFunction &MF) const override;
|
||||
bool needsFrameIndexResolution(const MachineFunction &MF) const override;
|
||||
|
||||
int getFrameIndexOffset(const MachineFunction &MF, int FI) const override;
|
||||
int getFrameIndexReference(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const override;
|
||||
|
||||
int getFrameIndexOffsetFromSP(const MachineFunction &MF, int FI) const;
|
||||
int getFrameIndexReferenceFromSP(const MachineFunction &MF, int FI,
|
||||
unsigned &FrameReg) const override;
|
||||
|
||||
|
|
|
@ -491,6 +491,7 @@ X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
|||
unsigned Opc = MI.getOpcode();
|
||||
bool AfterFPPop = Opc == X86::TAILJMPm64 || Opc == X86::TAILJMPm ||
|
||||
Opc == X86::TCRETURNmi || Opc == X86::TCRETURNmi64;
|
||||
|
||||
if (hasBasePointer(MF))
|
||||
BasePtr = (FrameIndex < 0 ? FramePtr : getBaseRegister());
|
||||
else if (needsStackRealignment(MF))
|
||||
|
@ -509,10 +510,12 @@ X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
|||
MachineOperand &FI = MI.getOperand(FIOperandNum);
|
||||
bool IsWinEH = MF.getTarget().getMCAsmInfo()->usesWindowsCFI();
|
||||
int Offset;
|
||||
unsigned IgnoredFrameReg;
|
||||
if (IsWinEH)
|
||||
Offset = TFI->getFrameIndexOffsetFromSP(MF, FrameIndex);
|
||||
Offset =
|
||||
TFI->getFrameIndexReferenceFromSP(MF, FrameIndex, IgnoredFrameReg);
|
||||
else
|
||||
Offset = TFI->getFrameIndexOffset(MF, FrameIndex);
|
||||
Offset = TFI->getFrameIndexReference(MF, FrameIndex, IgnoredFrameReg);
|
||||
FI.ChangeToImmediate(Offset);
|
||||
return;
|
||||
}
|
||||
|
@ -529,12 +532,13 @@ X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
|||
|
||||
// Now add the frame object offset to the offset from EBP.
|
||||
int FIOffset;
|
||||
unsigned IgnoredFrameReg;
|
||||
if (AfterFPPop) {
|
||||
// Tail call jmp happens after FP is popped.
|
||||
const MachineFrameInfo *MFI = MF.getFrameInfo();
|
||||
FIOffset = MFI->getObjectOffset(FrameIndex) - TFI->getOffsetOfLocalArea();
|
||||
} else
|
||||
FIOffset = TFI->getFrameIndexOffset(MF, FrameIndex);
|
||||
FIOffset = TFI->getFrameIndexReference(MF, FrameIndex, IgnoredFrameReg);
|
||||
|
||||
if (BasePtr == StackPtr)
|
||||
FIOffset += SPAdj;
|
||||
|
|
Loading…
Reference in New Issue