This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]