ReplaceAllUsesOfValueWith may delete other nodes that the one being replaced. Do not delete dead nodes again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92988 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index 10dcc09..c87e4bf 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -459,7 +459,8 @@
     SDNode *N = Worklist.pop_back_val();
 
     if (N->use_empty() && N != CurDAG->getRoot().getNode()) {
-      CurDAG->DeleteNode(N);
+      if (N->getOpcode() != ISD::DELETED_NODE)
+        CurDAG->DeleteNode(N);
       continue;
     }