35 template <
typename>
struct simplify_type;
58 Use(
const Use &U) =
delete;
99 enum PrevPtrTag { zeroDigitTag, oneDigitTag, stopTag, fullStopTag };
102 Use(PrevPtrTag tag) { Prev.setInt(tag); }
107 operator Value *()
const {
return Val; }
116 inline void set(
Value *Val);
137 static void zap(
Use *Start,
const Use *Stop,
bool del =
false);
142 Value *Val =
nullptr;
151 Next->setPrev(&Next);
156 void removeFromList() {
158 *StrippedPrev = Next;
160 Next->setPrev(StrippedPrev);
182 #endif // LLVM_IR_USE_H
This class represents lattice values for constants.
PointerTy getPointer() const
static void * getAsVoidPointer(User *P)
static void * getAsVoidPointer(Use **P)
void setPointer(PointerTy PtrVal)
#define DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ty, ref)
A Use represents the edge between a Value definition and its users.
User * getUser() const LLVM_READONLY
Returns the User that contains this Use.
static Use ** getFromVoidPointer(void *P)
struct LLVMOpaqueUse * LLVMUseRef
Used to get the users and usees of a Value.
unsigned getOperandNo() const
Return the operand # of this use in its User.
const Value * operator->() const
Pointer traits for the Prev PointerIntPair.
static User * getFromVoidPointer(void *P)
PointerIntPair - This class implements a pair of a pointer and small integer.
static Use * initTags(Use *Start, Use *Stop)
Initializes the waymarking tags on an array of Uses.
void swap(Use &RHS)
Provide a fast substitute to std::swap<Use> that also works with less standard-compliant compilers...
static SimpleType getSimplifiedValue(const Use &Val)
LLVM Value Representation.
static SimpleType getSimplifiedValue(Use &Val)
Pointer traits for the UserRef PointerIntPair.
Value * operator=(Value *RHS)
static void zap(Use *Start, const Use *Stop, bool del=false)
Destroys Use operands when the number of operands of a User changes.