[PATCH] D123113: [Flang] Add `INTENT` for non-dummy arguments extension

Emil Kieri via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 5 13:02:04 PDT 2022


ekieri added reviewers: klausler, PeteSteinfeld.
ekieri added a comment.
Herald added a reviewer: awarzynski.

Hi! Thanks for this patch, and for your interest in contributing to Flang!

I will leave it to somebody more experienced to accept the patch -- I am not familiar with this extension, and am not aware on what grounds we decide which extensions to support. I hope that my suggestions and questions can be useful anyway.

We keep a list of supported extensions in

  flang/docs/Extensions.md

Please add this extension there. And please also explain its behaviour a bit.

I wonder about the behaviour. Is INTENT for non-dummies allowed-but-ignored, or does it change the semantics? For example, is an INTENT(IN) variable supposed to be read-only? And what about combining SAVE, INTENT(OUT)? Or PARAMETER, INTENT(INOUT)?

I would also appreciate tests for this behaviour, e.g., a check that modifying an INTENT(IN) non-dummy is allowed or disallowed, as desired.



================
Comment at: clang/include/clang/Driver/Options.td:4734-4735
 
+def fnon_arg_intent : Flag<["-"],"fnon-arg-intent">, Group<f_Group>,
+  HelpText<"Allow use of INTENT attribute not for dummy arguments">;
+
----------------
Feel free to use my suggestion literally or to work out something better, whichever you prefer.


================
Comment at: flang/lib/Frontend/CompilerInvocation.cpp:536
 
+  // -fnv-non-arg-intent
+  if (args.hasArg(clang::driver::options::OPT_fnon_arg_intent)) {
----------------



================
Comment at: flang/lib/Semantics/check-declarations.cpp:536
       symbol.attrs().test(Attr::INTENT_INOUT)) {
-    messages_.Say("INTENT attributes may apply only to a dummy "
-                  "argument"_err_en_US); // C843
+    if (!context_.languageFeatures().IsEnabled(
+            Fortran::common::LanguageFeature::NonDummyArgumentIntent))
----------------
Please check for the feature-enablement together with the INTENT attributes above. Like this, the check for OPTIONAL below might get lost.


================
Comment at: flang/lib/Semantics/check-declarations.cpp:771
       symbol.attrs().test(Attr::INTENT_INOUT)) {
-    messages_.Say("INTENT attributes may apply only to a dummy "
-                  "argument"_err_en_US); // C843
+    if (!context_.languageFeatures().IsEnabled(
+            Fortran::common::LanguageFeature::NonDummyArgumentIntent))
----------------
Same as above.


================
Comment at: flang/test/Driver/driver-help-hidden.f90:45
 ! CHECK-NEXT: -fno-color-diagnostics  Disable colors in diagnostics
+! CHECK-NEXT: -fnon-arg-intent     Allow use of INTENT attribute not for dummy arguments
 ! CHECK-NEXT: -fopenacc              Enable OpenACC
----------------
Update description as per above.


================
Comment at: flang/test/Driver/driver-help.f90:45
 ! HELP-NEXT: -fno-color-diagnostics  Disable colors in diagnostics
+! HELP-NEXT: -fnon-arg-intent     Allow use of INTENT attribute not for dummy arguments
 ! HELP-NEXT: -fopenacc              Enable OpenACC
----------------
Update description as per above.


================
Comment at: flang/test/Driver/driver-help.f90:119
 ! HELP-FC1-NEXT: -fno-reformat          Dump the cooked character stream in -E mode
+! HELP-FC1-NEXT: -fnon-arg-intent       Allow use of INTENT attribute not for dummy arguments
 ! HELP-FC1-NEXT: -fopenacc              Enable OpenACC
----------------
Update description as per above.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D123113/new/

https://reviews.llvm.org/D123113



More information about the cfe-commits mailing list