Skip to content

Commit

Permalink
Attach profile summary in IR based instrumentation pass.
Browse files Browse the repository at this point in the history
Differential revision: http://reviews.llvm.org/D20655

llvm-svn: 270933
  • Loading branch information
Easwaran Raman committed May 26, 2016
1 parent ceeb521 commit 5fe04a1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
9 changes: 8 additions & 1 deletion llvm/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
Expand Up @@ -67,6 +67,7 @@
#include "llvm/IR/Module.h"
#include "llvm/Pass.h"
#include "llvm/ProfileData/InstrProfReader.h"
#include "llvm/ProfileData/ProfileCommon.h"
#include "llvm/Support/BranchProbability.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/JamCRC.h"
Expand Down Expand Up @@ -478,6 +479,9 @@ class PGOUseFunc {
// Return the function hotness from the profile.
FuncFreqAttr getFuncFreqAttr() const { return FreqAttr; }

// Return the profile record for this function;
InstrProfRecord &getProfileRecord() { return ProfileRecord; }

private:
Function &F;
Module *M;
Expand Down Expand Up @@ -883,20 +887,23 @@ static bool annotateAllFunctions(

std::vector<Function *> HotFunctions;
std::vector<Function *> ColdFunctions;
InstrProfSummaryBuilder Builder(ProfileSummaryBuilder::DefaultCutoffs);
for (auto &F : M) {
if (F.isDeclaration())
continue;
auto *BPI = LookupBPI(F);
auto *BFI = LookupBFI(F);
PGOUseFunc Func(F, &M, BPI, BFI);
setPGOCountOnFunc(Func, PGOReader.get());
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()));
// Set function hotness attribute from the profile.
for (auto &F : HotFunctions) {
F->addFnAttr(llvm::Attribute::InlineHint);
Expand Down
4 changes: 3 additions & 1 deletion llvm/test/Transforms/PGOProfile/branch1.ll
Expand Up @@ -28,7 +28,7 @@ entry:
br i1 %cmp, label %if.then, label %if.end
; USE: br i1 %cmp, label %if.then, label %if.end
; USE-SAME: !prof ![[BW_ENTRY:[0-9]+]]
; USE: ![[BW_ENTRY]] = !{!"branch_weights", i32 2, i32 1}
; USE-DAG: ![[BW_ENTRY]] = !{!"branch_weights", i32 2, i32 1}

if.then:
; GEN: if.then:
Expand All @@ -42,3 +42,5 @@ if.end:
%retv = phi i32 [ %add, %if.then ], [ %i, %entry ]
ret i32 %retv
}
; USE-DAG: {{![0-9]+}} = !{i32 1, !"ProfileSummary", {{![0-9]+}}}
; USE-DAG: {{![0-9]+}} = !{!"DetailedSummary", {{![0-9]+}}}

0 comments on commit 5fe04a1

Please sign in to comment.