https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88361
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2018-12-05 CC| |rguenth at gcc dot gnu.org Component|middle-end |tree-optimization Ever confirmed|0 |1 Severity|normal |enhancement --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Well, 9*9 == 81 is simply above the hard limit we put on the number of unrolled iterations (controlled by --param max-completely-peel-times where the default is 16). For a loop nest the limit is applied to individual loops which explains why you may see a total of 81 scalar iterations unrolled. One could say we have too many individual knobs (we do!) and that the number of copies limit is pointless since we have a size limit as well. But that doesn't work for the case where GCC thinks the loop shrinks by unrolling it. But yes, improvements are possible here (esp. with inner body unroll times in a nest vs. non-nest).