Delete unnecessary elses.
[oota-llvm.git] / include / llvm / CodeGen / SelectionDAG.h
index 7ad7afa4415198e9380ceb7a1bbab0d1455eafcc..c04436be277ba405b499b90acd8c56f1f93cb52e 100644 (file)
@@ -366,6 +366,9 @@ public:
   /// value assuming it was the smaller SrcTy value.
   SDValue getZeroExtendInReg(SDValue Op, MVT SrcTy);
   
+  /// getNOT - Create a bitwise NOT operation as (XOR Val, -1).
+  SDValue getNOT(SDValue Val, MVT VT);
+
   /// getCALLSEQ_START - Return a new CALLSEQ_START node, which always must have
   /// a flag result (to ensure it's not CSE'd).
   SDValue getCALLSEQ_START(SDValue Chain, SDValue Op) {
@@ -530,11 +533,11 @@ public:
   SDValue getIndexedStore(SDValue OrigStoe, SDValue Base,
                            SDValue Offset, ISD::MemIndexedMode AM);
 
-  // getSrcValue - Construct a node to track a Value* through the backend.
+  /// getSrcValue - Construct a node to track a Value* through the backend.
   SDValue getSrcValue(const Value *v);
 
-  // getMemOperand - Construct a node to track a memory reference
-  // through the backend.
+  /// getMemOperand - Construct a node to track a memory reference
+  /// through the backend.
   SDValue getMemOperand(const MachineMemOperand &MO);
 
   /// UpdateNodeOperands - *Mutate* the specified node in-place to have the
@@ -680,6 +683,11 @@ public:
   /// informed about nodes that are deleted and modified due to recursive
   /// changes in the dag.
   ///
+  /// These functions only replace all existing uses. It's possible that as
+  /// these replacements are being performed, CSE may cause the From node
+  /// to be given new uses. These new uses of From are left in place, and
+  /// not automatically transfered to To.
+  ///
   void ReplaceAllUsesWith(SDValue From, SDValue Op,
                           DAGUpdateListener *UpdateListener = 0);
   void ReplaceAllUsesWith(SDNode *From, SDNode *To,
@@ -792,7 +800,7 @@ public:
   
 private:
   bool RemoveNodeFromCSEMaps(SDNode *N);
-  SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);
+  void AddModifiedNodeToCSEMaps(SDNode *N, DAGUpdateListener *UpdateListener);
   SDNode *FindModifiedNodeSlot(SDNode *N, SDValue Op, void *&InsertPos);
   SDNode *FindModifiedNodeSlot(SDNode *N, SDValue Op1, SDValue Op2,
                                void *&InsertPos);
@@ -800,15 +808,16 @@ private:
                                void *&InsertPos);
 
   void DeleteNodeNotInCSEMaps(SDNode *N);
+  void DeallocateNode(SDNode *N);
 
   unsigned getMVTAlignment(MVT MemoryVT) const;
 
   void allnodes_clear();
   
-  // List of non-single value types.
+  /// VTList - List of non-single value types.
   std::vector<SDVTList> VTList;
   
-  // Maps to auto-CSE operations.
+  /// CondCodeNodes - Maps to auto-CSE operations.
   std::vector<CondCodeSDNode*> CondCodeNodes;
 
   std::vector<SDNode*> ValueTypeNodes;