diff options
author | Chris Lattner <sabre@nondot.org> | 2006-08-14 22:19:25 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-08-14 22:19:25 +0000 |
commit | 213a16c637926bfc38ba373d3aba6778e181e3ec (patch) | |
tree | 39713a4bf0f41e3a51063fa70f3aacaa8029abab /include | |
parent | b5677f933f918acd8b8525635510d22dfb26285e (diff) | |
download | external_llvm-213a16c637926bfc38ba373d3aba6778e181e3ec.zip external_llvm-213a16c637926bfc38ba373d3aba6778e181e3ec.tar.gz external_llvm-213a16c637926bfc38ba373d3aba6778e181e3ec.tar.bz2 |
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 :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29675 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/SelectionDAG.h | 9 | ||||
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGCSEMap.h | 2 | ||||
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGNodes.h | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/include/llvm/CodeGen/SelectionDAG.h b/include/llvm/CodeGen/SelectionDAG.h index 2cc6ba7..a8af4a3 100644 --- a/include/llvm/CodeGen/SelectionDAG.h +++ b/include/llvm/CodeGen/SelectionDAG.h @@ -46,12 +46,16 @@ class SelectionDAG { 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 @@ private: 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*> { diff --git a/include/llvm/CodeGen/SelectionDAGCSEMap.h b/include/llvm/CodeGen/SelectionDAGCSEMap.h index dd1071a..e3771c9 100644 --- a/include/llvm/CodeGen/SelectionDAGCSEMap.h +++ b/include/llvm/CodeGen/SelectionDAGCSEMap.h @@ -117,8 +117,10 @@ namespace llvm { 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 diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index fe6975b..dc58bd9 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -719,6 +719,7 @@ class SDNode { public: virtual ~SDNode() { assert(NumOperands == 0 && "Operand list not cleared before deletion"); + assert(NextInBucket == 0 && "Still in CSEMap?"); NodeType = ISD::DELETED_NODE; } |