Correction to assert statemtent to allow 32-bit unsigned numbers with the top bit set.

This fixes an ARM assembler crash - regression test added.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207747 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Richard Barton 2014-05-01 11:37:44 +00:00
parent 06ace3c869
commit 8b88679164
2 changed files with 9 additions and 2 deletions

View File

@ -9487,8 +9487,8 @@ unsigned ARMAsmParser::validateTargetOperandClass(MCParsedAsmOperand *AsmOp,
int64_t Value;
if (!SOExpr->EvaluateAsAbsolute(Value))
return Match_Success;
assert((Value >= INT32_MIN && Value <= INT32_MAX) &&
"expression value must be representiable in 32 bits");
assert((Value >= INT32_MIN && Value <= UINT32_MAX) &&
"expression value must be representable in 32 bits");
}
break;
case MCK_GPRPair:

View File

@ -81,3 +81,10 @@ foo2:
@ CHECK-ERRORS: ^
@ CHECK-ERRORS: error: immediate expression for mov requires :lower16: or :upper16
@ CHECK-ERRORS: ^
and sp, r1, #80008000
and pc, r1, #80008000
@ CHECK-ERRORS: error: invalid operand for instruction
@ CHECK-ERRORS: error: invalid operand for instruction