Re: [PATCH] x86/bitops.h: use IS_IMMEDIATE instead of dirrect call of __builtin_constant_p

From: Ingo Molnar
Date: Sat Feb 27 2016 - 06:44:28 EST



* Alexander Kuleshov <kuleshovmail@xxxxxxxxx> wrote:

> The arch/x86/include/asm/bitops.h provides IS_IMMEDIATE macro which expands to
> the call of the __builtin_constant_p(). Let's use this macro in the test_bit()
> to be more clear.
>
> Signed-off-by: Alexander Kuleshov <kuleshovmail@xxxxxxxxx>
> ---
> arch/x86/include/asm/bitops.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
> index cfe3b95..8cfbd2b 100644
> --- a/arch/x86/include/asm/bitops.h
> +++ b/arch/x86/include/asm/bitops.h
> @@ -333,7 +333,7 @@ static int test_bit(int nr, const volatile unsigned long *addr);
> #endif
>
> #define test_bit(nr, addr) \
> - (__builtin_constant_p((nr)) \
> + (IS_IMMEDIATE((nr)) \
> ? constant_test_bit((nr), (addr)) \
> : variable_test_bit((nr), (addr)))

Why? In the kernel there's more than 200 uses of __builtin_constant_p(), while
only 6 uses of IS_IMMEDIATE() ...

Thanks,

Ingo