don't add flag nodes with chain results to the NowDeadNodes
authorChris Lattner <sabre@nondot.org>
Sun, 28 Mar 2010 04:54:33 +0000 (04:54 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 28 Mar 2010 04:54:33 +0000 (04:54 +0000)
list multiple times when MorphNodeTo can't be applied.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99735 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp

index 6c22262d8c549c2d86930f72294720f1551ea114..600557eddfdd20ddb071edb78cf3417132b31cac 100644 (file)
@@ -1614,8 +1614,9 @@ UpdateChainsAndFlags(SDNode *NodeToMatch, SDValue InputChain,
       CurDAG->ReplaceAllUsesOfValueWith(SDValue(FRN, FRN->getNumValues()-1),
                                         InputFlag, &ISU);
       
-      // If the node became dead, delete it.
-      if (FRN->use_empty())
+      // If the node became dead and we haven't already seen it, delete it.
+      if (FRN->use_empty() &&
+          !std::count(NowDeadNodes.begin(), NowDeadNodes.end(), FRN))
         NowDeadNodes.push_back(FRN);
     }
   }