about summary refs log tree commit diff
path: root/src/misc/ffs.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-08-23 14:38:34 -0400
committerRich Felker <dalias@aerifal.cx>2012-08-23 14:38:34 -0400
commit67ba40d1e05c39ffe71294476d2f2c13c481f3bd (patch)
tree918504a848a72abdfa4a24df8d8f8c1a7b9d95af /src/misc/ffs.c
parenta749ba3adc2f3b4abfc68b21d4c3741b20c8f657 (diff)
downloadmusl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.tar.gz
musl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.tar.xz
musl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.zip
optimize legacy ffs function
Diffstat (limited to 'src/misc/ffs.c')
-rw-r--r--src/misc/ffs.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/misc/ffs.c b/src/misc/ffs.c
index 2f7cb321..673ce5a9 100644
--- a/src/misc/ffs.c
+++ b/src/misc/ffs.c
@@ -1,9 +1,7 @@
 #include <strings.h>
+#include "atomic.h"
 
 int ffs(int i)
 {
-	unsigned int j = i;
-	for (i=1; j && !(j&1); j>>=1, i++);
-	if (j) return i;
-	return 0;
+	return i ? a_ctz_l(i)+1 : 0;
 }