__attribute__ ((__noreturn__)) extern void fail (void); char x; /* This used to get stuck in an infinite loop in find_comparison_args when compiling this function for MIPS at -O2. */ void foo (const unsigned char y) { ((void) (__builtin_expect((!! y == y), 1) ? 0 : (fail (), 0))); x = ! y; } /* This used to similarly get stuck when compiling for PowerPC at -O2. */ int foo2 (int arg) { if (arg != !arg) fail (); if (arg) fail (); }