• A
    x86/fpu/math-emu: Avoid bogus -Wint-in-bool-context warning · 5623452a
    Arnd Bergmann 提交于
    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: NArnd 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: NIngo Molnar <mingo@kernel.org>
    5623452a
fpu_emu.h 7.1 KB