https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77445
--- Comment #21 from Jeffrey A. Law <law at redhat dot com> --- In response to c#20. We have to be careful about fixing up the loop after rotation and avoid repeatedly peeling. The old threader dealt with those by being fairly conservative in passes before the loop optimizer and much more aggressive later. Zdenek's general argument was that peeling in the threader is fundamentally wrong because we really only know general loop structure, but not iteration information, data dependencies, etc (which directly affect vectorization). If peeling a loop inhibits vectorization, then we've most likely lost in a big way. I think the backward threader punts all these issues, which is probably the better choice than aggressively trying to handle them right now.