re PR fortran/91784 (ICE in gfc_real2complex, at fortran/arith.c:2208)

2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91784
	* simplify.c (gfc_convert_constant): Simplify expression if the
	expres	ion type is EXPR_OP.

2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91784
	* gfortran.dg/pr91784.f90: New test.

From-SVN: r276474
This commit is contained in:
Steven G. Kargl 2019-10-02 17:17:55 +00:00
parent 307de10071
commit c20a90e0c8
4 changed files with 23 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2019-10-02 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91784
* simplify.c (gfc_convert_constant): Simplify expression if the
expression type is EXPR_OP.
2019-10-02 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91785

View File

@ -8508,10 +8508,10 @@ gfc_convert_constant (gfc_expr *e, bt type, int kind)
{
if (c->expr->expr_type == EXPR_ARRAY)
tmp = gfc_convert_constant (c->expr, type, kind);
else if (c->expr->expr_type == EXPR_OP
&& c->expr->value.op.op == INTRINSIC_PARENTHESES)
else if (c->expr->expr_type == EXPR_OP)
{
gfc_simplify_expr (c->expr, 1);
if (!gfc_simplify_expr (c->expr, 1))
return &gfc_bad_expr;
tmp = f (c->expr, kind);
}
else

View File

@ -1,3 +1,8 @@
2019-10-02 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91784
* gfortran.dg/pr91784.f90: New test.
2019-10-02 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91785

View File

@ -0,0 +1,9 @@
! { dg-do run }
! PR fortran/91784
! Code originally contributed by Gerhard Steinmetz
program p
complex :: x(1)
x = (1.0, 2.0) * [real :: -(3.0 + 4.0)]
if (int(real(x(1))) /= -7) stop 1
if (int(aimag(x(1))) /= -14) stop 2
end