This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
RE: c/10226: unsigned short promotion with bitwise inversion
- From: Michael Marks <Michael dot Marks at internetmachines dot com>
- To: nobody at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org,
- Date: 26 Mar 2003 23:16:01 -0000
- Subject: RE: c/10226: unsigned short promotion with bitwise inversion
- Reply-to: Michael Marks <Michael dot Marks at internetmachines dot com>
The following reply was made to PR c/10226; it has been noted by GNATS.
From: Michael Marks <Michael dot Marks at internetmachines dot com>
To: 'Falk Hueffner' <falk dot hueffner at student dot uni-tuebingen dot de>,
Glen Nakamura <glen at imodulo dot com>
Cc: gcc-gnats at gcc dot gnu dot org
Subject: RE: c/10226: unsigned short promotion with bitwise inversion
Date: Wed, 26 Mar 2003 15:10:54 -0800
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_001_01C2F3EC.F3696FC0
Content-Type: text/plain;
charset="iso-8859-1"
Guys,
How about...
warning: comparison will will promote to ~(unsigned) which will zero extend
before ~ operation
-----Original Message-----
From: Falk Hueffner [mailto:falk dot hueffner at student dot uni-tuebingen dot de]
Sent: Wednesday, March 26, 2003 2:54 PM
To: Glen Nakamura
Cc: Michael Marks; gcc-gnats at gcc dot gnu dot org
Subject: Re: c/10226: unsigned short promotion with bitwise inversion
Glen Nakamura <glen at imodulo dot com> writes:
> On Wed, Mar 26, 2003 at 11:19:58PM +0100, Falk Hueffner wrote:
> > Glen Nakamura <glen at imodulo dot com> writes:
> > > How about one of these:
> > > warning: comparison of promoted ~unsigned with unsigned is always
false
> > > warning: comparison of ~(promoted unsigned) with unsigned is always
false
> >
> > Yes, that makes it even clearer. I'd prefer the second variant. (BTW,
> > funny, the optimizer doesn't seem to realize it's always false...)
>
> It does on my system (GCC 3.3):
Well, yeah, it's simply constant folding there. What I meant is that
gcc doesn't optimize
int f(unsigned short a, unsigned short b) { return b == ~a; }
to
int f(unsigned short a, unsigned short b) { return 0; }
--
Falk
------_=_NextPart_001_01C2F3EC.F3696FC0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
5.5.2653.12">
<TITLE>RE: c/10226: unsigned short promotion with bitwise =
inversion</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=3D2>Guys,</FONT>
<BR><FONT SIZE=3D2>How about...</FONT>
<BR><FONT SIZE=3D2>warning: comparison will will promote to ~(unsigned) =
which will zero extend before ~ operation</FONT>
</P>
<P><FONT SIZE=3D2>-----Original Message-----</FONT>
<BR><FONT SIZE=3D2>From: Falk Hueffner [<A =
HREF=3D"mailto:falk dot hueffner at student dot uni-tuebingen dot de">mailto:falk.hueff=
ner at student dot uni-tuebingen dot de</A>]</FONT>
<BR><FONT SIZE=3D2>Sent: Wednesday, March 26, 2003 2:54 PM</FONT>
<BR><FONT SIZE=3D2>To: Glen Nakamura</FONT>
<BR><FONT SIZE=3D2>Cc: Michael Marks; gcc-gnats at gcc dot gnu dot org</FONT>
<BR><FONT SIZE=3D2>Subject: Re: c/10226: unsigned short promotion with =
bitwise inversion</FONT>
</P>
<BR>
<P><FONT SIZE=3D2>Glen Nakamura <glen at imodulo dot com> writes:</FONT>
</P>
<P><FONT SIZE=3D2>> On Wed, Mar 26, 2003 at 11:19:58PM +0100, Falk =
Hueffner wrote:</FONT>
<BR><FONT SIZE=3D2>> > Glen Nakamura <glen at imodulo dot com> =
writes:</FONT>
<BR><FONT SIZE=3D2>> > > How about one of these:</FONT>
<BR><FONT SIZE=3D2>> > > warning: comparison of promoted =
~unsigned with unsigned is always false</FONT>
<BR><FONT SIZE=3D2>> > > warning: comparison of ~(promoted =
unsigned) with unsigned is always false</FONT>
<BR><FONT SIZE=3D2>> > </FONT>
<BR><FONT SIZE=3D2>> > Yes, that makes it even clearer. I'd =
prefer the second variant. (BTW,</FONT>
<BR><FONT SIZE=3D2>> > funny, the optimizer doesn't seem to =
realize it's always false...)</FONT>
<BR><FONT SIZE=3D2>> </FONT>
<BR><FONT SIZE=3D2>> It does on my system (GCC 3.3):</FONT>
</P>
<P><FONT SIZE=3D2>Well, yeah, it's simply constant folding there. What =
I meant is that</FONT>
<BR><FONT SIZE=3D2>gcc doesn't optimize</FONT>
</P>
<P><FONT SIZE=3D2>int f(unsigned short a, unsigned short b) { return b =
=3D=3D ~a; }</FONT>
</P>
<P><FONT SIZE=3D2>to</FONT>
</P>
<P><FONT SIZE=3D2>int f(unsigned short a, unsigned short b) { return 0; =
}</FONT>
</P>
<P><FONT SIZE=3D2>-- </FONT>
<BR> <FONT =
SIZE=3D2>Falk</FONT>
</P>
</BODY>
</HTML>
------_=_NextPart_001_01C2F3EC.F3696FC0--