From 0bef67225a467db3caa8772c8f3cba965c1c5318 Mon Sep 17 00:00:00 2001 From: Peter Steinfeld Date: Wed, 5 Jun 2019 14:34:25 -0700 Subject: [PATCH] [flang] Added the machinery for REAL DO controls to be treated as a separate extension. Original-commit: flang-compiler/f18@1907cf867277df34925bfab53f2060c303774ce3 Reviewed-on: https://github.com/flang-compiler/f18/pull/478 Tree-same-pre-rewrite: false --- flang/lib/parser/features.h | 3 ++- flang/lib/semantics/check-do-stmt.cc | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/flang/lib/parser/features.h b/flang/lib/parser/features.h index 520faf5..44b358f 100644 --- a/flang/lib/parser/features.h +++ b/flang/lib/parser/features.h @@ -30,7 +30,8 @@ ENUM_CLASS(LanguageFeature, BackslashEscapes, OldDebugLines, Convert, Dispose, IOListLeadingComma, AbbreviatedEditDescriptor, ProgramParentheses, PercentRefAndVal, OmitFunctionDummies, CrayPointer, Hollerith, ArithmeticIF, Assign, AssignedGOTO, Pause, OpenMP, - CruftAfterAmpersand, ClassicCComments, AdditionalFormats, BigIntLiterals) + CruftAfterAmpersand, ClassicCComments, AdditionalFormats, BigIntLiterals, + RealDoControls) using LanguageFeatures = common::EnumSet; diff --git a/flang/lib/semantics/check-do-stmt.cc b/flang/lib/semantics/check-do-stmt.cc index d1111e7..dbd59d6 100644 --- a/flang/lib/semantics/check-do-stmt.cc +++ b/flang/lib/semantics/check-do-stmt.cc @@ -398,10 +398,12 @@ private: } void CheckDoControl(parser::CharBlock sourceLocation, bool isReal) { - if ((isReal) && (!context_.warnOnNonstandardUsage())) { + bool warn = context_.warnOnNonstandardUsage() || + context_.ShouldWarn(parser::LanguageFeature::RealDoControls); + bool enabled = context_.IsEnabled(parser::LanguageFeature::RealDoControls); + if (isReal && enabled && !(warn)) { // No messages for the default case - } else if (isReal && context_.warnOnNonstandardUsage() && - (!context_.warningsAreErrors())) { + } else if (isReal && enabled && warn && !context_.warningsAreErrors()) { context_.Say(sourceLocation, "DO controls should be INTEGER"_en_US); } else { context_.Say(sourceLocation, "DO controls should be INTEGER"_err_en_US); -- 2.7.4