|
| CompareConstantExpr (Type *ty, Instruction::OtherOps opc, unsigned short pred, Constant *LHS, Constant *RHS) |
|
void * | operator new (size_t S) |
|
void | operator delete (void *Ptr) |
|
| DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Value) |
| Transparently provide more efficient getOperand methods.
|
|
| DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Constant) |
| Transparently provide more efficient getOperand methods.
|
|
bool | isCast () const |
| Return true if this is a convert constant expression.
|
|
bool | isCompare () const |
| Return true if this is a compare constant expression.
|
|
unsigned | getOpcode () const |
| Return the opcode at the root of this constant expression.
|
|
unsigned | getPredicate () const |
| Return the ICMP or FCMP predicate value.
|
|
ArrayRef< int > | getShuffleMask () const |
| Assert that this is a shufflevector and return the mask.
|
|
Constant * | getShuffleMaskForBitcode () const |
| Assert that this is a shufflevector and return the mask.
|
|
const char * | getOpcodeName () const |
| Return a string representation for an opcode.
|
|
Constant * | getWithOperands (ArrayRef< Constant * > Ops) const |
| This returns the current constant expression with the operands replaced with the specified values.
|
|
Constant * | getWithOperands (ArrayRef< Constant * > Ops, Type *Ty, bool OnlyIfReduced=false, Type *SrcTy=nullptr) const |
| Get the current expression with the operands replaced.
|
|
Instruction * | getAsInstruction (Instruction *InsertBefore=nullptr) const |
| Returns an Instruction which implements the same operation as this ConstantExpr.
|
|
void | operator= (const Constant &)=delete |
|
| Constant (const Constant &)=delete |
|
bool | isNullValue () const |
| Return true if this is the value that would be returned by getNullValue.
|
|
bool | isOneValue () const |
| Returns true if the value is one.
|
|
bool | isNotOneValue () const |
| Return true if the value is not the one value, or, for vectors, does not contain one value elements.
|
|
bool | isAllOnesValue () const |
| Return true if this is the value that would be returned by getAllOnesValue.
|
|
bool | isNegativeZeroValue () const |
| Return true if the value is what would be returned by getZeroValueForNegation.
|
|
bool | isZeroValue () const |
| Return true if the value is negative zero or null value.
|
|
bool | isNotMinSignedValue () const |
| Return true if the value is not the smallest signed value, or, for vectors, does not contain smallest signed value elements.
|
|
bool | isMinSignedValue () const |
| Return true if the value is the smallest signed value.
|
|
bool | isFiniteNonZeroFP () const |
| Return true if this is a finite and non-zero floating-point scalar constant or a fixed width vector constant with all finite and non-zero elements.
|
|
bool | isNormalFP () const |
| Return true if this is a normal (as opposed to denormal, infinity, nan, or zero) floating-point scalar constant or a vector constant with all normal elements.
|
|
bool | hasExactInverseFP () const |
| Return true if this scalar has an exact multiplicative inverse or this vector has an exact multiplicative inverse for each element in the vector.
|
|
bool | isNaN () const |
| Return true if this is a floating-point NaN constant or a vector floating-point constant with all NaN elements.
|
|
bool | isElementWiseEqual (Value *Y) const |
| Return true if this constant and a constant 'Y' are element-wise equal.
|
|
bool | containsUndefOrPoisonElement () const |
| Return true if this is a vector constant that includes any undef or poison elements.
|
|
bool | containsPoisonElement () const |
| Return true if this is a vector constant that includes any poison elements.
|
|
bool | containsUndefElement () const |
| Return true if this is a vector constant that includes any strictly undef (not poison) elements.
|
|
bool | containsConstantExpression () const |
| Return true if this is a fixed width vector constant that includes any constant expressions.
|
|
bool | isThreadDependent () const |
| Return true if the value can vary between threads.
|
|
bool | isDLLImportDependent () const |
| Return true if the value is dependent on a dllimport variable.
|
|
bool | isConstantUsed () const |
| Return true if the constant has users other than constant expressions and other dangling things.
|
|
bool | needsRelocation () const |
| This method classifies the entry according to whether or not it may generate a relocation entry (either static or dynamic).
|
|
bool | needsDynamicRelocation () const |
|
Constant * | getAggregateElement (unsigned Elt) const |
| For aggregates (struct/array/vector) return the constant that corresponds to the specified element if possible, or null if not.
|
|
Constant * | getAggregateElement (Constant *Elt) const |
|
Constant * | getSplatValue (bool AllowUndefs=false) const |
| If all elements of the vector constant have the same value, return that value.
|
|
const APInt & | getUniqueInteger () const |
| If C is a constant integer then return its value, otherwise C must be a vector of constant integers, all equal, and the common value is returned.
|
|
void | destroyConstant () |
| Called if some element of this constant is no longer valid.
|
|
void | handleOperandChange (Value *, Value *) |
| This method is a special form of User::replaceUsesOfWith (which does not work on constants) that does work on constants.
|
|
void | removeDeadConstantUsers () const |
| If there are any dead constant users dangling off of this constant, remove them.
|
|
bool | hasOneLiveUse () const |
| Return true if the constant has exactly one live use.
|
|
bool | hasZeroLiveUses () const |
| Return true if the constant has no live uses.
|
|
const Constant * | stripPointerCasts () const |
|
Constant * | stripPointerCasts () |
|
bool | isManifestConstant () const |
| Return true if a constant is ConstantData or a ConstantAggregate or ConstantExpr that contain only ConstantData.
|
|
| 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 |
|
|
static bool | classof (const ConstantExpr *CE) |
|
static bool | classof (const Value *V) |
|
static Constant * | getAlignOf (Type *Ty) |
| getAlignOf constant expr - computes the alignment of a type in a target independent way (Note: the return type is an i64).
|
|
static Constant * | getSizeOf (Type *Ty) |
| getSizeOf constant expr - computes the (alloc) size of a type (in address-units, not bits) in a target independent way (Note: the return type is an i64).
|
|
static Constant * | getNeg (Constant *C, bool HasNUW=false, bool HasNSW=false) |
|
static Constant * | getNot (Constant *C) |
|
static Constant * | getAdd (Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false) |
|
static Constant * | getSub (Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false) |
|
static Constant * | getMul (Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false) |
|
static Constant * | getXor (Constant *C1, Constant *C2) |
|
static Constant * | getShl (Constant *C1, Constant *C2, bool HasNUW=false, bool HasNSW=false) |
|
static Constant * | getTrunc (Constant *C, Type *Ty, bool OnlyIfReduced=false) |
|
static Constant * | getPtrToInt (Constant *C, Type *Ty, bool OnlyIfReduced=false) |
|
static Constant * | getIntToPtr (Constant *C, Type *Ty, bool OnlyIfReduced=false) |
|
static Constant * | getBitCast (Constant *C, Type *Ty, bool OnlyIfReduced=false) |
|
static Constant * | getAddrSpaceCast (Constant *C, Type *Ty, bool OnlyIfReduced=false) |
|
static Constant * | getNSWNeg (Constant *C) |
|
static Constant * | getNUWNeg (Constant *C) |
|
static Constant * | getNSWAdd (Constant *C1, Constant *C2) |
|
static Constant * | getNUWAdd (Constant *C1, Constant *C2) |
|
static Constant * | getNSWSub (Constant *C1, Constant *C2) |
|
static Constant * | getNUWSub (Constant *C1, Constant *C2) |
|
static Constant * | getNSWMul (Constant *C1, Constant *C2) |
|
static Constant * | getNUWMul (Constant *C1, Constant *C2) |
|
static Constant * | getNSWShl (Constant *C1, Constant *C2) |
|
static Constant * | getNUWShl (Constant *C1, Constant *C2) |
|
static Constant * | getExactLogBase2 (Constant *C) |
| If C is a scalar/fixed width vector of known powers of 2, then this function returns a new scalar/fixed width vector obtained from logBase2 of C.
|
|
static Constant * | getBinOpIdentity (unsigned Opcode, Type *Ty, bool AllowRHSConstant=false, bool NSZ=false) |
| Return the identity constant for a binary opcode.
|
|
static Constant * | getBinOpAbsorber (unsigned Opcode, Type *Ty) |
| Return the absorbing element for the given binary operation, i.e.
|
|
static Constant * | getCast (unsigned ops, Constant *C, Type *Ty, bool OnlyIfReduced=false) |
| Convenience function for getting a Cast operation.
|
|
static Constant * | getTruncOrBitCast (Constant *C, Type *Ty) |
|
static Constant * | getPointerCast (Constant *C, Type *Ty) |
| Create a BitCast, AddrSpaceCast, or a PtrToInt cast constant expression.
|
|
static Constant * | getPointerBitCastOrAddrSpaceCast (Constant *C, Type *Ty) |
| Create a BitCast or AddrSpaceCast for a pointer type depending on the address space.
|
|
static Constant * | get (unsigned Opcode, Constant *C1, Constant *C2, unsigned Flags=0, Type *OnlyIfReducedTy=nullptr) |
| get - Return a binary or shift operator constant expression, folding if possible.
|
|
static Constant * | getCompare (unsigned short pred, Constant *C1, Constant *C2, bool OnlyIfReduced=false) |
| Return an ICmp or FCmp comparison operator constant expression.
|
|
static Constant * | getICmp (unsigned short pred, Constant *LHS, Constant *RHS, bool OnlyIfReduced=false) |
| get* - Return some common constants without having to specify the full Instruction::OPCODE identifier.
|
|
static Constant * | getFCmp (unsigned short pred, Constant *LHS, Constant *RHS, bool OnlyIfReduced=false) |
|
static Constant * | getGetElementPtr (Type *Ty, Constant *C, ArrayRef< Constant * > IdxList, bool InBounds=false, std::optional< unsigned > InRangeIndex=std::nullopt, Type *OnlyIfReducedTy=nullptr) |
| Getelementptr form.
|
|
static Constant * | getGetElementPtr (Type *Ty, Constant *C, Constant *Idx, bool InBounds=false, std::optional< unsigned > InRangeIndex=std::nullopt, Type *OnlyIfReducedTy=nullptr) |
|
static Constant * | getGetElementPtr (Type *Ty, Constant *C, ArrayRef< Value * > IdxList, bool InBounds=false, std::optional< unsigned > InRangeIndex=std::nullopt, Type *OnlyIfReducedTy=nullptr) |
|
static Constant * | getInBoundsGetElementPtr (Type *Ty, Constant *C, ArrayRef< Constant * > IdxList) |
| Create an "inbounds" getelementptr.
|
|
static Constant * | getInBoundsGetElementPtr (Type *Ty, Constant *C, Constant *Idx) |
|
static Constant * | getInBoundsGetElementPtr (Type *Ty, Constant *C, ArrayRef< Value * > IdxList) |
|
static Constant * | getExtractElement (Constant *Vec, Constant *Idx, Type *OnlyIfReducedTy=nullptr) |
|
static Constant * | getInsertElement (Constant *Vec, Constant *Elt, Constant *Idx, Type *OnlyIfReducedTy=nullptr) |
|
static Constant * | getShuffleVector (Constant *V1, Constant *V2, ArrayRef< int > Mask, Type *OnlyIfReducedTy=nullptr) |
|
static bool | isDesirableBinOp (unsigned Opcode) |
| Whether creating a constant expression for this binary operator is desirable.
|
|
static bool | isSupportedBinOp (unsigned Opcode) |
| Whether creating a constant expression for this binary operator is supported.
|
|
static bool | isDesirableCastOp (unsigned Opcode) |
| Whether creating a constant expression for this cast is desirable.
|
|
static bool | isSupportedCastOp (unsigned Opcode) |
| Whether creating a constant expression for this cast is supported.
|
|
static bool | isSupportedGetElementPtr (const Type *SrcElemTy) |
| Whether creating a constant expression for this getelementptr type is supported.
|
|
static bool | classof (const Value *V) |
| Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
static bool | classof (const Value *V) |
|
static Constant * | getNullValue (Type *Ty) |
| Constructor to create a '0' constant of arbitrary type.
|
|
static Constant * | getAllOnesValue (Type *Ty) |
|
static Constant * | getIntegerValue (Type *Ty, const APInt &V) |
| Return the value for an integer or pointer constant, or a vector thereof, with the given scalar value.
|
|
static Constant * | replaceUndefsWith (Constant *C, Constant *Replacement) |
| Try to replace undefined constant C or undefined elements in C with Replacement.
|
|
static Constant * | mergeUndefsWith (Constant *C, Constant *Other) |
| Merges undefs of a Constant with another Constant, along with the undefs already present.
|
|
static bool | classof (const Value *V) |
|
static void | dropDroppableUse (Use &U) |
| Remove the droppable use U .
|
|
|
using | op_iterator = Use * |
|
using | const_op_iterator = const Use * |
|
using | op_range = iterator_range< op_iterator > |
|
using | const_op_range = iterator_range< const_op_iterator > |
|
enum | ValueTy |
| Concrete subclass of this. More...
|
|
using | use_iterator = use_iterator_impl< Use > |
|
using | const_use_iterator = use_iterator_impl< const Use > |
|
using | user_iterator = user_iterator_impl< User > |
|
using | const_user_iterator = user_iterator_impl< const User > |
|
static constexpr unsigned | MaxAlignmentExponent = 32 |
| The maximum alignment for instructions.
|
|
static constexpr uint64_t | MaximumAlignment = 1ULL << MaxAlignmentExponent |
|
enum | : unsigned { NumUserOperandsBits = 27
} |
| The number of operands in the subclass. More...
|
|
| ConstantExpr (Type *ty, unsigned Opcode, Use *Ops, unsigned NumOps) |
|
| ~ConstantExpr ()=default |
|
| Constant (Type *ty, ValueTy vty, Use *Ops, unsigned NumOps) |
|
| ~Constant ()=default |
|
void * | operator new (size_t Size) |
| Allocate a User with an operand pointer co-allocated.
|
|
void * | operator new (size_t Size, unsigned Us) |
| Allocate a User with the operands co-allocated.
|
|
void * | operator new (size_t Size, unsigned Us, unsigned DescBytes) |
| Allocate a User with the operands co-allocated.
|
|
| User (Type *ty, unsigned vty, Use *, unsigned NumOps) |
|
void | allocHungoffUses (unsigned N, bool IsPhi=false) |
| Allocate the array of Uses, followed by a pointer (with bottom bit set) to the User.
|
|
void | growHungoffUses (unsigned N, bool IsPhi=false) |
| Grow the number of hung off uses.
|
|
| ~User ()=default |
|
template<int Idx> |
Use & | Op () |
|
template<int Idx> |
const Use & | Op () const |
|
| Value (Type *Ty, unsigned scid) |
|
| ~Value () |
| Value's destructor should be virtual by design, but that would require that Value and all of its subclasses have a vtable that effectively duplicates the information in the value ID.
|
|
void | getAllMetadata (SmallVectorImpl< std::pair< unsigned, MDNode * > > &MDs) const |
| Appends all metadata attached to this value to MDs , sorting by KindID.
|
|
bool | hasMetadata () const |
| Return true if this value has any metadata attached to it.
|
|
bool | eraseMetadata (unsigned KindID) |
| Erase all metadata attachments with the given kind.
|
|
void | clearMetadata () |
| Erase all metadata attached to this Value.
|
|
MDNode * | getMetadataImpl (unsigned KindID) const |
| Get metadata for the given kind, if any.
|
|
unsigned short | getSubclassDataFromValue () const |
|
void | setValueSubclassData (unsigned short D) |
|
MDNode * | getMetadata (unsigned KindID) const |
| Get the current metadata attachments for the given kind, if any.
|
|
MDNode * | getMetadata (StringRef Kind) const |
|
void | getMetadata (unsigned KindID, SmallVectorImpl< MDNode * > &MDs) const |
| Appends all attachments with the given ID to MDs in insertion order.
|
|
void | getMetadata (StringRef Kind, SmallVectorImpl< MDNode * > &MDs) const |
|
bool | hasMetadata (unsigned KindID) const |
| Return true if this value has the given type of metadata attached.
|
|
bool | hasMetadata (StringRef Kind) const |
|
void | setMetadata (unsigned KindID, MDNode *Node) |
| Set a particular kind of metadata attachment.
|
|
void | setMetadata (StringRef Kind, MDNode *Node) |
|
void | addMetadata (unsigned KindID, MDNode &MD) |
| Add a metadata attachment.
|
|
void | addMetadata (StringRef Kind, MDNode &MD) |
|
template<int Idx, typename U > |
static Use & | OpFrom (const U *that) |
|
unsigned char | SubclassOptionalData: 7 |
| Hold subclass data that can be dropped.
|
|
unsigned | NumUserOperands: NumUserOperandsBits |
|
unsigned | IsUsedByMD: 1 |
|
unsigned | HasName: 1 |
|
unsigned | HasMetadata: 1 |
|
unsigned | HasHungOffUses: 1 |
|
unsigned | HasDescriptor: 1 |
|