Fix a crasher in Thumb2 MOV-immediate encoding for certain inputs.
authorOwen Anderson <resistor@mac.com>
Wed, 14 Sep 2011 22:46:14 +0000 (22:46 +0000)
committerOwen Anderson <resistor@mac.com>
Wed, 14 Sep 2011 22:46:14 +0000 (22:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139747 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 4314d743b7be99009a5b1786df6ae2a3f733affd..59e5e84c7e4ce7eba653c13cd1864eb2201634bb 100644 (file)
@@ -3261,7 +3261,7 @@ bool ARMAsmParser::shouldOmitCCOutOperand(StringRef Mnemonic,
   // We do this as post-processing of the explicit operands rather than just
   // conditionally adding the cc_out in the first place because we need
   // to check the type of the parsed immediate operand.
-  if (Mnemonic == "mov" && Operands.size() > 4 &&
+  if (Mnemonic == "mov" && Operands.size() > 4 && !isThumb() &&
       !static_cast<ARMOperand*>(Operands[4])->isARMSOImm() &&
       static_cast<ARMOperand*>(Operands[4])->isImm0_65535Expr() &&
       static_cast<ARMOperand*>(Operands[1])->getReg() == 0)
index bbc30663adf5c621abfab077a30d30e3c281d3f3..5f0ccf12c5e23f3cbb0263b9f97b1ea2d17380d2 100644 (file)
@@ -1013,6 +1013,7 @@ _func:
         movseq r1, #12
         moveq r1, #12
         movne.w r1, #12
+        mov.w r6, #450
 
 @ CHECK: movs  r1, #21                 @ encoding: [0x15,0x21]
 @ CHECK: movs.w        r1, #21                 @ encoding: [0x5f,0xf0,0x15,0x01]
@@ -1027,6 +1028,7 @@ _func:
 @ CHECK: movseq.w      r1, #12         @ encoding: [0x5f,0xf0,0x0c,0x01]
 @ CHECK: moveq r1, #12                 @ encoding: [0x0c,0x21]
 @ CHECK: movne.w r1, #12                @ encoding: [0x4f,0xf0,0x0c,0x01]
+@ CHECK: mov.w r6, #450                @ encoding: [0x4f,0xf4,0xe1,0x76]
 
 
 @------------------------------------------------------------------------------