X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FValue.h;h=f8eceb7ec05aac2f43a6fcae08acd175107ede89;hb=87944916a4764dabc2f89cbec0a6c7e439c28530;hp=fdde5aed96e8c088f76770f6befa39142844b8ce;hpb=e2c677fd9cf412e77783b1e4d7eee57508a3e6db;p=oota-llvm.git diff --git a/include/llvm/Value.h b/include/llvm/Value.h index fdde5aed96e..f8eceb7ec05 100644 --- a/include/llvm/Value.h +++ b/include/llvm/Value.h @@ -10,11 +10,11 @@ #ifndef LLVM_VALUE_H #define LLVM_VALUE_H -#include #include "llvm/Annotation.h" #include "llvm/AbstractTypeUser.h" #include "Support/Casting.h" #include +#include class User; class Type; @@ -31,6 +31,9 @@ class SymbolTable; // Value Class //===----------------------------------------------------------------------===// +/// 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: @@ -52,19 +55,20 @@ private: void operator=(const Value &); // Do not implement Value(const Value &); // Do not implement -protected: - inline void setType(const Type *ty) { Ty = ty; } public: Value(const Type *Ty, ValueTy vty, const std::string &name = ""); virtual ~Value(); - // Support for debugging + /// dump - Support for debugging, callable in GDB: V->dump() + // void dump() const; - // Implement operator<< on Value... + /// print - Implement operator<< on Value... + /// virtual void print(std::ostream &O) const = 0; - // All values can potentially be typed + /// All values are typed, get the type of this value. + /// inline const Type *getType() const { return Ty; } // All values can potentially be named... @@ -75,27 +79,20 @@ public: Name = name; } - // Methods for determining the subtype of this Value. The getValueType() - // method returns the type of the value directly. The cast*() methods are - // equivalent to using dynamic_cast<>... if the cast is successful, this is - // returned, otherwise you get a null pointer. - // - // The family of functions Val->castAsserting() is used in the same - // way as the Val->cast() instructions, but they assert the expected - // type instead of checking it at runtime. - // + /// getValueType - Return the immediate subclass of this Value. + /// inline ValueTy getValueType() const { return VTy; } - // replaceAllUsesWith - Go through the uses list for this definition and make - // each use point to "D" instead of "this". After this completes, 'this's - // use list should be empty. - // - void replaceAllUsesWith(Value *D); - - // 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. - // + /// replaceAllUsesWith - Go through the uses list for this definition and make + /// each use point to "V" instead of "this". After this completes, 'this's + /// use list is guaranteed to be empty. + /// + void replaceAllUsesWith(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); //----------------------------------------------------------------------