https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83913
--- Comment #2 from Alexander Monakov <amonakov at gcc dot gnu.org> --- Thanks. While I could not find why we blow up with Haswell tuning but not say Sandybridge, the main problem is that with all those -fno-... flags we have a few insns of the form rK = rN where rN is loop-invariant and rK is unused, so the insns are movable anywhere, including across the loop backedge (since pipelining is enabled). We try to fill schedule holes (caused by long-latency integer division insns) by repeatedly pipelining them. Eventually sched_times cut off should prevent that, but it doesn't grow as intended because bookkeeping copies get sched_times 0, and expr merging takes the minimum of two sched_times.