From: Marco Costalba Date: Mon, 30 Mar 2009 10:07:45 +0000 (+0200) Subject: Silence idiotic warning on two's complement of an unsigned X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=d7ef09727acc11c91b4a25b775c7f6d0bf1d37d8 Silence idiotic warning on two's complement of an unsigned MSVC gives: warning C4146: unary minus operator applied to unsigned type, result still unsigned When finds -b where b is an unsigned integer. So rewrite the two's complement in a way to avoid the warning. Theoretically the new version is slower, but in practice changes nothing. Signed-off-by: Marco Costalba --- diff --git a/src/position.cpp b/src/position.cpp index 1081e1da..cdbd9f0d 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -1618,7 +1618,7 @@ int Position::see(Square from, Square to) const { // Remove the attacker we just found from the 'attackers' bitboard, // and scan for new X-ray attacks behind the attacker. b = attackers & pieces_of_color_and_type(c, pt); - occ ^= (b & -b); + occ ^= (b & (~b + 1)); attackers |= (rook_attacks_bb(to, occ) & rooks_and_queens()) | (bishop_attacks_bb(to, occ) & bishops_and_queens());