http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55072
--- Comment #9 from janus at gcc dot gnu.org 2012-12-15 11:00:09 UTC --- (In reply to comment #7) > The following patch (which amounts to a partial revert of r156749) fixes the > behavior of comment #2 for me: Ugh. Apparently it was much too late last night, when I accidentally re-posted the patch of comment #1 instead of the one I actually wanted to post: Index: gcc/fortran/trans-array.c =================================================================== --- gcc/fortran/trans-array.c (revision 194387) +++ gcc/fortran/trans-array.c (working copy) @@ -7002,13 +7002,6 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * if (sym->ts.type == BT_CHARACTER) se->string_length = sym->ts.u.cl->backend_decl; - if (sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS) - { - gfc_conv_expr_descriptor (se, expr); - se->expr = gfc_conv_array_data (se->expr); - return; - } - if (!sym->attr.pointer && sym->as && sym->as->type != AS_ASSUMED_SHAPE This is the patch that both comment 7 and comment 8 refer to.