diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake index 03b76508fdf6c..03b4b251649e7 100644 --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -36,7 +36,8 @@ function(_get_common_test_compile_options output_var c_test flags) if(NOT LIBC_WNO_ERROR) # list(APPEND compile_options "-Werror") endif() - list(APPEND compile_options "-Wconversion") + # list(APPEND compile_options "-Wconversion") + # list(APPEND compile_options "-Wno-sign-conversion") list(APPEND compile_options "-Wimplicit-fallthrough") list(APPEND compile_options "-Wwrite-strings") # Silence this warning because _Complex is a part of C99. diff --git a/libc/src/__support/CPP/bit.h b/libc/src/__support/CPP/bit.h index 7d138201783bf..82b9eb5128262 100644 --- a/libc/src/__support/CPP/bit.h +++ b/libc/src/__support/CPP/bit.h @@ -101,7 +101,7 @@ countr_zero(T value) { shift >>= 1; mask >>= shift; } - return static_cast(zero_bits); + return zero_bits; } #if __has_builtin(__builtin_ctzs) ADD_SPECIALIZATION(countr_zero, unsigned short, __builtin_ctzs) @@ -140,7 +140,7 @@ countl_zero(T value) { else zero_bits |= shift; } - return static_cast(zero_bits); + return zero_bits; } #if __has_builtin(__builtin_clzs) ADD_SPECIALIZATION(countl_zero, unsigned short, __builtin_clzs) @@ -226,7 +226,7 @@ rotr(T value, int rotate); template [[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t, T> rotl(T value, int rotate) { - constexpr int N = cpp::numeric_limits::digits; + constexpr unsigned N = cpp::numeric_limits::digits; rotate = rotate % N; if (!rotate) return value; @@ -238,7 +238,7 @@ rotl(T value, int rotate) { template [[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t, T> rotr(T value, int rotate) { - constexpr int N = cpp::numeric_limits::digits; + constexpr unsigned N = cpp::numeric_limits::digits; rotate = rotate % N; if (!rotate) return value; diff --git a/libc/src/__support/CPP/span.h b/libc/src/__support/CPP/span.h index 9234a26d201cd..a41c9b744e370 100644 --- a/libc/src/__support/CPP/span.h +++ b/libc/src/__support/CPP/span.h @@ -11,7 +11,6 @@ #include // For size_t #include "array.h" // For array -#include "limits.h" #include "src/__support/macros/config.h" #include "type_traits.h" // For remove_cv_t, enable_if_t, is_same_v, is_const_v @@ -49,8 +48,7 @@ template class span { using const_reference = const T &; using iterator = T *; - LIBC_INLINE_VAR static constexpr size_type dynamic_extent = - cpp::numeric_limits::max(); + LIBC_INLINE_VAR static constexpr size_type dynamic_extent = -1; LIBC_INLINE constexpr span() : span_data(nullptr), span_size(0) {} @@ -60,7 +58,7 @@ template class span { : span_data(first), span_size(count) {} LIBC_INLINE constexpr span(pointer first, pointer end) - : span_data(first), span_size(static_cast(end - first)) {} + : span_data(first), span_size(end - first) {} template , bool> = true> diff --git a/libc/src/__support/CPP/string.h b/libc/src/__support/CPP/string.h index 1ac04c7f1f9dc..dbc0ae04e5e6f 100644 --- a/libc/src/__support/CPP/string.h +++ b/libc/src/__support/CPP/string.h @@ -67,8 +67,7 @@ class string { : string(cstr, ::LIBC_NAMESPACE::internal::string_length(cstr)) {} LIBC_INLINE string(size_t size_, char value) { resize(size_); - static_assert(sizeof(char) == sizeof(uint8_t)); - inline_memset((void *)buffer_, static_cast(value), size_); + inline_memset((void *)buffer_, value, size_); } LIBC_INLINE string &operator=(const string &other) { diff --git a/libc/src/__support/CPP/string_view.h b/libc/src/__support/CPP/string_view.h index aa15814b2e149..745c62c35f0a0 100644 --- a/libc/src/__support/CPP/string_view.h +++ b/libc/src/__support/CPP/string_view.h @@ -9,7 +9,6 @@ #ifndef LLVM_LIBC_SRC___SUPPORT_CPP_STRING_VIEW_H #define LLVM_LIBC_SRC___SUPPORT_CPP_STRING_VIEW_H -#include "limits.h" #include "src/__support/common.h" #include "src/__support/macros/config.h" @@ -41,7 +40,7 @@ class string_view { LIBC_INLINE static constexpr size_t length(const char *Str) { for (const char *End = Str;; ++End) if (*End == '\0') - return static_cast(End - Str); + return End - Str; } LIBC_INLINE bool equals(string_view Other) const { @@ -62,8 +61,7 @@ class string_view { // special value equal to the maximum value representable by the type // size_type. - LIBC_INLINE_VAR static constexpr size_t npos = - cpp::numeric_limits::max(); + LIBC_INLINE_VAR static constexpr size_t npos = -1; LIBC_INLINE constexpr string_view() : Data(nullptr), Len(0) {} diff --git a/libc/src/__support/FPUtil/FPBits.h b/libc/src/__support/FPUtil/FPBits.h index bee8d0a8dc47d..90b6e406e0f31 100644 --- a/libc/src/__support/FPUtil/FPBits.h +++ b/libc/src/__support/FPUtil/FPBits.h @@ -247,11 +247,11 @@ template struct FPStorage : public FPLayout { using UP::UP; LIBC_INLINE constexpr BiasedExponent(Exponent exp) - : UP(static_cast(static_cast(exp) + EXP_BIAS)) {} + : UP(static_cast(exp) + EXP_BIAS) {} // Cast operator to get convert from BiasedExponent to Exponent. LIBC_INLINE constexpr operator Exponent() const { - return Exponent(static_cast(UP::value - EXP_BIAS)); + return Exponent(UP::value - EXP_BIAS); } LIBC_INLINE constexpr BiasedExponent &operator++() { @@ -686,7 +686,7 @@ struct FPRepImpl : public FPRepSem { } LIBC_INLINE constexpr void set_biased_exponent(StorageType biased) { - UP::set_biased_exponent(BiasedExponent(static_cast(biased))); + UP::set_biased_exponent(BiasedExponent((int32_t)biased)); } LIBC_INLINE constexpr int get_exponent() const { diff --git a/libc/src/__support/FPUtil/NormalFloat.h b/libc/src/__support/FPUtil/NormalFloat.h index a2f285fc6fb95..b4cbb5042a68b 100644 --- a/libc/src/__support/FPUtil/NormalFloat.h +++ b/libc/src/__support/FPUtil/NormalFloat.h @@ -105,7 +105,7 @@ template struct NormalFloat { constexpr int SUBNORMAL_EXPONENT = -FPBits::EXP_BIAS + 1; if (exponent < SUBNORMAL_EXPONENT) { - unsigned shift = static_cast(SUBNORMAL_EXPONENT - exponent); + unsigned shift = SUBNORMAL_EXPONENT - exponent; // Since exponent > subnormalExponent, shift is strictly greater than // zero. if (shift <= FPBits::FRACTION_LEN + 1) { @@ -160,7 +160,7 @@ template struct NormalFloat { if (bits.is_subnormal()) { unsigned shift = evaluate_normalization_shift(bits.get_mantissa()); mantissa = static_cast(bits.get_mantissa() << shift); - exponent = 1 - FPBits::EXP_BIAS - static_cast(shift); + exponent = 1 - FPBits::EXP_BIAS - shift; } else { exponent = bits.get_biased_exponent() - FPBits::EXP_BIAS; mantissa = ONE | bits.get_mantissa(); diff --git a/libc/src/__support/FPUtil/aarch64/FEnvImpl.h b/libc/src/__support/FPUtil/aarch64/FEnvImpl.h index 914155a01631d..18b0631324f8f 100644 --- a/libc/src/__support/FPUtil/aarch64/FEnvImpl.h +++ b/libc/src/__support/FPUtil/aarch64/FEnvImpl.h @@ -110,7 +110,7 @@ LIBC_INLINE int enable_except(int excepts) { (controlWord >> FEnv::ExceptionControlFlagsBitPosition) & 0x1F; controlWord |= (newExcepts << FEnv::ExceptionControlFlagsBitPosition); FEnv::writeControlWord(controlWord); - return FEnv::exceptionStatusToMacro(static_cast(oldExcepts)); + return FEnv::exceptionStatusToMacro(oldExcepts); } LIBC_INLINE int disable_except(int excepts) { @@ -120,12 +120,12 @@ LIBC_INLINE int disable_except(int excepts) { (controlWord >> FEnv::ExceptionControlFlagsBitPosition) & 0x1F; controlWord &= ~(disabledExcepts << FEnv::ExceptionControlFlagsBitPosition); FEnv::writeControlWord(controlWord); - return FEnv::exceptionStatusToMacro(static_cast(oldExcepts)); + return FEnv::exceptionStatusToMacro(oldExcepts); } LIBC_INLINE int get_except() { uint32_t controlWord = FEnv::getControlWord(); - uint32_t enabledExcepts = + int enabledExcepts = (controlWord >> FEnv::ExceptionControlFlagsBitPosition) & 0x1F; return FEnv::exceptionStatusToMacro(enabledExcepts); } @@ -250,10 +250,8 @@ LIBC_INLINE int set_round(int mode) { } uint32_t controlWord = FEnv::getControlWord(); - controlWord &= - static_cast(~(0x3 << FEnv::RoundingControlBitPosition)); - controlWord |= - static_cast(bitValue << FEnv::RoundingControlBitPosition); + controlWord &= ~(0x3 << FEnv::RoundingControlBitPosition); + controlWord |= (bitValue << FEnv::RoundingControlBitPosition); FEnv::writeControlWord(controlWord); return 0; diff --git a/libc/src/__support/FPUtil/aarch64/fenv_darwin_impl.h b/libc/src/__support/FPUtil/aarch64/fenv_darwin_impl.h index dcce76b6116be..969e70796d1f1 100644 --- a/libc/src/__support/FPUtil/aarch64/fenv_darwin_impl.h +++ b/libc/src/__support/FPUtil/aarch64/fenv_darwin_impl.h @@ -63,7 +63,7 @@ struct FEnv { // __fpcr_flush_to_zero bit in the FPCR register. This control bit is // located in a different place from FE_FLUSHTOZERO status bit relative to // the other exceptions. - LIBC_INLINE static uint32_t exception_value_from_status(uint32_t status) { + LIBC_INLINE static uint32_t exception_value_from_status(int status) { return ((status & FE_INVALID) ? EX_INVALID : 0) | ((status & FE_DIVBYZERO) ? EX_DIVBYZERO : 0) | ((status & FE_OVERFLOW) ? EX_OVERFLOW : 0) | @@ -72,7 +72,7 @@ struct FEnv { ((status & FE_FLUSHTOZERO) ? EX_FLUSHTOZERO : 0); } - LIBC_INLINE static uint32_t exception_value_from_control(uint32_t control) { + LIBC_INLINE static uint32_t exception_value_from_control(int control) { return ((control & __fpcr_trap_invalid) ? EX_INVALID : 0) | ((control & __fpcr_trap_divbyzero) ? EX_DIVBYZERO : 0) | ((control & __fpcr_trap_overflow) ? EX_OVERFLOW : 0) | @@ -81,7 +81,7 @@ struct FEnv { ((control & __fpcr_flush_to_zero) ? EX_FLUSHTOZERO : 0); } - LIBC_INLINE static uint32_t exception_value_to_status(uint32_t excepts) { + LIBC_INLINE static int exception_value_to_status(uint32_t excepts) { return ((excepts & EX_INVALID) ? FE_INVALID : 0) | ((excepts & EX_DIVBYZERO) ? FE_DIVBYZERO : 0) | ((excepts & EX_OVERFLOW) ? FE_OVERFLOW : 0) | @@ -90,7 +90,7 @@ struct FEnv { ((excepts & EX_FLUSHTOZERO) ? FE_FLUSHTOZERO : 0); } - LIBC_INLINE static uint32_t exception_value_to_control(uint32_t excepts) { + LIBC_INLINE static int exception_value_to_control(uint32_t excepts) { return ((excepts & EX_INVALID) ? __fpcr_trap_invalid : 0) | ((excepts & EX_DIVBYZERO) ? __fpcr_trap_divbyzero : 0) | ((excepts & EX_OVERFLOW) ? __fpcr_trap_overflow : 0) | @@ -113,37 +113,34 @@ struct FEnv { }; LIBC_INLINE int enable_except(int excepts) { - uint32_t new_excepts = - FEnv::exception_value_from_status(static_cast(excepts)); + uint32_t new_excepts = FEnv::exception_value_from_status(excepts); uint32_t control_word = FEnv::get_control_word(); uint32_t old_excepts = FEnv::exception_value_from_control(control_word); if (new_excepts != old_excepts) { control_word |= FEnv::exception_value_to_control(new_excepts); FEnv::set_control_word(control_word); } - return static_cast(FEnv::exception_value_to_status(old_excepts)); + return FEnv::exception_value_to_status(old_excepts); } LIBC_INLINE int disable_except(int excepts) { - uint32_t disabled_excepts = - FEnv::exception_value_from_status(static_cast(excepts)); + uint32_t disabled_excepts = FEnv::exception_value_from_status(excepts); uint32_t control_word = FEnv::get_control_word(); uint32_t old_excepts = FEnv::exception_value_from_control(control_word); control_word &= ~FEnv::exception_value_to_control(disabled_excepts); FEnv::set_control_word(control_word); - return static_cast(FEnv::exception_value_to_status(old_excepts)); + return FEnv::exception_value_to_status(old_excepts); } LIBC_INLINE int get_except() { uint32_t control_word = FEnv::get_control_word(); uint32_t enabled_excepts = FEnv::exception_value_from_control(control_word); - return static_cast(FEnv::exception_value_to_status(enabled_excepts)); + return FEnv::exception_value_to_status(enabled_excepts); } LIBC_INLINE int clear_except(int excepts) { uint32_t status_word = FEnv::get_status_word(); - uint32_t except_value = - FEnv::exception_value_from_status(static_cast(excepts)); + uint32_t except_value = FEnv::exception_value_from_status(excepts); status_word &= ~FEnv::exception_value_to_status(except_value); FEnv::set_status_word(status_word); return 0; @@ -151,16 +148,13 @@ LIBC_INLINE int clear_except(int excepts) { LIBC_INLINE int test_except(int excepts) { uint32_t statusWord = FEnv::get_status_word(); - uint32_t ex_value = - FEnv::exception_value_from_status(static_cast(excepts)); - return static_cast(statusWord & - FEnv::exception_value_to_status(ex_value)); + uint32_t ex_value = FEnv::exception_value_from_status(excepts); + return statusWord & FEnv::exception_value_to_status(ex_value); } LIBC_INLINE int set_except(int excepts) { uint32_t status_word = FEnv::get_status_word(); - uint32_t new_exceptions = - FEnv::exception_value_from_status(static_cast(excepts)); + uint32_t new_exceptions = FEnv::exception_value_from_status(excepts); status_word |= FEnv::exception_value_to_status(new_exceptions); FEnv::set_status_word(status_word); return 0; @@ -180,8 +174,7 @@ LIBC_INLINE int raise_except(int excepts) { : "s0", "s1" /* s0 and s1 are clobbered */); }; - uint32_t to_raise = - FEnv::exception_value_from_status(static_cast(excepts)); + uint32_t to_raise = FEnv::exception_value_from_status(excepts); int result = 0; if (to_raise & FEnv::EX_INVALID) { @@ -244,7 +237,7 @@ LIBC_INLINE int get_round() { } LIBC_INLINE int set_round(int mode) { - uint32_t bit_value; + uint16_t bit_value; switch (mode) { case FE_TONEAREST: bit_value = FEnv::TONEAREST; @@ -263,7 +256,7 @@ LIBC_INLINE int set_round(int mode) { } uint32_t control_word = FEnv::get_control_word(); - control_word &= ~(0x3u << FEnv::ROUNDING_CONTROL_BIT_POSITION); + control_word &= ~(0x3 << FEnv::ROUNDING_CONTROL_BIT_POSITION); control_word |= (bit_value << FEnv::ROUNDING_CONTROL_BIT_POSITION); FEnv::set_control_word(control_word); diff --git a/libc/src/__support/FPUtil/generic/sqrt_80_bit_long_double.h b/libc/src/__support/FPUtil/generic/sqrt_80_bit_long_double.h index 0ba836d17a085..9492d52da0455 100644 --- a/libc/src/__support/FPUtil/generic/sqrt_80_bit_long_double.h +++ b/libc/src/__support/FPUtil/generic/sqrt_80_bit_long_double.h @@ -24,7 +24,7 @@ namespace x86 { LIBC_INLINE void normalize(int &exponent, FPBits::StorageType &mantissa) { const unsigned int shift = static_cast( - static_cast(cpp::countl_zero(static_cast(mantissa))) - + cpp::countl_zero(static_cast(mantissa)) - (8 * sizeof(uint64_t) - 1 - FPBits::FRACTION_LEN)); exponent -= shift; mantissa <<= shift; diff --git a/libc/src/__support/OSUtil/darwin/io.h b/libc/src/__support/OSUtil/darwin/io.h index 69df99da522fb..a5f7ecbd70362 100644 --- a/libc/src/__support/OSUtil/darwin/io.h +++ b/libc/src/__support/OSUtil/darwin/io.h @@ -17,8 +17,7 @@ namespace LIBC_NAMESPACE_DECL { LIBC_INLINE void write_to_stderr(cpp::string_view msg) { LIBC_NAMESPACE::syscall_impl(4 /*SYS_write*/, 2 /* stderr */, - reinterpret_cast(msg.data()), - static_cast(msg.size())); + reinterpret_cast(msg.data()), msg.size()); } } // namespace LIBC_NAMESPACE_DECL diff --git a/libc/src/__support/big_int.h b/libc/src/__support/big_int.h index f44624a7eafce..e726a094b5dac 100644 --- a/libc/src/__support/big_int.h +++ b/libc/src/__support/big_int.h @@ -284,7 +284,7 @@ LIBC_INLINE constexpr cpp::array shift(cpp::array array, if (i < 0) return 0; if (i >= int(N)) - return is_neg ? cpp::numeric_limits::max() : 0; + return is_neg ? -1 : 0; return array[i]; }; const size_t index_offset = offset / WORD_BITS; @@ -696,8 +696,7 @@ struct BigInt { } BigInt quotient; WordType x_word = static_cast(x); - constexpr size_t LOG2_WORD_SIZE = - static_cast(cpp::bit_width(WORD_SIZE) - 1); + constexpr size_t LOG2_WORD_SIZE = cpp::bit_width(WORD_SIZE) - 1; constexpr size_t HALF_WORD_SIZE = WORD_SIZE >> 1; constexpr WordType HALF_MASK = ((WordType(1) << HALF_WORD_SIZE) - 1); // lower = smallest multiple of WORD_SIZE that is >= e. @@ -1009,12 +1008,12 @@ struct BigInt { BigInt subtractor = divider; int cur_bit = multiword::countl_zero(subtractor.val) - multiword::countl_zero(remainder.val); - subtractor <<= static_cast(cur_bit); + subtractor <<= cur_bit; for (; cur_bit >= 0 && remainder > 0; --cur_bit, subtractor >>= 1) { if (remainder < subtractor) continue; remainder -= subtractor; - quotient.set_bit(static_cast(cur_bit)); + quotient.set_bit(cur_bit); } } return Division{quotient, remainder}; @@ -1276,28 +1275,26 @@ rotr(T value, int rotate); template [[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t, T> rotl(T value, int rotate) { - constexpr int N = cpp::numeric_limits::digits; + constexpr unsigned N = cpp::numeric_limits::digits; rotate = rotate % N; if (!rotate) return value; if (rotate < 0) return cpp::rotr(value, -rotate); - return (value << static_cast(rotate)) | - (value >> (N - static_cast(rotate))); + return (value << rotate) | (value >> (N - rotate)); } // Specialization of cpp::rotr ('bit.h') for BigInt. template [[nodiscard]] LIBC_INLINE constexpr cpp::enable_if_t, T> rotr(T value, int rotate) { - constexpr int N = cpp::numeric_limits::digits; + constexpr unsigned N = cpp::numeric_limits::digits; rotate = rotate % N; if (!rotate) return value; if (rotate < 0) return cpp::rotl(value, -rotate); - return (value >> static_cast(rotate)) | - (value << (N - static_cast(rotate))); + return (value >> rotate) | (value << (N - rotate)); } } // namespace cpp @@ -1314,7 +1311,7 @@ mask_trailing_ones() { T out; // zero initialized for (size_t i = 0; i <= QUOTIENT; ++i) out[i] = i < QUOTIENT - ? cpp::numeric_limits::max() + ? -1 : mask_trailing_ones(); return out; } @@ -1330,7 +1327,7 @@ LIBC_INLINE constexpr cpp::enable_if_t, T> mask_leading_ones() { T out; // zero initialized for (size_t i = QUOTIENT; i < T::WORD_COUNT; ++i) out[i] = i > QUOTIENT - ? cpp::numeric_limits::max() + ? -1 : mask_leading_ones(); return out; } diff --git a/libc/src/__support/high_precision_decimal.h b/libc/src/__support/high_precision_decimal.h index cb4b50c315447..922dce484aa6b 100644 --- a/libc/src/__support/high_precision_decimal.h +++ b/libc/src/__support/high_precision_decimal.h @@ -264,7 +264,7 @@ class HighPrecisionDecimal { LIBC_INLINE void left_shift(uint32_t shift_amount) { uint32_t new_digits = this->get_num_new_digits(shift_amount); - int32_t read_index = static_cast(this->num_digits - 1); + int32_t read_index = this->num_digits - 1; uint32_t write_index = this->num_digits + new_digits; uint64_t accumulator = 0; @@ -329,7 +329,7 @@ class HighPrecisionDecimal { if (saw_dot) { break; } - this->decimal_point = static_cast(total_digits); + this->decimal_point = total_digits; saw_dot = true; } else { if (num_string[num_cur] == '0' && this->num_digits == 0) { @@ -350,7 +350,7 @@ class HighPrecisionDecimal { } if (!saw_dot) - this->decimal_point = static_cast(total_digits); + this->decimal_point = total_digits; if (num_cur < num_len && (num_string[num_cur] == 'e' || num_string[num_cur] == 'E')) { @@ -393,7 +393,7 @@ class HighPrecisionDecimal { this->left_shift(MAX_SHIFT_AMOUNT); shift_amount -= MAX_SHIFT_AMOUNT; } - this->left_shift(static_cast(shift_amount)); + this->left_shift(shift_amount); } // Right else { @@ -401,7 +401,7 @@ class HighPrecisionDecimal { this->right_shift(MAX_SHIFT_AMOUNT); shift_amount += MAX_SHIFT_AMOUNT; } - this->right_shift(static_cast(-shift_amount)); + this->right_shift(-shift_amount); } } @@ -424,8 +424,8 @@ class HighPrecisionDecimal { result *= 10; ++cur_digit; } - return result + - static_cast(this->should_round_up(this->decimal_point, round)); + return result + static_cast( + this->should_round_up(this->decimal_point, round)); } // Extra functions for testing. diff --git a/libc/src/__support/integer_literals.h b/libc/src/__support/integer_literals.h index f68b7ef12c879..0298ec7d088d6 100644 --- a/libc/src/__support/integer_literals.h +++ b/libc/src/__support/integer_literals.h @@ -47,7 +47,7 @@ LIBC_INLINE constexpr T accumulate(int base, const uint8_t *digits, size_t size) { T value{}; for (; size; ++digits, --size) { - value *= static_cast(base); + value *= base; value += *digits; } return value; diff --git a/libc/src/__support/integer_to_string.h b/libc/src/__support/integer_to_string.h index 65bdcf16b3867..13dd83e9ed2b1 100644 --- a/libc/src/__support/integer_to_string.h +++ b/libc/src/__support/integer_to_string.h @@ -405,7 +405,7 @@ template class IntegerToString { // Returns the absolute value of 'value' as 'UNSIGNED_T'. LIBC_INLINE static UNSIGNED_T abs(T value) { if (cpp::is_unsigned_v || value >= 0) - return static_cast(value); // already of the right sign. + return value; // already of the right sign. // Signed integers are asymmetric (e.g., int8_t ∈ [-128, 127]). // Thus negating the type's minimum value would overflow. @@ -422,8 +422,7 @@ template class IntegerToString { if (value == cpp::numeric_limits::min()) { return cpp::bit_cast(value); } else { - return static_cast( - -value); // legal and representable both as T and UNSIGNED_T.` + return -value; // legal and representable both as T and UNSIGNED_T.` } } diff --git a/libc/src/__support/memory_size.h b/libc/src/__support/memory_size.h index 3d40b113bcb68..cdd6a10222de1 100644 --- a/libc/src/__support/memory_size.h +++ b/libc/src/__support/memory_size.h @@ -77,8 +77,7 @@ class SafeMemSize { if (!cpp::has_single_bit(alignment) || alignment > MAX_MEM_SIZE || !valid()) return SafeMemSize{type{-1}}; - type offset = - static_cast(offset_to(static_cast(value), alignment)); + type offset = offset_to(value, alignment); if (LIBC_UNLIKELY(offset > static_cast(MAX_MEM_SIZE) - value)) return SafeMemSize{type{-1}}; diff --git a/libc/src/__support/str_to_float.h b/libc/src/__support/str_to_float.h index 48c88309c58e9..b4d5646822df3 100644 --- a/libc/src/__support/str_to_float.h +++ b/libc/src/__support/str_to_float.h @@ -108,11 +108,11 @@ eisel_lemire(ExpandedFloat init_num, } // Normalization - uint32_t clz = static_cast(cpp::countl_zero(mantissa)); + uint32_t clz = cpp::countl_zero(mantissa); mantissa <<= clz; - int32_t exp2 = exp10_to_exp2(exp10) + FPBits::STORAGE_LEN + FPBits::EXP_BIAS - - static_cast(clz); + int32_t exp2 = + exp10_to_exp2(exp10) + FPBits::STORAGE_LEN + FPBits::EXP_BIAS - clz; // Multiplication const uint64_t *power_of_ten = @@ -225,8 +225,8 @@ eisel_lemire(ExpandedFloat init_num, } // Normalization - int32_t clz = static_cast(cpp::countl_zero(mantissa)) - - ((sizeof(UInt128) - sizeof(StorageType)) * CHAR_BIT); + uint32_t clz = cpp::countl_zero(mantissa) - + ((sizeof(UInt128) - sizeof(StorageType)) * CHAR_BIT); mantissa <<= clz; int32_t exp2 = @@ -802,7 +802,7 @@ LIBC_INLINE FloatConvertReturn binary_exp_to_float(ExpandedFloat init_num, // Handle subnormals. if (biased_exponent <= 0) { - amount_to_shift_right += static_cast(1 - biased_exponent); + amount_to_shift_right += 1 - biased_exponent; biased_exponent = 0; if (amount_to_shift_right > FPBits::STORAGE_LEN) { @@ -909,7 +909,7 @@ decimal_string_to_float(const char *__restrict src, const char DECIMAL_POINT, cpp::numeric_limits::max() / BASE; while (true) { if (isdigit(src[index])) { - uint32_t digit = static_cast(b36_char_to_int(src[index])); + uint32_t digit = b36_char_to_int(src[index]); seen_digit = true; if (mantissa < bitstype_max_div_by_base) { @@ -956,7 +956,7 @@ decimal_string_to_float(const char *__restrict src, const char DECIMAL_POINT, if (result.has_error()) output.error = result.error; int32_t add_to_exponent = result.value; - index += static_cast(result.parsed_len); + index += result.parsed_len; // Here we do this operation as int64 to avoid overflow. int64_t temp_exponent = static_cast(exponent) + @@ -1020,7 +1020,7 @@ hexadecimal_string_to_float(const char *__restrict src, cpp::numeric_limits::max() / BASE; while (true) { if (isalnum(src[index])) { - uint32_t digit = static_cast(b36_char_to_int(src[index])); + uint32_t digit = b36_char_to_int(src[index]); if (digit < BASE) seen_digit = true; else @@ -1070,7 +1070,7 @@ hexadecimal_string_to_float(const char *__restrict src, output.error = result.error; int32_t add_to_exponent = result.value; - index += static_cast(result.parsed_len); + index += result.parsed_len; // Here we do this operation as int64 to avoid overflow. int64_t temp_exponent = static_cast(exponent) + @@ -1135,7 +1135,7 @@ LIBC_INLINE StrToNumResult strtofloatingpoint(const char *__restrict src) { int error = 0; - size_t index = static_cast(first_non_whitespace(src) - src); + ptrdiff_t index = first_non_whitespace(src) - src; if (src[index] == '+' || src[index] == '-') { sign = src[index]; @@ -1245,7 +1245,7 @@ LIBC_INLINE StrToNumResult strtofloatingpoint(const char *__restrict src) { // special 80 bit long doubles. Otherwise it should be inlined out. set_implicit_bit(result); - return {result.get_val(), static_cast(index), error}; + return {result.get_val(), index, error}; } template LIBC_INLINE StrToNumResult strtonan(const char *arg) { diff --git a/libc/src/__support/str_to_integer.h b/libc/src/__support/str_to_integer.h index 9212ad25d0820..8e569e8a7feb0 100644 --- a/libc/src/__support/str_to_integer.h +++ b/libc/src/__support/str_to_integer.h @@ -96,7 +96,7 @@ strtointeger(const char *__restrict src, int base, if (base < 0 || base == 1 || base > 36) return {0, 0, EINVAL}; - src_cur = static_cast(first_non_whitespace(src, src_len) - src); + src_cur = first_non_whitespace(src, src_len) - src; char result_sign = '+'; if (src[src_cur] == '+' || src[src_cur] == '-') { @@ -119,7 +119,7 @@ strtointeger(const char *__restrict src, int base, ResultType const abs_max = (is_positive ? cpp::numeric_limits::max() : NEGATIVE_MAX); ResultType const abs_max_div_by_base = - abs_max / static_cast(base); + static_cast(abs_max / base); while (src_cur < src_len && isalnum(src[src_cur])) { int cur_digit = b36_char_to_int(src[src_cur]); @@ -141,17 +141,17 @@ strtointeger(const char *__restrict src, int base, result = abs_max; error_val = ERANGE; } else { - result = result * static_cast(base); + result = static_cast(result * base); } - if (result > abs_max - static_cast(cur_digit)) { + if (result > abs_max - cur_digit) { result = abs_max; error_val = ERANGE; } else { - result = result + static_cast(cur_digit); + result = static_cast(result + cur_digit); } } - ptrdiff_t str_len = is_number ? static_cast(src_cur) : 0; + ptrdiff_t str_len = is_number ? (src_cur) : 0; if (error_val == ERANGE) { if (is_positive || IS_UNSIGNED) diff --git a/libc/src/stdio/printf_core/parser.h b/libc/src/stdio/printf_core/parser.h index 89556f1a9e5f2..acbbaa25b1c9d 100644 --- a/libc/src/stdio/printf_core/parser.h +++ b/libc/src/stdio/printf_core/parser.h @@ -57,8 +57,7 @@ template using int_type_of_v = typename int_type_of::type; if (!temp.has_value()) { \ section.has_conv = false; \ } else { \ - dst = static_cast( \ - cpp::bit_cast>(temp.value())); \ + dst = cpp::bit_cast>(temp.value()); \ } \ } #else @@ -131,7 +130,7 @@ template class Parser { } else if (internal::isdigit(str[cur_pos])) { auto result = internal::strtointeger(str + cur_pos, 10); section.min_width = result.value; - cur_pos = cur_pos + static_cast(result.parsed_len); + cur_pos = cur_pos + result.parsed_len; } if (section.min_width < 0) { section.min_width = @@ -154,7 +153,7 @@ template class Parser { } else if (internal::isdigit(str[cur_pos])) { auto result = internal::strtointeger(str + cur_pos, 10); section.precision = result.value; - cur_pos = cur_pos + static_cast(result.parsed_len); + cur_pos = cur_pos + result.parsed_len; } } @@ -266,8 +265,7 @@ template class Parser { case ('m'): // %m is an odd conversion in that it doesn't consume an argument, it // just takes the current value of errno as its argument. - section.conv_val_raw = - static_cast::StorageType>(libc_errno); + section.conv_val_raw = static_cast(libc_errno); break; #endif // LIBC_COPT_PRINTF_DISABLE_STRERROR #ifndef LIBC_COPT_PRINTF_DISABLE_WRITE_INT @@ -358,7 +356,7 @@ template class Parser { } if (internal::isdigit(str[*local_pos])) { const auto result = internal::strtointeger(str + *local_pos, 10); - *local_pos += static_cast(result.parsed_len); + *local_pos += result.parsed_len; return {lm, static_cast(cpp::max(0, result.value))}; } return {lm, 0}; @@ -407,10 +405,10 @@ template class Parser { LIBC_INLINE size_t parse_index(size_t *local_pos) { if (internal::isdigit(str[*local_pos])) { auto result = internal::strtointeger(str + *local_pos, 10); - size_t index = static_cast(result.value); - if (str[*local_pos + static_cast(result.parsed_len)] != '$') + size_t index = result.value; + if (str[*local_pos + result.parsed_len] != '$') return 0; - *local_pos = static_cast(1 + result.parsed_len) + *local_pos; + *local_pos = 1 + result.parsed_len + *local_pos; return index; } return 0; diff --git a/libc/src/stdio/printf_core/writer.h b/libc/src/stdio/printf_core/writer.h index 28c9a28270875..5526a478ea620 100644 --- a/libc/src/stdio/printf_core/writer.h +++ b/libc/src/stdio/printf_core/writer.h @@ -135,8 +135,7 @@ class Writer final { chars_written += static_cast(length); if (LIBC_LIKELY(wb->buff_cur + length <= wb->buff_len)) { - inline_memset(wb->buff + wb->buff_cur, - static_cast(new_char), length); + inline_memset(wb->buff + wb->buff_cur, new_char, length); wb->buff_cur += length; return WRITE_OK; } diff --git a/libc/src/stdio/scanf_core/parser.h b/libc/src/stdio/scanf_core/parser.h index 1e2f26e0d3fdd..6cc5b30eb0db2 100644 --- a/libc/src/stdio/scanf_core/parser.h +++ b/libc/src/stdio/scanf_core/parser.h @@ -78,7 +78,7 @@ template class Parser { if (internal::isdigit(str[cur_pos])) { auto result = internal::strtointeger(str + cur_pos, 10); section.max_width = result.value; - cur_pos = cur_pos + static_cast(result.parsed_len); + cur_pos = cur_pos + result.parsed_len; } // TODO(michaelrj): add posix allocate flag support. @@ -150,11 +150,10 @@ template class Parser { char b = str[cur_pos + 1]; char start = (a < b ? a : b); char end = (a < b ? b : a); - scan_set.set_range(static_cast(start), - static_cast(end)); + scan_set.set_range(start, end); cur_pos += 2; } else { - scan_set.set(static_cast(str[cur_pos])); + scan_set.set(str[cur_pos]); ++cur_pos; } } @@ -238,10 +237,10 @@ template class Parser { LIBC_INLINE size_t parse_index(size_t *local_pos) { if (internal::isdigit(str[*local_pos])) { auto result = internal::strtointeger(str + *local_pos, 10); - size_t index = static_cast(result.value); - if (str[*local_pos + static_cast(result.parsed_len)] != '$') + size_t index = result.value; + if (str[*local_pos + result.parsed_len] != '$') return 0; - *local_pos = static_cast(1 + result.parsed_len) + *local_pos; + *local_pos = 1 + result.parsed_len + *local_pos; return index; } return 0; diff --git a/libc/src/stdlib/quick_sort.h b/libc/src/stdlib/quick_sort.h index 8ba0098854d19..9ab2830250018 100644 --- a/libc/src/stdlib/quick_sort.h +++ b/libc/src/stdlib/quick_sort.h @@ -167,9 +167,7 @@ LIBC_INLINE void quick_sort_impl(A &array, const void *ancestor_pivot, } } -constexpr size_t ilog2(size_t n) { - return static_cast(cpp::bit_width(n)) - 1; -} +constexpr size_t ilog2(size_t n) { return cpp::bit_width(n) - 1; } template LIBC_INLINE void quick_sort(A &array, const F &is_less) { diff --git a/libc/src/string/memory_utils/utils.h b/libc/src/string/memory_utils/utils.h index 508a707942118..5c9bc72208f85 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(assume_aligned(dst), T(value & T(~0))); + store(assume_aligned(dst), value & ~T(0)); if constexpr (sizeof...(TS) > 0) store_aligned(value >> SHIFT, dst + sizeof(T)); } else if constexpr (Endian::IS_BIG) { @@ -293,7 +293,7 @@ LIBC_INLINE void store64_aligned(uint64_t value, Ptr dst, size_t offset) { // Advances the pointers p1 and p2 by offset bytes and decrease count by the // same amount. template -LIBC_INLINE void adjust(uintptr_t offset, T1 *__restrict &p1, +LIBC_INLINE void adjust(ptrdiff_t offset, T1 *__restrict &p1, T2 *__restrict &p2, size_t &count) { p1 += offset; p2 += offset; diff --git a/libc/src/string/string_utils.h b/libc/src/string/string_utils.h index e4659f65c93e2..583d35014d398 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(char_ptr) % sizeof(Word) != 0; ++char_ptr) { if (*char_ptr == '\0') - return static_cast(char_ptr - src); + return char_ptr - src; } // Step 2: read blocks for (const Word *block_ptr = reinterpret_cast(char_ptr); @@ -77,7 +77,7 @@ LIBC_INLINE size_t string_length_wide_read(const char *src) { for (; *char_ptr != '\0'; ++char_ptr) { ; } - return static_cast(char_ptr - src); + return 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(src)); ++src) ; - return static_cast(src - initial); + return src - initial; } // Given the similarities between strtok and strtok_r, we can implement both @@ -189,14 +189,12 @@ 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(static_cast(*delimiter_string)); + delimiter_set.set(*delimiter_string); if constexpr (SkipDelim) - for (; *src != '\0' && delimiter_set.test(static_cast(*src)); ++src) + for (; *src != '\0' && delimiter_set.test(*src); ++src) ; if (*src == '\0') { *saveptr = src; @@ -204,7 +202,7 @@ LIBC_INLINE char *string_token(char *__restrict src, } char *token = src; for (; *src != '\0'; ++src) { - if (delimiter_set.test(static_cast(*src))) { + if (delimiter_set.test(*src)) { *src = '\0'; ++src; break; diff --git a/libc/test/UnitTest/ExecuteFunction.h b/libc/test/UnitTest/ExecuteFunction.h index 93ab6e9733804..511249be0f3c9 100644 --- a/libc/test/UnitTest/ExecuteFunction.h +++ b/libc/test/UnitTest/ExecuteFunction.h @@ -9,7 +9,6 @@ #ifndef LLVM_LIBC_TEST_UNITTEST_EXECUTEFUNCTION_H #define LLVM_LIBC_TEST_UNITTEST_EXECUTEFUNCTION_H -#include "src/__support/CPP/limits.h" #include "src/__support/macros/config.h" #include @@ -26,7 +25,7 @@ struct ProcessStatus { int platform_defined; const char *failure = nullptr; - static constexpr int TIMEOUT = cpp::numeric_limits::max(); + static constexpr unsigned TIMEOUT = ~0U; static ProcessStatus error(const char *error) { return {0, error}; } static ProcessStatus timed_out_ps() { @@ -42,8 +41,9 @@ struct ProcessStatus { int get_fatal_signal(); }; -ProcessStatus invoke_in_subprocess(FunctionCaller *func, - int timeout_ms = ProcessStatus::TIMEOUT); +ProcessStatus +invoke_in_subprocess(FunctionCaller *func, + unsigned timeout_ms = ProcessStatus::TIMEOUT); const char *signal_as_string(int signum); diff --git a/libc/test/UnitTest/ExecuteFunctionUnix.cpp b/libc/test/UnitTest/ExecuteFunctionUnix.cpp index c0e85c2144005..c90d7e0cb9ff1 100644 --- a/libc/test/UnitTest/ExecuteFunctionUnix.cpp +++ b/libc/test/UnitTest/ExecuteFunctionUnix.cpp @@ -34,7 +34,7 @@ int ProcessStatus::get_fatal_signal() { return WTERMSIG(platform_defined); } -ProcessStatus invoke_in_subprocess(FunctionCaller *func, int timeout_ms) { +ProcessStatus invoke_in_subprocess(FunctionCaller *func, unsigned timeout_ms) { int pipe_fds[2]; if (::pipe(pipe_fds) == -1) { delete func; diff --git a/libc/test/UnitTest/LibcTest.cpp b/libc/test/UnitTest/LibcTest.cpp index fec45982f3e63..4395c7cf6e201 100644 --- a/libc/test/UnitTest/LibcTest.cpp +++ b/libc/test/UnitTest/LibcTest.cpp @@ -158,13 +158,13 @@ int Test::runTests(const TestOptions &Options) { } tlog << green << "[ RUN ] " << reset << TestName << '\n'; - [[maybe_unused]] const uint64_t start_time = static_cast(clock()); + [[maybe_unused]] const uint64_t start_time = clock(); RunContext Ctx; T->SetUp(); T->setContext(&Ctx); T->Run(); T->TearDown(); - [[maybe_unused]] const uint64_t end_time = static_cast(clock()); + [[maybe_unused]] const uint64_t end_time = clock(); switch (Ctx.status()) { case RunContext::RunResult::Fail: tlog << red << "[ FAILED ] " << reset << TestName << '\n'; diff --git a/libc/test/UnitTest/MemoryMatcher.h b/libc/test/UnitTest/MemoryMatcher.h index cbbf3286c02ac..617231520bf20 100644 --- a/libc/test/UnitTest/MemoryMatcher.h +++ b/libc/test/UnitTest/MemoryMatcher.h @@ -49,7 +49,7 @@ class MemoryMatcher : public Matcher { MemoryView expected; MemoryView actual; bool mismatch_size = false; - size_t mismatch_index = cpp::numeric_limits::max(); + size_t mismatch_index = -1; public: MemoryMatcher(MemoryView expectedValue) : expected(expectedValue) {} diff --git a/libc/test/src/__support/CPP/bit_test.cpp b/libc/test/src/__support/CPP/bit_test.cpp index 89e2a75e0680f..1f2315281bc1d 100644 --- a/libc/test/src/__support/CPP/bit_test.cpp +++ b/libc/test/src/__support/CPP/bit_test.cpp @@ -24,7 +24,6 @@ using UnsignedTypes = testing::TypeList< unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long, UInt<128>>; -#ifdef FAKE_MACRO_DISABLE TYPED_TEST(LlvmLibcBitTest, HasSingleBit, UnsignedTypes) { constexpr auto ZERO = T(0); constexpr auto ALL_ONES = T(~ZERO); @@ -47,33 +46,32 @@ TYPED_TEST(LlvmLibcBitTest, HasSingleBit, UnsignedTypes) { EXPECT_FALSE(has_single_bit(two_bits_value)); } } -#endif TYPED_TEST(LlvmLibcBitTest, CountLZero, UnsignedTypes) { EXPECT_EQ(countl_zero(T(0)), cpp::numeric_limits::digits); int expected = 0; - for (T value = T(~0); value; value >>= 1, ++expected) + for (T value = ~T(0); value; value >>= 1, ++expected) EXPECT_EQ(countl_zero(value), expected); } TYPED_TEST(LlvmLibcBitTest, CountRZero, UnsignedTypes) { EXPECT_EQ(countr_zero(T(0)), cpp::numeric_limits::digits); int expected = 0; - for (T value = T(~0); value; value <<= 1, ++expected) + for (T value = ~T(0); value; value <<= 1, ++expected) EXPECT_EQ(countr_zero(value), expected); } TYPED_TEST(LlvmLibcBitTest, CountLOne, UnsignedTypes) { EXPECT_EQ(countl_one(T(0)), 0); int expected = cpp::numeric_limits::digits; - for (T value = T(~0); value; value <<= 1, --expected) + for (T value = ~T(0); value; value <<= 1, --expected) EXPECT_EQ(countl_one(value), expected); } TYPED_TEST(LlvmLibcBitTest, CountROne, UnsignedTypes) { EXPECT_EQ(countr_one(T(0)), 0); int expected = cpp::numeric_limits::digits; - for (T value = T(~0); value; value >>= 1, --expected) + for (T value = ~T(0); value; value >>= 1, --expected) EXPECT_EQ(countr_one(value), expected); } @@ -165,7 +163,7 @@ TEST(LlvmLibcBitTest, BitFloor) { TYPED_TEST(LlvmLibcBitTest, RotateIsInvariantForZeroAndOne, UnsignedTypes) { constexpr T all_zeros = T(0); - constexpr T all_ones = T(~0); + constexpr T all_ones = ~T(0); for (int i = 0; i < cpp::numeric_limits::digits; ++i) { EXPECT_EQ(rotl(all_zeros, i), all_zeros); EXPECT_EQ(rotl(all_ones, i), all_ones); @@ -229,9 +227,8 @@ TEST(LlvmLibcBitTest, Rotr) { TYPED_TEST(LlvmLibcBitTest, CountOnes, UnsignedTypes) { EXPECT_EQ(popcount(T(0)), 0); for (int i = 0; i != cpp::numeric_limits::digits; ++i) - EXPECT_EQ( - popcount(cpp::numeric_limits::max() >> static_cast(i)), - cpp::numeric_limits::digits - i); + EXPECT_EQ(popcount(cpp::numeric_limits::max() >> i), + cpp::numeric_limits::digits - i); } } // namespace cpp diff --git a/libc/test/src/__support/arg_list_test.cpp b/libc/test/src/__support/arg_list_test.cpp index 70db0aafa631a..79a715e910687 100644 --- a/libc/test/src/__support/arg_list_test.cpp +++ b/libc/test/src/__support/arg_list_test.cpp @@ -72,9 +72,9 @@ long int check_primitives(int first, ...) { count += args.next_var(); count += args.next_var(); count += args.next_var(); - count += static_cast(args.next_var()); - count += static_cast(args.next_var()); - count += static_cast(args.next_var()); + count += args.next_var(); + count += args.next_var(); + count += args.next_var(); count += *args.next_var(); return count; } @@ -112,8 +112,7 @@ long int check_struct_type(int first, ...) { S s = args.next_var(); int last = args.next_var(); - return static_cast(s.c + s.s + s.i + static_cast(s.l) + s.f + - s.d + last); + return s.c + s.s + s.i + s.l + s.f + s.d + last; } TEST(LlvmLibcArgListTest, TestStructTypes) { diff --git a/libc/test/src/__support/big_int_test.cpp b/libc/test/src/__support/big_int_test.cpp index 93a66d59650b4..2666ed978dad7 100644 --- a/libc/test/src/__support/big_int_test.cpp +++ b/libc/test/src/__support/big_int_test.cpp @@ -197,8 +197,8 @@ TYPED_TEST(LlvmLibcUIntClassTest, CountBits, Types) { for (size_t i = 0; i < T::BITS; ++i) { const auto l_one = T::all_ones() << i; // 0b111...000 const auto r_one = T::all_ones() >> i; // 0b000...111 - const int zeros = static_cast(i); - const int ones = static_cast(T::BITS - static_cast(zeros)); + const int zeros = i; + const int ones = T::BITS - zeros; ASSERT_EQ(cpp::countr_one(r_one), ones); ASSERT_EQ(cpp::countl_one(l_one), ones); ASSERT_EQ(cpp::countr_zero(l_one), zeros); @@ -871,13 +871,13 @@ TEST(LlvmLibcUIntClassTest, ConstructorFromUInt128Tests) { ASSERT_EQ(static_cast(c >> 64), 123); ASSERT_EQ(static_cast(d), static_cast(b)); ASSERT_EQ(static_cast(d >> 64), static_cast(b >> 64)); - ASSERT_EQ(c + d, LL_Int128(a + static_cast<__uint128_t>(b))); + ASSERT_EQ(c + d, LL_Int128(a + b)); ASSERT_EQ(static_cast(e), 1); ASSERT_EQ(static_cast(e >> 64), 123); ASSERT_EQ(static_cast(f), static_cast(b)); ASSERT_EQ(static_cast(f >> 64), static_cast(b >> 64)); - ASSERT_EQ(LL_UInt192(e + f), LL_UInt192(a + static_cast<__uint128_t>(b))); + ASSERT_EQ(LL_UInt192(e + f), LL_UInt192(a + b)); } TEST(LlvmLibcUIntClassTest, WordTypeUInt128Tests) { diff --git a/libc/test/src/__support/blockstore_test.cpp b/libc/test/src/__support/blockstore_test.cpp index 364155cd92cfa..de7bd72b96c80 100644 --- a/libc/test/src/__support/blockstore_test.cpp +++ b/libc/test/src/__support/blockstore_test.cpp @@ -27,7 +27,7 @@ class LlvmLibcBlockStoreTest : public LIBC_NAMESPACE::testing::Test { for (auto iter = block_store.begin(); iter != end; ++iter, ++i) { Element &e = *iter; if (REVERSE) { - int j = static_cast(ELEMENT_COUNT - 1) - i; + int j = ELEMENT_COUNT - 1 - i; ASSERT_EQ(e.a, j); ASSERT_EQ(e.b, long(j * 2)); ASSERT_EQ(e.c, unsigned(j * 3)); diff --git a/libc/test/src/__support/fixedvector_test.cpp b/libc/test/src/__support/fixedvector_test.cpp index 8be18a52ec015..b73df04d03746 100644 --- a/libc/test/src/__support/fixedvector_test.cpp +++ b/libc/test/src/__support/fixedvector_test.cpp @@ -92,7 +92,7 @@ TEST(LlvmLibcFixedVectorTest, ForwardIteration) { LIBC_NAMESPACE::FixedVector vec(arr.begin(), arr.end()); ASSERT_EQ(vec.size(), arr.size()); for (auto it = vec.begin(); it != vec.end(); ++it) { - auto idx = static_cast(it - vec.begin()); + auto idx = it - vec.begin(); ASSERT_EQ(*it, arr[idx]); } } @@ -102,7 +102,7 @@ TEST(LlvmLibcFixedVectorTest, ConstForwardIteration) { const LIBC_NAMESPACE::FixedVector vec(arr.begin(), arr.end()); ASSERT_EQ(vec.size(), arr.size()); for (auto it = vec.begin(); it != vec.end(); ++it) { - auto idx = static_cast(it - vec.begin()); + auto idx = it - vec.begin(); ASSERT_EQ(*it, arr[idx]); } } diff --git a/libc/test/src/__support/hash_test.cpp b/libc/test/src/__support/hash_test.cpp index 94c884cc7fb17..f23a43a3bc5e4 100644 --- a/libc/test/src/__support/hash_test.cpp +++ b/libc/test/src/__support/hash_test.cpp @@ -78,7 +78,7 @@ TEST(LlvmLibcHashTest, Avalanche) { } for (size_t i = 0; i < sz; ++i) { for (size_t j = 0; j < 8; ++j) { - uint8_t mask = static_cast(1 << j); + uint8_t mask = 1 << j; mem.data[i] ^= mask; { LIBC_NAMESPACE::internal::HashState state{0xabcdef1234567890}; diff --git a/libc/test/src/__support/integer_to_string_test.cpp b/libc/test/src/__support/integer_to_string_test.cpp index 7d4006512093e..6ec2dc6eba521 100644 --- a/libc/test/src/__support/integer_to_string_test.cpp +++ b/libc/test/src/__support/integer_to_string_test.cpp @@ -41,7 +41,7 @@ TEST(LlvmLibcIntegerToStringTest, UINT8) { EXPECT(type, 12, "12"); EXPECT(type, 123, "123"); EXPECT(type, UINT8_MAX, "255"); - EXPECT(type, static_cast(-1), "255"); + EXPECT(type, -1, "255"); } TEST(LlvmLibcIntegerToStringTest, INT8) { @@ -65,7 +65,7 @@ TEST(LlvmLibcIntegerToStringTest, UINT16) { EXPECT(type, 1234, "1234"); EXPECT(type, 12345, "12345"); EXPECT(type, UINT16_MAX, "65535"); - EXPECT(type, static_cast(-1), "65535"); + EXPECT(type, -1, "65535"); } TEST(LlvmLibcIntegerToStringTest, INT16) { @@ -99,7 +99,7 @@ TEST(LlvmLibcIntegerToStringTest, UINT32) { EXPECT(type, 123456789, "123456789"); EXPECT(type, 1234567890, "1234567890"); EXPECT(type, UINT32_MAX, "4294967295"); - EXPECT(type, static_cast(-1), "4294967295"); + EXPECT(type, -1, "4294967295"); } TEST(LlvmLibcIntegerToStringTest, INT32) { @@ -144,7 +144,7 @@ TEST(LlvmLibcIntegerToStringTest, UINT64) { EXPECT(type, 1234567890, "1234567890"); EXPECT(type, 1234567890123456789, "1234567890123456789"); EXPECT(type, UINT64_MAX, "18446744073709551615"); - EXPECT(type, static_cast(-1), "18446744073709551615"); + EXPECT(type, -1, "18446744073709551615"); } TEST(LlvmLibcIntegerToStringTest, INT64) { @@ -181,8 +181,7 @@ TEST(LlvmLibcIntegerToStringTest, UINT64_Base_8) { EXPECT(type, 0, "0"); EXPECT(type, 012345, "12345"); EXPECT(type, 0123456701234567012345, "123456701234567012345"); - EXPECT(type, static_cast(01777777777777777777777), - "1777777777777777777777"); + EXPECT(type, 01777777777777777777777, "1777777777777777777777"); } TEST(LlvmLibcIntegerToStringTest, UINT64_Base_16) { diff --git a/libc/test/src/__support/math_extras_test.cpp b/libc/test/src/__support/math_extras_test.cpp index 01b216081d034..08c090017c1a1 100644 --- a/libc/test/src/__support/math_extras_test.cpp +++ b/libc/test/src/__support/math_extras_test.cpp @@ -72,40 +72,34 @@ TEST(LlvmLibcBlockMathExtrasTest, mask_trailing_ones) { TYPED_TEST(LlvmLibcBitTest, FirstLeadingZero, UnsignedTypesNoBigInt) { EXPECT_EQ(first_leading_zero(cpp::numeric_limits::max()), 0); - for (int i = 0U; i != cpp::numeric_limits::digits; ++i) { - auto lhs = T(~(T(1) << size_t(i))); - EXPECT_EQ(first_leading_zero(lhs), cpp::numeric_limits::digits - i); - } + for (int i = 0U; i != cpp::numeric_limits::digits; ++i) + EXPECT_EQ(first_leading_zero(~(T(1) << i)), + cpp::numeric_limits::digits - i); } TYPED_TEST(LlvmLibcBitTest, FirstLeadingOne, UnsignedTypesNoBigInt) { EXPECT_EQ(first_leading_one(static_cast(0)), 0); - for (int i = 0U; i != cpp::numeric_limits::digits; ++i) { - auto lhs = T(T(1) << size_t(i)); - EXPECT_EQ(first_leading_one(lhs), cpp::numeric_limits::digits - i); - } + for (int i = 0U; i != cpp::numeric_limits::digits; ++i) + EXPECT_EQ(first_leading_one(T(1) << i), + cpp::numeric_limits::digits - i); } TYPED_TEST(LlvmLibcBitTest, FirstTrailingZero, UnsignedTypesNoBigInt) { EXPECT_EQ(first_trailing_zero(cpp::numeric_limits::max()), 0); - for (int i = 0U; i != cpp::numeric_limits::digits; ++i) { - auto lhs = T(~(T(1) << size_t(i))); - EXPECT_EQ(first_trailing_zero(lhs), i + 1); - } + for (int i = 0U; i != cpp::numeric_limits::digits; ++i) + EXPECT_EQ(first_trailing_zero(~(T(1) << i)), i + 1); } TYPED_TEST(LlvmLibcBitTest, FirstTrailingOne, UnsignedTypesNoBigInt) { EXPECT_EQ(first_trailing_one(cpp::numeric_limits::max()), 0); - for (int i = 0U; i != cpp::numeric_limits::digits; ++i) { - auto lhs = T(T(1) << size_t(i)); - EXPECT_EQ(first_trailing_one(lhs), i + 1); - } + for (int i = 0U; i != cpp::numeric_limits::digits; ++i) + EXPECT_EQ(first_trailing_one(T(1) << i), i + 1); } TYPED_TEST(LlvmLibcBitTest, CountZeros, UnsignedTypesNoBigInt) { EXPECT_EQ(count_zeros(T(0)), cpp::numeric_limits::digits); for (int i = 0; i != cpp::numeric_limits::digits; ++i) - EXPECT_EQ(count_zeros(cpp::numeric_limits::max() >> size_t(i)), i); + EXPECT_EQ(count_zeros(cpp::numeric_limits::max() >> i), i); } using UnsignedTypes = testing::TypeList< diff --git a/libc/test/src/__support/str_to_double_test.cpp b/libc/test/src/__support/str_to_double_test.cpp index ccfa44f12d8ef..03d21852dac2b 100644 --- a/libc/test/src/__support/str_to_double_test.cpp +++ b/libc/test/src/__support/str_to_double_test.cpp @@ -104,7 +104,7 @@ TEST(LlvmLibcStrToDblTest, SimpleDecimalConversionExtraTypes) { internal::simple_decimal_conversion("123456789012345678900"); double_output_mantissa = double_result.num.mantissa; - output_exp2 = static_cast(double_result.num.exponent); + output_exp2 = double_result.num.exponent; EXPECT_EQ(double_output_mantissa, uint64_t(0x1AC53A7E04BCDA)); EXPECT_EQ(output_exp2, uint32_t(1089)); diff --git a/libc/test/src/__support/str_to_float_test.cpp b/libc/test/src/__support/str_to_float_test.cpp index 66f7db742eb45..fa4c642ec9cdb 100644 --- a/libc/test/src/__support/str_to_float_test.cpp +++ b/libc/test/src/__support/str_to_float_test.cpp @@ -59,7 +59,7 @@ TEST(LlvmLibcStrToFltTest, SimpleDecimalConversionExtraTypes) { auto float_result = internal::simple_decimal_conversion("123456789012345678900"); float_output_mantissa = float_result.num.mantissa; - output_exp2 = static_cast(float_result.num.exponent); + output_exp2 = float_result.num.exponent; EXPECT_EQ(float_output_mantissa, uint32_t(0xd629d4)); EXPECT_EQ(output_exp2, uint32_t(193)); EXPECT_EQ(float_result.error, 0); diff --git a/libc/test/src/__support/str_to_fp_test.h b/libc/test/src/__support/str_to_fp_test.h index c7bc57b845fe0..db4e62a5cd0d1 100644 --- a/libc/test/src/__support/str_to_fp_test.h +++ b/libc/test/src/__support/str_to_fp_test.h @@ -31,7 +31,7 @@ template struct LlvmLibcStrToFloatTest : public testing::Test { ASSERT_TRUE(result.has_value()); actual_output_mantissa = result->mantissa; - actual_output_exp2 = static_cast(result->exponent); + actual_output_exp2 = result->exponent; EXPECT_EQ(actual_output_mantissa, expectedOutputMantissa); EXPECT_EQ(actual_output_exp2, expectedOutputExp2); @@ -55,7 +55,7 @@ template struct LlvmLibcStrToFloatTest : public testing::Test { ASSERT_TRUE(result.has_value()); actual_output_mantissa = result->mantissa; - actual_output_exp2 = static_cast(result->exponent); + actual_output_exp2 = result->exponent; EXPECT_EQ(actual_output_mantissa, expectedOutputMantissa); EXPECT_EQ(actual_output_exp2, expectedOutputExp2); @@ -72,7 +72,7 @@ template struct LlvmLibcStrToFloatTest : public testing::Test { auto result = internal::simple_decimal_conversion(numStart); actual_output_mantissa = result.num.mantissa; - actual_output_exp2 = static_cast(result.num.exponent); + actual_output_exp2 = result.num.exponent; EXPECT_EQ(actual_output_mantissa, expectedOutputMantissa); EXPECT_EQ(actual_output_exp2, expectedOutputExp2); diff --git a/libc/test/src/math/FModTest.h b/libc/test/src/math/FModTest.h index f761dba79d529..32c009ab88286 100644 --- a/libc/test/src/math/FModTest.h +++ b/libc/test/src/math/FModTest.h @@ -54,7 +54,7 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest { // fmod (+inf, y) == aNaN plus invalid exception. TEST_SPECIAL(inf, 3.0, aNaN, true, FE_INVALID); - TEST_SPECIAL(inf, static_cast(-1.1L), aNaN, true, FE_INVALID); + TEST_SPECIAL(inf, -1.1L, aNaN, true, FE_INVALID); TEST_SPECIAL(inf, 0.0, aNaN, true, FE_INVALID); TEST_SPECIAL(inf, neg_zero, aNaN, true, FE_INVALID); TEST_SPECIAL(inf, min_denormal, aNaN, true, FE_INVALID); @@ -65,7 +65,7 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest { // fmod (-inf, y) == aNaN plus invalid exception. TEST_SPECIAL(neg_inf, 3.0, aNaN, true, FE_INVALID); - TEST_SPECIAL(neg_inf, static_cast(-1.1L), aNaN, true, FE_INVALID); + TEST_SPECIAL(neg_inf, -1.1L, aNaN, true, FE_INVALID); TEST_SPECIAL(neg_inf, 0.0, aNaN, true, FE_INVALID); TEST_SPECIAL(neg_inf, neg_zero, aNaN, true, FE_INVALID); TEST_SPECIAL(neg_inf, min_denormal, aNaN, true, FE_INVALID); @@ -76,7 +76,7 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest { // fmod (x, +0) == aNaN plus invalid exception. TEST_SPECIAL(3.0, 0.0, aNaN, true, FE_INVALID); - TEST_SPECIAL(static_cast(-1.1L), 0.0, aNaN, true, FE_INVALID); + TEST_SPECIAL(-1.1L, 0.0, aNaN, true, FE_INVALID); TEST_SPECIAL(0.0, 0.0, aNaN, true, FE_INVALID); TEST_SPECIAL(neg_zero, 0.0, aNaN, true, FE_INVALID); TEST_SPECIAL(min_denormal, 0.0, aNaN, true, FE_INVALID); @@ -85,7 +85,7 @@ class FmodTest : public LIBC_NAMESPACE::testing::FEnvSafeTest { // fmod (x, -0) == aNaN plus invalid exception. TEST_SPECIAL(3.0, neg_zero, aNaN, true, FE_INVALID); - TEST_SPECIAL(static_cast(-1.1L), neg_zero, aNaN, true, FE_INVALID); + TEST_SPECIAL(-1.1L, neg_zero, aNaN, true, FE_INVALID); TEST_SPECIAL(0.0, neg_zero, aNaN, true, FE_INVALID); TEST_SPECIAL(neg_zero, neg_zero, aNaN, true, FE_INVALID); TEST_SPECIAL(min_denormal, neg_zero, aNaN, true, FE_INVALID); diff --git a/libc/test/src/stdio/printf_core/parser_test.cpp b/libc/test/src/stdio/printf_core/parser_test.cpp index 9d192828860f7..c277b304faea9 100644 --- a/libc/test/src/stdio/printf_core/parser_test.cpp +++ b/libc/test/src/stdio/printf_core/parser_test.cpp @@ -97,8 +97,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArg) { expected.has_conv = true; expected.raw_string = {str, 2}; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -133,8 +132,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithFlags) { LIBC_NAMESPACE::printf_core::FormatFlags::LEADING_ZEROES | LIBC_NAMESPACE::printf_core::FormatFlags::SPACE_PREFIX | LIBC_NAMESPACE::printf_core::FormatFlags::ALTERNATE_FORM); - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -151,8 +149,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithWidth) { expected.raw_string = {str, 4}; expected.min_width = 12; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -169,8 +166,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithPrecision) { expected.raw_string = {str, 5}; expected.precision = 34; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -187,8 +183,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithTrivialPrecision) { expected.raw_string = {str, 3}; expected.precision = 0; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -205,8 +200,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithShortLengthModifier) { expected.raw_string = {str, 3}; expected.length_modifier = LIBC_NAMESPACE::printf_core::LengthModifier::h; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -223,8 +217,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithLongLengthModifier) { expected.raw_string = {str, 4}; expected.length_modifier = LIBC_NAMESPACE::printf_core::LengthModifier::ll; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -242,8 +235,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithBitWidthLengthModifier) { expected.raw_string = {str, 5}; expected.length_modifier = LIBC_NAMESPACE::printf_core::LengthModifier::w; expected.bit_width = 32; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -261,8 +253,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithFastBitWidthLengthModifier) { expected.raw_string = {str, 6}; expected.length_modifier = LIBC_NAMESPACE::printf_core::LengthModifier::wf; expected.bit_width = 32; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -285,8 +276,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithAllOptions) { expected.min_width = 56; expected.precision = 78; expected.length_modifier = LIBC_NAMESPACE::printf_core::LengthModifier::j; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -304,8 +294,7 @@ TEST(LlvmLibcPrintfParserTest, EvalThreeArgs) { expected0.has_conv = true; expected0.raw_string = {str, 2}; - expected0.conv_val_raw = - static_cast::StorageType>(arg1); + expected0.conv_val_raw = arg1; expected0.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected0, format_arr[0]); @@ -340,8 +329,7 @@ TEST(LlvmLibcPrintfParserTest, EvalOneArgWithOverflowingWidthAndPrecision) { expected.flags = LIBC_NAMESPACE::printf_core::FormatFlags::LEFT_JUSTIFIED; expected.min_width = INT_MAX; expected.precision = INT_MAX; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -363,8 +351,7 @@ TEST(LlvmLibcPrintfParserTest, expected.flags = LIBC_NAMESPACE::printf_core::FormatFlags::LEFT_JUSTIFIED; expected.min_width = INT_MAX; expected.precision = arg2; - expected.conv_val_raw = - static_cast::StorageType>(arg3); + expected.conv_val_raw = arg3; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -382,8 +369,7 @@ TEST(LlvmLibcPrintfParserTest, IndexModeOneArg) { expected.has_conv = true; expected.raw_string = {str, 4}; - expected.conv_val_raw = - static_cast::StorageType>(arg1); + expected.conv_val_raw = arg1; expected.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected, format_arr[0]); @@ -401,8 +387,7 @@ TEST(LlvmLibcPrintfParserTest, IndexModeThreeArgsSequential) { expected0.has_conv = true; expected0.raw_string = {str, 4}; - expected0.conv_val_raw = - static_cast::StorageType>(arg1); + expected0.conv_val_raw = arg1; expected0.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected0, format_arr[0]); @@ -436,8 +421,7 @@ TEST(LlvmLibcPrintfParserTest, IndexModeThreeArgsReverse) { expected0.has_conv = true; expected0.raw_string = {str, 4}; - expected0.conv_val_raw = - static_cast::StorageType>(arg1); + expected0.conv_val_raw = arg1; expected0.conv_name = 'd'; ASSERT_PFORMAT_EQ(expected0, format_arr[0]); @@ -501,8 +485,7 @@ TEST(LlvmLibcPrintfParserTest, IndexModeComplexParsing) { expected1.raw_string = {str + 12, 6}; expected1.length_modifier = LIBC_NAMESPACE::printf_core::LengthModifier::ll; - expected1.conv_val_raw = - static_cast::StorageType>(arg3); + expected1.conv_val_raw = arg3; expected1.conv_name = 'u'; EXPECT_PFORMAT_EQ(expected1, format_arr[1]); @@ -563,8 +546,7 @@ TEST(LlvmLibcPrintfParserTest, IndexModeComplexParsing) { expected9.raw_string = {str + 41, 7}; expected9.min_width = 1; expected9.precision = 1; - expected9.conv_val_raw = - static_cast::StorageType>(arg1); + expected9.conv_val_raw = arg1; expected9.conv_name = 'c'; EXPECT_PFORMAT_EQ(expected9, format_arr[9]); @@ -584,16 +566,14 @@ TEST(LlvmLibcPrintfParserTest, IndexModeGapCheck) { expected0.has_conv = true; expected0.raw_string = {str, 4}; - expected0.conv_val_raw = - static_cast::StorageType>(arg1); + expected0.conv_val_raw = arg1; expected0.conv_name = 'd'; EXPECT_PFORMAT_EQ(expected0, format_arr[0]); expected1.has_conv = true; expected1.raw_string = {str + 4, 4}; - expected1.conv_val_raw = - static_cast::StorageType>(arg2); + expected1.conv_val_raw = arg2; expected1.conv_name = 'd'; EXPECT_PFORMAT_EQ(expected1, format_arr[1]); diff --git a/libc/test/src/string/memmove_test.cpp b/libc/test/src/string/memmove_test.cpp index 1e225e58ca1eb..e280b5d25f6f4 100644 --- a/libc/test/src/string/memmove_test.cpp +++ b/libc/test/src/string/memmove_test.cpp @@ -93,8 +93,7 @@ TEST(LlvmLibcMemmoveTest, SizeSweep) { Randomize(Buffer); for (int Size = 0; Size < kMaxSize; ++Size) for (int Overlap = -1; Overlap < Size;) { - ASSERT_TRUE( - CheckMemmove(Buffer, static_cast(Size), Overlap)); + ASSERT_TRUE(CheckMemmove(Buffer, Size, Overlap)); // Prevent quadratic behavior by skipping offset above kDenseOverlap. if (Overlap > kDenseOverlap) Overlap *= 2; diff --git a/libc/test/src/string/memory_utils/memory_check_utils.h b/libc/test/src/string/memory_utils/memory_check_utils.h index db9cfda672b21..3ddd15b181c8e 100644 --- a/libc/test/src/string/memory_utils/memory_check_utils.h +++ b/libc/test/src/string/memory_utils/memory_check_utils.h @@ -157,7 +157,7 @@ inline uint16_t Checksum(cpp::span dst) { uint16_t sum1 = 0; uint16_t sum2 = 0; for (char c : dst) { - sum1 = (sum1 + static_cast(c)) % 255U; + sum1 = (sum1 + c) % 255U; sum2 = (sum2 + sum1) % 255U; } return static_cast((sum2 << 8) | sum1); @@ -185,10 +185,8 @@ template inline bool CheckMemmove(cpp::span buffer, size_t size, int overlap) { LIBC_ASSERT(buffer.size() > (2 * size + 1)); const size_t half_size = buffer.size() / 2; - LIBC_ASSERT(static_cast(overlap >= 0 ? overlap : -overlap) < - half_size); - cpp::span head = - buffer.first(half_size + static_cast(overlap)).last(size); + LIBC_ASSERT((size_t)(overlap >= 0 ? overlap : -overlap) < half_size); + cpp::span head = buffer.first(half_size + overlap).last(size); cpp::span tail = buffer.last(half_size).first(size); LIBC_ASSERT(head.size() == size); LIBC_ASSERT(tail.size() == size); diff --git a/libc/test/src/string/memory_utils/op_tests.cpp b/libc/test/src/string/memory_utils/op_tests.cpp index 2057ab3eaaded..c6197d1afa266 100644 --- a/libc/test/src/string/memory_utils/op_tests.cpp +++ b/libc/test/src/string/memory_utils/op_tests.cpp @@ -174,7 +174,7 @@ TYPED_TEST(LlvmLibcOpTest, Memset, MemsetImplementations) { static constexpr auto HeadTailImpl = SetAdaptor; Buffer DstBuffer(2 * kSize); for (size_t size = kSize; size < 2 * kSize; ++size) { - const uint8_t value = size % 10; + const char value = size % 10; auto dst = DstBuffer.span().subspan(0, size); ASSERT_TRUE(CheckMemset(dst, value, size)); } @@ -185,7 +185,7 @@ TYPED_TEST(LlvmLibcOpTest, Memset, MemsetImplementations) { static constexpr auto LoopImpl = SetAdaptor; Buffer DstBuffer(3 * kSize); for (size_t size = kSize; size < 3 * kSize; ++size) { - const uint8_t value = size % 10; + const char value = size % 10; auto dst = DstBuffer.span().subspan(0, size); ASSERT_TRUE((CheckMemset(dst, value, size))); } diff --git a/libc/test/src/string/memory_utils/utils_test.cpp b/libc/test/src/string/memory_utils/utils_test.cpp index aa122df2d2e66..4c1accd551685 100644 --- a/libc/test/src/string/memory_utils/utils_test.cpp +++ b/libc/test/src/string/memory_utils/utils_test.cpp @@ -47,7 +47,7 @@ TEST(LlvmLibcUtilsTest, DistanceToAlignDown) { TEST(LlvmLibcUtilsTest, Adjust2) { char a, b; const size_t base_size = 10; - for (uintptr_t I = 0; I < 4; ++I) { + for (ptrdiff_t I = -2; I < 2; ++I) { auto *p1 = &a; auto *p2 = &b; size_t size = base_size; diff --git a/libc/test/src/string/memset_test.cpp b/libc/test/src/string/memset_test.cpp index 46d6ce7478772..774a321ddfce6 100644 --- a/libc/test/src/string/memset_test.cpp +++ b/libc/test/src/string/memset_test.cpp @@ -27,7 +27,7 @@ TEST(LlvmLibcMemsetTest, SizeSweep) { static constexpr size_t kMaxSize = 400; Buffer DstBuffer(kMaxSize); for (size_t size = 0; size < kMaxSize; ++size) { - const uint8_t value = size % 10; + const char value = size % 10; auto dst = DstBuffer.span().subspan(0, size); ASSERT_TRUE((CheckMemset(dst, value, size))); } diff --git a/libc/test/src/strings/bcopy_test.cpp b/libc/test/src/strings/bcopy_test.cpp index 6daa634cab888..f6bb859b4ae9f 100644 --- a/libc/test/src/strings/bcopy_test.cpp +++ b/libc/test/src/strings/bcopy_test.cpp @@ -87,8 +87,7 @@ TEST(LlvmLibcBcopyTest, SizeSweep) { Randomize(Buffer); for (int Size = 0; Size < kMaxSize; ++Size) for (int Overlap = -1; Overlap < Size;) { - ASSERT_TRUE( - CheckMemmove(Buffer, static_cast(Size), Overlap)); + ASSERT_TRUE(CheckMemmove(Buffer, Size, Overlap)); // Prevent quadratic behavior by skipping offset above kDenseOverlap. if (Overlap > kDenseOverlap) Overlap *= 2;