x86/fpu/math-emu: Avoid bogus -Wint-in-bool-context warning
authorArnd Bergmann <arnd@arndb.de>
Wed, 19 Jul 2017 12:53:01 +0000 (14:53 +0200)
committerIngo Molnar <mingo@kernel.org>
Thu, 20 Jul 2017 08:46:24 +0000 (10:46 +0200)
commit5623452a0eaec1d44cc9f0770444a48847c9953f
tree83bd8824ec63c868493fc18135032896f2ce98ec
parent75e2f0a6b16141cb347f442033ec907380d4d66e
x86/fpu/math-emu: Avoid bogus -Wint-in-bool-context warning

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: Arnd 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=81484
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/math-emu/fpu_emu.h