diff options
author | Anna Zaks <ganna@apple.com> | 2012-06-22 22:08:12 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-06-22 22:08:12 +0000 |
commit | 7aa3687bb6a5f4b1c04bef68e96ca0ceafb35a44 (patch) | |
tree | 5e4bad44001d6836efa06d0145f17787e008c59e /clang | |
parent | e4b6d5e1c1a97c303185a6ec4ee9d671d6690f78 (diff) | |
download | bcm5719-llvm-7aa3687bb6a5f4b1c04bef68e96ca0ceafb35a44.tar.gz bcm5719-llvm-7aa3687bb6a5f4b1c04bef68e96ca0ceafb35a44.zip |
[analyzer]scan-build: report the total number of steps analyzer performs
This would be useful to investigate performance issues.
llvm-svn: 159038
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp | 7 | ||||
-rwxr-xr-x | clang/tools/scan-build/ccc-analyzer | 7 | ||||
-rwxr-xr-x | clang/tools/scan-build/scan-build | 13 |
3 files changed, 26 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp b/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp index b75765d336e..3cdfb6ce36e 100644 --- a/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp +++ b/clang/lib/StaticAnalyzer/Core/ExplodedGraph.cpp @@ -11,6 +11,7 @@ // which represent a path-sensitive, intra-procedural "exploded graph." // //===----------------------------------------------------------------------===// +#define DEBUG_TYPE "CoreEngine" #include "clang/StaticAnalyzer/Core/PathSensitive/ExplodedGraph.h" #include "clang/StaticAnalyzer/Core/PathSensitive/ObjCMessage.h" @@ -20,11 +21,15 @@ #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/Statistic.h" #include <vector> using namespace clang; using namespace ento; +STATISTIC(NumNodesWithMoreThanTwoSucc, + "The # of nodes with more than 2 successors."); + //===----------------------------------------------------------------------===// // Node auditing. //===----------------------------------------------------------------------===// @@ -170,6 +175,8 @@ void ExplodedNode::addPredecessor(ExplodedNode *V, ExplodedGraph &G) { assert (!V->isSink()); Preds.addNode(V, G); V->Succs.addNode(this, G); + if (V->Succs.size() == 3) + NumNodesWithMoreThanTwoSucc++; #ifndef NDEBUG if (NodeAuditor) NodeAuditor->AddEdge(V, this); #endif diff --git a/clang/tools/scan-build/ccc-analyzer b/clang/tools/scan-build/ccc-analyzer index 86a36161f9f..b8f7193dd65 100755 --- a/clang/tools/scan-build/ccc-analyzer +++ b/clang/tools/scan-build/ccc-analyzer @@ -438,6 +438,9 @@ my $StoreModel = $ENV{'CCC_ANALYZER_STORE_MODEL'}; # Get the constraints engine. my $ConstraintsModel = $ENV{'CCC_ANALYZER_CONSTRAINTS_MODEL'}; +#Get the internal stats setting. +my $InternalStats = $ENV{'CCC_ANALYZER_INTERNAL_STATS'}; + # Get the output format. my $OutputFormat = $ENV{'CCC_ANALYZER_OUTPUT_FORMAT'}; if (!defined $OutputFormat) { $OutputFormat = "html"; } @@ -642,6 +645,10 @@ if ($Action eq 'compile' or $Action eq 'link') { if (defined $ConstraintsModel) { push @AnalyzeArgs, "-analyzer-constraints=$ConstraintsModel"; } + + if (defined $InternalStats) { + push @AnalyzeArgs, "-analyzer-stats"; + } if (defined $Analyses) { push @AnalyzeArgs, split '\s+', $Analyses; diff --git a/clang/tools/scan-build/scan-build b/clang/tools/scan-build/scan-build index 7bcd5c243c7..424e15a9b13 100755 --- a/clang/tools/scan-build/scan-build +++ b/clang/tools/scan-build/scan-build @@ -1025,7 +1025,8 @@ ADVANCED OPTIONS: -maxloop N - specifiy the number of times a block can be visited before giving up. Default is 4. Increase for more comprehensive coverage at a cost of speed. - + -internal-stats - Generate internal analyzer statistics. + CONTROLLING CHECKERS: A default group of checkers are always run unless explicitly disabled. @@ -1194,6 +1195,7 @@ my $ExitStatusFoundBugs = 0; # Exit status reflects whether bugs were found my @AnalysesToRun; my $StoreModel; my $ConstraintsModel; +my $InternalStats; my $OutputFormat = "html"; my $AnalyzerStats = 0; my $MaxLoop = 0; @@ -1325,6 +1327,12 @@ while (@ARGV) { $ConstraintsModel = shift @ARGV; next; } + + if ($arg eq "-internal-stats") { + shift @ARGV; + $InternalStats = 1; + next; + } if ($arg eq "-plist") { shift @ARGV; @@ -1442,6 +1450,9 @@ if (defined $StoreModel) { if (defined $ConstraintsModel) { $ENV{'CCC_ANALYZER_CONSTRAINTS_MODEL'} = $ConstraintsModel; } +if (defined $InternalStats) { + $ENV{'CCC_ANALYZER_INTERNAL_STATS'} = 1; +} if (defined $OutputFormat) { $ENV{'CCC_ANALYZER_OUTPUT_FORMAT'} = $OutputFormat; } |