aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2024-08-30 21:15:43 +0200
committerHarald Anlauf <anlauf@gmx.de>2024-08-31 16:23:38 +0200
commit79b5b50402454dd1c217c8e2e21ce85aa35e4f1b (patch)
tree2fa36c040d7fa914031883c98bfc0ba61cc74d15
parentafd9558b94eb78ef3e9a8818f2d57f9311e99b4f (diff)
downloadgcc-79b5b50402454dd1c217c8e2e21ce85aa35e4f1b.zip
gcc-79b5b50402454dd1c217c8e2e21ce85aa35e4f1b.tar.gz
gcc-79b5b50402454dd1c217c8e2e21ce85aa35e4f1b.tar.bz2
Fortran: downgrade use associated namelist group name to legacy extension
The Fortran standard disallows use associated names as namelist group name (e.g. F2003:C581, but also later standards). This feature is a gfortran legacy extension, and we should give a warning even for -std=gnu. gcc/fortran/ChangeLog: * match.cc (gfc_match_namelist): Downgrade feature from GNU to legacy extension. gcc/testsuite/ChangeLog: * gfortran.dg/pr88169_3.f90: Adjust pattern.
-rw-r--r--gcc/fortran/match.cc4
-rw-r--r--gcc/testsuite/gfortran.dg/pr88169_3.f903
2 files changed, 4 insertions, 3 deletions
diff --git a/gcc/fortran/match.cc b/gcc/fortran/match.cc
index d30a98f..53c54c1 100644
--- a/gcc/fortran/match.cc
+++ b/gcc/fortran/match.cc
@@ -5603,9 +5603,11 @@ gfc_match_namelist (void)
return MATCH_ERROR;
}
+ /* A use associated name shall not be used as a namelist group name
+ (e.g. F2003:C581). It is only supported as a legacy extension. */
if (group_name->attr.flavor == FL_NAMELIST
&& group_name->attr.use_assoc
- && !gfc_notify_std (GFC_STD_GNU, "Namelist group name %qs "
+ && !gfc_notify_std (GFC_STD_LEGACY, "Namelist group name %qs "
"at %C already is USE associated and can"
"not be respecified.", group_name->name))
return MATCH_ERROR;
diff --git a/gcc/testsuite/gfortran.dg/pr88169_3.f90 b/gcc/testsuite/gfortran.dg/pr88169_3.f90
index 6bc24ed..49ef430 100644
--- a/gcc/testsuite/gfortran.dg/pr88169_3.f90
+++ b/gcc/testsuite/gfortran.dg/pr88169_3.f90
@@ -10,6 +10,5 @@ program main
use foo_nml, only: bar => foo, x
implicit none
real a
- namelist /bar/a ! { dg-error "already is USE associated" }
+ namelist /bar/a ! { dg-error "Legacy Extension: .* already is USE associated" }
end program
-! { dg-final { cleanup-modules "foo_nml" } }