OSDN Git Service

Fix a bug in my previous change. Unfortunately this reverts most of the
authorChris Lattner <sabre@nondot.org>
Thu, 7 Oct 2004 16:19:40 +0000 (16:19 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 7 Oct 2004 16:19:40 +0000 (16:19 +0000)
speedup, but has the advantage of not breaking a bunch of programs!

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

lib/VMCore/Type.cpp

index af3a81e..6a9da3a 100644 (file)
@@ -478,8 +478,8 @@ bool Type::PromoteAbstractToConcrete(void *Ptr) {
       return true;              // This type is abstract if subtype is abstract!
     }
   
-  // Nothing looks abstract here.
-  setAbstract(false);
+  // Nothing looks abstract here.  Restore the abstract flag.
+  setAbstract(true);
   return false;
 }
 
@@ -732,7 +732,8 @@ public:
     // subtypes to see if the type has just become concrete!
     if (Ty->isAbstract()) {
       std::set<Type*> KnownAbstractTypes;
-      Ty->PromoteAbstractToConcrete(&KnownAbstractTypes);
+      if (!Ty->PromoteAbstractToConcrete(&KnownAbstractTypes))
+        Ty->setAbstract(false);
 
       // If the type just became concrete, notify all users!
       if (!Ty->isAbstract())