| AnyCoroIdInst * |
getId () const |
| bool |
hasCustomABI () const |
| int |
getCustomABI () const |
| Value * |
getMem () const |
| Public Member Functions inherited from llvm::IntrinsicInst |
|
|
IntrinsicInst ()=delete |
|
IntrinsicInst (const IntrinsicInst &)=delete |
| IntrinsicInst & |
operator= (const IntrinsicInst &)=delete |
| Intrinsic::ID |
getIntrinsicID () const |
|
Return the intrinsic ID of this intrinsic. |
| bool |
isAssociative () const |
| bool |
isCommutative () const |
|
Return true if swapping the first two arguments to the intrinsic produces the same result. |
| bool |
isAssumeLikeIntrinsic () const |
|
Checks if the intrinsic is an annotation. |
| Public Member Functions inherited from llvm::CallInst |
|
| TailCallKind |
getTailCallKind () const |
| bool |
isTailCall () const |
| bool |
isMustTailCall () const |
| bool |
isNoTailCall () const |
| void |
setTailCallKind (TailCallKind TCK) |
| void |
setTailCall (bool IsTc=true) |
| bool |
canReturnTwice () const |
|
Return true if the call can return twice. |
| void |
setCanReturnTwice () |
| bool |
isNonContinuableTrap () const |
|
Return true if the call is for a noreturn trap intrinsic. |
| LLVM_ABI void |
updateProfWeight (uint64_t S, uint64_t T) |
|
Updates profile metadata by scaling it by S / T. |
| Public Member Functions inherited from llvm::CallBase |
|
| Value * |
getConvergenceControlToken () const |
|
Return the convergence control token for this call, if it exists. |
| FunctionType * |
getFunctionType () const |
| void |
mutateFunctionType (FunctionType *FTy) |
|
DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Value) |
| User::op_iterator |
data_operands_begin () |
|
data_operands_begin/data_operands_end - Return iterators iterating over the call / invoke argument list and bundle operands. |
| User::const_op_iterator |
data_operands_begin () const |
| User::op_iterator |
data_operands_end () |
| User::const_op_iterator |
data_operands_end () const |
| iterator_range< User::op_iterator > |
data_ops () |
| iterator_range< User::const_op_iterator > |
data_ops () const |
| bool |
data_operands_empty () const |
| unsigned |
data_operands_size () const |
| bool |
isDataOperand (const Use *U) const |
| bool |
isDataOperand (Value::const_user_iterator UI) const |
| unsigned |
getDataOperandNo (Value::const_user_iterator UI) const |
|
Given a value use iterator, return the data operand corresponding to it. |
| unsigned |
getDataOperandNo (const Use *U) const |
|
Given a use for a data operand, get the data operand number that corresponds to it. |
| User::op_iterator |
arg_begin () |
|
Return the iterator pointing to the beginning of the argument list. |
| User::const_op_iterator |
arg_begin () const |
| User::op_iterator |
arg_end () |
|
Return the iterator pointing to the end of the argument list. |
| User::const_op_iterator |
arg_end () const |
| iterator_range< User::op_iterator > |
args () |
|
Iteration adapter for range-for loops. |
| iterator_range< User::const_op_iterator > |
args () const |
| bool |
arg_empty () const |
| unsigned |
arg_size () const |
| Value * |
getArgOperand (unsigned i) const |
| void |
setArgOperand (unsigned i, Value *v) |
| const Use & |
getArgOperandUse (unsigned i) const |
|
Wrappers for getting the Use of a call argument. |
| Use & |
getArgOperandUse (unsigned i) |
| bool |
isArgOperand (const Use *U) const |
| bool |
isArgOperand (Value::const_user_iterator UI) const |
| unsigned |
getArgOperandNo (const Use *U) const |
|
Given a use for a arg operand, get the arg operand number that corresponds to it. |
| unsigned |
getArgOperandNo (Value::const_user_iterator UI) const |
|
Given a value use iterator, return the arg operand number corresponding to it. |
| bool |
hasArgument (const Value *V) const |
|
Returns true if this CallSite passes the given Value* as an argument to the called function. |
| Value * |
getCalledOperand () const |
| const Use & |
getCalledOperandUse () const |
| Use & |
getCalledOperandUse () |
| Function * |
getCalledFunction () const |
|
Returns the function called, or null if this is an indirect function invocation or the function signature does not match the call signature, or the call target is an alias. |
| LLVM_ABI bool |
isIndirectCall () const |
|
Return true if the callsite is an indirect call. |
| bool |
isCallee (Value::const_user_iterator UI) const |
|
Determine whether the passed iterator points to the callee operand's Use. |
| bool |
isCallee (const Use *U) const |
|
Determine whether this Use is the callee operand's Use. |
| LLVM_ABI Function * |
getCaller () |
|
Helper to get the caller (the parent function). |
| const Function * |
getCaller () const |
| LLVM_ABI bool |
isMustTailCall () const |
|
Tests if this call site must be tail call optimized. |
| LLVM_ABI bool |
isTailCall () const |
|
Tests if this call site is marked as a tail call. |
| LLVM_ABI Intrinsic::ID |
getIntrinsicID () const |
|
Returns the intrinsic ID of the intrinsic called or Intrinsic::not_intrinsic if the called function is not an intrinsic, or if this is an indirect call. |
| void |
setCalledOperand (Value *V) |
| void |
setCalledFunction (Function *Fn) |
|
Sets the function called, including updating the function type. |
| void |
setCalledFunction (FunctionCallee Fn) |
|
Sets the function called, including updating the function type. |
| void |
setCalledFunction (FunctionType *FTy, Value *Fn) |
|
Sets the function called, including updating to the specified function type. |
| CallingConv::ID |
getCallingConv () const |
| void |
setCallingConv (CallingConv::ID CC) |
| bool |
isInlineAsm () const |
|
Check if this call is an inline asm statement. |
| AttributeList |
getAttributes () const |
|
Return the attributes for this call. |
| void |
setAttributes (AttributeList A) |
|
Set the attributes for this call. |
| AttributeSet |
getRetAttributes () const |
|
Return the return attributes for this call. |
| AttributeSet |
getParamAttributes (unsigned ArgNo) const |
|
Return the param attributes for this call. |
| bool |
tryIntersectAttributes (const CallBase *Other) |
|
Try to intersect the attributes from 'this' CallBase and the 'Other' CallBase. |
| bool |
hasFnAttr (Attribute::AttrKind Kind) const |
|
Determine whether this call has the given attribute. |
| bool |
hasFnAttr (StringRef Kind) const |
|
Determine whether this call has the given attribute. |
| void |
addAttributeAtIndex (unsigned i, Attribute::AttrKind Kind) |
|
adds the attribute to the list of attributes. |
| void |
addAttributeAtIndex (unsigned i, Attribute Attr) |
|
adds the attribute to the list of attributes. |
| void |
addFnAttr (Attribute::AttrKind Kind) |
|
Adds the attribute to the function. |
| void |
addFnAttr (Attribute Attr) |
|
Adds the attribute to the function. |
| void |
addRetAttr (Attribute::AttrKind Kind) |
|
Adds the attribute to the return value. |
| void |
addRetAttr (Attribute Attr) |
|
Adds the attribute to the return value. |
| void |
addRetAttrs (const AttrBuilder &B) |
|
Adds attributes to the return value. |
| void |
addParamAttr (unsigned ArgNo, Attribute::AttrKind Kind) |
|
Adds the attribute to the indicated argument. |
| void |
addParamAttr (unsigned ArgNo, Attribute Attr) |
|
Adds the attribute to the indicated argument. |
| void |
addParamAttrs (unsigned ArgNo, const AttrBuilder &B) |
|
Adds attributes to the indicated argument. |
| void |
removeAttributeAtIndex (unsigned i, Attribute::AttrKind Kind) |
|
removes the attribute from the list of attributes. |
| void |
removeAttributeAtIndex (unsigned i, StringRef Kind) |
|
removes the attribute from the list of attributes. |
| void |
removeFnAttrs (const AttributeMask &AttrsToRemove) |
|
Removes the attributes from the function. |
| void |
removeFnAttr (Attribute::AttrKind Kind) |
|
Removes the attribute from the function. |
| void |
removeFnAttr (StringRef Kind) |
|
Removes the attribute from the function. |
| void |
removeRetAttr (Attribute::AttrKind Kind) |
|
Removes the attribute from the return value. |
| void |
removeRetAttrs (const AttributeMask &AttrsToRemove) |
|
Removes the attributes from the return value. |
| void |
removeParamAttr (unsigned ArgNo, Attribute::AttrKind Kind) |
|
Removes the attribute from the given argument. |
| void |
removeParamAttr (unsigned ArgNo, StringRef Kind) |
|
Removes the attribute from the given argument. |
| void |
removeParamAttrs (unsigned ArgNo, const AttributeMask &AttrsToRemove) |
|
Removes the attributes from the given argument. |
| void |
addDereferenceableParamAttr (unsigned i, uint64_t Bytes) |
|
adds the dereferenceable attribute to the list of attributes. |
| void |
addDereferenceableRetAttr (uint64_t Bytes) |
|
adds the dereferenceable attribute to the list of attributes. |
| void |
addRangeRetAttr (const ConstantRange &CR) |
|
adds the range attribute to the list of attributes. |
| bool |
hasRetAttr (Attribute::AttrKind Kind) const |
|
Determine whether the return value has the given attribute. |
| bool |
hasRetAttr (StringRef Kind) const |
|
Determine whether the return value has the given attribute. |
| Attribute |
getRetAttr (Attribute::AttrKind Kind) const |
|
Return the attribute for the given attribute kind for the return value. |
| LLVM_ABI bool |
paramHasAttr (unsigned ArgNo, Attribute::AttrKind Kind) const |
|
Determine whether the argument or parameter has the given attribute. |
| LLVM_ABI bool |
paramHasNonNullAttr (unsigned ArgNo, bool AllowUndefOrPoison) const |
|
Return true if this argument has the nonnull attribute on either the CallBase instruction or the called function. |
| Attribute |
getAttributeAtIndex (unsigned i, Attribute::AttrKind Kind) const |
|
Get the attribute of a given kind at a position. |
| Attribute |
getAttributeAtIndex (unsigned i, StringRef Kind) const |
|
Get the attribute of a given kind at a position. |
| Attribute |
getFnAttr (StringRef Kind) const |
|
Get the attribute of a given kind for the function. |
| Attribute |
getFnAttr (Attribute::AttrKind Kind) const |
|
Get the attribute of a given kind for the function. |
| Attribute |
getParamAttr (unsigned ArgNo, Attribute::AttrKind Kind) const |
|
Get the attribute of a given kind from a given arg. |
| Attribute |
getParamAttr (unsigned ArgNo, StringRef Kind) const |
|
Get the attribute of a given kind from a given arg. |
| bool |
dataOperandHasImpliedAttr (unsigned i, Attribute::AttrKind Kind) const |
|
Return true if the data operand at index i has the attribute A. |
| LLVM_ABI CaptureInfo |
getCaptureInfo (unsigned OpNo) const |
|
Return which pointer components this operand may capture. |
| bool |
doesNotCapture (unsigned OpNo) const |
|
Determine whether this data operand is not captured. |
| LLVM_ABI bool |
hasArgumentWithAdditionalReturnCaptureComponents () const |
|
Returns whether the call has an argument that has an attribute like captures(ret: address, provenance), where the return capture components are not a subset of the other capture components. |
| bool |
isByValArgument (unsigned ArgNo) const |
|
Determine whether this argument is passed by value. |
| bool |
isInAllocaArgument (unsigned ArgNo) const |
|
Determine whether this argument is passed in an alloca. |
| bool |
isPassPointeeByValueArgument (unsigned ArgNo) const |
|
Determine whether this argument is passed by value, in an alloca, or is preallocated. |
| bool |
isPassingUndefUB (unsigned ArgNo) const |
|
Determine whether passing undef to this argument is undefined behavior. |
| bool |
hasInAllocaArgument () const |
|
Determine if there are is an inalloca argument. |
| bool |
doesNotAccessMemory (unsigned OpNo) const |
| bool |
onlyReadsMemory (unsigned OpNo) const |
| bool |
onlyWritesMemory (unsigned OpNo) const |
| MaybeAlign |
getRetAlign () const |
|
Extract the alignment of the return value. |
| MaybeAlign |
getParamAlign (unsigned ArgNo) const |
|
Extract the alignment for a call or parameter (0=unknown). |
| MaybeAlign |
getParamStackAlign (unsigned ArgNo) const |
| Type * |
getParamByRefType (unsigned ArgNo) const |
|
Extract the byref type for a call or parameter. |
| Type * |
getParamByValType (unsigned ArgNo) const |
|
Extract the byval type for a call or parameter. |
| Type * |
getParamPreallocatedType (unsigned ArgNo) const |
|
Extract the preallocated type for a call or parameter. |
| Type * |
getParamInAllocaType (unsigned ArgNo) const |
|
Extract the inalloca type for a call or parameter. |
| Type * |
getParamStructRetType (unsigned ArgNo) const |
|
Extract the sret type for a call or parameter. |
| Type * |
getParamElementType (unsigned ArgNo) const |
|
Extract the elementtype type for a parameter. |
| uint64_t |
getRetDereferenceableBytes () const |
|
Extract the number of dereferenceable bytes for a call or parameter (0=unknown). |
| uint64_t |
getParamDereferenceableBytes (unsigned i) const |
|
Extract the number of dereferenceable bytes for a call or parameter (0=unknown). |
| uint64_t |
getRetDereferenceableOrNullBytes () const |
|
Extract the number of dereferenceable_or_null bytes for a call (0=unknown). |
| uint64_t |
getParamDereferenceableOrNullBytes (unsigned i) const |
|
Extract the number of dereferenceable_or_null bytes for a parameter (0=unknown). |
| LLVM_ABI FPClassTest |
getRetNoFPClass () const |
|
Extract a test mask for disallowed floating-point value classes for the return value. |
| LLVM_ABI FPClassTest |
getParamNoFPClass (unsigned i) const |
|
Extract a test mask for disallowed floating-point value classes for the parameter. |
| LLVM_ABI std::optional< ConstantRange > |
getRange () const |
|
If this return value has a range attribute, return the value range of the argument. |
| LLVM_ABI bool |
isReturnNonNull () const |
|
Return true if the return value is known to be not null. |
| bool |
returnDoesNotAlias () const |
|
Determine if the return value is marked with NoAlias attribute. |
| Value * |
getReturnedArgOperand () const |
|
If one of the arguments has the 'returned' attribute, returns its operand value. |
| LLVM_ABI Value * |
getArgOperandWithAttribute (Attribute::AttrKind Kind) const |
|
If one of the arguments has the specified attribute, returns its operand value. |
| bool |
isNoBuiltin () const |
|
Return true if the call should not be treated as a call to a builtin. |
| bool |
isStrictFP () const |
|
Determine if the call requires strict floating point semantics. |
| bool |
isNoInline () const |
|
Return true if the call should not be inlined. |
| void |
setIsNoInline () |
| LLVM_ABI MemoryEffects |
getMemoryEffects () const |
| LLVM_ABI void |
setMemoryEffects (MemoryEffects ME) |
| LLVM_ABI bool |
doesNotAccessMemory () const |
|
Determine if the call does not access memory. |
| LLVM_ABI void |
setDoesNotAccessMemory () |
| LLVM_ABI bool |
onlyReadsMemory () const |
|
Determine if the call does not access or only reads memory. |
| LLVM_ABI void |
setOnlyReadsMemory () |
| LLVM_ABI bool |
onlyWritesMemory () const |
|
Determine if the call does not access or only writes memory. |
| LLVM_ABI void |
setOnlyWritesMemory () |
| LLVM_ABI bool |
onlyAccessesArgMemory () const |
|
Determine if the call can access memmory only using pointers based on its arguments. |
| LLVM_ABI void |
setOnlyAccessesArgMemory () |
| LLVM_ABI bool |
onlyAccessesInaccessibleMemory () const |
|
Determine if the function may only access memory that is inaccessible from the IR. |
| LLVM_ABI void |
setOnlyAccessesInaccessibleMemory () |
| LLVM_ABI bool |
onlyAccessesInaccessibleMemOrArgMem () const |
|
Determine if the function may only access memory that is either inaccessible from the IR or pointed to by its arguments. |
| LLVM_ABI void |
setOnlyAccessesInaccessibleMemOrArgMem () |
| bool |
doesNotReturn () const |
|
Determine if the call cannot return. |
| void |
setDoesNotReturn () |
| bool |
doesNoCfCheck () const |
|
Determine if the call should not perform indirect branch tracking. |
| bool |
doesNotThrow () const |
|
Determine if the call cannot unwind. |
| void |
setDoesNotThrow () |
| bool |
cannotDuplicate () const |
|
Determine if the invoke cannot be duplicated. |
| void |
setCannotDuplicate () |
| bool |
cannotMerge () const |
|
Determine if the call cannot be tail merged. |
| void |
setCannotMerge () |
| bool |
isConvergent () const |
|
Determine if the invoke is convergent. |
| void |
setConvergent () |
| void |
setNotConvergent () |
| bool |
hasStructRetAttr () const |
|
Determine if the call returns a structure through first pointer argument. |
| bool |
hasByValArgument () const |
|
Determine if any call argument is an aggregate passed by value. |
| unsigned |
getNumOperandBundles () const |
|
Return the number of operand bundles associated with this User. |
| bool |
hasOperandBundles () const |
|
Return true if this User has any operand bundles. |
| unsigned |
getBundleOperandsStartIndex () const |
|
Return the index of the first bundle operand in the Use array. |
| unsigned |
getBundleOperandsEndIndex () const |
|
Return the index of the last bundle operand in the Use array. |
| bool |
isBundleOperand (unsigned Idx) const |
|
Return true if the operand at index Idx is a bundle operand. |
| bool |
isOperandBundleOfType (uint32_t ID, unsigned Idx) const |
|
Return true if the operand at index Idx is a bundle operand that has tag ID ID. |
| bool |
isBundleOperand (const Use *U) const |
|
Returns true if the use is a bundle operand. |
| bool |
isBundleOperand (Value::const_user_iterator UI) const |
| unsigned |
getNumTotalBundleOperands () const |
|
Return the total number operands (not operand bundles) used by every operand bundle in this OperandBundleUser. |
| OperandBundleUse |
getOperandBundleAt (unsigned Index) const |
|
Return the operand bundle at a specific index. |
| unsigned |
countOperandBundlesOfType (StringRef Name) const |
|
Return the number of operand bundles with the tag Name attached to this instruction. |
| unsigned |
countOperandBundlesOfType (uint32_t ID) const |
|
Return the number of operand bundles with the tag ID attached to this instruction. |
| std::optional< OperandBundleUse > |
getOperandBundle (StringRef Name) const |
|
Return an operand bundle by name, if present. |
| std::optional< OperandBundleUse > |
getOperandBundle (uint32_t ID) const |
|
Return an operand bundle by tag ID, if present. |
| LLVM_ABI void |
getOperandBundlesAsDefs (SmallVectorImpl< OperandBundleDef > &Defs) const |
|
Return the list of operand bundles attached to this instruction as a vector of OperandBundleDefs. |
| OperandBundleUse |
getOperandBundleForOperand (unsigned OpIdx) const |
|
Return the operand bundle for the operand at index OpIdx. |
| LLVM_ABI bool |
hasReadingOperandBundles () const |
|
Return true if this operand bundle user has operand bundles that may read from the heap. |
| LLVM_ABI bool |
hasClobberingOperandBundles () const |
|
Return true if this operand bundle user has operand bundles that may write to the heap. |
| bool |
bundleOperandHasAttr (unsigned OpIdx, Attribute::AttrKind A) const |
|
Return true if the bundle operand at index OpIdx has the attribute A. |
| bool |
hasIdenticalOperandBundleSchema (const CallBase &Other) const |
|
Return true if Other has the same sequence of operand bundle tags with the same number of operands on each one of them as this OperandBundleUser. |
| bool |
hasOperandBundlesOtherThan (ArrayRef< uint32_t > IDs) const |
|
Return true if this operand bundle user contains operand bundles with tags other than those specified in IDs. |
| OperandBundleUse |
operandBundleFromBundleOpInfo (const BundleOpInfo &BOI) const |
|
Simple helper function to map a BundleOpInfo to an OperandBundleUse. |
| bundle_op_iterator |
bundle_op_info_begin () |
|
Return the start of the list of BundleOpInfo instances associated with this OperandBundleUser. |
| const_bundle_op_iterator |
bundle_op_info_begin () const |
|
Return the start of the list of BundleOpInfo instances associated with this OperandBundleUser. |
| bundle_op_iterator |
bundle_op_info_end () |
|
Return the end of the list of BundleOpInfo instances associated with this OperandBundleUser. |
| const_bundle_op_iterator |
bundle_op_info_end () const |
|
Return the end of the list of BundleOpInfo instances associated with this OperandBundleUser. |
| iterator_range< bundle_op_iterator > |
bundle_op_infos () |
|
Return the range [bundle_op_info_begin, bundle_op_info_end). |
| iterator_range< const_bundle_op_iterator > |
bundle_op_infos () const |
|
Return the range [bundle_op_info_begin, bundle_op_info_end). |
| LLVM_ABI op_iterator |
populateBundleOperandInfos (ArrayRef< OperandBundleDef > Bundles, const unsigned BeginIndex) |
|
Populate the BundleOpInfo instances and the Use& vector from Bundles. |
| bool |
hasDeoptState () const |
|
Return true if the call has deopt state bundle. |
| LLVM_ABI BundleOpInfo & |
getBundleOpInfoForOperand (unsigned OpIdx) |
|
Return the BundleOpInfo for the operand at index OpIdx. |
| const BundleOpInfo & |
getBundleOpInfoForOperand (unsigned OpIdx) const |
| Public Member Functions inherited from llvm::Instruction |
|
| LLVM_ABI iterator_range< simple_ilist< DbgRecord >::iterator > |
cloneDebugInfoFrom (const Instruction *From, std::optional< simple_ilist< DbgRecord >::iterator > FromHere=std::nullopt, bool InsertAtHead=false) |
|
Clone any debug-info attached to From onto this instruction. |
| iterator_range< simple_ilist< DbgRecord >::iterator > |
getDbgRecordRange () const |
|
Return a range over the DbgRecords attached to this instruction. |
| LLVM_ABI std::optional< simple_ilist< DbgRecord >::iterator > |
getDbgReinsertionPosition () |
|
Return an iterator to the position of the "Next" DbgRecord after this instruction, or std::nullopt. |
| LLVM_ABI bool |
hasDbgRecords () const |
|
Returns true if any DbgRecords are attached to this instruction. |
| LLVM_ABI void |
adoptDbgRecords (BasicBlock *BB, InstListType::iterator It, bool InsertAtHead) |
|
Transfer any DbgRecords on the position It onto this instruction, by simply adopting the sequence of DbgRecords (which is efficient) if possible, by merging two sequences otherwise. |
| LLVM_ABI void |
dropDbgRecords () |
|
Erase any DbgRecords attached to this instruction. |
| LLVM_ABI void |
dropOneDbgRecord (DbgRecord *I) |
|
Erase a single DbgRecord I that is attached to this instruction. |
| LLVM_ABI void |
handleMarkerRemoval () |
|
Handle the debug-info implications of this instruction being removed. |
|
Instruction (const Instruction &)=delete |
| Instruction & |
operator= (const Instruction &)=delete |
| Instruction * |
user_back () |
|
Specialize the methods defined in Value, as we know that an instruction can only be used by other instructions. |
| const Instruction * |
user_back () const |
| LLVM_ABI const Module * |
getModule () const |
|
Return the module owning the function this instruction belongs to or nullptr it the function does not have a module. |
| Module * |
getModule () |
| LLVM_ABI const Function * |
getFunction () const |
|
Return the function this instruction belongs to. |
| Function * |
getFunction () |
| LLVM_ABI const DataLayout & |
getDataLayout () const |
|
Get the data layout of the module this instruction belongs to. |
| LLVM_ABI void |
removeFromParent () |
|
This method unlinks 'this' from the containing basic block, but does not delete it. |
| LLVM_ABI InstListType::iterator |
eraseFromParent () |
|
This method unlinks 'this' from the containing basic block and deletes it. |
| LLVM_ABI |
LLVM_DEPRECATED ("Use iterators as instruction positions", "") void insertBefore(Instruction *InsertPos) |
|
Insert an unlinked instruction into a basic block immediately before the specified instruction. |
| LLVM_ABI void |
insertBefore (InstListType::iterator InsertPos) |
|
Insert an unlinked instruction into a basic block immediately before the specified position. |
| LLVM_ABI void |
insertAfter (Instruction *InsertPos) |
|
Insert an unlinked instruction into a basic block immediately after the specified instruction. |
| LLVM_ABI void |
insertAfter (InstListType::iterator InsertPos) |
|
Insert an unlinked instruction into a basic block immediately after the specified position. |
| LLVM_ABI InstListType::iterator |
insertInto (BasicBlock *ParentBB, InstListType::iterator It) |
|
Inserts an unlinked instruction into ParentBB at position It and returns the iterator of the inserted instruction. |
| LLVM_ABI void |
insertBefore (BasicBlock &BB, InstListType::iterator InsertPos) |
| LLVM_ABI |
LLVM_DEPRECATED ("Use iterators as instruction positions", "") void moveBefore(Instruction *MovePos) |
|
Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right before MovePos. |
| LLVM_ABI void |
moveBefore (InstListType::iterator InsertPos) |
|
Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right before MovePos. |
| LLVM_ABI void |
moveBeforePreserving (InstListType::iterator MovePos) |
|
Perform a moveBefore operation, while signalling that the caller intends to preserve the original ordering of instructions. |
| LLVM_ABI void |
moveBeforePreserving (BasicBlock &BB, InstListType::iterator I) |
|
Perform a moveBefore operation, while signalling that the caller intends to preserve the original ordering of instructions. |
| LLVM_ABI |
LLVM_DEPRECATED ("Use iterators as instruction positions", "") void moveBeforePreserving(Instruction *MovePos) |
|
Perform a moveBefore operation, while signalling that the caller intends to preserve the original ordering of instructions. |
| LLVM_ABI void |
moveBefore (BasicBlock &BB, InstListType::iterator I) |
|
Unlink this instruction and insert into BB before I. |
| LLVM_ABI void |
moveAfter (Instruction *MovePos) |
|
Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right after MovePos. |
| LLVM_ABI void |
moveAfter (InstListType::iterator MovePos) |
|
Unlink this instruction from its current basic block and insert it into the basic block that MovePos lives in, right after MovePos. |
| LLVM_ABI void |
moveAfterPreserving (Instruction *MovePos) |
|
See moveBeforePreserving . |
| LLVM_ABI bool |
comesBefore (const Instruction *Other) const |
|
Given an instruction Other in the same basic block as this instruction, return true if this instruction comes before Other. |
| LLVM_ABI std::optional< InstListType::iterator > |
getInsertionPointAfterDef () |
|
Get the first insertion point at which the result of this instruction is defined. |
| unsigned |
getOpcode () const |
|
Returns a member of one of the enums like Instruction::Add. |
| const char * |
getOpcodeName () const |
| bool |
isTerminator () const |
| bool |
isUnaryOp () const |
| bool |
isBinaryOp () const |
| bool |
isIntDivRem () const |
| bool |
isFPDivRem () const |
| bool |
isShift () const |
| bool |
isCast () const |
| bool |
isFuncletPad () const |
| bool |
isSpecialTerminator () const |
| LLVM_ABI bool |
isOnlyUserOfAnyOperand () |
|
It checks if this instruction is the only user of at least one of its operands. |
| bool |
isLogicalShift () const |
|
Return true if this is a logical shift left or a logical shift right. |
| bool |
isArithmeticShift () const |
|
Return true if this is an arithmetic shift right. |
| bool |
isBitwiseLogicOp () const |
|
Return true if this is and/or/xor. |
| bool |
hasMetadata () const |
|
Return true if this instruction has any metadata attached to it. |
| LLVM_ABI bool |
hasNonDebugLocLoopMetadata () const |
| bool |
hasMetadataOtherThanDebugLoc () const |
|
Return true if this instruction has metadata attached to it other than a debug location. |
| bool |
hasMetadata (unsigned KindID) const |
|
Return true if this instruction has the given type of metadata attached. |
| bool |
hasMetadata (StringRef Kind) const |
|
Return true if this instruction has the given type of metadata attached. |
| MDNode * |
getMetadata (unsigned KindID) const |
|
Get the metadata of given kind attached to this Instruction. |
| MDNode * |
getMetadata (StringRef Kind) const |
|
Get the metadata of given kind attached to this Instruction. |
| void |
getAllMetadata (SmallVectorImpl< std::pair< unsigned, MDNode * > > &MDs) const |
|
Get all metadata attached to this Instruction. |
| void |
getAllMetadataOtherThanDebugLoc (SmallVectorImpl< std::pair< unsigned, MDNode * > > &MDs) const |
|
This does the same thing as getAllMetadata, except that it filters out the debug location. |
| LLVM_ABI void |
setMetadata (unsigned KindID, MDNode *Node) |
|
Set the metadata of the specified kind to the specified node. |
| LLVM_ABI void |
setMetadata (StringRef Kind, MDNode *Node) |
| LLVM_ABI void |
copyMetadata (const Instruction &SrcInst, ArrayRef< unsigned > WL=ArrayRef< unsigned >()) |
|
Copy metadata from SrcInst to this instruction. |
| LLVM_ABI void |
eraseMetadataIf (function_ref< bool(unsigned, MDNode *)> Pred) |
|
Erase all metadata that matches the predicate. |
| LLVM_ABI void |
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. |
| LLVM_ABI void |
addAnnotationMetadata (StringRef Annotation) |
|
Adds an !annotation metadata node with Annotation to this instruction. |
| LLVM_ABI void |
addAnnotationMetadata (SmallVector< StringRef > Annotations) |
|
Adds an !annotation metadata node with an array of Annotations as a tuple to this instruction. |
| LLVM_ABI AAMDNodes |
getAAMetadata () const |
|
Returns the AA metadata for this instruction. |
| LLVM_ABI void |
setAAMetadata (const AAMDNodes &N) |
|
Sets the AA metadata on this instruction from the AAMDNodes structure. |
| LLVM_ABI void |
setNoSanitizeMetadata () |
|
Sets the nosanitize metadata on this instruction. |
| LLVM_ABI bool |
extractProfTotalWeight (uint64_t &TotalVal) const |
|
Retrieve total raw weight values of a branch. |
| void |
setDebugLoc (DebugLoc Loc) |
|
Set the debug location information for this instruction. |
| const DebugLoc & |
getDebugLoc () const |
|
Return the debug location for this node as a DebugLoc. |
| LLVM_ABI const DebugLoc & |
getStableDebugLoc () const |
|
Fetch the debug location for this node, unless this is a debug intrinsic, in which case fetch the debug location of the next non-debug node. |
| LLVM_ABI void |
setHasNoUnsignedWrap (bool b=true) |
|
Set or clear the nuw flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasNoSignedWrap (bool b=true) |
|
Set or clear the nsw flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setIsExact (bool b=true) |
|
Set or clear the exact flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setNonNeg (bool b=true) |
|
Set or clear the nneg flag on this instruction, which must be a zext instruction. |
| LLVM_ABI bool |
hasNoUnsignedWrap () const LLVM_READONLY |
|
Determine whether the no unsigned wrap flag is set. |
| LLVM_ABI bool |
hasNoSignedWrap () const LLVM_READONLY |
|
Determine whether the no signed wrap flag is set. |
| LLVM_ABI bool |
hasNonNeg () const LLVM_READONLY |
|
Determine whether the the nneg flag is set. |
| LLVM_ABI bool |
hasPoisonGeneratingFlags () const LLVM_READONLY |
|
Return true if this operator has flags which may cause this instruction to evaluate to poison despite having non-poison inputs. |
| LLVM_ABI void |
dropPoisonGeneratingFlags () |
|
Drops flags that may cause this instruction to evaluate to poison despite having non-poison inputs. |
| LLVM_ABI bool |
hasPoisonGeneratingMetadata () const LLVM_READONLY |
|
Return true if this instruction has poison-generating metadata. |
| LLVM_ABI void |
dropPoisonGeneratingMetadata () |
|
Drops metadata that may generate poison. |
| LLVM_ABI bool |
hasPoisonGeneratingReturnAttributes () const LLVM_READONLY |
|
Return true if this instruction has poison-generating attribute. |
| LLVM_ABI void |
dropPoisonGeneratingReturnAttributes () |
|
Drops return attributes that may generate poison. |
| bool |
hasPoisonGeneratingAnnotations () const |
|
Return true if this instruction has poison-generating flags, return attributes or metadata. |
| void |
dropPoisonGeneratingAnnotations () |
|
Drops flags, return attributes and metadata that may generate poison. |
| LLVM_ABI void |
dropUBImplyingAttrsAndUnknownMetadata (ArrayRef< unsigned > KnownIDs={}) |
|
This function drops non-debug unknown metadata (through dropUnknownNonDebugMetadata). |
| LLVM_ABI void |
dropUBImplyingAttrsAndMetadata (ArrayRef< unsigned > Keep={}) |
|
Drop any attributes or metadata that can cause immediate undefined behavior. |
| LLVM_ABI bool |
hasUBImplyingAttrs () const LLVM_READONLY |
|
Return true if this instruction has UB-implying attributes that can cause immediate undefined behavior. |
| LLVM_ABI bool |
isExact () const LLVM_READONLY |
|
Determine whether the exact flag is set. |
| LLVM_ABI void |
setFast (bool B) |
|
Set or clear all fast-math-flags on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasAllowReassoc (bool B) |
|
Set or clear the reassociation flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasNoNaNs (bool B) |
|
Set or clear the no-nans flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasNoInfs (bool B) |
|
Set or clear the no-infs flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasNoSignedZeros (bool B) |
|
Set or clear the no-signed-zeros flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasAllowReciprocal (bool B) |
|
Set or clear the allow-reciprocal flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasAllowContract (bool B) |
|
Set or clear the allow-contract flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setHasApproxFunc (bool B) |
|
Set or clear the approximate-math-functions flag on this instruction, which must be an operator which supports this flag. |
| LLVM_ABI void |
setFastMathFlags (FastMathFlags FMF) |
|
Convenience function for setting multiple fast-math flags on this instruction, which must be an operator which supports these flags. |
| LLVM_ABI void |
copyFastMathFlags (FastMathFlags FMF) |
|
Convenience function for transferring all fast-math flag values to this instruction, which must be an operator which supports these flags. |
| LLVM_ABI bool |
isFast () const LLVM_READONLY |
|
Determine whether all fast-math-flags are set. |
| LLVM_ABI bool |
hasAllowReassoc () const LLVM_READONLY |
|
Determine whether the allow-reassociation flag is set. |
| LLVM_ABI bool |
hasNoNaNs () const LLVM_READONLY |
|
Determine whether the no-NaNs flag is set. |
| LLVM_ABI bool |
hasNoInfs () const LLVM_READONLY |
|
Determine whether the no-infs flag is set. |
| LLVM_ABI bool |
hasNoSignedZeros () const LLVM_READONLY |
|
Determine whether the no-signed-zeros flag is set. |
| LLVM_ABI bool |
hasAllowReciprocal () const LLVM_READONLY |
|
Determine whether the allow-reciprocal flag is set. |
| LLVM_ABI bool |
hasAllowContract () const LLVM_READONLY |
|
Determine whether the allow-contract flag is set. |
| LLVM_ABI bool |
hasApproxFunc () const LLVM_READONLY |
|
Determine whether the approximate-math-functions flag is set. |
| LLVM_ABI FastMathFlags |
getFastMathFlags () const LLVM_READONLY |
|
Convenience function for getting all the fast-math flags, which must be an operator which supports these flags. |
| LLVM_ABI void |
copyFastMathFlags (const Instruction *I) |
|
Copy I's fast-math flags. |
| LLVM_ABI void |
copyIRFlags (const Value *V, bool IncludeWrapFlags=true) |
|
Convenience method to copy supported exact, fast-math, and (optionally) wrapping flags from V to this instruction. |
| LLVM_ABI void |
andIRFlags (const Value *V) |
|
Logical 'and' of any supported wrapping, exact, and fast-math flags of V and this instruction. |
| LLVM_ABI void |
applyMergedLocation (DebugLoc LocA, DebugLoc LocB) |
|
Merge 2 debug locations and apply it to the Instruction. |
| LLVM_ABI void |
updateLocationAfterHoist () |
|
Updates the debug location given that the instruction has been hoisted from a block to a predecessor of that block. |
| LLVM_ABI void |
dropLocation () |
|
Drop the instruction's debug location. |
| LLVM_ABI void |
mergeDIAssignID (ArrayRef< const Instruction * > SourceInstructions) |
|
Merge the DIAssignID metadata from this instruction and those attached to instructions in SourceInstructions. |
| LLVM_ABI bool |
isAssociative () const LLVM_READONLY |
|
Return true if the instruction is associative: |
| LLVM_ABI bool |
isCommutative () const LLVM_READONLY |
|
Return true if the instruction is commutative: |
| bool |
isIdempotent () const |
|
Return true if the instruction is idempotent: |
| bool |
isNilpotent () const |
|
Return true if the instruction is nilpotent: |
| LLVM_ABI bool |
mayWriteToMemory () const LLVM_READONLY |
|
Return true if this instruction may modify memory. |
| LLVM_ABI bool |
mayReadFromMemory () const LLVM_READONLY |
|
Return true if this instruction may read memory. |
| bool |
mayReadOrWriteMemory () const |
|
Return true if this instruction may read or write memory. |
| LLVM_ABI bool |
isAtomic () const LLVM_READONLY |
|
Return true if this instruction has an AtomicOrdering of unordered or higher. |
| LLVM_ABI bool |
hasAtomicLoad () const LLVM_READONLY |
|
Return true if this atomic instruction loads from memory. |
| LLVM_ABI bool |
hasAtomicStore () const LLVM_READONLY |
|
Return true if this atomic instruction stores to memory. |
| LLVM_ABI bool |
isVolatile () const LLVM_READONLY |
|
Return true if this instruction has a volatile memory access. |
| LLVM_ABI Type * |
getAccessType () const LLVM_READONLY |
|
Return the type this instruction accesses in memory, if any. |
| LLVM_ABI bool |
mayThrow (bool IncludePhaseOneUnwind=false) const LLVM_READONLY |
|
Return true if this instruction may throw an exception. |
| bool |
isFenceLike () const |
|
Return true if this instruction behaves like a memory fence: it can load or store to memory location without being given a memory location. |
| LLVM_ABI bool |
mayHaveSideEffects () const LLVM_READONLY |
|
Return true if the instruction may have side effects. |
| LLVM_ABI bool |
isSafeToRemove () const LLVM_READONLY |
|
Return true if the instruction can be removed if the result is unused. |
| LLVM_ABI bool |
willReturn () const LLVM_READONLY |
|
Return true if the instruction will return (unwinding is considered as a form of returning control flow here). |
| bool |
isEHPad () const |
|
Return true if the instruction is a variety of EH-block. |
| LLVM_ABI bool |
isLifetimeStartOrEnd () const LLVM_READONLY |
|
Return true if the instruction is a llvm.lifetime.start or llvm.lifetime.end marker. |
| LLVM_ABI bool |
isLaunderOrStripInvariantGroup () const LLVM_READONLY |
|
Return true if the instruction is a llvm.launder.invariant.group or llvm.strip.invariant.group. |
| LLVM_ABI bool |
isDebugOrPseudoInst () const LLVM_READONLY |
|
Return true if the instruction is a DbgInfoIntrinsic or PseudoProbeInst. |
| LLVM_ABI Instruction * |
clone () const |
|
Create a copy of 'this' instruction that is identical in all ways except the following: |
| LLVM_ABI bool |
isIdenticalTo (const Instruction *I) const LLVM_READONLY |
|
Return true if the specified instruction is exactly identical to the current one. |
| LLVM_ABI bool |
isIdenticalToWhenDefined (const Instruction *I, bool IntersectAttrs=false) const LLVM_READONLY |
|
This is like isIdenticalTo, except that it ignores the SubclassOptionalData flags, which may specify conditions under which the instruction's result is undefined. |
| LLVM_ABI bool |
isSameOperationAs (const Instruction *I, unsigned flags=0) const LLVM_READONLY |
|
This function determines if the specified instruction executes the same operation as the current one. |
| LLVM_ABI bool |
hasSameSpecialState (const Instruction *I2, bool IgnoreAlignment=false, bool IntersectAttrs=false) const LLVM_READONLY |
|
This function determines if the speficied instruction has the same "special" characteristics as the current one. |
| LLVM_ABI bool |
isUsedOutsideOfBlock (const BasicBlock *BB) const LLVM_READONLY |
|
Return true if there are any uses of this instruction in blocks other than the specified block. |
| LLVM_ABI unsigned |
getNumSuccessors () const LLVM_READONLY |
|
Return the number of successors that this instruction has. |
| LLVM_ABI BasicBlock * |
getSuccessor (unsigned Idx) const LLVM_READONLY |
|
Return the specified successor. This instruction must be a terminator. |
| LLVM_ABI void |
setSuccessor (unsigned Idx, BasicBlock *BB) |
|
Update the specified successor to point at the provided block. |
| LLVM_ABI void |
replaceSuccessorWith (BasicBlock *OldBB, BasicBlock *NewBB) |
|
Replace specified successor OldBB to point at the provided block. |
| LLVM_ABI void |
dropUnknownNonDebugMetadata (ArrayRef< unsigned > KnownIDs={}) |
|
Drop all unknown metadata except for debug locations. |
| Public Member Functions inherited from llvm::User |
|
|
User (const User &)=delete |
| LLVM_ABI void |
operator delete (void *Usr) |
|
Free memory allocated for User and Use objects. |
| void |
operator delete (void *Usr, HungOffOperandsAllocMarker) |
|
Placement delete - required by std, called if the ctor throws. |
| void |
operator delete (void *Usr, IntrusiveOperandsAllocMarker) |
|
Placement delete - required by std, called if the ctor throws. |
| void |
operator delete (void *Usr, IntrusiveOperandsAndDescriptorAllocMarker) |
|
Placement delete - required by std, called if the ctor throws. |
| const Use * |
getOperandList () const |
| Use * |
getOperandList () |
| Value * |
getOperand (unsigned i) const |
| void |
setOperand (unsigned i, Value *Val) |
| const Use & |
getOperandUse (unsigned i) const |
| Use & |
getOperandUse (unsigned i) |
| unsigned |
getNumOperands () const |
| LLVM_ABI ArrayRef< const uint8_t > |
getDescriptor () const |
|
Returns the descriptor co-allocated with this User instance. |
| LLVM_ABI MutableArrayRef< uint8_t > |
getDescriptor () |
|
Returns the descriptor co-allocated with this User instance. |
| void |
setNumHungOffUseOperands (unsigned NumOps) |
|
Subclasses with hung off uses need to manage the operand count themselves. |
| LLVM_ABI bool |
isDroppable () const |
|
A droppable user is a user for which uses can be dropped without affecting correctness and should be dropped rather than preventing a transformation from happening. |
| op_iterator |
op_begin () |
| const_op_iterator |
op_begin () const |
| op_iterator |
op_end () |
| const_op_iterator |
op_end () const |
| op_range |
operands () |
| const_op_range |
operands () const |
| value_op_iterator |
value_op_begin () |
| value_op_iterator |
value_op_end () |
| iterator_range< value_op_iterator > |
operand_values () |
| const_value_op_iterator |
value_op_begin () const |
| const_value_op_iterator |
value_op_end () const |
| iterator_range< const_value_op_iterator > |
operand_values () const |
| void |
dropAllReferences () |
|
Drop all references to operands. |
| LLVM_ABI bool |
replaceUsesOfWith (Value *From, Value *To) |
|
Replace uses of one Value with another. |
| Public Member Functions inherited from llvm::Value |
|
|
Value (const Value &)=delete |
| Value & |
operator= (const Value &)=delete |
| LLVM_ABI void |
deleteValue () |
|
Delete a pointer to a generic Value. |
| LLVM_ABI void |
dump () const |
|
Support for debugging, callable in GDB: V->dump() |
| Type * |
getType () const |
|
All values are typed, get the type of this value. |
| LLVM_ABI LLVMContext & |
getContext () const |
|
All values hold a context through their type. |
| bool |
hasName () const |
| LLVM_ABI ValueName * |
getValueName () const |
| LLVM_ABI void |
setValueName (ValueName *VN) |
| LLVM_ABI StringRef |
getName () const |
|
Return a constant reference to the value's name. |
| LLVM_ABI void |
setName (const Twine &Name) |
|
Change the name of the value. |
| LLVM_ABI void |
takeName (Value *V) |
|
Transfer the name from V to this value. |
| LLVM_ABI std::string |
getNameOrAsOperand () const |
| LLVM_ABI void |
replaceAllUsesWith (Value *V) |
|
Change all uses of this to point to a new Value. |
| LLVM_ABI void |
replaceNonMetadataUsesWith (Value *V) |
|
Change non-metadata uses of this to point to a new Value. |
| LLVM_ABI void |
replaceUsesWithIf (Value *New, llvm::function_ref< bool(Use &U)> ShouldReplace) |
|
Go through the uses list for this definition and make each use point to "V" if the callback ShouldReplace returns true for the given Use. |
| LLVM_ABI void |
replaceUsesOutsideBlock (Value *V, BasicBlock *BB) |
|
replaceUsesOutsideBlock - Go through the uses list for this definition and make each use point to "V" instead of "this" when the use is outside the block. |
| LLVM_ABI void |
assertModuleIsMaterializedImpl () const |
| void |
assertModuleIsMaterialized () const |
| bool |
hasUseList () const |
|
Check if this Value has a use-list. |
| bool |
use_empty () const |
| bool |
materialized_use_empty () const |
| use_iterator |
materialized_use_begin () |
| const_use_iterator |
materialized_use_begin () const |
| use_iterator |
use_begin () |
| const_use_iterator |
use_begin () const |
| use_iterator |
use_end () |
| const_use_iterator |
use_end () const |
| iterator_range< use_iterator > |
materialized_uses () |
| iterator_range< const_use_iterator > |
materialized_uses () const |
| iterator_range< use_iterator > |
uses () |
| iterator_range< const_use_iterator > |
uses () const |
| bool |
user_empty () const |
| user_iterator |
materialized_user_begin () |
| const_user_iterator |
materialized_user_begin () const |
| user_iterator |
user_begin () |
| const_user_iterator |
user_begin () const |
| user_iterator |
user_end () |
| const_user_iterator |
user_end () const |
| User * |
user_back () |
| const User * |
user_back () const |
| iterator_range< user_iterator > |
materialized_users () |
| iterator_range< const_user_iterator > |
materialized_users () const |
| iterator_range< user_iterator > |
users () |
| iterator_range< const_user_iterator > |
users () const |
| bool |
hasOneUse () const |
|
Return true if there is exactly one use of this value. |
| LLVM_ABI bool |
hasNUses (unsigned N) const |
|
Return true if this Value has exactly N uses. |
| LLVM_ABI bool |
hasNUsesOrMore (unsigned N) const |
|
Return true if this value has N uses or more. |
| LLVM_ABI bool |
hasOneUser () const |
|
Return true if there is exactly one user of this value. |
| LLVM_ABI Use * |
getSingleUndroppableUse () |
|
Return true if there is exactly one use of this value that cannot be dropped. |
| const Use * |
getSingleUndroppableUse () const |
| LLVM_ABI User * |
getUniqueUndroppableUser () |
|
Return true if there is exactly one unique user of this value that cannot be dropped (that user can have multiple uses of this value). |
| const User * |
getUniqueUndroppableUser () const |
| LLVM_ABI bool |
hasNUndroppableUses (unsigned N) const |
|
Return true if there this value. |
| LLVM_ABI bool |
hasNUndroppableUsesOrMore (unsigned N) const |
|
Return true if this value has N uses or more. |
| LLVM_ABI void |
dropDroppableUses (llvm::function_ref< bool(const Use *)> ShouldDrop=[](const Use *) { return true;}) |
|
Remove every uses that can safely be removed. |
| LLVM_ABI void |
dropDroppableUsesIn (User &Usr) |
|
Remove every use of this value in User that can safely be removed. |
| LLVM_ABI bool |
isUsedInBasicBlock (const BasicBlock *BB) const |
|
Check if this value is used in the specified basic block. |
| LLVM_ABI unsigned |
getNumUses () const |
|
This method computes the number of uses of this Value. |
| void |
addUse (Use &U) |
|
This method should only be used by the Use class. |
| unsigned |
getValueID () const |
|
Return an ID for the concrete type of this object. |
| unsigned |
getRawSubclassOptionalData () const |
|
Return the raw optional flags value contained in this value. |
| void |
clearSubclassOptionalData () |
|
Clear the optional flags contained in this value. |
| bool |
hasSameSubclassOptionalData (const Value *V) const |
|
Check the optional flags for equality. |
| bool |
hasValueHandle () const |
|
Return true if there is a value handle associated with this value. |
| bool |
isUsedByMetadata () const |
|
Return true if there is metadata referencing this value. |
| LLVM_ABI bool |
isSwiftError () const |
|
Return true if this value is a swifterror value. |
| LLVM_ABI const Value * |
stripPointerCasts () const |
|
Strip off pointer casts, all-zero GEPs and address space casts. |
| Value * |
stripPointerCasts () |
| LLVM_ABI const Value * |
stripPointerCastsAndAliases () const |
|
Strip off pointer casts, all-zero GEPs, address space casts, and aliases. |
| Value * |
stripPointerCastsAndAliases () |
| LLVM_ABI const Value * |
stripPointerCastsSameRepresentation () const |
|
Strip off pointer casts, all-zero GEPs and address space casts but ensures the representation of the result stays the same. |
| Value * |
stripPointerCastsSameRepresentation () |
| LLVM_ABI const Value * |
stripPointerCastsForAliasAnalysis () const |
|
Strip off pointer casts, all-zero GEPs, single-argument phi nodes and invariant group info. |
| Value * |
stripPointerCastsForAliasAnalysis () |
| LLVM_ABI const Value * |
stripInBoundsConstantOffsets () const |
|
Strip off pointer casts and all-constant inbounds GEPs. |
| Value * |
stripInBoundsConstantOffsets () |
| LLVM_ABI const Value * |
stripAndAccumulateConstantOffsets (const DataLayout &DL, APInt &Offset, bool AllowNonInbounds, bool AllowInvariantGroup=false, function_ref< bool(Value &Value, APInt &Offset)> ExternalAnalysis=nullptr, bool LookThroughIntToPtr=false) const |
|
Accumulate the constant offset this value has compared to a base pointer. |
| Value * |
stripAndAccumulateConstantOffsets (const DataLayout &DL, APInt &Offset, bool AllowNonInbounds, bool AllowInvariantGroup=false, function_ref< bool(Value &Value, APInt &Offset)> ExternalAnalysis=nullptr, bool LookThroughIntToPtr=false) |
| const Value * |
stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) const |
|
This is a wrapper around stripAndAccumulateConstantOffsets with the in-bounds requirement set to false. |
| Value * |
stripAndAccumulateInBoundsConstantOffsets (const DataLayout &DL, APInt &Offset) |
| LLVM_ABI const Value * |
stripInBoundsOffsets (function_ref< void(const Value *)> Func=[](const Value *) {}) const |
|
Strip off pointer casts and inbounds GEPs. |
| Value * |
stripInBoundsOffsets (function_ref< void(const Value *)> Func=[](const Value *) {}) |
| LLVM_ABI std::optional< int64_t > |
getPointerOffsetFrom (const Value *Other, const DataLayout &DL) const |
|
If this ptr is provably equal to Other plus a constant offset, return that offset in bytes. |
| LLVM_ABI bool |
canBeFreed () const |
|
Return true if the memory object referred to by V can by freed in the scope for which the SSA value defining the allocation is statically defined. |
| LLVM_ABI uint64_t |
getPointerDereferenceableBytes (const DataLayout &DL, bool &CanBeNull, bool &CanBeFreed) const |
|
Returns the number of bytes known to be dereferenceable for the pointer value. |
| LLVM_ABI Align |
getPointerAlignment (const DataLayout &DL) const |
|
Returns an alignment of the pointer value. |
| LLVM_ABI const Value * |
DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) const |
|
Translate PHI node to its predecessor from the given basic block. |
| Value * |
DoPHITranslation (const BasicBlock *CurBB, const BasicBlock *PredBB) |
| void |
mutateType (Type *Ty) |
|
Mutate the type of this Value to be of the specified type. |
| template |
|
| void |
sortUseList (Compare Cmp) |
|
Sort the use-list. |
| LLVM_ABI void |
reverseUseList () |
|
Reverse the use-list. |
| LLVM_ABI void |
print (raw_ostream &O, bool IsForDebug=false) const |
|
Implement operator<< on Value. |
| LLVM_ABI void |
print (raw_ostream &O, ModuleSlotTracker &MST, bool IsForDebug=false) const |
| LLVM_ABI void |
printAsOperand (raw_ostream &O, bool PrintType=true, const Module *M=nullptr) const |
|
Print the name of this Value out to the specified raw_ostream. |
| LLVM_ABI void |
printAsOperand (raw_ostream &O, bool PrintType, ModuleSlotTracker &MST) const |
| Public Member Functions inherited from llvm::ilist_node_with_parent< Instruction, BasicBlock, ilist_iterator_bits< true >, ilist_parent< BasicBlock > > |
|
| Instruction * |
getPrevNode () |
| Instruction * |
getNextNode () |
|
Get the next node, or nullptr for the list tail. |
| Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< Instruction, Options... >::type > |
|
| self_iterator |
getIterator () |
| reverse_self_iterator |
getReverseIterator () |
| std::enable_if_t< T::is_sentinel_tracking_explicit, bool > |
isSentinel () const |
|
Check whether this is the sentinel node. |
| Public Member Functions inherited from llvm::ilist_detail::node_parent_access< ilist_node_impl< ilist_detail::compute_node_options< Instruction, Options... >::type >, ilist_detail::compute_node_options< Instruction, Options... >::type::parent_ty > |
|
| const ilist_detail::compute_node_options< Instruction, Options... >::type::parent_ty * |
getParent () const |
| void |
setParent (ilist_detail::compute_node_options< Instruction, Options... >::type::parent_ty *Parent) |