From 0e1464f640ddecc68d1714a641db023caa97dab5 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 18 May 2024 00:27:12 +0200 Subject: [PATCH] stdbit-h: Fix leading-zeros/ones functions on 64-bit MSVC. * lib/stdbit.in.h (__gl_stdbit_clzll) [_MSC_VER]: On x86_64, use _BitScanReverse64. --- ChangeLog | 6 ++++++ lib/stdbit.in.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a6dfe2c370..5207f25b3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2024-05-17 Bruno Haible + + stdbit-h: Fix leading-zeros/ones functions on 64-bit MSVC. + * lib/stdbit.in.h (__gl_stdbit_clzll) [_MSC_VER]: On x86_64, use + _BitScanReverse64. + 2024-05-17 Bruno Haible getusershell tests: Fix link error on MSVC. diff --git a/lib/stdbit.in.h b/lib/stdbit.in.h index b5b5870eba..a466a45d77 100644 --- a/lib/stdbit.in.h +++ b/lib/stdbit.in.h @@ -169,7 +169,7 @@ __gl_stdbit_clzll (unsigned long long int n) { # ifdef _M_X64 unsigned long int r; - return 8 * sizeof n - (_BitScanReverse (&r, n) ? r + 1 : 0); + return 8 * sizeof n - (_BitScanReverse64 (&r, n) ? r + 1 : 0); # else unsigned long int hi = n >> 32; return __gl_stdbit_clzl (hi ? hi : n) + (hi ? 0 : 32); -- 2.39.5