On Tue, Nov 13, 2012 at 04:13:38PM -0600, danielfsan...@att.net wrote:
> When calling BUILD_BUG_ON in an optimized build using gcc 4.3 and later,
> the condition will be evaulated twice, possibily with side-effects.
> This patch eliminates that error.
> 
> Signed-off-by: Daniel Santos <daniel.san...@pobox.com>
> ---
>  include/linux/bug.h |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/bug.h b/include/linux/bug.h
> index 1b2465d..ccd44ce 100644
> --- a/include/linux/bug.h
> +++ b/include/linux/bug.h
> @@ -58,8 +58,9 @@ struct pt_regs;
>  extern int __build_bug_on_failed;
>  #define BUILD_BUG_ON(condition)                                      \
>       do {                                                    \
> -             ((void)sizeof(char[1 - 2*!!(condition)]));      \
> -             if (condition) __build_bug_on_failed = 1;       \
> +             bool __cond = !!(condition);                    \
> +             ((void)sizeof(char[1 - 2*!!(__cond)]));         \

No need for the !!(__cond) here because you've done it in the line
above. IOW,

        bool __cond = !!(condition);
        ((void)sizeof(char[1 - 2 * __cond]));

which is even a bit more readable, as a matter of fact.

> +             if (__cond) __build_bug_on_failed = 1;          \
>       } while(0)
>  #endif

Thanks.

-- 
Regards/Gruss,
Boris.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to