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. */
