]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Small cleanup of unused code in sp_search
[stockfish] / src / search.cpp
index 76db6d69217f4d53c3d007d808a0b1b952554111..64cdf1c4e5fac5f27d679e7ed4c2ad865c961a19 100644 (file)
@@ -1098,7 +1098,6 @@ namespace {
     assert(threadID >= 0 && threadID < ActiveThreads);
 
     Move movesSearched[256];
-    EvalInfo ei;
     StateInfo st;
     const TTEntry* tte;
     Move ttMove, move;
@@ -1119,12 +1118,9 @@ namespace {
     if (AbortSearch || thread_should_stop(threadID))
         return Value(0);
 
-    if (pos.is_draw())
+    if (pos.is_draw() || ply >= PLY_MAX - 1)
         return VALUE_DRAW;
 
-    if (ply >= PLY_MAX - 1)
-        return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
-
     // Mate distance pruning
     oldAlpha = alpha;
     alpha = Max(value_mated_in(ply), alpha);
@@ -1332,11 +1328,11 @@ namespace {
     const TTEntry* tte;
     Move ttMove, move;
     Depth ext, newDepth;
-    Value staticValue, nullValue, value, futilityValue, futilityValueScaled;
+    Value bestValue, staticValue, nullValue, value, futilityValue, futilityValueScaled;
     bool isCheck, useFutilityPruning, singleEvasion, moveIsCheck, captureOrPromotion, dangerous;
     bool mateThreat = false;
     int moveCount = 0;
-    Value bestValue = -VALUE_INFINITE;
+    futilityValue = staticValue = bestValue = -VALUE_INFINITE;
 
     if (depth < OnePly)
         return qsearch(pos, ss, beta-1, beta, Depth(0), ply, threadID);
@@ -1349,12 +1345,9 @@ namespace {
     if (AbortSearch || thread_should_stop(threadID))
         return Value(0);
 
-    if (pos.is_draw())
+    if (pos.is_draw() || ply >= PLY_MAX - 1)
         return VALUE_DRAW;
 
-    if (ply >= PLY_MAX - 1)
-        return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
-
     // Mate distance pruning
     if (value_mated_in(ply) >= beta)
         return beta;
@@ -1377,24 +1370,25 @@ namespace {
     }
 
     isCheck = pos.is_check();
-    ei.futilityMargin = Value(0); // Manually initialize futilityMargin
-
-    // Evaluate the position statically
-    if (isCheck)
-        staticValue = quick_evaluate(pos);
-    else if (tte && (tte->type() & VALUE_TYPE_EVAL))
-        staticValue = value_from_tt(tte->value(), ply);
-    else
-        staticValue = evaluate(pos, ei, threadID);
 
     // Calculate depth dependant futility pruning parameters
     const int FutilityMoveCountMargin = 3 + (1 << (3 * int(depth) / 8));
     const int FutilityValueMargin = 112 * bitScanReverse32(int(depth) * int(depth) / 2);
 
-    // Enhance score accuracy with TT value if possible
-    ss[ply].eval = staticValue;
-    futilityValue = staticValue + FutilityValueMargin;
-    staticValue = refine_eval(tte, staticValue, ply);
+    // Evaluate the position statically
+    if (isCheck)
+        ss[ply].eval = VALUE_NONE;
+    else
+    {
+        if (tte && (tte->type() & VALUE_TYPE_EVAL))
+            staticValue = value_from_tt(tte->value(), ply);
+        else
+            staticValue = evaluate(pos, ei, threadID);
+
+        ss[ply].eval = staticValue;
+        futilityValue = staticValue + FutilityValueMargin;
+        staticValue = refine_eval(tte, staticValue, ply); // Enhance accuracy with TT value if possible
+    }
 
     // Null move search
     if (    allowNullmove
@@ -1447,8 +1441,9 @@ namespace {
     }
     // Null move search not allowed, try razoring
     else if (   !value_is_mate(beta)
+             && !isCheck
              && depth < RazorDepth
-             && staticValue < beta - (depth > OnePly ? NullMoveMargin + 16 * depth : 2*NullMoveMargin)
+             && staticValue < beta - (NullMoveMargin + 16 * depth)
              && ss[ply - 1].currentMove != MOVE_NULL
              && ttMove == MOVE_NONE
              && !pos.has_pawn_on_7th(pos.side_to_move()))
@@ -1659,12 +1654,9 @@ namespace {
     if (AbortSearch || thread_should_stop(threadID))
         return Value(0);
 
-    if (pos.is_draw())
+    if (pos.is_draw() || ply >= PLY_MAX - 1)
         return VALUE_DRAW;
 
-    if (ply >= PLY_MAX - 1)
-        return pos.is_check() ? quick_evaluate(pos) : evaluate(pos, ei, threadID);
-
     // Transposition table lookup. At PV nodes, we don't use the TT for
     // pruning, but only for move ordering.
     tte = TT.retrieve(pos.get_key());
@@ -1679,7 +1671,6 @@ namespace {
     }
 
     isCheck = pos.is_check();
-    ei.futilityMargin = Value(0); // Manually initialize futilityMargin
 
     // Evaluate the position statically
     if (isCheck)
@@ -1826,7 +1817,6 @@ namespace {
                               && !isCheck;
 
     const int FutilityMoveCountMargin = 3 + (1 << (3 * int(sp->depth) / 8));
-    const int FutilityValueMargin = 112 * bitScanReverse32(int(sp->depth) * int(sp->depth) / 2);
 
     while (    sp->bestValue < sp->beta
            && !thread_should_stop(threadID)
@@ -1860,12 +1850,6 @@ namespace {
               continue;
 
           // Value based pruning
-          if (sp->futilityValue == VALUE_NONE)
-          {
-              EvalInfo ei;
-              sp->futilityValue = evaluate(pos, ei, threadID) + FutilityValueMargin;
-          }
-
           Value futilityValueScaled = sp->futilityValue - moveCount * IncrementalFutilityMargin;
 
           if (futilityValueScaled < sp->beta)