record input chains.
authorChris Lattner <sabre@nondot.org>
Wed, 17 Feb 2010 01:34:15 +0000 (01:34 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 17 Feb 2010 01:34:15 +0000 (01:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96437 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelMatcherGen.cpp

index 345b964c2d17fee3909613f6c0290807562b9327..5936e750654c88bc3f47fb9ba875898ad827ee81 100644 (file)
@@ -194,6 +194,15 @@ void MatcherGen::EmitOperatorMatchCode(const TreePatternNode *N,
   // the child numbers of the node are all offset by one.
   unsigned OpNo = 0;
   if (N->NodeHasProperty(SDNPHasChain, CGP)) {
+    // Record the input chain, which is always input #0 of the SDNode.
+    AddMatcherNode(new MoveChildMatcherNode(0));
+    ++NextRecordedOperandNo;
+    AddMatcherNode(new RecordMatcherNode("'" + N->getOperator()->getName() +
+                                         "' input chain"));
+    AddMatcherNode(new MoveParentMatcherNode());
+
+    // Don't look at the input chain when matching the tree pattern to the
+    // SDNode.
     OpNo = 1;
 
     // If this node is not the root and the subtree underneath it produces a