https://gcc.gnu.org/g:cde260612fa96886c1ba427ea70e7c3b3b52ff2c

commit cde260612fa96886c1ba427ea70e7c3b3b52ff2c
Author: Mikael Morin <[email protected]>
Date:   Thu Oct 30 14:40:08 2025 +0100

    fortran: array descriptor: Use the setter to modify the offset
    
    Use the setter function to generate code modifying the array descriptor
    offset and remove from the public API the function giving direct access to
    that field.
    
    gcc/fortran/ChangeLog:
    
            * trans-array.cc (gfc_alloc_allocatable_for_assignment): Use the
            setter function to generate a modification of the array descriptor
            offset.
            * trans-descriptor.cc (gfc_conv_descriptor_offset): Make static and
            rename ...
            (conv_descriptor_offset): ... to this.
            (gfc_conv_descriptor_offset_get,
            gfc_conv_descriptor_offset_set): Update callers.
            * trans-descriptor.h (gfc_conv_descriptor_offset): Remove
            declaration.

Diff:
---
 gcc/fortran/trans-array.cc      | 3 +--
 gcc/fortran/trans-descriptor.cc | 8 ++++----
 gcc/fortran/trans-descriptor.h  | 1 -
 3 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 3c6609b6f40f..e164b982e069 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -11586,8 +11586,7 @@ gfc_alloc_allocatable_for_assignment (gfc_loopinfo 
*loop,
   /* Set the lhs descriptor and scalarizer offsets.  For rank > 1,
      the array offset is saved and the info.offset is used for a
      running offset.  Use the saved_offset instead.  */
-  tmp = gfc_conv_descriptor_offset (desc);
-  gfc_add_modify (&fblock, tmp, offset);
+  gfc_conv_descriptor_offset_set (&fblock, desc, offset);
 
   /* Take into account _len of unlimited polymorphic entities, so that span
      for array descriptors and allocation sizes are computed correctly.  */
diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 386f62759824..5286d3d54ecd 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -98,8 +98,8 @@ gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, 
tree value)
 }
 
 
-tree
-gfc_conv_descriptor_offset (tree desc)
+static tree
+conv_descriptor_offset (tree desc)
 {
   tree field = gfc_get_descriptor_field (desc, OFFSET_FIELD);
   gcc_assert (TREE_TYPE (field) == gfc_array_index_type);
@@ -109,13 +109,13 @@ gfc_conv_descriptor_offset (tree desc)
 tree
 gfc_conv_descriptor_offset_get (tree desc)
 {
-  return gfc_conv_descriptor_offset (desc);
+  return conv_descriptor_offset (desc);
 }
 
 void
 gfc_conv_descriptor_offset_set (stmtblock_t *block, tree desc, tree value)
 {
-  tree t = gfc_conv_descriptor_offset (desc);
+  tree t = conv_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 816973825b65..b68a28bddffe 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -29,7 +29,6 @@ tree gfc_conv_descriptor_type (tree);
 tree gfc_get_descriptor_dimension (tree);
 tree gfc_conv_descriptor_dimension (tree, tree);
 tree gfc_conv_descriptor_token (tree);
-tree gfc_conv_descriptor_offset (tree);
 
 tree gfc_conv_descriptor_data_get (tree);
 tree gfc_conv_descriptor_offset_get (tree);

Reply via email to