https://gcc.gnu.org/g:2808e7c7c67e9a768a20213f482af7c60d678de9
commit 2808e7c7c67e9a768a20213f482af7c60d678de9 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Sat Aug 16 15:13:04 2025 +0200 Simplification initialisation offset remap descriptor Modif initialisation stride Revert partiel initialisation stride Suppression warning argument inutilisé Suppression argument inutilisé Diff: --- gcc/fortran/trans-descriptor.cc | 20 ++------------------ gcc/fortran/trans-descriptor.h | 2 +- gcc/fortran/trans-expr.cc | 2 +- 3 files changed, 4 insertions(+), 20 deletions(-) diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc index 3df958c4ec86..641874104fab 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, int src_rank, gfc_array_ref *ar) + tree src, gfc_array_ref *ar) { /* Set dtype. */ gfc_conv_descriptor_dtype_set (block, dest, @@ -1425,23 +1425,7 @@ gfc_conv_remap_descriptor (stmtblock_t *block, tree dest, int dest_rank, /* Copy offset but adjust it such that it would correspond to a lbound of zero. */ - if (src_rank == -1) - gfc_conv_descriptor_offset_set (block, dest, - gfc_index_zero_node); - else - { - tree offs = gfc_conv_descriptor_offset_get (src); - for (int dim = 0; dim < src_rank; ++dim) - { - tree stride = gfc_conv_descriptor_stride_get (src, gfc_rank_cst[dim]); - tree lbound = gfc_conv_descriptor_lbound_get (src, gfc_rank_cst[dim]); - tree tmp = fold_build2_loc (input_location, MULT_EXPR, - gfc_array_index_type, stride, lbound); - offs = fold_build2_loc (input_location, PLUS_EXPR, - gfc_array_index_type, offs, tmp); - } - gfc_conv_descriptor_offset_set (block, dest, offs); - } + gfc_conv_descriptor_offset_set (block, dest, gfc_index_zero_node); /* Set the bounds as declared for the LHS and calculate strides as well as another offset update accordingly. */ diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h index 35f50c144304..c6a079036902 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, int, +void gfc_conv_remap_descriptor (stmtblock_t *, tree, int, tree, 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 91e80044c36d..f9080421b01c 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -11019,7 +11019,7 @@ gfc_trans_pointer_assignment (gfc_expr * expr1, gfc_expr * expr2) converted in rse and now have to build the correct LHS descriptor for it. */ gfc_conv_remap_descriptor (&block, desc, expr1->rank, - rse.expr, expr2->rank, &remap->u.ar); + rse.expr, &remap->u.ar); } else /* Bounds remapping. Just shift the lower bounds. */