From 6a8cfe79da1b645ba3196458aca0e2c7247cbba2 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 28 Feb 2009 13:43:49 +0100 Subject: [PATCH 1/1] Stricter condition to check for dc candidates Another optimization that let us remove another half of find_hidden_checks(them, DcCandidates) calls. No functional change. Signed-off-by: Marco Costalba --- src/position.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/position.cpp b/src/position.cpp index ec54da9e..006309ea 100644 --- a/src/position.cpp +++ b/src/position.cpp @@ -725,16 +725,14 @@ void Position::update_hidden_checks(Square from, Square to) { if ( (moveSquares & RookPseudoAttacks[ksq]) && (checkerCaptured || (rooks_and_queens(them) & RookPseudoAttacks[ksq])) || (moveSquares & BishopPseudoAttacks[ksq]) && (checkerCaptured || (bishops_and_queens(them) & BishopPseudoAttacks[ksq]))) { + find_hidden_checks(them, Pinned); // If we don't have opponent dc candidates and we are moving in the - // attack line then won't be dc candidates also after the move. + // attack line then won't be any dc candidates also after the move. if ( st->dcCandidates[them] - || bit_is_set(RookPseudoAttacks[ksq], from) - || bit_is_set(BishopPseudoAttacks[ksq], from)) - - find_hidden_checks(them, Pinned | DcCandidates); - else - find_hidden_checks(them, Pinned); + || (bit_is_set(RookPseudoAttacks[ksq], from) && (rooks_and_queens(them) & RookPseudoAttacks[ksq])) + || (bit_is_set(BishopPseudoAttacks[ksq], from) && (bishops_and_queens(them) & BishopPseudoAttacks[ksq]))) + find_hidden_checks(them, DcCandidates); } } -- 2.39.2