LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
llvm::FunctionLoweringInfo Class Reference

FunctionLoweringInfo - This contains information that is global to a function that is used when lowering a region of the function. More...

#include "llvm/CodeGen/FunctionLoweringInfo.h"

Classes

struct  LiveOutInfo
 
struct  StatepointRelocationRecord
 Helper object to track which of three possible relocation mechanisms are used for a particular value being relocated over a statepoint. More...
 

Public Types

using StatepointSpillMapTy = DenseMap< const Value *, StatepointRelocationRecord >
 Keep track of each value which was relocated and the strategy used to relocate that value.
 

Public Member Functions

const ValuegetValueFromVirtualReg (Register Vreg)
 This method is called from TargetLowerinInfo::isSDNodeSourceOfDivergence to get the Value corresponding to the live-in virtual register.
 
void set (const Function &Fn, MachineFunction &MF, SelectionDAG *DAG)
 set - Initialize this FunctionLoweringInfo with the given Function and its associated MachineFunction.
 
void clear ()
 clear - Clear out all the function-specific state.
 
bool isExportedInst (const Value *V) const
 isExportedInst - Return true if the specified value is an instruction exported from its block.
 
MachineBasicBlockgetMBB (const BasicBlock *BB) const
 
Register CreateReg (MVT VT, bool isDivergent=false)
 CreateReg - Allocate a single virtual register for the given type.
 
Register CreateRegs (const Value *V)
 
Register CreateRegs (Type *Ty, bool isDivergent=false)
 CreateRegs - Allocate the appropriate number of virtual registers of the correctly promoted or expanded types.
 
Register InitializeRegForValue (const Value *V)
 
const LiveOutInfoGetLiveOutRegInfo (Register Reg)
 GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid.
 
const LiveOutInfoGetLiveOutRegInfo (Register Reg, unsigned BitWidth)
 GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid.
 
void AddLiveOutRegInfo (Register Reg, unsigned NumSignBits, const KnownBits &Known)
 AddLiveOutRegInfo - Adds LiveOutInfo for a register.
 
void ComputePHILiveOutRegInfo (const PHINode *)
 ComputePHILiveOutRegInfo - Compute LiveOutInfo for a PHI's destination register based on the LiveOutInfo of its operands.
 
void InvalidatePHILiveOutRegInfo (const PHINode *PN)
 InvalidatePHILiveOutRegInfo - Invalidates a PHI's LiveOutInfo, to be called when a block is visited before all of its predecessors.
 
void setArgumentFrameIndex (const Argument *A, int FI)
 setArgumentFrameIndex - Record frame index for the byval argument.
 
int getArgumentFrameIndex (const Argument *A)
 getArgumentFrameIndex - Get frame index for the byval argument.
 
Register getCatchPadExceptionPointerVReg (const Value *CPI, const TargetRegisterClass *RC)
 
void setCurrentCallSite (unsigned Site)
 Set the call site currently being processed.
 
unsigned getCurrentCallSite ()
 Get the call site currently being processed, if any. Return zero if none.
 

Public Attributes

const FunctionFn
 
MachineFunctionMF
 
const TargetLoweringTLI
 
MachineRegisterInfoRegInfo
 
BranchProbabilityInfoBPI
 
const UniformityInfoUA
 
bool CanLowerReturn
 CanLowerReturn - true iff the function's return value can be lowered to registers.
 
bool SplitCSR
 True if part of the CSRs will be handled via explicit copies.
 
Register DemoteRegister
 DemoteRegister - if CanLowerReturn is false, DemoteRegister is a vreg allocated to hold a pointer to the hidden sret parameter.
 
SmallVector< MachineBasicBlock * > MBBMap
 A mapping from LLVM basic block number to their machine block.
 
DenseMap< const Value *, RegisterValueMap
 ValueMap - Since we emit code for the function a basic block at a time, we must remember which virtual registers hold the values for cross-basic-block values.
 
DenseMap< Register, const Value * > VirtReg2Value
 VirtReg2Value map is needed by the Divergence Analysis driven instruction selection.
 
DenseMap< const Value *, RegisterCatchPadExceptionPointers
 Track virtual registers created for exception pointers.
 
DenseMap< const Instruction *, StatepointSpillMapTyStatepointRelocationMaps
 
DenseMap< const AllocaInst *, int > StaticAllocaMap
 StaticAllocaMap - Keep track of frame indices for fixed sized allocas in the entry block.
 
DenseMap< const Argument *, int > ByValArgFrameIndexMap
 ByValArgFrameIndexMap - Keep track of frame indices for byval arguments.
 
SmallVector< MachineInstr *, 8 > ArgDbgValues
 ArgDbgValues - A list of DBG_VALUE instructions created during isel for function arguments that are inserted after scheduling is completed.
 
BitVector DescribedArgs
 Bitvector with a bit set if corresponding argument is described in ArgDbgValues.
 
DenseMap< Register, RegisterRegFixups
 RegFixups - Registers which need to be replaced after isel is done.
 
DenseSet< RegisterRegsWithFixups
 
SmallVector< unsigned, 50 > StatepointStackSlots
 StatepointStackSlots - A list of temporary stack slots (frame indices) used to spill values at a statepoint.
 
MachineBasicBlockMBB
 MBB - The current block.
 
MachineBasicBlock::iterator InsertPt
 MBB - The current insert position inside the current block.
 
DenseMap< const Value *, ISD::NodeTypePreferredExtendType
 Record the preferred extend type (ISD::SIGN_EXTEND or ISD::ZERO_EXTEND) for a value.
 
SmallVector< boolVisitedBBs
 The set of basic blocks visited thus far by instruction selection.
 
std::vector< std::pair< MachineInstr *, unsigned > > PHINodesToUpdate
 PHINodesToUpdate - A list of phi instructions whose operand list will be updated after processing the current basic block.
 
unsigned OrigNumPHINodesToUpdate
 
unsigned ExceptionPointerVirtReg
 If the current MBB is a landing pad, the exception pointer and exception selector registers are copied into these virtual registers by SelectionDAGISel::PrepareEHLandingPad().
 
unsigned ExceptionSelectorVirtReg
 
unsigned CurCallSite = 0
 The current call site index being processed, if any. 0 if none.
 
SmallPtrSet< const DbgDeclareInst *, 8 > PreprocessedDbgDeclares
 Collection of dbg.declare instructions handled after argument lowering and before ISel proper.
 
SmallPtrSet< const DbgVariableRecord *, 8 > PreprocessedDVRDeclares
 

Detailed Description

FunctionLoweringInfo - This contains information that is global to a function that is used when lowering a region of the function.

Definition at line 57 of file FunctionLoweringInfo.h.

Member Typedef Documentation

◆ StatepointSpillMapTy

Keep track of each value which was relocated and the strategy used to relocate that value.

This information is required when visiting gc.relocates which may appear in following blocks.

Definition at line 126 of file FunctionLoweringInfo.h.

Member Function Documentation

◆ AddLiveOutRegInfo()

void llvm::FunctionLoweringInfo::AddLiveOutRegInfo ( Register  Reg,
unsigned  NumSignBits,
const KnownBits Known 
)
inline

◆ clear()

void FunctionLoweringInfo::clear ( )

◆ ComputePHILiveOutRegInfo()

void FunctionLoweringInfo::ComputePHILiveOutRegInfo ( const PHINode PN)

◆ CreateReg()

Register FunctionLoweringInfo::CreateReg ( MVT  VT,
bool  isDivergent = false 
)

◆ CreateRegs() [1/2]

Register FunctionLoweringInfo::CreateRegs ( const Value V)

◆ CreateRegs() [2/2]

Register FunctionLoweringInfo::CreateRegs ( Type Ty,
bool  isDivergent = false 
)

CreateRegs - Allocate the appropriate number of virtual registers of the correctly promoted or expanded types.

Assign these registers consecutive vreg numbers and return the first assigned number.

In the case that the given value has struct or array type, this function will assign registers for each member or element.

Definition at line 388 of file FunctionLoweringInfo.cpp.

References llvm::ComputeValueVTs(), CreateReg(), llvm::Type::getContext(), llvm::MachineFunction::getDataLayout(), llvm::TargetLoweringBase::getNumRegisters(), llvm::TargetLoweringBase::getRegisterType(), MF, and TLI.

◆ getArgumentFrameIndex()

int FunctionLoweringInfo::getArgumentFrameIndex ( const Argument A)

getArgumentFrameIndex - Get frame index for the byval argument.

If the argument does not have any assigned frame index then 0 is returned.

Definition at line 554 of file FunctionLoweringInfo.cpp.

References A, ByValArgFrameIndexMap, llvm::dbgs(), I, and LLVM_DEBUG.

Referenced by lowerStatepointMetaArgs(), and processDbgDeclare().

◆ getCatchPadExceptionPointerVReg()

Register FunctionLoweringInfo::getCatchPadExceptionPointerVReg ( const Value CPI,
const TargetRegisterClass RC 
)

◆ getCurrentCallSite()

unsigned llvm::FunctionLoweringInfo::getCurrentCallSite ( )
inline

Get the call site currently being processed, if any. Return zero if none.

Definition at line 296 of file FunctionLoweringInfo.h.

References CurCallSite.

◆ GetLiveOutRegInfo() [1/2]

const LiveOutInfo * llvm::FunctionLoweringInfo::GetLiveOutRegInfo ( Register  Reg)
inline

GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid.

Definition at line 230 of file FunctionLoweringInfo.h.

References llvm::FunctionLoweringInfo::LiveOutInfo::IsValid, and Reg.

Referenced by ComputePHILiveOutRegInfo(), and llvm::RegsForValue::getCopyFromRegs().

◆ GetLiveOutRegInfo() [2/2]

const FunctionLoweringInfo::LiveOutInfo * FunctionLoweringInfo::GetLiveOutRegInfo ( Register  Reg,
unsigned  BitWidth 
)

GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid.

If the register's LiveOutInfo is for a smaller bit width, it is extended to the larger bit width by zero extension. The bit width must be no smaller than the LiveOutInfo's existing bit width.

Definition at line 426 of file FunctionLoweringInfo.cpp.

References llvm::KnownBits::anyext(), llvm::BitWidth, llvm::KnownBits::getBitWidth(), llvm::FunctionLoweringInfo::LiveOutInfo::IsValid, llvm::FunctionLoweringInfo::LiveOutInfo::Known, and llvm::FunctionLoweringInfo::LiveOutInfo::NumSignBits.

◆ getMBB()

MachineBasicBlock * llvm::FunctionLoweringInfo::getMBB ( const BasicBlock BB) const
inline

◆ getValueFromVirtualReg()

const Value * FunctionLoweringInfo::getValueFromVirtualReg ( Register  Vreg)

This method is called from TargetLowerinInfo::isSDNodeSourceOfDivergence to get the Value corresponding to the live-in virtual register.

Definition at line 574 of file FunctionLoweringInfo.cpp.

References llvm::SmallVectorImpl< T >::clear(), llvm::ComputeValueVTs(), Fn, llvm::Function::getContext(), llvm::Function::getDataLayout(), llvm::TargetLoweringBase::getNumRegisters(), P, TLI, and VirtReg2Value.

◆ InitializeRegForValue()

Register FunctionLoweringInfo::InitializeRegForValue ( const Value V)

◆ InvalidatePHILiveOutRegInfo()

void llvm::FunctionLoweringInfo::InvalidatePHILiveOutRegInfo ( const PHINode PN)
inline

InvalidatePHILiveOutRegInfo - Invalidates a PHI's LiveOutInfo, to be called when a block is visited before all of its predecessors.

Definition at line 268 of file FunctionLoweringInfo.h.

References llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::ValueMap< KeyT, ValueT, Config >::find(), and Reg.

◆ isExportedInst()

bool llvm::FunctionLoweringInfo::isExportedInst ( const Value V) const
inline

isExportedInst - Return true if the specified value is an instruction exported from its block.

Definition at line 211 of file FunctionLoweringInfo.h.

References llvm::ValueMap< KeyT, ValueT, Config >::count().

Referenced by llvm::SelectionDAGBuilder::ExportFromCurrentBlock(), llvm::SelectionDAGBuilder::isExportableFromCurrentBlock(), and isFoldedOrDeadInstruction().

◆ set()

void FunctionLoweringInfo::set ( const Function Fn,
MachineFunction MF,
SelectionDAG DAG 
)

set - Initialize this FunctionLoweringInfo with the given Function and its associated MachineFunction.

Definition at line 86 of file FunctionLoweringInfo.cpp.

References assert(), llvm::BuildMI(), llvm::calculateClrEHStateNumbers(), llvm::calculateSEHStateNumbers(), llvm::calculateWasmEHInfo(), llvm::calculateWinCXXEHStateNumbers(), CanLowerReturn, llvm::TargetLowering::CanLowerReturn(), CC, llvm::classifyEHPersonality(), llvm::CxxUnwindMapEntry::Cleanup, llvm::WinEHFuncInfo::ClrEHUnwindMap, llvm::TargetLowering::ComputeConstraintToUse(), llvm::ComputeValueVTs(), llvm::CoreCLR, llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineFrameInfo::CreateStackObject(), llvm::MachineFrameInfo::CreateVariableSizedObject(), llvm::WinEHFuncInfo::CxxUnwindMap, DL, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), Fn, llvm::Function::getAttributes(), llvm::Function::getCallingConv(), llvm::Function::getContext(), llvm::MachineFunction::getDataLayout(), llvm::Function::getDataLayout(), llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::Function::getMaxBlockNumber(), getMBB(), llvm::TargetLoweringBase::getNumRegisters(), llvm::SelectionDAG::getOptLevel(), llvm::Function::getPersonalityFn(), getPreferredExtendForValue(), llvm::TargetLowering::getRegForInlineAsmConstraint(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::GetReturnInfo(), llvm::Function::getReturnType(), llvm::TargetFrameLowering::getStackAlign(), llvm::TargetFrameLowering::getStackIDForScalableVectors(), llvm::TargetLoweringBase::getStackPointerRegisterToSaveRestore(), llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::DataLayout::getTypeAllocSize(), llvm::SelectionDAG::getUniformityInfo(), llvm::MachineFunction::getWasmEHFuncInfo(), llvm::MachineFunction::getWinEHFuncInfo(), llvm::ConstantInt::getZExtValue(), H, llvm::ClrEHUnwindMapEntry::Handler, llvm::WinEHTryBlockMapEntry::HandlerArray, llvm::Function::hasPersonalityFn(), I, II, InitializeRegForValue(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::isAsynchronousEHPersonality(), llvm::InlineAsm::isClobber, llvm::isFuncletEHPersonality(), llvm::Type::isScalableTy(), llvm::TargetFrameLowering::isStackRealignable(), isUsedOutsideOfDefiningBlock(), llvm::Function::isVarArg(), MBB, MBBMap, MF, llvm::MSVC_CXX, llvm::TargetLoweringBase::needsFixedCatchObjects(), llvm::None, P, llvm::TargetLowering::ParseConstraints(), PreferredExtendType, llvm::MachineFunction::push_back(), RegInfo, llvm::WinEHFuncInfo::SEHUnwindMap, llvm::MachineBasicBlock::setAddressTakenIRBlock(), llvm::MachineFunction::setExposesReturnsTwice(), llvm::MachineFunction::setHasEHFunclets(), llvm::MachineFunction::setHasEHScopes(), llvm::MachineFunction::setHasFakeUses(), llvm::MachineFrameInfo::setHasMustTailInVarArgFunc(), llvm::MachineFrameInfo::setHasOpaqueSPAdjustment(), llvm::MachineFrameInfo::setHasVAStart(), llvm::MachineBasicBlock::setIsEHPad(), llvm::MachineFrameInfo::setObjectAlignment(), llvm::MachineFrameInfo::setStackID(), llvm::WasmEHFuncInfo::SrcToUnwindDest, StaticAllocaMap, TII, TLI, TRI, llvm::WinEHFuncInfo::TryBlockMap, UA, llvm::WasmEHFuncInfo::UnwindDestToSrcs, and llvm::Wasm_CXX.

◆ setArgumentFrameIndex()

void FunctionLoweringInfo::setArgumentFrameIndex ( const Argument A,
int  FI 
)

setArgumentFrameIndex - Record frame index for the byval argument.

This overrides previous frame index entry for this argument, if any.

Definition at line 546 of file FunctionLoweringInfo.cpp.

References A, and ByValArgFrameIndexMap.

◆ setCurrentCallSite()

void llvm::FunctionLoweringInfo::setCurrentCallSite ( unsigned  Site)
inline

Set the call site currently being processed.

Definition at line 293 of file FunctionLoweringInfo.h.

References CurCallSite.

Member Data Documentation

◆ ArgDbgValues

SmallVector<MachineInstr*, 8> llvm::FunctionLoweringInfo::ArgDbgValues

ArgDbgValues - A list of DBG_VALUE instructions created during isel for function arguments that are inserted after scheduling is completed.

Definition at line 140 of file FunctionLoweringInfo.h.

Referenced by clear().

◆ BPI

BranchProbabilityInfo* llvm::FunctionLoweringInfo::BPI

◆ ByValArgFrameIndexMap

DenseMap<const Argument*, int> llvm::FunctionLoweringInfo::ByValArgFrameIndexMap

ByValArgFrameIndexMap - Keep track of frame indices for byval arguments.

Definition at line 136 of file FunctionLoweringInfo.h.

Referenced by clear(), getArgumentFrameIndex(), and setArgumentFrameIndex().

◆ CanLowerReturn

bool llvm::FunctionLoweringInfo::CanLowerReturn

CanLowerReturn - true iff the function's return value can be lowered to registers.

Definition at line 67 of file FunctionLoweringInfo.h.

Referenced by llvm::FastISel::lowerArguments(), llvm::IRTranslator::runOnMachineFunction(), and set().

◆ CatchPadExceptionPointers

DenseMap<const Value *, Register> llvm::FunctionLoweringInfo::CatchPadExceptionPointers

Track virtual registers created for exception pointers.

Definition at line 96 of file FunctionLoweringInfo.h.

Referenced by getCatchPadExceptionPointerVReg().

◆ CurCallSite

unsigned llvm::FunctionLoweringInfo::CurCallSite = 0

The current call site index being processed, if any. 0 if none.

Definition at line 192 of file FunctionLoweringInfo.h.

Referenced by getCurrentCallSite(), and setCurrentCallSite().

◆ DemoteRegister

Register llvm::FunctionLoweringInfo::DemoteRegister

DemoteRegister - if CanLowerReturn is false, DemoteRegister is a vreg allocated to hold a pointer to the hidden sret parameter.

Definition at line 74 of file FunctionLoweringInfo.h.

◆ DescribedArgs

BitVector llvm::FunctionLoweringInfo::DescribedArgs

Bitvector with a bit set if corresponding argument is described in ArgDbgValues.

Using arg numbers according to Argument numbering.

Definition at line 144 of file FunctionLoweringInfo.h.

Referenced by clear().

◆ ExceptionPointerVirtReg

unsigned llvm::FunctionLoweringInfo::ExceptionPointerVirtReg

If the current MBB is a landing pad, the exception pointer and exception selector registers are copied into these virtual registers by SelectionDAGISel::PrepareEHLandingPad().

Definition at line 189 of file FunctionLoweringInfo.h.

◆ ExceptionSelectorVirtReg

unsigned llvm::FunctionLoweringInfo::ExceptionSelectorVirtReg

Definition at line 189 of file FunctionLoweringInfo.h.

◆ Fn

const Function* llvm::FunctionLoweringInfo::Fn

◆ InsertPt

MachineBasicBlock::iterator llvm::FunctionLoweringInfo::InsertPt

◆ MBB

MachineBasicBlock* llvm::FunctionLoweringInfo::MBB

◆ MBBMap

SmallVector<MachineBasicBlock *> llvm::FunctionLoweringInfo::MBBMap

A mapping from LLVM basic block number to their machine block.

Definition at line 77 of file FunctionLoweringInfo.h.

Referenced by clear(), getMBB(), llvm::IRTranslator::runOnMachineFunction(), and set().

◆ MF

MachineFunction* llvm::FunctionLoweringInfo::MF

◆ OrigNumPHINodesToUpdate

unsigned llvm::FunctionLoweringInfo::OrigNumPHINodesToUpdate

Definition at line 184 of file FunctionLoweringInfo.h.

Referenced by llvm::FastISel::selectInstruction().

◆ PHINodesToUpdate

std::vector<std::pair<MachineInstr*, unsigned> > llvm::FunctionLoweringInfo::PHINodesToUpdate

PHINodesToUpdate - A list of phi instructions whose operand list will be updated after processing the current basic block.

TODO: This isn't per-function state, it's per-basic-block state. But there's no other convenient place for it to live right now.

Definition at line 183 of file FunctionLoweringInfo.h.

Referenced by isRegUsedByPhiNodes(), and llvm::FastISel::selectInstruction().

◆ PreferredExtendType

DenseMap<const Value *, ISD::NodeType> llvm::FunctionLoweringInfo::PreferredExtendType

Record the preferred extend type (ISD::SIGN_EXTEND or ISD::ZERO_EXTEND) for a value.

Definition at line 173 of file FunctionLoweringInfo.h.

Referenced by clear(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), and set().

◆ PreprocessedDbgDeclares

SmallPtrSet<const DbgDeclareInst *, 8> llvm::FunctionLoweringInfo::PreprocessedDbgDeclares

Collection of dbg.declare instructions handled after argument lowering and before ISel proper.

Definition at line 196 of file FunctionLoweringInfo.h.

Referenced by clear(), processDbgDeclares(), and llvm::FastISel::selectIntrinsicCall().

◆ PreprocessedDVRDeclares

SmallPtrSet<const DbgVariableRecord *, 8> llvm::FunctionLoweringInfo::PreprocessedDVRDeclares

◆ RegFixups

DenseMap<Register, Register> llvm::FunctionLoweringInfo::RegFixups

RegFixups - Registers which need to be replaced after isel is done.

Definition at line 147 of file FunctionLoweringInfo.h.

Referenced by clear(), and llvm::FastISel::updateValueMap().

◆ RegInfo

MachineRegisterInfo* llvm::FunctionLoweringInfo::RegInfo

◆ RegsWithFixups

DenseSet<Register> llvm::FunctionLoweringInfo::RegsWithFixups

◆ SplitCSR

bool llvm::FunctionLoweringInfo::SplitCSR

True if part of the CSRs will be handled via explicit copies.

Definition at line 70 of file FunctionLoweringInfo.h.

◆ StatepointRelocationMaps

DenseMap<const Instruction *, StatepointSpillMapTy> llvm::FunctionLoweringInfo::StatepointRelocationMaps

◆ StatepointStackSlots

SmallVector<unsigned, 50> llvm::FunctionLoweringInfo::StatepointStackSlots

StatepointStackSlots - A list of temporary stack slots (frame indices) used to spill values at a statepoint.

We store them here to enable reuse of the same stack slots across different statepoints in different basic blocks.

Definition at line 155 of file FunctionLoweringInfo.h.

Referenced by llvm::StatepointLoweringState::allocateStackSlot(), clear(), reservePreviousStackSlotForValue(), and llvm::StatepointLoweringState::startNewStatepoint().

◆ StaticAllocaMap

DenseMap<const AllocaInst*, int> llvm::FunctionLoweringInfo::StaticAllocaMap

StaticAllocaMap - Keep track of frame indices for fixed sized allocas in the entry block.

This allows the allocas to be efficiently referenced anywhere in the function.

Definition at line 133 of file FunctionLoweringInfo.h.

Referenced by clear(), findArgumentCopyElisionCandidates(), llvm::FastISel::getRegForValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::SelectionDAGBuilder::handleDebugValue(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), processDbgDeclare(), llvm::FastISel::selectOperator(), set(), and tryToElideArgumentCopy().

◆ TLI

const TargetLowering* llvm::FunctionLoweringInfo::TLI

◆ UA

const UniformityInfo* llvm::FunctionLoweringInfo::UA

Definition at line 64 of file FunctionLoweringInfo.h.

Referenced by CreateRegs(), and set().

◆ ValueMap

DenseMap<const Value *, Register> llvm::FunctionLoweringInfo::ValueMap

◆ VirtReg2Value

DenseMap<Register, const Value*> llvm::FunctionLoweringInfo::VirtReg2Value

VirtReg2Value map is needed by the Divergence Analysis driven instruction selection.

It is reverted ValueMap. It is computed in lazy style - on demand. It is used to get the Value corresponding to the live in virtual register and is called from the TargetLowerinInfo::isSDNodeSourceOfDivergence.

Definition at line 89 of file FunctionLoweringInfo.h.

Referenced by clear(), getValueFromVirtualReg(), and InitializeRegForValue().

◆ VisitedBBs

SmallVector<bool> llvm::FunctionLoweringInfo::VisitedBBs

The set of basic blocks visited thus far by instruction selection.

Indexed by basic block number.

Definition at line 177 of file FunctionLoweringInfo.h.

Referenced by clear().


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