Teach the Thumb2 AsmParser to accept pre-indexed loads/stores with an offset of #-0.
authorOwen Anderson <resistor@mac.com>
Fri, 23 Sep 2011 22:25:02 +0000 (22:25 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 23 Sep 2011 22:25:02 +0000 (22:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140426 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/AsmParser/ARMAsmParser.cpp
test/MC/ARM/basic-thumb2-instructions.s

index 137e57072121f8774398d85a2aea6b3254e25079..e62899e7b02b4a94293afd2431baef7d35e32566 100644 (file)
@@ -780,7 +780,7 @@ public:
     // Immediate offset in range [-255, 255].
     if (!Mem.OffsetImm) return true;
     int64_t Val = Mem.OffsetImm->getValue();
-    return Val > -256 && Val < 256;
+    return (Val == INT32_MIN) || (Val > -256 && Val < 256);
   }
   bool isMemPosImm8Offset() const {
     if (Kind != Memory || Mem.OffsetRegNum != 0)
index 184bcdc1af02b068b07d51874a7a6b8ef8bb9de7..4caa0cd000f7cb3a96626400d662f4db4e54ba2a 100644 (file)
@@ -2236,6 +2236,7 @@ _func:
         strb lr, [r3], #255
         strb r9, [r2], #4
         strb r3, [sp], #-4
+        strb r4, [r8, #-0]!
 
 @ CHECK: strb  r5, [r5, #-4]           @ encoding: [0x05,0xf8,0x04,0x5c]
 @ CHECK: strb.w        r5, [r6, #32]           @ encoding: [0x86,0xf8,0x20,0x50]
@@ -2248,6 +2249,7 @@ _func:
 @ CHECK: strb  lr, [r3], #255          @ encoding: [0x03,0xf8,0xff,0xeb]
 @ CHECK: strb  r9, [r2], #4            @ encoding: [0x02,0xf8,0x04,0x9b]
 @ CHECK: strb  r3, [sp], #-4           @ encoding: [0x0d,0xf8,0x04,0x39]
+@ CHECK: strb  r4, [r8, #-0]!          @ encoding: [0x08,0xf8,0x00,0x4d]
 
 
 @------------------------------------------------------------------------------