OSDN Git Service

Signficantly speed up printing by not emitting the same file twice with
authorChris Lattner <sabre@nondot.org>
Tue, 1 Feb 2005 19:10:48 +0000 (19:10 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 1 Feb 2005 19:10:48 +0000 (19:10 +0000)
different names.  Large SCC's tend to be big, so this saves a lot of time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19970 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/Printer.cpp

index eb7319d..4d5fa81 100644 (file)
@@ -274,9 +274,15 @@ static void printCollection(const Collection &C, std::ostream &O,
         Gr.getAuxFunctionCalls().size() : Gr.getFunctionCalls().size();
 
       TotalCallNodes += NumCalls;
-      if (I->getName() == "main" || !OnlyPrintMain)
-        Gr.writeGraphToFile(O, Prefix+I->getName());
-      else {
+      if (I->getName() == "main" || !OnlyPrintMain) {
+        Function *SCCFn = Gr.getReturnNodes().begin()->first;
+        if (&*I == SCCFn)
+          Gr.writeGraphToFile(O, Prefix+I->getName());
+        else
+          O << "Didn't write '" << Prefix+I->getName()
+            << ".dot' - Graph already emitted to '" << Prefix+SCCFn->getName()
+            << "\n";
+      } else {
         O << "Skipped Writing '" << Prefix+I->getName() << ".dot'... ["
           << Gr.getGraphSize() << "+" << NumCalls << "]\n";
       }