From owner-svn-src-head@freebsd.org Mon Jan 30 03:42:10 2017 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 129A3CC668B for ; Mon, 30 Jan 2017 03:42:10 +0000 (UTC) (envelope-from markmi@dsl-only.net) Received: from asp.reflexion.net (outbound-mail-210-75.reflexion.net [208.70.210.75]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BD208A1 for ; Mon, 30 Jan 2017 03:42:08 +0000 (UTC) (envelope-from markmi@dsl-only.net) Received: (qmail 20291 invoked from network); 30 Jan 2017 03:42:02 -0000 Received: from unknown (HELO rtc-sm-01.app.dca.reflexion.local) (10.81.150.1) by 0 (rfx-qmail) with SMTP; 30 Jan 2017 03:42:02 -0000 Received: by rtc-sm-01.app.dca.reflexion.local (Reflexion email security v8.20.1) with SMTP; Sun, 29 Jan 2017 22:42:02 -0500 (EST) Received: (qmail 29609 invoked from network); 30 Jan 2017 03:42:01 -0000 Received: from unknown (HELO iron2.pdx.net) (69.64.224.71) by 0 (rfx-qmail) with (AES256-SHA encrypted) SMTP; 30 Jan 2017 03:42:01 -0000 Received: from [192.168.1.111] (c-67-170-167-181.hsd1.or.comcast.net [67.170.167.181]) by iron2.pdx.net (Postfix) with ESMTPSA id 44750EC7E21; Sun, 29 Jan 2017 19:42:01 -0800 (PST) From: Mark Millard Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.2 \(3259\)) Subject: Re: svn commit: r312977 - head/sys/dev/adb Message-Id: <588CB781-A470-4101-8108-ADAD34525422@dsl-only.net> Date: Sun, 29 Jan 2017 19:42:00 -0800 To: Justin Hibbits , svn-src-head@freebsd.org X-Mailer: Apple Mail (2.3259) X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 30 Jan 2017 03:42:10 -0000 > Author: jhibbits > Date: Mon Jan 30 02:32:33 2017 > New Revision: 312977 > URL:=20 > https://svnweb.freebsd.org/changeset/base/312977 >=20 >=20 > Log: > Force the setting of bit 7 in the sysmouse packet byte 1 to be = unsigned. > =20 > Clang complains about the shift of (1 << 7) into a int8_t changing = the value: > =20 > warning: implicit conversion from 'int' to 'int8_t' (aka 'signed = char') changes > value from 128 to -128 [-Wconstant-conversion] > =20 > Squash this warning by forcing clang to see it as an unsigned bit. > =20 > This seems odd, given that it's still a conversion of 128->-128, but = I'm > guessing the explicit unsigned attribute notifies clang that sign = really doesn't > matter in this case. [The following is based just on the C standard, not POSIX or other standards that may also be involved from FreeBSD's point of view.] An FYI/explanation of sorts. . . In the C11 standard (e.g., since I have it handy) having the new type be signed has the rule for signed and unsigned integer implicit conversions between the types: (After the cases of value-representable-so-value-is-unchanged and new-type-is-unsigned, quoting:) > Otherwise, the new type is signed and the value cannot be represented > in it; either the result is implementation-defined or an > implementation-defined signal is raised. So while 1U use may make the compiler(s) tested be quiet it still leaves the code in implementation-defined territory where different starting types for the same value are allowed to have different results. But they are not required to and compiler releases could change the classification --and if there are messages from the compiler or not. Bit patterns need not be preserved for the sign-bit and/or value-carrying bits in the new type vs. the old type. (By contrast a new type being unsigned is defined with a mathematically specific/unique result and so a specific bit pattern for the value-carrying bits, ignoring trap representations and other pad bits if they exist.) > Reported by: Mark Millard > MFC after: 2 weeks >=20 > Modified: > head/sys/dev/adb/adb_mouse.c >=20 > Modified: head/sys/dev/adb/adb_mouse.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/dev/adb/adb_mouse.c Mon Jan 30 02:25:55 2017 = (r312976) > +++ head/sys/dev/adb/adb_mouse.c Mon Jan 30 02:32:33 2017 = (r312977) > @@ -520,7 +520,7 @@ ams_read(struct cdev *dev, struct uio *u > } > } > =20 > - sc->packet[0] =3D 1 << 7; > + sc->packet[0] =3D 1U << 7; > sc->packet[0] |=3D (!(sc->buttons & 1)) << 2; > sc->packet[0] |=3D (!(sc->buttons & 4)) << 1; > sc->packet[0] |=3D (!(sc->buttons & 2)); =3D=3D=3D Mark Millard markmi at dsl-only.net