This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Ensure count_scale is no larger than REG_BR_PROB_BASE
- From: Dehao Chen <dehao at google dot com>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, David Li <davidxl at google dot com>
- Date: Fri, 16 May 2014 17:03:21 -0700
- Subject: Re: [PATCH] Ensure count_scale is no larger than REG_BR_PROB_BASE
- Authentication-results: sourceware.org; auth=none
- References: <CAO2gOZVj7vwDDtn1=XjE4PsiB-1B-a-9Ku2gFHViOVOLZUYMrg at mail dot gmail dot com> <20140516234137 dot GC28043 at kam dot mff dot cuni dot cz>
On Fri, May 16, 2014 at 4:41 PM, Jan Hubicka <email@example.com> wrote:
> > Is this patch ok for trunk? Bootstrapped and regression test on-going.
> > Thanks,
> > Dehao
> > 2014-05-16 Dehao Chen <firstname.lastname@example.org>
> > * tree-inline.c (initialize_cfun): Ensure count_scale is no larger
> > than REG_BR_PROB_BASE.
> > (copy_cfg_body): Likewise.
> This seems like wrong place to paper around the problem - symmetric count
> scaling is done during production of the inline clone. I think if we want to
> be smart about broken profiles, we should do it at that place instead here
> at inliner...
> What kind of problem does this patch solve?
In AutoFDO, a basic block's count can be much larger than it's actual
count because debug info might be incorrect. In this case, a call edge
count (calculated from BB count) could be much larger than callee's
header count, making the count_scale incorrectly large.