(store (op (load ...)), ...)
authorEvan Cheng <evan.cheng@apple.com>
Fri, 27 Jan 2006 22:13:45 +0000 (22:13 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 27 Jan 2006 22:13:45 +0000 (22:13 +0000)
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

index f8ed5deb26d482c152396110eabb5fcb69c72e8b..9aa4f989e5307f30bf3aa096383bb44a6d950bad 100644 (file)
@@ -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";
+        }
       }
     }