LLVM: llvm::LLVMContextImpl Class Reference (original) (raw)

#include "[IR/LLVMContextImpl.h](LLVMContextImpl%5F8h%5Fsource.html)"

Public Types
using ArrayConstantsTy = ConstantUniqueMap<ConstantArray>
using StructConstantsTy = ConstantUniqueMap<ConstantStruct>
using VectorConstantsTy = ConstantUniqueMap<ConstantVector>
using FunctionTypeSet = DenseSet<FunctionType *, FunctionTypeKeyInfo>
using StructTypeSet = DenseSet<StructType *, AnonStructTypeKeyInfo>
using TargetExtTypeSet = DenseSet<TargetExtType *, TargetExtTypeKeyInfo>
using ValueHandlesTy = DenseMap<Value *, ValueHandleBase *>
ValueHandles - This map keeps track of all of the value handles that are watching a Value*.
Public Member Functions
StringMapEntry< uint32_t > * getOrInsertBundleTag (StringRef Tag)
void getOperandBundleTags (SmallVectorImpl< StringRef > &Tags) const
uint32_t getOperandBundleTagID (StringRef Tag) const
SyncScope::ID getOrInsertSyncScopeID (StringRef SSN)
getOrInsertSyncScopeID - Maps synchronization scope name to synchronization scope ID.
void getSyncScopeNames (SmallVectorImpl< StringRef > &SSNs) const
getSyncScopeNames - Populates client supplied SmallVector with synchronization scope names registered with LLVMContext.
std::optional< StringRef > getSyncScopeName (SyncScope::ID Id) const
getSyncScopeName - Returns the name of a SyncScope::ID registered with LLVMContext, if any.
LLVMContextImpl (LLVMContext &C)
~LLVMContextImpl ()
OptPassGate & getOptPassGate () const
Access the object which can disable optional passes and individual optimizations at compile time.
void setOptPassGate (OptPassGate &)
Set the object which can disable optional passes and individual optimizations at compile time.
void setTrailingDbgRecords (BasicBlock *B, DbgMarker *M)
DbgMarker * getTrailingDbgRecords (BasicBlock *B)
void deleteTrailingDbgRecords (BasicBlock *B)
Public Attributes
SmallPtrSet< Module *, 4 > OwnedModules
OwnedModules - The set of modules instantiated in this context, and which will be automatically deleted if this context is deleted.
DenseMap< Module *, unsigned > MachineFunctionNums
MachineFunctionNums - Keep the next available unique number available for a MachineFunction in given module.
std::unique_ptr< remarks::RemarkStreamer > MainRemarkStreamer
The main remark streamer used by all the other streamers (e.g.
std::unique_ptr< DiagnosticHandler > DiagHandler
bool RespectDiagnosticFilters = false
bool DiagnosticsHotnessRequested = false
std::optional< uint64_t > DiagnosticsHotnessThreshold = 0
The minimum hotness value a diagnostic needs in order to be included in optimization diagnostics.
std::optional< uint32_t > DiagnosticsMisExpectTolerance = 0
The percentage of difference between profiling branch weights and llvm.expect branch weights to tolerate when emiting MisExpect diagnostics.
bool MisExpectWarningRequested = false
std::unique_ptr< LLVMRemarkStreamer > LLVMRS
The specialized remark streamer used by LLVM's OptimizationRemarkEmitter.
LLVMContext::YieldCallbackTy YieldCallback = nullptr
void * YieldOpaqueHandle = nullptr
DenseMap< const Value *, ValueName * > ValueNames
DenseMap< unsigned, std::unique_ptr< ConstantInt > > IntZeroConstants
DenseMap< unsigned, std::unique_ptr< ConstantInt > > IntOneConstants
DenseMap< APInt, std::unique_ptr< ConstantInt > > IntConstants
DenseMap< std::pair< ElementCount, APInt >, std::unique_ptr< ConstantInt > > IntSplatConstants
DenseMap< APFloat, std::unique_ptr< ConstantFP > > FPConstants
DenseMap< std::pair< ElementCount, APFloat >, std::unique_ptr< ConstantFP > > FPSplatConstants
FoldingSet< AttributeImpl > AttrsSet
FoldingSet< AttributeListImpl > AttrsLists
FoldingSet< AttributeSetNode > AttrsSetNodes
StringMap< MDString, BumpPtrAllocator > MDStringCache
DenseMap< Value *, ValueAsMetadata * > ValuesAsMetadata
DenseMap< Metadata *, MetadataAsValue * > MetadataAsValues
DenseSet< DIArgList *, DIArgListInfo > DIArgLists
std::optional< DenseMap< const MDString *, DICompositeType * > > DITypeMap
std::vector< MDNode * > DistinctMDNodes
std::vector< ConstantRangeListAttributeImpl * > ConstantRangeListAttributes
DenseMap< Type *, std::unique_ptr< ConstantAggregateZero > > CAZConstants
ArrayConstantsTy ArrayConstants
StructConstantsTy StructConstants
VectorConstantsTy VectorConstants
DenseMap< PointerType *, std::unique_ptr< ConstantPointerNull > > CPNConstants
DenseMap< TargetExtType *, std::unique_ptr< ConstantTargetNone > > CTNConstants
DenseMap< Type *, std::unique_ptr< UndefValue > > UVConstants
DenseMap< Type *, std::unique_ptr< PoisonValue > > PVConstants
StringMap< std::unique_ptr< ConstantDataSequential > > CDSConstants
DenseMap< const BasicBlock *, BlockAddress * > BlockAddresses
DenseMap< const GlobalValue *, DSOLocalEquivalent * > DSOLocalEquivalents
DenseMap< const GlobalValue *, NoCFIValue * > NoCFIValues
ConstantUniqueMap< ConstantPtrAuth > ConstantPtrAuths
ConstantUniqueMap< ConstantExpr > ExprConstants
ConstantUniqueMap< InlineAsm > InlineAsms
ConstantInt * TheTrueVal = nullptr
ConstantInt * TheFalseVal = nullptr
Type VoidTy
Type LabelTy
Type HalfTy
Type BFloatTy
Type FloatTy
Type DoubleTy
Type MetadataTy
Type TokenTy
Type X86_FP80Ty
Type FP128Ty
Type PPC_FP128Ty
Type X86_AMXTy
IntegerType Int1Ty
IntegerType Int8Ty
IntegerType Int16Ty
IntegerType Int32Ty
IntegerType Int64Ty
IntegerType Int128Ty
std::unique_ptr< ConstantTokenNone > TheNoneToken
BumpPtrAllocator Alloc
UniqueStringSaver Saver {Alloc}
SpecificBumpPtrAllocator< ConstantRangeAttributeImpl > ConstantRangeAttributeAlloc
DenseMap< unsigned, IntegerType * > IntegerTypes
FunctionTypeSet FunctionTypes
StructTypeSet AnonStructTypes
StringMap< StructType * > NamedStructTypes
unsigned NamedStructTypesUniqueID = 0
TargetExtTypeSet TargetExtTypes
DenseMap< std::pair< Type *, uint64_t >, ArrayType * > ArrayTypes
DenseMap< std::pair< Type *, ElementCount >, VectorType * > VectorTypes
PointerType * AS0PointerType = nullptr
DenseMap< unsigned, PointerType * > PointerTypes
DenseMap< std::pair< Type *, unsigned >, TypedPointerType * > ASTypedPointerTypes
ValueHandlesTy ValueHandles
StringMap< unsigned > CustomMDKindNames
CustomMDKindNames - Map to hold the metadata string to ID mapping.
DenseMap< const Value *, MDAttachments > ValueMetadata
Collection of metadata used in this context.
DenseMap< DIAssignID *, SmallVector< Instruction *, 1 > > AssignmentIDToInstrs
Map DIAssignID -> Instructions with that attachment.
DenseMap< const GlobalObject *, StringRef > GlobalObjectSections
Collection of per-GlobalObject sections used in this context.
DenseMap< const GlobalValue *, StringRef > GlobalValuePartitions
Collection of per-GlobalValue partitions used in this context.
DenseMap< const GlobalValue *, GlobalValue::SanitizerMetadata > GlobalValueSanitizerMetadata
DenseMap< std::pair< const char *, unsigned >, unsigned > DiscriminatorTable
DiscriminatorTable - This table maps file:line locations to an integer representing the next DWARF path discriminator to assign to instructions in different blocks at the same location.
StringMap< uint32_t > BundleTagCache
A set of interned tags for operand bundles.
StringMap< SyncScope::ID > SSC
A set of interned synchronization scopes.
DenseMap< const Function *, std::string > GCNames
Maintain the GC name for each function.
bool DiscardValueNames = false
Flag to indicate if Value (other than GlobalValue) retains their name or not.
OptPassGate * OPG = nullptr
SmallDenseMap< BasicBlock *, DbgMarker * > TrailingDbgRecords
Mapping of blocks to collections of "trailing" DbgVariableRecords.
std::string DefaultTargetCPU
std::string DefaultTargetFeatures
uint64_t NextAtomGroup = 1
The next available source atom group number.

Definition at line 1620 of file LLVMContextImpl.h.

ArrayConstantsTy

FunctionTypeSet

StructConstantsTy

StructTypeSet

TargetExtTypeSet

ValueHandlesTy

ValueHandles - This map keeps track of all of the value handles that are watching a Value*.

The Value::HasValueHandle bit is used to know whether or not a value has an entry in this map.

Definition at line 1780 of file LLVMContextImpl.h.

VectorConstantsTy

Definition at line 31 of file LLVMContextImpl.cpp.

References BFloatTy, llvm::CallingConv::C, DiagHandler, DoubleTy, DoubleTyID, FloatTy, FloatTyID, FP128Ty, HalfTy, Int128Ty, Int16Ty, Int1Ty, Int32Ty, Int64Ty, Int8Ty, LabelTy, MetadataTy, PPC_FP128Ty, TokenTy, VoidTy, X86_AMXTy, and X86_FP80Ty.

~LLVMContextImpl()

LLVMContextImpl::~LLVMContextImpl ( )

Definition at line 42 of file LLVMContextImpl.cpp.

References ArrayConstants, assert(), AttrsSetNodes, CAZConstants, CDSConstants, ConstantPtrAuths, ConstantRangeListAttributes, CPNConstants, CTNConstants, DIArgLists, DistinctMDNodes, ExprConstants, FPConstants, FPSplatConstants, I, InlineAsms, IntConstants, IntOneConstants, IntSplatConstants, IntZeroConstants, MetadataAsValues, OwnedModules, llvm::SmallVectorTemplateBase< T, bool >::push_back(), PVConstants, llvm::SmallVectorImpl< T >::reserve(), StructConstants, TrailingDbgRecords, UVConstants, ValueMetadata, ValuesAsMetadata, and VectorConstants.

deleteTrailingDbgRecords()

void llvm::LLVMContextImpl::deleteTrailingDbgRecords ( BasicBlock * B) inline

getOperandBundleTagID()

getOperandBundleTags()

getOptPassGate()

OptPassGate & LLVMContextImpl::getOptPassGate ( ) const

getOrInsertBundleTag()

getOrInsertSyncScopeID()

getOrInsertSyncScopeID - Maps synchronization scope name to synchronization scope ID.

Every synchronization scope registered with LLVMContext has unique ID except pre-defined ones.

Definition at line 202 of file LLVMContextImpl.cpp.

References assert(), and SSC.

getSyncScopeName()

getSyncScopeNames()

getTrailingDbgRecords()

setOptPassGate()

void LLVMContextImpl::setOptPassGate ( OptPassGate & OPG )

Set the object which can disable optional passes and individual optimizations at compile time.

The lifetime of the object must be guaranteed to extend as long as the LLVMContext is used by compilation.

Definition at line 234 of file LLVMContextImpl.cpp.

References OPG.

setTrailingDbgRecords()

Alloc

AnonStructTypes

StructTypeSet llvm::LLVMContextImpl::AnonStructTypes

ArrayConstants

ArrayConstantsTy llvm::LLVMContextImpl::ArrayConstants

ArrayTypes

AS0PointerType

PointerType* llvm::LLVMContextImpl::AS0PointerType = nullptr

AssignmentIDToInstrs

Map DIAssignID -> Instructions with that attachment.

Managed by Instruction via Instruction::updateDIAssignIDMapping. Query using the at:: functions defined in DebugInfo.h.

Definition at line 1792 of file LLVMContextImpl.h.

ASTypedPointerTypes

AttrsLists

AttrsSet

AttrsSetNodes

BFloatTy

Type llvm::LLVMContextImpl::BFloatTy

BlockAddresses

BundleTagCache

CAZConstants

CDSConstants

ConstantPtrAuths

ConstantRangeAttributeAlloc

ConstantRangeListAttributes

CPNConstants

CTNConstants

CustomMDKindNames

CustomMDKindNames - Map to hold the metadata string to ID mapping.

Definition at line 1784 of file LLVMContextImpl.h.

DefaultTargetCPU

std::string llvm::LLVMContextImpl::DefaultTargetCPU

DefaultTargetFeatures

std::string llvm::LLVMContextImpl::DefaultTargetFeatures

DiagHandler

DiagnosticsHotnessRequested

bool llvm::LLVMContextImpl::DiagnosticsHotnessRequested = false

DiagnosticsHotnessThreshold

std::optional<uint64_t> llvm::LLVMContextImpl::DiagnosticsHotnessThreshold = 0

The minimum hotness value a diagnostic needs in order to be included in optimization diagnostics.

The threshold is an Optional value, which maps to one of the 3 states: 1). 0 => threshold disabled. All emarks will be printed. 2). positive int => manual threshold by user. Remarks with hotness exceed threshold will be printed. 3). None => 'auto' threshold by user. The actual value is not available at command line, but will be synced with hotness threhold from profile summary during compilation.

State 1 and 2 are considered as terminal states. State transition is only allowed from 3 to 2, when the threshold is first synced with profile summary. This ensures that the threshold is set only once and stays constant.

If threshold option is not specified, it is disabled (0) by default.

Definition at line 1656 of file LLVMContextImpl.h.

DiagnosticsMisExpectTolerance

std::optional<uint32_t> llvm::LLVMContextImpl::DiagnosticsMisExpectTolerance = 0

The percentage of difference between profiling branch weights and llvm.expect branch weights to tolerate when emiting MisExpect diagnostics.

Definition at line 1660 of file LLVMContextImpl.h.

DIArgLists

DiscardValueNames

bool llvm::LLVMContextImpl::DiscardValueNames = false

DiscriminatorTable

DiscriminatorTable - This table maps file:line locations to an integer representing the next DWARF path discriminator to assign to instructions in different blocks at the same location.

Definition at line 1806 of file LLVMContextImpl.h.

DistinctMDNodes

std::vector<MDNode *> llvm::LLVMContextImpl::DistinctMDNodes

DITypeMap

DoubleTy

Type llvm::LLVMContextImpl::DoubleTy

DSOLocalEquivalents

ExprConstants

FloatTy

Type llvm::LLVMContextImpl::FloatTy

FP128Ty

Type llvm::LLVMContextImpl::FP128Ty

FPConstants

FPSplatConstants

FunctionTypes

FunctionTypeSet llvm::LLVMContextImpl::FunctionTypes

GCNames

Maintain the GC name for each function.

This saves allocating an additional word in Function for programs which do not use GC (i.e., most programs) at the cost of increased overhead for clients which do use GC.

Definition at line 1841 of file LLVMContextImpl.h.

GlobalObjectSections

GlobalValuePartitions

GlobalValueSanitizerMetadata

HalfTy

Type llvm::LLVMContextImpl::HalfTy

InlineAsms

Int128Ty

Int16Ty

Int1Ty

Int32Ty

Int64Ty

Int8Ty

IntConstants

IntegerTypes

IntOneConstants

IntSplatConstants

IntZeroConstants

LabelTy

Type llvm::LLVMContextImpl::LabelTy

LLVMRS

MachineFunctionNums

MainRemarkStreamer

The main remark streamer used by all the other streamers (e.g.

IR, MIR, frontends, etc.). This should only be used by the specific streamers, and never directly.

Definition at line 1633 of file LLVMContextImpl.h.

MDStringCache

MetadataAsValues

MetadataTy

Type llvm::LLVMContextImpl::MetadataTy

MisExpectWarningRequested

bool llvm::LLVMContextImpl::MisExpectWarningRequested = false

NamedStructTypes

NamedStructTypesUniqueID

unsigned llvm::LLVMContextImpl::NamedStructTypesUniqueID = 0

NextAtomGroup

uint64_t llvm::LLVMContextImpl::NextAtomGroup = 1

The next available source atom group number.

The front end is responsible for assigning source atom numbers, but certain optimisations need to assign new group numbers to a set of instructions. Most often code duplication optimisations like loop unroll. Tracking a global maximum value means we can know (cheaply) we're never using a group number that's already used within this function.

Start a 1 because 0 means the source location isn't part of an atom group.

Definition at line 1902 of file LLVMContextImpl.h.

NoCFIValues

OPG

OwnedModules

OwnedModules - The set of modules instantiated in this context, and which will be automatically deleted if this context is deleted.

Definition at line 1624 of file LLVMContextImpl.h.

Referenced by ~LLVMContextImpl().

PointerTypes

PPC_FP128Ty

Type llvm::LLVMContextImpl::PPC_FP128Ty

PVConstants

RespectDiagnosticFilters

bool llvm::LLVMContextImpl::RespectDiagnosticFilters = false

Saver

SSC

StructConstants

StructConstantsTy llvm::LLVMContextImpl::StructConstants

TargetExtTypes

TargetExtTypeSet llvm::LLVMContextImpl::TargetExtTypes

TheFalseVal

ConstantInt* llvm::LLVMContextImpl::TheFalseVal = nullptr

TheNoneToken

TheTrueVal

ConstantInt* llvm::LLVMContextImpl::TheTrueVal = nullptr

TokenTy

Type llvm::LLVMContextImpl::TokenTy

TrailingDbgRecords

Mapping of blocks to collections of "trailing" DbgVariableRecords.

As part of the "RemoveDIs" project, debug-info variable location records are going to cease being instructions... which raises the problem of where should they be recorded when we remove the terminator of a blocks, such as:

foo = add i32 0, 0 br label bar

If the branch is removed, a legitimate transient state while editing a block, any debug-records between those two instructions will not have a location. Each block thus records any DbgVariableRecord records that "trail" in such a way. These are stored in LLVMContext because typically LLVM only edits a small number of blocks at a time, so there's no need to bloat BasicBlock with such a data structure.

Definition at line 1877 of file LLVMContextImpl.h.

Referenced by deleteTrailingDbgRecords(), getTrailingDbgRecords(), setTrailingDbgRecords(), and ~LLVMContextImpl().

UVConstants

ValueHandles

ValueHandlesTy llvm::LLVMContextImpl::ValueHandles

ValueMetadata

ValueNames

ValuesAsMetadata

VectorConstants

VectorConstantsTy llvm::LLVMContextImpl::VectorConstants

VectorTypes

VoidTy

Type llvm::LLVMContextImpl::VoidTy

X86_AMXTy

Type llvm::LLVMContextImpl::X86_AMXTy

X86_FP80Ty

Type llvm::LLVMContextImpl::X86_FP80Ty

YieldCallback

YieldOpaqueHandle

void* llvm::LLVMContextImpl::YieldOpaqueHandle = nullptr


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