| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc++] Optimize num_get integral functions (#121795) --------------------------------------------------- Benchmark old new --------------------------------------------------- BM_num_get<bool> 86.5 ns 32.3 ns BM_num_get<long> 82.1 ns 30.3 ns BM_num_get<long long> 85.2 ns 33.4 ns BM_num_get<unsigned short> 85.3 ns 31.2 ns BM_num_get<unsigned int> 84.2 ns 31.1 ns BM_num_get<unsigned long> 83.6 ns 31.9 ns BM_num_get<unsigned long long> 87.7 ns 31.5 ns BM_num_get<float> 116 ns 114 ns BM_num_get<double> 114 ns 114 ns BM_num_get<long double> 113 ns 114 ns BM_num_get<void*> 151 ns 144 ns This patch applies multiple optimizations: - Stages two and three of do_get are merged and a custom integer parser has been implemented This avoids allocations, removes the need for strto{,u}ll and avoids __stage2_int_loop (avoiding extra writes to memory) - std::find has been replaced with __atoms_offset, which uses vector instructions to look for a character Fixes #158100 Fixes #158102 | 8 个月前 | |
[libc++][atomic] P2835R7: Expose std::atomic_ref's object address (#162236) Implements https://wg21.link/P2835R7 Closes #118377 # References - https://wg21.link/atomics.ref.generic.general - https://wg21.link/atomics.ref.int - https://wg21.link/atomics.ref.float - https://wg21.link/atomics.ref.pointer --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> | 9 个月前 | |
[libc++] Optimize std::has_single_bit (#133063) Clang translates most implementations of has_single_bit to (v ^ (v-1)) > v-1 - except the one definition libc++ actually uses. Proof of correctness: https://godbolt.org/z/d61bxW4r1 (Could also be fixed by teaching Clang to optimize better, but making source match output feels clearer to me. And it improves unoptimized performance.) | 8 个月前 | |
[libc++] Remove is_signed<T> use from <limits> (#168334) numeric_limits already has an is_signed member. We can use that instead of using std::is_signed. | 8 个月前 | |
[libcxx] Implement C++20 std::chrono::is_clock, std::chrono::is_clock_v (#160607) Implemented [[*time.traits.is.clock*]](https://eel.is/c++draft/time.traits.is.clock) from [P0355R7](https://wg21.link/p0355r7). This patch implements the C++20 feature is_clock and is_clock_v based on the documentation [on cppreference](https://en.cppreference.com/w/cpp/chrono/is_clock.html) Fixes #166049. | 8 个月前 | |
[libc++] Simplify std::strong_order (#164233) This patch does two things: 1) The branches for sizeof(_Dp) == sizeof(int32_t) and sizeof(_Dp) == sizeof(int64_t) are merged, since these are basically identical. 2) The branch where numeric_limits<_Dp>::radix != 2 is removed, since no platform we support (nor any I'm aware of) have a floating point type with radix != 2. This means that the branch is basically dead code. | 9 个月前 | |
[libc++][NFC] Merge add_{r,l}value_reference.h (#147022) The implementation is now quite simple, so it doesn't make a ton of sense to have these in separate headers. | 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++][hardening] Allow setting the assertion semantic via CMake. (#167636) Add a new CMake variable, LIBCXX_ASSERTION_SEMANTIC, that largely mirrors LIBCXX_HARDENING_MODE, except that it also supports a special value hardening_dependent that indicates the semantic will be selected based on the hardening mode in effect: - fast and extensive map to quick_enforce; - debug maps to enforce. | 8 个月前 | |
[libc++][NFC] Remove guard around noop_coroutine_handle.h (#160044) This check is always true, since all supported version of Clang have __builtin_coro_noop and the only other supported compiler is GCC. | 10 个月前 | |
[libc++] Introduce unversioned namespace macros (#133009) We've started using _LIBCPP_BEGIN_NAMESPACE_STD and _LIBCPP_END_NAMESPACE_STD for more than just the namespace for a while now. For example, we're using it to add visibility annotations to types. This works very well and avoids a bunch of annotations, but doesn't work for the few places where we have an unversioned namespace. This adds _LIBCPP_BEGIN_UNVERSIONED_NAMESPACE_STD and _LIBCPP_END_UNVERSIONED_NAMESPACE_STD to make it simpler to add new annotations consistently across the library as well as making it more explicit that the unversioned namespace is indeed intended. | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[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++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
| 8 个月前 | ||
[libc++] Enable Clang modules in most of the CI runs (#160251) Enabling modules makes the CI quite a bit faster with basically no downsides. The non-modules build is still tested through the generic-cxxab configurations, but most of the other CI runs on platforms with modules support now use modules. | 9 个月前 | |
[libc++] constexpr flat_multiset (#161016) Fixes https://github.com/llvm/llvm-project/issues/128676 | 8 个月前 | |
[libc++] Simplify the implementation of __formatter::__fill a bit (#147777) This replaces some SFINAE with if constexpr. | 8 个月前 | |
[libc++] Treat P0513R0 as a defect report against C++11 (#166690) P0513R0 is essentially a collective resolution paper of LWG2543, LWG2791, LWG2809, and LWG2817. Among these LWG issues, LWG2543 (conditionally enabled hash) and LWG2817 (hash<nullptr_t>) affect pre-C++17 utilities. We generally backport changes from LWG issues, so this patch backports the relevant parts of P0513R0. Although we provide hash<unique_ptr> as an extension in C++03 mode, as C++03 mode isn't encouraged now, this patch leaves hash<unique_ptr> unchanged in C++03 mode. | 8 个月前 | |
[libc++] Simplify <tuple> further (#156351) This essentially inlines __make_tuple_types and simplifies the support code. This significantly simplifies the implementation, since __make_tuple_types has multiple features, but the different places that use it only make use of a subset of the features. Inlining it separates concerns better and leads to less code in total. | 10 个月前 | |
| 1 年前 | ||
[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 个月前 | |
[libc++] Optimize num_get integral functions (#121795) --------------------------------------------------- Benchmark old new --------------------------------------------------- BM_num_get<bool> 86.5 ns 32.3 ns BM_num_get<long> 82.1 ns 30.3 ns BM_num_get<long long> 85.2 ns 33.4 ns BM_num_get<unsigned short> 85.3 ns 31.2 ns BM_num_get<unsigned int> 84.2 ns 31.1 ns BM_num_get<unsigned long> 83.6 ns 31.9 ns BM_num_get<unsigned long long> 87.7 ns 31.5 ns BM_num_get<float> 116 ns 114 ns BM_num_get<double> 114 ns 114 ns BM_num_get<long double> 113 ns 114 ns BM_num_get<void*> 151 ns 144 ns This patch applies multiple optimizations: - Stages two and three of do_get are merged and a custom integer parser has been implemented This avoids allocations, removes the need for strto{,u}ll and avoids __stage2_int_loop (avoiding extra writes to memory) - std::find has been replaced with __atoms_offset, which uses vector instructions to look for a character Fixes #158100 Fixes #158102 | 8 个月前 | |
[libc++] Fix LLVM 22 TODOs (#153367) We've upgraded to LLVM 22 now, so we can remove a bunch of TODOs. | 8 个月前 | |
[libc++] Remove is_signed<T> use from <limits> (#168334) numeric_limits already has an is_signed member. We can use that instead of using std::is_signed. | 8 个月前 | |
[libc++][NFC] Move __memory/aligned_alloc.h into src/ (#166172) This header is only ever used inside src/, so we might as well move it there. As a drive-by this also removes some dead code. | 8 个月前 | |
[libc++] Remove a few incorrect _LIBCPP_EXPORTED_FROM_ABI annotations (#132602) This has two benefits: - It is less likely that the macro will be copy-pasted around when unnecessary - We can drop _LIBCPP_HIDE_FROM_ABI from any member functions once we are able to make _LIBCPP_HIDE_FROM_ABI the default within libc++ | 11 个月前 | |
[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 个月前 | |
[libcxx][modules] Fix missing includes for windows (#158781) Previously, I was getting the following error when attempting to compile libc++ on windows with modules enabled. While building module 'std': In file included from <module-includes>:1: In file included from gen/third_party/libc++/src/include/algorithm:1865: In file included from gen/third_party/libc++/src/include/__algorithm/inplace_merge.h:28: In file included from gen/third_party/libc++/src/include/__memory/unique_temporary_buffer.h:17: In file included from gen/third_party/libc++/src/include/__memory/allocator.h:19: gen/third_party/libc++/src/include/__new/allocate.h(40,73): error: declaration of 'align_val_t' must be imported from module 'sys_stage1.sysroot_vcruntime_new_h' before it is required 40 | return static_cast<_Tp*>(__builtin_operator_new(__size, static_cast<align_val... | ^ ../../third_party/depot_tools/win_toolchain/vs_files/e4305f407e/VC/Tools/MSVC/14.44.35207/include/vcruntime_new.h(27,33): note: declaration here is not visible 27 | _VCRT_EXPORT_STD enum class align_val_t : size_t {}; | ^ | 8 个月前 | |
[libc++][numeric] Marked saturation artithmetic functions as [[nodiscard]] (#166898) ...according to Coding Guidelines: *[[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue.* # References - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant - https://github.com/llvm/llvm-project/pull/166524#issuecomment-3495567876 Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
[libc++] Granularize <locale> (#146650) | 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++] Avoid overloaded operator, for (T, Iter) cases (#161049) Several components in libc++ aren't defending against overloaded operator,(T, Iter) currently. Existing deleted overloads in test_iterators.h are insufficient for such cases. This PR adds corresponding deleted overloads with reversed order and fixes these libc++ components. - piecewise_linear_distribution's iterator pair constructor, - piecewise_linear_distribution::param_type's iterator pair constructor, - piecewise_constant_distribution's iterator pair constructor, - piecewise_constant_distribution::param_type's iterator pair constructor, - money_get::do_get, - money_put::do_put, and - num_put::do_put. | 8 个月前 | |
| 8 个月前 | ||
[libc++] Remove availability annotations that aren't required anymore (#161640) Apple dropped support for some older platforms, so we can also remove the annotations for them. See https://developer.apple.com/support/xcode/ for the supported versions. | 9 个月前 | |
[libc++] Fold __search_substring into _Traits::find in case the second string has length 1 (#160076) Apple M4: Benchmark Baseline Candidate Difference % Difference ----------------------------------------------------------- ---------- ----------- ------------ -------------- BM_string_literal/1024 16.99 16.79 -0.21 -1.21 BM_string_literal/128 3.44 3.34 -0.10 -2.88 BM_string_literal/16 1.80 1.69 -0.11 -5.93 BM_string_literal/2048 38.44 38.38 -0.07 -0.17 BM_string_literal/256 5.77 5.65 -0.12 -2.02 BM_string_literal/32 2.03 1.92 -0.11 -5.44 BM_string_literal/4096 73.92 73.74 -0.18 -0.25 BM_string_literal/512 9.49 9.41 -0.08 -0.84 BM_string_literal/64 2.59 2.45 -0.14 -5.38 BM_string_literal/8 1.79 1.69 -0.11 -5.90 BM_string_literal/8192 132.09 131.81 -0.28 -0.21 | 10 个月前 | |
[libc++] Optimize num_get integral functions (#121795) --------------------------------------------------- Benchmark old new --------------------------------------------------- BM_num_get<bool> 86.5 ns 32.3 ns BM_num_get<long> 82.1 ns 30.3 ns BM_num_get<long long> 85.2 ns 33.4 ns BM_num_get<unsigned short> 85.3 ns 31.2 ns BM_num_get<unsigned int> 84.2 ns 31.1 ns BM_num_get<unsigned long> 83.6 ns 31.9 ns BM_num_get<unsigned long long> 87.7 ns 31.5 ns BM_num_get<float> 116 ns 114 ns BM_num_get<double> 114 ns 114 ns BM_num_get<long double> 113 ns 114 ns BM_num_get<void*> 151 ns 144 ns This patch applies multiple optimizations: - Stages two and three of do_get are merged and a custom integer parser has been implemented This avoids allocations, removes the need for strto{,u}ll and avoids __stage2_int_loop (avoiding extra writes to memory) - std::find has been replaced with __atoms_offset, which uses vector instructions to look for a character Fixes #158100 Fixes #158102 | 8 个月前 | |
[libc++] Remove a few incorrect _LIBCPP_EXPORTED_FROM_ABI annotations (#132602) This has two benefits: - It is less likely that the macro will be copy-pasted around when unnecessary - We can drop _LIBCPP_HIDE_FROM_ABI from any member functions once we are able to make _LIBCPP_HIDE_FROM_ABI the default within libc++ | 11 个月前 | |
[libc++] Remove availability annotations that aren't required anymore (#161640) Apple dropped support for some older platforms, so we can also remove the annotations for them. See https://developer.apple.com/support/xcode/ for the supported versions. | 9 个月前 | |
[libc++] Replace the last uses of __tuple_types with __type_list (#167214) __tuple_types is at this point just a __type_list with a weird name, so we can just replace the few places it's still used. | 8 个月前 | |
[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++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
| 1 年前 | ||
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[libc++] Granularize <locale> (#146650) | 1 年前 | |
[libc++] Fix __gnu_cxx::hash_multiset copy construction (#160466) | 10 个月前 | |
[libc++][NFC] Move __memory/aligned_alloc.h into src/ (#166172) This header is only ever used inside src/, so we might as well move it there. As a drive-by this also removes some dead code. | 8 个月前 | |
[libc++][hardening] Add a greppable prefix to assertion messages. (#150560) The current assertion failure messages produced by Hardening are not very grep-friendly (the common part is rarther generic and requires wildcards to match). While it's possible to use __FILE__ for grepping, it's easier and more straighforward to simply add a libc++-specific prefix; this is especially important for the planned observe mode that might produce many assertion failure messages over the course of the program's execution that later need to be filtered and examined. | 11 个月前 | |
[libc++] Replace __libcpp_{ctz, clz} with __builtin_{ctzg, clzg} (#133920) __libcpp_{ctz, clz} were previously used as fallbacks for __builtin_{ctzg, clzg} to ensure compatibility with older compilers (Clang 18 and earlier), as __builtin_{ctzg, clzg} became available in Clang 19. Now that support for Clang 18 has been officially dropped in #130142, we can now safely replace all instances of __libcpp_{ctz, clz} with __count{l,r}_zero (which internally call __builtin_{ctzg, clzg} and eliminate the fallback logic. Closes #131179. | 1 年前 | |
[libc++][NFC] Move __memory/aligned_alloc.h into src/ (#166172) This header is only ever used inside src/, so we might as well move it there. As a drive-by this also removes some dead code. | 8 个月前 | |
[libc++][hardening] Allow setting the assertion semantic via CMake. (#167636) Add a new CMake variable, LIBCXX_ASSERTION_SEMANTIC, that largely mirrors LIBCXX_HARDENING_MODE, except that it also supports a special value hardening_dependent that indicates the semantic will be selected based on the hardening mode in effect: - fast and extensive map to quick_enforce; - debug maps to enforce. | 8 个月前 | |
| 8 个月前 | ||
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[libc++][hardening] Add an experimental function to log hardening errors (#149452) Unlike verbose_abort, this function merely logs the error but does not terminate execution. It is intended to make it possible to implement the observe semantic for Hardening. | 1 年前 | |
[libc++] Do not guard inclusion of wchar.h with _LIBCPP_HAS_WIDE_CHARACTERS (#126924) mbstate_t needs to be visible to libcpp, even when it is not providing wide character functionality (i.e. _LIBCPP_HAS_WIDE_CHARACTERS is turned off) and thus not using any of the C library's wide character functions. There are C libraries (such as newlib-nano/nanolib/picolibc) which do provide their definition of mbstate_t in <wchar.h> even though they do not come with wide character functions. Since there is a way to conditionally include the C library's <wchar.h> only if it exists, we should rely on the fact that if it exists, it will provide mbstate_t. Removing this guard will allow using libc++ on top of newlib-nano/picolibc while not breaking the cases where it is used on top of a C library which doesn't provide <wchar.h> (since it would then still go look for <uchar.h> or error out). | 1 年前 | |
[libc++][NFC] Remove special handling for __hash_value_type in <__node_handle> (#147271) We're not instantiating __hash_value_type anymore, so we don't need any special handling of it here. | 1 年前 | |
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[libc++] cuchar redeclares ::mbstate_t when it's in its own clang module When cuchar is compiled independently on platforms that don't have <uchar.h>, it doesn't get a declaration of mbstate_t, and so makes an empty declaration for ::mbstate_t. That conflicts with the declarations in __mbstate_t.h and cwchar since both of those headers do get mbstate_t before making ::mbstate_t. Change __mbstate_t.h to just get the underlying declaration for mbstate_t and not make a declaration for ::mbstate_t. Include __mbstate_t.h in uchar.h and wchar.h when their next headers aren't available so that at least mbstate_t gets defined. Add __std_mbstate_t.h to declare ::mbstate_t for headers that need that when cuchar or cwchar aren't available (because either _LIBCPP_HAS_NO_WIDE_CHARACTERS or _LIBCPP_CXX03_LANG). Reviewed By: ldionne, Mordante, #libc, philnik Differential Revision: https://reviews.llvm.org/D148542 | 3 年前 | |
[libc++] Optimize __tree copy/move constructor/assignment with allocator (#163558) This patch applies the same optimization as implemented in #151304 to the overloads taking an allocator as the second argument. Apple M4: Benchmark old new Difference % Difference ----------------------------------------------------------- -------------- -------------- ------------ -------------- std::map<int,_int>::ctor(&&,_different_allocs)/0 14.59 12.78 -1.81 -12.41% std::map<int,_int>::ctor(&&,_different_allocs)/1024 16407.05 6265.11 -10141.94 -61.81% std::map<int,_int>::ctor(&&,_different_allocs)/32 395.99 199.76 -196.23 -49.56% std::map<int,_int>::ctor(&&,_different_allocs)/8192 141478.67 53767.84 -87710.83 -62.00% std::map<int,_int>::ctor(const&,_alloc)/0 12.83 12.71 -0.12 -0.94% std::map<int,_int>::ctor(const&,_alloc)/1024 9979.71 7849.11 -2130.59 -21.35% std::map<int,_int>::ctor(const&,_alloc)/32 283.82 266.05 -17.77 -6.26% std::map<int,_int>::ctor(const&,_alloc)/8192 81418.63 63190.41 -18228.21 -22.39% std::map<std::string,_int>::ctor(&&,_different_allocs)/0 14.58 12.68 -1.90 -13.00% std::map<std::string,_int>::ctor(&&,_different_allocs)/1024 19513.56 7806.04 -11707.52 -60.00% std::map<std::string,_int>::ctor(&&,_different_allocs)/32 477.80 247.28 -230.52 -48.25% std::map<std::string,_int>::ctor(&&,_different_allocs)/8192 504558.78 69592.21 -434966.56 -86.21% std::map<std::string,_int>::ctor(const&,_alloc)/0 12.64 12.60 -0.04 -0.33% std::map<std::string,_int>::ctor(const&,_alloc)/1024 43198.53 37220.54 -5977.99 -13.84% std::map<std::string,_int>::ctor(const&,_alloc)/32 928.39 867.03 -61.36 -6.61% std::map<std::string,_int>::ctor(const&,_alloc)/8192 461313.81 389200.82 -72112.99 -15.63% | 8 个月前 | |
Fixing conflicting macro definitions between curses.h and the standard library. POSIX allows certain macros to exist with generic names (i.e. refresh(), move(), and erase()) to exist in curses.h which conflict with functions found in std::filesystem, among others. This patch undefs the macros in question and adds them to LIBCPP_PUSH_MACROS and LIBCPP_POP_MACROS. Reviewed By: #libc, philnik, ldionne Differential Revision: https://reviews.llvm.org/D147356 | 3 年前 | |
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++] Introduce the _LIBCPP_VERBOSE_TRAP macro (#148262) Split out the calls to __builtin_verbose_trap into a separate header. This is just a refactoring to make the code a bit more structured. | 1 年前 | |
[libc++] Backport segmented iterator optimization for std::for_each to C++11 (#134960) Previously, the segmented iterator optimization for std::for_each was restricted to C++23 and later due to its dependency on __movable_box, which is not available in earlier standards. This patch eliminates that restriction, enabling consistent optimizations starting from C++11. By backporting this enhancement, we improve performance across older standards and create opportunities to extend similar optimizations to other algorithms by forwarding their calls to std::for_each. | 1 年前 | |
[libc++][any] Applied [[nodiscard]] (#168826) [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant | 8 个月前 | |
[libc++][array] Applied [[nodiscard]] (#168829) [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> | 8 个月前 | |
[libc++] Don't implement <stdatomic.h> before C++23 (#123130) https://github.com/llvm/llvm-project/pull/95498 implemented a libc++ extension where <stdatomic.h> would forward to <atomic> even before C++23. Unfortunately, this was found to be a breaking change (with fairly widespread impact) since that changes whether _Atomic(T) is a C style atomic or std::atomic<T>. In principle, this can even be an ABI break. We generally don't implement extensions in libc++ because they cause so many problems, and that extension had been accepted because it was deemed pretty small and only a quality of life improvement. Since it has widespread impact on valid C++20 (and before) code, this patch removes the extension before we ship it in any public release. | 1 年前 | |
[libc++] Remove availability annotations that aren't required anymore (#161640) Apple dropped support for some older platforms, so we can also remove the annotations for them. See https://developer.apple.com/support/xcode/ for the supported versions. | 9 个月前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++] Use _BitInt and __builtin_popcountg in bitset::count() (#160679) This has multiple benefits: 1) The compiler has to do way less work to figure out things fold into a simple popcount, improving compile times quite a bit 2) The compiler inlines better, since the compile doesn't have to do complicated optimizations to get to the same point. Looking at the pipeline, it seems that without this, LLVM has to go all the way to GVN to get to the same code as there is after the first InstCombine pass with this change. Currently this applies only to bitsets with at most 64 bits, but that is by far the most common case. | 10 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Fix header deprecations (#163356) Currently, there are no diagnostics issued when including a deprecated header, since the diagnostic is issued inside a system header. This patch fixes that by using #warning instead, which also simplifies the implementation of the deprecation warnings. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libcxx] Implement C++20 std::chrono::is_clock, std::chrono::is_clock_v (#160607) Implemented [[*time.traits.is.clock*]](https://eel.is/c++draft/time.traits.is.clock) from [P0355R7](https://wg21.link/p0355r7). This patch implements the C++20 feature is_clock and is_clock_v based on the documentation [on cppreference](https://en.cppreference.com/w/cpp/chrono/is_clock.html) Fixes #166049. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Fix header deprecations (#163356) Currently, there are no diagnostics issued when including a deprecated header, since the diagnostic is issued inside a system header. This patch fixes that by using #warning instead, which also simplifies the implementation of the deprecation warnings. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Simplify __promote (#136101) This avoids instantiating an extra class for every variant __promote is used in. | 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++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++] Fix no-localisation CI failure on <complex> (#145213) | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++] Remove availability annotations that aren't required anymore (#161640) Apple dropped support for some older platforms, so we can also remove the annotations for them. See https://developer.apple.com/support/xcode/ for the supported versions. | 9 个月前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Fix header deprecations (#163356) Currently, there are no diagnostics issued when including a deprecated header, since the diagnostic is issued inside a system header. This patch fixes that by using #warning instead, which also simplifies the implementation of the deprecation warnings. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Fix header deprecations (#163356) Currently, there are no diagnostics issued when including a deprecated header, since the diagnostic is issued inside a system header. This patch fixes that by using #warning instead, which also simplifies the implementation of the deprecation warnings. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Fix header deprecations (#163356) Currently, there are no diagnostics issued when including a deprecated header, since the diagnostic is issued inside a system header. This patch fixes that by using #warning instead, which also simplifies the implementation of the deprecation warnings. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[NFC][libc++] Guard against operator& hijacking. (#128351) This set usage of operator& instead of std::addressof seems not be easy to "abuse". Some seem easy to misuse, like basic_ostream::operator<<, trying to do that results in compilation errors since the widen function is not specialized for the hijacking character type. Hence there are no tests. | 1 年前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++] Remove <cstdlib> include from <exception> (#166340) | 8 个月前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
| 1 年前 | ||
| 1 年前 | ||
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++][forward_list] Applied [[nodiscard]] (#169019) [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant | 8 个月前 | |
| 8 个月前 | ||
[libc++] P2655R3 common_reference_t of reference_wrapper Should Be a Reference Type (#141408) Fixes #105260 This patch applies the change as a DR to C++20. The rationale is that the paper is more like a bug fix. It does not introduce new features, it simply changes an existing behaviour (as a bug fix). MSVC STL DRed this paper to C++20 as well. | 1 年前 | |
[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 个月前 | |
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++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++] Granularize <locale> (#146650) | 1 年前 | |
[libc++] Don't skip localization-related headers in header tests (#134877) When localization is disabled, we used to skip testing a lot of headers. However, these headers are now "no-ops" when localization is disabled, so they can actually be included. As such, we should test their inclusion in our usual header inclusion tests. | 1 年前 | |
| 1 年前 | ||
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][istream] P3223R2: Making std::istream::ignore less surprising (#147007) Implements https://wg21.link/P3223R2 as a DR as, as recommended in https://github.com/cplusplus/papers/issues/1871#issuecomment-2993018698. Resolves -1L ambiguity. Closes #148178 | 9 个月前 | |
[libc++][ranges] Ensure range access CPOs are provided in <iterator> (#151745) Per [range.access.general]/1, these CPOs are also provided in <iterator>. Currently only some of them are provided via transitive inclusion when only <iterator> is included. Drive-by: Add an entry for ranges::reserve_hint in the general test file for CPOs. | 11 个月前 | |
[libc++] Remove availability annotations that aren't required anymore (#161640) Apple dropped support for some older platforms, so we can also remove the annotations for them. See https://developer.apple.com/support/xcode/ for the supported versions. | 9 个月前 | |
[libc++] Remove is_signed<T> use from <limits> (#168334) numeric_limits already has an is_signed member. We can use that instead of using std::is_signed. | 8 个月前 | |
[libc++][list] Applied [[nodiscard]] (#169015) [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant | 8 个月前 | |
[libc++] Granularize <locale> (#146650) | 1 年前 | |
[libc++] Optimize __tree copy/move constructor/assignment with allocator (#163558) This patch applies the same optimization as implemented in #151304 to the overloads taking an allocator as the second argument. Apple M4: Benchmark old new Difference % Difference ----------------------------------------------------------- -------------- -------------- ------------ -------------- std::map<int,_int>::ctor(&&,_different_allocs)/0 14.59 12.78 -1.81 -12.41% std::map<int,_int>::ctor(&&,_different_allocs)/1024 16407.05 6265.11 -10141.94 -61.81% std::map<int,_int>::ctor(&&,_different_allocs)/32 395.99 199.76 -196.23 -49.56% std::map<int,_int>::ctor(&&,_different_allocs)/8192 141478.67 53767.84 -87710.83 -62.00% std::map<int,_int>::ctor(const&,_alloc)/0 12.83 12.71 -0.12 -0.94% std::map<int,_int>::ctor(const&,_alloc)/1024 9979.71 7849.11 -2130.59 -21.35% std::map<int,_int>::ctor(const&,_alloc)/32 283.82 266.05 -17.77 -6.26% std::map<int,_int>::ctor(const&,_alloc)/8192 81418.63 63190.41 -18228.21 -22.39% std::map<std::string,_int>::ctor(&&,_different_allocs)/0 14.58 12.68 -1.90 -13.00% std::map<std::string,_int>::ctor(&&,_different_allocs)/1024 19513.56 7806.04 -11707.52 -60.00% std::map<std::string,_int>::ctor(&&,_different_allocs)/32 477.80 247.28 -230.52 -48.25% std::map<std::string,_int>::ctor(&&,_different_allocs)/8192 504558.78 69592.21 -434966.56 -86.21% std::map<std::string,_int>::ctor(const&,_alloc)/0 12.64 12.60 -0.04 -0.33% std::map<std::string,_int>::ctor(const&,_alloc)/1024 43198.53 37220.54 -5977.99 -13.84% std::map<std::string,_int>::ctor(const&,_alloc)/32 928.39 867.03 -61.36 -6.61% std::map<std::string,_int>::ctor(const&,_alloc)/8192 461313.81 389200.82 -72112.99 -15.63% | 8 个月前 | |
[libc++] Workaround for a bug of overloads in MS UCRT's <math.h> (#149234) MS UCRT seems confused on the status of LWG1327, and still provides pre-LWG1327 overload set the related math functions, which can't handle integer types as required. It is probably that UCRT won't fixed this in a near future, per https://developercommunity.visualstudio.com/t/10294165. Before C++20, libc++ worked around this bug by relying on -fdelayed-template-parsing. However, this non-conforming option is off by default since C++20. I think we should use requires instead. --------- Co-authored-by: Louis Dionne <ldionne.2@gmail.com> | 11 个月前 | |
[libcxx] Include __fwd/span.h in <mdspan> This patch includes __fwd/span.h in <mdspan> so that we get the declaration of dynamic_extent inside <mdspan>. We also clean up quite a few tests that were manually included <span> for dynamic_extent. This is based on feedback from #142693. Reviewers: philnik777, ldionne Reviewed By: philnik777 Pull Request: https://github.com/llvm/llvm-project/pull/142925 | 1 年前 | |
| 1 年前 | ||
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++][NFC] Move __memory/aligned_alloc.h into src/ (#166172) This header is only ever used inside src/, so we might as well move it there. As a drive-by this also removes some dead code. | 8 个月前 | |
[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++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++] Implement ranges::iota (#68494) # Overview As a disclaimer, this is my first PR to LLVM and while I've tried to ensure I've followed the LLVM and libc++ contributing guidelines, there's probably a good chance I missed something. If I have, just let me know and I'll try to correct it as soon as I can. This PR implements std::ranges::iota and std::ranges::out_value_result outlined in [P2440r1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2440r1.html). As outlined in the paper above, I've: - Implemented out_value_result and added to <algorithm> - Added out_value_result, iota_result, and two overloads of iota to std::ranges in <numeric> - Updated the version macro __cpp_lib_ranges_iota in <version> I've also added tests for ranges::iota and ranges::out_value_result. Lastly, I added those structs to the appropriate module files. Partially implements #105184 EDIT: Forgot to mention in the original post, thanks to @hawkinsw for taking a look at a preliminary version of this PR! # TODOs - [x] Updating the range [status doc](https://github.com/jamesETsmith/llvm-project/blob/main/libcxx/docs/Status/RangesMajorFeatures.csv) - [x] Ensure all comments from https://reviews.llvm.org/D121436 are addressed here - [X] EDIT (I'll do this in a separate PR). ~~I'm open to implementing the rest of P2440r1 (ranges::shift_left and ranges::shift_right) if that's ok, I just wanted to get feedback on ranges::iota first~~ - [x] I've been having trouble building the modules locally and want to make sure that's working properly Closes: #134060 | 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++] Granularize <locale> (#146650) | 1 年前 | |
[libc++] Diagnose passing null pointers to a bunch of APIs (#148585) | 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++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][ranges] P3060R3: Add std::views::indices(n) (#146823) Implements [P3060R3](https://wg21.link/P3060R3) Closes #148175 # References - https://github.com/cplusplus/draft/issues/7966 - https://github.com/cplusplus/draft/pull/8006 - https://wg21.link/customization.point.object - https://wg21.link/range.iota.overview - https://wg21.link/ranges.syn --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> Co-authored-by: A. Jiang <de34@live.cn> | 9 个月前 | |
| 1 年前 | ||
| 1 年前 | ||
[libc++] Refactor internal index_sequence API to match the public one (#149475) The internal API is a lot more complicated than it actually needs to be. This refactors the internal API to match the features and names of the public one. | 1 年前 | |
[libc++] Remove availability annotations that aren't required anymore (#161640) Apple dropped support for some older platforms, so we can also remove the annotations for them. See https://developer.apple.com/support/xcode/ for the supported versions. | 9 个月前 | |
[libc++] Optimize __tree copy/move constructor/assignment with allocator (#163558) This patch applies the same optimization as implemented in #151304 to the overloads taking an allocator as the second argument. Apple M4: Benchmark old new Difference % Difference ----------------------------------------------------------- -------------- -------------- ------------ -------------- std::map<int,_int>::ctor(&&,_different_allocs)/0 14.59 12.78 -1.81 -12.41% std::map<int,_int>::ctor(&&,_different_allocs)/1024 16407.05 6265.11 -10141.94 -61.81% std::map<int,_int>::ctor(&&,_different_allocs)/32 395.99 199.76 -196.23 -49.56% std::map<int,_int>::ctor(&&,_different_allocs)/8192 141478.67 53767.84 -87710.83 -62.00% std::map<int,_int>::ctor(const&,_alloc)/0 12.83 12.71 -0.12 -0.94% std::map<int,_int>::ctor(const&,_alloc)/1024 9979.71 7849.11 -2130.59 -21.35% std::map<int,_int>::ctor(const&,_alloc)/32 283.82 266.05 -17.77 -6.26% std::map<int,_int>::ctor(const&,_alloc)/8192 81418.63 63190.41 -18228.21 -22.39% std::map<std::string,_int>::ctor(&&,_different_allocs)/0 14.58 12.68 -1.90 -13.00% std::map<std::string,_int>::ctor(&&,_different_allocs)/1024 19513.56 7806.04 -11707.52 -60.00% std::map<std::string,_int>::ctor(&&,_different_allocs)/32 477.80 247.28 -230.52 -48.25% std::map<std::string,_int>::ctor(&&,_different_allocs)/8192 504558.78 69592.21 -434966.56 -86.21% std::map<std::string,_int>::ctor(const&,_alloc)/0 12.64 12.60 -0.04 -0.33% std::map<std::string,_int>::ctor(const&,_alloc)/1024 43198.53 37220.54 -5977.99 -13.84% std::map<std::string,_int>::ctor(const&,_alloc)/32 928.39 867.03 -61.36 -6.61% std::map<std::string,_int>::ctor(const&,_alloc)/8192 461313.81 389200.82 -72112.99 -15.63% | 8 个月前 | |
[libc++] Add the thread safety annotations unconditionally (#117497) For these annotations to do anything you need -Wthread-safety, in which case users most likely enable them anyways. This avoids that users have to explictly define a macro just to use the feature they already had to opt-in to. | 1 年前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++][span] Mark functions as [[nodiscard]] (#168033) https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant --------- Co-authored-by: Hristo Hristov <zingam@outlook.com> Co-authored-by: Nikolas Klauser <nikolasklauser@berlin.de> | 8 个月前 | |
[libc++][NFC] Refactor __is_allocator to be a variable template (#159584) | 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++] Don't implement <stdatomic.h> before C++23 (#123130) https://github.com/llvm/llvm-project/pull/95498 implemented a libc++ extension where <stdatomic.h> would forward to <atomic> even before C++23. Unfortunately, this was found to be a breaking change (with fairly widespread impact) since that changes whether _Atomic(T) is a C style atomic or std::atomic<T>. In principle, this can even be an ABI break. We generally don't implement extensions in libc++ because they cause so many problems, and that extension had been accepted because it was deemed pretty small and only a quality of life improvement. Since it has widespread impact on valid C++20 (and before) code, this patch removes the extension before we ship it in any public release. | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
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++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++] Move std::abs into __math/abs.h (#139586) template <class = int> is also added to our implementations to avoid an ambiguity between the libc's version and our version when both are visible. This avoids including <stdlib.h> in <math.h>. | 1 年前 | |
[libc++][C++03] Remove headers which don't provide anything (#134044) This patch removes all of the frozen headers which don't provide anything. Basically any header that's C++11-or-later is removed from the frozen headers. This is part of https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. | 1 年前 | |
[libc++] Add internal checks for some basic_streambuf invariants (#144602) These invariants are always expected to hold, however it's not always clear that they do. Adding explicit checks for these invariants inside non-trivial functions of basic_streambuf makes that clear. | 11 个月前 | |
[libc++][string] Applied [[nodiscard]] to non-member functions (#169330) [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][string_view] Applied [[nodiscard]] (#169010) [[nodiscard]] should be applied to functions where discarding the return value is most likely a correctness issue. - https://libcxx.llvm.org/CodingGuidelines.html#apply-nodiscard-where-relevant | 8 个月前 | |
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++] Don't skip localization-related headers in header tests (#134877) When localization is disabled, we used to skip testing a lot of headers. However, these headers are now "no-ops" when localization is disabled, so they can actually be included. As such, we should test their inclusion in our usual header inclusion tests. | 1 年前 | |
[libc++] Backport segmented iterator optimization for std::for_each to C++11 (#134960) Previously, the segmented iterator optimization for std::for_each was restricted to C++23 and later due to its dependency on __movable_box, which is not available in earlier standards. This patch eliminates that restriction, enabling consistent optimizations starting from C++11. By backporting this enhancement, we improve performance across older standards and create opportunities to extend similar optimizations to other algorithms by forwarding their calls to std::for_each. | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[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 个月前 | |
| 1 年前 | ||
[libc++][NFC] Make __type_info_implementations a namespace (#166339) There doesn't seem much of a reason why this should be a struct. Make it a namespace instead. | 8 个月前 | |
[libc++][C++03] Use __cxx03/ headers in C++03 mode (#109002) This patch implements the forwarding to frozen C++03 headers as discussed in https://discourse.llvm.org/t/rfc-freezing-c-03-headers-in-libc. In the RFC, we initially proposed selecting the right headers from the Clang driver, however consensus seemed to steer towards handling this in the library itself. This patch implements that direction. At a high level, the changes basically amount to making each public header look like this: // inside <vector> #ifdef _LIBCPP_CXX03_LANG # include <__cxx03/vector> #else // normal <vector> content #endif In most cases, public headers are simple umbrella headers so there isn't much code in the #else branch. In other cases, the #else branch contains the actual implementation of the header. | 1 年前 | |
[libc++][NFC] Refactor __is_allocator to be a variable template (#159584) | 10 个月前 | |
[libc++] Remove a few unused includes (#165687) | 8 个月前 | |
| 1 年前 | ||
[libc++] Use std::__{scope,exception}_guard throughout the code base (#161322) This simplifies the code quite a bit and seems to improve code size slightly in some cases. | 9 个月前 | |
[libc++] Remove __is_replaceable emulation (#167355) The Trivial Relocation feature has been removed from the C++26 working draft. Based on discussions in Kona, it is unlikely that the "replaceable" type concept will come back in the C++29 time frame. Since we don't have a use for the type trait in the library at the moment, remove the code associated to it. If we end up needing something like it in the future, we can always add it back. | 8 个月前 | |
[libc++] Backport segmented iterator optimization for std::for_each to C++11 (#134960) Previously, the segmented iterator optimization for std::for_each was restricted to C++23 and later due to its dependency on __movable_box, which is not available in earlier standards. This patch eliminates that restriction, enabling consistent optimizations starting from C++11. By backporting this enhancement, we improve performance across older standards and create opportunities to extend similar optimizations to other algorithms by forwarding their calls to std::for_each. | 1 年前 | |
[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 个月前 | |
[libcxx] Fix the #endif comments (#120949) The order of comments is swapped. | 1 年前 | |
[libc++][C++03] Remove some of the C++03-specific C wrapper headers (#163772) include_next doesn't work very well with the C++03 headers and modules. Since these specific headers are very self-contained there isn't much of a reason to split them into C++03/non-C++03 headers, so let's just remove them. The few C wrapper headers that aren't as self-contained will be refactored in a separate patch. | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 3 年前 | ||
| 8 个月前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 11 个月前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 8 个月前 | ||
| 1 年前 | ||
| 9 个月前 |