https://gcc.gnu.org/g:a0951d4448036d35343b534b58c85f96f76ce7e6
commit a0951d4448036d35343b534b58c85f96f76ce7e6 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Mon Jul 7 19:00:09 2025 +0200 Simplification mise à jour descripteur Diff: --- gcc/fortran/trans-array.cc | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 832db1c3df4e..2d3ae44a8186 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -11375,36 +11375,26 @@ update_reallocated_descriptor (stmtblock_t *block, gfc_loopinfo *loop) gcc_assert (s->info->type == GFC_SS_SECTION); gfc_array_info *info = &s->info->data.array; - tree desc = info->descriptor; -#define UPDATE_VALUE(field, value) \ +#define UPDATE_VALUE(value) \ do \ { \ - if (false && (field) && VAR_P ((field))) \ - { \ - tree val = (value); \ - gfc_add_modify (block, (field), val); \ - } \ - else \ - (field) = gfc_evaluate_now ((field), block); \ + value = gfc_evaluate_now (value, block); \ } \ while (0) - if (save_descriptor_data (desc, info->data)) - UPDATE_VALUE (info->data, gfc_conv_descriptor_data_get (desc)); - UPDATE_VALUE (info->offset, gfc_conv_descriptor_offset_get (desc)); + if (save_descriptor_data (info->descriptor, info->data)) + UPDATE_VALUE (info->data); + UPDATE_VALUE (info->offset); info->saved_offset = info->offset; for (int i = 0; i < s->dimen; i++) { int dim = s->dim[i]; tree tree_dim = gfc_rank_cst[dim]; - UPDATE_VALUE (info->start[dim], - gfc_conv_descriptor_lbound_get (desc, tree_dim)); - UPDATE_VALUE (info->end[dim], - gfc_conv_descriptor_ubound_get (desc, tree_dim)); - UPDATE_VALUE (info->stride[dim], - gfc_conv_descriptor_stride_get (desc, tree_dim)); - info->delta[dim] = gfc_evaluate_now (info->delta[dim], block); + UPDATE_VALUE (info->start[dim]); + UPDATE_VALUE (info->end[dim]); + UPDATE_VALUE (info->stride[dim]); + UPDATE_VALUE (info->delta[dim]); } #undef UPDATE_VALUE