14 #ifndef LLVM_TARGET_TARGETFRAMELOWERING_H
15 #define LLVM_TARGET_TARGETFRAMELOWERING_H
22 class CalleeSavedInfo;
23 class MachineFunction;
47 unsigned StackAlignment;
48 unsigned TransientStackAlignment;
50 bool StackRealignable;
53 unsigned TransAl = 1,
bool StackReal =
true)
54 : StackDir(D), StackAlignment(StackAl), TransientStackAlignment(TransAl),
55 LocalAreaOffset(LAO), StackRealignable(StackReal) {}
77 return TransientStackAlignment;
83 return StackRealignable;
105 virtual const SpillSlot *
138 const std::vector<CalleeSavedInfo> &CSI,
149 const std::vector<CalleeSavedInfo> &CSI,
187 unsigned &FrameReg)
const;
unsigned getStackAlignment() const
virtual void adjustForHiPEPrologue(MachineFunction &MF) const
virtual const SpillSlot * getCalleeSavedSpillSlots(unsigned &NumEntries) const
bool isStackRealignable() const
virtual bool targetHandlesStackFrameRounding() const
virtual bool hasFP(const MachineFunction &MF) const =0
#define llvm_unreachable(msg)
virtual ~TargetFrameLowering()
virtual bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI) const
virtual int getFrameIndexReference(const MachineFunction &MF, int FI, unsigned &FrameReg) const
unsigned getTransientStackAlignment() const
virtual void adjustForSegmentedStacks(MachineFunction &MF) const
bundle_iterator< MachineInstr, instr_iterator > iterator
virtual bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const std::vector< CalleeSavedInfo > &CSI, const TargetRegisterInfo *TRI) const
virtual void eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const
virtual bool hasReservedCallFrame(const MachineFunction &MF) const
virtual int getFrameIndexOffset(const MachineFunction &MF, int FI) const
virtual void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const =0
int getOffsetOfLocalArea() const
virtual bool canSimplifyCallFramePseudos(const MachineFunction &MF) const
virtual void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, RegScavenger *RS=NULL) const
TargetFrameLowering(StackDirection D, unsigned StackAl, int LAO, unsigned TransAl=1, bool StackReal=true)
StackDirection getStackGrowthDirection() const
virtual void emitPrologue(MachineFunction &MF) const =0
virtual void processFunctionBeforeFrameFinalized(MachineFunction &MF, RegScavenger *RS=NULL) const
virtual bool isFPCloseToIncomingSP() const