Louis Dionne
6f36ead577
[libc++] Fix std::move algorithm with trivial move-only types
...
As reported in https://reviews.llvm.org/D151953#4472195 , the std::move
algorithm (and various other functions that relied on it) stopped working
after starting to use `__constexpr_memmove` in its implementation. This
patch fixes the underlying issue in `__constexpr_memmove` and adds tests
for various related algorithms and functions that were not exercising
trivial move-only types.
Differential Revision: https://reviews.llvm.org/D154613
2023-07-10 11:50:09 -04:00
Nikolas Klauser
c4e98722ca
[libc++] Fix std::copy and std::move for ranges with potentially overlapping tail padding
...
This fixes thr bug reported in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108846 .
Reviewed By: ldionne, #libc
Spies: mstorsjo, libcxx-commits
Differential Revision: https://reviews.llvm.org/D151953
2023-06-30 13:48:16 -07:00
Nikolas Klauser
355f466744
[libc++][NFC] Add __element_count and use it in the constexpr C functions
...
This makes it less ambiguous what the parameter is meant to get.
Reviewed By: #libc, ldionne
Spies: ldionne, libcxx-commits
Differential Revision: https://reviews.llvm.org/D152040
2023-06-05 15:08:01 -07:00
Nikolas Klauser
1fd08edd58
[libc++] Forward to std::{,w}memchr in std::find
...
Reviewed By: #libc, ldionne
Spies: Mordante, libcxx-commits, ldionne, mikhail.ramalho
Differential Revision: https://reviews.llvm.org/D144394
2023-05-25 07:59:50 -07:00
Nikolas Klauser
746cf7e38c
[libc++] Use the __is_trivially_equality_comparable builtin
...
Reviewed By: ldionne, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D148553
2023-05-07 18:38:08 -07:00
Nikolas Klauser
380b6a13da
[libc++][NFC] rename __is_trivially_equality_comparable to __libcpp_is_trivially_equality_comparable
...
This is required for D147175.
Reviewed By: ldionne, Mordante, #libc
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D147953
2023-04-12 14:31:16 +02:00
Nikolas Klauser
b4ecfd3c46
[libc++] Forward to std::memcmp for trivially comparable types in equal
...
Reviewed By: #libc, ldionne
Spies: ldionne, Mordante, libcxx-commits
Differential Revision: https://reviews.llvm.org/D139554
2023-02-21 17:11:21 +01:00
Nikolas Klauser
e8cb3559ee
[libc++] Move constexpr <cstring> functions into their own headers and remove unused <cstring> includes
...
Reviewed By: ldionne, Mordante, #libc, #libc_abi
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D143329
2023-02-21 16:56:29 +01:00