diff --git a/src/bitboard.cpp b/src/bitboard.cpp index 4ea69ebc..ba1af2f2 100644 --- a/src/bitboard.cpp +++ b/src/bitboard.cpp @@ -81,11 +81,13 @@ namespace { /// Software fall-back of lsb() and msb() for CPU lacking hardware support Square lsb(Bitboard b) { + assert(b); return BSFTable[bsf_index(b)]; } Square msb(Bitboard b) { + assert(b); unsigned b32; int result = 0; diff --git a/src/bitboard.h b/src/bitboard.h index 2ad87736..77a824ba 100644 --- a/src/bitboard.h +++ b/src/bitboard.h @@ -261,18 +261,27 @@ inline Bitboard attacks_bb(Piece pc, Square s, Bitboard occupied) { #if defined(__GNUC__) -inline Square lsb(Bitboard b) { return Square(__builtin_ctzll(b)); } -inline Square msb(Bitboard b) { return Square(63 - __builtin_clzll(b)); } +inline Square lsb(Bitboard b) { + assert(b); + return Square(__builtin_ctzll(b)); +} + +inline Square msb(Bitboard b) { + assert(b); + return Square(63 - __builtin_clzll(b)); +} #elif defined(_WIN64) && defined(_MSC_VER) inline Square lsb(Bitboard b) { + assert(b); unsigned long idx; _BitScanForward64(&idx, b); return (Square) idx; } inline Square msb(Bitboard b) { + assert(b); unsigned long idx; _BitScanReverse64(&idx, b); return (Square) idx;