From: Mikael Morin <[email protected]> Fortran-tested on aarch64-unknown-linux-gnu, pushed. This could have been integrated into another version of the last array descriptor series [1], but I considered this change simple enough I could just proceed.
[1] fortran: array descriptor part 2: Add getters and setters https://gcc.gnu.org/pipermail/gcc-patches/2026-July/723604.html https://gcc.gnu.org/pipermail/fortran/2026-July/064287.html -- >8 -- A MODIFY_EXPR was generated manually using the data reference returned by the getter. Just use the setter instead. Fixed in two different places. gcc/fortran/ChangeLog: * trans-expr.cc (gfc_conv_class_to_class): Use the data setter instead of generating a MODIFY_EXPR of the result of the data getter. * trans-intrinsic.cc (conv_intrinsic_move_alloc): Likewise. --- gcc/fortran/trans-expr.cc | 6 ++---- gcc/fortran/trans-intrinsic.cc | 4 +--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index df029bfd114..1083ea3fbbd 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -1556,10 +1556,8 @@ gfc_conv_class_to_class (gfc_se *parmse, gfc_expr *e, gfc_typespec class_ts, else { gfc_init_block (&block); - - tmp2 = gfc_conv_descriptor_data_get (gfc_class_data_get (var)); - gfc_add_modify (&block, tmp2, fold_convert (TREE_TYPE (tmp2), - null_pointer_node)); + gfc_conv_descriptor_data_set (&block, gfc_class_data_get (var), + null_pointer_node); tmp2 = gfc_finish_block (&block); } diff --git a/gcc/fortran/trans-intrinsic.cc b/gcc/fortran/trans-intrinsic.cc index bb0499ad7b3..5e3681da467 100644 --- a/gcc/fortran/trans-intrinsic.cc +++ b/gcc/fortran/trans-intrinsic.cc @@ -13599,9 +13599,7 @@ conv_intrinsic_move_alloc (gfc_code *code) gfc_add_modify_loc (input_location, &block, to_se.expr, from_se.expr); /* Set "from" to NULL. */ - tmp = gfc_conv_descriptor_data_get (from_se.expr); - gfc_add_modify_loc (input_location, &block, tmp, - fold_convert (TREE_TYPE (tmp), null_pointer_node)); + gfc_conv_descriptor_data_set (&block, from_se.expr, null_pointer_node); if (coarray && flag_coarray == GFC_FCOARRAY_LIB) { -- 2.53.0
