From 3787f17e4da693e27ab7c5c8c8888548a57776a1 Mon Sep 17 00:00:00 2001 From: janwas Date: Sat, 1 Dec 2012 03:06:24 +0000 Subject: [PATCH] merge with local codebase: fix PopulationCount This was SVN commit r12907. --- source/lib/bits.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/lib/bits.h b/source/lib/bits.h index 141449b9fa..24d50f7473 100644 --- a/source/lib/bits.h +++ b/source/lib/bits.h @@ -147,11 +147,12 @@ inline size_t SparsePopulationCount(T mask) template static inline size_t PopulationCount(T x) { + cassert(!std::numeric_limits::is_signed); const T mask = T(~T(0)); x -= (x >> 1) & (mask/3); // count 2 bits x = (x & (mask/15*3)) + ((x >> 2) & (mask/15*3)); // count 4 bits x = (x + (x >> 4)) & (mask/255*15); // count 8 bits - return (x * (mask/255)) >> ((sizeof(T)-1)*CHAR_BIT); + return T(x * (mask/255)) >> ((sizeof(T)-1)*CHAR_BIT); }