diff --git a/lib/Analysis/CallGraphSCCPass.cpp b/lib/Analysis/CallGraphSCCPass.cpp index 9cef7814415..1c84cf5c6b0 100644 --- a/lib/Analysis/CallGraphSCCPass.cpp +++ b/lib/Analysis/CallGraphSCCPass.cpp @@ -609,13 +609,23 @@ namespace { } bool runOnSCC(CallGraphSCC &SCC) override { - Out << Banner; + auto PrintBannerOnce = [&] () { + static bool BannerPrinted = false; + if (BannerPrinted) + return; + Out << Banner; + BannerPrinted = true; + }; for (CallGraphNode *CGN : SCC) { if (CGN->getFunction()) { - if (isFunctionInPrintList(CGN->getFunction()->getName())) + if (isFunctionInPrintList(CGN->getFunction()->getName())) { + PrintBannerOnce(); CGN->getFunction()->print(Out); - } else + } + } else if (llvm::isFunctionInPrintList("*")) { + PrintBannerOnce(); Out << "\nPrinting Function\n"; + } } return false; }