https://gcc.gnu.org/g:8474d4decbc9b2117d834b95ce2ce41688ee6256
commit 8474d4decbc9b2117d834b95ce2ce41688ee6256 Author: Mikael Morin <[email protected]> Date: Mon Sep 22 12:19:34 2025 +0200 Correctior régression ltime_gmtime_2 Diff: --- gcc/fortran/trans-array.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 71e5fa59bf39..b5135b9b41c2 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -7204,8 +7204,7 @@ gfc_get_dataptr_offset (stmtblock_t *block, tree parm, tree desc, tree offset, gfc_init_se (&se, nullptr); build_array_ref (&se, desc, expr, gfc_find_array_ref (expr, false), offset); gfc_add_block_to_block (block, &se.pre); - tmp = gfc_evaluate_now (se.expr, block); - gfc_add_block_to_block (block, &se.post); + tmp = se.expr; /* Offset the data pointer for pointer assignments from arrays with subreferences; e.g. my_integer => my_type(:)%integer_component. */ @@ -7313,6 +7312,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 (se.post.head != NULL_TREE) + { + offset = gfc_evaluate_now (offset, block); + gfc_add_block_to_block (block, &se.post); + } /* Check for optional dummy argument being present. Arguments of BIND(C) procedures are excepted here since they are handled differently. */
