-
- // Before generating the move, we have to make sure it is legal.
- // This is somewhat tricky, because the two disappearing pawns may
- // cause new "discovered checks". We test this by removing the
- // two relevant bits from the occupied squares bitboard, and using
- // the low-level bitboard functions for bishop and rook attacks.
- b2 = pos.occupied_squares();
- clear_bit(&b2, from);
- clear_bit(&b2, checksq);
- if (!( (bishop_attacks_bb(ksq, b2) & pos.bishops_and_queens(them))
- ||(rook_attacks_bb(ksq, b2) & pos.rooks_and_queens(them))))
-
- (*mlist++).move = make_ep_move(from, to);
+ // Move is always legal because checking pawn is not a discovered
+ // check candidate and our capturing pawn has been already tested
+ // against pinned pieces.
+ (*mlist++).move = make_ep_move(from, to);