This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [GOOGLE] tune loop scale factor for AutoFDO
- From: Xinliang David Li <davidxl at google dot com>
- To: Dehao Chen <dehao at google dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 8 Nov 2013 09:32:03 -0800
- Subject: Re: [GOOGLE] tune loop scale factor for AutoFDO
- Authentication-results: sourceware.org; auth=none
- References: <CAO2gOZWm0yPV6zQjDGKrr6s2EwYEJYacK1EYHe62VOTy8FyCRQ at mail dot gmail dot com>
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);
> }