diff options
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 15 | ||||
-rw-r--r-- | clang/test/Analysis/invalid-a-na-ly-zer-con-fig-value.c | 4 | ||||
-rw-r--r-- | clang/test/Analysis/invalid-analyzer-config-value.c | 4 |
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 |