public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: optimization/4296: Unable to find a register to spill in class `SIREG'.
@ 2001-09-11  3:06 Christoph Breitkopf
  0 siblings, 0 replies; 3+ messages in thread
From: Christoph Breitkopf @ 2001-09-11  3:06 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR optimization/4296; it has been noted by GNATS.

From: Christoph Breitkopf <chr.breitkopf@magrathea.de>
To: gcc-gnats@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: optimization/4296: Unable to find a register to spill in class 
 `SIREG'.
Date: Tue, 11 Sep 2001 11:59:09 +0200

 Dies ist eine mehrteilige Nachricht im MIME-Format.
 --------------D63C264C75F3A0CD4C67E698
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Hello,
 
 gcc-gnats@gcc.gnu.org schrieb:
 > 
 > Thank you very much for your problem report.
 > It has the internal identification `optimization/4296'.
 > The individual assigned to look at your
 > report is: unassigned.
 > 
 > >Category:       optimization
 > >Responsible:    unassigned
 > >Synopsis:       Unable to find a register to spill in class `SIREG'.
 > >Arrival-Date:   Tue Sep 11 02:36:00 PDT 2001
 
 Somehow, my attachment got mangled.
 So here is the preprocessed input.
 --------------D63C264C75F3A0CD4C67E698
 Content-Type: text/plain; charset=us-ascii;
  name="bug.i"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="bug.i"
 
 # 1 "bug.c"
 # 1 "/usr/include/stdlib.h" 1 3
 # 25 "/usr/include/stdlib.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 250 "/usr/include/features.h" 3
 # 1 "/usr/include/sys/cdefs.h" 1 3
 # 251 "/usr/include/features.h" 2 3
 # 278 "/usr/include/features.h" 3
 # 1 "/usr/include/gnu/stubs.h" 1 3
 # 279 "/usr/include/features.h" 2 3
 # 26 "/usr/include/stdlib.h" 2 3
 
 
 
 
 
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 199 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
 typedef unsigned int size_t;
 # 287 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
 typedef long int wchar_t;
 # 34 "/usr/include/stdlib.h" 2 3
 
 
 
 
 
 
 
 typedef struct
   {
     int quot;
     int rem;
   } div_t;
 
 
 
 typedef struct
   {
     long int quot;
     long int rem;
   } ldiv_t;
 # 80 "/usr/include/stdlib.h" 3
 extern size_t __ctype_get_mb_cur_max (void) ;
 
 
 
 extern double atof (__const char *__nptr) ;
 
 extern int atoi (__const char *__nptr) ;
 
 extern long int atol (__const char *__nptr) ;
 
 
 
 __extension__ extern long long int atoll (__const char *__nptr) ;
 
 
 
 extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ;
 # 109 "/usr/include/stdlib.h" 3
 extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
 
 
 extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
 
 
 
 
 
 __extension__
 extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
 
 
 __extension__
 extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
 # 132 "/usr/include/stdlib.h" 3
 __extension__
 extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
 
 
 __extension__
 extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
 # 196 "/usr/include/stdlib.h" 3
 extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ;
 
 
 extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ;
 
 extern long double __strtold_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __group) ;
 
 
 
 
 extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ;
 
 
 
 
 
 extern unsigned long int __strtoul_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) ;
 
 
 
 
 
 
 
 __extension__
 extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ;
 
 
 
 
 
 __extension__
 extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group) ;
 # 242 "/usr/include/stdlib.h" 3
 extern __inline double
 strtod (__const char *__restrict __nptr, char **__restrict __endptr)
 {
   return __strtod_internal (__nptr, __endptr, 0);
 }
 extern __inline long int
 strtol (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
 {
   return __strtol_internal (__nptr, __endptr, __base, 0);
 }
 extern __inline unsigned long int
 strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
          int __base)
 {
   return __strtoul_internal (__nptr, __endptr, __base, 0);
 }
 # 274 "/usr/include/stdlib.h" 3
 __extension__ extern __inline long long int
 strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
 {
   return __strtoll_internal (__nptr, __endptr, __base, 0);
 }
 __extension__ extern __inline unsigned long long int
 strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
          int __base)
 {
   return __strtoull_internal (__nptr, __endptr, __base, 0);
 }
 
 
 
 __extension__ extern __inline long long int
 strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
          int __base)
 {
   return __strtoll_internal (__nptr, __endptr, __base, 0);
 }
 __extension__ extern __inline unsigned long long int
 strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
           int __base)
 {
   return __strtoull_internal (__nptr, __endptr, __base, 0);
 }
 
 
 extern __inline double
 atof (__const char *__nptr)
 {
   return strtod (__nptr, (char **) ((void *)0));
 }
 extern __inline int
 atoi (__const char *__nptr)
 {
   return (int) strtol (__nptr, (char **) ((void *)0), 10);
 }
 extern __inline long int
 atol (__const char *__nptr)
 {
   return strtol (__nptr, (char **) ((void *)0), 10);
 }
 
 
 __extension__ extern __inline long long int
 atoll (__const char *__nptr)
 {
   return strtoll (__nptr, (char **) ((void *)0), 10);
 }
 # 333 "/usr/include/stdlib.h" 3
 extern char *l64a (long int __n) ;
 
 
 extern long int a64l (__const char *__s) ;
 
 
 # 1 "/usr/include/sys/types.h" 1 3
 # 26 "/usr/include/sys/types.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 27 "/usr/include/sys/types.h" 2 3
 
 
 
 # 1 "/usr/include/bits/types.h" 1 3
 # 26 "/usr/include/bits/types.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 27 "/usr/include/bits/types.h" 2 3
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 30 "/usr/include/bits/types.h" 2 3
 
 
 typedef unsigned char __u_char;
 typedef unsigned short __u_short;
 typedef unsigned int __u_int;
 typedef unsigned long __u_long;
 
 __extension__ typedef unsigned long long int __u_quad_t;
 __extension__ typedef long long int __quad_t;
 # 49 "/usr/include/bits/types.h" 3
 typedef signed char __int8_t;
 typedef unsigned char __uint8_t;
 typedef signed short int __int16_t;
 typedef unsigned short int __uint16_t;
 typedef signed int __int32_t;
 typedef unsigned int __uint32_t;
 
 __extension__ typedef signed long long int __int64_t;
 __extension__ typedef unsigned long long int __uint64_t;
 
 typedef __quad_t *__qaddr_t;
 
 typedef __u_quad_t __dev_t;
 typedef __u_int __uid_t;
 typedef __u_int __gid_t;
 typedef __u_long __ino_t;
 typedef __u_int __mode_t;
 typedef __u_int __nlink_t;
 typedef long int __off_t;
 typedef __quad_t __loff_t;
 typedef int __pid_t;
 typedef int __ssize_t;
 typedef long int __rlim_t;
 typedef __quad_t __rlim64_t;
 typedef __u_int __id_t;
 
 typedef struct
   {
     int __val[2];
   } __fsid_t;
 
 
 typedef int __daddr_t;
 typedef char *__caddr_t;
 typedef long int __time_t;
 typedef long int __swblk_t;
 
 typedef long int __clock_t;
 
 
 typedef unsigned long int __fd_mask;
 # 100 "/usr/include/bits/types.h" 3
 typedef struct
   {
 
 
 
 
 
 
     __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
 
 
   } __fd_set;
 
 
 typedef int __key_t;
 
 
 typedef unsigned short int __ipc_pid_t;
 
 
 
 
 
 typedef long int __blkcnt_t;
 typedef __quad_t __blkcnt64_t;
 
 
 typedef __u_long __fsblkcnt_t;
 typedef __u_quad_t __fsblkcnt64_t;
 
 
 typedef __u_long __fsfilcnt_t;
 typedef __u_quad_t __fsfilcnt64_t;
 
 
 typedef __u_long __ino64_t;
 
 
 typedef __loff_t __off64_t;
 
 
 typedef long int __t_scalar_t;
 typedef unsigned long int __t_uscalar_t;
 
 
 typedef int __intptr_t;
 # 31 "/usr/include/sys/types.h" 2 3
 
 
 typedef __u_char u_char;
 typedef __u_short u_short;
 typedef __u_int u_int;
 typedef __u_long u_long;
 typedef __quad_t quad_t;
 typedef __u_quad_t u_quad_t;
 typedef __fsid_t fsid_t;
 
 
 typedef __loff_t loff_t;
 
 
 
 typedef __ino_t ino_t;
 # 58 "/usr/include/sys/types.h" 3
 typedef __dev_t dev_t;
 
 
 
 
 typedef __gid_t gid_t;
 
 
 
 
 typedef __mode_t mode_t;
 
 
 
 
 typedef __nlink_t nlink_t;
 
 
 
 
 typedef __uid_t uid_t;
 
 
 
 
 
 typedef __off_t off_t;
 # 96 "/usr/include/sys/types.h" 3
 typedef __pid_t pid_t;
 
 
 
 
 typedef __id_t id_t;
 
 
 
 typedef __ssize_t ssize_t;
 
 
 
 
 typedef __daddr_t daddr_t;
 typedef __caddr_t caddr_t;
 
 
 
 typedef __key_t key_t;
 
 
 
 
 
 
 # 1 "/usr/include/time.h" 1 3
 # 68 "/usr/include/time.h" 3
 # 1 "/usr/include/bits/types.h" 1 3
 # 69 "/usr/include/time.h" 2 3
 
 
 typedef __time_t time_t;
 # 123 "/usr/include/sys/types.h" 2 3
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 126 "/usr/include/sys/types.h" 2 3
 
 
 
 typedef unsigned long int ulong;
 typedef unsigned short int ushort;
 typedef unsigned int uint;
 # 169 "/usr/include/sys/types.h" 3
 typedef int int8_t __attribute__ ((__mode__ (__QI__)));
 typedef int int16_t __attribute__ ((__mode__ (__HI__)));
 typedef int int32_t __attribute__ ((__mode__ (__SI__)));
 typedef int int64_t __attribute__ ((__mode__ (__DI__)));
 
 
 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
 typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
 typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
 
 typedef int register_t __attribute__ ((__mode__ (__word__)));
 # 191 "/usr/include/sys/types.h" 3
 # 1 "/usr/include/endian.h" 1 3
 # 22 "/usr/include/endian.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 23 "/usr/include/endian.h" 2 3
 # 35 "/usr/include/endian.h" 3
 # 1 "/usr/include/bits/endian.h" 1 3
 # 36 "/usr/include/endian.h" 2 3
 # 192 "/usr/include/sys/types.h" 2 3
 
 
 # 1 "/usr/include/sys/select.h" 1 3
 # 25 "/usr/include/sys/select.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 26 "/usr/include/sys/select.h" 2 3
 
 
 # 1 "/usr/include/bits/types.h" 1 3
 # 29 "/usr/include/sys/select.h" 2 3
 
 
 # 1 "/usr/include/bits/select.h" 1 3
 # 32 "/usr/include/sys/select.h" 2 3
 
 
 # 1 "/usr/include/bits/sigset.h" 1 3
 # 23 "/usr/include/bits/sigset.h" 3
 typedef int __sig_atomic_t;
 
 
 
 
 typedef struct
   {
     unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
   } __sigset_t;
 # 35 "/usr/include/sys/select.h" 2 3
 
 
 
 # 1 "/usr/include/time.h" 1 3
 # 83 "/usr/include/time.h" 3
 struct timespec
   {
     long int tv_sec;
     long int tv_nsec;
   };
 # 39 "/usr/include/sys/select.h" 2 3
 
 
 
 
 
 
 
 struct timeval;
 
 typedef __fd_mask fd_mask;
 
 
 typedef __fd_set fd_set;
 # 74 "/usr/include/sys/select.h" 3
 extern int __select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, struct timeval *__timeout) ;
 
 
 extern int select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, struct timeval *__timeout) ;
 # 195 "/usr/include/sys/types.h" 2 3
 
 
 # 1 "/usr/include/sys/sysmacros.h" 1 3
 # 198 "/usr/include/sys/types.h" 2 3
 
 
 
 
 
 typedef __blkcnt_t blkcnt_t;
 typedef __fsblkcnt_t fsblkcnt_t;
 typedef __fsfilcnt_t fsfilcnt_t;
 # 340 "/usr/include/stdlib.h" 2 3
 
 
 
 
 
 
 extern int32_t random (void) ;
 
 
 extern void srandom (unsigned int __seed) ;
 
 
 
 
 
 extern void * initstate (unsigned int __seed, void * __statebuf, size_t __statelen) ;
 
 
 
 
 extern void * setstate (void * __statebuf) ;
 
 
 
 
 
 
 
 struct random_data
   {
     int32_t *fptr;
     int32_t *rptr;
     int32_t *state;
     int rand_type;
     int rand_deg;
     int rand_sep;
     int32_t *end_ptr;
   };
 
 extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) ;
 
 
 extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;
 
 extern int initstate_r (unsigned int __seed, void * __restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ;
 
 
 
 
 extern int setstate_r (void * __restrict __statebuf, struct random_data *__restrict __buf) ;
 
 
 
 
 
 
 extern int rand (void) ;
 
 extern void srand (unsigned int __seed) ;
 
 
 
 extern int rand_r (unsigned int *__seed) ;
 
 
 
 
 
 
 
 extern double drand48 (void) ;
 extern double erand48 (unsigned short int __xsubi[3]) ;
 
 
 extern long int lrand48 (void) ;
 extern long int nrand48 (unsigned short int __xsubi[3]) ;
 
 
 extern long int mrand48 (void) ;
 extern long int jrand48 (unsigned short int __xsubi[3]) ;
 
 
 extern void srand48 (long int __seedval) ;
 extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
 extern void lcong48 (unsigned short int __param[7]) ;
 
 
 struct drand48_data
   {
     unsigned short int x[3];
     unsigned short int a[3];
     unsigned short int c;
     unsigned short int old_x[3];
     int init;
   };
 
 
 
 extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ;
 
 extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ;
 
 
 
 
 extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ;
 
 extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ;
 
 
 
 
 extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ;
 
 extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ;
 
 
 
 
 extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ;
 
 extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ;
 
 
 extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ;
 # 474 "/usr/include/stdlib.h" 3
 extern void * malloc (size_t __size) ;
 
 extern void * calloc (size_t __nmemb, size_t __size) ;
 
 
 
 
 
 extern void * realloc (void * __ptr, size_t __size) ;
 
 extern void free (void * __ptr) ;
 
 
 
 extern void cfree (void * __ptr) ;
 
 
 
 # 1 "/usr/include/alloca.h" 1 3
 # 22 "/usr/include/alloca.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 23 "/usr/include/alloca.h" 2 3
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 26 "/usr/include/alloca.h" 2 3
 
 
 
 
 
 
 
 extern void * alloca (size_t __size) ;
 # 493 "/usr/include/stdlib.h" 2 3
 
 
 
 
 extern void * valloc (size_t __size) ;
 
 
 
 
 extern void abort (void) __attribute__ ((__noreturn__));
 
 
 
 extern int atexit (void (*__func) (void)) ;
 
 
 
 
 extern int __on_exit (void (*__func) (int __status, void * __arg), void * __arg) ;
 
 extern int on_exit (void (*__func) (int __status, void * __arg), void * __arg) ;
 
 
 
 
 
 
 extern void exit (int __status) __attribute__ ((__noreturn__));
 # 530 "/usr/include/stdlib.h" 3
 extern char *getenv (__const char *__name) ;
 
 
 
 extern char *__secure_getenv (__const char *__name) ;
 
 
 
 
 
 extern int putenv (char *__string) ;
 
 
 
 
 
 extern int setenv (__const char *__name, __const char *__value, int __replace) ;
 
 
 
 extern void unsetenv (__const char *__name) ;
 
 
 
 
 
 
 extern int clearenv (void) ;
 # 566 "/usr/include/stdlib.h" 3
 extern char *mktemp (char *__template) ;
 
 
 
 
 
 
 extern int mkstemp (char *__template) ;
 
 
 
 
 extern int system (__const char *__command) ;
 # 595 "/usr/include/stdlib.h" 3
 extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ;
 
 
 
 
 
 
 
 typedef int (*__compar_fn_t) (__const void *, __const void *);
 # 612 "/usr/include/stdlib.h" 3
 extern void * bsearch (__const void * __key, __const void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar);
 
 
 
 
 
 extern void qsort (void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar);
 
 
 
 
 extern int abs (int __x) __attribute__ ((__const__));
 extern long int labs (long int __x) __attribute__ ((__const__));
 # 634 "/usr/include/stdlib.h" 3
 extern div_t div (int __numer, int __denom) __attribute__ ((__const__));
 extern ldiv_t ldiv (long int __numer, long int __denom)
      __attribute__ ((__const__));
 # 651 "/usr/include/stdlib.h" 3
 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;
 
 
 
 
 
 extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;
 
 
 
 
 
 extern char *gcvt (double __value, int __ndigit, char *__buf) ;
 
 
 extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;
 
 extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;
 
 extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;
 
 
 
 
 
 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;
 
 
 extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;
 
 
 
 extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;
 
 
 extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;
 # 695 "/usr/include/stdlib.h" 3
 extern int mblen (__const char *__s, size_t __n) ;
 
 
 extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ;
 
 
 
 extern int wctomb (char *__s, wchar_t __wchar) ;
 
 
 
 extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ;
 
 
 extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ;
 # 718 "/usr/include/stdlib.h" 3
 extern int rpmatch (__const char *__response) ;
 # 2 "bug.c" 2
 # 1 "/usr/include/string.h" 1 3
 # 26 "/usr/include/string.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 27 "/usr/include/string.h" 2 3
 
 
 
 
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 34 "/usr/include/string.h" 2 3
 
 
 
 extern void * memcpy (void * __restrict __dest, __const void * __restrict __src, size_t __n) ;
 
 
 
 extern void * memmove (void * __dest, __const void * __src, size_t __n) ;
 
 
 
 
 
 
 extern void * memccpy (void * __dest, __const void * __src, int __c, size_t __n) ;
 
 
 
 
 
 extern void * memset (void * __s, int __c, size_t __n) ;
 
 
 extern int memcmp (__const void * __s1, __const void * __s2, size_t __n) ;
 
 
 
 extern void * memchr (__const void * __s, int __c, size_t __n) ;
 # 71 "/usr/include/string.h" 3
 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) ;
 
 
 extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ;
 
 
 
 extern char *strcat (char *__restrict __dest, __const char *__restrict __src) ;
 
 
 extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) ;
 
 
 
 extern int strcmp (__const char *__s1, __const char *__s2) ;
 
 extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) ;
 
 
 extern int strcoll (__const char *__s1, __const char *__s2) ;
 
 extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) ;
 # 111 "/usr/include/string.h" 3
 extern char *__strdup (__const char *__s) ;
 extern char *strdup (__const char *__s) ;
 # 146 "/usr/include/string.h" 3
 extern char *strchr (__const char *__s, int __c) ;
 
 extern char *strrchr (__const char *__s, int __c) ;
 # 158 "/usr/include/string.h" 3
 extern size_t strcspn (__const char *__s, __const char *__reject) ;
 
 
 extern size_t strspn (__const char *__s, __const char *__accept) ;
 
 extern char *strpbrk (__const char *__s, __const char *__accept) ;
 
 extern char *strstr (__const char *__haystack, __const char *__needle) ;
 # 176 "/usr/include/string.h" 3
 extern char *strtok (char *__restrict __s, __const char *__restrict __delim) ;
 
 
 
 
 extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ;
 
 
 
 extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ;
 # 207 "/usr/include/string.h" 3
 extern size_t strlen (__const char *__s) ;
 # 217 "/usr/include/string.h" 3
 extern char *strerror (int __errnum) ;
 
 
 
 extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ;
 extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;
 
 
 
 
 extern void __bzero (void * __s, size_t __n) ;
 
 
 
 extern void bcopy (__const void * __src, void * __dest, size_t __n) ;
 
 
 extern void bzero (void * __s, size_t __n) ;
 
 
 extern int bcmp (__const void * __s1, __const void * __s2, size_t __n) ;
 
 
 extern char *index (__const char *__s, int __c) ;
 
 
 extern char *rindex (__const char *__s, int __c) ;
 
 
 
 extern int __ffs (int __i) __attribute__ ((const));
 extern int ffs (int __i) __attribute__ ((const));
 # 261 "/usr/include/string.h" 3
 extern int __strcasecmp (__const char *__s1, __const char *__s2) ;
 extern int strcasecmp (__const char *__s1, __const char *__s2) ;
 
 
 extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) ;
 # 282 "/usr/include/string.h" 3
 extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) ;
 # 343 "/usr/include/string.h" 3
 # 1 "/usr/include/bits/string.h" 1 3
 # 344 "/usr/include/string.h" 2 3
 
 
 # 1 "/usr/include/bits/string2.h" 1 3
 # 52 "/usr/include/bits/string2.h" 3
 # 1 "/usr/include/endian.h" 1 3
 # 53 "/usr/include/bits/string2.h" 2 3
 # 1 "/usr/include/bits/types.h" 1 3
 # 54 "/usr/include/bits/string2.h" 2 3
 # 372 "/usr/include/bits/string2.h" 3
 extern void * __rawmemchr (const void * __s, int __c);
 # 396 "/usr/include/bits/string2.h" 3
 extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t,
                                       __uint32_t, __uint32_t, size_t);
 extern __inline char *
 __strcpy_small (char *__dest,
                 __uint16_t __src0_2, __uint16_t __src4_2,
                 __uint32_t __src0_4, __uint32_t __src4_4,
                 size_t __srclen)
 {
   union {
     __uint32_t __ui;
     __uint16_t __usi;
     unsigned char __uc;
   } *__u = (void *) __dest;
   switch ((unsigned int) __srclen)
     {
     case 1:
       __u->__uc = '\0';
       break;
     case 2:
       __u->__usi = __src0_2;
       break;
     case 3:
       __u->__usi = __src0_2;
       __u = __extension__ ((void *) __u + 2);
       __u->__uc = '\0';
       break;
     case 4:
       __u->__ui = __src0_4;
       break;
     case 5:
       __u->__ui = __src0_4;
       __u = __extension__ ((void *) __u + 4);
       __u->__uc = '\0';
       break;
     case 6:
       __u->__ui = __src0_4;
       __u = __extension__ ((void *) __u + 4);
       __u->__usi = __src4_2;
       break;
     case 7:
       __u->__ui = __src0_4;
       __u = __extension__ ((void *) __u + 4);
       __u->__usi = __src4_2;
       __u = __extension__ ((void *) __u + 2);
       __u->__uc = '\0';
       break;
     case 8:
       __u->__ui = __src0_4;
       __u = __extension__ ((void *) __u + 4);
       __u->__ui = __src4_4;
       break;
     }
   return __dest;
 }
 # 873 "/usr/include/bits/string2.h" 3
 extern __inline size_t __strcspn_c1 (__const char *__s, char __reject);
 extern __inline size_t
 __strcspn_c1 (__const char *__s, char __reject)
 {
   register size_t __result = 0;
   while (__s[__result] != '\0' && __s[__result] != __reject)
     ++__result;
   return __result;
 }
 
 extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1,
                                      char __reject2);
 extern __inline size_t
 __strcspn_c2 (__const char *__s, char __reject1, char __reject2)
 {
   register size_t __result = 0;
   while (__s[__result] != '\0' && __s[__result] != __reject1
          && __s[__result] != __reject2)
     ++__result;
   return __result;
 }
 
 extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1,
                                      char __reject2, char __reject3);
 extern __inline size_t
 __strcspn_c3 (__const char *__s, char __reject1, char __reject2,
               char __reject3)
 {
   register size_t __result = 0;
   while (__s[__result] != '\0' && __s[__result] != __reject1
          && __s[__result] != __reject2 && __s[__result] != __reject3)
     ++__result;
   return __result;
 }
 # 928 "/usr/include/bits/string2.h" 3
 extern __inline size_t __strspn_c1 (__const char *__s, char __accept);
 extern __inline size_t
 __strspn_c1 (__const char *__s, char __accept)
 {
   register size_t __result = 0;
 
   while (__s[__result] == __accept)
     ++__result;
   return __result;
 }
 
 extern __inline size_t __strspn_c2 (__const char *__s, char __accept1,
                                     char __accept2);
 extern __inline size_t
 __strspn_c2 (__const char *__s, char __accept1, char __accept2)
 {
   register size_t __result = 0;
 
   while (__s[__result] == __accept1 || __s[__result] == __accept2)
     ++__result;
   return __result;
 }
 
 extern __inline size_t __strspn_c3 (__const char *__s, char __accept1,
                                     char __accept2, char __accept3);
 extern __inline size_t
 __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
 {
   register size_t __result = 0;
 
   while (__s[__result] == __accept1 || __s[__result] == __accept2
          || __s[__result] == __accept3)
     ++__result;
   return __result;
 }
 # 983 "/usr/include/bits/string2.h" 3
 extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1,
                                      char __accept2);
 extern __inline char *
 __strpbrk_c2 (__const char *__s, char __accept1, char __accept2)
 {
 
   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
     ++__s;
   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
 }
 
 extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1,
                                      char __accept2, char __accept3);
 extern __inline char *
 __strpbrk_c3 (__const char *__s, char __accept1, char __accept2,
               char __accept3)
 {
 
   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
          && *__s != __accept3)
     ++__s;
   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
 }
 # 1044 "/usr/include/bits/string2.h" 3
 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
 extern __inline char *
 __strtok_r_1c (char *__s, char __sep, char **__nextp)
 {
   char *__result;
   if (__s == ((void *)0))
     __s = *__nextp;
   while (*__s == __sep)
     ++__s;
   if (*__s == '\0')
     __result = ((void *)0);
   else
     {
       __result = __s;
       while (*__s != '\0' && *__s != __sep)
         ++__s;
       if (*__s == '\0')
         *__nextp = __s;
       else
         {
           *__s = '\0';
           *__nextp = __s + 1;
         }
     }
   return __result;
 }
 # 1094 "/usr/include/bits/string2.h" 3
 extern __inline char *__strsep_1c (char **__s, char __reject);
 extern __inline char *
 __strsep_1c (char **__s, char __reject)
 {
   register char *__retval = *__s;
   if (__retval == ((void *)0))
     return *__s = ((void *)0);
   if (*__retval == __reject)
     *(*__s)++ = '\0';
   else
     if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
       *(*__s)++ = '\0';
     else
       *__s = ((void *)0);
   return __retval;
 }
 
 extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
 extern __inline char *
 __strsep_2c (char **__s, char __reject1, char __reject2)
 {
   register char *__retval = *__s;
   if (__retval == ((void *)0))
     return *__s = ((void *)0);
   if (*__retval == __reject1 || *__retval == __reject2)
     *(*__s)++ = '\0';
   else
     {
       register char *__cp = __retval;
       while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
         ++__cp;
       if (*__cp != '\0')
         {
           *__s = __cp;
           *(*__s)++ = '\0';
         }
       else
         *__s = ((void *)0);
     }
   return __retval;
 }
 
 extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
                                    char __reject3);
 extern __inline char *
 __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
 {
   register char *__retval = *__s;
   if (__retval == ((void *)0))
     return *__s = ((void *)0);
   if (*__retval == __reject1 || *__retval == __reject2
       || *__retval == __reject3)
     *(*__s)++ = '\0';
   else
     {
       register char *__cp = __retval;
       while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
              && *__cp != __reject3)
         ++__cp;
       if (*__cp != '\0')
         {
           *__s = __cp;
           *(*__s)++ = '\0';
         }
       else
         *__s = ((void *)0);
     }
   return __retval;
 }
 
 extern __inline char *__strsep_g (char **__s, __const char *__reject);
 extern __inline char *
 __strsep_g (char **__s, __const char *__reject)
 {
   register char *__retval = *__s;
   if (__retval == ((void *)0))
     return ((void *)0);
   if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void *)0) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (_ _retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0))
     *(*__s)++ = '\0';
   return __retval;
 }
 # 1187 "/usr/include/bits/string2.h" 3
 # 1 "/usr/include/stdlib.h" 1 3
 # 1188 "/usr/include/bits/string2.h" 2 3
 # 347 "/usr/include/string.h" 2 3
 # 3 "bug.c" 2
 # 1 "red.h" 1
 # 115 "red.h"
 enum bool_enum { false, true };
 typedef enum bool_enum bool;
 
 
 enum tag_t {
         T_IND, T_APP, T_PAIR, T_NIL, T_INT, T_BOOL,
         T_PORT, T_COMB, T_SYM, T_FORWARD, T_HOLE2
 };
 
 typedef int Int;
 typedef struct Node_t * HeapPtr;
 
 struct info_t {
         HeapPtr (*unwind)(void);
         HeapPtr (*eval)(void);
         HeapPtr ( *relocate)(HeapPtr) __attribute__((__regparm__(3)));
 
         void (*scan)(void);
 
 
 
         const char *(*to_string)(HeapPtr);
         enum tag_t tag;
 
 };
 
 extern HeapPtr ind_eval(void);
 extern HeapPtr app_eval(void);
 extern HeapPtr data_eval(void);
 extern HeapPtr error_eval(void) __attribute__ ((noreturn)) ;
 extern void spine_stack_overflow(void) __attribute__ ((noreturn)) ;
 extern void grow_spine(void);
 extern int spine_get_offset(HeapPtr *);
 extern HeapPtr *spine_at_offset(int);
 
 extern void error_scan(void) __attribute__ ((noreturn)) ;
 
 
 
 extern HeapPtr static_relocate(HeapPtr) __attribute__((__regparm__(3)));
 extern HeapPtr error_relocate(HeapPtr) __attribute__((__regparm__(3))) __attribute__ ((noreturn));
 extern HeapPtr ind_unwind(void);
 extern HeapPtr app_unwind(void);
 extern HeapPtr data_unwind(void);
 extern HeapPtr error_unwind(void) __attribute__ ((noreturn)) ;
 extern const char *hole2_to_string(HeapPtr);
 extern const char *ind_to_string(HeapPtr);
 extern const char *app_to_string(HeapPtr);
 extern const char *pair_to_string(HeapPtr);
 extern const char *nil_to_string(HeapPtr);
 extern const char *bool_to_string(HeapPtr);
 extern const char *int_to_string(HeapPtr);
 extern const char *sint_to_string(HeapPtr);
 extern const char *hint_to_string(HeapPtr);
 extern const char *port_to_string(HeapPtr);
 extern const char *sym_to_string(HeapPtr);
 extern const char *forward_to_string(HeapPtr);
 extern const char *error_show(HeapPtr);
 
 
 extern const struct info_t ind_info, app_info, pair_info,
         nil_info, int_info, bool_info, port_info, comb_info,
         sym_info, forward_info, hole2_info;
 
 struct Node_t {
         const struct info_t *info;
         union {
 
                 HeapPtr ptr[2];
 
                 Int n;
 
                 const char *s;
 
                 int port;
 
                 bool b;
         } v;
 };
 # 237 "red.h"
 extern bool output_to_screen;
 extern int Xopt;
 
 
 
 
  extern HeapPtr *Spine;
 
 
 
 
 
  register HeapPtr *Sp __asm__ ("%esi");
 
 
 
  extern HeapPtr *Base;
 
 
 
 
 
 
 
  register char *Hp __asm__ ("%edi");
 
 
 
  extern char *end_heap;
 # 274 "red.h"
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 147 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
 typedef int ptrdiff_t;
 # 275 "red.h" 2
 # 1 "/usr/include/stdio.h" 1 3
 # 27 "/usr/include/stdio.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 28 "/usr/include/stdio.h" 2 3
 
 
 
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 34 "/usr/include/stdio.h" 2 3
 
 
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
 # 43 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 3
 typedef __builtin_va_list __gnuc_va_list;
 # 39 "/usr/include/stdio.h" 2 3
 
 # 1 "/usr/include/bits/types.h" 1 3
 # 41 "/usr/include/stdio.h" 2 3
 
 
 
 
 
 
 
 typedef struct _IO_FILE FILE;
 # 57 "/usr/include/stdio.h" 3
 # 1 "/usr/include/libio.h" 1 3
 # 30 "/usr/include/libio.h" 3
 # 1 "/usr/include/_G_config.h" 1 3
 # 9 "/usr/include/_G_config.h" 3
 # 1 "/usr/include/bits/types.h" 1 3
 # 10 "/usr/include/_G_config.h" 2 3
 
 
 
 
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 312 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
 typedef unsigned int wint_t;
 # 15 "/usr/include/_G_config.h" 2 3
 # 35 "/usr/include/_G_config.h" 3
 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
 typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
 typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
 typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
 # 31 "/usr/include/libio.h" 2 3
 # 48 "/usr/include/libio.h" 3
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
 # 49 "/usr/include/libio.h" 2 3
 # 154 "/usr/include/libio.h" 3
 struct _IO_jump_t; struct _IO_FILE;
 # 164 "/usr/include/libio.h" 3
 typedef void _IO_lock_t;
 
 
 
 
 
 struct _IO_marker {
   struct _IO_marker *_next;
   struct _IO_FILE *_sbuf;
 
 
 
   int _pos;
 # 187 "/usr/include/libio.h" 3
 };
 
 struct _IO_FILE {
   int _flags;
 
 
 
 
   char* _IO_read_ptr;
   char* _IO_read_end;
   char* _IO_read_base;
   char* _IO_write_base;
   char* _IO_write_ptr;
   char* _IO_write_end;
   char* _IO_buf_base;
   char* _IO_buf_end;
 
   char *_IO_save_base;
   char *_IO_backup_base;
   char *_IO_save_end;
 
   struct _IO_marker *_markers;
 
   struct _IO_FILE *_chain;
 
   int _fileno;
   int _blksize;
   __off_t _old_offset;
 
 
 
   unsigned short _cur_column;
   signed char _vtable_offset;
   char _shortbuf[1];
 
 
 
   _IO_lock_t *_lock;
 # 233 "/usr/include/libio.h" 3
   __off64_t _offset;
 
   int _unused2[16];
 
 };
 
 
 typedef struct _IO_FILE _IO_FILE;
 
 
 struct _IO_FILE_plus;
 extern struct _IO_FILE_plus _IO_2_1_stdin_;
 extern struct _IO_FILE_plus _IO_2_1_stdout_;
 extern struct _IO_FILE_plus _IO_2_1_stderr_;
 # 262 "/usr/include/libio.h" 3
 typedef __ssize_t __io_read_fn (void * __cookie, char *__buf, size_t __nbytes);
 # 271 "/usr/include/libio.h" 3
 typedef __ssize_t __io_write_fn (void * __cookie, __const char *__buf, size_t __n);
 # 280 "/usr/include/libio.h" 3
 typedef int __io_seek_fn (void * __cookie, __off_t __pos, int __w);
 
 
 typedef int __io_close_fn (void * __cookie);
 # 318 "/usr/include/libio.h" 3
 extern int __underflow (_IO_FILE *) ;
 extern int __uflow (_IO_FILE *) ;
 extern int __overflow (_IO_FILE *, int) ;
 # 337 "/usr/include/libio.h" 3
 extern int _IO_getc (_IO_FILE *__fp) ;
 extern int _IO_putc (int __c, _IO_FILE *__fp) ;
 extern int _IO_feof (_IO_FILE *__fp) ;
 extern int _IO_ferror (_IO_FILE *__fp) ;
 
 extern int _IO_peekc_locked (_IO_FILE *__fp) ;
 
 
 
 
 
 extern void _IO_flockfile (_IO_FILE *) ;
 extern void _IO_funlockfile (_IO_FILE *) ;
 extern int _IO_ftrylockfile (_IO_FILE *) ;
 # 363 "/usr/include/libio.h" 3
 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict) ;
 
 extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gnuc_va_list) ;
 
 extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
 extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;
 
 extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
 extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;
 
 extern void _IO_free_backup_area (_IO_FILE *) ;
 # 58 "/usr/include/stdio.h" 2 3
 
 
 
 typedef __off_t fpos_t;
 # 110 "/usr/include/stdio.h" 3
 # 1 "/usr/include/bits/stdio_lim.h" 1 3
 # 111 "/usr/include/stdio.h" 2 3
 
 
 
 extern FILE *stdin;
 extern FILE *stdout;
 extern FILE *stderr;
 
 
 
 
 
 
 
 extern int remove (__const char *__filename) ;
 
 extern int rename (__const char *__old, __const char *__new) ;
 
 
 
 
 extern FILE *tmpfile (void) ;
 # 143 "/usr/include/stdio.h" 3
 extern char *tmpnam (char *__s) ;
 
 
 
 
 extern char *tmpnam_r (char *__s) ;
 # 160 "/usr/include/stdio.h" 3
 extern char *tempnam (__const char *__dir, __const char *__pfx) ;
 
 
 
 
 extern int fclose (FILE *__stream) ;
 
 extern int fflush (FILE *__stream) ;
 
 
 
 extern int fflush_unlocked (FILE *__stream) ;
 # 182 "/usr/include/stdio.h" 3
 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) ;
 
 
 extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) ;
 # 212 "/usr/include/stdio.h" 3
 extern FILE *fdopen (int __fd, __const char *__modes) ;
 # 232 "/usr/include/stdio.h" 3
 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;
 
 
 
 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ;
 
 
 
 
 
 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ;
 
 
 
 extern void setlinebuf (FILE *__stream) ;
 
 
 
 
 extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) ;
 
 
 extern int printf (__const char *__restrict __format, ...) ;
 
 extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) ;
 
 
 
 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ;
 
 
 
 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) ;
 
 
 extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ;
 
 
 
 
 
 extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...)
 
      __attribute__ ((__format__ (__printf__, 3, 4)));
 
 extern int __vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg)
 
 
      __attribute__ ((__format__ (__printf__, 3, 0)));
 extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg)
 
 
      __attribute__ ((__format__ (__printf__, 3, 0)));
 # 310 "/usr/include/stdio.h" 3
 extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) ;
 
 
 extern int scanf (__const char *__restrict __format, ...) ;
 
 extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ;
 # 338 "/usr/include/stdio.h" 3
 extern int fgetc (FILE *__stream) ;
 extern int getc (FILE *__stream) ;
 
 
 extern int getchar (void) ;
 
 
 
 
 
 
 
 extern int getc_unlocked (FILE *__stream) ;
 extern int getchar_unlocked (void) ;
 
 
 
 
 extern int fgetc_unlocked (FILE *__stream) ;
 
 
 
 
 extern int fputc (int __c, FILE *__stream) ;
 extern int putc (int __c, FILE *__stream) ;
 
 
 extern int putchar (int __c) ;
 
 
 
 
 
 
 
 extern int fputc_unlocked (int __c, FILE *__stream) ;
 
 
 
 
 extern int putc_unlocked (int __c, FILE *__stream) ;
 extern int putchar_unlocked (int __c) ;
 
 
 
 
 
 extern int getw (FILE *__stream) ;
 
 
 extern int putw (int __w, FILE *__stream) ;
 
 
 
 
 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) ;
 # 404 "/usr/include/stdio.h" 3
 extern char *gets (char *__s) ;
 # 428 "/usr/include/stdio.h" 3
 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) ;
 # 438 "/usr/include/stdio.h" 3
 extern int puts (__const char *__s) ;
 
 
 
 extern int ungetc (int __c, FILE *__stream) ;
 
 
 
 extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ;
 
 
 extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) ;
 
 
 
 
 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ;
 
 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ;
 
 
 
 
 
 
 extern int fseek (FILE *__stream, long int __off, int __whence) ;
 
 extern long int ftell (FILE *__stream) ;
 
 extern void rewind (FILE *__stream) ;
 # 499 "/usr/include/stdio.h" 3
 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) ;
 
 
 extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
 # 536 "/usr/include/stdio.h" 3
 extern void clearerr (FILE *__stream) ;
 
 extern int feof (FILE *__stream) ;
 
 extern int ferror (FILE *__stream) ;
 
 
 
 extern void clearerr_unlocked (FILE *__stream) ;
 extern int feof_unlocked (FILE *__stream) ;
 extern int ferror_unlocked (FILE *__stream) ;
 
 
 
 
 extern void perror (__const char *__s) ;
 
 
 
 
 extern int sys_nerr;
 extern __const char *__const sys_errlist[];
 # 567 "/usr/include/stdio.h" 3
 extern int fileno (FILE *__stream) ;
 
 
 
 
 extern int fileno_unlocked (FILE *__stream) ;
 
 
 
 
 
 
 extern FILE *popen (__const char *__command, __const char *__modes) ;
 
 
 extern int pclose (FILE *__stream) ;
 
 
 
 
 
 extern char *ctermid (char *__s) ;
 # 614 "/usr/include/stdio.h" 3
 extern void flockfile (FILE *__stream) ;
 
 
 
 extern int ftrylockfile (FILE *__stream) ;
 
 
 extern void funlockfile (FILE *__stream) ;
 # 635 "/usr/include/stdio.h" 3
 # 1 "/usr/include/bits/stdio.h" 1 3
 # 32 "/usr/include/bits/stdio.h" 3
 extern __inline int
 vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
 {
   return vfprintf (stdout, __fmt, __arg);
 }
 
 
 extern __inline int
 getchar (void)
 {
   return _IO_getc (stdin);
 }
 
 
 
 
 extern __inline int
 getc_unlocked (FILE *__fp)
 {
   return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
 }
 
 
 extern __inline int
 getchar_unlocked (void)
 {
   return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
 }
 
 
 
 
 extern __inline int
 putchar (int __c)
 {
   return _IO_putc (__c, stdout);
 }
 
 
 
 
 extern __inline int
 fputc_unlocked (int __c, FILE *__stream)
 {
   return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
 }
 
 
 
 
 
 extern __inline int
 putc_unlocked (int __c, FILE *__stream)
 {
   return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
 }
 
 
 extern __inline int
 putchar_unlocked (int __c)
 {
   return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
 }
 # 110 "/usr/include/bits/stdio.h" 3
 extern __inline int
 feof_unlocked (FILE *__stream)
 {
   return (((__stream)->_flags & 0x10) != 0);
 }
 
 
 extern __inline int
 ferror_unlocked (FILE *__stream)
 {
   return (((__stream)->_flags & 0x20) != 0);
 }
 # 636 "/usr/include/stdio.h" 2 3
 # 276 "red.h" 2
 
 
 
 
 extern int stats;
 extern void stats_printf(int, const char *, ...) __attribute__ ((format (printf, (2), (2)+1)));
 extern void gc_stats(FILE *);
 extern void sp_stats(FILE *);
 
 # 1 "timer.h" 1
 # 9 "timer.h"
 # 1 "/usr/include/time.h" 1 3
 # 28 "/usr/include/time.h" 3
 # 1 "/usr/include/features.h" 1 3
 # 29 "/usr/include/time.h" 2 3
 # 38 "/usr/include/time.h" 3
 # 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
 # 39 "/usr/include/time.h" 2 3
 
 
 
 # 1 "/usr/include/bits/time.h" 1 3
 # 43 "/usr/include/time.h" 2 3
 # 57 "/usr/include/time.h" 3
 # 1 "/usr/include/bits/types.h" 1 3
 # 58 "/usr/include/time.h" 2 3
 
 
 typedef __clock_t clock_t;
 # 95 "/usr/include/time.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;
 
 
   long int tm_gmtoff;
   __const char *tm_zone;
 
 
 
 
 };
 
 
 
 
 extern clock_t clock (void) ;
 
 
 extern time_t time (time_t *__timer) ;
 
 
 extern double difftime (time_t __time1, time_t __time0)
      __attribute__ ((__const__));
 
 
 extern time_t mktime (struct tm *__tp) ;
 
 
 
 
 
 extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) ;
 # 149 "/usr/include/time.h" 3
 extern struct tm *gmtime (__const time_t *__timer) ;
 
 
 
 extern struct tm *localtime (__const time_t *__timer) ;
 
 
 
 
 extern struct tm *__gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ;
 
 extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ;
 
 
 
 
 extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ;
 
 
 
 
 
 extern char *asctime (__const struct tm *__tp) ;
 
 
 extern char *ctime (__const time_t *__timer) ;
 
 
 
 
 
 
 extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) ;
 
 
 
 extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) ;
 
 
 
 
 
 extern char *__tzname[2];
 extern int __daylight;
 extern long int __timezone;
 
 
 
 
 extern char *tzname[2];
 
 
 
 extern void tzset (void) ;
 
 
 
 extern int daylight;
 extern long int timezone;
 
 
 
 
 
 extern int stime (__const time_t *__when) ;
 # 228 "/usr/include/time.h" 3
 extern time_t timegm (struct tm *__tp) ;
 
 
 extern time_t timelocal (struct tm *__tp) ;
 
 
 extern int dysize (int __year) ;
 
 
 
 
 
 extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining) ;
 # 10 "timer.h" 2
 
     typedef struct xtime_struct { clock_t u, s, e; } xtime_t;
 # 22 "timer.h"
 extern void xtime_init(xtime_t *);
 extern void xtime_get(xtime_t *);
 extern void xtime_get_elapsed(xtime_t *, const xtime_t *);
 extern void xtime_add(xtime_t *, const xtime_t *, const xtime_t *);
 extern void xtime_sub(xtime_t *, const xtime_t *, const xtime_t *);
 extern double xtime_to_sec(const xtime_t *);
 
 # 1 "/usr/include/stdio.h" 1 3
 # 30 "timer.h" 2
 extern void xtime_show(FILE *, const xtime_t *);
 # 286 "red.h" 2
 
 extern xtime_t total_GC_time;
 
 extern HeapPtr *min_Sp;
 # 300 "red.h"
 extern HeapPtr eval(void);
 
 extern void force_string(char *, int, HeapPtr);
 
 
 void init_input(void);
 void finalize_input(void);
 HeapPtr link_code(void);
 void load_file(FILE *);
 
 
 
 
 
 
 extern size_t asciiz_len(const char *);
 extern int asciiz_cmp(const char *, const char *);
 extern void asciiz_cpy(char *, const char *);
 
 
 extern void init_memory(void);
 extern void need_heap(size_t) __attribute__((__stdcall__));
 HeapPtr mk_app(HeapPtr, HeapPtr);
 HeapPtr mk_int(Int);
 HeapPtr mk_sym(const char *);
 HeapPtr mk_pair(HeapPtr, HeapPtr);
 extern bool port_input_p(int);
 extern int port_getchar(int);
 
 
 
 
 extern struct Node_t Nil_node;
 
 
 extern struct Node_t False_node, True_node;
 
 extern HeapPtr mk_port(bool, FILE *);
 
 
 
 extern void pr_string(HeapPtr);
 
 
 extern void fatal(const char *, ...) __attribute__ ((noreturn)) __attribute__ ((format (printf, (1), (1)+1)));
 
 
 extern void init_symtab(void);
 extern const char *register_symbol(const char *);
 
 
 # 1 "combs.h" 1
 enum comb_enum {
         C_input = 80,
         C_pairP = 71,
         C_eq = 44,
         C_succ = 35,
         C_B1 = 4,
         C_output = 81,
         C_neq = 45,
         C_pred = 36,
         C_C1 = 5,
         C_charP = 73,
         C_zeroP = 46,
         C_Rsub = 37,
         C_Bs = 6,
         C_ERROR = 100,
         C_numberP = 74,
         C_Rdiv = 38,
         C_I = 7,
         C_compare0 = 48,
         C_Rrem = 39,
         C_K = 8,
         C_LISTCASE = 102,
         C_U = 9,
         C_Y = 10,
         C_cons = 20,
         C_W = 11,
         C_READ = 105,
         C_add = 30,
         C_K1 = 12,
         C_STD_PORT = 106,
         C_less = 40,
         C_mul = 31,
         C_S = 0,
         C_if = 50,
         C_less_eq = 41,
         C_sub = 32,
         C_B = 1,
         C_not = 51,
         C_greater = 42,
         C_div = 33,
         C_C = 2,
         C_booleanP = 70,
         C_gr_eq = 43,
         C_rem = 34,
         C_S1 = 3,
         NUM_COMBS = 107
 };
 # 352 "red.h" 2
 
 
 extern long num_reductions[NUM_COMBS], num_argcheck[NUM_COMBS];
 
 
 struct comb_struct {
         const struct info_t *info;
 };
 
 
 extern struct comb_struct combs[NUM_COMBS];
 
 
 
 extern const char *comb_name_table[NUM_COMBS];
 # 4 "bug.c" 2
 
 int spine_size;
 
 int spine_get_offset(HeapPtr *p)
 {
         return &Spine[spine_size] - p;
 }
 
 HeapPtr *spine_at_offset(int o)
 {
         return &Spine[spine_size - o];
 }
 
 
 void grow_spine(void)
 {
         int sp_pos, base_pos, old_size, new_size;
         int min_pos;
 
         old_size = spine_size;
         new_size = 2 * spine_size;
         sp_pos = spine_get_offset(Sp);
         base_pos = spine_get_offset(Base);
         min_pos = spine_get_offset(min_Sp);
         Spine = realloc(Spine, new_size * sizeof (HeapPtr));
         if (Spine == ((void *)0))
                 fatal("Spine stack overflow");
         spine_size = new_size;
         Sp = spine_at_offset(sp_pos);
         Base = spine_at_offset(base_pos);
         min_Sp = spine_at_offset(min_pos);
         memcpy(&Spine[old_size], Spine, old_size * sizeof (HeapPtr));
 }
 
 --------------D63C264C75F3A0CD4C67E698--
 


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: optimization/4296: Unable to find a register to spill in class `SIREG'.
@ 2001-09-28 20:36 aoliva
  0 siblings, 0 replies; 3+ messages in thread
From: aoliva @ 2001-09-28 20:36 UTC (permalink / raw)
  To: chr.breitkopf, gcc-bugs, gcc-prs, nobody

Synopsis: Unable to find a register to spill in class `SIREG'.

State-Changed-From-To: open->closed
State-Changed-By: aoliva
State-Changed-When: Fri Sep 28 20:36:51 2001
State-Changed-Why:
    The global register variable is most definitely the culprit.  There are certain instructions that really need to use %esi (and most other registers in the register-starved x86 architecture, unfortunately).

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4296&database=gcc


^ permalink raw reply	[flat|nested] 3+ messages in thread

* optimization/4296: Unable to find a register to spill in class `SIREG'.
@ 2001-09-11  2:36 chr.breitkopf
  0 siblings, 0 replies; 3+ messages in thread
From: chr.breitkopf @ 2001-09-11  2:36 UTC (permalink / raw)
  To: gcc-gnats

>Number:         4296
>Category:       optimization
>Synopsis:       Unable to find a register to spill in class `SIREG'.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Sep 11 02:36:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Christoph Breitkopf
>Release:        gcc version 3.0.1
>Organization:
>Environment:
i686-pc-linux-gnu
glibc 2.1.3
>Description:
Compiler reports:
bug.c:36: Unable to find a register to spill in class `SIREG'.
bug.c:36: This is the insn:
(insn 201 200 202 (parallel[ 
            (set (reg:SI 2 ecx [110])
                (const_int 0 [0x0]))
 [snipped, full message in attachment]

Problem probably caused by global register variable:
(register foo __asm__ ("%esi"))
gcc-2.95.3 compiled the code correctly.

Preprocessed input file included as attachment.
>How-To-Repeat:
compile bug.i using the command line given in the
attachement.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="bug.txt"
Content-Disposition: inline; filename="bug.txt"

---------- Compiler invocation and output ----------
$ gcc-3.0 -DSK_OPT -DAPP_LOOP -DSTACK_GROWTH -DTIMER_TIMES -march=i686 -DNDEBUG -DSTATS=1 -O3 -fomit-frame-pointer -ffast-math -fstrict-aliasing -fargument-noalias  -save-temps -v -c bug.c
Reading specs from /usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/specs
Configured with: ../gcc-3.0.1/configure --prefix=/usr/local/gcc-3.0.1
Thread model: single
gcc version 3.0.1
 /usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/cpp0 -lang-c -v -iprefix /usr/local/bin/../lib/gcc-lib/i686-pc-linux-gnu/3.0.1/ -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=1 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__OPTIMIZE__ -D__FAST_MATH__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__tune_i686__ -D__tune_pentiumpro__ -DSK_OPT -DAPP_LOOP -DSTACK_GROWTH -DTIMER_TIMES -DNDEBUG -DSTATS=1 bug.c bug.i
GNU CPP version 3.0.1 (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include"
ignoring nonexistent directory "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/../../../../i686-pc-linux-gnu/include"
ignoring nonexistent directory "/usr/local/gcc-3.0.1/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include
 /usr/include
End of search list.
 /usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/cc1 -fpreprocessed bug.i -quiet -dumpbase bug.c -march=i686 -O3 -version -fomit-frame-pointer -ffast-math -fstrict-aliasing -fargument-noalias -o bug.s
GNU CPP version 3.0.1 (cpplib) (i386 Linux/ELF)
GNU C version 3.0.1 (i686-pc-linux-gnu)
	compiled by GNU C version 3.0.1.
bug.c: In function `grow_spine':
bug.c:36: Unable to find a register to spill in class `SIREG'.
bug.c:36: This is the insn:
(insn 201 200 202 (parallel[ 
            (set (reg:SI 2 ecx [110])
                (const_int 0 [0x0]))
            (set (reg:SI 1 edx [106])
                (plus:SI (ashift:SI (reg:SI 2 ecx [110])
                        (const_int 2 [0x2]))
                    (reg:SI 1 edx [106])))
            (set (reg/f:SI 3 ebx [109])
                (plus:SI (ashift:SI (reg:SI 2 ecx [110])
                        (const_int 2 [0x2]))
                    (reg/f:SI 3 ebx [109])))
            (set (mem:BLK (reg:SI 1 edx [106]) 0)
                (mem:BLK (reg/f:SI 3 ebx [109]) 0))
            (use (reg:SI 2 ecx [110]))
            (use (reg:SI 19 dirflag))
        ] ) 394 {rep_movsi} (insn_list 198 (insn_list 200 (nil)))
    (expr_list:REG_DEAD (reg:SI 19 dirflag)
        (expr_list:REG_UNUSED (reg:SI 2 ecx [110])
            (expr_list:REG_UNUSED (reg:SI 1 edx [106])
                (expr_list:REG_UNUSED (reg/f:SI 3 ebx [109])
                    (nil))))))
bug.c:36: confused by earlier errors, bailing out
---------- preprocessed input (bug.i) ----------

# 1 "bug.c"
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 250 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 251 "/usr/include/features.h" 2 3
# 278 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 279 "/usr/include/features.h" 2 3
# 26 "/usr/include/stdlib.h" 2 3







# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 199 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef unsigned int size_t;
# 287 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef long int wchar_t;
# 34 "/usr/include/stdlib.h" 2 3







typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;
# 80 "/usr/include/stdlib.h" 3
extern size_t __ctype_get_mb_cur_max (void) ;



extern double atof (__const char *__nptr) ;

extern int atoi (__const char *__nptr) ;

extern long int atol (__const char *__nptr) ;



__extension__ extern long long int atoll (__const char *__nptr) ;



extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ;
# 109 "/usr/include/stdlib.h" 3
extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;


extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;





__extension__
extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;


__extension__
extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
# 132 "/usr/include/stdlib.h" 3
__extension__
extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;


__extension__
extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ;
# 196 "/usr/include/stdlib.h" 3
extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ;


extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ;

extern long double __strtold_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __group) ;




extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ;





extern unsigned long int __strtoul_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) ;







__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ;





__extension__
extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char ** __restrict __endptr, int __base, int __group) ;
# 242 "/usr/include/stdlib.h" 3
extern __inline double
strtod (__const char *__restrict __nptr, char **__restrict __endptr)
{
  return __strtod_internal (__nptr, __endptr, 0);
}
extern __inline long int
strtol (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtol_internal (__nptr, __endptr, __base, 0);
}
extern __inline unsigned long int
strtoul (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoul_internal (__nptr, __endptr, __base, 0);
}
# 274 "/usr/include/stdlib.h" 3
__extension__ extern __inline long long int
strtoq (__const char *__restrict __nptr, char **__restrict __endptr,
        int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtouq (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}



__extension__ extern __inline long long int
strtoll (__const char *__restrict __nptr, char **__restrict __endptr,
         int __base)
{
  return __strtoll_internal (__nptr, __endptr, __base, 0);
}
__extension__ extern __inline unsigned long long int
strtoull (__const char * __restrict __nptr, char **__restrict __endptr,
          int __base)
{
  return __strtoull_internal (__nptr, __endptr, __base, 0);
}


extern __inline double
atof (__const char *__nptr)
{
  return strtod (__nptr, (char **) ((void *)0));
}
extern __inline int
atoi (__const char *__nptr)
{
  return (int) strtol (__nptr, (char **) ((void *)0), 10);
}
extern __inline long int
atol (__const char *__nptr)
{
  return strtol (__nptr, (char **) ((void *)0), 10);
}


__extension__ extern __inline long long int
atoll (__const char *__nptr)
{
  return strtoll (__nptr, (char **) ((void *)0), 10);
}
# 333 "/usr/include/stdlib.h" 3
extern char *l64a (long int __n) ;


extern long int a64l (__const char *__s) ;


# 1 "/usr/include/sys/types.h" 1 3
# 26 "/usr/include/sys/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/sys/types.h" 2 3



# 1 "/usr/include/bits/types.h" 1 3
# 26 "/usr/include/bits/types.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/bits/types.h" 2 3


# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 30 "/usr/include/bits/types.h" 2 3


typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef long long int __quad_t;
# 49 "/usr/include/bits/types.h" 3
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;

__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;

typedef __quad_t *__qaddr_t;

typedef __u_quad_t __dev_t;
typedef __u_int __uid_t;
typedef __u_int __gid_t;
typedef __u_long __ino_t;
typedef __u_int __mode_t;
typedef __u_int __nlink_t;
typedef long int __off_t;
typedef __quad_t __loff_t;
typedef int __pid_t;
typedef int __ssize_t;
typedef long int __rlim_t;
typedef __quad_t __rlim64_t;
typedef __u_int __id_t;

typedef struct
  {
    int __val[2];
  } __fsid_t;


typedef int __daddr_t;
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t;

typedef long int __clock_t;


typedef unsigned long int __fd_mask;
# 100 "/usr/include/bits/types.h" 3
typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } __fd_set;


typedef int __key_t;


typedef unsigned short int __ipc_pid_t;





typedef long int __blkcnt_t;
typedef __quad_t __blkcnt64_t;


typedef __u_long __fsblkcnt_t;
typedef __u_quad_t __fsblkcnt64_t;


typedef __u_long __fsfilcnt_t;
typedef __u_quad_t __fsfilcnt64_t;


typedef __u_long __ino64_t;


typedef __loff_t __off64_t;


typedef long int __t_scalar_t;
typedef unsigned long int __t_uscalar_t;


typedef int __intptr_t;
# 31 "/usr/include/sys/types.h" 2 3


typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;


typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 58 "/usr/include/sys/types.h" 3
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 96 "/usr/include/sys/types.h" 3
typedef __pid_t pid_t;




typedef __id_t id_t;



typedef __ssize_t ssize_t;




typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;



typedef __key_t key_t;






# 1 "/usr/include/time.h" 1 3
# 68 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 69 "/usr/include/time.h" 2 3


typedef __time_t time_t;
# 123 "/usr/include/sys/types.h" 2 3


# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 126 "/usr/include/sys/types.h" 2 3



typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 169 "/usr/include/sys/types.h" 3
typedef int int8_t __attribute__ ((__mode__ (__QI__)));
typedef int int16_t __attribute__ ((__mode__ (__HI__)));
typedef int int32_t __attribute__ ((__mode__ (__SI__)));
typedef int int64_t __attribute__ ((__mode__ (__DI__)));


typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));

typedef int register_t __attribute__ ((__mode__ (__word__)));
# 191 "/usr/include/sys/types.h" 3
# 1 "/usr/include/endian.h" 1 3
# 22 "/usr/include/endian.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/endian.h" 2 3
# 35 "/usr/include/endian.h" 3
# 1 "/usr/include/bits/endian.h" 1 3
# 36 "/usr/include/endian.h" 2 3
# 192 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/select.h" 1 3
# 25 "/usr/include/sys/select.h" 3
# 1 "/usr/include/features.h" 1 3
# 26 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/types.h" 1 3
# 29 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/select.h" 1 3
# 32 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/bits/sigset.h" 1 3
# 23 "/usr/include/bits/sigset.h" 3
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 35 "/usr/include/sys/select.h" 2 3



# 1 "/usr/include/time.h" 1 3
# 83 "/usr/include/time.h" 3
struct timespec
  {
    long int tv_sec;
    long int tv_nsec;
  };
# 39 "/usr/include/sys/select.h" 2 3







struct timeval;

typedef __fd_mask fd_mask;


typedef __fd_set fd_set;
# 74 "/usr/include/sys/select.h" 3
extern int __select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, struct timeval *__timeout) ;


extern int select (int __nfds, __fd_set *__readfds, __fd_set *__writefds, __fd_set *__exceptfds, struct timeval *__timeout) ;
# 195 "/usr/include/sys/types.h" 2 3


# 1 "/usr/include/sys/sysmacros.h" 1 3
# 198 "/usr/include/sys/types.h" 2 3





typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 340 "/usr/include/stdlib.h" 2 3






extern int32_t random (void) ;


extern void srandom (unsigned int __seed) ;





extern void * initstate (unsigned int __seed, void * __statebuf, size_t __statelen) ;




extern void * setstate (void * __statebuf) ;







struct random_data
  {
    int32_t *fptr;
    int32_t *rptr;
    int32_t *state;
    int rand_type;
    int rand_deg;
    int rand_sep;
    int32_t *end_ptr;
  };

extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) ;


extern int srandom_r (unsigned int __seed, struct random_data *__buf) ;

extern int initstate_r (unsigned int __seed, void * __restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ;




extern int setstate_r (void * __restrict __statebuf, struct random_data *__restrict __buf) ;






extern int rand (void) ;

extern void srand (unsigned int __seed) ;



extern int rand_r (unsigned int *__seed) ;







extern double drand48 (void) ;
extern double erand48 (unsigned short int __xsubi[3]) ;


extern long int lrand48 (void) ;
extern long int nrand48 (unsigned short int __xsubi[3]) ;


extern long int mrand48 (void) ;
extern long int jrand48 (unsigned short int __xsubi[3]) ;


extern void srand48 (long int __seedval) ;
extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ;
extern void lcong48 (unsigned short int __param[7]) ;


struct drand48_data
  {
    unsigned short int x[3];
    unsigned short int a[3];
    unsigned short int c;
    unsigned short int old_x[3];
    int init;
  };



extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ;

extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ;




extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ;

extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ;




extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ;

extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ;




extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ;

extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ;


extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ;
# 474 "/usr/include/stdlib.h" 3
extern void * malloc (size_t __size) ;

extern void * calloc (size_t __nmemb, size_t __size) ;





extern void * realloc (void * __ptr, size_t __size) ;

extern void free (void * __ptr) ;



extern void cfree (void * __ptr) ;



# 1 "/usr/include/alloca.h" 1 3
# 22 "/usr/include/alloca.h" 3
# 1 "/usr/include/features.h" 1 3
# 23 "/usr/include/alloca.h" 2 3


# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 26 "/usr/include/alloca.h" 2 3







extern void * alloca (size_t __size) ;
# 493 "/usr/include/stdlib.h" 2 3




extern void * valloc (size_t __size) ;




extern void abort (void) __attribute__ ((__noreturn__));



extern int atexit (void (*__func) (void)) ;




extern int __on_exit (void (*__func) (int __status, void * __arg), void * __arg) ;

extern int on_exit (void (*__func) (int __status, void * __arg), void * __arg) ;






extern void exit (int __status) __attribute__ ((__noreturn__));
# 530 "/usr/include/stdlib.h" 3
extern char *getenv (__const char *__name) ;



extern char *__secure_getenv (__const char *__name) ;





extern int putenv (char *__string) ;





extern int setenv (__const char *__name, __const char *__value, int __replace) ;



extern void unsetenv (__const char *__name) ;






extern int clearenv (void) ;
# 566 "/usr/include/stdlib.h" 3
extern char *mktemp (char *__template) ;






extern int mkstemp (char *__template) ;




extern int system (__const char *__command) ;
# 595 "/usr/include/stdlib.h" 3
extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ;







typedef int (*__compar_fn_t) (__const void *, __const void *);
# 612 "/usr/include/stdlib.h" 3
extern void * bsearch (__const void * __key, __const void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar);





extern void qsort (void * __base, size_t __nmemb, size_t __size, __compar_fn_t __compar);




extern int abs (int __x) __attribute__ ((__const__));
extern long int labs (long int __x) __attribute__ ((__const__));
# 634 "/usr/include/stdlib.h" 3
extern div_t div (int __numer, int __denom) __attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
     __attribute__ ((__const__));
# 651 "/usr/include/stdlib.h" 3
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;





extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;





extern char *gcvt (double __value, int __ndigit, char *__buf) ;


extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;

extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ;

extern char *qgcvt (long double __value, int __ndigit, char *__buf) ;





extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;


extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;



extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;


extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ;
# 695 "/usr/include/stdlib.h" 3
extern int mblen (__const char *__s, size_t __n) ;


extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ;



extern int wctomb (char *__s, wchar_t __wchar) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ;


extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ;
# 718 "/usr/include/stdlib.h" 3
extern int rpmatch (__const char *__response) ;
# 2 "bug.c" 2
# 1 "/usr/include/string.h" 1 3
# 26 "/usr/include/string.h" 3
# 1 "/usr/include/features.h" 1 3
# 27 "/usr/include/string.h" 2 3






# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/string.h" 2 3



extern void * memcpy (void * __restrict __dest, __const void * __restrict __src, size_t __n) ;



extern void * memmove (void * __dest, __const void * __src, size_t __n) ;






extern void * memccpy (void * __dest, __const void * __src, int __c, size_t __n) ;





extern void * memset (void * __s, int __c, size_t __n) ;


extern int memcmp (__const void * __s1, __const void * __s2, size_t __n) ;



extern void * memchr (__const void * __s, int __c, size_t __n) ;
# 71 "/usr/include/string.h" 3
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) ;


extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ;



extern char *strcat (char *__restrict __dest, __const char *__restrict __src) ;


extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) ;



extern int strcmp (__const char *__s1, __const char *__s2) ;

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) ;


extern int strcoll (__const char *__s1, __const char *__s2) ;

extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) ;
# 111 "/usr/include/string.h" 3
extern char *__strdup (__const char *__s) ;
extern char *strdup (__const char *__s) ;
# 146 "/usr/include/string.h" 3
extern char *strchr (__const char *__s, int __c) ;

extern char *strrchr (__const char *__s, int __c) ;
# 158 "/usr/include/string.h" 3
extern size_t strcspn (__const char *__s, __const char *__reject) ;


extern size_t strspn (__const char *__s, __const char *__accept) ;

extern char *strpbrk (__const char *__s, __const char *__accept) ;

extern char *strstr (__const char *__haystack, __const char *__needle) ;
# 176 "/usr/include/string.h" 3
extern char *strtok (char *__restrict __s, __const char *__restrict __delim) ;




extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ;



extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ;
# 207 "/usr/include/string.h" 3
extern size_t strlen (__const char *__s) ;
# 217 "/usr/include/string.h" 3
extern char *strerror (int __errnum) ;



extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ;
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ;




extern void __bzero (void * __s, size_t __n) ;



extern void bcopy (__const void * __src, void * __dest, size_t __n) ;


extern void bzero (void * __s, size_t __n) ;


extern int bcmp (__const void * __s1, __const void * __s2, size_t __n) ;


extern char *index (__const char *__s, int __c) ;


extern char *rindex (__const char *__s, int __c) ;



extern int __ffs (int __i) __attribute__ ((const));
extern int ffs (int __i) __attribute__ ((const));
# 261 "/usr/include/string.h" 3
extern int __strcasecmp (__const char *__s1, __const char *__s2) ;
extern int strcasecmp (__const char *__s1, __const char *__s2) ;


extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) ;
# 282 "/usr/include/string.h" 3
extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) ;
# 343 "/usr/include/string.h" 3
# 1 "/usr/include/bits/string.h" 1 3
# 344 "/usr/include/string.h" 2 3


# 1 "/usr/include/bits/string2.h" 1 3
# 52 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/endian.h" 1 3
# 53 "/usr/include/bits/string2.h" 2 3
# 1 "/usr/include/bits/types.h" 1 3
# 54 "/usr/include/bits/string2.h" 2 3
# 372 "/usr/include/bits/string2.h" 3
extern void * __rawmemchr (const void * __s, int __c);
# 396 "/usr/include/bits/string2.h" 3
extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t,
                                      __uint32_t, __uint32_t, size_t);
extern __inline char *
__strcpy_small (char *__dest,
                __uint16_t __src0_2, __uint16_t __src4_2,
                __uint32_t __src0_4, __uint32_t __src4_4,
                size_t __srclen)
{
  union {
    __uint32_t __ui;
    __uint16_t __usi;
    unsigned char __uc;
  } *__u = (void *) __dest;
  switch ((unsigned int) __srclen)
    {
    case 1:
      __u->__uc = '\0';
      break;
    case 2:
      __u->__usi = __src0_2;
      break;
    case 3:
      __u->__usi = __src0_2;
      __u = __extension__ ((void *) __u + 2);
      __u->__uc = '\0';
      break;
    case 4:
      __u->__ui = __src0_4;
      break;
    case 5:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__uc = '\0';
      break;
    case 6:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__usi = __src4_2;
      break;
    case 7:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__usi = __src4_2;
      __u = __extension__ ((void *) __u + 2);
      __u->__uc = '\0';
      break;
    case 8:
      __u->__ui = __src0_4;
      __u = __extension__ ((void *) __u + 4);
      __u->__ui = __src4_4;
      break;
    }
  return __dest;
}
# 873 "/usr/include/bits/string2.h" 3
extern __inline size_t __strcspn_c1 (__const char *__s, char __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, char __reject)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1,
                                     char __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, char __reject1, char __reject2)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2)
    ++__result;
  return __result;
}

extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1,
                                     char __reject2, char __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, char __reject1, char __reject2,
              char __reject3)
{
  register size_t __result = 0;
  while (__s[__result] != '\0' && __s[__result] != __reject1
         && __s[__result] != __reject2 && __s[__result] != __reject3)
    ++__result;
  return __result;
}
# 928 "/usr/include/bits/string2.h" 3
extern __inline size_t __strspn_c1 (__const char *__s, char __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, char __accept)
{
  register size_t __result = 0;

  while (__s[__result] == __accept)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c2 (__const char *__s, char __accept1,
                                    char __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, char __accept1, char __accept2)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2)
    ++__result;
  return __result;
}

extern __inline size_t __strspn_c3 (__const char *__s, char __accept1,
                                    char __accept2, char __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
{
  register size_t __result = 0;

  while (__s[__result] == __accept1 || __s[__result] == __accept2
         || __s[__result] == __accept3)
    ++__result;
  return __result;
}
# 983 "/usr/include/bits/string2.h" 3
extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1,
                                     char __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, char __accept1, char __accept2)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}

extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1,
                                     char __accept2, char __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, char __accept1, char __accept2,
              char __accept3)
{

  while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
         && *__s != __accept3)
    ++__s;
  return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
# 1044 "/usr/include/bits/string2.h" 3
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
  char *__result;
  if (__s == ((void *)0))
    __s = *__nextp;
  while (*__s == __sep)
    ++__s;
  if (*__s == '\0')
    __result = ((void *)0);
  else
    {
      __result = __s;
      while (*__s != '\0' && *__s != __sep)
        ++__s;
      if (*__s == '\0')
        *__nextp = __s;
      else
        {
          *__s = '\0';
          *__nextp = __s + 1;
        }
    }
  return __result;
}
# 1094 "/usr/include/bits/string2.h" 3
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject)
    *(*__s)++ = '\0';
  else
    if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0))
      *(*__s)++ = '\0';
    else
      *__s = ((void *)0);
  return __retval;
}

extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject1 || *__retval == __reject2)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2)
        ++__cp;
      if (*__cp != '\0')
        {
          *__s = __cp;
          *(*__s)++ = '\0';
        }
      else
        *__s = ((void *)0);
    }
  return __retval;
}

extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
                                   char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return *__s = ((void *)0);
  if (*__retval == __reject1 || *__retval == __reject2
      || *__retval == __reject3)
    *(*__s)++ = '\0';
  else
    {
      register char *__cp = __retval;
      while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2
             && *__cp != __reject3)
        ++__cp;
      if (*__cp != '\0')
        {
          *__s = __cp;
          *(*__s)++ = '\0';
        }
      else
        *__s = ((void *)0);
    }
  return __retval;
}

extern __inline char *__strsep_g (char **__s, __const char *__reject);
extern __inline char *
__strsep_g (char **__s, __const char *__reject)
{
  register char *__retval = *__s;
  if (__retval == ((void *)0))
    return ((void *)0);
  if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void *)0) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0))
    *(*__s)++ = '\0';
  return __retval;
}
# 1187 "/usr/include/bits/string2.h" 3
# 1 "/usr/include/stdlib.h" 1 3
# 1188 "/usr/include/bits/string2.h" 2 3
# 347 "/usr/include/string.h" 2 3
# 3 "bug.c" 2
# 1 "red.h" 1
# 115 "red.h"
enum bool_enum { false, true };
typedef enum bool_enum bool;


enum tag_t {
        T_IND, T_APP, T_PAIR, T_NIL, T_INT, T_BOOL,
        T_PORT, T_COMB, T_SYM, T_FORWARD, T_HOLE2
};

typedef int Int;
typedef struct Node_t * HeapPtr;

struct info_t {
        HeapPtr (*unwind)(void);
        HeapPtr (*eval)(void);
        HeapPtr ( *relocate)(HeapPtr) __attribute__((__regparm__(3)));

        void (*scan)(void);



        const char *(*to_string)(HeapPtr);
        enum tag_t tag;

};

extern HeapPtr ind_eval(void);
extern HeapPtr app_eval(void);
extern HeapPtr data_eval(void);
extern HeapPtr error_eval(void) __attribute__ ((noreturn)) ;
extern void spine_stack_overflow(void) __attribute__ ((noreturn)) ;
extern void grow_spine(void);
extern int spine_get_offset(HeapPtr *);
extern HeapPtr *spine_at_offset(int);

extern void error_scan(void) __attribute__ ((noreturn)) ;



extern HeapPtr static_relocate(HeapPtr) __attribute__((__regparm__(3)));
extern HeapPtr error_relocate(HeapPtr) __attribute__((__regparm__(3))) __attribute__ ((noreturn));
extern HeapPtr ind_unwind(void);
extern HeapPtr app_unwind(void);
extern HeapPtr data_unwind(void);
extern HeapPtr error_unwind(void) __attribute__ ((noreturn)) ;
extern const char *hole2_to_string(HeapPtr);
extern const char *ind_to_string(HeapPtr);
extern const char *app_to_string(HeapPtr);
extern const char *pair_to_string(HeapPtr);
extern const char *nil_to_string(HeapPtr);
extern const char *bool_to_string(HeapPtr);
extern const char *int_to_string(HeapPtr);
extern const char *sint_to_string(HeapPtr);
extern const char *hint_to_string(HeapPtr);
extern const char *port_to_string(HeapPtr);
extern const char *sym_to_string(HeapPtr);
extern const char *forward_to_string(HeapPtr);
extern const char *error_show(HeapPtr);


extern const struct info_t ind_info, app_info, pair_info,
        nil_info, int_info, bool_info, port_info, comb_info,
        sym_info, forward_info, hole2_info;

struct Node_t {
        const struct info_t *info;
        union {

                HeapPtr ptr[2];

                Int n;

                const char *s;

                int port;

                bool b;
        } v;
};
# 237 "red.h"
extern bool output_to_screen;
extern int Xopt;




 extern HeapPtr *Spine;





 register HeapPtr *Sp __asm__ ("%esi");



 extern HeapPtr *Base;







 register char *Hp __asm__ ("%edi");



 extern char *end_heap;
# 274 "red.h"
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 147 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef int ptrdiff_t;
# 275 "red.h" 2
# 1 "/usr/include/stdio.h" 1 3
# 27 "/usr/include/stdio.h" 3
# 1 "/usr/include/features.h" 1 3
# 28 "/usr/include/stdio.h" 2 3





# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 34 "/usr/include/stdio.h" 2 3




# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
# 43 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 39 "/usr/include/stdio.h" 2 3

# 1 "/usr/include/bits/types.h" 1 3
# 41 "/usr/include/stdio.h" 2 3







typedef struct _IO_FILE FILE;
# 57 "/usr/include/stdio.h" 3
# 1 "/usr/include/libio.h" 1 3
# 30 "/usr/include/libio.h" 3
# 1 "/usr/include/_G_config.h" 1 3
# 9 "/usr/include/_G_config.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 10 "/usr/include/_G_config.h" 2 3




# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 312 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 3
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3
# 35 "/usr/include/_G_config.h" 3
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
# 31 "/usr/include/libio.h" 2 3
# 48 "/usr/include/libio.h" 3
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stdarg.h" 1 3
# 49 "/usr/include/libio.h" 2 3
# 154 "/usr/include/libio.h" 3
struct _IO_jump_t; struct _IO_FILE;
# 164 "/usr/include/libio.h" 3
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 187 "/usr/include/libio.h" 3
};

struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 233 "/usr/include/libio.h" 3
  __off64_t _offset;

  int _unused2[16];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 262 "/usr/include/libio.h" 3
typedef __ssize_t __io_read_fn (void * __cookie, char *__buf, size_t __nbytes);
# 271 "/usr/include/libio.h" 3
typedef __ssize_t __io_write_fn (void * __cookie, __const char *__buf, size_t __n);
# 280 "/usr/include/libio.h" 3
typedef int __io_seek_fn (void * __cookie, __off_t __pos, int __w);


typedef int __io_close_fn (void * __cookie);
# 318 "/usr/include/libio.h" 3
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
# 337 "/usr/include/libio.h" 3
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;

extern int _IO_peekc_locked (_IO_FILE *__fp) ;





extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 363 "/usr/include/libio.h" 3
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict) ;

extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gnuc_va_list) ;

extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;

extern void _IO_free_backup_area (_IO_FILE *) ;
# 58 "/usr/include/stdio.h" 2 3



typedef __off_t fpos_t;
# 110 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio_lim.h" 1 3
# 111 "/usr/include/stdio.h" 2 3



extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;







extern int remove (__const char *__filename) ;

extern int rename (__const char *__old, __const char *__new) ;




extern FILE *tmpfile (void) ;
# 143 "/usr/include/stdio.h" 3
extern char *tmpnam (char *__s) ;




extern char *tmpnam_r (char *__s) ;
# 160 "/usr/include/stdio.h" 3
extern char *tempnam (__const char *__dir, __const char *__pfx) ;




extern int fclose (FILE *__stream) ;

extern int fflush (FILE *__stream) ;



extern int fflush_unlocked (FILE *__stream) ;
# 182 "/usr/include/stdio.h" 3
extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) ;


extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) ;
# 212 "/usr/include/stdio.h" 3
extern FILE *fdopen (int __fd, __const char *__modes) ;
# 232 "/usr/include/stdio.h" 3
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ;





extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ;



extern void setlinebuf (FILE *__stream) ;




extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) ;


extern int printf (__const char *__restrict __format, ...) ;

extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) ;



extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ;



extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) ;


extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ;





extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...)

     __attribute__ ((__format__ (__printf__, 3, 4)));

extern int __vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg)


     __attribute__ ((__format__ (__printf__, 3, 0)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg)


     __attribute__ ((__format__ (__printf__, 3, 0)));
# 310 "/usr/include/stdio.h" 3
extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) ;


extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ;
# 338 "/usr/include/stdio.h" 3
extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;


extern int getchar (void) ;







extern int getc_unlocked (FILE *__stream) ;
extern int getchar_unlocked (void) ;




extern int fgetc_unlocked (FILE *__stream) ;




extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;


extern int putchar (int __c) ;







extern int fputc_unlocked (int __c, FILE *__stream) ;




extern int putc_unlocked (int __c, FILE *__stream) ;
extern int putchar_unlocked (int __c) ;





extern int getw (FILE *__stream) ;


extern int putw (int __w, FILE *__stream) ;




extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) ;
# 404 "/usr/include/stdio.h" 3
extern char *gets (char *__s) ;
# 428 "/usr/include/stdio.h" 3
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) ;
# 438 "/usr/include/stdio.h" 3
extern int puts (__const char *__s) ;



extern int ungetc (int __c, FILE *__stream) ;



extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ;


extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) ;




extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ;

extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ;






extern int fseek (FILE *__stream, long int __off, int __whence) ;

extern long int ftell (FILE *__stream) ;

extern void rewind (FILE *__stream) ;
# 499 "/usr/include/stdio.h" 3
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) ;


extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 536 "/usr/include/stdio.h" 3
extern void clearerr (FILE *__stream) ;

extern int feof (FILE *__stream) ;

extern int ferror (FILE *__stream) ;



extern void clearerr_unlocked (FILE *__stream) ;
extern int feof_unlocked (FILE *__stream) ;
extern int ferror_unlocked (FILE *__stream) ;




extern void perror (__const char *__s) ;




extern int sys_nerr;
extern __const char *__const sys_errlist[];
# 567 "/usr/include/stdio.h" 3
extern int fileno (FILE *__stream) ;




extern int fileno_unlocked (FILE *__stream) ;






extern FILE *popen (__const char *__command, __const char *__modes) ;


extern int pclose (FILE *__stream) ;





extern char *ctermid (char *__s) ;
# 614 "/usr/include/stdio.h" 3
extern void flockfile (FILE *__stream) ;



extern int ftrylockfile (FILE *__stream) ;


extern void funlockfile (FILE *__stream) ;
# 635 "/usr/include/stdio.h" 3
# 1 "/usr/include/bits/stdio.h" 1 3
# 32 "/usr/include/bits/stdio.h" 3
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
  return vfprintf (stdout, __fmt, __arg);
}


extern __inline int
getchar (void)
{
  return _IO_getc (stdin);
}




extern __inline int
getc_unlocked (FILE *__fp)
{
  return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}


extern __inline int
getchar_unlocked (void)
{
  return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}




extern __inline int
putchar (int __c)
{
  return _IO_putc (__c, stdout);
}




extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}





extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
  return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}


extern __inline int
putchar_unlocked (int __c)
{
  return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
}
# 110 "/usr/include/bits/stdio.h" 3
extern __inline int
feof_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x10) != 0);
}


extern __inline int
ferror_unlocked (FILE *__stream)
{
  return (((__stream)->_flags & 0x20) != 0);
}
# 636 "/usr/include/stdio.h" 2 3
# 276 "red.h" 2




extern int stats;
extern void stats_printf(int, const char *, ...) __attribute__ ((format (printf, (2), (2)+1)));
extern void gc_stats(FILE *);
extern void sp_stats(FILE *);

# 1 "timer.h" 1
# 9 "timer.h"
# 1 "/usr/include/time.h" 1 3
# 28 "/usr/include/time.h" 3
# 1 "/usr/include/features.h" 1 3
# 29 "/usr/include/time.h" 2 3
# 38 "/usr/include/time.h" 3
# 1 "/usr/local/gcc-3.0.1/lib/gcc-lib/i686-pc-linux-gnu/3.0.1/include/stddef.h" 1 3
# 39 "/usr/include/time.h" 2 3



# 1 "/usr/include/bits/time.h" 1 3
# 43 "/usr/include/time.h" 2 3
# 57 "/usr/include/time.h" 3
# 1 "/usr/include/bits/types.h" 1 3
# 58 "/usr/include/time.h" 2 3


typedef __clock_t clock_t;
# 95 "/usr/include/time.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;


  long int tm_gmtoff;
  __const char *tm_zone;




};




extern clock_t clock (void) ;


extern time_t time (time_t *__timer) ;


extern double difftime (time_t __time1, time_t __time0)
     __attribute__ ((__const__));


extern time_t mktime (struct tm *__tp) ;





extern size_t strftime (char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) ;
# 149 "/usr/include/time.h" 3
extern struct tm *gmtime (__const time_t *__timer) ;



extern struct tm *localtime (__const time_t *__timer) ;




extern struct tm *__gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ;

extern struct tm *gmtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ;




extern struct tm *localtime_r (__const time_t *__restrict __timer, struct tm *__restrict __tp) ;





extern char *asctime (__const struct tm *__tp) ;


extern char *ctime (__const time_t *__timer) ;






extern char *asctime_r (__const struct tm *__restrict __tp, char *__restrict __buf) ;



extern char *ctime_r (__const time_t *__restrict __timer, char *__restrict __buf) ;





extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;




extern char *tzname[2];



extern void tzset (void) ;



extern int daylight;
extern long int timezone;





extern int stime (__const time_t *__when) ;
# 228 "/usr/include/time.h" 3
extern time_t timegm (struct tm *__tp) ;


extern time_t timelocal (struct tm *__tp) ;


extern int dysize (int __year) ;





extern int nanosleep (__const struct timespec *__requested_time, struct timespec *__remaining) ;
# 10 "timer.h" 2

    typedef struct xtime_struct { clock_t u, s, e; } xtime_t;
# 22 "timer.h"
extern void xtime_init(xtime_t *);
extern void xtime_get(xtime_t *);
extern void xtime_get_elapsed(xtime_t *, const xtime_t *);
extern void xtime_add(xtime_t *, const xtime_t *, const xtime_t *);
extern void xtime_sub(xtime_t *, const xtime_t *, const xtime_t *);
extern double xtime_to_sec(const xtime_t *);

# 1 "/usr/include/stdio.h" 1 3
# 30 "timer.h" 2
extern void xtime_show(FILE *, const xtime_t *);
# 286 "red.h" 2

extern xtime_t total_GC_time;

extern HeapPtr *min_Sp;
# 300 "red.h"
extern HeapPtr eval(void);

extern void force_string(char *, int, HeapPtr);


void init_input(void);
void finalize_input(void);
HeapPtr link_code(void);
void load_file(FILE *);






extern size_t asciiz_len(const char *);
extern int asciiz_cmp(const char *, const char *);
extern void asciiz_cpy(char *, const char *);


extern void init_memory(void);
extern void need_heap(size_t) __attribute__((__stdcall__));
HeapPtr mk_app(HeapPtr, HeapPtr);
HeapPtr mk_int(Int);
HeapPtr mk_sym(const char *);
HeapPtr mk_pair(HeapPtr, HeapPtr);
extern bool port_input_p(int);
extern int port_getchar(int);




extern struct Node_t Nil_node;


extern struct Node_t False_node, True_node;

extern HeapPtr mk_port(bool, FILE *);



extern void pr_string(HeapPtr);


extern void fatal(const char *, ...) __attribute__ ((noreturn)) __attribute__ ((format (printf, (1), (1)+1)));


extern void init_symtab(void);
extern const char *register_symbol(const char *);


# 1 "combs.h" 1
enum comb_enum {
        C_input = 80,
        C_pairP = 71,
        C_eq = 44,
        C_succ = 35,
        C_B1 = 4,
        C_output = 81,
        C_neq = 45,
        C_pred = 36,
        C_C1 = 5,
        C_charP = 73,
        C_zeroP = 46,
        C_Rsub = 37,
        C_Bs = 6,
        C_ERROR = 100,
        C_numberP = 74,
        C_Rdiv = 38,
        C_I = 7,
        C_compare0 = 48,
        C_Rrem = 39,
        C_K = 8,
        C_LISTCASE = 102,
        C_U = 9,
        C_Y = 10,
        C_cons = 20,
        C_W = 11,
        C_READ = 105,
        C_add = 30,
        C_K1 = 12,
        C_STD_PORT = 106,
        C_less = 40,
        C_mul = 31,
        C_S = 0,
        C_if = 50,
        C_less_eq = 41,
        C_sub = 32,
        C_B = 1,
        C_not = 51,
        C_greater = 42,
        C_div = 33,
        C_C = 2,
        C_booleanP = 70,
        C_gr_eq = 43,
        C_rem = 34,
        C_S1 = 3,
        NUM_COMBS = 107
};
# 352 "red.h" 2


extern long num_reductions[NUM_COMBS], num_argcheck[NUM_COMBS];


struct comb_struct {
        const struct info_t *info;
};


extern struct comb_struct combs[NUM_COMBS];



extern const char *comb_name_table[NUM_COMBS];
# 4 "bug.c" 2

int spine_size;

int spine_get_offset(HeapPtr *p)
{
        return &Spine[spine_size] - p;
}

HeapPtr *spine_at_offset(int o)
{
        return &Spine[spine_size - o];
}


void grow_spine(void)
{
        int sp_pos, base_pos, old_size, new_size;
        int min_pos;

        old_size = spine_size;
        new_size = 2 * spine_size;
        sp_pos = spine_get_offset(Sp);
        base_pos = spine_get_offset(Base);
        min_pos = spine_get_offset(min_Sp);
        Spine = realloc(Spine, new_size * sizeof (HeapPtr));
        if (Spine == ((void *)0))
                fatal("Spine stack overflow");
        spine_size = new_size;
        Sp = spine_at_offset(sp_pos);
        Base = spine_at_offset(base_pos);
        min_Sp = spine_at_offset(min_pos);
        memcpy(&Spine[old_size], Spine, old_size * sizeof (HeapPtr));
}


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-09-28 20:36 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-09-11  3:06 optimization/4296: Unable to find a register to spill in class `SIREG' Christoph Breitkopf
  -- strict thread matches above, loose matches on Subject: below --
2001-09-28 20:36 aoliva
2001-09-11  2:36 chr.breitkopf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).