$ cat output-block.c int flush_output(void) { return add_block(); } $ gcc -O3 -S output-block.c $ cat output-block.s .file "output-block.c" .text .p2align 4,,15 .globl flush_output .type flush_output, @function flush_output: pushl %ebp movl %esp, %ebp popl %ebp jmp add_block .size flush_output, .-flush_output .ident "GCC: (GNU) 4.1.0 20050315 (experimental)" .section .note.GNU-stack,"",@progbits The operations on ebp aren't necessary.
-fomit-frame-pointer "fixes" the problem, well this option really should be enabled by default and that is PR 13822 which I am marking this bug as a dup of. *** This bug has been marked as a duplicate of 13822 ***