LLVM  6.0.0svn
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"

Collaboration diagram for llvm::FunctionLoweringInfo:
Collaboration graph
[legend]

Classes

struct  LiveOutInfo
 
struct  StatepointSpillMap
 Keep track of frame indices allocated for statepoints as they could be used across basic block boundaries. More...
 

Public Types

using SwiftErrorValues = SmallVector< const Value *, 1 >
 

Public Member Functions

unsigned getOrCreateSwiftErrorVReg (const MachineBasicBlock *, const Value *)
 Get or create the swifterror value virtual register in SwiftErrorVRegDefMap for this basic block. More...
 
void setCurrentSwiftErrorVReg (const MachineBasicBlock *MBB, const Value *, unsigned)
 Set the swifterror virtual register in the SwiftErrorVRegDefMap for this basic block. More...
 
std::pair< unsigned, boolgetOrCreateSwiftErrorVRegDefAt (const Instruction *)
 Get or create the swifterror value virtual register for a def of a swifterror by an instruction. More...
 
std::pair< unsigned, boolgetOrCreateSwiftErrorVRegUseAt (const Instruction *, const MachineBasicBlock *, const Value *)
 
void set (const Function &Fn, MachineFunction &MF, SelectionDAG *DAG)
 set - Initialize this FunctionLoweringInfo with the given Function and its associated MachineFunction. More...
 
void clear ()
 clear - Clear out all the function-specific state. More...
 
bool isExportedInst (const Value *V)
 isExportedInst - Return true if the specified value is an instruction exported from its block. More...
 
unsigned CreateReg (MVT VT)
 CreateReg - Allocate a single virtual register for the given type. More...
 
unsigned CreateRegs (Type *Ty)
 CreateRegs - Allocate the appropriate number of virtual registers of the correctly promoted or expanded types. More...
 
unsigned InitializeRegForValue (const Value *V)
 
const LiveOutInfoGetLiveOutRegInfo (unsigned Reg)
 GetLiveOutRegInfo - Gets LiveOutInfo for a register, returning NULL if the register is a PHI destination and the PHI's LiveOutInfo is not valid. More...
 
const LiveOutInfoGetLiveOutRegInfo (unsigned 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. More...
 
void AddLiveOutRegInfo (unsigned Reg, unsigned NumSignBits, const KnownBits &Known)
 AddLiveOutRegInfo - Adds LiveOutInfo for a register. More...
 
void ComputePHILiveOutRegInfo (const PHINode *)
 ComputePHILiveOutRegInfo - Compute LiveOutInfo for a PHI's destination register based on the LiveOutInfo of its operands. More...
 
void InvalidatePHILiveOutRegInfo (const PHINode *PN)
 InvalidatePHILiveOutRegInfo - Invalidates a PHI's LiveOutInfo, to be called when a block is visited before all of its predecessors. More...
 
void setArgumentFrameIndex (const Argument *A, int FI)
 setArgumentFrameIndex - Record frame index for the byval argument. More...
 
int getArgumentFrameIndex (const Argument *A)
 getArgumentFrameIndex - Get frame index for the byval argument. More...
 
unsigned getCatchPadExceptionPointerVReg (const Value *CPI, const TargetRegisterClass *RC)
 

Public Attributes

const FunctionFn
 
MachineFunctionMF
 
const TargetLoweringTLI
 
MachineRegisterInfoRegInfo
 
BranchProbabilityInfoBPI
 
bool CanLowerReturn
 CanLowerReturn - true iff the function's return value can be lowered to registers. More...
 
bool SplitCSR
 True if part of the CSRs will be handled via explicit copies. More...
 
unsigned DemoteRegister
 DemoteRegister - if CanLowerReturn is false, DemoteRegister is a vreg allocated to hold a pointer to the hidden sret parameter. More...
 
DenseMap< const BasicBlock *, MachineBasicBlock * > MBBMap
 MBBMap - A mapping from LLVM basic blocks to their machine code entry. More...
 
DenseMap< std::pair< const MachineBasicBlock *, const Value * >, unsignedSwiftErrorVRegDefMap
 A map from swifterror value in a basic block to the virtual register it is currently represented by. More...
 
DenseMap< std::pair< const MachineBasicBlock *, const Value * >, unsignedSwiftErrorVRegUpwardsUse
 A list of upward exposed vreg uses that need to be satisfied by either a copy def or a phi node at the beginning of the basic block representing the predecessor(s) swifterror value. More...
 
llvm::DenseMap< PointerIntPair< const Instruction *, 1, bool >, unsignedSwiftErrorVRegDefUses
 A map from instructions that define/use a swifterror value to the virtual register that represents that def/use. More...
 
const ValueSwiftErrorArg
 The swifterror argument of the current function. More...
 
SwiftErrorValues SwiftErrorVals
 A function can only have a single swifterror argument. More...
 
DenseMap< const Value *, unsignedValueMap
 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. More...
 
DenseMap< const Value *, unsignedCatchPadExceptionPointers
 Track virtual registers created for exception pointers. More...
 
DenseMap< const Instruction *, StatepointSpillMapStatepointSpillMaps
 Maps gc.statepoint instructions to their corresponding StatepointSpillMap instances. More...
 
DenseMap< const AllocaInst *, int > StaticAllocaMap
 StaticAllocaMap - Keep track of frame indices for fixed sized allocas in the entry block. More...
 
DenseMap< const Argument *, int > ByValArgFrameIndexMap
 ByValArgFrameIndexMap - Keep track of frame indices for byval arguments. More...
 
SmallVector< MachineInstr *, 8 > ArgDbgValues
 ArgDbgValues - A list of DBG_VALUE instructions created during isel for function arguments that are inserted after scheduling is completed. More...
 
DenseMap< unsigned, unsignedRegFixups
 RegFixups - Registers which need to be replaced after isel is done. More...
 
SmallVector< unsigned, 50 > StatepointStackSlots
 StatepointStackSlots - A list of temporary stack slots (frame indices) used to spill values at a statepoint. More...
 
MachineBasicBlockMBB
 MBB - The current block. More...
 
MachineBasicBlock::iterator InsertPt
 MBB - The current insert position inside the current block. More...
 
DenseMap< const Value *, ISD::NodeTypePreferredExtendType
 Record the preferred extend type (ISD::SIGN_EXTEND or ISD::ZERO_EXTEND) for a value. More...
 
SmallPtrSet< const BasicBlock *, 4 > VisitedBBs
 VisitedBBs - The set of basic blocks visited thus far by instruction selection. More...
 
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. More...
 
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(). More...
 
unsigned ExceptionSelectorVirtReg
 

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 53 of file FunctionLoweringInfo.h.

Member Typedef Documentation

◆ SwiftErrorValues

Definition at line 93 of file FunctionLoweringInfo.h.

Member Function Documentation

◆ AddLiveOutRegInfo()

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

◆ clear()

void FunctionLoweringInfo::clear ( )

◆ ComputePHILiveOutRegInfo()

void FunctionLoweringInfo::ComputePHILiveOutRegInfo ( const PHINode PN)

◆ CreateReg()

unsigned FunctionLoweringInfo::CreateReg ( MVT  VT)

◆ CreateRegs()

unsigned FunctionLoweringInfo::CreateRegs ( Type Ty)

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 341 of file FunctionLoweringInfo.cpp.

References llvm::ComputeValueVTs(), CreateReg(), llvm::Type::getContext(), llvm::MachineFunction::getDataLayout(), llvm::TargetLoweringBase::getNumRegisters(), llvm::TargetLoweringBase::getRegisterType(), llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), MF, llvm::SmallVectorTemplateCommon< T >::size(), and TLI.

Referenced by InitializeRegForValue(), isExportedInst(), and preassignSwiftErrorRegs().

◆ 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 484 of file FunctionLoweringInfo.cpp.

References ByValArgFrameIndexMap, llvm::dbgs(), DEBUG, and I.

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

◆ getCatchPadExceptionPointerVReg()

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

◆ GetLiveOutRegInfo() [1/2]

const LiveOutInfo* llvm::FunctionLoweringInfo::GetLiveOutRegInfo ( unsigned  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 241 of file FunctionLoweringInfo.h.

References llvm::FunctionLoweringInfo::LiveOutInfo::IsValid.

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

◆ GetLiveOutRegInfo() [2/2]

const FunctionLoweringInfo::LiveOutInfo * FunctionLoweringInfo::GetLiveOutRegInfo ( unsigned  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 367 of file FunctionLoweringInfo.cpp.

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

◆ getOrCreateSwiftErrorVReg()

unsigned FunctionLoweringInfo::getOrCreateSwiftErrorVReg ( const MachineBasicBlock MBB,
const Value Val 
)

◆ getOrCreateSwiftErrorVRegDefAt()

std::pair< unsigned, bool > FunctionLoweringInfo::getOrCreateSwiftErrorVRegDefAt ( const Instruction I)

◆ getOrCreateSwiftErrorVRegUseAt()

std::pair< unsigned, bool > FunctionLoweringInfo::getOrCreateSwiftErrorVRegUseAt ( const Instruction I,
const MachineBasicBlock MBB,
const Value Val 
)

Definition at line 542 of file FunctionLoweringInfo.cpp.

References getOrCreateSwiftErrorVReg(), I, and SwiftErrorVRegDefUses.

Referenced by preassignSwiftErrorRegs().

◆ InitializeRegForValue()

unsigned llvm::FunctionLoweringInfo::InitializeRegForValue ( const Value V)
inline

◆ InvalidatePHILiveOutRegInfo()

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

◆ isExportedInst()

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

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

Definition at line 222 of file FunctionLoweringInfo.h.

References llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), CreateReg(), and CreateRegs().

Referenced by 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 82 of file FunctionLoweringInfo.cpp.

References llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, llvm::WinEHHandlerType::Alloca, assert(), llvm::BuildMI(), llvm::calculateClrEHStateNumbers(), llvm::calculateSEHStateNumbers(), llvm::calculateWinCXXEHStateNumbers(), CanLowerReturn, llvm::WinEHHandlerType::CatchObj, llvm::classifyEHPersonality(), llvm::CxxUnwindMapEntry::Cleanup, llvm::WinEHFuncInfo::ClrEHUnwindMap, llvm::ComputeValueVTs(), llvm::CoreCLR, llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFunction::CreateMachineBasicBlock(), llvm::MachineFrameInfo::CreateStackObject(), llvm::MachineFrameInfo::CreateVariableSizedObject(), llvm::WinEHFuncInfo::CxxUnwindMap, llvm::dyn_cast(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::find(), first, Fn, llvm::ISD::FrameIndex, llvm::WinEHHandlerType::FrameIndex, llvm::MCInstrInfo::get(), llvm::PointerUnion< PT1, PT2 >::get(), llvm::Function::getAttributes(), llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::getCalledValue(), llvm::Function::getCallingConv(), llvm::Function::getContext(), llvm::MachineFunction::getDataLayout(), llvm::Instruction::getDebugLoc(), llvm::MachineFunction::getFrameInfo(), llvm::TargetSubtargetInfo::getFrameLowering(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::Function::getPersonalityFn(), getPreferredExtendForValue(), llvm::DataLayout::getPrefTypeAlignment(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::GetReturnInfo(), llvm::Function::getReturnType(), llvm::TargetFrameLowering::getStackAlignment(), llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::Value::getType(), llvm::DataLayout::getTypeAllocSize(), llvm::MachineFunction::getWinEHFuncInfo(), llvm::ConstantInt::getZExtValue(), H, llvm::SEHUnwindMapEntry::Handler, llvm::WinEHHandlerType::Handler, llvm::ClrEHUnwindMapEntry::Handler, llvm::WinEHTryBlockMapEntry::HandlerArray, llvm::Function::hasPersonalityFn(), I, InitializeRegForValue(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::insert(), llvm::isAsynchronousEHPersonality(), llvm::InlineAsm::isClobber, llvm::Type::isEmptyTy(), llvm::isFuncletEHPersonality(), llvm::TargetFrameLowering::isStackRealignable(), isUsedOutsideOfDefiningBlock(), llvm::Function::isVarArg(), llvm::max(), MBB, MBBMap, MF, llvm::MSVC_CXX, PreferredExtendType, llvm::MachineFunction::push_back(), RegInfo, llvm::WinEHFuncInfo::SEHUnwindMap, llvm::MachineBasicBlock::setHasAddressTaken(), llvm::MachineFunction::setHasEHFunclets(), llvm::MachineFrameInfo::setHasMustTailInVarArgFunc(), llvm::MachineFrameInfo::setHasOpaqueSPAdjustment(), llvm::MachineFrameInfo::setHasVAStart(), llvm::MachineBasicBlock::setIsEHPad(), llvm::MachineFrameInfo::setObjectAlignment(), StaticAllocaMap, TII, TLI, llvm::WinEHFuncInfo::TryBlockMap, and llvm::Value::use_empty().

Referenced by llvm::SelectionDAGISel::runOnMachineFunction().

◆ 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 476 of file FunctionLoweringInfo.cpp.

References ByValArgFrameIndexMap.

Referenced by InvalidatePHILiveOutRegInfo().

◆ setCurrentSwiftErrorVReg()

void FunctionLoweringInfo::setCurrentSwiftErrorVReg ( const MachineBasicBlock MBB,
const Value Val,
unsigned  VReg 
)

Set the swifterror virtual register in the SwiftErrorVRegDefMap for this basic block.

Definition at line 522 of file FunctionLoweringInfo.cpp.

References SwiftErrorVRegDefMap.

Referenced by createSwiftErrorEntriesInEntryBlock(), preassignSwiftErrorRegs(), and propagateSwiftErrorVRegs().

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 165 of file FunctionLoweringInfo.h.

Referenced by clear(), and llvm::SelectionDAGISel::runOnMachineFunction().

◆ 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 161 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 62 of file FunctionLoweringInfo.h.

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

◆ CatchPadExceptionPointers

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

Track virtual registers created for exception pointers.

Definition at line 122 of file FunctionLoweringInfo.h.

Referenced by getCatchPadExceptionPointerVReg().

◆ DemoteRegister

unsigned 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 69 of file FunctionLoweringInfo.h.

◆ 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 208 of file FunctionLoweringInfo.h.

Referenced by hasExceptionPointerOrCodeUser(), and preassignSwiftErrorRegs().

◆ ExceptionSelectorVirtReg

unsigned llvm::FunctionLoweringInfo::ExceptionSelectorVirtReg

◆ Fn

const Function* llvm::FunctionLoweringInfo::Fn

◆ InsertPt

MachineBasicBlock::iterator llvm::FunctionLoweringInfo::InsertPt

◆ MBB

MachineBasicBlock* llvm::FunctionLoweringInfo::MBB

◆ MBBMap

DenseMap<const BasicBlock*, MachineBasicBlock *> llvm::FunctionLoweringInfo::MBBMap

MBBMap - A mapping from LLVM basic blocks to their machine code entry.

Definition at line 72 of file FunctionLoweringInfo.h.

Referenced by llvm::FastISel::canFoldAddIntoGEP(), clear(), llvm::FastISel::fastEmitZExtFromI1(), findUnwindDestinations(), preassignSwiftErrorRegs(), llvm::FastISel::selectOperator(), and set().

◆ MF

MachineFunction* llvm::FunctionLoweringInfo::MF

◆ OrigNumPHINodesToUpdate

unsigned llvm::FunctionLoweringInfo::OrigNumPHINodesToUpdate

◆ 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 202 of file FunctionLoweringInfo.h.

Referenced by llvm::FastISel::fastEmitZExtFromI1(), FindSplitPointForStackProtector(), preassignSwiftErrorRegs(), 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 192 of file FunctionLoweringInfo.h.

Referenced by clear(), and set().

◆ RegFixups

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

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

Definition at line 168 of file FunctionLoweringInfo.h.

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

◆ RegInfo

MachineRegisterInfo* llvm::FunctionLoweringInfo::RegInfo

Definition at line 58 of file FunctionLoweringInfo.h.

Referenced by CreateReg(), and set().

◆ SplitCSR

bool llvm::FunctionLoweringInfo::SplitCSR

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

Definition at line 65 of file FunctionLoweringInfo.h.

Referenced by llvm::SelectionDAGISel::runOnMachineFunction().

◆ StatepointSpillMaps

DenseMap<const Instruction *, StatepointSpillMap> llvm::FunctionLoweringInfo::StatepointSpillMaps

Maps gc.statepoint instructions to their corresponding StatepointSpillMap instances.

Definition at line 153 of file FunctionLoweringInfo.h.

Referenced by clear(), findPreviousSpillSlot(), and lowerStatepointMetaArgs().

◆ 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 174 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 158 of file FunctionLoweringInfo.h.

Referenced by clear(), findArgumentCopyElisionCandidates(), llvm::FastISel::getRegForValue(), processDbgDeclares(), llvm::FastISel::selectGetElementPtr(), llvm::FastISel::selectIntrinsicCall(), llvm::FastISel::selectOperator(), set(), and tryToElideArgumentCopy().

◆ SwiftErrorArg

const Value* llvm::FunctionLoweringInfo::SwiftErrorArg

The swifterror argument of the current function.

Definition at line 91 of file FunctionLoweringInfo.h.

Referenced by createSwiftErrorEntriesInEntryBlock(), preassignSwiftErrorRegs(), and setupSwiftErrorVals().

◆ SwiftErrorVals

SwiftErrorValues llvm::FunctionLoweringInfo::SwiftErrorVals

A function can only have a single swifterror argument.

And if it does have a swifterror argument, it must be the first entry in SwiftErrorVals.

Definition at line 97 of file FunctionLoweringInfo.h.

Referenced by createSwiftErrorEntriesInEntryBlock(), preassignSwiftErrorRegs(), propagateSwiftErrorVRegs(), and setupSwiftErrorVals().

◆ SwiftErrorVRegDefMap

DenseMap<std::pair<const MachineBasicBlock *, const Value *>, unsigned> llvm::FunctionLoweringInfo::SwiftErrorVRegDefMap

A map from swifterror value in a basic block to the virtual register it is currently represented by.

Definition at line 77 of file FunctionLoweringInfo.h.

Referenced by getOrCreateSwiftErrorVReg(), propagateSwiftErrorVRegs(), setCurrentSwiftErrorVReg(), and setupSwiftErrorVals().

◆ SwiftErrorVRegDefUses

llvm::DenseMap<PointerIntPair<const Instruction *, 1, bool>, unsigned> llvm::FunctionLoweringInfo::SwiftErrorVRegDefUses

A map from instructions that define/use a swifterror value to the virtual register that represents that def/use.

Definition at line 88 of file FunctionLoweringInfo.h.

Referenced by getOrCreateSwiftErrorVRegDefAt(), getOrCreateSwiftErrorVRegUseAt(), and setupSwiftErrorVals().

◆ SwiftErrorVRegUpwardsUse

DenseMap<std::pair<const MachineBasicBlock *, const Value *>, unsigned> llvm::FunctionLoweringInfo::SwiftErrorVRegUpwardsUse

A list of upward exposed vreg uses that need to be satisfied by either a copy def or a phi node at the beginning of the basic block representing the predecessor(s) swifterror value.

Definition at line 83 of file FunctionLoweringInfo.h.

Referenced by getOrCreateSwiftErrorVReg(), propagateSwiftErrorVRegs(), and setupSwiftErrorVals().

◆ TLI

const TargetLowering* llvm::FunctionLoweringInfo::TLI

◆ ValueMap

DenseMap<const Value *, unsigned> llvm::FunctionLoweringInfo::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.

Definition at line 119 of file FunctionLoweringInfo.h.

Referenced by llvm::FastISel::lookUpRegForValue(), llvm::FastISel::lowerArguments(), preassignSwiftErrorRegs(), llvm::FastISel::selectExtractValue(), and llvm::FastISel::updateValueMap().

◆ VisitedBBs

SmallPtrSet<const BasicBlock*, 4> llvm::FunctionLoweringInfo::VisitedBBs

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

Definition at line 196 of file FunctionLoweringInfo.h.

Referenced by clear(), and preassignSwiftErrorRegs().


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