[forwarded from https://launchpad.net/bugs/291780]
When compiling a small test program, the compiler shows a warning I would either not expect at all, or expect it to appear for all four if-statements used in my example: $ gcc -Wextra -c promotion.c promotion.c: In function main: promotion.c:10: warning: comparison of promoted ~unsigned with unsigned promotion.c: typedef unsigned char uint8_t; int main(void) { uint8_t a = 0; uint8_t b = 0; unsigned char c = 0; unsigned char d = 0; if (a == (b ^ 0xff)) { } if (a == (d ^ 0xff)) { } if (c == (b ^ 0xff)) { } if (c == (d ^ 0xff)) { } return 0; } -- Summary: inconsistent warnings Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: doko at ubuntu dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38370