Score enum should be at least 32 bits
authorMarco Costalba <mcostalba@gmail.com>
Sun, 27 Dec 2009 18:45:19 +0000 (19:45 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 27 Dec 2009 18:45:19 +0000 (19:45 +0100)
The compiler is allowed to chose the size of an enum variable
based on the values it is expected to store. So force the compiler
to use at least a 32 bit integer type for the Score.

MSVC and Intel do not change, while gcc under -O3 is affected
by this change.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/value.h

index d54f81961174472cc7d8fde5b624ef18d3b9abde..fec6516a4c8c4014427afeeb3cf22d6b9941d865 100644 (file)
@@ -56,7 +56,7 @@ enum Value {
 /// integer (enum), first LSB 16 bits are used to store endgame
 /// value, while upper bits are used for midgame value.
 
-enum Score {};
+enum Score { ENSURE_32_BIT_SIZE = 1 << 31 };
 
 inline Value eg_value(Score s) { return Value(int16_t(s & 0xffff)); }
 inline Value mg_value(Score s) { return Value((int(s) + 32768) >> 16); }