diff options
author | Chris Lattner <sabre@nondot.org> | 2005-03-25 20:54:45 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-03-25 20:54:45 +0000 |
commit | cf9082589c9bc17aa70d328faea82204726918f1 (patch) | |
tree | 14d6e1d8fd6b48bc67609acbce40e0f19aabf5de /lib/Analysis/DataStructure/Printer.cpp | |
parent | 0423e031d63b643742ea6874e10ab09b5c932f34 (diff) |
no really, don't double count these nodes either!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20837 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/DataStructure/Printer.cpp')
-rw-r--r-- | lib/Analysis/DataStructure/Printer.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/lib/Analysis/DataStructure/Printer.cpp b/lib/Analysis/DataStructure/Printer.cpp index d24045b765..03b298cbad 100644 --- a/lib/Analysis/DataStructure/Printer.cpp +++ b/lib/Analysis/DataStructure/Printer.cpp @@ -285,34 +285,39 @@ static void printCollection(const Collection &C, std::ostream &O, DSGraph &Gr = C.getDSGraph((Function&)*I); unsigned NumCalls = Gr.shouldPrintAuxCalls() ? Gr.getAuxFunctionCalls().size() : Gr.getFunctionCalls().size(); + bool IsDuplicateGraph = false; if (I->getName() == "main" || !OnlyPrintMain) { Function *SCCFn = Gr.retnodes_begin()->first; if (&*I == SCCFn) { - TotalNumNodes += Gr.getGraphSize(); - TotalCallNodes += NumCalls; - Gr.writeGraphToFile(O, Prefix+I->getName()); } else { - // Don't double count node/call nodes. + IsDuplicateGraph = true; // Don't double count node/call nodes. O << "Didn't write '" << Prefix+I->getName() << ".dot' - Graph already emitted to '" << Prefix+SCCFn->getName() << "\n"; } } else { - TotalNumNodes += Gr.getGraphSize(); - TotalCallNodes += NumCalls; - O << "Skipped Writing '" << Prefix+I->getName() << ".dot'... [" - << Gr.getGraphSize() << "+" << NumCalls << "]\n"; + Function *SCCFn = Gr.retnodes_begin()->first; + if (&*I == SCCFn) { + O << "Skipped Writing '" << Prefix+I->getName() << ".dot'... [" + << Gr.getGraphSize() << "+" << NumCalls << "]\n"; + } else { + IsDuplicateGraph = true; // Don't double count node/call nodes. + } } - unsigned GraphSize = Gr.getGraphSize(); - if (MaxGraphSize < GraphSize) MaxGraphSize = GraphSize; + if (!IsDuplicateGraph) { + unsigned GraphSize = Gr.getGraphSize(); + if (MaxGraphSize < GraphSize) MaxGraphSize = GraphSize; - for (DSGraph::node_iterator NI = Gr.node_begin(), E = Gr.node_end(); - NI != E; ++NI) - if (NI->isNodeCompletelyFolded()) - ++NumFoldedNodes; + TotalNumNodes += Gr.getGraphSize(); + TotalCallNodes += NumCalls; + for (DSGraph::node_iterator NI = Gr.node_begin(), E = Gr.node_end(); + NI != E; ++NI) + if (NI->isNodeCompletelyFolded()) + ++NumFoldedNodes; + } } DSGraph &GG = C.getGlobalsGraph(); |