https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67351
Allan Jensen <linux at carewolf dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #10 from Allan Jensen <linux at carewolf dot com> --- With a recent gcc 6 this example appears perfectly optimized: Disassembly of section .text: 0000000000000000 <_Z4testv>: 0: 48 83 ec 08 sub $0x8,%rsp 4: e8 00 00 00 00 callq 9 <_Z4testv+0x9> 9: 25 ff ff 00 ff and $0xff00ffff,%eax e: 48 83 c4 08 add $0x8,%rsp 12: 0d 00 00 f0 00 or $0xf00000,%eax 17: c3 retq 18: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 1f: 00 0000000000000020 <_Z6test64v>: 20: 48 83 ec 08 sub $0x8,%rsp 24: e8 00 00 00 00 callq 29 <_Z6test64v+0x9> 29: 48 ba ff ff ff ff 00 movabs $0xffff0000ffffffff,%rdx 30: 00 ff ff 33: 48 83 c4 08 add $0x8,%rsp 37: 48 21 d0 and %rdx,%rax 3a: 48 ba 00 00 00 00 f0 movabs $0xf0f000000000,%rdx 41: f0 00 00 44: 48 09 d0 or %rdx,%rax 47: c3 retq