diff --git a/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp b/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp --- a/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp +++ b/llvm/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp @@ -326,9 +326,8 @@ } // A wrapper function that does the actual work. -static bool promoteIndirectCalls(Module &M, ProfileSummaryInfo *PSI, - bool InLTO, bool SamplePGO, - ModuleAnalysisManager *AM = nullptr) { +static bool promoteIndirectCalls(Module &M, ProfileSummaryInfo *PSI, bool InLTO, + bool SamplePGO, ModuleAnalysisManager &AM) { if (DisableICP) return false; InstrProfSymtab Symtab; @@ -342,18 +341,11 @@ if (F.isDeclaration() || F.hasOptNone()) continue; - std::unique_ptr OwnedORE; - OptimizationRemarkEmitter *ORE; - if (AM) { - auto &FAM = - AM->getResult(M).getManager(); - ORE = &FAM.getResult(F); - } else { - OwnedORE = std::make_unique(&F); - ORE = OwnedORE.get(); - } + auto &FAM = + AM.getResult(M).getManager(); + auto &ORE = FAM.getResult(F); - ICallPromotionFunc ICallPromotion(F, &M, &Symtab, SamplePGO, *ORE); + ICallPromotionFunc ICallPromotion(F, &M, &Symtab, SamplePGO, ORE); bool FuncChanged = ICallPromotion.processFunction(PSI); if (ICPDUMPAFTER && FuncChanged) { LLVM_DEBUG(dbgs() << "\n== IR Dump After =="; F.print(dbgs())); @@ -373,7 +365,7 @@ ProfileSummaryInfo *PSI = &AM.getResult(M); if (!promoteIndirectCalls(M, PSI, InLTO | ICPLTOMode, - SamplePGO | ICPSamplePGOMode, &AM)) + SamplePGO | ICPSamplePGOMode, AM)) return PreservedAnalyses::all(); return PreservedAnalyses::none();