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.