diff options
author | Artem Dergachev <artem.dergachev@gmail.com> | 2018-12-21 01:11:21 +0000 |
---|---|---|
committer | Artem Dergachev <artem.dergachev@gmail.com> | 2018-12-21 01:11:21 +0000 |
commit | 0ec95c8651da9dd9f4b4d238c5af5b511b4c2652 (patch) | |
tree | d1eeefa3909849ce8c4906ee42a5fc37301667be /clang/lib/Driver | |
parent | 5255094b3e7947f8fe324e39b4d7563c56d645f2 (diff) | |
download | bcm5719-llvm-0ec95c8651da9dd9f4b4d238c5af5b511b4c2652.tar.gz bcm5719-llvm-0ec95c8651da9dd9f4b4d238c5af5b511b4c2652.zip |
[driver] [analyzer] Fix --analyze -Xanalyzer after r349863.
If an -analyzer-config is passed through -Xanalyzer, it is not found while
looking for -Xclang.
Additionally, don't emit -analyzer-config-compatibility-mode for *every*
-analyzer-config flag we encounter; one is enough.
https://reviews.llvm.org/D55823
rdar://problem/46504165
llvm-svn: 349866
Diffstat (limited to 'clang/lib/Driver')
-rw-r--r-- | clang/lib/Driver/ToolChains/Clang.cpp | 15 |
1 files changed, 13 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); |