2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+ PR fortran/40018
+ * trans-array.c (gfc_trans_array_constructor_value): Fold
+ convert numeric constants.
+ (gfc_build_constant_array_constructor): The same.
+
+2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+
PR fortran/38863
* trans-expr.c (gfc_conv_operator_assign): Remove function.
* trans.h : Remove prototype for gfc_conv_operator_assign.
gfc_init_se (&se, NULL);
gfc_conv_constant (&se, p->expr);
+ if (c->expr->ts.type != BT_CHARACTER)
+ se.expr = fold_convert (type, se.expr);
/* For constant character array constructors we build
an array of pointers. */
- if (p->expr->ts.type == BT_CHARACTER
- && POINTER_TYPE_P (type))
+ else if (POINTER_TYPE_P (type))
se.expr = gfc_build_addr_expr
(gfc_get_pchar_type (p->expr->ts.kind),
se.expr);
{
gfc_init_se (&se, NULL);
gfc_conv_constant (&se, c->expr);
- if (c->expr->ts.type == BT_CHARACTER && POINTER_TYPE_P (type))
+ if (c->expr->ts.type != BT_CHARACTER)
+ se.expr = fold_convert (type, se.expr);
+ else if (POINTER_TYPE_P (type))
se.expr = gfc_build_addr_expr (gfc_get_pchar_type (c->expr->ts.kind),
se.expr);
list = tree_cons (build_int_cst (gfc_array_index_type, nelem),
+2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/40018
+ * gfortran.dg/array_constructor_31.f90: New test.
+
2009-05-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/40081