|
| DirectXFrameLowering (const DirectXSubtarget &STI) |
|
void | emitPrologue (MachineFunction &, MachineBasicBlock &) const override |
| emitProlog/emitEpilog - These methods insert prolog and epilog code into the function.
|
|
void | emitEpilogue (MachineFunction &, MachineBasicBlock &) const override |
|
| TargetFrameLowering (StackDirection D, Align StackAl, int LAO, Align TransAl=Align(1), bool StackReal=true) |
|
virtual | ~TargetFrameLowering () |
|
StackDirection | getStackGrowthDirection () const |
| getStackGrowthDirection - Return the direction the stack grows
|
|
unsigned | getStackAlignment () const |
| getStackAlignment - This method returns the number of bytes to which the stack pointer must be aligned on entry to a function.
|
|
Align | getStackAlign () const |
| getStackAlignment - This method returns the number of bytes to which the stack pointer must be aligned on entry to a function.
|
|
virtual uint64_t | getStackThreshold () const |
| getStackThreshold - Return the maximum stack size
|
|
int | alignSPAdjust (int SPAdj) const |
| alignSPAdjust - This method aligns the stack adjustment to the correct alignment.
|
|
Align | getTransientStackAlign () const |
| getTransientStackAlignment - This method returns the number of bytes to which the stack pointer must be aligned at all times, even between calls.
|
|
bool | isStackRealignable () const |
| isStackRealignable - This method returns whether the stack can be realigned.
|
|
virtual bool | isStackIdSafeForLocalArea (unsigned StackId) const |
| This method returns whether or not it is safe for an object with the given stack id to be bundled into the local area.
|
|
int | getOffsetOfLocalArea () const |
| getOffsetOfLocalArea - This method returns the offset of the local area from the stack pointer on entrance to a function.
|
|
virtual bool | allocateScavengingFrameIndexesNearIncomingSP (const MachineFunction &MF) const |
| Control the placement of special register scavenging spill slots when allocating a stack frame.
|
|
virtual bool | assignCalleeSavedSpillSlots (MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector< CalleeSavedInfo > &CSI, unsigned &MinCSFrameIndex, unsigned &MaxCSFrameIndex) const |
| assignCalleeSavedSpillSlots - Allows target to override spill slot assignment logic.
|
|
virtual bool | assignCalleeSavedSpillSlots (MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector< CalleeSavedInfo > &CSI) const |
|
virtual const SpillSlot * | getCalleeSavedSpillSlots (unsigned &NumEntries) const |
| getCalleeSavedSpillSlots - This method returns a pointer to an array of pairs, that contains an entry for each callee saved register that must be spilled to a particular stack location if it is spilled.
|
|
virtual bool | targetHandlesStackFrameRounding () const |
| targetHandlesStackFrameRounding - Returns true if the target is responsible for rounding up the stack frame (probably at emitPrologue time).
|
|
virtual bool | enableShrinkWrapping (const MachineFunction &MF) const |
| Returns true if the target will correctly handle shrink wrapping.
|
|
virtual bool | enableStackSlotScavenging (const MachineFunction &MF) const |
| Returns true if the stack slot holes in the fixed and callee-save stack area should be used when allocating other stack locations to reduce stack size.
|
|
virtual bool | enableCalleeSaveSkip (const MachineFunction &MF) const |
| Returns true if the target can safely skip saving callee-saved registers for noreturn nounwind functions.
|
|
virtual void | emitPrologue (MachineFunction &MF, MachineBasicBlock &MBB) const =0 |
| emitProlog/emitEpilog - These methods insert prolog and epilog code into the function.
|
|
virtual void | emitEpilogue (MachineFunction &MF, MachineBasicBlock &MBB) const =0 |
|
virtual void | emitZeroCallUsedRegs (BitVector RegsToZero, MachineBasicBlock &MBB) const |
| emitZeroCallUsedRegs - Zeros out call used registers.
|
|
virtual void | emitCalleeSavedFrameMovesFullCFA (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI) const |
| With basic block sections, emit callee saved frame moves for basic blocks that are in a different section.
|
|
virtual bool | enableCFIFixup (MachineFunction &MF) const |
| Returns true if we may need to fix the unwind information for the function.
|
|
virtual void | resetCFIToInitialState (MachineBasicBlock &MBB) const |
| Emit CFI instructions that recreate the state of the unwind information upon fucntion entry.
|
|
virtual void | inlineStackProbe (MachineFunction &MF, MachineBasicBlock &PrologueMBB) const |
| Replace a StackProbe stub (if any) with the actual probe code inline.
|
|
virtual bool | stackProbeFunctionModifiesSP () const |
| Does the stack probe function call return with a modified stack pointer?
|
|
virtual void | adjustForSegmentedStacks (MachineFunction &MF, MachineBasicBlock &PrologueMBB) const |
| Adjust the prologue to have the function use segmented stacks.
|
|
virtual void | adjustForHiPEPrologue (MachineFunction &MF, MachineBasicBlock &PrologueMBB) const |
| Adjust the prologue to add Erlang Run-Time System (ERTS) specific code in the assembly prologue to explicitly handle the stack.
|
|
virtual bool | spillCalleeSavedRegisters (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, ArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const |
| spillCalleeSavedRegisters - Issues instruction(s) to spill all callee saved registers and returns true if it isn't possible / profitable to do so by issuing a series of store instructions via storeRegToStackSlot().
|
|
virtual bool | restoreCalleeSavedRegisters (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, MutableArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const |
| restoreCalleeSavedRegisters - Issues instruction(s) to restore all callee saved registers and returns true if it isn't possible / profitable to do so by issuing a series of load instructions via loadRegToStackSlot().
|
|
bool | hasFP (const MachineFunction &MF) const |
| hasFP - Return true if the specified function should have a dedicated frame pointer register.
|
|
virtual bool | hasReservedCallFrame (const MachineFunction &MF) const |
| hasReservedCallFrame - Under normal circumstances, when a frame pointer is not required, we reserve argument space for call sites in the function immediately on entry to the current function.
|
|
virtual bool | canSimplifyCallFramePseudos (const MachineFunction &MF) const |
| canSimplifyCallFramePseudos - When possible, it's best to simplify the call frame pseudo ops before doing frame index elimination.
|
|
virtual bool | needsFrameIndexResolution (const MachineFunction &MF) const |
|
virtual StackOffset | getFrameIndexReference (const MachineFunction &MF, int FI, Register &FrameReg) const |
| getFrameIndexReference - This method should return the base register and offset used to reference a frame index location.
|
|
virtual StackOffset | getFrameIndexReferencePreferSP (const MachineFunction &MF, int FI, Register &FrameReg, bool IgnoreSPUpdates) const |
| Same as getFrameIndexReference , except that the stack pointer (as opposed to the frame pointer) will be the preferred value for FrameReg .
|
|
virtual StackOffset | getNonLocalFrameIndexReference (const MachineFunction &MF, int FI) const |
| getNonLocalFrameIndexReference - This method returns the offset used to reference a frame index location.
|
|
virtual StackOffset | getFrameIndexReferenceFromSP (const MachineFunction &MF, int FI) const |
| getFrameIndexReferenceFromSP - This method returns the offset from the stack pointer to the slot of the specified index.
|
|
virtual void | getCalleeSaves (const MachineFunction &MF, BitVector &SavedRegs) const |
| Returns the callee-saved registers as computed by determineCalleeSaves in the BitVector SavedRegs .
|
|
virtual void | determineCalleeSaves (MachineFunction &MF, BitVector &SavedRegs, RegScavenger *RS=nullptr) const |
| This method determines which of the registers reported by TargetRegisterInfo::getCalleeSavedRegs() should actually get saved.
|
|
virtual void | processFunctionBeforeFrameFinalized (MachineFunction &MF, RegScavenger *RS=nullptr) const |
| processFunctionBeforeFrameFinalized - This method is called immediately before the specified function's frame layout (MF.getFrameInfo()) is finalized.
|
|
virtual void | processFunctionBeforeFrameIndicesReplaced (MachineFunction &MF, RegScavenger *RS=nullptr) const |
| processFunctionBeforeFrameIndicesReplaced - This method is called immediately before MO_FrameIndex operands are eliminated, but after the frame is finalized.
|
|
virtual unsigned | getWinEHParentFrameOffset (const MachineFunction &MF) const |
|
virtual MachineBasicBlock::iterator | eliminateCallFramePseudoInstr (MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const |
| This method is called during prolog/epilog code insertion to eliminate call frame setup and destroy pseudo instructions (but only if the Target is using them).
|
|
virtual void | orderFrameObjects (const MachineFunction &MF, SmallVectorImpl< int > &objectsToAllocate) const |
| Order the symbols in the local stack frame.
|
|
virtual bool | canUseAsPrologue (const MachineBasicBlock &MBB) const |
| Check whether or not the given MBB can be used as a prologue for the target.
|
|
virtual bool | canUseAsEpilogue (const MachineBasicBlock &MBB) const |
| Check whether or not the given MBB can be used as a epilogue for the target.
|
|
virtual TargetStackID::Value | getStackIDForScalableVectors () const |
| Returns the StackID that scalable vectors should be associated with.
|
|
virtual bool | isSupportedStackID (TargetStackID::Value ID) const |
|
virtual bool | isProfitableForNoCSROpt (const Function &F) const |
| Check if the no-CSR optimisation is profitable for the given function.
|
|
virtual int | getInitialCFAOffset (const MachineFunction &MF) const |
| Return initial CFA offset value i.e.
|
|
virtual Register | getInitialCFARegister (const MachineFunction &MF) const |
| Return initial CFA register value i.e.
|
|
virtual DwarfFrameBase | getDwarfFrameBase (const MachineFunction &MF) const |
| Return the frame base information to be encoded in the DWARF subprogram debug info.
|
|
virtual void | spillFPBP (MachineFunction &MF) const |
| If frame pointer or base pointer is clobbered by an instruction, we should spill/restore it around that instruction.
|
|
virtual void | emitRemarks (const MachineFunction &MF, MachineOptimizationRemarkEmitter *ORE) const |
| This method is called at the end of prolog/epilog code insertion, so targets can emit remarks based on the final frame layout.
|
|