[clang] [clang][scan-build] Treat --use-cc and --use-c++ as shell commands (PR #131932)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 18 15:48:39 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Florian Ragwitz (rafl)
<details>
<summary>Changes</summary>
So that things like --use-cc="ccache gcc" work.
Fixes #<!-- -->26594.
Also use the slightly simpler shellwords instead of quotewords.
Cc-ing the Clang static analyzer maintainers @<!-- -->haoNoQ, @<!-- -->Xazax-hun, and @<!-- -->steakhal.
---
Full diff: https://github.com/llvm/llvm-project/pull/131932.diff
1 Files Affected:
- (modified) clang/tools/scan-build/libexec/ccc-analyzer (+6-5)
``````````diff
diff --git a/clang/tools/scan-build/libexec/ccc-analyzer b/clang/tools/scan-build/libexec/ccc-analyzer
index 74f812aef8fdf..655ded4b102be 100755
--- a/clang/tools/scan-build/libexec/ccc-analyzer
+++ b/clang/tools/scan-build/libexec/ccc-analyzer
@@ -63,6 +63,7 @@ sub SearchInPath {
}
my $Compiler;
+my @CompilerArgs;
my $Clang;
my $DefaultCCompiler;
my $DefaultCXXCompiler;
@@ -89,7 +90,7 @@ if (`uname -s` =~ m/Darwin/) {
}
if ($FindBin::Script =~ /c\+\+-analyzer/) {
- $Compiler = $ENV{'CCC_CXX'};
+ ($Compiler, @CompilerArgs) = shellwords($ENV{'CCC_CXX'});
if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCXXCompiler; }
$Clang = $ENV{'CLANG_CXX'};
@@ -98,7 +99,7 @@ if ($FindBin::Script =~ /c\+\+-analyzer/) {
$IsCXX = 1
}
else {
- $Compiler = $ENV{'CCC_CC'};
+ ($Compiler, @CompilerArgs) = shellwords($ENV{'CCC_CC'});
if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCCompiler; }
$Clang = $ENV{'CLANG'};
@@ -199,7 +200,7 @@ sub GetCCArgs {
die "could not find clang line\n" if (!defined $line);
# Strip leading and trailing whitespace characters.
$line =~ s/^\s+|\s+$//g;
- my @items = quotewords('\s+', 0, $line);
+ my @items = shellwords($line);
my $cmd = shift @items;
die "cannot find 'clang' in 'clang' command\n" if (!($cmd =~ /clang/ || basename($cmd) =~ /llvm/));
# If this is the llvm-driver the internal command will look like "llvm clang ...".
@@ -462,9 +463,9 @@ my $Output;
my %Uniqued;
# Forward arguments to gcc.
-my $Status = system($Compiler, at ARGV);
+my $Status = system($Compiler, at CompilerArgs, at ARGV);
if (defined $ENV{'CCC_ANALYZER_LOG'}) {
- print STDERR "$Compiler @ARGV\n";
+ print STDERR "$Compiler @CompilerArgs @ARGV\n";
}
if ($Status) { exit($Status >> 8); }
``````````
</details>
https://github.com/llvm/llvm-project/pull/131932
More information about the cfe-commits
mailing list