Retire move_attacks_square()

There is only one call site. This patch is a
preparation for the next one that will affect
functionality.

No functional change.
This commit is contained in:
Marco Costalba
2012-10-30 19:56:19 +01:00
parent 13f90a30ef
commit 4e31c39a64
3 changed files with 23 additions and 42 deletions
+23 -10
View File
@@ -1411,12 +1411,10 @@ split_point_start: // At split points actual search starts from here
assert(!pos.is_capture_or_promotion(m));
assert(!pos.is_passed_pawn_push(m));
Square mfrom, mto, tfrom, tto;
mfrom = from_sq(m);
mto = to_sq(m);
tfrom = from_sq(threat);
tto = to_sq(threat);
Square mfrom = from_sq(m);
Square mto = to_sq(m);
Square tfrom = from_sq(threat);
Square tto = to_sq(threat);
// Case 1: Don't prune moves which move the threatened piece
if (mfrom == tto)
@@ -1424,11 +1422,26 @@ split_point_start: // At split points actual search starts from here
// Case 2: If the threatened piece has value less than or equal to the
// value of the threatening piece, don't prune moves which defend it.
if ( pos.is_capture(threat)
if ( pos.is_capture(threat)
&& ( PieceValue[MG][pos.piece_on(tfrom)] >= PieceValue[MG][pos.piece_on(tto)]
|| type_of(pos.piece_on(tfrom)) == KING)
&& pos.move_attacks_square(m, tto))
return true;
|| type_of(pos.piece_on(tfrom)) == KING))
{
// Update occupancy as if the piece is moving
Bitboard occ = pos.pieces() ^ mfrom ^ mto;
Piece piece = pos.piece_on(mfrom);
// The moved piece attacks the square 'tto' ?
if (pos.attacks_from(piece, mto, occ) & tto)
return true;
// Scan for possible X-ray attackers behind the moved piece
Bitboard xray = (attacks_bb< ROOK>(tto, occ) & pos.pieces(color_of(piece), QUEEN, ROOK))
| (attacks_bb<BISHOP>(tto, occ) & pos.pieces(color_of(piece), QUEEN, BISHOP));
// Verify attackers are triggered by our move and not already existing
if (xray && (xray ^ (xray & pos.attacks_from<QUEEN>(tto))))
return true;
}
// Case 3: If the moving piece in the threatened move is a slider, don't
// prune safe moves which block its ray.