<div dir="ltr">Hi Rich,<div><br></div><div>The assert statement now looks rather odd. From the testcase it looks like Value needs to be unsigned, something like:</div><div><br></div><div>+   assert((uint64_t)Value <= UINT32_MAX);</div>
<div><br></div><div>Or does that code also need to handle signed values for other cases?</div><div><br></div><div>Cheers,</div><div><br></div><div>James</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On 1 May 2014 12:37, Richard Barton <span dir="ltr"><<a href="mailto:richard.barton@arm.com" target="_blank">richard.barton@arm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: rbarton<br>
Date: Thu May  1 06:37:44 2014<br>
New Revision: 207747<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=207747&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=207747&view=rev</a><br>
Log:<br>
Correction to assert statemtent to allow 32-bit unsigned numbers with the top bit set.<br>
<br>
This fixes an ARM assembler crash - regression test added.<br>
<br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp<br>
    llvm/trunk/test/MC/ARM/thumb2-diagnostics.s<br>
<br>
Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=207747&r1=207746&r2=207747&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=207747&r1=207746&r2=207747&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)<br>
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Thu May  1 06:37:44 2014<br>
@@ -9487,8 +9487,8 @@ unsigned ARMAsmParser::validateTargetOpe<br>
       int64_t Value;<br>
       if (!SOExpr->EvaluateAsAbsolute(Value))<br>
         return Match_Success;<br>
-      assert((Value >= INT32_MIN && Value <= INT32_MAX) &&<br>
-             "expression value must be representiable in 32 bits");<br>
+      assert((Value >= INT32_MIN && Value <= UINT32_MAX) &&<br>
+             "expression value must be representable in 32 bits");<br>
     }<br>
     break;<br>
   case MCK_GPRPair:<br>
<br>
Modified: llvm/trunk/test/MC/ARM/thumb2-diagnostics.s<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/thumb2-diagnostics.s?rev=207747&r1=207746&r2=207747&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ARM/thumb2-diagnostics.s?rev=207747&r1=207746&r2=207747&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/test/MC/ARM/thumb2-diagnostics.s (original)<br>
+++ llvm/trunk/test/MC/ARM/thumb2-diagnostics.s Thu May  1 06:37:44 2014<br>
@@ -81,3 +81,10 @@ foo2:<br>
 @ CHECK-ERRORS:                  ^<br>
 @ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16<br>
 @ CHECK-ERRORS:                  ^<br>
+<br>
+        and sp, r1, #80008000<br>
+        and pc, r1, #80008000<br>
+@ CHECK-ERRORS: error: invalid operand for instruction<br>
+@ CHECK-ERRORS: error: invalid operand for instruction<br>
+<br>
+<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>