Andre, In order to apply the patch on a recent trunk
@@ -1070,7 +1089,7 @@ gfc_copy_class_to_class (tree from, tree to, tree nelems, bool unlimited) if (unlimited) { if (from_class_base != NULL_TREE) - from_len = gfc_class_len_get (from_class_base); + from_len = gfc_class_len_or_zero_get (from_class_base); else from_len = integer_zero_node; } should be something such as @@ -1120,7 +1142,7 @@ gfc_copy_class_to_class (tree from, tree if (unlimited) { if (from != NULL_TREE && unlimited) - from_len = gfc_class_len_get (from); + from_len = gfc_class_len_or_zero_get (from); else from_len = integer_zero_node; } With my patched tree I also see the regression FAIL: gfortran.dg/coarray_allocate_4.f08 * (internal compiler error) /opt/gcc/work/gcc/testsuite/gfortran.dg/coarray_allocate_4.f08:39:0: allocate (z, source=x) internal compiler error: tree check: expected record_type or union_type or qual_union_type, have void_type in gfc_class_len_or_zero_get, at fortran/trans-expr.c:186 Dominique