summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/AsmMatcherEmitter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-11-06 22:06:03 +0000
committerChris Lattner <sabre@nondot.org>2010-11-06 22:06:03 +0000
commitd6746d5b46acdc9e5bfa1077ac3b11d9cd59c669 (patch)
treed4e43046eb94531721b7ccce9a235d9c8c9b4844 /llvm/utils/TableGen/AsmMatcherEmitter.cpp
parent2abbeded9899f634cea29df429e7ab7ae55d22c1 (diff)
downloadbcm5719-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.cpp19
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] == '{')
OpenPOWER on IntegriCloud