Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ensure ttValue != VALUE_NONE in singular extension search
The assert: assert(ttValue != VALUE_NONE); Could fire for multiple reasons (although is very rare), for instance after an IID we can have ttMove != MOVE_NONE while ttValue is still set at VALUE_NONE. But not only this, actually SMP is a source of corrupted ttValue and anyhow we can detect the condition: ttMove != MOVE_NONE && ttValue == VALUE_NONE even north of IID. Reported by Ronald de Man. It is so rare that bench didn't change. bench: 7710548
- Loading branch information
e8baf2b
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any particular reason that IID doesn't update ttValue anyway?
e8baf2b
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you could do that, but the ttMove is more important, for move ordering. The depth of an IID search will often not be enough to allow the node to become a singularExtensionNode;
Depth d = depth - 2 * ONE_PLY - (PvNode ? DEPTH_ZERO : depth / 4);
in IID and the requirement for Singular Extensions is:
&& tte->depth() >= depth - 3 * ONE_PLY;
But it also would not hurt I think, and in PvNodes the IID would have enough depth.