On Wed, 29 Jun 2016, Jan Hubicka wrote:
> > + if (!get_max_loop_iterations (loop, &nit))
> > + /* 10GHz CPU runing one cycle loop will reach 2^60 iterations in 260
> > + years. I won't live long enough to be forced to fix the
> > + miscompilation. Having the limit here will let us to consider
> > + 64bit IVs with base 0 and step 1...16 as non-wrapping which makes
> > + niter and ivopts go smoother. */
> > + nit = ((widest_int)1 << 60);
> >
> > I think that's on the border of being acceptable. Consider said loop
> > being autoparallelized and run on a PFlop cluster. Please take it out
> > for now.
>
> OK, once we will be able to get more than 2^64 iterations in resonable time,
> we will need to revisit gcov code ;)
> >
> > + if (INTEGRAL_TYPE_P (type))
> > + {
> > + maxt = TYPE_MAX_VALUE (type);
> > + mint = TYPE_MIN_VALUE (type);
> > + }
> > + else
> > + {
> > + maxt = upper_bound_in_type (type, type);
> > + mint = lower_bound_in_type (type, type);
> > + }
> >
> > I think we don't support any non-integral/pointer IVs and thus you
> > can simply use
> >
> > type_min/max = wi::max/min_value (TYPE_PRECISION (type), TYPE_SIGN
> > (type));
>
> OK.
> >
> > + type_min = wi::to_widest (mint);
> > + type_max = wi::to_widest (maxt);
> > + if ((base_max + step_max * (nit + 1)) > (type_max)
> > + || type_min > (base_min + step_min * (nit + 1)))
> > + return true;
> >
> > so I'm not convinced that widest_int precision is enough here. Can't
> > you use wide_ints instead of widest_ints and use the wi::add / wi::mult
> > overloads which provide the overflow flag? Otherwise do what
> > VRP does and use FIXED_WIDE_INT to properly handle __int128_t IVs.
>
> nit is widest_int because, so I suppose first I need to convert it to
> wide_int and then do the overflow checks. Do we have narrowing
> conversion with overflow flat, too?
I don't think so, you'd have to compare against type_max (nit is
"typeless").
Rihcard.
> >
> > scev provides scev_direction for this (of course we don't have the chrec
> > anymore here).
>
> Good, thanks!
>
> Honza
>
>
--
Richard Biener <[email protected]>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB
21284 (AG Nuernberg)