https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64322
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Target Milestone|--- |5.0 Status|NEW |RESOLVED --- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #10) > (In reply to Martin Liška from comment #9) > > Can the bug be marked as resolved? > > Did you check? At -Os we now produce for A > > movq $0, -16(%rsp) > movl $1, %eax > salq $32, %rax > movq %rax, -8(%rsp) > movq -16(%rsp), %rax > xorl %eax, %eax > ret movabs $0x100000000,%rax is 10 bytes while mov $0x1,%eax shl $0x20,%rax is also 9 bytes. Counting instructions on x86_64 with -Os is not always the best thing to do :). Yes it is fixed and even improved.