Use *Prev, *Next;
friend struct ilist_traits<Use>;
public:
- inline Use(Value *v, User *user);
- inline Use(const Use &u);
+ inline void init(Value *V, User *U);
+
+ Use(Value *V, User *U) { init(V, U); }
+ Use(const Use &U) { init(U.Val, U.U); }
inline ~Use();
+ /// Default ctor - This leaves the Use completely unitialized. The only thing
+ /// that is valid to do with this use is to call the "init" method.
+ inline Use() : Val(0) {}
+
+
operator Value*() const { return Val; }
Value *get() const { return Val; }
User *getUser() const { return U; }
/// as operands to other values.
///
class Value {
-private:
unsigned SubclassID; // Subclass identifier (for isa/dyn_cast)
PATypeHolder Ty;
iplist<Use> Uses;
}
-Use::Use(Value *v, User *user) : Val(v), U(user) {
- if (Val) Val->addUse(*this);
-}
-
-Use::Use(const Use &u) : Val(u.Val), U(u.U) {
+void Use::init(Value *v, User *user) {
+ Val = v;
+ U = user;
if (Val) Val->addUse(*this);
}