https://gcc.gnu.org/g:59d20ab818b5c1c5368e70d0af3221e3f1e83db3
commit 59d20ab818b5c1c5368e70d0af3221e3f1e83db3 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Thu Jun 19 18:04:56 2025 +0200 Utilisation gfc_conv_descriptor_offset_{g,s}et Correction pr43808 Correction gfc_conv_descriptor_offset Utilisation gfc_conv_descriptor_offset_set Suppression retour à la ligne inutile offset_set Diff: --- gcc/fortran/trans-array.cc | 9 ++++----- gcc/fortran/trans-descriptor.cc | 11 +++++------ gcc/fortran/trans-descriptor.h | 1 - gcc/fortran/trans-expr.cc | 2 +- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 31ed8546488b..185de0886feb 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -8996,9 +8996,8 @@ gfc_conv_array_parameter (gfc_se *se, gfc_expr *expr, bool g77, new_field = gfc_conv_descriptor_dtype (new_desc); gfc_add_modify (&se->pre, new_field, old_field); - old_field = gfc_conv_descriptor_offset (old_desc); - new_field = gfc_conv_descriptor_offset (new_desc); - gfc_add_modify (&se->pre, new_field, old_field); + old_field = gfc_conv_descriptor_offset_get (old_desc); + gfc_conv_descriptor_offset_set (&se->pre, new_desc, old_field); for (int i = 0; i < expr->rank; i++) { @@ -11168,8 +11167,8 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo *loop, gfc_index_zero_node); } - tmp = gfc_conv_descriptor_offset (desc); - gfc_add_modify (&loop_pre_block, tmp, gfc_index_zero_node); + gfc_conv_descriptor_offset_set (&loop_pre_block, desc, + gfc_index_zero_node); tmp = fold_build2_loc (input_location, EQ_EXPR, logical_type_node, array1, diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc index 4660130c4464..88bbacd08e30 100644 --- a/gcc/fortran/trans-descriptor.cc +++ b/gcc/fortran/trans-descriptor.cc @@ -215,8 +215,8 @@ gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, tree value) } -tree -gfc_conv_descriptor_offset (tree desc) +static tree +get_descriptor_offset (tree desc) { tree field = gfc_get_descriptor_field (desc, OFFSET_FIELD); gcc_assert (TREE_TYPE (field) == gfc_array_index_type); @@ -226,14 +226,13 @@ gfc_conv_descriptor_offset (tree desc) tree gfc_conv_descriptor_offset_get (tree desc) { - return gfc_conv_descriptor_offset (desc); + return get_descriptor_offset (desc); } void -gfc_conv_descriptor_offset_set (stmtblock_t *block, tree desc, - tree value) +gfc_conv_descriptor_offset_set (stmtblock_t *block, tree desc, tree value) { - tree t = gfc_conv_descriptor_offset (desc); + tree t = get_descriptor_offset (desc); gfc_add_modify (block, t, fold_convert (TREE_TYPE (t), value)); } diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h index ade63bf19751..36365ff32ae0 100644 --- a/gcc/fortran/trans-descriptor.h +++ b/gcc/fortran/trans-descriptor.h @@ -57,7 +57,6 @@ tree gfc_conv_descriptor_type (tree desc); tree gfc_get_descriptor_dimension (tree desc); tree gfc_conv_descriptor_dimension (tree desc, tree dim); tree gfc_conv_descriptor_token (tree desc); -tree gfc_conv_descriptor_offset (tree desc); tree gfc_conv_descriptor_data_get (tree desc); tree gfc_conv_descriptor_offset_get (tree desc); diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index 9e2b5f68793e..0cee29665675 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -9591,8 +9591,8 @@ gfc_trans_alloc_subarray_assign (tree dest, gfc_component * cm, /* Shift the lbound and ubound of temporaries to being unity, rather than zero, based. Always calculate the offset. */ + gfc_conv_descriptor_offset_set (&block, dest, gfc_index_zero_node); offset = gfc_conv_descriptor_offset_get (dest); - gfc_add_modify (&block, offset, gfc_index_zero_node); tmp2 =gfc_create_var (gfc_array_index_type, NULL); for (n = 0; n < expr->rank; n++)