Message ID | 20180510143618.23673-1-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 05/10/2018 07:36 AM, Peter Maydell wrote: > Some versions of gcc produce a spurious warning if the result of > __atomic_compare_echange_n() is not used and the type involved > is a signed 8 bit value: > error: value computed is not used [-Werror=unused-value] > This has been seen on at least > gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 > > Work around this by using an explicit cast to void to indicate > that we don't care about the return value. > > We don't currently use our atomic_cmpxchg() macro on any signed > 8 bit types, but the upcoming support for the Arm v8.1-Atomics > will require it. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > Sending out my workaround as an actual patch. If this is OK I'll > put in via target-arm.next as it's a dependency for the v8.1-atomics > series. > > include/qemu/atomic.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 10 May 2018 at 15:37, Richard Henderson <rth@twiddle.net> wrote: > On 05/10/2018 07:36 AM, Peter Maydell wrote: >> Some versions of gcc produce a spurious warning if the result of >> __atomic_compare_echange_n() is not used and the type involved >> is a signed 8 bit value: >> error: value computed is not used [-Werror=unused-value] >> This has been seen on at least >> gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 >> >> Work around this by using an explicit cast to void to indicate >> that we don't care about the return value. >> >> We don't currently use our atomic_cmpxchg() macro on any signed >> 8 bit types, but the upcoming support for the Arm v8.1-Atomics >> will require it. >> >> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> >> --- >> Sending out my workaround as an actual patch. If this is OK I'll >> put in via target-arm.next as it's a dependency for the v8.1-atomics >> series. >> >> include/qemu/atomic.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Thanks. Do we care about trying to follow up on the gcc side to find out if this is a definitely-fixed bug? -- PMM
On 05/10/2018 07:38 AM, Peter Maydell wrote: > Thanks. Do we care about trying to follow up on the gcc side > to find out if this is a definitely-fixed bug? Given I did not see the problem with gcc 6 as shipped with debian 9, I'm not overly inclined to dig further than that. r~
On 05/10/2018 11:36 AM, Peter Maydell wrote: > Some versions of gcc produce a spurious warning if the result of > __atomic_compare_echange_n() is not used and the type involved > is a signed 8 bit value: > error: value computed is not used [-Werror=unused-value] > This has been seen on at least > gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 > > Work around this by using an explicit cast to void to indicate > that we don't care about the return value. > > We don't currently use our atomic_cmpxchg() macro on any signed > 8 bit types, but the upcoming support for the Arm v8.1-Atomics > will require it. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > Sending out my workaround as an actual patch. If this is OK I'll > put in via target-arm.next as it's a dependency for the v8.1-atomics > series. > > include/qemu/atomic.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h > index d73c9e14d7..9ed39effd3 100644 > --- a/include/qemu/atomic.h > +++ b/include/qemu/atomic.h > @@ -187,7 +187,7 @@ > /* Returns the eventual value, failed or not */ > #define atomic_cmpxchg__nocheck(ptr, old, new) ({ \ > typeof_strip_qual(*ptr) _old = (old); \ > - __atomic_compare_exchange_n(ptr, &_old, new, false, \ > + (void)__atomic_compare_exchange_n(ptr, &_old, new, false, \ > __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); \ > _old; \ > }) >
On 10/05/2018 16:36, Peter Maydell wrote: > Some versions of gcc produce a spurious warning if the result of > __atomic_compare_echange_n() is not used and the type involved > is a signed 8 bit value: > error: value computed is not used [-Werror=unused-value] > This has been seen on at least > gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 > > Work around this by using an explicit cast to void to indicate > that we don't care about the return value. > > We don't currently use our atomic_cmpxchg() macro on any signed > 8 bit types, but the upcoming support for the Arm v8.1-Atomics > will require it. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > Sending out my workaround as an actual patch. If this is OK I'll > put in via target-arm.next as it's a dependency for the v8.1-atomics > series. Yes, please go ahead! Paolo > include/qemu/atomic.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h > index d73c9e14d7..9ed39effd3 100644 > --- a/include/qemu/atomic.h > +++ b/include/qemu/atomic.h > @@ -187,7 +187,7 @@ > /* Returns the eventual value, failed or not */ > #define atomic_cmpxchg__nocheck(ptr, old, new) ({ \ > typeof_strip_qual(*ptr) _old = (old); \ > - __atomic_compare_exchange_n(ptr, &_old, new, false, \ > + (void)__atomic_compare_exchange_n(ptr, &_old, new, false, \ > __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); \ > _old; \ > }) >
diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index d73c9e14d7..9ed39effd3 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -187,7 +187,7 @@ /* Returns the eventual value, failed or not */ #define atomic_cmpxchg__nocheck(ptr, old, new) ({ \ typeof_strip_qual(*ptr) _old = (old); \ - __atomic_compare_exchange_n(ptr, &_old, new, false, \ + (void)__atomic_compare_exchange_n(ptr, &_old, new, false, \ __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); \ _old; \ })
Some versions of gcc produce a spurious warning if the result of __atomic_compare_echange_n() is not used and the type involved is a signed 8 bit value: error: value computed is not used [-Werror=unused-value] This has been seen on at least gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609 Work around this by using an explicit cast to void to indicate that we don't care about the return value. We don't currently use our atomic_cmpxchg() macro on any signed 8 bit types, but the upcoming support for the Arm v8.1-Atomics will require it. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- Sending out my workaround as an actual patch. If this is OK I'll put in via target-arm.next as it's a dependency for the v8.1-atomics series. include/qemu/atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)