Integrated assembler incorrectly lexes ARM-style comments
authorDavid Peixotto <dpeixott@codeaurora.org>
Fri, 6 Dec 2013 20:35:58 +0000 (20:35 +0000)
committerDavid Peixotto <dpeixott@codeaurora.org>
Fri, 6 Dec 2013 20:35:58 +0000 (20:35 +0000)
commitd05b93515d19f2462909676db3e32ea08a6e359f
tree2760a61fb5f77553a1012da407931d0c3085db0d
parent3221b5bd23ed14b381b29652b1756ef7e40e7f02
Integrated assembler incorrectly lexes ARM-style comments

The integrated assembler fails to properly lex arm comments when
they are adjacent to an identifier in the input stream. The reason
is that the arm comment symbol '@' is also used as symbol variant in
other assembly languages so when lexing an identifier it allows the
'@' symbol as part of the identifier.

Example:
  $ cat comment.s
  foo:
    add r0, r0@got to parse this as a comment

  $ llvm-mc -triple armv7 comment.s
  comment.s:4:18: error: unexpected token in argument list
    add r0, r0@got to parse this as a comment
                   ^
This should be parsed as correctly as `add r0, r0`.

This commit modifes the assembly lexer to not include the '@' symbol
in identifiers when lexing for targets that use '@' for comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196607 91177308-0d34-0410-b5e6-96231b3b80d8
lib/MC/MCParser/AsmLexer.cpp
test/MC/ARM/comment.s [new file with mode: 0644]