https://gcc.gnu.org/g:a42f3381fed7327a0d3cdf1a04f174e0ce7cfea1
commit a42f3381fed7327a0d3cdf1a04f174e0ce7cfea1 Author: Mikael Morin <mik...@gcc.gnu.org> Date: Thu Jan 23 20:59:24 2025 +0100 Correction régression scalar descriptor Diff: --- gcc/fortran/trans-expr.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index b9b085dbf07c..95b168fe76a8 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -6392,7 +6392,12 @@ done: gfc_add_modify (&block, gfc, fold_convert (TREE_TYPE (gfc), tmp)); } else - set_gfc_from_cfi (&block2, gfc, cfi, rank, fsym); + { + tmp = gfc_get_cfi_desc_base_addr (cfi); + gfc_conv_descriptor_data_set (&block, gfc, tmp); + + set_gfc_from_cfi (&block2, gfc, cfi, rank, fsym); + } if (e->ts.type == BT_CHARACTER && !e->ts.u.cl->length) { @@ -6406,16 +6411,11 @@ done: gfc_add_modify (&block2, gfc_strlen, tmp); } - tmp2 = gfc_finish_block (&block2); - - gfc_init_block (&block2); - tmp = gfc_get_cfi_desc_base_addr (cfi); - gfc_conv_descriptor_data_set (&block2, gfc, null_pointer_node); - tmp = gfc_get_cfi_desc_base_addr (cfi), tmp = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, tmp, null_pointer_node); - tmp = build3_v (COND_EXPR, tmp, tmp2, gfc_finish_block (&block2)); + tmp = build3_v (COND_EXPR, tmp, gfc_finish_block (&block2), + build_empty_stmt (input_location)); gfc_add_expr_to_block (&block, tmp); post_call: