diff options
author | Arnamoy Bhattacharyya <arnamoy.bhattacharyya@huawei.com> | 2021-03-25 13:02:05 -0400 |
---|---|---|
committer | Arnamoy Bhattacharyya <arnamoy10@gmail.com> | 2021-03-25 13:03:16 -0400 |
commit | 4c7ebf79e923072e8d298134e6ca04618fe4eba9 (patch) | |
tree | cc5b9f328bacf38cd32f56b31b9f0b4ce6d03f84 /flang/lib/Frontend/CompilerInvocation.cpp | |
parent | 0b20413ef6717d914a8b8a9ece86d8eae27c221f (diff) | |
download | llvm-4c7ebf79e923072e8d298134e6ca04618fe4eba9.zip llvm-4c7ebf79e923072e8d298134e6ca04618fe4eba9.tar.gz llvm-4c7ebf79e923072e8d298134e6ca04618fe4eba9.tar.bz2 |
[flang][driver] Add options for -std=f2018
Reviewed By: awarzynski
Differential Revision: https://reviews.llvm.org/D97119
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | flang/lib/Frontend/CompilerInvocation.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp index 69c78bd..6d0003e 100644 --- a/flang/lib/Frontend/CompilerInvocation.cpp +++ b/flang/lib/Frontend/CompilerInvocation.cpp @@ -389,6 +389,26 @@ static void parseDialectArgs(CompilerInvocation &res, llvm::opt::ArgList &args, res.frontendOpts().features_.Enable( Fortran::common::LanguageFeature::OpenMP); } + + //-fpedantic + if (args.hasArg(clang::driver::options::OPT_pedantic)) { + res.set_EnableConformanceChecks(); + } + // -std=f2018. Current behaviour is same as -fpedantic + // TODO: Set proper options when more fortran standards + // are supported. + if (args.hasArg(clang::driver::options::OPT_std_EQ)) { + auto standard = args.getLastArgValue(clang::driver::options::OPT_std_EQ); + // We only allow f2018 as the given standard + if (standard.equals("f2018")) { + res.set_EnableConformanceChecks(); + } else { + const unsigned diagID = + diags.getCustomDiagID(clang::DiagnosticsEngine::Error, + "Only -std=f2018 is allowed currently."); + diags.Report(diagID); + } + } return; } @@ -539,6 +559,11 @@ void CompilerInvocation::setFortranOpts() { if (frontendOptions.instrumentedParse_) fortranOptions.instrumentedParse = true; + + // Set the standard + if (enableConformanceChecks()) { + fortranOptions.features.WarnOnAllNonstandard(); + } } void CompilerInvocation::setSemanticsOpts( @@ -549,5 +574,6 @@ void CompilerInvocation::setSemanticsOpts( defaultKinds(), fortranOptions.features, allCookedSources); semanticsContext_->set_moduleDirectory(moduleDir()) - .set_searchDirectories(fortranOptions.searchDirectories); + .set_searchDirectories(fortranOptions.searchDirectories) + .set_warnOnNonstandardUsage(enableConformanceChecks()); } |