diff options
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index f8ed5deb26..9aa4f989e5 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -1931,9 +1931,16 @@ public: << ".getValue(" << CInfo.getNumResults() << "))) goto P" << PatternNo << "Fail; // Already selected for a chain use?\n"; } - if (NodeHasChain && !FoundChain) { - OS << " SDOperand Chain = " << RootName << ".getOperand(0);\n"; - FoundChain = true; + if (NodeHasChain) { + if (!FoundChain) { + OS << " SDOperand Chain = " << RootName << ".getOperand(0);\n"; + FoundChain = true; + } else { + OS << " if (Chain.Val == " << RootName << ".Val)\n"; + OS << " Chain = " << RootName << ".getOperand(0);\n"; + OS << " else\n"; + OS << " goto P" << PatternNo << "Fail;\n"; + } } } |