[Bug fortran/92896] [10 Regression] [DEC] ICE in reduce_unary, at fortran/arith.c:1283
mark.eggleston at codethink dot com
gcc-bugzilla@gcc.gnu.org
Wed Dec 11 15:57:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92896
--- Comment #4 from MarkEggleston <mark.eggleston at codethink dot com> ---
reduce_unary (arith (*eval) (gfc_expr *, gfc_expr **), gfc_expr *op,
gfc_expr **result)
{
gfc_constructor_base head;
gfc_constructor *c;
gfc_expr *r;
arith rc;
if (op->expr_type == EXPR_CONSTANT)
return eval (op, result);
rc = ARITH_OK;
head = gfc_constructor_copy (op->value.constructor);
for (c = gfc_constructor_first (head); c; c = gfc_constructor_next (c))
{
rc = reduce_unary (eval, c->expr, &r);
if (rc != ARITH_OK)
break;
gfc_replace_expr (c->expr, r);
}
if (rc != ARITH_OK)
gfc_constructor_free (head);
else
{
gfc_constructor *c = gfc_constructor_first (head);
!!! Crashes because c is NULL
r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind,
&op->where); r->shape = gfc_copy_shape
(op->shape, op->rank);
r->rank = op->rank;
r->value.constructor = head;
*result = r;
}
return rc;
}
The ICE is indicated above. The routine is called, then called again
recursively, it would seem that the constructor is missing when
-fno-range-check is omitted. Judging by comments 1 & 3 there is a missing
error message.
More information about the Gcc-bugs
mailing list