diff options
| author | Nirav Dave <niravd@google.com> | 2019-02-07 16:57:50 +0000 |
|---|---|---|
| committer | Nirav Dave <niravd@google.com> | 2019-02-07 16:57:50 +0000 |
| commit | 4b12236f7d7cb854425954b6c7967620c2faefd4 (patch) | |
| tree | 7ad1ec62c4c209b6ac143ca05e79678f193c40fa /llvm/lib/CodeGen | |
| parent | 0b57ccb7b5fa96c21214376c4e19e50ac114a1dc (diff) | |
| download | bcm5719-llvm-4b12236f7d7cb854425954b6c7967620c2faefd4.tar.gz bcm5719-llvm-4b12236f7d7cb854425954b6c7967620c2faefd4.zip | |
[DAG] Cleanup unused node on failed SELECT Combine.
llvm-svn: 353426
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index 9ef4f508ef1..b6023d52d6e 100644 --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -7444,6 +7444,9 @@ SDValue DAGCombiner::visitSELECT(SDNode *N) { if (normalizeToSequence || !InnerSelect.use_empty()) return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond0, InnerSelect, N2); + // Cleanup on failure. + if (InnerSelect.use_empty()) + recursivelyDeleteUnusedNodes(InnerSelect.getNode()); } // select (or Cond0, Cond1), X, Y -> select Cond0, X, (select Cond1, X, Y) if (N0->getOpcode() == ISD::OR && N0->hasOneUse()) { @@ -7454,6 +7457,9 @@ SDValue DAGCombiner::visitSELECT(SDNode *N) { if (normalizeToSequence || !InnerSelect.use_empty()) return DAG.getNode(ISD::SELECT, DL, N1.getValueType(), Cond0, N1, InnerSelect); + // Cleanup on failure. + if (InnerSelect.use_empty()) + recursivelyDeleteUnusedNodes(InnerSelect.getNode()); } // select Cond0, (select Cond1, X, Y), Y -> select (and Cond0, Cond1), X, Y |

