Alex Elder wrote:
David Chinner wrote:
. . .
--- 2.6.x-xfs-new.orig/fs/xfs/xfs_bit.h 2007-11-02
+++ 2.6.x-xfs-new/fs/xfs/xfs_bit.h 2007-12-03
@@ -68,8 +68,8 @@ static inline int xfs_lowbit32(__uint32_
/* Get low bit set out of 64-bit argument, -1 if none set */
static inline int xfs_lowbit64(__uint64_t v)
- unsigned long t = v;
- return (v) ? find_first_bit(&t, 64) : -1;
+ unsigned long long t = v;
Why create a local copy? Why not just pass v into find_first_bit()?
Because I thought that taking the address of a function parameter
was a big no-no because the result is undefined (i.e. platform and
I've never heard of this, and it's incorrect--at least with respect
to standard C. (But that's not to say in practice some compiler
does it wrong.) Unless it's a real (details known) problem you
shouldn't try to work around it.
I've never heard of that either.
(Then again, I didn't know until recently that they changed C
to allow "flexible array members" in C99