https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87627
--- Comment #4 from Rich Felker <bugdal at aerifal dot cx> --- Thanks, that's helpful! For 64-bit what I mean is that it emits: pushq %r12 movl %edx, %r12d pushq %rbp movl %esi, %ebp pushq %rbx movl %edi, %ebx call bar movl %r12d, %edx movl %ebp, %esi movl %ebx, %edi popq %rbx popq %rbp popq %r12 jmp bah whereas it would be much more efficient to do: pushq %rdx pushq %rsi pushq %rdi call bar popq %rdi popq %rsi popq %rdx jmp bah