https://gcc.gnu.org/g:60e0116830e73da21d5804eadb732a2bd1eb6c64

commit 60e0116830e73da21d5804eadb732a2bd1eb6c64
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Mon Sep 22 15:41:44 2025 +0200

    Correction régression findloc_10.f90

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 58831c68ef8a..742a6cf15177 100644
--- a/gcc/fortran/trans-array.cc
+++ b/gcc/fortran/trans-array.cc
@@ -7313,7 +7313,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 (TREE_CODE (TREE_TYPE (tmp)) == POINTER_TYPE
+      && TYPE_STRING_FLAG (TREE_TYPE (TREE_TYPE (tmp))))
+    offset = fold_convert (gfc_array_dataptr_type (desc), tmp);
+  else
+    offset = gfc_build_addr_expr (gfc_array_dataptr_type (desc), tmp);
   if (se.post.head != NULL_TREE)
     {
       offset = gfc_evaluate_now (offset, block);

Reply via email to