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

2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91553
	* simplify.c (gfc_convert_constant):  During conversion check if the
	constant is enclosed in parenthesis, and simplify expression.

2019-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91553
	* gfortran.dg/pr91553.f90: New test.

From-SVN: r275657
This commit is contained in:
Steven G. Kargl 2019-09-11 18:37:31 +00:00
parent 84e3325133
commit 22aa73bda4
4 changed files with 25 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2019-09-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91553
* simplify.c (gfc_convert_constant): During conversion check if the
constant is enclosed in parenthesis, and simplify expression.
2019-09-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91642

View file

@ -8503,6 +8503,12 @@ 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)
{
gfc_simplify_expr (c->expr, 1);
tmp = f (c->expr, kind);
}
else
tmp = f (c->expr, kind);
}

View file

@ -1,3 +1,8 @@
2019-09-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91553
* gfortran.dg/pr91553.f90: New test.
2019-09-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91642

View file

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