From: Richard Biener Date: Mon, 4 Dec 2023 14:46:38 +0000 (+0100) Subject: tree-optimization/112827 - more SCEV cprop fixes X-Git-Tag: basepoints/gcc-15~4007 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50f2a3370d177f8fe9bea0461feb710523e048a2;p=thirdparty%2Fgcc.git 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. --- 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) {