]> granicus.if.org Git - clang/commitdiff
[analyzer] Move stats calculation out of AnalysisConsumer destructor.
authorAnna Zaks <ganna@apple.com>
Thu, 5 Apr 2012 02:10:21 +0000 (02:10 +0000)
committerAnna Zaks <ganna@apple.com>
Thu, 5 Apr 2012 02:10:21 +0000 (02:10 +0000)
The ASTConsumer does not get deleted with clang --analyze (for
performance reasons), we still want the diagnostics to work.

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

lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp

index df2d265cad0e8dedd8846cbc2d84af408413ef24..756ef32615a0dc599f1f66c493f4ff9d4a24ce70 100644 (file)
@@ -125,13 +125,6 @@ public:
   }
 
   ~AnalysisConsumer() {
-    // Count how many basic blocks we have not covered.
-    NumBlocksInAnalyzedFunctions = FunctionSummaries.getTotalNumBasicBlocks();
-    if (NumBlocksInAnalyzedFunctions > 0)
-      PercentReachableBlocks =
-        (FunctionSummaries.getTotalNumVisitedBasicBlocks() * 100) /
-          NumBlocksInAnalyzedFunctions;
-
     if (Opts.PrintStats)
       delete TUTotalTimer;
   }
@@ -383,6 +376,14 @@ void AnalysisConsumer::HandleTranslationUnit(ASTContext &C) {
   Mgr.reset(NULL);
 
   if (TUTotalTimer) TUTotalTimer->stopTimer();
+
+  // Count how many basic blocks we have not covered.
+  NumBlocksInAnalyzedFunctions = FunctionSummaries.getTotalNumBasicBlocks();
+  if (NumBlocksInAnalyzedFunctions > 0)
+    PercentReachableBlocks =
+      (FunctionSummaries.getTotalNumVisitedBasicBlocks() * 100) /
+        NumBlocksInAnalyzedFunctions;
+
 }
 
 static void FindBlocks(DeclContext *D, SmallVectorImpl<Decl*> &WL) {