diff --git a/lib/Analysis/DataStructure/Printer.cpp b/lib/Analysis/DataStructure/Printer.cpp
index e991bc5..d24045b 100644
--- a/lib/Analysis/DataStructure/Printer.cpp
+++ b/lib/Analysis/DataStructure/Printer.cpp
@@ -283,20 +283,25 @@
   for (Module::const_iterator I = M->begin(), E = M->end(); I != E; ++I)
     if (C.hasGraph(*I)) {
       DSGraph &Gr = C.getDSGraph((Function&)*I);
-      TotalNumNodes += Gr.getGraphSize();
       unsigned NumCalls = Gr.shouldPrintAuxCalls() ?
         Gr.getAuxFunctionCalls().size() : Gr.getFunctionCalls().size();
 
-      TotalCallNodes += NumCalls;
       if (I->getName() == "main" || !OnlyPrintMain) {
         Function *SCCFn = Gr.retnodes_begin()->first;
-        if (&*I == SCCFn)
+        if (&*I == SCCFn) {
+          TotalNumNodes += Gr.getGraphSize();
+          TotalCallNodes += NumCalls;
+
           Gr.writeGraphToFile(O, Prefix+I->getName());
-        else
+        } else {
+          // 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";
       }
