Export of internal Abseil changes

--
30b56a21feab3443ba40cf97a3bfaa3d5b3bc964 by Derek Mauro <dmauro@google.com>:

Fix conversion warnings on 32-bit MSVC

Fixes #582

PiperOrigin-RevId: 325509591
GitOrigin-RevId: 30b56a21feab3443ba40cf97a3bfaa3d5b3bc964
Change-Id: Icf1786a974eb88ca417cd428c0ce43e8ee8048e7
pull/772/head
Abseil Team 4 years ago committed by Derek Mauro
parent f72cc3516a
commit ce4bc92775
  1. 9
      absl/base/internal/bits.h

@ -83,10 +83,11 @@ ABSL_BASE_INTERNAL_FORCEINLINE int CountLeadingZeros64(uint64_t n) {
#elif defined(_MSC_VER) && !defined(__clang__)
// MSVC does not have __buitin_clzll. Compose two calls to _BitScanReverse
unsigned long result = 0; // NOLINT(runtime/int)
if ((n >> 32) && _BitScanReverse(&result, n >> 32)) {
if ((n >> 32) &&
_BitScanReverse(&result, static_cast<unsigned long>(n >> 32))) {
return 31 - result;
}
if (_BitScanReverse(&result, n)) {
if (_BitScanReverse(&result, static_cast<unsigned long>(n))) {
return 63 - result;
}
return 64;
@ -170,10 +171,10 @@ ABSL_BASE_INTERNAL_FORCEINLINE int CountTrailingZerosNonZero64(uint64_t n) {
#elif defined(_MSC_VER) && !defined(__clang__)
unsigned long result = 0; // NOLINT(runtime/int)
if (static_cast<uint32_t>(n) == 0) {
_BitScanForward(&result, n >> 32);
_BitScanForward(&result, static_cast<unsigned long>(n >> 32));
return result + 32;
}
_BitScanForward(&result, n);
_BitScanForward(&result, static_cast<unsigned long>(n));
return result;
#elif defined(__GNUC__) || defined(__clang__)
static_assert(sizeof(unsigned long long) == sizeof(n), // NOLINT(runtime/int)

Loading…
Cancel
Save