diff --git a/clang/test/Analysis/scan-build/cxx-name.test b/clang/test/Analysis/scan-build/cxx-name.test new file mode 100644 --- /dev/null +++ b/clang/test/Analysis/scan-build/cxx-name.test @@ -0,0 +1,9 @@ +REQUIRES: shell + +RUN: %scan-build sh -c 'echo "CLANG_CXX=/$(basename "$CLANG_CXX")/"' | FileCheck %s + +Check that scan-build sets the CLANG_CXX environment variable (meant to be +consumed by ccc-analyzer) to an appropriate pathname for the clang++ executable, +derived from the pathname of the clang executable: + +CHECK: CLANG_CXX=/clang++{{(\.exe)?}}/ diff --git a/clang/test/Analysis/scan-build/lit.local.cfg b/clang/test/Analysis/scan-build/lit.local.cfg --- a/clang/test/Analysis/scan-build/lit.local.cfg +++ b/clang/test/Analysis/scan-build/lit.local.cfg @@ -15,4 +15,4 @@ 'tools', 'scan-build', 'bin')), - config.clang))) + os.path.realpath(config.clang)))) diff --git a/clang/tools/scan-build/bin/scan-build b/clang/tools/scan-build/bin/scan-build --- a/clang/tools/scan-build/bin/scan-build +++ b/clang/tools/scan-build/bin/scan-build @@ -1925,7 +1925,7 @@ $ClangCXX =~ s/.exe$/++.exe/; } else { - $ClangCXX =~ s/\-\d+\.\d+$//; + $ClangCXX =~ s/\-\d+(\.\d+)?$//; $ClangCXX .= "++"; } }