llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Mingming Liu (minglotus-6) <details> <summary>Changes</summary> The primary motivation is to remove `EntryCount` from `FunctionSummary`. This frees 8 bytes out of `sizeof(FunctionSummary)` (136 byte as of https://github.com/llvm/llvm-project/commit/64498c54831bed9cf069e0923b9b73678c6451d8). While I'm at it, this PR clean up {SummaryBasedOptimizations, SyntheticCountsPropagation} since they were not used and there are no plans to further invest on them. With this patch, bitcode writer writes a placeholder 0 at the byte offset of `EntryCount` and bitcode reader can parse the function entry count at the correct byte offset. Added a TODO to stop writing `EntryCount` and bump bitcode version --- Patch is 37.45 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/107471.diff 26 Files Affected: - (modified) clang/docs/tools/clang-formatted-files.txt (-4) - (modified) llvm/include/llvm/IR/ModuleSummaryIndex.h (+4-20) - (modified) llvm/include/llvm/IR/ModuleSummaryIndexYAML.h (+1-1) - (removed) llvm/include/llvm/LTO/SummaryBasedOptimizations.h (-18) - (removed) llvm/include/llvm/Transforms/IPO/SyntheticCountsPropagation.h (-23) - (modified) llvm/lib/Analysis/ModuleSummaryAnalysis.cpp (+4-5) - (modified) llvm/lib/AsmParser/LLParser.cpp (+2-2) - (modified) llvm/lib/Bitcode/Reader/BitcodeReader.cpp (+4-4) - (modified) llvm/lib/Bitcode/Writer/BitcodeWriter.cpp (+2-1) - (modified) llvm/lib/IR/ModuleSummaryIndex.cpp (+2-6) - (modified) llvm/lib/LTO/CMakeLists.txt (-1) - (modified) llvm/lib/LTO/LTO.cpp (-4) - (removed) llvm/lib/LTO/SummaryBasedOptimizations.cpp (-88) - (modified) llvm/lib/LTO/ThinLTOCodeGenerator.cpp (-4) - (modified) llvm/lib/Passes/PassBuilderPipelines.cpp (-9) - (modified) llvm/lib/Passes/PassRegistry.def (-1) - (modified) llvm/lib/Transforms/IPO/CMakeLists.txt (-1) - (removed) llvm/lib/Transforms/IPO/SyntheticCountsPropagation.cpp (-139) - (modified) llvm/lib/Transforms/Utils/FunctionImportUtils.cpp (+1-17) - (removed) llvm/test/Bitcode/thinlto-synthetic-count-flag.ll (-21) - (removed) llvm/test/ThinLTO/X86/function_entry_count.ll (-45) - (removed) llvm/test/Transforms/SyntheticCountsPropagation/initial.ll (-79) - (removed) llvm/test/Transforms/SyntheticCountsPropagation/prop.ll (-50) - (removed) llvm/test/Transforms/SyntheticCountsPropagation/scc.ll (-19) - (modified) llvm/utils/gn/secondary/llvm/lib/LTO/BUILD.gn (-1) - (modified) llvm/utils/gn/secondary/llvm/lib/Transforms/IPO/BUILD.gn (-1) ``````````diff diff --git a/clang/docs/tools/clang-formatted-files.txt b/clang/docs/tools/clang-formatted-files.txt index fc07357986d989..48ded9c7545547 100644 --- a/clang/docs/tools/clang-formatted-files.txt +++ b/clang/docs/tools/clang-formatted-files.txt @@ -5349,7 +5349,6 @@ llvm/include/llvm/IR/SSAContext.h llvm/include/llvm/IR/StructuralHash.h llvm/include/llvm/IR/TrackingMDRef.h llvm/include/llvm/IR/UseListOrder.h -llvm/include/llvm/LTO/SummaryBasedOptimizations.h llvm/include/llvm/MC/MCAsmInfoCOFF.h llvm/include/llvm/MC/MCAsmInfoDarwin.h llvm/include/llvm/MC/MCAsmInfoELF.h @@ -5586,7 +5585,6 @@ llvm/include/llvm/Transforms/IPO/SampleProfile.h llvm/include/llvm/Transforms/IPO/SampleProfileProbe.h llvm/include/llvm/Transforms/IPO/SCCP.h llvm/include/llvm/Transforms/IPO/StripSymbols.h -llvm/include/llvm/Transforms/IPO/SyntheticCountsPropagation.h llvm/include/llvm/Transforms/IPO/ThinLTOBitcodeWriter.h llvm/include/llvm/Transforms/IPO/WholeProgramDevirt.h llvm/include/llvm/Transforms/Scalar/ADCE.h @@ -6070,7 +6068,6 @@ llvm/lib/IR/SSAContext.cpp llvm/lib/IR/Statepoint.cpp llvm/lib/IR/StructuralHash.cpp llvm/lib/IR/ValueSymbolTable.cpp -llvm/lib/LTO/SummaryBasedOptimizations.cpp llvm/lib/MC/MCAsmInfoCOFF.cpp llvm/lib/MC/MCAsmInfoELF.cpp llvm/lib/MC/MCAsmInfoGOFF.cpp @@ -6861,7 +6858,6 @@ llvm/lib/Transforms/IPO/OpenMPOpt.cpp llvm/lib/Transforms/IPO/SampleContextTracker.cpp llvm/lib/Transforms/IPO/SampleProfileProbe.cpp llvm/lib/Transforms/IPO/StripDeadPrototypes.cpp -llvm/lib/Transforms/IPO/SyntheticCountsPropagation.cpp llvm/lib/Transforms/ObjCARC/BlotMapVector.h llvm/lib/Transforms/ObjCARC/ObjCARCExpand.cpp llvm/lib/Transforms/ObjCARC/ProvenanceAnalysis.h diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 6d39150a03bfd5..eae04f4eadcccd 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -856,9 +856,8 @@ class FunctionSummary : public GlobalValueSummary { GlobalValue::DefaultVisibility, /*NotEligibleToImport=*/true, /*Live=*/true, /*IsLocal=*/false, /*CanAutoHide=*/false, GlobalValueSummary::ImportKind::Definition), - /*NumInsts=*/0, FunctionSummary::FFlags{}, /*EntryCount=*/0, - std::vector<ValueInfo>(), std::move(Edges), - std::vector<GlobalValue::GUID>(), + /*NumInsts=*/0, FunctionSummary::FFlags{}, std::vector<ValueInfo>(), + std::move(Edges), std::vector<GlobalValue::GUID>(), std::vector<FunctionSummary::VFuncId>(), std::vector<FunctionSummary::VFuncId>(), std::vector<FunctionSummary::ConstVCall>(), @@ -878,11 +877,6 @@ class FunctionSummary : public GlobalValueSummary { /// Function summary specific flags. FFlags FunFlags; - /// The synthesized entry count of the function. - /// This is only populated during ThinLink phase and remains unused while - /// generating per-module summaries. - uint64_t EntryCount = 0; - /// List of <CalleeValueInfo, CalleeInfo> call edge pairs from this function. std::vector<EdgeTy> CallGraphEdgeList; @@ -913,8 +907,7 @@ class FunctionSummary : public GlobalValueSummary { public: FunctionSummary(GVFlags Flags, unsigned NumInsts, FFlags FunFlags, - uint64_t EntryCount, std::vector<ValueInfo> Refs, - std::vector<EdgeTy> CGEdges, + std::vector<ValueInfo> Refs, std::vector<EdgeTy> CGEdges, std::vector<GlobalValue::GUID> TypeTests, std::vector<VFuncId> TypeTestAssumeVCalls, std::vector<VFuncId> TypeCheckedLoadVCalls, @@ -923,7 +916,7 @@ class FunctionSummary : public GlobalValueSummary { std::vector<ParamAccess> Params, CallsitesTy CallsiteList, AllocsTy AllocList) : GlobalValueSummary(FunctionKind, Flags, std::move(Refs)), - InstCount(NumInsts), FunFlags(FunFlags), EntryCount(EntryCount), + InstCount(NumInsts), FunFlags(FunFlags), CallGraphEdgeList(std::move(CGEdges)) { if (!TypeTests.empty() || !TypeTestAssumeVCalls.empty() || !TypeCheckedLoadVCalls.empty() || !TypeTestAssumeConstVCalls.empty() || @@ -958,12 +951,6 @@ class FunctionSummary : public GlobalValueSummary { /// Get the instruction count recorded for this function. unsigned instCount() const { return InstCount; } - /// Get the synthetic entry count for this function. - uint64_t entryCount() const { return EntryCount; } - - /// Set the synthetic entry count for this function. - void setEntryCount(uint64_t EC) { EntryCount = EC; } - /// Return the list of <CalleeValueInfo, CalleeInfo> pairs. ArrayRef<EdgeTy> calls() const { return CallGraphEdgeList; } @@ -1585,9 +1572,6 @@ class ModuleSummaryIndex { return WithAttributePropagation && GVS->maybeWriteOnly(); } - bool hasSyntheticEntryCounts() const { return HasSyntheticEntryCounts; } - void setHasSyntheticEntryCounts() { HasSyntheticEntryCounts = true; } - bool withSupportsHotColdNew() const { return WithSupportsHotColdNew; } void setWithSupportsHotColdNew() { WithSupportsHotColdNew = true; } diff --git a/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h b/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h index 6cc533f043a517..3ce929afdb1ea6 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndexYAML.h @@ -229,7 +229,7 @@ template <> struct CustomMappingTraits<GlobalValueSummaryMapTy> { FSum.NotEligibleToImport, FSum.Live, FSum.IsLocal, FSum.CanAutoHide, static_cast<GlobalValueSummary::ImportKind>(FSum.ImportType)), - /*NumInsts=*/0, FunctionSummary::FFlags{}, /*EntryCount=*/0, Refs, + /*NumInsts=*/0, FunctionSummary::FFlags{}, Refs, ArrayRef<FunctionSummary::EdgeTy>{}, std::move(FSum.TypeTests), std::move(FSum.TypeTestAssumeVCalls), std::move(FSum.TypeCheckedLoadVCalls), diff --git a/llvm/include/llvm/LTO/SummaryBasedOptimizations.h b/llvm/include/llvm/LTO/SummaryBasedOptimizations.h deleted file mode 100644 index 508ab2587ac56a..00000000000000 --- a/llvm/include/llvm/LTO/SummaryBasedOptimizations.h +++ /dev/null @@ -1,18 +0,0 @@ -//=- llvm/LTO/SummaryBasedOptimizations.h -Link time optimizations-*- C++ -*-=// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_LTO_SUMMARYBASEDOPTIMIZATIONS_H -#define LLVM_LTO_SUMMARYBASEDOPTIMIZATIONS_H -namespace llvm { -class ModuleSummaryIndex; - -/// Compute synthetic function entry counts. -void computeSyntheticCounts(ModuleSummaryIndex &Index); - -} // namespace llvm -#endif diff --git a/llvm/include/llvm/Transforms/IPO/SyntheticCountsPropagation.h b/llvm/include/llvm/Transforms/IPO/SyntheticCountsPropagation.h deleted file mode 100644 index 5338ac9b0ebc57..00000000000000 --- a/llvm/include/llvm/Transforms/IPO/SyntheticCountsPropagation.h +++ /dev/null @@ -1,23 +0,0 @@ -//=- SyntheticCountsPropagation.h - Propagate function counts -----*- C++ -*-=// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_TRANSFORMS_IPO_SYNTHETICCOUNTSPROPAGATION_H -#define LLVM_TRANSFORMS_IPO_SYNTHETICCOUNTSPROPAGATION_H - -#include "llvm/IR/PassManager.h" - -namespace llvm { -class Module; - -class SyntheticCountsPropagation - : public PassInfoMixin<SyntheticCountsPropagation> { -public: - PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM); -}; -} // namespace llvm -#endif diff --git a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp index e9490ccba82157..bd232572dac86c 100644 --- a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp +++ b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp @@ -671,9 +671,9 @@ static void computeFunctionSummary( if (auto *SSI = GetSSICallback(F)) ParamAccesses = SSI->getParamAccesses(Index); auto FuncSummary = std::make_unique<FunctionSummary>( - Flags, NumInsts, FunFlags, /*EntryCount=*/0, std::move(Refs), - CallGraphEdges.takeVector(), TypeTests.takeVector(), - TypeTestAssumeVCalls.takeVector(), TypeCheckedLoadVCalls.takeVector(), + Flags, NumInsts, FunFlags, std::move(Refs), CallGraphEdges.takeVector(), + TypeTests.takeVector(), TypeTestAssumeVCalls.takeVector(), + TypeCheckedLoadVCalls.takeVector(), TypeTestAssumeConstVCalls.takeVector(), TypeCheckedLoadConstVCalls.takeVector(), std::move(ParamAccesses), std::move(Callsites), std::move(Allocs)); @@ -961,8 +961,7 @@ ModuleSummaryIndex llvm::buildModuleSummaryIndex( /* MayThrow */ true, /* HasUnknownCall */ true, /* MustBeUnreachable */ false}, - /*EntryCount=*/0, ArrayRef<ValueInfo>{}, - ArrayRef<FunctionSummary::EdgeTy>{}, + ArrayRef<ValueInfo>{}, ArrayRef<FunctionSummary::EdgeTy>{}, ArrayRef<GlobalValue::GUID>{}, ArrayRef<FunctionSummary::VFuncId>{}, ArrayRef<FunctionSummary::VFuncId>{}, diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index 93dc2bd241581b..4a3d052149a56e 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -9447,8 +9447,8 @@ bool LLParser::parseFunctionSummary(std::string Name, GlobalValue::GUID GUID, return true; auto FS = std::make_unique<FunctionSummary>( - GVFlags, InstCount, FFlags, /*EntryCount=*/0, std::move(Refs), - std::move(Calls), std::move(TypeIdInfo.TypeTests), + GVFlags, InstCount, FFlags, std::move(Refs), std::move(Calls), + std::move(TypeIdInfo.TypeTests), std::move(TypeIdInfo.TypeTestAssumeVCalls), std::move(TypeIdInfo.TypeCheckedLoadVCalls), std::move(TypeIdInfo.TypeTestAssumeConstVCalls), diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 1cd9ec6b8fca20..2b53ee5698127b 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -7682,8 +7682,8 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) { PendingAllocs.clear(); } auto FS = std::make_unique<FunctionSummary>( - Flags, InstCount, getDecodedFFlags(RawFunFlags), /*EntryCount=*/0, - std::move(Refs), std::move(Calls), std::move(PendingTypeTests), + Flags, InstCount, getDecodedFFlags(RawFunFlags), std::move(Refs), + std::move(Calls), std::move(PendingTypeTests), std::move(PendingTypeTestAssumeVCalls), std::move(PendingTypeCheckedLoadVCalls), std::move(PendingTypeTestAssumeConstVCalls), @@ -7828,8 +7828,8 @@ Error ModuleSummaryIndexBitcodeReader::parseEntireSummary(unsigned ID) { ValueInfo VI = std::get<0>(getValueInfoFromValueId(ValueID)); setSpecialRefs(Refs, NumRORefs, NumWORefs); auto FS = std::make_unique<FunctionSummary>( - Flags, InstCount, getDecodedFFlags(RawFunFlags), EntryCount, - std::move(Refs), std::move(Edges), std::move(PendingTypeTests), + Flags, InstCount, getDecodedFFlags(RawFunFlags), std::move(Refs), + std::move(Edges), std::move(PendingTypeTests), std::move(PendingTypeTestAssumeVCalls), std::move(PendingTypeCheckedLoadVCalls), std::move(PendingTypeTestAssumeConstVCalls), diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 26fd02b3e1a043..9b630de2ef11e3 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -4736,7 +4736,8 @@ void IndexBitcodeWriter::writeCombinedGlobalValueSummary() { getEncodedGVSummaryFlags(FS->flags(), shouldImportValueAsDecl(FS))); NameVals.push_back(FS->instCount()); NameVals.push_back(getEncodedFFlags(FS->fflags())); - NameVals.push_back(FS->entryCount()); + // TODO: Stop writing entry count and bump bitcode version. + NameVals.push_back(0 /* EntryCount */); // Fill in below NameVals.push_back(0); // numrefs diff --git a/llvm/lib/IR/ModuleSummaryIndex.cpp b/llvm/lib/IR/ModuleSummaryIndex.cpp index 6713d32fb787ce..a788e63d95a117 100644 --- a/llvm/lib/IR/ModuleSummaryIndex.cpp +++ b/llvm/lib/IR/ModuleSummaryIndex.cpp @@ -91,12 +91,11 @@ constexpr uint64_t ModuleSummaryIndex::BitcodeSummaryVersion; uint64_t ModuleSummaryIndex::getFlags() const { uint64_t Flags = 0; + // Flags & 0x4 is reserved. DO NOT REUSE. if (withGlobalValueDeadStripping()) Flags |= 0x1; if (skipModuleByDistributedBackend()) Flags |= 0x2; - if (hasSyntheticEntryCounts()) - Flags |= 0x4; if (enableSplitLTOUnit()) Flags |= 0x8; if (partiallySplitLTOUnits()) @@ -124,10 +123,7 @@ void ModuleSummaryIndex::setFlags(uint64_t Flags) { // Set on combined index only. if (Flags & 0x2) setSkipModuleByDistributedBackend(); - // 1 bit: HasSyntheticEntryCounts flag. - // Set on combined index only. - if (Flags & 0x4) - setHasSyntheticEntryCounts(); + // Flags & 0x4 is reserved. DO NOT REUSE. // 1 bit: DisableSplitLTOUnit flag. // Set on per module indexes. It is up to the client to validate // the consistency of this flag across modules being linked. diff --git a/llvm/lib/LTO/CMakeLists.txt b/llvm/lib/LTO/CMakeLists.txt index 9ba7698bc9954b..69ff08e1f374c4 100644 --- a/llvm/lib/LTO/CMakeLists.txt +++ b/llvm/lib/LTO/CMakeLists.txt @@ -3,7 +3,6 @@ add_llvm_component_library(LLVMLTO LTOBackend.cpp LTOModule.cpp LTOCodeGenerator.cpp - SummaryBasedOptimizations.cpp UpdateCompilerUsed.cpp ThinLTOCodeGenerator.cpp diff --git a/llvm/lib/LTO/LTO.cpp b/llvm/lib/LTO/LTO.cpp index b1aa89ac978134..68072563cb33d6 100644 --- a/llvm/lib/LTO/LTO.cpp +++ b/llvm/lib/LTO/LTO.cpp @@ -32,7 +32,6 @@ #include "llvm/IR/Metadata.h" #include "llvm/IR/RuntimeLibcalls.h" #include "llvm/LTO/LTOBackend.h" -#include "llvm/LTO/SummaryBasedOptimizations.h" #include "llvm/Linker/IRMover.h" #include "llvm/MC/TargetRegistry.h" #include "llvm/Object/IRObjectFile.h" @@ -1693,9 +1692,6 @@ Error LTO::runThinLTO(AddStreamFn AddStream, FileCache Cache, if (!ModuleToDefinedGVSummaries.count(Mod.first)) ModuleToDefinedGVSummaries.try_emplace(Mod.first); - // Synthesize entry counts for functions in the CombinedIndex. - computeSyntheticCounts(ThinLTO.CombinedIndex); - FunctionImporter::ImportListsTy ImportLists(ThinLTO.ModuleMap.size()); DenseMap<StringRef, FunctionImporter::ExportSetTy> ExportLists( ThinLTO.ModuleMap.size()); diff --git a/llvm/lib/LTO/SummaryBasedOptimizations.cpp b/llvm/lib/LTO/SummaryBasedOptimizations.cpp deleted file mode 100644 index bd3565771c293c..00000000000000 --- a/llvm/lib/LTO/SummaryBasedOptimizations.cpp +++ /dev/null @@ -1,88 +0,0 @@ -//==-SummaryBasedOptimizations.cpp - Optimizations based on ThinLTO summary-==// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file implements optimizations that are based on the module summaries. -// These optimizations are performed during the thinlink phase of the -// compilation. -// -//===----------------------------------------------------------------------===// - -#include "llvm/LTO/SummaryBasedOptimizations.h" -#include "llvm/Analysis/SyntheticCountsUtils.h" -#include "llvm/IR/ModuleSummaryIndex.h" -#include "llvm/Support/CommandLine.h" - -using namespace llvm; - -static cl::opt<bool> ThinLTOSynthesizeEntryCounts( - "thinlto-synthesize-entry-counts", cl::init(false), cl::Hidden, - cl::desc("Synthesize entry counts based on the summary")); - -namespace llvm { -extern cl::opt<int> InitialSyntheticCount; -} - -static void initializeCounts(ModuleSummaryIndex &Index) { - auto Root = Index.calculateCallGraphRoot(); - // Root is a fake node. All its successors are the actual roots of the - // callgraph. - // FIXME: This initializes the entry counts of only the root nodes. This makes - // sense when compiling a binary with ThinLTO, but for libraries any of the - // non-root nodes could be called from outside. - for (auto &C : Root.calls()) { - auto &V = C.first; - for (auto &GVS : V.getSummaryList()) { - auto S = GVS.get()->getBaseObject(); - auto *F = cast<FunctionSummary>(S); - F->setEntryCount(InitialSyntheticCount); - } - } -} - -void llvm::computeSyntheticCounts(ModuleSummaryIndex &Index) { - if (!ThinLTOSynthesizeEntryCounts) - return; - - using Scaled64 = ScaledNumber<uint64_t>; - initializeCounts(Index); - auto GetCallSiteRelFreq = [](FunctionSummary::EdgeTy &Edge) { - return Scaled64(Edge.second.RelBlockFreq, -CalleeInfo::ScaleShift); - }; - auto GetEntryCount = [](ValueInfo V) { - if (V.getSummaryList().size()) { - auto S = V.getSummaryList().front()->getBaseObject(); - auto *F = cast<FunctionSummary>(S); - return F->entryCount(); - } else { - return UINT64_C(0); - } - }; - 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.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, GetProfileCount, - AddToEntryCount); - Index.setHasSyntheticEntryCounts(); -} diff --git a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp index 9d5a62fe10c8d7..7454b30bea2cb6 100644 --- a/llvm/lib/LTO/ThinLTOCodeGenerator.cpp +++ b/llvm/lib/LTO/ThinLTOCodeGenerator.cpp @@ -35,7 +35,6 @@ #include "llvm/IR/Verifier.h" #include "llvm/IRReader/IRReader.h" #include "llvm/LTO/LTO.h" -#include "llvm/LTO/SummaryBasedOptimizations.h" #include "llvm/MC/TargetRegistry.h" #include "llvm/Object/IRObjectFile.h" #include "llvm/Passes/PassBuilder.h" @@ -1042,9 +1041,6 @@ void ThinLTOCodeGenerator::run() { // Compute "dead" symbols, we don't want to import/export these! computeDeadSymbolsInIndex(*Index, GUIDPreservedSymbols); - // Synthesize entry counts for functions in the combined index. - computeSyntheticCounts(*Index); - // Currently there is no support for enabling whole program visibility via a // linker option in the old LTO API, but this call allows it to be specified // via the internal option. Must be done before WPD below. diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp index 1fd7ef929c87d5..f344afc9b87922 100644 --- a/llvm/lib/Passes/PassBuilderPipelines.cpp +++ b/llvm/lib/Passes/PassBuilderPipelines.cpp @@ -154,11 +154,6 @@ static cl::opt<InliningAdvisorMode> UseInlineAdvisor( clEnumValN(InliningAdvisorMode::Release, "release", "Use release mode (AOT-compiled model)"))); -static cl::opt<bool> EnableSyntheticCounts( - "enable-npm-synthetic-counts", cl::Hidden, - cl::desc("Run synthetic function entry count generation " - "pass")); - /// Flag to enable inline deferral during PGO. static cl::... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/107471 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits