]> git.sesse.net Git - stockfish/blobdiff - src/evaluate.cpp
Revert "Retire eval margin and gains"
[stockfish] / src / evaluate.cpp
index 1ff2dea7744c520daff7073c2bc315f0778648af..594809af9d74274c7b6d3e2a2076836a2b50ab5e 100644 (file)
@@ -83,6 +83,8 @@ namespace {
     // king is on g8 and there's a white knight on g5, this knight adds
     // 2 to kingAdjacentZoneAttacksCount[BLACK].
     int kingAdjacentZoneAttacksCount[COLOR_NB];
+
+    Bitboard pinnedPieces[COLOR_NB];
   };
 
   // Evaluation grain size, must be a power of 2
@@ -434,6 +436,8 @@ Value do_evaluate(const Position& pos, Value& margin) {
     const Color  Them = (Us == WHITE ? BLACK : WHITE);
     const Square Down = (Us == WHITE ? DELTA_S : DELTA_N);
 
+    ei.pinnedPieces[Us] = pos.pinned_pieces(Us);
+
     Bitboard b = ei.attackedBy[Them][KING] = pos.attacks_from<KING>(pos.king_square(Them));
     ei.attackedBy[Us][PAWN] = ei.pi->pawn_attacks(Us);
 
@@ -498,6 +502,9 @@ Value do_evaluate(const Position& pos, Value& margin) {
           : Piece ==   ROOK ? attacks_bb<  ROOK>(s, pos.pieces() ^ pos.pieces(Us, ROOK, QUEEN))
                             : pos.attacks_from<Piece>(s);
 
+        if (ei.pinnedPieces[Us] & s)
+            b &= PseudoAttacks[QUEEN][pos.king_square(Us)];
+
         ei.attackedBy[Us][Piece] |= b;
 
         if (b & ei.kingRing[Them])