llvm::CoroAsyncSizeReplace

This represents the llvm.coro.async.size.replace instruction.

Synopsis

Declared in <llvm/Transforms/Coroutines/CoroInstr.h>

class CoroAsyncSizeReplace
    : public IntrinsicInst

Base Classes

NameDescription
IntrinsicInstA wrapper class for inspecting calls to intrinsic functions. This allows the standard isa/dyncast/cast functionality to work with calls to intrinsic functions.

Types

NameDescription
BundleOpInfo Descriptor for one contiguous operand bundle in the Use list.
const_succ_iterator The const version of succ_iterator.
const_value_op_iterator Const iterator for directly iterating over the operand Values.
succ_iterator Iterator type that casts an operand to a basic block.
value_op_iterator Iterator for directly iterating over the operand Values.

Type Aliases

NameDescription
InstListType Intrusive instruction list type used by BasicBlock.
TailCallKindField Bitfield storing the tail-call kind in SubclassData. Bitfield element storing the TailCallKind in SubclassData.
bundle_op_iterator Iterator over mutable BundleOpInfo descriptors for this call.
const_bundle_op_iterator Iterator over const BundleOpInfo descriptors for this call.
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
BinaryOps Opcodes for binary operators (arithmetic, shifts, and bitwise logic).
CastOps Opcodes for cast instructions (trunc, zext, bitcast, addrspacecast, etc.).
FuncletPadOps Opcodes for funclet pad instructions (cleanuppad, catchpad).
MemoryOps Opcodes for memory instructions (alloca, load, store, GEP, atomics, etc.).
OperationEquivalenceFlags When checking for operation equivalence (using isSameOperationAs) it is sometimes useful to ignore certain attributes.
OtherOps Opcodes for other non-terminating instructions (cmp, phi, call, select, etc.).
TailCallKind Kind of tail-call marker on a call instruction.
TermOps Opcodes that terminate a basic block (return, branch, switch, etc.).
UnaryOps Opcodes for unary instructions (e.g. fneg).
ValueTy Concrete subclass of this.

Member Functions

NameDescription
operator= Assignment operators
DoPHITranslation DoPHITranslation overloads
addAnnotationMetadata addAnnotationMetadata overloads
addAttributeAtIndex addAttributeAtIndex overloads
addDereferenceableParamAttr Add a dereferenceable-bytes attribute to parameter i.
addDereferenceableRetAttr Add a dereferenceable-bytes attribute to the return value.
addFnAttr addFnAttr overloads
addParamAttr addParamAttr overloads
addParamAttrs Add parameter attributes from builder B to argument ArgNo.
addRangeRetAttr Add a range attribute to the return value.
addRetAttr addRetAttr overloads
addRetAttrs Add return attributes from builder B to this call.
addUse This method should only be used by the Use class.
adoptDbgRecords Transfer any DbgRecords on the position It onto this instruction.
andIRFlags Intersect wrapping, exact, and fast-math flags of V with this instruction.
applyMergedLocation Merge two debug locations and apply the result to this instruction.
arg_begin arg_begin overloads
arg_empty Return true if this call has no arguments.
arg_end arg_end overloads
arg_size Return the number of call arguments.
args args overloads
assertModuleIsMaterialized Assert in debug builds that modules containing this value are materialized.
assertModuleIsMaterializedImpl Assert that every module containing this value is fully materialized.
bundleOperandHasAttr Return whether the bundle operand at index OpIdx has attribute A.
bundle_op_info_begin bundle_op_info_begin overloads
bundle_op_info_end bundle_op_info_end overloads
bundle_op_infos bundle_op_infos overloads
canBeFreed Return true if this pointer's memory may be freed in its defining scope.
canReturnTwice Return true if the call can return twice
cannotDuplicate Return true if this invoke cannot be duplicated.
cannotMerge Return true if this call cannot be tail merged.
clone Create a copy of this instruction that is identical except it has no parent and no name.
cloneDebugInfoFrom Clone any debug-info attached to From onto this instruction.
comesBefore Return true if this instruction comes before Other in the same block.
copyFastMathFlags copyFastMathFlags overloads
copyIRFlags Copy supported exact, fast-math, and optionally wrapping flags from V.
copyMetadata Copy metadata from SrcInst onto this instruction.
copyProfileAndDebugMetadata Copy debug, profile, and memprof metadata from SrcInst.
countOperandBundlesOfType countOperandBundlesOfType overloads
dataOperandHasImpliedAttr Return true if data operand i has implied attribute Kind.
data_operands_begin data_operands_begin overloads
data_operands_empty Return true if this call has no data operands.
data_operands_end data_operands_end overloads
data_operands_size Return the number of data operands (arguments plus bundle inputs).
data_ops data_ops overloads
deleteValue Delete a pointer to a generic Value.
doesNoCfCheck Return true if this call skips indirect branch tracking.
doesNotAccessMemory doesNotAccessMemory overloads
doesNotCapture Return true if data operand OpNo does not capture memory.
doesNotReturn Return true if this call cannot return to its caller.
doesNotThrow Return true if this call cannot unwind.
dropAllReferences Drop all references to operands.
dropDbgRecords Erase any DbgRecords attached to this instruction.
dropDroppableUses Remove every uses that can safely be removed.
dropDroppableUsesIn Remove every use of this value in User that can safely be removed.
dropLocation Drop the instruction's debug location.
dropOneDbgRecord Erase a single DbgRecord I that is attached to this instruction.
dropPoisonGeneratingAnnotations Drops flags, attributes and metadata that may generate poison.
dropPoisonGeneratingAttributes Drops attributes that may generate poison.
dropPoisonGeneratingFlags Drops flags that may cause this instruction to evaluate to poison despite having non-poison inputs.
dropPoisonGeneratingMetadata Drops metadata that may generate poison.
dropUBImplyingAttrsAndMetadata Drop attributes or metadata that can cause immediate undefined behavior.
dropUBImplyingAttrsAndUnknownMetadata Drop non-debug unknown metadata and UB-implying call attributes.
dropUnknownNonDebugMetadata Drop all unknown metadata except for debug locations.
dump Support for debugging, callable in GDB: V->dump()
eraseFromParent This method unlinks 'this' from the containing basic block and deletes it.
eraseMetadataIf Erase all metadata that matches the predicate.
extractProfTotalWeight Retrieve total raw weight values of a branch.
getAAMetadata Return the AA metadata for this instruction.
getAccessType Return the type this instruction accesses in memory, if any.
getAllMetadata Get all metadata attached to this Instruction.
getAllMetadataOtherThanDebugLoc Get all metadata attached to this Instruction except the debug location.
getArgOperand Return the i-th call argument operand.
getArgOperandNo getArgOperandNo overloads
getArgOperandUse Return the Use for call argument i.
getArgOperandWithAttribute Return the first argument with attribute Kind.
getAttributeAtIndex Return attribute Kind at attribute index i.
getAttributes Return the attributes for this call.
getBundleOpInfoForOperand getBundleOpInfoForOperand overloads
getBundleOperandsEndIndex Return the index one past the last bundle operand in the Use array.
getBundleOperandsStartIndex Return the index of the first bundle operand in the Use array.
getCalledFunction Return the directly called Function, if known.
getCalledOperand Return the called function or value operand.
getCalledOperandUse Return the Use for the called operand.
getCaller Return the function containing this call.
getCallingConv Return the calling convention of this call.
getCaptureInfo Return which pointer components data operand OpNo may capture.
getContext All values hold a context through their type.
getConvergenceControlToken Return the convergence control token for this call, if it exists.
getDataLayout Return the data layout of the module this instruction belongs to.
getDataOperandNo getDataOperandNo overloads
getDbgRecordRange Return a range over the DbgRecords attached to this instruction.
getDbgReinsertionPosition Return an iterator to the next DbgRecord after this instruction.
getDebugLoc Return the debug location for this node as a DebugLoc.
getDescriptor Returns the descriptor co-allocated with this User instance.
getFastMathFlags Return all fast-math flags for this instruction.
getFastMathFlagsOrNone Return fast-math flags, or default flags when not a FPMathOperator.
getFnAttr Return function attribute Kind, including callee lookup if needed.
getFunction Return the function this instruction belongs to.
getFunctionType Return the function type of this call.
getInsertionPointAfterDef Return the first insertion point at which this instruction's result is defined.
getIntrinsicID Return the intrinsic ID of this intrinsic.
getMemoryEffects Return the memory effects of this call.
getMetadata Get the metadata of given kind attached to this Instruction.
getModule getModule overloads
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.
getNextNode Get the next node, or nullptr for the list tail.
getNumOperandBundles Return the number of operand bundles on this call.
getNumOperands Return the total number of operands (arguments, called value, and extras).
getNumSuccessors Return the number of successors that this terminator has.
getNumTotalBundleOperands Return the total number of bundle input operands on this call.
getNumUses This method computes the number of uses of this Value.
getOpcode Return the opcode of this instruction as a member of the opcode enums.
getOpcodeName Return the mnemonic name for this instruction's opcode.
getOperand getOperand overloads
getOperandBundle getOperandBundle overloads
getOperandBundleAt Return the operand bundle at a specific index.
getOperandBundleForOperand Return the operand bundle containing the operand at index OpIdx.
getOperandBundlesAsDefs Copy operand bundles on this call into Defs.
getOperandList getOperandList overloads
getOperandUse getOperandUse overloads
getParamAlign Return the alignment for argument ArgNo, if known.
getParamAttr Return parameter attribute Kind for argument ArgNo.
getParamAttributes Return the param attributes for argument ArgNo.
getParamByRefType Return the byref type for argument ArgNo.
getParamByValType Return the byval type for argument ArgNo.
getParamDereferenceableBytes Return dereferenceable bytes for argument i.
getParamDereferenceableOrNullBytes Return dereferenceable_or_null bytes for argument i.
getParamElementType Return the elementtype for argument ArgNo.
getParamInAllocaType Return the inalloca type for argument ArgNo.
getParamNoFPClass Return disallowed FP classes for argument i.
getParamPreallocatedType Return the preallocated type for argument ArgNo.
getParamStackAlign Return the stack alignment for argument ArgNo, if specified.
getParamStructRetType Return the sret type for argument ArgNo.
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.
getPrevNode getPrevNode overloads
getRange Return the constant range of the return value, if any.
getRawSubclassOptionalData Return the raw optional flags value contained in this value.
getRetAlign Return the alignment of the return value, if known.
getRetAttr Return return attribute Kind, including callee lookup if needed.
getRetAttributes Return the return attributes for this call.
getRetDereferenceableBytes Return dereferenceable bytes for the return value.
getRetDereferenceableOrNullBytes Return dereferenceable_or_null bytes for the return value.
getRetNoFPClass Return disallowed FP classes for the return value.
getReturnedArgOperand Return the argument marked with the returned attribute.
getSingleUndroppableUse getSingleUndroppableUse overloads
getStableDebugLoc Return a stable debug location for this instruction.
getSuccessor Return the successor at index Idx.
getTailCallKind Return the tail-call kind.
getType All values are typed, get the type of this value.
getUniqueUndroppableUser getUniqueUndroppableUser overloads
getValueID Return an ID for the concrete type of this object.
getValueName Return the symbol-table name entry for this value, if any.
handleMarkerRemoval Handle the debug-info implications of this instruction being removed. Any attached DbgRecords need to "fall" down onto the next instruction.
hasAllowContract Determine whether the allow-contract flag is set.
hasAllowReassoc Determine whether the allow-reassociation flag is set.
hasAllowReciprocal Determine whether the allow-reciprocal flag is set.
hasApproxFunc Determine whether the approximate-math-functions flag is set.
hasArgument Return true if V is passed as an argument to the called function.
hasArgumentWithAdditionalReturnCaptureComponents Return true if some argument has extra return capture components.
hasAtomicLoad Return true if this atomic instruction loads from memory.
hasAtomicStore Return true if this atomic instruction stores to memory.
hasByValArgument Return true if any call argument has the byval attribute.
hasClobberingOperandBundles Return whether any operand bundle on this call may write to the heap.
hasDbgRecords Return true if any DbgRecords are attached to this instruction.
hasDeoptState Return whether this call has a deopt-state operand bundle.
hasFnAttr Return true if this call has function attribute Kind.
hasIdenticalOperandBundleSchema Return whether this call has the same operand bundle layout as Other.
hasInAllocaArgument Return true if the last argument has the inalloca attribute.
hasMetadata hasMetadata overloads
hasMetadataOtherThanDebugLoc Return true if this instruction has metadata attached to it other than a debug location.
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.
hasNoInfs Determine whether the no-infs flag is set.
hasNoNaNs Determine whether the no-NaNs flag is set.
hasNoSignedWrap Determine whether the no signed wrap flag is set.
hasNoSignedZeros Determine whether the no-signed-zeros flag is set.
hasNoUnsignedWrap Determine whether the no unsigned wrap flag is set.
hasNonDebugLocLoopMetadata Return true if this instruction contains loop metadata other than a debug location.
hasNonNeg Determine whether the nneg flag is set.
hasOneUse Return true if there is exactly one use of this value.
hasOneUser Return true if there is exactly one user of this value.
hasOperandBundles Return whether this call has any operand bundles.
hasOperandBundlesOtherThan Return whether this call has operand bundles whose tags are not in IDs.
hasPoisonGeneratingAnnotations Return true if this instruction has poison-generating flags, attributes or metadata.
hasPoisonGeneratingAttributes Return true if this instruction has poison-generating attribute.
hasPoisonGeneratingFlags Return true if this operator has flags which may cause poison.
hasPoisonGeneratingMetadata Return true if this instruction has poison-generating metadata.
hasReadingOperandBundles Return whether any operand bundle on this call may read from the heap.
hasRetAttr Return true if the return value has attribute Kind.
hasSameSpecialState Return true if I2 has the same opcode-specific state as this instruction.
hasStructRetAttr Return true if the call returns a structure via the first pointer arg.
hasUBImplyingAttrs Return true if this instruction has UB-implying attributes that can cause immediate undefined behavior.
hasUseList Check if this Value has a use-list.
hasValueHandle Return true if there is a value handle associated with this value.
insertAfter insertAfter overloads
insertBefore insertBefore overloads
insertInto Insert an unlinked instruction into ParentBB at position It.
isArgOperand isArgOperand overloads
isArithmeticShift Return true if this is an arithmetic shift right.
isAssociative Return true if this intrinsic is an associative operation.
isAssumeLikeIntrinsic Checks if the intrinsic is an annotation.
isAtomic Return true if this instruction has an AtomicOrdering of unordered or higher.
isBinaryOp Return true if this instruction is a binary operator.
isBitwiseLogicOp Return true if this is and/or/xor.
isBundleOperand isBundleOperand overloads
isByValArgument Return true if argument ArgNo is passed by value.
isCallee isCallee overloads
isCast Return true if this instruction is a cast.
isCommutableOperand Return true if operand Op participates in a commutative intrinsic.
isCommutative Return true if swapping the first two arguments to the intrinsic produces the same result.
isConvergent Return true if this call is convergent.
isDataOperand isDataOperand overloads
isDebugOrPseudoInst Return true if the instruction is a DbgInfoIntrinsic or PseudoProbeInst.
isDroppable Return whether this user's uses may be dropped without affecting correctness.
isEHPad Return true if the instruction is a variety of EH-block.
isExact Determine whether the exact flag is set.
isFPDivRem Return true if this instruction is a floating-point division or remainder.
isFast Determine whether all fast-math-flags are set.
isFenceLike Return true if this instruction behaves like a memory fence.
isFuncletPad Return true if this instruction is a funclet pad.
isIdempotent Return true if the instruction is idempotent.
isIdenticalTo Return true if I is exactly identical to this instruction.
isIdenticalToWhenDefined Return true if I matches this instruction ignoring undefined-result flags.
isInAllocaArgument Return true if argument ArgNo is passed in an alloca.
isIndirectCall Return true if the callsite is an indirect call.
isInlineAsm Return true if this call targets inline assembly.
isIntDivRem Return true if this instruction is an integer division or remainder.
isLaunderOrStripInvariantGroup Return true if the instruction is a llvm.launder.invariant.group or llvm.strip.invariant.group.
isLifetimeStartOrEnd Return true if the instruction is a llvm.lifetime.start or llvm.lifetime.end marker.
isLogicalShift Return true if this is a logical shift left or a logical shift right.
isMustTailCall Return true if this call is marked musttail.
isNilpotent Return true if the instruction is nilpotent.
isNoBuiltin Return true if this call must not be treated as a library builtin.
isNoInline Return true if this call must not be inlined.
isNoTailCall Return true if this call is marked notail.
isNonContinuableTrap Return true if the call is for a noreturn trap intrinsic.
isOnlyUserOfAnyOperand Return true if this instruction is the only user of at least one operand.
isOperandBundleOfType Return whether the operand at index Idx belongs to a bundle with tag ID ID.
isPassPointeeByValueArgument Return true if argument ArgNo is passed by value on the stack.
isPassingUndefUB Return true if passing undef to argument ArgNo is undefined behavior.
isReturnNonNull Return true if the return value is known non-null.
isSafeToRemove Return true if the instruction can be removed if the result is unused.
isSameOperationAs Return true if I executes the same operation as this instruction.
isShift Return true if this instruction is a shift.
isSpecialTerminator Return true if this instruction is a special terminator.
isStrictFP Return true if this call requires strict floating-point semantics.
isSwiftError Return true if this value is a swifterror value.
isTailCall Return true if this is a tail call.
isTerminator Return true if this instruction is a terminator.
isUnaryOp Return true if this instruction is a unary operator.
isUsedByMetadata Return true if there is metadata referencing this value.
isUsedInBasicBlock Check if this value is used in the specified basic block.
isUsedOutsideOfBlock Return true if any use of this instruction is outside BB.
isVolatile Return true if this instruction has a volatile memory access.
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
mayHaveSideEffects Return true if the instruction may have side effects.
mayReadFromMemory Return true if this instruction may read memory.
mayReadOrWriteMemory Return true if this instruction may read or write memory.
maySynchronize Return true if this instruction may synchronize.
mayThrow Return true if this instruction may throw an exception.
mayWriteToMemory Return true if this instruction may modify memory.
mergeDIAssignID Merge DIAssignID metadata from this instruction and SourceInstructions.
moveAfter Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right after MovePos.
moveAfterPreserving Move this instruction after MovePos while preserving instruction order.
moveBefore moveBefore overloads
moveBeforePreserving moveBeforePreserving overloads
mutateFunctionType Change the function type of this call and update the result type.
mutateType Mutate the type of this Value to be of the specified type.
onlyAccessesArgMemory Return true if this call may only access argument-pointee memory.
onlyAccessesInaccessibleMemOrArgMem Return true if this call may only access arg or inaccessible memory.
onlyAccessesInaccessibleMemory Return true if this call may only access inaccessible memory.
onlyReadsMemory onlyReadsMemory overloads
onlyWritesMemory onlyWritesMemory overloads
op_begin op_begin overloads
op_end op_end overloads
operandBundleFromBundleOpInfo Map a BOI descriptor to an OperandBundleUse view.
operand_bundles Iterate over OperandBundleUse views for each bundle on this call.
operand_values operand_values overloads
operands operands overloads
operator delete Delete operators
paramHasAttr Return true if argument ArgNo has attribute Kind.
paramHasNonNullAttr Return true if argument ArgNo is known non-null.
populateBundleOperandInfos Populate bundle descriptors and operand uses from Bundles.
print print overloads
printAsOperand printAsOperand overloads
removeAttributeAtIndex Remove attribute Kind at attribute index i.
removeFnAttr Remove function attribute Kind from this call.
removeFnAttrs Remove function attributes matching AttrsToRemove.
removeFromParent This method unlinks 'this' from the containing basic block, but does not delete it.
removeParamAttr Remove parameter attribute Kind from argument ArgNo.
removeParamAttrs Remove parameter attributes matching AttrsToRemove from ArgNo.
removeRetAttr Remove return attribute Kind from this call.
removeRetAttrs Remove return attributes matching AttrsToRemove.
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.
replaceSuccessorWith Replace successor OldBB with NewBB.
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.
returnDoesNotAlias Return true if the return value has the noalias attribute.
reverseUseList Reverse the use-list.
setAAMetadata Set the AA metadata on this instruction from the AAMDNodes structure.
setArgOperand Set the i-th call argument operand.
setAttributes Set the attributes for this call.
setCalledFunction setCalledFunction overloads
setCalledOperand Set the called function or value operand.
setCallingConv Set the calling convention for this call.
setCanReturnTwice Mark this call as able to return twice.
setCannotDuplicate Mark that the invoke cannot be duplicated by the optimizer.
setCannotMerge Mark that the call cannot be merged with other calls by the optimizer.
setConvergent Mark this call as convergent.
setDebugLoc Set the debug location information for this instruction.
setDoesNotAccessMemory Mark the call as not accessing memory (sets MemoryEffects::none).
setDoesNotReturn Mark this call as noreturn.
setDoesNotThrow Mark this call as nounwind.
setFast Set or clear all fast-math-flags on this instruction.
setFastMathFlags Set multiple fast-math flags on this instruction.
setHasAllowContract Set or clear the allow-contract flag on this instruction.
setHasAllowReassoc Set or clear the reassociation flag on this instruction.
setHasAllowReciprocal Set or clear the allow-reciprocal flag on this instruction.
setHasApproxFunc Set or clear the approximate-math-functions flag on this instruction.
setHasNoInfs Set or clear the no-infs flag on this instruction.
setHasNoNaNs Set or clear the no-nans flag on this instruction.
setHasNoSignedWrap Set or clear the nsw flag on this instruction.
setHasNoSignedZeros Set or clear the no-signed-zeros flag on this instruction.
setHasNoUnsignedWrap Set or clear the nuw flag on this instruction.
setIsExact Set or clear the exact flag on this instruction.
setIsNoInline Mark this call as must-not-inline.
setMemoryEffects Set the memory effects of this call.
setMetadata setMetadata overloads
setName Change the name of the value.
setNoSanitizeMetadata Sets the nosanitize metadata on this instruction.
setNonNeg Set or clear the nneg flag on this instruction.
setNotConvergent Remove the convergent attribute from this call.
setNumHungOffUseOperands Set the operand count for a User with hung-off uses.
setOnlyAccessesArgMemory Mark the call as only accessing argument-pointee memory.
setOnlyAccessesInaccessibleMemOrArgMem Mark the call as only accessing arg or inaccessible memory.
setOnlyAccessesInaccessibleMemory Mark the call as only accessing inaccessible memory.
setOnlyReadsMemory Mark the call as only reading memory.
setOnlyWritesMemory Mark the call as only writing memory.
setOperand setOperand overloads
setSuccessor Update the successor at index Idx to point at BB.
setTailCall Mark or clear this call as a tail-call candidate.
setTailCallKind Set the tail-call kind for this call.
setValueName Set the symbol-table name entry for this 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
successors successors overloads
swapProfMetadata If the instruction has "branch_weights" MD_prof metadata and the MDNode has three operands (including name string), swap the order of the metadata.
takeName Transfer the name from V to this value.
tryIntersectAttributes Intersect this call's attributes with Other's attributes.
updateLocationAfterHoist Update the debug location after hoisting this instruction to a predecessor.
updateProfWeight Update profile metadata by scaling it by S / T.
use_begin use_begin overloads
use_empty Return true if this value has no uses.
use_end use_end overloads
user_back user_back overloads
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
willReturn Return true if the instruction will return.

Static Member Functions

NameDescription
Create Create overloads
addOperandBundle Create a clone of CB with operand bundle OB added.
classof classof overloads
dropDroppableUse Remove the droppable use U.
getOpcodeName Return the mnemonic name for the given opcode (e.g. "add", "ret").
isAssociative Return true if Opcode is an associative binary operator.
isBinaryOp Return true if the opcode is a binary operator.
isBitwiseLogicOp Return true if Opcode is and/or/xor.
isCast Return true if Opcode is one of the CastInst instructions.
isCommutative Return true if Opcode is a commutative binary operator.
isFPDivRem Return true if the opcode is a floating-point division or remainder.
isFuncletPad Return true if Opcode is one of the FuncletPadInst instructions.
isIdempotent Return true if Opcode is an idempotent operator (And or Or in LLVM).
isIntDivRem Return true if the opcode is an integer division or remainder.
isNilpotent Return true if Opcode is a nilpotent operator (Xor in LLVM).
isShift Return true if Opcode is one of the shift instructions.
isSpecialTerminator Return true if Opcode is a special terminator.
isTerminator Return true if the opcode is a terminator instruction.
isUnaryOp Return true if the opcode is a unary operator.
mayLowerToFunctionCall Check if the intrinsic might lower into a regular function call in the course of IR transformations.
removeOperandBundle Create a clone of CB with operand bundle ID removed.
removeOperandBundleAt Create a clone of CB with the operand bundle at Offset removed.

Data Members

NameDescription
DebugMarker Optional marker for debugging information immediately before this instruction.

Static Data Members

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

Using Declarations

NameDescription
getContext Bring Instruction::getContext into scope for CallBase users.

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 Type Aliases

NameDescription
AlignmentBitfieldElementT Bitfield element template for an alignment at bit offset Offset.
AtomicOrderingBitfieldElementT Bitfield element template for atomic ordering at bit offset Offset.
BoolBitfieldElementT Bitfield element template for a single boolean flag at bit offset Offset.
CallInstReservedField Bitfield element reserving bits used by CallInst subclass data.
CallingConvField Bitfield element storing the call's calling convention.
OpaqueField Opaque 16-bit bitfield covering the full Instruction subclass data.

Protected Enums

NameDescription
Unnamed enum The number of operands in the subclass.

Protected Member Functions

NameDescription
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.
cloneImpl Create a copy of this instruction without inserting it into a block.
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.
getMetadata Get the current metadata attachments for the given kind, if any.
getMetadataImpl Get metadata for the given kind, if any.
getNumSubclassExtraOperands Return how many extra operands this call subclass stores after the callee.
getNumSubclassExtraOperandsDynamic Get the number of extra operands for instructions that don't have a fixed number of extra operands.
getSubclassData Read a bitfield element from this instruction's subclass data.
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.
hasDescriptor Return true if this call has an attached descriptor (operand-bundle info).
operator new New operators
setMetadata setMetadata overloads
setSubclassData Store a bitfield element into this instruction's subclass data.
setValueSubclassData Set the opaque subclass data bits stored in this value.

Protected Static Member Functions

NameDescription
CountBundleInputs Return the total number of bundle input values in Bundles.
OpFrom Return the operand Use at compile-time index Idx from that.

Protected Data Members

NameDescription
Attrs parameter attributes for callable
FMF Fast-math flags stored by the instruction.
FTy Function type of the call (return type, parameter types, varargs).
HasDescriptor True if this value has a descriptor.
HasHungOffUses Whether operands are stored in a separately allocated array.
HasName True if this value has a name in the symbol table.
IsUsedByMD True if metadata references this value.
NumUserOperands Number of operands in this user.
SubclassOptionalData Hold arbitary subclass data.

Protected Static Data Members

NameDescription
CalledOperandOpEndIdx The last operand is the called operand.

Protected Using Declarations

NameDescription
CallBase Inherit Instruction constructors for call-like subclasses.

Non-Member Functions

NameDescription
CanInlineCallSiteCheck if it is legal to perform inlining of the function called by CB into the caller at this particular use, and sets fields in IFI.
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.
ConstantFoldCallAttempt to constant fold a call to the specified function with the specified arguments, returning null if unsuccessful.
ConstantFoldInstOperandsAttempt to constant fold an instruction with the specified operands.
ConstantFoldInstructionTry to constant fold the specified instruction.
DemoteRegToStackDemote an instruction's virtual register to a stack slot.
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.
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.
InlineFunctionInline CB while also updating a contextual profile.
InlineFunctionInline the callee of CB into its caller's basic block.
InlineFunctionImplThis should generally not be used, use InlineFunction instead.
MapValueLook up or compute a value in the value map.
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.
RemapInstructionConvert the instruction operands from referencing the current values into those specified by VM.
RemapSourceAtomRemap the source-location atom of instruction I.
ReplaceInstWithInstReplace one instruction with another and copy its debug location.
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.
SplitCriticalEdgeSplit a critical edge from a terminator to one of its successors.
SplitKnownCriticalEdgeSplit an edge that is already known to be critical.
UpgradeIntrinsicCallThis is the complement to the above, replacing a specific call to an intrinsic function with a call to the specified new function.
adaptNoAliasScopesAdapt an instruction's noalias metadata using a scope map.
addAssumptionsAppends the set of assumptions Assumptions to CB.
addDiffRuntimeChecksAdd runtime checks that compare pointer differences against a distance.
addRuntimeChecksAdd code that checks at runtime if the accessed arrays in PointerChecks overlap. Returns the final comparator value or NULL if no check is needed.
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.
buildAssumeFromInstBuild an llvm.assume call preserving information derived from an instruction.
callsGCLeafFunctionReturn true if this call calls a GC leaf function.
canConstantFoldCallToReturn true if it is even possible to fold a call to the specified function.
canInstructionHaveMMRAsReturn true if I can have !mmra metadata.
canReplaceOperandWithVariableReturn true if an operand may legally be replaced with a variable.
canReplacePointersIfEqualReturns true if pointer From can be replaced with equal pointer To.
canSinkOrHoistInstReturn true if I may legally be sunk or hoisted, ignoring faults.
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.
changeToInvokeAndSplitBasicBlockConvert a call into an invoke and split its basic block.
changeToUnreachableInsert unreachable before an instruction and make the rest of the block dead.
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.
combineAAMetadataCombine alias-analysis metadata after merging memory accesses.
combineMetadataForCSECombine metadata so one instruction can replace another after CSE.
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.
createMemCpyLoopKnownSizeEmit a loop implementing llvm.memcpy when the size is a constant.
createMemCpyLoopUnknownSizeEmit a loop implementing llvm.memcpy when the size is not a constant.
decomposeBitTestDecompose an icmp into the form ((X & Mask) pred C) if possible.
decomposeBitTestICmpDecompose an icmp into the form ((X & Mask) pred C) if possible.
diagnoseDontCallEmit a dontcall diagnostic for call instruction CI.
dropDebugUsersRemove debug intrinsic instructions for a given instruction.
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.
extractBranchWeightsExtract branch weights attatched to an Instruction
extractBranchWeightsExtract branch weights from a conditional branch or select Instruction.
extractProbeExtract the pseudo probe stored on Inst, if present.
extractProfTotalWeightRetrieve the total of all weights from an instruction.
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.
forEachCallbackCallSiteApply function Func to each CB's callback call site.
forEachCallbackFunctionApply function Func to each CB's callback function.
funcReturnsFirstArgOfCallReturns true if the parent of CI returns CI's first argument after calling CI.
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.
getAllocAlignmentGets the alignment argument for an aligned_alloc-like function.
getAllocSizeReturn the size of the requested allocation.
getAllocationFamilyIf a function is part of an allocation family (e.g. malloc/realloc/calloc/free), return the identifier for its family of functions.
getArgumentAliasingToReturnedPointerReturn the call pointer argument that aliasing rules treat as the returned pointer.
getArgumentAliasingToReturnedPointerNon-const overload of getArgumentAliasingToReturnedPointer.
getAssumptionsReturn the set of all assumptions for the call CB.
getAtomicSyncScopeIDReturn the sync scope of atomic instruction I, or nullopt if not atomic.
getAttributeBasedInliningDecisionDecide inlining from user directives and viability, without cost modeling.
getBaseObjectSizeLike getObjectSize(), but only for base objects.
getBranchWeightMDNodeGet the branch weights metadata node
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.
getConstrainedIntrinsicIDReturn the constrained intrinsic ID for an instruction under strictfp.
getDeinterleavedVectorTypeGiven a deinterleaveN intrinsic, return the (narrow) vector type of each factor.
getFreedOperandIf this if a call to a free function, return the freed operand.
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.
getInlineCostGet an InlineCost object representing the cost of inlining this callsite.
getInlineCostGet an InlineCost with the callee explicitly specified.
getInliningCostEstimateGet the cost estimate ignoring thresholds.
getInliningCostFeaturesGet the expanded cost features. The features are returned unconditionally, even if inlining is impossible.
getIntrinsicForCallSiteMap a call instruction to an intrinsic ID. Libcalls which have equivalent intrinsics are treated as-if they were intrinsics.
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.
getMemCacheHintMetadataReturn the cache hint metadata node for a memory operand.
getMetadataToPropagateCollect metadata from Inst that can be preserved after vectorization.
getObjectSizeCompute the size of the object pointed by Ptr.
getOrEnforceKnownAlignmentReturn a known alignment for a value, optionally raising it first.
getPointerOperandReturn the pointer operand of a load, store, or GEP, or null otherwise.
getPointerOperandNon-const overload of getPointerOperand.
getReallocatedOperandIf this is a call to a realloc function, return the reallocated operand.
getSplatValueGet splat value if the input is a splat vector or return nullptr.
getStringFnAttrAsIntParse a function string attribute on CB as a decimal integer.
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.
getValidBranchWeightMDNodeGet the valid branch weights metadata node
getValueProfDataFromInstExtract value-profile data annotated on instruction Inst.
getVectorIntrinsicIDForCallReturn the intrinsic ID mapped from a call, or not_intrinsic.
handleUnreachableTerminatorReplace instruction operands of an unreachable terminator with poison.
hasAssumptionReturn true if CB or the callee has the assumption AssumptionStr attached.
hasBranchWeightMDChecks if an instructions has Branch Weight Metadata
hasBranchWeightOriginCheck if Branch Weight Metadata has an "expected" field from an llvm.expect* intrinsic
hasExplicitlyUnknownBranchWeightsCheck whether I has explicitly-unknown branch-weight metadata.
hasProfMDChecks if an Instruction has MD_prof Metadata
hasValidBranchWeightMDChecks if an instructions has valid Branch Weight Metadata
impliesPoisonReturn true if V is poison given that ValAssumedPoison is already poison.
intersectAccessGroupsCompute the intersection of access groups on two instructions.
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).
isAssumeLikeIntrinsicReturn true if it is an intrinsic that cannot be speculated but also cannot trap.
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.
isCFGuardCallReturn true if CB is a Control Flow Guard check or dispatch call.
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.
isCriticalEdgeReturn true if the specified edge is a critical edge.
isCriticalEdgeReturn true if the edge from TI to Succ is a critical edge.
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.
isGuaranteedToExecuteForEveryIterationReturn true if this function can prove that the instruction I is executed for every iteration of the loop L.
isGuaranteedToTransferExecutionToSuccessorReturn true if instruction I always transfers execution to a successor.
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.
isInTailCallPositionTest whether an instruction is in a position for tail-call optimization.
isInstructionTriviallyDeadReturn true if an unused instruction is trivially dead.
isIntrinsicReturningPointerAliasingArgumentWithoutCapturingReturn true if Call is an intrinsic that returns a pointer aliasing an argument without capturing it otherwise.
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.
isLegalToPromoteReturn true if the given indirect call site can be made to call Callee.
isMathLibCallNoopCheck whether the given call has no side-effects. Specifically checks for math routimes which sometimes set errno.
isNoAliasCallReturn true if this pointer is returned by a noalias function.
isNotCrossLaneOperationReturn true if the instruction doesn't potentially cross vector lanes.
isNotVisibleOnUnwindReturn true if Object memory is not visible after an unwind.
isOnlyUsedInZeroComparisonReturn true if CxtI is only used in comparisons against zero.
isOnlyUsedInZeroEqualityComparisonReturn true if CxtI is only used in equality comparisons against zero.
isPotentiallyReachableDetermine whether instruction 'To' is reachable from 'From', without passing through any blocks in ExclusionSet, returning true if uncertain.
isReachedBeforeReturn true if I0 is reached before I1 in the control flow.
isRemovableAllocReturn true if this is a call to a removable allocation function.
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.
isSafeToMoveBeforeReturn true if I can be safely moved before InsertPoint.
isSafeToSpeculativelyExecuteReturn true if the instruction does not have any effects besides calculating the result and does not have undefined behavior.
isSafeToSpeculativelyExecuteIterator-context overload of isSafeToSpeculativelyExecute.
isSafeToSpeculativelyExecuteWithVariableReplacedDon't use information from its non-constant operands. This helper is used when its operands are going to be replaced.
isSplatValueReturn true if each element of V is poisoned or equal to the others.
isValidAssumeForContextReturn true if assume I is valid for the context in simplify query Q.
isValidAssumeForContextReturn true if assume I is valid to use at context instruction CxtI.
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.
lowerObjectSizeCallTry to turn a call to @llvm.objectsize into an integer value.
lowerObjectSizeCallTry to turn a call to @llvm.objectsize into an integer value.
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.
matchSimpleBinaryIntrinsicRecurrenceMatch a simple binary-intrinsic value-accumulating recurrence.
matchSimpleTernaryIntrinsicRecurrenceMatch a simple ternary-intrinsic value-accumulating recurrence.
mayHaveMemprofSummaryReturns true if the instruction could have memprof metadata, used to ensure consistency between summary analysis and the ThinLTO backend processing.
mayHaveNonDefUseDependencyReturns true if the result or effects of the given instructions I depend values not reachable through the def use graph.
maybeMarkSanitizerLibraryCallNoBuiltinMark known string library calls with NoBuiltin for sanitizer interception.
mustExecuteUBIfPoisonOnPathToReturn true if poison from Root would force UB on the path to OnPathTo.
mustTriggerUBReturn true if I must trigger UB when any of KnownPoison is poison.
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.
patchReplacementInstructionRelax a replacement so it is no more restrictive than the original.
possiblyDemandedEltsInMaskReturn an APInt of active lanes for a <Y x i1> mask.
programUndefinedIfPoisonReturn true if a poison result from Inst implies program undefined behavior.
programUndefinedIfUndefOrPoisonReturn true if this function can prove that if Inst is executed and yields a poison value or undef bits, then that will trigger undefined behavior.
promoteCallPromote the given indirect call site to unconditionally call Callee.
promoteCallWithIfThenElsePromote the given indirect call site to conditionally call Callee. The promoted direct call instruction is predicated on `CB.getCalledOperand() == Callee`.
promoteCallWithIfThenElsePromote an indirect call conditionally while updating contextual profiles.
promoteCallWithVTableCmpThis is similar to promoteCallWithIfThenElse except that the condition to promote a virtual call is that VPtr is the same as any of AddressPoints.
propagateIRFlagsIntersect IR flags from scalar ops VL onto vector op I.
propagateMetadataPropagate common metadata from VL onto instruction I.
recognizeBSwapOrBitReverseIdiomMatch a bswap or bitreverse idiom and replace it with an intrinsic.
replaceAllDbgUsesWithRetarget or salvage debug users when replacing a value that will be deleted.
replaceAndRecursivelySimplifyReplace all uses of 'I' with 'SimpleV' and simplify the uses recursively.
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.
replaceNonLocalUsesWithReplace non-local uses of an instruction with another value.
salvageDebugInfoSalvage debug records that use an instruction before it is deleted.
salvageDebugInfoForDbgValuesSalvage a specific set of debug records that use an instruction.
salvageDebugInfoImplAppend an instruction's effect to a salvaged DIExpression operand list.
salvageKnowledgeInsert an llvm.assume before an instruction to salvage its derived knowledge.
scaleProfDataScaling the profile data attached to 'I' using the ratio of S/T.
setAtomicSyncScopeIDSet the sync scope of atomic instruction I.
setBranchWeightsCreate a new branch_weights metadata node and add or overwrite a prof metadata reference to instruction I.
setExplicitlyUnknownBranchWeightsSpecify that this terminator's branch weights are unknown at compile time.
setExplicitlyUnknownBranchWeightsIfProfiledSet unknown branch weights only if the parent function has an entry count.
setFittedBranchWeightsVariant of setBranchWeights where the Weights will be fit first to uint32_t by shifting right.
setInlineRemarkSet the inline-remark attribute on call site CB.
setLoadStoreAlignmentSet the alignment of load or store instruction I.
setProbeDistributionFactorSet the distribution factor of the pseudo probe on Inst.
setProfMetadataAttach branch-weight profile metadata to a terminator or select.
setUnwindEdgeToSets the unwind edge of an instruction to a particular successor.
shouldInlineReturn the inline cost when the inliner should attempt CB, else nullopt.
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.
simplifyCallGiven a callsite, callee, and arguments, fold the result or return null.
simplifyConstrainedFPCallGiven a constrained FP intrinsic call, tries to compute its simplified version.
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.
simplifyInstructionSee if we can compute a simplified version of this instruction.
simplifyInstructionWithOperandsLike simplifyInstruction but the operands of I are replaced with NewOps.
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.
succ_beginReturn a const iterator to the first successor of terminator I.
succ_beginReturn an iterator to the first successor of terminator I.
succ_emptyReturn true if I's terminator has no successor blocks.
succ_endReturn the end iterator for successors of terminator I.
succ_endReturn a const end iterator for successors of terminator I.
succ_sizeReturn the number of successors of terminator I.
successorsReturn a const range of successor basic blocks of terminator I.
successorsReturn a range of successor basic blocks of terminator I.
tryEnforceAlignmentTry to raise a controlled object's alignment to a preferred value.
tryPromoteCallTry to promote (devirtualize) a virtual call on an Alloca. Return true on success.
updateLoopMetadataDebugLocationsUpdate debug locations in any MD_loop metadata attached to I.
versionCallSitePredicate and clone the given call site.
willNotFreeBetweenReturns true, if no instruction between Assume and CtxI may free (including through synchronization).
wouldInstructionBeTriviallyDeadReturn true if an instruction would be trivially dead with no uses.
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_AnyIntrinsicMatch any intrinsic call, capturing it if we match.
PatternMatch::m_AnyIntrinsicMatch any const intrinsic call, capturing it 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_InstructionMatch an instruction, capturing it if we match.
PatternMatch::m_InstructionMatch a const instruction, capturing it if we match.
PatternMatch::m_InstructionMatch against the nested pattern, and capture the instruction if we match.
PatternMatch::m_InstructionMatch against the nested pattern, and capture the instruction 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.
VFABI::getVectorVariantNamesPopulate VariantMappings with Vector Function ABI variant names for CI.
VFABI::setVectorVariantNamesOverwrite the Vector Function ABI variants attribute with the names provide in VariantMappings.
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::getValueForLoadExtract bits for a load from a clobbering store or load at a given offset.
at::deleteAssignmentMarkersDelete the llvm.dbg.assign intrinsics linked to Inst.
at::getDVRAssignmentMarkersReturn a range of dbg_assign records for which Inst performs the assignment they encode.
coro::isTriviallyMaterializableReturn true if I is trivially rematerializable.
dxil::getResourceNameFromBindingCallReturn the resource name from a handle-from-binding call.
instrumentor::evaluateFilterEvaluate a filter expression for an instrumentation opportunity.
memprof::addAmbiguousAttributeAdds an "ambiguous" memprof attribute to call with a matched allocation profile but that we haven't yet been able to disambiguate.
memprof::removeAnyExistingAmbiguousAttributeRemoves any existing "ambiguous" memprof attribute. Called before we apply a specific allocation type such as "cold", "notcold", or "hot".
memtag::getUntagLocationIfFunctionExitReturn the instruction at which stack untagging should run for a function exit, or null if Inst is not such an exit.
misexpect::checkBackendInstrumentationCheck backend instrumentation against llvm.expect thresholds.
misexpect::checkExpectAnnotationsCheck expect annotations against PGO counters for frontend or backend use.
misexpect::checkFrontendInstrumentationCheck frontend instrumentation against llvm.expect thresholds.
misexpect::verifyMisExpectveryifyMisExpect - compares RealWeights to the thresholds used for llvm.expect and warns if the PGO counters are outside of the expected range.
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::GetCallSiteClassHelper for GetARCInstKind. Determines what kind of construct CS is.
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::IsNoopInstructionReturn true if I is a bitcast or a zero-index GEP.
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.
objcarc::attachedCallOpBundleNeedsMarkerReturn whether clang_arc_attachedcall should be emitted with a marker.
objcarc::getAttachedARCFunctionReturn the ARC runtime function from a clang_arc_attachedcall bundle.
objcarc::getAttachedARCFunctionKindReturn the ARCInstKind of the function on clang_arc_attachedcall.
objcarc::hasAttachedCallOpBundleReturn true if CB has a clang_arc_attachedcall operand bundle.
pgo::promoteIndirectCallPromote an indirect call or invoke CB to a conditional direct call to F.