]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commitfba614c09d893112702ec95436e8d6ce1ab5832c
tree83bd8824ec63c868493fc18135032896f2ce98ec
parent0f170159ed1e018e265bc6445505ad06c7ff6d88
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