diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -3105,7 +3105,8 @@ (PatchedName.startswith("j") && ParseConditionCode(PatchedName.substr(1)) != X86::COND_INVALID))) { StringRef NextTok = Parser.getTok().getString(); - if (NextTok == "short") { + if (Parser.isParsingMasm() ? NextTok.equals_lower("short") + : NextTok == "short") { SMLoc NameEndLoc = NameLoc.getFromPointer(NameLoc.getPointer() + Name.size()); // Eat the short keyword. diff --git a/llvm/test/tools/llvm-ml/jmp_short.asm b/llvm/test/tools/llvm-ml/jmp_short.asm new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-ml/jmp_short.asm @@ -0,0 +1,21 @@ +; RUN: llvm-ml -filetype=s %s /Fo - | FileCheck %s + +.code + +t1: + jmp short t1_label + jmp SHORT t1_label + JmP Short t1_label + JMP SHORT t1_label + mov eax, eax +t1_label: + ret + +; CHECK-LABEL: t1: +; CHECK-NEXT: jmp t1_label +; CHECK-NEXT: jmp t1_label +; CHECK-NEXT: jmp t1_label +; CHECK-NEXT: jmp t1_label +; CHECK-NEXT: mov eax, eax + +end