X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=7eb04308b4c3bbd6c72247a6d920927ffc91b9e5;hp=0a53225abba9a81c8018edd10765b11c8dca00b9;hb=5bec768d42fc8ce34b4dc0574ef9f4e61bfd8853;hpb=6ae30e7cb10cf5b673aa6998d495b1527a43478d diff --git a/src/search.cpp b/src/search.cpp index 0a53225a..7eb04308 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1137,6 +1137,11 @@ namespace { { search_pv(pos, ss, alpha, beta, depth-2*OnePly, ply, threadID); ttMove = ss[ply].pv[ply]; + tte = TT.retrieve(pos.get_key()); + + // Following assert could fail, for instance when we have + // moveCount == 0 we return without saving a TT entry. + /* assert(tte); */ } // Initialize a MovePicker object for the current position, and prepare @@ -1165,8 +1170,11 @@ namespace { // To verify this we do a reduced search on all the other moves but the ttMove, // if result is lower then TT value minus a margin then we assume ttMove is the // only one playable. It is a kind of relaxed single reply extension. + // Note that could be ttMove != tte->move() due to IID, so we always use tte->move() + // to avoid aliases when we probe tte->depth() and tte->type() if ( depth >= 8 * OnePly - && move == ttMove + && tte + && move == tte->move() && ext < OnePly && is_lower_bound(tte->type()) && tte->depth() >= depth - 3 * OnePly) @@ -1430,6 +1438,7 @@ namespace { { search(pos, ss, beta, Min(depth/2, depth-2*OnePly), ply, false, threadID); ttMove = ss[ply].pv[ply]; + tte = TT.retrieve(pos.get_key()); } // Initialize a MovePicker object for the current position, and prepare @@ -1467,9 +1476,12 @@ namespace { // To verify this we do a reduced search on all the other moves but the ttMove, // if result is lower then TT value minus a margin then we assume ttMove is the // only one playable. It is a kind of relaxed single reply extension. + // Note that could be ttMove != tte->move() due to IID, so we always use tte->move() + // to avoid aliases when we probe tte->depth() and tte->type() if ( depth >= 8 * OnePly - && !excludedMove // do not allow recursive single-reply search - && move == ttMove + && tte + && move == tte->move() + && !excludedMove // Do not allow recursive single-reply search && ext < OnePly && is_lower_bound(tte->type()) && tte->depth() >= depth - 3 * OnePly)