https://gcc.gnu.org/g:c21d5a3591fd761872e18278e1cd8ec18e36d4cb

commit r15-7842-gc21d5a3591fd761872e18278e1cd8ec18e36d4cb
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Mon Mar 3 13:36:54 2025 +0000

    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.

Diff:
---
 .../testsuite/25_algorithms/move/105609.cc         | 33 ++++++++++++++++++++++
 .../testsuite/25_algorithms/move/constrained.cc    | 29 -------------------
 .../25_algorithms/move_backward/105609.cc          | 33 ++++++++++++++++++++++
 .../25_algorithms/move_backward/constrained.cc     | 29 -------------------
 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 000000000000..810451987c9e
--- /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 e2b45b070ef2..587b2f3728b1 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 000000000000..a4fb8d846bda
--- /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 4d94d386dd0b..8f6fd455b4b6 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()
 {

Reply via email to