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 <rguent...@suse.de> SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)