http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21150
Denis Vlasenko <vda.linux at googlemail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vda.linux at googlemail dot | |com --- Comment #6 from Denis Vlasenko <vda.linux at googlemail dot com> 2013-01-18 11:12:18 UTC --- Guess this can be closed now. All four cases look good: $ cat helper-4.6.3-O2.asm helper-4.6.3-O2.o: file format elf32-i386 ... 00000000 <a>: 0: 0f b6 05 2d 00 00 00 movzbl 0x2d,%eax 7: 32 05 24 00 00 00 xor 0x24,%al d: 32 05 00 00 00 00 xor 0x0,%al 13: 32 05 36 00 00 00 xor 0x36,%al 19: 32 05 3f 00 00 00 xor 0x3f,%al 1f: 32 05 09 00 00 00 xor 0x9,%al 25: 32 05 12 00 00 00 xor 0x12,%al 2b: 32 05 1b 00 00 00 xor 0x1b,%al 31: c3 ret Disassembly of section .text.b: 00000000 <b>: 0: 0f b6 05 12 00 00 00 movzbl 0x12,%eax 7: 32 05 09 00 00 00 xor 0x9,%al d: 32 05 00 00 00 00 xor 0x0,%al 13: 32 05 1b 00 00 00 xor 0x1b,%al 19: 32 05 24 00 00 00 xor 0x24,%al 1f: 32 05 2d 00 00 00 xor 0x2d,%al 25: 32 05 36 00 00 00 xor 0x36,%al 2b: 32 05 3f 00 00 00 xor 0x3f,%al 31: c3 ret Disassembly of section .text.c: 00000000 <c>: 0: 0f b6 05 09 00 00 00 movzbl 0x9,%eax 7: 32 05 00 00 00 00 xor 0x0,%al d: 32 05 12 00 00 00 xor 0x12,%al 13: 32 05 1b 00 00 00 xor 0x1b,%al 19: 32 05 24 00 00 00 xor 0x24,%al 1f: 32 05 2d 00 00 00 xor 0x2d,%al 25: 32 05 36 00 00 00 xor 0x36,%al 2b: 32 05 3f 00 00 00 xor 0x3f,%al 31: c3 ret Disassembly of section .text.d: 00000000 <d>: 0: 0f b6 05 12 00 00 00 movzbl 0x12,%eax 7: 32 05 09 00 00 00 xor 0x9,%al d: 32 05 00 00 00 00 xor 0x0,%al 13: 32 05 1b 00 00 00 xor 0x1b,%al 19: 32 05 24 00 00 00 xor 0x24,%al 1f: 32 05 2d 00 00 00 xor 0x2d,%al 25: 32 05 36 00 00 00 xor 0x36,%al 2b: 32 05 3f 00 00 00 xor 0x3f,%al 31: c3 ret Curiously, -Os manages to squeeze two more bytes out of it. helper-4.6.3-Os.o: file format elf32-i386 00000000 <a>: 0: a0 2d 00 00 00 mov 0x2d,%al ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ better than movzbl 5: 33 05 24 00 00 00 xor 0x24,%eax << why %eax? oh well... b: 33 05 00 00 00 00 xor 0x0,%eax 11: 32 05 36 00 00 00 xor 0x36,%al 17: 32 05 3f 00 00 00 xor 0x3f,%al 1d: 32 05 09 00 00 00 xor 0x9,%al 23: 32 05 12 00 00 00 xor 0x12,%al 29: 32 05 1b 00 00 00 xor 0x1b,%al 2f: c3 ret