diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2010-06-11 16:45:48 +0000 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2010-06-11 18:45:48 +0200 |
commit | 92bb7768d3d621f91cb92c7958a7e651a47febe2 (patch) | |
tree | 9e5595536e121a8dd011dbb47974077ae32cf871 /gcc/fortran | |
parent | b0e788cc09b06d66038cc6cbe2082e832a7ebefd (diff) | |
download | gcc-92bb7768d3d621f91cb92c7958a7e651a47febe2.zip gcc-92bb7768d3d621f91cb92c7958a7e651a47febe2.tar.gz gcc-92bb7768d3d621f91cb92c7958a7e651a47febe2.tar.bz2 |
re PR fortran/42051 ([OOP] ICE on array-valued function with CLASS formal argument)
2010-06-11 Paul Thomas <pault@gcc.gnu.org>
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 <pault@gcc.gnu.org>
PR fortran/42051
PR fortran/43896
* gfortran.dg/class_23.f03: New test.
From-SVN: r160622
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 2 |
2 files changed, 9 insertions, 0 deletions
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 <pault@gcc.gnu.org> + + 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 <janus@gcc.gnu.org> 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); } |