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

Andrew Lenharth alenhar2 at cs.uiuc.edu
Fri Oct 17 15:29:55 PDT 2008


Author: alenhar2
Date: Fri Oct 17 17:29:55 2008
New Revision: 57740

URL: http://llvm.org/viewvc/llvm-project?rev=57740&view=rev
Log:
make poolalloc pass when it checks for call graph info on functions that previously were removed by removeIdenticalCalls.  This slows down dsa some, but makes the call graph results easier to deal with.

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

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

==============================================================================
--- poolalloc/trunk/lib/DSA/BottomUpClosure.cpp (original)
+++ poolalloc/trunk/lib/DSA/BottomUpClosure.cpp Fri Oct 17 17:29:55 2008
@@ -437,12 +437,10 @@
       CalledFuncs.resize(uid - CalledFuncs.begin());
     }
 
-    //cerr << "at " << TheCall << " with " << CalledFuncs.size() << "\n";
-
     DSGraph *GI;
     
     for (std::vector<const Function*>::iterator ii = CalledFuncs.begin(), ee = CalledFuncs.end();
-         ii != ee; ++ii)
+         ii != ee; ++ii) 
       callee_add(TheCall, *ii);
 
     if (CalledFuncs.size() == 1 && (isComplete || hasDSGraph(*CalledFuncs[0]))) {

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

==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Fri Oct 17 17:29:55 2008
@@ -1058,7 +1058,7 @@
   DSNode *DN = new DSNode(*SN, &Dest, true /* Null out all links */);
   DN->maskNodeTypes(BitsToKeep);
   NH = DN;
-  DOUT << "getClonedNH: " << SN << " becomes " << DN << "\n";
+  //DOUT << "getClonedNH: " << SN << " becomes " << DN << "\n";
 #if 1
 #ifdef LLVA_KERNEL
     //Again we have created a new DSNode, we need to fill in the
@@ -2001,6 +2001,9 @@
 }
 
 static void removeIdenticalCalls(std::list<DSCallSite> &Calls) {
+  // Poolalloc doesn't like call sites to be removed if they are indirect
+  // disable this so all indirect call sites get call graph info
+  return;
   // Remove trivially identical function calls
   Calls.sort();  // Sort by callee as primary key!
 

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

==============================================================================
--- poolalloc/trunk/lib/DSA/StdLibPass.cpp (original)
+++ poolalloc/trunk/lib/DSA/StdLibPass.cpp Fri Oct 17 17:29:55 2008
@@ -66,7 +66,12 @@
   {"sprintf",    {NRET_YARGS,  NRET_YNARGS, NRET_NARGS, false, false, false}},
   {"snprintf",   {NRET_YARGS,  NRET_YNARGS, NRET_NARGS, false, false, false}},
   {"fprintf",    {NRET_YARGS,  NRET_YNARGS, NRET_NARGS, false, false, false}},
-  {"puts",       {NRET_NARGS,  NRET_NARGS,  NRET_NARGS, false, false, false}},
+  {"puts",       {NRET_YARGS,  NRET_NARGS,  NRET_NARGS, false, false, false}},
+  {"putc",       {NRET_NARGS,  NRET_NARGS,  NRET_NARGS, false, false, false}},
+  {"putchar",    {NRET_NARGS,  NRET_NARGS,  NRET_NARGS, false, false, false}},
+  {"fputs",      {NRET_YARGS,  NRET_NYARGS, NRET_NARGS, false, false, false}},
+  {"fputc",      {NRET_YARGS,  NRET_NYARGS, NRET_NARGS, false, false, false}},
+
 
   {"calloc",     {NRET_NARGS, YRET_NARGS, YRET_NARGS,  false, false, false}},
   {"malloc",     {NRET_NARGS, YRET_NARGS, YRET_NARGS,  false, false, false}},
@@ -103,6 +108,9 @@
   {"strrchr",    {YRET_YARGS, NRET_NARGS, NRET_NARGS, false, true, true}},
   {"wcsrchr",    {YRET_YARGS, NRET_NARGS, NRET_NARGS, false, true, true}},
   {"strchrhul",  {YRET_YARGS, NRET_NARGS, NRET_NARGS, false, true, true}},
+  {"strcat",     {YRET_YARGS, YRET_YARGS, NRET_NARGS,  true, true, true}},
+  {"strncat",    {YRET_YARGS, YRET_YARGS, NRET_NARGS,  true, true, true}},
+
 
   {"fwrite",     {NRET_YARGS, NRET_NYARGS, NRET_NARGS, false, false, false}},
   {"fread",      {NRET_NYARGS, NRET_YARGS, NRET_NARGS, false, false, false}},





More information about the llvm-commits mailing list