mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 10:57:43 +00:00
Better fix for gcc optimization issue
According to the standard, compiler is free to choose the enum type as long as can keep its data. Also cast to short and right shift are implementation defined in case of a signed integer. Normally all the compilers implement this stuff in the "usual" way, but gcc with -O3 and -O2 pushes aggressively the language to its limits to squeeze even the last bit of speed. And this broke our not 100% standard conforming code. The fix is to rewrite the Score enum and the 16 bits word extracting functions in a way that is 100% standard compliant and with no speed regression on gcc and also on the other compilers. Verified it works on all compilers and with equivalent functionality. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
+1
-4
@@ -25,11 +25,8 @@ EXE = stockfish
|
||||
### ==========================================================================
|
||||
### Compiler speed switches for both GCC and ICC. These settings are generally
|
||||
### fast on a broad range of systems, but may be changed experimentally
|
||||
###
|
||||
### NOTE: Some versions of gcc miscompile value.h with -O2 or -O3, this is the
|
||||
### safe setup, try changing to -O3 or -O2 and verify it works for you.
|
||||
### ==========================================================================
|
||||
GCCFLAGS = -O1 -msse
|
||||
GCCFLAGS = -O3 -msse
|
||||
ICCFLAGS = -fast -msse
|
||||
ICCFLAGS-OSX = -fast -mdynamic-no-pic
|
||||
|
||||
|
||||
Reference in New Issue
Block a user