[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