[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAG.h SelectionDAGCSEMap.h SelectionDAGNodes.h

Chris Lattner lattner at cs.uiuc.edu
Mon Aug 14 15:19:41 PDT 2006



Changes in directory llvm/include/llvm/CodeGen:

SelectionDAG.h updated: 1.117 -> 1.118
SelectionDAGCSEMap.h updated: 1.5 -> 1.6
SelectionDAGNodes.h updated: 1.139 -> 1.140
---
Log message:

Add code to resize the CSEMap hash table.  This doesn't speedup codegen of 
kimwitu, but seems like a good idea from a "avoid performance cliffs" standpoint :)


---
Diffs of the changes:  (+9 -3)

 SelectionDAG.h       |    9 ++++++---
 SelectionDAGCSEMap.h |    2 ++
 SelectionDAGNodes.h  |    1 +
 3 files changed, 9 insertions(+), 3 deletions(-)


Index: llvm/include/llvm/CodeGen/SelectionDAG.h
diff -u llvm/include/llvm/CodeGen/SelectionDAG.h:1.117 llvm/include/llvm/CodeGen/SelectionDAG.h:1.118
--- llvm/include/llvm/CodeGen/SelectionDAG.h:1.117	Fri Aug 11 16:55:30 2006
+++ llvm/include/llvm/CodeGen/SelectionDAG.h	Mon Aug 14 17:19:25 2006
@@ -46,12 +46,16 @@
   MachineFunction &MF;
   MachineDebugInfo *DI;
 
-  // Root - The root of the entire DAG.  EntryNode - The starting token.
+  /// Root - The root of the entire DAG.  EntryNode - The starting token.
   SDOperand Root, EntryNode;
 
-  // AllNodes - A linked list of nodes in the current DAG.
+  /// AllNodes - A linked list of nodes in the current DAG.
   ilist<SDNode> AllNodes;
 
+  /// CSEMap - This structure is used to memoize nodes, automatically performing
+  /// CSE with existing nodes with a duplicate is requested.
+  SelectionDAGCSEMap CSEMap;
+
 public:
   SelectionDAG(TargetLowering &tli, MachineFunction &mf, MachineDebugInfo *di)
   : TLI(tli), MF(mf), DI(di) {
@@ -464,7 +468,6 @@
   std::map<std::string, SDNode*> ExternalSymbols;
   std::map<std::string, SDNode*> TargetExternalSymbols;
   std::map<std::string, StringSDNode*> StringNodes;
-  SelectionDAGCSEMap CSEMap;
 };
 
 template <> struct GraphTraits<SelectionDAG*> : public GraphTraits<SDNode*> {


Index: llvm/include/llvm/CodeGen/SelectionDAGCSEMap.h
diff -u llvm/include/llvm/CodeGen/SelectionDAGCSEMap.h:1.5 llvm/include/llvm/CodeGen/SelectionDAGCSEMap.h:1.6
--- llvm/include/llvm/CodeGen/SelectionDAGCSEMap.h:1.5	Fri Aug 11 20:07:51 2006
+++ llvm/include/llvm/CodeGen/SelectionDAGCSEMap.h	Mon Aug 14 17:19:25 2006
@@ -117,8 +117,10 @@
     
   private:
     SDNode *GetNextPtr(void *NextInBucketPtr);
+    SDNode *GetNextPtr(void *NextInBucketPtr, void **Buckets, unsigned NumBuck);
     void **GetBucketPtr(void *NextInBucketPtr);
     void **GetBucketFor(const NodeID &ID) const;
+    void GrowHashTable();
   };
 }  // end namespace llvm
 


Index: llvm/include/llvm/CodeGen/SelectionDAGNodes.h
diff -u llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.139 llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.140
--- llvm/include/llvm/CodeGen/SelectionDAGNodes.h:1.139	Mon Aug  7 20:09:31 2006
+++ llvm/include/llvm/CodeGen/SelectionDAGNodes.h	Mon Aug 14 17:19:25 2006
@@ -719,6 +719,7 @@
 public:
   virtual ~SDNode() {
     assert(NumOperands == 0 && "Operand list not cleared before deletion");
+    assert(NextInBucket == 0 && "Still in CSEMap?");
     NodeType = ISD::DELETED_NODE;
   }
   






More information about the llvm-commits mailing list