[PATCH] D11605: [LoopUnswitch] Add block frequency analysis to recognize hot/cold regions

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 10 12:04:27 PDT 2015


Right. I won't trust static profile data to tell you what is cold or hot.

In fact I think the right way to determine coldness is to use the
actual profile count of the loop header to determine loop is cold or
not -- the actual exec count of a loop header can be computed by
multiplying the relative frequency with the the F.getEntryCount().   A
common threshold can be 0 or 1, which means the loop rarely executes.

David



On Thu, Sep 10, 2015 at 11:48 AM, Chen Li <meloli87 at gmail.com> wrote:
> chenli added inline comments.
>
> ================
> Comment at: lib/Transforms/Scalar/LoopUnswitch.cpp:441
> @@ +440,3 @@
> +
> +  if (LoopUnswitchWithBlockFrequency) {
> +    BranchProbabilityInfo BPI(*F, *LI);
> ----------------
> davidxl wrote:
>> Note that this also triggers the check when PGO is not enabled (e.g, with static prediction).
>>
>> To check if PGO is on, do:
>>
>>   HasProfileData = F.getEntryCount().hasValue();
>>   if (HasProfileData) {
>>
>> ..
> Do you mean that without PGO enabled, this should never be triggered?
>
>
> http://reviews.llvm.org/D11605
>
>
>


More information about the llvm-commits mailing list