summaryrefslogtreecommitdiffstats
path: root/clang/tools/scan-build/ccc-analyzer
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-12-15 02:35:54 +0000
committerTed Kremenek <kremenek@apple.com>2009-12-15 02:35:54 +0000
commitf65a0c676887d6746236cdb27de680d23988f03d (patch)
tree01df6b585c79ede6fd32ee259059cfe4918f34e3 /clang/tools/scan-build/ccc-analyzer
parent4ea24f19f529e55773faf0fd231739f78277d083 (diff)
downloadbcm5719-llvm-f65a0c676887d6746236cdb27de680d23988f03d.tar.gz
bcm5719-llvm-f65a0c676887d6746236cdb27de680d23988f03d.zip
scan-build/ccc-analyzer: start analyzing C++ FTW.
llvm-svn: 91398
Diffstat (limited to 'clang/tools/scan-build/ccc-analyzer')
-rwxr-xr-xclang/tools/scan-build/ccc-analyzer43
1 files changed, 31 insertions, 12 deletions
diff --git a/clang/tools/scan-build/ccc-analyzer b/clang/tools/scan-build/ccc-analyzer
index 9fca4326f3c..aca411f67ae 100755
--- a/clang/tools/scan-build/ccc-analyzer
+++ b/clang/tools/scan-build/ccc-analyzer
@@ -14,14 +14,38 @@
use strict;
use warnings;
+use FindBin;
use Cwd qw/ getcwd abs_path /;
use File::Temp qw/ tempfile /;
use File::Path qw / mkpath /;
use File::Basename;
use Text::ParseWords;
-my $CC = $ENV{'CCC_CC'};
-if (!defined $CC) { $CC = "gcc"; }
+##===----------------------------------------------------------------------===##
+# Compiler command setup.
+##===----------------------------------------------------------------------===##
+
+my $Compiler;
+my $Clang;
+
+if ($FindBin::Script =~ /c\+\+-analyzer/) {
+ $Compiler = $ENV{'CCC_CXX'};
+ if (!defined $Compiler) { $Compiler = "g++"; }
+
+ $Clang = $ENV{'CLANG_CXX'};
+ if (!defined $Clang) { $Clang = 'clang++'; }
+}
+else {
+ $Compiler = $ENV{'CCC_CC'};
+ if (!defined $Compiler) { $Compiler = "gcc"; }
+
+ $Clang = $ENV{'CLANG'};
+ if (!defined $Clang) { $Clang = 'clang'; }
+}
+
+##===----------------------------------------------------------------------===##
+# Cleanup.
+##===----------------------------------------------------------------------===##
my $ReportFailures = $ENV{'CCC_REPORT_FAILURES'};
if (!defined $ReportFailures) { $ReportFailures = 1; }
@@ -79,7 +103,7 @@ sub ProcessClangFailure {
print OUT "@$Args\n";
close OUT;
`uname -a >> $PPFile.info.txt 2>&1`;
- `$CC -v >> $PPFile.info.txt 2>&1`;
+ `$Compiler -v >> $PPFile.info.txt 2>&1`;
system 'mv',$ofile,"$PPFile.stderr.txt";
return (basename $PPFile);
}
@@ -88,10 +112,6 @@ sub ProcessClangFailure {
# Running the analyzer.
##----------------------------------------------------------------------------##
-# Determine what clang executable to use.
-my $Clang = $ENV{'CLANG'};
-if (!defined $Clang) { $Clang = 'clang'; }
-
sub GetCCArgs {
my $Args = shift;
@@ -134,9 +154,6 @@ sub Analyze {
$Args = GetCCArgs($Args);
- # Skip anything related to C++.
- return if ($Lang =~ /c[+][+]/);
-
my $RunAnalyzer = 0;
my $Cmd;
my @CmdArgs;
@@ -361,7 +378,9 @@ my %UniqueOptions = (
my %LangsAccepted = (
"objective-c" => 1,
- "c" => 1
+ "c" => 1,
+ "c++" => 1,
+ "objective-c++" => 1
);
##----------------------------------------------------------------------------##
@@ -377,7 +396,7 @@ my $Output;
my %Uniqued;
# Forward arguments to gcc.
-my $Status = system($CC,@ARGV);
+my $Status = system($Compiler,@ARGV);
if ($Status) { exit($Status >> 8); }
# Get the analysis options.
OpenPOWER on IntegriCloud