|
| DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Value) |
| Provide fast operand accessors.
|
|
Value * | getValue () const |
| Convenience accessor.
|
|
unsigned | getNumSuccessors () const |
|
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.
|
|
std::optional< simple_ilist< DbgRecord >::iterator > | getDbgReinsertionPosition () |
| Return an iterator to the position of the "Next" DbgRecord after this instruction, or std::nullopt.
|
|
bool | hasDbgRecords () const |
| Returns true if any DbgRecords are attached to this instruction.
|
|
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.
|
|
void | dropDbgRecords () |
| Erase any DbgRecords attached to this instruction.
|
|
void | dropOneDbgRecord (DbgRecord *I) |
| Erase a single DbgRecord I that is attached to this instruction.
|
|
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 |
|
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 () |
|
const Function * | getFunction () const |
| Return the function this instruction belongs to.
|
|
Function * | getFunction () |
|
const DataLayout & | getDataLayout () const |
| Get the data layout of the module this instruction belongs to.
|
|
void | removeFromParent () |
| This method unlinks 'this' from the containing basic block, but does not delete it.
|
|
InstListType::iterator | eraseFromParent () |
| This method unlinks 'this' from the containing basic block and deletes it.
|
|
void | insertBefore (Instruction *InsertPos) |
| Insert an unlinked instruction into a basic block immediately before the specified instruction.
|
|
void | insertBefore (InstListType::iterator InsertPos) |
| Insert an unlinked instruction into a basic block immediately before the specified instruction.
|
|
void | insertAfter (Instruction *InsertPos) |
| Insert an unlinked instruction into a basic block immediately after the specified instruction.
|
|
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.
|
|
void | insertBefore (BasicBlock &BB, InstListType::iterator InsertPos) |
|
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.
|
|
void | moveBeforePreserving (Instruction *MovePos) |
| Perform a moveBefore operation, while signalling that the caller intends to preserve the original ordering of instructions.
|
|
void | moveBefore (BasicBlock &BB, InstListType::iterator I) |
| Unlink this instruction and insert into BB before I.
|
|
void | moveBeforePreserving (BasicBlock &BB, InstListType::iterator I) |
| (See other overload for moveBeforePreserving).
|
|
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.
|
|
void | moveAfterPreserving (Instruction *MovePos) |
| See moveBeforePreserving .
|
|
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.
|
|
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 | isShift () const |
|
bool | isCast () const |
|
bool | isFuncletPad () const |
|
bool | isSpecialTerminator () const |
|
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.
|
|
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.
|
|
void | setMetadata (unsigned KindID, MDNode *Node) |
| Set the metadata of the specified kind to the specified node.
|
|
void | setMetadata (StringRef Kind, MDNode *Node) |
|
void | copyMetadata (const Instruction &SrcInst, ArrayRef< unsigned > WL=ArrayRef< unsigned >()) |
| Copy metadata from SrcInst to this instruction.
|
|
void | eraseMetadataIf (function_ref< bool(unsigned, MDNode *)> Pred) |
| Erase all metadata that matches the predicate.
|
|
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.
|
|
void | addAnnotationMetadata (StringRef Annotation) |
| Adds an !annotation metadata node with Annotation to this instruction.
|
|
void | addAnnotationMetadata (SmallVector< StringRef > Annotations) |
| Adds an !annotation metadata node with an array of Annotations as a tuple to this instruction.
|
|
AAMDNodes | getAAMetadata () const |
| Returns the AA metadata for this instruction.
|
|
void | setAAMetadata (const AAMDNodes &N) |
| Sets the AA metadata on this instruction from the AAMDNodes structure.
|
|
void | setNoSanitizeMetadata () |
| Sets the nosanitize metadata on this instruction.
|
|
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.
|
|
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.
|
|
void | setHasNoUnsignedWrap (bool b=true) |
| Set or clear the nuw flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasNoSignedWrap (bool b=true) |
| Set or clear the nsw flag on this instruction, which must be an operator which supports this flag.
|
|
void | setIsExact (bool b=true) |
| Set or clear the exact flag on this instruction, which must be an operator which supports this flag.
|
|
void | setNonNeg (bool b=true) |
| Set or clear the nneg flag on this instruction, which must be a zext instruction.
|
|
bool | hasNoUnsignedWrap () const LLVM_READONLY |
| Determine whether the no unsigned wrap flag is set.
|
|
bool | hasNoSignedWrap () const LLVM_READONLY |
| Determine whether the no signed wrap flag is set.
|
|
bool | hasNonNeg () const LLVM_READONLY |
| Determine whether the the nneg flag is set.
|
|
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.
|
|
void | dropPoisonGeneratingFlags () |
| Drops flags that may cause this instruction to evaluate to poison despite having non-poison inputs.
|
|
bool | hasPoisonGeneratingMetadata () const LLVM_READONLY |
| Return true if this instruction has poison-generating metadata.
|
|
void | dropPoisonGeneratingMetadata () |
| Drops metadata that may generate poison.
|
|
bool | hasPoisonGeneratingReturnAttributes () const LLVM_READONLY |
| Return true if this instruction has poison-generating attribute.
|
|
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.
|
|
void | dropUBImplyingAttrsAndUnknownMetadata (ArrayRef< unsigned > KnownIDs={}) |
| This function drops non-debug unknown metadata (through dropUnknownNonDebugMetadata).
|
|
void | dropUBImplyingAttrsAndMetadata () |
| Drop any attributes or metadata that can cause immediate undefined behavior.
|
|
bool | isExact () const LLVM_READONLY |
| Determine whether the exact flag is set.
|
|
void | setFast (bool B) |
| Set or clear all fast-math-flags on this instruction, which must be an operator which supports this flag.
|
|
void | setHasAllowReassoc (bool B) |
| Set or clear the reassociation flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasNoNaNs (bool B) |
| Set or clear the no-nans flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasNoInfs (bool B) |
| Set or clear the no-infs flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasNoSignedZeros (bool B) |
| Set or clear the no-signed-zeros flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasAllowReciprocal (bool B) |
| Set or clear the allow-reciprocal flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasAllowContract (bool B) |
| Set or clear the allow-contract flag on this instruction, which must be an operator which supports this flag.
|
|
void | setHasApproxFunc (bool B) |
| Set or clear the approximate-math-functions flag on this instruction, which must be an operator which supports this flag.
|
|
void | setFastMathFlags (FastMathFlags FMF) |
| Convenience function for setting multiple fast-math flags on this instruction, which must be an operator which supports these flags.
|
|
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.
|
|
bool | isFast () const LLVM_READONLY |
| Determine whether all fast-math-flags are set.
|
|
bool | hasAllowReassoc () const LLVM_READONLY |
| Determine whether the allow-reassociation flag is set.
|
|
bool | hasNoNaNs () const LLVM_READONLY |
| Determine whether the no-NaNs flag is set.
|
|
bool | hasNoInfs () const LLVM_READONLY |
| Determine whether the no-infs flag is set.
|
|
bool | hasNoSignedZeros () const LLVM_READONLY |
| Determine whether the no-signed-zeros flag is set.
|
|
bool | hasAllowReciprocal () const LLVM_READONLY |
| Determine whether the allow-reciprocal flag is set.
|
|
bool | hasAllowContract () const LLVM_READONLY |
| Determine whether the allow-contract flag is set.
|
|
bool | hasApproxFunc () const LLVM_READONLY |
| Determine whether the approximate-math-functions flag is set.
|
|
FastMathFlags | getFastMathFlags () const LLVM_READONLY |
| Convenience function for getting all the fast-math flags, which must be an operator which supports these flags.
|
|
void | copyFastMathFlags (const Instruction *I) |
| Copy I's fast-math flags.
|
|
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.
|
|
void | andIRFlags (const Value *V) |
| Logical 'and' of any supported wrapping, exact, and fast-math flags of V and this instruction.
|
|
void | applyMergedLocation (DILocation *LocA, DILocation *LocB) |
| Merge 2 debug locations and apply it to the Instruction.
|
|
void | updateLocationAfterHoist () |
| Updates the debug location given that the instruction has been hoisted from a block to a predecessor of that block.
|
|
void | dropLocation () |
| Drop the instruction's debug location.
|
|
void | mergeDIAssignID (ArrayRef< const Instruction * > SourceInstructions) |
| Merge the DIAssignID metadata from this instruction and those attached to instructions in SourceInstructions .
|
|
bool | isAssociative () const LLVM_READONLY |
| Return true if the instruction is associative:
|
|
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:
|
|
bool | mayWriteToMemory () const LLVM_READONLY |
| Return true if this instruction may modify memory.
|
|
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.
|
|
bool | isAtomic () const LLVM_READONLY |
| Return true if this instruction has an AtomicOrdering of unordered or higher.
|
|
bool | hasAtomicLoad () const LLVM_READONLY |
| Return true if this atomic instruction loads from memory.
|
|
bool | hasAtomicStore () const LLVM_READONLY |
| Return true if this atomic instruction stores to memory.
|
|
bool | isVolatile () const LLVM_READONLY |
| Return true if this instruction has a volatile memory access.
|
|
Type * | getAccessType () const LLVM_READONLY |
| Return the type this instruction accesses in memory, if any.
|
|
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.
|
|
bool | mayHaveSideEffects () const LLVM_READONLY |
| Return true if the instruction may have side effects.
|
|
bool | isSafeToRemove () const LLVM_READONLY |
| Return true if the instruction can be removed if the result is unused.
|
|
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.
|
|
bool | isLifetimeStartOrEnd () const LLVM_READONLY |
| Return true if the instruction is a llvm.lifetime.start or llvm.lifetime.end marker.
|
|
bool | isLaunderOrStripInvariantGroup () const LLVM_READONLY |
| Return true if the instruction is a llvm.launder.invariant.group or llvm.strip.invariant.group.
|
|
bool | isDebugOrPseudoInst () const LLVM_READONLY |
| Return true if the instruction is a DbgInfoIntrinsic or PseudoProbeInst.
|
|
const Instruction * | getNextNonDebugInstruction (bool SkipPseudoOp=false) const |
| Return a pointer to the next non-debug instruction in the same basic block as 'this', or nullptr if no such instruction exists.
|
|
Instruction * | getNextNonDebugInstruction (bool SkipPseudoOp=false) |
|
const Instruction * | getPrevNonDebugInstruction (bool SkipPseudoOp=false) const |
| Return a pointer to the previous non-debug instruction in the same basic block as 'this', or nullptr if no such instruction exists.
|
|
Instruction * | getPrevNonDebugInstruction (bool SkipPseudoOp=false) |
|
Instruction * | clone () const |
| Create a copy of 'this' instruction that is identical in all ways except the following:
|
|
bool | isIdenticalTo (const Instruction *I) const LLVM_READONLY |
| Return true if the specified instruction is exactly identical to the current one.
|
|
bool | isIdenticalToWhenDefined (const Instruction *I) 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.
|
|
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.
|
|
bool | hasSameSpecialState (const Instruction *I2, bool IgnoreAlignment=false) const LLVM_READONLY |
| This function determines if the speficied instruction has the same "special" characteristics as the current one.
|
|
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.
|
|
unsigned | getNumSuccessors () const LLVM_READONLY |
| Return the number of successors that this instruction has.
|
|
BasicBlock * | getSuccessor (unsigned Idx) const LLVM_READONLY |
| Return the specified successor. This instruction must be a terminator.
|
|
void | setSuccessor (unsigned Idx, BasicBlock *BB) |
| Update the specified successor to point at the provided block.
|
|
void | replaceSuccessorWith (BasicBlock *OldBB, BasicBlock *NewBB) |
| Replace specified successor OldBB to point at the provided block.
|
|
void | dropUnknownNonDebugMetadata (ArrayRef< unsigned > KnownIDs=std::nullopt) |
| Drop all unknown metadata except for debug locations.
|
|
| User (const User &)=delete |
|
void | operator delete (void *Usr) |
| Free memory allocated for User and Use objects.
|
|
void | operator delete (void *Usr, unsigned) |
| Placement delete - required by std, called if the ctor throws.
|
|
void | operator delete (void *Usr, unsigned, unsigned) |
| 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 |
|
ArrayRef< const uint8_t > | getDescriptor () const |
| Returns the descriptor co-allocated with this User instance.
|
|
MutableArrayRef< uint8_t > | getDescriptor () |
| Returns the descriptor co-allocated with this User instance.
|
|
void | setGlobalVariableNumOperands (unsigned NumOps) |
| Set the number of operands on a GlobalVariable.
|
|
void | setNumHungOffUseOperands (unsigned NumOps) |
| Subclasses with hung off uses need to manage the operand count themselves.
|
|
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.
|
|
bool | replaceUsesOfWith (Value *From, Value *To) |
| Replace uses of one Value with another.
|
|
| Value (const Value &)=delete |
|
Value & | operator= (const Value &)=delete |
|
void | deleteValue () |
| Delete a pointer to a generic Value.
|
|
void | dump () const |
| Support for debugging, callable in GDB: V->dump()
|
|
Type * | getType () const |
| All values are typed, get the type of this value.
|
|
LLVMContext & | getContext () const |
| All values hold a context through their type.
|
|
bool | hasName () const |
|
ValueName * | getValueName () const |
|
void | setValueName (ValueName *VN) |
|
StringRef | getName () const |
| Return a constant reference to the value's name.
|
|
void | setName (const Twine &Name) |
| Change the name of the value.
|
|
void | takeName (Value *V) |
| Transfer the name from V to this value.
|
|
std::string | getNameOrAsOperand () const |
|
void | replaceAllUsesWith (Value *V) |
| Change all uses of this to point to a new Value.
|
|
void | replaceNonMetadataUsesWith (Value *V) |
| Change non-metadata uses of this to point to a new Value.
|
|
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.
|
|
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.
|
|
void | assertModuleIsMaterializedImpl () const |
|
void | assertModuleIsMaterialized () const |
|
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.
|
|
bool | hasNUses (unsigned N) const |
| Return true if this Value has exactly N uses.
|
|
bool | hasNUsesOrMore (unsigned N) const |
| Return true if this value has N uses or more.
|
|
bool | hasOneUser () const |
| Return true if there is exactly one user of this value.
|
|
Use * | getSingleUndroppableUse () |
| Return true if there is exactly one use of this value that cannot be dropped.
|
|
const Use * | getSingleUndroppableUse () const |
|
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 |
|
bool | hasNUndroppableUses (unsigned N) const |
| Return true if there this value.
|
|
bool | hasNUndroppableUsesOrMore (unsigned N) const |
| Return true if this value has N uses or more.
|
|
void | dropDroppableUses (llvm::function_ref< bool(const Use *)> ShouldDrop=[](const Use *) { return true;}) |
| Remove every uses that can safely be removed.
|
|
void | dropDroppableUsesIn (User &Usr) |
| Remove every use of this value in User that can safely be removed.
|
|
bool | isUsedInBasicBlock (const BasicBlock *BB) const |
| Check if this value is used in the specified basic block.
|
|
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.
|
|
bool | isSwiftError () const |
| Return true if this value is a swifterror value.
|
|
const Value * | stripPointerCasts () const |
| Strip off pointer casts, all-zero GEPs and address space casts.
|
|
Value * | stripPointerCasts () |
|
const Value * | stripPointerCastsAndAliases () const |
| Strip off pointer casts, all-zero GEPs, address space casts, and aliases.
|
|
Value * | stripPointerCastsAndAliases () |
|
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 () |
|
const Value * | stripPointerCastsForAliasAnalysis () const |
| Strip off pointer casts, all-zero GEPs, single-argument phi nodes and invariant group info.
|
|
Value * | stripPointerCastsForAliasAnalysis () |
|
const Value * | stripInBoundsConstantOffsets () const |
| Strip off pointer casts and all-constant inbounds GEPs.
|
|
Value * | stripInBoundsConstantOffsets () |
|
const Value * | stripAndAccumulateConstantOffsets (const DataLayout &DL, APInt &Offset, bool AllowNonInbounds, bool AllowInvariantGroup=false, function_ref< bool(Value &Value, APInt &Offset)> ExternalAnalysis=nullptr) 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) |
|
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) |
|
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 *) {}) |
|
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.
|
|
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.
|
|
uint64_t | getPointerDereferenceableBytes (const DataLayout &DL, bool &CanBeNull, bool &CanBeFreed) const |
| Returns the number of bytes known to be dereferenceable for the pointer value.
|
|
Align | getPointerAlignment (const DataLayout &DL) const |
| Returns an alignment of the pointer value.
|
|
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<class Compare > |
void | sortUseList (Compare Cmp) |
| Sort the use-list.
|
|
void | reverseUseList () |
| Reverse the use-list.
|
|
void | print (raw_ostream &O, bool IsForDebug=false) const |
| Implement operator<< on Value.
|
|
void | print (raw_ostream &O, ModuleSlotTracker &MST, bool IsForDebug=false) const |
|
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.
|
|
void | printAsOperand (raw_ostream &O, bool PrintType, ModuleSlotTracker &MST) const |
|
Instruction * | getPrevNode () |
|
const Instruction * | getPrevNode () const |
| Get the previous node, or nullptr for the list head.
|
|
Instruction * | getNextNode () |
| Get the next node, or nullptr for the list tail.
|
|
const Instruction * | getNextNode () const |
| Get the next node, or nullptr for the list tail.
|
|
self_iterator | getIterator () |
|
const_self_iterator | getIterator () const |
|
reverse_self_iterator | getReverseIterator () |
|
const_reverse_self_iterator | getReverseIterator () const |
|
bool | isSentinel () const |
| Check whether this is the sentinel node.
|
|
const ParentTy * | getParent () const |
|
ParentTy * | getParent () |
|
void | setParent (ParentTy *Parent) |
|