]> git.sesse.net Git - stockfish/blobdiff - src/movegen.cpp
Makefile improvements for compiling on OS X
[stockfish] / src / movegen.cpp
index a254590b1286fa8aa02a529d915c377f90c9efe1..a3623a69e5e4369bfcfcae701e04cdce4c2d82d0 100644 (file)
@@ -364,26 +364,9 @@ ExtMove* generate<EVASIONS>(const Position& pos, ExtMove* mlist) {
 
       assert(color_of(pos.piece_on(checksq)) == ~us);
 
-      switch (type_of(pos.piece_on(checksq)))
-      {
-      case BISHOP: sliderAttacks |= PseudoAttacks[BISHOP][checksq]; break;
-      case ROOK:   sliderAttacks |= PseudoAttacks[ROOK][checksq];   break;
-      case QUEEN:
-          // If queen and king are far or not on a diagonal line we can safely
-          // remove all the squares attacked in the other direction becuase are
-          // not reachable by the king anyway.
-          if (between_bb(ksq, checksq) || !(PseudoAttacks[BISHOP][checksq] & ksq))
-              sliderAttacks |= PseudoAttacks[QUEEN][checksq];
-
-          // Otherwise we need to use real rook attacks to check if king is safe
-          // to move in the other direction. For example: king in B2, queen in A1
-          // a knight in B1, and we can safely move to C1.
-          else
-              sliderAttacks |= PseudoAttacks[BISHOP][checksq] | pos.attacks_from<ROOK>(checksq);
-
-      default:
-          break;
-      }
+      if (type_of(pos.piece_on(checksq)) > KNIGHT) // A slider
+          sliderAttacks |= LineBB[checksq][ksq] ^ checksq;
+
   } while (b);
 
   // Generate evasions for king, capture and non capture moves