From 1c7a727795b82de75ed83e9648a94134ef75576a Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sun, 1 Feb 2015 16:32:21 +0100 Subject: [PATCH] Use move assignment in movegen.h No functional change and same speed (tested with perft) --- src/movegen.cpp | 36 ++++++++++++++++++------------------ src/movepick.cpp | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/movegen.cpp b/src/movegen.cpp index f800fdc7..1e14f59b 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -59,7 +59,7 @@ namespace { if (Checks && !pos.gives_check(m, *ci)) return moveList; - (moveList++)->move = m; + *moveList++ = m; return (void)ci, moveList; // Silence a warning under MSVC } @@ -69,19 +69,19 @@ namespace { inline 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); + *moveList++ = make(to - Delta, to, KNIGHT); return (void)ci, moveList; // Silence a warning under MSVC } @@ -145,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); } } @@ -187,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) @@ -211,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()); } } @@ -245,7 +245,7 @@ namespace { b &= ci->checkSq[Pt]; while (b) - (moveList++)->move = make_move(from, pop_lsb(&b)); + *moveList++ = make_move(from, pop_lsb(&b)); } return moveList; @@ -269,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)) @@ -348,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) @@ -380,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 @@ -406,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; diff --git a/src/movepick.cpp b/src/movepick.cpp index 27245ec7..3b636b93 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -245,7 +245,7 @@ void MovePicker::generate_next_stage() { /* Fall through */ case STOP: - endMoves = cur + 1; // Avoid another next_phase() call + endMoves = cur + 1; // Avoid another generate_next_stage() call break; default: -- 2.39.2