diff options
author | Mikhail R. Gadelha <mikhail@igalia.com> | 2023-05-16 13:06:37 -0300 |
---|---|---|
committer | Mikhail R. Gadelha <mikhail@igalia.com> | 2023-05-16 13:06:37 -0300 |
commit | 25a2aeb1908fd8a5fbd0fedcf53006bde92c1ae3 (patch) | |
tree | 3ea082bac8017fd9233917415348a7af8dbaffe3 /libc | |
parent | b663993067ffb5800632ad41ea7f2f92caab1093 (diff) | |
download | llvm-25a2aeb1908fd8a5fbd0fedcf53006bde92c1ae3.tar.gz |
Revert "[libc] Add explicit constructor calls to fix compilation when using UInt<T>"
This reverts commit b663993067ffb5800632ad41ea7f2f92caab1093.
This caused a regression on aarch64:
https://lab.llvm.org/buildbot#builders/138/builds/43983
Diffstat (limited to 'libc')
-rw-r--r-- | libc/src/__support/FPUtil/generic/sqrt.h | 2 | ||||
-rw-r--r-- | libc/src/__support/UInt.h | 13 | ||||
-rw-r--r-- | libc/src/__support/float_to_string.h | 4 | ||||
-rw-r--r-- | libc/src/__support/str_to_float.h | 14 | ||||
-rw-r--r-- | libc/src/stdio/printf_core/char_converter.h | 2 | ||||
-rw-r--r-- | libc/src/stdio/printf_core/float_dec_converter.h | 24 | ||||
-rw-r--r-- | libc/src/stdio/printf_core/float_hex_converter.h | 8 | ||||
-rw-r--r-- | libc/src/stdio/printf_core/float_inf_nan_converter.h | 3 | ||||
-rw-r--r-- | libc/src/stdio/printf_core/int_converter.h | 2 |
9 files changed, 26 insertions, 46 deletions
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<cpp::is_floating_point_v<T>, T> sqrt(T x) { } // We compute one more iteration in order to round correctly. - bool lsb = static_cast<bool>(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 <size_t Bits> struct UInt { return result; } - constexpr UInt<Bits> operator/=(const UInt<Bits> &other) { - *this = *this / other; - return *this; - } - constexpr UInt<Bits> operator%(const UInt<Bits> &other) const { UInt<Bits> result(*this); return *result.div(other); @@ -719,12 +714,8 @@ template <size_t Bits> struct UInt { } constexpr UInt<Bits> &operator++() { - *this = *this + 1; - return *this; - } - - constexpr UInt<Bits> &operator--() { - *this = *this - 1; + UInt<Bits> 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<MID_INT_SIZE + MANT_INT_SIZE> val(large); // TODO: Find a better way to force __uint128_t to be UInt<128> cpp::UInt<MANT_INT_SIZE> wide_mant(0); - wide_mant[0] = static_cast<uint64_t>(mantissa & (uint64_t(-1))); - wide_mant[1] = static_cast<uint64_t>(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<long double>(ExpandedFloat<long double> init_num, BitsType msb = final_approx_upper >> (BITS_IN_MANTISSA - 1); BitsType final_mantissa = final_approx_upper >> - static_cast<uint64_t>( - msb + BITS_IN_MANTISSA - - (fputil::FloatProperties<long double>::MANTISSA_WIDTH + 3)); - exp2 -= - static_cast<uint32_t>(1ULL ^ static_cast<uint64_t>(msb)); // same as !msb + (msb + BITS_IN_MANTISSA - + (fputil::FloatProperties<long double>::MANTISSA_WIDTH + 3)); + exp2 -= static_cast<uint32_t>(1 ^ msb); // same as !msb if (round == RoundDirection::Nearest) { // Half-way ambiguity @@ -567,7 +565,7 @@ clinger_fast_path(ExpandedFloat<T> init_num, } fputil::FPBits<T> result; - T float_mantissa = static_cast<T>(static_cast<uint64_t>(mantissa)); + T float_mantissa = static_cast<T>(mantissa); if (exp10 == 0) { result = fputil::FPBits<T>(float_mantissa); @@ -802,7 +800,7 @@ LIBC_INLINE FloatConvertReturn<T> binary_exp_to_float(ExpandedFloat<T> 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<bool>(mantissa & round_bit_mask); + bool round_bit = mantissa & round_bit_mask; bool sticky_bit = static_cast<bool>(mantissa & sticky_mask) || truncated; if (amount_to_shift_right < NUMBITS) { @@ -812,7 +810,7 @@ LIBC_INLINE FloatConvertReturn<T> binary_exp_to_float(ExpandedFloat<T> init_num, } else { mantissa = 0; } - bool least_significant_bit = static_cast<bool>(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<uint8_t>(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<uint64_t>(float_bits.get_explicit_mantissa()), - static_cast<uint32_t>(requiredTwos))); + multiple_of_power_of_2(float_bits.get_explicit_mantissa(), + static_cast<uint32_t>(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<uint64_t>(float_bits.get_explicit_mantissa()), - static_cast<uint32_t>(requiredTwos))); + multiple_of_power_of_2(float_bits.get_explicit_mantissa(), + static_cast<uint32_t>(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<uint64_t>(float_bits.get_explicit_mantissa()), - static_cast<uint32_t>(requiredTwos))); + multiple_of_power_of_2(float_bits.get_explicit_mantissa(), + static_cast<uint32_t>(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<double>::UIntType float_raw = - static_cast<uint64_t>(to_conv.conv_val_raw); + fputil::FPBits<double>::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits<double> float_bits(float_raw); if (!float_bits.is_inf_or_nan()) { return convert_float_decimal_typed<double>(writer, to_conv, float_bits); @@ -1171,8 +1167,7 @@ LIBC_INLINE int convert_float_dec_exp(Writer *writer, float_bits); } } else { - fputil::FPBits<double>::UIntType float_raw = - static_cast<uint64_t>(to_conv.conv_val_raw); + fputil::FPBits<double>::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits<double> float_bits(float_raw); if (!float_bits.is_inf_or_nan()) { return convert_float_dec_exp_typed<double>(writer, to_conv, float_bits); @@ -1192,8 +1187,7 @@ LIBC_INLINE int convert_float_dec_auto(Writer *writer, float_bits); } } else { - fputil::FPBits<double>::UIntType float_raw = - static_cast<uint64_t>(to_conv.conv_val_raw); + fputil::FPBits<double>::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits<double> float_bits(float_raw); if (!float_bits.is_inf_or_nan()) { return convert_float_dec_auto_typed<double>(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<double>::VALUE; exponent_bias = fputil::FPBits<double>::EXPONENT_BIAS; - fputil::FPBits<double>::UIntType float_raw = - static_cast<uint64_t>(to_conv.conv_val_raw); + fputil::FPBits<double>::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits<double> 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<uint8_t>(((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<double>::UIntType float_raw = - static_cast<uint64_t>(to_conv.conv_val_raw); + fputil::FPBits<double>::UIntType float_raw = to_conv.conv_val_raw; fputil::FPBits<double> 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<uint64_t>(to_conv.conv_val_raw); + uintmax_t num = to_conv.conv_val_raw; bool is_negative = false; FormatFlags flags = to_conv.flags; |