summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Driver/ToolChains/Clang.cpp15
-rw-r--r--clang/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c4
-rw-r--r--clang/test/Analysis/invalid-analyzer-config-value.c4
3 files changed, 21 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 87f9e818cc3..ec4fdd2e6d7 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -3738,9 +3738,20 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// Enable compatilibily mode to avoid analyzer-config related errors.
// Since we can't access frontend flags through hasArg, let's manually iterate
// through them.
+ bool FoundAnalyzerConfig = false;
for (auto Arg : Args.filtered(options::OPT_Xclang))
- if (StringRef(Arg->getValue()) == "-analyzer-config")
- CmdArgs.push_back("-analyzer-config-compatibility-mode=true");
+ if (StringRef(Arg->getValue()) == "-analyzer-config") {
+ FoundAnalyzerConfig = true;
+ break;
+ }
+ if (!FoundAnalyzerConfig)
+ for (auto Arg : Args.filtered(options::OPT_Xanalyzer))
+ if (StringRef(Arg->getValue()) == "-analyzer-config") {
+ FoundAnalyzerConfig = true;
+ break;
+ }
+ if (FoundAnalyzerConfig)
+ CmdArgs.push_back("-analyzer-config-compatibility-mode=true");
CheckCodeGenerationOptions(D, Args);
diff --git a/clang/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c b/clang/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c
index 1b6c97ad1ea..ec967d3c47c 100644
--- a/clang/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c
+++ b/clang/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c
@@ -74,6 +74,10 @@
// even if -analyze isn't specified.
// RUN: %clang -fsyntax-only -Xclang -analyzer-config\
// RUN: -Xclang remember=TheVasa %s
+// RUN: %clang -fsyntax-only -Xanalyzer -analyzer-config\
+// RUN: -Xanalyzer remember=TheVasa %s
+// RUN: %clang --analyze -Xanalyzer -analyzer-config\
+// RUN: -Xanalyzer remember=TheVasa %s
// expected-no-diagnostics
diff --git a/clang/test/Analysis/invalid-analyzer-config-value.c b/clang/test/Analysis/invalid-analyzer-config-value.c
index 4ddcfe82072..f942dd3e622 100644
--- a/clang/test/Analysis/invalid-analyzer-config-value.c
+++ b/clang/test/Analysis/invalid-analyzer-config-value.c
@@ -70,6 +70,10 @@
// even if -analyze isn't specified.
// RUN: %clang -fsyntax-only -Xclang -analyzer-config\
// RUN: -Xclang remember=TheVasa %s
+// RUN: %clang -fsyntax-only -Xanalyzer -analyzer-config\
+// RUN: -Xanalyzer remember=TheVasa %s
+// RUN: %clang --analyze -Xanalyzer -analyzer-config\
+// RUN: -Xanalyzer remember=TheVasa %s
// expected-no-diagnostics
OpenPOWER on IntegriCloud