This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c/5052: gcc 3.0.3 reports an ICE in instantiate_virtual_regs_1, at function.c:390
- From: drkirkby at ntlworld dot com
- To: gcc-gnats at gcc dot gnu dot org
- Date: Sat, 8 Dec 2001 22:27:07 GMT
- Subject: c/5052: gcc 3.0.3 reports an ICE in instantiate_virtual_regs_1, at function.c:390
>Number: 5052
>Category: c
>Synopsis: gcc 3.0.3 reports an ICE in instantiate_virtual_regs_1, at function.c:3904
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Sat Dec 08 14:36:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Dr. David Kirkby
>Release: 3.0.2
>Organization:
>Environment:
System: SunOS parrot 5.8 Generic_108528-12 sun4m sparc SUNW,SPARCstation-20
Architecture: sun4
host: sparc-sun-solaris2.8
build: sparc-sun-solaris2.8
target: sparc-sun-solaris2.8
configured with: configure --prefix=/usr/local/stow/gcc-3.0.2
>Description:
While trying to compile a chess programme (crafty version 17.9), gcc 3.0.2 generates
an internal compiler error.
searchr.c:319: Internal compiler error in instantiate_virtual_regs_1, at function.c:3904
The same programme compiles okay under gcc 2.95.3.
>How-To-Repeat:
gcc -DSUN -c searchr.c
searchr.c includes several header files, so I have just included below the
file searchr.i,
# 1 "searchr.c"
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 1 3
# 14 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdarg.h" 1 3
# 43 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 15 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 2 3
# 34 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
#pragma ident "@(#)stdio.h 1.78 99/12/08 SMI"
# 1 "/usr/include/iso/stdio_iso.h" 1 3
# 32 "/usr/include/iso/stdio_iso.h" 3
#pragma ident "@(#)stdio_iso.h 1.2 99/10/25 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 13 "/usr/include/sys/feature_tests.h" 3
#pragma ident "@(#)feature_tests.h 1.18 99/07/26 SMI"
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 9 "/usr/include/sys/isa_defs.h" 3
#pragma ident "@(#)isa_defs.h 1.20 99/05/04 SMI"
# 16 "/usr/include/sys/feature_tests.h" 2 3
# 36 "/usr/include/iso/stdio_iso.h" 2 3
# 1 "/usr/include/sys/va_list.h" 1 3
# 9 "/usr/include/sys/va_list.h" 3
#pragma ident "@(#)va_list.h 1.12 99/05/04 SMI"
# 26 "/usr/include/sys/va_list.h" 3
typedef void *__va_list;
# 37 "/usr/include/iso/stdio_iso.h" 2 3
# 1 "/usr/include/stdio_tag.h" 1 3
# 9 "/usr/include/stdio_tag.h" 3
#pragma ident "@(#)stdio_tag.h 1.3 98/04/20 SMI"
# 21 "/usr/include/stdio_tag.h" 3
typedef struct __FILE __FILE;
# 38 "/usr/include/iso/stdio_iso.h" 2 3
# 1 "/usr/include/stdio_impl.h" 1 3
# 9 "/usr/include/stdio_impl.h" 3
#pragma ident "@(#)stdio_impl.h 1.8 99/06/10 SMI"
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 12 "/usr/include/stdio_impl.h" 2 3
# 22 "/usr/include/stdio_impl.h" 3
typedef int ssize_t;
# 38 "/usr/include/stdio_impl.h" 3
struct __FILE
{
ssize_t _cnt;
unsigned char *_ptr;
unsigned char *_base;
unsigned char _flag;
unsigned char _file;
unsigned __orientation:2;
unsigned __ionolock:1;
unsigned __filler:5;
};
# 39 "/usr/include/iso/stdio_iso.h" 2 3
# 59 "/usr/include/iso/stdio_iso.h" 3
typedef long long __longlong_t;
# 75 "/usr/include/iso/stdio_iso.h" 3
typedef __FILE FILE;
typedef unsigned int size_t;
typedef long fpos_t;
# 147 "/usr/include/iso/stdio_iso.h" 3
extern __FILE __iob[20];
# 164 "/usr/include/iso/stdio_iso.h" 3
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);
extern int fprintf(FILE *, const char *, ...);
extern int fscanf(FILE *, const char *, ...);
extern int printf(const char *, ...);
extern int scanf(const char *, ...);
extern int sprintf(char *, const char *, ...);
extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, __va_list);
extern int vprintf(const char *, __va_list);
extern int vsprintf(char *, const char *, __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);
extern int getc(FILE *);
extern int putc(int, FILE *);
extern int getchar(void);
extern int putchar(int);
extern char *gets(char *);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);
extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);
extern void perror(const char *);
extern int __filbuf(FILE *);
extern int __flsbuf(int, FILE *);
# 37 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 2 3
# 105 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
typedef long off_t;
typedef __longlong_t off64_t;
# 123 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
typedef __longlong_t fpos64_t;
# 151 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern unsigned char _sibuf[], _sobuf[];
# 193 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern unsigned char *_bufendtab[];
extern FILE *_lastbuf;
# 229 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);
extern int snprintf(char *, size_t, const char *, ...);
extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list);
# 250 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 276 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern FILE *popen(const char *, const char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getopt(int, char *const *, const char *);
extern int getsubopt(char **, char *const *, char **);
extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);
extern int fseeko(FILE *, off_t, int);
extern off_t ftello(FILE *);
# 305 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern FILE *fopen64(const char *, const char *);
extern FILE *freopen64(const char *, const char *, FILE *);
extern FILE *tmpfile64(void);
extern int fgetpos64(FILE *, fpos64_t *);
extern int fsetpos64(FILE *, const fpos64_t *);
extern int fseeko64(FILE *, off64_t, int);
extern off64_t ftello64(FILE *);
# 2 "searchr.c" 2
# 1 "/usr/include/stdlib.h" 1 3
# 16 "/usr/include/stdlib.h" 3
#pragma ident "@(#)stdlib.h 1.47 99/11/03 SMI"
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 1 3
# 37 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 3
#pragma ident "@(#)stdlib_iso.h 1.2 99/12/21 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 40 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 2 3
extern unsigned char __ctype[];
# 57 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 3
typedef struct {
int quot;
int rem;
} div_t;
typedef struct {
long quot;
long rem;
} ldiv_t;
# 96 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 3
typedef long wchar_t;
extern void abort(void);
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
int (*)(const void *, const void *));
extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int);
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern void qsort(void *, size_t, size_t,
int (*)(const void *, const void *));
extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
# 19 "/usr/include/stdlib.h" 2 3
# 68 "/usr/include/stdlib.h" 3
typedef struct {
long long quot;
long long rem;
} lldiv_t;
typedef long uid_t;
# 112 "/usr/include/stdlib.h" 3
extern void _exithandle(void);
extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(char *);
extern void setkey(const char *);
# 144 "/usr/include/stdlib.h" 3
extern void swab(const char *, char *, ssize_t);
extern int mkstemp(char *);
extern int mkstemp64(char *);
extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);
extern int dup2(int, int);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);
extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern char *lltostr(long long, char *);
extern long long strtoll(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern char *ulltostr(unsigned long long, char *);
# 3 "searchr.c" 2
# 1 "/usr/include/string.h" 1 3
# 16 "/usr/include/string.h" 3
#pragma ident "@(#)string.h 1.24 99/08/10 SMI"
# 1 "/usr/include/iso/string_iso.h" 1 3
# 28 "/usr/include/iso/string_iso.h" 3
#pragma ident "@(#)string_iso.h 1.2 99/11/09 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 32 "/usr/include/iso/string_iso.h" 2 3
# 60 "/usr/include/iso/string_iso.h" 3
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
# 112 "/usr/include/iso/string_iso.h" 3
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
# 19 "/usr/include/string.h" 2 3
# 63 "/usr/include/string.h" 3
extern void *memccpy(void *, const void *, int, size_t);
extern char *strsignal(int);
extern int ffs(int);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);
extern char *strdup(const char *);
# 4 "searchr.c" 2
# 1 "chess.h" 1
# 179 "chess.h"
# 1 "lock.h" 1
# 180 "chess.h" 2
# 217 "chess.h"
typedef unsigned long long BITBOARD;
# 1 "/usr/include/time.h" 1 3
# 16 "/usr/include/time.h" 3
#pragma ident "@(#)time.h 1.39 99/08/10 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 19 "/usr/include/time.h" 2 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 1 3
# 25 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
#pragma ident "@(#)types.h 1.66 00/02/14 SMI"
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 28 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 29 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 1 "/usr/include/sys/machtypes.h" 1 3
# 16 "/usr/include/sys/machtypes.h" 3
#pragma ident "@(#)machtypes.h 1.13 99/05/04 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 19 "/usr/include/sys/machtypes.h" 2 3
# 33 "/usr/include/sys/machtypes.h" 3
typedef struct _label_t { long val[2]; } label_t;
typedef unsigned char volatile int;
# 34 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 45 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
# 1 "/usr/include/sys/int_types.h" 1 3
# 9 "/usr/include/sys/int_types.h" 3
#pragma ident "@(#)int_types.h 1.6 97/08/20 SMI"
# 42 "/usr/include/sys/int_types.h" 3
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 43 "/usr/include/sys/int_types.h" 2 3
# 62 "/usr/include/sys/int_types.h" 3
typedef char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef long long int64_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
# 94 "/usr/include/sys/int_types.h" 3
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
# 110 "/usr/include/sys/int_types.h" 3
typedef int intptr_t;
typedef unsigned int uintptr_t;
typedef char int_least8_t;
typedef short int_least16_t;
typedef int int_least32_t;
typedef long long int_least64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;
typedef unsigned long long uint_least64_t;
# 46 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 62 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
# 85 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long t_scalar_t;
typedef unsigned long t_uscalar_t;
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;
typedef char *caddr_t;
typedef long daddr_t;
typedef short cnt_t;
typedef ulong_t paddr_t;
# 118 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef int ptrdiff_t;
# 127 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ulong_t pfn_t;
typedef ulong_t pgcnt_t;
typedef long spgcnt_t;
typedef uchar_t use_t;
typedef short sysid_t;
typedef short index_t;
typedef void *timeout_id_t;
typedef void *bufcall_id_t;
# 165 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ulong_t ino_t;
typedef long blkcnt_t;
typedef ulong_t fsblkcnt_t;
typedef ulong_t fsfilcnt_t;
# 183 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef u_longlong_t ino64_t;
typedef longlong_t blkcnt64_t;
typedef u_longlong_t fsblkcnt64_t;
typedef u_longlong_t fsfilcnt64_t;
typedef long blksize_t;
typedef enum { B_FALSE, B_TRUE } boolean_t;
# 210 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef int64_t pad64_t;
typedef uint64_t upad64_t;
# 223 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef longlong_t diskaddr_t;
# 244 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef union {
offset_t _f;
struct {
int32_t _u;
int32_t _l;
} _p;
} lloff_t;
# 264 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef union {
diskaddr_t _f;
struct {
int32_t _u;
int32_t _l;
} _p;
} lldaddr_t;
typedef uint_t k_fltset_t;
# 287 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long id_t;
typedef uint_t useconds_t;
typedef long suseconds_t;
# 308 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ulong_t major_t;
typedef ulong_t minor_t;
typedef short pri_t;
# 328 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ushort_t o_mode_t;
typedef short o_dev_t;
typedef ushort_t o_uid_t;
typedef o_uid_t o_gid_t;
typedef short o_nlink_t;
typedef short o_pid_t;
typedef ushort_t o_ino_t;
typedef int key_t;
typedef ulong_t mode_t;
# 356 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef uid_t gid_t;
typedef id_t taskid_t;
typedef id_t projid_t;
typedef unsigned int pthread_t;
typedef unsigned int pthread_key_t;
typedef struct _pthread_mutex {
struct {
uint16_t __pthread_mutex_flag1;
uint8_t __pthread_mutex_flag2;
uint8_t __pthread_mutex_ceiling;
uint32_t __pthread_mutex_type;
} __pthread_mutex_flags;
union {
struct {
uint8_t __pthread_mutex_pad[8];
} __pthread_mutex_lock64;
upad64_t __pthread_mutex_owner64;
} __pthread_mutex_lock;
upad64_t __pthread_mutex_data;
} pthread_mutex_t;
typedef struct _pthread_cond {
struct {
uint8_t __pthread_cond_flag[4];
uint32_t __pthread_cond_type;
} __pthread_cond_flags;
upad64_t __pthread_cond_data;
} pthread_cond_t;
typedef struct _pthread_rwlock {
int32_t __pthread_rwlock_readers;
uint16_t __pthread_rwlock_type;
uint16_t __pthread_rwlock_magic;
upad64_t __pthread_rwlock_pad1[3];
upad64_t __pthread_rwlock_pad2[2];
upad64_t __pthread_rwlock_pad3[2];
} pthread_rwlock_t;
typedef struct _pthread_attr {
void *__pthread_attrp;
} pthread_attr_t;
typedef struct _pthread_mutexattr {
void *__pthread_mutexattrp;
} pthread_mutexattr_t;
typedef struct _pthread_condattr {
void *__pthread_condattrp;
} pthread_condattr_t;
typedef struct _once {
upad64_t __pthread_once_pad[4];
} pthread_once_t;
typedef struct _pthread_rwlockattr {
void *__pthread_rwlockattrp;
} pthread_rwlockattr_t;
typedef ulong_t dev_t;
typedef ulong_t nlink_t;
typedef long pid_t;
# 481 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long time_t;
typedef long clock_t;
typedef int clockid_t;
typedef int timer_t;
typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 557 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef struct _quad { int val[2]; } quad_t;
typedef quad_t quad;
# 1 "/usr/include/sys/select.h" 1 3
# 12 "/usr/include/sys/select.h" 3
#pragma ident "@(#)select.h 1.16 98/04/27 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 15 "/usr/include/sys/select.h" 2 3
# 1 "/usr/include/sys/time.h" 1 3
# 22 "/usr/include/sys/time.h" 3
#pragma ident "@(#)time.h 2.66 01/01/17 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 25 "/usr/include/sys/time.h" 2 3
# 49 "/usr/include/sys/time.h" 3
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
# 82 "/usr/include/sys/time.h" 3
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
# 100 "/usr/include/sys/time.h" 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 1 3
# 101 "/usr/include/sys/time.h" 2 3
# 155 "/usr/include/sys/time.h" 3
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
# 203 "/usr/include/sys/time.h" 3
typedef longlong_t hrtime_t;
# 320 "/usr/include/sys/time.h" 3
int adjtime(struct timeval *, struct timeval *);
# 331 "/usr/include/sys/time.h" 3
int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);
int setitimer(int, struct itimerval *, struct itimerval *);
# 369 "/usr/include/sys/time.h" 3
int settimeofday(struct timeval *, void *);
hrtime_t gethrtime(void);
hrtime_t gethrvtime(void);
# 389 "/usr/include/sys/time.h" 3
int gettimeofday(struct timeval *, void *);
# 410 "/usr/include/sys/time.h" 3
# 1 "/usr/include/time.h" 1 3
# 411 "/usr/include/sys/time.h" 2 3
# 423 "/usr/include/sys/time.h" 3
# 1 "/usr/include/sys/select.h" 1 3
# 424 "/usr/include/sys/time.h" 2 3
# 18 "/usr/include/sys/select.h" 2 3
# 45 "/usr/include/sys/select.h" 3
typedef long fd_mask;
typedef long fds_mask;
# 73 "/usr/include/sys/select.h" 3
typedef struct fd_set {
long fds_bits[(((1024)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
} fd_set;
# 97 "/usr/include/sys/select.h" 3
extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 570 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 20 "/usr/include/time.h" 2 3
# 1 "/usr/include/iso/time_iso.h" 1 3
# 28 "/usr/include/iso/time_iso.h" 3
#pragma ident "@(#)time_iso.h 1.1 99/08/09 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 31 "/usr/include/iso/time_iso.h" 2 3
# 69 "/usr/include/iso/time_iso.h" 3
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
};
extern char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);
# 21 "/usr/include/time.h" 2 3
# 67 "/usr/include/time.h" 3
extern char *strptime(const char *, const char *, struct tm *);
# 83 "/usr/include/time.h" 3
# 1 "/usr/include/sys/time_impl.h" 1 3
# 15 "/usr/include/sys/time_impl.h" 3
#pragma ident "@(#)time_impl.h 1.5 99/10/05 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 18 "/usr/include/sys/time_impl.h" 2 3
# 36 "/usr/include/sys/time_impl.h" 3
typedef struct timespec {
time_t tv_sec;
long tv_nsec;
} timespec_t;
# 60 "/usr/include/sys/time_impl.h" 3
typedef struct timespec timestruc_t;
# 79 "/usr/include/sys/time_impl.h" 3
typedef struct itimerspec {
struct timespec it_interval;
struct timespec it_value;
} itimerspec_t;
# 84 "/usr/include/time.h" 2 3
# 98 "/usr/include/time.h" 3
union sigval {
int sival_int;
void *sival_ptr;
};
struct sigevent {
int sigev_notify;
int sigev_signo;
union sigval sigev_value;
void (*sigev_notify_function)(union sigval);
pthread_attr_t *sigev_notify_attributes;
int __sigev_pad2;
};
extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);
extern int timer_create(clockid_t, struct sigevent *, timer_t *);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *,
struct itimerspec *);
extern int nanosleep(const struct timespec *, struct timespec *);
extern void tzset(void);
extern char *tzname[2];
extern long _sysconf(int);
extern long timezone;
extern int daylight;
extern int cftime(char *, char *, const time_t *);
extern int ascftime(char *, const char *, const struct tm *);
extern long altzone;
extern struct tm *getdate(const char *);
extern int getdate_err;
# 222 "chess.h" 2
typedef enum { A1,B1,C1,D1,E1,F1,G1,H1,
A2,B2,C2,D2,E2,F2,G2,H2,
A3,B3,C3,D3,E3,F3,G3,H3,
A4,B4,C4,D4,E4,F4,G4,H4,
A5,B5,C5,D5,E5,F5,G5,H5,
A6,B6,C6,D6,E6,F6,G6,H6,
A7,B7,C7,D7,E7,F7,G7,H7,
A8,B8,C8,D8,E8,F8,G8,H8,
BAD_SQUARE } squares;
typedef enum {FILEA, FILEB, FILEC, FILED, FILEE, FILEF, FILEG, FILEH} files;
typedef enum {RANK1, RANK2, RANK3, RANK4, RANK5, RANK6, RANK7, RANK8} ranks;
typedef enum {none=0, pawn=1, knight=2, king=3,
bishop=5, rook=6, queen=7} PIECE;
typedef enum {empty_v=0, pawn_v=1, knight_v=3,
bishop_v=3, rook_v=5, queen_v=9} PIECE_V;
typedef enum {no_extension=0, check_extension=1, recapture_extension=2,
passed_pawn_extension=4, one_reply_extension=8} EXTENSIONS;
typedef enum {cpu, elapsed, microseconds} TIME_TYPE;
typedef enum {think=1, puzzle=2, book=3, annotate=4} SEARCH_TYPE;
typedef enum {normal_mode, tournament_mode} PLAYING_MODE;
typedef enum {crafty, opponent} PLAYER;
typedef enum {book_learning=1, position_learning=2,
result_learning=4} LEARNING_MODE;
typedef struct {
unsigned char enpassant_target;
signed char w_castle;
signed char b_castle;
unsigned char rule_50_moves;
} SEARCH_POSITION;
typedef struct {
int move1;
int move2;
} KILLER;
typedef struct {
BITBOARD w_occupied;
BITBOARD b_occupied;
BITBOARD occupied_rl90;
BITBOARD occupied_rl45;
BITBOARD occupied_rr45;
BITBOARD rooks_queens;
BITBOARD bishops_queens;
BITBOARD w_pawn;
BITBOARD w_knight;
BITBOARD w_bishop;
BITBOARD w_rook;
BITBOARD w_queen;
BITBOARD b_pawn;
BITBOARD b_knight;
BITBOARD b_bishop;
BITBOARD b_rook;
BITBOARD b_queen;
BITBOARD hash_key;
unsigned int pawn_hash_key;
int material_evaluation;
signed char white_king;
signed char black_king;
signed char board[64];
signed char white_pieces;
signed char white_minors;
signed char white_majors;
signed char white_pawns;
signed char black_pieces;
signed char black_minors;
signed char black_majors;
signed char black_pawns;
signed char total_pieces;
} POSITION;
typedef struct {
BITBOARD word1;
BITBOARD word2;
} HASH_ENTRY;
typedef struct {
unsigned int key;
short p_score;
unsigned char passed_b;
unsigned char black_defects_k;
unsigned char black_defects_q;
unsigned char passed_w;
unsigned char white_defects_k;
unsigned char white_defects_q;
unsigned char protected;
unsigned char outside;
unsigned char candidates_w;
unsigned char candidates_b;
} PAWN_HASH_ENTRY;
typedef struct {
int path[65];
unsigned char pathh;
unsigned char pathl;
unsigned char pathd;
} PATH;
typedef struct {
int phase;
int remaining;
int *last;
} NEXT_MOVE;
typedef struct {
BITBOARD nodes;
int move;
unsigned char status;
} ROOT_MOVE;
typedef struct {
BITBOARD position;
unsigned int status_played;
float learn;
int CAP_score;
} BOOK_POSITION;
typedef struct {
unsigned char position[8];
unsigned char status;
unsigned char percent_play;
} BB_POSITION;
struct tree {
POSITION pos;
PAWN_HASH_ENTRY pawn_score;
NEXT_MOVE next_status[65];
BITBOARD save_hash_key[65 +2];
BITBOARD replist_w[128];
BITBOARD replist_b[128];
BITBOARD *rephead_w;
BITBOARD *rephead_b;
BITBOARD all_pawns;
SEARCH_POSITION position[65 +2];
unsigned int save_pawn_hash_key[65 +2];
int current_move[65];
int hash_move[65];
int *last[65];
PATH pv[65];
unsigned int nodes_searched;
unsigned int fail_high;
unsigned int fail_high_first;
unsigned int evaluations;
unsigned int transposition_probes;
unsigned int transposition_hits;
unsigned int pawn_probes;
unsigned int pawn_hits;
unsigned int egtb_probes;
unsigned int egtb_probes_successful;
unsigned int check_extensions_done;
unsigned int recapture_extensions_done;
unsigned int passed_pawn_extensions_done;
unsigned int one_reply_extensions_done;
unsigned int threat_extensions_done;
KILLER killers[65];
int move_list[5120];
int sort_value[256];
signed char in_check[65];
signed char extended_reason[65];
signed char phase[65];
int search_value;
int w_safety, b_safety;
int w_kingsq, b_kingsq;
int endgame;
int root_move;
volatile int lock;
int thread_id;
volatile char stop;
volatile char done;
struct tree *volatile siblings[1], *parent;
volatile int nprocs;
int alpha;
int beta;
int value;
int wtm;
int depth;
int ply;
int threat;
int used;
};
typedef struct tree TREE;
# 493 "chess.h"
BITBOARD Mask(int);
int PopCnt(BITBOARD);
int FirstOne(BITBOARD);
int LastOne(BITBOARD);
void Analyze();
void Annotate();
void AnnotateHeaderHTML(char*, FILE*);
void AnnotateFooterHTML(FILE*);
void AnnotatePositionHTML(TREE*, int, FILE*);
char *AnnotateValueToNAG(int, int, int);
int Attacked(TREE*, int, int);
BITBOARD AttacksFrom(TREE*, int, int);
BITBOARD AttacksTo(TREE*, int);
void Bench(void);
int Book(TREE*,int,int);
int BookMask(char*);
int BookPonderMove(TREE*,int);
void BookUp(TREE*, char*, int, char**);
void BookSort(BB_POSITION*, int, int);
int BookUpCompare(const void *, const void *);
BB_POSITION BookUpNextPosition(int, int);
int CheckInput(void);
void ClearHashTableScores(void);
void ComputeAttacksAndMobility(void);
void CopyFromSMP(TREE*, TREE*);
TREE* CopyToSMP(TREE*);
void DelayTime(int);
void DGTInit(int,char**);
int DGTCheckInput(void);
void DGTRead(void);
void DisplayBitBoard(BITBOARD);
void DisplayChessBoard(FILE*, POSITION);
char* DisplayEvaluation(int);
char* DisplayEvaluationWhisper(int);
void DisplayFT(int, int, int);
char* DisplayHHMM(unsigned int);
void DisplayPieceBoards(signed char*, signed char*);
void DisplayPV(TREE*, int, int, int, int, PATH*);
char* DisplaySQ(unsigned int);
char* DisplayTime(unsigned int);
char* DisplayTimeWhisper(unsigned int);
void DisplayTreeState(TREE*, int, int, int);
void Display2BitBoards(BITBOARD, BITBOARD);
void DisplayChessMove(char*, int);
int Drawn(TREE*, int);
void Edit(void);
int EGTBProbe(TREE*, int, int, int*);
void EGTBPV(TREE*, int);
int EnPrise(int, int);
int Evaluate(TREE*, int, int, int, int);
int EvaluateDevelopmentB(TREE*, int);
int EvaluateDevelopmentW(TREE*, int);
int EvaluateDraws(TREE*);
int EvaluateKingSafety(TREE*, int);
int EvaluateMate(TREE*);
int EvaluateMaterial(TREE*);
int EvaluatePassedPawns(TREE*);
int EvaluatePassedPawnRaces(TREE*, int);
int EvaluatePawns(TREE*);
void EVTest(char *);
int FindBlockID(TREE*);
char* FormatPV(TREE*,int,PATH);
int FTbSetCacheSize(void*,unsigned long);
int* GenerateCaptures(TREE*, int, int, int*);
int* GenerateCheckEvasions(TREE*, int, int, int*);
int* GenerateNonCaptures(TREE*, int, int, int*);
int HashProbe(TREE*, int, int, int, int*, int*, int*);
void HashStore(TREE*, int, int, int, int, int, int);
void HashStorePV(TREE*, int,int);
int HasOpposition(int, int, int);
void History(TREE*, int, int, int, int);
int IInitializeTb(char*);
void Initialize(int);
void InitializeAttackBoards(void);
void InitializeChessBoard(SEARCH_POSITION*);
int InitializeFindAttacks(int, int, int);
void InitializeHashTables(void);
void InitializeHistoryKillers(void);
void InitializeMasks(void);
void InitializePawnMasks(void);
void InitializePieceMasks(void);
void InitializeRandomHash(void);
void InitializeSMP(void);
void InitializeZeroMasks(void);
int InputMove(TREE*, char*, int, int, int, int);
int InputMoveICS(TREE*, char*, int, int, int, int);
BITBOARD InterposeSquares(int, int, int);
void Interrupt(int);
int Iterate(int, int, int);
int KingPawnSquare(int, int, int, int);
void LearnBook(TREE*, int, int, int, int, int);
void LearnBookUpdate(TREE*, int, int, float);
int LearnFunction(int, int, int, int);
void LearnImport(TREE*, int, char**);
void LearnImportBook(TREE*, int, char**);
void LearnImportCAP(TREE*, int, char**);
void LearnImportPosition(TREE*, int, char**);
void LearnPosition(TREE*, int, int, int);
void LearnPositionLoad(void);
void LearnResult(TREE*, int);
int LegalMove(TREE*, int, int, int);
void MakeMove(TREE*, int, int, int);
void MakeMoveRoot(TREE*, int, int);
void NewGame(int);
int NextEvasion(TREE*, int, int);
int NextMove(TREE*, int, int);
int NextRootMove(TREE*, int);
int NextRootMoveParallel(void);
char* Normal(void);
int Option(TREE*);
int OptionMatch(char*, char*);
void OptionPerft(TREE*, int, int, int);
char* OutputMove(TREE*, int, int, int);
char* OutputMoveICS(int);
int OutputGood(TREE*, char*, int, int);
int ParseTime(char*);
void Pass(void);
void Phase(void);
int PinnedOnKing(TREE*, int, int);
int Ponder(int);
void PreEvaluate(TREE*,int);
void Print(int, char*, ...);
int Quiesce(TREE*, int, int, int, int);
unsigned int Random32(void);
BITBOARD Random64(void);
int Read(int, char*);
int ReadChessMove(TREE*, FILE*, int, int);
void ReadClear();
unsigned int ReadClock(TIME_TYPE);
int ReadPGN(FILE*,int);
int ReadNextMove(TREE*, char*, int, int);
int ReadParse(char*, char *args[], char*);
int ReadInput();
int RepetitionCheck(TREE*, int, int);
int RepetitionDraw(TREE*, int);
void ResignOrDraw(TREE*, int);
void RestoreGame(void);
char* Reverse(void);
void RootMoveList(int);
int Search(TREE*, int, int, int, int, int, int);
void SearchOutput(TREE*, int, int);
int SearchRoot(TREE*, int, int, int, int);
int SearchSMP(TREE*, int, int, int, int, int, int, int);
void SearchTrace(TREE*, int, int, int, int, int, char*, int);
void SetBoard(int,char**,int);
void SetChessBitBoards(SEARCH_POSITION*);
int StrCnt(char*, char);
int Swap(TREE*, int, int, int);
BITBOARD SwapXray(TREE*, BITBOARD, int, int);
void Test(char *);
int Thread(TREE*);
void* ThreadInit(void*);
void ThreadStop(TREE*);
int ThreadWait(int, TREE*);
void TimeAdjust(int,PLAYER);
int TimeCheck(int);
void TimeSet(int);
void UnMakeMove(TREE*, int, int, int);
int ValidMove(TREE*, int, int, int);
void ValidatePosition(TREE*, int, int, char*);
void Whisper(int, int, int, int, unsigned int, int, int, char*);
# 5 "searchr.c" 2
# 1 "data.h" 1
extern char version[6];
extern PLAYING_MODE mode;
extern int batch_mode;
extern int swindle_mode;
extern int call_flag;
extern int crafty_rating;
extern int opponent_rating;
extern int number_auto_kibitzers;
extern int number_of_computers;
extern int number_of_GMs;
extern int number_of_IMs;
extern int number_of_specials;
extern int number_of_blockers;
extern int time_used;
extern int time_used_opponent;
extern int cpu_time_used;
extern int next_time_check;
extern int total_moves;
extern int initialized;
extern int early_exit;
extern int new_game;
extern char auto_kibitz_list[64][20];
extern char GM_list[512][20];
extern char IM_list[512][20];
extern char computer_list[512][20];
extern char special_list[512][20];
extern char blocker_list[512][20];
extern FILE *input_stream;
extern FILE *book_file;
extern FILE *books_file;
extern FILE *normal_bs_file;
extern FILE *computer_bs_file;
extern FILE *history_file;
extern FILE *log_file;
extern FILE *auto_file;
extern FILE *book_lrn_file;
extern FILE *position_file;
extern FILE *position_lrn_file;
extern int log_id;
extern int output_format;
extern int EGTBlimit;
extern int EGTB_draw;
extern int EGTB_search;
extern int EGTB_use;
extern void *EGTB_cache;
extern int EGTB_cache_size;
extern int EGTB_setup;
extern int DGT_active;
extern int to_dgt;
extern int from_dgt;
extern char whisper_text[512];
extern int whisper_value;
extern int whisper_depth;
extern int last_mate_score;
extern int last_opponent_move;
extern int average_nps;
extern int incheck_depth;
extern int onerep_depth;
extern int pushpp_depth;
extern int recap_depth;
extern int singular_depth;
extern int threat_depth;
extern int pgn_suggested_percent;
extern char pgn_event[32];
extern char pgn_date[32];
extern char pgn_round[32];
extern char pgn_site[32];
extern char pgn_white[64];
extern char pgn_white_elo[32];
extern char pgn_black[64];
extern char pgn_black_elo[32];
extern char pgn_result[32];
extern char log_filename[64];
extern char history_filename[64];
extern int number_of_solutions;
extern int solutions[10];
extern int solution_type;
extern int draw_score[2];
extern int abs_draw_score;
extern int accept_draws;
extern int over;
extern int ics;
extern int auto232;
extern int auto232_delay;
extern int xboard;
extern int whisper;
extern int channel;
extern char channel_title[32];
extern char book_path[128];
extern char log_path[128];
extern char tb_path[128];
extern char rc_path[128];
extern char cmd_buffer[512];
extern char *args[32];
extern char buffer[512];
extern int nargs;
extern int kibitz;
extern int move_number;
extern int wtm;
extern int crafty_is_white;
extern int iteration_depth;
extern int last_search_value;
extern int search_failed_high;
extern int search_failed_low;
extern int largest_positional_score;
extern int root_alpha;
extern int root_beta;
extern int last_root_value;
extern int root_value;
extern int root_wtm;
extern int root_print_ok;
extern ROOT_MOVE root_moves[256];
extern int n_root_moves;
extern int nodes_per_second;
extern int cpu_percent;
extern int opening;
extern int middle_game;
extern int end_game;
extern int analyze_mode;
extern int annotate_mode;
extern int test_mode;
extern int input_status;
extern signed char resign;
extern signed char resign_counter;
extern signed char resign_count;
extern signed char draw_counter;
extern signed char draw_count;
extern char audible_alarm;
extern char hint[512];
extern char book_hint[512];
extern int post;
extern int search_depth;
extern unsigned int search_nodes;
extern int search_move;
extern int easy_move;
extern TIME_TYPE time_type;
extern int time_limit;
extern int absolute_time_limit;
extern int search_time_limit;
extern int nodes_between_time_checks;
extern int burp;
extern int time_abort;
extern signed char pondering;
extern signed char thinking;
extern signed char puzzling;
extern signed char booking;
extern signed char abort_search;
extern int ponder;
extern int ponder_move;
extern int force;
extern int ponder_moves[220];
extern int num_ponder_moves;
extern char initial_position[80];
extern unsigned int opponent_start_time, opponent_end_time;
extern unsigned int program_start_time, program_end_time;
extern unsigned int start_time, end_time;
extern unsigned int elapsed_start, elapsed_end;
extern int predicted;
extern signed char transposition_id;
extern int ansi;
extern int trace_level;
extern int max_threads;
extern int min_thread_depth;
extern int max_thread_group;
extern int split_at_root;
extern int thread_depth;
extern int display_options;
extern unsigned int noise_level;
extern int book_move;
extern int moves_out_of_book;
extern int book_accept_mask;
extern int book_reject_mask;
extern int book_random;
extern float book_weight_freq;
extern float book_weight_eval;
extern float book_weight_learn;
extern float book_weight_CAP;
extern int book_search_trigger;
extern int book_selection_width;
extern int show_book;
extern int learning;
extern int book_learn_eval[10];
extern int book_learn_depth[10];
extern int tc_moves;
extern int tc_time;
extern int tc_time_remaining;
extern int tc_time_remaining_opponent;
extern int tc_moves_remaining;
extern int tc_secondary_moves;
extern int tc_secondary_time;
extern int tc_increment;
extern int tc_sudden_death;
extern int tc_operator_time;
extern int tc_safety_margin;
extern int trojan_check;
extern int computer_opponent;
extern int usage_level;
extern int log_hash;
extern int log_pawn_hash;
extern int hash_table_size;
extern int pawn_hash_table_size;
extern int hash_maska;
extern int hash_maskb;
extern unsigned int pawn_hash_mask;
extern HASH_ENTRY *trans_ref_a;
extern HASH_ENTRY *trans_ref_b;
extern PAWN_HASH_ENTRY *pawn_hash_table;
extern HASH_ENTRY *trans_ref_a_orig;
extern HASH_ENTRY *trans_ref_b_orig;
extern PAWN_HASH_ENTRY *pawn_hash_table_orig;
extern int history_w[4096], history_b[4096];
extern const int p_values[15];
extern PATH last_pv;
extern int last_value;
extern const char xlate[15];
extern const char empty[9];
extern signed char white_outpost[64];
extern signed char black_outpost[64];
extern const char square_color[64];
extern const char connected_passed_pawn_value[8];
extern const int passed_pawn_value[8];
extern const char blockading_passed_pawn_value[8];
extern const char isolated_pawn_value[9];
extern const char isolated_pawn_of_value[9];
extern const char doubled_pawn_value[7];
extern const char pawn_rams_v[9];
extern char pawn_rams[9];
extern const char supported_passer[8];
extern const char reduced_material_passer[20];
extern const char outside_passed[128];
extern const char majority[128];
extern const char temper[64];
extern int temper_b[64], temper_w[64];
extern const char ttemper[64];
extern int king_safety_asymmetry;
extern int king_safety_scale;
extern int king_safety_tropism;
extern int blocked_scale;
extern int pawn_scale;
extern int passed_scale;
extern const char missing[8];
extern const char openf[4];
extern const char hopenf[4];
extern const char king_tropism_n[8];
extern const char king_tropism_b[8];
extern const char king_tropism_r[8];
extern const char king_tropism_at_r[8];
extern const char king_tropism_q[8];
extern const char king_tropism_at_q[8];
extern const signed char king_tropism[128];
extern int tropism[128];
extern signed char pval_w[64];
extern signed char pval_b[64];
extern signed char nval_w[64];
extern signed char nval_b[64];
extern signed char bval_w[64];
extern signed char bval_b[64];
extern signed char rval_w[64];
extern signed char rval_b[64];
extern signed char qval_w[64];
extern signed char qval_b[64];
extern signed char kval_w[64];
extern signed char kval_wn[64];
extern signed char kval_wk[64];
extern signed char kval_wq[64];
extern signed char kval_b[64];
extern signed char kval_bn[64];
extern signed char kval_bk[64];
extern signed char kval_bq[64];
extern signed char king_defects_w[64];
extern signed char king_defects_b[64];
extern const char b_n_mate_dark_squares[64];
extern const char b_n_mate_light_squares[64];
extern const char mate[64];
extern const char push_extensions[64];
extern signed char directions[64][64];
extern BITBOARD w_pawn_attacks[64];
extern BITBOARD b_pawn_attacks[64];
extern BITBOARD knight_attacks[64];
extern BITBOARD bishop_attacks[64];
# 313 "data.h"
extern BITBOARD bishop_attacks_rl45[64][256];
extern BITBOARD bishop_attacks_rr45[64][256];
extern BITBOARD rook_attacks_r0[64][256];
extern BITBOARD rook_attacks_rl90[64][256];
extern int bishop_mobility_rl45[64][256];
extern int bishop_mobility_rr45[64][256];
extern char bishop_shift_rl45[64];
extern char bishop_shift_rr45[64];
extern int rook_mobility_r0[64][256];
extern int rook_mobility_rl90[64][256];
extern BITBOARD rook_attacks[64];
extern POSITION display;
extern BITBOARD queen_attacks[64];
extern BITBOARD king_attacks[64];
extern BITBOARD king_attacks_1[64];
extern BITBOARD king_attacks_2[64];
extern BITBOARD obstructed[64][64];
extern unsigned int w_pawn_random32[64];
extern unsigned int b_pawn_random32[64];
extern BITBOARD w_pawn_random[64];
extern BITBOARD b_pawn_random[64];
extern BITBOARD w_knight_random[64];
extern BITBOARD b_knight_random[64];
extern BITBOARD w_bishop_random[64];
extern BITBOARD b_bishop_random[64];
extern BITBOARD w_rook_random[64];
extern BITBOARD b_rook_random[64];
extern BITBOARD w_queen_random[64];
extern BITBOARD b_queen_random[64];
extern BITBOARD w_king_random[64];
extern BITBOARD b_king_random[64];
extern BITBOARD enpassant_random[65];
extern BITBOARD castle_random_w[2];
extern BITBOARD castle_random_b[2];
extern BITBOARD wtm_random[2];
extern BITBOARD clear_mask[65];
extern BITBOARD clear_mask_rl90[65];
extern BITBOARD clear_mask_rl45[65];
extern BITBOARD clear_mask_rr45[65];
extern BITBOARD set_mask[65];
extern BITBOARD set_mask_rl90[65];
extern BITBOARD set_mask_rl45[65];
extern BITBOARD set_mask_rr45[65];
extern BITBOARD file_mask[8];
extern BITBOARD rank_mask[8];
extern BITBOARD right_side_mask[8];
extern BITBOARD left_side_mask[8];
extern BITBOARD right_side_empty_mask[8];
extern BITBOARD left_side_empty_mask[8];
extern BITBOARD mask_efgh, mask_fgh, mask_abc, mask_abcd;
extern BITBOARD mask_abs7_w, mask_abs7_b;
extern BITBOARD mask_advance_2_w;
extern BITBOARD mask_advance_2_b;
extern BITBOARD mask_left_edge;
extern BITBOARD mask_right_edge;
extern BITBOARD mask_A7H7;
extern BITBOARD mask_A2H2;
extern BITBOARD mask_A3B3;
extern BITBOARD mask_B3C3;
extern BITBOARD mask_F3G3;
extern BITBOARD mask_G3H3;
extern BITBOARD mask_A6B6;
extern BITBOARD mask_B6C6;
extern BITBOARD mask_F6G6;
extern BITBOARD mask_G6H6;
extern BITBOARD mask_white_OO;
extern BITBOARD mask_white_OOO;
extern BITBOARD mask_black_OO;
extern BITBOARD mask_black_OOO;
extern BITBOARD stonewall_white;
extern BITBOARD stonewall_black;
extern BITBOARD closed_white;
extern BITBOARD closed_black;
extern BITBOARD mask_kr_trapped_w[3];
extern BITBOARD mask_qr_trapped_w[3];
extern BITBOARD mask_kr_trapped_b[3];
extern BITBOARD mask_qr_trapped_b[3];
extern BITBOARD good_bishop_kw;
extern BITBOARD good_bishop_qw;
extern BITBOARD good_bishop_kb;
extern BITBOARD good_bishop_qb;
extern BITBOARD light_squares;
extern BITBOARD dark_squares;
extern BITBOARD not_rook_pawns;
extern BITBOARD plus1dir[65];
extern BITBOARD plus7dir[65];
extern BITBOARD plus8dir[65];
extern BITBOARD plus9dir[65];
extern BITBOARD minus1dir[65];
extern BITBOARD minus7dir[65];
extern BITBOARD minus8dir[65];
extern BITBOARD minus9dir[65];
extern BITBOARD mask_eptest[64];
extern BITBOARD mask_1;
extern BITBOARD mask_2;
extern BITBOARD mask_3;
extern BITBOARD mask_8;
extern BITBOARD mask_16;
extern BITBOARD mask_112;
extern BITBOARD mask_120;
extern BITBOARD mask_clear_entry;
extern unsigned char first_ones[65536];
extern unsigned char last_ones[65536];
extern unsigned char first_ones_8bit[256];
extern unsigned char last_ones_8bit[256];
extern unsigned char pop_cnt_8bit[256];
extern unsigned char connected_passed[256];
extern unsigned char file_spread[256];
extern signed char is_outside[256][256];
extern signed char is_outside_c[256][256];
extern BITBOARD mask_pawn_protected_b[64];
extern BITBOARD mask_pawn_protected_w[64];
extern BITBOARD mask_pawn_duo[64];
extern BITBOARD mask_pawn_isolated[64];
extern BITBOARD mask_pawn_passed_w[64];
extern BITBOARD mask_pawn_passed_b[64];
extern BITBOARD mask_no_pawn_attacks_w[64];
extern BITBOARD mask_no_pawn_attacks_b[64];
extern BITBOARD white_minor_pieces;
extern BITBOARD black_minor_pieces;
extern BITBOARD white_pawn_race_wtm[64];
extern BITBOARD white_pawn_race_btm[64];
extern BITBOARD black_pawn_race_wtm[64];
extern BITBOARD black_pawn_race_btm[64];
extern BITBOARD mask_wk_4th, mask_wq_4th, mask_bk_4th, mask_bq_4th;
extern BOOK_POSITION book_buffer[600];
extern BOOK_POSITION books_buffer[600];
extern unsigned int thread_start_time[1];
extern TREE *local[64 +1];
extern TREE *volatile thread[1];
extern volatile int lock_smp, lock_io, lock_root;
extern volatile int smp_idle;
extern volatile int smp_threads;
extern pthread_attr_t pthread_attr;
extern unsigned int parallel_splits;
extern unsigned int parallel_stops;
extern unsigned int max_split_blocks;
extern volatile unsigned int splitting;
extern int cbEGTBCompBytes;
# 6 "searchr.c" 2
# 1 "epdglue.h" 1
# 30 "epdglue.h"
int EGCommandParmCount(char *s);
int EGCommandCheck(char *s);
int EGCommand(char *s);
void EGInit(void);
void EGTerm(void);
# 7 "searchr.c" 2
# 21 "searchr.c"
int SearchRoot(TREE *tree, int alpha, int beta, int wtm, int depth) {
register int first_move=1;
register int initial_alpha, value;
register int extensions, begin_root_nodes;
# 33 "searchr.c"
tree->in_check[2]=0;
tree->extended_reason[2]=no_extension;
initial_alpha=alpha;
RepetitionCheck(tree,1,wtm);
tree->in_check[1]=Attacked(tree, (wtm)?(tree->pos.white_king):(tree->pos.black_king),((wtm)^1));
tree->next_status[1].phase=11;
# 50 "searchr.c"
while ((tree->phase[1]=NextRootMove(tree,wtm))) {
tree->extended_reason[1]=0;
# 64 "searchr.c"
extensions=-60;
if ((((tree->current_move[1])>>12)&7)==pawn &&
push_extensions[(((tree->current_move[1])>>6)&63)]) {
tree->extended_reason[1]|=passed_pawn_extension;
tree->passed_pawn_extensions_done++;
extensions+=pushpp_depth;
}
MakeMove(tree,1,tree->current_move[1],wtm);
# 88 "searchr.c"
if (Attacked(tree, (((wtm)^1))?(tree->pos.white_king):(tree->pos.black_king),((((wtm)^1))^1))) {
tree->in_check[2]=1;
tree->extended_reason[2]=check_extension;
tree->check_extensions_done++;
extensions+=incheck_depth;
}
else {
tree->in_check[2]=0;
tree->extended_reason[2]=no_extension;
}
begin_root_nodes=tree->nodes_searched;
extensions=(((extensions) < (0)) ? (extensions) : (0));
if (first_move) {
if (depth+extensions >= 60)
value=-Search(tree,-beta,-alpha,((wtm)^1),
depth+extensions,2,1);
else
value=-Quiesce(tree,-beta,-alpha,((wtm)^1),2);
if (abort_search) {
UnMakeMove(tree,1,tree->current_move[1],wtm);
return(alpha);
}
first_move=0;
}
else {
if (depth+extensions >= 60)
value=-Search(tree,-alpha-1,-alpha,((wtm)^1),
depth+extensions,2,1);
else
value=-Quiesce(tree,-alpha-1,-alpha,((wtm)^1),2);
if (abort_search) {
UnMakeMove(tree,1,tree->current_move[1],wtm);
return(alpha);
}
if ((value > alpha) && (value < beta)) {
if (depth+extensions >= 60)
value=-Search(tree,-beta,-alpha,((wtm)^1),
depth+extensions,2,1);
else
value=-Quiesce(tree,-beta,-alpha,((wtm)^1),2);
if (abort_search) {
UnMakeMove(tree,1,tree->current_move[1],wtm);
return(alpha);
}
}
}
root_moves[tree->root_move].nodes=tree->nodes_searched-begin_root_nodes;
if (value > alpha) {
SearchOutput(tree,value,beta);
root_value=alpha;
if(value >= beta) {
History(tree,1,depth,wtm,tree->current_move[1]);
UnMakeMove(tree,1,tree->current_move[1],wtm);
return(value);
}
alpha=value;
beta=value+40;
root_beta=beta;
}
root_value=alpha;
UnMakeMove(tree,1,tree->current_move[1],wtm);
if (split_at_root && smp_idle && NextRootMoveParallel()) {
tree->alpha=alpha;
tree->beta=beta;
tree->value=alpha;
tree->wtm=wtm;
tree->ply=1;
tree->depth=depth;
tree->threat=0;
if(Thread(tree)) {
if (abort_search || tree->stop) return(0);
if (CheckInput()) Interrupt(1);
value=tree->search_value;
if (value > alpha) {
if(value >= beta) {
History(tree,1,depth,wtm,tree->current_move[1]);
tree->fail_high++;
return(value);
}
alpha=value;
break;
}
}
}
}
# 191 "searchr.c"
if (abort_search || time_abort) return(0);
if (first_move == 1) {
value=(Attacked(tree, (wtm)?(tree->pos.white_king):(tree->pos.black_king),((wtm)^1))) ? -(32768 -1) : (draw_score[wtm]);
if (value >=alpha && value <beta) {
tree->pv[0].pathl=0;
tree->pv[0].pathh=0;
tree->pv[0].pathd=iteration_depth;
SearchOutput(tree,value,beta);
}
return(value);
}
else {
History(tree,1,depth,wtm,tree->pv[1].path[1]);
return(alpha);
}
}
# 224 "searchr.c"
void SearchOutput(TREE *tree, int value, int bound) {
register int wtm;
int i;
ROOT_MOVE temp_rm;
# 237 "searchr.c"
root_print_ok=root_print_ok || tree->nodes_searched>noise_level ||
abs(value)>32768 -300;
wtm=root_wtm;
if (!abort_search) {
whisper_value=(analyze_mode && !root_wtm) ? -value : value;
whisper_depth=iteration_depth;
for (i=0;i<n_root_moves;i++)
if (tree->current_move[1] == root_moves[i].move) break;
if (i < n_root_moves) {
temp_rm=root_moves[i];
for (;i>0;i--) root_moves[i]=root_moves[i-1];
root_moves[0]=temp_rm;
easy_move=0;
}
end_time=ReadClock(time_type);
# 260 "searchr.c"
if(value < bound) {
UnMakeMove(tree,1,tree->pv[1].path[1],root_wtm);
DisplayPV(tree,6, wtm, end_time-start_time, value, &tree->pv[1]);
MakeMove(tree,1,tree->pv[1].path[1],root_wtm);
}
else {
if (root_print_ok) {
Print(2," %2i %s ++ ",iteration_depth,
DisplayTime(end_time-start_time));
UnMakeMove(tree,1,tree->current_move[1],wtm);
if (display_options&64) Print(2,"%d. ",move_number);
if ((display_options&64) && !wtm) Print(2,"... ");
Print(2,"%s!!\n",OutputMove(tree,tree->current_move[1],1,wtm));
whisper_text[0]=0;
if (display_options&64)
sprintf(whisper_text," %d.",move_number);
if ((display_options&64) && !wtm)
sprintf(whisper_text+strlen(whisper_text)," ...");
sprintf(whisper_text+strlen(whisper_text)," %s!!",
OutputMove(tree,tree->current_move[1],1,wtm));
MakeMove(tree,1,tree->current_move[1],wtm);
Whisper(6,iteration_depth,end_time-start_time,whisper_value,
tree->nodes_searched,-1, tree->egtb_probes_successful,
whisper_text);
}
if (tree->current_move[1] != tree->pv[1].path[1]) {
tree->pv[1].path[1]=tree->current_move[1];
tree->pv[1].pathl=1;
tree->pv[1].pathh=0;
tree->pv[1].pathd=iteration_depth;
}
}
tree->pv[0]=tree->pv[1];
local[0]->pv[0]=tree->pv[1];
}
}
# 306 "searchr.c"
void SearchTrace(TREE *tree, int ply, int depth, int wtm,
int alpha, int beta, char* name, int phase) {
int i;
while(({ volatile int _ret; asm volatile ("xchgw %0,%1" : "=q" (_ret), "=m" (*(&lock_io)) : "m" (*(&lock_io)), "0" (1)); _ret; })) while(lock_io);
for (i=1;i<ply;i++) printf(" ");
printf("%d %s d:%5.2f [%s,",
ply,OutputMove(tree,tree->current_move[ply],ply,wtm),
(float) depth/ (float) 60,DisplayEvaluation(alpha));
printf("%s] n:%d %s(%d)", DisplayEvaluation(beta),
(tree->nodes_searched),name,phase);
if (max_threads > 1) printf(" (t=%d) ",tree->thread_id);
printf("\n");
(({ volatile int _ret; asm volatile ("xchgw %0,%1" : "=q" (_ret), "=m" (*(&lock_io)) : "m" (*(&lock_io)), "0" (0)); _ret; }));
}
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: