|
Revision tags: llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2 |
|
| #
f08df56d |
| 30-Jul-2024 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Implements P3107R5 in <format>. (#86713)
This adds the new std::enable_nonlocking_formatter_optimization trait in
<format>. This trait will be used in std::print to implement the
[libc++][format] Implements P3107R5 in <format>. (#86713)
This adds the new std::enable_nonlocking_formatter_optimization trait in
<format>. This trait will be used in std::print to implement the
performance benefits.
Implements parts of
- P3107R5 - Permit an efficient implementation of ``std::print``
show more ...
|
|
Revision tags: llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3 |
|
| #
beeb15b7 |
| 02-Apr-2024 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++][NFC] Remove a few unused <__availablity> includes (#86126)
|
|
Revision tags: llvmorg-18.1.2 |
|
| #
08766681 |
| 08-Mar-2024 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++][NFC] Move __format/format_fwd.h to __fwd/format.h (#84336)
|
|
Revision tags: llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init |
|
| #
9783f28c |
| 18-Dec-2023 |
Louis Dionne <ldionne.2@gmail.com> |
[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 benchmar
[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
show more ...
|
|
Revision tags: llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0 |
|
| #
3d334df5 |
| 16-Mar-2023 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++] Remove availability markup for std::format
std::format is currently experimental, so there is technically no deployment target requirement for it (since the only symbols required for it are
[libc++] Remove availability markup for std::format
std::format is currently experimental, so there is technically no deployment target requirement for it (since the only symbols required for it are in `libc++experimental.a`).
However, some parts of std::format depend indirectly on the floating point std::to_chars implementation, which does have deployment target requirements.
This patch removes all the availability format for std::format and updates the XFAILs in the tests to properly explain why they fail on old deployment targets, when they do. It also changes a couple of tests to avoid depending on floating-point std::to_chars when it isn't fundamental to the test.
Finally, some tests are marked as XFAIL but I added a comment saying
TODO FMT This test should not require std::to_chars(floating-point)
These tests do not fundamentally depend on floating-point std::to_chars, however they end up failing because calling std::format even without a floating-point argument to format will end up requiring floating-point std::to_chars. I believe this is an implementation artifact that could be avoided in all cases where we know the format string at compile-time. In the tests, I added the TODO comment only to the places where we could do better and actually avoid relying on floating-point std::to_chars because we know the format string at compile-time.
Differential Revision: https://reviews.llvm.org/D134598
show more ...
|
|
Revision tags: llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3 |
|
| #
4f15267d |
| 13-Feb-2023 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++][NFC] Replace _LIBCPP_STD_VER > x with _LIBCPP_STD_VER >= x
This change is almost fully mechanical. The only interesting change is in `generate_feature_test_macro_components.py` to generate
[libc++][NFC] Replace _LIBCPP_STD_VER > x with _LIBCPP_STD_VER >= x
This change is almost fully mechanical. The only interesting change is in `generate_feature_test_macro_components.py` to generate `_LIBCPP_STD_VER >=` instead. To avoid churn in the git-blame this commit should be added to the `.git-blame-ignore-revs` once committed.
Reviewed By: ldionne, var-const, #libc
Spies: jloser, libcxx-commits, arichardson, arphaman, wenlei
Differential Revision: https://reviews.llvm.org/D143962
show more ...
|
|
Revision tags: llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4 |
|
| #
eb6e13cb |
| 05-May-2022 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Adds formatter for tuple and pair
Implements parts of - P2286R8 Formatting Ranges
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D136775
|
| #
a595fcf9 |
| 04-Aug-2022 |
Mark de Wever <koraq@xs4all.nl> |
[NFC][libc++][format] Renames __char_type concept.
Move the concept to the concepts header and uses a name in the style of P2286.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews
[NFC][libc++][format] Renames __char_type concept.
Move the concept to the concepts header and uses a name in the style of P2286.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D131176
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
207e7e4a |
| 28-Dec-2021 |
Mark de Wever <koraq@xs4all.nl> |
[libc++[format][NFC] Removes dead code.
This removes a part of the now obsolete formater code. The removal also removes the _v2 suffix where it's no longer needed.
Depends on D128785
Reviewed By:
[libc++[format][NFC] Removes dead code.
This removes a part of the now obsolete formater code. The removal also removes the _v2 suffix where it's no longer needed.
Depends on D128785
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D128846
show more ...
|
| #
3cd4531b |
| 10-Jun-2022 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++] Granularize <iterator> includes
Reviewed By: ldionne, #libc
Spies: libcxx-commits, wenlei
Differential Revision: https://reviews.llvm.org/D127445
|
| #
d2baefae |
| 12-Mar-2022 |
Joe Loser <joeloser93@gmail.com> |
[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER > 17. NFCI.
All supported compilers that support C++20 now support concepts. So, remove `_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBC
[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER > 17. NFCI.
All supported compilers that support C++20 now support concepts. So, remove `_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBCPP_STD_VER > 17`. Similarly in the tests, remove `// UNSUPPORTED: libcpp-no-concepts`.
Differential Revision: https://reviews.llvm.org/D121528
show more ...
|
| #
52915d78 |
| 05-Mar-2022 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++] Granularize <utility> includes
Reviewed By: ldionne, #libc
Spies: EricWF, libcxx-commits, arphaman
Differential Revision: https://reviews.llvm.org/D120466
|
| #
368faaca |
| 28-Feb-2022 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++] Revert "Protect users from relying on detail headers" & related changes
This commit reverts 5aaefa51 (and also partly 7f285f48e77 and b6d75682f9, which were related to the original commit).
[libc++] Revert "Protect users from relying on detail headers" & related changes
This commit reverts 5aaefa51 (and also partly 7f285f48e77 and b6d75682f9, which were related to the original commit). As landed, 5aaefa51 had unintended consequences on some downstream bots and didn't have proper coverage upstream due to a few subtle things. Implementing this is something we should do in libc++, however we'll first need to address a few issues listed in https://reviews.llvm.org/D106124#3349710.
Differential Revision: https://reviews.llvm.org/D120683
show more ...
|
| #
5aaefa51 |
| 25-Feb-2022 |
Christopher Di Bella <cjdb@google.com> |
[libcxx][modules] protects users from relying on detail headers
libc++ has started splicing standard library headers into much more fine-grained content for maintainability. It's very likely that ou
[libcxx][modules] protects users from relying on detail headers
libc++ has started splicing standard library headers into much more fine-grained content for maintainability. It's very likely that outdated and naive tooling (some of which is outside of LLVM's scope) will suggest users include things such as <__ranges/access.h> instead of <ranges>, and Hyrum's law suggests that users will eventually begin to rely on this without the help of tooling. As such, this commit intends to protect users from themselves, by making it a hard error for anyone outside of the standard library to include libc++ detail headers.
Differential Revision: https://reviews.llvm.org/D106124
show more ...
|
| #
f87aa19b |
| 14-Feb-2022 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++] Move everything related solely to _LIBCPP_ASSERT to its own file
This is the first step towards disentangling the debug mode and assertions in libc++. This patch doesn't make any functional
[libc++] Move everything related solely to _LIBCPP_ASSERT to its own file
This is the first step towards disentangling the debug mode and assertions in libc++. This patch doesn't make any functional change: it simply moves _LIBCPP_ASSERT-related stuff to its own file so as to make it clear that libc++ assertions and the debug mode are different things. Future patches will make it possible to enable assertions without enabling the debug mode.
Differential Revision: https://reviews.llvm.org/D119769
show more ...
|
| #
2e2f3158 |
| 15-Feb-2022 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++] Granularize algorithm includes
Reviewed By: Mordante, ldionne, Quuxplusone, #libc, #libc_abi
Spies: #libc_vendors, libcxx-commits, miyuki
Differential Revision: https://reviews.llvm.org/D
[libc++] Granularize algorithm includes
Reviewed By: Mordante, ldionne, Quuxplusone, #libc, #libc_abi
Spies: #libc_vendors, libcxx-commits, miyuki
Differential Revision: https://reviews.llvm.org/D119667
show more ...
|
| #
2a8f9a5e |
| 14-Feb-2022 |
Nikolas Klauser <nikolasklauser@berlin.de> |
[libc++] Implement P0627R6 (Function to mark unreachable code)
Reviewed By: ldionne, Quuxplusone, #libc
Spies: arichardson, mstorsjo, libcxx-commits, mgorny
Differential Revision: https://reviews.
[libc++] Implement P0627R6 (Function to mark unreachable code)
Reviewed By: ldionne, Quuxplusone, #libc
Spies: arichardson, mstorsjo, libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D119152
show more ...
|
| #
11e4001b |
| 03-Feb-2022 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format][nfc] Header cleanup.
Remove the unneeded macro protection, forward declarations, and includes.
Reviewed By: #libc, Quuxplusone, ldionne, philnik
Differential Revision: https://rev
[libc++][format][nfc] Header cleanup.
Remove the unneeded macro protection, forward declarations, and includes.
Reviewed By: #libc, Quuxplusone, ldionne, philnik
Differential Revision: https://reviews.llvm.org/D118925
show more ...
|
| #
fa6b9e40 |
| 02-Feb-2022 |
Arthur O'Dwyer <arthur.j.odwyer@gmail.com> |
[libc++] Normalize all our '#pragma GCC system_header', and regression-test.
Now we'll notice if a header forgets to include this magic phrase.
Differential Revision: https://reviews.llvm.org/D1188
[libc++] Normalize all our '#pragma GCC system_header', and regression-test.
Now we'll notice if a header forgets to include this magic phrase.
Differential Revision: https://reviews.llvm.org/D118800
show more ...
|
| #
2b8b48c5 |
| 14-Dec-2021 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Disable default formatter.
[format.formatter.spec]/5 lists the requirements for the default formatter. The original implementation didn't implement this. This implements the default
[libc++][format] Disable default formatter.
[format.formatter.spec]/5 lists the requirements for the default formatter. The original implementation didn't implement this. This implements the default formatter according to the Standard.
This adds additional test to validate the default formatter is disabled and the required standard formatters are enabled.
While adding the tests it seems the formatters needed a constraint for the character types they were valid for.
Implements parts of: - P0645 Text Formatting
Depends on D115988
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D115989
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1, llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3, llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2 |
|
| #
db2944e3 |
| 14-Dec-2020 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Adds formatter floating-point.
This properly implements the formatter for floating-point types.
Completes: - P1652R1 Printf corner cases in std::format - LWG 3250 std::format: # (a
[libc++][format] Adds formatter floating-point.
This properly implements the formatter for floating-point types.
Completes: - P1652R1 Printf corner cases in std::format - LWG 3250 std::format: # (alternate form) for NaN and inf - LWG 3243 std::format and negative zeroes
Implements parts of: - P0645 Text Formatting
Reviewed By: #libc, ldionne, vitaut
Differential Revision: https://reviews.llvm.org/D114001
show more ...
|
| #
ed86610c |
| 19-Nov-2021 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][nfc] Move functions to a generic place.
This allows the floating-point formatter to use the same functions as the integral formatter. This was tested in D114001.
|
| #
3e9689d7 |
| 14-Dec-2020 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Adds integer formatter.
Implements the formatter for all fundamental integer types (except `char`, `wchar_t`, and `bool`). [format.formatter.spec]/2.3 For each charT, for each cv-un
[libc++][format] Adds integer formatter.
Implements the formatter for all fundamental integer types (except `char`, `wchar_t`, and `bool`). [format.formatter.spec]/2.3 For each charT, for each cv-unqualified arithmetic type ArithmeticT other than char, wchar_t, char8_t, char16_t, or char32_t, a specialization ``` template<> struct formatter<ArithmeticT, charT>; ``` This removes the stub implemented in D96664.
As an extension it adds partial support for 128-bit integer types.
Implements parts of: - P0645 Text Formatting - P1652 Printf corner cases in std::format
Completes: - LWG-3248 #b, #B, #o, #x, and #X presentation types misformat negative numbers
Reviewed By: #libc, ldionne, vitaut
Differential Revision: https://reviews.llvm.org/D103433
show more ...
|
| #
d550930a |
| 14-Dec-2020 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Adds string formatter.
Implements the formatter for all string types. [format.formatter.spec]/2.2 For each charT, the string type specializations ``` template<> struct formatter<c
[libc++][format] Adds string formatter.
Implements the formatter for all string types. [format.formatter.spec]/2.2 For each charT, the string type specializations ``` template<> struct formatter<charT*, charT>; template<> struct formatter<const charT*, charT>; template<size_t N> struct formatter<const charT[N], charT>; template<class traits, class Allocator> struct formatter<basic_string<charT, traits, Allocator>, charT>; template<class traits> struct formatter<basic_string_view<charT, traits>, charT>; ``` This removes the stub implemented in D96664.
Implements parts of: - P0645 Text Formatting - P1868 width: clarifying units of width and precision in std::format
Reviewed By: #libc, ldionne, vitaut
Differential Revision: https://reviews.llvm.org/D103425
show more ...
|
| #
a04a6ce7 |
| 14-Dec-2020 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Adds parser std-format-spec.
This implements the generic std.format.spec framework for all types.
The Unicode support will be added in a separate patch.
Implements parts of: - P06
[libc++][format] Adds parser std-format-spec.
This implements the generic std.format.spec framework for all types.
The Unicode support will be added in a separate patch.
Implements parts of: - P0645 Text Formatting
Completes: - LWG-3242 std::format: missing rules for arg-id in width and precision - P1892 Extended locale-specific presentation specifiers for std::format
Reviewed By: #libc, ldionne, vitaut
Differential Revision: https://reviews.llvm.org/D103368
show more ...
|