https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99823
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2021-03-30 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- -funroll-all-loops applies to the RTL loop unroller, the GIMPLE level concludes: Estimating sizes for loop 1 BB: 3, after_exit: 0 size: 1 _1 = MEM[(int (*<T9564>) (int) &)__for_begin_21]; size: 5 _13 = _1 (s_20); size: 1 __for_begin_14 = __for_begin_21 + 8; size: 1 ivtmp_4 = ivtmp_11 - 1; Induction variable computation will be folded away. size: 2 if (ivtmp_4 != 0) Exit condition will be eliminated in peeled copies. Exit condition will be eliminated in last copy. Constant conditional. BB: 5, after_exit: 1 size: 10-3, last_iteration: 10-3 Loop size: 10 Estimated size after unrolling: 14 Not unrolling loop 1: contains call and code would grow. so it concludes unrolling isn't profitable (but it would turn indirect into direct calls).