|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2 |
|
| #
33e5f159 |
| 03-Aug-2022 |
Konstantin Varlamov <[email protected]> |
[libc++][ranges] Implement `ranges::rotate`.
Also fix `ranges::stable_sort` and `ranges::inplace_merge` to support proxy iterators now that their internal implementations can correctly dispatch `rot
[libc++][ranges] Implement `ranges::rotate`.
Also fix `ranges::stable_sort` and `ranges::inplace_merge` to support proxy iterators now that their internal implementations can correctly dispatch `rotate`.
Differential Revision: https://reviews.llvm.org/D130758
(cherry picked from commit 36c746ca2d5b325a7ac64135c1ff8774c06ab34c)
show more ...
|
| #
732cb123 |
| 03-Aug-2022 |
Konstantin Varlamov <[email protected]> |
[libc++][ranges] Implement `ranges::sample`.
Differential Revision: https://reviews.llvm.org/D130865
(cherry picked from commit 6bdb64223473585f783572c9fbf0673b4b324a35)
|
|
Revision tags: llvmorg-15.0.0-rc1, llvmorg-16-init |
|
| #
62f1e663 |
| 23-Jul-2022 |
Hui Xie <[email protected]> |
[libc++][ranges] implement `std::ranges::unique{_copy}`
implement `std::ranges::unique` and `std::ranges::unique_copy`
Differential Revision: https://reviews.llvm.org/D130404
(cherry picked from c
[libc++][ranges] implement `std::ranges::unique{_copy}`
implement `std::ranges::unique` and `std::ranges::unique_copy`
Differential Revision: https://reviews.llvm.org/D130404
(cherry picked from commit 72f57e3a30d597346feec74cf626796b0055680f)
show more ...
|
| #
c9905b8c |
| 28-Jul-2022 |
Konstantin Varlamov <[email protected]> |
[libc++] Make `_IterOps::__iter_move` more similar to `std::ranges::iter_move`.
Avoid relying on `iterator_traits` and instead deduce the return type of dereferencing the iterator. Additionally, add
[libc++] Make `_IterOps::__iter_move` more similar to `std::ranges::iter_move`.
Avoid relying on `iterator_traits` and instead deduce the return type of dereferencing the iterator. Additionally, add a static check to reject iterators with incorrect `iterator_traits` at compile time.
Differential Revision: https://reviews.llvm.org/D130538
(cherry picked from commit b3afea1ce0bd3c9293edae67c1839318eecdd7bf)
show more ...
|
| #
0f6364b8 |
| 14-Jul-2022 |
Hui Xie <[email protected]> |
[libc++][ranges] implement `std::ranges::equal_range`
implement `std::ranges::equal_range` which delegates to `std::equal_range`
Differential Revision: https://reviews.llvm.org/D129796
|
| #
7abbd622 |
| 21-Jul-2022 |
Hui Xie <[email protected]> |
[libc++] Fix proxy iterator issues that trigger an assertion in Chromium.
Crash report: https://bugs.chromium.org/p/chromium/issues/detail?id=1346012
The triggered assertion is related sorting with
[libc++] Fix proxy iterator issues that trigger an assertion in Chromium.
Crash report: https://bugs.chromium.org/p/chromium/issues/detail?id=1346012
The triggered assertion is related sorting with `v8::internal::AtomicSlot`. `AtomicSlot` is a proxy iterator with a proxy type `AtomicSlot::Reference` (see https://chromium.googlesource.com/v8/v8/+/9bcb5eb590643db0c1f688fea316c7f1f4786a3c/src/objects/slots-atomic-inl.h).
https://reviews.llvm.org/D130197 correctly spotted the issue in `__iter_move` but doesn't actually fix the issue. The reason is that `AtomicSlot::operator*` returns a prvalue `Reference`. After the fix in D130197, the return type of `__iter_move` is `Reference&&`. But the rvalue reference is bound to the temporary value returned by `operator*`, which will be dangling after `__iter_move` returns.
The idea of the fix in this change is borrowed from C++17's move_iterator https://timsong-cpp.github.io/cppwp/n4659/move.iterators#move.iterator-1 When the underlying reference is a prvalue, we just return it by value.
Differential Revision: https://reviews.llvm.org/D130212
show more ...
|
| #
bc4d2e70 |
| 20-Jul-2022 |
Konstantin Varlamov <[email protected]> |
[libc++] Fix `_IterOps::__iter_move` to support proxy iterators.
The return type was specified incorrectly for proxy iterators that define `reference` to be a class that implicitly converts to `valu
[libc++] Fix `_IterOps::__iter_move` to support proxy iterators.
The return type was specified incorrectly for proxy iterators that define `reference` to be a class that implicitly converts to `value_type`. `__iter_move` would end up returning an object of type `reference` which would then implicitly convert to `value_type`; thus, the function will return a `value_type&&` rvalue reference to the local temporary.
Differential Revision: https://reviews.llvm.org/D130197
show more ...
|
| #
8ed702b8 |
| 19-Jul-2022 |
Konstantin Varlamov <[email protected]> |
[libc++][ranges] Implement `ranges::{,stable_}partition`.
Differential Revision: https://reviews.llvm.org/D129624
|
| #
a7c3379c |
| 18-Jul-2022 |
Konstantin Varlamov <[email protected]> |
[libc++][ranges] Make range algorithms support proxy iterators
Also test all the range algorithms to verify the support.
Differential Revision: https://reviews.llvm.org/D129823
|
| #
101d1e9b |
| 13-Jul-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Implement ranges::find_end, ranges::search{, _n}
Reviewed By: var-const, #libc, huixie90
Spies: thakis, h-vetinari, huixie90, libcxx-commits, mgorny
Differential Revision: https://reviews
[libc++] Implement ranges::find_end, ranges::search{, _n}
Reviewed By: var-const, #libc, huixie90
Spies: thakis, h-vetinari, huixie90, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D124079
show more ...
|
| #
1f047593 |
| 13-Jul-2022 |
Nikolas Klauser <[email protected]> |
Revert "[libc++] Implement ranges::find_end, ranges::search{, _n}"
This reverts commit 76a76518507ccc59ccdad5b83f44dc8c3d9593c7.
|
| #
76a76518 |
| 12-Jul-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Implement ranges::find_end, ranges::search{, _n}
Reviewed By: var-const, #libc, huixie90
Spies: h-vetinari, huixie90, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.or
[libc++] Implement ranges::find_end, ranges::search{, _n}
Reviewed By: var-const, #libc, huixie90
Spies: h-vetinari, huixie90, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D124079
show more ...
|
| #
295b951e |
| 13-Jul-2022 |
Konstantin Varlamov <[email protected]> |
[lib++][ranges][NFC] Refactor `iterator_operations.h` to use tags.
Change the mechanism in `iterator_operations.h` to pass around a generic policy tag indicating whether an internal function is bein
[lib++][ranges][NFC] Refactor `iterator_operations.h` to use tags.
Change the mechanism in `iterator_operations.h` to pass around a generic policy tag indicating whether an internal function is being invoked from a "classic" STL algorithm or a ranges algorithm. `IterOps` is now a template class specialized on the policy tag.
The advantage is that this mechanism is more generic and allows defining arbitrary conditions in a clean manner.
Also add a few more iterator functions to `IterOps`.
Differential Revision: https://reviews.llvm.org/D129390
show more ...
|
| #
96b674f2 |
| 08-Jul-2022 |
Hui Xie <[email protected]> |
[libc++][ranges] implement `std::ranges::set_intersection`
implement `std::ranges::set_intersection` by reusing the classic `std::set_intersenction` added unit tests
Differential Revision: https://
[libc++][ranges] implement `std::ranges::set_intersection`
implement `std::ranges::set_intersection` by reusing the classic `std::set_intersenction` added unit tests
Differential Revision: https://reviews.llvm.org/D129233
show more ...
|
|
Revision tags: llvmorg-14.0.6 |
|
| #
988682a3 |
| 13-Jun-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Fix std::lower_bound with C++20-hostile iterators
Reviewed By: EricWF, #libc
Spies: sstefan1, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D127577
|