[llvm] r270933 - Attach profile summary in IR based instrumentation pass.

Sean Silva via llvm-commits llvm-commits at lists.llvm.org
Fri May 27 20:10:08 PDT 2016


On Fri, May 27, 2016 at 9:59 AM, Easwaran Raman <eraman at google.com> wrote:

> The plan is to deprecate the MaxFunctionCount module
> flag. function_entry_count will remain.
>

Great. I've enhanced the IRPGO profUse to apply function_entry_count in
r271090.

-- Sean Silva


>
> - 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/377b244a/attachment.html>


More information about the llvm-commits mailing list