===================================================================
@@ -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);
}
===================================================================
@@ -0,0 +1,9 @@
+! { 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