33template <
typename>
struct simplify_type;
59 Use(
User *Parent) : Parent(Parent) {}
65 operator Value *()
const {
return Val; }
89 static void zap(
Use *Start,
const Use *Stop,
bool del =
false);
96 User *Parent =
nullptr;
106 void removeFromList() {
#define DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ty, ref)
A Use represents the edge between a Value definition and its users.
static void zap(Use *Start, const Use *Stop, bool del=false)
Destroys Use operands when the number of operands of a User changes.
const Value * operator->() const
User * getUser() const
Returns the User that contains this Use.
unsigned getOperandNo() const
Return the operand # of this use in its User.
void swap(Use &RHS)
Provide a fast substitute to std::swap<Use> that also works with less standard-compliant compilers.
Value * operator=(Value *RHS)
LLVM Value Representation.
struct LLVMOpaqueUse * LLVMUseRef
Used to get the users and usees of a Value.
@ User
could "use" a pointer
This is an optimization pass for GlobalISel generic memory operations.
static SimpleType getSimplifiedValue(Use &Val)
static SimpleType getSimplifiedValue(const Use &Val)
Define a template that can be specialized by smart pointers to reflect the fact that they are automat...