https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89664
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 #3 from Richard Biener <rguenth at gcc dot gnu.org> --- We're leaving occ_head with stale data. Patch I am testing: Index: tree-ssa-math-opts.c =================================================================== --- tree-ssa-math-opts.c (revision 269212) +++ tree-ssa-math-opts.c (working copy) @@ -799,7 +799,7 @@ execute_cse_reciprocals_1 (gimple_stmt_i /* If it is more profitable to optimize 1 / x, don't optimize 1 / (x * x). */ if (sqrt_recip_count > square_recip_count) - return; + goto out; /* Do the expensive part only if we can hope to optimize something. */ if (count + square_recip_count >= threshold && count >= 1) @@ -842,6 +842,7 @@ execute_cse_reciprocals_1 (gimple_stmt_i } } +out: for (occ = occ_head; occ; ) occ = free_bb (occ);