From 92bb7768d3d621f91cb92c7958a7e651a47febe2 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Fri, 11 Jun 2010 16:45:48 +0000 Subject: re PR fortran/42051 ([OOP] ICE on array-valued function with CLASS formal argument) 2010-06-11 Paul Thomas PR fortran/42051 PR fortran/43896 * trans-expr.c (gfc_conv_derived_to_class): Handle array-valued functions with CLASS formal arguments. 2010-06-11 Paul Thomas PR fortran/42051 PR fortran/43896 * gfortran.dg/class_23.f03: New test. From-SVN: r160622 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/trans-expr.c | 2 ++ 2 files changed, 9 insertions(+) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6cf60ee..6f17693 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2010-06-11 Paul Thomas + + PR fortran/42051 + PR fortran/43896 + * trans-expr.c (gfc_conv_derived_to_class): Handle array-valued + functions with CLASS formal arguments. + 2010-06-10 Janus Weil PR fortran/44207 diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 6c5c328..416e67d 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -2492,12 +2492,14 @@ gfc_conv_derived_to_class (gfc_se *parmse, gfc_expr *e, ss = gfc_walk_expr (e); if (ss == gfc_ss_terminator) { + parmse->ss = NULL; gfc_conv_expr_reference (parmse, e); tmp = fold_convert (TREE_TYPE (ctree), parmse->expr); gfc_add_modify (&parmse->pre, ctree, tmp); } else { + parmse->ss = ss; gfc_conv_expr (parmse, e); gfc_add_modify (&parmse->pre, ctree, parmse->expr); } -- cgit v1.1