The attached patch has been tested on x86_64-*-freebsd.  OK to commit?

2019-09-24  Steven G. Kargl  <ka...@gcc.ngu.org>

        PR fortran/91802
        * decl.c (attr_decl1): Check if rank+corank > 15.

2019-09-24  Steven G. Kargl  <ka...@gcc.ngu.org>

        PR fortran/91802
        * gfortran.dg/pr91802.f90: New test.
-- 
Steve
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

Reply via email to