[llvm-commits] [poolalloc] r120934 - in /poolalloc/trunk: include/dsa/DataStructure.h lib/DSA/BottomUpClosure.cpp lib/DSA/CompleteBottomUp.cpp lib/DSA/DataStructure.cpp lib/DSA/EquivClassGraphs.cpp lib/DSA/TopDownClosure.cpp
Arushi Aggarwal
aggarwa4 at illinois.edu
Sat Dec 4 20:25:27 PST 2010
Author: aggarwa4
Date: Sat Dec 4 22:25:26 2010
New Revision: 120934
URL: http://llvm.org/viewvc/llvm-project?rev=120934&view=rev
Log:
Make cloneGlobalsInto, and cloneIntoGlobals take flags.
This allows us to not pass the StripAllocaBit in TD.
Modified:
poolalloc/trunk/include/dsa/DataStructure.h
poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
poolalloc/trunk/lib/DSA/CompleteBottomUp.cpp
poolalloc/trunk/lib/DSA/DataStructure.cpp
poolalloc/trunk/lib/DSA/EquivClassGraphs.cpp
poolalloc/trunk/lib/DSA/TopDownClosure.cpp
Modified: poolalloc/trunk/include/dsa/DataStructure.h
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/include/dsa/DataStructure.h?rev=120934&r1=120933&r2=120934&view=diff
==============================================================================
--- poolalloc/trunk/include/dsa/DataStructure.h (original)
+++ poolalloc/trunk/include/dsa/DataStructure.h Sat Dec 4 22:25:26 2010
@@ -89,8 +89,8 @@
void formGlobalECs();
- void cloneIntoGlobals(DSGraph* G);
- void cloneGlobalsInto(DSGraph* G);
+ void cloneIntoGlobals(DSGraph* G, unsigned cloneFlags);
+ void cloneGlobalsInto(DSGraph* G, unsigned cloneFlags);
void restoreCorrectCallGraph();
Modified: poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/BottomUpClosure.cpp?rev=120934&r1=120933&r2=120934&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/BottomUpClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/BottomUpClosure.cpp Sat Dec 4 22:25:26 2010
@@ -116,7 +116,8 @@
for (Module::iterator F = M.begin(); F != M.end(); ++F) {
if (!(F->isDeclaration())){
DSGraph *Graph = getOrCreateGraph(F);
- cloneGlobalsInto(Graph);
+ cloneGlobalsInto(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
Graph->buildCallGraph(callgraph, GlobalFunctionList, filterCallees);
Graph->maskIncompleteMarkers();
Graph->markIncompleteNodes(DSGraph::MarkFormalArgs |
@@ -273,7 +274,8 @@
for (Module::iterator F = M.begin(); F != M.end(); ++F) {
if (!(F->isDeclaration())){
DSGraph *Graph = getDSGraph(*F);
- cloneGlobalsInto(Graph);
+ cloneGlobalsInto(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
}
}
}
@@ -627,7 +629,9 @@
// reach live nodes as live.
Graph->removeDeadNodes(DSGraph::KeepUnreachableGlobals);
- cloneIntoGlobals(Graph);
+ cloneIntoGlobals(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes |
+ DSGraph::StripAllocaBit);
//Graph.writeGraphToFile(cerr, "bu_" + F.getName());
}
Modified: poolalloc/trunk/lib/DSA/CompleteBottomUp.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/CompleteBottomUp.cpp?rev=120934&r1=120933&r2=120934&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/CompleteBottomUp.cpp (original)
+++ poolalloc/trunk/lib/DSA/CompleteBottomUp.cpp Sat Dec 4 22:25:26 2010
@@ -57,11 +57,21 @@
buildIndirectFunctionSets();
formGlobalECs();
+ for (Module::iterator F = M.begin(); F != M.end(); ++F) {
+ if (!(F->isDeclaration())) {
+ if (DSGraph * Graph = getOrCreateGraph(F)) {
+ cloneIntoGlobals(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes |
+ DSGraph::StripAllocaBit);
+ }
+ }
+ }
for (Module::iterator F = M.begin(); F != M.end(); ++F) {
if (!(F->isDeclaration())) {
if (DSGraph * Graph = getOrCreateGraph(F)) {
- cloneGlobalsInto (Graph);
+ cloneGlobalsInto(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
}
}
}
Modified: poolalloc/trunk/lib/DSA/DataStructure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructure.cpp?rev=120934&r1=120933&r2=120934&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Sat Dec 4 22:25:26 2010
@@ -1485,15 +1485,13 @@
}
//For Entry Points
-void DataStructures::cloneGlobalsInto(DSGraph* Graph) {
+void DataStructures::cloneGlobalsInto(DSGraph* Graph, unsigned cloneFlags) {
// If this graph contains main, copy the contents of the globals graph over.
// Note that this is *required* for correctness. If a callee contains a use
// of a global, we have to make sure to link up nodes due to global-argument
// bindings.
const DSGraph* GG = Graph->getGlobalsGraph();
- ReachabilityCloner RC(Graph, GG,
- DSGraph::DontCloneCallNodes |
- DSGraph::DontCloneAuxCallNodes);
+ ReachabilityCloner RC(Graph, GG, cloneFlags);
// Clone the global nodes into this graph.
for (DSScalarMap::global_iterator I = Graph->getScalarMap().global_begin(),
@@ -1502,14 +1500,11 @@
}
//For all graphs
-void DataStructures::cloneIntoGlobals(DSGraph* Graph) {
+void DataStructures::cloneIntoGlobals(DSGraph* Graph, unsigned cloneFlags) {
// When this graph is finalized, clone the globals in the graph into the
// globals graph to make sure it has everything, from all graphs.
DSScalarMap &MainSM = Graph->getScalarMap();
- ReachabilityCloner RC(GlobalsGraph, Graph,
- DSGraph::DontCloneCallNodes |
- DSGraph::DontCloneAuxCallNodes |
- DSGraph::StripAllocaBit);
+ ReachabilityCloner RC(GlobalsGraph, Graph, cloneFlags);
// Clone everything reachable from globals in the function graph into the
// globals graph.
Modified: poolalloc/trunk/lib/DSA/EquivClassGraphs.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/EquivClassGraphs.cpp?rev=120934&r1=120933&r2=120934&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/EquivClassGraphs.cpp (original)
+++ poolalloc/trunk/lib/DSA/EquivClassGraphs.cpp Sat Dec 4 22:25:26 2010
@@ -73,7 +73,8 @@
for (Module::iterator F = M.begin(); F != M.end(); ++F) {
if (!(F->isDeclaration())) {
if (DSGraph * Graph = getOrCreateGraph(F)) {
- cloneGlobalsInto (Graph);
+ cloneGlobalsInto(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
}
}
}
@@ -243,7 +244,9 @@
// graph merging.
//
if (BaseGraph)
- cloneIntoGlobals(BaseGraph);
+ cloneIntoGlobals(BaseGraph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes |
+ DSGraph::StripAllocaBit);
}
}
Modified: poolalloc/trunk/lib/DSA/TopDownClosure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/TopDownClosure.cpp?rev=120934&r1=120933&r2=120934&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/TopDownClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/TopDownClosure.cpp Sat Dec 4 22:25:26 2010
@@ -168,7 +168,8 @@
if (!(F->isDeclaration())){
DSGraph *Graph = getOrCreateGraph(F);
- cloneGlobalsInto(Graph);
+ cloneGlobalsInto(Graph, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
// Clean up uninteresting nodes
Graph->removeDeadNodes(0);
@@ -224,7 +225,8 @@
// then having RemoveDeadNodes clone it back, we should do all of this as a
// post-pass over all of the graphs. We need to take cloning out of
// removeDeadNodes and gut removeDeadNodes at the same time first though. :(
- cloneGlobalsInto(DSG);
+ cloneGlobalsInto(DSG, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
DEBUG(errs() << "[TD] Inlining callers into '"
<< DSG->getFunctionNames() << "'\n");
@@ -294,18 +296,8 @@
DSG->computeExternalFlags(ExtFlags);
DSG->computeIntPtrFlags();
- cloneIntoGlobals(DSG);
- /*{
- DSGraph* GG = DSG->getGlobalsGraph();
- ReachabilityCloner RC(GG, DSG,
- DSGraph::DontCloneCallNodes |
- DSGraph::DontCloneAuxCallNodes);
- for (DSScalarMap::global_iterator
- GI = DSG->getScalarMap().global_begin(),
- E = DSG->getScalarMap().global_end(); GI != E; ++GI)
- RC.getClonedNH(DSG->getNodeForValue(*GI));
- }*/
-
+ cloneIntoGlobals(DSG, DSGraph::DontCloneCallNodes |
+ DSGraph::DontCloneAuxCallNodes);
//
// Delete dead nodes. Treat globals that are unreachable as dead also.
//
More information about the llvm-commits
mailing list