Index: lib/Transforms/Instrumentation/PGOInstrumentation.cpp =================================================================== --- lib/Transforms/Instrumentation/PGOInstrumentation.cpp +++ lib/Transforms/Instrumentation/PGOInstrumentation.cpp @@ -879,7 +879,6 @@ std::vector HotFunctions; std::vector ColdFunctions; - InstrProfSummaryBuilder Builder(ProfileSummaryBuilder::DefaultCutoffs); for (auto &F : M) { if (F.isDeclaration()) continue; @@ -891,15 +890,13 @@ Func.populateCounters(); Func.setBranchWeights(); Func.annotateIndirectCallSites(); - if (!Func.getProfileRecord().Counts.empty()) - Builder.addRecord(Func.getProfileRecord()); PGOUseFunc::FuncFreqAttr FreqAttr = Func.getFuncFreqAttr(); if (FreqAttr == PGOUseFunc::FFA_Cold) ColdFunctions.push_back(&F); else if (FreqAttr == PGOUseFunc::FFA_Hot) HotFunctions.push_back(&F); } - M.setProfileSummary(Builder.getSummary()->getMD(M.getContext())); + M.setProfileSummary(PGOReader->getSummary().getMD(M.getContext())); // Set function hotness attribute from the profile. // We have to apply these attributes at the end because their presence // can affect the BranchProbabilityInfo of any callers, resulting in an Index: test/Transforms/PGOProfile/Inputs/PR28219.proftext =================================================================== --- /dev/null +++ test/Transforms/PGOProfile/Inputs/PR28219.proftext @@ -0,0 +1,10 @@ +# :ir is the flag to indicate this is IR level profile. +:ir +@bar +256 +1 +2 +@foo +512 +1 +3 Index: test/Transforms/PGOProfile/PR28219.ll =================================================================== --- /dev/null +++ test/Transforms/PGOProfile/PR28219.ll @@ -0,0 +1,12 @@ +; Test that we annotate entire program's summary and not just this module's +; RUN: llvm-profdata merge %S/Inputs/PR28219.proftext -o %t.profdata +; RUN: opt < %s -pgo-instr-use -pgo-test-profile-file=%t.profdata -S | FileCheck %s + +define i32 @bar() { +entry: + ret i32 1 +} +; CHECK-DAG: {{![0-9]+}} = !{i32 1, !"ProfileSummary", {{![0-9]+}}} +; CHECK-DAG: {{![0-9]+}} = !{!"NumFunctions", i64 2} +; CHECK-DAG: {{![0-9]+}} = !{!"MaxFunctionCount", i64 3} +