https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64183
--- Comment #2 from Ilya Enkovich <enkovich.gnu at gmail dot com> --- (In reply to Richard Biener from comment #1) > It works correctly for > > int bits; > > void > test () > { > while (bits < (unsigned int)25) > bits += 8; > } Right. But shift operator in the attached testcase somehow breaks it after r218142 adds a conversion to unsigned type for a second shift operand.