================ @@ -1119,6 +1125,18 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level, // removed. MPM.addPass( PGOIndirectCallPromotion(true /* IsInLTO */, true /* SamplePGO */)); + + if (InstrumentSampleColdFuncPath.getNumOccurrences() && + Phase != ThinOrFullLTOPhase::ThinLTOPostLink) { + assert(!InstrumentSampleColdFuncPath.empty() && + "File path is requeired for instrumentation generation"); + InstrumentColdFunctionCoverage = true; + addPreInlinerPasses(MPM, Level, Phase); + addPGOInstrPasses(MPM, Level, /* RunProfileGen */ true, + /* IsCS */ false, /* AtomicCounterUpdate */ false, + InstrumentSampleColdFuncPath, "", + IntrusiveRefCntPtr<vfs::FileSystem>()); + } ---------------- wlei-llvm wrote:
> After looking at this a bit closer, I'm not sure why it needs to be tied to > closely to SamplePGO. Couldn't we move this out of the `LoadSampleProfile` > and move it after `IsPGOInstrUse/IsCtxProfUse`? That way we can use IRPGO, > CSIRPGO, and SamplePGO profile counts to block instrumentation hot functions. Ah, good point, moved them closer to other IRPGO passes. Thanks for the suggestion! https://github.com/llvm/llvm-project/pull/109837 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits