Revert r353416 "[DAG] Cleanup unused nodes on failed store-to-load forward combine."

This cleanup causes out-of-tree crashes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353527 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
index a9904a2..5a933dd 100644
--- a/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ b/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -13154,42 +13154,30 @@
   if (LD->getBasePtr().isUndef() || Offset != 0)
     return SDValue();
   // Model necessary truncations / extenstions.
-  SmallVector<SDNode *, 4> Vals; // Temporaries which may need to be deleted.
-  SDValue Val, RV;
+  SDValue Val;
   // Truncate Value To Stored Memory Size.
   do {
     if (!getTruncatedStoreValue(ST, Val))
       continue;
-    if (Vals.empty() || Vals.back() != Val.getNode())
-      Vals.push_back(Val.getNode());
     if (!isTypeLegal(LDMemType))
       continue;
     if (STMemType != LDMemType) {
       // TODO: Support vectors? This requires extract_subvector/bitcast.
       if (!STMemType.isVector() && !LDMemType.isVector() &&
-          STMemType.isInteger() && LDMemType.isInteger()) {
-        Vals.push_back(Val.getNode());
+          STMemType.isInteger() && LDMemType.isInteger())
         Val = DAG.getNode(ISD::TRUNCATE, SDLoc(LD), LDMemType, Val);
-      } else
+      else
         continue;
     }
-    if (Vals.empty() || Vals.back() != Val.getNode())
-      Vals.push_back(Val.getNode());
-    if (extendLoadedValueToExtension(LD, Val))
-      RV = ReplaceLd(LD, Val, Chain);
-    else if (Vals.empty() || Vals.back() != Val.getNode())
-      Vals.push_back(Val.getNode());
+    if (!extendLoadedValueToExtension(LD, Val))
+      continue;
+    return ReplaceLd(LD, Val, Chain);
   } while (false);
 
   // On failure, cleanup dead nodes we may have created.
-  if (Vals.empty() || Vals.back() != Val.getNode())
-    Vals.push_back(Val.getNode());
-  while (!Vals.empty()) {
-    SDNode *Val = Vals.pop_back_val();
-    if (Val->use_empty())
-      recursivelyDeleteUnusedNodes(Val);
-  }
-  return RV;
+  if (Val->use_empty())
+    deleteAndRecombine(Val.getNode());
+  return SDValue();
 }
 
 SDValue DAGCombiner::visitLOAD(SDNode *N) {