@@ -469,7 +469,8 @@ class SampleProfileLoader final : public SampleProfileLoaderBaseImpl<Function> {
469469 std::function<AssumptionCache &(Function &)> GetAssumptionCache,
470470 std::function<TargetTransformInfo &(Function &)> GetTargetTransformInfo,
471471 std::function<const TargetLibraryInfo &(Function &)> GetTLI,
472- LazyCallGraph &CG)
472+ LazyCallGraph &CG, bool DisableSampleProfileInlining,
473+ bool UseFlattenedProfile)
473474 : SampleProfileLoaderBaseImpl(std::string(Name), std::string(RemapName),
474475 std::move (FS)),
475476 GetAC(std::move(GetAssumptionCache)),
@@ -478,7 +479,9 @@ class SampleProfileLoader final : public SampleProfileLoaderBaseImpl<Function> {
478479 AnnotatedPassName(AnnotateSampleProfileInlinePhase
479480 ? llvm::AnnotateInlinePassName(InlineContext{
480481 LTOPhase, InlinePass::SampleProfileInliner})
481- : CSINLINE_DEBUG) {}
482+ : CSINLINE_DEBUG),
483+ DisableSampleProfileInlining(DisableSampleProfileInlining),
484+ UseFlattenedProfile(UseFlattenedProfile) {}
482485
483486 bool doInitialization (Module &M, FunctionAnalysisManager *FAM = nullptr );
484487 bool runOnModule (Module &M, ModuleAnalysisManager *AM,
@@ -592,6 +595,10 @@ class SampleProfileLoader final : public SampleProfileLoaderBaseImpl<Function> {
592595 // attribute.
593596 bool ProfAccForSymsInList;
594597
598+ bool DisableSampleProfileInlining;
599+
600+ bool UseFlattenedProfile;
601+
595602 // External inline advisor used to replay inline decision from remarks.
596603 std::unique_ptr<InlineAdvisor> ExternalInlineAdvisor;
597604
@@ -919,7 +926,7 @@ bool SampleProfileLoader::tryPromoteAndInlineCandidate(
919926 Function &F, InlineCandidate &Candidate, uint64_t SumOrigin, uint64_t &Sum,
920927 SmallVector<CallBase *, 8 > *InlinedCallSite) {
921928 // Bail out early if sample-loader inliner is disabled.
922- if (DisableSampleLoaderInlining )
929+ if (DisableSampleProfileInlining )
923930 return false ;
924931
925932 // Bail out early if MaxNumPromotions is zero.
@@ -1230,7 +1237,7 @@ bool SampleProfileLoader::tryInlineCandidate(
12301237 InlineCandidate &Candidate, SmallVector<CallBase *, 8 > *InlinedCallSites) {
12311238 // Do not attempt to inline a candidate if
12321239 // --disable-sample-loader-inlining is true.
1233- if (DisableSampleLoaderInlining )
1240+ if (DisableSampleProfileInlining )
12341241 return false ;
12351242
12361243 CallBase &CB = *Candidate.CallInstr ;
@@ -1974,6 +1981,13 @@ bool SampleProfileLoader::doInitialization(Module &M,
19741981
19751982 PSL = Reader->getProfileSymbolList ();
19761983
1984+ if (DisableSampleLoaderInlining.getNumOccurrences ())
1985+ DisableSampleProfileInlining = DisableSampleLoaderInlining;
1986+
1987+ if (UseFlattenedProfile)
1988+ ProfileConverter::flattenProfile (Reader->getProfiles (),
1989+ Reader->profileIsCS ());
1990+
19771991 // While profile-sample-accurate is on, ignore symbol list.
19781992 ProfAccForSymsInList =
19791993 ProfileAccurateForSymsInList && PSL && !ProfileSampleAccurate;
@@ -2304,9 +2318,12 @@ bool SampleProfileLoader::runOnFunction(Function &F, ModuleAnalysisManager *AM)
23042318}
23052319SampleProfileLoaderPass::SampleProfileLoaderPass (
23062320 std::string File, std::string RemappingFile, ThinOrFullLTOPhase LTOPhase,
2307- IntrusiveRefCntPtr<vfs::FileSystem> FS)
2321+ IntrusiveRefCntPtr<vfs::FileSystem> FS, bool DisableSampleProfileInlining,
2322+ bool UseFlattenedProfile)
23082323 : ProfileFileName(File), ProfileRemappingFileName(RemappingFile),
2309- LTOPhase(LTOPhase), FS(std::move(FS)) {}
2324+ LTOPhase(LTOPhase), FS(std::move(FS)),
2325+ DisableSampleProfileInlining(DisableSampleProfileInlining),
2326+ UseFlattenedProfile(UseFlattenedProfile) {}
23102327
23112328PreservedAnalyses SampleProfileLoaderPass::run (Module &M,
23122329 ModuleAnalysisManager &AM) {
@@ -2331,7 +2348,8 @@ PreservedAnalyses SampleProfileLoaderPass::run(Module &M,
23312348 ProfileFileName.empty () ? SampleProfileFile : ProfileFileName,
23322349 ProfileRemappingFileName.empty () ? SampleProfileRemappingFile
23332350 : ProfileRemappingFileName,
2334- LTOPhase, FS, GetAssumptionCache, GetTTI, GetTLI, CG);
2351+ LTOPhase, FS, GetAssumptionCache, GetTTI, GetTLI, CG,
2352+ DisableSampleProfileInlining, UseFlattenedProfile);
23352353 if (!SampleLoader.doInitialization (M, &FAM))
23362354 return PreservedAnalyses::all ();
23372355
0 commit comments