https://gcc.gnu.org/g:e983f706e3bf3b9537017b30da0179a01854201b

commit e983f706e3bf3b9537017b30da0179a01854201b
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Wed Aug 13 15:34:36 2025 +0200

    Correction pr87992.f90

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

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index e3136475c968..84145f13f7df 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -607,7 +607,6 @@ tree
 gfc_get_dtype_rank_type_slen (int rank, tree etype, tree length)
 {
   tree ptype;
-  tree size;
   int n;
   tree dtype;
   tree field;
@@ -668,6 +667,7 @@ gfc_get_dtype_rank_type_slen (int rank, tree etype, tree 
length)
       gcc_unreachable ();
     }
 
+  tree size = NULL_TREE;
   switch (n)
     {
     case BT_CHARACTER:
@@ -675,23 +675,24 @@ gfc_get_dtype_rank_type_slen (int rank, tree etype, tree 
length)
       size = gfc_get_character_len_in_bytes (ptype, length);
       break;
     case BT_VOID:
-      gcc_assert (TREE_CODE (ptype) == POINTER_TYPE);
-      size = size_in_bytes (ptype);
+      if (TREE_CODE (ptype) == POINTER_TYPE)
+       size = size_in_bytes (ptype);
       break;
     default:
       size = size_in_bytes (etype);
       break;
     }
 
-  gcc_assert (size);
-
-  STRIP_NOPS (size);
-  size = fold_convert (size_type_node, size);
   tree dtype_type_node = get_dtype_type_node ();
-  field = gfc_advance_chain (TYPE_FIELDS (dtype_type_node),
-                            GFC_DTYPE_ELEM_LEN);
-  CONSTRUCTOR_APPEND_ELT (v, field,
-                         fold_convert (TREE_TYPE (field), size));
+  if (size)
+    {
+      STRIP_NOPS (size);
+      size = fold_convert (size_type_node, size);
+      field = gfc_advance_chain (TYPE_FIELDS (dtype_type_node),
+                                GFC_DTYPE_ELEM_LEN);
+      CONSTRUCTOR_APPEND_ELT (v, field,
+                             fold_convert (TREE_TYPE (field), size));
+    }
   field = gfc_advance_chain (TYPE_FIELDS (dtype_type_node),
                             GFC_DTYPE_VERSION);
   CONSTRUCTOR_APPEND_ELT (v, field,

Reply via email to