https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85712
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P2 CC| |wschmidt at gcc dot gnu.org Target Milestone|--- |8.2 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- I think we've been here before. stmt_cand_map gets stale somehow. Oh, it's actually basis->cand_stmt that is no longer in the IL. It gets replaced by replace_one_candidate: #0 gsi_replace (gsi=0x7fffffffd5b0, stmt=<gimple_assign 0x7ffff669db90>, update_eh_info=false) at /space/rguenther/src/gcc-slpcost/gcc/gimple-iterator.c:428 #1 0x0000000001ca03e7 in replace_one_candidate (c=0x2dcd280, i=0, basis_name=<ssa_name 0x7ffff66965a0>) at /space/rguenther/src/gcc-slpcost/gcc/gimple-ssa-strength-reduction.c:3741 #2 0x0000000001ca074b in replace_profitable_candidates (c=0x2dcd280) at /space/rguenther/src/gcc-slpcost/gcc/gimple-ssa-strength-reduction.c:3829 #3 0x0000000001ca09d9 in analyze_candidates_and_replace () at /space/rguenther/src/gcc-slpcost/gcc/gimple-ssa-strength-reduction.c:3917 #4 0x0000000001ca0bd0 in (anonymous namespace)::pass_strength_reduction::execute (this=0x2cf1490, fun=0x7ffff6a5c160) at /space/rguenther/src/gcc-slpcost/gcc/gimple-ssa-strength-reduction.c:3995 I suppose gsi_replace (&gsi, copy_stmt, false); c->cand_stmt = copy_stmt; ^^^ this is supposed to fix it up. But we fixup only this and following (next_interp) candidates - but this one has "previous" ones. 52 [24] _99 = S.17_130 * iftmp.23_30; MULT : (S.17_130 + 0) * iftmp.23_30 : integer(kind=8) basis: 49 dependent: 63 sibling: 0 next-interp: 53 dead-savings: 0 53 [24] _99 = S.17_130 * iftmp.23_30; MULT : (iftmp.23_30 + 0) * S.17_130 : integer(kind=8) basis: 48 dependent: 0 sibling: 0 next-interp: 0 dead-savings: 0 Bill?