From 25a2aeb1908fd8a5fbd0fedcf53006bde92c1ae3 Mon Sep 17 00:00:00 2001 From: "Mikhail R. Gadelha" Date: Tue, 16 May 2023 13:06:37 -0300 Subject: Revert "[libc] Add explicit constructor calls to fix compilation when using UInt" This reverts commit b663993067ffb5800632ad41ea7f2f92caab1093. This caused a regression on aarch64: https://lab.llvm.org/buildbot#builders/138/builds/43983 --- libc/src/__support/FPUtil/generic/sqrt.h | 2 +- libc/src/__support/UInt.h | 13 ++---------- libc/src/__support/float_to_string.h | 4 ++-- libc/src/__support/str_to_float.h | 14 ++++++------- libc/src/stdio/printf_core/char_converter.h | 2 +- libc/src/stdio/printf_core/float_dec_converter.h | 24 ++++++++-------------- libc/src/stdio/printf_core/float_hex_converter.h | 8 +++----- .../stdio/printf_core/float_inf_nan_converter.h | 3 +-- libc/src/stdio/printf_core/int_converter.h | 2 +- 9 files changed, 26 insertions(+), 46 deletions(-) (limited to 'libc') diff --git a/libc/src/__support/FPUtil/generic/sqrt.h b/libc/src/__support/FPUtil/generic/sqrt.h index 529f5283f89a..1464056417d0 100644 --- a/libc/src/__support/FPUtil/generic/sqrt.h +++ b/libc/src/__support/FPUtil/generic/sqrt.h @@ -136,7 +136,7 @@ LIBC_INLINE cpp::enable_if_t, T> sqrt(T x) { } // We compute one more iteration in order to round correctly. - bool lsb = static_cast(y & 1); // Least significant bit + bool lsb = y & 1; // Least significant bit bool rb = false; // Round bit r <<= 2; UIntType tmp = (y << 2) + 1; diff --git a/libc/src/__support/UInt.h b/libc/src/__support/UInt.h index 1ac7534e1be6..a702aaad827b 100644 --- a/libc/src/__support/UInt.h +++ b/libc/src/__support/UInt.h @@ -468,11 +468,6 @@ template struct UInt { return result; } - constexpr UInt operator/=(const UInt &other) { - *this = *this / other; - return *this; - } - constexpr UInt operator%(const UInt &other) const { UInt result(*this); return *result.div(other); @@ -719,12 +714,8 @@ template struct UInt { } constexpr UInt &operator++() { - *this = *this + 1; - return *this; - } - - constexpr UInt &operator--() { - *this = *this - 1; + UInt one(1); + add(one); return *this; } diff --git a/libc/src/__support/float_to_string.h b/libc/src/__support/float_to_string.h index 43f49036156a..09370148d803 100644 --- a/libc/src/__support/float_to_string.h +++ b/libc/src/__support/float_to_string.h @@ -202,8 +202,8 @@ LIBC_INLINE uint32_t mul_shift_mod_1e9(const MantissaInt mantissa, cpp::UInt val(large); // TODO: Find a better way to force __uint128_t to be UInt<128> cpp::UInt wide_mant(0); - wide_mant[0] = static_cast(mantissa & (uint64_t(-1))); - wide_mant[1] = static_cast(mantissa >> 64); + wide_mant[0] = mantissa & (uint64_t(-1)); + wide_mant[1] = mantissa >> 64; val = (val * wide_mant) >> shift_amount; return fast_uint_mod_1e9(val); } diff --git a/libc/src/__support/str_to_float.h b/libc/src/__support/str_to_float.h index 33c394e389a8..0697cf0a68c3 100644 --- a/libc/src/__support/str_to_float.h +++ b/libc/src/__support/str_to_float.h @@ -298,11 +298,9 @@ eisel_lemire(ExpandedFloat init_num, BitsType msb = final_approx_upper >> (BITS_IN_MANTISSA - 1); BitsType final_mantissa = final_approx_upper >> - static_cast( - msb + BITS_IN_MANTISSA - - (fputil::FloatProperties::MANTISSA_WIDTH + 3)); - exp2 -= - static_cast(1ULL ^ static_cast(msb)); // same as !msb + (msb + BITS_IN_MANTISSA - + (fputil::FloatProperties::MANTISSA_WIDTH + 3)); + exp2 -= static_cast(1 ^ msb); // same as !msb if (round == RoundDirection::Nearest) { // Half-way ambiguity @@ -567,7 +565,7 @@ clinger_fast_path(ExpandedFloat init_num, } fputil::FPBits result; - T float_mantissa = static_cast(static_cast(mantissa)); + T float_mantissa = static_cast(mantissa); if (exp10 == 0) { result = fputil::FPBits(float_mantissa); @@ -802,7 +800,7 @@ LIBC_INLINE FloatConvertReturn binary_exp_to_float(ExpandedFloat init_num, BitsType round_bit_mask = BitsType(1) << (amount_to_shift_right - 1); BitsType sticky_mask = round_bit_mask - 1; - bool round_bit = static_cast(mantissa & round_bit_mask); + bool round_bit = mantissa & round_bit_mask; bool sticky_bit = static_cast(mantissa & sticky_mask) || truncated; if (amount_to_shift_right < NUMBITS) { @@ -812,7 +810,7 @@ LIBC_INLINE FloatConvertReturn binary_exp_to_float(ExpandedFloat init_num, } else { mantissa = 0; } - bool least_significant_bit = static_cast(mantissa & BitsType(1)); + bool least_significant_bit = mantissa & BitsType(1); // TODO: check that this rounding behavior is correct. diff --git a/libc/src/stdio/printf_core/char_converter.h b/libc/src/stdio/printf_core/char_converter.h index 93d2111548fa..23a85eb57288 100644 --- a/libc/src/stdio/printf_core/char_converter.h +++ b/libc/src/stdio/printf_core/char_converter.h @@ -19,7 +19,7 @@ namespace __llvm_libc { namespace printf_core { LIBC_INLINE int convert_char(Writer *writer, const FormatSection &to_conv) { - char c = static_cast(to_conv.conv_val_raw); + char c = to_conv.conv_val_raw; constexpr int string_len = 1; diff --git a/libc/src/stdio/printf_core/float_dec_converter.h b/libc/src/stdio/printf_core/float_dec_converter.h index dabeb9173dc8..8d220ceeebb0 100644 --- a/libc/src/stdio/printf_core/float_dec_converter.h +++ b/libc/src/stdio/printf_core/float_dec_converter.h @@ -598,9 +598,8 @@ LIBC_INLINE int convert_float_decimal_typed(Writer *writer, const bool trailingZeros = requiredTwos <= 0 || (requiredTwos < 60 && - multiple_of_power_of_2( - static_cast(float_bits.get_explicit_mantissa()), - static_cast(requiredTwos))); + multiple_of_power_of_2(float_bits.get_explicit_mantissa(), + static_cast(requiredTwos))); switch (fputil::get_round()) { case FE_TONEAREST: // Round to nearest, if it's exactly halfway then round to even. @@ -773,9 +772,8 @@ LIBC_INLINE int convert_float_dec_exp_typed(Writer *writer, const bool trailingZeros = requiredTwos <= 0 || (requiredTwos < 60 && - multiple_of_power_of_2( - static_cast(float_bits.get_explicit_mantissa()), - static_cast(requiredTwos))); + multiple_of_power_of_2(float_bits.get_explicit_mantissa(), + static_cast(requiredTwos))); switch (fputil::get_round()) { case FE_TONEAREST: // Round to nearest, if it's exactly halfway then round to even. @@ -1022,9 +1020,8 @@ LIBC_INLINE int convert_float_dec_auto_typed(Writer *writer, const bool trailingZeros = requiredTwos <= 0 || (requiredTwos < 60 && - multiple_of_power_of_2( - static_cast(float_bits.get_explicit_mantissa()), - static_cast(requiredTwos))); + multiple_of_power_of_2(float_bits.get_explicit_mantissa(), + static_cast(requiredTwos))); switch (fputil::get_round()) { case FE_TONEAREST: // Round to nearest, if it's exactly halfway then round to even. @@ -1150,8 +1147,7 @@ LIBC_INLINE int convert_float_decimal(Writer *writer, float_bits); } } else { - fputil::FPBits::UIntType float_raw = - static_cast(to_conv.conv_val_raw); + fputil::FPBits::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits float_bits(float_raw); if (!float_bits.is_inf_or_nan()) { return convert_float_decimal_typed(writer, to_conv, float_bits); @@ -1171,8 +1167,7 @@ LIBC_INLINE int convert_float_dec_exp(Writer *writer, float_bits); } } else { - fputil::FPBits::UIntType float_raw = - static_cast(to_conv.conv_val_raw); + fputil::FPBits::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits float_bits(float_raw); if (!float_bits.is_inf_or_nan()) { return convert_float_dec_exp_typed(writer, to_conv, float_bits); @@ -1192,8 +1187,7 @@ LIBC_INLINE int convert_float_dec_auto(Writer *writer, float_bits); } } else { - fputil::FPBits::UIntType float_raw = - static_cast(to_conv.conv_val_raw); + fputil::FPBits::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits float_bits(float_raw); if (!float_bits.is_inf_or_nan()) { return convert_float_dec_auto_typed(writer, to_conv, float_bits); diff --git a/libc/src/stdio/printf_core/float_hex_converter.h b/libc/src/stdio/printf_core/float_hex_converter.h index b3d7b22aace7..a26a3e796e4d 100644 --- a/libc/src/stdio/printf_core/float_hex_converter.h +++ b/libc/src/stdio/printf_core/float_hex_converter.h @@ -51,8 +51,7 @@ LIBC_INLINE int convert_float_hex_exp(Writer *writer, } else { mantissa_width = fputil::MantissaWidth::VALUE; exponent_bias = fputil::FPBits::EXPONENT_BIAS; - fputil::FPBits::UIntType float_raw = - static_cast(to_conv.conv_val_raw); + fputil::FPBits::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits float_bits(float_raw); is_negative = float_bits.get_sign(); exponent = float_bits.get_exponent(); @@ -147,9 +146,8 @@ LIBC_INLINE int convert_float_hex_exp(Writer *writer, size_t mant_cur = mant_len; size_t first_non_zero = 1; for (; mant_cur > 0; --mant_cur, mantissa /= 16) { - char new_digit = - static_cast(((mantissa % 16) > 9) ? ((mantissa % 16) - 10 + a) - : ((mantissa % 16) + '0')); + char new_digit = ((mantissa % 16) > 9) ? ((mantissa % 16) - 10 + a) + : ((mantissa % 16) + '0'); mant_buffer[mant_cur - 1] = new_digit; if (new_digit != '0' && first_non_zero < mant_cur) first_non_zero = mant_cur; diff --git a/libc/src/stdio/printf_core/float_inf_nan_converter.h b/libc/src/stdio/printf_core/float_inf_nan_converter.h index 1883b47ed99b..b7dcf8692e97 100644 --- a/libc/src/stdio/printf_core/float_inf_nan_converter.h +++ b/libc/src/stdio/printf_core/float_inf_nan_converter.h @@ -36,8 +36,7 @@ LIBC_INLINE int convert_inf_nan(Writer *writer, const FormatSection &to_conv) { is_negative = float_bits.get_sign(); mantissa = float_bits.get_explicit_mantissa(); } else { - fputil::FPBits::UIntType float_raw = - static_cast(to_conv.conv_val_raw); + fputil::FPBits::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits float_bits(float_raw); is_negative = float_bits.get_sign(); mantissa = float_bits.get_explicit_mantissa(); diff --git a/libc/src/stdio/printf_core/int_converter.h b/libc/src/stdio/printf_core/int_converter.h index b4775a6861a4..f5c849c4ef92 100644 --- a/libc/src/stdio/printf_core/int_converter.h +++ b/libc/src/stdio/printf_core/int_converter.h @@ -43,7 +43,7 @@ LIBC_INLINE int convert_int(Writer *writer, const FormatSection &to_conv) { static constexpr size_t BITS_IN_BYTE = 8; static constexpr size_t BITS_IN_NUM = sizeof(uintmax_t) * BITS_IN_BYTE; - uintmax_t num = static_cast(to_conv.conv_val_raw); + uintmax_t num = to_conv.conv_val_raw; bool is_negative = false; FormatFlags flags = to_conv.flags; -- cgit v1.2.1