X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fpawns.cpp;h=fece246b1c999a31611a8b8661b4e97d8e9520e2;hp=747781a3308f8e6ed6938c1b6bfbdf31af250c5f;hb=aecdbfc4a000c72fcc2642f54ce83967913a16ba;hpb=04fd7efdfa69c7eff716192238989b6dcdcead00 diff --git a/src/pawns.cpp b/src/pawns.cpp index 747781a3..fece246b 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -92,7 +92,6 @@ namespace { Bitboard b; Square s; File f; - Rank r; bool passed, isolated, doubled, opposed, chain, backward, candidate; Score value = SCORE_ZERO; const Square* pl = pos.list(Us); @@ -113,13 +112,12 @@ namespace { assert(pos.piece_on(s) == make_piece(Us, PAWN)); f = file_of(s); - r = rank_of(s); // This file cannot be semi-open e->semiopenFiles[Us] &= ~(1 << f); // Our rank plus previous one. Used for chain detection - b = rank_bb(r) | rank_bb(Us == WHITE ? r - Rank(1) : r + Rank(1)); + b = rank_bb(s) | rank_bb(s - pawn_push(Us)); // Flag the pawn as passed, isolated, doubled or member of a pawn // chain (but not the backward one). @@ -231,11 +229,11 @@ Value Entry::shelter_storm(const Position& pos, Square ksq) { for (int f = kf - 1; f <= kf + 1; f++) { b = ourPawns & FileBB[f]; - rkUs = b ? relative_rank(Us, Us == WHITE ? lsb(b) : msb(b)) : RANK_1; + rkUs = b ? relative_rank(Us, lsb(Us, b)) : RANK_1; safety -= ShelterWeakness[rkUs]; b = theirPawns & FileBB[f]; - rkThem = b ? relative_rank(Us, Us == WHITE ? lsb(b) : msb(b)) : RANK_1; + rkThem = b ? relative_rank(Us, lsb(Us, b)) : RANK_1; safety -= StormDanger[rkUs == RANK_1 ? 0 : rkThem == rkUs + 1 ? 2 : 1][rkThem]; }