aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.7/libiberty/ffs.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.7/libiberty/ffs.c')
-rw-r--r--gcc-4.7/libiberty/ffs.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc-4.7/libiberty/ffs.c b/gcc-4.7/libiberty/ffs.c
new file mode 100644
index 000000000..603cbe8ed
--- /dev/null
+++ b/gcc-4.7/libiberty/ffs.c
@@ -0,0 +1,26 @@
+/* ffs -- Find the first bit set in the parameter
+
+@deftypefn Supplemental int ffs (int @var{valu})
+
+Find the first (least significant) bit set in @var{valu}. Bits are
+numbered from right to left, starting with bit 1 (corresponding to the
+value 1). If @var{valu} is zero, zero is returned.
+
+@end deftypefn
+
+*/
+
+int
+ffs (register int valu)
+{
+ register int bit;
+
+ if (valu == 0)
+ return 0;
+
+ for (bit = 1; !(valu & 1); bit++)
+ valu >>= 1;
+
+ return bit;
+}
+