From c15d18c5015a01336b00e3ba3638fd6a35f68201 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Fri, 27 Jan 2006 22:13:45 +0000 Subject: [PATCH] (store (op (load ...)), ...) If store's chain operand is load, then use load's chain operand instead. If it isn't (likely a TokenFactor), then do not allow the folding. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25708 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/TableGen/DAGISelEmitter.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index f8ed5deb26d..9aa4f989e53 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"; + } } } -- 2.34.1