diff --git a/src/port/fls.c b/src/port/fls.c
index 19b4221826..4f4c412732 100644
--- a/src/port/fls.c
+++ b/src/port/fls.c
@@ -54,11 +54,7 @@
 int
 fls(int mask)
 {
-	int			bit;
-
 	if (mask == 0)
 		return (0);
-	for (bit = 1; mask != 1; bit++)
-		mask = (unsigned int) mask >> 1;
-	return (bit);
+	return (sizeof(int) << 3) - __builtin_clz(mask);
 }
