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
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;
}
// 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())