summaryrefslogtreecommitdiff
path: root/libcxx/include/algorithm
diff options
context:
space:
mode:
authorIan Anderson <iana@apple.com>2023-04-14 17:51:41 -0700
committerIan Anderson <iana@apple.com>2023-04-22 11:31:19 -0700
commit1eb74f7e83ffb3f9d00e5987cead3b12e00bbe82 (patch)
tree17cf2d400aa7fe2521d6687b4bbe6ac4280f997d /libcxx/include/algorithm
parentf639a17892d0b3ffbd062596d360d30213aa1d15 (diff)
[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/include/algorithm')
-rw-r--r--libcxx/include/algorithm4
1 files changed, 0 insertions, 4 deletions
diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
index 7e251ebd833d..f5dcffa0a3f8 100644
--- a/libcxx/include/algorithm
+++ b/libcxx/include/algorithm
@@ -1917,10 +1917,6 @@ template <class BidirectionalIterator, class Compare>
# pragma GCC system_header
#endif
-#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17
-# include <chrono>
-#endif
-
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
# include <atomic>
# include <bit>