https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101327

anlauf at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |anlauf at gcc dot gnu.org

--- Comment #2 from anlauf at gcc dot gnu.org ---
Slightly more compact resulting code with:

diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 35563a78697..dfecc3012e1 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -1337,7 +1337,9 @@ find_array_element (gfc_constructor_base base,
gfc_array_ref *ar,
   for (i = 0; i < ar->dimen; i++)
     {
       if (!gfc_reduce_init_expr (ar->as->lower[i])
-         || !gfc_reduce_init_expr (ar->as->upper[i]))
+         || !gfc_reduce_init_expr (ar->as->upper[i])
+         || ar->as->upper[i]->expr_type != EXPR_CONSTANT
+         || ar->as->lower[i]->expr_type != EXPR_CONSTANT)
        {
          t = false;
          cons = NULL;
@@ -1351,9 +1353,6 @@ find_array_element (gfc_constructor_base base,
gfc_array_ref *ar,
          goto depart;
        }

-      gcc_assert (ar->as->upper[i]->expr_type == EXPR_CONSTANT
-                 && ar->as->lower[i]->expr_type == EXPR_CONSTANT);
-
       /* Check the bounds.  */
       if ((ar->as->upper[i]
           && mpz_cmp (e->value.integer,

Steve,

are you going to submit this or your version?

Reply via email to