Date: Tue, 11 Feb 2025 11:30:38 +0800 From: Zhenlei Huang <zlei@FreeBSD.org> To: Doug Moore <dougm@FreeBSD.org> Cc: "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-branches@freebsd.org" <dev-commits-src-branches@FreeBSD.org> Subject: Re: git: 7bcc7a0b88cc - stable/14 - libkern: avoid local var in order_base_2() Message-ID: <858BD10B-A2C9-4D3A-9FF5-C5573597DF8B@FreeBSD.org> In-Reply-To: <202502101115.51ABFISj016298@gitrepo.freebsd.org> References: <202502101115.51ABFISj016298@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Feb 10, 2025, at 7:15 PM, Doug Moore <dougm@FreeBSD.org> wrote: >=20 > The branch stable/14 has been updated by dougm: >=20 > URL: = https://cgit.FreeBSD.org/src/commit/?id=3D7bcc7a0b88ccb5e1fe31de88ab9a17e4= 6859318b >=20 > commit 7bcc7a0b88ccb5e1fe31de88ab9a17e46859318b > Author: Doug Moore <dougm@FreeBSD.org> > AuthorDate: 2024-09-27 23:43:07 +0000 > Commit: Doug Moore <dougm@FreeBSD.org> > CommitDate: 2025-02-10 10:30:05 +0000 >=20 > libkern: avoid local var in order_base_2() >=20 > order_base_2(n) is implemented with a variable, which keeps it from > being used at file scope. Implement it instead as ilog2(2*n-1), = which > produces a different result when 2*n overflows, which appears = unlikely > in practice. >=20 > Reviewed by: bz > Differential Revision: https://reviews.freebsd.org/D46826 >=20 > (cherry picked from commit = b7cbf741d55468ba34305a14ac3acc1c286af034) > --- > sys/sys/libkern.h | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) >=20 > diff --git a/sys/sys/libkern.h b/sys/sys/libkern.h > index a10289d72dc7..835e5ffaf0b7 100644 > --- a/sys/sys/libkern.h > +++ b/sys/sys/libkern.h > @@ -229,10 +229,7 @@ ilog2_long_long(long long n) >=20 > #define ilog2(n) (__builtin_constant_p(n) ? ilog2_const(n) : = ilog2_var(n)) > #define rounddown_pow_of_two(n) ((__typeof(n))1 << ilog2(n)) > -#define order_base_2(n) ({ \ > - __typeof(n) _n =3D (n); \ This local var `_n` is within the scope of the macro `order_base_2`, it = is surrounded with {} and is harmless, so it will not pollute the file scoped variables. Am I reading the commit message wrong ? Best regards, Zhenlei > - _n =3D=3D 1 ? 0 : 1 + ilog2(_n - 1); \ > -}) > +#define order_base_2(n) ilog2(2*(n)-1) > #define roundup_pow_of_two(n) ((__typeof(n))1 << = order_base_2(n)) >=20 > #define bitcount64(x) __bitcount64((uint64_t)(x))
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?858BD10B-A2C9-4D3A-9FF5-C5573597DF8B>