From: Bruno Haible Date: Mon, 3 Aug 2020 23:10:23 +0000 (+0200) Subject: integer_length_ll: Optimize for MSVC in 32-bit mode. X-Git-Tag: v1.0~3822 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=dc87bda7182bf9ad9034ca739f46b3dbb9dc4632;p=gnulib.git integer_length_ll: Optimize for MSVC in 32-bit mode. * lib/integer_length_l.c: Include . (integer_length): Define as inline function, like in lib/integer_length.c. --- diff --git a/ChangeLog b/ChangeLog index b2169e369f..bfd2ade8d6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2020-08-03 Bruno Haible + + integer_length_ll: Optimize for MSVC in 32-bit mode. + * lib/integer_length_l.c: Include . + (integer_length): Define as inline function, like in + lib/integer_length.c. + 2020-08-03 Bruno Haible integer_length: Optimize for MSVC. diff --git a/lib/integer_length_l.c b/lib/integer_length_l.c index 7a6035768c..ea52ac34fb 100644 --- a/lib/integer_length_l.c +++ b/lib/integer_length_l.c @@ -37,6 +37,22 @@ # define GCC_BUILTIN __builtin_clzl #endif +#if defined _MSC_VER +# include +/* Copied from integer_length.c. */ +static inline int +integer_length (unsigned int x) +{ + /* _BitScanReverse + */ + unsigned long bit; + if (_BitScanReverse (&bit, x)) + return bit + 1; + else + return 0; +} +#endif + #define NBITS (sizeof (TYPE) * CHAR_BIT) /* Modify shift count to be in bounds, even in dead code, otherwise GCC