[PATCH] D68764: [ARM][AsmParser] handles offset expression in parentheses

Jian Cai via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 14 15:21:54 PDT 2019


This revision was automatically updated to reflect the committed changes.
Closed by commit rGe9089c223cea: [ARM][AsmParser] handles offset expression in parentheses (authored by jcai19).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68764/new/

https://reviews.llvm.org/D68764

Files:
  llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  llvm/test/MC/ARM/gas-compl-mem-offset-paren.s


Index: llvm/test/MC/ARM/gas-compl-mem-offset-paren.s
===================================================================
--- /dev/null
+++ llvm/test/MC/ARM/gas-compl-mem-offset-paren.s
@@ -0,0 +1,20 @@
+@ RUN: llvm-mc -triple=arm-linux-gnueabi < %s | FileCheck %s
+
+@ CHECK: ldr	r12, [sp, #15]
+ldr r12, [sp, (15)]
+
+@ CHECK: ldr	r12, [sp, #15]
+ldr r12, [sp, #(15)]
+
+@ CHECK: ldr	r12, [sp, #15]
+ldr r12, [sp, $(15)]
+
+@ CHECK: ldr	r12, [sp, #100]
+ldr r12, [sp, (((15+5)*5))]
+
+@ CHECK: ldr	r12, [sp, #100]
+ldr r12, [sp, #(((15+5)*5))]
+
+
+@ CHECK: ldr	r12, [sp, #100]
+ldr r12, [sp, $(((15+5)*5))]
Index: llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
===================================================================
--- llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -5733,14 +5733,16 @@
     return false;
   }
 
-  // If we have a '#', it's an immediate offset, else assume it's a register
-  // offset. Be friendly and also accept a plain integer (without a leading
-  // hash) for gas compatibility.
+  // If we have a '#' or '$', it's an immediate offset, else assume it's a
+  // register offset. Be friendly and also accept a plain integer or expression
+  // (without a leading hash) for gas compatibility.
   if (Parser.getTok().is(AsmToken::Hash) ||
       Parser.getTok().is(AsmToken::Dollar) ||
+      Parser.getTok().is(AsmToken::LParen) ||
       Parser.getTok().is(AsmToken::Integer)) {
-    if (Parser.getTok().isNot(AsmToken::Integer))
-      Parser.Lex(); // Eat '#' or '$'.
+    if (Parser.getTok().is(AsmToken::Hash) ||
+        Parser.getTok().is(AsmToken::Dollar))
+      Parser.Lex(); // Eat '#' or '$'
     E = Parser.getTok().getLoc();
 
     bool isNegative = getParser().getTok().is(AsmToken::Minus);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D68764.224918.patch
Type: text/x-patch
Size: 1797 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191014/60bb8a76/attachment.bin>


More information about the llvm-commits mailing list