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 |
|
#
09e3a360 |
| 16-Sep-2024 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++][modules] Fix missing and incorrect includes (#108850)
This patch adds a large number of missing includes in the libc++ headers
and the test suite. Those were found as part of the effort to
[libc++][modules] Fix missing and incorrect includes (#108850)
This patch adds a large number of missing includes in the libc++ headers
and the test suite. Those were found as part of the effort to move
towards a mostly monolithic top-level std module.
show more ...
|
Revision tags: llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2 |
|
#
6a54dfbf |
| 31-Jul-2024 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++][NFC] Add missing license headers
Also standardize the license comment in several files where it was different from what we normally do.
|
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 |
|
#
ad76a859 |
| 25-Apr-2024 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Improves escaping. (#88283)
The change increments the size of the lookup table considerably. The
table has an "upper boundary" check. The removal of the code units with
the proper
[libc++][format] Improves escaping. (#88283)
The change increments the size of the lookup table considerably. The
table has an "upper boundary" check. The removal of the code units with
the property Grapheme_Extend=Yes removes the range E0100..E01EF. This
breaks the trailing large continuous section in two parts. This will be
improved in a followup patch.
Implements:
- P2713R1 Escaping improvements in std::format
- LWG3965 Incorrect example in [format.string.escaped] p3 for formatting
of combining characters
```
---------------------------------------------------------
Benchmark Before After
---------------------------------------------------------
BM_ascii_escaped<char> 95696 ns 110704 ns
BM_unicode_escaped<char> 89311 ns 101371 ns
BM_cyrillic_escaped<char> 58633 ns 63329 ns
BM_japanese_escaped<char> 44500 ns 41223 ns
BM_emoji_escaped<char> 99156 ns 111022 ns
BM_ascii_escaped<wchar_t> 92245 ns 112441 ns
BM_unicode_escaped<wchar_t> 80970 ns 102776 ns
BM_cyrillic_escaped<wchar_t> 51253 ns 58977 ns
BM_japanese_escaped<wchar_t> 37252 ns 36885 ns
BM_emoji_escaped<wchar_t> 96226 ns 115885 ns
```
show more ...
|
Revision tags: llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4 |
|
#
1197fcab |
| 23-Feb-2024 |
Abhina Sree <69635948+abhina-sree@users.noreply.github.com> |
[libcxx][test] Change UNSUPPORTED to XFAIL for target-related failures (#81513)
This is a followup from this discussion
https://github.com/llvm/llvm-project/pull/80735#discussion_r1486586017
to ma
[libcxx][test] Change UNSUPPORTED to XFAIL for target-related failures (#81513)
This is a followup from this discussion
https://github.com/llvm/llvm-project/pull/80735#discussion_r1486586017
to mark targets that were initially marked as UNSUPPORTED with an XFAIL
instead.
show more ...
|
Revision tags: llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init |
|
#
69a10e0e |
| 10-Dec-2023 |
Stephan T. Lavavej <stl@nuwen.net> |
[libc++][test] Consistently use `TEST_SHORT_WCHAR` (#74958)
Found while running libc++'s test suite with MSVC's STL.
* In `escaped_output.unicode.pass.cpp`, replace `_LIBCPP_SHORT_WCHAR`
with `T
[libc++][test] Consistently use `TEST_SHORT_WCHAR` (#74958)
Found while running libc++'s test suite with MSVC's STL.
* In `escaped_output.unicode.pass.cpp`, replace `_LIBCPP_SHORT_WCHAR`
with `TEST_SHORT_WCHAR`.
+ This was the only test that was directly using the `_LIBCPP` macro.
`libcxx/test/support/test_macros.h` performs this mapping:
https://github.com/llvm/llvm-project/blob/c60ac509399da5cba533b9b6cc5b983c59f7d7b3/libcxx/test/support/test_macros.h#L442-L444
* In `msvc_stdlib_force_include.h`, define `TEST_SHORT_WCHAR`.
show more ...
|
Revision tags: llvmorg-17.0.6 |
|
#
f5832bab |
| 27-Nov-2023 |
Stephan T. Lavavej <stl@nuwen.net> |
[libc++][test] Cleanup typos and unnecessary semicolons (#73435)
I've structured this into a series of commits for even easier reviewing,
if that helps. I could easily split this up into separate P
[libc++][test] Cleanup typos and unnecessary semicolons (#73435)
I've structured this into a series of commits for even easier reviewing,
if that helps. I could easily split this up into separate PRs if
desired, but as this is low-risk with simple edits, I thought one PR
would be easiest.
* Drop unnecessary semicolons after function definitions.
* Cleanup comment typos.
* Cleanup `static_assert` typos.
* Cleanup test code typos.
+ There should be no functional changes, assuming I've changed all
occurrences.
* ~~Fix massive test code typos.~~
+ This was a real problem, but needed more surgery. I reverted those
changes here, and @philnik777 is fixing this properly with #73444.
* clang-formatting as requested by the CI.
show more ...
|
Revision tags: llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0 |
|
#
8a79af67 |
| 08-Sep-2023 |
Jake Egan <5326451+jakeegan@users.noreply.github.com> |
[libc++][AIX] Remove hardcode fail from format test
The test is hardcoded to fail after passing `test_ill_formed_utf16()`. It passes on 32-bit AIX if we remove this.
Reviewed By: Mordante, #libc, l
[libc++][AIX] Remove hardcode fail from format test
The test is hardcoded to fail after passing `test_ill_formed_utf16()`. It passes on 32-bit AIX if we remove this.
Reviewed By: Mordante, #libc, ldionne
Differential Revision: https://reviews.llvm.org/D150273
show more ...
|
Revision tags: 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 |
|
#
09addf9c |
| 21-Apr-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Fixes UTF-8 continuation.
The mask used to check whether a code unit is a valid continuation was incorrect and accepts non-continuation code points. This fixes the issue.
Reviewed
[libc++][format] Fixes UTF-8 continuation.
The mask used to check whether a code unit is a valid continuation was incorrect and accepts non-continuation code points. This fixes the issue.
Reviewed By: ldionne, tahonermann, #libc
Differential Revision: https://reviews.llvm.org/D149672
show more ...
|
#
520c7fbb |
| 12-Jun-2023 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++] Mark slow tests as unsupported on GCC
Some tests in our test suite are unbelievably slow on GCC due to the use of the always_inline attribute. See [1] for more details.
This patch introduc
[libc++] Mark slow tests as unsupported on GCC
Some tests in our test suite are unbelievably slow on GCC due to the use of the always_inline attribute. See [1] for more details.
This patch introduces the GCC-ALWAYS_INLINE-FIXME lit feature to disable tests that are plagued by that issue. At the same time, it moves several existing tests from ad-hoc `UNSUPPORTED: gcc-12` markup to the new GCC-ALWAYS_INLINE-FIXME feature, and marks the slowest tests reported by the CI as `UNSUPPORTED: GCC-ALWAYS_INLINE-FIXME`.
[1]: https://discourse.llvm.org/t/rfc-stop-supporting-extern-instantiations-with-gcc/71277/1
Differential Revision: https://reviews.llvm.org/D152736
show more ...
|
#
dff62f52 |
| 17-May-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Removes the experimental status.
The code has been quite ready for a while now and there are no more ABI breaking papers. So this is a good time to mark the feature as stable.
Revi
[libc++][format] Removes the experimental status.
The code has been quite ready for a while now and there are no more ABI breaking papers. So this is a good time to mark the feature as stable.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D150802
show more ...
|
#
7ad7b327 |
| 08-May-2023 |
Jake Egan <5326451+jakeegan@users.noreply.github.com> |
[AIX] Adjust support of format function tests
escaped_output.unicode.pass.cpp is failing only on 32-bit AIX. The rest are passing.
Reviewed by: #libc, Mordante
Differential Revision: https://revie
[AIX] Adjust support of format function tests
escaped_output.unicode.pass.cpp is failing only on 32-bit AIX. The rest are passing.
Reviewed by: #libc, Mordante
Differential Revision: https://reviews.llvm.org/D149078
show more ...
|
Revision tags: llvmorg-16.0.2, llvmorg-16.0.1 |
|
#
f0fc8c48 |
| 18-Mar-2023 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++] Use named Lit features to flag back-deployment XFAILs
Instead of writing something like `XFAIL: use_system_cxx_lib && target=...` to XFAIL back-deployment tests, introduce named Lit feature
[libc++] Use named Lit features to flag back-deployment XFAILs
Instead of writing something like `XFAIL: use_system_cxx_lib && target=...` to XFAIL back-deployment tests, introduce named Lit features like `availability-shared_mutex-missing` to represent those. This makes the XFAIL annotations leaner, and solves the problem of XFAIL comments potentially getting out of sync. This would also make it easier for another vendor to add their own annotations to the test suite by simply changing how the feature is defined for their OS releases, instead of having to modify hundreds of tests to add repetitive annotations.
This doesn't touch *all* annotations -- only annotations that were widely duplicated are given named features (e.g. when filesystem or shared_mutex were introduced). I still think it probably doesn't make sense to have a named feature for every single fix we make to the dylib.
This is in essence a revert of 2659663, but since then the test suite has changed significantly. Back when I did 2659663, the configuration files we have for the test suite right now were being bootstrapped and it wasn't clear how to provide these features for back-deployment in that context. Since then, we have a streamlined way of defining these features in `features.py` and that doesn't impact the ability for a configuration file to stay minimal.
The original motivation for this change was that I am about to propose a change that would touch essentially all XFAIL annotations for back-deployment in the test suite, and this greatly reduces the number of lines changed by that upcoming change, in addition to making the test suite generally better.
Differential Revision: https://reviews.llvm.org/D146359
show more ...
|
#
3b00bae9 |
| 25-Mar-2023 |
Louis Dionne <ldionne.2@gmail.com> |
[libc++] Add UNSUPPORTED annotations to more <format> tests on GCC 12
Those seem to have been failing for a while but we might not have noticed because of the recent CI instability issues. I'm marki
[libc++] Add UNSUPPORTED annotations to more <format> tests on GCC 12
Those seem to have been failing for a while but we might not have noticed because of the recent CI instability issues. I'm marking them as unsupported to try to get the CI functional again, especially since the majority of <format> tests are already not working on GCC 12.
show more ...
|
Revision tags: 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 ...
|
#
d8681356 |
| 21-Mar-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++] Qualifies ptrdiff_t and max_align_t.
This has been done using the following commands find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)ptrdiff_t)|\1std::\2|' \{} \; find li
[libc++] Qualifies ptrdiff_t and max_align_t.
This has been done using the following commands find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)ptrdiff_t)|\1std::\2|' \{} \; find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)max_align_t)|\1std::\2|' \{} \;
The std module doesn't export declarations in the global namespaace., This is a preparation for that module.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D146550
show more ...
|
#
fb855eb9 |
| 14-Mar-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++] Qualifies size_t.
This has been done using the following command
find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)size_t)|\1std::\2|' \{} \;
And manually removed some fals
[libc++] Qualifies size_t.
This has been done using the following command
find libcxx/test -type f -exec perl -pi -e 's|^([^/]+?)((?<!::)size_t)|\1std::\2|' \{} \;
And manually removed some false positives in std/depr/depr.c.headers.
The `std` module doesn't export `::size_t`, this is a preparation for that module.
Reviewed By: ldionne, #libc, EricWF, philnik
Differential Revision: https://reviews.llvm.org/D146088
show more ...
|
Revision tags: llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3 |
|
#
c866855b |
| 09-Feb-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Improves Unicode decoders.
During the implementation of P2286 a second Unicode decoder was added. The original decoder was only used for the width estimation. Changing an ill-formed
[libc++][format] Improves Unicode decoders.
During the implementation of P2286 a second Unicode decoder was added. The original decoder was only used for the width estimation. Changing an ill-formed Unicode sequence to the replacement character, works properly for this use case. For P2286 an ill-formed Unicode sequence needs to be formatted as a sequence of code units. The exact wording in the Standard as a bit unclear and there was odd example in the WP. This made it hard to use the same decoder. SG16 determined the odd example in the WP was a bug and this has been fixed in the WP.
This made it possible to combine the two decoders. The P2286 decoder kept track of the size of the ill-formed sequence. However this was not needed since the output algorithm needs to keep track of size of a well-formed and an ill-formed sequence. So this feature has been removed.
The error status remains since it's needed for P2286, the grapheme clustering can ignore this unneeded value. (In general, grapheme clustering is only has specified behaviour for Unicode. When the string is in a non-Unicode encoding there are no requirements. Ill-formed Unicode is a non-Unicode encoding. Still libc++ does a best effort estimation.)
There UTF-8 decoder accepted several ill-formed sequences: - Values in the surrogate range U+D800..U+DFFF. - Values encoded in more code units than required, for example 0+0020 in theory can be encoded using 1, 2, 3, or 4 were accepted. This is not allowed by the Unicode Standard. - Values larger than U+10FFFF were not always rejected.
Reviewed By: #libc, ldionne, tahonermann, Mordante
Differential Revision: https://reviews.llvm.org/D144346
show more ...
|
#
da79d6e1 |
| 07-Mar-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][test] Uses qualified std::uint32_t.
The module std does not provide c-types in the global namespace. This means all these types need to be fully qualified. This is a first step to convert t
[libc++][test] Uses qualified std::uint32_t.
The module std does not provide c-types in the global namespace. This means all these types need to be fully qualified. This is a first step to convert them by using sed.
Since this is an automated conversion other types like uint64_t are kept as is.
Note that tests in the directory libcxx/test/std/depr/depr.c.headers should not be converted automatically. This requires manual attention, there some test require testing uint32_t in the global namespace. These test should fail when using the std module, and pass when using the std.compat module.
A similar issue occurs with atomic, atomic_uint32_t is specified as using atomic_uint32_t = atomic<uint32_t>; // freestanding So here too we need to keep the name in the global namespace in the tests.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D145520
show more ...
|
Revision tags: llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init |
|
#
3476b56f |
| 21-Jan-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][test] Adds more generic test macros.
These macros are intended to replace the macros in rapid-cxx-test.h.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D1428
[libc++][test] Adds more generic test macros.
These macros are intended to replace the macros in rapid-cxx-test.h.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D142808
show more ...
|
#
9c8f3409 |
| 02-Feb-2023 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Fixes test failures.
Using some builds the modular build fails due to missing exports and includes. This fixes the build.
Reviewed By: #libc, ldionne
Differential Revision: https:
[libc++][format] Fixes test failures.
Using some builds the modular build fails due to missing exports and includes. This fixes the build.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D143203
show more ...
|
Revision tags: llvmorg-15.0.7 |
|
#
f8bed136 |
| 17-Dec-2022 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Adds new test macros.
These macros make it easier to log additional information. This is useful for formatting tests. It also properly disables additional information when locales a
[libc++][format] Adds new test macros.
These macros make it easier to log additional information. This is useful for formatting tests. It also properly disables additional information when locales are disabled in libc++.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D140651
show more ...
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4 |
|
#
84cdfbcd |
| 29-Oct-2022 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Fixes default string alignment.
Fixes https://llvm.org/PR58315
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D137017
|
Revision tags: 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 |
|
#
a4800735 |
| 05-May-2022 |
Mark de Wever <koraq@xs4all.nl> |
[libc++][format] Implements string escaping.
Implements parts of - P2286R8 Formatting Ranges
Reviewed By: #libc, tahonermann
Differential Revision: https://reviews.llvm.org/D134036
|