diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-11-06 22:06:03 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-11-06 22:06:03 +0000 |
| commit | d6746d5b46acdc9e5bfa1077ac3b11d9cd59c669 (patch) | |
| tree | d4e43046eb94531721b7ccce9a235d9c8c9b4844 /llvm/utils/TableGen/AsmMatcherEmitter.cpp | |
| parent | 2abbeded9899f634cea29df429e7ab7ae55d22c1 (diff) | |
| download | bcm5719-llvm-d6746d5b46acdc9e5bfa1077ac3b11d9cd59c669.tar.gz bcm5719-llvm-d6746d5b46acdc9e5bfa1077ac3b11d9cd59c669.zip | |
pass literals like $$1 through to the asm matcher. This isn't right yet, but doesn't hurt.
llvm-svn: 118359
Diffstat (limited to 'llvm/utils/TableGen/AsmMatcherEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/AsmMatcherEmitter.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp index 151c1b2f4b1..248ce4f72b2 100644 --- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp +++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp @@ -629,21 +629,17 @@ void MatchableInfo::TokenizeAsmString(const AsmMatcherInfo &Info) { break; case '$': { + 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] != '{') { - 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; - } - StringRef::iterator End = std::find(String.begin() + i, String.end(),'}'); assert(End != String.end() && "Missing brace in operand reference!"); size_t EndPos = End - String.begin(); @@ -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] == '{') |

