https://gcc.gnu.org/g:c436d434d6aef59aa42f7790ce615f0dfaaf9f3f
commit c436d434d6aef59aa42f7790ce615f0dfaaf9f3f Author: Mikael Morin <mik...@gcc.gnu.org> Date: Fri Apr 18 15:16:27 2025 +0200 Correction régression finalize_25 (nombre itérations boucle) Diff: --- gcc/fortran/class.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/class.cc b/gcc/fortran/class.cc index f7442f5c22ec..23d8701ac44f 100644 --- a/gcc/fortran/class.cc +++ b/gcc/fortran/class.cc @@ -2131,7 +2131,13 @@ generate_finalization_wrapper (gfc_symbol *derived, gfc_namespace *ns, iter = gfc_get_iterator (); iter->var = gfc_lval_expr_from_sym (idx); iter->start = gfc_get_int_expr (gfc_index_integer_kind, NULL, 0); - iter->end = gfc_lval_expr_from_sym (nelem); + iter->end = gfc_get_expr (); + iter->end->expr_type = EXPR_OP; + iter->end->where = gfc_current_locus; + iter->end->value.op.op = INTRINSIC_MINUS; + iter->end->value.op.op1 = gfc_lval_expr_from_sym (nelem); + iter->end->value.op.op2 = gfc_get_int_expr (gfc_index_integer_kind, NULL, 1); + iter->end->ts = iter->end->value.op.op1->ts; iter->step = gfc_get_int_expr (gfc_index_integer_kind, NULL, 1); block->next = gfc_get_code (EXEC_DO); block = block->next; @@ -2196,7 +2202,13 @@ finish_assumed_rank: iter = gfc_get_iterator (); iter->var = gfc_lval_expr_from_sym (idx); iter->start = gfc_get_int_expr (gfc_index_integer_kind, NULL, 0); - iter->end = gfc_lval_expr_from_sym (nelem); + iter->end = gfc_get_expr (); + iter->end->expr_type = EXPR_OP; + iter->end->where = gfc_current_locus; + iter->end->value.op.op = INTRINSIC_MINUS; + iter->end->value.op.op1 = gfc_lval_expr_from_sym (nelem); + iter->end->value.op.op2 = gfc_get_int_expr (gfc_index_integer_kind, NULL, 1); + iter->end->ts = iter->end->value.op.op1->ts; iter->step = gfc_get_int_expr (gfc_index_integer_kind, NULL, 1); last_code->next = gfc_get_code (EXEC_DO); last_code = last_code->next;