This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Minor record_upper_bound tweek
- From: Richard Biener <rguenther at suse dot de>
- To: Jan Hubicka <hubicka at ucw dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Tue, 23 Oct 2012 11:31:58 +0200 (CEST)
- Subject: Re: Minor record_upper_bound tweek
- References: <20121022152625.GA18262@kam.mff.cuni.cz>
On Mon, 22 Oct 2012, Jan Hubicka wrote:
> Hi,
> with profile feedback we may misupdate the profile and start to believe that loops
> iterate more times than they do. This patch makes at least nb_iterations_estimate
> no greater than nb_iterations_upper_bound. This makes the unrolling/peeling/unswitching
> heuristics to behave more consistently.
> Bootstrapped/regtested x86_64-linux, OK?
Ok with ...
> Honza
>
> * tree-sssa-loop-niter.c (record_niter_bound): Be sure that realistic
> estimate is not bigger than upper bound.
> Index: tree-ssa-loop-niter.c
> ===================================================================
> --- tree-ssa-loop-niter.c (revision 192632)
> +++ tree-ssa-loop-niter.c (working copy)
> @@ -2506,13 +2506,20 @@ record_niter_bound (struct loop *loop, d
> {
> loop->any_upper_bound = true;
> loop->nb_iterations_upper_bound = i_bound;
> + if (loop->any_estimate
> + && i_bound.ult (loop->nb_iterations_estimate))
> + loop->nb_iterations_estimate = i_bound;
> }
> if (realistic
> && (!loop->any_estimate
> || i_bound.ult (loop->nb_iterations_estimate)))
> {
> loop->any_estimate = true;
> - loop->nb_iterations_estimate = i_bound;
> + if (loop->nb_iterations_upper_bound.ult (i_bound)
> + && loop->any_upper_bound)
testing any_upper_bound before accessing loop->nb_iterations_upper_bound
> + loop->nb_iterations_estimate = loop->nb_iterations_upper_bound;
> + else
> + loop->nb_iterations_estimate = i_bound;
> }
>
> /* If an upper bound is smaller than the realistic estimate of the
>
>
--
Richard Biener <rguenther@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend