LLVM 20.0.0git
|
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted. More...
#include "llvm/CodeGen/MachineFrameInfo.h"
Public Types | |
enum | SSPLayoutKind { SSPLK_None , SSPLK_LargeArray , SSPLK_SmallArray , SSPLK_AddrOf } |
Stack Smashing Protection (SSP) rules require that vulnerable stack allocations are located close the stack protector. More... | |
Public Member Functions | |
MachineFrameInfo (Align StackAlignment, bool StackRealignable, bool ForcedRealign) | |
MachineFrameInfo (const MachineFrameInfo &)=delete | |
bool | isStackRealignable () const |
bool | hasStackObjects () const |
Return true if there are any stack objects in this function. | |
bool | hasVarSizedObjects () const |
This method may be called any time after instruction selection is complete to determine if the stack frame for this function contains any variable sized objects. | |
int | getStackProtectorIndex () const |
Return the index for the stack protector object. | |
void | setStackProtectorIndex (int I) |
bool | hasStackProtectorIndex () const |
int | getFunctionContextIndex () const |
Return the index for the function context object. | |
void | setFunctionContextIndex (int I) |
bool | hasFunctionContextIndex () const |
bool | isFrameAddressTaken () const |
This method may be called any time after instruction selection is complete to determine if there is a call to @llvm.frameaddress in this function. | |
void | setFrameAddressIsTaken (bool T) |
bool | isReturnAddressTaken () const |
This method may be called any time after instruction selection is complete to determine if there is a call to @llvm.returnaddress in this function. | |
void | setReturnAddressIsTaken (bool s) |
bool | hasStackMap () const |
This method may be called any time after instruction selection is complete to determine if there is a call to builtin @llvm.experimental.stackmap. | |
void | setHasStackMap (bool s=true) |
bool | hasPatchPoint () const |
This method may be called any time after instruction selection is complete to determine if there is a call to builtin @llvm.experimental.patchpoint. | |
void | setHasPatchPoint (bool s=true) |
bool | needsSplitStackProlog () const |
Return true if this function requires a split stack prolog, even if it uses no stack space. | |
int | getObjectIndexBegin () const |
Return the minimum frame object index. | |
int | getObjectIndexEnd () const |
Return one past the maximum frame object index. | |
unsigned | getNumFixedObjects () const |
Return the number of fixed objects. | |
unsigned | getNumObjects () const |
Return the number of objects. | |
void | mapLocalFrameObject (int ObjectIndex, int64_t Offset) |
Map a frame index into the local object block. | |
std::pair< int, int64_t > | getLocalFrameObjectMap (int i) const |
Get the local offset mapping for a for an object. | |
int64_t | getLocalFrameObjectCount () const |
Return the number of objects allocated into the local object block. | |
void | setLocalFrameSize (int64_t sz) |
Set the size of the local object blob. | |
int64_t | getLocalFrameSize () const |
Get the size of the local object blob. | |
void | setLocalFrameMaxAlign (Align Alignment) |
Required alignment of the local object blob, which is the strictest alignment of any object in it. | |
Align | getLocalFrameMaxAlign () const |
Return the required alignment of the local object blob. | |
bool | getUseLocalStackAllocationBlock () const |
Get whether the local allocation blob should be allocated together or let PEI allocate the locals in it directly. | |
void | setUseLocalStackAllocationBlock (bool v) |
setUseLocalStackAllocationBlock - Set whether the local allocation blob should be allocated together or let PEI allocate the locals in it directly. | |
bool | isObjectPreAllocated (int ObjectIdx) const |
Return true if the object was pre-allocated into the local block. | |
int64_t | getObjectSize (int ObjectIdx) const |
Return the size of the specified object. | |
void | setObjectSize (int ObjectIdx, int64_t Size) |
Change the size of the specified stack object. | |
Align | getObjectAlign (int ObjectIdx) const |
Return the alignment of the specified stack object. | |
bool | contributesToMaxAlignment (uint8_t StackID) |
Should this stack ID be considered in MaxAlignment. | |
void | setObjectAlignment (int ObjectIdx, Align Alignment) |
setObjectAlignment - Change the alignment of the specified stack object. | |
const AllocaInst * | getObjectAllocation (int ObjectIdx) const |
Return the underlying Alloca of the specified stack object if it exists. | |
void | clearObjectAllocation (int ObjectIdx) |
Remove the underlying Alloca of the specified stack object if it exists. | |
int64_t | getObjectOffset (int ObjectIdx) const |
Return the assigned stack offset of the specified object from the incoming stack pointer. | |
bool | isObjectZExt (int ObjectIdx) const |
void | setObjectZExt (int ObjectIdx, bool IsZExt) |
bool | isObjectSExt (int ObjectIdx) const |
void | setObjectSExt (int ObjectIdx, bool IsSExt) |
void | setObjectOffset (int ObjectIdx, int64_t SPOffset) |
Set the stack frame offset of the specified object. | |
SSPLayoutKind | getObjectSSPLayout (int ObjectIdx) const |
void | setObjectSSPLayout (int ObjectIdx, SSPLayoutKind Kind) |
uint64_t | getStackSize () const |
Return the number of bytes that must be allocated to hold all of the fixed size frame objects. | |
void | setStackSize (uint64_t Size) |
Set the size of the stack. | |
uint64_t | estimateStackSize (const MachineFunction &MF) const |
Estimate and return the size of the stack frame. | |
int64_t | getOffsetAdjustment () const |
Return the correction for frame offsets. | |
void | setOffsetAdjustment (int64_t Adj) |
Set the correction for frame offsets. | |
Align | getMaxAlign () const |
Return the alignment in bytes that this function must be aligned to, which is greater than the default stack alignment provided by the target. | |
void | ensureMaxAlignment (Align Alignment) |
Make sure the function is at least Align bytes aligned. | |
bool | shouldRealignStack () const |
Return true if stack realignment is forced by function attributes or if the stack alignment. | |
bool | adjustsStack () const |
Return true if this function adjusts the stack – e.g., when calling another function. | |
void | setAdjustsStack (bool V) |
bool | hasCalls () const |
Return true if the current function has any function calls. | |
void | setHasCalls (bool V) |
bool | hasOpaqueSPAdjustment () const |
Returns true if the function contains opaque dynamic stack adjustments. | |
void | setHasOpaqueSPAdjustment (bool B) |
bool | hasCopyImplyingStackAdjustment () const |
Returns true if the function contains operations which will lower down to instructions which manipulate the stack pointer. | |
void | setHasCopyImplyingStackAdjustment (bool B) |
bool | hasVAStart () const |
Returns true if the function calls the llvm.va_start intrinsic. | |
void | setHasVAStart (bool B) |
bool | hasMustTailInVarArgFunc () const |
Returns true if the function is variadic and contains a musttail call. | |
void | setHasMustTailInVarArgFunc (bool B) |
bool | hasTailCall () const |
Returns true if the function contains a tail call. | |
void | setHasTailCall (bool V=true) |
void | computeMaxCallFrameSize (MachineFunction &MF, std::vector< MachineBasicBlock::iterator > *FrameSDOps=nullptr) |
Computes the maximum size of a callframe. | |
uint64_t | getMaxCallFrameSize () const |
Return the maximum size of a call frame that must be allocated for an outgoing function call. | |
bool | isMaxCallFrameSizeComputed () const |
void | setMaxCallFrameSize (uint64_t S) |
unsigned | getCVBytesOfCalleeSavedRegisters () const |
Returns how many bytes of callee-saved registers the target pushed in the prologue. | |
void | setCVBytesOfCalleeSavedRegisters (unsigned S) |
int | CreateFixedObject (uint64_t Size, int64_t SPOffset, bool IsImmutable, bool isAliased=false) |
Create a new object at a fixed location on the stack. | |
int | CreateFixedSpillStackObject (uint64_t Size, int64_t SPOffset, bool IsImmutable=false) |
Create a spill slot at a fixed location on the stack. | |
bool | isFixedObjectIndex (int ObjectIdx) const |
Returns true if the specified index corresponds to a fixed stack object. | |
bool | isAliasedObjectIndex (int ObjectIdx) const |
Returns true if the specified index corresponds to an object that might be pointed to by an LLVM IR value. | |
void | setIsAliasedObjectIndex (int ObjectIdx, bool IsAliased) |
Set "maybe pointed to by an LLVM IR value" for an object. | |
bool | isImmutableObjectIndex (int ObjectIdx) const |
Returns true if the specified index corresponds to an immutable object. | |
void | setIsImmutableObjectIndex (int ObjectIdx, bool IsImmutable) |
Marks the immutability of an object. | |
bool | isSpillSlotObjectIndex (int ObjectIdx) const |
Returns true if the specified index corresponds to a spill slot. | |
bool | isStatepointSpillSlotObjectIndex (int ObjectIdx) const |
uint8_t | getStackID (int ObjectIdx) const |
void | setStackID (int ObjectIdx, uint8_t ID) |
bool | isDeadObjectIndex (int ObjectIdx) const |
Returns true if the specified index corresponds to a dead object. | |
bool | isVariableSizedObjectIndex (int ObjectIdx) const |
Returns true if the specified index corresponds to a variable sized object. | |
void | markAsStatepointSpillSlotObjectIndex (int ObjectIdx) |
int | CreateStackObject (uint64_t Size, Align Alignment, bool isSpillSlot, const AllocaInst *Alloca=nullptr, uint8_t ID=0) |
Create a new statically sized stack object, returning a nonnegative identifier to represent it. | |
int | CreateSpillStackObject (uint64_t Size, Align Alignment) |
Create a new statically sized stack object that represents a spill slot, returning a nonnegative identifier to represent it. | |
void | RemoveStackObject (int ObjectIdx) |
Remove or mark dead a statically sized stack object. | |
int | CreateVariableSizedObject (Align Alignment, const AllocaInst *Alloca) |
Notify the MachineFrameInfo object that a variable sized object has been created. | |
const std::vector< CalleeSavedInfo > & | getCalleeSavedInfo () const |
Returns a reference to call saved info vector for the current function. | |
std::vector< CalleeSavedInfo > & | getCalleeSavedInfo () |
void | setCalleeSavedInfo (std::vector< CalleeSavedInfo > CSI) |
Used by prolog/epilog inserter to set the function's callee saved information. | |
bool | isCalleeSavedInfoValid () const |
Has the callee saved info been calculated yet? | |
void | setCalleeSavedInfoValid (bool v) |
MachineBasicBlock * | getSavePoint () const |
void | setSavePoint (MachineBasicBlock *NewSave) |
MachineBasicBlock * | getRestorePoint () const |
void | setRestorePoint (MachineBasicBlock *NewRestore) |
uint64_t | getUnsafeStackSize () const |
void | setUnsafeStackSize (uint64_t Size) |
BitVector | getPristineRegs (const MachineFunction &MF) const |
Return a set of physical registers that are pristine. | |
void | print (const MachineFunction &MF, raw_ostream &OS) const |
Used by the MachineFunction printer to print information about stack objects. | |
void | dump (const MachineFunction &MF) const |
dump - Print the function to stderr. | |
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
This class is key to allowing stack frame representation optimizations, such as frame pointer elimination. It also allows more mundane (but still important) optimizations, such as reordering of abstract objects on the stack frame.
To support this, the class assigns unique integer identifiers to stack objects requested clients. These identifiers are negative integers for fixed stack objects (such as arguments passed on the stack) or nonnegative for objects that may be reordered. Instructions which refer to stack objects use a special MO_FrameIndex operand to represent these frame indexes.
Because this class keeps track of all references to the stack frame, it knows when a variable sized object is allocated on the stack. This is the sole condition which prevents frame pointer elimination, which is an important optimization on register-poor architectures. Because original variable sized alloca's in the source program are the only source of variable sized stack objects, it is safe to decide whether there will be any variable sized objects before all stack objects are known (for example, register allocator spill code never needs variable sized objects).
When prolog/epilog code emission is performed, the final stack frame is built and the machine instructions are modified to refer to the actual stack offsets of the object, eliminating all MO_FrameIndex operands from the program.
Abstract Stack Frame Information
Definition at line 106 of file MachineFrameInfo.h.
Stack Smashing Protection (SSP) rules require that vulnerable stack allocations are located close the stack protector.
Definition at line 110 of file MachineFrameInfo.h.
|
inlineexplicit |
Definition at line 342 of file MachineFrameInfo.h.
|
delete |
|
inline |
Return true if this function adjusts the stack – e.g., when calling another function.
This is only valid during and after prolog/epilog code insertion.
Definition at line 617 of file MachineFrameInfo.h.
Referenced by llvm::AArch64RegisterInfo::cannotEliminateFrame(), llvm::ARMBaseRegisterInfo::cannotEliminateFrame(), llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::XtensaFrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), estimateStackSize(), llvm::VEInstrInfo::expandGetStackTopPseudo(), and isXPLeafCandidate().
|
inline |
Remove the underlying Alloca of the specified stack object if it exists.
This generally should not be used and is for reduction tooling.
Definition at line 520 of file MachineFrameInfo.h.
References assert().
void MachineFrameInfo::computeMaxCallFrameSize | ( | MachineFunction & | MF, |
std::vector< MachineBasicBlock::iterator > * | FrameSDOps = nullptr |
||
) |
Computes the maximum size of a callframe.
This only works for targets defining TargetInstrInfo::getCallFrameSetupOpcode(), getCallFrameDestroyOpcode(), and getFrameSize(). This is usually computed by the prologue epilogue inserter but some targets may call this to compute it earlier. If FrameSDOps is passed, the frame instructions in the MF will be inserted into it.
Definition at line 187 of file MachineFrameInfo.cpp.
References assert(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineFunction::getSubtarget(), MBB, MI, Size, and TII.
Referenced by llvm::ARMTargetLowering::finalizeLowering(), and llvm::AArch64Subtarget::mirFileLoaded().
|
inline |
Should this stack ID be considered in MaxAlignment.
Definition at line 493 of file MachineFrameInfo.h.
References llvm::TargetStackID::Default, and llvm::TargetStackID::ScalableVector.
Referenced by CreateStackObject(), and setObjectAlignment().
int MachineFrameInfo::CreateFixedObject | ( | uint64_t | Size, |
int64_t | SPOffset, | ||
bool | IsImmutable, | ||
bool | isAliased = false |
||
) |
Create a new object at a fixed location on the stack.
All fixed objects should be created before other objects are created for efficiency. By default, fixed objects are not pointed to by LLVM IR values. This returns an index with a negative value.
Definition at line 83 of file MachineFrameInfo.cpp.
References assert(), clampStackAlignment(), llvm::commonAlignment(), and Size.
Referenced by llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), CalculateTailCallArgDest(), llvm::XCoreFunctionInfo::createLRSpillSlot(), llvm::LanaiFrameLowering::determineCalleeSaves(), llvm::M68kFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineCalleeSaves(), EmitTailCallStoreFPAndRetAddr(), EmitTailCallStoreRetAddr(), getOrCreateFixedStackObject(), llvm::SystemZELFFrameLowering::getOrCreateFramePointerSaveIndex(), llvm::SystemZXPLINKFrameLowering::getOrCreateFramePointerSaveIndex(), llvm::MSP430TargetLowering::getReturnAddressFrameIndex(), llvm::X86TargetLowering::getReturnAddressFrameIndex(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::SITargetLowering::LowerCall(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::MipsCallLowering::lowerFormalArguments(), llvm::HexagonTargetLowering::LowerFormalArguments(), llvm::LoongArchTargetLowering::LowerFormalArguments(), llvm::RISCVTargetLowering::LowerFormalArguments(), llvm::SystemZTargetLowering::LowerFormalArguments(), llvm::VETargetLowering::LowerFormalArguments(), llvm::XtensaTargetLowering::LowerFormalArguments(), llvm::SparcTargetLowering::LowerFormalArguments_32(), llvm::SparcTargetLowering::LowerFormalArguments_64(), llvm::AArch64FrameLowering::processFunctionBeforeFrameFinalized(), llvm::MSP430FrameLowering::processFunctionBeforeFrameFinalized(), llvm::FunctionLoweringInfo::set(), unpack64(), unpackF64OnRV32DSoftABI(), and unpackFromMemLoc().
int MachineFrameInfo::CreateFixedSpillStackObject | ( | uint64_t | Size, |
int64_t | SPOffset, | ||
bool | IsImmutable = false |
||
) |
Create a spill slot at a fixed location on the stack.
Returns an index with a negative value.
Definition at line 102 of file MachineFrameInfo.cpp.
References clampStackAlignment(), llvm::commonAlignment(), and Size.
Referenced by llvm::ARCFrameLowering::assignCalleeSavedSpillSlots(), assignCalleeSavedSpillSlots(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::M68kFrameLowering::assignCalleeSavedSpillSlots(), llvm::SystemZXPLINKFrameLowering::assignCalleeSavedSpillSlots(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), llvm::RISCVFrameLowering::assignCalleeSavedSpillSlots(), and llvm::MIRParserImpl::initializeFrameInfo().
Create a new statically sized stack object that represents a spill slot, returning a nonnegative identifier to represent it.
Definition at line 66 of file MachineFrameInfo.cpp.
References clampStackAlignment(), CreateStackObject(), ensureMaxAlignment(), and Size.
Referenced by llvm::SIMachineFunctionInfo::allocateWWMSpill(), llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), and llvm::HexagonFrameLowering::determineCalleeSaves().
int MachineFrameInfo::CreateStackObject | ( | uint64_t | Size, |
Align | Alignment, | ||
bool | isSpillSlot, | ||
const AllocaInst * | Alloca = nullptr , |
||
uint8_t | ID = 0 |
||
) |
Create a new statically sized stack object, returning a nonnegative identifier to represent it.
Definition at line 51 of file MachineFrameInfo.cpp.
References assert(), clampStackAlignment(), contributesToMaxAlignment(), ensureMaxAlignment(), and Size.
Referenced by llvm::PPCFrameLowering::addScavengingSpillSlot(), assignCalleeSavedSpillSlots(), llvm::SystemZXPLINKFrameLowering::assignCalleeSavedSpillSlots(), llvm::AArch64FrameLowering::assignCalleeSavedSpillSlots(), llvm::RISCVFrameLowering::assignCalleeSavedSpillSlots(), llvm::X86TargetLowering::BuildFILD(), llvm::MipsFunctionInfo::createEhDataRegsFI(), llvm::XCoreFunctionInfo::createEHSpillSlot(), llvm::XCoreFunctionInfo::createFPSpillSlot(), llvm::MipsFunctionInfo::createISRRegFI(), llvm::XCoreFunctionInfo::createLRSpillSlot(), CreateSpillStackObject(), llvm::SelectionDAG::CreateStackTemporary(), llvm::LegalizerHelper::createStackTemporary(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::MipsSEFrameLowering::determineCalleeSaves(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::X86TargetLowering::EmitInstrWithCustomInserter(), getAddressForMemoryInput(), llvm::RISCVMachineFunctionInfo::getMoveF64FrameIndex(), llvm::MipsFunctionInfo::getMoveF64ViaSpillFI(), llvm::SIMachineFunctionInfo::getScavengeFI(), llvm::CallLowering::handleAssignments(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::CallLowering::insertSRetOutgoingArgument(), llvm::LoongArchTargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::TargetLowering::LowerCallTo(), llvm::SparcTargetLowering::LowerF128_LibCallArg(), llvm::SparcTargetLowering::LowerF128Op(), LowerINTRINSIC_W_CHAIN(), llvm::ARCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::RISCVFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZELFFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::X86FrameLowering::processFunctionBeforeFrameFinalized(), llvm::XtensaFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::XCoreFrameLowering::processFunctionBeforeFrameFinalized(), and llvm::FunctionLoweringInfo::set().
int MachineFrameInfo::CreateVariableSizedObject | ( | Align | Alignment, |
const AllocaInst * | Alloca | ||
) |
Notify the MachineFrameInfo object that a variable sized object has been created.
This must be created whenever a variable sized object is created, whether or not the index returned is actually used.
Definition at line 74 of file MachineFrameInfo.cpp.
References clampStackAlignment(), and ensureMaxAlignment().
Referenced by llvm::AArch64TargetLowering::EmitAllocateZABuffer(), llvm::MIRParserImpl::initializeFrameInfo(), and llvm::FunctionLoweringInfo::set().
LLVM_DUMP_METHOD void MachineFrameInfo::dump | ( | const MachineFunction & | MF | ) | const |
dump - Print the function to stderr.
Definition at line 250 of file MachineFrameInfo.cpp.
References llvm::dbgs(), and print().
void MachineFrameInfo::ensureMaxAlignment | ( | Align | Alignment | ) |
Make sure the function is at least Align bytes aligned.
Definition at line 31 of file MachineFrameInfo.cpp.
References assert().
Referenced by llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), CreateSpillStackObject(), CreateStackObject(), CreateVariableSizedObject(), llvm::CCState::ensureMaxAlignment(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::HexagonTargetLowering::LowerCall(), llvm::RISCVFrameLowering::processFunctionBeforeFrameFinalized(), llvm::X86FrameLowering::processFunctionBeforeFrameFinalized(), and setObjectAlignment().
uint64_t MachineFrameInfo::estimateStackSize | ( | const MachineFunction & | MF | ) | const |
Estimate and return the size of the stack frame.
Definition at line 137 of file MachineFrameInfo.cpp.
References adjustsStack(), llvm::alignTo(), llvm::TargetStackID::Default, llvm::TargetSubtargetInfo::getFrameLowering(), getMaxAlign(), getMaxCallFrameSize(), getObjectAlign(), getObjectIndexBegin(), getObjectIndexEnd(), getObjectOffset(), getObjectSize(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::TargetFrameLowering::getStackAlign(), getStackID(), llvm::MachineFunction::getSubtarget(), llvm::TargetFrameLowering::getTransientStackAlign(), llvm::TargetFrameLowering::hasReservedCallFrame(), llvm::TargetRegisterInfo::hasStackRealignment(), hasVarSizedObjects(), isDeadObjectIndex(), and llvm::Offset.
Referenced by llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::XCoreFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::MipsFrameLowering::estimateStackSize(), llvm::XCoreFunctionInfo::isLargeFrame(), isXPLeafCandidate(), llvm::RISCVFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZELFFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::X86FrameLowering::processFunctionBeforeFrameFinalized(), llvm::XtensaFrameLowering::processFunctionBeforeFrameFinalized(), and llvm::X86RegisterInfo::requiresRegisterScavenging().
|
inline |
Definition at line 810 of file MachineFrameInfo.h.
|
inline |
Returns a reference to call saved info vector for the current function.
Definition at line 806 of file MachineFrameInfo.h.
Referenced by addCalleeSavedRegs(), llvm::LivePhysRegs::addLiveOutsNoPristines(), llvm::MIRPrinter::convertStackObjects(), llvm::XtensaRegisterInfo::eliminateFrameIndex(), llvm::MSP430FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), emitCalleeSavedRestores(), llvm::ARCFrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::LoongArchFrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::RISCVFrameLowering::emitEpilogue(), llvm::XtensaFrameLowering::emitEpilogue(), llvm::SystemZAsmPrinter::emitFunctionEntryLabel(), llvm::XtensaFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::HexagonFrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), emitSCSEpilogue(), emitSCSPrologue(), llvm::AArch64FunctionInfo::getCalleeSavedStackSize(), llvm::TargetFrameLowering::getCalleeSaves(), llvm::LoongArchFrameLowering::getFirstSPAdjustAmount(), llvm::RISCVFrameLowering::getFirstSPAdjustAmount(), llvm::LoongArchFrameLowering::getFrameIndexReference(), llvm::RISCVFrameLowering::getFrameIndexReference(), getPristineRegs(), getSVECalleeSaveSlotRange(), llvm::Mips16InstrInfo::makeFrame(), llvm::MipsAsmPrinter::printSavedRegsBitmask(), llvm::RISCVFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::recomputeLivenessFlags(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), llvm::AArch64FrameLowering::resetCFIToInitialState(), llvm::Mips16InstrInfo::restoreFrame(), updateLiveness(), and llvm::ARMFrameLowering::updateLRRestored().
|
inline |
Returns how many bytes of callee-saved registers the target pushed in the prologue.
Only used for debug info.
Definition at line 680 of file MachineFrameInfo.h.
Referenced by llvm::CodeViewDebug::beginFunctionImpl(), and llvm::MIRPrinter::convert().
|
inline |
Return the index for the function context object.
This object is used for SjLj exceptions.
Definition at line 366 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convertStackObjects(), and llvm::VETargetLowering::emitSjLjDispatchBlock().
|
inline |
Return the required alignment of the local object blob.
Definition at line 449 of file MachineFrameInfo.h.
Referenced by llvm::ARMBaseRegisterInfo::needsFrameBaseReg().
|
inline |
Return the number of objects allocated into the local object block.
Definition at line 434 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convertStackObjects().
|
inline |
Get the local offset mapping for a for an object.
Definition at line 427 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::MIRPrinter::convertStackObjects().
|
inline |
Get the size of the local object blob.
Definition at line 440 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::AArch64RegisterInfo::hasBasePointer(), llvm::ARMBaseRegisterInfo::hasBasePointer(), llvm::AArch64RegisterInfo::needsFrameBaseReg(), llvm::ARMBaseRegisterInfo::needsFrameBaseReg(), and llvm::RISCVRegisterInfo::needsFrameBaseReg().
|
inline |
Return the alignment in bytes that this function must be aligned to, which is greater than the default stack alignment provided by the target.
Definition at line 603 of file MachineFrameInfo.h.
Referenced by llvm::PPCFrameLowering::addScavengingSpillSlot(), llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::determineFrameLayout(), emitAlignedDPRCS2Spills(), llvm::SIFrameLowering::emitEpilogue(), llvm::HexagonDAGToDAGISel::emitFunctionEntryCode(), llvm::AArch64FrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::VEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), estimateStackSize(), llvm::PPCFrameLowering::inlineStackProbe(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::PPCRegisterInfo::prepareDynamicAlloca(), llvm::HexagonFrameLowering::processFunctionBeforeFrameFinalized(), and llvm::HexagonDAGToDAGISel::SelectFrameIndex().
|
inline |
Return the maximum size of a call frame that must be allocated for an outgoing function call.
This is only available if CallFrameSetup/Destroy pseudo instructions are used by the target, and then only during or after prolog/epilog code insertion.
Definition at line 666 of file MachineFrameInfo.h.
References isMaxCallFrameSizeComputed().
Referenced by llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::SparcFrameLowering::emitPrologue(), estimateStackSize(), llvm::VEInstrInfo::expandGetStackTopPseudo(), llvm::X86FrameLowering::getWin64EHFrameIndexRef(), llvm::AArch64FrameLowering::getWinEHFuncletFrameSize(), llvm::RISCVFrameLowering::hasBP(), llvm::AArch64FrameLowering::hasFP(), llvm::ARMFrameLowering::hasReservedCallFrame(), llvm::Thumb1FrameLowering::hasReservedCallFrame(), llvm::Mips16FrameLowering::hasReservedCallFrame(), llvm::MipsSEFrameLowering::hasReservedCallFrame(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::PPCRegisterInfo::lowerDynamicAreaOffset(), and llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized().
|
inline |
Return the number of fixed objects.
Definition at line 415 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convertStackObjects(), llvm::yaml::FrameIndex::getFI(), llvm::SIRegisterInfo::hasBasePointer(), llvm::HexagonTargetLowering::LowerFormalArguments(), and llvm::AVRFrameAnalyzer::runOnMachineFunction().
|
inline |
Return the number of objects.
Definition at line 418 of file MachineFrameInfo.h.
Referenced by llvm::yaml::FrameIndex::getFI(), llvm::R600FrameLowering::getFrameIndexReference(), llvm::R600InstrInfo::getIndirectIndexBegin(), llvm::R600InstrInfo::getIndirectIndexEnd(), llvm::AArch64InstrInfo::getOutliningTypeImpl(), llvm::ARMBaseInstrInfo::getOutliningTypeImpl(), and llvm::AVRFrameAnalyzer::runOnMachineFunction().
|
inline |
Return the alignment of the specified stack object.
Definition at line 486 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::addFrameReference(), addFrameReference(), llvm::M68k::addFrameReference(), llvm::M68k::addMemOperand(), AdjustStackOffset(), buildEpilogRestore(), buildPrologSpill(), llvm::SIRegisterInfo::buildSpillLoadStore(), llvm::SIRegisterInfo::buildVGPRSpillLoadStore(), llvm::GISelKnownBits::computeKnownAlignment(), llvm::TargetLowering::computeKnownBitsForFrameIndex(), llvm::MIRPrinter::convertStackObjects(), determineSVEStackObjectOffsets(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::TargetLoweringBase::emitPatchPoint(), estimateStackSize(), llvm::HexagonEvaluator::evaluate(), fixupFuncForFI(), foldInlineAsmMemOperand(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::RISCVInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), getFrameIndexMMO(), llvm::R600FrameLowering::getFrameIndexReference(), llvm::M68kFrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReference(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), llvm::MipsInstrInfo::GetMemOperand(), getMemsetStores(), llvm::inferAlignFromPtrInfo(), llvm::SelectionDAG::InferPtrAlign(), llvm::SelectionDAGISel::isOrEquivalentToAdd(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::VEInstrInfo::loadRegFromStackSlot(), llvm::LoongArchInstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlotNoUpd(), llvm::TargetLowering::LowerCallTo(), llvm::HexagonFrameLowering::orderFrameObjects(), llvm::X86FrameLowering::orderFrameObjects(), scavengeStackSlot(), setAlignFlagsForFI(), spillIncomingStatepointValue(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::PPCInstrInfo::storeRegToStackSlotNoUpd(), and tryToElideArgumentCopy().
|
inline |
Return the underlying Alloca of the specified stack object if it exists.
Returns 0 if none exists.
Definition at line 512 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::MIRPrinter::convertStackObjects(), llvm::SSPLayoutInfo::copyToMachineFrameInfo(), llvm::WebAssemblyFrameLowering::getLocalForStackObject(), getMMOFrameID(), and printFrameIndex().
|
inline |
Return the minimum frame object index.
Definition at line 409 of file MachineFrameInfo.h.
Referenced by allSGPRSpillsAreDead(), allStackObjectsAreDead(), llvm::VirtRegMap::assignVirt2StackSlot(), computeFreeStackSlots(), llvm::MIRPrinter::convertStackObjects(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::SystemZXPLINKFrameLowering::determineFrameLayout(), determineSVEStackObjectOffsets(), llvm::XtensaFrameLowering::emitPrologue(), estimateStackSize(), llvm::MipsFrameLowering::estimateStackSize(), llvm::yaml::FrameIndex::FrameIndex(), llvm::yaml::FrameIndex::getFI(), llvm::R600FrameLowering::getFrameIndexReference(), getMMOFrameID(), getOrCreateFixedStackObject(), printFrameIndex(), llvm::SystemZELFFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::MSP430FrameLowering::processFunctionBeforeFrameFinalized(), and llvm::SIMachineFunctionInfo::removeDeadFrameIndices().
|
inline |
Return one past the maximum frame object index.
Definition at line 412 of file MachineFrameInfo.h.
Referenced by allSGPRSpillsAreDead(), allStackObjectsAreDead(), llvm::MIRPrinter::convertStackObjects(), llvm::SSPLayoutInfo::copyToMachineFrameInfo(), determineSVEStackObjectOffsets(), llvm::XtensaFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), estimateStackSize(), getMMOFrameID(), INITIALIZE_PASS(), llvm::HexagonFrameLowering::orderFrameObjects(), llvm::SystemZELFFrameLowering::orderFrameObjects(), llvm::X86FrameLowering::orderFrameObjects(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SIMachineFunctionInfo::removeDeadFrameIndices(), and llvm::AVRFrameAnalyzer::runOnMachineFunction().
|
inline |
Return the assigned stack offset of the specified object from the incoming stack pointer.
Definition at line 528 of file MachineFrameInfo.h.
References assert(), and isDeadObjectIndex().
Referenced by llvm::AMDGPUTargetLowering::addTokenForArgument(), llvm::HexagonFrameLowering::assignCalleeSavedSpillSlots(), llvm::SIRegisterInfo::buildSpillLoadStore(), computeFreeStackSlots(), llvm::MIRPrinter::convertStackObjects(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::SystemZXPLINKFrameLowering::determineFrameLayout(), llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::LanaiRegisterInfo::eliminateFrameIndex(), llvm::M68kRegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::MSP430RegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::AVRRegisterInfo::eliminateFrameIndex(), llvm::BPFRegisterInfo::eliminateFrameIndex(), llvm::NVPTXRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::XtensaRegisterInfo::eliminateFrameIndex(), llvm::MSP430FrameLowering::emitCalleeSavedFrameMoves(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), llvm::PPCFrameLowering::emitEpilogue(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::XtensaFrameLowering::emitPrologue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::RISCVFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), emitVGSaveRestore(), llvm::BaseIndexOffset::equalBaseIndex(), estimateStackSize(), llvm::MipsFrameLowering::estimateStackSize(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64FunctionInfo::getCalleeSavedStackSize(), GetEHSpillList(), llvm::TargetFrameLowering::getFrameIndexReference(), llvm::SIFrameLowering::getFrameIndexReference(), llvm::HexagonFrameLowering::getFrameIndexReference(), llvm::LoongArchFrameLowering::getFrameIndexReference(), llvm::M68kFrameLowering::getFrameIndexReference(), llvm::MipsSEFrameLowering::getFrameIndexReference(), llvm::NVPTXFrameLowering::getFrameIndexReference(), llvm::RISCVFrameLowering::getFrameIndexReference(), llvm::SparcFrameLowering::getFrameIndexReference(), llvm::VEFrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReference(), llvm::TargetFrameLowering::getFrameIndexReferenceFromSP(), llvm::AArch64FrameLowering::getFrameIndexReferenceFromSP(), llvm::AArch64FrameLowering::getFrameIndexReferencePreferSP(), llvm::X86FrameLowering::getFrameIndexReferenceSP(), llvm::ARMBankConflictHazardRecognizer::getHazardType(), llvm::WebAssemblyFrameLowering::getLocalForStackObject(), getOrCreateFixedStackObject(), llvm::AArch64FrameLowering::getSEHFrameIndexOffset(), GetSpillList(), isConsecutiveLSLoc(), MatchingStackOffset(), llvm::SystemZELFFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::AArch64FrameLowering::resolveFrameIndexReference(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), and shouldClusterFI().
|
inline |
Return the size of the specified object.
Definition at line 472 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::addFrameReference(), addFrameReference(), llvm::M68k::addFrameReference(), llvm::M68k::addMemOperand(), llvm::AMDGPUTargetLowering::addTokenForArgument(), AdjustStackOffset(), llvm::StatepointLoweringState::allocateStackSlot(), llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), buildEpilogRestore(), buildPrologSpill(), computeFreeStackSlots(), llvm::MIRPrinter::convertStackObjects(), determineSVEStackObjectOffsets(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::ARCFrameLowering::emitEpilogue(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::ARCFrameLowering::emitPrologue(), estimateStackSize(), llvm::MipsFrameLowering::estimateStackSize(), foldInlineAsmMemOperand(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::RISCVInstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::AArch64FunctionInfo::getCalleeSavedStackSize(), getFrameIndexMMO(), llvm::R600FrameLowering::getFrameIndexReference(), llvm::MipsInstrInfo::GetMemOperand(), getOrCreateFixedStackObject(), isConsecutiveLSLoc(), llvm::SystemZInstrInfo::isStackSlotCopy(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::ARMBaseInstrInfo::loadRegFromStackSlot(), llvm::Thumb1InstrInfo::loadRegFromStackSlot(), llvm::Thumb2InstrInfo::loadRegFromStackSlot(), llvm::HexagonInstrInfo::loadRegFromStackSlot(), llvm::SparcInstrInfo::loadRegFromStackSlot(), llvm::VEInstrInfo::loadRegFromStackSlot(), llvm::LoongArchInstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::MSP430InstrInfo::loadRegFromStackSlot(), llvm::ARCInstrInfo::loadRegFromStackSlot(), llvm::AVRInstrInfo::loadRegFromStackSlot(), llvm::M68kInstrInfo::loadRegFromStackSlot(), llvm::X86InstrInfo::loadRegFromStackSlot(), llvm::XCoreInstrInfo::loadRegFromStackSlot(), llvm::PPCInstrInfo::loadRegFromStackSlotNoUpd(), MatchingStackOffset(), llvm::HexagonFrameLowering::orderFrameObjects(), llvm::SystemZELFFrameLowering::orderFrameObjects(), llvm::X86FrameLowering::orderFrameObjects(), llvm::RISCVFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZELFFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized(), llvm::AVRFrameAnalyzer::runOnMachineFunction(), scavengeStackSlot(), spillIncomingStatepointValue(), llvm::AArch64InstrInfo::storeRegToStackSlot(), llvm::ARMBaseInstrInfo::storeRegToStackSlot(), llvm::Thumb1InstrInfo::storeRegToStackSlot(), llvm::Thumb2InstrInfo::storeRegToStackSlot(), llvm::HexagonInstrInfo::storeRegToStackSlot(), llvm::LoongArchInstrInfo::storeRegToStackSlot(), llvm::RISCVInstrInfo::storeRegToStackSlot(), llvm::SparcInstrInfo::storeRegToStackSlot(), llvm::VEInstrInfo::storeRegToStackSlot(), llvm::ARCInstrInfo::storeRegToStackSlot(), llvm::AVRInstrInfo::storeRegToStackSlot(), llvm::M68kInstrInfo::storeRegToStackSlot(), llvm::MSP430InstrInfo::storeRegToStackSlot(), llvm::X86InstrInfo::storeRegToStackSlot(), llvm::XCoreInstrInfo::storeRegToStackSlot(), llvm::PPCInstrInfo::storeRegToStackSlotNoUpd(), and tryToElideArgumentCopy().
|
inline |
Definition at line 570 of file MachineFrameInfo.h.
References assert().
|
inline |
Return the correction for frame offsets.
Definition at line 596 of file MachineFrameInfo.h.
Referenced by llvm::CodeViewDebug::beginFunctionImpl(), llvm::MIRPrinter::convert(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::TargetFrameLowering::getFrameIndexReference(), llvm::LoongArchFrameLowering::getFrameIndexReference(), llvm::MipsSEFrameLowering::getFrameIndexReference(), and llvm::RISCVFrameLowering::getFrameIndexReference().
BitVector MachineFrameInfo::getPristineRegs | ( | const MachineFunction & | MF | ) | const |
Return a set of physical registers that are pristine.
Pristine registers hold a value that is useless to the current function, but that must be preserved - they are callee saved registers that are not saved.
Before the PrologueEpilogueInserter has placed the CSR spill code, this method always returns an empty set.
Definition at line 115 of file MachineFrameInfo.cpp.
References getCalleeSavedInfo(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), I, isCalleeSavedInfoValid(), MRI, llvm::BitVector::reset(), llvm::BitVector::set(), and TRI.
Referenced by llvm::ARMFrameLowering::emitEpilogue(), llvm::AggressiveAntiDepBreaker::StartBlock(), and llvm::CriticalAntiDepBreaker::StartBlock().
|
inline |
Definition at line 825 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and updateLiveness().
|
inline |
Definition at line 823 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and updateLiveness().
|
inline |
Definition at line 750 of file MachineFrameInfo.h.
Referenced by allSGPRSpillsAreDead(), llvm::SIRegisterInfo::buildVGPRSpillLoadStore(), computeFreeStackSlots(), llvm::MIRPrinter::convertStackObjects(), llvm::SystemZXPLINKFrameLowering::determineFrameLayout(), determineSVEStackObjectOffsets(), emitCalleeSavedRestores(), llvm::RISCVFrameLowering::emitPrologue(), estimateStackSize(), llvm::AArch64FunctionInfo::getCalleeSavedStackSize(), llvm::RISCVFrameLowering::getFrameIndexReference(), llvm::WebAssemblyFrameLowering::getLocalForStackObject(), getRVVCalleeSavedInfo(), getScavSlotsNumForRVV(), getUnmanagedCSI(), llvm::RISCVFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SIMachineFunctionInfo::removeDeadFrameIndices(), and setObjectAlignment().
|
inline |
Return the index for the stack protector object.
Definition at line 360 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convertStackObjects(), determineSVEStackObjectOffsets(), llvm::SelectionDAGBuilder::visitSPDescriptorParent(), and WindowsRequiresStackProbe().
|
inline |
Return the number of bytes that must be allocated to hold all of the fixed size frame objects.
This is only valid after Prolog/Epilog code insertion has finalized the stack frame layout.
Definition at line 587 of file MachineFrameInfo.h.
Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::CodeViewDebug::beginFunctionImpl(), llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::SystemZXPLINKFrameLowering::determineFrameLayout(), llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::LanaiRegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::MSP430RegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::AVRRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::XtensaRegisterInfo::eliminateFrameIndex(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::SIFrameLowering::emitEpilogue(), llvm::ARCFrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::AVRFrameLowering::emitEpilogue(), llvm::LoongArchFrameLowering::emitEpilogue(), llvm::M68kFrameLowering::emitEpilogue(), llvm::Mips16FrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitEpilogue(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::SparcFrameLowering::emitEpilogue(), llvm::VEFrameLowering::emitEpilogue(), llvm::WebAssemblyFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::XtensaFrameLowering::emitEpilogue(), llvm::MipsAsmPrinter::emitFrameDirective(), llvm::SystemZAsmPrinter::emitFunctionEntryLabel(), llvm::XtensaFrameLowering::emitPrologue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::SIFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::AVRFrameLowering::emitPrologue(), llvm::LanaiFrameLowering::emitPrologue(), llvm::LoongArchFrameLowering::emitPrologue(), llvm::M68kFrameLowering::emitPrologue(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::VEFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::AsmPrinter::emitStackSizeSection(), llvm::AsmPrinter::emitStackUsage(), llvm::X86FrameLowering::getDwarfFrameBase(), llvm::LoongArchFrameLowering::getFirstSPAdjustAmount(), llvm::TargetFrameLowering::getFrameIndexReference(), llvm::HexagonFrameLowering::getFrameIndexReference(), llvm::LoongArchFrameLowering::getFrameIndexReference(), llvm::M68kFrameLowering::getFrameIndexReference(), llvm::MipsSEFrameLowering::getFrameIndexReference(), llvm::RISCVFrameLowering::getFrameIndexReference(), llvm::SparcFrameLowering::getFrameIndexReference(), llvm::VEFrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReferencePreferSP(), llvm::AArch64InstrInfo::getOutliningTypeImpl(), llvm::ARMBaseInstrInfo::getOutliningTypeImpl(), llvm::RISCVFrameLowering::getStackSizeWithRVVPadding(), llvm::SIFrameLowering::hasFP(), llvm::HexagonFrameLowering::hasFP(), llvm::PPCFrameLowering::hasFP(), llvm::WebAssemblyFrameLowering::hasFP(), needsSplitStackProlog(), llvm::PPCRegisterInfo::prepareDynamicAlloca(), llvm::ARCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::HexagonPacketizerList::useCalleesSP(), and llvm::HexagonPacketizerList::useCallersSP().
|
inline |
Definition at line 828 of file MachineFrameInfo.h.
Referenced by llvm::AsmPrinter::emitStackSizeSection(), and llvm::AsmPrinter::emitStackUsage().
|
inline |
Get whether the local allocation blob should be allocated together or let PEI allocate the locals in it directly.
Definition at line 453 of file MachineFrameInfo.h.
Referenced by isSlotPreAllocated().
|
inline |
Return true if the current function has any function calls.
Definition at line 621 of file MachineFrameInfo.h.
References HasCalls.
Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::ARCFrameLowering::assignCalleeSavedSpillSlots(), llvm::PPCFrameLowering::assignCalleeSavedSpillSlots(), llvm::AArch64FrameLowering::canUseRedZone(), llvm::MIRPrinter::convert(), llvm::CSKYFrameLowering::determineCalleeSaves(), llvm::SystemZELFFrameLowering::determineCalleeSaves(), llvm::SIFrameLowering::determineCalleeSavesSGPR(), llvm::SIFrameLowering::determinePrologEpilogSGPRSaves(), llvm::TargetOptions::DisableFramePointerElim(), llvm::SIFrameLowering::emitEntryFunctionPrologue(), llvm::ARCFrameLowering::emitEpilogue(), llvm::ARCFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::X86FrameLowering::getFrameIndexReference(), llvm::SIFrameLowering::hasFP(), llvm::HexagonFrameLowering::hasFP(), isXPLeafCandidate(), llvm::WebAssemblyFrameLowering::needsPrologForEH(), llvm::SIRegisterInfo::requiresRegisterScavenging(), llvm::SIFrameLowering::requiresStackPointerReference(), reservePrivateMemoryRegs(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::InstructionSelect::selectMachineFunction(), and llvm::SIMachineFunctionInfo::usesAGPRs().
|
inline |
Returns true if the function contains operations which will lower down to instructions which manipulate the stack pointer.
Definition at line 630 of file MachineFrameInfo.h.
Referenced by llvm::X86FrameLowering::emitPrologue(), and llvm::X86FrameLowering::hasFP().
|
inline |
Definition at line 368 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convertStackObjects().
|
inline |
Returns true if the function is variadic and contains a musttail call.
Definition at line 642 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), and handleMustTailForwardedRegisters().
|
inline |
Returns true if the function contains opaque dynamic stack adjustments.
Definition at line 625 of file MachineFrameInfo.h.
Referenced by llvm::RegsForValue::AddInlineAsmOperands(), CantUseSP(), llvm::MIRPrinter::convert(), and llvm::X86FrameLowering::hasFP().
|
inline |
This method may be called any time after instruction selection is complete to determine if there is a call to builtin @llvm.experimental.patchpoint.
Definition at line 391 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), frameTriviallyRequiresSP(), llvm::AArch64FrameLowering::hasFP(), llvm::WebAssemblyFrameLowering::hasFP(), llvm::X86FrameLowering::hasFP(), and llvm::PPCFrameLowering::needsFP().
|
inline |
This method may be called any time after instruction selection is complete to determine if there is a call to builtin @llvm.experimental.stackmap.
Definition at line 385 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), frameTriviallyRequiresSP(), llvm::AArch64FrameLowering::hasFP(), llvm::WebAssemblyFrameLowering::hasFP(), llvm::X86FrameLowering::hasFP(), and llvm::PPCFrameLowering::needsFP().
|
inline |
Return true if there are any stack objects in this function.
Definition at line 352 of file MachineFrameInfo.h.
Referenced by llvm::NVPTXFrameLowering::emitPrologue(), llvm::TargetFrameLowering::needsFrameIndexResolution(), llvm::M68kFrameLowering::needsFrameIndexResolution(), llvm::X86FrameLowering::needsFrameIndexResolution(), llvm::ARCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::SIRegisterInfo::requiresFrameIndexReplacementScavenging(), llvm::SIRegisterInfo::requiresRegisterScavenging(), and reservePrivateMemoryRegs().
|
inline |
Definition at line 362 of file MachineFrameInfo.h.
Referenced by llvm::CodeViewDebug::beginFunctionImpl(), llvm::MIRPrinter::convertStackObjects(), and determineSVEStackObjectOffsets().
|
inline |
Returns true if the function contains a tail call.
Definition at line 646 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), llvm::SIFrameLowering::determineCalleeSaves(), getUnderlyingObjectsForInstr(), needsSplitStackProlog(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and llvm::RISCVMachineFunctionInfo::useSaveRestoreLibCalls().
|
inline |
This method may be called any time after instruction selection is complete to determine if the stack frame for this function contains any variable sized objects.
Definition at line 357 of file MachineFrameInfo.h.
Referenced by llvm::PPCFrameLowering::addScavengingSpillSlot(), llvm::CodeViewDebug::beginFunctionImpl(), llvm::AArch64RegisterInfo::cannotEliminateFrame(), llvm::ARMBaseRegisterInfo::cannotEliminateFrame(), llvm::ARMFrameLowering::canSimplifyCallFramePseudos(), CantUseSP(), llvm::MipsSEFrameLowering::determineCalleeSaves(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::AArch64FrameLowering::eliminateCallFramePseudoInstr(), llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::ARMBaseRegisterInfo::eliminateFrameIndex(), llvm::ThumbRegisterInfo::eliminateFrameIndex(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::AVRFrameLowering::emitEpilogue(), llvm::LoongArchFrameLowering::emitEpilogue(), llvm::M68kFrameLowering::emitEpilogue(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::RISCVFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::SystemZAsmPrinter::emitFunctionEntryLabel(), llvm::AArch64FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::LanaiFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::AsmPrinter::emitStackSizeSection(), llvm::AsmPrinter::emitStackUsage(), estimateStackSize(), frameTriviallyRequiresSP(), llvm::HexagonFrameLowering::getFrameIndexReference(), llvm::RISCVFrameLowering::getFrameIndexReference(), llvm::AArch64FrameLowering::getFrameIndexReferencePreferSP(), llvm::R600InstrInfo::getIndirectIndexEnd(), llvm::MipsRegisterInfo::getReservedRegs(), llvm::AArch64RegisterInfo::hasBasePointer(), llvm::ARMBaseRegisterInfo::hasBasePointer(), llvm::LanaiRegisterInfo::hasBasePointer(), llvm::CSKYFrameLowering::hasBP(), llvm::LoongArchFrameLowering::hasBP(), llvm::MipsFrameLowering::hasBP(), llvm::RISCVFrameLowering::hasBP(), llvm::VEFrameLowering::hasBP(), llvm::AArch64FrameLowering::hasFP(), llvm::ARCFrameLowering::hasFP(), llvm::ARMFrameLowering::hasFP(), llvm::AVRFrameLowering::hasFP(), llvm::CSKYFrameLowering::hasFP(), llvm::HexagonFrameLowering::hasFP(), llvm::LoongArchFrameLowering::hasFP(), llvm::M68kFrameLowering::hasFP(), llvm::MipsFrameLowering::hasFP(), llvm::MSP430FrameLowering::hasFP(), llvm::RISCVFrameLowering::hasFP(), llvm::SparcFrameLowering::hasFP(), llvm::SystemZELFFrameLowering::hasFP(), llvm::SystemZXPLINKFrameLowering::hasFP(), llvm::VEFrameLowering::hasFP(), llvm::WebAssemblyFrameLowering::hasFP(), llvm::X86FrameLowering::hasFP(), llvm::XCoreFrameLowering::hasFP(), llvm::XtensaFrameLowering::hasFP(), llvm::AArch64FrameLowering::hasReservedCallFrame(), llvm::ARMFrameLowering::hasReservedCallFrame(), llvm::Thumb1FrameLowering::hasReservedCallFrame(), llvm::AVRFrameLowering::hasReservedCallFrame(), llvm::CSKYFrameLowering::hasReservedCallFrame(), llvm::LoongArchFrameLowering::hasReservedCallFrame(), llvm::M68kFrameLowering::hasReservedCallFrame(), llvm::Mips16FrameLowering::hasReservedCallFrame(), llvm::MipsSEFrameLowering::hasReservedCallFrame(), llvm::MSP430FrameLowering::hasReservedCallFrame(), llvm::RISCVFrameLowering::hasReservedCallFrame(), llvm::SparcFrameLowering::hasReservedCallFrame(), llvm::WebAssemblyFrameLowering::hasReservedCallFrame(), llvm::X86FrameLowering::hasReservedCallFrame(), isXPLeafCandidate(), llvm::HexagonFrameLowering::needsAligna(), llvm::PPCFrameLowering::needsFP(), llvm::ARMBaseRegisterInfo::needsFrameBaseReg(), llvm::HexagonFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCFrameLowering::replaceFPWithRealFP(), llvm::HexagonDAGToDAGISel::SelectFrameIndex(), and llvm::ARMSubtarget::splitFramePointerPush().
|
inline |
Returns true if the function calls the llvm.va_start intrinsic.
Definition at line 638 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert().
|
inline |
Returns true if the specified index corresponds to an object that might be pointed to by an LLVM IR value.
Definition at line 706 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::MIRPrinter::convertStackObjects(), and llvm::FixedStackPseudoSourceValue::isAliased().
|
inline |
Has the callee saved info been calculated yet?
Definition at line 819 of file MachineFrameInfo.h.
Referenced by llvm::LiveRegUnits::addLiveOuts(), llvm::LivePhysRegs::addLiveOutsNoPristines(), llvm::MIRPrinter::convert(), llvm::AArch64FrameLowering::determineCalleeSaves(), llvm::AArch64FunctionInfo::getCalleeSavedStackSize(), llvm::TargetFrameLowering::getCalleeSaves(), llvm::AArch64InstrInfo::getOutliningTypeImpl(), llvm::ARMBaseInstrInfo::getOutliningTypeImpl(), getPristineRegs(), getSVECalleeSaveSlotRange(), llvm::recomputeLivenessFlags(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), and llvm::ARMFrameLowering::updateLRRestored().
|
inline |
Returns true if the specified index corresponds to a dead object.
Definition at line 764 of file MachineFrameInfo.h.
References assert().
Referenced by allSGPRSpillsAreDead(), allStackObjectsAreDead(), llvm::MIRPrinter::convertStackObjects(), llvm::SSPLayoutInfo::copyToMachineFrameInfo(), determineSVEStackObjectOffsets(), llvm::XtensaFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), estimateStackSize(), getObjectOffset(), setObjectOffset(), and setObjectSSPLayout().
|
inline |
Returns true if the specified index corresponds to a fixed stack object.
Definition at line 700 of file MachineFrameInfo.h.
Referenced by llvm::GISelAddressing::aliasIsKnownForLoadStore(), llvm::SIRegisterInfo::buildVGPRSpillLoadStore(), llvm::BaseIndexOffset::computeAliasing(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::PPCFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitPrologue(), llvm::BaseIndexOffset::equalBaseIndex(), llvm::yaml::FrameIndex::FrameIndex(), llvm::HexagonFrameLowering::getFrameIndexReference(), llvm::LoongArchFrameLowering::getFrameIndexReference(), llvm::MipsSEFrameLowering::getFrameIndexReference(), llvm::RISCVFrameLowering::getFrameIndexReference(), llvm::VEFrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReference(), llvm::X86FrameLowering::getFrameIndexReferencePreferSP(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), llvm::X86InstrInfo::loadRegFromStackSlot(), LowerAsSplatVectorLoad(), MatchingStackOffset(), printFrameIndex(), llvm::SIFrameLowering::processFunctionBeforeFrameFinalized(), llvm::PPCRegisterInfo::requiresFrameIndexScavenging(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::AVRFrameAnalyzer::runOnMachineFunction(), llvm::HexagonDAGToDAGISel::SelectAddrFI(), shouldClusterFI(), and llvm::X86InstrInfo::storeRegToStackSlot().
|
inline |
This method may be called any time after instruction selection is complete to determine if there is a call to @llvm.frameaddress in this function.
Definition at line 373 of file MachineFrameInfo.h.
Referenced by llvm::AArch64RegisterInfo::cannotEliminateFrame(), llvm::ARMBaseRegisterInfo::cannotEliminateFrame(), llvm::MIRPrinter::convert(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::PPCFrameLowering::emitPrologue(), llvm::AArch64FrameLowering::hasFP(), llvm::SIFrameLowering::hasFP(), llvm::ARCFrameLowering::hasFP(), llvm::ARMFrameLowering::hasFP(), llvm::CSKYFrameLowering::hasFP(), llvm::LoongArchFrameLowering::hasFP(), llvm::M68kFrameLowering::hasFP(), llvm::MipsFrameLowering::hasFP(), llvm::MSP430FrameLowering::hasFP(), llvm::RISCVFrameLowering::hasFP(), llvm::SparcFrameLowering::hasFP(), llvm::VEFrameLowering::hasFP(), llvm::WebAssemblyFrameLowering::hasFP(), and llvm::X86FrameLowering::hasFP().
|
inline |
Returns true if the specified index corresponds to an immutable object.
Definition at line 720 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::MIRPrinter::convertStackObjects(), llvm::FixedStackPseudoSourceValue::isConstant(), llvm::TargetInstrInfo::isReallyTriviallyReMaterializable(), and MatchingStackOffset().
|
inline |
Definition at line 673 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), getMaxCallFrameSize(), llvm::ARMBaseRegisterInfo::getRegPressureLimit(), llvm::RISCVFrameLowering::hasBP(), llvm::AArch64FrameLowering::hasFP(), and llvm::AArch64Subtarget::mirFileLoaded().
|
inline |
Return true if the object was pre-allocated into the local block.
Definition at line 465 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::HexagonFrameLowering::getFrameIndexReference(), and isSlotPreAllocated().
|
inline |
Definition at line 548 of file MachineFrameInfo.h.
References assert().
Referenced by MatchingStackOffset().
|
inline |
Definition at line 536 of file MachineFrameInfo.h.
References assert().
Referenced by MatchingStackOffset().
|
inline |
This method may be called any time after instruction selection is complete to determine if there is a call to @llvm.returnaddress in this function.
Definition at line 379 of file MachineFrameInfo.h.
Referenced by llvm::MIRPrinter::convert(), llvm::ARMFrameLowering::determineCalleeSaves(), llvm::LoongArchFrameLowering::spillCalleeSavedRegisters(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), and llvm::XtensaFrameLowering::spillCalleeSavedRegisters().
|
inline |
Returns true if the specified index corresponds to a spill slot.
Definition at line 737 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::SIMachineFunctionInfo::allocateVGPRSpillToAGPR(), llvm::MIRPrinter::convertStackObjects(), llvm::MachineInstr::getRestoreSize(), llvm::MachineInstr::getSpillSize(), getSpillSlotSize(), and llvm::FixedStackPseudoSourceValue::mayAlias().
|
inline |
Definition at line 349 of file MachineFrameInfo.h.
Referenced by llvm::TargetRegisterInfo::canRealignStack().
|
inline |
Definition at line 743 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::TargetLoweringBase::emitPatchPoint(), and markAsStatepointSpillSlotObjectIndex().
|
inline |
Returns true if the specified index corresponds to a variable sized object.
Definition at line 772 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::MIRPrinter::convertStackObjects(), and scavengeStackSlot().
|
inline |
Map a frame index into the local object block.
Definition at line 421 of file MachineFrameInfo.h.
References llvm::Offset.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 778 of file MachineFrameInfo.h.
References assert(), and isStatepointSpillSlotObjectIndex().
Referenced by llvm::StatepointLoweringState::allocateStackSlot().
|
inline |
Return true if this function requires a split stack prolog, even if it uses no stack space.
This is only meaningful for functions where MachineFunction::shouldSplitStack() returns true.
Definition at line 404 of file MachineFrameInfo.h.
References getStackSize(), and hasTailCall().
Referenced by llvm::ARMFrameLowering::adjustForSegmentedStacks(), llvm::X86FrameLowering::adjustForSegmentedStacks(), and llvm::AsmPrinter::SetupMachineFunction().
void MachineFrameInfo::print | ( | const MachineFunction & | MF, |
raw_ostream & | OS | ||
) | const |
Used by the MachineFunction printer to print information about stack objects.
Implemented in MachineFunction.cpp.
Definition at line 209 of file MachineFrameInfo.cpp.
References llvm::TargetSubtargetInfo::getFrameLowering(), llvm::TargetFrameLowering::getOffsetOfLocalArea(), llvm::MachineFunction::getSubtarget(), and OS.
Referenced by dump(), and llvm::MachineFunction::print().
|
inline |
Remove or mark dead a statically sized stack object.
Definition at line 795 of file MachineFrameInfo.h.
Referenced by llvm::AArch64TargetLowering::EmitInitTPIDR2Object(), getVGPRSpillLaneOrTempRegister(), llvm::SIMachineFunctionInfo::removeDeadFrameIndices(), and tryToElideArgumentCopy().
|
inline |
Definition at line 618 of file MachineFrameInfo.h.
Referenced by llvm::HexagonTargetLowering::GetDynamicTLSAddr(), GetTLSADDR(), llvm::MIRParserImpl::initializeFrameInfo(), LowerINTRINSIC_W_CHAIN(), llvm::TargetLowering::LowerToTLSEmulatedModel(), and runImpl().
|
inline |
Used by prolog/epilog inserter to set the function's callee saved information.
Definition at line 814 of file MachineFrameInfo.h.
Referenced by assignCalleeSavedSpillSlots(), and llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 821 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 683 of file MachineFrameInfo.h.
Referenced by llvm::X86FrameLowering::assignCalleeSavedSpillSlots(), and llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 374 of file MachineFrameInfo.h.
References T.
Referenced by getFRAMEADDR(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::HexagonTargetLowering::LowerFRAMEADDR(), llvm::LanaiTargetLowering::LowerFRAMEADDR(), llvm::MSP430TargetLowering::LowerFRAMEADDR(), lowerFRAMEADDR(), LowerINTRINSIC_W_CHAIN(), llvm::VETargetLowering::lowerVASTART(), and LowerVASTART().
|
inline |
Definition at line 367 of file MachineFrameInfo.h.
References I.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 622 of file MachineFrameInfo.h.
References HasCalls.
Referenced by GetTLSADDR(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::HexagonTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerGlobalTLSAddress(), llvm::TargetLowering::LowerToTLSEmulatedModel(), llvm::VETargetLowering::lowerToTLSGeneralDynamicModel(), llvm::SparcTargetLowering::makeAddress(), llvm::SelectionDAGISel::runOnMachineFunction(), and llvm::InstructionSelect::selectMachineFunction().
|
inline |
Definition at line 633 of file MachineFrameInfo.h.
References B.
Referenced by LowerINTRINSIC_W_CHAIN().
|
inline |
Definition at line 643 of file MachineFrameInfo.h.
References B.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), llvm::IRTranslator::runOnMachineFunction(), and llvm::FunctionLoweringInfo::set().
|
inline |
Definition at line 626 of file MachineFrameInfo.h.
References B.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), and llvm::FunctionLoweringInfo::set().
Definition at line 392 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), and llvm::FastISel::selectPatchpoint().
Definition at line 386 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), and llvm::FastISel::selectStackmap().
Definition at line 647 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), llvm::SITargetLowering::LowerCall(), llvm::HexagonTargetLowering::LowerCall(), llvm::LoongArchTargetLowering::LowerCall(), llvm::RISCVTargetLowering::LowerCall(), llvm::SparcTargetLowering::LowerCall_32(), llvm::SparcTargetLowering::LowerCall_64(), and llvm::AMDGPUCallLowering::lowerTailCall().
|
inline |
Definition at line 639 of file MachineFrameInfo.h.
References B.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), and llvm::FunctionLoweringInfo::set().
|
inline |
Set "maybe pointed to by an LLVM IR value" for an object.
Definition at line 713 of file MachineFrameInfo.h.
References assert().
Referenced by tryToElideArgumentCopy().
|
inline |
Marks the immutability of an object.
Definition at line 730 of file MachineFrameInfo.h.
References assert().
Referenced by tryToElideArgumentCopy().
|
inline |
Required alignment of the local object blob, which is the strictest alignment of any object in it.
Definition at line 444 of file MachineFrameInfo.h.
|
inline |
Set the size of the local object blob.
Definition at line 437 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 676 of file MachineFrameInfo.h.
Referenced by llvm::PPCFrameLowering::determineFrameLayoutAndUpdate(), llvm::MIRParserImpl::initializeFrameInfo(), and llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized().
|
inline |
setObjectAlignment - Change the alignment of the specified stack object.
Definition at line 499 of file MachineFrameInfo.h.
References assert(), contributesToMaxAlignment(), ensureMaxAlignment(), and getStackID().
Referenced by emitAlignedDPRCS2Spills(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), llvm::MIRParserImpl::initializeFrameInfo(), LowerAsSplatVectorLoad(), and llvm::FunctionLoweringInfo::set().
|
inline |
Set the stack frame offset of the specified object.
The offset is relative to the stack pointer on entry to the function.
Definition at line 562 of file MachineFrameInfo.h.
References assert(), and isDeadObjectIndex().
Referenced by AdjustStackOffset(), llvm::ARCFrameLowering::assignCalleeSavedSpillSlots(), llvm::SystemZXPLINKFrameLowering::determineFrameLayout(), determineSVEStackObjectOffsets(), llvm::XtensaFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::WebAssemblyFrameLowering::getLocalForStackObject(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), and scavengeStackSlot().
|
inline |
Definition at line 554 of file MachineFrameInfo.h.
References assert().
|
inline |
Change the size of the specified stack object.
Definition at line 479 of file MachineFrameInfo.h.
References assert(), and Size.
Referenced by llvm::WebAssemblyFrameLowering::getLocalForStackObject().
|
inline |
Definition at line 576 of file MachineFrameInfo.h.
References assert(), and isDeadObjectIndex().
Referenced by llvm::SSPLayoutInfo::copyToMachineFrameInfo().
|
inline |
Definition at line 542 of file MachineFrameInfo.h.
References assert().
|
inline |
Set the correction for frame offsets.
Definition at line 599 of file MachineFrameInfo.h.
Referenced by llvm::ARMFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::M68kFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::MIRParserImpl::initializeFrameInfo(), and llvm::SystemZXPLINKFrameLowering::processFunctionBeforeFrameFinalized().
|
inline |
Definition at line 826 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 380 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo(), llvm::HexagonTargetLowering::LowerRETURNADDR(), llvm::LanaiTargetLowering::LowerRETURNADDR(), llvm::MSP430TargetLowering::LowerRETURNADDR(), LowerRETURNADDR(), and lowerRETURNADDR().
|
inline |
Definition at line 824 of file MachineFrameInfo.h.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 755 of file MachineFrameInfo.h.
References assert().
Referenced by llvm::SystemZXPLINKFrameLowering::assignCalleeSavedSpillSlots(), llvm::WebAssemblyFrameLowering::getLocalForStackObject(), llvm::SystemZXPLINKFrameLowering::getOrCreateFramePointerSaveIndex(), llvm::MIRParserImpl::initializeFrameInfo(), llvm::AArch64InstrInfo::loadRegFromStackSlot(), llvm::RISCVInstrInfo::loadRegFromStackSlot(), llvm::SIMachineFunctionInfo::removeDeadFrameIndices(), llvm::FunctionLoweringInfo::set(), llvm::AArch64FrameLowering::spillCalleeSavedRegisters(), llvm::AArch64InstrInfo::storeRegToStackSlot(), and llvm::RISCVInstrInfo::storeRegToStackSlot().
|
inline |
Definition at line 361 of file MachineFrameInfo.h.
References I.
Referenced by llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Set the size of the stack.
Definition at line 590 of file MachineFrameInfo.h.
References Size.
Referenced by llvm::SystemZXPLINKFrameLowering::determineFrameLayout(), llvm::PPCFrameLowering::determineFrameLayoutAndUpdate(), llvm::XtensaFrameLowering::emitPrologue(), llvm::ARCFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::SystemZELFFrameLowering::emitPrologue(), llvm::VEFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), and llvm::MIRParserImpl::initializeFrameInfo().
|
inline |
Definition at line 829 of file MachineFrameInfo.h.
References Size.
Referenced by setUnsafeStackSize().
|
inline |
setUseLocalStackAllocationBlock - Set whether the local allocation blob should be allocated together or let PEI allocate the locals in it directly.
Definition at line 460 of file MachineFrameInfo.h.
Referenced by INITIALIZE_PASS().
|
inline |
Return true if stack realignment is forced by function attributes or if the stack alignment.
Definition at line 610 of file MachineFrameInfo.h.
Referenced by llvm::TargetRegisterInfo::shouldRealignStack().