]> granicus.if.org Git - llvm/commitdiff
[DAG] Cleanup unused nodes after store merge. NFCI.
authorNirav Dave <niravd@google.com>
Thu, 10 Aug 2017 18:53:14 +0000 (18:53 +0000)
committerNirav Dave <niravd@google.com>
Thu, 10 Aug 2017 18:53:14 +0000 (18:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310648 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/DAGCombiner.cpp

index 55bc29870ddccdd1827632b67ecfd56993a0d8e9..1668642736bb491c9f97c5ef3d09c2afebc16db8 100644 (file)
@@ -12552,8 +12552,15 @@ bool DAGCombiner::MergeStoresOfConstantsOrVecElts(
   }
 
   // Replace all merged stores with the new store.
-  for (unsigned i = 0; i < NumStores; ++i)
+  for (unsigned i = 0; i < NumStores; ++i) {
+    SDValue Val = StoreNodes[i].MemNode->getOperand(1);
+    SDValue Addr = StoreNodes[i].MemNode->getOperand(2);
     CombineTo(StoreNodes[i].MemNode, NewStore);
+    if (Val.getNode()->use_empty())
+      recursivelyDeleteUnusedNodes(Val.getNode());
+    if (Addr.getNode()->use_empty())
+      recursivelyDeleteUnusedNodes(Addr.getNode());
+  }
 
   AddToWorklist(NewChain.getNode());
   return true;
@@ -13186,9 +13193,12 @@ bool DAGCombiner::MergeConsecutiveStores(StoreSDNode *St) {
     // corresponding value if its no longer used.
     for (unsigned i = 0; i < NumElem; ++i) {
       SDValue Val = StoreNodes[i].MemNode->getOperand(1);
+      SDValue Addr = StoreNodes[i].MemNode->getOperand(2);
       CombineTo(StoreNodes[i].MemNode, NewStore);
       if (Val.getNode()->use_empty())
         recursivelyDeleteUnusedNodes(Val.getNode());
+      if (Addr.getNode()->use_empty())
+        recursivelyDeleteUnusedNodes(Addr.getNode());
     }
 
     RV = true;