[libcxx-commits] [libcxx] [libc++] Optimize `to_chars` for bases 2, 8 and 16 (PR #223222)

via libcxx-commits libcxx-commits at lists.llvm.org
Sun Sep 13 02:36:59 PDT 2026


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions h -- libcxx/include/__charconv/to_chars_integral.h --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/libcxx/include/__charconv/to_chars_integral.h b/libcxx/include/__charconv/to_chars_integral.h
index 3fbbd6a8f..104319abe 100644
--- a/libcxx/include/__charconv/to_chars_integral.h
+++ b/libcxx/include/__charconv/to_chars_integral.h
@@ -140,7 +140,7 @@ struct _LIBCPP_HIDDEN __integral<2> {
     constexpr auto __c0_offset_mask = uint64_t{0x3030'3030'3030'3030};
     while (__value >= __divisor) {
       const auto __digits = __builtin_elementwise_pdep(static_cast<uint64_t>(__value), __dep_mask);
-      auto __cs            = __digits | __c0_offset_mask;
+      auto __cs           = __digits | __c0_offset_mask;
 #ifdef _LIBCPP_LITTLE_ENDIAN
       __cs = __builtin_bswap64(__cs);
 #endif
@@ -150,11 +150,11 @@ struct _LIBCPP_HIDDEN __integral<2> {
       __builtin_memcpy(__p, __chars.__data, __ncs_per_word);
     }
     const auto __digits = __builtin_elementwise_pdep(static_cast<uint64_t>(__value), __dep_mask);
-    auto __cs            = __digits | __c0_offset_mask;
+    auto __cs           = __digits | __c0_offset_mask;
 #ifdef _LIBCPP_LITTLE_ENDIAN
     __cs = __builtin_bswap64(__cs);
 #endif
-    const auto __chars = __builtin_bit_cast(__chars_storage<__ncs_per_word>, __cs);
+    const auto __chars     = __builtin_bit_cast(__chars_storage<__ncs_per_word>, __cs);
     const auto __remaining = static_cast<size_t>(__p - __first);
     __builtin_memcpy(__first, __chars.__data + __ncs_per_word - __remaining, __remaining);
     return {__last, errc(0)};
@@ -177,8 +177,8 @@ struct _LIBCPP_HIDDEN __integral<8> {
     int __n         = __width(__value);
     if (__n > __cap)
       return {__last, errc::value_too_large};
-    __last                   = __first + __n;
-    char* __p                = __last;
+    __last    = __first + __n;
+    char* __p = __last;
 
     constexpr auto __ncs_per_word   = 8u;
     constexpr auto __divisor        = 1u << (3 * __ncs_per_word);
@@ -186,7 +186,7 @@ struct _LIBCPP_HIDDEN __integral<8> {
     constexpr auto __c0_offset_mask = uint64_t{0x3030'3030'3030'3030};
     while (__value >= __divisor) {
       const auto __digits = __builtin_elementwise_pdep(static_cast<uint64_t>(__value), __dep_mask);
-      auto __cs            = __digits | __c0_offset_mask;
+      auto __cs           = __digits | __c0_offset_mask;
 #ifdef _LIBCPP_LITTLE_ENDIAN
       __cs = __builtin_bswap64(__cs);
 #endif
@@ -196,11 +196,11 @@ struct _LIBCPP_HIDDEN __integral<8> {
       __builtin_memcpy(__p, __chars.__data, __ncs_per_word);
     }
     const auto __digits = __builtin_elementwise_pdep(static_cast<uint64_t>(__value), __dep_mask);
-    auto __cs            = __digits | __c0_offset_mask;
+    auto __cs           = __digits | __c0_offset_mask;
 #ifdef _LIBCPP_LITTLE_ENDIAN
     __cs = __builtin_bswap64(__cs);
 #endif
-    const auto __chars = __builtin_bit_cast(__chars_storage<__ncs_per_word>, __cs);
+    const auto __chars     = __builtin_bit_cast(__chars_storage<__ncs_per_word>, __cs);
     const auto __remaining = static_cast<size_t>(__p - __first);
     __builtin_memcpy(__first, __chars.__data + __ncs_per_word - __remaining, __remaining);
     return {__last, errc(0)};
@@ -235,8 +235,8 @@ struct _LIBCPP_HIDDEN __integral<16> {
     constexpr auto __c0_offset_mask = uint64_t{0x3030'3030'3030'3030};
     while (__value >= __divisor) {
       const auto __digits = __builtin_elementwise_pdep(static_cast<uint64_t>(__value), __dep_mask);
-    const auto __alpha = ((__digits + __add_six_mask) & __high_bit_mask) >> 4;
-    auto __cs          = __digits + __c0_offset_mask + __alpha * 0x27;
+      const auto __alpha  = ((__digits + __add_six_mask) & __high_bit_mask) >> 4;
+      auto __cs           = __digits + __c0_offset_mask + __alpha * 0x27;
 #ifdef _LIBCPP_LITTLE_ENDIAN
       __cs = __builtin_bswap64(__cs);
 #endif
@@ -246,8 +246,8 @@ struct _LIBCPP_HIDDEN __integral<16> {
       __builtin_memcpy(__p, __chars.__data, __ncs_per_word);
     }
     const auto __digits = __builtin_elementwise_pdep(static_cast<uint64_t>(__value), __dep_mask);
-    const auto __alpha = ((__digits + __add_six_mask) & __high_bit_mask) >> 4;
-    auto __cs          = __digits + __c0_offset_mask + __alpha * 0x27;
+    const auto __alpha  = ((__digits + __add_six_mask) & __high_bit_mask) >> 4;
+    auto __cs           = __digits + __c0_offset_mask + __alpha * 0x27;
 #ifdef _LIBCPP_LITTLE_ENDIAN
     __cs = __builtin_bswap64(__cs);
 #endif

``````````

</details>


https://github.com/llvm/llvm-project/pull/223222


More information about the libcxx-commits mailing list