Add a new argument to ReplaceAllUsesWith to keep track of nodes deleted by
authorChris Lattner <sabre@nondot.org>
Wed, 7 Sep 2005 05:36:18 +0000 (05:36 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 7 Sep 2005 05:36:18 +0000 (05:36 +0000)
this method

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

include/llvm/CodeGen/SelectionDAG.h

index 895204df571437b7cb3a5f32b342c1994b1c9518..a987f9f54147d84757a0c3a62fd435d5aae3a21d 100644 (file)
@@ -328,9 +328,16 @@ public:
   /// version if 'From' is known to have a single result, use the second
   /// if you have two nodes with identical results, use the third otherwise.
   ///
-  void ReplaceAllUsesWith(SDOperand From, SDOperand Op);
-  void ReplaceAllUsesWith(SDNode *From, SDNode *To);
-  void ReplaceAllUsesWith(SDNode *From, const std::vector<SDOperand> &To);
+  /// These methods all take an optional vector, which (if not null) is 
+  /// populated with any nodes that are deleted from the SelectionDAG, due to
+  /// new equivalences that are discovered.
+  ///
+  void ReplaceAllUsesWith(SDOperand From, SDOperand Op,
+                          std::vector<SDNode*> *Deleted = 0);
+  void ReplaceAllUsesWith(SDNode *From, SDNode *To,
+                          std::vector<SDNode*> *Deleted = 0);
+  void ReplaceAllUsesWith(SDNode *From, const std::vector<SDOperand> &To,
+                          std::vector<SDNode*> *Deleted = 0);
   
   
   /// DeleteNode - Remove the specified node from the system.  This node must
@@ -343,6 +350,7 @@ private:
   void RemoveNodeFromCSEMaps(SDNode *N);
   SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);
   void DeleteNodeIfDead(SDNode *N, void *NodeSet);
+  void DeleteNodeNotInCSEMaps(SDNode *N);
   
   /// SimplifySetCC - Try to simplify a setcc built with the specified operands 
   /// and cc.  If unable to simplify it, return a null SDOperand.