Add method
[oota-llvm.git] / include / llvm / Type.h
index 0fb34c526129d7c1f04c14516a4590ad65322489..18b8adb0cee0d8ad50819bec7cec55eb8d11ea5a 100644 (file)
@@ -29,8 +29,6 @@
 // users of the unknown type, causing them to reference a new, more concrete
 // type.  Opaque types are deleted when their use list dwindles to zero users.
 //
-// Opaque types are considered to be first-class types.
-// 
 //===----------------------------------------------------------------------===//
 
 #ifndef LLVM_TYPE_H
@@ -192,9 +190,10 @@ 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 || ID == OpaqueTyID;
+            ID == PointerTyID || ID == PackedTyID;
   }
 
   /// isSized - Return true if it makes sense to take the size of this type.  To
@@ -289,7 +288,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
@@ -297,6 +296,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