X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovegen.cpp;h=4a0a34ef4704f1d0f8d8e7bf50a26205d1904767;hp=cf65cd62889103c2b89cdd9c437b226ff05660fe;hb=6c040c821a50475840607ef5f11c270ee21d61da;hpb=3c07603dac03f0da20194097cf4eb1a396fea60d diff --git a/src/movegen.cpp b/src/movegen.cpp index cf65cd62..4a0a34ef 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -59,33 +59,31 @@ namespace { if (Checks && !pos.gives_check(m, *ci)) return moveList; - (moveList++)->move = m; + *moveList++ = m; - return moveList; + return (void)ci, moveList; // Silence a warning under MSVC } template - inline ExtMove* make_promotions(ExtMove* moveList, Square to, const CheckInfo* ci) { + ExtMove* make_promotions(ExtMove* moveList, Square to, const CheckInfo* ci) { if (Type == CAPTURES || Type == EVASIONS || Type == NON_EVASIONS) - (moveList++)->move = make(to - Delta, to, QUEEN); + *moveList++ = make(to - Delta, to, QUEEN); if (Type == QUIETS || Type == EVASIONS || Type == NON_EVASIONS) { - (moveList++)->move = make(to - Delta, to, ROOK); - (moveList++)->move = make(to - Delta, to, BISHOP); - (moveList++)->move = make(to - Delta, to, KNIGHT); + *moveList++ = make(to - Delta, to, ROOK); + *moveList++ = make(to - Delta, to, BISHOP); + *moveList++ = make(to - Delta, to, KNIGHT); } // Knight promotion is the only promotion that can give a direct check // that's not already included in the queen promotion. if (Type == QUIET_CHECKS && (StepAttacksBB[W_KNIGHT][to] & ci->ksq)) - (moveList++)->move = make(to - Delta, to, KNIGHT); - else - (void)ci; // Silence a warning under MSVC + *moveList++ = make(to - Delta, to, KNIGHT); - return moveList; + return (void)ci, moveList; // Silence a warning under MSVC } @@ -147,13 +145,13 @@ namespace { while (b1) { Square to = pop_lsb(&b1); - (moveList++)->move = make_move(to - Up, to); + *moveList++ = make_move(to - Up, to); } while (b2) { Square to = pop_lsb(&b2); - (moveList++)->move = make_move(to - Up - Up, to); + *moveList++ = make_move(to - Up - Up, to); } } @@ -189,13 +187,13 @@ namespace { while (b1) { Square to = pop_lsb(&b1); - (moveList++)->move = make_move(to - Right, to); + *moveList++ = make_move(to - Right, to); } while (b2) { Square to = pop_lsb(&b2); - (moveList++)->move = make_move(to - Left, to); + *moveList++ = make_move(to - Left, to); } if (pos.ep_square() != SQ_NONE) @@ -213,7 +211,7 @@ namespace { assert(b1); while (b1) - (moveList++)->move = make(pop_lsb(&b1), pos.ep_square()); + *moveList++ = make(pop_lsb(&b1), pos.ep_square()); } } @@ -221,7 +219,7 @@ namespace { } - template FORCE_INLINE + template ExtMove* generate_moves(const Position& pos, ExtMove* moveList, Color us, Bitboard target, const CheckInfo* ci) { @@ -247,14 +245,14 @@ namespace { b &= ci->checkSq[Pt]; while (b) - (moveList++)->move = make_move(from, pop_lsb(&b)); + *moveList++ = make_move(from, pop_lsb(&b)); } return moveList; } - template FORCE_INLINE + template ExtMove* generate_all(const Position& pos, ExtMove* moveList, Bitboard target, const CheckInfo* ci = nullptr) { @@ -271,7 +269,7 @@ namespace { Square ksq = pos.king_square(Us); Bitboard b = pos.attacks_from(ksq) & target; while (b) - (moveList++)->move = make_move(ksq, pop_lsb(&b)); + *moveList++ = make_move(ksq, pop_lsb(&b)); } if (Type != CAPTURES && Type != EVASIONS && pos.can_castle(Us)) @@ -350,7 +348,7 @@ ExtMove* generate(const Position& pos, ExtMove* moveList) { b &= ~PseudoAttacks[QUEEN][ci.ksq]; while (b) - (moveList++)->move = make_move(from, pop_lsb(&b)); + *moveList++ = make_move(from, pop_lsb(&b)); } return us == WHITE ? generate_all(pos, moveList, ~pos.pieces(), &ci) @@ -382,7 +380,7 @@ ExtMove* generate(const Position& pos, ExtMove* moveList) { // Generate evasions for king, capture and non capture moves Bitboard b = pos.attacks_from(ksq) & ~pos.pieces(us) & ~sliderAttacks; while (b) - (moveList++)->move = make_move(ksq, pop_lsb(&b)); + *moveList++ = make_move(ksq, pop_lsb(&b)); if (more_than_one(pos.checkers())) return moveList; // Double check, only a king move can save the day @@ -408,9 +406,9 @@ ExtMove* generate(const Position& pos, ExtMove* moveList) { moveList = pos.checkers() ? generate(pos, moveList) : generate(pos, moveList); while (cur != moveList) - if ( (pinned || from_sq(cur->move) == ksq || type_of(cur->move) == ENPASSANT) - && !pos.legal(cur->move, pinned)) - cur->move = (--moveList)->move; + if ( (pinned || from_sq(*cur) == ksq || type_of(*cur) == ENPASSANT) + && !pos.legal(*cur, pinned)) + *cur = (--moveList)->move; else ++cur;