| // This test case will cause an internal EK_GPRel64BlockAddress to be |
| // produced. This was not handled for direct object and an assertion |
| // to occur. This is a variation on test case test/CodeGen/Mips/do_switch.ll |
| |
| // RUN: llvm-mc < %s -filetype=obj -triple=mips64-pc-linux -mcpu=mips64 -target-abi=n64 |
| |
| .text |
| .abicalls |
| .section .mdebug.abi64,"",@progbits |
| .file "/home/espindola/llvm/llvm/test/MC/Mips/do_switch.ll" |
| .text |
| .globl main |
| .align 3 |
| .type main,@function |
| .set nomips16 |
| .ent main |
| main: # @main |
| .frame $sp,16,$ra |
| .mask 0x00000000,0 |
| .fmask 0x00000000,0 |
| .set noreorder |
| .set nomacro |
| .set noat |
| # %bb.0: # %entry |
| daddiu $sp, $sp, -16 |
| lui $1, %hi(%neg(%gp_rel(main))) |
| daddu $2, $1, $25 |
| addiu $1, $zero, 2 |
| sw $1, 12($sp) |
| lw $1, 12($sp) |
| sltiu $4, $1, 4 |
| dsll $3, $1, 32 |
| bnez $4, $BB0_2 |
| nop |
| $BB0_1: # %bb4 |
| addiu $2, $zero, 4 |
| jr $ra |
| daddiu $sp, $sp, 16 |
| $BB0_2: # %entry |
| daddiu $1, $2, %lo(%neg(%gp_rel(main))) |
| dsrl $2, $3, 32 |
| daddiu $3, $zero, 8 |
| dmult $2, $3 |
| mflo $2 |
| ld $3, %got_page($JTI0_0)($1) |
| daddu $2, $2, $3 |
| ld $2, %got_ofst($JTI0_0)($2) |
| daddu $1, $2, $1 |
| jr $1 |
| nop |
| $BB0_3: # %bb5 |
| addiu $2, $zero, 1 |
| jr $ra |
| daddiu $sp, $sp, 16 |
| $BB0_4: # %bb1 |
| addiu $2, $zero, 2 |
| jr $ra |
| daddiu $sp, $sp, 16 |
| $BB0_5: # %bb2 |
| addiu $2, $zero, 0 |
| jr $ra |
| daddiu $sp, $sp, 16 |
| $BB0_6: # %bb3 |
| addiu $2, $zero, 3 |
| jr $ra |
| daddiu $sp, $sp, 16 |
| .set at |
| .set macro |
| .set reorder |
| .end main |
| $tmp0: |
| .size main, ($tmp0)-main |
| .section .rodata,"a",@progbits |
| .align 3 |
| $JTI0_0: |
| .gpdword ($BB0_3) |
| .gpdword ($BB0_4) |
| .gpdword ($BB0_5) |
| .gpdword ($BB0_6) |
| |
| |
| .text |