summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorNirav Dave <niravd@google.com>2019-02-07 16:57:50 +0000
committerNirav Dave <niravd@google.com>2019-02-07 16:57:50 +0000
commit4b12236f7d7cb854425954b6c7967620c2faefd4 (patch)
tree7ad1ec62c4c209b6ac143ca05e79678f193c40fa /llvm/lib/CodeGen
parent0b57ccb7b5fa96c21214376c4e19e50ac114a1dc (diff)
downloadbcm5719-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.cpp6
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
OpenPOWER on IntegriCloud