]> granicus.if.org Git - clang/commitdiff
In ASTWriter::WriteDeclContextVisibleBlock, don't write empty lookups.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 30 Aug 2011 19:43:23 +0000 (19:43 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 30 Aug 2011 19:43:23 +0000 (19:43 +0000)
Empty lookups can occur in the DeclContext map when we are chaining PCHs, where
the empty lookup indicates that we already looked in ExternalASTSource.

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

lib/Serialization/ASTWriter.cpp

index 0d2a0154de9d1d45df0fae46c47a42bc112391de..0cd2c8c7b0b1b414e0f1cbdc2695f3c174b2afff 100644 (file)
@@ -2628,7 +2628,8 @@ uint64_t ASTWriter::WriteDeclContextVisibleBlock(ASTContext &Context,
        D != DEnd; ++D) {
     DeclarationName Name = D->first;
     DeclContext::lookup_result Result = D->second.getLookupResult();
-    Generator.insert(Name, Result, Trait);
+    if (Result.first != Result.second)
+      Generator.insert(Name, Result, Trait);
   }
 
   // Create the on-disk hash table in a buffer.
@@ -2673,7 +2674,8 @@ void ASTWriter::WriteDeclContextVisibleUpdate(const DeclContext *DC) {
     DeclContext::lookup_result Result = D->second.getLookupResult();
     // For any name that appears in this table, the results are complete, i.e.
     // they overwrite results from previous PCHs. Merging is always a mess.
-    Generator.insert(Name, Result, Trait);
+    if (Result.first != Result.second)
+      Generator.insert(Name, Result, Trait);
   }
 
   // Create the on-disk hash table in a buffer.