diff --git a/include/llvm/Use.h b/include/llvm/Use.h index c5a3212ed83..c81a903e8b0 100644 --- a/include/llvm/Use.h +++ b/include/llvm/Use.h @@ -37,7 +37,9 @@ public: Use(Value *V, User *U) { init(V, U); } Use(const Use &U) { init(U.Val, U.U); } - inline ~Use(); + inline ~Use() { + if (Val) removeFromList(); + } /// 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. diff --git a/include/llvm/Value.h b/include/llvm/Value.h index 0e9d2f1c73d..4604dae6ed9 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -46,7 +46,7 @@ typedef StringMapEntry ValueName; /// the super class of other important classes such as Instruction and Function. /// All Values have a Type. Type is not a subclass of Value. All types can have /// a name and they should belong to some Module. Setting the name on the Value -/// automatically update's the module's symbol table. +/// automatically updates the module's symbol table. /// /// Every value has a "use list" that keeps track of which other Values are /// using this Value. @@ -229,10 +229,6 @@ void Use::init(Value *v, User *user) { if (Val) Val->addUse(*this); } -Use::~Use() { - if (Val) removeFromList(); -} - void Use::set(Value *V) { if (Val) removeFromList(); Val = V;