From 63a46cee874b464ea6964eb4b06fc33852ec1548 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 1 Feb 2005 19:10:48 +0000 Subject: Signficantly speed up printing by not emitting the same file twice with different names. Large SCC's tend to be big, so this saves a lot of time. llvm-svn: 19970 --- llvm/lib/Analysis/DataStructure/Printer.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'llvm/lib/Analysis/DataStructure') diff --git a/llvm/lib/Analysis/DataStructure/Printer.cpp b/llvm/lib/Analysis/DataStructure/Printer.cpp index eb7319df9ce..4d5fa81425e 100644 --- a/llvm/lib/Analysis/DataStructure/Printer.cpp +++ b/llvm/lib/Analysis/DataStructure/Printer.cpp @@ -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"; } -- cgit v1.2.3