http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45831
--- Comment #14 from Michiel <MichieldeB at aim dot com> 2010-09-30 18:30:16 UTC --- Remove signed/unsigned warnings, or even overflow warnings, for constants that are used in an expression with the following operations only: casts to integral type of smaller or equal size, casts to boolean, !, == and !=, casts from boolean to integral type, ? :, + - * << & | ^. Probably I missed some, but I hope you see what I mean. Then you will understand that /, %, >> and casts to larger integral type (or float, double) do not belong to this list. Is that really too hard?