* lib/ffsl.h (FUNC): Use GCC_BUILTIN if defined.
* lib/ffsl.c (GCC_BUILTIN): New macro.
* lib/ffsll.c (GCC_BUILTIN): Likewise.
+2011-10-13 Bruno Haible <bruno@clisp.org>
+
+ ffsl, ffsll: Optimize for GCC.
+ * lib/ffsl.h (FUNC): Use GCC_BUILTIN if defined.
+ * lib/ffsl.c (GCC_BUILTIN): New macro.
+ * lib/ffsll.c (GCC_BUILTIN): Likewise.
+
2011-10-13 Bruno Haible <bruno@clisp.org>
ffs, bcopy, memset: Support symbol renaming via config.h.
#define FUNC ffsl
#define TYPE long int
+#define GCC_BUILTIN __builtin_ffsl
#include "ffsl.h"
int
FUNC (TYPE i)
{
+#if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) && defined GCC_BUILTIN
+ return GCC_BUILTIN (i);
+#else
int result = 0;
unsigned TYPE j = i;
j >>= CHAR_BIT * sizeof (unsigned int);
result += CHAR_BIT * sizeof (unsigned int);
}
+#endif
}
#define FUNC ffsll
#define TYPE long long int
+#define GCC_BUILTIN __builtin_ffsll
#include "ffsl.h"