From 78a1d1490cc83f1444331c97121ad24fc6918513 Mon Sep 17 00:00:00 2001 From: Janus Weil Date: Mon, 8 Nov 2010 10:03:50 +0100 Subject: re PR fortran/46344 ([OOP] ICE with allocatable CLASS components) 2010-11-08 Janus Weil PR fortran/46344 * trans-types.c (gfc_copy_dt_decls_ifequal): Handle CLASS components. 2010-11-08 Janus Weil PR fortran/46344 * gfortran.dg/class_28.f03: New. From-SVN: r166430 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/trans-types.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 92be429..a513933 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2010-11-08 Janus Weil + + PR fortran/46344 + * trans-types.c (gfc_copy_dt_decls_ifequal): Handle CLASS components. + 2010-11-06 Janus Weil PR fortran/46330 diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index 1ccba7a..a597cd7 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -1936,10 +1936,12 @@ gfc_copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to, for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next) { to_cm->backend_decl = from_cm->backend_decl; - if ((!from_cm->attr.pointer || from_gsym) - && from_cm->ts.type == BT_DERIVED) + if (from_cm->ts.type == BT_DERIVED + && (!from_cm->attr.pointer || from_gsym)) + gfc_get_derived_type (to_cm->ts.u.derived); + else if (from_cm->ts.type == BT_CLASS + && (!CLASS_DATA (from_cm)->attr.class_pointer || from_gsym)) gfc_get_derived_type (to_cm->ts.u.derived); - else if (from_cm->ts.type == BT_CHARACTER) to_cm->ts.u.cl->backend_decl = from_cm->ts.u.cl->backend_decl; } -- cgit v1.1