Le 21/11/2023 à 23:09, Harald Anlauf a écrit :
Uhh, it happened again.  Attached a wrong patch.
Only looked at the -v3 ...  My bad.

Sorry!

Harald


On 11/21/23 22:54, Harald Anlauf wrote:
Hi Mikael, Steve,

On 11/21/23 12:33, Mikael Morin wrote:
Harald, you mentioned the lack of GFC_STD_F2023_DEL feature group in
your first message, but I don't quite understand why you didn't add one.
  It seems to me the most natural way to do this.

thanks for insisting on this variant.

In my first attack at this problem, I overlooked one place in
libgfortran.h, which I now was able to find and adjust.
Now everything falls into place.

I suggest we emit a warning by default, error with -std=f2023 (I agree
with Steve that we should push towards strict f2023 conformance), and no
diagnostic with -std=gnu or -std=f2018 or lower.

As the majority agrees on this, I accept it.  The attached patch
now does this and fixes the testcases accordingly.

It seems that the solution is to fix the code in the testsuite.

Agreed, these seem to explicitly test mismatching kinds, so add an
option to prevent error.

Done.

I also fixed a few issues in the documentation in gfortran.texi .

As I currently cannot build a full compiler (see PR112643),
patch V3 is not properly regtested yet, but appears to give
results as discussed.

Comments?

Mikael

Thanks,
Harald



(...)

diff --git a/gcc/fortran/error.cc b/gcc/fortran/error.cc
index 2ac51e95e4d..be715b50469 100644
--- a/gcc/fortran/error.cc
+++ b/gcc/fortran/error.cc
@@ -980,7 +980,11 @@ char const*
 notify_std_msg(int std)
 {
- if (std & GFC_STD_F2018_DEL)
+  if (std & GFC_STD_F2023_DEL)
+    return _("Fortran 2023 deleted feature:");

As there are officially no deleted feature in f2023, maybe use a slightly different wording? Say "Not allowed in fortran 2023" or "forbidden in Fortran 2023" or similar?

+  else if (std & GFC_STD_F2023)
+    return _("Fortran 2023:");
+  else if (std & GFC_STD_F2018_DEL)
     return _("Fortran 2018 deleted feature:");
   else if (std & GFC_STD_F2018_OBS)
     return _("Fortran 2018 obsolescent feature:");

diff --git a/gcc/fortran/libgfortran.h b/gcc/fortran/libgfortran.h
index bdddb317ab0..af7a170c2b1 100644
--- a/gcc/fortran/libgfortran.h
+++ b/gcc/fortran/libgfortran.h
@@ -19,9 +19,10 @@ along with GCC; see the file COPYING3.  If not see
/* Flags to specify which standard/extension contains a feature.
-   Note that no features were obsoleted nor deleted in F2003 nor in F2023.
+   Note that no features were obsoleted nor deleted in F2003.

I think we can add a comment that F2023 has no deleted feature, but some more stringent restrictions in f2023 forbid some previously valid code.

    Please remember to keep those definitions in sync with
    gfortran.texi.  */
+#define GFC_STD_F2023_DEL      (1<<13)   /* Deleted in F2023.  */
 #define GFC_STD_F2023          (1<<12)   /* New in F2023.  */
 #define GFC_STD_F2018_DEL      (1<<11)   /* Deleted in F2018.  */
 #define GFC_STD_F2018_OBS      (1<<10)   /* Obsolescent in F2018.  */
@@ -41,12 +42,13 @@ along with GCC; see the file COPYING3.  If not see
  * are allowed with a certain -std option.  */
 #define GFC_STD_OPT_F95                (GFC_STD_F77 | GFC_STD_F95 | 
GFC_STD_F95_OBS  \
                                | GFC_STD_F2008_OBS | GFC_STD_F2018_OBS \
-                               | GFC_STD_F2018_DEL)
+                               | GFC_STD_F2018_DEL | GFC_STD_F2023_DEL)
 #define GFC_STD_OPT_F03                (GFC_STD_OPT_F95 | GFC_STD_F2003)
 #define GFC_STD_OPT_F08                (GFC_STD_OPT_F03 | GFC_STD_F2008)
 #define GFC_STD_OPT_F18                ((GFC_STD_OPT_F08 | GFC_STD_F2018) \
                                & (~GFC_STD_F2018_DEL))
F03, F08 and F18 should have GFC_STD_F2023_DEL (and also F03 and F08 should have GFC_STD_F2018_DEL).

OK with this fixed (and the previous comments as you wish), if Steve has no more comments.

Thanks for the patch.

Reply via email to