The attached patch is a followup on PR123949, a one liner.
The initial patch uncovered this latent patch. I will commit shortly. Regression tested on X86_64 and on aarch64 with LTO bootstrap. Regards, Jerry Author: Christopher Albert <[email protected]> Date: Sun Feb 22 22:07:19 2026 +0100 fortran: Initialize gfc_se in PDT component allocation [PR123949] Add missing gfc_init_se call for the default initializer case in ALLOCATE_PDT_COMP. The adjacent KIND/LEN block (line 11118) and pdt_string block (line 11149) both initialize tse, but this block left it uninitialized, causing undefined behavior when tse.ss contained stack garbage. Exposed as an ICE in gfc_conv_constant (trans-const.cc:425) on aarch64 with LTO bootstrap. PR fortran/123949 gcc/fortran/ChangeLog: * trans-array.cc (structure_alloc_comps): Add missing gfc_init_se call in case ALLOCATE_PDT_COMP for scalar component default initializer.
commit b55678bcc6c707f1069f1e702e0998ab1757ce00 Author: Christopher Albert <[email protected]> Date: Sun Feb 22 22:07:19 2026 +0100 fortran: Initialize gfc_se in PDT component allocation [PR123949] Add missing gfc_init_se call for the default initializer case in ALLOCATE_PDT_COMP. The adjacent KIND/LEN block (line 11118) and pdt_string block (line 11149) both initialize tse, but this block left it uninitialized, causing undefined behavior when tse.ss contained stack garbage. Exposed as an ICE in gfc_conv_constant (trans-const.cc:425) on aarch64 with LTO bootstrap. PR fortran/123949 gcc/fortran/ChangeLog: * trans-array.cc (structure_alloc_comps): Add missing gfc_init_se call in case ALLOCATE_PDT_COMP for scalar component default initializer. Signed-off-by: Christopher Albert <[email protected]> diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index 6cddd80b8ae..e7666416213 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -11136,6 +11136,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl, tree dest, { gfc_se tse; gfc_expr *c_expr; + gfc_init_se (&tse, NULL); c_expr = c->initializer; gfc_conv_expr_type (&tse, c_expr, TREE_TYPE (comp)); gfc_add_block_to_block (&fnblock, &tse.pre);
