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);
