http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52160
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-02-07 21:44:42 UTC --- Here is what GCC produces: .loc 1 7 0 leaq -4(%rbp), %rax movq %rax, %rsi movl $.LC1, %edi movl $0, %eax call __isoc99_scanf jmp .L2 .L5: .loc 1 8 0 nop .L2: .loc 1 8 0 is_stmt 0 discriminator 1 movl -4(%rbp), %eax testl %eax, %eax jne .L5 This looks fine to me. Which might mean this is an interesting issue with debugging info.