forked from OSchip/llvm-project
[SystemZ] Remove the ManipulatesSP flag from backend (NFC).
This flag was set in the presence of stacksave/stackrestore in order to force a frame pointer. This should however not be needed per the comment in MachineFrameInfo.h stating that a a variable sized object "...is the sole condition which prevents frame pointer elimination", and experiments have also shown that there seems to be no effect whatsoever on code generation with ManipulatesSP. Review: Ulrich Weigand
This commit is contained in:
parent
df31ff1b29
commit
792853cb78
|
@ -764,8 +764,7 @@ void SystemZELFFrameLowering::inlineStackProbe(
|
|||
|
||||
bool SystemZELFFrameLowering::hasFP(const MachineFunction &MF) const {
|
||||
return (MF.getTarget().Options.DisableFramePointerElim(MF) ||
|
||||
MF.getFrameInfo().hasVarSizedObjects() ||
|
||||
MF.getInfo<SystemZMachineFunctionInfo>()->getManipulatesSP());
|
||||
MF.getFrameInfo().hasVarSizedObjects());
|
||||
}
|
||||
|
||||
StackOffset SystemZELFFrameLowering::getFrameIndexReference(
|
||||
|
|
|
@ -318,8 +318,6 @@ SystemZTargetLowering::SystemZTargetLowering(const TargetMachine &TM,
|
|||
setOperationAction(ISD::DYNAMIC_STACKALLOC, PtrVT, Custom);
|
||||
setOperationAction(ISD::GET_DYNAMIC_AREA_OFFSET, PtrVT, Custom);
|
||||
|
||||
// Use custom expanders so that we can force the function to use
|
||||
// a frame pointer.
|
||||
setOperationAction(ISD::STACKSAVE, MVT::Other, Custom);
|
||||
setOperationAction(ISD::STACKRESTORE, MVT::Other, Custom);
|
||||
|
||||
|
@ -4194,7 +4192,6 @@ SDValue SystemZTargetLowering::lowerSTACKSAVE(SDValue Op,
|
|||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
const SystemZSubtarget *Subtarget = &MF.getSubtarget<SystemZSubtarget>();
|
||||
auto *Regs = Subtarget->getSpecialRegisters();
|
||||
MF.getInfo<SystemZMachineFunctionInfo>()->setManipulatesSP(true);
|
||||
if (MF.getFunction().getCallingConv() == CallingConv::GHC)
|
||||
report_fatal_error("Variable-sized stack allocations are not supported "
|
||||
"in GHC calling convention");
|
||||
|
@ -4207,7 +4204,6 @@ SDValue SystemZTargetLowering::lowerSTACKRESTORE(SDValue Op,
|
|||
MachineFunction &MF = DAG.getMachineFunction();
|
||||
const SystemZSubtarget *Subtarget = &MF.getSubtarget<SystemZSubtarget>();
|
||||
auto *Regs = Subtarget->getSpecialRegisters();
|
||||
MF.getInfo<SystemZMachineFunctionInfo>()->setManipulatesSP(true);
|
||||
bool StoreBackchain = MF.getFunction().hasFnAttribute("backchain");
|
||||
|
||||
if (MF.getFunction().getCallingConv() == CallingConv::GHC)
|
||||
|
|
|
@ -34,14 +34,12 @@ class SystemZMachineFunctionInfo : public MachineFunctionInfo {
|
|||
unsigned VarArgsFrameIndex;
|
||||
unsigned RegSaveFrameIndex;
|
||||
int FramePointerSaveIndex;
|
||||
bool ManipulatesSP;
|
||||
unsigned NumLocalDynamics;
|
||||
|
||||
public:
|
||||
explicit SystemZMachineFunctionInfo(MachineFunction &MF)
|
||||
: VarArgsFirstGPR(0), VarArgsFirstFPR(0), VarArgsFrameIndex(0),
|
||||
RegSaveFrameIndex(0), FramePointerSaveIndex(0), ManipulatesSP(false),
|
||||
NumLocalDynamics(0) {}
|
||||
RegSaveFrameIndex(0), FramePointerSaveIndex(0), NumLocalDynamics(0) {}
|
||||
|
||||
// Get and set the first and last call-saved GPR that should be saved by
|
||||
// this function and the SP offset for the STMG. These are 0 if no GPRs
|
||||
|
@ -85,11 +83,6 @@ public:
|
|||
int getFramePointerSaveIndex() const { return FramePointerSaveIndex; }
|
||||
void setFramePointerSaveIndex(int Idx) { FramePointerSaveIndex = Idx; }
|
||||
|
||||
// Get and set whether the function directly manipulates the stack pointer,
|
||||
// e.g. through STACKSAVE or STACKRESTORE.
|
||||
bool getManipulatesSP() const { return ManipulatesSP; }
|
||||
void setManipulatesSP(bool MSP) { ManipulatesSP = MSP; }
|
||||
|
||||
// Count number of local-dynamic TLS symbols used.
|
||||
unsigned getNumLocalDynamicTLSAccesses() const { return NumLocalDynamics; }
|
||||
void incNumLocalDynamicTLSAccesses() { ++NumLocalDynamics; }
|
||||
|
|
Loading…
Reference in New Issue