Don't return bogus references, and don't add an entry to the Concrete map
authorChris Lattner <sabre@nondot.org>
Tue, 2 Sep 2003 22:50:02 +0000 (22:50 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 2 Sep 2003 22:50:02 +0000 (22:50 +0000)
unless it's not empty!

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

lib/VMCore/Type.cpp

index 5475a571889b3d4faae0868504cb40ebe47d447e..54fe4431bab84f56128074e00bbc1040b66e4f55 100644 (file)
@@ -39,7 +39,8 @@ void PATypeHolder::dump() const {
 
 Type::Type(const std::string &name, PrimitiveID id)
   : Value(Type::TypeTy, Value::TypeVal) {
-  ConcreteTypeDescriptions[this] = name;
+  if (!name.empty())
+    ConcreteTypeDescriptions[this] = name;
   ID = id;
   Abstract = false;
   UID = CurUID++;       // Assign types UID's as they are created
@@ -202,8 +203,8 @@ static std::string getTypeDescription(const Type *Ty,
     break;
   }
   default:
-    assert(0 && "Unhandled type in getTypeDescription!");
     Result = "<error>";
+    assert(0 && "Unhandled type in getTypeDescription!");
   }
 
   TypeStack.pop_back();       // Remove self from stack...
@@ -211,11 +212,9 @@ static std::string getTypeDescription(const Type *Ty,
   // In order to reduce the amount of repeated computation, we cache the
   // computed value for later.
   if (Ty->isAbstract())
-    AbstractTypeDescriptions[Ty] = Result;
+    return AbstractTypeDescriptions[Ty] = Result;
   else
-    ConcreteTypeDescriptions[Ty] = Result;
-
-  return Result;
+    return ConcreteTypeDescriptions[Ty] = Result;
 }