Le 01/05/2015 20:25, Paul Richard Thomas a écrit : > Dear All, > > By the time I went to commit, something had changed and the patch > caused a regression. I presume that the version that I had of Andre's > patch was not the same as the one committed. I'll cast an eye over it > this weekend and see if I can understand what gives. > Hello Paul,
to get things moving again, I propose the attached fix to your patch. Tested on alloc_comp_deep_copy_1 only for now. Mikael
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 6cf5fe2..532f4b7 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -7078,7 +7078,8 @@ gfc_trans_subcomponent_assign (tree dest, gfc_component * cm, gfc_expr * expr, } gfc_add_modify (&block, dest, fold_convert (TREE_TYPE (dest), se.expr)); - if (cm->ts.u.derived->attr.alloc_comp) + if (cm->ts.u.derived->attr.alloc_comp + && expr->expr_type != EXPR_NULL) { tmp = gfc_copy_alloc_comp (cm->ts.u.derived, se.expr, dest, expr->rank);