https://gcc.gnu.org/g:eb3bb409c2f64c063f3d89f2bda2cb458f8cf279
commit eb3bb409c2f64c063f3d89f2bda2cb458f8cf279 Author: Mikael Morin <[email protected]> Date: Thu Oct 15 21:16:24 2026 +0200 Correction partielle generic_assumed_rank_3 Diff: --- gcc/fortran/trans-expr.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index d2b1e01ed6b6..3cb1b719fe0b 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -12007,12 +12007,15 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2) if (VAR_P (rse.expr) && GFC_DECL_PTR_ARRAY_P (rse.expr)) span = gfc_conv_descriptor_span_get (rse.expr); - else + else if (expr2->ts.type != BT_CLASS + && gfc_is_simply_contiguous (expr2, false, false)) { tmp = TREE_TYPE (rse.expr); tmp = TYPE_SIZE_UNIT (gfc_get_element_type (tmp)); span = fold_convert (gfc_array_index_type, tmp); } + else + span = gfc_get_array_span (rse.expr, expr2); gfc_conv_descriptor_span_set (&block, desc, span); /* Copy offset but adjust it such that it would correspond
