mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-23 02:29:18 +00:00
ARM assembly syntax uses @ for a comment, execpt for the second parameter of the .symver directive which requires @ as part of the symbol name. This commit fixes the parsing of this directive by adding a special case for ARM for this one argumnet. To make the change we had to move the AllowAtInIdentifier variable to the MCAsmLexer interface (from AsmLexer) and expose a setter for the value. The ELFAsmParser then toggles this value when parsing the second argument to the .symver directive for a target that uses @ as a comment symbol git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199339 91177308-0d34-0410-b5e6-96231b3b80d8
48 lines
1.0 KiB
ArmAsm
48 lines
1.0 KiB
ArmAsm
@ Tests to check that '@' does not get lexed as an identifier for arm
|
|
@ RUN: llvm-mc %s -triple=armv7-linux-gnueabi | FileCheck %s
|
|
@ RUN: llvm-mc %s -triple=armv7-linux-gnueabi 2>&1 | FileCheck %s --check-prefix=ERROR
|
|
|
|
foo:
|
|
bl boo@plt should be ignored
|
|
bl goo@plt
|
|
.long bar@got to parse this as a comment
|
|
.long baz@got
|
|
add r0, r0@ignore this extra junk
|
|
|
|
@ the symver directive should allow @ in the second symbol name
|
|
defined1:
|
|
defined2:
|
|
defined3:
|
|
bar:
|
|
.symver defined1, bar1@zed
|
|
.symver defined2, bar3@@zed
|
|
.symver defined3, bar5@@@zed
|
|
|
|
far:
|
|
.long baz@got
|
|
|
|
@CHECK-LABEL: foo:
|
|
@CHECK: bl boo
|
|
@CHECK-NOT: @
|
|
@CHECK: bl goo
|
|
@CHECK-NOT: @
|
|
@CHECK: .long bar
|
|
@CHECK-NOT: @
|
|
@CHECK: .long baz
|
|
@CHECK-NOT: @
|
|
@CHECK: add r0, r0
|
|
@CHECK-NOT: @
|
|
|
|
@CHECK-LABEL: bar:
|
|
@CHECK: bar1@zed = defined1
|
|
@CHECK: bar3@@zed = defined2
|
|
@CHECK: bar5@@@zed = defined3
|
|
|
|
@ Make sure we did not mess up the parser state and it still lexes
|
|
@ comments correctly by excluding the @ in normal symbols
|
|
@CHECK-LABEL: far:
|
|
@CHECK: .long baz
|
|
@CHECK-NOT: @
|
|
|
|
@ERROR-NOT: error:
|