https://gcc.gnu.org/g:1d8de7d39bb2ba9d0174e47619d43b5daa22975b

commit 1d8de7d39bb2ba9d0174e47619d43b5daa22975b
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Wed Aug 6 18:46:44 2025 +0200

    Refactor set_value

Diff:
---
 gcc/fortran/trans-descriptor.cc | 73 ++++++++++++-----------------------------
 1 file changed, 21 insertions(+), 52 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index e22dcbd8a03b..83e2c83826d1 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -201,6 +201,14 @@ get_descr_comp (tree desc, unsigned field_idx, tree type = 
NULL_TREE)
   return get_ref_comp (desc, field_idx, type);
 }
 
+void
+set_value (stmtblock_t *block, tree ref, tree value)
+{
+  location_t loc = input_location;
+  gfc_add_modify_loc (loc, block, ref,
+                     fold_convert_loc (loc, TREE_TYPE (ref), value));
+}
+
 
 static tree
 get_descriptor_data (tree desc)
@@ -234,10 +242,7 @@ gfc_conv_descriptor_data_get (tree desc)
 void
 gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree field = get_descriptor_data (desc);
-  gfc_add_modify_loc (loc, block, field,
-                     fold_convert_loc (loc, TREE_TYPE (field), value));
+  set_value (block, get_descriptor_data (desc), value);
 }
 
 
@@ -256,10 +261,7 @@ gfc_conv_descriptor_offset_get (tree desc)
 void
 gfc_conv_descriptor_offset_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_offset (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_offset (desc), value);
 }
 
 
@@ -278,10 +280,7 @@ gfc_conv_descriptor_dtype_get (tree desc)
 void
 gfc_conv_descriptor_dtype_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_dtype (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_dtype (desc), value);
 }
 
 
@@ -300,10 +299,7 @@ gfc_conv_descriptor_span_get (tree desc)
 void
 gfc_conv_descriptor_span_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = gfc_conv_descriptor_span (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, gfc_conv_descriptor_span (desc), value);
 }
 
 
@@ -330,10 +326,7 @@ gfc_conv_descriptor_rank_get (tree desc)
 void
 gfc_conv_descriptor_rank_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_rank (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_rank (desc), value);
 }
 
 void
@@ -357,10 +350,7 @@ gfc_conv_descriptor_version_get (tree desc)
 void
 gfc_conv_descriptor_version_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_version (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_version (desc), value);
 }
 
 
@@ -381,10 +371,7 @@ gfc_conv_descriptor_elem_len_get (tree desc)
 void
 gfc_conv_descriptor_elem_len_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_elem_len (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_elem_len (desc), value);
 }
 
 
@@ -403,10 +390,7 @@ gfc_conv_descriptor_type_get (tree desc)
 void
 gfc_conv_descriptor_type_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_type (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_type (desc), value);
 }
 
 void
@@ -480,10 +464,7 @@ void
 gfc_conv_descriptor_dimension_set (stmtblock_t *block, tree desc, tree dim,
                                   tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_dimension (desc, dim);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_dimension (desc, dim), value);
 }
 
 void
@@ -508,10 +489,7 @@ gfc_conv_descriptor_token (tree desc)
 void
 gfc_conv_descriptor_token_set (stmtblock_t *block, tree desc, tree value)
 {
-  location_t loc = input_location;
-  tree t = gfc_conv_descriptor_token (desc);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, gfc_conv_descriptor_token (desc), value);
 }
 
 
@@ -550,10 +528,7 @@ void
 gfc_conv_descriptor_stride_set (stmtblock_t *block, tree desc,
                                tree dim, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_stride (desc, dim);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_stride (desc, dim), value);
 }
 
 static tree
@@ -572,10 +547,7 @@ void
 gfc_conv_descriptor_lbound_set (stmtblock_t *block, tree desc,
                                tree dim, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_lbound (desc, dim);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_lbound (desc, dim), value);
 }
 
 static tree
@@ -594,10 +566,7 @@ void
 gfc_conv_descriptor_ubound_set (stmtblock_t *block, tree desc,
                                tree dim, tree value)
 {
-  location_t loc = input_location;
-  tree t = get_descriptor_ubound (desc, dim);
-  gfc_add_modify_loc (loc, block, t,
-                     fold_convert_loc (loc, TREE_TYPE (t), value));
+  set_value (block, get_descriptor_ubound (desc, dim), value);
 }

Reply via email to