http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60619

--- Comment #2 from Alexander Kleinsorge <aleks at physik dot tu-berlin.de> ---
(In reply to Andrew Pinski from comment #1)
> Well your option violates C promotion rules.  Basically the warning is there
> as some folks don't understand how promotion works in C when it comes to
> comparing unsigned and signed integers against each other.
> 
> For equals, most of the time you want bytewise comparison; that is the
> implicate cast does not change the bits.  While your switch does change the
> bits.

I understand the promotion rules. Nobody is forced to used this new switch.
It gives the fast possibility to see the code as it is written from math
perspective. e.g. (-1 != 0xffFFffFFu) even if both bit representation is ~0

What happens in reallity (not enough programming time):
(s != u) ==> ((unsigned)s != u) , the typecast is inserted to avoid the
warning, not because it is really meant!

This could fasten some cases. The sign-warning could still be there (as without
new switch).

Alex

Reply via email to