1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

Fix PR28219: Use profile summary from reader and not compute it

Differentiaal revision: http://reviews.llvm.org/D21546

llvm-svn: 273301
This commit is contained in:
Easwaran Raman 2016-06-21 19:29:49 +00:00
parent cde81efccb
commit 399c4dad72
3 changed files with 23 additions and 4 deletions

View File

@ -879,7 +879,6 @@ static bool annotateAllFunctions(
std::vector<Function *> HotFunctions;
std::vector<Function *> ColdFunctions;
InstrProfSummaryBuilder Builder(ProfileSummaryBuilder::DefaultCutoffs);
for (auto &F : M) {
if (F.isDeclaration())
continue;
@ -891,15 +890,13 @@ static bool annotateAllFunctions(
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

View File

@ -0,0 +1,10 @@
# :ir is the flag to indicate this is IR level profile.
:ir
@bar
256
1
2
@foo
512
1
3

View File

@ -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}