* Delete getNumAbstractTypeUsers method
authorChris Lattner <sabre@nondot.org>
Fri, 5 Apr 2002 22:21:08 +0000 (22:21 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 5 Apr 2002 22:21:08 +0000 (22:21 +0000)
* Move addAbstractTypeUser method to Type.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2120 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DerivedTypes.h

index 1a8bf9019c8c61dfc5ad26fab51695b5a98609fb..9e01ba37c90628c386307aa4bb93881c4929c9d7 100644 (file)
 #include "llvm/Type.h"
 
 class DerivedType : public Type {
+  char isRefining;                                   // Used for recursive types
+
   // AbstractTypeUsers - Implement a list of the users that need to be notified
   // if I am a type, and I get resolved into a more concrete type.
   //
   ///// FIXME: kill mutable nonsense when Type's are not const
   mutable std::vector<AbstractTypeUser *> AbstractTypeUsers;
 
-  char isRefining;                                   // Used for recursive types
-
 protected:
   inline DerivedType(PrimitiveID id) : Type("", id) {
-    isRefining = false;
+    isRefining = 0;
+  }
+  ~DerivedType() {
+    assert(AbstractTypeUsers.empty());
   }
 
   // typeIsRefined - Notify AbstractTypeUsers of this type that the current type
@@ -50,14 +53,7 @@ public:
   // addAbstractTypeUser - Notify an abstract type that there is a new user of
   // it.  This function is called primarily by the PATypeHandle class.
   //
-  void addAbstractTypeUser(AbstractTypeUser *U) const {
-    assert(isAbstract() && "addAbstractTypeUser: Current type not abstract!");
-#if 0
-    cerr << "  addAbstractTypeUser[" << (void*)this << ", " << getDescription() 
-        << "][" << AbstractTypeUsers.size() << "] User = " << U << endl;
-#endif
-    AbstractTypeUsers.push_back(U);
-  }
+  void addAbstractTypeUser(AbstractTypeUser *U) const;
 
   // removeAbstractTypeUser - Notify an abstract type that a user of the class
   // no longer has a handle to the type.  This function is called primarily by
@@ -66,12 +62,6 @@ public:
   //
   void removeAbstractTypeUser(AbstractTypeUser *U) const;
 
-  // getNumAbstractTypeUsers - Return the number of users registered to the type
-  inline unsigned getNumAbstractTypeUsers() const {
-    assert(isAbstract() && "getNumAbstractTypeUsers: Type not abstract!");
-    return AbstractTypeUsers.size(); 
-  }
-
   // refineAbstractTypeTo - This function is used to when it is discovered that
   // the 'this' abstract type is actually equivalent to the NewType specified.
   // This causes all users of 'this' to switch to reference the more concrete