]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/90002 (ICE: free_expr0(): Bad expr type)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 21 Jun 2019 00:38:13 +0000 (00:38 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Fri, 21 Jun 2019 00:38:13 +0000 (00:38 +0000)
2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from mainline
PR fortran/90002
* array.c (gfc_free_array_spec): When freeing an array-spec, avoid
an ICE for assumed-shape coarrays

2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>

Backport from mainline
PR fortran/90002
* gfortran.dg/pr90002.f90: New test.

From-SVN: r272540

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

index c5a86631a12dc425904fab0b7d1335c2b08ac016..8fad5e8afb150b8294f45e56c31e7e53eb169358 100644 (file)
@@ -1,3 +1,10 @@
+2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from mainline
+       PR fortran/90002
+       * array.c (gfc_free_array_spec): When freeing an array-spec, avoid
+       an ICE for assumed-shape coarrays 
+
 2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from mainline
index 96732ecd2e81445ea08a15da06df99f1e178e61a..0aee220e68d071b8a1e4dec55d2260860d7cc18a 100644 (file)
@@ -324,10 +324,22 @@ gfc_free_array_spec (gfc_array_spec *as)
   if (as == NULL)
     return;
 
-  for (i = 0; i < as->rank + as->corank; i++)
+  if (as->corank == 0)
     {
-      gfc_free_expr (as->lower[i]);
-      gfc_free_expr (as->upper[i]);
+      for (i = 0; i < as->rank; i++)
+       {
+         gfc_free_expr (as->lower[i]);
+         gfc_free_expr (as->upper[i]);
+       }
+    }
+  else
+    {
+      int n = as->rank + as->corank - (as->cotype == AS_EXPLICIT ? 1 : 0);
+      for (i = 0; i < n; i++)
+       {
+         gfc_free_expr (as->lower[i]);
+         gfc_free_expr (as->upper[i]);
+       }
     }
 
   free (as);
index f5466c0d3d3adce9ec7fa383c3720cdd07d63239..fd0afe0828eb8ce00c4275f59b926b971f642ebd 100644 (file)
@@ -1,3 +1,9 @@
+2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
+
+       Backport from mainline
+       PR fortran/90002
+       * gfortran.dg/pr90002.f90: New test.
+
 2019-06-20  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        Backport from mainline
diff --git a/gcc/testsuite/gfortran.dg/pr90002.f90 b/gcc/testsuite/gfortran.dg/pr90002.f90
new file mode 100644 (file)
index 0000000..cb993a5
--- /dev/null
@@ -0,0 +1,6 @@
+! { dg-do compile }
+! { dg-options "-fcoarray=single" }
+! Contributed by Arseny Solokha <asolokha at gmx dot de>
+module pc
+  integer, dimension(1) :: zw[1:1,1:*]
+end module pc