MIR Parser: Allow the dollar characters in all of the identifier tokens.

This commit modifies the machine instruction lexer so that it now accepts the
'$' characters in identifier tokens.

This change makes the syntax for unquoted global value tokens consistent with
the syntax for the global idenfitier tokens in the LLVM's assembly language.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242584 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Alex Lorenz 2015-07-17 22:48:04 +00:00
parent 4b50ecbf6a
commit 310bd3c747
2 changed files with 38 additions and 1 deletions

View File

@ -61,8 +61,11 @@ static Cursor skipWhitespace(Cursor C) {
return C;
}
/// Return true if the given character satisfies the following regular
/// expression: [-a-zA-Z$._0-9]
static bool isIdentifierChar(char C) {
return isalpha(C) || isdigit(C) || C == '_' || C == '-' || C == '.';
return isalpha(C) || isdigit(C) || C == '_' || C == '-' || C == '.' ||
C == '$';
}
static MIToken::TokenKind getIdentifierKind(StringRef Identifier) {

View File

@ -20,6 +20,20 @@
ret i32 %b
}
@.$0 = external global i32
@-_- = external global i32
@_-_a = external global i32
@$.-B = external global i32
define i32 @test() {
entry:
%a = load i32, i32* @.$0
store i32 %a, i32* @-_-
%b = load i32, i32* @_-_a
store i32 %b, i32* @$.-B
ret i32 %b
}
...
---
# CHECK: name: inc
@ -47,3 +61,23 @@ body:
- '%eax = INC32r %eax, implicit-def %eflags'
- 'RETQ %eax'
...
---
name: test
body:
- id: 0
name: entry
instructions:
# CHECK: , @".$0",
# CHECK: , @-_-,
# CHECK: , @_-_a,
# CHECK: , @"$.-B",
- '%rax = MOV64rm %rip, 1, _, @.$0, _'
- '%eax = MOV32rm killed %rax, 1, _, 0, _'
- '%rcx = MOV64rm %rip, 1, _, @-_-, _'
- 'MOV32mr killed %rcx, 1, _, 0, _, killed %eax'
- '%rax = MOV64rm %rip, 1, _, @_-_a, _'
- '%eax = MOV32rm killed %rax, 1, _, 0, _'
- '%rcx = MOV64rm %rip, 1, _, @$.-B, _'
- 'MOV32mr killed %rcx, 1, _, 0, _, %eax'
- 'RETQ %eax'
...