From dc1853252b097be0acf3cf5439fb6aeac51b8540 Mon Sep 17 00:00:00 2001 From: Takuto Ikuta Date: Tue, 15 Oct 2024 08:30:23 +0000 Subject: [PATCH] [libc++][vector] include formatter only in C++23 This is to reduce included header file size in pre C++23 build. e.g. 2% of total included file coming from formatter_bool.h in chrome build. https://commondatastorage.googleapis.com/chromium-browser-clang/chrome_includes_2024-10-17_004801.html#view=edges&filter=&sort=asize&reverse=&includer=%5Ethird_party%2Flibc%5C%2B%5C%2B%2Fsrc%2Finclude%2Fvector%24&included=&limit=1000 --- libcxx/include/vector | 7 +++++-- libcxx/test/libcxx/transitive_includes/cxx03.csv | 1 - libcxx/test/libcxx/transitive_includes/cxx11.csv | 1 - libcxx/test/libcxx/transitive_includes/cxx14.csv | 1 - libcxx/test/libcxx/transitive_includes/cxx17.csv | 1 - libcxx/test/libcxx/transitive_includes/cxx20.csv | 1 - 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/libcxx/include/vector b/libcxx/include/vector index dc31f31838264..93755afdde711 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -324,8 +324,6 @@ template requires is-vector-bool-reference // Since C++ #include <__config> #include <__debug_utils/sanitizers.h> #include <__format/enable_insertable.h> -#include <__format/formatter.h> -#include <__format/formatter_bool.h> #include <__functional/hash.h> #include <__functional/unary_function.h> #include <__fwd/vector.h> @@ -391,6 +389,11 @@ template requires is-vector-bool-reference // Since C++ #include #include +#if _LIBCPP_STD_VER >= 23 +# include <__format/formatter.h> +# include <__format/formatter_bool.h> +#endif + #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) # pragma GCC system_header #endif diff --git a/libcxx/test/libcxx/transitive_includes/cxx03.csv b/libcxx/test/libcxx/transitive_includes/cxx03.csv index 506b5cd02c449..8776d2c1310f5 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx03.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx03.csv @@ -2596,7 +2596,6 @@ variant typeinfo variant utility variant version vector algorithm -vector array vector atomic vector bit vector cctype diff --git a/libcxx/test/libcxx/transitive_includes/cxx11.csv b/libcxx/test/libcxx/transitive_includes/cxx11.csv index 506b5cd02c449..8776d2c1310f5 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx11.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx11.csv @@ -2596,7 +2596,6 @@ variant typeinfo variant utility variant version vector algorithm -vector array vector atomic vector bit vector cctype diff --git a/libcxx/test/libcxx/transitive_includes/cxx14.csv b/libcxx/test/libcxx/transitive_includes/cxx14.csv index 828e1d62c6ec3..96b250e3ec81f 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx14.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx14.csv @@ -2649,7 +2649,6 @@ variant typeinfo variant utility variant version vector algorithm -vector array vector atomic vector bit vector cctype diff --git a/libcxx/test/libcxx/transitive_includes/cxx17.csv b/libcxx/test/libcxx/transitive_includes/cxx17.csv index 0bee6e9beb7af..800dad2ac35c8 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx17.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx17.csv @@ -2620,7 +2620,6 @@ variant typeinfo variant utility variant version vector algorithm -vector array vector atomic vector bit vector cctype diff --git a/libcxx/test/libcxx/transitive_includes/cxx20.csv b/libcxx/test/libcxx/transitive_includes/cxx20.csv index 026c26f3bd981..957cdcf8b7a1c 100644 --- a/libcxx/test/libcxx/transitive_includes/cxx20.csv +++ b/libcxx/test/libcxx/transitive_includes/cxx20.csv @@ -2616,7 +2616,6 @@ variant typeinfo variant utility variant version vector algorithm -vector array vector atomic vector bit vector cctype