s390/atomic: circumvent gcc 10 build regression
Circumvent the following gcc 10 allyesconfig build regression:
CC drivers/leds/trigger/ledtrig-cpu.o
In file included from ./arch/s390/include/asm/bitops.h:39,
from ./include/linux/bitops.h:29,
from ./include/linux/kernel.h:12,
from drivers/leds/trigger/ledtrig-cpu.c:18:
./arch/s390/include/asm/atomic_ops.h: In function 'ledtrig_cpu':
./arch/s390/include/asm/atomic_ops.h:46:2: warning: 'asm' operand 1 probably does not match constraints
46 | asm volatile( \
| ^~~
./arch/s390/include/asm/atomic_ops.h:53:2: note: in expansion of macro '__ATOMIC_CONST_OP'
53 | __ATOMIC_CONST_OP(op_name, op_type, op_string, "\n") \
| ^~~~~~~~~~~~~~~~~
./arch/s390/include/asm/atomic_ops.h:56:1: note: in expansion of macro '__ATOMIC_CONST_OPS'
56 | __ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
| ^~~~~~~~~~~~~~~~~~
./arch/s390/include/asm/atomic_ops.h:46:2: error: impossible constraint in 'asm'
46 | asm volatile( \
| ^~~
./arch/s390/include/asm/atomic_ops.h:53:2: note: in expansion of macro '__ATOMIC_CONST_OP'
53 | __ATOMIC_CONST_OP(op_name, op_type, op_string, "\n") \
| ^~~~~~~~~~~~~~~~~
./arch/s390/include/asm/atomic_ops.h:56:1: note: in expansion of macro '__ATOMIC_CONST_OPS'
56 | __ATOMIC_CONST_OPS(__atomic_add_const, int, "asi")
| ^~~~~~~~~~~~~~~~~~
scripts/Makefile.build:280: recipe for target 'drivers/leds/trigger/ledtrig-cpu.o' failed
By swapping conditions as proposed here:
https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549318.html
Suggested-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
parent
00e4db5125
commit
f0cbd3b83e
@ -45,7 +45,11 @@ static inline int atomic_fetch_add(int i, atomic_t *v)
|
||||
static inline void atomic_add(int i, atomic_t *v)
|
||||
{
|
||||
#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
|
||||
if (__builtin_constant_p(i) && (i > -129) && (i < 128)) {
|
||||
/*
|
||||
* Order of conditions is important to circumvent gcc 10 bug:
|
||||
* https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549318.html
|
||||
*/
|
||||
if ((i > -129) && (i < 128) && __builtin_constant_p(i)) {
|
||||
__atomic_add_const(i, &v->counter);
|
||||
return;
|
||||
}
|
||||
@ -112,7 +116,11 @@ static inline s64 atomic64_fetch_add(s64 i, atomic64_t *v)
|
||||
static inline void atomic64_add(s64 i, atomic64_t *v)
|
||||
{
|
||||
#ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
|
||||
if (__builtin_constant_p(i) && (i > -129) && (i < 128)) {
|
||||
/*
|
||||
* Order of conditions is important to circumvent gcc 10 bug:
|
||||
* https://gcc.gnu.org/pipermail/gcc-patches/2020-July/549318.html
|
||||
*/
|
||||
if ((i > -129) && (i < 128) && __builtin_constant_p(i)) {
|
||||
__atomic64_add_const(i, (long *)&v->counter);
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user