[PATCH xquartz 04/10] randr: Silence -Wshift-negative-value warnings
Adam Jackson
ajax at nwnk.net
Mon Oct 19 08:31:10 PDT 2015
On Wed, 2015-10-14 at 15:44 -0700, Jeremy Huddleston Sequoia wrote:
> > On Oct 14, 2015, at 15:33, Alan Coopersmith wrote:
> >
> > On 10/14/15 03:13 PM, Jeremy Huddleston Sequoia wrote:
> > > rrtransform.c:199:23: warning: shifting a negative signed value
> > > is undefined [-Wshift-negative-value,Semantic Issue]
> > > rot_cos = F(-1);
> >
> >
> > > - rot_cos = F(-1);
> > > + rot_cos = F(~0u);
> >
> > Is -1 guaranteed to be ~0u on all platforms? Or just all the ones
> > we know and care about?
>
> I'm pretty certain that ~0u and -1 are the same bit patterns on all
> platforms. I can't think of a reason why they wouldn't be.
On a ones' complement machine, (uint8_t)-1 is 0b11111110. On a signed-
magnitude machine, (uint8_t)-1 is 0b10000001. But I think you're
significantly more likely to encounter a PDP-endian machine than a non-
two's-complement machine at this point, and there's plenty of other
places in xserver where we're assuming two's complement, e.g.:
fb/fb.h:#define FB_ALLONES ((FbBits) -1)
- ajax
More information about the xorg-devel
mailing list