class X86MachineFunctionInfo
Declaration
class X86MachineFunctionInfo : public MachineFunctionInfo { /* full declaration omitted */ };
Description
X86MachineFunctionInfo - This class is derived from MachineFunction and contains private X86 target-specific information for each MachineFunction.
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:25
Inherits from: MachineFunctionInfo
Member Variables
- private bool ForceFramePointer = false
- ForceFramePointer - True if the function is required to use of frame pointer for reasons other than it containing dynamic allocation or that FP eliminatation is turned off. For example, Cygwin main function contains stack pointer re-alignment code which requires FP.
- private signed char RestoreBasePointerOffset = 0
- RestoreBasePointerOffset - Non-zero if the function has base pointer and makes call to llvm.eh.sjlj.setjmp. When non-zero, the value is a displacement from the frame pointer to a slot where the base pointer is stashed.
- private DenseMap<int, unsigned int> WinEHXMMSlotInfo
- WinEHXMMSlotInfo - Slot information of XMM registers in the stack frame in bytes.
- private unsigned int CalleeSavedFrameSize = 0
- CalleeSavedFrameSize - Size of the callee-saved register portion of the stack frame in bytes.
- private unsigned int BytesToPopOnReturn = 0
- BytesToPopOnReturn - Number of bytes function pops on return (in addition to the space used by the return address). Used on windows platform for stdcall & fastcall name decoration
- private int ReturnAddrIndex = 0
- ReturnAddrIndex - FrameIndex for return slot.
- private int FrameAddrIndex = 0
- FrameIndex for return slot.
- private int TailCallReturnAddrDelta = 0
- TailCallReturnAddrDelta - The number of bytes by which return address stack slot is moved as the result of tail call optimization.
- private llvm::Register SRetReturnReg
- SRetReturnReg - Some subtargets require that sret lowering includes returning the value of the returned struct in a register. This field holds the virtual register into which the sret argument is passed.
- private llvm::Register GlobalBaseReg
- GlobalBaseReg - keeps track of the virtual register initialized for use as the global base register. This is used for PIC in some PIC relocation models.
- private int VarArgsFrameIndex = 0
- VarArgsFrameIndex - FrameIndex for start of varargs area.
- private int RegSaveFrameIndex = 0
- RegSaveFrameIndex - X86-64 vararg func register save area.
- private unsigned int VarArgsGPOffset = 0
- VarArgsGPOffset - X86-64 vararg func int reg offset.
- private unsigned int VarArgsFPOffset = 0
- VarArgsFPOffset - X86-64 vararg func fp reg offset.
- private unsigned int ArgumentStackSize = 0
- ArgumentStackSize - The number of bytes on stack consumed by the arguments being passed on the stack.
- private unsigned int NumLocalDynamics = 0
- NumLocalDynamics - Number of local-dynamic TLS accesses.
- private bool HasPushSequences = false
- HasPushSequences - Keeps track of whether this function uses sequences of pushes to pass function parameters.
- private bool HasSEHFramePtrSave = false
- True if the function recovers from an SEH exception, and therefore needs to spill and restore the frame pointer.
- private int SEHFramePtrSaveIndex = 0
- The frame index of a stack object containing the original frame pointer used to address arguments in a function using a base pointer.
- private bool IsSplitCSR = false
- True if this function has a subset of CSRs that is handled explicitly via copies.
- private bool UsesRedZone = false
- True if this function uses the red zone.
- private bool HasDynAlloca = false
- True if this function has DYN_ALLOCA instructions.
- private bool HasPreallocatedCall = false
- True if this function has any preallocated calls.
- private bool HasSwiftAsyncContext = false
- Whether this function has an extended frame record [Ctx, RBP, Return addr]. If so, bit 60 of the in-memory frame pointer will be 1 to enable other tools to detect the extended record.
- private bool HasVirtualTileReg = false
- True if this function has tile virtual register. This is used to determine if we should insert tilerelease in frame lowering.
- private Optional<int> SwiftAsyncContextFrameIdx
- private DenseMap<const llvm::Value*, size_t> PreallocatedIds
- private SmallVector<size_t, 0> PreallocatedStackSizes
- private SmallVector<SmallVector<size_t, 4>, 0> PreallocatedArgOffsets
- private SmallVector<llvm::ForwardedRegister, 1> ForwardedMustTailRegParms
- ForwardedMustTailRegParms - A list of virtual and physical registers that must be forwarded to every musttail call.
Method Overview
- public X86MachineFunctionInfo()
- public X86MachineFunctionInfo(llvm::MachineFunction & MF)
- public X86MachineFunctionInfo(const llvm::X86MachineFunctionInfo &)
- private virtual void anchor()
- public llvm::MachineFunctionInfo * clone(llvm::BumpPtrAllocator & Allocator, llvm::MachineFunction & DestMF, const DenseMap<llvm::MachineBasicBlock *, llvm::MachineBasicBlock *> & Src2DstMBB) const
- public unsigned int getArgumentStackSize() const
- public unsigned int getBytesToPopOnReturn() const
- public unsigned int getCalleeSavedFrameSize() const
- public int getFAIndex() const
- public bool getForceFramePointer() const
- public SmallVectorImpl<llvm::ForwardedRegister> & getForwardedMustTailRegParms()
- public llvm::Register getGlobalBaseReg() const
- public bool getHasPushSequences() const
- public bool getHasSEHFramePtrSave() const
- public unsigned int getNumLocalDynamicTLSAccesses() const
- public ArrayRef<size_t> getPreallocatedArgOffsets(const size_t Id)
- public size_t getPreallocatedIdForCallSite(const llvm::Value * CS)
- public size_t getPreallocatedStackSize(const size_t Id)
- public int getRAIndex() const
- public int getRegSaveFrameIndex() const
- public bool getRestoreBasePointer() const
- public int getRestoreBasePointerOffset() const
- public int getSEHFramePtrSaveIndex() const
- public llvm::Register getSRetReturnReg() const
- public Optional<int> getSwiftAsyncContextFrameIdx() const
- public int getTCReturnAddrDelta() const
- public bool getUsesRedZone() const
- public unsigned int getVarArgsFPOffset() const
- public int getVarArgsFrameIndex() const
- public unsigned int getVarArgsGPOffset() const
- public DenseMap<int, unsigned int> & getWinEHXMMSlotInfo()
- public const DenseMap<int, unsigned int> & getWinEHXMMSlotInfo() const
- public bool hasDynAlloca() const
- public bool hasPreallocatedCall() const
- public bool hasSwiftAsyncContext() const
- public bool hasVirtualTileReg() const
- public void incNumLocalDynamicTLSAccesses()
- public bool isSplitCSR() const
- public void setArgumentStackSize(unsigned int size)
- public void setBytesToPopOnReturn(unsigned int bytes)
- public void setCalleeSavedFrameSize(unsigned int bytes)
- public void setFAIndex(int Index)
- public void setForceFramePointer(bool forceFP)
- public void setGlobalBaseReg(llvm::Register Reg)
- public void setHasDynAlloca(bool v)
- public void setHasPreallocatedCall(bool v)
- public void setHasPushSequences(bool HasPush)
- public void setHasSEHFramePtrSave(bool V)
- public void setHasSwiftAsyncContext(bool v)
- public void setHasVirtualTileReg(bool v)
- public void setIsSplitCSR(bool s)
- public void setPreallocatedArgOffsets(size_t Id, ArrayRef<size_t> AO)
- public void setPreallocatedStackSize(size_t Id, size_t StackSize)
- public void setRAIndex(int Index)
- public void setRegSaveFrameIndex(int Idx)
- public void setRestoreBasePointer(const llvm::MachineFunction * MF)
- public void setSEHFramePtrSaveIndex(int Index)
- public void setSRetReturnReg(llvm::Register Reg)
- public void setSwiftAsyncContextFrameIdx(int v)
- public void setTCReturnAddrDelta(int delta)
- public void setUsesRedZone(bool V)
- public void setVarArgsFPOffset(unsigned int Offset)
- public void setVarArgsFrameIndex(int Idx)
- public void setVarArgsGPOffset(unsigned int Offset)
Inherited from MachineFunctionInfo:
Methods
¶X86MachineFunctionInfo()
X86MachineFunctionInfo()
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:134
¶X86MachineFunctionInfo(llvm::MachineFunction& MF)
X86MachineFunctionInfo(llvm::MachineFunction& MF)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:136
Parameters
¶X86MachineFunctionInfo(
const llvm::X86MachineFunctionInfo&)
X86MachineFunctionInfo(
const llvm::X86MachineFunctionInfo&)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:137
Parameters
- const llvm::X86MachineFunctionInfo&
¶virtual void anchor()
virtual void anchor()
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:26
¶llvm::MachineFunctionInfo* clone(
llvm::BumpPtrAllocator& Allocator,
llvm::MachineFunction& DestMF,
const DenseMap<llvm::MachineBasicBlock*,
llvm::MachineBasicBlock*>&
Src2DstMBB) const
llvm::MachineFunctionInfo* clone(
llvm::BumpPtrAllocator& Allocator,
llvm::MachineFunction& DestMF,
const DenseMap<llvm::MachineBasicBlock*,
llvm::MachineBasicBlock*>&
Src2DstMBB) const
Description
Make a functionally equivalent copy of this MachineFunctionInfo in \p MF. This requires remapping MachineBasicBlock references from the original parent to values in the new function. Targets may assume that virtual register and frame index values are preserved in the new function.
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:140
Parameters
- llvm::BumpPtrAllocator& Allocator
- llvm::MachineFunction& DestMF
- const DenseMap<llvm::MachineBasicBlock*, llvm::MachineBasicBlock*>& Src2DstMBB
¶unsigned int getArgumentStackSize() const
unsigned int getArgumentStackSize() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:191
¶unsigned int getBytesToPopOnReturn() const
unsigned int getBytesToPopOnReturn() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:161
¶unsigned int getCalleeSavedFrameSize() const
unsigned int getCalleeSavedFrameSize() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:158
¶int getFAIndex() const
int getFAIndex() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:167
¶bool getForceFramePointer() const
bool getForceFramePointer() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:144
¶SmallVectorImpl<llvm::ForwardedRegister>&
getForwardedMustTailRegParms()
SmallVectorImpl<llvm::ForwardedRegister>&
getForwardedMustTailRegParms()
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:203
¶llvm::Register getGlobalBaseReg() const
llvm::Register getGlobalBaseReg() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:176
¶bool getHasPushSequences() const
bool getHasPushSequences() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:147
¶bool getHasSEHFramePtrSave() const
bool getHasSEHFramePtrSave() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:197
¶unsigned int getNumLocalDynamicTLSAccesses() const
unsigned int getNumLocalDynamicTLSAccesses() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:194
¶ArrayRef<size_t> getPreallocatedArgOffsets(
const size_t Id)
ArrayRef<size_t> getPreallocatedArgOffsets(
const size_t Id)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:252
Parameters
- const size_t Id
¶size_t getPreallocatedIdForCallSite(
const llvm::Value* CS)
size_t getPreallocatedIdForCallSite(
const llvm::Value* CS)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:230
Parameters
- const llvm::Value* CS
¶size_t getPreallocatedStackSize(const size_t Id)
size_t getPreallocatedStackSize(const size_t Id)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:243
Parameters
- const size_t Id
¶int getRAIndex() const
int getRAIndex() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:164
¶int getRegSaveFrameIndex() const
int getRegSaveFrameIndex() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:182
¶bool getRestoreBasePointer() const
bool getRestoreBasePointer() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:150
¶int getRestoreBasePointerOffset() const
int getRestoreBasePointerOffset() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:152
¶int getSEHFramePtrSaveIndex() const
int getSEHFramePtrSaveIndex() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:200
¶llvm::Register getSRetReturnReg() const
llvm::Register getSRetReturnReg() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:173
¶Optional<int> getSwiftAsyncContextFrameIdx() const
Optional<int> getSwiftAsyncContextFrameIdx() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:225
¶int getTCReturnAddrDelta() const
int getTCReturnAddrDelta() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:170
¶bool getUsesRedZone() const
bool getUsesRedZone() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:210
¶unsigned int getVarArgsFPOffset() const
unsigned int getVarArgsFPOffset() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:188
¶int getVarArgsFrameIndex() const
int getVarArgsFrameIndex() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:179
¶unsigned int getVarArgsGPOffset() const
unsigned int getVarArgsGPOffset() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:185
¶DenseMap<int, unsigned int>& getWinEHXMMSlotInfo()
DenseMap<int, unsigned int>& getWinEHXMMSlotInfo()
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:154
¶const DenseMap<int, unsigned int>&
getWinEHXMMSlotInfo() const
const DenseMap<int, unsigned int>&
getWinEHXMMSlotInfo() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:155
¶bool hasDynAlloca() const
bool hasDynAlloca() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:213
¶bool hasPreallocatedCall() const
bool hasPreallocatedCall() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:216
¶bool hasSwiftAsyncContext() const
bool hasSwiftAsyncContext() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:219
¶bool hasVirtualTileReg() const
bool hasVirtualTileReg() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:222
¶void incNumLocalDynamicTLSAccesses()
void incNumLocalDynamicTLSAccesses()
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:195
¶bool isSplitCSR() const
bool isSplitCSR() const
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:207
¶void setArgumentStackSize(unsigned int size)
void setArgumentStackSize(unsigned int size)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:192
Parameters
- unsigned int size
¶void setBytesToPopOnReturn(unsigned int bytes)
void setBytesToPopOnReturn(unsigned int bytes)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:162
Parameters
- unsigned int bytes
¶void setCalleeSavedFrameSize(unsigned int bytes)
void setCalleeSavedFrameSize(unsigned int bytes)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:159
Parameters
- unsigned int bytes
¶void setFAIndex(int Index)
void setFAIndex(int Index)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:168
Parameters
- int Index
¶void setForceFramePointer(bool forceFP)
void setForceFramePointer(bool forceFP)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:145
Parameters
- bool forceFP
¶void setGlobalBaseReg(llvm::Register Reg)
void setGlobalBaseReg(llvm::Register Reg)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:177
Parameters
- llvm::Register Reg
¶void setHasDynAlloca(bool v)
void setHasDynAlloca(bool v)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:214
Parameters
- bool v
¶void setHasPreallocatedCall(bool v)
void setHasPreallocatedCall(bool v)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:217
Parameters
- bool v
¶void setHasPushSequences(bool HasPush)
void setHasPushSequences(bool HasPush)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:148
Parameters
- bool HasPush
¶void setHasSEHFramePtrSave(bool V)
void setHasSEHFramePtrSave(bool V)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:198
Parameters
- bool V
¶void setHasSwiftAsyncContext(bool v)
void setHasSwiftAsyncContext(bool v)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:220
Parameters
- bool v
¶void setHasVirtualTileReg(bool v)
void setHasVirtualTileReg(bool v)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:223
Parameters
- bool v
¶void setIsSplitCSR(bool s)
void setIsSplitCSR(bool s)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:208
Parameters
- bool s
¶void setPreallocatedArgOffsets(
size_t Id,
ArrayRef<size_t> AO)
void setPreallocatedArgOffsets(
size_t Id,
ArrayRef<size_t> AO)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:248
Parameters
- size_t Id
- ArrayRef<size_t> AO
¶void setPreallocatedStackSize(size_t Id,
size_t StackSize)
void setPreallocatedStackSize(size_t Id,
size_t StackSize)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:239
Parameters
- size_t Id
- size_t StackSize
¶void setRAIndex(int Index)
void setRAIndex(int Index)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:165
Parameters
- int Index
¶void setRegSaveFrameIndex(int Idx)
void setRegSaveFrameIndex(int Idx)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:183
Parameters
- int Idx
¶void setRestoreBasePointer(
const llvm::MachineFunction* MF)
void setRestoreBasePointer(
const llvm::MachineFunction* MF)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:151
Parameters
- const llvm::MachineFunction* MF
¶void setSEHFramePtrSaveIndex(int Index)
void setSEHFramePtrSaveIndex(int Index)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:201
Parameters
- int Index
¶void setSRetReturnReg(llvm::Register Reg)
void setSRetReturnReg(llvm::Register Reg)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:174
Parameters
- llvm::Register Reg
¶void setSwiftAsyncContextFrameIdx(int v)
void setSwiftAsyncContextFrameIdx(int v)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:228
Parameters
- int v
¶void setTCReturnAddrDelta(int delta)
void setTCReturnAddrDelta(int delta)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:171
Parameters
- int delta
¶void setUsesRedZone(bool V)
void setUsesRedZone(bool V)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:211
Parameters
- bool V
¶void setVarArgsFPOffset(unsigned int Offset)
void setVarArgsFPOffset(unsigned int Offset)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:189
Parameters
- unsigned int Offset
¶void setVarArgsFrameIndex(int Idx)
void setVarArgsFrameIndex(int Idx)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:180
Parameters
- int Idx
¶void setVarArgsGPOffset(unsigned int Offset)
void setVarArgsGPOffset(unsigned int Offset)
Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:186
Parameters
- unsigned int Offset