summaryrefslogtreecommitdiff
path: root/clang/lib/Tooling/ArgumentsAdjusters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Tooling/ArgumentsAdjusters.cpp')
-rw-r--r--clang/lib/Tooling/ArgumentsAdjusters.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/clang/lib/Tooling/ArgumentsAdjusters.cpp b/clang/lib/Tooling/ArgumentsAdjusters.cpp
index a609e4ed2469..a857b57fbf7b 100644
--- a/clang/lib/Tooling/ArgumentsAdjusters.cpp
+++ b/clang/lib/Tooling/ArgumentsAdjusters.cpp
@@ -26,7 +26,7 @@ ArgumentsAdjuster getClangSyntaxOnlyAdjuster() {
return [](const CommandLineArguments &Args, StringRef /*unused*/) {
CommandLineArguments AdjustedArgs;
bool HasSyntaxOnly = false;
- const std::vector<llvm::StringRef> OutputCommands = {
+ constexpr llvm::StringRef OutputCommands[] = {
// FIXME: Add other options that generate output.
"-save-temps",
"--save-temps",
@@ -42,6 +42,12 @@ ArgumentsAdjuster getClangSyntaxOnlyAdjuster() {
if (!Arg.startswith("-fcolor-diagnostics") &&
!Arg.startswith("-fdiagnostics-color"))
AdjustedArgs.push_back(Args[i]);
+ // If we strip a color option, make sure we strip any preceeding `-Xclang`
+ // option as well.
+ // FIXME: This should be added to most argument adjusters!
+ else if (!AdjustedArgs.empty() && AdjustedArgs.back() == "-Xclang")
+ AdjustedArgs.pop_back();
+
if (Arg == "-fsyntax-only")
HasSyntaxOnly = true;
}
@@ -92,7 +98,8 @@ ArgumentsAdjuster getClangStripDependencyFileAdjuster() {
StringRef Arg = Args[i];
// All dependency-file options begin with -M. These include -MM,
// -MF, -MG, -MP, -MT, -MQ, -MD, and -MMD.
- if (!Arg.startswith("-M")) {
+ if (!Arg.startswith("-M") && !Arg.startswith("/showIncludes") &&
+ !Arg.startswith("-showIncludes")) {
AdjustedArgs.push_back(Args[i]);
continue;
}