[llvm] r260305 - [mips] Extend MipsAsmParser class to handle %got(sym + const) expressions
Simon Atanasyan via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 9 14:31:49 PST 2016
Author: atanasyan
Date: Tue Feb 9 16:31:49 2016
New Revision: 260305
URL: http://llvm.org/viewvc/llvm-project?rev=260305&view=rev
Log:
[mips] Extend MipsAsmParser class to handle %got(sym + const) expressions
Now the parser supports `%got(sym)` expressions only but `%got(sym + const)`
variant is also valid and accepted by GAS.
Differential Revision: http://reviews.llvm.org/D16885
Added:
llvm/trunk/test/MC/Mips/got-rel-expr.s
Modified:
llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
Modified: llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp?rev=260305&r1=260304&r2=260305&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Tue Feb 9 16:31:49 2016
@@ -4018,6 +4018,7 @@ const MCExpr *MipsAsmParser::evaluateRel
Val = MCE->getValue() & 0xffff;
break;
case MCSymbolRefExpr::VK_Mips_ABS_HI:
+ case MCSymbolRefExpr::VK_Mips_GOT:
// Get the 2nd 16-bits. Also add 1 if bit 15 is 1, to compensate for low
// 16 bits being negative.
Val = ((MCE->getValue() + 0x8000) >> 16) & 0xffff;
Added: llvm/trunk/test/MC/Mips/got-rel-expr.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/got-rel-expr.s?rev=260305&view=auto
==============================================================================
--- llvm/trunk/test/MC/Mips/got-rel-expr.s (added)
+++ llvm/trunk/test/MC/Mips/got-rel-expr.s Tue Feb 9 16:31:49 2016
@@ -0,0 +1,20 @@
+# Check that llvm-mc accepts arithmetic expression
+# as an argument of the %got relocation.
+
+# RUN: llvm-mc -filetype=obj -triple=mips-unknown-linux %s \
+# RUN: | llvm-objdump -d -r - | FileCheck %s
+
+ .text
+foo:
+ lw $t0,%got($loc+0x10004)($gp)
+# CHECK: 0: 8f 88 00 01 lw $8, 1($gp)
+# CHECK: 00000000: R_MIPS_GOT16 $loc
+ addi $t0,$t0,%lo($loc+0x10004)
+# CHECK: 4: 21 08 00 04 addi $8, $8, 4
+# CHECK: 00000004: R_MIPS_LO16 $loc
+
+ .data
+$loc:
+ .word 0
+ .space 0x10000
+ .word 0
More information about the llvm-commits
mailing list