[llvm-commits] CVS: llvm/lib/Analysis/DataStructure/DataStructure.cpp Local.cpp
Chris Lattner
lattner at cs.uiuc.edu
Sat Nov 9 14:01:02 PST 2002
Changes in directory llvm/lib/Analysis/DataStructure:
DataStructure.cpp updated: 1.56 -> 1.57
Local.cpp updated: 1.31 -> 1.32
---
Log message:
Add initial support for a globals graph
---
Diffs of the changes:
Index: llvm/lib/Analysis/DataStructure/DataStructure.cpp
diff -u llvm/lib/Analysis/DataStructure/DataStructure.cpp:1.56 llvm/lib/Analysis/DataStructure/DataStructure.cpp:1.57
--- llvm/lib/Analysis/DataStructure/DataStructure.cpp:1.56 Sat Nov 9 13:25:27 2002
+++ llvm/lib/Analysis/DataStructure/DataStructure.cpp Sat Nov 9 14:00:45 2002
@@ -501,14 +501,14 @@
// DSGraph Implementation
//===----------------------------------------------------------------------===//
-DSGraph::DSGraph(const DSGraph &G) : Func(G.Func) {
+DSGraph::DSGraph(const DSGraph &G) : Func(G.Func), GlobalsGraph(0) {
std::map<const DSNode*, DSNodeHandle> NodeMap;
RetNode = cloneInto(G, ScalarMap, NodeMap);
}
DSGraph::DSGraph(const DSGraph &G,
std::map<const DSNode*, DSNodeHandle> &NodeMap)
- : Func(G.Func) {
+ : Func(G.Func), GlobalsGraph(0) {
RetNode = cloneInto(G, ScalarMap, NodeMap);
}
@@ -1055,28 +1055,6 @@
//===----------------------------------------------------------------------===//
// GlobalDSGraph Implementation
//===----------------------------------------------------------------------===//
-
-GlobalDSGraph::GlobalDSGraph() : DSGraph(*(Function*)0, this) {
-}
-
-GlobalDSGraph::~GlobalDSGraph() {
- assert(Referrers.size() == 0 &&
- "Deleting global graph while references from other graphs exist");
-}
-
-void GlobalDSGraph::addReference(const DSGraph* referrer) {
- if (referrer != this)
- Referrers.insert(referrer);
-}
-
-void GlobalDSGraph::removeReference(const DSGraph* referrer) {
- if (referrer != this) {
- assert(Referrers.find(referrer) != Referrers.end() && "This is very bad!");
- Referrers.erase(referrer);
- if (Referrers.size() == 0)
- delete this;
- }
-}
#if 0
// Bits used in the next function
Index: llvm/lib/Analysis/DataStructure/Local.cpp
diff -u llvm/lib/Analysis/DataStructure/Local.cpp:1.31 llvm/lib/Analysis/DataStructure/Local.cpp:1.32
--- llvm/lib/Analysis/DataStructure/Local.cpp:1.31 Sat Nov 9 13:25:10 2002
+++ llvm/lib/Analysis/DataStructure/Local.cpp Sat Nov 9 14:00:45 2002
@@ -131,7 +131,7 @@
//===----------------------------------------------------------------------===//
// DSGraph constructor - Simply use the GraphBuilder to construct the local
// graph.
-DSGraph::DSGraph(Function &F) : Func(&F) {
+DSGraph::DSGraph(Function &F, DSGraph *GG) : Func(&F), GlobalsGraph(GG) {
// Use the graph builder to construct the local version of the graph
GraphBuilder B(*this, Nodes, RetNode, ScalarMap, FunctionCalls);
markIncompleteNodes();
@@ -416,12 +416,16 @@
// Empty map so next time memory is released, data structures are not
// re-deleted.
DSInfo.clear();
+ delete GlobalsGraph;
+ GlobalsGraph = 0;
}
bool LocalDataStructures::run(Module &M) {
+ GlobalsGraph = new DSGraph();
+
// Calculate all of the graphs...
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
if (!I->isExternal())
- DSInfo.insert(std::make_pair(I, new DSGraph(*I)));
+ DSInfo.insert(std::make_pair(I, new DSGraph(*I, GlobalsGraph)));
return false;
}
More information about the llvm-commits
mailing list