diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2019-09-21 00:17:26 +0000 |
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2019-09-21 00:17:26 +0000 |
| commit | 172e8a7a5de1c5aa110272da5483138e9aabc204 (patch) | |
| tree | 2e55a48862e13f25df4af26a4ab079b5ef411f0e | |
| parent | 7ac1039957f9aebcdf3ccf36cdd11067eb42b832 (diff) | |
| download | bcm5719-llvm-172e8a7a5de1c5aa110272da5483138e9aabc204.tar.gz bcm5719-llvm-172e8a7a5de1c5aa110272da5483138e9aabc204.zip | |
[clang-scan-deps] strip the --serialize-diagnostics argument
This ensures that clang-scan-deps won't write out diagnostics when
scanning dependencies.
llvm-svn: 372444
| -rw-r--r-- | clang/include/clang/Tooling/ArgumentsAdjusters.h | 4 | ||||
| -rw-r--r-- | clang/lib/Tooling/ArgumentsAdjusters.cpp | 16 | ||||
| -rw-r--r-- | clang/test/ClangScanDeps/Inputs/strip_diag_serialize.json | 7 | ||||
| -rw-r--r-- | clang/test/ClangScanDeps/strip_diag_serialize.cpp | 11 | ||||
| -rw-r--r-- | clang/tools/clang-scan-deps/ClangScanDeps.cpp | 2 |
5 files changed, 40 insertions, 0 deletions
diff --git a/clang/include/clang/Tooling/ArgumentsAdjusters.h b/clang/include/clang/Tooling/ArgumentsAdjusters.h index bf088603432..c48a8725aae 100644 --- a/clang/include/clang/Tooling/ArgumentsAdjusters.h +++ b/clang/include/clang/Tooling/ArgumentsAdjusters.h @@ -43,6 +43,10 @@ ArgumentsAdjuster getClangSyntaxOnlyAdjuster(); /// arguments. ArgumentsAdjuster getClangStripOutputAdjuster(); +/// Gets an argument adjuster which removes command line arguments related to +/// diagnostic serialization. +ArgumentsAdjuster getClangStripSerializeDiagnosticAdjuster(); + /// Gets an argument adjuster which removes dependency-file /// related command line arguments. ArgumentsAdjuster getClangStripDependencyFileAdjuster(); diff --git a/clang/lib/Tooling/ArgumentsAdjusters.cpp b/clang/lib/Tooling/ArgumentsAdjusters.cpp index 942b35df453..f56d08c47b9 100644 --- a/clang/lib/Tooling/ArgumentsAdjusters.cpp +++ b/clang/lib/Tooling/ArgumentsAdjusters.cpp @@ -57,6 +57,22 @@ ArgumentsAdjuster getClangStripOutputAdjuster() { }; } +ArgumentsAdjuster getClangStripSerializeDiagnosticAdjuster() { + return [](const CommandLineArguments &Args, StringRef /*unused*/) { + CommandLineArguments AdjustedArgs; + for (size_t i = 0, e = Args.size(); i < e; ++i) { + StringRef Arg = Args[i]; + if (Arg == "--serialize-diagnostics") { + // Skip the diagnostic output argument. + ++i; + continue; + } + AdjustedArgs.push_back(Args[i]); + } + return AdjustedArgs; + }; +} + ArgumentsAdjuster getClangStripDependencyFileAdjuster() { return [](const CommandLineArguments &Args, StringRef /*unused*/) { CommandLineArguments AdjustedArgs; diff --git a/clang/test/ClangScanDeps/Inputs/strip_diag_serialize.json b/clang/test/ClangScanDeps/Inputs/strip_diag_serialize.json new file mode 100644 index 00000000000..a774d95a3b0 --- /dev/null +++ b/clang/test/ClangScanDeps/Inputs/strip_diag_serialize.json @@ -0,0 +1,7 @@ +[ +{ + "directory": "DIR", + "command": "clang -E -fsyntax-only DIR/strip_diag_serialize_input.cpp --serialize-diagnostics /does/not/exist", + "file": "DIR/strip_diag_serialize_input.cpp" +} +] diff --git a/clang/test/ClangScanDeps/strip_diag_serialize.cpp b/clang/test/ClangScanDeps/strip_diag_serialize.cpp new file mode 100644 index 00000000000..ec62e751348 --- /dev/null +++ b/clang/test/ClangScanDeps/strip_diag_serialize.cpp @@ -0,0 +1,11 @@ +// RUN: rm -rf %t.dir +// RUN: rm -rf %t.cdb +// RUN: mkdir -p %t.dir +// RUN: cp %s %t.dir/strip_diag_serialize_input.cpp +// RUN: sed -e "s|DIR|%/t.dir|g" %S/Inputs/strip_diag_serialize.json > %t.cdb +// +// RUN: clang-scan-deps -compilation-database %t.cdb 2>&1 | FileCheck %s +// CHECK-NOT: unable to open file +// CHECK: strip_diag_serialize_input.cpp + +#warning "diagnostic" diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp b/clang/tools/clang-scan-deps/ClangScanDeps.cpp index ebb42c03463..d44e3b9ff35 100644 --- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp +++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp @@ -266,6 +266,8 @@ int main(int argc, const char **argv) { AdjustedArgs.push_back("-Wno-error"); return AdjustedArgs; }); + AdjustingCompilations->appendArgumentsAdjuster( + tooling::getClangStripSerializeDiagnosticAdjuster()); SharedStream Errs(llvm::errs()); // Print out the dependency results to STDOUT by default. |

