From a0c48c8f7d06ff4da0cecdebb050114fa00dbf71 Mon Sep 17 00:00:00 2001 From: Nirav Dave Date: Thu, 7 Feb 2019 18:31:05 +0000 Subject: [PATCH] Revert "[DAG] Cleanup of unused node in SimplifySelectCC." Causes ASAN use-after-poison errors. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353442 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/DAGCombiner.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp index a3ad2c2f3ee..dabb8afd104 100644 --- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -18673,21 +18673,14 @@ SDValue DAGCombiner::SimplifySelectCC(const SDLoc &DL, SDValue N0, SDValue N1, auto *N3C = dyn_cast(N3.getNode()); // Determine if the condition we're dealing with is constant. - if (SDValue SCC = - SimplifySetCC(getSetCCResultType(CmpOpVT), N0, N1, CC, DL, false)) { - AddToWorklist(SCC.getNode()); - if (auto *SCCC = dyn_cast(SCC.getNode())) { - // fold select_cc true, x, y -> x - // fold select_cc false, x, y -> y - bool isNull = SCCC->isNullValue(); - SDValue RV = isNull ? N3 : N2; - // Delete SCC if we don't use it. - if (SCCC != RV.getNode()) - recursivelyDeleteUnusedNodes(SCCC); - return RV; - } - // Don't combine. Cleanup SCC. - recursivelyDeleteUnusedNodes(SCC.getNode()); + SDValue SCC = SimplifySetCC(getSetCCResultType(CmpOpVT), N0, N1, CC, DL, + false); + if (SCC.getNode()) AddToWorklist(SCC.getNode()); + + if (auto *SCCC = dyn_cast_or_null(SCC.getNode())) { + // fold select_cc true, x, y -> x + // fold select_cc false, x, y -> y + return !SCCC->isNullValue() ? N2 : N3; } if (SDValue V = -- 2.40.0