From: Mikael Morin <[email protected]>

Regression tested on powerpc64le-unknown-linux-gnu.  OK for master?

-- >8 --

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.
---
 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 3c6609b6f40..e164b982e06 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 386f6275982..5286d3d54ec 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 816973825b6..b68a28bddff 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);
-- 
2.51.0

Reply via email to