diff options
author | Ian Anderson <iana@apple.com> | 2023-04-14 17:51:41 -0700 |
---|---|---|
committer | Ian Anderson <iana@apple.com> | 2023-04-22 11:31:19 -0700 |
commit | 1eb74f7e83ffb3f9d00e5987cead3b12e00bbe82 (patch) | |
tree | 17cf2d400aa7fe2521d6687b4bbe6ac4280f997d /libcxx/docs | |
parent | f639a17892d0b3ffbd062596d360d30213aa1d15 (diff) | |
download | llvm-1eb74f7e83ffb3f9d00e5987cead3b12e00bbe82.tar.gz |
[libc++] Remove the chrono include from algorithm
algorithm's include of chrono causes include cycles:
```
algorithm -> chrono -> __chrono/convert_to_tm.h -> __chrono/statically_widen.h -> __format/concepts.h -> __format/format_parse_context.h -> string_view -> algorithm
algorithm -> chrono -> __chrono/convert_to_tm.h -> __chrono/statically_widen.h -> __format/concepts.h -> __format/format_parse_context.h -> string_view -> functional -> __functional/boyer_moore_searcher.h -> array -> algorithm
algorithm -> chrono -> __chrono/convert_to_tm.h -> __chrono/statically_widen.h -> __format/concepts.h -> __format/format_parse_context.h -> string_view -> functional -> __functional/boyer_moore_searcher.h -> unordered_map -> algorithm
algorithm -> chrono -> __chrono/convert_to_tm.h -> __chrono/statically_widen.h -> __format/concepts.h -> __format/format_parse_context.h -> string_view -> functional -> __functional/boyer_moore_searcher.h -> vector -> algorithm
```
This is a problem for clang modules after the std mega module is broken up, because it becomes a module cycle which is a hard error.
All of the includes in the `__chrono` and `__format` headers are being used and so can't be removed. algorithm's include of chrono is already removed in C++20, whereas the array, string_view, unordered_map, vector includes of algorithm aren't removed until C++23 (and it's 4x the includes that would need removing). Unconditionally remove the chrono include from algorithm in all versions, so that the module breakup can happen (the module has to apply to all C++ versions).
Reviewed By: Mordante, #libc
Differential Revision: https://reviews.llvm.org/D148405
Diffstat (limited to 'libcxx/docs')
-rw-r--r-- | libcxx/docs/ReleaseNotes.rst | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst index 4f79793ccdd9..fdbfdacfd36c 100644 --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -67,6 +67,8 @@ Deprecations and Removals - C++2b: ``atomic``, ``bit``, ``cstdint``, ``cstdlib``, ``cstring``, ``initializer_list``, ``limits``, ``new``, ``stdexcept``, ``system_error``, ``type_traits``, ``typeinfo`` +- ``<algorithm>`` no longer includes ``<chrono>`` in any C++ version (it was prevously included in C++17 and earlier). + - The headers ``<experimental/algorithm>`` and ``<experimental/functional>`` have been removed, since all the contents have been implemented in namespace ``std`` for at least two releases. |