https://gcc.gnu.org/g:529b9c7951ea667604975ca718be78c6657d6c78

commit 529b9c7951ea667604975ca718be78c6657d6c78
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 b4ed4cf84899..cad5130f20cf 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