aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--flang/lib/Frontend/CompilerInvocation.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/flang/lib/Frontend/CompilerInvocation.cpp b/flang/lib/Frontend/CompilerInvocation.cpp
index 724316f..8b07a50 100644
--- a/flang/lib/Frontend/CompilerInvocation.cpp
+++ b/flang/lib/Frontend/CompilerInvocation.cpp
@@ -961,6 +961,32 @@ static bool parseDialectArgs(CompilerInvocation &res, llvm::opt::ArgList &args,
clang::DiagnosticsEngine &diags) {
unsigned numErrorsBefore = diags.getNumErrors();
+ // -fd-lines-as-code
+ if (args.hasArg(clang::driver::options::OPT_fd_lines_as_code)) {
+ if (res.getFrontendOpts().fortranForm == FortranForm::FreeForm) {
+ const unsigned fdLinesAsWarning = diags.getCustomDiagID(
+ clang::DiagnosticsEngine::Warning,
+ "‘-fd-lines-as-code’ has no effect in free form.");
+ diags.Report(fdLinesAsWarning);
+ } else {
+ res.getFrontendOpts().features.Enable(
+ Fortran::common::LanguageFeature::OldDebugLines, true);
+ }
+ }
+
+ // -fd-lines-as-comments
+ if (args.hasArg(clang::driver::options::OPT_fd_lines_as_comments)) {
+ if (res.getFrontendOpts().fortranForm == FortranForm::FreeForm) {
+ const unsigned fdLinesAsWarning = diags.getCustomDiagID(
+ clang::DiagnosticsEngine::Warning,
+ "‘-fd-lines-as-comments’ has no effect in free form.");
+ diags.Report(fdLinesAsWarning);
+ } else {
+ res.getFrontendOpts().features.Enable(
+ Fortran::common::LanguageFeature::OldDebugLines, false);
+ }
+ }
+
// -fdefault* family
if (args.hasArg(clang::driver::options::OPT_fdefault_real_8)) {
res.getDefaultKinds().set_defaultRealKind(8);