diff options
Diffstat (limited to 'include/llvm/Analysis/DataStructure')
-rw-r--r-- | include/llvm/Analysis/DataStructure/DSGraph.h | 14 | ||||
-rw-r--r-- | include/llvm/Analysis/DataStructure/DSNode.h | 4 | ||||
-rw-r--r-- | include/llvm/Analysis/DataStructure/DSSupport.h | 14 | ||||
-rw-r--r-- | include/llvm/Analysis/DataStructure/DataStructure.h | 23 |
4 files changed, 28 insertions, 27 deletions
diff --git a/include/llvm/Analysis/DataStructure/DSGraph.h b/include/llvm/Analysis/DataStructure/DSGraph.h index 8e11dc010a..daab1195b3 100644 --- a/include/llvm/Analysis/DataStructure/DSGraph.h +++ b/include/llvm/Analysis/DataStructure/DSGraph.h @@ -19,7 +19,7 @@ class DSGraph { DSNodeHandle RetNode; // The node that gets returned... std::vector<DSNode*> Nodes; - std::map<Value*, DSNodeHandle> ScalarMap; + hash_map<Value*, DSNodeHandle> ScalarMap; // FunctionCalls - This vector maintains a single entry for each call // instruction in the current graph. The first entry in the vector is the @@ -49,7 +49,7 @@ public: // method. // DSGraph(const DSGraph &DSG); - DSGraph(const DSGraph &DSG, std::map<const DSNode*, DSNodeHandle> &NodeMap); + DSGraph(const DSGraph &DSG, hash_map<const DSNode*, DSNodeHandle> &NodeMap); ~DSGraph(); bool hasFunction() const { return Func != 0; } @@ -76,8 +76,8 @@ public: /// getScalarMap - Get a map that describes what the nodes the scalars in this /// function point to... /// - std::map<Value*, DSNodeHandle> &getScalarMap() { return ScalarMap; } - const std::map<Value*, DSNodeHandle> &getScalarMap() const {return ScalarMap;} + hash_map<Value*, DSNodeHandle> &getScalarMap() { return ScalarMap; } + const hash_map<Value*, DSNodeHandle> &getScalarMap() const {return ScalarMap;} /// getFunctionCalls - Return the list of call sites in the original local /// graph... @@ -102,7 +102,7 @@ public: DSNodeHandle &getNodeForValue(Value *V) { return ScalarMap[V]; } const DSNodeHandle &getNodeForValue(Value *V) const { - std::map<Value*, DSNodeHandle>::const_iterator I = ScalarMap.find(V); + hash_map<Value*, DSNodeHandle>::const_iterator I = ScalarMap.find(V); assert(I != ScalarMap.end() && "Use non-const lookup function if node may not be in the map"); return I->second; @@ -168,8 +168,8 @@ public: // being cloned. // DSNodeHandle cloneInto(const DSGraph &G, - std::map<Value*, DSNodeHandle> &OldValMap, - std::map<const DSNode*, DSNodeHandle> &OldNodeMap, + hash_map<Value*, DSNodeHandle> &OldValMap, + hash_map<const DSNode*, DSNodeHandle> &OldNodeMap, unsigned CloneFlags = 0); /// mergeInGraph - The method is used for merging graphs together. If the diff --git a/include/llvm/Analysis/DataStructure/DSNode.h b/include/llvm/Analysis/DataStructure/DSNode.h index 5edbd72f83..da8050cd9a 100644 --- a/include/llvm/Analysis/DataStructure/DSNode.h +++ b/include/llvm/Analysis/DataStructure/DSNode.h @@ -218,13 +218,13 @@ public: /// remapLinks - Change all of the Links in the current node according to the /// specified mapping. - void remapLinks(std::map<const DSNode*, DSNodeHandle> &OldNodeMap); + void remapLinks(hash_map<const DSNode*, DSNodeHandle> &OldNodeMap); /// markReachableNodes - This method recursively traverses the specified /// DSNodes, marking any nodes which are reachable. All reachable nodes it /// adds to the set, which allows it to only traverse visited nodes once. /// - void markReachableNodes(std::set<DSNode*> &ReachableNodes); + void markReachableNodes(hash_set<DSNode*> &ReachableNodes); private: friend class DSNodeHandle; diff --git a/include/llvm/Analysis/DataStructure/DSSupport.h b/include/llvm/Analysis/DataStructure/DSSupport.h index f0f261e0b9..06bcb5eaa9 100644 --- a/include/llvm/Analysis/DataStructure/DSSupport.h +++ b/include/llvm/Analysis/DataStructure/DSSupport.h @@ -8,10 +8,10 @@ #define LLVM_ANALYSIS_DSSUPPORT_H #include <vector> -#include <map> -#include <set> #include <functional> #include <string> +#include "Support/HashExtras.h" +#include "Support/hash_set" class Function; class CallInst; @@ -118,9 +118,9 @@ class DSCallSite { Function *ResolvingCaller; // See comments above static void InitNH(DSNodeHandle &NH, const DSNodeHandle &Src, - const std::map<const DSNode*, DSNode*> &NodeMap) { + const hash_map<const DSNode*, DSNode*> &NodeMap) { if (DSNode *N = Src.getNode()) { - std::map<const DSNode*, DSNode*>::const_iterator I = NodeMap.find(N); + hash_map<const DSNode*, DSNode*>::const_iterator I = NodeMap.find(N); assert(I != NodeMap.end() && "Not not in mapping!"); NH.setOffset(Src.getOffset()); @@ -129,9 +129,9 @@ class DSCallSite { } static void InitNH(DSNodeHandle &NH, const DSNodeHandle &Src, - const std::map<const DSNode*, DSNodeHandle> &NodeMap) { + const hash_map<const DSNode*, DSNodeHandle> &NodeMap) { if (DSNode *N = Src.getNode()) { - std::map<const DSNode*, DSNodeHandle>::const_iterator I = NodeMap.find(N); + hash_map<const DSNode*, DSNodeHandle>::const_iterator I = NodeMap.find(N); assert(I != NodeMap.end() && "Not not in mapping!"); NH.setOffset(Src.getOffset()+I->second.getOffset()); @@ -219,7 +219,7 @@ public: /// DSNodes, marking any nodes which are reachable. All reachable nodes it /// adds to the set, which allows it to only traverse visited nodes once. /// - void markReachableNodes(std::set<DSNode*> &Nodes); + void markReachableNodes(hash_set<DSNode*> &Nodes); bool operator<(const DSCallSite &CS) const { if (Callee < CS.Callee) return true; // This must sort by callee first! diff --git a/include/llvm/Analysis/DataStructure/DataStructure.h b/include/llvm/Analysis/DataStructure/DataStructure.h index 391f95a810..ddaf83a459 100644 --- a/include/llvm/Analysis/DataStructure/DataStructure.h +++ b/include/llvm/Analysis/DataStructure/DataStructure.h @@ -8,7 +8,8 @@ #define LLVM_ANALYSIS_DATA_STRUCTURE_H #include "llvm/Pass.h" -#include <set> +#include "Support/HashExtras.h" +#include "Support/hash_set" class Type; class DSGraph; @@ -32,7 +33,7 @@ namespace DataStructureAnalysis { // class LocalDataStructures : public Pass { // DSInfo, one graph for each function - std::map<const Function*, DSGraph*> DSInfo; + hash_map<const Function*, DSGraph*> DSInfo; DSGraph *GlobalsGraph; public: ~LocalDataStructures() { releaseMemory(); } @@ -45,7 +46,7 @@ public: // getDSGraph - Return the data structure graph for the specified function. DSGraph &getDSGraph(const Function &F) const { - std::map<const Function*, DSGraph*>::const_iterator I = DSInfo.find(&F); + hash_map<const Function*, DSGraph*>::const_iterator I = DSInfo.find(&F); assert(I != DSInfo.end() && "Function not in module!"); return *I->second; } @@ -71,7 +72,7 @@ public: // class BUDataStructures : public Pass { // DSInfo, one graph for each function - std::map<const Function*, DSGraph*> DSInfo; + hash_map<const Function*, DSGraph*> DSInfo; DSGraph *GlobalsGraph; public: ~BUDataStructures() { releaseMemory(); } @@ -84,7 +85,7 @@ public: // getDSGraph - Return the data structure graph for the specified function. DSGraph &getDSGraph(const Function &F) const { - std::map<const Function*, DSGraph*>::const_iterator I = DSInfo.find(&F); + hash_map<const Function*, DSGraph*>::const_iterator I = DSInfo.find(&F); assert(I != DSInfo.end() && "Function not in module!"); return *I->second; } @@ -110,10 +111,10 @@ private: // functions IN the SCC at all. // DSGraph &inlineNonSCCGraphs(Function &F, - std::set<Function*> &SCCFunctions); + hash_set<Function*> &SCCFunctions); DSGraph &calculateSCCGraph(Function &F, - std::set<Function*> &InlinedSCCFunctions); + hash_set<Function*> &InlinedSCCFunctions); void calculateReachableGraphs(Function *F); @@ -121,7 +122,7 @@ private: unsigned calculateGraphs(Function *F, std::vector<Function*> &Stack, unsigned &NextID, - std::map<Function*, unsigned> &ValMap); + hash_map<Function*, unsigned> &ValMap); }; @@ -131,8 +132,8 @@ private: // class TDDataStructures : public Pass { // DSInfo, one graph for each function - std::map<const Function*, DSGraph*> DSInfo; - std::set<const Function*> GraphDone; + hash_map<const Function*, DSGraph*> DSInfo; + hash_set<const Function*> GraphDone; DSGraph *GlobalsGraph; public: ~TDDataStructures() { releaseMemory(); } @@ -145,7 +146,7 @@ public: // getDSGraph - Return the data structure graph for the specified function. DSGraph &getDSGraph(const Function &F) const { - std::map<const Function*, DSGraph*>::const_iterator I = DSInfo.find(&F); + hash_map<const Function*, DSGraph*>::const_iterator I = DSInfo.find(&F); assert(I != DSInfo.end() && "Function not in module!"); return *I->second; } |