Message ID | 1353445507-7233-6-git-send-email-daniel.santos@pobox.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Tue, Nov 20, 2012 at 03:05:04PM -0600, danielfsantos@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.santos@pobox.com> Acked-by: Borislav Petkov <bp@alien8.de>
diff --git a/include/linux/bug.h b/include/linux/bug.h index 1b2465d..98bdbb3d 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])); \ + if (__cond) __build_bug_on_failed = 1; \ } while(0) #endif
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.santos@pobox.com> --- include/linux/bug.h | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)