[libc++] Make parameter names consistent and enforce the naming style using readability-identifier-namingEnsure that parameter names have the style `__lower_case`Reviewed By: ldionne, #libcSpie
[libc++] Make parameter names consistent and enforce the naming style using readability-identifier-namingEnsure that parameter names have the style `__lower_case`Reviewed By: ldionne, #libcSpies: aheejin, sstefan1, libcxx-commits, miyukiDifferential Revision: https://reviews.llvm.org/D129051
show more ...
[libc++] Add various missing _LIBCPP_HIDE_FROM_ABIThose were spotted when a project unintentionally started exportingthese symbols from its ABI just by using the libc++ headers.Differential Revi
[libc++] Add various missing _LIBCPP_HIDE_FROM_ABIThose were spotted when a project unintentionally started exportingthese symbols from its ABI just by using the libc++ headers.Differential Revision: https://reviews.llvm.org/D126496
[libc++] Make sure that all headers can be included with modules enabledThis commit ensures that we can include all libc++ headers with modulesenabled. It adds a test to ensure that this doesn't r
[libc++] Make sure that all headers can be included with modules enabledThis commit ensures that we can include all libc++ headers with modulesenabled. It adds a test to ensure that this doesn't regress, which isnecessary because our modules CI job does not build in all Standard modes.Differential Revision: https://reviews.llvm.org/D125331
[libc++] Make __dir_stream visibility declaration consistentThe class `__dir_stream` is currently declared in two places: as atop-level forward declaration in `directory_iterator.h`, and as a frie
[libc++] Make __dir_stream visibility declaration consistentThe class `__dir_stream` is currently declared in two places: as atop-level forward declaration in `directory_iterator.h`, and as a frienddeclaration in class `directory_entry`, in `directory_entry.h`.The former has a `_LIBCPP_HIDDEN` attribute, but the latter does not,causing the Firefox build to complain about the visibility not matchingthe previous declaration. This is because Firefox plays games withpushing and popping visibility.Work around this by making both `__dir_stream` declarations consistentlyuse `_LIBCPP_HIDDEN`.Reviewed By: ldionne, philnik, #libcDifferential Revision: https://reviews.llvm.org/D121639
[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 inthe tests, remove `// UNSUPPORTED: libcpp-no-concepts`.Differential Revision: https://reviews.llvm.org/D121528
[libc++] ADL-proof calls to __quoted and noskipws.Reviewed as part of D120135.
[libc++] Revert "Protect users from relying on detail headers" & related changesThis 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 changesThis commit reverts 5aaefa51 (and also partly 7f285f48e77 and b6d75682f9,which were related to the original commit). As landed, 5aaefa51 hadunintended consequences on some downstream bots and didn't have propercoverage upstream due to a few subtle things. Implementing this issomething we should do in libc++, however we'll first need to addressa few issues listed in https://reviews.llvm.org/D106124#3349710.Differential Revision: https://reviews.llvm.org/D120683
[libcxx][modules] protects users from relying on detail headerslibc++ has started splicing standard library headers into much morefine-grained content for maintainability. It's very likely that ou
[libcxx][modules] protects users from relying on detail headerslibc++ has started splicing standard library headers into much morefine-grained content for maintainability. It's very likely that outdatedand naive tooling (some of which is outside of LLVM's scope) willsuggest users include things such as <__ranges/access.h> instead of<ranges>, and Hyrum's law suggests that users will eventually begin torely on this without the help of tooling. As such, this commitintends to protect users from themselves, by making it a hard error foranyone outside of the standard library to include libc++ detail headers.Differential Revision: https://reviews.llvm.org/D106124
[libc++] Granularize chrono includesReviewed By: Quuxplusone, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D120141
[libc++] Replace _LIBCPP_INLINE_VISIBILITY with _LIBCPP_HIDE_FROM_ABI in __filesystem/operations.h
[libc++] Move everything related solely to _LIBCPP_ASSERT to its own fileThis is the first step towards disentangling the debug mode and assertionsin libc++. This patch doesn't make any functional
[libc++] Move everything related solely to _LIBCPP_ASSERT to its own fileThis is the first step towards disentangling the debug mode and assertionsin 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 thatlibc++ assertions and the debug mode are different things. Future patcheswill make it possible to enable assertions without enabling the debugmode.Differential Revision: https://reviews.llvm.org/D119769
[libc++] Granularize algorithm includesReviewed By: Mordante, ldionne, Quuxplusone, #libc, #libc_abiSpies: #libc_vendors, libcxx-commits, miyukiDifferential Revision: https://reviews.llvm.org/D
[libc++] Granularize algorithm includesReviewed By: Mordante, ldionne, Quuxplusone, #libc, #libc_abiSpies: #libc_vendors, libcxx-commits, miyukiDifferential Revision: https://reviews.llvm.org/D119667
[libc++] Guard much of std::ranges under _LIBCPP_HAS_NO_INCOMPLETE_RANGES.The logic here is that we are disabling *only* things in `std::ranges::`.Everything in `std::` is permitted, including `de
[libc++] Guard much of std::ranges under _LIBCPP_HAS_NO_INCOMPLETE_RANGES.The logic here is that we are disabling *only* things in `std::ranges::`.Everything in `std::` is permitted, including `default_sentinel`, `contiguous_iterator`,`common_iterator`, `projected`, `swappable`, and so on. Then, we includeanything from `std::ranges::` that is required in order to make those thingswork: `ranges::swap`, `ranges::swap_ranges`, `input_range`, `ranges::begin`,`ranges::iter_move`, and so on. But then that's all. Everything else (includingnotably all of the "views" and the `std::views` namespace itself) is stilllocked up behind `_LIBCPP_HAS_NO_INCOMPLETE_RANGES`.Differential Revision: https://reviews.llvm.org/D118736
[libc++] Implement P0627R6 (Function to mark unreachable code)Reviewed By: ldionne, Quuxplusone, #libcSpies: arichardson, mstorsjo, libcxx-commits, mgornyDifferential Revision: https://reviews.
[libc++] Implement P0627R6 (Function to mark unreachable code)Reviewed By: ldionne, Quuxplusone, #libcSpies: arichardson, mstorsjo, libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D119152
[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
[libc++] Merge _LIBCPP_HAS_NO_RANGES into _LIBCPP_HAS_NO_CONCEPTS. NFC.The macro that opts out of `std::ranges::` functionality is called`_LIBCPP_HAS_NO_INCOMPLETE_RANGES`, and is unrelated to thi
[libc++] Merge _LIBCPP_HAS_NO_RANGES into _LIBCPP_HAS_NO_CONCEPTS. NFC.The macro that opts out of `std::ranges::` functionality is called`_LIBCPP_HAS_NO_INCOMPLETE_RANGES`, and is unrelated to this macrowhich is specifically about _compiler_ support for the _syntax_.The only non-mechanical diff here is in `<__config>`.Differential Revision: https://reviews.llvm.org/D118507
[libc++] [API BREAK] Change `fs::path::iterator::iterator_category` to `input_iterator_tag`.This essentially reverts e02ed1c255d71 and puts in a new fix, which makes `path::iterator`a true C++20 `
[libc++] [API BREAK] Change `fs::path::iterator::iterator_category` to `input_iterator_tag`.This essentially reverts e02ed1c255d71 and puts in a new fix, which makes `path::iterator`a true C++20 `bidirectional_iterator`, but downgrades it to an `input_iterator` in C++17.Fixes #37852.Differential Revision: https://reviews.llvm.org/D116489
[libc++] LWG3171: implement operator<< for filesystem::directory_entry.Differential Revision: https://reviews.llvm.org/D116642
[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
[libc++][NFC] Reformat <__filesystem/operations.h>Reformat `<__filesystem/operations.h>`Reviewed By: Quuxplusone, #libc, ldionneSpies: ldionne, libcxx-commitsDifferential Revision: https://re
[libc++][NFC] Reformat <__filesystem/operations.h>Reformat `<__filesystem/operations.h>`Reviewed By: Quuxplusone, #libc, ldionneSpies: ldionne, libcxx-commitsDifferential Revision: https://reviews.llvm.org/D116234
[libc++][NFC] Granularize <filesystem>Granularize the `<filesystem>` headerReviewed By: Quuxplusone, ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org
[libc++][NFC] Granularize <filesystem>Granularize the `<filesystem>` headerReviewed By: Quuxplusone, ldionne, #libcSpies: libcxx-commits, mgornyDifferential Revision: https://reviews.llvm.org/D115578