]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Remove unused failHighPly1 flag
[stockfish] / src / search.cpp
index ff791b8ea903e85649c99ee651661f26e31f38f0..e379ecfdcce197e960ce9a6343c69cf0cebd99d3 100644 (file)
@@ -209,7 +209,7 @@ namespace {
   int MaxSearchTime, AbsoluteMaxSearchTime, ExtraSearchTime, ExactMaxTime;
   bool UseTimeManagement, InfiniteSearch, PonderSearch, StopOnPonderhit;
   bool AbortSearch, Quit;
-  bool FailHigh, FailLow, Problem;
+  bool FailLow, Problem;
 
   // Show current line?
   bool ShowCurrentLine;
@@ -276,7 +276,6 @@ namespace {
   void update_killers(Move m, SearchStack& ss);
   void update_gains(const Position& pos, Move move, Value before, Value after);
 
-  bool fail_high_ply_1();
   int current_search_time();
   int nps();
   void poll();
@@ -352,7 +351,7 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
 
   // Initialize global search variables
   Idle = StopOnPonderhit = AbortSearch = Quit = false;
-  FailHigh = FailLow = Problem = false;
+  FailLow = Problem = false;
   NodesSincePoll = 0;
   SearchStartTime = get_system_time();
   ExactMaxTime = maxTime;
@@ -380,7 +379,6 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move,
   for (int i = 0; i < THREAD_MAX; i++)
   {
       Threads[i].nodes = 0ULL;
-      Threads[i].failHighPly1 = false;
   }
 
   if (button_was_pressed("New Game"))
@@ -896,7 +894,6 @@ namespace {
             }
 
             RootMoveNumber = i + 1;
-            FailHigh = false;
 
             // Save the current node count before the move is searched
             nodes = nodes_searched();
@@ -970,14 +967,7 @@ namespace {
                         value = -search(pos, ss, -alpha, newDepth, 1, true, 0);
 
                         if (value > alpha)
-                        {
-                            // Fail high! Set the boolean variable FailHigh to true, and
-                            // re-search the move using a PV search. The variable FailHigh
-                            // is used for time managment: We try to avoid aborting the
-                            // search prematurely during a fail high research.
-                            FailHigh = true;
                             value = -search_pv(pos, ss, -beta, -alpha, newDepth, 1, 0);
-                        }
                     }
                 }
 
@@ -1284,19 +1274,7 @@ namespace {
             ss[ply].reduction = Depth(0);
             value = -search(pos, ss, -alpha, newDepth, ply+1, true, threadID);
             if (value > alpha && value < beta)
-            {
-                // When the search fails high at ply 1 while searching the first
-                // move at the root, set the flag failHighPly1. This is used for
-                // time managment:  We don't want to stop the search early in
-                // such cases, because resolving the fail high at ply 1 could
-                // result in a big drop in score at the root.
-                if (ply == 1 && RootMoveNumber == 1)
-                    Threads[threadID].failHighPly1 = true;
-
-                // A fail high occurred. Re-search at full window (pv search)
                 value = -search_pv(pos, ss, -beta, -alpha, newDepth, ply+1, threadID);
-                Threads[threadID].failHighPly1 = false;
-          }
         }
       }
       pos.undo_move(move);
@@ -2106,14 +2084,6 @@ namespace {
 
           if (value > localAlpha && value < sp->beta)
           {
-              // When the search fails high at ply 1 while searching the first
-              // move at the root, set the flag failHighPly1. This is used for
-              // time managment: We don't want to stop the search early in
-              // such cases, because resolving the fail high at ply 1 could
-              // result in a big drop in score at the root.
-              if (sp->ply == 1 && RootMoveNumber == 1)
-                  Threads[threadID].failHighPly1 = true;
-
               // If another thread has failed high then sp->alpha has been increased
               // to be higher or equal then beta, if so, avoid to start a PV search.
               localAlpha = sp->alpha;
@@ -2121,8 +2091,6 @@ namespace {
                   value = -search_pv(pos, ss, -sp->beta, -localAlpha, newDepth, sp->ply+1, threadID);
               else
                   assert(thread_should_stop(threadID));
-
-              Threads[threadID].failHighPly1 = false;
         }
       }
       pos.undo_move(move);
@@ -2668,20 +2636,6 @@ namespace {
   }
 
 
-  // fail_high_ply_1() checks if some thread is currently resolving a fail
-  // high at ply 1 at the node below the first root node.  This information
-  // is used for time management.
-
-  bool fail_high_ply_1() {
-
-    for (int i = 0; i < ActiveThreads; i++)
-        if (Threads[i].failHighPly1)
-            return true;
-
-    return false;
-  }
-
-
   // current_search_time() returns the number of milliseconds which have passed
   // since the beginning of the current search.
 
@@ -2771,15 +2725,8 @@ namespace {
                            && !FailLow
                            &&  t > MaxSearchTime + ExtraSearchTime;
 
-    bool noProblemFound =   !FailHigh
-                         && !FailLow
-                         && !fail_high_ply_1()
-                         && !Problem
-                         &&  t > 6 * (MaxSearchTime + ExtraSearchTime);
-
     bool noMoreTime =   t > AbsoluteMaxSearchTime
-                     || stillAtFirstMove //FIXME: We are not checking any problem flags, BUG?
-                     || noProblemFound;
+                     || stillAtFirstMove;
 
     if (   (Iteration >= 3 && UseTimeManagement && noMoreTime)
         || (ExactMaxTime && t >= ExactMaxTime)
@@ -2801,15 +2748,8 @@ namespace {
                            && !FailLow
                            &&  t > MaxSearchTime + ExtraSearchTime;
 
-    bool noProblemFound =   !FailHigh
-                         && !FailLow
-                         && !fail_high_ply_1()
-                         && !Problem
-                         &&  t > 6 * (MaxSearchTime + ExtraSearchTime);
-
     bool noMoreTime =   t > AbsoluteMaxSearchTime
-                     || stillAtFirstMove
-                     || noProblemFound;
+                     || stillAtFirstMove;
 
     if (Iteration >= 3 && UseTimeManagement && (noMoreTime || StopOnPonderhit))
         AbortSearch = true;