https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91802
kargl at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P4
Status|UNCONFIRMED |NEW
Last reconfirmed| |2019-09-19
CC| |kargl at gcc dot gnu.org
Assignee|unassigned at gcc dot gnu.org |kargl at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from kargl at gcc dot gnu.org ---
Index: gcc/fortran/decl.c
===================================================================
--- gcc/fortran/decl.c (revision 275969)
+++ gcc/fortran/decl.c (working copy)
@@ -8468,6 +8468,15 @@ attr_decl1 (void)
goto cleanup;
}
+ /* Check F2018:C822. */
+ if (sym->attr.dimension && sym->attr.codimension
+ && sym->as && sym->as->rank + sym->as->corank > 15)
+ {
+ gfc_error ("rank + corank of %qs exceeds 15 at %C", sym->name);
+ m = MATCH_ERROR;
+ goto cleanup;
+ }
+
if (sym->attr.cray_pointee && sym->as != NULL)
{
/* Fix the array spec. */
Index: gcc/testsuite/gfortran.dg/pr91802.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr91802.f90 (nonexistent)
+++ gcc/testsuite/gfortran.dg/pr91802.f90 (working copy)
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+! Code contributed by Gerhard Steinmetz
+! PR fortran/91802
+module m
+ real :: x
+ dimension :: x(1,2,1,2,1,2,1,2)
+ codimension :: x[1,2,1,2,1,2,1,*] ! { dg-error "exceeds 15" }
+end