| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc++] Inline __has_feature and __has_extension uses (#133634) Since GCC now supports __has_feature and __has_extension as well, there isn't much of a reason to define new macros to test for the features. | 1 年前 | |
Revert "[libc++] Introduce ABI sensitive areas to avoid requiring _LIBCPP_HIDE_FROM_ABI everywhere (#131156)" (#141756) This reverts commit c861fe8a71e64f3d2108c58147e7375cd9314521. Unfortunately, this use of hidden visibility attributes causes user-defined specializations of standard-library types to also be marked hidden by default, which is incorrect. See discussion thread on #131156. ...and also reverts the follow-up commits: Revert "[libc++] Add explicit ABI annotations to functions from the block runtime declared in <__functional/function.h> (#140592)" This reverts commit 3e4c9dc299c35155934688184319d391b298fff7. Revert "[libc++] Make ABI annotations explicit for windows-specific code (#140507)" This reverts commit f73287e623a6c2e4a3485832bc3e10860cd26eb5. Revert "[libc++][NFC] Replace a few "namespace std" with the correct macro (#140510)" This reverts commit 1d411f27c769a32cb22ce50b9dc4421e34fd40dd. | 1 年前 | |
[libc++] Refactor memory allocation in basic_string (#128423) This patch introduces a string-internal API to make the allocation and deallocation the long string simpler. Before this we had a lot of code duplication, so ensuring that things were actually correct was non-trivial. | 10 个月前 | |
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
[libc++] Properly implement array cookies in the ARM ABI (#160182) When we implemented array cookie support for hardening std::unique_ptr, the implementation was only done for the Itanium ABI. I did not initially realize that ARM was using a different ABI for array cookies, so unique_ptr should not have been hardened on ARM. However, we were also incorrectly setting the ABI-detection macro: we were pretending to be using a vanilla Itanium ABI when in reality the (similar but different) ARM ABI was in use. As a result, unique_ptr was using the wrong representation for array cookies on ARM, which fortunately only mattered in the case of overaligned types. This patch fixes that. rdar://160852193 | 9 个月前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
| 1 年前 | ||
[libc++] Replace __libcpp_is_final with a variable template (#167137) | 8 个月前 | |
[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 the implementation of destroy_at a bit (#165392) | 8 个月前 | |
[libc++] Extract destroy algorithms into separate headers (#126449) This patch separates the destroy algorithms from the primitive construct_at and destroy_at operations, which are conceptually not algorithms. This makes it easier to start using these destroy algorithms from upcoming relocation facilities. As part of this, it also implements std::destroy_at for arrays without relying on the std::destroy algorithm, which is conceptually a higher-level facility. | 1 年前 | |
| 1 年前 | ||
[libc++] Apply [[nodiscard]] to in/out_ptr (#167097) ...according to Coding Guidelines: [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. Changes to: - [x] inout_ptr() - [x] out_ptr() At the time of impelentation the [[nodiscard]] policy has not been established yet. --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
| 1 年前 | ||
[libc++][modules] Move __noexcept_move_assign_container out of __type_traits (#107140) That header depends on allocator traits, which is fundamentally tied to <memory>, not to <type_traits>. This breaks a cycle betweeen __type_traits and __memory. | 1 年前 | |
[libc++] Apply [[nodiscard]] to in/out_ptr (#167097) ...according to Coding Guidelines: [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. Changes to: - [x] inout_ptr() - [x] out_ptr() At the time of impelentation the [[nodiscard]] policy has not been established yet. --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
[NFC][libc++] Fix typo in libcxx/include/__memory/pointer_traits.h (#157304) * Apply the typo fix as a separate NFC patch from here: https://github.com/llvm/llvm-project/pull/134330/files#r2313015079 | 10 个月前 | |
[libc++] Extract destroy algorithms into separate headers (#126449) This patch separates the destroy algorithms from the primitive construct_at and destroy_at operations, which are conceptually not algorithms. This makes it easier to start using these destroy algorithms from upcoming relocation facilities. As part of this, it also implements std::destroy_at for arrays without relying on the std::destroy algorithm, which is conceptually a higher-level facility. | 1 年前 | |
[libc++] Extract destroy algorithms into separate headers (#126449) This patch separates the destroy algorithms from the primitive construct_at and destroy_at operations, which are conceptually not algorithms. This makes it easier to start using these destroy algorithms from upcoming relocation facilities. As part of this, it also implements std::destroy_at for arrays without relying on the std::destroy algorithm, which is conceptually a higher-level facility. | 1 年前 | |
[libc++] Granularize <new> includes (#119964) | 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 __memory/shared_count.h a bit (#160048) This removes a few checks that aren't required anymore and moves some code around to the places where it's actually used. | 10 个月前 | |
[libc++][memory] Applied [[nodiscard]] to smart pointers (#168483) Applied [[nodiscard]] where relevant to smart pointers and related functions. - [x] - std::unique_ptr - [x] - std::shared_ptr - [x] - std::weak_ptr See guidelines: - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant - [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. For example a locking constructor in unique_lock. --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
[libc++] Refactor<__type_traits/is_swappable.h> (#86822) This changes the is_swappable implementation to use variable templates first and basing the class templates on that. This avoids instantiating them when the _v versions are used, which are generally less resource intensive. | 2 年前 | |
[libc++] Remove some of the uses of aligned_storage inside the library (#161635) aligned_storage has been deprecated and will most likely be removed in a future version of C++. This patch removes some of its uses to avoid having to work around its removal in the future. | 8 个月前 | |
[libc++] Granularize <cstddef> includes (#108696) | 1 年前 | |
[libc++] Merge is_{,un}bounded_array.h into is_array.h (#167479) These headers are incredibly simple and closely related, so this merges them into a single one. | 8 个月前 | |
[libc++][memory] Applied [[nodiscard]] to smart pointers (#168483) Applied [[nodiscard]] where relevant to smart pointers and related functions. - [x] - std::unique_ptr - [x] - std::shared_ptr - [x] - std::weak_ptr See guidelines: - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant - [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. For example a locking constructor in unique_lock. --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
[libc++] Pass type information down to __libcpp_allocate (#118837) Currently, places where we call __libcpp_allocate must drop type information on the ground even when they actually have such information available. That is unfortunate since some toolchains and system allocators are able to provide improved security when they know what type is being allocated. This is the purpose of http://wg21.link/p2719, where we introduce a new variant of operator new which takes a type in its interface. A different but related issue is that std::allocator does not honor any in-class T::operator new since it is specified to call the global ::operator new instead. This patch closes the gap to make it trivial for implementations that provide typed memory allocators to actually benefit from that information in more contexts, and also makes libc++ forward-compatible with future proposals that would fix the existing defects in std::allocator. It also makes the internal allocation API higher level by operating on objects instead of operating on bytes of memory. Since this is a widely-used function and making this a template could have an impact on debug info sizes, I tried minimizing the number of templated layers by removing __do_deallocate_handle_size, which was easy to replace with a macro (and IMO this leads to cleaner code). | 1 年前 | |
| 1 年前 | ||
[libc++] Remove SFINAE on __tuple_impl constructors (#151654) The SFINAE isn't required, since the primary tuple class already does the SFINAE checks. This removes a bit of code that was only used for these constraints. This also moves the tuple_element specialization for tuple to __fwd/tuple.h to avoid a dependency on __tuple/sfinae_helpers.h (which should be moved in a follow-up). | 11 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 |