RE: [PATCH] asm-generic: fix ffs -Wshadow warning

From: David Laight
Date: Mon Oct 26 2020 - 12:44:34 EST


From: Arnd Bergmann
> Sent: 26 October 2020 16:00
>
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> gcc -Wshadow warns about the ffs() definition that has the
> same name as the global ffs() built-in:
>
> include/asm-generic/bitops/builtin-ffs.h:13:28: warning: declaration of 'ffs' shadows a built-in
> function [-Wshadow]
>
> This is annoying because 'make W=2' warns every time this
> header gets included.
>
> Change it to use a #define instead, making callers directly
> reference the builtin.
>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> ---
> include/asm-generic/bitops/builtin-ffs.h | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/include/asm-generic/bitops/builtin-ffs.h b/include/asm-generic/bitops/builtin-ffs.h
> index 458c85ebcd15..1dacfdb4247e 100644
> --- a/include/asm-generic/bitops/builtin-ffs.h
> +++ b/include/asm-generic/bitops/builtin-ffs.h
> @@ -10,9 +10,6 @@
> * the libc and compiler builtin ffs routines, therefore
> * differs in spirit from the above ffz (man ffs).
> */
> -static __always_inline int ffs(int x)
> -{
> - return __builtin_ffs(x);
> -}
> +#define ffs(x) __builtin_ffs(x)
>
> #endif
> --
> 2.27.0

An alternative would be to add #define ffs(x) our_inline_ffs(x)
before the inline function definition.

I though the idea of the __builtin_ prefix was that you could
have a function with the same name :-(

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)