From 979837429d2eae3649dfa49b4cccde99f018a84f Mon Sep 17 00:00:00 2001 From: Paul Brook Date: Thu, 13 May 2004 23:11:47 +0000 Subject: [PATCH] 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/ChangeLog | 5 +++++ gcc/fortran/trans-expr.c | 15 +++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 180bc2203887..e32d1885ed81 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 864b006c536d..1f98f9e1a89c 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 {