diff --git a/libcxx/docs/DesignDocs/HeaderRemovalPolicy.rst b/libcxx/docs/DesignDocs/HeaderRemovalPolicy.rst new file mode 100644 --- /dev/null +++ b/libcxx/docs/DesignDocs/HeaderRemovalPolicy.rst @@ -0,0 +1,71 @@ +===================== +Header Removal Policy +===================== + +Policy +------ + +Libc++ is in the process of splitting larger headers into smaller modular +headers. This makes it possible to remove these large headers from other +headers. For example, instead of including ```` entirely it is +possible to only include only the headers for the algorithms used. When the +Standard indirectly adds additional header includes, using the smaller headers +aids reducing the growth of top-level headers. For example ```` uses +``std::chrono::nanoseconds`` and included ````. In C++20 ```` +requires ```` which adds several other headers (like ````, +````, ````) which are not needed in ````. + +The benefit of using minimal headers is that the size of libc++'s top-level +headers becomes smaller. This improves the compilation time when users include +a top-level header. + +A disadvantage is that users unknowingly depend on these transitive includes. +Thus removing an include might break their build after upgrading a newer +version of libc++. For example ```` is a header that is not +included often, but it happens to work. + +To avoid breaking users libc++ will not remove headers from a top-level header +of released C++ versions. Libc++ will only remove headers for the next language +version; that is the version the C++ committee is working on. After C++23 +becomes an ISO Standard libc++ will no longer remove headers from C++23. +Instead when removing a header it will be done in C++26. + +The removal is done by the following code for C++23. + +.. code-block:: cpp + + #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 + # include + # include + # include + #endif + + +When users define ``_LIBCPP_REMOVE_TRANSITIVE_INCLUDES`` it will not include +these headers regardless of the language version. This aids users to transition +to a newer language version. Secondly it aids users who want to use smaller +headers in older language versions. + +One of the issues for libc++ with transitive includes is that these includes +may create dependency cycles and cause the validation script +``libcxx/utils/graph_header_deps.py`` to have false positives. To ignore an +include from the validation script, add a comment containing ``IGNORE-CYCLE``. +This should only be used when there is a cycle and it has been verified it is a +false positive. + +.. code-block:: cpp + + #if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 + # include // IGNORE-CYCLE due to + #endif + + +Rationale +--------- + +Removing headers is not only an issue for software developers, but also for +vendors. When a vendor updates libc++ several of their upstream packages might +fail to compile, forcing them to fix these packages or file bug at their +upstream packages. Usually upgrading software to a new language standard is +done explicitly by software developers. This means they most likely will +discover and fix the missing includes, lessening the burden for the vendors. diff --git a/libcxx/docs/ReleaseNotes.rst b/libcxx/docs/ReleaseNotes.rst --- a/libcxx/docs/ReleaseNotes.rst +++ b/libcxx/docs/ReleaseNotes.rst @@ -45,6 +45,21 @@ Deprecations and Removals ------------------------- +- Several unneeded includes have been removed from libc++. The headers are + removed based on the language version used. The following headers have been + removed when not needed: + + - C++20: ``chrono`` + - C++2b: ``algorithm``, ``array``, ``atomic``, ``bit``, ``chrono``, + ``climits``, ``cmath``, ``compare``, ``concepts``, ``cstdlib``, + ``cstring``, ``ctime``, ``exception``, ``functional``, + ``initializer_list``, ``iosfwd``, ``iterator``, ``memory``, ``new``, + ``optional``, ``ratio``, ``stdexcept``, ``tuple``, ``typeinfo``, + ``unordered_map``, ``utility``, ``variant``, ``vector``. + + + When compiling with ``_LIBCPP_REMOVE_TRANSITIVE_INCLUDES`` these headers are + removed in all language versions. Upcoming Deprecations and Removals ---------------------------------- diff --git a/libcxx/docs/index.rst b/libcxx/docs/index.rst --- a/libcxx/docs/index.rst +++ b/libcxx/docs/index.rst @@ -175,6 +175,7 @@ DesignDocs/ExtendedCXX03Support DesignDocs/FeatureTestMacros DesignDocs/FileTimeType + DesignDocs/HeaderRemovalPolicy DesignDocs/NoexceptPolicy DesignDocs/ThreadingSupportAPI DesignDocs/UniquePtrTrivialAbi diff --git a/libcxx/include/__format/format_error.h b/libcxx/include/__format/format_error.h --- a/libcxx/include/__format/format_error.h +++ b/libcxx/include/__format/format_error.h @@ -31,7 +31,13 @@ : runtime_error(__s) {} _LIBCPP_HIDE_FROM_ABI explicit format_error(const char* __s) : runtime_error(__s) {} + // TODO FMT Remove when format is no longer experimental. + // Avoids linker errors when building the Clang Windows DLL which doesn't support the experimental library +# ifndef _LIBCPP_INLINE_FORMAT_ERROR_DTOR virtual ~format_error() noexcept; +# else + virtual ~format_error() noexcept {} +# endif }; _LIBCPP_NORETURN inline _LIBCPP_HIDE_FROM_ABI void diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -1899,8 +1899,11 @@ #include <__algorithm/unwrap_iter.h> #include <__algorithm/upper_bound.h> -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES -# include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include // IGNORE-CYCLE due to +#endif + +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/any b/libcxx/include/any --- a/libcxx/include/any +++ b/libcxx/include/any @@ -94,8 +94,8 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES -# include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include // IGNORE-CYCLE due to #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/array b/libcxx/include/array --- a/libcxx/include/array +++ b/libcxx/include/array @@ -123,7 +123,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/atomic b/libcxx/include/atomic --- a/libcxx/include/atomic +++ b/libcxx/include/atomic @@ -534,8 +534,8 @@ # include <__threading_support> #endif -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES -# include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include // IGNORE-CYCLE due to #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/bit b/libcxx/include/bit --- a/libcxx/include/bit +++ b/libcxx/include/bit @@ -71,7 +71,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/charconv b/libcxx/include/charconv --- a/libcxx/include/charconv +++ b/libcxx/include/charconv @@ -97,7 +97,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/chrono b/libcxx/include/chrono --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -683,6 +683,14 @@ #include <__config> #include +// Guarded by language version to avoid include cycles prior to C++20. +// (In C++20 it's solved by removing transitive headers.) +// On Windows the experimental library isn't available avoid depending the main +// library to depend on format until it's stable. +#if !defined(_LIBCPP_HAS_NO_LOCALIZATION) && !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) && _LIBCPP_STD_VER > 17 +# include +#endif + // standard-mandated includes #include diff --git a/libcxx/include/coroutine b/libcxx/include/coroutine --- a/libcxx/include/coroutine +++ b/libcxx/include/coroutine @@ -46,7 +46,7 @@ #include <__coroutine/trivial_awaitables.h> #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/deque b/libcxx/include/deque --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -185,7 +185,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/experimental/simd b/libcxx/include/experimental/simd --- a/libcxx/include/experimental/simd +++ b/libcxx/include/experimental/simd @@ -656,7 +656,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/experimental/unordered_map b/libcxx/include/experimental/unordered_map --- a/libcxx/include/experimental/unordered_map +++ b/libcxx/include/experimental/unordered_map @@ -45,7 +45,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/ext/hash_map b/libcxx/include/ext/hash_map --- a/libcxx/include/ext/hash_map +++ b/libcxx/include/ext/hash_map @@ -210,7 +210,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/ext/hash_set b/libcxx/include/ext/hash_set --- a/libcxx/include/ext/hash_set +++ b/libcxx/include/ext/hash_set @@ -199,7 +199,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/forward_list b/libcxx/include/forward_list --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -195,7 +195,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/functional b/libcxx/include/functional --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -539,7 +539,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/future b/libcxx/include/future --- a/libcxx/include/future +++ b/libcxx/include/future @@ -378,8 +378,8 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES -# include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include // IGNORE-CYCLE due to #endif #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) diff --git a/libcxx/include/iterator b/libcxx/include/iterator --- a/libcxx/include/iterator +++ b/libcxx/include/iterator @@ -724,7 +724,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/list b/libcxx/include/list --- a/libcxx/include/list +++ b/libcxx/include/list @@ -203,7 +203,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/locale b/libcxx/include/locale --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -211,7 +211,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/map b/libcxx/include/map --- a/libcxx/include/map +++ b/libcxx/include/map @@ -546,7 +546,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/memory b/libcxx/include/memory --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -887,7 +887,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/mutex b/libcxx/include/mutex --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -198,7 +198,7 @@ #endif #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/numeric b/libcxx/include/numeric --- a/libcxx/include/numeric +++ b/libcxx/include/numeric @@ -163,7 +163,7 @@ #include <__numeric/transform_inclusive_scan.h> #include <__numeric/transform_reduce.h> -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/optional b/libcxx/include/optional --- a/libcxx/include/optional +++ b/libcxx/include/optional @@ -177,9 +177,12 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include // IGNORE-CYCLE due to +#endif + +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include -# include # include # include # include diff --git a/libcxx/include/ostream b/libcxx/include/ostream --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -171,7 +171,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/random b/libcxx/include/random --- a/libcxx/include/random +++ b/libcxx/include/random @@ -1718,7 +1718,7 @@ #include <__random/weibull_distribution.h> #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/regex b/libcxx/include/regex --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -778,7 +778,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/set b/libcxx/include/set --- a/libcxx/include/set +++ b/libcxx/include/set @@ -485,7 +485,7 @@ #include <__utility/forward.h> #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/span b/libcxx/include/span --- a/libcxx/include/span +++ b/libcxx/include/span @@ -148,7 +148,7 @@ #include // for remove_cv, etc #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/stack b/libcxx/include/stack --- a/libcxx/include/stack +++ b/libcxx/include/stack @@ -107,7 +107,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/string b/libcxx/include/string --- a/libcxx/include/string +++ b/libcxx/include/string @@ -569,7 +569,7 @@ # include #endif -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/string_view b/libcxx/include/string_view --- a/libcxx/include/string_view +++ b/libcxx/include/string_view @@ -224,7 +224,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/thread b/libcxx/include/thread --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -99,8 +99,11 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES -# include +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 17 +# include // IGNORE-CYCLE due to +#endif + +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/tuple b/libcxx/include/tuple --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -220,7 +220,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/typeindex b/libcxx/include/typeindex --- a/libcxx/include/typeindex +++ b/libcxx/include/typeindex @@ -51,7 +51,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/unordered_map b/libcxx/include/unordered_map --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -531,7 +531,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -474,7 +474,7 @@ #include <__utility/forward.h> #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/utility b/libcxx/include/utility --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -243,7 +243,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include #endif diff --git a/libcxx/include/valarray b/libcxx/include/valarray --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -360,7 +360,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/variant b/libcxx/include/variant --- a/libcxx/include/variant +++ b/libcxx/include/variant @@ -228,7 +228,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include #endif diff --git a/libcxx/include/vector b/libcxx/include/vector --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -307,7 +307,7 @@ #include #include -#ifndef _LIBCPP_REMOVE_TRANSITIVE_INCLUDES +#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 # include # include # include diff --git a/libcxx/test/libcxx/transitive_includes/expected.algorithm b/libcxx/test/libcxx/transitive_includes/expected.algorithm --- a/libcxx/test/libcxx/transitive_includes/expected.algorithm +++ b/libcxx/test/libcxx/transitive_includes/expected.algorithm @@ -1,7 +1,6 @@ algorithm atomic bit -chrono climits cmath compare @@ -14,7 +13,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -23,6 +21,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.any b/libcxx/test/libcxx/transitive_includes/expected.any --- a/libcxx/test/libcxx/transitive_includes/expected.any +++ b/libcxx/test/libcxx/transitive_includes/expected.any @@ -1,6 +1,5 @@ any atomic -chrono climits cmath compare @@ -13,7 +12,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -22,6 +20,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.array b/libcxx/test/libcxx/transitive_includes/expected.array --- a/libcxx/test/libcxx/transitive_includes/expected.array +++ b/libcxx/test/libcxx/transitive_includes/expected.array @@ -1,29 +1,14 @@ -algorithm array -atomic -bit -chrono -climits cmath compare concepts cstddef cstdint cstdlib -cstring -ctime exception initializer_list iosfwd -iterator limits -memory -new -ratio stdexcept -tuple type_traits -typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.atomic b/libcxx/test/libcxx/transitive_includes/expected.atomic --- a/libcxx/test/libcxx/transitive_includes/expected.atomic +++ b/libcxx/test/libcxx/transitive_includes/expected.atomic @@ -1,8 +1,5 @@ atomic -chrono climits -cmath -compare cstddef cstdint cstring diff --git a/libcxx/test/libcxx/transitive_includes/expected.barrier b/libcxx/test/libcxx/transitive_includes/expected.barrier --- a/libcxx/test/libcxx/transitive_includes/expected.barrier +++ b/libcxx/test/libcxx/transitive_includes/expected.barrier @@ -1,6 +1,5 @@ atomic barrier -chrono climits cmath compare @@ -13,7 +12,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -22,6 +20,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.bit b/libcxx/test/libcxx/transitive_includes/expected.bit --- a/libcxx/test/libcxx/transitive_includes/expected.bit +++ b/libcxx/test/libcxx/transitive_includes/expected.bit @@ -2,7 +2,6 @@ cstddef cstdint cstdlib -iosfwd limits type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/expected.bitset b/libcxx/test/libcxx/transitive_includes/expected.bitset --- a/libcxx/test/libcxx/transitive_includes/expected.bitset +++ b/libcxx/test/libcxx/transitive_includes/expected.bitset @@ -1,10 +1,6 @@ -algorithm -array atomic -bit bitset cctype -chrono climits cmath compare @@ -18,14 +14,11 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept string @@ -33,8 +26,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ccomplex b/libcxx/test/libcxx/transitive_includes/expected.ccomplex --- a/libcxx/test/libcxx/transitive_includes/expected.ccomplex +++ b/libcxx/test/libcxx/transitive_includes/expected.ccomplex @@ -1,12 +1,8 @@ -algorithm -array atomic -bit bitset ccomplex cctype cerrno -chrono climits cmath compare @@ -22,18 +18,15 @@ cwchar cwctype exception -functional initializer_list ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio sstream @@ -45,8 +38,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.charconv b/libcxx/test/libcxx/transitive_includes/expected.charconv --- a/libcxx/test/libcxx/transitive_includes/expected.charconv +++ b/libcxx/test/libcxx/transitive_includes/expected.charconv @@ -7,7 +7,6 @@ cstdlib cstring initializer_list -iosfwd limits type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/expected.chrono b/libcxx/test/libcxx/transitive_includes/expected.chrono --- a/libcxx/test/libcxx/transitive_includes/expected.chrono +++ b/libcxx/test/libcxx/transitive_includes/expected.chrono @@ -1,11 +1,41 @@ +array +atomic +bit +cctype +cerrno +charconv chrono climits cmath compare +concepts +cstdarg cstddef cstdint +cstdio +cstdlib +cstring ctime +cwchar +cwctype +exception +format +initializer_list +ios +iosfwd limits +locale +memory +mutex +new +optional ratio +stdexcept +streambuf +string +string_view +system_error +tuple type_traits +typeinfo version diff --git a/libcxx/test/libcxx/transitive_includes/expected.codecvt b/libcxx/test/libcxx/transitive_includes/expected.codecvt --- a/libcxx/test/libcxx/transitive_includes/expected.codecvt +++ b/libcxx/test/libcxx/transitive_includes/expected.codecvt @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath codecvt @@ -19,15 +15,12 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory mutex new -optional ratio stdexcept string @@ -36,8 +29,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.complex b/libcxx/test/libcxx/transitive_includes/expected.complex --- a/libcxx/test/libcxx/transitive_includes/expected.complex +++ b/libcxx/test/libcxx/transitive_includes/expected.complex @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -21,18 +17,15 @@ cwchar cwctype exception -functional initializer_list ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio sstream @@ -44,8 +37,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.condition_variable b/libcxx/test/libcxx/transitive_includes/expected.condition_variable --- a/libcxx/test/libcxx/transitive_includes/expected.condition_variable +++ b/libcxx/test/libcxx/transitive_includes/expected.condition_variable @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -19,14 +15,11 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept string @@ -35,8 +28,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.coroutine b/libcxx/test/libcxx/transitive_includes/expected.coroutine --- a/libcxx/test/libcxx/transitive_includes/expected.coroutine +++ b/libcxx/test/libcxx/transitive_includes/expected.coroutine @@ -4,7 +4,6 @@ cstddef cstdint cstring -iosfwd limits type_traits version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ctgmath b/libcxx/test/libcxx/transitive_includes/expected.ctgmath --- a/libcxx/test/libcxx/transitive_includes/expected.ctgmath +++ b/libcxx/test/libcxx/transitive_includes/expected.ctgmath @@ -1,12 +1,8 @@ -algorithm -array atomic -bit bitset ccomplex cctype cerrno -chrono climits cmath compare @@ -23,18 +19,15 @@ cwchar cwctype exception -functional initializer_list ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio sstream @@ -46,8 +39,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.deque b/libcxx/test/libcxx/transitive_includes/expected.deque --- a/libcxx/test/libcxx/transitive_includes/expected.deque +++ b/libcxx/test/libcxx/transitive_includes/expected.deque @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -14,21 +10,14 @@ ctime deque exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_algorithm b/libcxx/test/libcxx/transitive_includes/expected.experimental_algorithm --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_algorithm +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_algorithm @@ -1,7 +1,6 @@ algorithm atomic bit -chrono climits cmath compare @@ -15,7 +14,6 @@ experimental/algorithm initializer_list iosfwd -iterator limits memory new @@ -24,6 +22,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_coroutine b/libcxx/test/libcxx/transitive_includes/expected.experimental_coroutine --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_coroutine +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_coroutine @@ -1,5 +1,4 @@ atomic -chrono climits cmath compare @@ -13,7 +12,6 @@ experimental/coroutine initializer_list iosfwd -iterator limits memory new @@ -22,6 +20,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_deque b/libcxx/test/libcxx/transitive_includes/expected.experimental_deque --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_deque +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_deque @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -17,21 +13,15 @@ experimental/deque experimental/memory_resource experimental/utility -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_forward_list b/libcxx/test/libcxx/transitive_includes/expected.experimental_forward_list --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_forward_list +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_forward_list @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -17,21 +13,15 @@ experimental/memory_resource experimental/utility forward_list -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_functional b/libcxx/test/libcxx/transitive_includes/expected.experimental_functional --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_functional +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_functional @@ -1,8 +1,5 @@ -algorithm array atomic -bit -chrono climits cmath compare @@ -17,7 +14,6 @@ functional initializer_list iosfwd -iterator limits memory new @@ -28,7 +24,5 @@ type_traits typeinfo unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_iterator b/libcxx/test/libcxx/transitive_includes/expected.experimental_iterator --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_iterator +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_iterator @@ -14,7 +14,5 @@ new tuple type_traits -typeinfo -utility variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_list b/libcxx/test/libcxx/transitive_includes/expected.experimental_list --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_list +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_list @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -16,22 +12,16 @@ experimental/list experimental/memory_resource experimental/utility -functional initializer_list iosfwd -iterator limits list memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_map b/libcxx/test/libcxx/transitive_includes/expected.experimental_map --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_map +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_map @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -16,10 +12,8 @@ experimental/map experimental/memory_resource experimental/utility -functional initializer_list iosfwd -iterator limits map memory @@ -30,8 +24,5 @@ tuple type_traits typeinfo -unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_memory_resource b/libcxx/test/libcxx/transitive_includes/expected.experimental_memory_resource --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_memory_resource +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_memory_resource @@ -1,5 +1,4 @@ atomic -chrono climits cmath compare @@ -14,7 +13,6 @@ experimental/utility initializer_list iosfwd -iterator limits memory new @@ -24,5 +22,4 @@ type_traits typeinfo utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_regex b/libcxx/test/libcxx/transitive_includes/expected.experimental_regex --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_regex +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_regex @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -23,15 +19,12 @@ experimental/regex experimental/string experimental/utility -functional initializer_list iosfwd -iterator limits memory mutex new -optional ratio regex stdexcept @@ -41,8 +34,6 @@ tuple type_traits typeinfo -unordered_map utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_set b/libcxx/test/libcxx/transitive_includes/expected.experimental_set --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_set +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_set @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -16,10 +12,8 @@ experimental/memory_resource experimental/set experimental/utility -functional initializer_list iosfwd -iterator limits memory new @@ -30,8 +24,5 @@ tuple type_traits typeinfo -unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_simd b/libcxx/test/libcxx/transitive_includes/expected.experimental_simd --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_simd +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_simd @@ -1,34 +1,16 @@ -algorithm array -atomic -bit -chrono -climits cmath compare concepts cstddef cstdint cstdlib -cstring -ctime exception experimental/simd -functional initializer_list iosfwd -iterator limits -memory -new -optional -ratio stdexcept tuple type_traits -typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_string b/libcxx/test/libcxx/transitive_includes/expected.experimental_string --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_string +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_string @@ -1,9 +1,5 @@ -algorithm -array atomic -bit cctype -chrono climits cmath compare @@ -20,14 +16,11 @@ experimental/memory_resource experimental/string experimental/utility -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept string @@ -35,8 +28,5 @@ tuple type_traits typeinfo -unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_map b/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_map --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_map +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_map @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -16,10 +12,8 @@ experimental/memory_resource experimental/unordered_map experimental/utility -functional initializer_list iosfwd -iterator limits memory new @@ -31,6 +25,4 @@ typeinfo unordered_map utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_set b/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_set --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_set +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_unordered_set @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -16,10 +12,8 @@ experimental/memory_resource experimental/unordered_set experimental/utility -functional initializer_list iosfwd -iterator limits memory new @@ -29,9 +23,6 @@ tuple type_traits typeinfo -unordered_map unordered_set utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_utility b/libcxx/test/libcxx/transitive_includes/expected.experimental_utility --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_utility +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_utility @@ -5,7 +5,6 @@ cstdlib experimental/utility initializer_list -iosfwd limits type_traits utility diff --git a/libcxx/test/libcxx/transitive_includes/expected.experimental_vector b/libcxx/test/libcxx/transitive_includes/expected.experimental_vector --- a/libcxx/test/libcxx/transitive_includes/expected.experimental_vector +++ b/libcxx/test/libcxx/transitive_includes/expected.experimental_vector @@ -1,7 +1,4 @@ -algorithm atomic -bit -chrono climits cmath compare @@ -17,7 +14,6 @@ experimental/vector initializer_list iosfwd -iterator limits memory new @@ -27,6 +23,5 @@ type_traits typeinfo utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ext_hash_map b/libcxx/test/libcxx/transitive_includes/expected.ext_hash_map --- a/libcxx/test/libcxx/transitive_includes/expected.ext_hash_map +++ b/libcxx/test/libcxx/transitive_includes/expected.ext_hash_map @@ -3,7 +3,6 @@ atomic bit cctype -chrono climits cmath compare @@ -21,7 +20,6 @@ functional initializer_list iosfwd -iterator limits memory new @@ -34,7 +32,5 @@ type_traits typeinfo unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ext_hash_set b/libcxx/test/libcxx/transitive_includes/expected.ext_hash_set --- a/libcxx/test/libcxx/transitive_includes/expected.ext_hash_set +++ b/libcxx/test/libcxx/transitive_includes/expected.ext_hash_set @@ -3,7 +3,6 @@ atomic bit cctype -chrono climits cmath compare @@ -21,7 +20,6 @@ functional initializer_list iosfwd -iterator limits memory new @@ -34,7 +32,5 @@ type_traits typeinfo unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.filesystem b/libcxx/test/libcxx/transitive_includes/expected.filesystem --- a/libcxx/test/libcxx/transitive_includes/expected.filesystem +++ b/libcxx/test/libcxx/transitive_includes/expected.filesystem @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -21,19 +17,16 @@ cwctype exception filesystem -functional initializer_list iomanip ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -44,8 +37,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.format b/libcxx/test/libcxx/transitive_includes/expected.format --- a/libcxx/test/libcxx/transitive_includes/expected.format +++ b/libcxx/test/libcxx/transitive_includes/expected.format @@ -1,11 +1,9 @@ -algorithm array atomic bit cctype cerrno charconv -chrono climits cmath compare @@ -21,11 +19,9 @@ cwctype exception format -functional initializer_list ios iosfwd -iterator limits locale memory @@ -41,8 +37,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.forward_list b/libcxx/test/libcxx/transitive_includes/expected.forward_list --- a/libcxx/test/libcxx/transitive_includes/expected.forward_list +++ b/libcxx/test/libcxx/transitive_includes/expected.forward_list @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -14,21 +10,14 @@ ctime exception forward_list -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.fstream b/libcxx/test/libcxx/transitive_includes/expected.fstream --- a/libcxx/test/libcxx/transitive_includes/expected.fstream +++ b/libcxx/test/libcxx/transitive_includes/expected.fstream @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -22,19 +18,16 @@ exception filesystem fstream -functional initializer_list iomanip ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -45,8 +38,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.functional b/libcxx/test/libcxx/transitive_includes/expected.functional --- a/libcxx/test/libcxx/transitive_includes/expected.functional +++ b/libcxx/test/libcxx/transitive_includes/expected.functional @@ -1,8 +1,5 @@ -algorithm array atomic -bit -chrono climits cmath compare @@ -16,7 +13,6 @@ functional initializer_list iosfwd -iterator limits memory new @@ -27,7 +23,5 @@ type_traits typeinfo unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.future b/libcxx/test/libcxx/transitive_includes/expected.future --- a/libcxx/test/libcxx/transitive_includes/expected.future +++ b/libcxx/test/libcxx/transitive_includes/expected.future @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,16 +14,13 @@ cwchar cwctype exception -functional future initializer_list iosfwd -iterator limits memory mutex new -optional ratio stdexcept string @@ -37,8 +30,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.iomanip b/libcxx/test/libcxx/transitive_includes/expected.iomanip --- a/libcxx/test/libcxx/transitive_includes/expected.iomanip +++ b/libcxx/test/libcxx/transitive_includes/expected.iomanip @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -20,19 +16,16 @@ cwchar cwctype exception -functional initializer_list iomanip ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -43,8 +36,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ios b/libcxx/test/libcxx/transitive_includes/expected.ios --- a/libcxx/test/libcxx/transitive_includes/expected.ios +++ b/libcxx/test/libcxx/transitive_includes/expected.ios @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,16 +14,13 @@ cwchar cwctype exception -functional initializer_list ios iosfwd -iterator limits memory mutex new -optional ratio stdexcept string @@ -36,8 +29,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.iostream b/libcxx/test/libcxx/transitive_includes/expected.iostream --- a/libcxx/test/libcxx/transitive_includes/expected.iostream +++ b/libcxx/test/libcxx/transitive_includes/expected.iostream @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -20,19 +16,16 @@ cwchar cwctype exception -functional initializer_list ios iosfwd iostream istream -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -43,8 +36,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.istream b/libcxx/test/libcxx/transitive_includes/expected.istream --- a/libcxx/test/libcxx/transitive_includes/expected.istream +++ b/libcxx/test/libcxx/transitive_includes/expected.istream @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -20,18 +16,15 @@ cwchar cwctype exception -functional initializer_list ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -42,8 +35,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.iterator b/libcxx/test/libcxx/transitive_includes/expected.iterator --- a/libcxx/test/libcxx/transitive_includes/expected.iterator +++ b/libcxx/test/libcxx/transitive_includes/expected.iterator @@ -13,7 +13,5 @@ new tuple type_traits -typeinfo -utility variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.latch b/libcxx/test/libcxx/transitive_includes/expected.latch --- a/libcxx/test/libcxx/transitive_includes/expected.latch +++ b/libcxx/test/libcxx/transitive_includes/expected.latch @@ -1,8 +1,5 @@ atomic -chrono climits -cmath -compare cstddef cstdint cstring diff --git a/libcxx/test/libcxx/transitive_includes/expected.list b/libcxx/test/libcxx/transitive_includes/expected.list --- a/libcxx/test/libcxx/transitive_includes/expected.list +++ b/libcxx/test/libcxx/transitive_includes/expected.list @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -13,22 +9,15 @@ cstring ctime exception -functional initializer_list iosfwd -iterator limits list memory new -optional ratio stdexcept tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.locale b/libcxx/test/libcxx/transitive_includes/expected.locale --- a/libcxx/test/libcxx/transitive_includes/expected.locale +++ b/libcxx/test/libcxx/transitive_includes/expected.locale @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -19,17 +15,14 @@ cwchar cwctype exception -functional initializer_list ios iosfwd -iterator limits locale memory mutex new -optional ratio stdexcept streambuf @@ -39,8 +32,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.map b/libcxx/test/libcxx/transitive_includes/expected.map --- a/libcxx/test/libcxx/transitive_includes/expected.map +++ b/libcxx/test/libcxx/transitive_includes/expected.map @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -13,10 +9,8 @@ cstring ctime exception -functional initializer_list iosfwd -iterator limits map memory @@ -27,8 +21,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.memory b/libcxx/test/libcxx/transitive_includes/expected.memory --- a/libcxx/test/libcxx/transitive_includes/expected.memory +++ b/libcxx/test/libcxx/transitive_includes/expected.memory @@ -1,5 +1,4 @@ atomic -chrono climits cmath compare @@ -12,7 +11,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -21,6 +19,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.mutex b/libcxx/test/libcxx/transitive_includes/expected.mutex --- a/libcxx/test/libcxx/transitive_includes/expected.mutex +++ b/libcxx/test/libcxx/transitive_includes/expected.mutex @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,15 +14,12 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory mutex new -optional ratio stdexcept string @@ -35,8 +28,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.numeric b/libcxx/test/libcxx/transitive_includes/expected.numeric --- a/libcxx/test/libcxx/transitive_includes/expected.numeric +++ b/libcxx/test/libcxx/transitive_includes/expected.numeric @@ -1,34 +1,8 @@ -algorithm -array -atomic -bit -chrono -climits cmath -compare concepts cstddef cstdint -cstdlib -cstring -ctime -exception -functional -initializer_list -iosfwd -iterator limits -memory -new numeric -optional -ratio -stdexcept -tuple type_traits -typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.optional b/libcxx/test/libcxx/transitive_includes/expected.optional --- a/libcxx/test/libcxx/transitive_includes/expected.optional +++ b/libcxx/test/libcxx/transitive_includes/expected.optional @@ -1,27 +1,15 @@ -atomic -chrono -climits cmath compare -concepts cstddef cstdint cstdlib cstring -ctime exception initializer_list iosfwd -iterator limits -memory new optional -ratio stdexcept -tuple type_traits -typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ostream b/libcxx/test/libcxx/transitive_includes/expected.ostream --- a/libcxx/test/libcxx/transitive_includes/expected.ostream +++ b/libcxx/test/libcxx/transitive_includes/expected.ostream @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -20,17 +16,14 @@ cwchar cwctype exception -functional initializer_list ios iosfwd -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -41,8 +34,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.queue b/libcxx/test/libcxx/transitive_includes/expected.queue --- a/libcxx/test/libcxx/transitive_includes/expected.queue +++ b/libcxx/test/libcxx/transitive_includes/expected.queue @@ -1,8 +1,5 @@ -algorithm array atomic -bit -chrono climits cmath compare @@ -17,7 +14,6 @@ functional initializer_list iosfwd -iterator limits memory new @@ -29,7 +25,5 @@ type_traits typeinfo unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.random b/libcxx/test/libcxx/transitive_includes/expected.random --- a/libcxx/test/libcxx/transitive_includes/expected.random +++ b/libcxx/test/libcxx/transitive_includes/expected.random @@ -1,9 +1,6 @@ -algorithm -array atomic bit cctype -chrono climits cmath compare @@ -17,15 +14,12 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new numeric -optional random ratio stdexcept @@ -34,8 +28,5 @@ tuple type_traits typeinfo -unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.ranges b/libcxx/test/libcxx/transitive_includes/expected.ranges --- a/libcxx/test/libcxx/transitive_includes/expected.ranges +++ b/libcxx/test/libcxx/transitive_includes/expected.ranges @@ -1,9 +1,4 @@ -algorithm array -atomic -bit -chrono -climits cmath compare concepts @@ -11,25 +6,17 @@ cstdint cstdlib cstring -ctime exception -functional initializer_list iosfwd iterator limits -memory new optional ranges -ratio span stdexcept tuple type_traits -typeinfo -unordered_map -utility variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.regex b/libcxx/test/libcxx/transitive_includes/expected.regex --- a/libcxx/test/libcxx/transitive_includes/expected.regex +++ b/libcxx/test/libcxx/transitive_includes/expected.regex @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -19,15 +15,12 @@ cwctype deque exception -functional initializer_list iosfwd -iterator limits memory mutex new -optional ratio regex stdexcept @@ -37,8 +30,5 @@ tuple type_traits typeinfo -unordered_map -utility -variant vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.scoped_allocator b/libcxx/test/libcxx/transitive_includes/expected.scoped_allocator --- a/libcxx/test/libcxx/transitive_includes/expected.scoped_allocator +++ b/libcxx/test/libcxx/transitive_includes/expected.scoped_allocator @@ -1,5 +1,4 @@ atomic -chrono climits cmath compare @@ -12,7 +11,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -22,6 +20,4 @@ tuple type_traits typeinfo -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.semaphore b/libcxx/test/libcxx/transitive_includes/expected.semaphore --- a/libcxx/test/libcxx/transitive_includes/expected.semaphore +++ b/libcxx/test/libcxx/transitive_includes/expected.semaphore @@ -1,8 +1,5 @@ atomic -chrono climits -cmath -compare cstddef cstdint cstring diff --git a/libcxx/test/libcxx/transitive_includes/expected.set b/libcxx/test/libcxx/transitive_includes/expected.set --- a/libcxx/test/libcxx/transitive_includes/expected.set +++ b/libcxx/test/libcxx/transitive_includes/expected.set @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -13,10 +9,8 @@ cstring ctime exception -functional initializer_list iosfwd -iterator limits memory new @@ -27,8 +21,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.shared_mutex b/libcxx/test/libcxx/transitive_includes/expected.shared_mutex --- a/libcxx/test/libcxx/transitive_includes/expected.shared_mutex +++ b/libcxx/test/libcxx/transitive_includes/expected.shared_mutex @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,14 +14,11 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio shared_mutex stdexcept @@ -35,8 +28,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.span b/libcxx/test/libcxx/transitive_includes/expected.span --- a/libcxx/test/libcxx/transitive_includes/expected.span +++ b/libcxx/test/libcxx/transitive_includes/expected.span @@ -1,34 +1,15 @@ -algorithm array -atomic -bit -chrono -climits cmath compare concepts cstddef cstdint cstdlib -cstring -ctime exception -functional initializer_list iosfwd -iterator limits -memory -new -optional -ratio span stdexcept -tuple type_traits -typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.sstream b/libcxx/test/libcxx/transitive_includes/expected.sstream --- a/libcxx/test/libcxx/transitive_includes/expected.sstream +++ b/libcxx/test/libcxx/transitive_includes/expected.sstream @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -20,18 +16,15 @@ cwchar cwctype exception -functional initializer_list ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio sstream @@ -43,8 +36,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.stack b/libcxx/test/libcxx/transitive_includes/expected.stack --- a/libcxx/test/libcxx/transitive_includes/expected.stack +++ b/libcxx/test/libcxx/transitive_includes/expected.stack @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -14,22 +10,15 @@ ctime deque exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stack stdexcept tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.streambuf b/libcxx/test/libcxx/transitive_includes/expected.streambuf --- a/libcxx/test/libcxx/transitive_includes/expected.streambuf +++ b/libcxx/test/libcxx/transitive_includes/expected.streambuf @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,16 +14,13 @@ cwchar cwctype exception -functional initializer_list ios iosfwd -iterator limits memory mutex new -optional ratio stdexcept streambuf @@ -37,8 +30,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.string b/libcxx/test/libcxx/transitive_includes/expected.string --- a/libcxx/test/libcxx/transitive_includes/expected.string +++ b/libcxx/test/libcxx/transitive_includes/expected.string @@ -1,9 +1,5 @@ -algorithm -array atomic -bit cctype -chrono climits cmath compare @@ -17,14 +13,11 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept string @@ -32,8 +25,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.string_view b/libcxx/test/libcxx/transitive_includes/expected.string_view --- a/libcxx/test/libcxx/transitive_includes/expected.string_view +++ b/libcxx/test/libcxx/transitive_includes/expected.string_view @@ -1,10 +1,4 @@ -algorithm -array -atomic -bit cctype -chrono -climits cmath compare concepts @@ -13,26 +7,13 @@ cstdio cstdlib cstring -ctime cwchar cwctype exception -functional initializer_list iosfwd -iterator limits -memory -new -optional -ratio stdexcept string_view -tuple type_traits -typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.strstream b/libcxx/test/libcxx/transitive_includes/expected.strstream --- a/libcxx/test/libcxx/transitive_includes/expected.strstream +++ b/libcxx/test/libcxx/transitive_includes/expected.strstream @@ -1,11 +1,7 @@ -algorithm -array atomic -bit bitset cctype cerrno -chrono climits cmath compare @@ -20,18 +16,15 @@ cwchar cwctype exception -functional initializer_list ios iosfwd istream -iterator limits locale memory mutex new -optional ostream ratio stdexcept @@ -43,8 +36,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.system_error b/libcxx/test/libcxx/transitive_includes/expected.system_error --- a/libcxx/test/libcxx/transitive_includes/expected.system_error +++ b/libcxx/test/libcxx/transitive_includes/expected.system_error @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,14 +14,11 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept string @@ -34,8 +27,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.thread b/libcxx/test/libcxx/transitive_includes/expected.thread --- a/libcxx/test/libcxx/transitive_includes/expected.thread +++ b/libcxx/test/libcxx/transitive_includes/expected.thread @@ -1,10 +1,6 @@ -algorithm -array atomic -bit cctype cerrno -chrono climits cmath compare @@ -18,14 +14,11 @@ cwchar cwctype exception -functional initializer_list iosfwd -iterator limits memory new -optional ratio stdexcept string @@ -35,8 +28,4 @@ tuple type_traits typeinfo -unordered_map -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.tuple b/libcxx/test/libcxx/transitive_includes/expected.tuple --- a/libcxx/test/libcxx/transitive_includes/expected.tuple +++ b/libcxx/test/libcxx/transitive_includes/expected.tuple @@ -2,14 +2,7 @@ compare cstddef cstdint -cstdlib -exception -initializer_list -iosfwd limits -new tuple type_traits -typeinfo -utility version diff --git a/libcxx/test/libcxx/transitive_includes/expected.typeindex b/libcxx/test/libcxx/transitive_includes/expected.typeindex --- a/libcxx/test/libcxx/transitive_includes/expected.typeindex +++ b/libcxx/test/libcxx/transitive_includes/expected.typeindex @@ -4,12 +4,8 @@ cstdint cstdlib exception -initializer_list -iosfwd limits -new type_traits typeindex typeinfo -utility version diff --git a/libcxx/test/libcxx/transitive_includes/expected.unordered_map b/libcxx/test/libcxx/transitive_includes/expected.unordered_map --- a/libcxx/test/libcxx/transitive_includes/expected.unordered_map +++ b/libcxx/test/libcxx/transitive_includes/expected.unordered_map @@ -1,7 +1,4 @@ -algorithm atomic -bit -chrono climits cmath compare @@ -14,7 +11,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -25,6 +21,4 @@ type_traits typeinfo unordered_map -utility -variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.unordered_set b/libcxx/test/libcxx/transitive_includes/expected.unordered_set --- a/libcxx/test/libcxx/transitive_includes/expected.unordered_set +++ b/libcxx/test/libcxx/transitive_includes/expected.unordered_set @@ -1,8 +1,4 @@ -algorithm -array atomic -bit -chrono climits cmath compare @@ -13,10 +9,8 @@ cstring ctime exception -functional initializer_list iosfwd -iterator limits memory new @@ -26,9 +20,5 @@ tuple type_traits typeinfo -unordered_map unordered_set -utility -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.utility b/libcxx/test/libcxx/transitive_includes/expected.utility --- a/libcxx/test/libcxx/transitive_includes/expected.utility +++ b/libcxx/test/libcxx/transitive_includes/expected.utility @@ -4,7 +4,6 @@ cstdint cstdlib initializer_list -iosfwd limits type_traits utility diff --git a/libcxx/test/libcxx/transitive_includes/expected.valarray b/libcxx/test/libcxx/transitive_includes/expected.valarray --- a/libcxx/test/libcxx/transitive_includes/expected.valarray +++ b/libcxx/test/libcxx/transitive_includes/expected.valarray @@ -1,34 +1,15 @@ -algorithm -array -atomic -bit -chrono -climits cmath -compare concepts cstddef cstdint cstdlib cstring -ctime exception -functional initializer_list iosfwd -iterator limits -memory new -optional -ratio stdexcept -tuple type_traits -typeinfo -unordered_map -utility valarray -variant -vector version diff --git a/libcxx/test/libcxx/transitive_includes/expected.variant b/libcxx/test/libcxx/transitive_includes/expected.variant --- a/libcxx/test/libcxx/transitive_includes/expected.variant +++ b/libcxx/test/libcxx/transitive_includes/expected.variant @@ -6,12 +6,9 @@ cstring exception initializer_list -iosfwd limits new tuple type_traits -typeinfo -utility variant version diff --git a/libcxx/test/libcxx/transitive_includes/expected.vector b/libcxx/test/libcxx/transitive_includes/expected.vector --- a/libcxx/test/libcxx/transitive_includes/expected.vector +++ b/libcxx/test/libcxx/transitive_includes/expected.vector @@ -1,7 +1,4 @@ -algorithm atomic -bit -chrono climits cmath compare @@ -14,7 +11,6 @@ exception initializer_list iosfwd -iterator limits memory new @@ -23,7 +19,5 @@ tuple type_traits typeinfo -utility -variant vector version diff --git a/libcxx/utils/ci/run-buildbot b/libcxx/utils/ci/run-buildbot --- a/libcxx/utils/ci/run-buildbot +++ b/libcxx/utils/ci/run-buildbot @@ -567,7 +567,8 @@ # correctly when libc++ visibility attributes indicate dllimport linkage # anyway), thus just disable the experimental library. Remove this # setting when cmake and the test driver does the right thing automatically. - generate-cmake-libcxx-win -DLIBCXX_TEST_PARAMS="enable_experimental=False" + generate-cmake-libcxx-win -DLIBCXX_TEST_PARAMS="enable_experimental=False" \ + -DLIBCXX_EXTRA_SITE_DEFINES="_LIBCPP_HAS_NO_INT128;_LIBCPP_INLINE_FORMAT_ERROR_DTOR" # TODO FMT Remove echo "+++ Running the libc++ tests" ${NINJA} -vC "${BUILD_DIR}" check-cxx ;; diff --git a/libcxx/utils/graph_header_deps.py b/libcxx/utils/graph_header_deps.py --- a/libcxx/utils/graph_header_deps.py +++ b/libcxx/utils/graph_header_deps.py @@ -69,7 +69,15 @@ local_includes.append(m.group(1)) m = re.match(r'\s*#\s*include\s+<([^>]*)>', line) if m is not None: - system_includes.append(m.group(1)) + # Since libc++ keeps transitive includes guarded by the + # language version some cycles can be ignored. For example + # before C++20 several headers included without using + # it. In C++20 conditionally includes in + # C++20. This causes multiple cycles in this script that can't + # happen in practice. Since the script uses a regex instead of + # a parser use a magic word. + if re.search(r'IGNORE-CYCLE', line) is None: + system_includes.append(m.group(1)) fully_qualified_includes = [ locate_header_file(h, options.search_dirs)