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

Andrew Lenharth alenhar2 at cs.uiuc.edu
Tue Sep 30 13:19:58 PDT 2008


Author: alenhar2
Date: Tue Sep 30 15:19:58 2008
New Revision: 56872

URL: http://llvm.org/viewvc/llvm-project?rev=56872&view=rev
Log:
Fixup on partial inline stuff

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

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

==============================================================================
--- poolalloc/trunk/lib/DSA/BottomUpClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/BottomUpClosure.cpp Tue Sep 30 15:19:58 2008
@@ -72,6 +72,12 @@
       CloneAuxIntoGlobal(getDSGraph(*I));
     }
 
+  //Be sure to get the all unresolved call sites
+  for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
+    if (!I->isDeclaration() && InlinedSomewhere.find(I) == InlinedSomewhere.end())
+      CloneAuxIntoGlobal(getDSGraph(*I));
+  InlinedSomewhere.clear();
+
   // If we computed any temporary indcallgraphs, free them now.
   for (std::map<std::vector<Function*>,
          std::pair<DSGraph*, std::vector<DSNodeHandle> > >::iterator I =
@@ -397,7 +403,8 @@
     if (CalledFuncs.size() == 1) {
       Function *Callee = CalledFuncs[0];
       ActualCallees.insert(std::make_pair(TheCall, Callee));
-      
+      if (isComplete) InlinedSomewhere.insert(Callee);
+
       // Get the data structure graph for the called function.
       GI = &getDSGraph(*Callee);  // Graph to inline
       DOUT << "    Inlining graph for " << Callee->getName()
@@ -446,24 +453,26 @@
         GI->getFunctionArgumentsForCall(*I, Args);
         
         // Merge all of the other callees into this graph.
-        for (++I; I != E; ++I) {
-          // If the graph already contains the nodes for the function, don't
-          // bother merging it in again.
-          if (!GI->containsFunction(*I)) {
-            GI->cloneInto(getDSGraph(**I));
-            ++NumBUInlines;
-          }
-          
-          std::vector<DSNodeHandle> NextArgs;
-          GI->getFunctionArgumentsForCall(*I, NextArgs);
-          unsigned i = 0, e = Args.size();
-          for (; i != e; ++i) {
-            if (i == NextArgs.size()) break;
-            Args[i].mergeWith(NextArgs[i]);
+        for (++I; I != E; ++I) 
+          if (isComplete || hasDSGraph(**I)) {
+            if (isComplete) InlinedSomewhere.insert(*I);
+            // If the graph already contains the nodes for the function, don't
+            // bother merging it in again.
+            if (!GI->containsFunction(*I)) {
+              GI->cloneInto(getDSGraph(**I));
+              ++NumBUInlines;
+            }
+            
+            std::vector<DSNodeHandle> NextArgs;
+            GI->getFunctionArgumentsForCall(*I, NextArgs);
+            unsigned i = 0, e = Args.size();
+            for (; i != e; ++i) {
+              if (i == NextArgs.size()) break;
+              Args[i].mergeWith(NextArgs[i]);
+            }
+            for (e = NextArgs.size(); i != e; ++i)
+              Args.push_back(NextArgs[i]);
           }
-          for (e = NextArgs.size(); i != e; ++i)
-            Args.push_back(NextArgs[i]);
-        }
         
         // Clean up the final graph!
         GI->removeDeadNodes(DSGraph::KeepUnreachableGlobals);

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

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

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

==============================================================================
--- poolalloc/trunk/lib/DSA/Printer.cpp (original)
+++ poolalloc/trunk/lib/DSA/Printer.cpp Tue Sep 30 15:19:58 2008
@@ -279,7 +279,7 @@
 
   unsigned TotalNumNodes = 0, TotalCallNodes = 0;
   for (Module::const_iterator I = M->begin(), E = M->end(); I != E; ++I)
-    if (C.hasGraph(*I)) {
+    if (C.hasDSGraph(*I)) {
       DSGraph &Gr = C.getDSGraph((Function&)*I);
       unsigned NumCalls = Gr.shouldPrintAuxCalls() ?
         Gr.getAuxFunctionCalls().size() : Gr.getFunctionCalls().size();





More information about the llvm-commits mailing list