diff --git a/llvm/lib/MC/MCParser/MasmParser.cpp b/llvm/lib/MC/MCParser/MasmParser.cpp --- a/llvm/lib/MC/MCParser/MasmParser.cpp +++ b/llvm/lib/MC/MCParser/MasmParser.cpp @@ -1099,6 +1099,14 @@ tok = &Lexer.Lex(); } + // Recognize and bypass line continuations. + while (tok->is(AsmToken::BackSlash) && + Lexer.peekTok().is(AsmToken::EndOfStatement)) { + // Eat both the backslash and the end of statement. + Lexer.Lex(); + tok = &Lexer.Lex(); + } + if (tok->is(AsmToken::Eof)) { // If this is the end of an included file, pop the parent file off the // include stack. diff --git a/llvm/test/tools/llvm-ml/line_continuations.test b/llvm/test/tools/llvm-ml/line_continuations.test new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-ml/line_continuations.test @@ -0,0 +1,17 @@ +# RUN: llvm-ml -filetype=asm %s | FileCheck %s + +.code + +t1: +mov eax, \ + ebx +# CHECK: t1: +# CHECK-NEXT: mov eax, ebx + +t2: +mov eax, [ebx + \ + 1] +# CHECK: t2: +# CHECK-NEXT: mov eax, dword ptr [ebx + 1] + +END