aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2025-03-03 13:36:54 +0000
committerJonathan Wakely <redi@gcc.gnu.org>2025-03-05 22:10:26 +0000
commitc21d5a3591fd761872e18278e1cd8ec18e36d4cb (patch)
treeb58bdbf318ab7252c1eb8e180aadb97171ba3b1c
parent3c02d195bfe4dad6097b5cc574fe1797c22267b4 (diff)
downloadgcc-c21d5a3591fd761872e18278e1cd8ec18e36d4cb.zip
gcc-c21d5a3591fd761872e18278e1cd8ec18e36d4cb.tar.gz
gcc-c21d5a3591fd761872e18278e1cd8ec18e36d4cb.tar.bz2
libstdc++: Move new functions to separate files [PR119110]
The new test functions I added in r15-7765-g3866ca796d5281 are causing those tests to FAIL on Solaris and arm-thumb due to the linker complaining about undefined functions. The new test functions are not called, so it shouldn't matter that they call undefined member functions, but it does. Move those functions to separate { dg-do compile } files so the linker isn't used and won't complain. libstdc++-v3/ChangeLog: PR libstdc++/119110 * testsuite/25_algorithms/move/constrained.cc: Move test06 function to ... * testsuite/25_algorithms/move/105609.cc: New test. * testsuite/25_algorithms/move_backward/constrained.cc: Move test04 function to ... * testsuite/25_algorithms/move_backward/105609.cc: New test.
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/move/105609.cc33
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/move/constrained.cc29
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/move_backward/105609.cc33
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc29
4 files changed, 66 insertions, 58 deletions
diff --git a/libstdc++-v3/testsuite/25_algorithms/move/105609.cc b/libstdc++-v3/testsuite/25_algorithms/move/105609.cc
new file mode 100644
index 0000000..8104519
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/move/105609.cc
@@ -0,0 +1,33 @@
+// { dg-do compile { target c++20 } }
+
+// PR libstdc++/105609
+// ranges::move should use ranges::iter_move instead of std::move
+
+#include <algorithm>
+
+namespace pr105609
+{
+ struct I {
+ using value_type = int;
+ using difference_type = std::ptrdiff_t;
+ int operator*() const;
+ I& operator++();
+ I operator++(int);
+ I& operator--();
+ I operator--(int);
+ bool operator==(I) const;
+ friend int& iter_move(const I&);
+ };
+}
+
+void
+test(pr105609::I i)
+{
+ struct O {
+ O(int&) { }
+ O(int&&) = delete;
+ };
+
+ O* o = nullptr;
+ std::ranges::move(i, i, o);
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
index e2b45b0..587b2f3 100644
--- a/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
@@ -204,35 +204,6 @@ test05()
VERIFY( ranges::equal(v, (int[]){1,2,3,0}) );
}
-namespace pr105609
-{
- struct I {
- using value_type = int;
- using difference_type = std::ptrdiff_t;
- int operator*() const;
- I& operator++();
- I operator++(int);
- I& operator--();
- I operator--(int);
- bool operator==(I) const;
- friend int& iter_move(const I&);
- };
-}
-
-void
-test06(pr105609::I i)
-{
- // PR libstdc++/105609
- // ranges::move should use ranges::iter_move instead of std::move
- struct O {
- O(int&) { }
- O(int&&) = delete;
- };
-
- O* o = nullptr;
- std::ranges::move(i, i, o);
-}
-
int
main()
{
diff --git a/libstdc++-v3/testsuite/25_algorithms/move_backward/105609.cc b/libstdc++-v3/testsuite/25_algorithms/move_backward/105609.cc
new file mode 100644
index 0000000..a4fb8d8
--- /dev/null
+++ b/libstdc++-v3/testsuite/25_algorithms/move_backward/105609.cc
@@ -0,0 +1,33 @@
+// { dg-do compile { target c++20 } }
+
+// PR libstdc++/105609
+// ranges::move should use ranges::iter_move instead of std::move
+
+#include <algorithm>
+
+namespace pr105609
+{
+ struct I {
+ using value_type = int;
+ using difference_type = std::ptrdiff_t;
+ int operator*() const;
+ I& operator++();
+ I operator++(int);
+ I& operator--();
+ I operator--(int);
+ bool operator==(I) const;
+ friend int& iter_move(const I&);
+ };
+}
+
+void
+test(pr105609::I i)
+{
+ struct O {
+ O(int&) { }
+ O(int&&) = delete;
+ };
+
+ O* o = nullptr;
+ std::ranges::move_backward(i, i, o);
+}
diff --git a/libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc b/libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
index 4d94d38..8f6fd45 100644
--- a/libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
@@ -160,35 +160,6 @@ test03()
return ok;
}
-namespace pr105609
-{
- struct I {
- using value_type = int;
- using difference_type = std::ptrdiff_t;
- int operator*() const;
- I& operator++();
- I operator++(int);
- I& operator--();
- I operator--(int);
- bool operator==(I) const;
- friend int& iter_move(const I&);
- };
-}
-
-void
-test04(pr105609::I i)
-{
- // PR libstdc++/105609
- // ranges::move should use ranges::iter_move instead of std::move
- struct O {
- O(int&) { }
- O(int&&) = delete;
- };
-
- O* o = nullptr;
- std::ranges::move_backward(i, i, o);
-}
-
int
main()
{