Print the names of more opaque types
authorChris Lattner <sabre@nondot.org>
Thu, 30 Oct 2003 00:22:33 +0000 (00:22 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 30 Oct 2003 00:22:33 +0000 (00:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9598 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/AsmWriter.cpp

index 2cdca502dc64a3822958b27d7858accc4eb06aad..40e0129db2503cac37eb63de19da8e67a870c778 100644 (file)
@@ -111,7 +111,8 @@ static void fillTypeNameTable(const Module *M,
       //
       const Type *Ty = cast<Type>(I->second);
       if (!isa<PointerType>(Ty) ||
-          !cast<PointerType>(Ty)->getElementType()->isPrimitiveType())
+          !cast<PointerType>(Ty)->getElementType()->isPrimitiveType() ||
+          isa<OpaqueType>(cast<PointerType>(Ty)->getElementType()))
         TypeNames.insert(std::make_pair(Ty, getLLVMName(I->first)));
     }
   }
@@ -122,12 +123,16 @@ static void fillTypeNameTable(const Module *M,
 static std::string calcTypeName(const Type *Ty, 
                                 std::vector<const Type *> &TypeStack,
                                 std::map<const Type *, std::string> &TypeNames){
-  if (Ty->isPrimitiveType()) return Ty->getDescription();  // Base case
+  if (Ty->isPrimitiveType() && !isa<OpaqueType>(Ty))
+    return Ty->getDescription();  // Base case
 
   // Check to see if the type is named.
   std::map<const Type *, std::string>::iterator I = TypeNames.find(Ty);
   if (I != TypeNames.end()) return I->second;
 
+  if (isa<OpaqueType>(Ty))
+    return "opaque";
+
   // Check to see if the Type is already on the stack...
   unsigned Slot = 0, CurSize = TypeStack.size();
   while (Slot < CurSize && TypeStack[Slot] != Ty) ++Slot; // Scan for type
@@ -210,9 +215,6 @@ static std::ostream &printTypeInt(std::ostream &Out, const Type *Ty,
   std::map<const Type *, std::string>::iterator I = TypeNames.find(Ty);
   if (I != TypeNames.end()) return Out << I->second;
 
-  if (isa<OpaqueType>(Ty))
-    return Out << "opaque";
-
   // Otherwise we have a type that has not been named but is a derived type.
   // Carefully recurse the type hierarchy to print out any contained symbolic
   // names.