[cfe-dev] -Wsign-compare warns on different signs of operands for ?:
John McCall
rjmccall at apple.com
Wed Jul 13 22:08:19 PDT 2011
On Jul 13, 2011, at 5:15 PM, Richard Trieu wrote:
> For code such as:
>
> void f(unsigned int u, int i) {
> (void) (true ? u : i);
> }
>
> When run with -Wsign-compare, Clang gives the following warning.
>
> warning: operands of ? are integers of different signs:
> 'unsigned int' and 'int' [-Wsign-compare]
> (void) (true ? u : i);
> ^ ~ ~
>
> Yet, no comparison is going on between u and i, so the warning seems out of place for grouping with -Wsign-compare. I think that it would be better is this warning was pulled out of the -Wsign-compare diagnostic group. Also, gcc's -Wsign-compare does not warn on this code, so this change will make Clang's sign compare closer to gcc's. Does this seem reasonable?
gcc's -Wsign-compare does warn on this code if you make the condition non-trivial. Clang is just missing that special case.
John.
More information about the cfe-dev
mailing list