diff --git a/src/box/memtx_bitset.cc b/src/box/memtx_bitset.cc
index 0de5b4c95f4ab3a53f2badddf1be62d33bd05808..14c4f8b8140cd10cef6c1228cff91c386b8b0594 100644
--- a/src/box/memtx_bitset.cc
+++ b/src/box/memtx_bitset.cc
@@ -46,7 +46,11 @@ struct bitset_hash_entry {
 #define mh_int_t uint32_t
 #define mh_arg_t int
 
-#define mh_hash_key(a, arg) ((uint32_t)(((uintptr_t)(a)) >> 33^((uintptr_t)(a)) ^ ((uintptr_t)(a)) << 11));
+#if UINTPTR_MAX == 0xffffffff
+#define mh_hash_key(a, arg) ((uintptr_t)(a))
+#else
+#define mh_hash_key(a, arg) ((uint32_t)(((uintptr_t)(a)) >> 33 ^ ((uintptr_t)(a)) ^ ((uintptr_t)(a)) << 11))
+#endif
 #define mh_hash(a, arg) mh_hash_key((a)->tuple, arg)
 #define mh_cmp(a, b, arg) ((a)->tuple != (b)->tuple)
 #define mh_cmp_key(a, b, arg) ((a) != (b)->tuple)