From: Paul Brook Date: Thu, 13 May 2004 23:11:47 +0000 (+0000) Subject: re PR fortran/15314 (ICE caused by array initializer in derived type definition) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=979837429d2eae3649dfa49b4cccde99f018a84f;p=gcc.git 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 180bc220388..e32d1885ed8 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2004-05-13 Paul Brook + + PR fortran/15314 + * trans-expr.c (gfc_conv_structure): Use field type, not expr type. + 2004-05-13 Joseph S. Myers * gfortran.texi: Use @table @emph instead of @itemize @emph. diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 864b006c536..1f98f9e1a89 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 {