https://gcc.gnu.org/g:d2a61c5bf050c40f682ba6f2ccdeb2ca711aba3f

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

    Correction régression pr113956

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

diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc
index 784a497bf5a8..49518010de79 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -7887,7 +7887,11 @@ 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))
+      && 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