sign-compare warning for short and char
I wonder why -Wsign-compare only warns when there is no int promotion? No warning for this, where the result is “surprisingly” false because of int promotion: signed char i = (signed char) -3; unsigned char j = (unsigned char) -3; printf("i=%x j=%x i==j=%d\n", i, j, i==j); gcc -Wsign-compare ~/test.c -o /tmp/glop && /tmp/glop i=fffd j=fd i==j=0 But a warning for this where the result is true (which I believe represents a lower risk than the above case): signed int i = (signed int) -3; unsigned int j = (unsigned int) -3; printf("i=%x j=%x i==j=%d\n", i, j, i==j); % gcc -Wsign-compare ~/test.c -o /tmp/glop && /tmp/glop i=fffd j=fd i==j=0 /home/ddd/test.c:7:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] printf("i=%x j=%x i==j=%d\n", i, j, i==j); ^~ i=fffd j=fffd i==j=1 I did not find a rationale in the documentation, nor a good alternative flag that would focus on comparisons with promotion. Tested with several semi-old variants of GCC, e.g. 4.8.5, and more recent ones e.g. 7.2.1, with consistent results. gcc --version gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2) Thanks, Christophe
Re: sign-compare warning for short and char
> On 20 Feb 2018, at 16:15, Jonathan Wakely wrote: > > This question belongs on the gcc-help list really. I posted here because I saw it as a possible diagnostic bug / limitation. Do such things go to gcc-help? Or is it that you thought I was asking for the correct option? > On 20 February 2018 at 14:44, Christophe de Dinechin > wrote: >> I wonder why -Wsign-compare only warns when there is no int promotion? > > I suspect the correct-but-not-helpful answer is that after integer > promotion the operands have the same type, and so there's no > comparison between signed and unsigned types. That’s an implementation explanation, not a rationale, right? > But the compiler could make the warning apply *before* doing integer > promotion, to diagnose this case. That is what I am thinking, but I was wondering if there was not some rationale making this a bad idea.
Re: Remove RMS from the GCC Steering Committee
> On 27 Mar 2021, at 08:08, Didier Kryn wrote: > > I've been lurking on this list for a while but never contributed in > any way to the project. Therefore I understand my voice has little weight. > > I'm terrified by this campaign of harassment against the person who > has given the biggest contribution to free software. +1 > This confirms to my > eyes that the People *is not* the defensor of Liberty and only the law > can defend it. The success of this campaign will prove that even the > liberty to express personnal opinions seems excessive to the People. > This is how terror begins. > > -- Didier > >