]> granicus.if.org Git - clang/commitdiff
Revert r143342. Caching of code-completion results was intentionally placed in "reparse"
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 31 Oct 2011 21:25:31 +0000 (21:25 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Mon, 31 Oct 2011 21:25:31 +0000 (21:25 +0000)
because we don't want to take this performance hit when doing code completion

Log of r143342:
Move caching of code-completion results from ASTUnit::Reparse to ASTUnit::CodeComplete,
so that it will happen when we are doing code-completion, not reparsing.

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

lib/Frontend/ASTUnit.cpp

index cb52a2f34969567b86be052ff2cd2e829bf59d98..7211ca6dce2cffefe14b733bf1ed016d2a82428d 100644 (file)
@@ -1942,6 +1942,12 @@ bool ASTUnit::Reparse(RemappedFile *RemappedFiles, unsigned NumRemappedFiles) {
   
   // Parse the sources
   bool Result = Parse(OverrideMainBuffer);
+  
+  // If we're caching global code-completion results, and the top-level 
+  // declarations have changed, clear out the code-completion cache.
+  if (!Result && ShouldCacheCodeCompletionResults &&
+      CurrentTopLevelHashValue != CompletionCacheTopLevelHashValue)
+    CacheCodeCompletionResults();
 
   // We now need to clear out the completion allocator for
   // clang_getCursorCompletionString; it'll be recreated if necessary.
@@ -2201,12 +2207,6 @@ void ASTUnit::CodeComplete(StringRef File, unsigned Line, unsigned Column,
              SmallVectorImpl<const llvm::MemoryBuffer *> &OwnedBuffers) {
   if (!Invocation)
     return;
-  
-  // If we're caching global code-completion results, and the top-level 
-  // declarations have changed, clear out the code-completion cache.
-  if (ShouldCacheCodeCompletionResults &&
-      CurrentTopLevelHashValue != CompletionCacheTopLevelHashValue)
-    CacheCodeCompletionResults();
 
   SimpleTimer CompletionTimer(WantTiming);
   CompletionTimer.setOutput("Code completion @ " + File + ":" +