summaryrefslogtreecommitdiff
path: root/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--lib/Frontend/CompilerInvocation.cpp51
1 files changed, 27 insertions, 24 deletions
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp
index c45b751713..0e222b95dd 100644
--- a/lib/Frontend/CompilerInvocation.cpp
+++ b/lib/Frontend/CompilerInvocation.cpp
@@ -464,22 +464,6 @@ static void parseAnalyzerConfigs(AnalyzerOptions &AnOpts,
// At this point, AnalyzerOptions is configured. Let's validate some options.
- if (!Diags)
- return;
-
- if (AnOpts.ShouldTrackConditionsDebug && !AnOpts.ShouldTrackConditions)
- Diags->Report(diag::err_analyzer_config_invalid_input)
- << "track-conditions-debug" << "'track-conditions' to also be enabled";
-
- if (!AnOpts.CTUDir.empty() && !llvm::sys::fs::is_directory(AnOpts.CTUDir))
- Diags->Report(diag::err_analyzer_config_invalid_input) << "ctu-dir"
- << "a filename";
-
- if (!AnOpts.ModelPath.empty() &&
- !llvm::sys::fs::is_directory(AnOpts.ModelPath))
- Diags->Report(diag::err_analyzer_config_invalid_input) << "model-path"
- << "a filename";
-
// FIXME: Here we try to validate the silenced checkers or packages are valid.
// The current approach only validates the registered checkers which does not
// contain the runtime enabled checkers and optimally we would validate both.
@@ -493,18 +477,37 @@ static void parseAnalyzerConfigs(AnalyzerOptions &AnOpts,
AnOpts.RawSilencedCheckersAndPackages.split(CheckersAndPackages, ";");
for (const StringRef CheckerOrPackage : CheckersAndPackages) {
- bool IsChecker = CheckerOrPackage.contains('.');
- bool IsValidName =
- IsChecker ? llvm::find(Checkers, CheckerOrPackage) != Checkers.end()
- : llvm::find(Packages, CheckerOrPackage) != Packages.end();
-
- if (!IsValidName)
- Diags->Report(diag::err_unknown_analyzer_checker_or_package)
- << CheckerOrPackage;
+ if (Diags) {
+ bool IsChecker = CheckerOrPackage.contains('.');
+ bool IsValidName =
+ IsChecker
+ ? llvm::find(Checkers, CheckerOrPackage) != Checkers.end()
+ : llvm::find(Packages, CheckerOrPackage) != Packages.end();
+
+ if (!IsValidName)
+ Diags->Report(diag::err_unknown_analyzer_checker_or_package)
+ << CheckerOrPackage;
+ }
AnOpts.SilencedCheckersAndPackages.emplace_back(CheckerOrPackage);
}
}
+
+ if (!Diags)
+ return;
+
+ if (AnOpts.ShouldTrackConditionsDebug && !AnOpts.ShouldTrackConditions)
+ Diags->Report(diag::err_analyzer_config_invalid_input)
+ << "track-conditions-debug" << "'track-conditions' to also be enabled";
+
+ if (!AnOpts.CTUDir.empty() && !llvm::sys::fs::is_directory(AnOpts.CTUDir))
+ Diags->Report(diag::err_analyzer_config_invalid_input) << "ctu-dir"
+ << "a filename";
+
+ if (!AnOpts.ModelPath.empty() &&
+ !llvm::sys::fs::is_directory(AnOpts.ModelPath))
+ Diags->Report(diag::err_analyzer_config_invalid_input) << "model-path"
+ << "a filename";
}
static bool ParseMigratorArgs(MigratorOptions &Opts, ArgList &Args) {