LLVM 20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
llvm::LLVMContext Class Reference

This is an important class for using LLVM in a threaded context. More...

#include "llvm/IR/LLVMContext.h"

Inheritance diagram for llvm::LLVMContext:
Inheritance graph
[legend]

Public Types

enum  : unsigned
 
enum  : unsigned {
  OB_deopt = 0 , OB_funclet = 1 , OB_gc_transition = 2 , OB_cfguardtarget = 3 ,
  OB_preallocated = 4 , OB_gc_live = 5 , OB_clang_arc_attachedcall = 6 , OB_ptrauth = 7 ,
  OB_kcfi = 8 , OB_convergencectrl = 9
}
 Known operand bundle tag IDs, which always have the same value. More...
 
using YieldCallbackTy = void(*)(LLVMContext *Context, void *OpaqueHandle)
 Defines the type of a yield callback.
 

Public Member Functions

 LLVMContext ()
 
 LLVMContext (const LLVMContext &)=delete
 
LLVMContextoperator= (const LLVMContext &)=delete
 
 ~LLVMContext ()
 
unsigned getMDKindID (StringRef Name) const
 getMDKindID - Return a unique non-zero ID for the specified metadata kind.
 
void getMDKindNames (SmallVectorImpl< StringRef > &Result) const
 getMDKindNames - Populate client supplied SmallVector with the name for custom metadata IDs registered in this LLVMContext.
 
void getOperandBundleTags (SmallVectorImpl< StringRef > &Result) const
 getOperandBundleTags - Populate client supplied SmallVector with the bundle tags registered in this LLVMContext.
 
StringMapEntry< uint32_t > * getOrInsertBundleTag (StringRef TagName) const
 getOrInsertBundleTag - Returns the Tag to use for an operand bundle of name TagName.
 
uint32_t getOperandBundleTagID (StringRef Tag) const
 getOperandBundleTagID - Maps a bundle tag to an integer ID.
 
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.
 
void setGC (const Function &Fn, std::string GCName)
 Define the GC for a function.
 
const std::string & getGC (const Function &Fn)
 Return the GC for a function.
 
void deleteGC (const Function &Fn)
 Remove the GC for a function.
 
bool shouldDiscardValueNames () const
 Return true if the Context runtime configuration is set to discard all value names.
 
void setDiscardValueNames (bool Discard)
 Set the Context runtime configuration to discard all value name (but GlobalValue).
 
bool isODRUniquingDebugTypes () const
 Whether there is a string map for uniquing debug info identifiers across the context.
 
void enableDebugTypeODRUniquing ()
 
void disableDebugTypeODRUniquing ()
 
unsigned generateMachineFunctionNum (Function &)
 generateMachineFunctionNum - Get a unique number for MachineFunction that associated with the given Function.
 
void setDiagnosticHandlerCallBack (DiagnosticHandler::DiagnosticHandlerTy DiagHandler, void *DiagContext=nullptr, bool RespectFilters=false)
 setDiagnosticHandlerCallBack - This method sets a handler call back that is invoked when the backend needs to report anything to the user.
 
void setDiagnosticHandler (std::unique_ptr< DiagnosticHandler > &&DH, bool RespectFilters=false)
 setDiagnosticHandler - This method sets unique_ptr to object of DiagnosticHandler to provide custom diagnostic handling.
 
DiagnosticHandler::DiagnosticHandlerTy getDiagnosticHandlerCallBack () const
 getDiagnosticHandlerCallBack - Return the diagnostic handler call back set by setDiagnosticHandlerCallBack.
 
void * getDiagnosticContext () const
 getDiagnosticContext - Return the diagnostic context set by setDiagnosticContext.
 
const DiagnosticHandlergetDiagHandlerPtr () const
 getDiagHandlerPtr - Returns const raw pointer of DiagnosticHandler set by setDiagnosticHandler.
 
std::unique_ptr< DiagnosticHandlergetDiagnosticHandler ()
 getDiagnosticHandler - transfers ownership of DiagnosticHandler unique_ptr to caller.
 
bool getDiagnosticsHotnessRequested () const
 Return if a code hotness metric should be included in optimization diagnostics.
 
void setDiagnosticsHotnessRequested (bool Requested)
 Set if a code hotness metric should be included in optimization diagnostics.
 
bool getMisExpectWarningRequested () const
 
void setMisExpectWarningRequested (bool Requested)
 
void setDiagnosticsMisExpectTolerance (std::optional< uint32_t > Tolerance)
 
uint32_t getDiagnosticsMisExpectTolerance () const
 
uint64_t getDiagnosticsHotnessThreshold () const
 Return the minimum hotness value a diagnostic would need in order to be included in optimization diagnostics.
 
void setDiagnosticsHotnessThreshold (std::optional< uint64_t > Threshold)
 Set the minimum hotness value a diagnostic needs in order to be included in optimization diagnostics.
 
bool isDiagnosticsHotnessThresholdSetFromPSI () const
 Return if hotness threshold is requested from PSI.
 
remarks::RemarkStreamergetMainRemarkStreamer ()
 The "main remark streamer" used by all the specialized remark streamers.
 
const remarks::RemarkStreamergetMainRemarkStreamer () const
 
void setMainRemarkStreamer (std::unique_ptr< remarks::RemarkStreamer > MainRemarkStreamer)
 
LLVMRemarkStreamergetLLVMRemarkStreamer ()
 The "LLVM remark streamer" used by LLVM to serialize remark diagnostics comming from IR and MIR passes.
 
const LLVMRemarkStreamergetLLVMRemarkStreamer () const
 
void setLLVMRemarkStreamer (std::unique_ptr< LLVMRemarkStreamer > RemarkStreamer)
 
void diagnose (const DiagnosticInfo &DI)
 Report a message to the currently installed diagnostic handler.
 
void setYieldCallback (YieldCallbackTy Callback, void *OpaqueHandle)
 Registers a yield callback with the given context.
 
void yield ()
 Calls the yield callback (if applicable).
 
void emitError (uint64_t LocCookie, const Twine &ErrorStr)
 emitError - Emit an error message to the currently installed error handler with optional location information.
 
void emitError (const Instruction *I, const Twine &ErrorStr)
 
void emitError (const Twine &ErrorStr)
 
OptPassGategetOptPassGate () 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 setOpaquePointers (bool Enable) const
 Set whether opaque pointers are enabled.
 
bool supportsTypedPointers () const
 Whether typed pointers are supported. If false, all pointers are opaque.
 
StringRef getDefaultTargetCPU ()
 Get or set the current "default" target CPU (target-cpu function attribute).
 
void setDefaultTargetCPU (StringRef CPU)
 
StringRef getDefaultTargetFeatures ()
 Similar to {get,set}DefaultTargetCPU() but for default target-features.
 
void setDefaultTargetFeatures (StringRef Features)
 

Static Public Member Functions

static const chargetDiagnosticMessagePrefix (DiagnosticSeverity Severity)
 Get the prefix that should be printed in front of a diagnostic of the given Severity.
 

Public Attributes

LLVMContextImpl *const pImpl
 

Friends

class Module
 

Detailed Description

This is an important class for using LLVM in a threaded context.

It (opaquely) owns and manages the core "global" data of LLVM's core infrastructure, including the type and constant uniquing tables. LLVMContext itself provides no locking guarantees, so you should be careful to have one context per thread.

Definition at line 67 of file LLVMContext.h.

Member Typedef Documentation

◆ YieldCallbackTy

using llvm::LLVMContext::YieldCallbackTy = void (*)(LLVMContext *Context, void *OpaqueHandle)

Defines the type of a yield callback.

See also
LLVMContext::setYieldCallback.

Definition at line 164 of file LLVMContext.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : unsigned

Definition at line 77 of file LLVMContext.h.

◆ anonymous enum

anonymous enum : unsigned

Known operand bundle tag IDs, which always have the same value.

All operand bundle tags that LLVM has special knowledge of are listed here. Additionally, this scheme allows LLVM to efficiently check for specific operand bundle tags without comparing strings. Keep this in sync with LLVMContext::LLVMContext().

Enumerator
OB_deopt 
OB_funclet 
OB_gc_transition 
OB_cfguardtarget 
OB_preallocated 
OB_gc_live 
OB_clang_arc_attachedcall 
OB_ptrauth 
OB_kcfi 
OB_convergencectrl 

Definition at line 88 of file LLVMContext.h.

Constructor & Destructor Documentation

◆ LLVMContext() [1/2]

LLVMContext::LLVMContext ( )

◆ LLVMContext() [2/2]

llvm::LLVMContext::LLVMContext ( const LLVMContext )
delete

◆ ~LLVMContext()

LLVMContext::~LLVMContext ( )

Definition at line 113 of file LLVMContext.cpp.

References pImpl.

Member Function Documentation

◆ deleteGC()

void LLVMContext::deleteGC ( const Function Fn)

Remove the GC for a function.

Definition at line 347 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::GCNames, and pImpl.

Referenced by llvm::Function::clearGC().

◆ diagnose()

void LLVMContext::diagnose ( const DiagnosticInfo DI)

Report a message to the currently installed diagnostic handler.

This function returns, in particular in the case of error reporting (DI.Severity == DS_Error), so the caller should leave the compilation process in a self-consistent state, even though the generated code need not be correct.

The diagnostic message will be implicitly prefixed with a severity keyword according to DI.getSeverity(), i.e., "error: " for DS_Error, "warning: " for DS_Warning, and "note: " for DS_Note.

Definition at line 260 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagHandler, llvm::DS_Error, llvm::errs(), getDiagnosticMessagePrefix(), getLLVMRemarkStreamer(), llvm::DiagnosticInfo::getSeverity(), isDiagnosticEnabled(), pImpl, llvm::DiagnosticInfo::print(), and llvm::LLVMContextImpl::RespectDiagnosticFilters.

Referenced by llvm::sampleprof::SampleProfileReaderItaniumRemapper::applyRemapping(), llvm::GCNSubtarget::checkSubtargetFeatures(), llvm::createMIRParser(), diagnoseInvalidFormatString(), llvm::MachineModuleInfoWrapperPass::doInitialization(), llvm::OptimizationRemarkEmitter::emit(), llvm::MachineOptimizationRemarkEmitter::emit(), emitError(), emitNonHSAIntrinsicError(), llvm::RISCVFrameLowering::emitPrologue(), emitRemovedIntrinsicError(), llvm::MIRParserImpl::error(), errorUnsupported(), fail(), InstrumentAllFunctions(), llvm::AMDGPULegalizerInfo::legalizeAddrSpaceCast(), llvm::AMDGPULegalizerInfo::legalizeDebugTrap(), llvm::AMDGPULegalizerInfo::legalizeGlobalValue(), llvm::RISCVTargetLowering::LowerCall(), llvm::AMDGPUTargetLowering::LowerDYNAMIC_STACKALLOC(), llvm::NVPTXTargetLowering::LowerDYNAMIC_STACKALLOC(), llvm::SITargetLowering::LowerFormalArguments(), llvm::AMDGPUTargetLowering::LowerGlobalAddress(), llvm::RISCVTargetLowering::LowerReturn(), llvm::AMDGPUTargetLowering::lowerUnhandledCall(), llvm::MIRParserImpl::reportDiagnostic(), llvm::sampleprof::SampleProfileReader::reportError(), llvm::KCFIPass::run(), llvm::MachineModuleAnalysis::run(), llvm::SelectionDAGISel::runOnMachineFunction(), and selectExplicitSectionGlobal().

◆ disableDebugTypeODRUniquing()

void LLVMContext::disableDebugTypeODRUniquing ( )

Definition at line 364 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DITypeMap, and pImpl.

◆ emitError() [1/3]

void LLVMContext::emitError ( const Instruction I,
const Twine ErrorStr 
)

Definition at line 225 of file LLVMContext.cpp.

References assert(), diagnose(), and I.

◆ emitError() [2/3]

void LLVMContext::emitError ( const Twine ErrorStr)

Definition at line 221 of file LLVMContext.cpp.

References diagnose().

◆ emitError() [3/3]

void LLVMContext::emitError ( uint64_t  LocCookie,
const Twine ErrorStr 
)

◆ enableDebugTypeODRUniquing()

void LLVMContext::enableDebugTypeODRUniquing ( )

◆ generateMachineFunctionNum()

unsigned LLVMContext::generateMachineFunctionNum ( Function F)

generateMachineFunctionNum - Get a unique number for MachineFunction that associated with the given Function.

Definition at line 124 of file LLVMContext.cpp.

References assert(), llvm::SmallPtrSetImpl< PtrType >::contains(), F, llvm::LLVMContextImpl::MachineFunctionNums, llvm::LLVMContextImpl::OwnedModules, and pImpl.

◆ getDefaultTargetCPU()

StringRef LLVMContext::getDefaultTargetCPU ( )

Get or set the current "default" target CPU (target-cpu function attribute).

The intent is that compiler frontends will set this to a value that reflects the attribute that a function would get "by default" without any specific function attributes, and compiler passes will attach the attribute to newly created functions that are not associated with a particular function, such as global initializers. Function::createWithDefaultAttr() will create functions with this attribute. This function should only be called by passes that run at compile time and not by the backend or LTO passes.

Definition at line 394 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DefaultTargetCPU, and pImpl.

◆ getDefaultTargetFeatures()

StringRef LLVMContext::getDefaultTargetFeatures ( )

Similar to {get,set}DefaultTargetCPU() but for default target-features.

Definition at line 402 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DefaultTargetFeatures, and pImpl.

◆ getDiagHandlerPtr()

const DiagnosticHandler * LLVMContext::getDiagHandlerPtr ( ) const

◆ getDiagnosticContext()

void * LLVMContext::getDiagnosticContext ( ) const

getDiagnosticContext - Return the diagnostic context set by setDiagnosticContext.

Definition at line 206 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagHandler, and pImpl.

◆ getDiagnosticHandler()

std::unique_ptr< DiagnosticHandler > LLVMContext::getDiagnosticHandler ( )

getDiagnosticHandler - transfers ownership of DiagnosticHandler unique_ptr to caller.

Definition at line 382 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagHandler, and pImpl.

◆ getDiagnosticHandlerCallBack()

DiagnosticHandler::DiagnosticHandlerTy LLVMContext::getDiagnosticHandlerCallBack ( ) const

getDiagnosticHandlerCallBack - Return the diagnostic handler call back set by setDiagnosticHandlerCallBack.

Definition at line 202 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagHandler, and pImpl.

◆ getDiagnosticMessagePrefix()

const char * LLVMContext::getDiagnosticMessagePrefix ( DiagnosticSeverity  Severity)
static

Get the prefix that should be printed in front of a diagnostic of the given Severity.

Definition at line 246 of file LLVMContext.cpp.

References llvm::DS_Error, llvm::DS_Note, llvm::DS_Remark, llvm::DS_Warning, and llvm_unreachable.

Referenced by diagnose().

◆ getDiagnosticsHotnessRequested()

bool LLVMContext::getDiagnosticsHotnessRequested ( ) const

Return if a code hotness metric should be included in optimization diagnostics.

Definition at line 151 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsHotnessRequested, and pImpl.

Referenced by llvm::MachineOptimizationRemarkEmitterAnalysis::run(), and llvm::MachineOptimizationRemarkEmitterPass::runOnMachineFunction().

◆ getDiagnosticsHotnessThreshold()

uint64_t LLVMContext::getDiagnosticsHotnessThreshold ( ) const

Return the minimum hotness value a diagnostic would need in order to be included in optimization diagnostics.

Three possible return values: 0 - threshold is disabled. Everything will be printed out. positive int - threshold is set. UINT64_MAX - threshold is not yet set, and needs to be synced from profile summary. Note that in case of missing profile summary, threshold will be kept at "MAX", effectively suppresses all remarks output.

Definition at line 164 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsHotnessThreshold, pImpl, and UINT64_MAX.

Referenced by llvm::OptimizationRemarkEmitter::emit(), and llvm::MachineOptimizationRemarkEmitter::emit().

◆ getDiagnosticsMisExpectTolerance()

uint32_t LLVMContext::getDiagnosticsMisExpectTolerance ( ) const

Definition at line 171 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsMisExpectTolerance, and pImpl.

◆ getGC()

const std::string & LLVMContext::getGC ( const Function Fn)

Return the GC for a function.

Definition at line 343 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::GCNames, and pImpl.

Referenced by llvm::Function::getGC().

◆ getLLVMRemarkStreamer() [1/2]

LLVMRemarkStreamer * LLVMContext::getLLVMRemarkStreamer ( )

The "LLVM remark streamer" used by LLVM to serialize remark diagnostics comming from IR and MIR passes.

If it does not exist, diagnostics are not saved in a file but only emitted via the diagnostic handler.

Definition at line 190 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::LLVMRS, and pImpl.

Referenced by llvm::OptimizationRemarkEmitter::allowExtraAnalysis(), llvm::MachineOptimizationRemarkEmitter::allowExtraAnalysis(), diagnose(), llvm::MachineOptimizationRemarkEmitter::emit(), llvm::OptimizationRemarkEmitter::enabled(), and getLLVMRemarkStreamer().

◆ getLLVMRemarkStreamer() [2/2]

const LLVMRemarkStreamer * LLVMContext::getLLVMRemarkStreamer ( ) const

Definition at line 193 of file LLVMContext.cpp.

References getLLVMRemarkStreamer().

◆ getMainRemarkStreamer() [1/2]

remarks::RemarkStreamer * LLVMContext::getMainRemarkStreamer ( )

The "main remark streamer" used by all the specialized remark streamers.

This streamer keeps generic remark metadata in memory throughout the life of the LLVMContext. This metadata may be emitted in a section in object files depending on the format requirements.

All specialized remark streamers should convert remarks to llvm::remarks::Remark and emit them through this streamer.

Definition at line 179 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::MainRemarkStreamer, and pImpl.

Referenced by getMainRemarkStreamer(), and llvm::setupLLVMOptimizationRemarks().

◆ getMainRemarkStreamer() [2/2]

const remarks::RemarkStreamer * LLVMContext::getMainRemarkStreamer ( ) const

Definition at line 182 of file LLVMContext.cpp.

References getMainRemarkStreamer().

◆ getMDKindID()

unsigned LLVMContext::getMDKindID ( StringRef  Name) const

getMDKindID - Return a unique non-zero ID for the specified metadata kind.

Return a unique non-zero ID for the specified metadata kind.

This ID is uniqued across modules in the current LLVMContext.

Definition at line 295 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::CustomMDKindNames, llvm::StringMap< ValueTy, AllocatorTy >::insert(), Name, pImpl, and llvm::StringMapImpl::size().

Referenced by copyMetadataForAtomic(), llvm::Module::getMDKindID(), llvm::Value::getMetadata(), and LLVMContext().

◆ getMDKindNames()

void LLVMContext::getMDKindNames ( SmallVectorImpl< StringRef > &  Result) const

getMDKindNames - Populate client supplied SmallVector with the name for custom metadata IDs registered in this LLVMContext.

getHandlerNames - Populate client-supplied smallvector using custom metadata name and ID.

Definition at line 305 of file LLVMContext.cpp.

References llvm::StringMap< ValueTy, AllocatorTy >::begin(), llvm::LLVMContextImpl::CustomMDKindNames, llvm::StringMap< ValueTy, AllocatorTy >::end(), I, pImpl, llvm::SmallVectorImpl< T >::resize(), and llvm::StringMapImpl::size().

Referenced by llvm::Module::getMDKindNames().

◆ getMisExpectWarningRequested()

bool LLVMContext::getMisExpectWarningRequested ( ) const

Definition at line 161 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::MisExpectWarningRequested, and pImpl.

◆ getOperandBundleTagID()

uint32_t LLVMContext::getOperandBundleTagID ( StringRef  Tag) const

getOperandBundleTagID - Maps a bundle tag to an integer ID.

Every bundle tag registered with an LLVMContext has an unique ID.

Definition at line 321 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::getOperandBundleTagID(), and pImpl.

◆ getOperandBundleTags()

void LLVMContext::getOperandBundleTags ( SmallVectorImpl< StringRef > &  Result) const

getOperandBundleTags - Populate client supplied SmallVector with the bundle tags registered in this LLVMContext.

The bundle tags are ordered by increasing bundle IDs.

See also
LLVMContext::getOperandBundleTagID

Definition at line 312 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::getOperandBundleTags(), and pImpl.

Referenced by llvm::Module::getOperandBundleTags().

◆ getOptPassGate()

OptPassGate & LLVMContext::getOptPassGate ( ) const

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

Definition at line 370 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::getOptPassGate(), and pImpl.

Referenced by llvm::OptPassGateInstrumentation::registerCallbacks(), and llvm::OptPassGateInstrumentation::shouldRun().

◆ getOrInsertBundleTag()

StringMapEntry< uint32_t > * LLVMContext::getOrInsertBundleTag ( StringRef  TagName) const

getOrInsertBundleTag - Returns the Tag to use for an operand bundle of name TagName.

Definition at line 317 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::getOrInsertBundleTag(), and pImpl.

◆ getOrInsertSyncScopeID()

SyncScope::ID LLVMContext::getOrInsertSyncScopeID ( StringRef  SSN)

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 325 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::getOrInsertSyncScopeID(), and pImpl.

Referenced by llvm::AMDGPUMachineModuleInfo::AMDGPUMachineModuleInfo(), llvm::SITargetLowering::shouldExpandAtomicRMWInIR(), and upgradeAMDGCNIntrinsicCall().

◆ getSyncScopeNames()

void LLVMContext::getSyncScopeNames ( SmallVectorImpl< StringRef > &  SSNs) const

getSyncScopeNames - Populates client supplied SmallVector with synchronization scope names registered with LLVMContext.

Synchronization scope names are ordered by increasing synchronization scope IDs.

Definition at line 329 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::getSyncScopeNames(), and pImpl.

Referenced by emitAtomicRMWLegalRemark(), and printSyncScope().

◆ isDiagnosticsHotnessThresholdSetFromPSI()

bool LLVMContext::isDiagnosticsHotnessThresholdSetFromPSI ( ) const

Return if hotness threshold is requested from PSI.

Definition at line 175 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsHotnessThreshold, and pImpl.

◆ isODRUniquingDebugTypes()

bool LLVMContext::isODRUniquingDebugTypes ( ) const

Whether there is a string map for uniquing debug info identifiers across the context.

Off by default.

Definition at line 355 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DITypeMap, and pImpl.

Referenced by llvm::DICompositeType::buildODRType(), and llvm::DICompositeType::getODRTypeIfExists().

◆ operator=()

LLVMContext & llvm::LLVMContext::operator= ( const LLVMContext )
delete

◆ setDefaultTargetCPU()

void LLVMContext::setDefaultTargetCPU ( StringRef  CPU)

Definition at line 398 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DefaultTargetCPU, and pImpl.

◆ setDefaultTargetFeatures()

void LLVMContext::setDefaultTargetFeatures ( StringRef  Features)

Definition at line 406 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DefaultTargetFeatures, and pImpl.

◆ setDiagnosticHandler()

void LLVMContext::setDiagnosticHandler ( std::unique_ptr< DiagnosticHandler > &&  DH,
bool  RespectFilters = false 
)

setDiagnosticHandler - This method sets unique_ptr to object of DiagnosticHandler to provide custom diagnostic handling.

The first argument is unique_ptr of object of type DiagnosticHandler or a derived of that. The second argument should be set to true if the handler only expects enabled diagnostics.

Ownership of this pointer is moved to LLVMContextImpl.

Definition at line 142 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagHandler, pImpl, and llvm::LLVMContextImpl::RespectDiagnosticFilters.

Referenced by llvm::lto::LTOLLVMContext::LTOLLVMContext(), and llvm::LTOCodeGenerator::setDiagnosticHandler().

◆ setDiagnosticHandlerCallBack()

void LLVMContext::setDiagnosticHandlerCallBack ( DiagnosticHandler::DiagnosticHandlerTy  DiagHandler,
void *  DiagContext = nullptr,
bool  RespectFilters = false 
)

setDiagnosticHandlerCallBack - This method sets a handler call back that is invoked when the backend needs to report anything to the user.

The first argument is a function pointer and the second is a context pointer that gets passed into the DiagHandler. The third argument should be set to true if the handler only expects enabled diagnostics.

LLVMContext doesn't take ownership or interpret either of these pointers.

Definition at line 134 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagHandler, pImpl, and llvm::LLVMContextImpl::RespectDiagnosticFilters.

◆ setDiagnosticsHotnessRequested()

void LLVMContext::setDiagnosticsHotnessRequested ( bool  Requested)

Set if a code hotness metric should be included in optimization diagnostics.

Definition at line 148 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsHotnessRequested, and pImpl.

Referenced by llvm::setupLLVMOptimizationRemarks().

◆ setDiagnosticsHotnessThreshold()

void LLVMContext::setDiagnosticsHotnessThreshold ( std::optional< uint64_t Threshold)

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

Definition at line 155 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsHotnessThreshold, and pImpl.

Referenced by llvm::setupLLVMOptimizationRemarks().

◆ setDiagnosticsMisExpectTolerance()

void LLVMContext::setDiagnosticsMisExpectTolerance ( std::optional< uint32_t Tolerance)

Definition at line 167 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiagnosticsMisExpectTolerance, and pImpl.

◆ setDiscardValueNames()

void LLVMContext::setDiscardValueNames ( bool  Discard)

Set the Context runtime configuration to discard all value name (but GlobalValue).

Clients can use this flag to save memory and runtime, especially in release mode.

Definition at line 366 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiscardValueNames, and pImpl.

Referenced by llvm::LTOCodeGenerator::LTOCodeGenerator(), llvm::lto::LTOLLVMContext::LTOLLVMContext(), llvm::LTOCodeGenerator::optimize(), and llvm::ThinLTOCodeGenerator::run().

◆ setGC()

void LLVMContext::setGC ( const Function Fn,
std::string  GCName 
)

Define the GC for a function.

Definition at line 333 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::GCNames, and pImpl.

Referenced by llvm::Function::setGC().

◆ setLLVMRemarkStreamer()

void LLVMContext::setLLVMRemarkStreamer ( std::unique_ptr< LLVMRemarkStreamer RemarkStreamer)

Definition at line 196 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::LLVMRS, and pImpl.

Referenced by llvm::setupLLVMOptimizationRemarks().

◆ setMainRemarkStreamer()

void LLVMContext::setMainRemarkStreamer ( std::unique_ptr< remarks::RemarkStreamer MainRemarkStreamer)

◆ setMisExpectWarningRequested()

void LLVMContext::setMisExpectWarningRequested ( bool  Requested)

Definition at line 158 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::MisExpectWarningRequested, and pImpl.

◆ setOpaquePointers()

void LLVMContext::setOpaquePointers ( bool  Enable) const

Set whether opaque pointers are enabled.

The method may be called multiple times, but only with the same value. Note that creating a pointer type or otherwise querying the opaque pointer mode performs an implicit set to the default value.

Definition at line 386 of file LLVMContext.cpp.

References assert(), and llvm::Enable.

◆ setOptPassGate()

void LLVMContext::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 374 of file LLVMContext.cpp.

References pImpl, and llvm::LLVMContextImpl::setOptPassGate().

◆ setYieldCallback()

void LLVMContext::setYieldCallback ( YieldCallbackTy  Callback,
void *  OpaqueHandle 
)

Registers a yield callback with the given context.

The yield callback function may be called by LLVM to transfer control back to the client that invoked the LLVM compilation. This can be used to yield control of the thread, or perform periodic work needed by the client. There is no guaranteed frequency at which callbacks must occur; in fact, the client is not guaranteed to ever receive this callback. It is at the sole discretion of LLVM to do so and only if it can guarantee that suspending the thread won't block any forward progress in other LLVM contexts in the same process.

At a suspend point, the state of the current LLVM context is intentionally undefined. No assumptions about it can or should be made. Only LLVM context API calls that explicitly state that they can be used during a yield callback are allowed to be used. Any other API calls into the context are not supported until the yield callback function returns control to LLVM. Other LLVM contexts are unaffected by this restriction.

Definition at line 210 of file LLVMContext.cpp.

References pImpl, llvm::LLVMContextImpl::YieldCallback, and llvm::LLVMContextImpl::YieldOpaqueHandle.

◆ shouldDiscardValueNames()

bool LLVMContext::shouldDiscardValueNames ( ) const

Return true if the Context runtime configuration is set to discard all value names.

When true, only GlobalValue names will be available in the IR.

Definition at line 351 of file LLVMContext.cpp.

References llvm::LLVMContextImpl::DiscardValueNames, and pImpl.

Referenced by llvm::createMIRParser(), and llvm::LLParser::Run().

◆ supportsTypedPointers()

bool LLVMContext::supportsTypedPointers ( ) const

Whether typed pointers are supported. If false, all pointers are opaque.

Definition at line 390 of file LLVMContext.cpp.

◆ yield()

void LLVMContext::yield ( )

Calls the yield callback (if applicable).

This transfers control of the current thread back to the client, which may suspend the current thread. Only call this method when LLVM doesn't hold any global mutex or cannot block the execution in another LLVM context.

Definition at line 216 of file LLVMContext.cpp.

References pImpl, llvm::LLVMContextImpl::YieldCallback, and llvm::LLVMContextImpl::YieldOpaqueHandle.

Friends And Related Function Documentation

◆ Module

friend class Module
friend

Definition at line 348 of file LLVMContext.h.

Member Data Documentation

◆ pImpl

LLVMContextImpl* const llvm::LLVMContext::pImpl

Definition at line 69 of file LLVMContext.h.

Referenced by llvm::Value::addMetadata(), llvm::DICompositeType::buildODRType(), llvm::Value::clearMetadata(), llvm::StructType::create(), deleteGC(), llvm::BasicBlock::deleteTrailingDbgRecords(), diagnose(), disableDebugTypeODRUniquing(), llvm::Module::dropTriviallyDeadConstantArrays(), enableDebugTypeODRUniquing(), llvm::Value::eraseMetadata(), llvm::Value::eraseMetadataIf(), generateMachineFunctionNum(), llvm::ConstantVector::get(), llvm::ConstantArray::get(), llvm::InlineAsm::get(), llvm::DSOLocalEquivalent::get(), llvm::NoCFIValue::get(), llvm::ConstantTokenNone::get(), llvm::StructType::get(), llvm::DIArgList::get(), llvm::Attribute::get(), llvm::ConstantFP::get(), llvm::ConstantInt::get(), llvm::MetadataAsValue::get(), llvm::ConstantPointerNull::get(), llvm::ConstantTargetNone::get(), llvm::TypedPointerType::get(), llvm::UndefValue::get(), llvm::PoisonValue::get(), llvm::ConstantAggregateZero::get(), llvm::ConstantExpr::get(), llvm::ValueAsMetadata::get(), llvm::Instruction::getAAMetadata(), llvm::Value::getAllMetadata(), llvm::at::getAssignmentInsts(), getDefaultTargetCPU(), getDefaultTargetFeatures(), getDiagHandlerPtr(), getDiagnosticContext(), getDiagnosticHandler(), getDiagnosticHandlerCallBack(), getDiagnosticsHotnessRequested(), getDiagnosticsHotnessThreshold(), getDiagnosticsMisExpectTolerance(), llvm::ConstantExpr::getExtractElement(), llvm::ConstantInt::getFalse(), getFoldedCast(), getGC(), llvm::MetadataAsValue::getIfExists(), llvm::ConstantDataSequential::getImpl(), llvm::ConstantExpr::getInsertElement(), getLLVMRemarkStreamer(), getMainRemarkStreamer(), getMDKindID(), getMDKindNames(), llvm::Value::getMetadata(), llvm::Value::getMetadataImpl(), getMisExpectWarningRequested(), llvm::DICompositeType::getODRTypeIfExists(), getOperandBundleTagID(), getOperandBundleTags(), getOptPassGate(), getOrInsertBundleTag(), getOrInsertSyncScopeID(), llvm::GlobalValue::getPartition(), llvm::GlobalValue::getSanitizerMetadata(), llvm::ConstantExpr::getShuffleVector(), getSyncScopeNames(), llvm::BasicBlock::getTrailingDbgRecords(), llvm::ConstantInt::getTrue(), llvm::Value::getValueName(), llvm::DIArgList::handleChangedOperand(), llvm::ValueAsMetadata::handleRAUW(), isDiagnosticsHotnessThresholdSetFromPSI(), isODRUniquingDebugTypes(), LLVMContext(), llvm::CallBase::populateBundleOperandInfos(), llvm::ValueHandleBase::RemoveFromUseList(), llvm::GlobalValue::removeSanitizerMetadata(), llvm::ReplaceableMetadataImpl::SalvageDebugInfo(), setDefaultTargetCPU(), setDefaultTargetFeatures(), setDiagnosticHandler(), setDiagnosticHandlerCallBack(), setDiagnosticsHotnessRequested(), setDiagnosticsHotnessThreshold(), setDiagnosticsMisExpectTolerance(), setDiscardValueNames(), setGC(), setLLVMRemarkStreamer(), setMainRemarkStreamer(), llvm::Value::setMetadata(), setMisExpectWarningRequested(), llvm::StructType::setName(), setOptPassGate(), llvm::GlobalValue::setPartition(), llvm::GlobalValue::setSanitizerMetadata(), llvm::GlobalObject::setSection(), llvm::BasicBlock::setTrailingDbgRecords(), llvm::Value::setValueName(), setYieldCallback(), shouldDiscardValueNames(), llvm::MDNode::storeDistinctInContext(), llvm::ValueHandleBase::ValueIsRAUWd(), yield(), ~LLVMContext(), and llvm::MetadataAsValue::~MetadataAsValue().


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