public inbox for libstdc++@gcc.gnu.org
 help / color / mirror / Atom feed
* [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).