|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, 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, 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, llvmorg-18.1.2, 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, 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, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, 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, 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 |
|
| #
db1978b6 |
| 16-Jun-2022 |
Nikolas Klauser <[email protected]> |
[libc++] Mark standard-mandated includes as such
Reviewed By: ldionne, Mordante, #libc, saugustine
Spies: saugustine, MaskRay, arichardson, mstorsjo, jloser, libcxx-commits, arphaman
Differential
[libc++] Mark standard-mandated includes as such
Reviewed By: ldionne, Mordante, #libc, saugustine
Spies: saugustine, MaskRay, arichardson, mstorsjo, jloser, libcxx-commits, arphaman
Differential Revision: https://reviews.llvm.org/D127953
show more ...
|
|
Revision tags: llvmorg-14.0.5, llvmorg-14.0.4 |
|
| #
1c4b31c3 |
| 18-May-2022 |
Louis Dionne <[email protected]> |
[libc++] Improve error messages for disabled modes
We should not surface CMake-level options like LIBCXX_ENABLE_FILESYSTEM to our users, since they don't know what it means. Instead, use a slightly
[libc++] Improve error messages for disabled modes
We should not surface CMake-level options like LIBCXX_ENABLE_FILESYSTEM to our users, since they don't know what it means. Instead, use a slightly more general wording.
Also, add an error in <ios> to improve the quality of errors for people trying to use <iostream> when localization is disabled.
Differential Revision: https://reviews.llvm.org/D125910
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
385cc25a |
| 25-Mar-2022 |
Louis Dionne <[email protected]> |
[libc++] Ensure that all public C++ headers include <__assert>
This patch changes the requirement for getting the declaration of the assertion handler from including <__assert> to including any publ
[libc++] Ensure that all public C++ headers include <__assert>
This patch changes the requirement for getting the declaration of the assertion handler from including <__assert> to including any public C++ header of the library. Note that C compatibility headers are excluded because we don't implement all the C headers ourselves -- some of them are taken straight from the C library, like assert.h.
It also adds a generated test to check it. Furthermore, this new generated test is designed in a way that will make it possible to replace almost all the existing test-generation scripts with this system in upcoming patches.
Differential Revision: https://reviews.llvm.org/D122506
show more ...
|
|
Revision tags: 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 |
|
| #
fa6b9e40 |
| 02-Feb-2022 |
Arthur O'Dwyer <[email protected]> |
[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 ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
4d81a46f |
| 07-Jan-2022 |
Arthur O'Dwyer <[email protected]> |
[libc++] Alphabetize header #includes. NFCI.
The NFC part of D116809. We still want to enforce this in CI, but the mechanism for that is still to-be-determined.
Differential Revision: https://revie
[libc++] Alphabetize header #includes. NFCI.
The NFC part of D116809. We still want to enforce this in CI, but the mechanism for that is still to-be-determined.
Differential Revision: https://reviews.llvm.org/D116809
show more ...
|
| #
23f1cd9e |
| 23-Dec-2021 |
Nikolas Klauser <[email protected]> |
[libc++] Remove unused headers from <filesystem>
Remove unused headers from `<filesystem>`
Reviewed By: Quuxplusone, #libc, Mordante
Spies: Mordante, libcxx-commits
Differential Revision: https:/
[libc++] Remove unused headers from <filesystem>
Remove unused headers from `<filesystem>`
Reviewed By: Quuxplusone, #libc, Mordante
Spies: Mordante, libcxx-commits
Differential Revision: https://reviews.llvm.org/D116146
show more ...
|
| #
fcc0964e |
| 23-Dec-2021 |
Nikolas Klauser <[email protected]> |
Revert "[libc++] Remove unused headers from <filesystem>"
This reverts commit 352945dd36c64fd68b4c73fcc393ee5828da639a.
|
| #
352945dd |
| 22-Dec-2021 |
Nikolas Klauser <[email protected]> |
[libc++] Remove unused headers from <filesystem>
Remove unused headers from `<filesystem>`
Spies: libcxx-commits
Differential Revision: https://reviews.llvm.org/D116146
|
| #
7056250f |
| 18-Dec-2021 |
Nikolas Klauser <[email protected]> |
[libc++][NFC] Granularize <filesystem>
Granularize the `<filesystem>` header
Reviewed By: Quuxplusone, ldionne, #libc
Spies: libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org
[libc++][NFC] Granularize <filesystem>
Granularize the `<filesystem>` header
Reviewed By: Quuxplusone, ldionne, #libc
Spies: libcxx-commits, mgorny
Differential Revision: https://reviews.llvm.org/D115578
show more ...
|
|
Revision tags: llvmorg-13.0.1-rc1 |
|
| #
c16b13eb |
| 03-Nov-2021 |
Joe Loser <[email protected]> |
[libc++] Implement P1989R2: range constructor for string_view
Implement P1989R2 which adds a range constructor for `string_view`.
Adjust `operator/=` in `path` to avoid atomic constraints caching i
[libc++] Implement P1989R2: range constructor for string_view
Implement P1989R2 which adds a range constructor for `string_view`.
Adjust `operator/=` in `path` to avoid atomic constraints caching issue getting provoked from this PR.
Add defaulted template argument to `string_view`'s "sufficient overloads" to avoid mangling issues in `clang-cl` builds. It is a MSVC mangling bug that this works around.
Differential Revision: https://reviews.llvm.org/D113161
show more ...
|
| #
3e7452a8 |
| 25-Nov-2021 |
Joe Loser <[email protected]> |
[libc++] Avoid overload resolution in path comparison operators
Rework `std::filesystem::path::operator==` and friends to avoid overload resolution and atomic constraint caching issues shown from ht
[libc++] Avoid overload resolution in path comparison operators
Rework `std::filesystem::path::operator==` and friends to avoid overload resolution and atomic constraint caching issues shown from https://reviews.llvm.org/D113161.
Always call `__compare(string_view)` from the comparison operators which avoids overload resolution.
Differential Revision: https://reviews.llvm.org/D114570
show more ...
|
| #
7a0584fe |
| 23-Nov-2021 |
Louis Dionne <[email protected]> |
[libc++] Fix backdeployment annotations for std::filesystem
In 1fa27f2a10e8, we made <filesystem>'s iterator types model concepts from <ranges>, but we forgot to add the appropriate availability ann
[libc++] Fix backdeployment annotations for std::filesystem
In 1fa27f2a10e8, we made <filesystem>'s iterator types model concepts from <ranges>, but we forgot to add the appropriate availability annotations. This broke back-deployment to platforms that don't have <filesystem> for which we have availability annotations.
For some reason, this wasn't caught by our back-deployment CI. I believe this is due to the fact that we use a slightly older compiler in the CI, and perhaps that compiler does not honour our `#pragma clang attribute push` properly.
Differential Revision: https://reviews.llvm.org/D114456
show more ...
|
| #
eb8650a7 |
| 17-Nov-2021 |
Louis Dionne <[email protected]> |
[runtimes][NFC] Remove filenames at the top of the license notice
We've stopped doing it in libc++ for a while now because these names would end up rotting as we move things around and copy/paste st
[runtimes][NFC] Remove filenames at the top of the license notice
We've stopped doing it in libc++ for a while now because these names would end up rotting as we move things around and copy/paste stuff. This cleans up all the existing files so as to stop the spreading as people copy-paste headers around.
show more ...
|
| #
6b82adbb |
| 20-Oct-2021 |
Muiez Ahmed <[email protected]> |
Raise compile error when using unimplemented functions
The path functions in this patch are unimplemented (as per the TODO comment from upstream). To avoid running into a linker error (missing symbo
Raise compile error when using unimplemented functions
The path functions in this patch are unimplemented (as per the TODO comment from upstream). To avoid running into a linker error (missing symbol), this patch raises a compile error by commenting out the functions, which is more user friendly.
Differential Revision: https://reviews.llvm.org/D111892
show more ...
|
| #
1fa27f2a |
| 14-Oct-2021 |
Joe Loser <[email protected]> |
[libc++] LWG3480: make (recursive_)directory_iterator C++20 ranges
Implement LWG3480 which enables `directory_iterator` and `recursive_directory_iterator` to be both a `borrowed_range` and a `view`.
[libc++] LWG3480: make (recursive_)directory_iterator C++20 ranges
Implement LWG3480 which enables `directory_iterator` and `recursive_directory_iterator` to be both a `borrowed_range` and a `view`.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D111644
show more ...
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2 |
|
| #
f4c1258d |
| 23-Aug-2021 |
Louis Dionne <[email protected]> |
[libc++] Add an option to disable wide character support in libc++
Some embedded platforms do not wish to support the C library functionality for handling wchar_t because they have no use for it. It
[libc++] Add an option to disable wide character support in libc++
Some embedded platforms do not wish to support the C library functionality for handling wchar_t because they have no use for it. It makes sense for libc++ to work properly on those platforms, so this commit adds a carve-out of functionality for wchar_t.
Unfortunately, unlike some other carve-outs (e.g. random device), this patch touches several parts of the library. However, despite the wide impact of this patch, I still think it is important to support this configuration since it makes it much simpler to port libc++ to some embedded platforms.
Differential Revision: https://reviews.llvm.org/D111265
show more ...
|
| #
67964fc4 |
| 10-Oct-2021 |
Joe Loser <[email protected]> |
[libc++][NFC] Replace tab with whitespace in comment
There is a stray tab character in a comment block. Replace the tab character with a space for consistency with other comments.
|
|
Revision tags: llvmorg-13.0.0-rc1 |
|
| #
4e656885 |
| 28-Jul-2021 |
Mark de Wever <[email protected]> |
[libc++][nfc] Improve error diagnostics.
The error message for disabled filesystem and locale support is now done in the same fashion as ranges and format in D106763.
Reviewed By: #libc, ldionne
D
[libc++][nfc] Improve error diagnostics.
The error message for disabled filesystem and locale support is now done in the same fashion as ranges and format in D106763.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D106935
show more ...
|
|
Revision tags: llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
| #
6adbc83e |
| 05-Jun-2021 |
Christopher Di Bella <[email protected]> |
[libcxx][modularisation] moves <utility> content out of <type_traits>
Moves:
* `std::move`, `std::forward`, `std::declval`, and `std::swap` into `__utility/${FUNCTION_NAME}`. * `std::swap_ranges`
[libcxx][modularisation] moves <utility> content out of <type_traits>
Moves:
* `std::move`, `std::forward`, `std::declval`, and `std::swap` into `__utility/${FUNCTION_NAME}`. * `std::swap_ranges` and `std::iter_swap` into `__algorithm/${FUNCTION_NAME}`
Differential Revision: https://reviews.llvm.org/D103734
show more ...
|
|
Revision tags: llvmorg-12.0.1-rc1 |
|
| #
bfbd73f8 |
| 19-May-2021 |
Arthur O'Dwyer <[email protected]> |
[libc++] Alphabetize and include-what-you-use. NFCI.
Differential Revision: https://reviews.llvm.org/D102781
|
| #
e87479b0 |
| 16-Apr-2021 |
Arthur O'Dwyer <[email protected]> |
[libc++] Remove the special logic for "noexcept iterators" in basic_string.
This reverts a large chunk of http://reviews.llvm.org/D15862 , and also fixes bugs in `insert`, `append`, and `assign`, wh
[libc++] Remove the special logic for "noexcept iterators" in basic_string.
This reverts a large chunk of http://reviews.llvm.org/D15862 , and also fixes bugs in `insert`, `append`, and `assign`, which are now regression-tested. (Thanks to Tim Song for pointing out the bug in `append`!)
Before this patch, we did a special dance in `append`, `assign`, and `insert` (but not `replace`). All of these require the strong exception guarantee, even when the user-provided InputIterator might have throwing operations.
The naive way to accomplish this is to construct a temporary string and then append/assign/insert from the temporary; i.e., finish all the potentially throwing and self-inspecting InputIterator operations *before* starting to modify self. But this is slow, so we'd like to skip it when possible.
The old code (D15682) attempted to check that specific iterator operations were nothrow: it assumed that if the iterator operations didn't throw, then it was safe to iterate the input range multiple times and therefore it was safe to use the fast-path non-naive version. This was wrong for two reasons: (1) the old code checked the wrong operations (e.g. checked noexceptness of `==`, but the code that ran used `!=`), and (2) the conversion of value_type to char could still throw, or inspect the contents of self.
The new code is much simpler, although still much more complicated than it really could be. We'll likely revisit this codepath at some point, but for now this patch suffices to get it passing all the new regression tests.
The added tests all fail before this patch, and succeed afterward. See https://quuxplusone.github.io/blog/2021/04/17/pathological-string-appends/
Differential Revision: https://reviews.llvm.org/D98573
show more ...
|
| #
5c40c994 |
| 19-Apr-2021 |
Arthur O'Dwyer <[email protected]> |
[libc++] s/_LIBCPP_NO_HAS_CHAR8_T/_LIBCPP_HAS_NO_CHAR8_T/g
This was raised in D94511.
Differential Revision: https://reviews.llvm.org/D100736
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4 |
|
| #
2d0f1fa4 |
| 24-Mar-2021 |
Arthur O'Dwyer <[email protected]> |
[libc++] Header inclusion tests.
As mandated by the Standard's various synopses, e.g. [iterator.synopsis]. Searching the TeX source for '#include' is a good way to find all of these mandates.
The n
[libc++] Header inclusion tests.
As mandated by the Standard's various synopses, e.g. [iterator.synopsis]. Searching the TeX source for '#include' is a good way to find all of these mandates.
The new tests are all autogenerated by utils/generate_header_inclusion_tests.py. I was SHOCKED by how many mandates there are, and how many of them libc++ wasn't conforming with.
Differential Revision: https://reviews.llvm.org/D99309
show more ...
|
| #
49173ca4 |
| 11-Mar-2021 |
Martin Storsjö <[email protected]> |
[libcxx] Avoid intermediate string objects for substrings in windows operator/=
Check that appends with a path object doesn't do allocations, even on windows.
Suggested by Marek in D98398. The patc
[libcxx] Avoid intermediate string objects for substrings in windows operator/=
Check that appends with a path object doesn't do allocations, even on windows.
Suggested by Marek in D98398. The patch might apply without D98398 (depending on how much of the diff context has to match), but doesn't make much sense until after that patch has landed.
Differential Revision: https://reviews.llvm.org/D98412
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc3 |
|
| #
b9f169fb |
| 07-Mar-2021 |
Martin Storsjö <[email protected]> |
[libcxx] Document windows specifics regarding file_type and perms. NFC.
This was requested in the review of D98138.
Differential Revision: https://reviews.llvm.org/D98155
|