LLVM: lib/Target/ARM/ARMFrameLowering.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_LIB_TARGET_ARM_ARMFRAMELOWERING_H

10#define LLVM_LIB_TARGET_ARM_ARMFRAMELOWERING_H

11

14

15namespace llvm {

16

20

22protected:

24

25public:

27

28

29

32

37

38 bool

43

45

47

53 Register &FrameReg) const override;

55 Register &FrameReg, int SPAdj) const;

56

58 BitVector &SavedRegs) const override;

61

62

63

65

68

71

72

74

76

77

78 return false;

79 }

80

81 bool

84 std::vector &CSI) const override;

85

86 const SpillSlot *

88

89protected:

91

92private:

95 unsigned StrOpc, bool NoGap,

99 unsigned LdrOpc, bool isVarArg, bool NoGap,

101

104 unsigned PushOneOpc) const;

105

109 unsigned LdrOpc) const;

110

115};

116

117}

118

119#endif

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.

Definition ARMFrameLowering.h:75

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.

const ARMSubtarget & STI

Definition ARMFrameLowering.h:23

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

assignCalleeSavedSpillSlots - Allows target to override spill slot assignment logic.

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.