|
ExtractElementConstantExpr (Constant *C1, Constant *C2) |
| void * |
operator new (size_t S) |
| void |
operator delete (void *Ptr) |
|
DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Value) |
|
Transparently provide more efficient getOperand methods. |
| Public Member Functions inherited from llvm::ConstantExpr |
|
|
DECLARE_TRANSPARENT_OPERAND_ACCESSORS (Constant) |
|
Transparently provide more efficient getOperand methods. |
| LLVM_ABI bool |
isCast () const |
|
Return true if this is a convert constant expression. |
| unsigned |
getOpcode () const |
|
Return the opcode at the root of this constant expression. |
| LLVM_ABI ArrayRef< int > |
getShuffleMask () const |
|
Assert that this is a shufflevector and return the mask. |
| LLVM_ABI Constant * |
getShuffleMaskForBitcode () const |
|
Assert that this is a shufflevector and return the mask. |
| LLVM_ABI 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. |
| LLVM_ABI Constant * |
getWithOperands (ArrayRef< Constant * > Ops, Type *Ty, bool OnlyIfReduced=false, Type *SrcTy=nullptr) const |
|
Get the current expression with the operands replaced. |
| LLVM_ABI Instruction * |
getAsInstruction () const |
|
Returns an Instruction which implements the same operation as this ConstantExpr. |
| Public Member Functions inherited from llvm::Constant |
|
| void |
operator= (const Constant &)=delete |
|
Constant (const Constant &)=delete |
| LLVM_ABI bool |
isNullValue () const |
|
Return true if this is the value that would be returned by getNullValue. |
| LLVM_ABI bool |
isOneValue () const |
|
Returns true if the value is one. |
| LLVM_ABI bool |
isNotOneValue () const |
|
Return true if the value is not the one value, or, for vectors, does not contain one value elements. |
| LLVM_ABI bool |
isAllOnesValue () const |
|
Return true if this is the value that would be returned by getAllOnesValue. |
| LLVM_ABI bool |
isNegativeZeroValue () const |
|
Return true if the value is what would be returned by getZeroValueForNegation. |
| LLVM_ABI bool |
isZeroValue () const |
|
Return true if the value is negative zero or null value. |
| LLVM_ABI bool |
isNotMinSignedValue () const |
|
Return true if the value is not the smallest signed value, or, for vectors, does not contain smallest signed value elements. |
| LLVM_ABI bool |
isMinSignedValue () const |
|
Return true if the value is the smallest signed value. |
| LLVM_ABI bool |
isMaxSignedValue () const |
|
Return true if the value is the largest signed value. |
| LLVM_ABI 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. |
| LLVM_ABI 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. |
| LLVM_ABI 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. |
| LLVM_ABI bool |
isNaN () const |
|
Return true if this is a floating-point NaN constant or a vector floating-point constant with all NaN elements. |
| LLVM_ABI bool |
isElementWiseEqual (Value *Y) const |
|
Return true if this constant and a constant 'Y' are element-wise equal. |
| LLVM_ABI bool |
containsUndefOrPoisonElement () const |
|
Return true if this is a vector constant that includes any undef or poison elements. |
| LLVM_ABI bool |
containsPoisonElement () const |
|
Return true if this is a vector constant that includes any poison elements. |
| LLVM_ABI bool |
containsUndefElement () const |
|
Return true if this is a vector constant that includes any strictly undef (not poison) elements. |
| LLVM_ABI bool |
containsConstantExpression () const |
|
Return true if this is a fixed width vector constant that includes any constant expressions. |
| LLVM_ABI bool |
isThreadDependent () const |
|
Return true if the value can vary between threads. |
| LLVM_ABI bool |
isDLLImportDependent () const |
|
Return true if the value is dependent on a dllimport variable. |
| LLVM_ABI bool |
isConstantUsed () const |
|
Return true if the constant has users other than constant expressions and other dangling things. |
| LLVM_ABI bool |
needsRelocation () const |
|
This method classifies the entry according to whether or not it may generate a relocation entry (either static or dynamic). |
| LLVM_ABI bool |
needsDynamicRelocation () const |
| LLVM_ABI 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. |
| LLVM_ABI Constant * |
getAggregateElement (Constant *Elt) const |
| LLVM_ABI Constant * |
getSplatValue (bool AllowPoison=false) const |
|
If all elements of the vector constant have the same value, return that value. |
| LLVM_ABI 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. |
| LLVM_ABI ConstantRange |
toConstantRange () const |
|
Convert constant to an approximate constant range. |
| LLVM_ABI void |
destroyConstant () |
|
Called if some element of this constant is no longer valid. |
| LLVM_ABI void |
handleOperandChange (Value *, Value *) |
|
This method is a special form of User::replaceUsesOfWith (which does not work on constants) that does work on constants. |
| LLVM_ABI void |
removeDeadConstantUsers () const |
|
If there are any dead constant users dangling off of this constant, remove them. |
| LLVM_ABI bool |
hasOneLiveUse () const |
|
Return true if the constant has exactly one live use. |
| LLVM_ABI bool |
hasZeroLiveUses () const |
|
Return true if the constant has no live uses. |
| const Constant * |
stripPointerCasts () const |
| Constant * |
stripPointerCasts () |
| LLVM_ABI bool |
isManifestConstant () const |
|
Return true if a constant is ConstantData or a ConstantAggregate or ConstantExpr that contain only ConstantData. |
| 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 |