LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Member Functions | List of all members
llvm::MachineFrameInfo Class Reference

Abstract Stack Frame Information. More...

#include <MachineFrameInfo.h>

Public Member Functions

 MachineFrameInfo (const TargetMachine &TM, bool RealignOpt)
 
bool hasStackObjects () const
 
bool hasVarSizedObjects () const
 
int getStackProtectorIndex () const
 
void setStackProtectorIndex (int I)
 
int getFunctionContextIndex () const
 
void setFunctionContextIndex (int I)
 
bool isFrameAddressTaken () const
 
void setFrameAddressIsTaken (bool T)
 
bool isReturnAddressTaken () const
 
void setReturnAddressIsTaken (bool s)
 
int getObjectIndexBegin () const
 
int getObjectIndexEnd () const
 
unsigned getNumFixedObjects () const
 getNumFixedObjects - Return the number of fixed objects. More...
 
unsigned getNumObjects () const
 
void mapLocalFrameObject (int ObjectIndex, int64_t Offset)
 mapLocalFrameObject - Map a frame index into the local object block More...
 
std::pair< int, int64_t > getLocalFrameObjectMap (int i)
 getLocalFrameObjectMap - Get the local offset mapping for a for an object More...
 
int64_t getLocalFrameObjectCount ()
 
void setLocalFrameSize (int64_t sz)
 setLocalFrameSize - Set the size of the local object blob. More...
 
int64_t getLocalFrameSize () const
 getLocalFrameSize - Get the size of the local object blob. More...
 
void setLocalFrameMaxAlign (unsigned Align)
 
unsigned getLocalFrameMaxAlign () const
 
bool getUseLocalStackAllocationBlock ()
 
void setUseLocalStackAllocationBlock (bool v)
 
bool isObjectPreAllocated (int ObjectIdx) const
 
int64_t getObjectSize (int ObjectIdx) const
 
void setObjectSize (int ObjectIdx, int64_t Size)
 setObjectSize - Change the size of the specified stack object. More...
 
unsigned getObjectAlignment (int ObjectIdx) const
 getObjectAlignment - Return the alignment of the specified stack object. More...
 
void setObjectAlignment (int ObjectIdx, unsigned Align)
 setObjectAlignment - Change the alignment of the specified stack object. More...
 
const AllocaInstgetObjectAllocation (int ObjectIdx) const
 
bool MayNeedStackProtector (int ObjectIdx) const
 
int64_t getObjectOffset (int ObjectIdx) const
 
void setObjectOffset (int ObjectIdx, int64_t SPOffset)
 
uint64_t getStackSize () const
 
void setStackSize (uint64_t Size)
 
unsigned estimateStackSize (const MachineFunction &MF) const
 Estimate and return the size of the stack frame. More...
 
int getOffsetAdjustment () const
 
void setOffsetAdjustment (int Adj)
 
unsigned getMaxAlignment () const
 
void ensureMaxAlignment (unsigned Align)
 
bool adjustsStack () const
 
void setAdjustsStack (bool V)
 
bool hasCalls () const
 hasCalls - Return true if the current function has any function calls. More...
 
void setHasCalls (bool V)
 
unsigned getMaxCallFrameSize () const
 
void setMaxCallFrameSize (unsigned S)
 
int CreateFixedObject (uint64_t Size, int64_t SPOffset, bool Immutable)
 
bool isFixedObjectIndex (int ObjectIdx) const
 
bool isImmutableObjectIndex (int ObjectIdx) const
 
bool isSpillSlotObjectIndex (int ObjectIdx) const
 
bool isDeadObjectIndex (int ObjectIdx) const
 
int CreateStackObject (uint64_t Size, unsigned Alignment, bool isSS, bool MayNeedSP=false, const AllocaInst *Alloca=0)
 
int CreateSpillStackObject (uint64_t Size, unsigned Alignment)
 
void RemoveStackObject (int ObjectIdx)
 
int CreateVariableSizedObject (unsigned Alignment)
 
const std::vector
< CalleeSavedInfo > & 
getCalleeSavedInfo () const
 
void setCalleeSavedInfo (const std::vector< CalleeSavedInfo > &CSI)
 
bool isCalleeSavedInfoValid () const
 isCalleeSavedInfoValid - Has the callee saved info been calculated yet? More...
 
void setCalleeSavedInfoValid (bool v)
 
BitVector getPristineRegs (const MachineBasicBlock *MBB) const
 
void print (const MachineFunction &MF, raw_ostream &OS) const
 
void dump (const MachineFunction &MF) const
 dump - Print the function to stderr. More...
 

Detailed Description

Abstract Stack Frame Information.

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.

Definition at line 80 of file MachineFrameInfo.h.

Constructor & Destructor Documentation

llvm::MachineFrameInfo::MachineFrameInfo ( const TargetMachine TM,
bool  RealignOpt 
)
inlineexplicit

Definition at line 228 of file MachineFrameInfo.h.

Member Function Documentation

bool llvm::MachineFrameInfo::adjustsStack ( ) const
inline
int MachineFrameInfo::CreateFixedObject ( uint64_t  Size,
int64_t  SPOffset,
bool  Immutable 
)
int MachineFrameInfo::CreateSpillStackObject ( uint64_t  Size,
unsigned  Alignment 
)

CreateSpillStackObject - Create a new statically sized stack object that represents a spill slot, returning a nonnegative identifier to represent it.

Definition at line 511 of file MachineFunction.cpp.

References clampStackAlignment(), CreateStackObject(), ensureMaxAlignment(), and Objects.

Referenced by llvm::AArch64TargetLowering::EmitF128CSEL().

int MachineFrameInfo::CreateStackObject ( uint64_t  Size,
unsigned  Alignment,
bool  isSS,
bool  MayNeedSP = false,
const AllocaInst Alloca = 0 
)
int MachineFrameInfo::CreateVariableSizedObject ( unsigned  Alignment)

CreateVariableSizedObject - 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 528 of file MachineFunction.cpp.

References clampStackAlignment(), ensureMaxAlignment(), and Objects.

void MachineFrameInfo::dump ( const MachineFunction MF) const

dump - Print the function to stderr.

Definition at line 681 of file MachineFunction.cpp.

References llvm::dbgs(), and print().

void MachineFrameInfo::ensureMaxAlignment ( unsigned  Align)

ensureMaxAlignment - Make sure the function is at least Align bytes aligned.

Definition at line 471 of file MachineFunction.cpp.

References Align().

Referenced by llvm::CCState::AllocateStack(), CreateSpillStackObject(), CreateStackObject(), CreateVariableSizedObject(), llvm::CCState::HandleByVal(), llvm::MachineFunction::MachineFunction(), and setObjectAlignment().

unsigned MachineFrameInfo::estimateStackSize ( const MachineFunction MF) const
const std::vector<CalleeSavedInfo>& llvm::MachineFrameInfo::getCalleeSavedInfo ( ) const
inline
int llvm::MachineFrameInfo::getFunctionContextIndex ( ) const
inline

getFunctionContextIndex/setFunctionContextIndex - Return the index for the function context object. This object is used for SjLj exceptions.

Definition at line 264 of file MachineFrameInfo.h.

unsigned llvm::MachineFrameInfo::getLocalFrameMaxAlign ( ) const
inline

getLocalFrameMaxAlign - Return the required alignment of the local object blob.

Definition at line 323 of file MachineFrameInfo.h.

Referenced by llvm::ARMBaseRegisterInfo::needsFrameBaseReg().

int64_t llvm::MachineFrameInfo::getLocalFrameObjectCount ( )
inline

getLocalFrameObjectCount - Return the number of objects allocated into the local object block.

Definition at line 309 of file MachineFrameInfo.h.

References llvm::SmallVectorTemplateCommon< T, typename >::size().

std::pair<int, int64_t> llvm::MachineFrameInfo::getLocalFrameObjectMap ( int  i)
inline

getLocalFrameObjectMap - Get the local offset mapping for a for an object

Definition at line 301 of file MachineFrameInfo.h.

References llvm::SmallVectorTemplateCommon< T, typename >::size().

int64_t llvm::MachineFrameInfo::getLocalFrameSize ( ) const
inline

getLocalFrameSize - Get the size of the local object blob.

Definition at line 315 of file MachineFrameInfo.h.

Referenced by llvm::ARMBaseRegisterInfo::hasBasePointer(), and llvm::ARMBaseRegisterInfo::needsFrameBaseReg().

unsigned llvm::MachineFrameInfo::getMaxAlignment ( ) const
inline
unsigned llvm::MachineFrameInfo::getMaxCallFrameSize ( ) const
inline

getMaxCallFrameSize - 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 459 of file MachineFrameInfo.h.

Referenced by llvm::PPCFrameLowering::determineFrameLayout(), llvm::HexagonFrameLowering::emitPrologue(), llvm::MipsFrameLowering::estimateStackSize(), estimateStackSize(), llvm::MipsSEFrameLowering::hasReservedCallFrame(), llvm::Mips16FrameLowering::hasReservedCallFrame(), llvm::Thumb1FrameLowering::hasReservedCallFrame(), llvm::ARMFrameLowering::hasReservedCallFrame(), and llvm::PPCRegisterInfo::lowerDynamicAlloc().

unsigned llvm::MachineFrameInfo::getNumFixedObjects ( ) const
inline

getNumFixedObjects - Return the number of fixed objects.

Definition at line 288 of file MachineFrameInfo.h.

unsigned llvm::MachineFrameInfo::getNumObjects ( ) const
inline
unsigned llvm::MachineFrameInfo::getObjectAlignment ( int  ObjectIdx) const
inline
const AllocaInst* llvm::MachineFrameInfo::getObjectAllocation ( int  ObjectIdx) const
inline

getObjectAllocation - Return the underlying Alloca of the specified stack object if it exists. Returns 0 if none exists.

Definition at line 377 of file MachineFrameInfo.h.

int llvm::MachineFrameInfo::getObjectIndexBegin ( ) const
inline
int llvm::MachineFrameInfo::getObjectIndexEnd ( ) const
inline

getObjectIndexEnd - Return one past the maximum frame object index.

Definition at line 285 of file MachineFrameInfo.h.

Referenced by llvm::MipsFrameLowering::estimateStackSize(), estimateStackSize(), and INITIALIZE_PASS().

int64_t llvm::MachineFrameInfo::getObjectOffset ( int  ObjectIdx) const
inline

getObjectOffset - Return the assigned stack offset of the specified object from the incoming stack pointer.

Definition at line 394 of file MachineFrameInfo.h.

References isDeadObjectIndex().

Referenced by llvm::AArch64TargetLowering::addTokenForArgument(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::MSP430RegisterInfo::eliminateFrameIndex(), llvm::NVPTXRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::Thumb1RegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::X86FrameLowering::emitCalleeSavedFrameMoves(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::PPCFrameLowering::emitPrologue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::MipsFrameLowering::estimateStackSize(), estimateStackSize(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::HexagonFrameLowering::getFrameIndexOffset(), llvm::SystemZFrameLowering::getFrameIndexOffset(), llvm::X86FrameLowering::getFrameIndexOffset(), llvm::TargetFrameLowering::getFrameIndexOffset(), llvm::SelectionDAG::isConsecutiveLoad(), isConsecutiveLS(), MatchingStackOffset(), llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), llvm::AArch64FrameLowering::resolveFrameIndexReference(), and llvm::rewriteA64FrameIndex().

int64_t llvm::MachineFrameInfo::getObjectSize ( int  ObjectIdx) const
inline
int llvm::MachineFrameInfo::getOffsetAdjustment ( ) const
inline
BitVector MachineFrameInfo::getPristineRegs ( const MachineBasicBlock MBB) const

getPristineRegs - Return a set of physical registers that are pristine on entry to the MBB.

Pristine registers hold a value that is useless to the current function, but that must be preserved - they are callee saved registers that have not been saved yet.

Before the PrologueEpilogueInserter has placed the CSR spill code, this method always returns an empty set.

Definition at line 566 of file MachineFunction.cpp.

References llvm::MachineFunction::front(), getCalleeSavedInfo(), llvm::TargetRegisterInfo::getCalleeSavedRegs(), llvm::MCRegisterInfo::getNumRegs(), llvm::MachineBasicBlock::getParent(), llvm::TargetMachine::getRegisterInfo(), llvm::MachineFunction::getTarget(), I, isCalleeSavedInfoValid(), llvm::BitVector::set(), and llvm::SystemZISD::TM.

Referenced by llvm::RegScavenger::initRegState(), llvm::CriticalAntiDepBreaker::StartBlock(), and llvm::AggressiveAntiDepBreaker::StartBlock().

int llvm::MachineFrameInfo::getStackProtectorIndex ( ) const
inline

getStackProtectorIndex/setStackProtectorIndex - Return the index for the stack protector object.

Definition at line 259 of file MachineFrameInfo.h.

Referenced by llvm::SelectionDAGBuilder::visitSPDescriptorParent().

uint64_t llvm::MachineFrameInfo::getStackSize ( ) const
inline

getStackSize - 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 417 of file MachineFrameInfo.h.

Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::X86FrameLowering::adjustForSegmentedStacks(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::MSP430RegisterInfo::eliminateFrameIndex(), llvm::SparcRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::Thumb1RegisterInfo::eliminateFrameIndex(), llvm::MipsRegisterInfo::eliminateFrameIndex(), llvm::PPCRegisterInfo::eliminateFrameIndex(), llvm::Mips16FrameLowering::emitEpilogue(), llvm::MipsSEFrameLowering::emitEpilogue(), llvm::XCoreFrameLowering::emitEpilogue(), llvm::SparcFrameLowering::emitEpilogue(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitEpilogue(), llvm::ARMFrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::MipsAsmPrinter::emitFrameDirective(), llvm::Mips16FrameLowering::emitPrologue(), llvm::MipsSEFrameLowering::emitPrologue(), llvm::XCoreFrameLowering::emitPrologue(), llvm::HexagonFrameLowering::emitPrologue(), llvm::SparcFrameLowering::emitPrologue(), llvm::MSP430FrameLowering::emitPrologue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), llvm::AArch64FrameLowering::emitPrologue(), llvm::SystemZFrameLowering::getAllocatedStackSize(), llvm::X86FrameLowering::getFrameIndexOffset(), llvm::TargetFrameLowering::getFrameIndexOffset(), llvm::PPCFrameLowering::hasFP(), llvm::HexagonFrameLowering::hasFP(), llvm::PPCRegisterInfo::lowerDynamicAlloc(), llvm::ARMFrameLowering::ResolveFrameIndexReference(), and llvm::PEI::runOnMachineFunction().

bool llvm::MachineFrameInfo::getUseLocalStackAllocationBlock ( )
inline

getUseLocalStackAllocationBlock - Get whether the local allocation blob should be allocated together or let PEI allocate the locals in it directly.

Definition at line 328 of file MachineFrameInfo.h.

bool llvm::MachineFrameInfo::hasCalls ( ) const
inline
bool llvm::MachineFrameInfo::hasStackObjects ( ) const
inline

hasStackObjects - Return true if there are any stack objects in this function.

Definition at line 248 of file MachineFrameInfo.h.

Referenced by llvm::NVPTXFrameLowering::emitPrologue().

bool llvm::MachineFrameInfo::hasVarSizedObjects ( ) const
inline

hasVarSizedObjects - 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 254 of file MachineFrameInfo.h.

Referenced by llvm::PPCFrameLowering::addScavengingSpillSlot(), llvm::ARMBaseRegisterInfo::cannotEliminateFrame(), llvm::X86RegisterInfo::canRealignStack(), llvm::ARMFrameLowering::canSimplifyCallFramePseudos(), llvm::PPCFrameLowering::determineFrameLayout(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::Thumb1RegisterInfo::eliminateFrameIndex(), llvm::ARMBaseRegisterInfo::eliminateFrameIndex(), llvm::MSP430FrameLowering::emitEpilogue(), llvm::PPCFrameLowering::emitEpilogue(), llvm::X86FrameLowering::emitEpilogue(), llvm::AArch64FrameLowering::emitEpilogue(), llvm::Thumb1FrameLowering::emitPrologue(), llvm::ARMFrameLowering::emitPrologue(), llvm::X86FrameLowering::emitPrologue(), estimateStackSize(), llvm::SystemZFrameLowering::getAllocatedStackSize(), llvm::AMDGPUInstrInfo::getIndirectIndexEnd(), llvm::X86RegisterInfo::hasBasePointer(), llvm::ARMBaseRegisterInfo::hasBasePointer(), llvm::MipsFrameLowering::hasFP(), llvm::SparcFrameLowering::hasFP(), llvm::XCoreFrameLowering::hasFP(), llvm::ARMFrameLowering::hasFP(), llvm::MSP430FrameLowering::hasFP(), llvm::SystemZFrameLowering::hasFP(), llvm::X86FrameLowering::hasFP(), llvm::AArch64FrameLowering::hasFP(), llvm::MipsSEFrameLowering::hasReservedCallFrame(), llvm::SparcFrameLowering::hasReservedCallFrame(), llvm::Mips16FrameLowering::hasReservedCallFrame(), llvm::Thumb1FrameLowering::hasReservedCallFrame(), llvm::ARMFrameLowering::hasReservedCallFrame(), llvm::MSP430FrameLowering::hasReservedCallFrame(), llvm::X86FrameLowering::hasReservedCallFrame(), llvm::AArch64FrameLowering::hasReservedCallFrame(), llvm::PPCFrameLowering::needsFP(), llvm::ARMBaseRegisterInfo::needsFrameBaseReg(), llvm::AArch64FrameLowering::processFunctionBeforeCalleeSavedScan(), and llvm::AArch64FrameLowering::useFPForAddressing().

bool llvm::MachineFrameInfo::isCalleeSavedInfoValid ( ) const
inline

isCalleeSavedInfoValid - Has the callee saved info been calculated yet?

Definition at line 539 of file MachineFrameInfo.h.

Referenced by getPristineRegs().

bool llvm::MachineFrameInfo::isDeadObjectIndex ( int  ObjectIdx) const
inline

isDeadObjectIndex - Returns true if the specified index corresponds to a dead object.

Definition at line 494 of file MachineFrameInfo.h.

Referenced by estimateStackSize(), getObjectOffset(), and setObjectOffset().

bool llvm::MachineFrameInfo::isFixedObjectIndex ( int  ObjectIdx) const
inline

isFixedObjectIndex - Returns true if the specified index corresponds to a fixed stack object.

Definition at line 472 of file MachineFrameInfo.h.

Referenced by getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), llvm::FixedStackPseudoSourceValue::isAliased(), LowerAsSplatVectorLoad(), MatchingStackOffset(), and llvm::ARMFrameLowering::ResolveFrameIndexReference().

bool llvm::MachineFrameInfo::isFrameAddressTaken ( ) const
inline

isFrameAddressTaken - 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 270 of file MachineFrameInfo.h.

Referenced by llvm::ARMBaseRegisterInfo::cannotEliminateFrame(), llvm::PPCFrameLowering::emitPrologue(), llvm::MipsFrameLowering::hasFP(), llvm::SparcFrameLowering::hasFP(), llvm::ARMFrameLowering::hasFP(), llvm::MSP430FrameLowering::hasFP(), llvm::X86FrameLowering::hasFP(), and llvm::AArch64FrameLowering::hasFP().

bool llvm::MachineFrameInfo::isImmutableObjectIndex ( int  ObjectIdx) const
inline

isImmutableObjectIndex - Returns true if the specified index corresponds to an immutable object.

Definition at line 478 of file MachineFrameInfo.h.

Referenced by llvm::FixedStackPseudoSourceValue::isConstant().

bool llvm::MachineFrameInfo::isObjectPreAllocated ( int  ObjectIdx) const
inline

isObjectPreAllocated - Return true if the object was pre-allocated into the local block.

Definition at line 339 of file MachineFrameInfo.h.

bool llvm::MachineFrameInfo::isReturnAddressTaken ( ) const
inline

isReturnAddressTaken - 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 276 of file MachineFrameInfo.h.

Referenced by llvm::AArch64FrameLowering::determinePrologueDeath(), llvm::Mips16FrameLowering::spillCalleeSavedRegisters(), llvm::MipsSEFrameLowering::spillCalleeSavedRegisters(), and llvm::Thumb1FrameLowering::spillCalleeSavedRegisters().

bool llvm::MachineFrameInfo::isSpillSlotObjectIndex ( int  ObjectIdx) const
inline

isSpillSlotObjectIndex - Returns true if the specified index corresponds to a spill slot..

Definition at line 486 of file MachineFrameInfo.h.

Referenced by emitComments(), llvm::FixedStackPseudoSourceValue::isAliased(), and llvm::FixedStackPseudoSourceValue::mayAlias().

void llvm::MachineFrameInfo::mapLocalFrameObject ( int  ObjectIndex,
int64_t  Offset 
)
inline

mapLocalFrameObject - Map a frame index into the local object block

Definition at line 295 of file MachineFrameInfo.h.

References llvm::SmallVectorTemplateBase< T, isPodLike >::push_back().

bool llvm::MachineFrameInfo::MayNeedStackProtector ( int  ObjectIdx) const
inline

NeedsStackProtector - Returns true if the object may need stack protectors.

Definition at line 385 of file MachineFrameInfo.h.

void MachineFrameInfo::print ( const MachineFunction MF,
raw_ostream OS 
) const

print - Used by the MachineFunction printer to print information about stack objects. Implemented in MachineFunction.cpp

Definition at line 644 of file MachineFunction.cpp.

References llvm::TargetMachine::getFrameLowering(), llvm::TargetFrameLowering::getOffsetOfLocalArea(), llvm::MachineFunction::getTarget(), and Objects.

Referenced by dump(), and llvm::MachineFunction::print().

void llvm::MachineFrameInfo::RemoveStackObject ( int  ObjectIdx)
inline

RemoveStackObject - Remove or mark dead a statically sized stack object.

Definition at line 514 of file MachineFrameInfo.h.

void llvm::MachineFrameInfo::setAdjustsStack ( bool  V)
inline

Definition at line 448 of file MachineFrameInfo.h.

Referenced by GetTLSADDR().

void llvm::MachineFrameInfo::setCalleeSavedInfo ( const std::vector< CalleeSavedInfo > &  CSI)
inline

setCalleeSavedInfo - Used by prolog/epilog inserter to set the function's callee saved information.

Definition at line 534 of file MachineFrameInfo.h.

void llvm::MachineFrameInfo::setCalleeSavedInfoValid ( bool  v)
inline

Definition at line 541 of file MachineFrameInfo.h.

void llvm::MachineFrameInfo::setFrameAddressIsTaken ( bool  T)
inline
void llvm::MachineFrameInfo::setFunctionContextIndex ( int  I)
inline

Definition at line 265 of file MachineFrameInfo.h.

References I.

void llvm::MachineFrameInfo::setHasCalls ( bool  V)
inline
void llvm::MachineFrameInfo::setLocalFrameMaxAlign ( unsigned  Align)
inline

setLocalFrameMaxAlign - Required alignment of the local object blob, which is the strictest alignment of any object in it.

Definition at line 319 of file MachineFrameInfo.h.

References Align().

void llvm::MachineFrameInfo::setLocalFrameSize ( int64_t  sz)
inline

setLocalFrameSize - Set the size of the local object blob.

Definition at line 312 of file MachineFrameInfo.h.

void llvm::MachineFrameInfo::setMaxCallFrameSize ( unsigned  S)
inline

Definition at line 460 of file MachineFrameInfo.h.

Referenced by llvm::PPCFrameLowering::determineFrameLayout().

void llvm::MachineFrameInfo::setObjectAlignment ( int  ObjectIdx,
unsigned  Align 
)
inline

setObjectAlignment - Change the alignment of the specified stack object.

Definition at line 368 of file MachineFrameInfo.h.

References Align(), and ensureMaxAlignment().

Referenced by emitAlignedDPRCS2Spills(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), and LowerAsSplatVectorLoad().

void llvm::MachineFrameInfo::setObjectOffset ( int  ObjectIdx,
int64_t  SPOffset 
)
inline

setObjectOffset - 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 405 of file MachineFrameInfo.h.

References isDeadObjectIndex().

Referenced by AdjustStackOffset(), and llvm::PPCFrameLowering::processFunctionBeforeFrameFinalized().

void llvm::MachineFrameInfo::setObjectSize ( int  ObjectIdx,
int64_t  Size 
)
inline

setObjectSize - Change the size of the specified stack object.

Definition at line 354 of file MachineFrameInfo.h.

void llvm::MachineFrameInfo::setOffsetAdjustment ( int  Adj)
inline
void llvm::MachineFrameInfo::setReturnAddressIsTaken ( bool  s)
inline
void llvm::MachineFrameInfo::setStackProtectorIndex ( int  I)
inline

Definition at line 260 of file MachineFrameInfo.h.

References I.

void llvm::MachineFrameInfo::setStackSize ( uint64_t  Size)
inline

setStackSize - Set the size of the stack...

Definition at line 421 of file MachineFrameInfo.h.

Referenced by llvm::PPCFrameLowering::determineFrameLayout(), llvm::Thumb1FrameLowering::emitPrologue(), and llvm::X86FrameLowering::emitPrologue().

void llvm::MachineFrameInfo::setUseLocalStackAllocationBlock ( bool  v)
inline

setUseLocalStackAllocationBlock - Set whether the local allocation blob should be allocated together or let PEI allocate the locals in it directly.

Definition at line 333 of file MachineFrameInfo.h.

Referenced by INITIALIZE_PASS().


The documentation for this class was generated from the following files: