LLVM: lib/Target/WebAssembly/WebAssemblyFrameLowering.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYFRAMELOWERING_H

16#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYFRAMELOWERING_H

17

19

20namespace llvm {

21

23public:

24

25

26

27

29

35

39

40

43

47

49

50

55

56

57

59 int FrameIndex);

60

69

70protected:

72

73private:

75 bool needsSPForLocalFrame(const MachineFunction &MF) const;

78};

79

80}

81

82#endif

MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL

MachineInstrBundleIterator< MachineInstr > iterator

TargetFrameLowering(StackDirection D, Align StackAl, int LAO, Align TransAl=Align(1), bool StackReal=true)

WebAssemblyFrameLowering()

Definition WebAssemblyFrameLowering.h:30

static unsigned getOpcAdd(const MachineFunction &MF)

static unsigned getFPReg(const MachineFunction &MF)

bool needsPrologForEH(const MachineFunction &MF) const

static unsigned getOpcGlobSet(const MachineFunction &MF)

bool hasReservedCallFrame(const MachineFunction &MF) const override

Under normal circumstances, when a frame pointer is not required, we reserve argument space for call ...

static unsigned getOpcAnd(const MachineFunction &MF)

static unsigned getSPReg(const MachineFunction &MF)

static unsigned getOpcGlobGet(const MachineFunction &MF)

DwarfFrameBase getDwarfFrameBase(const MachineFunction &MF) const override

Return the frame base information to be encoded in the DWARF subprogram debug info.

bool isSupportedStackID(TargetStackID::Value ID) const override

MachineBasicBlock::iterator eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const override

This method is called during prolog/epilog code insertion to eliminate call frame setup and destroy p...

static unsigned getOpcConst(const MachineFunction &MF)

bool hasFPImpl(const MachineFunction &MF) const override

Return true if the specified function should have a dedicated frame pointer register.

void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override

These methods insert prolog and epilog code into the function.

void writeSPToGlobal(unsigned SrcReg, MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator &InsertStore, const DebugLoc &DL) const

Write SP back to __stack_pointer global.

void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override

static const size_t RedZoneSize

Size of the red zone for the user stack (leaf functions can use this much space below the stack point...

Definition WebAssemblyFrameLowering.h:28

static std::optional< unsigned > getLocalForStackObject(MachineFunction &MF, int FrameIndex)

static unsigned getOpcSub(const MachineFunction &MF)

unsigned ID

LLVM IR allows to use arbitrary numbers as calling convention identifiers.

This is an optimization pass for GlobalISel generic memory operations.

This struct is a compact representation of a valid (non-zero power of two) alignment.