From: Bruno Haible Date: Mon, 3 Aug 2020 22:11:02 +0000 (+0200) Subject: ffsll: Optimize for MSVC in 32-bit mode. X-Git-Tag: v1.0~3825 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=c728189201864850c562862fa7fc54d925c472e0;p=gnulib.git ffsll: Optimize for MSVC in 32-bit mode. * lib/ffsl.h: Include . (ffs): Define as inline function, like in lib/ffs.c. --- diff --git a/ChangeLog b/ChangeLog index 773a9f5cc5..0a336bf367 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2020-08-03 Bruno Haible + + ffsll: Optimize for MSVC in 32-bit mode. + * lib/ffsl.h: Include . + (ffs): Define as inline function, like in lib/ffs.c. + 2020-08-03 Bruno Haible ffs: Optimize for MSVC. diff --git a/lib/ffsl.h b/lib/ffsl.h index cea438607b..d5c5a97509 100644 --- a/lib/ffsl.h +++ b/lib/ffsl.h @@ -27,6 +27,22 @@ #include #include +#if defined _MSC_VER +# include +/* Copied from ffs.c. */ +static inline int +ffs (int i) +{ + /* _BitScanForward + */ + unsigned long bit; + if (_BitScanForward (&bit, i)) + return bit + 1; + else + return 0; +} +#endif + #if !defined FUNC || !defined TYPE # error #endif