From 7ad3147f98eb4e84c24629e88a7d8bb1e04df3d4 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 6 Nov 2010 22:06:03 +0000 Subject: [PATCH] pass literals like $$1 through to the asm matcher. This isn't right yet, but doesn't hurt. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118359 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/AsmMatcherEmitter.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp index 151c1b2f4b1..248ce4f72b2 100644 --- a/utils/TableGen/AsmMatcherEmitter.cpp +++ b/utils/TableGen/AsmMatcherEmitter.cpp @@ -629,20 +629,16 @@ void MatchableInfo::TokenizeAsmString(const AsmMatcherInfo &Info) { break; case '$': { - // If this isn't "${", treat like a normal token. - if (i + 1 == String.size() || String[i + 1] != '{') { - if (InTok) { - AsmOperands.push_back(AsmOperand(String.slice(Prev, i))); - InTok = false; - } - Prev = i; - break; - } - if (InTok) { AsmOperands.push_back(AsmOperand(String.slice(Prev, i))); InTok = false; } + + // If this isn't "${", treat like a normal token. + if (i + 1 == String.size() || String[i + 1] != '{') { + Prev = i; + break; + } StringRef::iterator End = std::find(String.begin() + i, String.end(),'}'); assert(End != String.end() && "Missing brace in operand reference!"); @@ -1122,6 +1118,11 @@ void AsmMatcherInfo::BuildInfo() { continue; } + if (Token.size() > 1 && isdigit(Token[1])) { + Op.Class = getTokenClass(Token); + continue; + } + // Otherwise this is an operand reference. StringRef OperandName; if (Token[1] == '{')