From 50f2a3370d177f8fe9bea0461feb710523e048a2 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Mon, 4 Dec 2023 15:46:38 +0100 Subject: [PATCH] tree-optimization/112827 - more SCEV cprop fixes The insert iteration can be corrupted by foldings of replace_uses_by, within this particular PHI replacement but also with subsequent ones. Recompute the insert location before insertion instead. This fixes an obvserved ICE of gcc.dg/tree-ssa/ssa-sink-16.c. PR tree-optimization/112827 PR tree-optimization/112848 * tree-scalar-evolution.cc (final_value_replacement_loop): Compute the insert location for each insert. --- gcc/tree-scalar-evolution.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/tree-scalar-evolution.cc b/gcc/tree-scalar-evolution.cc index 7556d89e9f88..385fc64ab8ca 100644 --- a/gcc/tree-scalar-evolution.cc +++ b/gcc/tree-scalar-evolution.cc @@ -3739,7 +3739,6 @@ final_value_replacement_loop (class loop *loop) split_loop_exit_edge (exit); /* Set stmt insertion pointer. All stmts are inserted before this point. */ - gimple_stmt_iterator gsi = gsi_after_labels (exit->dest); class loop *ex_loop = superloop_at_depth (loop, @@ -3880,6 +3879,7 @@ final_value_replacement_loop (class loop *loop) gsi_next (&gsi2); } } + gimple_stmt_iterator gsi = gsi_after_labels (exit->dest); gsi_insert_seq_before (&gsi, stmts, GSI_SAME_STMT); if (dump_file) { -- 2.47.2