https://gcc.gnu.org/g:e11d6feb6d8fb13fddcf2470335b3e80282ea33a
commit e11d6feb6d8fb13fddcf2470335b3e80282ea33a Author: Mikael Morin <[email protected]> Date: Sat Aug 16 15:42:30 2025 +0200 Modification initialisation stride Revert "Suppression argument inutilisé" This reverts commit eaf4e13d38467b15714bbc36a49bda4460ebabab. Revert "Suppression warning argument inutilisé" This reverts commit ff23b550241409fcd70380c28c82ef19fc47bc75. Revert "Revert partiel initialisation stride" This reverts commit 0af062cb83c70fea79c98f76ca45b13376e567d7. Diff: --- gcc/fortran/trans-descriptor.cc | 9 +++++++-- gcc/fortran/trans-descriptor.h | 2 +- gcc/fortran/trans-expr.cc | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc index 641874104fab..ae387b684e8c 100644 --- a/gcc/fortran/trans-descriptor.cc +++ b/gcc/fortran/trans-descriptor.cc @@ -1400,7 +1400,7 @@ gfc_copy_descriptor (stmtblock_t *block, tree dest, tree src, tree ptr, void gfc_conv_remap_descriptor (stmtblock_t *block, tree dest, int dest_rank, - tree src, gfc_array_ref *ar) + tree src, bool contiguous_src, gfc_array_ref *ar) { /* Set dtype. */ gfc_conv_descriptor_dtype_set (block, dest, @@ -1429,7 +1429,12 @@ gfc_conv_remap_descriptor (stmtblock_t *block, tree dest, int dest_rank, /* Set the bounds as declared for the LHS and calculate strides as well as another offset update accordingly. */ - tree stride = gfc_conv_descriptor_stride_get (src, gfc_rank_cst[0]); + tree stride; + if (contiguous_src) + stride = gfc_index_one_node; + else + stride = gfc_conv_descriptor_stride_get (src, gfc_rank_cst[0]); + for (int dim = 0; dim < dest_rank; ++dim) { gfc_se lower_se; diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h index c6a079036902..85926234f832 100644 --- a/gcc/fortran/trans-descriptor.h +++ b/gcc/fortran/trans-descriptor.h @@ -113,7 +113,7 @@ void gfc_copy_descriptor (stmtblock_t *, tree, tree, tree, int, gfc_ss *); void gfc_copy_descriptor (stmtblock_t *, tree, tree, bool); void gfc_copy_descriptor (stmtblock_t *, tree, tree, int); -void gfc_conv_remap_descriptor (stmtblock_t *, tree, int, tree, +void gfc_conv_remap_descriptor (stmtblock_t *, tree, int, tree, bool, gfc_array_ref *); void gfc_set_descriptor_from_scalar_class (stmtblock_t *, tree, tree, gfc_expr *); diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index 45982e35401b..6aa1cb046e20 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -11141,8 +11141,8 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2) /* Do rank remapping. We already have the RHS's descriptor converted in rse and now have to build the correct LHS descriptor for it. */ - gfc_conv_remap_descriptor (&block, desc, expr1->rank, - rse.expr, &remap->u.ar); + gfc_conv_remap_descriptor (&block, desc, expr1->rank, rse.expr, + expr2->rank != 1, &remap->u.ar); } else /* Bounds remapping. Just shift the lower bounds. */
