diff options
| author | Ted Kremenek <kremenek@apple.com> | 2009-12-15 02:35:54 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2009-12-15 02:35:54 +0000 |
| commit | f65a0c676887d6746236cdb27de680d23988f03d (patch) | |
| tree | 01df6b585c79ede6fd32ee259059cfe4918f34e3 /clang/tools/scan-build/ccc-analyzer | |
| parent | 4ea24f19f529e55773faf0fd231739f78277d083 (diff) | |
| download | bcm5719-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-x | clang/tools/scan-build/ccc-analyzer | 43 |
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. |

