diff options
| author | Nirav Dave <niravd@google.com> | 2017-08-10 18:53:14 +0000 |
|---|---|---|
| committer | Nirav Dave <niravd@google.com> | 2017-08-10 18:53:14 +0000 |
| commit | 99d9d2455351c11c09b993a77e5e13618182ffa8 (patch) | |
| tree | ca32738492b69a19f087bc4774a30aad0c849bca /llvm/lib/CodeGen | |
| parent | 4ad374ea76d2bd57bf5a27f945ca72828bcc6f7b (diff) | |
| download | bcm5719-llvm-99d9d2455351c11c09b993a77e5e13618182ffa8.tar.gz bcm5719-llvm-99d9d2455351c11c09b993a77e5e13618182ffa8.zip | |
[DAG] Cleanup unused nodes after store merge. NFCI.
llvm-svn: 310648
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 55bc29870dd..1668642736b 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/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; |

