From 979837429d2eae3649dfa49b4cccde99f018a84f Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Thu, 13 May 2004 23:11:47 +0000 Subject: re PR fortran/15314 (ICE caused by array initializer in derived type definition) PR fortran/15314 * trans-expr.c (gfc_conv_structure): Use field type, not expr type. From-SVN: r81816 --- gcc/fortran/trans-expr.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'gcc/fortran/trans-expr.c') diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 864b006..1f98f9e 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1292,20 +1292,15 @@ gfc_conv_structure (gfc_se * se, gfc_expr * expr, int init) /* Evaluate the expression for this component. */ if (init) { - switch (c->expr->expr_type) + if (cm->dimension) { - case EXPR_ARRAY: arraytype = TREE_TYPE (cm->backend_decl); cse.expr = gfc_conv_array_initializer (arraytype, c->expr); - break; - - case EXPR_STRUCTURE: - gfc_conv_structure (&cse, c->expr, 1); - break; - - default: - gfc_conv_expr (&cse, c->expr); } + else if (cm->ts.type == BT_DERIVED) + gfc_conv_structure (&cse, c->expr, 1); + else + gfc_conv_expr (&cse, c->expr); } else { -- cgit v1.1