From 32002198432e8d701bca76e35a06bfbca94f0701 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 2 Oct 2003 19:44:40 +0000 Subject: [PATCH] There is no reason for Value to be an AbstractTypeUser. This just makes things significantly more complete. Instead, just make DerivedType's AbstractTypeUser's, and make Value contain a PATypeHolder. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8828 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/VMCore/Constants.cpp | 4 ---- lib/VMCore/Value.cpp | 16 ++-------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index 20f99134892..bc9196c8ce8 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -581,7 +581,6 @@ void ConstantArray::destroyConstant() { /// void ConstantArray::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) { - Value::refineAbstractType(OldTy, NewTy); if (OldTy == NewTy) return; // Make everyone now use a constant of the new type... @@ -650,7 +649,6 @@ void ConstantStruct::destroyConstant() { /// void ConstantStruct::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) { - Value::refineAbstractType(OldTy, NewTy); if (OldTy == NewTy) return; // Make everyone now use a constant of the new type... @@ -694,7 +692,6 @@ void ConstantPointerNull::destroyConstant() { /// void ConstantPointerNull::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) { - Value::refineAbstractType(OldTy, NewTy); if (OldTy == NewTy) return; // Make everyone now use a constant of the new type... @@ -828,7 +825,6 @@ void ConstantExpr::destroyConstant() { /// void ConstantExpr::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) { - Value::refineAbstractType(OldTy, NewTy); if (OldTy == NewTy) return; // FIXME: These need to use a lower-level implementation method, because the diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp index 245fa482b74..d0fcafbdf01 100644 --- a/lib/VMCore/Value.cpp +++ b/lib/VMCore/Value.cpp @@ -21,7 +21,7 @@ static inline const Type *checkType(const Type *Ty) { } Value::Value(const Type *ty, ValueTy vty, const std::string &name) - : Name(name), Ty(checkType(ty), this) { + : Name(name), Ty(checkType(ty)) { VTy = vty; } @@ -34,7 +34,7 @@ Value::~Value() { // a // if (Uses.begin() != Uses.end()) { - std::cerr << "While deleting: " << Ty << "%" << Name << "\n"; + std::cerr << "While deleting: " << *Ty << "%" << Name << "\n"; for (use_const_iterator I = Uses.begin(); I != Uses.end(); ++I) std::cerr << "Use still stuck around after Def is destroyed:" << **I << "\n"; @@ -86,18 +86,6 @@ void Value::uncheckedReplaceAllUsesWith(Value *New) { } -// 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. For the value class, we simply -// change Ty to point to the right type. :) -// -void Value::refineAbstractType(const DerivedType *OldTy, const Type *NewTy) { - assert(Ty.get() == OldTy && "Can't refine anything but my type!"); - if (OldTy == NewTy && !OldTy->isAbstract()) - Ty.removeUserFromConcrete(); - Ty = NewTy; -} - void Value::killUse(User *U) { if (U == 0) return; unsigned i; -- 2.34.1