]> granicus.if.org Git - llvm/commitdiff
[DAG] Explicitly cleanup merged load values during store merge. NFCI.
authorNirav Dave <niravd@google.com>
Wed, 9 Aug 2017 13:37:07 +0000 (13:37 +0000)
committerNirav Dave <niravd@google.com>
Wed, 9 Aug 2017 13:37:07 +0000 (13:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310474 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index fd73802cceba223f1db20aa4f917a84a1b21d274..e1ef0de36499e49e692443078ed88ce5cfee0d90 100644 (file)
@@ -13182,9 +13182,15 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
                                     SDValue(NewLoad.getNode(), 1));
     }
 
-    // Replace the all stores with the new store.
-    for (unsigned i = 0; i < NumElem; ++i)
+    // Replace the all stores with the new store. Recursively remove
+    // corresponding value if its no longer used.
+    for (unsigned i = 0; i < NumElem; ++i) {
+      SDValue Val = StoreNodes[i].MemNode->getOperand(1);
       CombineTo(StoreNodes[i].MemNode, NewStore);
+      if (Val.getNode()->use_empty())
+        recursivelyDeleteUnusedNodes(Val.getNode());
+    }
+
     RV = true;
     StoreNodes.erase(StoreNodes.begin(), StoreNodes.begin() + NumElem);
     continue;