https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30908
--- Comment #23 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I am not sure this is that much worse any more because of improvements to
ivopts.
The inner loops are now:
.L2:
sbiw r24,1
brne .L2
..
.L3:
sbiw r24,1
brne .L3
vs
.L4:
sbiw r24,1
ldi r20,hi8(-1)
cpi r24,lo8(-1)
cpc r25,r20
brne .L4
at -Os, it is 0x22 in size without the attribute noinline/noipa.
it is 0x1e with noipa while 0x16 with noinline (because of cloning for 100).
So +12 bytes compared to the noinline case and +4 compared to the noipa case.
And still -8 bytes from 4.6.4
Basically ivopts improvements in GCC 4.6+ and other improvements since GCC 14
has made the sizes not too far apart from the noinline/noipa cases.