aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Ridge <zeratul976@hotmail.com>2020-10-04 01:07:20 -0400
committerNathan Ridge <zeratul976@hotmail.com>2020-10-27 01:46:32 -0400
commit2756e2ee0bceaf532d4990cbb4f2a84fe62b6b84 (patch)
tree773e42ec994f870425199bd52307f72f0ce49b4c
parentb69919b537fffcc5b6aaa6d78e2c039725a81f5b (diff)
downloadllvm-2756e2ee0bceaf532d4990cbb4f2a84fe62b6b84.zip
llvm-2756e2ee0bceaf532d4990cbb4f2a84fe62b6b84.tar.gz
llvm-2756e2ee0bceaf532d4990cbb4f2a84fe62b6b84.tar.bz2
[libTooling] Recognize sccache as a compiler wrapper in compilation database commands
sccache is a compiler caching tool similar to ccache. Differential Revision: https://reviews.llvm.org/D88790
-rw-r--r--clang/lib/Tooling/JSONCompilationDatabase.cpp3
-rw-r--r--clang/unittests/Tooling/CompilationDatabaseTest.cpp1
2 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Tooling/JSONCompilationDatabase.cpp b/clang/lib/Tooling/JSONCompilationDatabase.cpp
index 67a42d3..4aa1685 100644
--- a/clang/lib/Tooling/JSONCompilationDatabase.cpp
+++ b/clang/lib/Tooling/JSONCompilationDatabase.cpp
@@ -272,7 +272,8 @@ static bool unwrapCommand(std::vector<std::string> &Args) {
return false;
StringRef Wrapper =
stripExecutableExtension(llvm::sys::path::filename(Args.front()));
- if (Wrapper == "distcc" || Wrapper == "gomacc" || Wrapper == "ccache") {
+ if (Wrapper == "distcc" || Wrapper == "gomacc" || Wrapper == "ccache" ||
+ Wrapper == "sccache") {
// Most of these wrappers support being invoked 3 ways:
// `distcc g++ file.c` This is the mode we're trying to match.
// We need to drop `distcc`.
diff --git a/clang/unittests/Tooling/CompilationDatabaseTest.cpp b/clang/unittests/Tooling/CompilationDatabaseTest.cpp
index 3bfb0ec..9e23428 100644
--- a/clang/unittests/Tooling/CompilationDatabaseTest.cpp
+++ b/clang/unittests/Tooling/CompilationDatabaseTest.cpp
@@ -383,6 +383,7 @@ TEST(findCompileArgsInJsonDatabase, ParsesCompilerWrappers) {
std::vector<std::pair<std::string, std::string>> Cases = {
{"distcc gcc foo.c", "gcc foo.c"},
{"gomacc clang++ foo.c", "clang++ foo.c"},
+ {"sccache clang++ foo.c", "clang++ foo.c"},
{"ccache gcc foo.c", "gcc foo.c"},
{"ccache.exe gcc foo.c", "gcc foo.c"},
{"ccache g++.exe foo.c", "g++.exe foo.c"},