| # Test case with a simple PIC-style jump table where the register containing |
| # the jump table address is defined outside of the basic block containing the |
| # jump on register. |
| # |
| # One of the destinations of the jump table points past the end of the function |
| # similar to the code generated for __builtin_unreachable(). |
| |
| .text |
| .globl main |
| .type main, @function |
| main: |
| .cfi_startproc |
| pushq %rbx |
| .cfi_def_cfa_offset 16 |
| .cfi_offset 3, -16 |
| leaq .LJUMPTABLE(%rip), %rcx |
| .L13: |
| cmpl $3, %edi |
| ja .L2 |
| |
| movslq (%rcx,%rdi,4), %rax |
| addq %rcx, %rax |
| jmp *%rax |
| |
| .L12: |
| movq %rdi, %rax |
| popq %rbx |
| .cfi_remember_state |
| .cfi_def_cfa_offset 8 |
| ret |
| |
| .L5: |
| .cfi_restore_state |
| addq $9, %rdi |
| jmp .L12 |
| .L6: |
| addq $8, %rdi |
| jmp .L12 |
| .L2: |
| addq $2, %rdi |
| jmp .L12 |
| .LUNREACHABLE: |
| .cfi_endproc |
| .size main, .-main |
| |
| .section .rodata |
| .align 4 |
| .LJUMPTABLE: |
| .long .L2-.LJUMPTABLE |
| .long .L6-.LJUMPTABLE |
| .long .L5-.LJUMPTABLE |
| .long .LUNREACHABLE-.LJUMPTABLE |