BUILD: tools: fix a build warning on some 32-bit archs

Some recent versions of gcc apparently can detect that x >> 32 will not
work on a 32-bit architecture, but are failing to see that the code will
not be built since it's enclosed in "if (sizeof(LONG) > 4)" or equivalent.
Just shift right twice by 16 bits in this case, the compiler correctly
replaces it by a single 32-bit shift.

No backport is needed.
This commit is contained in:
Willy Tarreau 2019-03-18 16:31:18 +01:00
parent 93e02d8b73
commit 9b6be3bbeb

View File

@ -2672,7 +2672,8 @@ unsigned int mask_find_rank_bit(unsigned int r, unsigned long m)
t = 0;
s = LONGBITS;
if (s > 32) {
t = (d >> 32) + (d >> 48);
unsigned long d2 = (d >> 16) >> 16;
t = d2 + (d2 >> 16);
s -= ((t - r) & 256) >> 3; r -= (t & ((t - r) >> 8));
}
@ -2706,7 +2707,8 @@ unsigned int mask_find_rank_bit_fast(unsigned int r, unsigned long m,
t = 0;
s = LONGBITS;
if (s > 32) {
t = (d >> 32) + (d >> 48);
unsigned long d2 = (d >> 16) >> 16;
t = d2 + (d2 >> 16);
s -= ((t - r) & 256) >> 3; r -= (t & ((t - r) >> 8));
}