37 template <
typename>
struct simplify_type;
58 Use(
const Use &U) =
delete;
75 enum PrevPtrTag { zeroDigitTag, oneDigitTag, stopTag, fullStopTag };
78 Use(PrevPtrTag tag) : Val(nullptr) { Prev.setInt(tag); }
81 operator Value *()
const {
return Val; }
82 Value *
get()
const {
return Val; }
111 static void zap(
Use *Start,
const Use *Stop,
bool del =
false);
114 const Use *getImpliedUser()
const;
120 void setPrev(
Use **NewPrev) { Prev.setPointer(NewPrev); }
125 Next->setPrev(&Next);
130 void removeFromList() {
131 Use **StrippedPrev = Prev.getPointer();
132 *StrippedPrev = Next;
134 Next->setPrev(StrippedPrev);
156 #endif // LLVM_IR_USE_H
const Value * operator->() const
#define DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ty, ref)
A Use represents the edge between a Value definition and its users.
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.
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 SimpleType getSimplifiedValue(const Use &Val)
PointerIntPair< User *, 1, unsigned > UserRef
LLVM Value Representation.
static SimpleType getSimplifiedValue(Use &Val)
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.