@@ -1684,9 +1684,11 @@ find_array_section (gfc_expr *expr, gfc_ref *ref)
}
cons = gfc_constructor_lookup (base, limit);
- gcc_assert (cons);
- gfc_constructor_append_expr (&expr->value.constructor,
- gfc_copy_expr (cons->expr), NULL);
+ if (cons)
+ gfc_constructor_append_expr (&expr->value.constructor,
+ gfc_copy_expr (cons->expr), NULL);
+ else
+ t = false;
}
mpz_clear (ptr);
new file mode 100644
@@ -0,0 +1,14 @@
+! PR fortran/95372 - ICE in find_array_section, at fortran/expr.c:1687
+
+program p
+ type t
+ integer :: a = 1
+ end type t
+ type(t), parameter :: x(3) = t()
+ type(t) :: u(3) = t()
+ type(t) :: y(1), v(1)
+ y = [x(2:2)]
+ v = [u(2:2)]
+ if (any (y% a /= 1)) stop 1
+ if (any (v% a /= 1)) stop 2
+end