https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81090
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- So amending scev_reset to do free_numbers_of_iterations_estimates causes issues with complete peeling which uses gimple_duplicate_loop_to_header_edge which calls scev_reset (peeling invalidates cached CHRECs for the loop header PHIs and derived SSA names) but then using ->bounds to mark paths in the loop copies as gcc_unreachable () (remove_exits_and_undefined_stmts). That looks fishy somewhat, also because we defer this operation when processing adjacent loops which will then eventually clear estimates before the 2nd adjacent loop is processed (that might still work in the end if we only reset estimates for a single loop at a time or estimates are computed on-demand again when using the correct API). Even more ugly so we ggc_free bounds ...