https://gcc.gnu.org/g:7d9a5b709d1f2400ea62c334bff7c9d4436a687c
commit 7d9a5b709d1f2400ea62c334bff7c9d4436a687c 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 7357626be9a5..4d08a862c5be 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -589,6 +589,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 1d694989b4c3..296a8052dd73 100644 --- a/gcc/fortran/trans-array.h +++ b/gcc/fortran/trans-array.h @@ -195,6 +195,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 84111f5e3d3d..6daa4a727f12 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -6262,9 +6262,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. */