diff options
Diffstat (limited to 'llvm/lib/LTO')
| -rw-r--r-- | llvm/lib/LTO/SummaryBasedOptimizations.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/lib/LTO/SummaryBasedOptimizations.cpp b/llvm/lib/LTO/SummaryBasedOptimizations.cpp index 8b1abb78462..bcdd984daa5 100644 --- a/llvm/lib/LTO/SummaryBasedOptimizations.cpp +++ b/llvm/lib/LTO/SummaryBasedOptimizations.cpp @@ -60,21 +60,27 @@ void llvm::computeSyntheticCounts(ModuleSummaryIndex &Index) { return UINT64_C(0); } }; - auto AddToEntryCount = [](ValueInfo V, uint64_t New) { + auto AddToEntryCount = [](ValueInfo V, Scaled64 New) { if (!V.getSummaryList().size()) return; for (auto &GVS : V.getSummaryList()) { auto S = GVS.get()->getBaseObject(); auto *F = cast<FunctionSummary>(S); - F->setEntryCount(SaturatingAdd(F->entryCount(), New)); + F->setEntryCount( + SaturatingAdd(F->entryCount(), New.template toInt<uint64_t>())); } }; + auto GetProfileCount = [&](ValueInfo V, FunctionSummary::EdgeTy &Edge) { + auto RelFreq = GetCallSiteRelFreq(Edge); + Scaled64 EC(GetEntryCount(V), 0); + return RelFreq * EC; + }; // After initializing the counts in initializeCounts above, the counts have to // be propagated across the combined callgraph. // SyntheticCountsUtils::propagate takes care of this propagation on any // callgraph that specialized GraphTraits. - SyntheticCountsUtils<ModuleSummaryIndex *>::propagate( - &Index, GetCallSiteRelFreq, GetEntryCount, AddToEntryCount); + SyntheticCountsUtils<ModuleSummaryIndex *>::propagate(&Index, GetProfileCount, + AddToEntryCount); Index.setHasSyntheticEntryCounts(); } |

