Make do_loop use estimated_num_iterations/expected_num_iterations

Richard Biener rguenther@suse.de
Fri May 20 09:39:00 GMT 2016


On Thu, 19 May 2016, Jan Hubicka wrote:

> Hi,
> this patch makes doloop_optimize to use the
> get_estimated_loop_iterations_int/get_max_loop_iterations_int instead of weakter
> check for const_iter.  Bootstrapped/regtested x86_64-linux, OK?

Ok.

Thanks,
Richard.

> Honza
> 
> 	* loop-doloop.c (doloop_optimize): Use get_estimated_loop_iterations_int
> 	and get_max_loop_iterations_int.
> Index: loop-doloop.c
> ===================================================================
> --- loop-doloop.c	(revision 236450)
> +++ loop-doloop.c	(working copy)
> @@ -610,7 +610,8 @@ doloop_optimize (struct loop *loop)
>    widest_int iterations, iterations_max;
>    rtx_code_label *start_label;
>    rtx condition;
> -  unsigned level, est_niter;
> +  unsigned level;
> +  HOST_WIDE_INT est_niter;
>    int max_cost;
>    struct niter_desc *desc;
>    unsigned word_mode_size;
> @@ -635,21 +636,16 @@ doloop_optimize (struct loop *loop)
>      }
>    mode = desc->mode;
>  
> -  est_niter = 3;
> -  if (desc->const_iter)
> -    est_niter = desc->niter;
> -  /* If the estimate on number of iterations is reliable (comes from profile
> -     feedback), use it.  Do not use it normally, since the expected number
> -     of iterations of an unrolled loop is 2.  */
> -  if (loop->header->count)
> -    est_niter = expected_loop_iterations (loop);
> +  est_niter = get_estimated_loop_iterations_int (loop);
> +  if (est_niter == -1)
> +    est_niter = get_max_loop_iterations_int (loop);
>  
> -  if (est_niter < 3)
> +  if (est_niter >= 0 && est_niter < 3)
>      {
>        if (dump_file)
>  	fprintf (dump_file,
>  		 "Doloop: Too few iterations (%u) to be profitable.\n",
> -		 est_niter);
> +		 (unsigned int)est_niter);
>        return false;
>      }
>  
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)



More information about the Gcc-patches mailing list