* [PATCH] libstdc++: mark variables as possibly unused @ 2020-08-24 11:26 Krystian Kuźniarek 2020-08-24 11:59 ` Jonathan Wakely 0 siblings, 1 reply; 5+ messages in thread From: Krystian Kuźniarek @ 2020-08-24 11:26 UTC (permalink / raw) To: gcc-patches, libstdc++ Hi, First of all, sorry, I must have sent it as quoted-printable so spaces and tabs are preserved. A description of the problem/bug and how your patch addresses it: I've got a small patch for -Wunused-variable and -Wunused-parameter in system headers. These are needed either for: 1) __glibcxx_assert() that quickly goes away during an early compilation step leaving the warning 2) code that conditionally is removed by preprocessor leaving the warning Testcases: N/A, it's only a warning. ChangeLog: Sorry, contrib/mklog.py didn't quite work for me. For some reason after instruction in line 129: "diff = PatchSet(data)" my "diff" variable is always empty. Bootstrapping and testing: Tested that manually by recompling GCC, unfolding all headers with `#include <stdc++.h>` and compiling what's been included by it. The patch itself: diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 015acef83c4..1fbb2d78d28 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE void clear(memory_order __m = memory_order_seq_cst) noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_consume); __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); @@ -242,7 +243,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE void clear(memory_order __m = memory_order_seq_cst) volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_consume); __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); @@ -416,7 +418,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE void store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); __glibcxx_assert(__b != memory_order_consume); @@ -428,7 +431,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); __glibcxx_assert(__b != memory_order_consume); @@ -439,7 +443,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __int_type load(memory_order __m = memory_order_seq_cst) const noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -449,7 +454,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __int_type load(memory_order __m = memory_order_seq_cst) const volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -475,8 +481,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION compare_exchange_weak(__int_type& __i1, __int_type __i2, memory_order __m1, memory_order __m2) noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) = + __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) = + __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -490,8 +498,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) volatile noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) = + __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) = + __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -520,8 +530,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION compare_exchange_strong(__int_type& __i1, __int_type __i2, memory_order __m1, memory_order __m2) noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) = + __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) = + __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -535,8 +547,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) volatile noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) = + __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) = + __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); @@ -736,7 +750,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__pointer_type __p, memory_order __m = memory_order_seq_cst) noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); @@ -749,7 +764,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__pointer_type __p, memory_order __m = memory_order_seq_cst) volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); __glibcxx_assert(__b != memory_order_consume); @@ -760,7 +776,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __pointer_type load(memory_order __m = memory_order_seq_cst) const noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -770,7 +787,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __pointer_type load(memory_order __m = memory_order_seq_cst) const volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) = + __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -797,8 +815,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) = + __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) = + __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -812,8 +832,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) volatile noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) = + __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) = + __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h index 131718b8b2f..2e21a98409f 100644 --- a/libstdc++-v3/include/ext/new_allocator.h +++ b/libstdc++-v3/include/ext/new_allocator.h @@ -117,7 +117,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // __p is not permitted to be a null pointer. void - deallocate(_Tp* __p, size_type __t) + deallocate(_Tp* __p, size_type __t __attribute__ ((__unused__))) { #if __cpp_aligned_new if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) Best regards, Krystian ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] libstdc++: mark variables as possibly unused 2020-08-24 11:26 [PATCH] libstdc++: mark variables as possibly unused Krystian Kuźniarek @ 2020-08-24 11:59 ` Jonathan Wakely 2020-08-28 6:32 ` Krystian Kuźniarek 0 siblings, 1 reply; 5+ messages in thread From: Jonathan Wakely @ 2020-08-24 11:59 UTC (permalink / raw) To: Krystian Kuźniarek; +Cc: gcc-patches, libstdc++ On 24/08/20 13:26 +0200, Krystian Kuźniarek via Libstdc++ wrote: >Hi, > >First of all, sorry, I must have sent it as quoted-printable so spaces and >tabs are preserved. > >A description of the problem/bug and how your patch addresses it: >I've got a small patch for -Wunused-variable and -Wunused-parameter in >system headers. These are needed either for: >1) __glibcxx_assert() that quickly goes away during an early compilation >step leaving the warning >2) code that conditionally is removed by preprocessor leaving the warning > >Testcases: >N/A, it's only a warning. > >ChangeLog: >Sorry, contrib/mklog.py didn't quite work for me. >For some reason after instruction in line 129: "diff = PatchSet(data)" my >"diff" variable is always empty. > >Bootstrapping and testing: >Tested that manually by recompling GCC, unfolding all headers with >`#include <stdc++.h>` and compiling what's been included by it. > >The patch itself: > >diff --git a/libstdc++-v3/include/bits/atomic_base.h >b/libstdc++-v3/include/bits/atomic_base.h >index 015acef83c4..1fbb2d78d28 100644 >--- a/libstdc++-v3/include/bits/atomic_base.h >+++ b/libstdc++-v3/include/bits/atomic_base.h >@@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE void > clear(memory_order __m = memory_order_seq_cst) noexcept > { >- memory_order __b = __m & __memory_order_mask; >+ memory_order __b __attribute__ ((__unused__)) = Thanks for the patch. Please put the line break before the '=' character i.e. memory_order __b __attribute__ ((__unused__)) = __m & __memory_order_mask; Other than that, the patch looks ok, and simple enough to not need a copyright assignment for GCC. A changelog entry and confirmation the testsuite still runs would be preferred though. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] libstdc++: mark variables as possibly unused 2020-08-24 11:59 ` Jonathan Wakely @ 2020-08-28 6:32 ` Krystian Kuźniarek 2020-08-28 6:40 ` Krystian Kuźniarek 0 siblings, 1 reply; 5+ messages in thread From: Krystian Kuźniarek @ 2020-08-28 6:32 UTC (permalink / raw) To: Jonathan Wakely; +Cc: gcc-patches, libstdc++ Ok, so here it is. New diff: diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h index 015acef83c4..c4a763aae5c 100644 --- a/libstdc++-v3/include/bits/atomic_base.h +++ b/libstdc++-v3/include/bits/atomic_base.h @@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE void clear(memory_order __m = memory_order_seq_cst) noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_consume); __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); @@ -242,7 +243,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE void clear(memory_order __m = memory_order_seq_cst) volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_consume); __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); @@ -416,7 +418,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE void store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); __glibcxx_assert(__b != memory_order_consume); @@ -428,7 +431,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__int_type __i, memory_order __m = memory_order_seq_cst) volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); __glibcxx_assert(__b != memory_order_consume); @@ -439,7 +443,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __int_type load(memory_order __m = memory_order_seq_cst) const noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -449,7 +454,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __int_type load(memory_order __m = memory_order_seq_cst) const volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -475,8 +481,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION compare_exchange_weak(__int_type& __i1, __int_type __i2, memory_order __m1, memory_order __m2) noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) + = __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) + = __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -490,8 +498,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) volatile noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) + = __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) + = __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -520,8 +530,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION compare_exchange_strong(__int_type& __i1, __int_type __i2, memory_order __m1, memory_order __m2) noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) + = __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) + = __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -535,8 +547,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) volatile noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) + = __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) + = __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); @@ -736,7 +750,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__pointer_type __p, memory_order __m = memory_order_seq_cst) noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); @@ -749,7 +764,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION store(__pointer_type __p, memory_order __m = memory_order_seq_cst) volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_acquire); __glibcxx_assert(__b != memory_order_acq_rel); __glibcxx_assert(__b != memory_order_consume); @@ -760,7 +776,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __pointer_type load(memory_order __m = memory_order_seq_cst) const noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -770,7 +787,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_ALWAYS_INLINE __pointer_type load(memory_order __m = memory_order_seq_cst) const volatile noexcept { - memory_order __b = __m & __memory_order_mask; + memory_order __b __attribute__ ((__unused__)) + = __m & __memory_order_mask; __glibcxx_assert(__b != memory_order_release); __glibcxx_assert(__b != memory_order_acq_rel); @@ -797,8 +815,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) + = __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) + = __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); __glibcxx_assert(__b2 <= __b1); @@ -812,8 +832,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION memory_order __m1, memory_order __m2) volatile noexcept { - memory_order __b2 = __m2 & __memory_order_mask; - memory_order __b1 = __m1 & __memory_order_mask; + memory_order __b2 __attribute__ ((__unused__)) + = __m2 & __memory_order_mask; + memory_order __b1 __attribute__ ((__unused__)) + = __m1 & __memory_order_mask; __glibcxx_assert(__b2 != memory_order_release); __glibcxx_assert(__b2 != memory_order_acq_rel); diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h index 131718b8b2f..2e21a98409f 100644 --- a/libstdc++-v3/include/ext/new_allocator.h +++ b/libstdc++-v3/include/ext/new_allocator.h @@ -117,7 +117,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // __p is not permitted to be a null pointer. void - deallocate(_Tp* __p, size_type __t) + deallocate(_Tp* __p, size_type __t __attribute__ ((__unused__))) { #if __cpp_aligned_new if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) Changelog entry: libstdc++-v3/ChangeLog: * include/bits/atomic_base.h: Fix -Wunused-variable in system headers. * include/ext/new_allocator.h: Fix -Wunused-parameter in system headers. Test suite confirmation: All tests pass. Tested on both Manjaro and some Ubuntu 18.04 with gcc10 and gcc8 respectively. On Mon, 24 Aug 2020 at 13:59, Jonathan Wakely <jwakely@redhat.com> wrote: > On 24/08/20 13:26 +0200, Krystian Kuźniarek via Libstdc++ wrote: > >Hi, > > > >First of all, sorry, I must have sent it as quoted-printable so spaces and > >tabs are preserved. > > > >A description of the problem/bug and how your patch addresses it: > >I've got a small patch for -Wunused-variable and -Wunused-parameter in > >system headers. These are needed either for: > >1) __glibcxx_assert() that quickly goes away during an early compilation > >step leaving the warning > >2) code that conditionally is removed by preprocessor leaving the warning > > > >Testcases: > >N/A, it's only a warning. > > > >ChangeLog: > >Sorry, contrib/mklog.py didn't quite work for me. > >For some reason after instruction in line 129: "diff = PatchSet(data)" my > >"diff" variable is always empty. > > > >Bootstrapping and testing: > >Tested that manually by recompling GCC, unfolding all headers with > >`#include <stdc++.h>` and compiling what's been included by it. > > > >The patch itself: > > > >diff --git a/libstdc++-v3/include/bits/atomic_base.h > >b/libstdc++-v3/include/bits/atomic_base.h > >index 015acef83c4..1fbb2d78d28 100644 > >--- a/libstdc++-v3/include/bits/atomic_base.h > >+++ b/libstdc++-v3/include/bits/atomic_base.h > >@@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > > _GLIBCXX_ALWAYS_INLINE void > > clear(memory_order __m = memory_order_seq_cst) noexcept > > { > >- memory_order __b = __m & __memory_order_mask; > >+ memory_order __b __attribute__ ((__unused__)) = > > Thanks for the patch. > > Please put the line break before the '=' character i.e. > > memory_order __b __attribute__ ((__unused__)) > = __m & __memory_order_mask; > > Other than that, the patch looks ok, and simple enough to not need a > copyright assignment for GCC. > > A changelog entry and confirmation the testsuite still runs would be > preferred though. > > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] libstdc++: mark variables as possibly unused 2020-08-28 6:32 ` Krystian Kuźniarek @ 2020-08-28 6:40 ` Krystian Kuźniarek 2020-09-10 15:22 ` Jonathan Wakely 0 siblings, 1 reply; 5+ messages in thread From: Krystian Kuźniarek @ 2020-08-28 6:40 UTC (permalink / raw) To: Jonathan Wakely; +Cc: gcc-patches, libstdc++ >Test suite confirmation: >All tests pass. Tested on both Manjaro and some Ubuntu 18.04 with gcc10 and gcc8 respectively. Jonathan, one more thing. I hope it's what you asked for cause all I did was: make bootstrap make check On Fri, 28 Aug 2020 at 08:32, Krystian Kuźniarek < krystian.kuzniarek@gmail.com> wrote: > Ok, so here it is. > New diff: > > diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h > index 015acef83c4..c4a763aae5c 100644 > --- a/libstdc++-v3/include/bits/atomic_base.h > +++ b/libstdc++-v3/include/bits/atomic_base.h > @@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE void > clear(memory_order __m = memory_order_seq_cst) noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_consume); > __glibcxx_assert(__b != memory_order_acquire); > __glibcxx_assert(__b != memory_order_acq_rel); > @@ -242,7 +243,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE void > clear(memory_order __m = memory_order_seq_cst) volatile noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_consume); > __glibcxx_assert(__b != memory_order_acquire); > __glibcxx_assert(__b != memory_order_acq_rel); > @@ -416,7 +418,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE void > store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_acquire); > __glibcxx_assert(__b != memory_order_acq_rel); > __glibcxx_assert(__b != memory_order_consume); > @@ -428,7 +431,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > store(__int_type __i, > memory_order __m = memory_order_seq_cst) volatile noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_acquire); > __glibcxx_assert(__b != memory_order_acq_rel); > __glibcxx_assert(__b != memory_order_consume); > @@ -439,7 +443,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE __int_type > load(memory_order __m = memory_order_seq_cst) const noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_release); > __glibcxx_assert(__b != memory_order_acq_rel); > > @@ -449,7 +454,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE __int_type > load(memory_order __m = memory_order_seq_cst) const volatile noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_release); > __glibcxx_assert(__b != memory_order_acq_rel); > > @@ -475,8 +481,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > compare_exchange_weak(__int_type& __i1, __int_type __i2, > memory_order __m1, memory_order __m2) noexcept > { > - memory_order __b2 = __m2 & __memory_order_mask; > - memory_order __b1 = __m1 & __memory_order_mask; > + memory_order __b2 __attribute__ ((__unused__)) > + = __m2 & __memory_order_mask; > + memory_order __b1 __attribute__ ((__unused__)) > + = __m1 & __memory_order_mask; > __glibcxx_assert(__b2 != memory_order_release); > __glibcxx_assert(__b2 != memory_order_acq_rel); > __glibcxx_assert(__b2 <= __b1); > @@ -490,8 +498,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > memory_order __m1, > memory_order __m2) volatile noexcept > { > - memory_order __b2 = __m2 & __memory_order_mask; > - memory_order __b1 = __m1 & __memory_order_mask; > + memory_order __b2 __attribute__ ((__unused__)) > + = __m2 & __memory_order_mask; > + memory_order __b1 __attribute__ ((__unused__)) > + = __m1 & __memory_order_mask; > __glibcxx_assert(__b2 != memory_order_release); > __glibcxx_assert(__b2 != memory_order_acq_rel); > __glibcxx_assert(__b2 <= __b1); > @@ -520,8 +530,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > compare_exchange_strong(__int_type& __i1, __int_type __i2, > memory_order __m1, memory_order __m2) noexcept > { > - memory_order __b2 = __m2 & __memory_order_mask; > - memory_order __b1 = __m1 & __memory_order_mask; > + memory_order __b2 __attribute__ ((__unused__)) > + = __m2 & __memory_order_mask; > + memory_order __b1 __attribute__ ((__unused__)) > + = __m1 & __memory_order_mask; > __glibcxx_assert(__b2 != memory_order_release); > __glibcxx_assert(__b2 != memory_order_acq_rel); > __glibcxx_assert(__b2 <= __b1); > @@ -535,8 +547,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > memory_order __m1, > memory_order __m2) volatile noexcept > { > - memory_order __b2 = __m2 & __memory_order_mask; > - memory_order __b1 = __m1 & __memory_order_mask; > + memory_order __b2 __attribute__ ((__unused__)) > + = __m2 & __memory_order_mask; > + memory_order __b1 __attribute__ ((__unused__)) > + = __m1 & __memory_order_mask; > > __glibcxx_assert(__b2 != memory_order_release); > __glibcxx_assert(__b2 != memory_order_acq_rel); > @@ -736,7 +750,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > store(__pointer_type __p, > memory_order __m = memory_order_seq_cst) noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > > __glibcxx_assert(__b != memory_order_acquire); > __glibcxx_assert(__b != memory_order_acq_rel); > @@ -749,7 +764,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > store(__pointer_type __p, > memory_order __m = memory_order_seq_cst) volatile noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_acquire); > __glibcxx_assert(__b != memory_order_acq_rel); > __glibcxx_assert(__b != memory_order_consume); > @@ -760,7 +776,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE __pointer_type > load(memory_order __m = memory_order_seq_cst) const noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_release); > __glibcxx_assert(__b != memory_order_acq_rel); > > @@ -770,7 +787,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > _GLIBCXX_ALWAYS_INLINE __pointer_type > load(memory_order __m = memory_order_seq_cst) const volatile noexcept > { > - memory_order __b = __m & __memory_order_mask; > + memory_order __b __attribute__ ((__unused__)) > + = __m & __memory_order_mask; > __glibcxx_assert(__b != memory_order_release); > __glibcxx_assert(__b != memory_order_acq_rel); > > @@ -797,8 +815,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > memory_order __m1, > memory_order __m2) noexcept > { > - memory_order __b2 = __m2 & __memory_order_mask; > - memory_order __b1 = __m1 & __memory_order_mask; > + memory_order __b2 __attribute__ ((__unused__)) > + = __m2 & __memory_order_mask; > + memory_order __b1 __attribute__ ((__unused__)) > + = __m1 & __memory_order_mask; > __glibcxx_assert(__b2 != memory_order_release); > __glibcxx_assert(__b2 != memory_order_acq_rel); > __glibcxx_assert(__b2 <= __b1); > @@ -812,8 +832,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > memory_order __m1, > memory_order __m2) volatile noexcept > { > - memory_order __b2 = __m2 & __memory_order_mask; > - memory_order __b1 = __m1 & __memory_order_mask; > + memory_order __b2 __attribute__ ((__unused__)) > + = __m2 & __memory_order_mask; > + memory_order __b1 __attribute__ ((__unused__)) > + = __m1 & __memory_order_mask; > > __glibcxx_assert(__b2 != memory_order_release); > __glibcxx_assert(__b2 != memory_order_acq_rel); > diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h > index 131718b8b2f..2e21a98409f 100644 > --- a/libstdc++-v3/include/ext/new_allocator.h > +++ b/libstdc++-v3/include/ext/new_allocator.h > @@ -117,7 +117,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > > // __p is not permitted to be a null pointer. > void > - deallocate(_Tp* __p, size_type __t) > + deallocate(_Tp* __p, size_type __t __attribute__ ((__unused__))) > { > #if __cpp_aligned_new > if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) > > > Changelog entry: > > libstdc++-v3/ChangeLog: > > * include/bits/atomic_base.h: Fix -Wunused-variable > in system headers. > * include/ext/new_allocator.h: Fix -Wunused-parameter > in system headers. > > > Test suite confirmation: > All tests pass. Tested on both Manjaro and some Ubuntu 18.04 with gcc10 > and gcc8 respectively. > > On Mon, 24 Aug 2020 at 13:59, Jonathan Wakely <jwakely@redhat.com> wrote: > >> On 24/08/20 13:26 +0200, Krystian Kuźniarek via Libstdc++ wrote: >> >Hi, >> > >> >First of all, sorry, I must have sent it as quoted-printable so spaces >> and >> >tabs are preserved. >> > >> >A description of the problem/bug and how your patch addresses it: >> >I've got a small patch for -Wunused-variable and -Wunused-parameter in >> >system headers. These are needed either for: >> >1) __glibcxx_assert() that quickly goes away during an early compilation >> >step leaving the warning >> >2) code that conditionally is removed by preprocessor leaving the warning >> > >> >Testcases: >> >N/A, it's only a warning. >> > >> >ChangeLog: >> >Sorry, contrib/mklog.py didn't quite work for me. >> >For some reason after instruction in line 129: "diff = PatchSet(data)" my >> >"diff" variable is always empty. >> > >> >Bootstrapping and testing: >> >Tested that manually by recompling GCC, unfolding all headers with >> >`#include <stdc++.h>` and compiling what's been included by it. >> > >> >The patch itself: >> > >> >diff --git a/libstdc++-v3/include/bits/atomic_base.h >> >b/libstdc++-v3/include/bits/atomic_base.h >> >index 015acef83c4..1fbb2d78d28 100644 >> >--- a/libstdc++-v3/include/bits/atomic_base.h >> >+++ b/libstdc++-v3/include/bits/atomic_base.h >> >@@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> > _GLIBCXX_ALWAYS_INLINE void >> > clear(memory_order __m = memory_order_seq_cst) noexcept >> > { >> >- memory_order __b = __m & __memory_order_mask; >> >+ memory_order __b __attribute__ ((__unused__)) = >> >> Thanks for the patch. >> >> Please put the line break before the '=' character i.e. >> >> memory_order __b __attribute__ ((__unused__)) >> = __m & __memory_order_mask; >> >> Other than that, the patch looks ok, and simple enough to not need a >> copyright assignment for GCC. >> >> A changelog entry and confirmation the testsuite still runs would be >> preferred though. >> >> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] libstdc++: mark variables as possibly unused 2020-08-28 6:40 ` Krystian Kuźniarek @ 2020-09-10 15:22 ` Jonathan Wakely 0 siblings, 0 replies; 5+ messages in thread From: Jonathan Wakely @ 2020-09-10 15:22 UTC (permalink / raw) To: Krystian Kuźniarek; +Cc: libstdc++, gcc-patches On 28/08/20 08:40 +0200, Krystian Kuźniarek via Libstdc++ wrote: >>Test suite confirmation: >>All tests pass. Tested on both Manjaro and some Ubuntu 18.04 with gcc10 >and gcc8 respectively. Thanks. >Jonathan, one more thing. I hope it's what you asked for cause all I did >was: >make bootstrap There has been no need to say "make bootstrap" for 10 years or so, just "make" does a bootstrap. >make check That runs all the tests for the entire compiler. What we're interested in is whether there are any (new) failures caused by your patch, specifically in the libstdc++ testsuite. N.B. This patch is less relevant now, because these variables are always used, because the __glibcxx_assert macro now expands to a compile-time test (as long as the compiler supports __builtin_is_constant_evaluated(), which GCC does). But adding the attributes anyway is harmless, so I'll go ahead and apply this patch. Thanks again. >On Fri, 28 Aug 2020 at 08:32, Krystian Kuźniarek < >krystian.kuzniarek@gmail.com> wrote: > >> Ok, so here it is. >> New diff: >> >> diff --git a/libstdc++-v3/include/bits/atomic_base.h b/libstdc++-v3/include/bits/atomic_base.h >> index 015acef83c4..c4a763aae5c 100644 >> --- a/libstdc++-v3/include/bits/atomic_base.h >> +++ b/libstdc++-v3/include/bits/atomic_base.h >> @@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE void >> clear(memory_order __m = memory_order_seq_cst) noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_consume); >> __glibcxx_assert(__b != memory_order_acquire); >> __glibcxx_assert(__b != memory_order_acq_rel); >> @@ -242,7 +243,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE void >> clear(memory_order __m = memory_order_seq_cst) volatile noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_consume); >> __glibcxx_assert(__b != memory_order_acquire); >> __glibcxx_assert(__b != memory_order_acq_rel); >> @@ -416,7 +418,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE void >> store(__int_type __i, memory_order __m = memory_order_seq_cst) noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_acquire); >> __glibcxx_assert(__b != memory_order_acq_rel); >> __glibcxx_assert(__b != memory_order_consume); >> @@ -428,7 +431,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> store(__int_type __i, >> memory_order __m = memory_order_seq_cst) volatile noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_acquire); >> __glibcxx_assert(__b != memory_order_acq_rel); >> __glibcxx_assert(__b != memory_order_consume); >> @@ -439,7 +443,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE __int_type >> load(memory_order __m = memory_order_seq_cst) const noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_release); >> __glibcxx_assert(__b != memory_order_acq_rel); >> >> @@ -449,7 +454,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE __int_type >> load(memory_order __m = memory_order_seq_cst) const volatile noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_release); >> __glibcxx_assert(__b != memory_order_acq_rel); >> >> @@ -475,8 +481,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> compare_exchange_weak(__int_type& __i1, __int_type __i2, >> memory_order __m1, memory_order __m2) noexcept >> { >> - memory_order __b2 = __m2 & __memory_order_mask; >> - memory_order __b1 = __m1 & __memory_order_mask; >> + memory_order __b2 __attribute__ ((__unused__)) >> + = __m2 & __memory_order_mask; >> + memory_order __b1 __attribute__ ((__unused__)) >> + = __m1 & __memory_order_mask; >> __glibcxx_assert(__b2 != memory_order_release); >> __glibcxx_assert(__b2 != memory_order_acq_rel); >> __glibcxx_assert(__b2 <= __b1); >> @@ -490,8 +498,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> memory_order __m1, >> memory_order __m2) volatile noexcept >> { >> - memory_order __b2 = __m2 & __memory_order_mask; >> - memory_order __b1 = __m1 & __memory_order_mask; >> + memory_order __b2 __attribute__ ((__unused__)) >> + = __m2 & __memory_order_mask; >> + memory_order __b1 __attribute__ ((__unused__)) >> + = __m1 & __memory_order_mask; >> __glibcxx_assert(__b2 != memory_order_release); >> __glibcxx_assert(__b2 != memory_order_acq_rel); >> __glibcxx_assert(__b2 <= __b1); >> @@ -520,8 +530,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> compare_exchange_strong(__int_type& __i1, __int_type __i2, >> memory_order __m1, memory_order __m2) noexcept >> { >> - memory_order __b2 = __m2 & __memory_order_mask; >> - memory_order __b1 = __m1 & __memory_order_mask; >> + memory_order __b2 __attribute__ ((__unused__)) >> + = __m2 & __memory_order_mask; >> + memory_order __b1 __attribute__ ((__unused__)) >> + = __m1 & __memory_order_mask; >> __glibcxx_assert(__b2 != memory_order_release); >> __glibcxx_assert(__b2 != memory_order_acq_rel); >> __glibcxx_assert(__b2 <= __b1); >> @@ -535,8 +547,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> memory_order __m1, >> memory_order __m2) volatile noexcept >> { >> - memory_order __b2 = __m2 & __memory_order_mask; >> - memory_order __b1 = __m1 & __memory_order_mask; >> + memory_order __b2 __attribute__ ((__unused__)) >> + = __m2 & __memory_order_mask; >> + memory_order __b1 __attribute__ ((__unused__)) >> + = __m1 & __memory_order_mask; >> >> __glibcxx_assert(__b2 != memory_order_release); >> __glibcxx_assert(__b2 != memory_order_acq_rel); >> @@ -736,7 +750,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> store(__pointer_type __p, >> memory_order __m = memory_order_seq_cst) noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> >> __glibcxx_assert(__b != memory_order_acquire); >> __glibcxx_assert(__b != memory_order_acq_rel); >> @@ -749,7 +764,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> store(__pointer_type __p, >> memory_order __m = memory_order_seq_cst) volatile noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_acquire); >> __glibcxx_assert(__b != memory_order_acq_rel); >> __glibcxx_assert(__b != memory_order_consume); >> @@ -760,7 +776,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE __pointer_type >> load(memory_order __m = memory_order_seq_cst) const noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_release); >> __glibcxx_assert(__b != memory_order_acq_rel); >> >> @@ -770,7 +787,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> _GLIBCXX_ALWAYS_INLINE __pointer_type >> load(memory_order __m = memory_order_seq_cst) const volatile noexcept >> { >> - memory_order __b = __m & __memory_order_mask; >> + memory_order __b __attribute__ ((__unused__)) >> + = __m & __memory_order_mask; >> __glibcxx_assert(__b != memory_order_release); >> __glibcxx_assert(__b != memory_order_acq_rel); >> >> @@ -797,8 +815,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> memory_order __m1, >> memory_order __m2) noexcept >> { >> - memory_order __b2 = __m2 & __memory_order_mask; >> - memory_order __b1 = __m1 & __memory_order_mask; >> + memory_order __b2 __attribute__ ((__unused__)) >> + = __m2 & __memory_order_mask; >> + memory_order __b1 __attribute__ ((__unused__)) >> + = __m1 & __memory_order_mask; >> __glibcxx_assert(__b2 != memory_order_release); >> __glibcxx_assert(__b2 != memory_order_acq_rel); >> __glibcxx_assert(__b2 <= __b1); >> @@ -812,8 +832,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> memory_order __m1, >> memory_order __m2) volatile noexcept >> { >> - memory_order __b2 = __m2 & __memory_order_mask; >> - memory_order __b1 = __m1 & __memory_order_mask; >> + memory_order __b2 __attribute__ ((__unused__)) >> + = __m2 & __memory_order_mask; >> + memory_order __b1 __attribute__ ((__unused__)) >> + = __m1 & __memory_order_mask; >> >> __glibcxx_assert(__b2 != memory_order_release); >> __glibcxx_assert(__b2 != memory_order_acq_rel); >> diff --git a/libstdc++-v3/include/ext/new_allocator.h b/libstdc++-v3/include/ext/new_allocator.h >> index 131718b8b2f..2e21a98409f 100644 >> --- a/libstdc++-v3/include/ext/new_allocator.h >> +++ b/libstdc++-v3/include/ext/new_allocator.h >> @@ -117,7 +117,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> >> // __p is not permitted to be a null pointer. >> void >> - deallocate(_Tp* __p, size_type __t) >> + deallocate(_Tp* __p, size_type __t __attribute__ ((__unused__))) >> { >> #if __cpp_aligned_new >> if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) >> >> >> Changelog entry: >> >> libstdc++-v3/ChangeLog: >> >> * include/bits/atomic_base.h: Fix -Wunused-variable >> in system headers. >> * include/ext/new_allocator.h: Fix -Wunused-parameter >> in system headers. >> >> >> Test suite confirmation: >> All tests pass. Tested on both Manjaro and some Ubuntu 18.04 with gcc10 >> and gcc8 respectively. >> >> On Mon, 24 Aug 2020 at 13:59, Jonathan Wakely <jwakely@redhat.com> wrote: >> >>> On 24/08/20 13:26 +0200, Krystian Kuźniarek via Libstdc++ wrote: >>> >Hi, >>> > >>> >First of all, sorry, I must have sent it as quoted-printable so spaces >>> and >>> >tabs are preserved. >>> > >>> >A description of the problem/bug and how your patch addresses it: >>> >I've got a small patch for -Wunused-variable and -Wunused-parameter in >>> >system headers. These are needed either for: >>> >1) __glibcxx_assert() that quickly goes away during an early compilation >>> >step leaving the warning >>> >2) code that conditionally is removed by preprocessor leaving the warning >>> > >>> >Testcases: >>> >N/A, it's only a warning. >>> > >>> >ChangeLog: >>> >Sorry, contrib/mklog.py didn't quite work for me. >>> >For some reason after instruction in line 129: "diff = PatchSet(data)" my >>> >"diff" variable is always empty. >>> > >>> >Bootstrapping and testing: >>> >Tested that manually by recompling GCC, unfolding all headers with >>> >`#include <stdc++.h>` and compiling what's been included by it. >>> > >>> >The patch itself: >>> > >>> >diff --git a/libstdc++-v3/include/bits/atomic_base.h >>> >b/libstdc++-v3/include/bits/atomic_base.h >>> >index 015acef83c4..1fbb2d78d28 100644 >>> >--- a/libstdc++-v3/include/bits/atomic_base.h >>> >+++ b/libstdc++-v3/include/bits/atomic_base.h >>> >@@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >>> > _GLIBCXX_ALWAYS_INLINE void >>> > clear(memory_order __m = memory_order_seq_cst) noexcept >>> > { >>> >- memory_order __b = __m & __memory_order_mask; >>> >+ memory_order __b __attribute__ ((__unused__)) = >>> >>> Thanks for the patch. >>> >>> Please put the line break before the '=' character i.e. >>> >>> memory_order __b __attribute__ ((__unused__)) >>> = __m & __memory_order_mask; >>> >>> Other than that, the patch looks ok, and simple enough to not need a >>> copyright assignment for GCC. >>> >>> A changelog entry and confirmation the testsuite still runs would be >>> preferred though. >>> >>> > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-09-10 15:22 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-08-24 11:26 [PATCH] libstdc++: mark variables as possibly unused Krystian Kuźniarek 2020-08-24 11:59 ` Jonathan Wakely 2020-08-28 6:32 ` Krystian Kuźniarek 2020-08-28 6:40 ` Krystian Kuźniarek 2020-09-10 15:22 ` Jonathan Wakely
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).