[llvm] r242584 - MIR Parser: Allow the dollar characters in all of the identifier tokens.
Alex Lorenz
arphaman at gmail.com
Fri Jul 17 15:48:04 PDT 2015
Author: arphaman
Date: Fri Jul 17 17:48:04 2015
New Revision: 242584
URL: http://llvm.org/viewvc/llvm-project?rev=242584&view=rev
Log:
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.
Modified:
llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp
llvm/trunk/test/CodeGen/MIR/X86/global-value-operands.mir
Modified: llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp?rev=242584&r1=242583&r2=242584&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp (original)
+++ llvm/trunk/lib/CodeGen/MIRParser/MILexer.cpp Fri Jul 17 17:48:04 2015
@@ -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) {
Modified: llvm/trunk/test/CodeGen/MIR/X86/global-value-operands.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MIR/X86/global-value-operands.mir?rev=242584&r1=242583&r2=242584&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MIR/X86/global-value-operands.mir (original)
+++ llvm/trunk/test/CodeGen/MIR/X86/global-value-operands.mir Fri Jul 17 17:48:04 2015
@@ -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'
+...
More information about the llvm-commits
mailing list