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
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp
index 151c1b2..248ce4f 100644
--- a/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/utils/TableGen/AsmMatcherEmitter.cpp
@@ -629,20 +629,16 @@
       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 @@
         continue;
       }
 
+      if (Token.size() > 1 && isdigit(Token[1])) {
+        Op.Class = getTokenClass(Token);
+        continue;
+      }
+      
       // Otherwise this is an operand reference.
       StringRef OperandName;
       if (Token[1] == '{')