https://gcc.gnu.org/g:9eba0854caa346a22293a248d590c7872c72a5c1

commit 9eba0854caa346a22293a248d590c7872c72a5c1
Author: Mikael Morin <[email protected]>
Date:   Thu Sep 17 22:48:14 2026 +0200

    Correction régression pr113956
    
    Essai correction régression associate_46

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

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 784a497bf5a8..705596044ba3 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -7887,7 +7887,13 @@ gfc_get_dataptr_offset (stmtblock_t *block, tree parm, 
tree desc, tree offset,
     }
 
   /* Set the target data pointer.  */
-  offset = gfc_build_addr_expr (gfc_array_dataptr_type (desc), tmp);
+  if (POINTER_TYPE_P (TREE_TYPE (tmp))
+      && (TREE_CODE (TREE_TYPE (TREE_TYPE (tmp))) == ARRAY_TYPE
+         || TREE_CODE (TREE_TYPE (TREE_TYPE (tmp))) == INTEGER_TYPE)
+      && TYPE_STRING_FLAG (TREE_TYPE (TREE_TYPE (tmp))))
+    offset = tmp;
+  else
+    offset = gfc_build_addr_expr (gfc_array_dataptr_type (desc), tmp);
 
   /* Check for optional dummy argument being present.  Arguments of BIND(C)
      procedures are excepted here since they are handled differently.  */

Reply via email to