https://gcc.gnu.org/g:7d64bde64d323824f8e82bf5510e2207be0886ac

commit 7d64bde64d323824f8e82bf5510e2207be0886ac
Author: Mikael Morin <[email protected]>
Date:   Wed Oct 1 16:02:00 2025 +0200

    Correction régression alloc_comp_assign_12.f90

Diff:
---
 gcc/fortran/trans-array.cc | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 5e3343d7cfa2..ad82a2e3b72f 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -7855,9 +7855,14 @@ gfc_conv_expr_descriptor (gfc_se *se, gfc_expr *expr)
       else
        full = gfc_full_array_ref_p (info->ref, NULL);
 
-      if (full && !transposed_dims (ss))
-       {
-         if (se->direct_byref && !se->byref_noassign)
+      if (full && !transposed_dims (ss)
+         && !(se->bytes_strided
+              && !GFC_BYTES_STRIDES_ARRAY_TYPE_P (TREE_TYPE (desc))
+              && !se->expr))
+       {
+         if ((se->direct_byref && !se->byref_noassign)
+             || (se->bytes_strided
+                 && !GFC_BYTES_STRIDES_ARRAY_TYPE_P (TREE_TYPE (desc))))
            gfc_copy_descriptor (&se->pre, se->expr, desc, expr,
                                 subref_array_target);
          else if (se->want_pointer)

Reply via email to