[pushed] fortran: Use the setter to update the descriptor data field

Mikael Morin <[email protected]> Mon, 20 Jul 2026 17:48:40 +0200
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
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