llvm::GlobalValue

Base class of globally definable objects such as functions, variables, and aliases.

Synopsis

Declared in <llvm/IR/GlobalValue.h>

class GlobalValue
    : public Constant

Description

Global values can do things other LLVM values cannot, for example using the address of one as a constant. This class is subclassed by GlobalVariable, GlobalAlias, GlobalIFunc, and Function.

Base Classes

NameDescription
ConstantLLVM Constant Representation

Types

NameDescription
SanitizerMetadata Per-global sanitizer instrumentation flags for ASan, HWASan, and Memtag.
const_value_op_iterator Const iterator for directly iterating over the operand Values.
value_op_iterator Iterator for directly iterating over the operand Values.

Type Aliases

NameDescription
GUID A 64-bit global unique identifier used by PGO and ThinLTO.
const_op_iterator Const iterator over this user's operand Use objects.
const_op_range Range of const operand Use iterators.
const_use_iterator Const iterator over this value's uses.
const_user_iterator Const iterator over this value's users.
op_iterator Iterator over this user's operand Use objects.
op_range Range of mutable operand Use iterators.
use_iterator Iterator over this value's uses.
user_iterator Iterator over this value's users.

Enums

NameDescription
DLLStorageClassTypes Storage classes of global values for PE targets.
LinkageTypes An enumeration for the kinds of linkage for global values.
ThreadLocalMode Thread-local storage models for global variables.
UnnamedAddr How significant this global's address is when merging or linking.
ValueTy Concrete subclass of this.
VisibilityTypes An enumeration for the kinds of visibility of global values.

Member Functions

NameDescription
GlobalValue [constructor] [deleted]Copy construction is deleted; GlobalValue is non-copyable.
operator= Assignment operators
DoPHITranslation DoPHITranslation overloads
addUse This method should only be used by the Use class.
assertModuleIsMaterialized Assert in debug builds that modules containing this value are materialized.
assertModuleIsMaterializedImpl Assert that every module containing this value is fully materialized.
canBeFreed Return true if this pointer's memory may be freed in its defining scope.
canBeOmittedFromSymbolTable Return true if this global can be left out of the object symbol table.
canBenefitFromLocalAlias Return true if this global may use a local alias during code generation.
containsConstantExpression Return true if this is a fixed width vector constant that includes any constant expressions.
containsMatchingVectorElement Return true if this is a vector constant where at least one element satisfies the given predicate. Scalable vectors are not checked.
containsPoisonElement Return true if this is a vector constant that includes any poison elements.
containsUndefElement Return true if this is a vector constant that includes any strictly undef (not poison) elements.
containsUndefOrPoisonElement Return true if this vector constant includes undef or poison elements.
deleteValue Delete a pointer to a generic Value.
destroyConstant Destroy this constant and any constant users that depend on it.
dropAllReferences Drop all references to operands.
dropDroppableUses Remove every uses that can safely be removed.
dropDroppableUsesIn Remove every use of this value in User that can safely be removed.
dump Support for debugging, callable in GDB: V->dump()
eraseFromParent This method unlinks 'this' from the containing module and deletes it.
getAbsoluteSymbolRange If this is an absolute symbol reference, returns the range of the symbol, otherwise returns std::nullopt.
getAddressSpace Return the address space of this global value's pointer type.
getAggregateElement getAggregateElement overloads
getAliaseeObject Return the underlying GlobalObject this value ultimately refers to, if any (following aliases).
getComdat Return the Comdat object for this global value, or null if none.
getContext All values hold a context through their type.
getDLLStorageClass Return the DLL storage class of this global value.
getDataLayout Get the data layout of the module this global belongs to.
getDescriptor Returns the descriptor co-allocated with this User instance.
getGUID Return a 64-bit global unique ID for this value.
getGUIDIfAssigned Return this value's GUID if one has been assigned, or nullopt otherwise.
getGUIDOrFallback Return the GUID for this value if it has been assigned, otherwise fall back to computing it based on its current name and linkage.
getLinkage Return the linkage type of this global value.
getName Return a constant reference to the value's name.
getNameOrAsOperand Return this value's name, or a printed operand string if it is unnamed.
getNumOperands Return the number of operands.
getNumUses This method computes the number of uses of this Value.
getOperand Return operand i.
getOperandList getOperandList overloads
getOperandUse getOperandUse overloads
getParent Return the module that contains this global value.
getPartition Return the linker partition name for this global, or empty if none is set.
getPointerAlignment Returns an alignment of the pointer value.
getPointerDereferenceableBytes Returns the number of bytes known to be dereferenceable for the pointer value.
getPointerOffsetFrom If this ptr is provably equal to Other plus a constant offset, return that offset in bytes. Essentially ptr this subtract ptr Other.
getRawSubclassOptionalData Return the raw optional flags value contained in this value.
getSanitizerMetadata Return the sanitizer instrumentation flags for this global.
getSection Return the object-file section name for this global, or empty if none.
getSingleUndroppableUse getSingleUndroppableUse overloads
getSplatValue If all elements of the vector constant have the same value, return that value. Otherwise, return nullptr. Ignore poison elements by setting AllowPoison to true.
getThreadLocalMode Return the thread-local storage model of this global.
getType Global values are always pointers.
getUniqueInteger If C is a constant integer then return its value, otherwise C must be a vector of constant integers, all equal, and the common value is returned.
getUniqueUndroppableUser getUniqueUndroppableUser overloads
getUnnamedAddr Return how significant this global's address is for merging/linking.
getValueID Return an ID for the concrete type of this object.
getValueName Return the symbol-table name entry for this value, if any.
getValueType Return the type of the value (the pointee type for pointer globals).
getVisibility Return the visibility of this global value.
handleOperandChange Replace all uses of From with To within this constant.
hasAppendingLinkage Return true if this global has appending linkage.
hasAtLeastLocalUnnamedAddr Returns true if this value's address is not significant in this module.
hasAvailableExternallyLinkage Return true if this global has available_externally linkage.
hasComdat Return true if this global is in a COMDAT group.
hasCommonLinkage Return true if this global has common linkage.
hasDLLExportStorageClass Return true if this global is exported from a DLL.
hasDLLImportStorageClass Return true if this global is imported from a DLL.
hasDefaultVisibility Return true if this global has default visibility.
hasExactDefinition Return true if this global has an exact defintion.
hasExactInverseFP Return true if this scalar has an exact multiplicative inverse or this vector has an exact multiplicative inverse for each element in the vector.
hasExternalLinkage Return true if this global has external linkage.
hasExternalWeakLinkage Return true if this global has external weak linkage.
hasGlobalUnnamedAddr Return true if this global has the global unnamed_addr attribute.
hasHiddenVisibility Return true if this global has hidden visibility.
hasInternalLinkage Return true if this global has internal linkage.
hasLinkOnceAnyLinkage Return true if this global has linkonce-any linkage.
hasLinkOnceLinkage Return true if this global has linkonce or linkonce_odr linkage.
hasLinkOnceODRLinkage Return true if this global has linkonce_odr linkage.
hasLocalLinkage Return true if this global has internal or private linkage.
hasNUndroppableUses Return true if this value has exactly N undroppable uses.
hasNUndroppableUsesOrMore Return true if this value has N undroppable uses or more.
hasNUses Return true if this Value has exactly N uses.
hasNUsesOrMore Return true if this value has N uses or more.
hasName Return true if this value has a name in the symbol table.
hasOneLiveUse Return true if the constant has exactly one live use.
hasOneUse Return true if there is exactly one use of this value.
hasOneUser Return true if there is exactly one user of this value.
hasPartition Return true if this global has a linker partition name.
hasPrivateLinkage Return true if this global has private linkage.
hasProtectedVisibility Return true if this global has protected visibility.
hasSanitizerMetadata Return true if this global has sanitizer metadata attached.
hasSection Return true if this global has a non-empty section name.
hasUseList Check if this Value has a use-list.
hasValidDeclarationLinkage Return true if this global has a linkage valid for a declaration.
hasValueHandle Return true if there is a value handle associated with this value.
hasWeakAnyLinkage Return true if this global has weak_any linkage.
hasWeakLinkage Return true if this global has weak or weak ODR linkage.
hasWeakODRLinkage Return true if this global has weak_odr linkage.
hasZeroLiveUses Return true if the constant has no live uses.
isAbsoluteSymbolRef Returns whether this is a reference to an absolute symbol.
isAllOnesValue Return true if this is the value that would be returned by getAllOnesValue.
isConstantUsed Return true if the constant has users other than constant expressions and other dangling things.
isDLLImportDependent Return true if the value is dependent on a dllimport variable.
isDSOLocal Return true if this symbol is known to be local to the DSO.
isDeclaration Return true if the primary definition of this global value is outside of the current translation unit.
isDeclarationForLinker Return true if the linker should treat this global as a declaration.
isDefinitionExact Return true if the currently visible definition of this global (if any) is exactly the definition we will see at runtime.
isDiscardableIfUnused Return true if this global's definition may be discarded if unused.
isDroppable Return whether this user's uses may be dropped without affecting correctness.
isElementWiseEqual Return true if this constant and Y are element-wise equal.
isFiniteNonZeroFP Return true if this is a finite and non-zero floating-point scalar constant or a fixed width vector constant with all finite and non-zero elements.
isImplicitDSOLocal Return true if linkage or visibility implies this symbol is dso_local.
isInterposable Return true if this global's definition can be substituted arbitrarily.
isManifestConstant Return true if a constant is ConstantData or a ConstantAggregate or ConstantExpr that contain only ConstantData.
isMaterializable Return true if this global has not yet been fully read from its source.
isMaxSignedValue Return true if the value is the largest signed value.
isMinSignedValue Return true if the value is the smallest signed value.
isNaN Return true if this is a floating-point NaN constant or a vector floating-point constant with all NaN elements.
isNegativeZeroValue Return true if the value is what would be returned by getZeroValueForNegation.
isNormalFP Return true if this is a normal floating-point constant.
isNotMinSignedValue Return true if the value is not the smallest signed value, or, for vectors, does not contain smallest signed value elements.
isNotOneValue Return true if the value is not the one value, or, for vectors, does not contain one value elements.
isNullValue Return true if this is the value that would be returned by getNullValue.
isOneValue Returns true if the value is one.
isStrongDefinitionForLinker Returns true if this global's definition will be the one chosen by the linker.
isSwiftError Return true if this value is a swifterror value.
isTagged Return true if memtag sanitization is requested for this global.
isThreadDependent Return true if the value can vary between threads.
isThreadLocal If the value is "Thread Local", its value isn't shared by the threads.
isUsedByMetadata Return true if there is metadata referencing this value.
isUsedInBasicBlock Check if this value is used in the specified basic block.
isWeakForLinker Return true if this global's definition may be replaced at link time.
materialize Make sure this GlobalValue is fully read.
materialized_use_begin materialized_use_begin overloads
materialized_use_empty Return true if there are no currently materialized uses.
materialized_user_begin materialized_user_begin overloads
materialized_users materialized_users overloads
materialized_uses materialized_uses overloads
mutateType Mutate the type of this Value to be of the specified type.
needsDynamicRelocation Return true if this constant may generate a dynamic relocation entry.
needsRelocation Return true if this constant may generate a relocation entry.
op_begin Return an iterator to the first operand Use.
op_end op_end overloads
operand_values operand_values overloads
operands operands overloads
operator delete Delete operators
print print overloads
printAsOperand printAsOperand overloads
reassignGUID Recompute and assign a GUID to this value, replacing the existing GUID.
removeDeadConstantUsers Remove any dead constant users dangling off of this constant.
removeFromParent This method unlinks 'this' from the containing module, but does not delete it.
removeSanitizerMetadata Remove sanitizer metadata from this global value.
replaceAllUsesWith Change all uses of this to point to a new Value.
replaceNonMetadataUsesWith Change non-metadata uses of this to point to a new Value.
replaceUsesOfWith Replace uses of one Value with another.
replaceUsesOutsideBlock Replace uses of this value that occur outside BB with V.
replaceUsesWithIf Replace selected uses of this value with New.
reverseUseList Reverse the use-list.
setDLLStorageClass Set the DLL storage class of this global value.
setDSOLocal Set whether this symbol is known to be local to the linkage unit.
setLinkage Set the linkage type of this global value.
setName Change the name of the value.
setNoSanitizeMetadata Disable address and HWAddress sanitizer instrumentation for this global.
setNumHungOffUseOperands Set the operand count for a User with hung-off uses.
setOperand Replace operand i with Val.
setPartition Set the linker partition name for this global.
setSanitizerMetadata Set sanitizer instrumentation flags for this global value.
setThreadLocal Set whether this global is thread-local using the general-dynamic model.
setThreadLocalMode Set the thread-local storage model of this global.
setUnnamedAddr Set how significant this global's address is for merging and linking.
setValueName Set the symbol-table name entry for this value.
setVisibility Set the visibility of this global value.
sortUseList Sort the use-list.
stripAndAccumulateConstantOffsets stripAndAccumulateConstantOffsets overloads
stripAndAccumulateInBoundsConstantOffsets stripAndAccumulateInBoundsConstantOffsets overloads
stripInBoundsConstantOffsets stripInBoundsConstantOffsets overloads
stripInBoundsOffsets stripInBoundsOffsets overloads
stripPointerCasts stripPointerCasts overloads
stripPointerCastsAndAliases stripPointerCastsAndAliases overloads
stripPointerCastsForAliasAnalysis stripPointerCastsForAliasAnalysis overloads
stripPointerCastsSameRepresentation stripPointerCastsSameRepresentation overloads
takeName Transfer the name from V to this value.
toConstantRange Convert constant to an approximate constant range. For vectors, the range is the union over the element ranges. Poison elements are ignored.
use_begin use_begin overloads
use_empty Return true if this value has no uses.
use_end use_end overloads
user_back Return the sole user when this value has exactly one user.
user_begin Return an iterator to the first user of this value.
user_empty Return true if this value has no users.
user_end user_end overloads
users users overloads
uses uses overloads
value_op_begin value_op_begin overloads
value_op_end value_op_end overloads

Static Member Functions

NameDescription
classof Methods for support type inquiry through isa, cast, and dyn_cast.
dropDroppableUse Remove the droppable use U.
dropLLVMManglingEscape If the given string begins with the GlobalValue name mangling escape character '1', drop it.
getAllOnesValue Return the all-ones constant of type Ty.
getGUIDAssumingExternalLinkage Return a 64-bit GUID for a global symbol name, assuming external linkage.
getGlobalIdentifier Return a lookup key for a global value used by PGO and ThinLTO.
getIntegerValue Return the value for an integer or pointer constant, or a vector thereof, with the given scalar value.
getLinkOnceLinkage Return linkonce or linkonce_odr linkage depending on ODR.
getMinUnnamedAddr Return the more significant unnamed_addr of A and B.
getNullValue Return the null constant of type Ty (zero for integers, null for pointers, and so on).
getWeakLinkage Return weak or weak_odr linkage depending on ODR.
isAppendingLinkage Return true if Linkage is appending linkage.
isAvailableExternallyLinkage Return true if Linkage is available_externally linkage.
isCommonLinkage Return true if Linkage is common linkage.
isDiscardableIfUnused Whether the definition of this global may be discarded if it is not used in its compilation unit.
isExternalLinkage Return true if Linkage is external linkage.
isExternalWeakLinkage Return true if Linkage is external weak linkage.
isInternalLinkage Return true if Linkage is internal linkage.
isInterposableLinkage Return true if a definition with Linkage may be replaced non-equivalently at link time.
isLinkOnceAnyLinkage Return true if Linkage is linkonce-any linkage.
isLinkOnceLinkage Return true if Linkage is linkonce or linkonce ODR linkage.
isLinkOnceODRLinkage Return true if Linkage is linkonce_odr linkage.
isLocalLinkage Return true if Linkage is internal or private linkage.
isPrivateLinkage Return true if Linkage is private linkage.
isValidDeclarationLinkage Return true if Linkage is valid for a declaration without a definition.
isWeakAnyLinkage Return true if Linkage is weak_any linkage.
isWeakForLinker Return true if a definition with Linkage may be replaced at link time.
isWeakLinkage Return true if Linkage is weak or weak ODR linkage.
isWeakODRLinkage Return true if Linkage is weak ODR linkage.
mergeUndefsWith Merge undef elements from Other into constant C.
replaceUndefsWith Try to replace undefined constant C or undefined elements in C with Replacement. If no changes are made, the constant C is returned.

Static Data Members

NameDescription
MaxAlignmentExponent The maximum alignment for instructions.
MaximumAlignment Maximum absolute alignment in bytes (1 << MaxAlignmentExponent).

Protected Types

NameDescription
AllocInfo Information about how a User object was allocated, to be passed into the User constructor.
HungOffOperandsAllocMarker Indicates this User has operands "hung off" in another allocation.
IntrusiveOperandsAllocMarker Indicates this User has operands co-allocated.
IntrusiveOperandsAndDescriptorAllocMarker Indicates this User has operands and a descriptor co-allocated .

Protected Enums

NameDescription
Unnamed enum SubclassOptionalData bits. Low bits are used by ConstantExpr.

Protected Member Functions

NameDescription
GlobalValue [constructor]Construct a global value with the given type, value kind, linkage, and name.
~GlobalValue [destructor]Destroy this global and remove dead constant users.
Op Op overloads
addMetadata addMetadata overloads
allocHungoffUses Allocate the array of Uses, followed by a pointer (with bottom bit set) to the User.
clearMetadata Erase all metadata attached to this Value.
copyAttributesFrom Copy all additional attributes (those not needed to create a GlobalValue) from the GlobalValue Src to this one.
eraseMetadata Erase all metadata attachments with the given kind.
eraseMetadataIf Erase all metadata attachments matching the given predicate.
getAllMetadata Append all metadata attached to this value into MDs.
getGlobalValueSubClassData Return subclass-specific data packed into this global value.
getMetadata Get the current metadata attachments for the given kind, if any.
getMetadataImpl Get metadata for the given kind, if any.
getSubclassDataFromValue Return the opaque subclass data bits stored in this value.
growHungoffUses Grow the number of hung off uses. Note that allocHungoffUses should be called if there are no uses.
operator new New operators
setGlobalValueSubClassData Set subclass-specific data packed into this global value.
setMetadata setMetadata overloads
setParent Set the module that contains this global value.
setValueSubclassData Set the opaque subclass data bits stored in this value.

Protected Static Member Functions

NameDescription
OpFrom Return the operand Use at compile-time index Idx from that.

Protected Data Members

NameDescription
DllStorageClass DLL storage class of this global (see DLLStorageClassTypes).
HasDescriptor True if this value has a descriptor.
HasHungOffUses Whether operands are stored in a separately allocated array.
HasLLVMReservedName True if this value's name starts with "llvm.".
HasName True if this value has a name in the symbol table.
HasPartition True if this symbol has a partition name assigned (see https://lld.llvm.org/Partitions.html).
HasSanitizerMetadata True if this symbol has sanitizer metadata available. Should only happen if sanitizers were enabled when building the translation unit which contains this GV.
IntID The intrinsic ID for this subclass (which must be a Function).
IsDSOLocal If true then there is a definition within the same linkage unit and that definition cannot be runtime preempted.
IsUsedByMD True if metadata references this value.
Linkage Linkage type of this global (see LinkageTypes).
NumUserOperands Number of operands in this user.
Parent The module containing this global value.
SubclassOptionalData Hold arbitary subclass data.
ThreadLocal Is this symbol "Thread Local", if so, what is the desired model?
UnnamedAddrVal This value's unnamed address mode (see UnnamedAddr).
ValueType The type of the value this global points to (the pointee type).
Visibility The visibility of this global (see VisibilityTypes).

Protected Static Data Members

NameDescription
ConstantSubclassBits Bits reserved in SubclassOptionalData, not to be used for ConstantExpr flags.
GlobalValueSubClassDataBits Number of bits reserved for subclass-specific data in GlobalValue.

Friends

NameDescription
llvm::AssignGUIDPassModule pass that assigns a globally unique identifier to every global value.
llvm::ConstantLLVM Constant Representation

Non-Member Functions

NameDescription
ComputeMaxSignificantBitsGet the upper bound on bit size for this Value Op as a signed integer.
ComputeNumSignBitsReturn the number of times the sign bit of the register is replicated into the other bits.
ConstantFoldConstantFold a constant using the specified DataLayout.
ConstantFoldExtractElementInstructionAttempt to constant fold an extractelement instruction with the specified operands and indices.
ConstantFoldExtractValueInstructionAttempt to constant fold an extractvalue instruction with the specified operands and indices.
ConstantFoldInsertElementInstructionAttempt to constant fold an insertelement instruction with the specified operands and indices.
ConstantFoldInsertValueInstructionAttempt to constant fold an insertvalue instruction with the specified operands and indices.
ConstantFoldIntegerCastConstant fold a zext, sext or trunc, depending on IsSigned and whether the DestTy is wider or narrower than C. Returns nullptr on failure.
ConstantFoldLoadFromConstExtract value of C at the given Offset reinterpreted as Ty. If bits past the end of C are accessed, they are assumed to be poison.
ConstantFoldLoadFromConstExtract value of C reinterpreted as Ty. Same as previous API with zero offset.
ConstantFoldLoadFromConstPtrReturn the value that a load from C with offset Offset would produce if it is constant and determinable. If this is not determinable, return null.
ConstantFoldLoadFromConstPtrReturn the value that a load from C would produce if it is constant and determinable. If this is not determinable, return null.
ConstantFoldLoadFromUniformValueReturn a uniform bit-pattern constant reinterpreted as Ty, or null.
ConstantFoldLoadThroughBitcastTry to cast a constant to a destination type through a bitcast-like load.
ConstantFoldSelectInstructionAttempt to constant fold a select instruction with the specified operands. The constant result is returned if successful; if not, null is returned.
ConstantFoldShuffleVectorInstructionAttempt to constant fold a shufflevector instruction with the specified operands and mask.
ExtractTypeInfoExtractTypeInfo - Returns the type info, possibly bitcast, encoded in V.
FindEarliestCaptureFind the earliest instruction that captures V in F.
FindInsertedValueGiven an aggregate and a sequence of indices, see if the scalar value indexed is already around as a register.
FlushFPConstantFlush a floating-point constant according to the parent function's denormal mode.
GetPointerBaseWithConstantOffsetAnalyze the specified pointer to see if it can be expressed as a base pointer plus a constant offset. Return the base and offset to the caller.
GetPointerBaseWithConstantOffsetConst overload of GetPointerBaseWithConstantOffset.
GetStringLengthIf we can compute the length of the string pointed to by the specified pointer, return 'len+1'. If we can't, return 0.
IsConstantOffsetFromGlobalReturn true if C is a constant offset from a global.
MapValueLook up or compute a value in the value map.
MapValueVersion of MapValue with type safety for Constant.
MaskedValueIsZeroReturn true if 'V & Mask' is known to be zero. We use this predicate to simplify operations downstream. Mask is known to be zero for bits that V cannot have.
PointerMayBeCapturedVisit a pointer and derived values to find capturing uses.
PointerMayBeCapturedReturn which components of the pointer may be captured.
PointerMayBeCapturedReturn true if this pointer may be captured by the enclosing function.
PointerMayBeCapturedBeforeReturn true if this pointer may be captured before a given instruction.
PointerMayBeCapturedBeforeReturn which components of the pointer may be captured on the path to I.
RecursivelyDeleteTriviallyDeadInstructionsRecursively delete a trivially dead instruction and its dead operands.
SplitBlockAndInsertForEachLaneInvoke a callback once for each lane up to an effective vector length.
SplitBlockAndInsertIfElseSplit a block and insert an else-branch at an instruction.
SplitBlockAndInsertIfElseSplit a block and insert a conditional else-branch around the split point.
SplitBlockAndInsertIfThenSplit a block and insert a then-branch at an instruction.
SplitBlockAndInsertIfThenSplit a block and insert a conditional then-branch around the split point.
SplitBlockAndInsertIfThenElseSplit a block and insert optional then/else blocks around the split point.
SplitBlockAndInsertIfThenElseSplit a block and insert optional then/else blocks at an instruction.
SplitBlockAndInsertIfThenElseSplit a block and insert both then and else branches around the split point.
SplitBlockAndInsertIfThenElseSplit a block and insert then/else branches at an instruction.
SplitBlockAndInsertSimpleForLoopInsert a simple counted for-loop at a split point.
applyProfMetadataIfEnabledApply a metadata callback if V is an instruction and profiling is enabled.
assumeBundleImpliesNonNullReturn true if the given assume operand bundle implies that Val is non-null.
canReplacePointersIfEqualReturns true if pointer From can be replaced with equal pointer To.
cannotBeNegativeZeroReturn true if we can prove that the specified FP value is never equal to -0.0. Users should use caution when considering PreserveSign denormal-fp-math.
cannotBeOrderedLessThanZeroReturn true if we can prove that the specified FP value is either NaN or never less than -0.0.
classifyEHPersonalitySee if the given exception handling personality function is one that we understand. If so, return a description of it; otherwise return Unknown.
collectPossibleValuesEnumerate immediate constant values of V into Constants.
computeConstantRangeDetermine the possible constant range of an integer or vector of integer value. This is intended as a cheap, non-recursive check.
computeKnownBitsReturns the known bits rather than passing by reference.
computeKnownBitsDetermine which bits of V are known to be either zero or one and return them in the KnownZero/KnownOne bit sets.
computeKnownBitsReturns the known bits rather than passing by reference.
computeKnownBitsCompute known bits for the demanded elements of V using Q.
computeKnownBitsCompute known bits for V into Known using the simplify query Q.
computeKnownBitsCompute known bits for V using the simplify query Q.
computeKnownBitsFromContextMerge bits known from context-dependent facts into Known.
computeKnownFPClassWrapper to account for known fast math flags at the use instruction.
computeKnownFPClassDetermine known floating-point classes for V.
computeKnownFPClassWrapper to account for known fast math flags at the use instruction.
computeKnownFPClassDetermine which floating-point classes are valid for V, and return them in KnownFPClass bit sets.
computeKnownFPClassDetermine known floating-point classes for V using explicit analysis context.
computeKnownFPSignBitReturn the known sign bit of a floating-point value, if provable.
computeOverflowForSignedMulCompute whether a signed multiply of LHS and RHS can overflow.
computeOverflowForSignedSubCompute whether a signed subtract of LHS and RHS can overflow.
computeOverflowForUnsignedMulCompute whether an unsigned multiply of LHS and RHS can overflow.
computeOverflowForUnsignedSubCompute whether an unsigned subtract of LHS and RHS can overflow.
convertToDeclarationConverts value GV to declaration, or replaces with a declaration if it is an alias.
decomposeBitTestDecompose an icmp into the form ((X & Mask) pred C) if possible.
decomposeBitTestICmpDecompose an icmp into the form ((X & Mask) pred C) if possible.
emitBCmpEmit a call to the bcmp function.
emitBinaryFloatFnCallEmit a call to the binary floating-point libcall named Name.
emitBinaryFloatFnCallEmit a call to the binary DoubleFn, FloatFn, or LongDoubleFn for Op1's type.
emitCallocEmit a call to the calloc function.
emitFPutCEmit a call to fputc with an int Char and a FILE pointer.
emitFPutSEmit a call to fputs with a string pointer and a FILE pointer.
emitFWriteEmit a call to fwrite with a pointer, size_t Size, and FILE pointer.
emitHotColdNewEmit a call to the hot/cold operator new function.
emitHotColdNewAlignedEmit a call to the hot/cold aligned operator new function.
emitHotColdNewAlignedNoThrowEmit a call to the hot/cold aligned nothrow operator new function.
emitHotColdNewNoThrowEmit a call to the hot/cold nothrow operator new function.
emitHotColdSizeReturningNewEmit a call to the hot/cold size-returning operator new function.
emitHotColdSizeReturningNewAlignedEmit a call to the hot/cold size-returning aligned operator new function.
emitMallocEmit a call to the malloc function.
emitMemCCpyEmit a call to the memccpy function.
emitMemChrEmit a call to memchr with a pointer, int Val, and size_t Len.
emitMemCmpEmit a call to the memcmp function.
emitMemCpyChkEmit a call to __memcpy_chk with size_t Len/ObjSize and pointer Dst/Src.
emitMemPCpyEmit a call to the mempcpy function.
emitMemRChrEmit a call to the memrchr function, analogously to emitMemChr.
emitPutCharEmit a call to putchar, assuming Char is an int.
emitPutSEmit a call to puts, assuming Str is some pointer.
emitSNPrintfEmit a call to the snprintf function.
emitSPrintfEmit a call to the sprintf function.
emitStpCpyEmit a call to stpcpy for the specified pointer arguments.
emitStpNCpyEmit a call to stpncpy for the specified pointer arguments and length.
emitStrCatEmit a call to the strcat function.
emitStrChrEmit a call to strchr for the specified pointer and character.
emitStrCpyEmit a call to strcpy for the specified pointer arguments.
emitStrDupEmit a call to strdup for the specified pointer.
emitStrLCatEmit a call to the strlcat function.
emitStrLCpyEmit a call to the strlcpy function.
emitStrLenEmit a call to strlen for the specified pointer.
emitStrNCatEmit a call to the strncat function.
emitStrNCmpEmit a call to the strncmp function to the builder.
emitStrNCpyEmit a call to strncpy for the specified pointer arguments and length.
emitUnaryFloatFnCallEmit a call to the unary DoubleFn, FloatFn, or LongDoubleFn for Op's type.
emitUnaryFloatFnCallEmit a call to the unary floating-point libcall named Name.
emitVSNPrintfEmit a call to the vsnprintf function.
emitVSPrintfEmit a call to the vsprintf function.
emitWcsLenEmit a call to wcslen for the specified pointer.
extractWidenableConditionReturns the widenable condition in U's expression tree, if uniquely used.
findAllocaForValueConst overload of findAllocaForValue.
findAllocaForValueReturns unique alloca where the value comes from, or nullptr. If OffsetZero is true check that V points to the begining of the alloca.
findDVRDeclareValuesAs above, for DVRDeclareValues.
findDVRDeclaresFinds dbg.declare records declaring local variables as living in the memory that 'V' points to.
findDVRValuesAs above, for DVRValues.
findDbgUsersFinds the debug info records describing a value.
findDbgValuesFinds the dbg.values describing a value.
findScalarElementGiven a vector and an element number, see if the scalar value is already around as a register, for example if it were inserted then extracted from the vector.
findValuesAffectedByConditionCall InsertAffected on all Values whose known bits / value may be affected by the condition Cond. Used by AssumptionCache and DomConditionCache.
gep_type_beginReturn a begin iterator over the types indexed by GEP GEP.
gep_type_beginReturn a begin iterator over the types indexed by GEP GEP.
gep_type_endReturn the end iterator for types indexed by GEP GEP.
gep_type_endReturn the end iterator for types indexed by GEP GEP.
getAllocationFamilyIf a function is part of an allocation family (e.g. malloc/realloc/calloc/free), return the identifier for its family of functions.
getBaseObjectSizeLike getObjectSize(), but only for base objects.
getConstantDataArrayInfoReturns true if the value V is a pointer into a ConstantDataArray. If successful Slice will point to a ConstantDataArray info object with an appropriate offset.
getConstantStringInfoCompute the contents of a null-terminated C string pointed to by V.
getInitialValueOfAllocationIf this is a call to an allocation function that initializes memory to a fixed value, return said value in the requested type. Otherwise, return nullptr.
getKnowledgeForValueReturn a valid Knowledge associated to the Value V if its Attribute kind is in AttrKinds and it matches the Filter.
getKnowledgeValidInContextReturn a valid Knowledge associated to the Value V if its Attribute kind is in AttrKinds and the knowledge is suitable to be used in the context of CtxI.
getKnownAlignmentInfer a known alignment for the specified pointer.
getLoadStoreAddressSpaceReturn the address space of the pointer operand of load or store I.
getLoadStoreAlignmentReturn the alignment of load or store instruction I.
getLoadStorePointerOperandReturn the pointer operand of a load or store, or null if V is neither.
getLoadStorePointerOperandReturn the pointer operand of a load or store, or null if V is neither.
getLoadStoreTypeReturn the value type accessed by load or store instruction I.
getLosslessInvCastTry to cast C to InvC losslessly, satisfying CastOp(InvC) equals C, or CastOp(InvC) is a refined value of undefined C. Will try best to preserve the flags.
getLosslessSignedTruncCompute a lossless inverse of a signed extend (sext) of C.
getLosslessUnsignedTruncCompute a lossless inverse of an unsigned extend (zext) of C.
getObjectSizeCompute the size of the object pointed by Ptr.
getOrEnforceKnownAlignmentReturn a known alignment for a value, optionally raising it first.
getPointerAtOffsetFind a trivial pointer located at a byte offset within a constant.
getPointerOperandReturn the pointer operand of a load, store, or GEP, or null otherwise.
getPointerOperandNon-const overload of getPointerOperand.
getSplatValueGet splat value if the input is a splat vector or return nullptr.
getUnderlyingObjectStrip GEP adjustments, pointer casts, and threadlocal.address from V.
getUnderlyingObjectNon-const overload of getUnderlyingObject.
getUnderlyingObjectAggressiveLike getUnderlyingObject(), but will try harder to find a single underlying object. In particular, this function also looks through selects and phis.
getUnderlyingObjectsThis method is similar to getUnderlyingObject except that it can look through phi and select instructions and return multiple objects.
getUnderlyingObjectsForCodeGenThis is a wrapper around getUnderlyingObjects and adds support for basic ptrtoint+arithmetic+inttoptr sequences.
impliesPoisonReturn true if V is poison given that ValAssumedPoison is already poison.
invertConditionInvert a boolean condition, reusing an existing inverted copy when possible.
isAllocLikeFnTests if a value is a call or invoke to a library function that allocates memory (either malloc, calloc, or strdup like).
isAllocationFnTests if a value is a call or invoke to a library function that allocates or reallocates memory (either malloc, calloc, realloc, or strdup like).
isAllocationFnTests if a value is a call or invoke to a library function that allocates or reallocates memory (either malloc, calloc, realloc, or strdup like).
isBaseOfObjectReturn true if V is known to be the base of its memory object.
isBytewiseValueIf the specified value can be set by repeating the same byte in memory, return the i8 value that it is represented with.
isCFGuardFunctionReturn true if GV is a Control Flow Guard runtime function.
isCheckForZeroAndMulWithOverflowReturn true if Op0 and Op1 match a zero check with mul-with-overflow.
isCheckForZeroAndMulWithOverflowReturn true if Op0 and Op1 match a zero check with mul-with-overflow.
isConsecutiveAccessReturns true if the memory operations A and B are consecutive. This is a simple API that does not depend on the analysis pass.
isDereferenceableAndAlignedPointerReturns true if V is always a dereferenceable pointer with sufficient alignment.
isDereferenceableAndAlignedPointerReturns true if V is always dereferenceable for Size bytes with sufficient alignment.
isDereferenceablePointerEquivalent to isDereferenceableAndAlignedPointer with an alignment of 1.
isDereferenceablePointerEquivalent to isDereferenceableAndAlignedPointer with an alignment of 1.
isEscapeSourceReturns true if the pointer is one which would have been considered an escape by isNotCapturedBefore.
isGuaranteedNotToBePoisonIterator-context overload of isGuaranteedNotToBePoison.
isGuaranteedNotToBePoisonReturns true if V cannot be poison, but may be undef.
isGuaranteedNotToBeUndefReturns true if V cannot be undef, but may be poison.
isGuaranteedNotToBeUndefOrPoisonReturn true if this function can prove that V does not have undef bits and is never poison.
isGuardReturns true iff U has semantics of a guard expressed in a form of call of llvm.experimental.guard intrinsic.
isGuardAsWidenableBranchReturns true iff U has semantics of a guard expressed in a form of a widenable conditional branch to deopt block.
isIdentifiedFunctionLocalReturn true if V is unambiguously identified at the function level.
isIdentifiedObjectReturn true if this pointer refers to a distinct and identifiable object.
isImpliedByDomConditionReturn the boolean condition value in the context of the given instruction if it is known based on dominating conditions.
isImpliedConditionReturn whether a compare is implied true or false by LHS, if known.
isImpliedConditionReturn whether RHS is implied true or false by LHS, if known.
isKnownIntegralReturn true if the floating-point value V is known to be an integer value.
isKnownInversionReturn true iff: 1. X is poison implies Y is poison. 2. X is true implies Y is false. 3. X is false implies Y is true. Otherwise, return false.
isKnownNegationReturn true if the two given values are negation.
isKnownNegativeReturns true if the given value is known be negative (i.e. non-positive and non-zero).
isKnownNeverInfOrNaNReturn true if the floating-point value can never contain a NaN or infinity.
isKnownNeverInfinityReturn true if the floating-point scalar value is not an infinity or if the floating-point vector value has no infinities.
isKnownNeverNaNReturn true if the floating-point scalar value is not a NaN or if the floating-point vector value has no NaN elements.
isKnownNonEqualReturn true if the given values are known to be non-equal when defined. Supports scalar integer types only.
isKnownNonNegativeReturns true if the give value is known to be non-negative.
isKnownNonZeroReturn true if the given value is known to be non-zero when defined.
isKnownPositiveReturns true if the given value is known be positive (i.e. non-negative and non-zero).
isKnownToBeAPowerOfTwoReturn true if the given value is known to have exactly one bit set when defined.
isKnownToBeAPowerOfTwoReturn true if V is known to be a power of two when defined.
isNoAliasCallReturn true if this pointer is returned by a noalias function.
isNotVisibleOnUnwindReturn true if Object memory is not visible after an unwind.
isSafeToDestroyConstantReturn true if it is safe to destroy constant C.
isSafeToLoadUnconditionallyReturn true if we know that executing a load from this value cannot trap.
isSafeToLoadUnconditionallyReturn true if we know that executing a load from this value cannot trap.
isSplatValueReturn true if each element of V is poisoned or equal to the others.
isWidenableBranchReturns true iff U is a widenable branch (that is, extractWidenableCondition returns widenable condition).
isWidenableConditionReturns true iff V has semantics of llvm.experimental.widenable.condition call.
isWritableObjectReturn true if Object is writable without trapping.
maskContainsAllOneOrUndefReturn true if any lane of an i1 mask is known true or undef.
matchSelectPatternConst overload of matchSelectPattern.
matchSelectPatternPattern match integer [SU]MIN, [SU]MAX and ABS idioms, returning the kind and providing the out parameter results if we successfully match.
onlyUsedByLifetimeMarkersReturn true if the only users of this pointer are lifetime markers.
onlyUsedByLifetimeMarkersOrDroppableInstsReturn true if the only users of this pointer are lifetime markers or droppable instructions.
parseWidenableBranchParses a widenable branch and returns Uses so they can be modified.
parseWidenableBranchParses a widenable branch and returns its condition, widenable condition, and successor blocks.
parseWidenableGuardCollects the individual checks from a widenable guard's condition.
possiblyDemandedEltsInMaskReturn an APInt of active lanes for a <Y x i1> mask.
propagateIRFlagsIntersect IR flags from scalar ops VL onto vector op I.
replaceDbgDeclareReplace a dbg.declare when its address is replaced.
replaceDominatedUsesWithReplace uses dominated by an edge with another value.
replaceDominatedUsesWithReplace uses dominated by an instruction with another value.
replaceDominatedUsesWithReplace uses dominated by a block's end with another value.
replaceDominatedUsesWithIfConditionally replace uses dominated by an instruction with another value.
replaceDominatedUsesWithIfConditionally replace uses dominated by a block's end with another value.
replaceDominatedUsesWithIfConditionally replace uses dominated by an edge with another value.
replaceRelativePointerUsersWithZeroFinds the same "relative pointer" pattern as described above, where the target is C, and replaces the entire pattern with a constant zero.
setLoadStoreAlignmentSet the alignment of load or store instruction I.
simplifyAShrInstGiven operands for a AShr, fold the result or return nulll.
simplifyAddInstGiven operands for an Add, fold the result or return null.
simplifyAndInstGiven operands for an And, fold the result or return null.
simplifyExtractElementInstGiven operands for an ExtractElementInst, fold the result or return null.
simplifyExtractValueInstGiven operands for an ExtractValueInst, fold the result or return null.
simplifyFAddInstGiven operands for an FAdd, fold the result or return null.
simplifyFDivInstGiven operands for an FDiv, fold the result or return null.
simplifyFMAFMulGiven operands for the multiplication of a FMA, fold the result or return null.
simplifyFMulInstGiven operands for an FMul, fold the result or return null.
simplifyFNegInstGiven operand for an FNeg, fold the result or return null.
simplifyFRemInstGiven operands for an FRem, fold the result or return null.
simplifyFSubInstGiven operands for an FSub, fold the result or return null.
simplifyFreezeInstGiven an operand for a Freeze, see if we can fold the result.
simplifyInsertElementInstGiven operands for an InsertElement, fold the result or return null.
simplifyInsertValueInstGiven operands for an InsertValueInst, fold the result or return null.
simplifyLShrInstGiven operands for a LShr, fold the result or return null.
simplifyMulInstGiven operands for a Mul, fold the result or return null.
simplifyOrInstGiven operands for an Or, fold the result or return null.
simplifySDivInstGiven operands for an SDiv, fold the result or return null.
simplifySRemInstGiven operands for an SRem, fold the result or return null.
simplifySelectInstGiven operands for a SelectInst, fold the result or return null.
simplifyShlInstGiven operands for a Shl, fold the result or return null.
simplifyShuffleVectorInstGiven operands for a ShuffleVectorInst, fold the result or return null.
simplifySubInstGiven operands for a Sub, fold the result or return null.
simplifyUDivInstGiven operands for a UDiv, fold the result or return null.
simplifyURemInstGiven operands for a URem, fold the result or return null.
simplifyWithOpReplacedSee if V simplifies when its operand Op is replaced with RepOp.
simplifyXorInstGiven operands for an Xor, fold the result or return null.
stripNullTestConst overload of stripNullTest.
stripNullTestReturns the inner value X if the expression has the form f(X) where f(X) == 0 if and only if X == 0, otherwise returns nullptr.
tryEnforceAlignmentTry to raise a controlled object's alignment to a preferred value.
wrapWrap an array of Value pointers as opaque LLVMValueRef values.
wrapConvert a Value pointer to an opaque LLVMValueRef.
AA::getWithTypeTry to convert V to type Ty without introducing new instructions.
AA::isValidInScopeReturn true if V is a valid value in Scope, that is a constant or an instruction/argument of Scope.
PatternMatch::m_CheckedFpMatch a float or vector where CheckFn(ele) is true, binding the constant. For vectors, poison elements are assumed to match.
PatternMatch::m_CheckedIntMatch an integer or vector where CheckFn(ele) is true, binding the constant. For vectors, poison elements are assumed to match.
PatternMatch::m_ConstantMatch a Constant, capturing the value if we match.
PatternMatch::m_DeferredMatch a deferred const Value* determined later in the same match expression.
PatternMatch::m_DeferredMatch a deferred Value* determined later in the same match expression.
PatternMatch::m_ImmConstantMatch an immediate Constant, capturing the value if we match.
PatternMatch::m_SpecificMatch if we have a specific specified value.
PatternMatch::m_ValueMatch against the nested pattern, and capture the value if we match.
PatternMatch::m_ValueMatch a const value, capturing it if we match.
PatternMatch::m_ValueMatch against the nested pattern, and capture the value if we match.
PatternMatch::m_ValueMatch a value, capturing it if we match.
VNCoercion::canCoerceMustAliasedValueToLoadReturn true if CoerceAvailableValueToLoadType would succeed if it was called.
VNCoercion::coerceAvailableValueToLoadTypeTry to coerce a stored value to a must-aliased load of a different type.
VNCoercion::getConstantValueForLoadExtract a constant load value from a constant store or load at an offset.
VNCoercion::getValueForLoadExtract bits for a load from a clobbering store or load at a given offset.
instrumentor::evaluateFilterEvaluate a filter expression for an instrumentation opportunity.
objcarc::GetARCInstKindMap V to its ARCInstKind equivalence class.
objcarc::GetArgRCIdentityRootAssuming the given instruction is one of the special calls such as objc_retain or objc_release, return the RCIdentity root of the argument of the call.
objcarc::GetBasicARCInstKindDetermine which objc runtime call instruction class V belongs to.
objcarc::GetRCIdentityRootReturn the RCIdentity root of value V.
objcarc::GetRCIdentityRootReturn the non-const RCIdentity root of value V.
objcarc::GetUnderlyingObjCPtrReturn the underlying ObjC object pointer for V.
objcarc::GetUnderlyingObjCPtrCachedA wrapper for GetUnderlyingObjCPtr used for results memoization.
objcarc::IsNullOrUndefReturn true if V is a null pointer constant or undef.
objcarc::IsObjCIdentifiedObjectReturn true if this value refers to a distinct and identifiable object.
objcarc::IsPotentialRetainableObjPtrTest whether Op may be a retainable object pointer using alias analysis.
objcarc::IsPotentialRetainableObjPtrTest whether the given value is possible a retainable object pointer.

Derived Classes

NameDescription
GlobalAlias Represents a single function or variable alias in the IR.
GlobalObject Base class for independently defined globals such as functions and variables.