| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Reword std::advance assertion message for consistency with ranges::advance (#138749) As brought up in https://github.com/llvm/llvm-project/pull/133276. | 1 年前 | |
[libc++] P3247R2: Deprecate is_trivial(_v) (#130573) Requirements on character-like types are updated unconditionally, because basic_string does requires the default-constructibility. It might be possible to make basic_string_view support classes with non-public trivial default constructor, but this doesn't seem sensible. libcxxabi's ItaniumDemangle.h is also updated to avoid deprecated features. | 1 年前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Make the naming of the iterator_traits aliases consistent (#161661) This renames all the iterator_traits alises to be __iterator_<type-name>. e.g iterator_traits<T>::value_type will be __iterator_value_type<T>. | 9 个月前 | |
[libc++] Unify __can_reference and __is_referenceable_v (#133278) Both traits do the same thing. This patch renames __can_reference to __referenceable and moves it to the is_referenceable header. | 1 年前 | |
[libc++] Fix LLVM 22 TODOs (#153367) We've upgraded to LLVM 22 now, so we can remove a bunch of TODOs. | 8 个月前 | |
[libc++][RFC] Always define internal feature test macros (#89178) Currently, the library-internal feature test macros are only defined if the feature is not available, and always have the prefix _LIBCPP_HAS_NO_. This patch changes that, so that they are always defined and have the prefix _LIBCPP_HAS_ instead. This changes the canonical use of these macros to #if _LIBCPP_HAS_FEATURE, which means that using an undefined macro (e.g. due to a missing include) is diagnosed now. While this is rather unlikely currently, a similar change in <__configuration/availability.h> caught a few bugs. This also improves readability, since it removes the double-negation of #ifndef _LIBCPP_HAS_NO_FEATURE. The current patch only touches the macros defined in <__config>. If people are happy with this approach, I'll make a follow-up PR to also change the macros defined in <__config_site>. | 1 年前 | |
[libc++] Make the naming of the iterator_traits aliases consistent (#161661) This renames all the iterator_traits alises to be __iterator_<type-name>. e.g iterator_traits<T>::value_type will be __iterator_value_type<T>. | 9 个月前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Simplify most of the segmented iterator optimizations (#164797) This patch does two things. (1) It replaces SFINAE with if constexpr, avoiding some overload resolution and unnecessary boilerplate. (2) It removes an overload from __for_each_n to forward to __for_each, since __for_each doesn't provide any further optimizations. | 8 个月前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Unify __can_reference and __is_referenceable_v (#133278) Both traits do the same thing. This patch renames __can_reference to __referenceable and moves it to the is_referenceable header. | 1 年前 | |
[libc++][NFC] Run clang-format on libcxx/include again (#95874) As time went by, a few files have become mis-formatted w.r.t. clang-format. This was made worse by the fact that formatting was not being enforced in extensionless headers. This commit simply brings all of libcxx/include in-line with clang-format again. We might have to do this from time to time as we update our clang-format version, but frankly this is really low effort now that we've formatted everything once. | 2 年前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Make the naming of the iterator_traits aliases consistent (#161661) This renames all the iterator_traits alises to be __iterator_<type-name>. e.g iterator_traits<T>::value_type will be __iterator_value_type<T>. | 9 个月前 | |
[libc++] Fix missing and incorrect push/pop macros (#79204) We recently noticed that the unwrap_iter.h file was pushing macros, but it was pushing them again instead of popping them at the end of the file. This led to libc++ basically swallowing any custom definition of these macros in user code: #define min HELLO #include <algorithm> // min is not HELLO anymore, it's not defined While investigating this issue, I noticed that our push/pop pragmas were actually entirely wrong too. Indeed, instead of pushing macros like move, we'd push move(int, int) in the pragma, which is not a valid macro name. As a result, we would not actually push macros like move -- instead we'd simply undefine them. This led to the following code not working: #define move HELLO #include <algorithm> // move is not HELLO anymore Fixing the pragma push/pop incantations led to a cascade of issues because we use identifiers like move in a large number of places, and all of these headers would now need to do the push/pop dance. This patch fixes all these issues. First, it adds a check that we don't swallow important names like min, max, move or refresh as explained above. This is done by augmenting the existing system_reserved_names.gen.py test to also check that the macros are what we expect after including each header. Second, it fixes the push/pop pragmas to work properly and adds missing pragmas to all the files I could detect a failure in via the newly added test. rdar://121365472 | 2 年前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
| 1 年前 | ||
| 1 年前 | ||
[libc++] Remove redundant and somewhat confusing assertions around advance() (#133276) The std::advance function has a clear precondition that it can only be called with a negative distance when a bidirectional iterator is used. However, prev() and next() don't have such preconditions explicitly, they inherit it from calling advance(). This patch removes assertions in prev() and next() that were duplicates of similar ones in advance(), and removes a copy-pasted comment that was trying to justify the use of _LIBCPP_ASSERT_PEDANTIC but IMO is creating confusion with little benefit. | 1 年前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Remove redundant and somewhat confusing assertions around advance() (#133276) The std::advance function has a clear precondition that it can only be called with a negative distance when a bidirectional iterator is used. However, prev() and next() don't have such preconditions explicitly, they inherit it from calling advance(). This patch removes assertions in prev() and next() that were duplicates of similar ones in advance(), and removes a copy-pasted comment that was trying to justify the use of _LIBCPP_ASSERT_PEDANTIC but IMO is creating confusion with little benefit. | 1 年前 | |
[libc++] Introduce __product_iterator_traits and optimise flat_map::insert (#139454) Fixes #108624 This allows flat_map::insert(Iter, Iter) to directly forward to underlying containers' insert(Iter, Iter), instead of inserting one element at a time, when input models "product iterator". atm, flat_map::iterator and zip_view::iterator are "product iterator"s. This gives about almost 10x speed up in my benchmark with -03 (for both before and after) cpp Benchmark Time CPU Time Old Time New CPU Old CPU New ----------------------------------------------------------------------------------------------------------------------------------------------- flat_map::insert_product_iterator_flat_map/32 -0.5028 -0.5320 149 74 149 70 flat_map::insert_product_iterator_flat_map/1024 -0.8617 -0.8618 3113 430 3112 430 flat_map::insert_product_iterator_flat_map/8192 -0.8877 -0.8877 26682 2995 26679 2995 flat_map::insert_product_iterator_flat_map/65536 -0.8769 -0.8769 226235 27844 226221 27841 flat_map::insert_product_iterator_zip/32 -0.5844 -0.5844 162 67 162 67 flat_map::insert_product_iterator_zip/1024 -0.8754 -0.8754 3427 427 3427 427 flat_map::insert_product_iterator_zip/8192 -0.8934 -0.8934 28134 3000 28132 3000 flat_map::insert_product_iterator_zip/65536 -0.8783 -0.8783 229783 27960 229767 27958 OVERALL_GEOMEAN -0.8319 -0.8332 0 0 0 0 --------- Co-authored-by: Louis Dionne <ldionne.2@gmail.com> | 1 年前 | |
[libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710) This significantly reduces the amount of debug information generated for codebases using libc++, without hurting the debugging experience. | 1 年前 | |
[libc++] Put _LIBCPP_NODEBUG on all internal aliases (#118710) This significantly reduces the amount of debug information generated for codebases using libc++, without hurting the debugging experience. | 1 年前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Split ABI flag for removing iterator bases and removing the second member in reverse_iterator (#143079) Currently _LIBCPP_NO_ITERATOR_BASES controls both whether specific classes derive from iterator and whether reverse_iterator has a second member variable. These two changes are orthogonal though, and one can be applied in all langauge modes while the other change is only conforming for C++17 and later. | 10 个月前 | |
[libc++] Simplify most of the segmented iterator optimizations (#164797) This patch does two things. (1) It replaces SFINAE with if constexpr, avoiding some overload resolution and unnecessary boilerplate. (2) It removes an overload from __for_each_n to forward to __for_each, since __for_each doesn't provide any further optimizations. | 8 个月前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Make the naming of the iterator_traits aliases consistent (#161661) This renames all the iterator_traits alises to be __iterator_<type-name>. e.g iterator_traits<T>::value_type will be __iterator_value_type<T>. | 9 个月前 | |
[libc++] Format the code base (#74334) This patch runs clang-format on all of libcxx/include and libcxx/src, in accordance with the RFC discussed at [1]. Follow-up patches will format the benchmarks, the test suite and remaining parts of the code. I'm splitting this one into its own patch so the diff is a bit easier to review. This patch was generated with: find libcxx/include libcxx/src -type f \ | grep -v 'module.modulemap.in' \ | grep -v 'CMakeLists.txt' \ | grep -v 'README.txt' \ | grep -v 'libcxx.imp' \ | grep -v '__config_site.in' \ | xargs clang-format -i A Git merge driver is available in libcxx/utils/clang-format-merge-driver.sh to help resolve merge and rebase issues across these formatting changes. [1]: https://discourse.llvm.org/t/rfc-clang-formatting-all-of-libc-once-and-for-all | 2 年前 | |
[libc++] Implement P2988R12: std::optional<T&> (#155202) Resolves #148131 - Unlock std::optional<T&> implementation - Allow instantiations of optional<T(&)(...)> and optional<T(&)[]> but disables value_or() and optional::iterator + all iterator related functions - Update documentation - Update tests | 8 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 2 年前 | ||
| 8 个月前 |