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. Also optimize the loop to shift when step_expr is power of 2. But for other cases, the loop is still needed.