https://gcc.gnu.org/bugzilla/show_bug.cgi?id=37710
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- and yes we get code that looks like: xorl %eax, %eax cmpl $-34, %edi jb .L1 negl %edi cmpl $34, %edi ja .L3 jmp *.L5(,%rdi,8) .section .rodata .align 8 .align 4 .L5: .quad .L3 .quad .L3 Even though we should something like: xorl %eax, %eax cmpl $-34, %edi jb .L1 negl %edi jmp *.L5(,%rdi,8) .section .rodata .align 8 .align 4 .L5: .quad .L3