http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60090
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- C++ folds while parsing and here for both -O0 -O we get y.c: In function ‘int fn1(unsigned char, unsigned char)’: y.c:3:18: warning: comparison of promoted ~unsigned with unsigned [-Wsign-compare] return (l ^ a) != b; ^