summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorMikhail R. Gadelha <mikhail@igalia.com>2023-05-16 13:06:37 -0300
committerMikhail R. Gadelha <mikhail@igalia.com>2023-05-16 13:06:37 -0300
commit25a2aeb1908fd8a5fbd0fedcf53006bde92c1ae3 (patch)
tree3ea082bac8017fd9233917415348a7af8dbaffe3 /libc
parentb663993067ffb5800632ad41ea7f2f92caab1093 (diff)
downloadllvm-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.h2
-rw-r--r--libc/src/__support/UInt.h13
-rw-r--r--libc/src/__support/float_to_string.h4
-rw-r--r--libc/src/__support/str_to_float.h14
-rw-r--r--libc/src/stdio/printf_core/char_converter.h2
-rw-r--r--libc/src/stdio/printf_core/float_dec_converter.h24
-rw-r--r--libc/src/stdio/printf_core/float_hex_converter.h8
-rw-r--r--libc/src/stdio/printf_core/float_inf_nan_converter.h3
-rw-r--r--libc/src/stdio/printf_core/int_converter.h2
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;