[libcxx-commits] [libcxx] [libc++][test-suite][NFC] Refactor `unused_variables` tests (PR #223234)
Hristo Hristov via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Sep 14 05:28:45 PDT 2026
https://github.com/H-G-Hristov updated https://github.com/llvm/llvm-project/pull/223234
>From f19ee70bb02e192e1685df60572d3e80f2dc3651 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 14:29:18 +0300
Subject: [PATCH 1/9] [libc++][test-suite][NFC] Move `unused_variables` tests
`diagnostics` is a section in The Standard. According to libc++ test-suite organization `libcxx/test/libcxx/diagnostics/` should contain related tests.
The following tests should live in `libcxx/test/libcxx/containers`:
`unused_variables.compile.pass.cpp`
`unused_variables.verify.cpp`
---
.../{diagnostics => containers}/unused_variables.compile.pass.cpp | 0
.../{diagnostics => containers}/unused_variables.verify.cpp | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename libcxx/test/libcxx/{diagnostics => containers}/unused_variables.compile.pass.cpp (100%)
rename libcxx/test/libcxx/{diagnostics => containers}/unused_variables.verify.cpp (100%)
diff --git a/libcxx/test/libcxx/diagnostics/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
similarity index 100%
rename from libcxx/test/libcxx/diagnostics/unused_variables.compile.pass.cpp
rename to libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
diff --git a/libcxx/test/libcxx/diagnostics/unused_variables.verify.cpp b/libcxx/test/libcxx/containers/unused_variables.verify.cpp
similarity index 100%
rename from libcxx/test/libcxx/diagnostics/unused_variables.verify.cpp
rename to libcxx/test/libcxx/containers/unused_variables.verify.cpp
>From 18835e96af2c06ffcbf8cbd2a99e49039c3f6102 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 14:40:27 +0300
Subject: [PATCH 2/9] Split test
---
.../containers/unused_variables.verify.cpp | 52 ---------------
.../libcxx/thread/unused_variables.verify.cpp | 64 +++++++++++++++++++
2 files changed, 64 insertions(+), 52 deletions(-)
create mode 100644 libcxx/test/libcxx/thread/unused_variables.verify.cpp
diff --git a/libcxx/test/libcxx/containers/unused_variables.verify.cpp b/libcxx/test/libcxx/containers/unused_variables.verify.cpp
index bfeb60d9bb6f0..c7c90d58777f2 100644
--- a/libcxx/test/libcxx/containers/unused_variables.verify.cpp
+++ b/libcxx/test/libcxx/containers/unused_variables.verify.cpp
@@ -9,18 +9,11 @@
// Make sure that we warn on unused variables of libc++ classes which behave like value types.
// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
-#include <barrier>
-#include <condition_variable>
#include <deque>
#include <forward_list>
-#include <latch>
#include <list>
#include <map>
-#include <mutex>
-#include <semaphore>
#include <set>
-#include <shared_mutex>
-#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
@@ -77,48 +70,3 @@ void container_const_iterators() {
std::vector<int>::const_iterator m; // expected-warning {{unused variable}}
std::vector<bool>::const_iterator n; // expected-warning {{unused variable}}
}
-
-#ifndef TEST_HAS_NO_THREADS
-void synchronization(std::mutex& m) {
- // <mutex>
- std::mutex a; // expected-warning {{unused variable}}
- std::once_flag b; // expected-warning {{unused variable}}
- std::recursive_mutex c; // expected-warning {{unused variable}}
- std::recursive_timed_mutex d; // expected-warning {{unused variable}}
- std::timed_mutex e; // expected-warning {{unused variable}}
- std::unique_lock<std::mutex> f; // This is https://llvm.org/PR222655
- std::unique_lock<std::mutex> g(m); // Shouldn't be diagnosed
-# if TEST_STD_VER >= 17
- std::unique_lock<std::mutex> h(m, std::defer_lock); // This is https://llvm.org/PR222655
-# endif
-
- // <condition_variable>
- std::condition_variable i; // expected-warning {{unused variable}}
- std::condition_variable_any j; // expected-warning {{unused variable}}
-
-# if TEST_STD_VER >= 20
- // <semaphore>
- std::counting_semaphore<> k(1); // expected-warning {{unused variable}}
-# endif
-
- // <shared_mutex>
-# if TEST_STD_VER >= 17
- std::shared_mutex l; // expected-warning {{unused variable}}
-# endif
-# if TEST_STD_VER >= 14
- std::shared_timed_mutex n; // expected-warning {{unused variable}}
- std::shared_timed_mutex n2;
- std::shared_lock<std::shared_timed_mutex> o; // This is https://llvm.org/PR222655
- std::shared_lock<std::shared_timed_mutex> p(n2); // Shouldn't be diagnosed
- std::shared_lock<std::shared_timed_mutex> q(n2, std::defer_lock); // This is https://llvm.org/PR222655
-# endif
-
-# if TEST_STD_VER >= 20
- // <barrier>
- std::barrier<> r(1); // expected-warning {{unused variable}}
-
- // <latch>
- std::latch s(1); // expected-warning {{unused variable}}
-# endif
-}
-#endif // TEST_HAS_NO_THREADS
diff --git a/libcxx/test/libcxx/thread/unused_variables.verify.cpp b/libcxx/test/libcxx/thread/unused_variables.verify.cpp
new file mode 100644
index 0000000000000..0db58b42fb6ce
--- /dev/null
+++ b/libcxx/test/libcxx/thread/unused_variables.verify.cpp
@@ -0,0 +1,64 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// UNSUPPORTED: no-threads
+
+// Make sure that we warn on unused variables of libc++ classes which behave like value types.
+// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
+
+#include <barrier>
+#include <condition_variable>
+#include <latch>
+#include <mutex>
+#include <semaphore>
+#include <shared_mutex>
+
+#include "test_macros.h"
+
+void synchronization(std::mutex& m) {
+ // <mutex>
+ std::mutex a; // expected-warning {{unused variable}}
+ std::once_flag b; // expected-warning {{unused variable}}
+ std::recursive_mutex c; // expected-warning {{unused variable}}
+ std::recursive_timed_mutex d; // expected-warning {{unused variable}}
+ std::timed_mutex e; // expected-warning {{unused variable}}
+ std::unique_lock<std::mutex> f; // This is https://llvm.org/PR222655
+ std::unique_lock<std::mutex> g(m); // Shouldn't be diagnosed
+# if TEST_STD_VER >= 17
+ std::unique_lock<std::mutex> h(m, std::defer_lock); // This is https://llvm.org/PR222655
+# endif
+
+ // <condition_variable>
+ std::condition_variable i; // expected-warning {{unused variable}}
+ std::condition_variable_any j; // expected-warning {{unused variable}}
+
+# if TEST_STD_VER >= 20
+ // <semaphore>
+ std::counting_semaphore<> k(1); // expected-warning {{unused variable}}
+# endif
+
+ // <shared_mutex>
+# if TEST_STD_VER >= 17
+ std::shared_mutex l; // expected-warning {{unused variable}}
+# endif
+# if TEST_STD_VER >= 14
+ std::shared_timed_mutex n; // expected-warning {{unused variable}}
+ std::shared_timed_mutex n2;
+ std::shared_lock<std::shared_timed_mutex> o; // This is https://llvm.org/PR222655
+ std::shared_lock<std::shared_timed_mutex> p(n2); // Shouldn't be diagnosed
+ std::shared_lock<std::shared_timed_mutex> q(n2, std::defer_lock); // This is https://llvm.org/PR222655
+# endif
+
+# if TEST_STD_VER >= 20
+ // <barrier>
+ std::barrier<> r(1); // expected-warning {{unused variable}}
+
+ // <latch>
+ std::latch s(1); // expected-warning {{unused variable}}
+# endif
+}
>From 77df50a26b47d4e0ec6080a545bfcdbc0c00bf50 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 14:43:24 +0300
Subject: [PATCH 3/9] format
---
.../libcxx/thread/unused_variables.verify.cpp | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/libcxx/test/libcxx/thread/unused_variables.verify.cpp b/libcxx/test/libcxx/thread/unused_variables.verify.cpp
index 0db58b42fb6ce..33c4e74ac0a5a 100644
--- a/libcxx/test/libcxx/thread/unused_variables.verify.cpp
+++ b/libcxx/test/libcxx/thread/unused_variables.verify.cpp
@@ -29,36 +29,36 @@ void synchronization(std::mutex& m) {
std::timed_mutex e; // expected-warning {{unused variable}}
std::unique_lock<std::mutex> f; // This is https://llvm.org/PR222655
std::unique_lock<std::mutex> g(m); // Shouldn't be diagnosed
-# if TEST_STD_VER >= 17
+#if TEST_STD_VER >= 17
std::unique_lock<std::mutex> h(m, std::defer_lock); // This is https://llvm.org/PR222655
-# endif
+#endif
// <condition_variable>
std::condition_variable i; // expected-warning {{unused variable}}
std::condition_variable_any j; // expected-warning {{unused variable}}
-# if TEST_STD_VER >= 20
+#if TEST_STD_VER >= 20
// <semaphore>
std::counting_semaphore<> k(1); // expected-warning {{unused variable}}
-# endif
+#endif
// <shared_mutex>
-# if TEST_STD_VER >= 17
+#if TEST_STD_VER >= 17
std::shared_mutex l; // expected-warning {{unused variable}}
-# endif
-# if TEST_STD_VER >= 14
+#endif
+#if TEST_STD_VER >= 14
std::shared_timed_mutex n; // expected-warning {{unused variable}}
std::shared_timed_mutex n2;
std::shared_lock<std::shared_timed_mutex> o; // This is https://llvm.org/PR222655
std::shared_lock<std::shared_timed_mutex> p(n2); // Shouldn't be diagnosed
std::shared_lock<std::shared_timed_mutex> q(n2, std::defer_lock); // This is https://llvm.org/PR222655
-# endif
+#endif
-# if TEST_STD_VER >= 20
+#if TEST_STD_VER >= 20
// <barrier>
std::barrier<> r(1); // expected-warning {{unused variable}}
// <latch>
std::latch s(1); // expected-warning {{unused variable}}
-# endif
+#endif
}
>From db957fe3fe4595fc27281420c160f79392574abb Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 21:08:26 +0300
Subject: [PATCH 4/9] Fixes
---
.../containers/unused_variables.verify.cpp | 3 ---
.../strings/unused_variables.compile.pass.cpp | 25 +++++++++++++++++++
.../strings/unused_variables.verify.cpp | 18 +++++++++++++
3 files changed, 43 insertions(+), 3 deletions(-)
create mode 100644 libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
create mode 100644 libcxx/test/libcxx/strings/unused_variables.verify.cpp
diff --git a/libcxx/test/libcxx/containers/unused_variables.verify.cpp b/libcxx/test/libcxx/containers/unused_variables.verify.cpp
index c7c90d58777f2..67ab8a20724b6 100644
--- a/libcxx/test/libcxx/containers/unused_variables.verify.cpp
+++ b/libcxx/test/libcxx/containers/unused_variables.verify.cpp
@@ -32,7 +32,6 @@ void containers() {
std::unordered_multimap<int, int> i; // expected-warning {{unused variable}}
std::unordered_set<int> j; // expected-warning {{unused variable}}
std::unordered_multiset<int> k; // expected-warning {{unused variable}}
- std::string l; // expected-warning {{unused variable}}
std::vector<int> m; // expected-warning {{unused variable}}
std::vector<bool> n; // expected-warning {{unused variable}}
}
@@ -49,7 +48,6 @@ void container_iterators() {
std::unordered_multimap<int, int>::iterator i; // expected-warning {{unused variable}}
std::unordered_set<int>::iterator j; // expected-warning {{unused variable}}
std::unordered_multiset<int>::iterator k; // expected-warning {{unused variable}}
- std::string::iterator l; // expected-warning {{unused variable}}
std::vector<int>::iterator m; // expected-warning {{unused variable}}
std::vector<bool>::iterator n; // expected-warning {{unused variable}}
}
@@ -66,7 +64,6 @@ void container_const_iterators() {
std::unordered_multimap<int, int>::const_iterator i; // expected-warning {{unused variable}}
std::unordered_set<int>::const_iterator j; // expected-warning {{unused variable}}
std::unordered_multiset<int>::const_iterator k; // expected-warning {{unused variable}}
- std::string::const_iterator l; // expected-warning {{unused variable}}
std::vector<int>::const_iterator m; // expected-warning {{unused variable}}
std::vector<bool>::const_iterator n; // expected-warning {{unused variable}}
}
diff --git a/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
new file mode 100644
index 0000000000000..de27ea80d773d
--- /dev/null
+++ b/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
@@ -0,0 +1,25 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// Make sure that we don't introduce new warnings on unused variables of libc++ classes if
+// _LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS is set.
+
+// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS
+
+#include <string>
+
+#include "test_macros.h"
+
+void strings() {
+ std::string l;
+
+#if TEST_STD_VER <= 11
+ std::string::iterator l;
+ std::string::const_iterator l;
+#endif
+}
diff --git a/libcxx/test/libcxx/strings/unused_variables.verify.cpp b/libcxx/test/libcxx/strings/unused_variables.verify.cpp
new file mode 100644
index 0000000000000..3e7bbf7f8d3b2
--- /dev/null
+++ b/libcxx/test/libcxx/strings/unused_variables.verify.cpp
@@ -0,0 +1,18 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// Make sure that we warn on unused variables of libc++ classes which behave like value types.
+// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
+
+#include <string>
+
+void strings() {
+ std::string l; // expected-warning {{unused variable}}
+ std::string::iterator l; // expected-warning {{unused variable}}
+ std::string::const_iterator l; // expected-warning {{unused variable}}
+}
>From e3e6f6433dcaa27d2a1d26b3664eb0f4791e0ebd Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 21:11:06 +0300
Subject: [PATCH 5/9] Cleanup
---
.../test/libcxx/containers/unused_variables.compile.pass.cpp | 3 ---
1 file changed, 3 deletions(-)
diff --git a/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
index cbcaf6a920e24..f49367536978e 100644
--- a/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
+++ b/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
@@ -16,7 +16,6 @@
#include <list>
#include <map>
#include <set>
-#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
@@ -35,7 +34,6 @@ void containers() {
std::unordered_multimap<int, int> i;
std::unordered_set<int> j;
std::unordered_multiset<int> k;
- std::string l;
std::vector<int> m;
std::vector<bool> n;
}
@@ -78,7 +76,6 @@ void container_const_iterators() {
std::unordered_set<int>::const_iterator j;
std::unordered_multiset<int>::const_iterator k;
#if TEST_STD_VER <= 11
- std::string::const_iterator l;
std::vector<int>::const_iterator m;
#endif
#if TEST_STD_VER <= 17
>From 07b8bba8a15accfba4674e60a70ab8fcec2f177e Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 21:34:39 +0300
Subject: [PATCH 6/9] Fix
---
.../libcxx/strings/unused_variables.compile.pass.cpp | 9 +++++++--
libcxx/test/libcxx/strings/unused_variables.verify.cpp | 10 ++++++++--
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
index de27ea80d773d..a9d520385271a 100644
--- a/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
+++ b/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
@@ -15,11 +15,16 @@
#include "test_macros.h"
-void strings() {
- std::string l;
+void strings() { std::string l; }
+void strings_iterators() {
#if TEST_STD_VER <= 11
std::string::iterator l;
+#endif
+}
+
+void strings_const_iterators() {
+#if TEST_STD_VER <= 11
std::string::const_iterator l;
#endif
}
diff --git a/libcxx/test/libcxx/strings/unused_variables.verify.cpp b/libcxx/test/libcxx/strings/unused_variables.verify.cpp
index 3e7bbf7f8d3b2..04c372b000e78 100644
--- a/libcxx/test/libcxx/strings/unused_variables.verify.cpp
+++ b/libcxx/test/libcxx/strings/unused_variables.verify.cpp
@@ -12,7 +12,13 @@
#include <string>
void strings() {
- std::string l; // expected-warning {{unused variable}}
- std::string::iterator l; // expected-warning {{unused variable}}
+ std::string l; // expected-warning {{unused variable}}
+}
+
+void strings_iterators() {
+ std::string::iterator l; // expected-warning {{unused variable}}
+}
+
+void strings_const_iterators() {
std::string::const_iterator l; // expected-warning {{unused variable}}
}
>From fd93ba7571ef0e6e2edfe41118028b2032ddce77 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Sun, 13 Sep 2026 22:21:20 +0300
Subject: [PATCH 7/9] Fix
---
libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
index f49367536978e..52a1fb5a20902 100644
--- a/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
+++ b/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
@@ -53,7 +53,6 @@ void container_iterators() {
std::unordered_set<int>::iterator j;
std::unordered_multiset<int>::iterator k;
#if TEST_STD_VER <= 11
- std::string::iterator l;
std::vector<int>::iterator m;
#endif
#if TEST_STD_VER <= 17
>From 3188163cb9b61f2aee5f69207f4d3df34486c29f Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Mon, 14 Sep 2026 15:27:08 +0300
Subject: [PATCH 8/9] Remove files
---
.../unused_variables.compile.pass.cpp | 83 -------------------
.../containers/unused_variables.verify.cpp | 69 ---------------
.../strings/unused_variables.compile.pass.cpp | 30 -------
.../strings/unused_variables.verify.cpp | 24 ------
.../libcxx/thread/unused_variables.verify.cpp | 64 --------------
5 files changed, 270 deletions(-)
delete mode 100644 libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
delete mode 100644 libcxx/test/libcxx/containers/unused_variables.verify.cpp
delete mode 100644 libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
delete mode 100644 libcxx/test/libcxx/strings/unused_variables.verify.cpp
delete mode 100644 libcxx/test/libcxx/thread/unused_variables.verify.cpp
diff --git a/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
deleted file mode 100644
index 52a1fb5a20902..0000000000000
--- a/libcxx/test/libcxx/containers/unused_variables.compile.pass.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// Make sure that we don't introduce new warnings on unused variables of libc++ classes if
-// _LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS is set.
-
-// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS
-
-#include <deque>
-#include <forward_list>
-#include <list>
-#include <map>
-#include <set>
-#include <unordered_map>
-#include <unordered_set>
-#include <vector>
-
-#include "test_macros.h"
-
-void containers() {
- std::deque<int> a;
- std::forward_list<int> b;
- std::list<int> c;
- std::map<int, int> d;
- std::multimap<int, int> e;
- std::set<int> f;
- std::multiset<int> g;
- std::unordered_map<int, int> h;
- std::unordered_multimap<int, int> i;
- std::unordered_set<int> j;
- std::unordered_multiset<int> k;
- std::vector<int> m;
- std::vector<bool> n;
-}
-
-void container_iterators() {
- std::deque<int>::iterator a;
-#if TEST_STD_VER <= 23
- std::forward_list<int>::iterator b;
- std::list<int>::iterator c;
- std::map<int, int>::iterator d;
- std::multimap<int, int>::iterator e;
- std::set<int>::iterator f;
- std::multiset<int>::iterator g;
-#endif
- std::unordered_map<int, int>::iterator h;
- std::unordered_multimap<int, int>::iterator i;
- std::unordered_set<int>::iterator j;
- std::unordered_multiset<int>::iterator k;
-#if TEST_STD_VER <= 11
- std::vector<int>::iterator m;
-#endif
-#if TEST_STD_VER <= 17
- std::vector<bool>::iterator n;
-#endif
-}
-
-void container_const_iterators() {
- std::deque<int>::const_iterator a;
-#if TEST_STD_VER <= 23
- std::forward_list<int>::const_iterator b;
- std::list<int>::const_iterator c;
- std::map<int, int>::const_iterator d;
- std::multimap<int, int>::const_iterator e;
- std::set<int>::const_iterator f;
- std::multiset<int>::const_iterator g;
-#endif
- std::unordered_map<int, int>::const_iterator h;
- std::unordered_multimap<int, int>::const_iterator i;
- std::unordered_set<int>::const_iterator j;
- std::unordered_multiset<int>::const_iterator k;
-#if TEST_STD_VER <= 11
- std::vector<int>::const_iterator m;
-#endif
-#if TEST_STD_VER <= 17
- std::vector<bool>::const_iterator n;
-#endif
-}
diff --git a/libcxx/test/libcxx/containers/unused_variables.verify.cpp b/libcxx/test/libcxx/containers/unused_variables.verify.cpp
deleted file mode 100644
index 67ab8a20724b6..0000000000000
--- a/libcxx/test/libcxx/containers/unused_variables.verify.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// Make sure that we warn on unused variables of libc++ classes which behave like value types.
-// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
-
-#include <deque>
-#include <forward_list>
-#include <list>
-#include <map>
-#include <set>
-#include <unordered_map>
-#include <unordered_set>
-#include <vector>
-
-#include "test_macros.h"
-
-void containers() {
- std::deque<int> a; // expected-warning {{unused variable}}
- std::forward_list<int> b; // expected-warning {{unused variable}}
- std::list<int> c; // expected-warning {{unused variable}}
- std::map<int, int> d; // expected-warning {{unused variable}}
- std::multimap<int, int> e; // expected-warning {{unused variable}}
- std::set<int> f; // expected-warning {{unused variable}}
- std::multiset<int> g; // expected-warning {{unused variable}}
- std::unordered_map<int, int> h; // expected-warning {{unused variable}}
- std::unordered_multimap<int, int> i; // expected-warning {{unused variable}}
- std::unordered_set<int> j; // expected-warning {{unused variable}}
- std::unordered_multiset<int> k; // expected-warning {{unused variable}}
- std::vector<int> m; // expected-warning {{unused variable}}
- std::vector<bool> n; // expected-warning {{unused variable}}
-}
-
-void container_iterators() {
- std::deque<int>::iterator a; // expected-warning {{unused variable}}
- std::forward_list<int>::iterator b; // expected-warning {{unused variable}}
- std::list<int>::iterator c; // expected-warning {{unused variable}}
- std::map<int, int>::iterator d; // expected-warning {{unused variable}}
- std::multimap<int, int>::iterator e; // expected-warning {{unused variable}}
- std::set<int>::iterator f; // expected-warning {{unused variable}}
- std::multiset<int>::iterator g; // expected-warning {{unused variable}}
- std::unordered_map<int, int>::iterator h; // expected-warning {{unused variable}}
- std::unordered_multimap<int, int>::iterator i; // expected-warning {{unused variable}}
- std::unordered_set<int>::iterator j; // expected-warning {{unused variable}}
- std::unordered_multiset<int>::iterator k; // expected-warning {{unused variable}}
- std::vector<int>::iterator m; // expected-warning {{unused variable}}
- std::vector<bool>::iterator n; // expected-warning {{unused variable}}
-}
-
-void container_const_iterators() {
- std::deque<int>::const_iterator a; // expected-warning {{unused variable}}
- std::forward_list<int>::const_iterator b; // expected-warning {{unused variable}}
- std::list<int>::const_iterator c; // expected-warning {{unused variable}}
- std::map<int, int>::const_iterator d; // expected-warning {{unused variable}}
- std::multimap<int, int>::const_iterator e; // expected-warning {{unused variable}}
- std::set<int>::const_iterator f; // expected-warning {{unused variable}}
- std::multiset<int>::const_iterator g; // expected-warning {{unused variable}}
- std::unordered_map<int, int>::const_iterator h; // expected-warning {{unused variable}}
- std::unordered_multimap<int, int>::const_iterator i; // expected-warning {{unused variable}}
- std::unordered_set<int>::const_iterator j; // expected-warning {{unused variable}}
- std::unordered_multiset<int>::const_iterator k; // expected-warning {{unused variable}}
- std::vector<int>::const_iterator m; // expected-warning {{unused variable}}
- std::vector<bool>::const_iterator n; // expected-warning {{unused variable}}
-}
diff --git a/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
deleted file mode 100644
index a9d520385271a..0000000000000
--- a/libcxx/test/libcxx/strings/unused_variables.compile.pass.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// Make sure that we don't introduce new warnings on unused variables of libc++ classes if
-// _LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS is set.
-
-// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS
-
-#include <string>
-
-#include "test_macros.h"
-
-void strings() { std::string l; }
-
-void strings_iterators() {
-#if TEST_STD_VER <= 11
- std::string::iterator l;
-#endif
-}
-
-void strings_const_iterators() {
-#if TEST_STD_VER <= 11
- std::string::const_iterator l;
-#endif
-}
diff --git a/libcxx/test/libcxx/strings/unused_variables.verify.cpp b/libcxx/test/libcxx/strings/unused_variables.verify.cpp
deleted file mode 100644
index 04c372b000e78..0000000000000
--- a/libcxx/test/libcxx/strings/unused_variables.verify.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// Make sure that we warn on unused variables of libc++ classes which behave like value types.
-// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
-
-#include <string>
-
-void strings() {
- std::string l; // expected-warning {{unused variable}}
-}
-
-void strings_iterators() {
- std::string::iterator l; // expected-warning {{unused variable}}
-}
-
-void strings_const_iterators() {
- std::string::const_iterator l; // expected-warning {{unused variable}}
-}
diff --git a/libcxx/test/libcxx/thread/unused_variables.verify.cpp b/libcxx/test/libcxx/thread/unused_variables.verify.cpp
deleted file mode 100644
index 33c4e74ac0a5a..0000000000000
--- a/libcxx/test/libcxx/thread/unused_variables.verify.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// UNSUPPORTED: no-threads
-
-// Make sure that we warn on unused variables of libc++ classes which behave like value types.
-// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
-
-#include <barrier>
-#include <condition_variable>
-#include <latch>
-#include <mutex>
-#include <semaphore>
-#include <shared_mutex>
-
-#include "test_macros.h"
-
-void synchronization(std::mutex& m) {
- // <mutex>
- std::mutex a; // expected-warning {{unused variable}}
- std::once_flag b; // expected-warning {{unused variable}}
- std::recursive_mutex c; // expected-warning {{unused variable}}
- std::recursive_timed_mutex d; // expected-warning {{unused variable}}
- std::timed_mutex e; // expected-warning {{unused variable}}
- std::unique_lock<std::mutex> f; // This is https://llvm.org/PR222655
- std::unique_lock<std::mutex> g(m); // Shouldn't be diagnosed
-#if TEST_STD_VER >= 17
- std::unique_lock<std::mutex> h(m, std::defer_lock); // This is https://llvm.org/PR222655
-#endif
-
- // <condition_variable>
- std::condition_variable i; // expected-warning {{unused variable}}
- std::condition_variable_any j; // expected-warning {{unused variable}}
-
-#if TEST_STD_VER >= 20
- // <semaphore>
- std::counting_semaphore<> k(1); // expected-warning {{unused variable}}
-#endif
-
- // <shared_mutex>
-#if TEST_STD_VER >= 17
- std::shared_mutex l; // expected-warning {{unused variable}}
-#endif
-#if TEST_STD_VER >= 14
- std::shared_timed_mutex n; // expected-warning {{unused variable}}
- std::shared_timed_mutex n2;
- std::shared_lock<std::shared_timed_mutex> o; // This is https://llvm.org/PR222655
- std::shared_lock<std::shared_timed_mutex> p(n2); // Shouldn't be diagnosed
- std::shared_lock<std::shared_timed_mutex> q(n2, std::defer_lock); // This is https://llvm.org/PR222655
-#endif
-
-#if TEST_STD_VER >= 20
- // <barrier>
- std::barrier<> r(1); // expected-warning {{unused variable}}
-
- // <latch>
- std::latch s(1); // expected-warning {{unused variable}}
-#endif
-}
>From 2f53f74381cff92ecc135eda8a4f7b6f56b8dc03 Mon Sep 17 00:00:00 2001
From: Hristo Hristov <hghristov.rmm at gmail.com>
Date: Mon, 14 Sep 2026 15:28:21 +0300
Subject: [PATCH 9/9] Moved files
---
.../libcxx/unused_variables.compile.pass.cpp | 87 ++++++++++++
.../test/libcxx/unused_variables.verify.cpp | 124 ++++++++++++++++++
2 files changed, 211 insertions(+)
create mode 100644 libcxx/test/libcxx/unused_variables.compile.pass.cpp
create mode 100644 libcxx/test/libcxx/unused_variables.verify.cpp
diff --git a/libcxx/test/libcxx/unused_variables.compile.pass.cpp b/libcxx/test/libcxx/unused_variables.compile.pass.cpp
new file mode 100644
index 0000000000000..cbcaf6a920e24
--- /dev/null
+++ b/libcxx/test/libcxx/unused_variables.compile.pass.cpp
@@ -0,0 +1,87 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// Make sure that we don't introduce new warnings on unused variables of libc++ classes if
+// _LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS is set.
+
+// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_UNUSED_STRUCT_WARNINGS
+
+#include <deque>
+#include <forward_list>
+#include <list>
+#include <map>
+#include <set>
+#include <string>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
+
+#include "test_macros.h"
+
+void containers() {
+ std::deque<int> a;
+ std::forward_list<int> b;
+ std::list<int> c;
+ std::map<int, int> d;
+ std::multimap<int, int> e;
+ std::set<int> f;
+ std::multiset<int> g;
+ std::unordered_map<int, int> h;
+ std::unordered_multimap<int, int> i;
+ std::unordered_set<int> j;
+ std::unordered_multiset<int> k;
+ std::string l;
+ std::vector<int> m;
+ std::vector<bool> n;
+}
+
+void container_iterators() {
+ std::deque<int>::iterator a;
+#if TEST_STD_VER <= 23
+ std::forward_list<int>::iterator b;
+ std::list<int>::iterator c;
+ std::map<int, int>::iterator d;
+ std::multimap<int, int>::iterator e;
+ std::set<int>::iterator f;
+ std::multiset<int>::iterator g;
+#endif
+ std::unordered_map<int, int>::iterator h;
+ std::unordered_multimap<int, int>::iterator i;
+ std::unordered_set<int>::iterator j;
+ std::unordered_multiset<int>::iterator k;
+#if TEST_STD_VER <= 11
+ std::string::iterator l;
+ std::vector<int>::iterator m;
+#endif
+#if TEST_STD_VER <= 17
+ std::vector<bool>::iterator n;
+#endif
+}
+
+void container_const_iterators() {
+ std::deque<int>::const_iterator a;
+#if TEST_STD_VER <= 23
+ std::forward_list<int>::const_iterator b;
+ std::list<int>::const_iterator c;
+ std::map<int, int>::const_iterator d;
+ std::multimap<int, int>::const_iterator e;
+ std::set<int>::const_iterator f;
+ std::multiset<int>::const_iterator g;
+#endif
+ std::unordered_map<int, int>::const_iterator h;
+ std::unordered_multimap<int, int>::const_iterator i;
+ std::unordered_set<int>::const_iterator j;
+ std::unordered_multiset<int>::const_iterator k;
+#if TEST_STD_VER <= 11
+ std::string::const_iterator l;
+ std::vector<int>::const_iterator m;
+#endif
+#if TEST_STD_VER <= 17
+ std::vector<bool>::const_iterator n;
+#endif
+}
diff --git a/libcxx/test/libcxx/unused_variables.verify.cpp b/libcxx/test/libcxx/unused_variables.verify.cpp
new file mode 100644
index 0000000000000..bfeb60d9bb6f0
--- /dev/null
+++ b/libcxx/test/libcxx/unused_variables.verify.cpp
@@ -0,0 +1,124 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// Make sure that we warn on unused variables of libc++ classes which behave like value types.
+// ADDITIONAL_COMPILE_FLAGS: -Wunused-variable
+
+#include <barrier>
+#include <condition_variable>
+#include <deque>
+#include <forward_list>
+#include <latch>
+#include <list>
+#include <map>
+#include <mutex>
+#include <semaphore>
+#include <set>
+#include <shared_mutex>
+#include <string>
+#include <unordered_map>
+#include <unordered_set>
+#include <vector>
+
+#include "test_macros.h"
+
+void containers() {
+ std::deque<int> a; // expected-warning {{unused variable}}
+ std::forward_list<int> b; // expected-warning {{unused variable}}
+ std::list<int> c; // expected-warning {{unused variable}}
+ std::map<int, int> d; // expected-warning {{unused variable}}
+ std::multimap<int, int> e; // expected-warning {{unused variable}}
+ std::set<int> f; // expected-warning {{unused variable}}
+ std::multiset<int> g; // expected-warning {{unused variable}}
+ std::unordered_map<int, int> h; // expected-warning {{unused variable}}
+ std::unordered_multimap<int, int> i; // expected-warning {{unused variable}}
+ std::unordered_set<int> j; // expected-warning {{unused variable}}
+ std::unordered_multiset<int> k; // expected-warning {{unused variable}}
+ std::string l; // expected-warning {{unused variable}}
+ std::vector<int> m; // expected-warning {{unused variable}}
+ std::vector<bool> n; // expected-warning {{unused variable}}
+}
+
+void container_iterators() {
+ std::deque<int>::iterator a; // expected-warning {{unused variable}}
+ std::forward_list<int>::iterator b; // expected-warning {{unused variable}}
+ std::list<int>::iterator c; // expected-warning {{unused variable}}
+ std::map<int, int>::iterator d; // expected-warning {{unused variable}}
+ std::multimap<int, int>::iterator e; // expected-warning {{unused variable}}
+ std::set<int>::iterator f; // expected-warning {{unused variable}}
+ std::multiset<int>::iterator g; // expected-warning {{unused variable}}
+ std::unordered_map<int, int>::iterator h; // expected-warning {{unused variable}}
+ std::unordered_multimap<int, int>::iterator i; // expected-warning {{unused variable}}
+ std::unordered_set<int>::iterator j; // expected-warning {{unused variable}}
+ std::unordered_multiset<int>::iterator k; // expected-warning {{unused variable}}
+ std::string::iterator l; // expected-warning {{unused variable}}
+ std::vector<int>::iterator m; // expected-warning {{unused variable}}
+ std::vector<bool>::iterator n; // expected-warning {{unused variable}}
+}
+
+void container_const_iterators() {
+ std::deque<int>::const_iterator a; // expected-warning {{unused variable}}
+ std::forward_list<int>::const_iterator b; // expected-warning {{unused variable}}
+ std::list<int>::const_iterator c; // expected-warning {{unused variable}}
+ std::map<int, int>::const_iterator d; // expected-warning {{unused variable}}
+ std::multimap<int, int>::const_iterator e; // expected-warning {{unused variable}}
+ std::set<int>::const_iterator f; // expected-warning {{unused variable}}
+ std::multiset<int>::const_iterator g; // expected-warning {{unused variable}}
+ std::unordered_map<int, int>::const_iterator h; // expected-warning {{unused variable}}
+ std::unordered_multimap<int, int>::const_iterator i; // expected-warning {{unused variable}}
+ std::unordered_set<int>::const_iterator j; // expected-warning {{unused variable}}
+ std::unordered_multiset<int>::const_iterator k; // expected-warning {{unused variable}}
+ std::string::const_iterator l; // expected-warning {{unused variable}}
+ std::vector<int>::const_iterator m; // expected-warning {{unused variable}}
+ std::vector<bool>::const_iterator n; // expected-warning {{unused variable}}
+}
+
+#ifndef TEST_HAS_NO_THREADS
+void synchronization(std::mutex& m) {
+ // <mutex>
+ std::mutex a; // expected-warning {{unused variable}}
+ std::once_flag b; // expected-warning {{unused variable}}
+ std::recursive_mutex c; // expected-warning {{unused variable}}
+ std::recursive_timed_mutex d; // expected-warning {{unused variable}}
+ std::timed_mutex e; // expected-warning {{unused variable}}
+ std::unique_lock<std::mutex> f; // This is https://llvm.org/PR222655
+ std::unique_lock<std::mutex> g(m); // Shouldn't be diagnosed
+# if TEST_STD_VER >= 17
+ std::unique_lock<std::mutex> h(m, std::defer_lock); // This is https://llvm.org/PR222655
+# endif
+
+ // <condition_variable>
+ std::condition_variable i; // expected-warning {{unused variable}}
+ std::condition_variable_any j; // expected-warning {{unused variable}}
+
+# if TEST_STD_VER >= 20
+ // <semaphore>
+ std::counting_semaphore<> k(1); // expected-warning {{unused variable}}
+# endif
+
+ // <shared_mutex>
+# if TEST_STD_VER >= 17
+ std::shared_mutex l; // expected-warning {{unused variable}}
+# endif
+# if TEST_STD_VER >= 14
+ std::shared_timed_mutex n; // expected-warning {{unused variable}}
+ std::shared_timed_mutex n2;
+ std::shared_lock<std::shared_timed_mutex> o; // This is https://llvm.org/PR222655
+ std::shared_lock<std::shared_timed_mutex> p(n2); // Shouldn't be diagnosed
+ std::shared_lock<std::shared_timed_mutex> q(n2, std::defer_lock); // This is https://llvm.org/PR222655
+# endif
+
+# if TEST_STD_VER >= 20
+ // <barrier>
+ std::barrier<> r(1); // expected-warning {{unused variable}}
+
+ // <latch>
+ std::latch s(1); // expected-warning {{unused variable}}
+# endif
+}
+#endif // TEST_HAS_NO_THREADS
More information about the libcxx-commits
mailing list