diff --git a/include/llvm/DerivedTypes.h b/include/llvm/DerivedTypes.h index 179f44fbc07..e4b9136802a 100644 --- a/include/llvm/DerivedTypes.h +++ b/include/llvm/DerivedTypes.h @@ -31,7 +31,7 @@ class StructValType; class PointerValType; class PackedValType; -class DerivedType : public Type, public AbstractTypeUser { +class DerivedType : public Type { friend class Type; protected: diff --git a/include/llvm/Type.h b/include/llvm/Type.h index d69005865d2..68af106ffe4 100644 --- a/include/llvm/Type.h +++ b/include/llvm/Type.h @@ -51,7 +51,7 @@ class StructType; class PackedType; class TypeMapBase; -class Type { +class Type : public AbstractTypeUser { public: ///===-------------------------------------------------------------------===// /// Definitions of all of the base types for the Type system. Based on this @@ -341,6 +341,9 @@ private: /// their size is relatively uncommon, move this operation out of line. bool isSizedDerivedType() const; + virtual void refineAbstractType(const DerivedType *OldTy, const Type *NewTy); + virtual void typeBecameConcrete(const DerivedType *AbsTy); + protected: // PromoteAbstractToConcrete - This is an internal method used to calculate // change "Abstract" from true to false when types are refined.