Date: Sat, 1 Feb 2020 19:17:07 +0100 From: Dimitry Andric <dim@FreeBSD.org> To: Ian Lepore <ian@FreeBSD.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r357349 - in head/sys: conf modules/tpm Message-ID: <5146F5D0-6E0A-415D-8C14-AE8C5CD05CAA@FreeBSD.org> In-Reply-To: <e057f88c8f57438c31264d470a1e272c5f7998c9.camel@freebsd.org> References: <202001311936.00VJaEDP056807@repo.freebsd.org> <e057f88c8f57438c31264d470a1e272c5f7998c9.camel@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--Apple-Mail=_3CBCF93B-B87C-4C73-A1B5-FE1A183EB6B4 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 1 Feb 2020, at 18:55, Ian Lepore <ian@FreeBSD.org> wrote: >=20 > On Fri, 2020-01-31 at 19:36 +0000, Dimitry Andric wrote: >> Author: dim >> Date: Fri Jan 31 19:36:14 2020 >> New Revision: 357349 >> URL: https://svnweb.freebsd.org/changeset/base/357349 >>=20 >> Log: >> Merge r357348 from the clang 10.0.0 import branch: >>=20 >> Disable new clang 10.0.0 warnings about converting the result of = shift >> operations to a boolean in tpm(4): >>=20 >> sys/dev/tpm/tpm_crb.c:301:32: error: converting the result of '<<' = to a boolean; did you mean '(1 << (0)) !=3D 0'? = [-Werror,-Wint-in-bool-context] >> WR4(sc, TPM_CRB_CTRL_CANCEL, !TPM_CRB_CTRL_CANCEL_CMD); >> ^ >> sys/dev/tpm/tpm_crb.c:73:34: note: expanded from macro = 'TPM_CRB_CTRL_CANCEL_CMD' >> #define TPM_CRB_CTRL_CANCEL_CMD BIT(0) >> ^ >> sys/dev/tpm/tpm20.h:60:19: note: expanded from macro 'BIT' >> #define BIT(x) (1 << (x)) >> ^ >>=20 >> Such warnings can be useful in C++ contexts, but not so much in = kernel >> drivers, where this type of bit twiddling is commonplace. So = disable it >> for this case. >>=20 >=20 > I think the point of the compiler warning about shift in a boolean > context is the same as warning about assignment in a boolean > context. I.e, >=20 > if (a << 3) >=20 > might be a typo for >=20 > if (a < 3) >=20 > in the same way as "a =3D 3" might have been intended to be "a =3D=3D = 3". Yes, clang inherited this warning from gcc, where it says in: = https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wint-in-bool= -context -Wint-in-bool-context Warn for suspicious use of integer values where boolean values are expected, such as conditional expressions (?:) using non-boolean integer constants in boolean context, like if (a <=3D b ? 2 : 3). Or left shifting of signed integers in boolean context, like for (a =3D = 0; 1 << a; a++);. Likewise for all kinds of multiplications regardless of the data type. This warning is enabled by -Wall. -Dimitry --Apple-Mail=_3CBCF93B-B87C-4C73-A1B5-FE1A183EB6B4 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.2 iF0EARECAB0WIQR6tGLSzjX8bUI5T82wXqMKLiCWowUCXjXAowAKCRCwXqMKLiCW o7GMAKDVh6PO3SpDC9sf6fOWLj7s9Gcd5ACg0EkRgDA8CXvK9NijozxV82TFMO4= =WC// -----END PGP SIGNATURE----- --Apple-Mail=_3CBCF93B-B87C-4C73-A1B5-FE1A183EB6B4--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5146F5D0-6E0A-415D-8C14-AE8C5CD05CAA>