https://gcc.gnu.org/g:590a31d37e8f3187a198b5e91e46986fba196c24

commit 590a31d37e8f3187a198b5e91e46986fba196c24
Author: Mikael Morin <[email protected]>
Date:   Wed Oct 1 17:57:39 2025 +0200

    Correction régression char_spread_1.f90

Diff:
---
 gcc/fortran/trans-array.cc | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 635806a56277..579591c218e3 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -8015,6 +8015,20 @@ gfc_conv_expr_descriptor (gfc_se *se, gfc_expr *expr)
       gcc_assert (loop.temp_ss->dimen == loop.dimen);
       gfc_add_ss_to_loop (&loop, loop.temp_ss);
     }
+  else if (ss
+          && ss != gfc_ss_terminator
+          && ss->next == gfc_ss_terminator
+          && ss->info
+          && ss->info->type == GFC_SS_FUNCTION
+          && expr->expr_type == EXPR_FUNCTION
+          && expr->value.function.isym != nullptr)
+    {
+      gfc_ss_type ss_type = ss->info->type;
+      gcc_assert (ss_type != GFC_SS_SCALAR
+                 && ss_type != GFC_SS_REFERENCE
+                 && ss_type != GFC_SS_TEMP);
+      info->bytes_strided = se->bytes_strided;
+    }
 
   gfc_conv_loop_setup (&loop, & expr->where);

Reply via email to