diff --git a/bolt/include/bolt/Core/BinaryContext.h b/bolt/include/bolt/Core/BinaryContext.h --- a/bolt/include/bolt/Core/BinaryContext.h +++ b/bolt/include/bolt/Core/BinaryContext.h @@ -615,6 +615,9 @@ /// Number of functions with profile information uint64_t NumProfiledFuncs{0}; + /// Number of functions with stale profile information + uint64_t NumStaleProfileFuncs{0}; + /// Number of objects in profile whose profile was ignored. uint64_t NumUnusedProfiledObjects{0}; diff --git a/bolt/lib/Passes/BinaryPasses.cpp b/bolt/lib/Passes/BinaryPasses.cpp --- a/bolt/lib/Passes/BinaryPasses.cpp +++ b/bolt/lib/Passes/BinaryPasses.cpp @@ -417,10 +417,14 @@ ParallelUtilities::runOnEachFunction( BC, ParallelUtilities::SchedulingPolicy::SP_BB_LINEAR, WorkFun, SkipFunc, "ReorderBasicBlocks"); + const size_t NumAllProfiledFunctions = + BC.NumProfiledFuncs + BC.NumStaleProfileFuncs; outs() << "BOLT-INFO: basic block reordering modified layout of " - << format("%zu (%.2lf%%) functions\n", + << format("%zu functions (%.2lf%% of profiled, %.2lf%% of total)\n", ModifiedFuncCount.load(std::memory_order_relaxed), + 100.0 * ModifiedFuncCount.load(std::memory_order_relaxed) / + NumAllProfiledFunctions, 100.0 * ModifiedFuncCount.load(std::memory_order_relaxed) / BC.getBinaryFunctions().size()); @@ -1383,6 +1387,7 @@ } } BC.NumProfiledFuncs = ProfiledFunctions.size(); + BC.NumStaleProfileFuncs = NumStaleProfileFunctions; const size_t NumAllProfiledFunctions = ProfiledFunctions.size() + NumStaleProfileFunctions;