aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Value.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/include/llvm/Value.h b/include/llvm/Value.h
index 85c5e76ae8..889551d0cd 100644
--- a/include/llvm/Value.h
+++ b/include/llvm/Value.h
@@ -10,6 +10,7 @@
#include <list>
#include "llvm/Annotation.h"
+#include "llvm/AbstractTypeUser.h"
class User;
class Type;
@@ -19,6 +20,7 @@ class Instruction;
class BasicBlock;
class Method;
class Module;
+class SymbolTable;
template<class ValueSubclass, class ItemParentType, class SymTabType>
class ValueHolder;
@@ -26,7 +28,8 @@ template<class ValueSubclass, class ItemParentType, class SymTabType>
// Value Class
//===----------------------------------------------------------------------===//
-class Value : public Annotable { // Value's are annotable
+class Value : public Annotable, // Values are annotable
+ public AbstractTypeUser { // Values use potentially abstract types
public:
enum ValueTy {
TypeVal, // This is an instance of Type
@@ -42,7 +45,7 @@ public:
private:
list<User *> Uses;
string Name;
- const Type *Ty;
+ PATypeHandle<Type> Ty;
ValueTy VTy;
Value(const Value &); // Do not implement
@@ -57,7 +60,7 @@ public:
// All values can potentially be named...
inline bool hasName() const { return Name != ""; }
inline const string &getName() const { return Name; }
- virtual void setName(const string &name) { Name = name; }
+ virtual void setName(const string &name, SymbolTable * = 0) { Name = name; }
// Methods for determining the subtype of this Value. The getValueType()
// method returns the type of the value directly. The cast*() methods are
@@ -118,6 +121,12 @@ public:
//
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.
+ //
+ virtual void refineAbstractType(const DerivedType *OldTy, const Type *NewTy);
+
//----------------------------------------------------------------------
// Methods for handling the list of uses of this DEF.
//