Add two helper functions.
[oota-llvm.git] / include / llvm / Type.h
index b1543a022cfb1a545c631c450c3a0dc8f4cb45bb..20a3d6d03ef136cc179e484a7e39cc2a77433fd3 100644 (file)
@@ -101,10 +101,9 @@ protected:
   ///
   inline void setAbstract(bool Val) { Abstract = Val; }
 
-  /// PromoteAbstractToConcrete - This is an internal method used to calculate
-  /// change "Abstract" from true to false when types are refined.
-  ///
-  bool PromoteAbstractToConcrete(void *);
+  // PromoteAbstractToConcrete - This is an internal method used to calculate
+  // change "Abstract" from true to false when types are refined.
+  void PromoteAbstractToConcrete();
 
   unsigned getRefCount() const { return RefCount; }
 
@@ -191,6 +190,7 @@ public:
   inline bool isDerivedType()   const { return ID >= FirstDerivedTyID; }
 
   /// isFirstClassType - Return true if the value is holdable in a register.
+  ///
   inline bool isFirstClassType() const {
     return (ID != VoidTyID && ID <= LastPrimitiveTyID) || 
             ID == PointerTyID || ID == PackedTyID;
@@ -246,7 +246,8 @@ public:
 
   /// getNumContainedTypes - Return the number of types in the derived type.
   ///
-  unsigned getNumContainedTypes() const { return ContainedTys.size(); }
+  typedef std::vector<PATypeHandle>::size_type size_type;
+  size_type getNumContainedTypes() const { return ContainedTys.size(); }
 
   //===--------------------------------------------------------------------===//
   // Static members exported by the Type class itself.  Useful for getting
@@ -288,7 +289,7 @@ public:
   }
   
   void dropRef() const {
-    assert(isAbstract() && "Cannot drop a refernce to a non-abstract type!");
+    assert(isAbstract() && "Cannot drop a reference to a non-abstract type!");
     assert(RefCount && "No objects are currently referencing this object!");
 
     // If this is the last PATypeHolder using this object, and there are no
@@ -296,6 +297,12 @@ public:
     if (--RefCount == 0)
       RefCountIsZero();
   }
+
+  /// clearAllTypeMaps - This method frees all internal memory used by the
+  /// type subsystem, which can be used in environments where this memory is
+  /// otherwise reported as a leak.
+  static void clearAllTypeMaps();
+
 private:
   /// isSizedDerivedType - Derived types like structures and arrays are sized
   /// iff all of the members of the type are sized as well.  Since asking for