]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/91802 (ICE in mio_name_expr_t, at fortran/module.c:2141)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Tue, 1 Oct 2019 18:58:01 +0000 (18:58 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Tue, 1 Oct 2019 18:58:01 +0000 (18:58 +0000)
2019-10-01  Steven G. Kargl  <kargl@gcc.ngu.org>

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

2019-10-01  Steven G. Kargl  <kargl@gcc.ngu.org>

PR fortran/91802
* gfortran.dg/pr91802.f90: New test.

From-SVN: r276423

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pr91802.f90 [new file with mode: 0644]

index 6d550ef9a36220b8f64cda4cac805dcdb698a691..691bca48e151de6b328939bb9d309e0046e20870 100644 (file)
@@ -1,3 +1,9 @@
+2019-10-01  Steven G. Kargl  <kargl@gcc.ngu.org>
+
+       Backport of r276254+276265
+       PR fortran/91802
+       * decl.c (attr_decl1): Check if rank+corank > 15.
+
 2019-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91714
index 30470911eedaf9d9265f93b72abb0be52df3cc20..b497b760bbad9621b53653f46bcb02dc79395bd0 100644 (file)
@@ -8444,6 +8444,14 @@ 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);
+      return MATCH_ERROR;
+    }
+
   if (sym->attr.cray_pointee && sym->as != NULL)
     {
       /* Fix the array spec.  */
index 106dbb078f837d6795a30603690c2073b25a99e9..949fa2f10c53b91b25fcf763d61b38e37a923bd2 100644 (file)
@@ -1,3 +1,8 @@
+2019-10-01  Steven G. Kargl  <kargl@gcc.ngu.org>
+
+       PR fortran/91802
+       * gfortran.dg/pr91802.f90: New test.
+
 2019-10-01  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91714
diff --git a/gcc/testsuite/gfortran.dg/pr91802.f90 b/gcc/testsuite/gfortran.dg/pr91802.f90
new file mode 100644 (file)
index 0000000..277d61a
--- /dev/null
@@ -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