• Arnd Bergmann's avatar
    x86/fpu/math-emu: Avoid bogus -Wint-in-bool-context warning · 5623452a
    Arnd Bergmann authored
    gcc-7.1.1 produces this warning:
    
      arch/x86/math-emu/reg_add_sub.c: In function 'FPU_add':
      arch/x86/math-emu/reg_add_sub.c:80:48: error: ?: using integer constants in boolean context [-Werror=int-in-bool-context]
    
    This appears to be a bug in gcc-7.1.1, and I have reported it as
    PR81484. The compiler suggests that code written as
    
    	if (a & b ? c : d)
    
    is usually incorrect and should have been
    
    	if (a & (b ? c : d))
    
    However, in this case, we correctly write
    
    	if ((a & b) ? c : d)
    
    and should not get a warning for it.
    
    This adds a dirty workaround for the problem, adding a comparison with
    zero inside of the macro. The warning is currently disabled in the kernel,
    so we may decide not to apply the patch, and instead wait for future gcc
    releases to fix the problem. On the other hand, it seems to be the
    only instance of this particular problem.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Cc: Bill Metzenthen <billm@melbpc.org.au>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170719125310.2487451-4-arnd@arndb.de
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81484Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    5623452a
fpu_emu.h 7.12 KB