https://gcc.gnu.org/g:69598abe75a6f5ecad89e75c3156070fa0b2e025

commit 69598abe75a6f5ecad89e75c3156070fa0b2e025
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Wed Aug 6 14:38:03 2025 +0200

    Refactoring get_dtype_comp

Diff:
---
 gcc/fortran/trans-descriptor.cc | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 6888ff508d67..e7853880a232 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -304,12 +304,17 @@ gfc_conv_descriptor_span_set (stmtblock_t *block, tree 
desc, tree value)
 
 
 static tree
-get_descriptor_rank (tree desc)
+get_dtype_comp (tree desc, unsigned field_idx, tree type = NULL_TREE)
 {
-  tree dtype;
+  tree dtype_ref = get_descriptor_dtype (desc);
+  return get_ref_comp (dtype_ref, field_idx, type);
+}
+
 
-  dtype = get_descriptor_dtype (desc);
-  return get_ref_comp (dtype, GFC_DTYPE_RANK, signed_char_type_node);
+static tree
+get_descriptor_rank (tree desc)
+{
+  return get_dtype_comp (desc, GFC_DTYPE_RANK, signed_char_type_node);
 }
 
 tree
@@ -336,10 +341,7 @@ gfc_conv_descriptor_rank_set (stmtblock_t *block, tree 
desc, int value)
 static tree
 get_descriptor_version (tree desc)
 {
-  tree dtype;
-
-  dtype = get_descriptor_dtype (desc);
-  return get_ref_comp (dtype, GFC_DTYPE_VERSION, integer_type_node);
+  return get_dtype_comp (desc, GFC_DTYPE_VERSION, integer_type_node);
 }
 
 tree
@@ -363,10 +365,7 @@ gfc_conv_descriptor_version_set (stmtblock_t *block, tree 
desc, tree value)
 static tree
 get_descriptor_elem_len (tree desc)
 {
-  tree dtype;
-
-  dtype = get_descriptor_dtype (desc);
-  return get_ref_comp (dtype, GFC_DTYPE_ELEM_LEN, size_type_node);
+  return get_dtype_comp (desc, GFC_DTYPE_ELEM_LEN, size_type_node);
 }
 
 tree
@@ -388,10 +387,7 @@ gfc_conv_descriptor_elem_len_set (stmtblock_t *block, tree 
desc, tree value)
 static tree
 get_descriptor_type (tree desc)
 {
-  tree dtype;
-
-  dtype = get_descriptor_dtype (desc);
-  return get_ref_comp (dtype, GFC_DTYPE_TYPE, signed_char_type_node);
+  return get_dtype_comp (desc, GFC_DTYPE_TYPE, signed_char_type_node);
 }
 
 tree

Reply via email to