https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117103
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- > mov ecx, 2 is 5 bytes: b9 02 00 00 00 While pop/push is only 3 bytes: push 2 6a 02 pop rcx 59 It might be 2 instructions vs 1 instruction but -Oz is making the smallest code with no trade offs for slight performance improvements.