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. --- Tested x86_64-linux. Pushed to trunk. .../testsuite/25_algorithms/move/105609.cc | 33 +++++++++++++++++++ .../25_algorithms/move/constrained.cc | 29 ---------------- .../25_algorithms/move_backward/105609.cc | 33 +++++++++++++++++++ .../move_backward/constrained.cc | 29 ---------------- 4 files changed, 66 insertions(+), 58 deletions(-) create mode 100644 libstdc++-v3/testsuite/25_algorithms/move/105609.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/move_backward/105609.cc 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 00000000000..810451987c9 --- /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 e2b45b070ef..587b2f3728b 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 00000000000..a4fb8d846bd --- /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 4d94d386dd0..8f6fd455b4b 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() { -- 2.48.1