40 template <
typename>
struct simplify_type;
47 return static_cast<Use **
>(
P);
49 enum { NumLowBitsAvailable = 2 };
80 Use(
const Use &U) =
delete;
88 enum PrevPtrTag { zeroDigitTag, oneDigitTag, stopTag, fullStopTag };
91 Use(PrevPtrTag tag) : Val(nullptr) { Prev.setInt(tag); }
94 operator Value *()
const {
return Val; }
95 Value *
get()
const {
return Val; }
130 static void zap(
Use *Start,
const Use *Stop,
bool del =
false);
133 const Use *getImpliedUser()
const;
139 void setPrev(
Use **NewPrev) { Prev.setPointer(NewPrev); }
140 void addToList(Use **
List) {
143 Next->setPrev(&Next);
147 void removeFromList() {
148 Use **StrippedPrev = Prev.getPointer();
149 *StrippedPrev = Next;
151 Next->setPrev(StrippedPrev);
const Value * operator->() const
PointerLikeTypeTraits - This is a traits object that is used to handle pointer types and things that ...
#define DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ty, ref)
A Use represents the edge between a Value definition and its users.
const Use & operator=(const Use &RHS)
unsigned getOperandNo() const
Return the operand # of this use in its User.
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...
User * getUser() const
Returns the User that contains this Use.
static void * getAsVoidPointer(Use **P)
static SimpleType getSimplifiedValue(const Use &Val)
PointerIntPair< User *, 1, unsigned > UserRef
Value * operator=(Value *RHS)
struct LLVMOpaqueUse * LLVMUseRef
Used to get the users and usees of a Value.
LLVM Value Representation.
static SimpleType getSimplifiedValue(Use &Val)
static Use ** getFromVoidPointer(void *P)
static void zap(Use *Start, const Use *Stop, bool del=false)
Destroys Use operands when the number of operands of a User changes.