On Wed, 31 Oct 2012, Jan Hubicka wrote:
> > > - FOR_EACH_VEC_ELT (edge, exits, i, ex)
> > > + if (loop->any_upper_bound)
> > > {
> > > - if (!just_once_each_iteration_p (loop, ex->src))
> > > - continue;
> > > + if (dump_file && (dump_flags & TDF_DETAILS))
> > > + fprintf (dump_file, "Found loop %i to be finite: upper bound is
> > > recorded.\n",
> > > + loop->num);
> > > + return true;
> > > + }
> >
> > This looks redundant with ...
> >
> > > - if (number_of_iterations_exit (loop, ex, &desc, false))
> > > - {
> > > - if (dump_file && (dump_flags & TDF_DETAILS))
> > > - {
> > > - fprintf (dump_file, "Found loop %i to be finite: iterating ",
> > > loop->num);
> > > - print_generic_expr (dump_file, desc.niter, TDF_SLIM);
> > > - fprintf (dump_file, " times\n");
> > > - }
> > > - finite = true;
> > > - break;
> > > - }
> > > + if (max_loop_iterations (loop, &nit))
> > > + {
> >
> > ... this. If you want to short-circuit max_loop_iterations ()
> > then why not
> >
> > if (loop->any_upper_bound
> > || max_loop_iterations (loop, &nit))
> > {
> > ...
> >
> > ? The different dumping seems not a good reason to obfuscate it.
> >
>
> Sounds good to me. I only wanted to avoid max_loop_iterations re-trying to
> derrive the bound when it is already known to be finite. I think I will
> eventually make max_loop_iterations and friends to do the hard work only once
> per loop optimizer queue or when asked to collect the current bounds (since
> the pointers to statements are hard to maintain).
>
> OK with that change?
Ok.
Thanks,
Richard.