//
// The LLVM Compiler Infrastructure
//
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
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.
typedef value_use_iterator<UserTy> _Self;
Use *U;
- value_use_iterator(Use *u) : U(u) {}
+ explicit value_use_iterator(Use *u) : U(u) {}
friend class Value;
public:
typedef typename super::reference reference;
bool operator!=(const _Self &x) const {
return !operator==(x);
}
-
+
/// atEnd - return true if this iterator is equal to use_end() on the value.
bool atEnd() const { return U == 0; }
_Self tmp = *this; ++*this; return tmp;
}
- // Retrieve a reference to the current SCC
+ // Retrieve a reference to the current User
UserTy *operator*() const {
assert(U && "Cannot increment end iterator!");
return U->getUser();