[llvm] r270933 - Attach profile summary in IR based instrumentation pass.
Easwaran Raman via llvm-commits
llvm-commits at lists.llvm.org
Fri May 27 09:59:25 PDT 2016
The plan is to deprecate the MaxFunctionCount module
flag. function_entry_count will remain.
- Easwaran
On Thu, May 26, 2016 at 10:18 PM, Sean Silva <chisophugis at gmail.com> wrote:
> The plan is to deprecate the function_entry_count metadata, right? I
> noticed in passing that the IR instrumentation was not setting that.
>
> I noticed in http://reviews.llvm.org/D20648 that you are doing `auto
> FunctionCount = F->getEntryCount();`. Will that eventually be deprecated?
> You may want to add a note there.
>
> -- Sean Silva
>
> On Thu, May 26, 2016 at 3:57 PM, Easwaran Raman via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: eraman
>> Date: Thu May 26 17:57:11 2016
>> New Revision: 270933
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=270933&view=rev
>> Log:
>> Attach profile summary in IR based instrumentation pass.
>>
>> Differential revision: http://reviews.llvm.org/D20655
>>
>> Modified:
>> llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
>> llvm/trunk/test/Transforms/PGOProfile/branch1.ll
>>
>> Modified: llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp?rev=270933&r1=270932&r2=270933&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp
>> (original)
>> +++ llvm/trunk/lib/Transforms/Instrumentation/PGOInstrumentation.cpp Thu
>> May 26 17:57:11 2016
>> @@ -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"
>> @@ -478,6 +479,9 @@ public:
>> // 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;
>> @@ -883,6 +887,7 @@ static bool annotateAllFunctions(
>>
>> std::vector<Function *> HotFunctions;
>> std::vector<Function *> ColdFunctions;
>> + InstrProfSummaryBuilder Builder(ProfileSummaryBuilder::DefaultCutoffs);
>> for (auto &F : M) {
>> if (F.isDeclaration())
>> continue;
>> @@ -890,13 +895,15 @@ static bool annotateAllFunctions(
>> 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);
>>
>> Modified: llvm/trunk/test/Transforms/PGOProfile/branch1.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/PGOProfile/branch1.ll?rev=270933&r1=270932&r2=270933&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/PGOProfile/branch1.ll (original)
>> +++ llvm/trunk/test/Transforms/PGOProfile/branch1.ll Thu May 26 17:57:11
>> 2016
>> @@ -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:
>> @@ -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]+}}}
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160527/2470d90c/attachment.html>
More information about the llvm-commits
mailing list