diff options
-rw-r--r-- | llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 2 | ||||
-rw-r--r-- | llvm/test/MC/ARM/diagnostics.s | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index 0f31fd218e0..6a3dba75d96 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -5097,7 +5097,7 @@ bool ARMAsmParser::parseMemRegOffsetShift(ARM_AM::ShiftOpc &St, SMLoc Loc = Parser.getTok().getLoc(); const AsmToken &Tok = Parser.getTok(); if (Tok.isNot(AsmToken::Identifier)) - return true; + return Error(Loc, "illegal shift operator"); StringRef ShiftName = Tok.getString(); if (ShiftName == "lsl" || ShiftName == "LSL" || ShiftName == "asl" || ShiftName == "ASL") diff --git a/llvm/test/MC/ARM/diagnostics.s b/llvm/test/MC/ARM/diagnostics.s index 223dbab8735..92272f68da5 100644 --- a/llvm/test/MC/ARM/diagnostics.s +++ b/llvm/test/MC/ARM/diagnostics.s @@ -60,6 +60,7 @@ ldr r4, [r5, r6, ror #-1] pld r4, [r5, r6, ror #32] pld r4, [r5, r6, rrx #0] + ldr r4, [r5, r6, not_a_shift] @ CHECK-ERRORS: error: shift amount must be an immediate @ CHECK-ERRORS: str r1, [r2, r3, lsl #invalid] @@ -89,6 +90,8 @@ @ CHECK-ERRORS: pld r4, [r5, r6, ror #32] @ CHECK-ERRORS: error: ']' expected @ CHECK-ERRORS: pld r4, [r5, r6, rrx #0] +@ CHECK-ERRORS: error: illegal shift operator +@ CHECK-ERRORS: ldr r4, [r5, r6, not_a_shift] @ Out of range 16-bit immediate on BKPT bkpt #65536 |