Fortran: ICE in transformational_result [PR108529]
authorHarald Anlauf <anlauf@gmx.de>
Tue, 24 Jan 2023 20:39:43 +0000 (21:39 +0100)
committerHarald Anlauf <anlauf@gmx.de>
Tue, 24 Jan 2023 20:39:43 +0000 (21:39 +0100)
gcc/fortran/ChangeLog:

PR fortran/108529
* simplify.cc (simplify_transformation): Do not try to simplify
transformational intrinsic when the ARRAY argument has a NULL shape.

gcc/testsuite/ChangeLog:

PR fortran/108529
* gfortran.dg/pr108529.f90: New test.

gcc/fortran/simplify.cc
gcc/testsuite/gfortran.dg/pr108529.f90 [new file with mode: 0644]

index f413f13..20ea38e 100644 (file)
@@ -720,6 +720,7 @@ simplify_transformation (gfc_expr *array, gfc_expr *dim, gfc_expr *mask,
   size_zero = gfc_is_size_zero_array (array);
 
   if (!(is_constant_array_expr (array) || size_zero)
+      || array->shape == NULL
       || !gfc_is_constant_expr (dim))
     return NULL;
 
diff --git a/gcc/testsuite/gfortran.dg/pr108529.f90 b/gcc/testsuite/gfortran.dg/pr108529.f90
new file mode 100644 (file)
index 0000000..34c9691
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! PR fortran/108529 - ICE in transformational_result
+! Contributed by G.Steinmetz
+
+program p
+  integer, parameter :: a(*,*) = reshape([1, 2, 3, 4], [2, 2])
+  logical, parameter :: b(2,*) = a > 2     ! { dg-error "Assumed size" }
+  logical, parameter :: c(*)   = all(b, 1) ! { dg-error "Bad shape" }
+end