https://gcc.gnu.org/g:939b548ae9d0d5aa62e404371b807b635ecad372
commit 939b548ae9d0d5aa62e404371b807b635ecad372 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Wed Jan 22 21:59:46 2025 +0100 Refactoring gfc_conv_descriptor_sm_get. Diff: --- gcc/fortran/trans-array.cc | 11 +++++++++++ gcc/fortran/trans-array.h | 1 + gcc/fortran/trans-expr.cc | 4 +--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 50b862f8eb12..c79c9dd47ff2 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -581,6 +581,17 @@ gfc_conv_descriptor_extent_get (tree desc, tree dim) } +tree +gfc_conv_descriptor_sm_get (tree desc, tree dim) +{ + tree stride = gfc_conv_descriptor_stride_get (desc, dim); + tree span = gfc_conv_descriptor_span_get (desc); + + return fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type, + stride, span); +} + + static int get_type_info (const bt &type) { diff --git a/gcc/fortran/trans-array.h b/gcc/fortran/trans-array.h index 972f0ec96614..8e313ce09e8a 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -193,6 +193,7 @@ tree gfc_conv_descriptor_stride_get (tree, tree); tree gfc_conv_descriptor_lbound_get (tree, tree); tree gfc_conv_descriptor_ubound_get (tree, tree); tree gfc_conv_descriptor_extent_get (tree, tree); +tree gfc_conv_descriptor_sm_get (tree, tree); tree gfc_conv_descriptor_token (tree); void gfc_conv_descriptor_data_set (stmtblock_t *, tree, tree); diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index 96937b159ab9..2669a17834f3 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -6455,9 +6455,7 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym) tmp = gfc_conv_descriptor_extent_get (gfc, idx); gfc_add_modify (&loop_body, gfc_get_cfi_dim_extent (cfi, idx), tmp); /* d->dim[n].sm = gfc->dim[i].stride * gfc->span); */ - tmp = fold_build2_loc (input_location, MULT_EXPR, gfc_array_index_type, - gfc_conv_descriptor_stride_get (gfc, idx), - gfc_conv_descriptor_span_get (gfc)); + tmp = gfc_conv_descriptor_sm_get (gfc, idx); gfc_add_modify (&loop_body, gfc_get_cfi_dim_sm (cfi, idx), tmp); /* Generate loop. */