-//===-- llvm/Value.h - Definition of the Value class -------------*- C++ -*--=//
+//===-- llvm/Value.h - Definition of the Value class ------------*- C++ -*-===//
//
// This file defines the very important Value class. This is subclassed by a
// bunch of other important classes, like Instruction, Function, Type, etc...
/// Value - The base class of all values computed by a program that may be used
/// as operands to other values.
///
-class Value : public Annotable, // Values are annotable
- public AbstractTypeUser { // Values use potentially abstract types
-public:
+struct Value : public Annotable { // Values are annotable
enum ValueTy {
TypeVal, // This is an instance of Type
ConstantVal, // This is an instance of Constant
private:
std::vector<User *> Uses;
std::string Name;
- PATypeHandle Ty;
+ PATypeHolder Ty;
ValueTy VTy;
void operator=(const Value &); // Do not implement
/// dump - Support for debugging, callable in GDB: V->dump()
//
- void dump() const;
+ virtual void dump() const;
/// print - Implement operator<< on Value...
///
// Only use when in type resolution situations!
void uncheckedReplaceAllUsesWith(Value *V);
- /// refineAbstractType - This function is implemented because we use
- /// potentially abstract types, and these types may be resolved to more
- /// concrete types after we are constructed.
- ///
- virtual void refineAbstractType(const DerivedType *OldTy, const Type *NewTy);
-
//----------------------------------------------------------------------
// Methods for handling the vector of uses of this Value.
//