//===----------------------------------------------------------------------===//
//
// This file declares the Value class.
-// This file also defines the Use<> template for users of value.
//
//===----------------------------------------------------------------------===//
#include "llvm/AbstractTypeUser.h"
#include "llvm/Use.h"
#include "llvm/Support/Casting.h"
-#include "llvm/Support/Streams.h"
+#include <iosfwd>
#include <string>
namespace llvm {
/// getRawType - This should only be used to implement the vmcore library.
///
const Type *getRawType() const { return Ty.getRawType(); }
+
+ /// stripPointerCasts - This method strips off any unneeded pointer
+ /// casts from the specified value, returning the original uncasted value.
+ /// Note that the returned value is guaranteed to have pointer type.
+ Value *stripPointerCasts();
};
inline std::ostream &operator<<(std::ostream &OS, const Value &V) {
return OS;
}
-void Use::init(Value *v, User *user) {
- Val = v;
- U = user;
- if (Val) Val->addUse(*this);
+void Use::init(Value *V, User *) {
+ Val = V;
+ if (V) V->addUse(*this);
}
void Use::set(Value *V) {
return isa<GlobalVariable>(Val) || isa<Function>(Val) || isa<GlobalAlias>(Val);
}
-/// StripPointerCasts - This function strips off any unneeded pointer
-/// casts from the specified value, returning the original uncasted value.
-/// Note that the returned value is guaranteed to have pointer type.
-Value *StripPointerCasts(Value *Ptr);
-
} // End llvm namespace
#endif