http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46374
--- Comment #2 from Luís Fernando Schultz Xavier da Silveira <lfsxs0 at gmail dot com> 2010-11-08 15:48:47 UTC --- (In reply to comment #1) > That code is really: > bool > f (uint16_t x, uint16_t y) > { > return ((int)x) + 8 == ((int)y) - 17; > } I am very sorry. I forgot the implicit conversion rules. Please consider: bool f (uint16_t x, uint16_t y) { x+= 8; y-= 17; return x == y; }