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

commit d503cfd9943e9516d3effe5a7b4c13987a0d8d40
Author: Mikael Morin <[email protected]>
Date:   Fri Oct 3 18:10:29 2025 +0200

    Correction régression pr104555.f90

Diff:
---
 gcc/fortran/trans-descriptor.cc | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/gcc/fortran/trans-descriptor.cc b/gcc/fortran/trans-descriptor.cc
index 6491ac86703c..9fe8d8a22b13 100644
--- a/gcc/fortran/trans-descriptor.cc
+++ b/gcc/fortran/trans-descriptor.cc
@@ -1936,9 +1936,16 @@ gfc_copy_descriptor (stmtblock_t *block, tree dest, tree 
src)
 
       tree offset = gfc_index_zero_node;
 
-      gcc_assert (GFC_TYPE_ARRAY_RANK (TREE_TYPE (dest))
-                 == GFC_TYPE_ARRAY_RANK (TREE_TYPE (src)));
-      int rank = GFC_TYPE_ARRAY_RANK (TREE_TYPE (dest));
+      int rank;
+      if (GFC_TYPE_ARRAY_RANK (TREE_TYPE (dest))
+         == GFC_TYPE_ARRAY_RANK (TREE_TYPE (src)))
+       rank = GFC_TYPE_ARRAY_RANK (TREE_TYPE (dest));
+      else
+       {
+         gcc_assert (GFC_TYPE_ARRAY_AKIND (TREE_TYPE (dest))
+                     == GFC_ARRAY_ASSUMED_RANK);
+         rank = GFC_TYPE_ARRAY_RANK (TREE_TYPE (src));
+       }
       for (int i = 0; i < rank; i++) 
        {
          tree lbound = gfc_conv_descriptor_lbound_get (src, i);

Reply via email to