aboutsummaryrefslogtreecommitdiffstats
path: root/test/MC/Mips/mips_gprel16.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/Mips/mips_gprel16.s')
-rw-r--r--test/MC/Mips/mips_gprel16.s70
1 files changed, 70 insertions, 0 deletions
diff --git a/test/MC/Mips/mips_gprel16.s b/test/MC/Mips/mips_gprel16.s
new file mode 100644
index 0000000..716c75e
--- /dev/null
+++ b/test/MC/Mips/mips_gprel16.s
@@ -0,0 +1,70 @@
+// This addresses bug 14456. We were not writing
+// out the addend to the gprel16 relocation. The
+// addend is stored in the instruction immediate
+// field.
+
+// RUN: llvm-mc -mcpu=mips32r2 -triple=mipsel-pc-linux -filetype=obj -relocation-model=static %s -o - \
+// RUN: | llvm-objdump -disassemble -mattr +mips32r2 - \
+// RUN: | FileCheck %s
+
+ .text
+ .abicalls
+ .option pic0
+ .section .mdebug.abi32,"",@progbits
+ .file "/home/espindola/llvm/llvm/test/MC/Mips/mips_gprel16.ll"
+ .text
+ .globl testvar1
+ .align 2
+ .type testvar1,@function
+ .set nomips16
+ .ent testvar1
+testvar1: # @testvar1
+ .frame $sp,0,$ra
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+ .set noat
+# BB#0: # %entry
+// CHECK: lw ${{[0-9]+}}, 0($gp)
+ lw $1, %gp_rel(var1)($gp)
+ jr $ra
+ sltu $2, $zero, $1
+ .set at
+ .set macro
+ .set reorder
+ .end testvar1
+$tmp0:
+ .size testvar1, ($tmp0)-testvar1
+
+ .globl testvar2
+ .align 2
+ .type testvar2,@function
+ .set nomips16
+ .ent testvar2
+testvar2: # @testvar2
+ .frame $sp,0,$ra
+ .mask 0x00000000,0
+ .fmask 0x00000000,0
+ .set noreorder
+ .set nomacro
+ .set noat
+# BB#0: # %entry
+// CHECK: lw ${{[0-9]+}}, 4($gp)
+ lw $1, %gp_rel(var2)($gp)
+ jr $ra
+ sltu $2, $zero, $1
+ .set at
+ .set macro
+ .set reorder
+ .end testvar2
+$tmp1:
+ .size testvar2, ($tmp1)-testvar2
+
+ .type var1,@object # @var1
+ .local var1
+ .comm var1,4,4
+ .type var2,@object # @var2
+ .local var2
+ .comm var2,4,4
+