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

Inherited from MachineFunctionInfo:

Methods

X86MachineFunctionInfo()

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:134

X86MachineFunctionInfo(llvm::MachineFunction& MF)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:136

Parameters

llvm::MachineFunction& MF

X86MachineFunctionInfo(
    const llvm::X86MachineFunctionInfo&)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:137

Parameters

const llvm::X86MachineFunctionInfo&

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

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

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:191

unsigned int getBytesToPopOnReturn() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:161

unsigned int getCalleeSavedFrameSize() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:158

int getFAIndex() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:167

bool getForceFramePointer() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:144

SmallVectorImpl<llvm::ForwardedRegister>&
getForwardedMustTailRegParms()

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:203

llvm::Register getGlobalBaseReg() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:176

bool getHasPushSequences() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:147

bool getHasSEHFramePtrSave() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:197

unsigned int getNumLocalDynamicTLSAccesses() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:194

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)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:230

Parameters

const llvm::Value* CS

size_t getPreallocatedStackSize(const size_t Id)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:243

Parameters

const size_t Id

int getRAIndex() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:164

int getRegSaveFrameIndex() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:182

bool getRestoreBasePointer() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:150

int getRestoreBasePointerOffset() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:152

int getSEHFramePtrSaveIndex() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:200

llvm::Register getSRetReturnReg() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:173

Optional<int> getSwiftAsyncContextFrameIdx() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:225

int getTCReturnAddrDelta() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:170

bool getUsesRedZone() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:210

unsigned int getVarArgsFPOffset() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:188

int getVarArgsFrameIndex() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:179

unsigned int getVarArgsGPOffset() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:185

DenseMap<int, unsigned int>& getWinEHXMMSlotInfo()

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:154

const DenseMap<int, unsigned int>&
getWinEHXMMSlotInfo() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:155

bool hasDynAlloca() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:213

bool hasPreallocatedCall() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:216

bool hasSwiftAsyncContext() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:219

bool hasVirtualTileReg() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:222

void incNumLocalDynamicTLSAccesses()

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:195

bool isSplitCSR() const

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:207

void setArgumentStackSize(unsigned int size)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:192

Parameters

unsigned int size

void setBytesToPopOnReturn(unsigned int bytes)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:162

Parameters

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)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:168

Parameters

int Index

void setForceFramePointer(bool forceFP)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:145

Parameters

bool forceFP

void setGlobalBaseReg(llvm::Register Reg)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:177

Parameters

llvm::Register Reg

void setHasDynAlloca(bool v)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:214

Parameters

bool v

void setHasPreallocatedCall(bool v)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:217

Parameters

bool v

void setHasPushSequences(bool HasPush)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:148

Parameters

bool HasPush

void setHasSEHFramePtrSave(bool V)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:198

Parameters

bool V

void setHasSwiftAsyncContext(bool v)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:220

Parameters

bool v

void setHasVirtualTileReg(bool v)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:223

Parameters

bool v

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)

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)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:239

Parameters

size_t Id
size_t StackSize

void setRAIndex(int Index)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:165

Parameters

int Index

void setRegSaveFrameIndex(int Idx)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:183

Parameters

int Idx

void setRestoreBasePointer(
    const llvm::MachineFunction* MF)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:151

Parameters

const llvm::MachineFunction* MF

void setSEHFramePtrSaveIndex(int Index)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:201

Parameters

int Index

void setSRetReturnReg(llvm::Register Reg)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:174

Parameters

llvm::Register Reg

void setSwiftAsyncContextFrameIdx(int v)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:228

Parameters

int v

void setTCReturnAddrDelta(int delta)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:171

Parameters

int delta

void setUsesRedZone(bool V)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:211

Parameters

bool V

void setVarArgsFPOffset(unsigned int Offset)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:189

Parameters

unsigned int Offset

void setVarArgsFrameIndex(int Idx)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:180

Parameters

int Idx

void setVarArgsGPOffset(unsigned int Offset)

Declared at: llvm/lib/Target/X86/X86MachineFunctionInfo.h:186

Parameters

unsigned int Offset