This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [GOOGLE] tune loop scale factor for AutoFDO


As discussed offline, will commit this patch first, and think of other
smoothing algorithm to prevent profile insanity.

Dehao

On Fri, Nov 8, 2013 at 9:32 AM, Xinliang David Li <davidxl@google.com> wrote:
> On Fri, Nov 8, 2013 at 6:23 AM, Dehao Chen <dehao@google.com> wrote:
>> AutoFDO sometimes has 0 profile in the loop's entry block because the
>> debug info are lost and unrecoverable.
>
> Is that a separate problem to track and fix?
>
>
> Also is it better to do a round of loop profiling smoothing after auto
> profile annotation to eliminate the insanity?
>
> David
>
>
>>
>> E.g.
>>
>> if (a)
>>   if (b)
>>     for () {}
>>
>> This patch checks if the scale factor is 0, then use the normal scale.
>>
>> Bootstrapped and passed regression test and performance test.
>>
>> OK for google-4_8?
>>
>> Thanks,
>> Dehao
>>
>> Index: gcc/cfgloopmanip.c
>> ===================================================================
>> --- gcc/cfgloopmanip.c (revision 204568)
>> +++ gcc/cfgloopmanip.c (working copy)
>> @@ -1262,6 +1262,8 @@ duplicate_loop_to_header_edge (struct loop *loop,
>>   }
>>        for (i = 0; i < ndupl; i++)
>>   gcc_assert (scale_step[i] >= 0 && scale_step[i] <= REG_BR_PROB_BASE);
>> +      if (flag_auto_profile && scale_main == 0)
>> + scale_main = REG_BR_PROB_BASE;
>>        gcc_assert (scale_main >= 0 && scale_main <= REG_BR_PROB_BASE
>>     && scale_act >= 0  && scale_act <= REG_BR_PROB_BASE);
>>      }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]