(now with the right list) On Tue, Nov 16, 2010 at 12:03 AM Douglas Gregor <dgre...@apple.com> wrote:
> Author: dgregor > Date: Mon Nov 15 17:00:34 2010 > New Revision: 119285 > > URL: http://llvm.org/viewvc/llvm-project?rev=119285&view=rev > Log: > Tweak libclang's heuristics for building precompiled preambles and > caching global code-completion results. In particular, don't perform > either operation the first time we parse, but do both after the first > reparse. > Do you remember the reason behind not building the preamble on the first parse? For really large TUs having to parse 2 times before we get a preamble is rather painful. Cheers, /Manuel > Modified: > cfe/trunk/lib/Frontend/ASTUnit.cpp > cfe/trunk/tools/c-index-test/c-index-test.c > > Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=119285&r1=119284&r2=119285&view=diff > > ============================================================================== > --- cfe/trunk/lib/Frontend/ASTUnit.cpp (original) > +++ cfe/trunk/lib/Frontend/ASTUnit.cpp Mon Nov 15 17:00:34 2010 > @@ -326,7 +326,6 @@ > > // Make a note of the state when we performed this caching. > NumTopLevelDeclsAtLastCompletionCache = top_level_size(); > - CacheCodeCompletionCoolDown = 15; > } > > void ASTUnit::ClearCachedCompletionResults() { > @@ -824,12 +823,6 @@ > } > > Invocation.reset(Clang.takeInvocation()); > - > - // If we were asked to cache code-completion results and don't have any > - // results yet, do so now. > - if (ShouldCacheCodeCompletionResults && CachedCompletionResults.empty()) > - CacheCodeCompletionResults(); > - > return false; > > error: > @@ -1350,7 +1343,7 @@ > > llvm::MemoryBuffer *OverrideMainBuffer = 0; > if (PrecompilePreamble) { > - PreambleRebuildCounter = 1; > + PreambleRebuildCounter = 2; > OverrideMainBuffer > = getMainBufferWithPrecompiledPreamble(*Invocation); > } > @@ -1377,6 +1370,7 @@ > AST->CaptureDiagnostics = CaptureDiagnostics; > AST->CompleteTranslationUnit = CompleteTranslationUnit; > AST->ShouldCacheCodeCompletionResults = CacheCodeCompletionResults; > + AST->CacheCodeCompletionCoolDown = 1; > AST->Invocation.reset(CI); > > return AST->LoadFromCompilerInvocation(PrecompilePreamble)? 0 : > AST.take(); > @@ -1481,6 +1475,7 @@ > AST->CaptureDiagnostics = CaptureDiagnostics; > AST->CompleteTranslationUnit = CompleteTranslationUnit; > AST->ShouldCacheCodeCompletionResults = CacheCodeCompletionResults; > + AST->CacheCodeCompletionCoolDown = 1; > AST->NumStoredDiagnosticsFromDriver = StoredDiagnostics.size(); > AST->NumStoredDiagnosticsInPreamble = StoredDiagnostics.size(); > AST->StoredDiagnostics.swap(StoredDiagnostics); > > Modified: cfe/trunk/tools/c-index-test/c-index-test.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=119285&r1=119284&r2=119285&view=diff > > ============================================================================== > --- cfe/trunk/tools/c-index-test/c-index-test.c (original) > +++ cfe/trunk/tools/c-index-test/c-index-test.c Mon Nov 15 17:00:34 2010 > @@ -1040,6 +1040,11 @@ > fprintf(stderr, "Unable to load translation unit!\n"); > return 1; > } > + > + if (clang_reparseTranslationUnit(TU, 0, 0, > clang_defaultReparseOptions(TU))) { > + fprintf(stderr, "Unable to reparse translation init!\n"); > + return 1; > + } > > for (I = 0; I != Repeats; ++I) { > results = clang_codeCompleteAt(TU, filename, line, column, > > > _______________________________________________ > cfe-commits mailing list > cfe-comm...@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits