https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79388
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Another testcase from the other PR (-O): unsigned int foo (unsigned char x, unsigned long long y) { do { x &= !y; x %= 24; } while (x < y); return x + y; } int main (void) { unsigned int x = foo (1, 0); if (x != 1) __builtin_abort (); return 0; }