[libc-commits] [libc] 844e41c - [libc] Moved shared constexpr to the top (#144569)
via libc-commits
libc-commits at lists.llvm.org
Tue Jun 17 14:12:38 PDT 2025
Author: sribee8
Date: 2025-06-17T21:12:35Z
New Revision: 844e41c2acedd5219d9363e38838abd5146f63c0
URL: https://github.com/llvm/llvm-project/commit/844e41c2acedd5219d9363e38838abd5146f63c0
DIFF: https://github.com/llvm/llvm-project/commit/844e41c2acedd5219d9363e38838abd5146f63c0.diff
LOG: [libc] Moved shared constexpr to the top (#144569)
Some conversions shared constexpr so moved to the top.
---------
Co-authored-by: Sriya Pratipati <sriyap at google.com>
Added:
Modified:
libc/src/__support/wchar/character_converter.cpp
Removed:
################################################################################
diff --git a/libc/src/__support/wchar/character_converter.cpp b/libc/src/__support/wchar/character_converter.cpp
index 3b9046dfb9a76..5ab0447bb08b2 100644
--- a/libc/src/__support/wchar/character_converter.cpp
+++ b/libc/src/__support/wchar/character_converter.cpp
@@ -19,6 +19,13 @@
namespace LIBC_NAMESPACE_DECL {
namespace internal {
+// This is for utf-8 bytes other than the first byte
+constexpr size_t ENCODED_BITS_PER_UTF8 = 6;
+// The number of bits per utf-8 byte that actually encode character
+// Information not metadata (# of bits excluding the byte headers)
+constexpr uint32_t MASK_ENCODED_BITS =
+ mask_trailing_ones<uint32_t, ENCODED_BITS_PER_UTF8>();
+
CharacterConverter::CharacterConverter(mbstate *mbstate) { state = mbstate; }
void CharacterConverter::clear() {
@@ -61,10 +68,8 @@ int CharacterConverter::push(char8_t utf8_byte) {
}
// Any subsequent push
// Adding 6 more bits so need to left shift
- constexpr size_t ENCODED_BITS_PER_UTF8 = 6;
if (num_ones == 1 && !isComplete()) {
- char32_t byte =
- utf8_byte & mask_trailing_ones<uint32_t, ENCODED_BITS_PER_UTF8>();
+ char32_t byte = utf8_byte & MASK_ENCODED_BITS;
state->partial = state->partial << ENCODED_BITS_PER_UTF8;
state->partial |= byte;
state->bytes_processed++;
@@ -117,12 +122,6 @@ ErrorOr<char8_t> CharacterConverter::pop_utf8() {
constexpr char8_t FIRST_BYTE_HEADERS[] = {0, 0xC0, 0xE0, 0xF0};
constexpr char8_t CONTINUING_BYTE_HEADER = 0x80;
- // the number of bits per utf-8 byte that actually encode character
- // information not metadata (# of bits excluding the byte headers)
- constexpr size_t ENCODED_BITS_PER_UTF8 = 6;
- constexpr int MASK_ENCODED_BITS =
- mask_trailing_ones<unsigned int, ENCODED_BITS_PER_UTF8>();
-
char32_t output;
// Shift to get the next 6 bits from the utf32 encoding
More information about the libc-commits
mailing list