From 27304cb1892b9a745451f4a09f06ff195a7ae4db Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sun, 16 Feb 2014 04:56:31 +0000 Subject: [PATCH] MCAsmParser: relax declaration parsing The Linux kernel defines empty macros for compatibility with ARM UAL syntax. The comma after the name is optional, and if present can be safely lexed. This improves compatibility with the GNU assembler. llvm-svn: 201474 --- llvm/lib/MC/MCParser/AsmParser.cpp | 5 ++++- llvm/test/MC/AsmParser/macros-argument-parsing.s | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 llvm/test/MC/AsmParser/macros-argument-parsing.s diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 5f92795..03b004e 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -3152,12 +3152,15 @@ bool AsmParser::parseDirectiveMacrosOnOff(StringRef Directive) { } /// parseDirectiveMacro -/// ::= .macro name [parameters] +/// ::= .macro name[,] [parameters] bool AsmParser::parseDirectiveMacro(SMLoc DirectiveLoc) { StringRef Name; if (parseIdentifier(Name)) return TokError("expected identifier in '.macro' directive"); + if (getLexer().is(AsmToken::Comma)) + Lex(); + MCAsmMacroParameters Parameters; while (getLexer().isNot(AsmToken::EndOfStatement)) { MCAsmMacroParameter Parameter; diff --git a/llvm/test/MC/AsmParser/macros-argument-parsing.s b/llvm/test/MC/AsmParser/macros-argument-parsing.s new file mode 100644 index 0000000..097a270 --- /dev/null +++ b/llvm/test/MC/AsmParser/macros-argument-parsing.s @@ -0,0 +1,10 @@ +# RUN: llvm-mc -triple i386 -filetype asm -o - %s | FileCheck %s + + .macro it, cond + .endm + + it ne + .long 1 + +# CHECK: .long 1 + -- 2.7.4