[libcxx-commits] [libcxx] 57e20ca - [libc++][format] Use granularized charconv.

Mark de Wever via libcxx-commits libcxx-commits at lists.llvm.org
Fri Apr 7 08:49:27 PDT 2023


Author: Mark de Wever
Date: 2023-04-07T17:49:21+02:00
New Revision: 57e20cab5a1db877cdebce39ff2b93329ae386d6

URL: https://github.com/llvm/llvm-project/commit/57e20cab5a1db877cdebce39ff2b93329ae386d6
DIFF: https://github.com/llvm/llvm-project/commit/57e20cab5a1db877cdebce39ff2b93329ae386d6.diff

LOG: [libc++][format] Use granularized charconv.

This reduces the number of transitive includes when using format.

Reviewed By: #libc, ldionne

Differential Revision: https://reviews.llvm.org/D146240

Added: 
    

Modified: 
    libcxx/include/__format/formatter_floating_point.h
    libcxx/include/__format/formatter_integral.h
    libcxx/include/__format/formatter_output.h
    libcxx/include/chrono
    libcxx/test/libcxx/transitive_includes/cxx03.csv
    libcxx/test/libcxx/transitive_includes/cxx11.csv
    libcxx/test/libcxx/transitive_includes/cxx14.csv
    libcxx/test/libcxx/transitive_includes/cxx17.csv
    libcxx/test/libcxx/transitive_includes/cxx20.csv
    libcxx/test/libcxx/transitive_includes/cxx2b.csv

Removed: 
    


################################################################################
diff  --git a/libcxx/include/__format/formatter_floating_point.h b/libcxx/include/__format/formatter_floating_point.h
index cac74c1f2a62c..fb8a6df744da9 100644
--- a/libcxx/include/__format/formatter_floating_point.h
+++ b/libcxx/include/__format/formatter_floating_point.h
@@ -16,9 +16,13 @@
 #include <__algorithm/min.h>
 #include <__algorithm/rotate.h>
 #include <__algorithm/transform.h>
+#include <__charconv/chars_format.h>
+#include <__charconv/to_chars_floating_point.h>
+#include <__charconv/to_chars_result.h>
 #include <__concepts/arithmetic.h>
 #include <__concepts/same_as.h>
 #include <__config>
+#include <__errc>
 #include <__format/concepts.h>
 #include <__format/format_parse_context.h>
 #include <__format/formatter.h>
@@ -29,7 +33,8 @@
 #include <__type_traits/conditional.h>
 #include <__utility/move.h>
 #include <__utility/unreachable.h>
-#include <charconv>
+#include <cmath>
+#include <cstddef>
 
 #ifndef _LIBCPP_HAS_NO_LOCALIZATION
 #  include <locale>

diff  --git a/libcxx/include/__format/formatter_integral.h b/libcxx/include/__format/formatter_integral.h
index cfb0644d0d2cf..0b36844a3f244 100644
--- a/libcxx/include/__format/formatter_integral.h
+++ b/libcxx/include/__format/formatter_integral.h
@@ -10,9 +10,13 @@
 #ifndef _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H
 #define _LIBCPP___FORMAT_FORMATTER_INTEGRAL_H
 
+#include <__charconv/to_chars_integral.h>
+#include <__charconv/to_chars_result.h>
+#include <__charconv/traits.h>
 #include <__concepts/arithmetic.h>
 #include <__concepts/same_as.h>
 #include <__config>
+#include <__errc>
 #include <__format/concepts.h>
 #include <__format/format_error.h>
 #include <__format/formatter_output.h>
@@ -20,7 +24,6 @@
 #include <__type_traits/make_unsigned.h>
 #include <__utility/unreachable.h>
 #include <array>
-#include <charconv>
 #include <limits>
 #include <string>
 #include <string_view>

diff  --git a/libcxx/include/__format/formatter_output.h b/libcxx/include/__format/formatter_output.h
index 2b3c5ae97d71d..c6dbfcd95505f 100644
--- a/libcxx/include/__format/formatter_output.h
+++ b/libcxx/include/__format/formatter_output.h
@@ -14,9 +14,12 @@
 #include <__algorithm/ranges_fill_n.h>
 #include <__algorithm/ranges_for_each.h>
 #include <__algorithm/ranges_transform.h>
+#include <__charconv/to_chars_integral.h>
+#include <__charconv/to_chars_result.h>
 #include <__chrono/statically_widen.h>
 #include <__concepts/same_as.h>
 #include <__config>
+#include <__errc>
 #include <__format/buffer.h>
 #include <__format/concepts.h>
 #include <__format/escaped_output_table.h>
@@ -29,7 +32,6 @@
 #include <__type_traits/make_unsigned.h>
 #include <__utility/move.h>
 #include <__utility/unreachable.h>
-#include <charconv>
 #include <cstddef>
 #include <string>
 #include <string_view>

diff  --git a/libcxx/include/chrono b/libcxx/include/chrono
index f34fc590831ac..d8968e31378fd 100644
--- a/libcxx/include/chrono
+++ b/libcxx/include/chrono
@@ -797,4 +797,8 @@ constexpr chrono::year                                  operator ""y(unsigned lo
 #  include <cstring>
 #endif
 
+#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER == 20
+#  include <charconv>
+#endif
+
 #endif // _LIBCPP_CHRONO

diff  --git a/libcxx/test/libcxx/transitive_includes/cxx03.csv b/libcxx/test/libcxx/transitive_includes/cxx03.csv
index e52cf25b099ae..c837cb14ff65a 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx03.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx03.csv
@@ -317,7 +317,7 @@ filesystem system_error
 filesystem type_traits
 filesystem version
 format array
-format charconv
+format cmath
 format cstddef
 format cstdint
 format cstdlib

diff  --git a/libcxx/test/libcxx/transitive_includes/cxx11.csv b/libcxx/test/libcxx/transitive_includes/cxx11.csv
index 3f322fefe710f..21acc10a91053 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx11.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx11.csv
@@ -317,7 +317,7 @@ filesystem system_error
 filesystem type_traits
 filesystem version
 format array
-format charconv
+format cmath
 format cstddef
 format cstdint
 format cstdlib

diff  --git a/libcxx/test/libcxx/transitive_includes/cxx14.csv b/libcxx/test/libcxx/transitive_includes/cxx14.csv
index 5503cb3ed1bf9..c43917ef474b1 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx14.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx14.csv
@@ -319,7 +319,7 @@ filesystem system_error
 filesystem type_traits
 filesystem version
 format array
-format charconv
+format cmath
 format cstddef
 format cstdint
 format cstdlib

diff  --git a/libcxx/test/libcxx/transitive_includes/cxx17.csv b/libcxx/test/libcxx/transitive_includes/cxx17.csv
index 5503cb3ed1bf9..c43917ef474b1 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx17.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx17.csv
@@ -319,7 +319,7 @@ filesystem system_error
 filesystem type_traits
 filesystem version
 format array
-format charconv
+format cmath
 format cstddef
 format cstdint
 format cstdlib

diff  --git a/libcxx/test/libcxx/transitive_includes/cxx20.csv b/libcxx/test/libcxx/transitive_includes/cxx20.csv
index 6985245378c82..6d57cfa6706f3 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx20.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx20.csv
@@ -326,7 +326,7 @@ filesystem system_error
 filesystem type_traits
 filesystem version
 format array
-format charconv
+format cmath
 format cstddef
 format cstdint
 format cstdlib

diff  --git a/libcxx/test/libcxx/transitive_includes/cxx2b.csv b/libcxx/test/libcxx/transitive_includes/cxx2b.csv
index 9701567c65835..b0ba2350f43f4 100644
--- a/libcxx/test/libcxx/transitive_includes/cxx2b.csv
+++ b/libcxx/test/libcxx/transitive_includes/cxx2b.csv
@@ -68,7 +68,6 @@ charconv cstdlib
 charconv initializer_list
 charconv limits
 chrono array
-chrono charconv
 chrono cmath
 chrono compare
 chrono cstddef
@@ -227,7 +226,7 @@ filesystem string_view
 filesystem system_error
 filesystem version
 format array
-format charconv
+format cmath
 format cstddef
 format cstdint
 format cstdlib


        


More information about the libcxx-commits mailing list