summaryrefslogtreecommitdiff
path: root/absl/strings/charconv.cc
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2022-10-13 14:12:39 -0700
committerGravatar Copybara-Service <copybara-worker@google.com>2022-10-13 14:13:57 -0700
commitf073fe8ee5dcb0aa18c893198747062f2f51ab59 (patch)
treefa473e3a4a77146484d19b456371452418e4a297 /absl/strings/charconv.cc
parentcbaba1a9bfdc8900e0d360e87d2fee137f6f7d9e (diff)
Fix "unsafe narrowing" warnings in absl, 12/12.
Addresses failures with the following, in some files: -Wshorten-64-to-32 -Wimplicit-int-conversion -Wsign-compare -Wsign-conversion -Wtautological-unsigned-zero-compare (This specific CL enables these warnings and fixes the remaining known issues.) Bug: chromium:1292951 PiperOrigin-RevId: 480981210 Change-Id: I92d5023c6833e24d6aa29b10d433116329972f41
Diffstat (limited to 'absl/strings/charconv.cc')
-rw-r--r--absl/strings/charconv.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/absl/strings/charconv.cc b/absl/strings/charconv.cc
index c08623c4..69d420bc 100644
--- a/absl/strings/charconv.cc
+++ b/absl/strings/charconv.cc
@@ -298,7 +298,9 @@ struct CalculatedFloat {
// minus the number of leading zero bits.)
int BitWidth(uint128 value) {
if (Uint128High64(value) == 0) {
- return bit_width(Uint128Low64(value));
+ // This static_cast is only needed when using a std::bit_width()
+ // implementation that does not have the fix for LWG 3656 applied.
+ return static_cast<int>(bit_width(Uint128Low64(value)));
}
return 128 - countl_zero(Uint128High64(value));
}
@@ -580,7 +582,9 @@ CalculatedFloat CalculateFromParsedHexadecimal(
const strings_internal::ParsedFloat& parsed_hex) {
uint64_t mantissa = parsed_hex.mantissa;
int exponent = parsed_hex.exponent;
- int mantissa_width = bit_width(mantissa);
+ // This static_cast is only needed when using a std::bit_width()
+ // implementation that does not have the fix for LWG 3656 applied.
+ int mantissa_width = static_cast<int>(bit_width(mantissa));
const int shift = NormalizedShiftSize<FloatType>(mantissa_width, exponent);
bool result_exact;
exponent += shift;