diff options
| author | Vinay Deshmukh <32487576+vinay-deshmukh@users.noreply.github.com> | 2025-03-10 11:57:09 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-10 11:57:09 -0400 |
| commit | 257e48371546f75623482071fc39eef4b64fbd88 (patch) | |
| tree | a925e2bae1efbfd4e395a16b3259421e00aa909e /libc/src/string | |
| parent | c40f0fe4348bb9304b95bd317665bf1cb2bdcc85 (diff) | |
[libc] Add `-Wno-sign-conversion` & re-attempt `-Wconversion` (#129811)
Relates to
https://github.com/llvm/llvm-project/issues/119281#issuecomment-2699470459
Diffstat (limited to 'libc/src/string')
| -rw-r--r-- | libc/src/string/memory_utils/utils.h | 7 | ||||
| -rw-r--r-- | libc/src/string/string_utils.h | 14 |
2 files changed, 12 insertions, 9 deletions
diff --git a/libc/src/string/memory_utils/utils.h b/libc/src/string/memory_utils/utils.h index 5c9bc72208f8..bdf0b8652188 100644 --- a/libc/src/string/memory_utils/utils.h +++ b/libc/src/string/memory_utils/utils.h @@ -263,7 +263,7 @@ LIBC_INLINE void store_aligned(ValueType value, Ptr dst) { static_assert(sizeof(ValueType) >= (sizeof(T) + ... + sizeof(TS))); constexpr size_t SHIFT = sizeof(T) * 8; if constexpr (Endian::IS_LITTLE) { - store<T>(assume_aligned<sizeof(T)>(dst), value & ~T(0)); + store<T>(assume_aligned<sizeof(T)>(dst), T(value & T(~0))); if constexpr (sizeof...(TS) > 0) store_aligned<ValueType, TS...>(value >> SHIFT, dst + sizeof(T)); } else if constexpr (Endian::IS_BIG) { @@ -297,7 +297,7 @@ LIBC_INLINE void adjust(ptrdiff_t offset, T1 *__restrict &p1, T2 *__restrict &p2, size_t &count) { p1 += offset; p2 += offset; - count -= offset; + count -= static_cast<size_t>(offset); } // Advances p1 and p2 so p1 gets aligned to the next SIZE bytes boundary @@ -306,7 +306,8 @@ LIBC_INLINE void adjust(ptrdiff_t offset, T1 *__restrict &p1, template <size_t SIZE, typename T1, typename T2> void align_p1_to_next_boundary(T1 *__restrict &p1, T2 *__restrict &p2, size_t &count) { - adjust(distance_to_next_aligned<SIZE>(p1), p1, p2, count); + adjust(static_cast<ptrdiff_t>(distance_to_next_aligned<SIZE>(p1)), p1, p2, + count); p1 = assume_aligned<SIZE>(p1); } diff --git a/libc/src/string/string_utils.h b/libc/src/string/string_utils.h index 583d35014d39..e4659f65c93e 100644 --- a/libc/src/string/string_utils.h +++ b/libc/src/string/string_utils.h @@ -66,7 +66,7 @@ LIBC_INLINE size_t string_length_wide_read(const char *src) { for (; reinterpret_cast<uintptr_t>(char_ptr) % sizeof(Word) != 0; ++char_ptr) { if (*char_ptr == '\0') - return char_ptr - src; + return static_cast<size_t>(char_ptr - src); } // Step 2: read blocks for (const Word *block_ptr = reinterpret_cast<const Word *>(char_ptr); @@ -77,7 +77,7 @@ LIBC_INLINE size_t string_length_wide_read(const char *src) { for (; *char_ptr != '\0'; ++char_ptr) { ; } - return char_ptr - src; + return static_cast<size_t>(char_ptr - src); } // Returns the length of a string, denoted by the first occurrence @@ -169,7 +169,7 @@ LIBC_INLINE size_t complementary_span(const char *src, const char *segment) { for (; *src && !bitset.test(*reinterpret_cast<const unsigned char *>(src)); ++src) ; - return src - initial; + return static_cast<size_t>(src - initial); } // Given the similarities between strtok and strtok_r, we can implement both @@ -189,12 +189,14 @@ LIBC_INLINE char *string_token(char *__restrict src, if (LIBC_UNLIKELY(src == nullptr && ((src = *saveptr) == nullptr))) return nullptr; + static_assert(sizeof(char) == sizeof(cpp::byte), + "bitset of 256 assumes char is 8 bits"); cpp::bitset<256> delimiter_set; for (; *delimiter_string != '\0'; ++delimiter_string) - delimiter_set.set(*delimiter_string); + delimiter_set.set(static_cast<size_t>(*delimiter_string)); if constexpr (SkipDelim) - for (; *src != '\0' && delimiter_set.test(*src); ++src) + for (; *src != '\0' && delimiter_set.test(static_cast<size_t>(*src)); ++src) ; if (*src == '\0') { *saveptr = src; @@ -202,7 +204,7 @@ LIBC_INLINE char *string_token(char *__restrict src, } char *token = src; for (; *src != '\0'; ++src) { - if (delimiter_set.test(*src)) { + if (delimiter_set.test(static_cast<size_t>(*src))) { *src = '\0'; ++src; break; |
