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