diff --git a/include/llvm/CodeGen/DAGISelHeader.h b/include/llvm/CodeGen/DAGISelHeader.h
index 0ebb9f1..29d66f5 100644
--- a/include/llvm/CodeGen/DAGISelHeader.h
+++ b/include/llvm/CodeGen/DAGISelHeader.h
@@ -201,7 +201,7 @@
 }
 
 enum BuiltinOpcodes {
-  OPC_Push,
+  OPC_Push, OPC_Push2,
   OPC_RecordNode,
   OPC_RecordMemRef,
   OPC_CaptureFlagInput,
@@ -359,6 +359,19 @@
       MatchScopes.push_back(NewEntry);
       continue;
     }
+    case OPC_Push2: {
+      unsigned NumToSkip = GetInt2(MatcherTable, MatcherIndex);
+      MatchScope NewEntry;
+      NewEntry.FailIndex = MatcherIndex+NumToSkip;
+      NewEntry.NodeStackSize = NodeStack.size();
+      NewEntry.NumRecordedNodes = RecordedNodes.size();
+      NewEntry.NumMatchedMemRefs = MatchedMemRefs.size();
+      NewEntry.InputChain = InputChain;
+      NewEntry.InputFlag = InputFlag;
+      NewEntry.HasChainNodesMatched = !ChainNodesMatched.empty();
+      MatchScopes.push_back(NewEntry);
+      continue;
+    }
     case OPC_RecordNode:
       // Remember this node, it may end up being an operand in the pattern.
       RecordedNodes.push_back(N);
diff --git a/utils/TableGen/DAGISelMatcherEmitter.cpp b/utils/TableGen/DAGISelMatcherEmitter.cpp
index 82d852e..33e37fa 100644
--- a/utils/TableGen/DAGISelMatcherEmitter.cpp
+++ b/utils/TableGen/DAGISelMatcherEmitter.cpp
@@ -350,16 +350,29 @@
         NextSize = EmitMatcherList(cast<PushMatcherNode>(N)->getNext(),
                                    Indent+1, CurrentIdx+2, FOS);
       }
-      
+
+      // In the unlikely event that we have something too big to emit with a
+      // one byte offset, regenerate it with a two-byte one.
       if (NextSize > 255) {
-        errs() <<
-          "Tblgen internal error: can't handle predicate this complex yet\n";
-        // FIXME: exit(1);
+        TmpBuf.clear();
+        raw_svector_ostream OS(TmpBuf);
+        formatted_raw_ostream FOS(OS);
+        NextSize = EmitMatcherList(cast<PushMatcherNode>(N)->getNext(),
+                                   Indent+1, CurrentIdx+3, FOS);
+        if (NextSize > 65535) {
+          errs() <<
+            "Tblgen internal error: can't handle pattern this complex yet\n";
+          exit(1);
+        }
       }
       
       OS << "/*" << CurrentIdx << "*/";
       OS.PadToColumn(Indent*2);
-      OS << "OPC_Push, " << NextSize << ",\n";
+      
+      if (NextSize < 256)
+        OS << "OPC_Push, " << NextSize << ",\n";
+      else
+        OS << "OPC_Push2, " << (NextSize&255) << ", " << (NextSize>>8) << ",\n";
       OS << TmpBuf.str();
       
       Size += 2+NextSize;
