LLVM 17.0.0git
|
A Module instance is used to store all the information related to an LLVM module. More...
#include "llvm/IR/Module.h"
Classes | |
class | debug_compile_units_iterator |
An iterator for DICompileUnits that skips those marked NoDebug. More... | |
struct | ModuleFlagEntry |
Public Member Functions | |
void | dropTriviallyDeadConstantArrays () |
Destroy ConstantArrays in LLVMContext if they are not used. | |
bool | getSemanticInterposition () const |
Returns whether semantic interposition is to be respected. | |
void | setSemanticInterposition (bool) |
Set whether semantic interposition is to be respected. | |
bool | getRtLibUseGOT () const |
Returns true if PLT should be avoided for RTLib calls. | |
void | setRtLibUseGOT () |
Set that PLT should be avoid for RTLib calls. | |
bool | getDirectAccessExternalData () const |
Get/set whether referencing global variables can use direct access relocations on ELF targets. | |
void | setDirectAccessExternalData (bool Value) |
UWTableKind | getUwtable () const |
Get/set whether synthesized functions should get the uwtable attribute. | |
void | setUwtable (UWTableKind Kind) |
FramePointerKind | getFramePointer () const |
Get/set whether synthesized functions should get the "frame-pointer" attribute. | |
void | setFramePointer (FramePointerKind Kind) |
StringRef | getStackProtectorGuard () const |
Get/set what kind of stack protector guard to use. | |
void | setStackProtectorGuard (StringRef Kind) |
StringRef | getStackProtectorGuardReg () const |
Get/set which register to use as the stack protector guard register. | |
void | setStackProtectorGuardReg (StringRef Reg) |
StringRef | getStackProtectorGuardSymbol () const |
Get/set a symbol to use as the stack protector guard. | |
void | setStackProtectorGuardSymbol (StringRef Symbol) |
int | getStackProtectorGuardOffset () const |
Get/set what offset from the stack protector to use. | |
void | setStackProtectorGuardOffset (int Offset) |
unsigned | getOverrideStackAlignment () const |
Get/set the stack alignment overridden from the default. | |
void | setOverrideStackAlignment (unsigned Align) |
unsigned | getMaxTLSAlignment () const |
void | setOwnedMemoryBuffer (std::unique_ptr< MemoryBuffer > MB) |
Take ownership of the given memory buffer. | |
void | setPartialSampleProfileRatio (const ModuleSummaryIndex &Index) |
Set the partial sample profile ratio in the profile summary module flag, if applicable. | |
StringRef | getDarwinTargetVariantTriple () const |
Get the target variant triple which is a string describing a variant of the target host platform. | |
void | setDarwinTargetVariantTriple (StringRef T) |
Set the target variant triple which is a string describing a variant of the target host platform. | |
VersionTuple | getDarwinTargetVariantSDKVersion () const |
Get the target variant version build SDK version metadata. | |
void | setDarwinTargetVariantSDKVersion (VersionTuple Version) |
Set the target variant version build SDK version metadata. | |
Constructors | |
Module (StringRef ModuleID, LLVMContext &C) | |
The Module constructor. | |
~Module () | |
The module destructor. This will dropAllReferences. | |
Module Level Accessors | |
const std::string & | getModuleIdentifier () const |
Get the module identifier which is, essentially, the name of the module. | |
unsigned | getInstructionCount () const |
Returns the number of non-debug IR instructions in the module. | |
const std::string & | getSourceFileName () const |
Get the module's original source file name. | |
StringRef | getName () const |
Get a short "name" for the module. | |
const std::string & | getDataLayoutStr () const |
Get the data layout string for the module's target platform. | |
const DataLayout & | getDataLayout () const |
Get the data layout for the module's target platform. | |
const std::string & | getTargetTriple () const |
Get the target triple which is a string describing the target host. | |
LLVMContext & | getContext () const |
Get the global data context. | |
const std::string & | getModuleInlineAsm () const |
Get any module-scope inline assembly blocks. | |
std::unique_ptr< RandomNumberGenerator > | createRNG (const StringRef Name) const |
Get a RandomNumberGenerator salted for use with this module. | |
bool | shouldEmitInstrCountChangedRemark () |
Return true if size-info optimization remark is enabled, false otherwise. | |
Module Level Mutators | |
void | setModuleIdentifier (StringRef ID) |
Set the module identifier. | |
void | setSourceFileName (StringRef Name) |
Set the module's original source file name. | |
void | setDataLayout (StringRef Desc) |
Set the data layout. | |
void | setDataLayout (const DataLayout &Other) |
void | setTargetTriple (StringRef T) |
Set the target triple. | |
void | setModuleInlineAsm (StringRef Asm) |
Set the module-scope inline assembly blocks. | |
void | appendModuleInlineAsm (StringRef Asm) |
Append to the module-scope inline assembly blocks. | |
Generic Value Accessors | |
GlobalValue * | getNamedValue (StringRef Name) const |
Return the global value in the module with the specified name, of arbitrary type. | |
unsigned | getNumNamedValues () const |
Return the number of global values in the module. | |
unsigned | getMDKindID (StringRef Name) const |
Return a unique non-zero ID for the specified metadata kind. | |
void | getMDKindNames (SmallVectorImpl< StringRef > &Result) const |
Populate client supplied SmallVector with the name for custom metadata IDs registered in this LLVMContext. | |
void | getOperandBundleTags (SmallVectorImpl< StringRef > &Result) const |
Populate client supplied SmallVector with the bundle tags registered in this LLVMContext. | |
std::vector< StructType * > | getIdentifiedStructTypes () const |
std::string | getUniqueIntrinsicName (StringRef BaseName, Intrinsic::ID Id, const FunctionType *Proto) |
Return a unique name for an intrinsic whose mangling is based on an unnamed type. | |
Function Accessors | |
FunctionCallee | getOrInsertFunction (StringRef Name, FunctionType *T, AttributeList AttributeList) |
Look up the specified function in the module symbol table. | |
FunctionCallee | getOrInsertFunction (StringRef Name, FunctionType *T) |
template<typename... ArgsTy> | |
FunctionCallee | getOrInsertFunction (StringRef Name, AttributeList AttributeList, Type *RetTy, ArgsTy... Args) |
Look up the specified function in the module symbol table. | |
template<typename... ArgsTy> | |
FunctionCallee | getOrInsertFunction (StringRef Name, Type *RetTy, ArgsTy... Args) |
Same as above, but without the attributes. | |
template<typename... ArgsTy> | |
FunctionCallee | getOrInsertFunction (StringRef Name, AttributeList AttributeList, FunctionType *Invalid, ArgsTy... Args)=delete |
Function * | getFunction (StringRef Name) const |
Look up the specified function in the module symbol table. | |
Global Variable Accessors | |
GlobalVariable * | getGlobalVariable (StringRef Name) const |
Look up the specified global variable in the module symbol table. | |
GlobalVariable * | getGlobalVariable (StringRef Name, bool AllowInternal) const |
getGlobalVariable - Look up the specified global variable in the module symbol table. | |
GlobalVariable * | getGlobalVariable (StringRef Name, bool AllowInternal=false) |
const GlobalVariable * | getNamedGlobal (StringRef Name) const |
Return the global variable in the module with the specified name, of arbitrary type. | |
GlobalVariable * | getNamedGlobal (StringRef Name) |
Constant * | getOrInsertGlobal (StringRef Name, Type *Ty, function_ref< GlobalVariable *()> CreateGlobalCallback) |
Look up the specified global in the module symbol table. | |
Constant * | getOrInsertGlobal (StringRef Name, Type *Ty) |
Look up the specified global in the module symbol table. | |
Global Alias Accessors | |
GlobalAlias * | getNamedAlias (StringRef Name) const |
Return the global alias in the module with the specified name, of arbitrary type. | |
Global IFunc Accessors | |
GlobalIFunc * | getNamedIFunc (StringRef Name) const |
Return the global ifunc in the module with the specified name, of arbitrary type. | |
Named Metadata Accessors | |
NamedMDNode * | getNamedMetadata (const Twine &Name) const |
Return the first NamedMDNode in the module with the specified name. | |
NamedMDNode * | getOrInsertNamedMetadata (StringRef Name) |
Return the named MDNode in the module with the specified name. | |
void | eraseNamedMetadata (NamedMDNode *NMD) |
Remove the given NamedMDNode from this module and delete it. | |
Comdat Accessors | |
Comdat * | getOrInsertComdat (StringRef Name) |
Return the Comdat in the module with the specified name. | |
Module Flags Accessors | |
void | getModuleFlagsMetadata (SmallVectorImpl< ModuleFlagEntry > &Flags) const |
Returns the module flags in the provided vector. | |
Metadata * | getModuleFlag (StringRef Key) const |
Return the corresponding value if Key appears in module flags, otherwise return null. | |
NamedMDNode * | getModuleFlagsMetadata () const |
Returns the NamedMDNode in the module that represents module-level flags. | |
NamedMDNode * | getOrInsertModuleFlagsMetadata () |
Returns the NamedMDNode in the module that represents module-level flags. | |
void | addModuleFlag (ModFlagBehavior Behavior, StringRef Key, Metadata *Val) |
Add a module-level flag to the module-level flags metadata. | |
void | addModuleFlag (ModFlagBehavior Behavior, StringRef Key, Constant *Val) |
void | addModuleFlag (ModFlagBehavior Behavior, StringRef Key, uint32_t Val) |
void | addModuleFlag (MDNode *Node) |
void | setModuleFlag (ModFlagBehavior Behavior, StringRef Key, Metadata *Val) |
Like addModuleFlag but replaces the old module flag if it already exists. | |
Materialization | |
void | setMaterializer (GVMaterializer *GVM) |
Sets the GVMaterializer to GVM. | |
GVMaterializer * | getMaterializer () const |
Retrieves the GVMaterializer, if any, for this Module. | |
bool | isMaterialized () const |
llvm::Error | materialize (GlobalValue *GV) |
Make sure the GlobalValue is fully read. | |
llvm::Error | materializeAll () |
Make sure all GlobalValues in this Module are fully read and clear the Materializer. | |
llvm::Error | materializeMetadata () |
void | removeGlobalVariable (GlobalVariable *GV) |
Detach global variable GV from the list but don't delete it. | |
void | eraseGlobalVariable (GlobalVariable *GV) |
Remove global variable GV from the list and delete it. | |
void | insertGlobalVariable (GlobalVariable *GV) |
Insert global variable GV at the end of the global variable list and take ownership. | |
void | insertGlobalVariable (GlobalListType::iterator Where, GlobalVariable *GV) |
Insert global variable GV into the global variable list before Where and take ownership. | |
Global Variable Iteration | |
global_iterator | global_begin () |
const_global_iterator | global_begin () const |
global_iterator | global_end () |
const_global_iterator | global_end () const |
size_t | global_size () const |
bool | global_empty () const |
iterator_range< global_iterator > | globals () |
iterator_range< const_global_iterator > | globals () const |
Function Iteration | |
iterator | begin () |
const_iterator | begin () const |
iterator | end () |
const_iterator | end () const |
reverse_iterator | rbegin () |
const_reverse_iterator | rbegin () const |
reverse_iterator | rend () |
const_reverse_iterator | rend () const |
size_t | size () const |
bool | empty () const |
iterator_range< iterator > | functions () |
iterator_range< const_iterator > | functions () const |
Alias Iteration | |
alias_iterator | alias_begin () |
const_alias_iterator | alias_begin () const |
alias_iterator | alias_end () |
const_alias_iterator | alias_end () const |
size_t | alias_size () const |
bool | alias_empty () const |
iterator_range< alias_iterator > | aliases () |
iterator_range< const_alias_iterator > | aliases () const |
IFunc Iteration | |
ifunc_iterator | ifunc_begin () |
const_ifunc_iterator | ifunc_begin () const |
ifunc_iterator | ifunc_end () |
const_ifunc_iterator | ifunc_end () const |
size_t | ifunc_size () const |
bool | ifunc_empty () const |
iterator_range< ifunc_iterator > | ifuncs () |
iterator_range< const_ifunc_iterator > | ifuncs () const |
Named Metadata Iteration | |
named_metadata_iterator | named_metadata_begin () |
const_named_metadata_iterator | named_metadata_begin () const |
named_metadata_iterator | named_metadata_end () |
const_named_metadata_iterator | named_metadata_end () const |
size_t | named_metadata_size () const |
bool | named_metadata_empty () const |
iterator_range< named_metadata_iterator > | named_metadata () |
iterator_range< const_named_metadata_iterator > | named_metadata () const |
debug_compile_units_iterator | debug_compile_units_begin () const |
debug_compile_units_iterator | debug_compile_units_end () const |
iterator_range< debug_compile_units_iterator > | debug_compile_units () const |
Return an iterator for all DICompileUnits listed in this Module's llvm.dbg.cu named metadata node and aren't explicitly marked as NoDebug. | |
Utility functions for printing and dumping Module objects | |
void | print (raw_ostream &OS, AssemblyAnnotationWriter *AAW, bool ShouldPreserveUseListOrder=false, bool IsForDebug=false) const |
Print the module to an output stream with an optional AssemblyAnnotationWriter. | |
void | dump () const |
Dump the module to stderr (for debugging). | |
void | dropAllReferences () |
This function causes all the subinstructions to "let go" of all references that they are maintaining. | |
Utility functions for querying Debug information. | |
unsigned | getNumberRegisterParameters () const |
Returns the Number of Register ParametersDwarf Version by checking module flags. | |
unsigned | getDwarfVersion () const |
Returns the Dwarf Version by checking module flags. | |
bool | isDwarf64 () const |
Returns the DWARF format by checking module flags. | |
unsigned | getCodeViewFlag () const |
Returns the CodeView Version by checking module flags. | |
Utility functions for querying and setting PIC level | |
PICLevel::Level | getPICLevel () const |
Returns the PIC level (small or large model) | |
void | setPICLevel (PICLevel::Level PL) |
Set the PIC level (small or large model) | |
Utility functions for querying and setting PIE level | |
PIELevel::Level | getPIELevel () const |
Returns the PIE level (small or large model) | |
void | setPIELevel (PIELevel::Level PL) |
Set the PIE level (small or large model) | |
Utility function for querying and setting code model | |
std::optional< CodeModel::Model > | getCodeModel () const |
Returns the code model (tiny, small, kernel, medium or large model) | |
void | setCodeModel (CodeModel::Model CL) |
Set the code model (tiny, small, kernel, medium or large) | |
Utility functions for querying and setting PGO summary | |
void | setProfileSummary (Metadata *M, ProfileSummary::Kind Kind) |
Attach profile summary metadata to this module. | |
Metadata * | getProfileSummary (bool IsCS) const |
Returns profile summary metadata. | |
Utility functions for querying and setting the build SDK version | |
void | setSDKVersion (const VersionTuple &V) |
Attach a build SDK version metadata to this module. | |
VersionTuple | getSDKVersion () const |
Get the build SDK version metadata. | |
Types And Enumerations | |
enum | ModFlagBehavior { Error = 1 , Warning = 2 , Require = 3 , Override = 4 , Append = 5 , AppendUnique = 6 , Max = 7 , Min = 8 , ModFlagBehaviorFirstVal = Error , ModFlagBehaviorLastVal = Min } |
This enumeration defines the supported behaviors of module flags. More... | |
using | GlobalListType = SymbolTableList< GlobalVariable > |
The type for the list of global variables. | |
using | FunctionListType = SymbolTableList< Function > |
The type for the list of functions. | |
using | AliasListType = SymbolTableList< GlobalAlias > |
The type for the list of aliases. | |
using | IFuncListType = SymbolTableList< GlobalIFunc > |
The type for the list of ifuncs. | |
using | NamedMDListType = ilist< NamedMDNode > |
The type for the list of named metadata. | |
using | ComdatSymTabType = StringMap< Comdat > |
The type of the comdat "symbol" table. | |
using | NamedMDSymTabType = StringMap< NamedMDNode * > |
The type for mapping names to named metadata. | |
using | global_iterator = GlobalListType::iterator |
The Global Variable iterator. | |
using | const_global_iterator = GlobalListType::const_iterator |
The Global Variable constant iterator. | |
using | iterator = FunctionListType::iterator |
The Function iterators. | |
using | const_iterator = FunctionListType::const_iterator |
The Function constant iterator. | |
using | reverse_iterator = FunctionListType::reverse_iterator |
The Function reverse iterator. | |
using | const_reverse_iterator = FunctionListType::const_reverse_iterator |
The Function constant reverse iterator. | |
using | alias_iterator = AliasListType::iterator |
The Global Alias iterators. | |
using | const_alias_iterator = AliasListType::const_iterator |
The Global Alias constant iterator. | |
using | ifunc_iterator = IFuncListType::iterator |
The Global IFunc iterators. | |
using | const_ifunc_iterator = IFuncListType::const_iterator |
The Global IFunc constant iterator. | |
using | named_metadata_iterator = NamedMDListType::iterator |
The named metadata iterators. | |
using | const_named_metadata_iterator = NamedMDListType::const_iterator |
The named metadata constant iterators. | |
static bool | isValidModFlagBehavior (Metadata *MD, ModFlagBehavior &MFB) |
Checks if Metadata represents a valid ModFlagBehavior, and stores the converted result in MFB. | |
static bool | isValidModuleFlag (const MDNode &ModFlag, ModFlagBehavior &MFB, MDString *&Key, Metadata *&Val) |
Check if the given module flag metadata represents a valid module flag, and store the flag behavior, the key string and the value metadata. | |
Member Variables | |
class | Constant |
Direct access to the globals list, functions list, and symbol table | |
class | llvm::SymbolTableListTraits< llvm::GlobalVariable > |
class | llvm::SymbolTableListTraits< llvm::GlobalAlias > |
class | llvm::SymbolTableListTraits< llvm::GlobalIFunc > |
static FunctionListType Module::* | getSublistAccess (Function *) |
const FunctionListType & | getFunctionList () const |
Get the Module's list of functions (constant). | |
FunctionListType & | getFunctionList () |
Get the Module's list of functions. | |
void | removeAlias (GlobalAlias *Alias) |
Detach Alias from the list but don't delete it. | |
void | eraseAlias (GlobalAlias *Alias) |
Remove Alias from the list and delete it. | |
void | insertAlias (GlobalAlias *Alias) |
Insert Alias at the end of the alias list and take ownership. | |
void | removeIFunc (GlobalIFunc *IFunc) |
Detach IFunc from the list but don't delete it. | |
void | eraseIFunc (GlobalIFunc *IFunc) |
Remove IFunc from the list and delete it. | |
void | insertIFunc (GlobalIFunc *IFunc) |
Insert IFunc at the end of the alias list and take ownership. | |
void | removeNamedMDNode (NamedMDNode *MDNode) |
Detach MDNode from the list but don't delete it. | |
void | eraseNamedMDNode (NamedMDNode *MDNode) |
Remove MDNode from the list and delete it. | |
void | insertNamedMDNode (NamedMDNode *MDNode) |
Insert MDNode at the end of the alias list and take ownership. | |
const ValueSymbolTable & | getValueSymbolTable () const |
Get the symbol table of global variable and function identifiers. | |
ValueSymbolTable & | getValueSymbolTable () |
Get the Module's symbol table of global variable and function identifiers. | |
const ComdatSymTabType & | getComdatSymbolTable () const |
Get the Module's symbol table for COMDATs (constant). | |
ComdatSymTabType & | getComdatSymbolTable () |
Get the Module's symbol table for COMDATs. | |
A Module instance is used to store all the information related to an LLVM module.
Modules are the top level container of all other LLVM Intermediate Representation (IR) objects. Each module directly contains a list of globals variables, a list of functions, a list of libraries (or other modules) this module depends on, a symbol table, and various data about the target's characteristics.
A module maintains a GlobalList object that is used to hold all constant references to global variables in the module. When a global variable is destroyed, it should have no entries in the GlobalList. The main container class for the LLVM Intermediate Representation.
using llvm::Module::NamedMDSymTabType = StringMap<NamedMDNode *> |
This enumeration defines the supported behaviors of module flags.
|
explicit |
The Module constructor.
Note that there is no default constructor. You must provide a name for the module upon construction.
Definition at line 72 of file Module.cpp.
Module::~Module | ( | ) |
The module destructor. This will dropAllReferences.
Definition at line 78 of file Module.cpp.
References llvm::iplist_impl< IntrusiveListT, TraitsT >::clear(), and dropAllReferences().
void Module::addModuleFlag | ( | MDNode * | Node | ) |
Definition at line 366 of file Module.cpp.
References llvm::NamedMDNode::addOperand(), assert(), and getOrInsertModuleFlagsMetadata().
void Module::addModuleFlag | ( | ModFlagBehavior | Behavior, |
StringRef | Key, | ||
Constant * | Val | ||
) |
Definition at line 357 of file Module.cpp.
References addModuleFlag(), and llvm::ConstantAsMetadata::get().
void Module::addModuleFlag | ( | ModFlagBehavior | Behavior, |
StringRef | Key, | ||
Metadata * | Val | ||
) |
Add a module-level flag to the module-level flags metadata.
addModuleFlag - Add a module-level flag to the module-level flags metadata.
It will create the module-level flags named metadata if it doesn't already exist.
Definition at line 349 of file Module.cpp.
References llvm::NamedMDNode::addOperand(), llvm::ConstantAsMetadata::get(), llvm::MDNode::get(), llvm::MDString::get(), llvm::ConstantInt::get(), llvm::Type::getInt32Ty(), getOrInsertModuleFlagsMetadata(), and Int32Ty.
Referenced by addModuleFlag(), setCodeModel(), setDarwinTargetVariantTriple(), setDirectAccessExternalData(), setFramePointer(), setModuleFlag(), setOverrideStackAlignment(), setPICLevel(), setPIELevel(), setRtLibUseGOT(), setSemanticInterposition(), setStackProtectorGuard(), setStackProtectorGuardOffset(), setStackProtectorGuardReg(), setStackProtectorGuardSymbol(), and setUwtable().
void Module::addModuleFlag | ( | ModFlagBehavior | Behavior, |
StringRef | Key, | ||
uint32_t | Val | ||
) |
Definition at line 361 of file Module.cpp.
References addModuleFlag(), llvm::ConstantInt::get(), llvm::Type::getInt32Ty(), and Int32Ty.
|
inline |
Definition at line 700 of file Module.h.
Referenced by LLVMGetFirstGlobalAlias(), LLVMGetLastGlobalAlias(), and LLVMGetPreviousGlobalAlias().
|
inline |
|
inline |
Definition at line 702 of file Module.h.
Referenced by LLVMGetFirstGlobalAlias(), LLVMGetLastGlobalAlias(), and LLVMGetNextGlobalAlias().
|
inline |
|
inline |
Definition at line 707 of file Module.h.
References llvm::make_range().
Referenced by dropAllReferences(), global_values(), and llvm::thinLTOFinalizeInModule().
|
inline |
Definition at line 710 of file Module.h.
References llvm::make_range().
|
inline |
|
inline |
Definition at line 678 of file Module.h.
Referenced by LLVMGetFirstFunction(), and LLVMGetLastFunction().
|
inline |
std::unique_ptr< RandomNumberGenerator > Module::createRNG | ( | const StringRef | Name | ) | const |
Get a RandomNumberGenerator salted for use with this module.
The RNG can be seeded via -rng-seed=<uint64> and is salted with the ModuleID and the provided pass salt. The returned RNG should not be shared across threads or passes.
A unique RNG per pass ensures a reproducible random stream even when other randomness consuming passes are added or removed. In addition, the random stream will be reproducible across LLVM versions when the pass does not change.
Definition at line 88 of file Module.cpp.
References llvm::sys::path::filename(), getModuleIdentifier(), and Name.
|
inline |
Return an iterator for all DICompileUnits listed in this Module's llvm.dbg.cu named metadata node and aren't explicitly marked as NoDebug.
Definition at line 835 of file Module.h.
References llvm::make_range().
|
inline |
|
inline |
void Module::dropAllReferences | ( | ) |
This function causes all the subinstructions to "let go" of all references that they are maintaining.
This allows one to 'delete' a whole class at a time, even though there may be circular references... first all references are dropped, and all use counts go to zero. Then everything is delete'd for real. Note that no operations are valid on an object that has "dropped all references", except operator delete.
Definition at line 534 of file Module.cpp.
References aliases(), F, globals(), and ifuncs().
Referenced by ~Module().
void Module::dropTriviallyDeadConstantArrays | ( | ) |
Destroy ConstantArrays in LLVMContext if they are not used.
ConstantArrays constructed during linking can cause quadratic memory explosion. Releasing all unused constants can cause a 20% LTO compile-time slowdown for a large application.
NOTE: Constants are currently owned by LLVMContext. This can then only be called where all uses of the LLVMContext are understood.
Definition at line 171 of file LLVMContextImpl.cpp.
References llvm::LLVMContextImpl::dropTriviallyDeadConstantArrays(), and llvm::LLVMContext::pImpl.
Referenced by llvm::IRMover::move().
LLVM_DUMP_METHOD void Module::dump | ( | ) | const |
Dump the module to stderr (for debugging).
Definition at line 4946 of file AsmWriter.cpp.
References llvm::dbgs(), and print().
|
inline |
Definition at line 680 of file Module.h.
Referenced by LLVMGetFirstFunction(), and LLVMGetLastFunction().
|
inline |
|
inline |
Remove Alias
from the list and delete it.
Definition at line 589 of file Module.h.
Referenced by llvm::GlobalAlias::eraseFromParent().
|
inline |
Remove global variable GV
from the list and delete it.
Definition at line 548 of file Module.h.
Referenced by llvm::GlobalVariable::eraseFromParent().
|
inline |
Remove IFunc
from the list and delete it.
Definition at line 598 of file Module.h.
Referenced by llvm::GlobalIFunc::eraseFromParent().
|
inline |
Remove MDNode
from the list and delete it.
Definition at line 607 of file Module.h.
Referenced by eraseNamedMetadata().
void Module::eraseNamedMetadata | ( | NamedMDNode * | NMD | ) |
Remove the given NamedMDNode from this module and delete it.
eraseNamedMetadata - Remove the given NamedMDNode from this module and delete it.
Definition at line 272 of file Module.cpp.
References llvm::StringMap< ValueTy, AllocatorTy >::erase(), eraseNamedMDNode(), and llvm::NamedMDNode::getName().
Referenced by llvm::NamedMDNode::eraseFromParent().
|
inline |
Definition at line 689 of file Module.h.
References llvm::make_range().
Referenced by global_objects(), and global_values().
|
inline |
Definition at line 692 of file Module.h.
References llvm::make_range().
std::optional< CodeModel::Model > Module::getCodeModel | ( | ) | const |
Returns the code model (tiny, small, kernel, medium or large model)
Definition at line 618 of file Module.cpp.
References getModuleFlag().
unsigned Module::getCodeViewFlag | ( | ) | const |
Returns the CodeView Version by checking module flags.
Returns zero if not present in module.
Definition at line 568 of file Module.cpp.
References getModuleFlag().
Referenced by llvm::X86FrameLowering::emitPrologue(), and llvm::X86AsmPrinter::runOnMachineFunction().
|
inline |
|
inline |
|
inline |
Get the global data context.
Definition at line 262 of file Module.h.
References Context.
Referenced by llvm::AMDGPUMachineModuleInfo::AMDGPUMachineModuleInfo(), llvm::AMDGPUTargetLowering::analyzeFormalArgumentsCompute(), buildUMulWithOverflowFunc(), llvm::OpenMPIRBuilder::createAtomicCompare(), llvm::OpenMPIRBuilder::createAtomicRead(), llvm::OpenMPIRBuilder::createAtomicWrite(), llvm::OpenMPIRBuilder::createCopyinClauseBlocks(), llvm::OpenMPIRBuilder::createGlobalFlag(), llvm::OpenMPIRBuilder::createLoopSkeleton(), llvm::OpenMPIRBuilder::createOffloadEntriesAndInfoMetadata(), llvm::OpenMPIRBuilder::createOffloadEntry(), llvm::OpenMPIRBuilder::createOffloadMapnames(), llvm::OpenMPIRBuilder::createOffloadMaptypes(), llvm::OpenMPIRBuilder::createOMPInteropDestroy(), llvm::OpenMPIRBuilder::createOMPInteropInit(), llvm::OpenMPIRBuilder::createOMPInteropUse(), llvm::OpenMPIRBuilder::createParallel(), llvm::OpenMPIRBuilder::createReductions(), llvm::OpenMPIRBuilder::createSections(), llvm::OpenMPIRBuilder::createTask(), llvm::MachineInstr::emitError(), emitErrorMsg(), llvm::WebAssemblyAsmPrinter::emitGlobalVariable(), EmitInlineAsmStr(), llvm::OpenMPIRBuilder::emitOffloadingArraysArgument(), llvm::OpenMPIRBuilder::emitOffloadingEntry(), llvm::SanitizerStatReport::finish(), llvm::OpenMPIRBuilder::getOrCreateSrcLocStr(), llvm::FunctionImporter::importFunctions(), setDarwinTargetVariantTriple(), setPartialSampleProfileRatio(), setStackProtectorGuard(), setStackProtectorGuardReg(), setStackProtectorGuardSymbol(), SwitchToLookupTable(), llvm::InlineAdvisorAnalysis::Result::tryCreate(), and llvm::dxil::ValidatorVersionMD::update().
VersionTuple Module::getDarwinTargetVariantSDKVersion | ( | ) | const |
Get the target variant version build SDK version metadata.
An empty version is returned if no such metadata is attached.
Definition at line 865 of file Module.cpp.
References getModuleFlag(), and getSDKVersionMD().
StringRef Module::getDarwinTargetVariantTriple | ( | ) | const |
Get the target variant triple which is a string describing a variant of the target host platform.
For example, Mac Catalyst can be a variant target triple for a macOS target.
Definition at line 854 of file Module.cpp.
References getModuleFlag().
const DataLayout & Module::getDataLayout | ( | ) | const |
Get the data layout for the module's target platform.
Definition at line 398 of file Module.cpp.
Referenced by AddAlignmentAssumptions(), llvm::addDiffRuntimeChecks(), llvm::addRuntimeChecks(), llvm::AMDGPUTargetLowering::analyzeFormalArgumentsCompute(), buildOverlapMapAndRecordDeclares(), CanProveNotTakenFirstIteration(), llvm::CloneAndPruneIntoFromInst(), llvm::FunctionComparator::cmpTypes(), collectFrameAlloca(), computeAllocaDefaultAlign(), computeLoadStoreDefaultAlign(), computeRecurrenceType(), computeUnlikelySuccessors(), llvm::JumpThreadingPass::computeValueKnownInPredecessorsImpl(), llvm::IRBuilderBase::CreateAlignedLoad(), llvm::IRBuilderBase::CreateAlignedStore(), llvm::IRBuilderBase::CreateAlloca(), llvm::IRBuilderBase::CreateAtomicCmpXchg(), llvm::IRBuilderBase::CreateAtomicRMW(), llvm::createMemCpyLoopKnownSize(), llvm::OpenMPIRBuilder::createReductions(), llvm::OpenMPIRBuilder::createTask(), createWrapper(), llvm::DependenceInfo::depends(), llvm::AsmPrinter::emitAlignment(), llvm::AsmPrinter::emitGlobalVariable(), llvm::AMDGPUAsmPrinter::emitGlobalVariable(), llvm::WebAssemblyAsmPrinter::emitGlobalVariable(), llvm::emitLinkerFlagsForGlobalCOFF(), llvm::LoongArchTargetLowering::emitMaskedAtomicRMWIntrinsic(), llvm::RISCVTargetLowering::emitMaskedAtomicRMWIntrinsic(), llvm::OpenMPIRBuilder::emitOffloadingEntry(), llvm::AsmPrinter::emitSpecialLLVMGlobal(), llvm::OpenMPIRBuilder::emitTargetKernel(), llvm::VPExpandSCEVRecipe::execute(), llvm::expandAtomicRMWToCmpXchg(), llvm::findAvailablePtrLoadStore(), llvm::MemoryLocation::get(), getAlign(), llvm::memtag::getAllocaSizeInBytes(), llvm::getAllocSize(), getAtomicOpSize(), llvm::getConstantDataArrayInfo(), llvm::ScalarEvolution::getDataLayout(), llvm::AsmPrinter::getDataLayout(), llvm::MachineIRBuilder::getDataLayout(), llvm::MachineFunction::getDataLayout(), llvm::DemandedBits::getDemandedBits(), getEdgeValueLocal(), getELFSectionNameForGlobal(), getGEPInductionOperand(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::ExecutionEngine::getMangledName(), llvm::Mangler::getNameWithPrefix(), llvm::MemoryDependenceResults::getNonLocalPointerDependency(), llvm::OpenMPIRBuilder::getOrCreateIdent(), llvm::OpenMPIRBuilder::getOrCreateInternalVariable(), llvm::getPtrStride(), llvm::LoopVectorizationCostModel::getSmallestAndWidestTypes(), llvm::DependenceInfo::getSplitIteration(), llvm::TargetLoweringObjectFile::getSymbolWithGlobalValueBase(), llvm::FunctionLoweringInfo::getValueFromVirtualReg(), llvm::SSAUpdater::GetValueInMiddleOfBlock(), llvm::RuntimePointerChecking::insert(), instCombineLD1GatherIndex(), instCombineST1ScatterIndex(), llvm::orc::IRMaterializationUnit::IRMaterializationUnit(), llvm::isDereferenceableAndAlignedInLoop(), llvm::HexagonTargetObjectFile::isGlobalInSmallSection(), llvm::RISCVELFTargetObjectFile::isGlobalInSmallSection(), llvm::GCNTTIImpl::isInlineAsmSourceOfDivergence(), isLoadInvariantInLoop(), llvm::SystemZSubtarget::isPC32DBLSymbol(), isPointerValueDeadOnEntryToFunction(), isSafePHIToSpeculate(), llvm::isSafeToSpeculativelyExecuteWithOpcode(), IsSmallObject(), llvm::AArch64TargetLowering::lowerInterleavedLoad(), llvm::ARMTargetLowering::lowerInterleavedLoad(), llvm::RISCVTargetLowering::lowerInterleavedLoad(), maybePrintCallAddrSpace(), NegateValue(), performGlobalAddressCombine(), llvm::JumpThreadingPass::processBlock(), llvm::JumpThreadingPass::processImpliedCondition(), processInternalGlobal(), llvm::promoteLoopAccessesToScalars(), llvm::ReadByteArrayFromGlobal(), llvm::OpenMPIRBuilder::registerTargetGlobalVariable(), llvm::ConstantHoistingPass::runImpl(), llvm::TargetLoweringObjectFileMachO::SelectSectionForGlobal(), llvm::TargetLoweringObjectFileXCOFF::SelectSectionForGlobal(), llvm::XCoreTargetObjectFile::SelectSectionForGlobal(), llvm::FunctionLoweringInfo::set(), shortenAssignment(), llvm::simplifyCFG(), llvm::SimplifyInstructionsInBlock(), llvm::JumpThreadingPass::simplifyPartiallyRedundantLoad(), llvm::simplifyRetainedKnowledge(), simplifyTerminatorLeadingToRet(), simplifyX86immShift(), simplifyX86varShift(), llvm::SplitBlockAndInsertSimpleForLoop(), splitGlobal(), llvm::PPCTargetLowering::supportsTailCallFor(), llvm::JumpThreadingPass::threadGuard(), TryToShrinkGlobalToBoolean(), valueCoversEntireFragment(), llvm::LoopVersioning::versionLoop(), and visitIVCast().
|
inline |
Get the data layout string for the module's target platform.
This is equivalent to getDataLayout()->getStringRepresentation().
Definition at line 249 of file Module.h.
References DL.
bool Module::getDirectAccessExternalData | ( | ) | const |
Get/set whether referencing global variables can use direct access relocations on ELF targets.
Definition at line 675 of file Module.cpp.
References getModuleFlag(), getPICLevel(), and llvm::PICLevel::NotPIC.
unsigned Module::getDwarfVersion | ( | ) | const |
Returns the Dwarf Version by checking module flags.
Definition at line 556 of file Module.cpp.
References getModuleFlag().
Referenced by llvm::DwarfDebug::DwarfDebug().
FramePointerKind Module::getFramePointer | ( | ) | const |
Get/set whether synthesized functions should get the "frame-pointer" attribute.
Definition at line 697 of file Module.cpp.
References getModuleFlag().
Look up the specified function in the module symbol table.
If it does not exist, return null.
Definition at line 175 of file Module.cpp.
References getNamedValue(), and Name.
Referenced by llvm::SelectionDAG::getSymbolFunctionGlobalAddress(), llvm::VFABI::getVectorVariantNames(), llvm::ScalarEvolution::isBasicBlockEntryGuardedByCond(), and llvm::JumpThreadingPass::runImpl().
|
inline |
|
inline |
Get the Module's list of functions (constant).
Definition at line 579 of file Module.h.
Referenced by llvm::Function::eraseFromParent(), llvm::OpenMPIRBuilder::finalize(), llvm::Function::removeFromParent(), and llvm::CallGraph::removeFunctionFromModule().
|
inline |
Look up the specified global variable in the module symbol table.
If it does not exist, return null. If AllowInternal is set to true, this function will return types that have InternalLinkage. By default, these types are not returned.
Definition at line 414 of file Module.h.
References getGlobalVariable(), and Name.
GlobalVariable * Module::getGlobalVariable | ( | StringRef | Name, |
bool | AllowLocal | ||
) | const |
getGlobalVariable - Look up the specified global variable in the module symbol table.
If it does not exist, return null. The type argument should be the underlying type of the global, i.e., it should not have the top-level PointerType, which represents the address of the global. If AllowLocal is set to true, this function will return types that have an local. By default, these types are not returned.
Definition at line 190 of file Module.cpp.
References getNamedValue(), and Name.
|
inline |
Definition at line 420 of file Module.h.
References getGlobalVariable(), and Name.
std::vector< StructType * > Module::getIdentifiedStructTypes | ( | ) | const |
Definition at line 463 of file Module.cpp.
References llvm::TypeFinder::begin(), llvm::TypeFinder::end(), and llvm::TypeFinder::run().
unsigned Module::getInstructionCount | ( | ) | const |
Returns the number of non-debug IR instructions in the module.
This is equivalent to the sum of the IR instruction counts of each function contained in the module.
Definition at line 575 of file Module.cpp.
References F.
|
inline |
Retrieves the GVMaterializer, if any, for this Module.
unsigned Module::getMaxTLSAlignment | ( | ) | const |
Definition at line 761 of file Module.cpp.
References getModuleFlag().
Return a unique non-zero ID for the specified metadata kind.
getMDKindID - Return a unique non-zero ID for the specified metadata kind.
This ID is uniqued across modules in the current LLVMContext.
Definition at line 120 of file Module.cpp.
References llvm::LLVMContext::getMDKindID(), and Name.
void Module::getMDKindNames | ( | SmallVectorImpl< StringRef > & | Result | ) | const |
Populate client supplied SmallVector with the name for custom metadata IDs registered in this LLVMContext.
getMDKindNames - Populate client supplied SmallVector with the name for custom metadata IDs registered in this LLVMContext.
ID #0 is not used, so it is filled in as an empty string.
Definition at line 127 of file Module.cpp.
References llvm::LLVMContext::getMDKindNames().
Return the corresponding value if Key appears in module flags, otherwise return null.
Definition at line 322 of file Module.cpp.
References getModuleFlagsMetadata().
Referenced by llvm::calculateSEHStateNumbers(), llvm::calculateWinCXXEHStateNumbers(), llvm::AsmPrinter::emitFunctionBody(), getCodeModel(), getCodeViewFlag(), getDarwinTargetVariantSDKVersion(), getDarwinTargetVariantTriple(), getDirectAccessExternalData(), getDwarfVersion(), getFramePointer(), getMaxTLSAlignment(), getNumberRegisterParameters(), getOverrideStackAlignment(), getPICLevel(), getPIELevel(), getProfileSummary(), getRtLibUseGOT(), getSDKVersion(), getSemanticInterposition(), getStackProtectorGuard(), getStackProtectorGuardOffset(), getStackProtectorGuardReg(), getStackProtectorGuardSymbol(), getUwtable(), isDwarf64(), and llvm::X86AsmPrinter::runOnMachineFunction().
NamedMDNode * Module::getModuleFlagsMetadata | ( | ) | const |
Returns the NamedMDNode in the module that represents module-level flags.
getModuleFlagsMetadata - Returns the NamedMDNode in the module that represents module-level flags.
This method returns null if there are no module-level flags.
Definition at line 335 of file Module.cpp.
References getNamedMetadata().
Referenced by getModuleFlag(), and getModuleFlagsMetadata().
void Module::getModuleFlagsMetadata | ( | SmallVectorImpl< ModuleFlagEntry > & | Flags | ) | const |
Returns the module flags in the provided vector.
getModuleFlagsMetadata - Returns the module flags in the provided vector.
Definition at line 303 of file Module.cpp.
References Flags, getModuleFlagsMetadata(), isValidModuleFlag(), and llvm::NamedMDNode::operands().
|
inline |
Get the module identifier which is, essentially, the name of the module.
Definition at line 228 of file Module.h.
Referenced by createRNG(), llvm::ThinLTOCodeGenerator::crossModuleImport(), llvm::ThinLTOCodeGenerator::emitImports(), llvm::ThinLTOCodeGenerator::gatherImportedSummariesForModule(), llvm::DOTGraphTraits< CallGraphDOTInfo * >::getGraphName(), llvm::FunctionImporter::importFunctions(), llvm::ThinLTOCodeGenerator::internalize(), llvm::DiagnosticInfoIgnoringInvalidDebugMetadata::print(), llvm::PassManagerPrettyStackEntry::print(), and llvm::ThinLTOCodeGenerator::promote().
|
inline |
|
inline |
Get a short "name" for the module.
This is useful for debugging or logging. It is essentially a convenience wrapper around getModuleIdentifier().
Definition at line 245 of file Module.h.
Referenced by llvm::DwarfCompileUnit::constructImportedEntityDIE(), llvm::AsmPrinter::emitStackUsage(), llvm::OpenMPIRBuilder::getOrCreateSrcLocStr(), and llvm::ThinLTOCodeGenerator::run().
GlobalAlias * Module::getNamedAlias | ( | StringRef | Name | ) | const |
Return the global alias in the module with the specified name, of arbitrary type.
This method returns null if a global with the specified name is not found.
Definition at line 240 of file Module.cpp.
References getNamedValue(), and Name.
|
inline |
|
inline |
Return the global variable in the module with the specified name, of arbitrary type.
This method returns null if a global with the specified name is not found.
Definition at line 429 of file Module.h.
References getGlobalVariable(), and Name.
Referenced by llvm::TargetLowering::LowerToTLSEmulatedModel().
GlobalIFunc * Module::getNamedIFunc | ( | StringRef | Name | ) | const |
Return the global ifunc in the module with the specified name, of arbitrary type.
This method returns null if a global with the specified name is not found.
Definition at line 244 of file Module.cpp.
References getNamedValue(), and Name.
NamedMDNode * Module::getNamedMetadata | ( | const Twine & | Name | ) | const |
Return the first NamedMDNode in the module with the specified name.
getNamedMetadata - Return the first NamedMDNode in the module with the specified name.
This method returns null if a NamedMDNode with the specified name is not found.
Definition at line 251 of file Module.cpp.
References llvm::StringMap< ValueTy, AllocatorTy >::lookup(), and Name.
Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::cacheAnnotationFromMD(), getKernelArgAttribute(), getModuleFlagsMetadata(), and llvm::OpenMPIRBuilder::loadOffloadInfoMetadata().
GlobalValue * Module::getNamedValue | ( | StringRef | Name | ) | const |
Return the global value in the module with the specified name, of arbitrary type.
getNamedValue - Return the first global value in the module with the specified name, of arbitrary type.
This method returns null if a global with the specified name is not found.
Definition at line 110 of file Module.cpp.
References getValueSymbolTable(), lookup(), and Name.
Referenced by llvm::OpenMPIRBuilder::createOffloadEntriesAndInfoMetadata(), llvm::RecordStreamer::flushSymverDirectives(), llvm::OpenMPIRBuilder::getAddrOfDeclareTargetVar(), getComdatGVForCOFF(), getFunction(), getGlobalVariable(), getNamedAlias(), getNamedIFunc(), getOrInsertFunction(), getOrInsertGlobal(), getUniqueIntrinsicName(), and llvm::OpenMPIRBuilder::registerTargetGlobalVariable().
unsigned Module::getNumberRegisterParameters | ( | ) | const |
Returns the Number of Register ParametersDwarf Version by checking module flags.
Definition at line 548 of file Module.cpp.
References getModuleFlag().
unsigned Module::getNumNamedValues | ( | ) | const |
Return the number of global values in the module.
Definition at line 114 of file Module.cpp.
References getValueSymbolTable(), and llvm::ValueSymbolTable::size().
void Module::getOperandBundleTags | ( | SmallVectorImpl< StringRef > & | Result | ) | const |
Populate client supplied SmallVector with the bundle tags registered in this LLVMContext.
The bundle tags are ordered by increasing bundle IDs.
Definition at line 131 of file Module.cpp.
References llvm::LLVMContext::getOperandBundleTags().
Return the Comdat in the module with the specified name.
It is created if it didn't already exist.
Definition at line 582 of file Module.cpp.
References llvm::StringMap< ValueTy, AllocatorTy >::insert(), and Name.
|
delete |
|
inline |
Look up the specified function in the module symbol table.
If it does not exist, add a prototype for the function and return it. This function guarantees to return a constant of pointer to the specified function type or a ConstantExpr BitCast of that type if the named function has a different type. This version of the method takes a list of function arguments, which makes it easier for clients to use.
FunctionCallee Module::getOrInsertFunction | ( | StringRef | Name, |
FunctionType * | T | ||
) |
Definition at line 168 of file Module.cpp.
References getOrInsertFunction(), and Name.
FunctionCallee Module::getOrInsertFunction | ( | StringRef | Name, |
FunctionType * | T, | ||
AttributeList | AttributeList | ||
) |
Look up the specified function in the module symbol table.
Four possibilities:
In all cases, the returned value is a FunctionCallee wrapper around the 'FunctionType T' passed in, as well as a 'Value' either of the Function or the bitcast to the function.
Note: For library calls getOrInsertLibFunc() should be used instead.
Definition at line 144 of file Module.cpp.
References llvm::Function::Create(), llvm::GlobalValue::ExternalLinkage, F, llvm::PointerType::get(), llvm::ConstantExpr::getBitCast(), getNamedValue(), llvm::DataLayout::getProgramAddressSpace(), Name, and llvm::iplist_impl< IntrusiveListT, TraitsT >::push_back().
Referenced by llvm::OpenMPIRBuilder::createTask(), llvm::SanitizerStatReport::finish(), and getOrInsertFunction().
|
inline |
Look up the specified global in the module symbol table.
If required, this overload constructs the global variable using its constructor's defaults.
Definition at line 226 of file Module.cpp.
References llvm::GlobalValue::ExternalLinkage, getOrInsertGlobal(), and Name.
Constant * Module::getOrInsertGlobal | ( | StringRef | Name, |
Type * | Ty, | ||
function_ref< GlobalVariable *()> | CreateGlobalCallback | ||
) |
Look up the specified global in the module symbol table.
getOrInsertGlobal - Look up the specified global in the module symbol table.
If it does not exist, invoke a callback to create a declaration of the global and return it. The global is constantexpr casted to the expected type if necessary.
Definition at line 205 of file Module.cpp.
References assert(), llvm::PointerType::get(), llvm::ConstantExpr::getBitCast(), getNamedValue(), llvm::Type::getPointerAddressSpace(), llvm::GlobalValue::getType(), and Name.
Referenced by getOrInsertGlobal().
NamedMDNode * Module::getOrInsertModuleFlagsMetadata | ( | ) |
Returns the NamedMDNode in the module that represents module-level flags.
getOrInsertModuleFlagsMetadata - Returns the NamedMDNode in the module that represents module-level flags.
If module-level flags aren't found, it creates the named metadata that contains them.
Definition at line 342 of file Module.cpp.
References getOrInsertNamedMetadata().
Referenced by addModuleFlag(), and setModuleFlag().
NamedMDNode * Module::getOrInsertNamedMetadata | ( | StringRef | Name | ) |
Return the named MDNode in the module with the specified name.
getOrInsertNamedMetadata - Return the first named MDNode in the module with the specified name.
This method returns a new NamedMDNode if a NamedMDNode with the specified name is not found.
Definition at line 260 of file Module.cpp.
References insertNamedMDNode(), and Name.
Referenced by llvm::CloneFunctionInto(), llvm::DIBuilder::createCompileUnit(), llvm::OpenMPIRBuilder::createOffloadEntriesAndInfoMetadata(), llvm::OpenMPIRBuilder::createOffloadEntry(), and getOrInsertModuleFlagsMetadata().
unsigned Module::getOverrideStackAlignment | ( | ) | const |
Get/set the stack alignment overridden from the default.
Definition at line 754 of file Module.cpp.
References getModuleFlag().
PICLevel::Level Module::getPICLevel | ( | ) | const |
Returns the PIC level (small or large model)
Definition at line 588 of file Module.cpp.
References getModuleFlag(), and llvm::PICLevel::NotPIC.
Referenced by getDirectAccessExternalData().
PIELevel::Level Module::getPIELevel | ( | ) | const |
Returns the PIE level (small or large model)
Definition at line 604 of file Module.cpp.
References llvm::PIELevel::Default, and getModuleFlag().
Referenced by llvm::TargetMachine::getTLSModel().
Returns profile summary metadata.
When IsCS is true, use the context sensitive profile summary.
Definition at line 643 of file Module.cpp.
References getModuleFlag().
Referenced by llvm::ProfileSummaryInfo::refresh(), and setPartialSampleProfileRatio().
bool Module::getRtLibUseGOT | ( | ) | const |
Returns true if PLT should be avoided for RTLib calls.
Definition at line 666 of file Module.cpp.
References getModuleFlag().
VersionTuple Module::getSDKVersion | ( | ) | const |
Get the build SDK version metadata.
An empty version is returned if no such metadata is attached.
Definition at line 815 of file Module.cpp.
References getModuleFlag(), and getSDKVersionMD().
bool Module::getSemanticInterposition | ( | ) | const |
Returns whether semantic interposition is to be respected.
Definition at line 648 of file Module.cpp.
References getModuleFlag().
Referenced by llvm::GlobalValue::isInterposable().
|
inline |
Get the module's original source file name.
When compiling from bitcode, this is taken from a bitcode record where it was recorded. For other compiles it is the same as the ModuleID, which would contain the source file name.
Definition at line 239 of file Module.h.
Referenced by llvm::FunctionImporter::importFunctions(), selectExplicitSectionGlobal(), and llvm::thinLTOInternalizeModule().
StringRef Module::getStackProtectorGuard | ( | ) | const |
Get/set what kind of stack protector guard to use.
Definition at line 707 of file Module.cpp.
References getModuleFlag().
int Module::getStackProtectorGuardOffset | ( | ) | const |
Get/set what offset from the stack protector to use.
Definition at line 743 of file Module.cpp.
References getModuleFlag().
StringRef Module::getStackProtectorGuardReg | ( | ) | const |
Get/set which register to use as the stack protector guard register.
The empty string is equivalent to "global". Other values may be "tls" or "sysreg".
Definition at line 719 of file Module.cpp.
References getModuleFlag().
StringRef Module::getStackProtectorGuardSymbol | ( | ) | const |
Get/set a symbol to use as the stack protector guard.
Definition at line 731 of file Module.cpp.
References getModuleFlag().
|
inlinestatic |
|
inline |
Get the target triple which is a string describing the target host.
Definition at line 258 of file Module.h.
Referenced by llvm::OpenMPIRBuilder::addAttributes(), llvm::ModuleSymbolTable::addModule(), calculateCXXStateNumbers(), llvm::GlobalObject::canIncreaseAlignment(), llvm::OpenMPIRBuilder::createOffloadEntry(), llvm::ThinLTOCodeGenerator::crossModuleImport(), llvm::ThinLTOCodeGenerator::emitImports(), llvm::ThinLTOCodeGenerator::gatherImportedSummariesForModule(), llvm::LTOModule::getTargetTriple(), insertSinCosCall(), llvm::ThinLTOCodeGenerator::internalize(), llvm::TargetLibraryInfoImpl::isCallingConvCCompatible(), llvm::ThinLTOCodeGenerator::optimize(), and llvm::ThinLTOCodeGenerator::promote().
std::string Module::getUniqueIntrinsicName | ( | StringRef | BaseName, |
Intrinsic::ID | Id, | ||
const FunctionType * | Proto | ||
) |
Return a unique name for an intrinsic whose mangling is based on an unnamed type.
The Proto represents the function prototype.
Definition at line 477 of file Module.cpp.
References F, getNamedValue(), and llvm::StringMap< ValueTy, AllocatorTy >::insert().
UWTableKind Module::getUwtable | ( | ) | const |
Get/set whether synthesized functions should get the uwtable attribute.
Definition at line 687 of file Module.cpp.
References getModuleFlag(), and llvm::None.
|
inline |
|
inline |
Get the symbol table of global variable and function identifiers.
Definition at line 647 of file Module.h.
Referenced by getNamedValue(), and getNumNamedValues().
|
inline |
Definition at line 660 of file Module.h.
Referenced by LLVMGetFirstGlobal(), LLVMGetLastGlobal(), and LLVMGetPreviousGlobal().
|
inline |
|
inline |
Definition at line 662 of file Module.h.
Referenced by LLVMGetFirstGlobal(), LLVMGetLastGlobal(), and LLVMGetNextGlobal().
|
inline |
iterator_range< Module::global_object_iterator > Module::global_objects | ( | ) |
Definition at line 413 of file Module.cpp.
References functions(), and globals().
Referenced by llvm::thinLTOFinalizeInModule().
iterator_range< Module::const_global_object_iterator > Module::global_objects | ( | ) | const |
Definition at line 417 of file Module.cpp.
References functions(), and globals().
iterator_range< Module::global_value_iterator > Module::global_values | ( | ) |
Definition at line 421 of file Module.cpp.
References aliases(), functions(), globals(), and ifuncs().
Referenced by llvm::RecordStreamer::flushSymverDirectives().
iterator_range< Module::const_global_value_iterator > Module::global_values | ( | ) | const |
Definition at line 425 of file Module.cpp.
References aliases(), functions(), globals(), and ifuncs().
|
inline |
Definition at line 667 of file Module.h.
References llvm::make_range().
Referenced by dropAllReferences(), llvm::OpenMPIRBuilder::getOrCreateIdent(), llvm::OpenMPIRBuilder::getOrCreateSrcLocStr(), global_objects(), global_values(), and llvm::thinLTOFinalizeInModule().
|
inline |
Definition at line 670 of file Module.h.
References llvm::make_range().
|
inline |
Definition at line 718 of file Module.h.
Referenced by LLVMGetFirstGlobalIFunc(), LLVMGetLastGlobalIFunc(), and LLVMGetPreviousGlobalIFunc().
|
inline |
|
inline |
Definition at line 720 of file Module.h.
Referenced by LLVMGetFirstGlobalIFunc(), LLVMGetLastGlobalIFunc(), and LLVMGetNextGlobalIFunc().
|
inline |
|
inline |
Definition at line 725 of file Module.h.
References llvm::make_range().
Referenced by dropAllReferences(), and global_values().
|
inline |
Definition at line 728 of file Module.h.
References llvm::make_range().
|
inline |
|
inline |
|
inline |
Insert global variable GV
at the end of the global variable list and take ownership.
Definition at line 551 of file Module.h.
Referenced by llvm::GlobalVariable::GlobalVariable(), OptimizeGlobalAddressOfAllocation(), removeGlobalCtors(), and TryToShrinkGlobalToBoolean().
|
inline |
|
inline |
Insert MDNode
at the end of the alias list and take ownership.
Definition at line 609 of file Module.h.
Referenced by getOrInsertNamedMetadata().
bool Module::isDwarf64 | ( | ) | const |
Returns the DWARF format by checking module flags.
Definition at line 563 of file Module.cpp.
References getModuleFlag().
Referenced by llvm::DwarfDebug::DwarfDebug().
|
static |
Checks if Metadata represents a valid ModFlagBehavior, and stores the converted result in MFB.
Definition at line 277 of file Module.cpp.
References ModFlagBehaviorFirstVal, and ModFlagBehaviorLastVal.
Referenced by isValidModuleFlag().
|
static |
Check if the given module flag metadata represents a valid module flag, and store the flag behavior, the key string and the value metadata.
Definition at line 288 of file Module.cpp.
References llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), and isValidModFlagBehavior().
Referenced by getModuleFlagsMetadata(), and setModuleFlag().
Error Module::materialize | ( | GlobalValue * | GV | ) |
Make sure the GlobalValue is fully read.
Definition at line 439 of file Module.cpp.
References llvm::Error::success().
Referenced by llvm::GlobalValue::materialize().
Error Module::materializeAll | ( | ) |
Make sure all GlobalValues in this Module are fully read and clear the Materializer.
Definition at line 446 of file Module.cpp.
References llvm::Error::success().
Error Module::materializeMetadata | ( | ) |
Definition at line 453 of file Module.cpp.
References llvm::Error::success().
|
inline |
Definition at line 772 of file Module.h.
References llvm::make_range().
|
inline |
Definition at line 775 of file Module.h.
References llvm::make_range().
|
inline |
Definition at line 759 of file Module.h.
Referenced by LLVMGetFirstNamedMetadata(), LLVMGetLastNamedMetadata(), and LLVMGetPreviousNamedMetadata().
|
inline |
|
inline |
Definition at line 764 of file Module.h.
Referenced by LLVMGetFirstNamedMetadata(), LLVMGetLastNamedMetadata(), and LLVMGetNextNamedMetadata().
|
inline |
void Module::print | ( | raw_ostream & | OS, |
AssemblyAnnotationWriter * | AAW, | ||
bool | ShouldPreserveUseListOrder = false , |
||
bool | IsForDebug = false |
||
) | const |
Print the module to an output stream with an optional AssemblyAnnotationWriter.
If ShouldPreserveUseListOrder
, then include uselistorder directives so that use-lists can be recreated when reading the assembly.
Definition at line 4612 of file AsmWriter.cpp.
References OS.
Referenced by dump(), and llvm::yaml::BlockScalarTraits< Module >::output().
|
inline |
|
inline |
|
inline |
Detach Alias
from the list but don't delete it.
Definition at line 587 of file Module.h.
Referenced by llvm::GlobalAlias::removeFromParent().
|
inline |
Detach global variable GV
from the list but don't delete it.
Definition at line 546 of file Module.h.
Referenced by llvm::GlobalVariable::removeFromParent().
|
inline |
Detach IFunc
from the list but don't delete it.
Definition at line 596 of file Module.h.
Referenced by llvm::GlobalIFunc::removeFromParent().
|
inline |
|
inline |
|
inline |
void Module::setCodeModel | ( | CodeModel::Model | CL | ) |
Set the code model (tiny, small, kernel, medium or large)
Definition at line 628 of file Module.cpp.
References addModuleFlag(), and Error.
void Module::setDarwinTargetVariantSDKVersion | ( | VersionTuple | Version | ) |
Set the target variant version build SDK version metadata.
Definition at line 869 of file Module.cpp.
References addSDKVersionMD().
void Module::setDarwinTargetVariantTriple | ( | StringRef | T | ) |
Set the target variant triple which is a string describing a variant of the target host platform.
Definition at line 860 of file Module.cpp.
References addModuleFlag(), llvm::MDString::get(), getContext(), and Override.
void Module::setDataLayout | ( | const DataLayout & | Other | ) |
Definition at line 396 of file Module.cpp.
References llvm::Other.
void Module::setDataLayout | ( | StringRef | Desc | ) |
Set the data layout.
Definition at line 392 of file Module.cpp.
References llvm::DataLayout::reset().
Referenced by LLVMTargetMachineEmit().
void Module::setDirectAccessExternalData | ( | bool | Value | ) |
Definition at line 683 of file Module.cpp.
References addModuleFlag(), and Max.
void Module::setFramePointer | ( | FramePointerKind | Kind | ) |
Definition at line 703 of file Module.cpp.
References addModuleFlag(), and Max.
void Module::setMaterializer | ( | GVMaterializer * | GVM | ) |
Sets the GVMaterializer to GVM.
This module must not yet have a Materializer. To reset the materializer for a module that already has one, call materializeAll first. Destroying this module will destroy its materializer without materializing any more GlobalValues. Without destroying the Module, there is no way to detach or destroy a materializer without materializing all the GVs it controls, to avoid leaving orphan unmaterialized GVs.
Definition at line 432 of file Module.cpp.
References assert().
void Module::setModuleFlag | ( | ModFlagBehavior | Behavior, |
StringRef | Key, | ||
Metadata * | Val | ||
) |
Like addModuleFlag but replaces the old module flag if it already exists.
Definition at line 375 of file Module.cpp.
References addModuleFlag(), E, llvm::NamedMDNode::getNumOperands(), llvm::NamedMDNode::getOperand(), getOrInsertModuleFlagsMetadata(), I, and isValidModuleFlag().
Referenced by setProfileSummary().
|
inline |
|
inline |
void Module::setOverrideStackAlignment | ( | unsigned | Align | ) |
Definition at line 768 of file Module.cpp.
References addModuleFlag(), and Error.
void Module::setOwnedMemoryBuffer | ( | std::unique_ptr< MemoryBuffer > | MB | ) |
Take ownership of the given memory buffer.
Definition at line 662 of file Module.cpp.
void Module::setPartialSampleProfileRatio | ( | const ModuleSummaryIndex & | Index | ) |
Set the partial sample profile ratio in the profile summary module flag, if applicable.
Definition at line 834 of file Module.cpp.
References getContext(), llvm::ProfileSummary::getFromMD(), llvm::ProfileSummary::getKind(), llvm::ProfileSummary::getMD(), llvm::ProfileSummary::getNumCounts(), getProfileSummary(), llvm::ProfileSummary::isPartialProfile(), llvm::ProfileSummary::PSK_Sample, llvm::ProfileSummary::setPartialProfileRatio(), and setProfileSummary().
void Module::setPICLevel | ( | PICLevel::Level | PL | ) |
Set the PIC level (small or large model)
Definition at line 598 of file Module.cpp.
References addModuleFlag(), and Min.
void Module::setPIELevel | ( | PIELevel::Level | PL | ) |
Set the PIE level (small or large model)
Definition at line 614 of file Module.cpp.
References addModuleFlag(), and Max.
void Module::setProfileSummary | ( | Metadata * | M, |
ProfileSummary::Kind | Kind | ||
) |
Attach profile summary metadata to this module.
Definition at line 636 of file Module.cpp.
References Error, llvm::ProfileSummary::PSK_CSInstr, and setModuleFlag().
Referenced by setPartialSampleProfileRatio().
void Module::setRtLibUseGOT | ( | ) |
Set that PLT should be avoid for RTLib calls.
Definition at line 671 of file Module.cpp.
References addModuleFlag(), and Max.
void Module::setSDKVersion | ( | const VersionTuple & | V | ) |
Attach a build SDK version metadata to this module.
Definition at line 786 of file Module.cpp.
References addSDKVersionMD().
void Module::setSemanticInterposition | ( | bool | SI | ) |
Set whether semantic interposition is to be respected.
Definition at line 658 of file Module.cpp.
References addModuleFlag(), Error, and SI.
|
inline |
void Module::setStackProtectorGuard | ( | StringRef | Kind | ) |
Definition at line 714 of file Module.cpp.
References addModuleFlag(), Error, llvm::MDString::get(), and getContext().
void Module::setStackProtectorGuardOffset | ( | int | Offset | ) |
Definition at line 750 of file Module.cpp.
References addModuleFlag(), Error, and llvm::Offset.
void Module::setStackProtectorGuardReg | ( | StringRef | Reg | ) |
Definition at line 726 of file Module.cpp.
References addModuleFlag(), Error, llvm::MDString::get(), and getContext().
void Module::setStackProtectorGuardSymbol | ( | StringRef | Symbol | ) |
Definition at line 738 of file Module.cpp.
References addModuleFlag(), Error, llvm::MDString::get(), and getContext().
|
inline |
Set the target triple.
Definition at line 301 of file Module.h.
Referenced by llvm::LTOModule::setTargetTriple().
void Module::setUwtable | ( | UWTableKind | Kind | ) |
Definition at line 693 of file Module.cpp.
References addModuleFlag(), and Max.
|
inline |
|
friend |
|
friend |
|
friend |