https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88760
--- Comment #32 from Wilco <wilco at gcc dot gnu.org> --- (In reply to Segher Boessenkool from comment #31) > Gimple passes know a lot about machine details, too. > > Irrespective of if this is "low-level" or "high-level", it should be done > earlier than it is now. It should either be done right after expand, or > somewhere before it. Doing it in gimple seems easiest? Expand is way too late. Unrolling is high-level because it relies on other high-level optimizations - for example to get addressing and induction variables right. Without that it's always a loss.