From: Nirav Dave Date: Thu, 10 Aug 2017 18:53:14 +0000 (+0000) Subject: [DAG] Cleanup unused nodes after store merge. NFCI. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=498d807c61aee843bf176737c6c8d9ca96af647a;p=llvm [DAG] Cleanup unused nodes after store merge. NFCI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310648 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 55bc29870dd..1668642736b 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -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;