LLVM 20.0.0git
|
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 Value * | getValueFromVirtualReg (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. | |
MachineBasicBlock * | getMBB (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 LiveOutInfo * | GetLiveOutRegInfo (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 LiveOutInfo * | 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. | |
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 Function * | Fn |
MachineFunction * | MF |
const TargetLowering * | TLI |
MachineRegisterInfo * | RegInfo |
BranchProbabilityInfo * | BPI |
const UniformityInfo * | UA |
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 *, Register > | ValueMap |
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 *, Register > | CatchPadExceptionPointers |
Track virtual registers created for exception pointers. | |
DenseMap< const Instruction *, StatepointSpillMapTy > | StatepointRelocationMaps |
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, Register > | RegFixups |
RegFixups - Registers which need to be replaced after isel is done. | |
DenseSet< Register > | RegsWithFixups |
SmallVector< unsigned, 50 > | StatepointStackSlots |
StatepointStackSlots - A list of temporary stack slots (frame indices) used to spill values at a statepoint. | |
MachineBasicBlock * | MBB |
MBB - The current block. | |
MachineBasicBlock::iterator | InsertPt |
MBB - The current insert position inside the current block. | |
DenseMap< const Value *, ISD::NodeType > | PreferredExtendType |
Record the preferred extend type (ISD::SIGN_EXTEND or ISD::ZERO_EXTEND) for a value. | |
SmallVector< bool > | VisitedBBs |
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 |
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.
using llvm::FunctionLoweringInfo::StatepointSpillMapTy = DenseMap<const Value *, StatepointRelocationRecord> |
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.
|
inline |
AddLiveOutRegInfo - Adds LiveOutInfo for a register.
Definition at line 249 of file FunctionLoweringInfo.h.
References llvm::KnownBits::isUnknown(), llvm::FunctionLoweringInfo::LiveOutInfo::Known, llvm::FunctionLoweringInfo::LiveOutInfo::NumSignBits, llvm::KnownBits::One, Reg, and llvm::KnownBits::Zero.
void FunctionLoweringInfo::clear | ( | ) |
clear - Clear out all the function-specific state.
This returns this FunctionLoweringInfo to an empty state, ready to be used for a different function.
Definition at line 348 of file FunctionLoweringInfo.cpp.
References ArgDbgValues, ByValArgFrameIndexMap, llvm::BitVector::clear(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::clear(), llvm::SmallVectorImpl< T >::clear(), llvm::ValueMap< KeyT, ValueT, Config >::clear(), DescribedArgs, MBBMap, PreferredExtendType, PreprocessedDbgDeclares, PreprocessedDVRDeclares, RegFixups, RegsWithFixups, StatepointRelocationMaps, StatepointStackSlots, StaticAllocaMap, VirtReg2Value, and VisitedBBs.
ComputePHILiveOutRegInfo - Compute LiveOutInfo for a PHI's destination register based on the LiveOutInfo of its operands.
Definition at line 435 of file FunctionLoweringInfo.cpp.
References assert(), llvm::BitWidth, llvm::ComputeValueVTs(), llvm::ValueMap< KeyT, ValueT, Config >::count(), llvm::ValueMap< KeyT, ValueT, Config >::end(), llvm::ValueMap< KeyT, ValueT, Config >::find(), llvm::APInt::getBitWidth(), llvm::Value::getContext(), llvm::MachineFunction::getDataLayout(), llvm::PHINode::getIncomingValue(), GetLiveOutRegInfo(), llvm::PHINode::getNumIncomingValues(), llvm::TargetLoweringBase::getNumRegisters(), llvm::APInt::getNumSignBits(), llvm::TargetLoweringBase::getRegisterType(), llvm::EVT::getSizeInBits(), llvm::Value::getType(), llvm::KnownBits::intersectWith(), llvm::Type::isIntegerTy(), llvm::FunctionLoweringInfo::LiveOutInfo::IsValid, llvm::Type::isVectorTy(), llvm::Register::isVirtual(), llvm::FunctionLoweringInfo::LiveOutInfo::Known, llvm::KnownBits::makeConstant(), MF, llvm::FunctionLoweringInfo::LiveOutInfo::NumSignBits, llvm::KnownBits::One, llvm::APInt::sext(), llvm::TargetLoweringBase::signExtendConstant(), llvm::SmallVectorBase< Size_T >::size(), TLI, llvm::KnownBits::Zero, and llvm::APInt::zext().
CreateReg - Allocate a single virtual register for the given type.
Definition at line 368 of file FunctionLoweringInfo.cpp.
References llvm::MachineRegisterInfo::createVirtualRegister(), llvm::TargetLoweringBase::getRegClassFor(), RegInfo, and TLI.
Referenced by CreateRegs(), llvm::SelectionDAGBuilder::visitBitTestHeader(), and llvm::SelectionDAGBuilder::visitJumpTableHeader().
Definition at line 396 of file FunctionLoweringInfo.cpp.
References CreateRegs(), llvm::GenericUniformityInfo< ContextT >::isDivergent(), MF, llvm::TargetLoweringBase::requiresUniformRegister(), TLI, and UA.
Referenced by CreateRegs(), InitializeRegForValue(), llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(), and llvm::SelectionDAGBuilder::LowerStatepoint().
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 379 of file FunctionLoweringInfo.cpp.
References llvm::ComputeValueVTs(), CreateReg(), llvm::Type::getContext(), llvm::MachineFunction::getDataLayout(), llvm::TargetLoweringBase::getNumRegisters(), llvm::TargetLoweringBase::getRegisterType(), MF, and TLI.
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 545 of file FunctionLoweringInfo.cpp.
References A, ByValArgFrameIndexMap, llvm::dbgs(), I, and LLVM_DEBUG.
Referenced by lowerStatepointMetaArgs(), and processDbgDeclare().
Register FunctionLoweringInfo::getCatchPadExceptionPointerVReg | ( | const Value * | CPI, |
const TargetRegisterClass * | RC | ||
) |
Definition at line 553 of file FunctionLoweringInfo.cpp.
References assert(), CatchPadExceptionPointers, llvm::MachineFunction::getRegInfo(), I, MF, and MRI.
|
inline |
Get the call site currently being processed, if any. Return zero if none.
Definition at line 296 of file FunctionLoweringInfo.h.
References CurCallSite.
|
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().
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 417 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.
|
inline |
Definition at line 215 of file FunctionLoweringInfo.h.
References assert(), llvm::BasicBlock::getNumber(), and MBBMap.
Referenced by llvm::FastISel::canFoldAddIntoGEP(), findUnwindDestinations(), findWasmUnwindDestinations(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::FastISel::selectOperator(), and set().
This method is called from TargetLowerinInfo::isSDNodeSourceOfDivergence to get the Value corresponding to the live-in virtual register.
Definition at line 565 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.
Referenced by llvm::SITargetLowering::isSDNodeSourceOfDivergence().
Definition at line 401 of file FunctionLoweringInfo.cpp.
References assert(), CreateRegs(), and VirtReg2Value.
Referenced by llvm::SelectionDAGBuilder::ExportFromCurrentBlock(), llvm::FastISel::getRegForValue(), llvm::SelectionDAGBuilder::getValueImpl(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::selectExtractValue(), and set().
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 - 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().
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::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 - Record frame index for the byval argument.
This overrides previous frame index entry for this argument, if any.
Definition at line 537 of file FunctionLoweringInfo.cpp.
References A, and ByValArgFrameIndexMap.
|
inline |
Set the call site currently being processed.
Definition at line 293 of file FunctionLoweringInfo.h.
References CurCallSite.
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().
BranchProbabilityInfo* llvm::FunctionLoweringInfo::BPI |
Definition at line 63 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::fastEmitBranch(), findUnwindDestinations(), llvm::FastISel::finishCondBranch(), getBranchHint(), llvm::IRTranslator::runOnMachineFunction(), and llvm::SelectionDAGBuilder::shouldKeepJumpConditionsTogether().
ByValArgFrameIndexMap - Keep track of frame indices for byval arguments.
Definition at line 136 of file FunctionLoweringInfo.h.
Referenced by clear(), getArgumentFrameIndex(), and setArgumentFrameIndex().
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::AMDGPUCallLowering::lowerFormalArguments(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::X86CallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::X86CallLowering::lowerReturn(), llvm::AArch64CallLowering::lowerReturn(), llvm::IRTranslator::runOnMachineFunction(), and set().
Track virtual registers created for exception pointers.
Definition at line 96 of file FunctionLoweringInfo.h.
Referenced by getCatchPadExceptionPointerVReg().
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().
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.
Referenced by llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::AMDGPUCallLowering::lowerFormalArguments(), llvm::AArch64CallLowering::lowerFormalArguments(), llvm::X86CallLowering::lowerFormalArguments(), llvm::AMDGPUCallLowering::lowerReturn(), llvm::X86CallLowering::lowerReturn(), and llvm::AArch64CallLowering::lowerReturn().
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().
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.
unsigned llvm::FunctionLoweringInfo::ExceptionSelectorVirtReg |
Definition at line 189 of file FunctionLoweringInfo.h.
Definition at line 59 of file FunctionLoweringInfo.h.
Referenced by llvm::AArch64::createFastISel(), llvm::FastISel::fastEmit_ri_(), findArgumentCopyElisionCandidates(), findUnwindDestinations(), getBranchHint(), getValueFromVirtualReg(), llvm::FastISel::lowerArguments(), processDbgDeclares(), llvm::FastISel::selectExtractValue(), and set().
MachineBasicBlock::iterator llvm::FunctionLoweringInfo::InsertPt |
MBB - The current insert position inside the current block.
Definition at line 161 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::constrainOperandRegClass(), llvm::FastISel::enterLocalValueArea(), llvm::FastISel::fastEmitInst_(), llvm::FastISel::fastEmitInst_extractsubreg(), llvm::FastISel::fastEmitInst_f(), llvm::FastISel::fastEmitInst_i(), llvm::FastISel::fastEmitInst_r(), llvm::FastISel::fastEmitInst_ri(), llvm::FastISel::fastEmitInst_rii(), llvm::FastISel::fastEmitInst_rr(), llvm::FastISel::fastEmitInst_rri(), llvm::FastISel::fastEmitInst_rrr(), llvm::FastISel::handleDbgInfo(), llvm::FastISel::leaveLocalValueArea(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), llvm::FastISel::recomputeInsertPt(), llvm::FastISel::selectCall(), llvm::FastISel::selectFreeze(), llvm::FastISel::selectInstruction(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectStackmap(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), and llvm::FastISel::tryToFoldLoad().
MachineBasicBlock* llvm::FunctionLoweringInfo::MBB |
MBB - The current block.
Definition at line 158 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::canFoldAddIntoGEP(), llvm::FastISel::constrainOperandRegClass(), llvm::FastISel::fastEmitBranch(), llvm::FastISel::fastEmitInst_(), llvm::FastISel::fastEmitInst_extractsubreg(), llvm::FastISel::fastEmitInst_f(), llvm::FastISel::fastEmitInst_i(), llvm::FastISel::fastEmitInst_r(), llvm::FastISel::fastEmitInst_ri(), llvm::FastISel::fastEmitInst_rii(), llvm::FastISel::fastEmitInst_rr(), llvm::FastISel::fastEmitInst_rri(), llvm::FastISel::fastEmitInst_rrr(), llvm::FastISel::finishCondBranch(), getBranchHint(), llvm::FastISel::handleDbgInfo(), llvm::FastISel::leaveLocalValueArea(), llvm::SelectionDAGBuilder::LowerCallTo(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), llvm::FastISel::recomputeInsertPt(), llvm::FastISel::selectCall(), llvm::FastISel::selectFreeze(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), set(), llvm::SelectionDAG::shouldOptForSize(), llvm::FastISel::startNewBlock(), and llvm::FastISel::tryToFoldLoad().
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().
MachineFunction* llvm::FunctionLoweringInfo::MF |
Definition at line 60 of file FunctionLoweringInfo.h.
Referenced by ComputePHILiveOutRegInfo(), llvm::FastISel::constrainOperandRegClass(), llvm::ARM::createFastISel(), llvm::PPC::createFastISel(), llvm::MipsTargetLowering::createFastISel(), llvm::FastISel::createMachineMemOperandFor(), CreateRegs(), getCatchPadExceptionPointerVReg(), llvm::SITargetLowering::isSDNodeSourceOfDivergence(), llvm::FastISel::lowerCallTo(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), processDbgDeclare(), processIfEntryValueDbgDeclare(), llvm::IRTranslator::runOnMachineFunction(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), set(), and tryToElideArgumentCopy().
unsigned llvm::FunctionLoweringInfo::OrigNumPHINodesToUpdate |
Definition at line 184 of file FunctionLoweringInfo.h.
Referenced by llvm::FastISel::selectInstruction().
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().
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().
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().
SmallPtrSet<const DbgVariableRecord *, 8> llvm::FunctionLoweringInfo::PreprocessedDVRDeclares |
Definition at line 197 of file FunctionLoweringInfo.h.
Referenced by clear(), llvm::FastISel::handleDbgInfo(), processDbgDeclares(), and llvm::SelectionDAGBuilder::visitDbgInfo().
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().
MachineRegisterInfo* llvm::FunctionLoweringInfo::RegInfo |
Definition at line 62 of file FunctionLoweringInfo.h.
Referenced by CreateReg(), llvm::FastISel::lowerDbgValue(), processIfEntryValueDbgDeclare(), and set().
Definition at line 149 of file FunctionLoweringInfo.h.
Referenced by clear(), llvm::FastISel::tryToFoldLoad(), and llvm::FastISel::updateValueMap().
bool llvm::FunctionLoweringInfo::SplitCSR |
True if part of the CSRs will be handled via explicit copies.
Definition at line 70 of file FunctionLoweringInfo.h.
DenseMap<const Instruction *, StatepointSpillMapTy> llvm::FunctionLoweringInfo::StatepointRelocationMaps |
Definition at line 128 of file FunctionLoweringInfo.h.
Referenced by clear(), findPreviousSpillSlot(), and llvm::SelectionDAGBuilder::LowerAsSTATEPOINT().
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().
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().
const TargetLowering* llvm::FunctionLoweringInfo::TLI |
Definition at line 61 of file FunctionLoweringInfo.h.
Referenced by ComputePHILiveOutRegInfo(), CreateReg(), CreateRegs(), getValueFromVirtualReg(), and set().
const UniformityInfo* llvm::FunctionLoweringInfo::UA |
Definition at line 64 of file FunctionLoweringInfo.h.
Referenced by CreateRegs(), and set().
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.
Definition at line 82 of file FunctionLoweringInfo.h.
Referenced by llvm::SelectionDAGBuilder::CopyToExportRegsIfNeeded(), llvm::SelectionDAGBuilder::getCopyFromRegs(), llvm::SelectionDAGBuilder::handleDebugValue(), llvm::FastISel::lookUpRegForValue(), llvm::FastISel::lowerArguments(), llvm::SelectionDAGBuilder::LowerStatepoint(), processIfEntryValueDbgDeclare(), llvm::FastISel::selectExtractValue(), and llvm::FastISel::updateValueMap().
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().
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().