summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver
diff options
context:
space:
mode:
authorArtem Dergachev <artem.dergachev@gmail.com>2018-12-21 01:11:21 +0000
committerArtem Dergachev <artem.dergachev@gmail.com>2018-12-21 01:11:21 +0000
commit0ec95c8651da9dd9f4b4d238c5af5b511b4c2652 (patch)
treed1eeefa3909849ce8c4906ee42a5fc37301667be /clang/lib/Driver
parent5255094b3e7947f8fe324e39b4d7563c56d645f2 (diff)
downloadbcm5719-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.cpp15
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);
OpenPOWER on IntegriCloud