Index: lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp =================================================================== --- lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp +++ lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp @@ -2477,14 +2477,9 @@ return MatchOperand_ParseFail; } - auto DB = AArch64DB::lookupDBByName(Tok.getString()); - if (!DB) { - TokError("invalid barrier option name"); - return MatchOperand_ParseFail; - } - // The only valid named option for ISB is 'sy' - if (Mnemonic == "isb" && DB->Encoding != AArch64DB::sy) { + auto DB = AArch64DB::lookupDBByName(Tok.getString()); + if (Mnemonic == "isb" && (!DB || DB->Encoding != AArch64DB::sy)) { TokError("'sy' or #imm operand expected"); return MatchOperand_ParseFail; } Index: test/MC/AArch64/basic-a64-diagnostics.s =================================================================== --- test/MC/AArch64/basic-a64-diagnostics.s +++ test/MC/AArch64/basic-a64-diagnostics.s @@ -3276,12 +3276,16 @@ isb #-1 isb #16 + isb sys // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}} // CHECK-ERROR-NEXT: isb #-1 // CHECK-ERROR-NEXT: ^ // CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}} // CHECK-ERROR-NEXT: isb #16 // CHECK-ERROR-NEXT: ^ +// CHECK-ERROR-NEXT: error: 'sy' or #imm operand expected +// CHECK-ERROR-NEXT: isb sys +// CHECK-ERROR-NEXT: ^ msr daifset, x4 msr spsel, #-1