diff --git a/utils/TableGen/CodeGenDAGPatterns.cpp b/utils/TableGen/CodeGenDAGPatterns.cpp
index e668468..05bbc0a 100644
--- a/utils/TableGen/CodeGenDAGPatterns.cpp
+++ b/utils/TableGen/CodeGenDAGPatterns.cpp
@@ -2025,7 +2025,7 @@
           }
         }
         else {
-          ListTy = TArg->getType();
+          ListTy - TArg->getType();
         }
       }
       ListInit *LI = new ListInit(Values, new ListRecTy(ListTy));
diff --git a/utils/TableGen/Record.cpp b/utils/TableGen/Record.cpp
index 2f500ae..c62e21b 100644
--- a/utils/TableGen/Record.cpp
+++ b/utils/TableGen/Record.cpp
@@ -16,9 +16,6 @@
 #include "llvm/Support/Streams.h"
 #include "llvm/ADT/StringExtras.h"
 #include <ios>
-#include <sys/types.h>
-#include <regex.h>
-#include <sstream>
 
 using namespace llvm;
 
@@ -750,36 +747,6 @@
     }
     break;
   }
-  case REGMATCH: {
-    StringInit *LHSs = dynamic_cast<StringInit*>(LHS);
-    StringInit *RHSs = dynamic_cast<StringInit*>(RHS);
-    if (LHSs && RHSs) {
-      regex_t compiled;
-      int err = regcomp (&compiled, LHSs->getValue().c_str(), REG_EXTENDED);
-      if (err != 0) {
-        size_t length = regerror (err, &compiled, NULL, 0);
-        char *buffer = new char[length];
-        (void) regerror (err, &compiled, buffer, length);
-        std::string errmsg = buffer;
-        delete[] buffer;
-        regfree(&compiled);
-        throw errmsg;
-      }
-      int result = regexec(&compiled, RHSs->getValue().c_str(), 0, NULL, 0);
-      if (result == REG_ESPACE) {
-        size_t length = regerror (err, &compiled, NULL, 0);
-        char *buffer = new char[length];
-        (void) regerror (err, &compiled, buffer, length);
-        std::string errmsg = buffer;
-        delete[] buffer;
-        regfree(&compiled);
-        throw errmsg;
-      }
-      regfree(&compiled);
-      return new IntInit(result == 0);
-    }    
-    break;
-  }
   case SHL:
   case SRA:
   case SRL: {
@@ -819,7 +786,6 @@
   case SRA: Result = "!sra"; break;
   case SRL: Result = "!srl"; break;
   case STRCONCAT: Result = "!strconcat"; break;
-  case REGMATCH: Result = "!regmatch"; break;
   case NAMECONCAT: 
     Result = "!nameconcat<" + getType()->getAsString() + ">"; break;
   }
@@ -1035,69 +1001,6 @@
     }
     break;
   }
-
-  case PATSUBST: {
-    StringInit *LHSs = dynamic_cast<StringInit*>(LHS);
-    StringInit *MHSs = dynamic_cast<StringInit*>(MHS);
-    StringInit *RHSs = dynamic_cast<StringInit*>(RHS);
-
-    if (LHSs && MHSs && RHSs) {
-      regex_t compiled;
-      int err = regcomp (&compiled, LHSs->getValue().c_str(), REG_EXTENDED);
-      if (err != 0) {
-        size_t length = regerror (err, &compiled, NULL, 0);
-        char *buffer = new char[length];
-        (void) regerror (err, &compiled, buffer, length);
-        std::string errmsg = buffer;
-        delete[] buffer;
-        regfree(&compiled);
-        throw errmsg;
-      }
-      regmatch_t matches[10];
-      int result = regexec(&compiled, RHSs->getValue().c_str(), 10, matches, 0);
-      if (result == REG_ESPACE) {
-        size_t length = regerror (err, &compiled, NULL, 0);
-        char *buffer = new char[length];
-        (void) regerror (err, &compiled, buffer, length);
-        std::string errmsg = buffer;
-        delete[] buffer;
-        regfree(&compiled);
-        throw errmsg;
-      }
-      regfree(&compiled);
-      if (result == 0) {
-        // Parse the substitution string looking for $1, $2, etc. and
-        // substitute strings.  If there are no $1, etc. just replace
-        // the whole string.
-        std::string replacement = MHSs->getValue();
-        size_t pos = replacement.find("$");
-        while (pos != std::string::npos && pos+1 < replacement.size()) {
-          if (std::isdigit(replacement[pos+1])) {
-            std::string sidx(&replacement[pos+1], 1);
-            std::istringstream str(sidx);
-            int idx;
-            if (str >> idx) {              
-              replacement.replace(pos, 2, RHSs->getValue(), matches[idx].rm_so,
-                                  matches[idx].rm_eo - matches[idx].rm_so);
-            }
-            else {
-              throw "unexpected failure in patsubst index calculation";
-            }
-          }
-          else if (replacement[pos+1] == '$') {
-            replacement.replace(pos, 2, "$");
-          }
-          pos = replacement.find("$", pos+1);
-        }
-        return new StringInit(replacement);
-      }
-      else {
-        // No match, just pass the string through
-        return RHSs;
-      }
-    }
-    break;
-  }  
   }
 
   return this;
@@ -1133,7 +1036,6 @@
   std::string Result;
   switch (Opc) {
   case SUBST: Result = "!subst"; break;
-  case PATSUBST: Result = "!patsubst"; break;
   case FOREACH: Result = "!foreach"; break; 
   case IF: Result = "!if"; break; 
  }
diff --git a/utils/TableGen/Record.h b/utils/TableGen/Record.h
index d8e4fb3..ac06cae 100644
--- a/utils/TableGen/Record.h
+++ b/utils/TableGen/Record.h
@@ -841,7 +841,7 @@
 ///
 class BinOpInit : public OpInit {
 public:
-  enum BinaryOp { SHL, SRA, SRL, STRCONCAT, CONCAT, NAMECONCAT, REGMATCH };
+  enum BinaryOp { SHL, SRA, SRL, STRCONCAT, CONCAT, NAMECONCAT };
 private:
   BinaryOp Opc;
   Init *LHS, *RHS;
@@ -885,7 +885,7 @@
 ///
 class TernOpInit : public OpInit {
 public:
-  enum TernaryOp { SUBST, FOREACH, IF, PATSUBST };
+  enum TernaryOp { SUBST, FOREACH, IF };
 private:
   TernaryOp Opc;
   Init *LHS, *MHS, *RHS;
diff --git a/utils/TableGen/TGLexer.cpp b/utils/TableGen/TGLexer.cpp
index 930d9db..758d499 100644
--- a/utils/TableGen/TGLexer.cpp
+++ b/utils/TableGen/TGLexer.cpp
@@ -447,9 +447,7 @@
   if (Len == 3  && !memcmp(Start, "shl", 3)) return tgtok::XSHL;
   if (Len == 9  && !memcmp(Start, "strconcat", 9))   return tgtok::XStrConcat;
   if (Len == 10 && !memcmp(Start, "nameconcat", 10)) return tgtok::XNameConcat;
-  if (Len == 8 && !memcmp(Start, "regmatch", 8)) return tgtok::XRegMatch;
   if (Len == 5 && !memcmp(Start, "subst", 5)) return tgtok::XSubst;
-  if (Len == 8 && !memcmp(Start, "patsubst", 8)) return tgtok::XPatSubst;
   if (Len == 7 && !memcmp(Start, "foreach", 7)) return tgtok::XForEach;
   if (Len == 4 && !memcmp(Start, "cast", 4)) return tgtok::XCast;
   if (Len == 3 && !memcmp(Start, "car", 3)) return tgtok::XCar;
diff --git a/utils/TableGen/TGLexer.h b/utils/TableGen/TGLexer.h
index fef10f0..ac3b984 100644
--- a/utils/TableGen/TGLexer.h
+++ b/utils/TableGen/TGLexer.h
@@ -46,7 +46,7 @@
     
     // !keywords.
     XConcat, XSRA, XSRL, XSHL, XStrConcat, XNameConcat, XCast, XSubst,
-    XForEach, XCar, XCdr, XNull, XIf, XRegMatch, XPatSubst,
+    XForEach, XCar, XCdr, XNull, XIf,
 
     // Integer value.
     IntVal,
diff --git a/utils/TableGen/TGParser.cpp b/utils/TableGen/TGParser.cpp
index d2bc6b8..cdd2857 100644
--- a/utils/TableGen/TGParser.cpp
+++ b/utils/TableGen/TGParser.cpp
@@ -799,7 +799,6 @@
   case tgtok::XSRL:
   case tgtok::XSHL:
   case tgtok::XStrConcat:
-  case tgtok::XRegMatch:
   case tgtok::XNameConcat: {  // Value ::= !binop '(' Value ',' Value ')'
     BinOpInit::BinaryOp Code;
     RecTy *Type = 0;
@@ -832,11 +831,6 @@
       Code = BinOpInit::STRCONCAT;
       Type = new StringRecTy();
       break;
-    case tgtok::XRegMatch:  
-      Lex.Lex();  // eat the operation
-      Code = BinOpInit::REGMATCH;
-      Type = new IntRecTy();
-      break;
     case tgtok::XNameConcat: 
       Lex.Lex();  // eat the operation
       Code = BinOpInit::NAMECONCAT;
@@ -878,7 +872,6 @@
 
   case tgtok::XIf:
   case tgtok::XForEach:
-  case tgtok::XPatSubst:
   case tgtok::XSubst: {  // Value ::= !ternop '(' Value ',' Value ',' Value ')'
     TernOpInit::TernaryOp Code;
     RecTy *Type = 0;
@@ -897,9 +890,6 @@
     case tgtok::XSubst:
       Code = TernOpInit::SUBST;
       break;
-    case tgtok::XPatSubst:
-      Code = TernOpInit::PATSUBST;
-      break;
     }
     if (Lex.getCode() != tgtok::l_paren) {
       TokError("expected '(' after ternary operator");
@@ -973,10 +963,6 @@
       Type = RHSt->getType();
       break;
     }
-    case tgtok::XPatSubst: {
-      Type = new StringRecTy;
-      break;
-    }      
     }
     return (new TernOpInit(Code, LHS, MHS, RHS, Type))->Fold(CurRec, CurMultiClass);
   }
@@ -1281,11 +1267,9 @@
   case tgtok::XSRL:
   case tgtok::XSHL:
   case tgtok::XStrConcat:
-  case tgtok::XRegMatch:
   case tgtok::XNameConcat:  // Value ::= !binop '(' Value ',' Value ')'
   case tgtok::XIf:
   case tgtok::XForEach:
-  case tgtok::XPatSubst:
   case tgtok::XSubst: {  // Value ::= !ternop '(' Value ',' Value ',' Value ')'
     return ParseOperation(CurRec);
     break;
