aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorArnamoy Bhattacharyya <arnamoy.bhattacharyya@huawei.com>2021-04-05 12:41:46 -0400
committerArnamoy Bhattacharyya <arnamoy10@gmail.com>2021-04-05 12:47:52 -0400
commit7416e8a8431a0f2711be9d16e111d1781b74df96 (patch)
tree4598f40cb2e27e3b32d73ae2aa38e0aa4a30fcdb /flang/lib/Frontend/CompilerInvocation.cpp
parentaf3a839c70adb97323fa3d122e9ab44522dca74e (diff)
downloadllvm-7416e8a8431a0f2711be9d16e111d1781b74df96.zip
llvm-7416e8a8431a0f2711be9d16e111d1781b74df96.tar.gz
llvm-7416e8a8431a0f2711be9d16e111d1781b74df96.tar.bz2
[flang][driver] Add options for -Werror
With the option given, warnings are treated as error. Reviewed By: awarzynski Differential Revision: https://reviews.llvm.org/D98657
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--flang/lib/Frontend/CompilerInvocation.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 3bd541e..ce7392c 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -350,6 +350,26 @@ static void parseSemaArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
}
}
+/// Parses all diagnostics related arguments and populates the variables
+/// options accordingly.
+static void parseDiagArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
+ clang::DiagnosticsEngine &diags) {
+ // -Werror option
+ // TODO: Currently throws a Diagnostic for anything other than -W<error>,
+ // this has to change when other -W<opt>'s are supported.
+ if (args.hasArg(clang::driver::options::OPT_W_Joined)) {
+ if (args.getLastArgValue(clang::driver::options::OPT_W_Joined)
+ .equals("error")) {
+ res.SetWarnAsErr(true);
+ } else {
+ const unsigned diagID =
+ diags.getCustomDiagID(clang::DiagnosticsEngine::Error,
+ "Only `-Werror` is supported currently.");
+ diags.Report(diagID);
+ }
+ }
+}
+
/// Parses all Dialect related arguments and populates the variables
/// options accordingly.
static void parseDialectArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
@@ -445,6 +465,8 @@ bool CompilerInvocation::CreateFromArgs(CompilerInvocation &res,
parseSemaArgs(res, args, diags);
// Parse dialect arguments
parseDialectArgs(res, args, diags);
+ // Parse diagnostic arguments
+ parseDiagArgs(res, args, diags);
return success;
}
@@ -574,5 +596,6 @@ void CompilerInvocation::setSemanticsOpts(
semanticsContext_->set_moduleDirectory(moduleDir())
.set_searchDirectories(fortranOptions.searchDirectories)
- .set_warnOnNonstandardUsage(enableConformanceChecks());
+ .set_warnOnNonstandardUsage(enableConformanceChecks())
+ .set_warningsAreErrors(warnAsErr());
}