the enum has already been converted. If not, there cannot be any types
built on top of it, so there is no need to flush the cache.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@134841
91177308-0d34-0410-b5e6-
96231b3b80d8
// If this is an enum being completed, then we flush all non-struct types from
// the cache. This allows function types and other things that may be derived
// from the enum to be recomputed.
- if (isa<EnumDecl>(TD)) {
- TypeCache.clear();
+ if (const EnumDecl *ED = dyn_cast<EnumDecl>(TD)) {
+ // Only flush the cache if we've actually already converted this type.
+ if (TypeCache.count(ED->getTypeForDecl()))
+ TypeCache.clear();
return;
}