]> 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)
commit8a4a2655aa11e036a20cfe358d24a360c9a29f9a
tree83bd8824ec63c868493fc18135032896f2ce98ec
parent8067242c05d25e9fa0ba21ad02493fc31aa3d061
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