[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <tip-5623452a0eaec1d44cc9f0770444a48847c9953f@git.kernel.org>
Date: Thu, 20 Jul 2017 03:25:30 -0700
From: tip-bot for Arnd Bergmann <tipbot@...or.com>
To: linux-tip-commits@...r.kernel.org
Cc: arnd@...db.de, hpa@...or.com, torvalds@...ux-foundation.org,
mingo@...nel.org, billm@...bpc.org.au,
linux-kernel@...r.kernel.org, peterz@...radead.org,
tglx@...utronix.de
Subject: [tip:x86/urgent] x86/fpu/math-emu: Avoid bogus
-Wint-in-bool-context warning
Commit-ID: 5623452a0eaec1d44cc9f0770444a48847c9953f
Gitweb: http://git.kernel.org/tip/5623452a0eaec1d44cc9f0770444a48847c9953f
Author: Arnd Bergmann <arnd@...db.de>
AuthorDate: Wed, 19 Jul 2017 14:53:01 +0200
Committer: Ingo Molnar <mingo@...nel.org>
CommitDate: Thu, 20 Jul 2017 10:46:24 +0200
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@...db.de>
Cc: Bill Metzenthen <billm@...bpc.org.au>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Peter Zijlstra <peterz@...radead.org>
Cc: Thomas Gleixner <tglx@...utronix.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@...nel.org>
---
arch/x86/math-emu/fpu_emu.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/math-emu/fpu_emu.h b/arch/x86/math-emu/fpu_emu.h
index afbc4d8..c9c320d 100644
--- a/arch/x86/math-emu/fpu_emu.h
+++ b/arch/x86/math-emu/fpu_emu.h
@@ -157,7 +157,7 @@ extern u_char const data_sizes_16[32];
#define signbyte(a) (((u_char *)(a))[9])
#define getsign(a) (signbyte(a) & 0x80)
-#define setsign(a,b) { if (b) signbyte(a) |= 0x80; else signbyte(a) &= 0x7f; }
+#define setsign(a,b) { if ((b) != 0) signbyte(a) |= 0x80; else signbyte(a) &= 0x7f; }
#define copysign(a,b) { if (getsign(a)) signbyte(b) |= 0x80; \
else signbyte(b) &= 0x7f; }
#define changesign(a) { signbyte(a) ^= 0x80; }
Powered by blists - more mailing lists