https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116290
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org --- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- We're finding one more BIV with -g due to @@ -78,14 +78,7 @@ (scalar = _32) (get_scalar_evolution (scalar = _32) - (scalar_evolution = _32)) -) -(analyze_scalar_evolution - (loop_nb = 1) - (scalar = _32) -(get_scalar_evolution - (scalar = _32) - (scalar_evolution = _32)) + (scalar_evolution = {_28, +, 1}_1)) ) that's actually a stale cache - calling scev_reset () at the start of IVOPTs fixes the compare-debug issue. -fdisable-tree-ldist avoids the issue. Oddly enough there's no IL difference between ivcanon (before ldist) and slp1. IVCANON calls scev_reset () unconditionally at the end. Ah, found it and testing fix. diff --git a/gcc/tree-loop-distribution.cc b/gcc/tree-loop-distribution.cc index f0430ede2f4..d7013ba5f8d 100644 --- a/gcc/tree-loop-distribution.cc +++ b/gcc/tree-loop-distribution.cc @@ -3565,8 +3565,8 @@ determine_reduction_stmt_1 (const loop_p loop, const basic_block *bbs) } } - for (gimple_stmt_iterator bsi = gsi_start_bb (bb); !gsi_end_p (bsi); - gsi_next_nondebug (&bsi), ++ninsns) + for (gimple_stmt_iterator bsi = gsi_start_nondebug_bb (bb); + !gsi_end_p (bsi); gsi_next_nondebug (&bsi), ++ninsns) { /* Bail out early for loops which are unlikely to match. */ if (ninsns > 16)