------- Comment #15 from vvv at ru dot ru 2009-04-29 19:16 ------- One more example 5-bytes nop between leaveq and retq.
# cat test.c void wait_for_enter() { int u = getchar(); while (!u) u = getchar()-13; } main() { wait_for_enter(); } # gcc -o t.out test.c -O2 -march=core2 -fno-omit-frame-pointer # objdump -d t.out ... 0000000000400540 <wait_for_enter>: 400540: 55 push %rbp 400541: 31 c0 xor %eax,%eax 400543: 48 89 e5 mov %rsp,%rbp 400546: e8 f5 fe ff ff callq 400440 <getc...@plt> 40054b: 85 c0 test %eax,%eax 40054d: 75 13 jne 400562 <wait_for_enter+0x22> 40054f: 90 nop 400550: 31 c0 xor %eax,%eax 400552: e8 e9 fe ff ff callq 400440 <getc...@plt> 400557: 83 f8 0d cmp $0xd,%eax 40055a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 400560: 74 ee je 400550 <wait_for_enter+0x10> 400562: c9 leaveq 400563: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) <--NONOPTIMAL! 400568: c3 retq 400569: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) 0000000000400570 <main>: 400570: 55 push %rbp 400571: 31 c0 xor %eax,%eax 400573: 48 89 e5 mov %rsp,%rbp 400576: e8 c5 ff ff ff callq 400540 <wait_for_enter> 40057b: c9 leaveq 40057c: c3 retq 40057d: 90 nop 40057e: 90 nop 40057f: 90 nop So bug unresolved. -- vvv at ru dot ru changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |UNCONFIRMED Resolution|INVALID | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39942