]> git.sesse.net Git - stockfish/blobdiff - src/movepick.cpp
Retire MovePicker::discovered_check_candidates()
[stockfish] / src / movepick.cpp
index fdf4b8d1f9181ec3d7f74a530d0c6145b85aff86..26627474536f37bd6e8f859ceb7a2cd909ef7dcd 100644 (file)
@@ -86,10 +86,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d,
   } else
       ttMoves[1].move = killers[0].move = killers[1].move = MOVE_NONE;
 
-  Color us = pos.side_to_move();
-
-  dc = p.discovered_check_candidates(us);
-  pinned = p.pinned_pieces(us);
+  pinned = p.pinned_pieces(pos.side_to_move());
 
   if (p.is_check())
       phasePtr = EvasionsPhaseTable;
@@ -144,7 +141,7 @@ void MovePicker::go_next_phase() {
 
   case PH_EVASIONS:
       assert(pos.is_check());
-      lastMove = generate_evasions(pos, moves, pinned);
+      lastMove = generate_evasions(pos, moves);
       score_evasions();
       return;
 
@@ -155,7 +152,7 @@ void MovePicker::go_next_phase() {
 
   case PH_QCHECKS:
       // Perhaps we should order moves move here?  FIXME
-      lastMove = generate_non_capture_checks(pos, moves, dc);
+      lastMove = generate_non_capture_checks(pos, moves);
       return;
 
   case PH_STOP:
@@ -318,11 +315,16 @@ Move MovePicker::get_next_move() {
                   return move;
               break;
 
-          case PH_EVASIONS:
           case PH_BAD_CAPTURES:
               move = pick_best(curMove++, lastMove).move;
               return move;
 
+          case PH_EVASIONS:
+              move = pick_best(curMove++, lastMove).move;
+              if (pos.pl_move_is_legal(move, pinned))
+                  return move;
+              break;
+
           case PH_QCAPTURES:
               move = pick_best(curMove++, lastMove).move;
               if (   move != ttMoves[0].move