https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111820

--- Comment #6 from rguenther at suse dot de <rguenther at suse dot de> ---
On Mon, 16 Oct 2023, crazylht at gmail dot com wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111820
> 
> --- Comment #5 from Hongtao.liu <crazylht at gmail dot com> ---
> (In reply to Richard Biener from comment #3)
> >         for (unsigned i = 0; i != skipn - 1; i++)
> >           begin = wi::mul (begin, wi::to_wide (step_expr));
> > 
> > (gdb) p skipn
> > $5 = 4294967292
> > 
> > niters is 4294967292 in vect_update_ivs_after_vectorizer.  Maybe the loop
> > should terminate when begin is zero.  But I wonder why we pass in 'niters'
> Here, it want to calculate begin * pow (step_expr, skipn), yes we can just 
> skip
> the loop when begin is 0.

I mean terminate it when the multiplication overflowed to zero.

As for the MASK_ thing the skip is to be interpreted negative (we
should either not use a 'tree' here or make it have the correct type
maybe).  Can we even handle this here?  It would need to be
a division, no?

So I think we need to disable non-linear IV or masked peeling for
niter/aligment?  But I wonder how we run into this with plain -O3.

Reply via email to