diff options
| author | Alex Lorenz <arphaman@gmail.com> | 2015-07-15 23:38:35 +0000 |
|---|---|---|
| committer | Alex Lorenz <arphaman@gmail.com> | 2015-07-15 23:38:35 +0000 |
| commit | 31d706836c83c690e1803dfb7a1e788e92c46da7 (patch) | |
| tree | f6ddf70ba7b1aaf7876c07e414458e2054e374eb /llvm/lib/CodeGen/MIRParser/MILexer.cpp | |
| parent | 6799e9b3e05d0dd9cee926689551fc0d592b96ba (diff) | |
| download | bcm5719-llvm-31d706836c83c690e1803dfb7a1e788e92c46da7.tar.gz bcm5719-llvm-31d706836c83c690e1803dfb7a1e788e92c46da7.zip | |
MIR Serialization: Serialize the jump table index operands.
Reviewers: Duncan P. N. Exon Smith
llvm-svn: 242358
Diffstat (limited to 'llvm/lib/CodeGen/MIRParser/MILexer.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/MIRParser/MILexer.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MILexer.cpp b/llvm/lib/CodeGen/MIRParser/MILexer.cpp index 482c33ae223..9babb3b0a3d 100644 --- a/llvm/lib/CodeGen/MIRParser/MILexer.cpp +++ b/llvm/lib/CodeGen/MIRParser/MILexer.cpp @@ -115,6 +115,23 @@ static Cursor maybeLexMachineBasicBlock( return C; } +static Cursor maybeLexIndex(Cursor C, MIToken &Token, StringRef Rule, + MIToken::TokenKind Kind) { + if (!C.remaining().startswith(Rule) || !isdigit(C.peek(Rule.size()))) + return None; + auto Range = C; + C.advance(Rule.size()); + auto NumberRange = C; + while (isdigit(C.peek())) + C.advance(); + Token = MIToken(Kind, Range.upto(C), APSInt(NumberRange.upto(C))); + return C; +} + +static Cursor maybeLexJumpTableIndex(Cursor C, MIToken &Token) { + return maybeLexIndex(C, Token, "%jump-table.", MIToken::JumpTableIndex); +} + static Cursor lexVirtualRegister(Cursor C, MIToken &Token) { auto Range = C; C.advance(); // Skip '%' @@ -209,6 +226,8 @@ StringRef llvm::lexMIToken( return R.remaining(); if (Cursor R = maybeLexMachineBasicBlock(C, Token, ErrorCallback)) return R.remaining(); + if (Cursor R = maybeLexJumpTableIndex(C, Token)) + return R.remaining(); if (Cursor R = maybeLexRegister(C, Token)) return R.remaining(); if (Cursor R = maybeLexGlobalValue(C, Token)) |

