[llvm-commits] [poolalloc] r56870 - in /poolalloc/trunk/lib/DSA: BottomUpClosure.cpp DataStructure.cpp Makefile

Andrew Lenharth alenhar2 at cs.uiuc.edu
Tue Sep 30 12:12:36 PDT 2008


Author: alenhar2
Date: Tue Sep 30 14:12:35 2008
New Revision: 56870

URL: http://llvm.org/viewvc/llvm-project?rev=56870&view=rev
Log:
TD expects all unresolved function calls to be in the GlobalsGraph

Modified:
    poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
    poolalloc/trunk/lib/DSA/DataStructure.cpp
    poolalloc/trunk/lib/DSA/Makefile

Modified: poolalloc/trunk/lib/DSA/BottomUpClosure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/BottomUpClosure.cpp?rev=56870&r1=56869&r2=56870&view=diff

==============================================================================
--- poolalloc/trunk/lib/DSA/BottomUpClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/BottomUpClosure.cpp Tue Sep 30 14:12:35 2008
@@ -57,8 +57,10 @@
   unsigned NextID = 1;
 
   Function *MainFunc = M.getFunction("main");
-  if (MainFunc)
+  if (MainFunc) {
     calculateGraphs(MainFunc, Stack, NextID, ValMap);
+    CloneAuxIntoGlobal(getDSGraph(*MainFunc));
+  }
 
   // Calculate the graphs for any functions that are unreachable from main...
   for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
@@ -67,6 +69,7 @@
         DOUT << "*** BU: Function unreachable from main: "
              << I->getName() << "\n";
       calculateGraphs(I, Stack, NextID, ValMap);     // Calculate all graphs.
+      CloneAuxIntoGlobal(getDSGraph(*I));
     }
 
   // If we computed any temporary indcallgraphs, free them now.
@@ -297,6 +300,14 @@
   return MyID;  // == Min
 }
 
+void BUDataStructures::CloneAuxIntoGlobal(DSGraph& G) {
+  DSGraph& GG = *G.getGlobalsGraph();
+  ReachabilityCloner RC(GG, G, 0);
+
+  for(DSGraph::afc_iterator ii = G.afc_begin(), ee = G.afc_end();
+      ii != ee; ++ii)
+    GG.getAuxFunctionCalls().push_front(RC.cloneCallSite(*ii));
+}
 
 // releaseMemory - If the pass pipeline is done with this pass, we can release
 // our memory... here...

Modified: poolalloc/trunk/lib/DSA/DataStructure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructure.cpp?rev=56870&r1=56869&r2=56870&view=diff

==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Tue Sep 30 14:12:35 2008
@@ -1368,6 +1368,22 @@
     DestCS.addPtrArg(getClonedNH(SrcCS.getPtrArg(a)));
 }
 
+DSCallSite ReachabilityCloner::cloneCallSite(const DSCallSite& SrcCS) {
+  std::vector<DSNodeHandle> Args;
+  for(unsigned x = 0; x < SrcCS.getNumPtrArgs(); ++x)
+    Args.push_back(getClonedNH(SrcCS.getPtrArg(x)));
+  if (SrcCS.isDirectCall())
+    return DSCallSite(SrcCS.getCallSite(),
+                      getClonedNH(SrcCS.getRetVal()),
+                      SrcCS.getCalleeFunc(),
+                      Args);
+  else
+    return DSCallSite(SrcCS.getCallSite(),
+                      getClonedNH(SrcCS.getRetVal()),
+                      getClonedNH(SrcCS.getCalleeNode()).getNode(),
+                      Args);
+}
+
 //===----------------------------------------------------------------------===//
 // DSCallSite Implementation
 //===----------------------------------------------------------------------===//

Modified: poolalloc/trunk/lib/DSA/Makefile
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/Makefile?rev=56870&r1=56869&r2=56870&view=diff

==============================================================================
--- poolalloc/trunk/lib/DSA/Makefile (original)
+++ poolalloc/trunk/lib/DSA/Makefile Tue Sep 30 14:12:35 2008
@@ -12,7 +12,7 @@
 SHARED_LIBRARY=1
 LIBRARYNAME = LLVMDataStructure
 
-CFlags += -fPIC
+CFlags += -fPIC -Wno-deprecated
 
 include $(LEVEL)/Makefile.common
 





More information about the llvm-commits mailing list