https://gcc.gnu.org/g:0e3f885b6a9be0cb344ead639be8dcd448735f3a

commit 0e3f885b6a9be0cb344ead639be8dcd448735f3a
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Fri Jul 18 11:42:38 2025 +0200

    Revert "Correction gfc_clear_descriptor assumed rank"
    
    This reverts commit 061babd52c7447e2a4be927fe4d9ce64bfcd2196.

Diff:
---
 gcc/fortran/trans-descriptor.cc | 20 ++++----------------
 gcc/fortran/trans-descriptor.h  |  2 +-
 2 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 0edd4b33b47a..cb12dc158084 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -671,8 +671,9 @@ gfc_get_descriptor_offsets_for_info (const_tree desc_type, 
tree *data_off,
 #undef LBOUND_SUBFIELD
 #undef UBOUND_SUBFIELD
 
+
 void
-gfc_clear_descriptor (stmtblock_t *block, gfc_symbol *sym, gfc_expr *expr, 
tree descr)
+gfc_clear_descriptor (stmtblock_t *block, gfc_symbol *sym, tree descr)
 {
   symbol_attribute attr = gfc_symbol_attr (sym);
 
@@ -694,25 +695,12 @@ gfc_clear_descriptor (stmtblock_t *block, gfc_symbol 
*sym, gfc_expr *expr, tree
   else
     as = sym->as;
 
-  int rank;
-  if (as == nullptr)
-    rank = 0;
-  else if (as->type == AS_ASSUMED_RANK)
-    rank = expr->rank;
-  else
-    rank = as->rank;
-
-  gcc_assert (rank >= 0);
+  gcc_assert (as && as->rank >= 0);
   etype = gfc_get_element_type (TREE_TYPE (descr));
   gfc_conv_descriptor_dtype_set (block, descr,
-                                gfc_get_dtype_rank_type (rank, etype));
+                                gfc_get_dtype_rank_type (as->rank, etype));
 }
 
-void
-gfc_clear_descriptor (stmtblock_t *block, gfc_symbol *sym, tree descr)
-{
-  return gfc_clear_descriptor (block, sym, nullptr, descr);
-}
 
 void
 gfc_clear_descriptor (tree descr)
diff --git a/gcc/fortran/trans-descriptor.h b/gcc/fortran/trans-descriptor.h
index ac3f3fd3828c..5c6587a13c07 100644
--- a/gcc/fortran/trans-descriptor.h
+++ b/gcc/fortran/trans-descriptor.h
@@ -19,6 +19,7 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GFC_TRANS_DESCRIPTOR_H
 #define GFC_TRANS_DESCRIPTOR_H
 
+/* Build a null array descriptor constructor.  */
 void gfc_clear_descriptor (stmtblock_t *block, gfc_symbol *, gfc_expr *, tree);
 void gfc_set_scalar_null_descriptor (stmtblock_t *block, tree, gfc_symbol *, 
gfc_expr *, tree);
 void gfc_set_descriptor_with_shape (stmtblock_t *, tree, tree,
@@ -93,7 +94,6 @@ gfc_get_descriptor_offsets_for_info (const_tree desc_type, 
tree *data_off,
 
 tree gfc_build_default_class_descriptor (const gfc_typespec &, tree);
 void gfc_clear_descriptor (stmtblock_t *block, gfc_symbol *sym, tree descr);
-void gfc_clear_descriptor (stmtblock_t *block, gfc_symbol *, gfc_expr *, tree);
 void gfc_clear_descriptor (tree descr);
 void gfc_set_scalar_descriptor (stmtblock_t *, tree, tree);
 void gfc_conv_shift_descriptor_lbound (stmtblock_t *, tree, int, tree);

Reply via email to