9#ifndef LLVM_LIB_TARGET_ARM_ARMFRAMELOWERING_H 
   10#define LLVM_LIB_TARGET_ARM_ARMFRAMELOWERING_H 
   55                                 Register &FrameReg, 
int SPAdj) 
const;
 
   84                              std::vector<CalleeSavedInfo> &CSI) 
const override;
 
   95                    unsigned StrOpc, 
bool NoGap,
 
   99                   unsigned LdrOpc, 
bool isVarArg, 
bool NoGap,
 
  104                         unsigned PushOneOpc) 
const;
 
  109                            unsigned LdrOpc) 
const;
 
 
Register const TargetRegisterInfo * TRI
 
bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, MutableArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const override
restoreCalleeSavedRegisters - Issues instruction(s) to restore all callee saved registers and returns...
 
StackOffset getFrameIndexReference(const MachineFunction &MF, int FI, Register &FrameReg) const override
getFrameIndexReference - Provide a base+offset reference to an FI slot for debug info.
 
bool keepFramePointer(const MachineFunction &MF) const
 
static void updateLRRestored(MachineFunction &MF)
Update the IsRestored flag on LR if it is spilled, based on the return instructions.
 
void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override
emitProlog/emitEpilog - These methods insert prolog and epilog code into the function.
 
ARMFrameLowering(const ARMSubtarget &sti)
 
bool enableShrinkWrapping(const MachineFunction &MF) const override
Returns true if the target will correctly handle shrink wrapping.
 
bool isProfitableForNoCSROpt(const Function &F) const override
Check if the no-CSR optimisation is profitable for the given function.
 
void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override
 
bool requiresAAPCSFrameRecord(const MachineFunction &MF) const
 
bool isFPReserved(const MachineFunction &MF) const
isFPReserved - Return true if the frame pointer register should be considered a reserved register on ...
 
bool canSimplifyCallFramePseudos(const MachineFunction &MF) const override
canSimplifyCallFramePseudos - If there is a reserved call frame, the call frame pseudos can be simpli...
 
void adjustForSegmentedStacks(MachineFunction &MF, MachineBasicBlock &MBB) const override
Adjust the prologue to have the function use segmented stacks.
 
bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, ArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const override
spillCalleeSavedRegisters - Issues instruction(s) to spill all callee saved registers and returns tru...
 
bool hasReservedCallFrame(const MachineFunction &MF) const override
hasReservedCallFrame - Under normal circumstances, when a frame pointer is not required,...
 
const SpillSlot * getCalleeSavedSpillSlots(unsigned &NumEntries) const override
getCalleeSavedSpillSlots - This method returns a pointer to an array of pairs, that contains an entry...
 
void processFunctionBeforeFrameFinalized(MachineFunction &MF, RegScavenger *RS=nullptr) const override
processFunctionBeforeFrameFinalized - This method is called immediately before the specified function...
 
bool hasFPImpl(const MachineFunction &MF) const override
hasFPImpl - Return true if the specified function should have a dedicated frame pointer register.
 
int ResolveFrameIndexReference(const MachineFunction &MF, int FI, Register &FrameReg, int SPAdj) const
 
void getCalleeSaves(const MachineFunction &MF, BitVector &SavedRegs) const override
Returns the callee-saved registers as computed by determineCalleeSaves in the BitVector SavedRegs.
 
void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs, RegScavenger *RS) const override
This method determines which of the registers reported by TargetRegisterInfo::getCalleeSavedRegs() sh...
 
bool enableCalleeSaveSkip(const MachineFunction &MF) const override
Returns true if the target can safely skip saving callee-saved registers for noreturn nounwind functi...
 
bool assignCalleeSavedSpillSlots(MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector< CalleeSavedInfo > &CSI) const override
 
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
 
The CalleeSavedInfo class tracks the information need to locate where a callee saved register is in t...
 
MachineInstrBundleIterator< MachineInstr > iterator
 
MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memo...
 
Wrapper class representing virtual and physical registers.
 
StackOffset holds a fixed and a scalable offset in bytes.
 
TargetFrameLowering(StackDirection D, Align StackAl, int LAO, Align TransAl=Align(1), bool StackReal=true)
 
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
 
An efficient, type-erasing, non-owning reference to a callable.
 
This is an optimization pass for GlobalISel generic memory operations.