[llvm-commits] CVS: llvm/include/llvm/DerivedTypes.h

Chris Lattner lattner at cs.uiuc.edu
Thu Sep 4 21:16:01 PDT 2003


Changes in directory llvm/include/llvm:

DerivedTypes.h updated: 1.36 -> 1.37

---
Log message:

Reshuffling of APIs


---
Diffs of the changes:

Index: llvm/include/llvm/DerivedTypes.h
diff -u llvm/include/llvm/DerivedTypes.h:1.36 llvm/include/llvm/DerivedTypes.h:1.37
--- llvm/include/llvm/DerivedTypes.h:1.36	Thu Sep  4 18:43:35 2003
+++ llvm/include/llvm/DerivedTypes.h	Thu Sep  4 21:15:36 2003
@@ -35,7 +35,16 @@
   // used, but the subtypes have changed.
   //
   void typeIsRefined();
+
+  // dropAllTypeUses - When this (abstract) type is resolved to be equal to
+  // another (more concrete) type, we must eliminate all references to other
+  // types, to avoid some circular reference problems.  This also removes the
+  // type from the internal tables of available types.
+  virtual void dropAllTypeUses(bool inMap) = 0;
   
+
+  void refineAbstractTypeToInternal(const Type *NewType, bool inMap);
+
 public:
 
   //===--------------------------------------------------------------------===//
@@ -61,7 +70,9 @@
   // This causes all users of 'this' to switch to reference the more concrete
   // type NewType and for 'this' to be deleted.
   //
-  void refineAbstractTypeTo(const Type *NewType);
+  void refineAbstractTypeTo(const Type *NewType) {
+    refineAbstractTypeToInternal(NewType, true);
+  }
 
   // Methods for support type inquiry through isa, cast, and dyn_cast:
   static inline bool classof(const DerivedType *T) { return true; }
@@ -94,6 +105,12 @@
   FunctionType(const Type *Result, const std::vector<const Type*> &Params, 
                bool IsVarArgs);
 
+  // dropAllTypeUses - When this (abstract) type is resolved to be equal to
+  // another (more concrete) type, we must eliminate all references to other
+  // types, to avoid some circular reference problems.  This also removes the
+  // type from the internal tables of available types.
+  virtual void dropAllTypeUses(bool inMap);
+
 public:
 
   inline bool isVarArg() const { return isVarArgs; }
@@ -186,6 +203,12 @@
 
   // Private ctor - Only can be created by a static member...
   StructType(const std::vector<const Type*> &Types);
+
+  // dropAllTypeUses - When this (abstract) type is resolved to be equal to
+  // another (more concrete) type, we must eliminate all references to other
+  // types, to avoid some circular reference problems.  This also removes the
+  // type from the internal tables of available types.
+  virtual void dropAllTypeUses(bool inMap);
   
 public:
   inline const ElementTypes &getElementTypes() const { return ETypes; }
@@ -240,6 +263,7 @@
   SequentialType(PrimitiveID TID, const Type *ElType)
     : CompositeType(TID), ElementType(PATypeHandle(ElType, this)) {
   }
+
 public:
   inline const Type *getElementType() const { return ElementType; }
 
@@ -287,6 +311,13 @@
 
   // Private ctor - Only can be created by a static member...
   ArrayType(const Type *ElType, unsigned NumEl);
+
+  // dropAllTypeUses - When this (abstract) type is resolved to be equal to
+  // another (more concrete) type, we must eliminate all references to other
+  // types, to avoid some circular reference problems.  This also removes the
+  // type from the internal tables of available types.
+  virtual void dropAllTypeUses(bool inMap);
+
 public:
   inline unsigned    getNumElements() const { return NumElements; }
 
@@ -320,6 +351,12 @@
 
   // Private ctor - Only can be created by a static member...
   PointerType(const Type *ElType);
+
+  // dropAllTypeUses - When this (abstract) type is resolved to be equal to
+  // another (more concrete) type, we must eliminate all references to other
+  // types, to avoid some circular reference problems.  This also removes the
+  // type from the internal tables of available types.
+  virtual void dropAllTypeUses(bool inMap);
 public:
   // PointerType::get - Named constructor for pointer types...
   static PointerType *get(const Type *ElementType);
@@ -351,6 +388,12 @@
 
   // Private ctor - Only can be created by a static member...
   OpaqueType();
+
+  // dropAllTypeUses - When this (abstract) type is resolved to be equal to
+  // another (more concrete) type, we must eliminate all references to other
+  // types, to avoid some circular reference problems.
+  virtual void dropAllTypeUses(bool inMap) {}  // No type uses
+
 public:
 
   // get - Static factory method for the OpaqueType class...





More information about the llvm-commits mailing list