Add missing check when MatchInstructionImpl() reports failure

llvm-svn: 209802
This commit is contained in:
Artyom Skrobov 2014-05-29 11:26:15 +00:00
parent 8745993ec4
commit 7e9e31ebaf
2 changed files with 6 additions and 0 deletions

View File

@ -3794,6 +3794,8 @@ bool AArch64AsmParser::MatchAndEmitInstruction(SMLoc IDLoc, unsigned &Opcode,
case Match_InvalidLabel:
case Match_MSR:
case Match_MRS: {
if (ErrorInfo >= Operands.size())
return Error(IDLoc, "too few operands for instruction");
// Any time we get here, there's nothing fancy to do. Just get the
// operand SMLoc and display the diagnostic.
SMLoc ErrorLoc = ((AArch64Operand *)Operands[ErrorInfo])->getStartLoc();

View File

@ -395,6 +395,7 @@
cmn w11, w12, lsr #-1
cmn w11, w12, lsr #32
cmn w19, wzr, asr #-1
cmn wsp, w0
cmn wzr, wzr, asr #32
cmn x9, x10, lsl #-1
cmn x9, x10, lsl #64
@ -417,6 +418,9 @@
// CHECK-ERROR-NEXT: error: expected integer shift amount
// CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: too few operands for instruction
// CHECK-ERROR-NEXT: cmn wsp, w0
// CHECK-ERROR-NEXT: ^
// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]
// CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32
// CHECK-ERROR-NEXT: ^