From: Mikael Morin Date: Mon, 20 Jul 2026 09:10:00 +0000 (+0200) Subject: fortran: array descriptor: Add internal field accessor for data [PR122521] X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2e24ea4ffce680986316c4ea070e297af8c37cd5;p=thirdparty%2Fgcc.git fortran: array descriptor: Add internal field accessor for data [PR122521] Add a static function producing a reference to the data field of array descriptors, like those existing for the other fields. PR fortran/122521 gcc/fortran/ChangeLog: * trans-descriptor.cc (conv_descriptor_data): New function. (gfc_conv_descriptor_data_get, gfc_conv_descriptor_data_set): Use it. --- diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc index c9450414052..6156f4e2db1 100644 --- a/gcc/fortran/trans-descriptor.cc +++ b/gcc/fortran/trans-descriptor.cc @@ -88,6 +88,15 @@ gfc_get_descriptor_field (tree desc, unsigned field_idx) desc, field, NULL_TREE); } + +/* Return a reference to the data field of the array descriptor DESC. */ + +static tree +conv_descriptor_data (tree desc) +{ + return gfc_get_descriptor_field (desc, DATA_FIELD); +} + /* This provides READ-ONLY access to the data field. The field itself doesn't have the proper type. */ @@ -98,8 +107,8 @@ gfc_conv_descriptor_data_get (tree desc) if (TREE_CODE (type) == REFERENCE_TYPE) gcc_unreachable (); - tree field = gfc_get_descriptor_field (desc, DATA_FIELD); - return fold_convert (GFC_TYPE_ARRAY_DATAPTR_TYPE (type), field); + tree data = conv_descriptor_data (desc); + return fold_convert (GFC_TYPE_ARRAY_DATAPTR_TYPE (type), data); } /* This provides WRITE access to the data field. */ @@ -107,8 +116,8 @@ gfc_conv_descriptor_data_get (tree desc) void gfc_conv_descriptor_data_set (stmtblock_t *block, tree desc, tree value) { - tree field = gfc_get_descriptor_field (desc, DATA_FIELD); - gfc_add_modify (block, field, fold_convert (TREE_TYPE (field), value)); + tree data = conv_descriptor_data (desc); + gfc_add_modify (block, data, fold_convert (TREE_TYPE (data), value)); }