]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fortran: Remove array descriptor data address accessor function
authorMikael Morin <mikael@gcc.gnu.org>
Sun, 3 Aug 2025 13:21:07 +0000 (15:21 +0200)
committerMikael Morin <mikael@gcc.gnu.org>
Tue, 5 Aug 2025 14:20:40 +0000 (16:20 +0200)
Regression-tested on x86_64-pc-linux-gnu.
OK for master?

-- >8 --

The function gfc_conv_descriptor_data_addr generates an address to the
data field of an array descriptor.  It is only used once, and in the
single place where it is used, the address is immediately dereferenced.

This change replaces the single usage with a plain access to the data
field, and removes the function.  As the previous patch removed the
usage of the data field to write to it, the data getter can be used.

gcc/fortran/ChangeLog:

* trans-array.cc (gfc_conv_descriptor_data_addr): Remove.
* trans-array.h (gfc_conv_descriptor_data_addr): Remove.
* trans-decl.cc (gfc_trans_deferred_vars): Use
gfc_conv_descriptor_data_get.

gcc/fortran/trans-array.cc
gcc/fortran/trans-array.h
gcc/fortran/trans-decl.cc

index 990aaaffb50e0c823e5c970fdd3c6e630b90a181..e3b273744bb3627db0bb819c2ceef9f18cb5aa20 100644 (file)
@@ -284,16 +284,6 @@ gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, tree value)
 }
 
 
-/* This provides address access to the data field.  This should only be
-   used by array allocation, passing this on to the runtime.  */
-
-tree
-gfc_conv_descriptor_data_addr (tree desc)
-{
-  tree field = gfc_get_descriptor_field (desc, DATA_FIELD);
-  return gfc_build_addr_expr (NULL_TREE, field);
-}
-
 static tree
 gfc_conv_descriptor_offset (tree desc)
 {
index 29098fd0ace4a573f4677d07c2e0c4c3f20d0dd9..345a9752dddc8e212f608ee5437cca681cc6abb3 100644 (file)
@@ -173,7 +173,6 @@ void gfc_get_descriptor_offsets_for_info (const_tree, tree *, tree *, tree *, tr
                                          tree *, tree *, tree *, tree *);
 
 tree gfc_conv_descriptor_data_get (tree);
-tree gfc_conv_descriptor_data_addr (tree);
 tree gfc_conv_descriptor_offset_get (tree);
 tree gfc_conv_descriptor_span_get (tree);
 tree gfc_conv_descriptor_dtype (tree);
index e9112116adb0d55e21eccec5f29d2d3976b762df..b495f43bbeae6d0554df32068bbf14ee8356d9d9 100644 (file)
@@ -5148,8 +5148,7 @@ gfc_trans_deferred_vars (gfc_symbol * proc_sym, gfc_wrapped_block * block)
                      se.descriptor_only = 1;
                      gfc_conv_expr (&se, e);
                      descriptor = se.expr;
-                     se.expr = gfc_conv_descriptor_data_addr (se.expr);
-                     se.expr = build_fold_indirect_ref_loc (input_location, se.expr);
+                     se.expr = gfc_conv_descriptor_data_get (se.expr);
                    }
                  gfc_free_expr (e);