summaryrefslogtreecommitdiff
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
parenta749ba3adc2f3b4abfc68b21d4c3741b20c8f657 (diff)
downloadmusl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.tar.gz
musl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.tar.bz2
musl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.tar.xz
musl-67ba40d1e05c39ffe71294476d2f2c13c481f3bd.zip
optimize legacy ffs function
-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;
}