[cfe-dev] -Wsign-compare warns on different signs of operands for ?:

Richard Trieu rtrieu at google.com
Thu Jul 14 13:32:15 PDT 2011


On Thu, Jul 14, 2011 at 1:11 PM, John McCall <rjmccall at apple.com> wrote:

>
> On Jul 14, 2011, at 12:58 PM, Richard Trieu wrote:
>
> On Wed, Jul 13, 2011 at 10:08 PM, John McCall <rjmccall at apple.com> wrote:
>
>>
>> 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.
>>
>
> Could you give an example of a non-trivial case that gcc does warn on?
>  I've tried:
>
> void f(bool b, unsigned int u, int i) {
>   (void) (b ? u : i);
> }
>
> void f(unsigned int u, int i) {
>   (void) ((i > 5) ? u : i);
> }
>
> but both don't give an warning from gcc -Wsign-compare.  Clang's
> -Wsign-compare warns on both.
>
>
> Aha.  From 'bool' I take it that you're talking about C++.  You're correct
> that G++'s -Wsign-compare does not warn about conditional operators.  GCC's
> does.  In clang, we decided that that inconsistency wasn't worth emulating.
>
> John.
>

Sorry for the confusion.  If we don't care about consistency in this case,
can we remove this warning so that our -Wsign-compare will only be about
signed comparisons?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20110714/da035261/attachment.html>


More information about the cfe-dev mailing list