diff options
author | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-02-16 04:56:31 +0000 |
---|---|---|
committer | Saleem Abdulrasool <compnerd@compnerd.org> | 2014-02-16 04:56:31 +0000 |
commit | 27304cb1892b9a745451f4a09f06ff195a7ae4db (patch) | |
tree | 4b2fcde693cb975f402ef5e86f4edab02c484508 | |
parent | ff8e5f2587145bdd2f4194ab0472889933ee4fb0 (diff) | |
download | bcm5719-llvm-27304cb1892b9a745451f4a09f06ff195a7ae4db.tar.gz bcm5719-llvm-27304cb1892b9a745451f4a09f06ff195a7ae4db.zip |
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
-rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 5 | ||||
-rw-r--r-- | llvm/test/MC/AsmParser/macros-argument-parsing.s | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index 5f92795b49d..03b004ecfac 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 00000000000..097a2702a06 --- /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 + |