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

Reply via email to