This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
merge_pointed_to_info
- From: Nathan Sidwell <nathan at codesourcery dot com>
- To: gcc <gcc at gcc dot gnu dot org>, Diego Novillo <dnovillo at redhat dot com>
- Date: Wed, 03 Nov 2004 09:33:44 +0000
- Subject: merge_pointed_to_info
- Organization: Codesourcery LLC
Something looks wrong in merge_pointed_to_info.
static void
merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig)
{
struct ptr_info_def *dest_pi, *orig_pi;
/* Make sure we have points-to information for ORIG. */
collect_points_to_info_for (ai, orig);
dest_pi = get_ptr_info (dest);
orig_pi = SSA_NAME_PTR_INFO (orig);
At this point is it an error for dest_pi == orig_pi ? The later code
looks like it will break if they are.
dest_pi->pt_malloc = 0;
if (orig_pi->pt_malloc || orig_pi->pt_anything)
set_pt_anything (dest);
However, the attached file contains such an instance, when compiled for
i686-pc-linux-gnu at -O2. My suspicion was aroused when bitmap_ior_into
was called with the same bitmap.
nathan
--
Nathan Sidwell :: http://www.codesourcery.com :: CodeSourcery LLC
nathan@codesourcery.com :: http://www.planetfall.pwp.blueyonder.co.uk
# 1 "../../gcc/gcc/gengtype.c"
# 1 "/home/nathan/egcs/HEAD/i686-pc-linux-gnu/gcc//"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../../gcc/gcc/gengtype.c"
# 21 "../../gcc/gcc/gengtype.c"
# 1 "./bconfig.h" 1
# 1 "./auto-host.h" 1
# 4 "./bconfig.h" 2
# 1 "../../gcc/gcc/../include/ansidecl.h" 1
# 6 "./bconfig.h" 2
# 22 "../../gcc/gcc/gengtype.c" 2
# 1 "../../gcc/gcc/system.h" 1
# 28 "../../gcc/gcc/system.h"
# 1 "./include/stdarg.h" 1 3 4
# 43 "./include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 105 "./include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 29 "../../gcc/gcc/system.h" 2
# 39 "../../gcc/gcc/system.h"
# 1 "./include/stddef.h" 1 3 4
# 152 "./include/stddef.h" 3 4
typedef int ptrdiff_t;
# 214 "./include/stddef.h" 3 4
typedef unsigned int size_t;
# 326 "./include/stddef.h" 3 4
typedef long int wchar_t;
# 40 "../../gcc/gcc/system.h" 2
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 291 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 292 "/usr/include/features.h" 2 3 4
# 314 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 315 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4
# 1 "./include/stddef.h" 1 3 4
# 35 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/bits/types.h" 1 3 4
# 28 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4
# 1 "./include/stddef.h" 1 3 4
# 32 "/usr/include/bits/types.h" 2 3 4
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
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;
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 128 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 129 "/usr/include/bits/types.h" 2 3 4
typedef unsigned long long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef int __daddr_t;
typedef long int __swblk_t;
typedef int __key_t;
typedef int __clockid_t;
typedef int __timer_t;
typedef long int __blksize_t;
typedef long int __blkcnt_t;
typedef long long int __blkcnt64_t;
typedef unsigned long int __fsblkcnt_t;
typedef unsigned long long int __fsblkcnt64_t;
typedef unsigned long int __fsfilcnt_t;
typedef unsigned long long int __fsfilcnt64_t;
typedef int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
typedef int __intptr_t;
typedef unsigned int __socklen_t;
# 37 "/usr/include/stdio.h" 2 3 4
typedef struct _IO_FILE FILE;
# 62 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 72 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 355 "./include/stddef.h" 3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 63 "/usr/include/wchar.h" 3 4
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 63 "/usr/include/wchar.h" 3 4
# 29 "/usr/include/gconv.h" 2 3 4
# 1 "./include/stddef.h" 1 3 4
# 32 "/usr/include/gconv.h" 2 3 4
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
__gconv_fct __fct;
__gconv_btowc_fct __btowc_fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
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__)));
# 33 "/usr/include/libio.h" 2 3 4
# 162 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 172 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
# 195 "/usr/include/libio.h" 3 4
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
# 263 "/usr/include/libio.h" 3 4
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 _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
# 311 "/usr/include/libio.h" 3 4
__off64_t _offset;
void *__pad1;
void *__pad2;
int _mode;
char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
};
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_;
# 350 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
typedef __io_read_fn cookie_read_function_t;
typedef __io_write_fn cookie_write_function_t;
typedef __io_seek_fn cookie_seek_function_t;
typedef __io_close_fn cookie_close_function_t;
typedef struct
{
__io_read_fn *read;
__io_write_fn *write;
__io_seek_fn *seek;
__io_close_fn *close;
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;
struct _IO_cookie_file;
extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
void *__cookie, _IO_cookie_io_functions_t __fns);
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 432 "/usr/include/libio.h" 3 4
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 *) ;
# 462 "/usr/include/libio.h" 3 4
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 *) ;
# 73 "/usr/include/stdio.h" 2 3 4
# 86 "/usr/include/stdio.h" 3 4
typedef _G_fpos_t fpos_t;
typedef _G_fpos64_t fpos64_t;
# 138 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 139 "/usr/include/stdio.h" 2 3 4
extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;
extern int remove (__const char *__filename) ;
extern int rename (__const char *__old, __const char *__new) ;
extern FILE *tmpfile (void) ;
# 173 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) ;
extern FILE *tmpfile64 (void) ;
extern char *tmpnam_r (char *__s) ;
# 195 "/usr/include/stdio.h" 3 4
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__malloc__));
extern int fclose (FILE *__stream) ;
extern int fflush (FILE *__stream) ;
extern int fflush_unlocked (FILE *__stream) ;
extern int fcloseall (void) ;
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) ;
# 241 "/usr/include/stdio.h" 3 4
extern FILE *fopen64 (__const char *__restrict __filename,
__const char *__restrict __modes) ;
extern FILE *freopen64 (__const char *__restrict __filename,
__const char *__restrict __modes,
FILE *__restrict __stream) ;
extern FILE *fdopen (int __fd, __const char *__modes) ;
extern FILE *fopencookie (void *__restrict __magic_cookie,
__const char *__restrict __modes,
_IO_cookie_io_functions_t __io_funcs) ;
extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) ;
extern FILE *open_memstream (char **__restrict __bufloc,
size_t *__restrict __sizeloc) ;
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 vasprintf (char **__restrict __ptr, __const char *__restrict __f,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 2, 0)));
extern int __asprintf (char **__restrict __ptr,
__const char *__restrict __fmt, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int asprintf (char **__restrict __ptr,
__const char *__restrict __fmt, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int vdprintf (int __fd, __const char *__restrict __fmt,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
__attribute__ ((__format__ (__printf__, 2, 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, ...) ;
extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 2, 0)));
extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 1, 0)));
extern int vsscanf (__const char *__restrict __s,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 2, 0)));
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)
;
extern char *gets (char *__s) ;
extern char *fgets_unlocked (char *__restrict __s, int __n,
FILE *__restrict __stream) ;
# 463 "/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream) ;
extern __ssize_t getline (char **__restrict __lineptr,
size_t *__restrict __n,
FILE *__restrict __stream) ;
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
;
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 int fputs_unlocked (__const char *__restrict __s,
FILE *__restrict __stream) ;
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) ;
# 530 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence) ;
extern __off_t ftello (FILE *__stream) ;
# 546 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
;
extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 565 "/usr/include/stdio.h" 3 4
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence) ;
extern __off64_t ftello64 (FILE *__stream) ;
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos)
;
extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos) ;
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) ;
# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 27 "/usr/include/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern __const char *__const sys_errlist[];
extern int _sys_nerr;
extern __const char *__const _sys_errlist[];
# 602 "/usr/include/stdio.h" 2 3 4
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) ;
extern char *cuserid (char *__s) ;
struct obstack;
extern int obstack_printf (struct obstack *__restrict __obstack,
__const char *__restrict __format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
__const char *__restrict __format,
__gnuc_va_list __args)
__attribute__ ((__format__ (__printf__, 2, 0)));
extern void flockfile (FILE *__stream) ;
extern int ftrylockfile (FILE *__stream) ;
extern void funlockfile (FILE *__stream) ;
# 676 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio.h" 1 3 4
# 33 "/usr/include/bits/stdio.h" 3 4
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)));
}
extern __inline __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream)
{
return __getdelim (__lineptr, __n, '\n', __stream);
}
extern __inline int
feof_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
ferror_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x20) != 0);
}
# 677 "/usr/include/stdio.h" 2 3 4
# 43 "../../gcc/gcc/system.h" 2
# 107 "../../gcc/gcc/system.h"
# 1 "../../gcc/gcc/../include/safe-ctype.h" 1
# 61 "../../gcc/gcc/../include/safe-ctype.h"
enum {
_sch_isblank = 0x0001,
_sch_iscntrl = 0x0002,
_sch_isdigit = 0x0004,
_sch_islower = 0x0008,
_sch_isprint = 0x0010,
_sch_ispunct = 0x0020,
_sch_isspace = 0x0040,
_sch_isupper = 0x0080,
_sch_isxdigit = 0x0100,
_sch_isidst = 0x0200,
_sch_isvsp = 0x0400,
_sch_isnvsp = 0x0800,
_sch_isalpha = _sch_isupper|_sch_islower,
_sch_isalnum = _sch_isalpha|_sch_isdigit,
_sch_isidnum = _sch_isidst|_sch_isdigit,
_sch_isgraph = _sch_isalnum|_sch_ispunct,
_sch_iscppsp = _sch_isvsp|_sch_isnvsp,
_sch_isbasic = _sch_isprint|_sch_iscppsp
};
extern const unsigned short _sch_istable[256];
# 114 "../../gcc/gcc/../include/safe-ctype.h"
extern const unsigned char _sch_toupper[256];
extern const unsigned char _sch_tolower[256];
# 108 "../../gcc/gcc/system.h" 2
# 1 "/usr/include/sys/types.h" 1 3 4
# 29 "/usr/include/sys/types.h" 3 4
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;
typedef __ino64_t ino64_t;
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;
typedef __off64_t off64_t;
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;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 58 "/usr/include/time.h" 3 4
typedef __clock_t clock_t;
# 74 "/usr/include/time.h" 3 4
typedef __time_t time_t;
# 92 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 104 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4
typedef __useconds_t useconds_t;
typedef __suseconds_t suseconds_t;
# 1 "./include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 191 "/usr/include/sys/types.h" 3 4
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__)));
# 213 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 214 "/usr/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 23 "/usr/include/bits/sigset.h" 3 4
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 4
typedef __sigset_t sigset_t;
# 1 "/usr/include/time.h" 1 3 4
# 118 "/usr/include/time.h" 3 4
struct timespec
{
__time_t tv_sec;
long int tv_nsec;
};
# 45 "/usr/include/sys/select.h" 2 3 4
# 1 "/usr/include/bits/time.h" 1 3 4
# 69 "/usr/include/bits/time.h" 3 4
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
# 47 "/usr/include/sys/select.h" 2 3 4
# 55 "/usr/include/sys/select.h" 3 4
typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
{
__fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
} fd_set;
typedef __fd_mask fd_mask;
# 99 "/usr/include/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout) ;
extern int pselect (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
const struct timespec *__restrict __timeout,
const __sigset_t *__restrict __sigmask) ;
# 217 "/usr/include/sys/types.h" 2 3 4
# 1 "/usr/include/sys/sysmacros.h" 1 3 4
# 220 "/usr/include/sys/types.h" 2 3 4
typedef __blksize_t blksize_t;
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 258 "/usr/include/sys/types.h" 3 4
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 23 "/usr/include/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/bits/sched.h" 1 3 4
# 83 "/usr/include/bits/sched.h" 3 4
struct __sched_param
{
int __sched_priority;
};
# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
struct _pthread_fastlock
{
long int __status;
int __spinlock;
};
typedef struct _pthread_descr_struct *_pthread_descr;
typedef struct __pthread_attr_s
{
int __detachstate;
int __schedpolicy;
struct __sched_param __schedparam;
int __inheritsched;
int __scope;
size_t __guardsize;
int __stackaddr_set;
void *__stackaddr;
size_t __stacksize;
} pthread_attr_t;
__extension__ typedef long long __pthread_cond_align_t;
typedef struct
{
struct _pthread_fastlock __c_lock;
_pthread_descr __c_waiting;
char __padding[48 - sizeof (struct _pthread_fastlock)
- sizeof (_pthread_descr) - sizeof (__pthread_cond_align_t)];
__pthread_cond_align_t __align;
} pthread_cond_t;
typedef struct
{
int __dummy;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef struct
{
int __m_reserved;
int __m_count;
_pthread_descr __m_owner;
int __m_kind;
struct _pthread_fastlock __m_lock;
} pthread_mutex_t;
typedef struct
{
int __mutexkind;
} pthread_mutexattr_t;
typedef int pthread_once_t;
typedef struct _pthread_rwlock_t
{
struct _pthread_fastlock __rw_lock;
int __rw_readers;
_pthread_descr __rw_writer;
_pthread_descr __rw_read_waiting;
_pthread_descr __rw_write_waiting;
int __rw_kind;
int __rw_pshared;
} pthread_rwlock_t;
typedef struct
{
int __lockkind;
int __pshared;
} pthread_rwlockattr_t;
typedef volatile int pthread_spinlock_t;
typedef struct {
struct _pthread_fastlock __ba_lock;
int __ba_required;
int __ba_present;
_pthread_descr __ba_waiting;
} pthread_barrier_t;
typedef struct {
int __pshared;
} pthread_barrierattr_t;
typedef unsigned long int pthread_t;
# 267 "/usr/include/sys/types.h" 2 3 4
# 110 "../../gcc/gcc/system.h" 2
# 1 "/usr/include/errno.h" 1 3 4
# 32 "/usr/include/errno.h" 3 4
# 1 "/usr/include/bits/errno.h" 1 3 4
# 25 "/usr/include/bits/errno.h" 3 4
# 1 "/usr/include/linux/errno.h" 1 3 4
# 1 "/usr/include/asm/errno.h" 1 3 4
# 5 "/usr/include/linux/errno.h" 2 3 4
# 26 "/usr/include/bits/errno.h" 2 3 4
# 38 "/usr/include/bits/errno.h" 3 4
extern int *__errno_location (void) __attribute__ ((__const__));
# 37 "/usr/include/errno.h" 2 3 4
# 55 "/usr/include/errno.h" 3 4
extern char *program_invocation_name, *program_invocation_short_name;
# 69 "/usr/include/errno.h" 3 4
typedef int error_t;
# 112 "../../gcc/gcc/system.h" 2
# 122 "../../gcc/gcc/system.h"
# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4
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 *__restrict __dest, __const void *__restrict __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)
__attribute__ ((__pure__));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
extern void *rawmemchr (__const void *__s, int __c) __attribute__ ((__pure__));
extern void *memrchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__pure__));
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)
__attribute__ ((__pure__));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__pure__));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
# 1 "/usr/include/xlocale.h" 1 3 4
# 28 "/usr/include/xlocale.h" 3 4
typedef struct __locale_struct
{
struct locale_data *__locales[13];
const unsigned short int *__ctype_b;
const int *__ctype_tolower;
const int *__ctype_toupper;
const char *__names[13];
} *__locale_t;
# 115 "/usr/include/string.h" 2 3 4
extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
__attribute__ ((__pure__));
extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
__locale_t __l) ;
extern char *strdup (__const char *__s) __attribute__ ((__malloc__));
extern char *strndup (__const char *__string, size_t __n)
__attribute__ ((__malloc__));
# 160 "/usr/include/string.h" 3 4
extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *strchrnul (__const char *__s, int __c) __attribute__ ((__pure__));
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__pure__));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__pure__));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__pure__));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__pure__));
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) ;
extern char *strcasestr (__const char *__haystack, __const char *__needle)
__attribute__ ((__pure__));
extern void *memmem (__const void *__haystack, size_t __haystacklen,
__const void *__needle, size_t __needlelen)
__attribute__ ((__pure__));
extern void *__mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern void *mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n) ;
extern size_t strlen (__const char *__s) __attribute__ ((__pure__));
extern size_t strnlen (__const char *__string, size_t __maxlen)
__attribute__ ((__pure__));
extern char *strerror (int __errnum) ;
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)
__attribute__ ((__pure__));
extern char *index (__const char *__s, int __c) __attribute__ ((__pure__));
extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__));
extern int ffs (int __i) __attribute__ ((__const__));
extern int ffsl (long int __l) __attribute__ ((__const__));
__extension__ extern int ffsll (long long int __ll)
__attribute__ ((__const__));
extern int strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__pure__));
extern int strcasecmp_l (__const char *__s1, __const char *__s2,
__locale_t __loc) __attribute__ ((__pure__));
extern int strncasecmp_l (__const char *__s1, __const char *__s2,
size_t __n, __locale_t __loc)
__attribute__ ((__pure__));
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim) ;
extern int strverscmp (__const char *__s1, __const char *__s2)
__attribute__ ((__pure__));
extern char *strsignal (int __sig) ;
extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
;
extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
;
extern char *__stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n) ;
extern char *strfry (char *__string) ;
extern void *memfrob (void *__s, size_t __n) ;
extern char *basename (__const char *__filename) ;
# 372 "/usr/include/string.h" 3 4
# 1 "/usr/include/bits/string.h" 1 3 4
# 373 "/usr/include/string.h" 2 3 4
# 1 "/usr/include/bits/string2.h" 1 3 4
# 376 "/usr/include/string.h" 2 3 4
# 123 "../../gcc/gcc/system.h" 2
# 1 "/usr/include/strings.h" 1 3 4
# 124 "../../gcc/gcc/system.h" 2
# 135 "../../gcc/gcc/system.h"
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/bits/waitflags.h" 1 3 4
# 43 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/bits/waitstatus.h" 1 3 4
# 65 "/usr/include/bits/waitstatus.h" 3 4
union wait
{
int w_status;
struct
{
unsigned int __w_termsig:7;
unsigned int __w_coredump:1;
unsigned int __w_retcode:8;
unsigned int:16;
} __wait_terminated;
struct
{
unsigned int __w_stopval:8;
unsigned int __w_stopsig:8;
unsigned int:16;
} __wait_stopped;
};
# 44 "/usr/include/stdlib.h" 2 3 4
# 68 "/usr/include/stdlib.h" 3 4
typedef union
{
union wait *__uptr;
int *__iptr;
} __WAIT_STATUS __attribute__ ((__transparent_union__));
# 93 "/usr/include/stdlib.h" 3 4
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
__extension__ typedef struct
{
long long int quot;
long long int rem;
} lldiv_t;
# 137 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) ;
extern double atof (__const char *__nptr) __attribute__ ((__pure__));
extern int atoi (__const char *__nptr) __attribute__ ((__pure__));
extern long int atol (__const char *__nptr) __attribute__ ((__pure__));
__extension__ extern long long int atoll (__const char *__nptr)
__attribute__ ((__pure__));
extern double strtod (__const char *__restrict __nptr,
char **__restrict __endptr) ;
extern float strtof (__const char *__restrict __nptr,
char **__restrict __endptr) ;
extern long double strtold (__const char *__restrict __nptr,
char **__restrict __endptr) ;
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)
;
__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)
;
# 229 "/usr/include/stdlib.h" 3 4
extern long int strtol_l (__const char *__restrict __nptr,
char **__restrict __endptr, int __base,
__locale_t __loc) ;
extern unsigned long int strtoul_l (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, __locale_t __loc) ;
__extension__
extern long long int strtoll_l (__const char *__restrict __nptr,
char **__restrict __endptr, int __base,
__locale_t __loc) ;
__extension__
extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
char **__restrict __endptr,
int __base, __locale_t __loc)
;
extern double strtod_l (__const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc)
;
extern float strtof_l (__const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc) ;
extern long double strtold_l (__const char *__restrict __nptr,
char **__restrict __endptr,
__locale_t __loc) ;
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)
;
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);
}
extern __inline float
strtof (__const char *__restrict __nptr, char **__restrict __endptr)
{
return __strtof_internal (__nptr, __endptr, 0);
}
extern __inline long double
strtold (__const char *__restrict __nptr, char **__restrict __endptr)
{
return __strtold_internal (__nptr, __endptr, 0);
}
__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);
}
# 408 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) ;
extern long int a64l (__const char *__s) __attribute__ ((__pure__));
# 423 "/usr/include/stdlib.h" 3 4
extern long int random (void) ;
extern void srandom (unsigned int __seed) ;
extern char *initstate (unsigned int __seed, char *__statebuf,
size_t __statelen) ;
extern char *setstate (char *__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, char *__restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf) ;
extern int setstate_r (char *__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 __old_x[3];
unsigned short int __c;
unsigned short int __init;
unsigned long long int __a;
};
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) ;
extern void *malloc (size_t __size) __attribute__ ((__malloc__));
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__malloc__));
extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__));
extern void free (void *__ptr) ;
extern void cfree (void *__ptr) ;
# 1 "/usr/include/alloca.h" 1 3 4
# 25 "/usr/include/alloca.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 26 "/usr/include/alloca.h" 2 3 4
extern void *alloca (size_t __size) ;
# 579 "/usr/include/stdlib.h" 2 3 4
extern void *valloc (size_t __size) __attribute__ ((__malloc__));
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__attribute__ ((__malloc__));
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 void exit (int __status) __attribute__ ((__noreturn__));
extern void _Exit (int __status) __attribute__ ((__noreturn__));
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 int unsetenv (__const char *__name) ;
extern int clearenv (void) ;
# 663 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) ;
extern int mkstemp (char *__template) ;
# 680 "/usr/include/stdlib.h" 3 4
extern int mkstemp64 (char *__template) ;
# 690 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) ;
extern int system (__const char *__command) ;
extern char *canonicalize_file_name (__const char *__name) ;
# 714 "/usr/include/stdlib.h" 3 4
extern char *realpath (__const char *__restrict __name,
char *__restrict __resolved) ;
typedef int (*__compar_fn_t) (__const void *, __const void *);
typedef __compar_fn_t comparison_fn_t;
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__));
__extension__ extern long long int llabs (long long int __x)
__attribute__ ((__const__));
extern div_t div (int __numer, int __denom)
__attribute__ ((__const__));
extern ldiv_t ldiv (long int __numer, long int __denom)
__attribute__ ((__const__));
__extension__ extern lldiv_t lldiv (long long int __numer,
long long int __denom)
__attribute__ ((__const__));
# 778 "/usr/include/stdlib.h" 3 4
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) ;
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)
;
extern int rpmatch (__const char *__response) ;
# 860 "/usr/include/stdlib.h" 3 4
extern int getsubopt (char **__restrict __optionp,
char *__const *__restrict __tokens,
char **__restrict __valuep) ;
extern void setkey (__const char *__key) ;
extern int posix_openpt (int __oflag) ;
extern int grantpt (int __fd) ;
extern int unlockpt (int __fd) ;
extern char *ptsname (int __fd) ;
extern int ptsname_r (int __fd, char *__buf, size_t __buflen) ;
extern int getpt (void) ;
extern int getloadavg (double __loadavg[], int __nelem) ;
# 136 "../../gcc/gcc/system.h" 2
# 158 "../../gcc/gcc/system.h"
# 1 "/usr/include/unistd.h" 1 3 4
# 28 "/usr/include/unistd.h" 3 4
# 175 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/bits/posix_opt.h" 1 3 4
# 176 "/usr/include/unistd.h" 2 3 4
# 1 "/usr/include/bits/environments.h" 1 3 4
# 23 "/usr/include/bits/environments.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 24 "/usr/include/bits/environments.h" 2 3 4
# 180 "/usr/include/unistd.h" 2 3 4
# 199 "/usr/include/unistd.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 200 "/usr/include/unistd.h" 2 3 4
# 240 "/usr/include/unistd.h" 3 4
typedef __intptr_t intptr_t;
typedef __socklen_t socklen_t;
# 260 "/usr/include/unistd.h" 3 4
extern int access (__const char *__name, int __type) ;
extern int euidaccess (__const char *__name, int __type) ;
# 290 "/usr/include/unistd.h" 3 4
extern __off_t lseek (int __fd, __off_t __offset, int __whence) ;
# 302 "/usr/include/unistd.h" 3 4
extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) ;
extern int close (int __fd) ;
extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
;
extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
__off_t __offset) ;
# 340 "/usr/include/unistd.h" 3 4
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
__off64_t __offset) ;
extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
__off64_t __offset) ;
extern int pipe (int __pipedes[2]) ;
# 362 "/usr/include/unistd.h" 3 4
extern unsigned int alarm (unsigned int __seconds) ;
# 371 "/usr/include/unistd.h" 3 4
extern unsigned int sleep (unsigned int __seconds) ;
extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
;
extern int usleep (__useconds_t __useconds) ;
extern int pause (void) ;
extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
;
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) ;
extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
;
extern int chdir (__const char *__path) ;
extern int fchdir (int __fd) ;
# 423 "/usr/include/unistd.h" 3 4
extern char *getcwd (char *__buf, size_t __size) ;
extern char *get_current_dir_name (void) ;
extern char *getwd (char *__buf) ;
extern int dup (int __fd) ;
extern int dup2 (int __fd, int __fd2) ;
extern char **__environ;
extern char **environ;
extern int execve (__const char *__path, char *__const __argv[],
char *__const __envp[]) ;
extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
;
extern int execv (__const char *__path, char *__const __argv[]) ;
extern int execle (__const char *__path, __const char *__arg, ...) ;
extern int execl (__const char *__path, __const char *__arg, ...) ;
extern int execvp (__const char *__file, char *__const __argv[]) ;
extern int execlp (__const char *__file, __const char *__arg, ...) ;
extern int nice (int __inc) ;
extern void _exit (int __status) __attribute__ ((__noreturn__));
# 1 "/usr/include/bits/confname.h" 1 3 4
# 25 "/usr/include/bits/confname.h" 3 4
enum
{
_PC_LINK_MAX,
_PC_MAX_CANON,
_PC_MAX_INPUT,
_PC_NAME_MAX,
_PC_PATH_MAX,
_PC_PIPE_BUF,
_PC_CHOWN_RESTRICTED,
_PC_NO_TRUNC,
_PC_VDISABLE,
_PC_SYNC_IO,
_PC_ASYNC_IO,
_PC_PRIO_IO,
_PC_SOCK_MAXBUF,
_PC_FILESIZEBITS,
_PC_REC_INCR_XFER_SIZE,
_PC_REC_MAX_XFER_SIZE,
_PC_REC_MIN_XFER_SIZE,
_PC_REC_XFER_ALIGN,
_PC_ALLOC_SIZE_MIN,
_PC_SYMLINK_MAX
};
enum
{
_SC_ARG_MAX,
_SC_CHILD_MAX,
_SC_CLK_TCK,
_SC_NGROUPS_MAX,
_SC_OPEN_MAX,
_SC_STREAM_MAX,
_SC_TZNAME_MAX,
_SC_JOB_CONTROL,
_SC_SAVED_IDS,
_SC_REALTIME_SIGNALS,
_SC_PRIORITY_SCHEDULING,
_SC_TIMERS,
_SC_ASYNCHRONOUS_IO,
_SC_PRIORITIZED_IO,
_SC_SYNCHRONIZED_IO,
_SC_FSYNC,
_SC_MAPPED_FILES,
_SC_MEMLOCK,
_SC_MEMLOCK_RANGE,
_SC_MEMORY_PROTECTION,
_SC_MESSAGE_PASSING,
_SC_SEMAPHORES,
_SC_SHARED_MEMORY_OBJECTS,
_SC_AIO_LISTIO_MAX,
_SC_AIO_MAX,
_SC_AIO_PRIO_DELTA_MAX,
_SC_DELAYTIMER_MAX,
_SC_MQ_OPEN_MAX,
_SC_MQ_PRIO_MAX,
_SC_VERSION,
_SC_PAGESIZE,
_SC_RTSIG_MAX,
_SC_SEM_NSEMS_MAX,
_SC_SEM_VALUE_MAX,
_SC_SIGQUEUE_MAX,
_SC_TIMER_MAX,
_SC_BC_BASE_MAX,
_SC_BC_DIM_MAX,
_SC_BC_SCALE_MAX,
_SC_BC_STRING_MAX,
_SC_COLL_WEIGHTS_MAX,
_SC_EQUIV_CLASS_MAX,
_SC_EXPR_NEST_MAX,
_SC_LINE_MAX,
_SC_RE_DUP_MAX,
_SC_CHARCLASS_NAME_MAX,
_SC_2_VERSION,
_SC_2_C_BIND,
_SC_2_C_DEV,
_SC_2_FORT_DEV,
_SC_2_FORT_RUN,
_SC_2_SW_DEV,
_SC_2_LOCALEDEF,
_SC_PII,
_SC_PII_XTI,
_SC_PII_SOCKET,
_SC_PII_INTERNET,
_SC_PII_OSI,
_SC_POLL,
_SC_SELECT,
_SC_UIO_MAXIOV,
_SC_IOV_MAX = _SC_UIO_MAXIOV,
_SC_PII_INTERNET_STREAM,
_SC_PII_INTERNET_DGRAM,
_SC_PII_OSI_COTS,
_SC_PII_OSI_CLTS,
_SC_PII_OSI_M,
_SC_T_IOV_MAX,
_SC_THREADS,
_SC_THREAD_SAFE_FUNCTIONS,
_SC_GETGR_R_SIZE_MAX,
_SC_GETPW_R_SIZE_MAX,
_SC_LOGIN_NAME_MAX,
_SC_TTY_NAME_MAX,
_SC_THREAD_DESTRUCTOR_ITERATIONS,
_SC_THREAD_KEYS_MAX,
_SC_THREAD_STACK_MIN,
_SC_THREAD_THREADS_MAX,
_SC_THREAD_ATTR_STACKADDR,
_SC_THREAD_ATTR_STACKSIZE,
_SC_THREAD_PRIORITY_SCHEDULING,
_SC_THREAD_PRIO_INHERIT,
_SC_THREAD_PRIO_PROTECT,
_SC_THREAD_PROCESS_SHARED,
_SC_NPROCESSORS_CONF,
_SC_NPROCESSORS_ONLN,
_SC_PHYS_PAGES,
_SC_AVPHYS_PAGES,
_SC_ATEXIT_MAX,
_SC_PASS_MAX,
_SC_XOPEN_VERSION,
_SC_XOPEN_XCU_VERSION,
_SC_XOPEN_UNIX,
_SC_XOPEN_CRYPT,
_SC_XOPEN_ENH_I18N,
_SC_XOPEN_SHM,
_SC_2_CHAR_TERM,
_SC_2_C_VERSION,
_SC_2_UPE,
_SC_XOPEN_XPG2,
_SC_XOPEN_XPG3,
_SC_XOPEN_XPG4,
_SC_CHAR_BIT,
_SC_CHAR_MAX,
_SC_CHAR_MIN,
_SC_INT_MAX,
_SC_INT_MIN,
_SC_LONG_BIT,
_SC_WORD_BIT,
_SC_MB_LEN_MAX,
_SC_NZERO,
_SC_SSIZE_MAX,
_SC_SCHAR_MAX,
_SC_SCHAR_MIN,
_SC_SHRT_MAX,
_SC_SHRT_MIN,
_SC_UCHAR_MAX,
_SC_UINT_MAX,
_SC_ULONG_MAX,
_SC_USHRT_MAX,
_SC_NL_ARGMAX,
_SC_NL_LANGMAX,
_SC_NL_MSGMAX,
_SC_NL_NMAX,
_SC_NL_SETMAX,
_SC_NL_TEXTMAX,
_SC_XBS5_ILP32_OFF32,
_SC_XBS5_ILP32_OFFBIG,
_SC_XBS5_LP64_OFF64,
_SC_XBS5_LPBIG_OFFBIG,
_SC_XOPEN_LEGACY,
_SC_XOPEN_REALTIME,
_SC_XOPEN_REALTIME_THREADS,
_SC_ADVISORY_INFO,
_SC_BARRIERS,
_SC_BASE,
_SC_C_LANG_SUPPORT,
_SC_C_LANG_SUPPORT_R,
_SC_CLOCK_SELECTION,
_SC_CPUTIME,
_SC_THREAD_CPUTIME,
_SC_DEVICE_IO,
_SC_DEVICE_SPECIFIC,
_SC_DEVICE_SPECIFIC_R,
_SC_FD_MGMT,
_SC_FIFO,
_SC_PIPE,
_SC_FILE_ATTRIBUTES,
_SC_FILE_LOCKING,
_SC_FILE_SYSTEM,
_SC_MONOTONIC_CLOCK,
_SC_MULTI_PROCESS,
_SC_SINGLE_PROCESS,
_SC_NETWORKING,
_SC_READER_WRITER_LOCKS,
_SC_SPIN_LOCKS,
_SC_REGEXP,
_SC_REGEX_VERSION,
_SC_SHELL,
_SC_SIGNALS,
_SC_SPAWN,
_SC_SPORADIC_SERVER,
_SC_THREAD_SPORADIC_SERVER,
_SC_SYSTEM_DATABASE,
_SC_SYSTEM_DATABASE_R,
_SC_TIMEOUTS,
_SC_TYPED_MEMORY_OBJECTS,
_SC_USER_GROUPS,
_SC_USER_GROUPS_R,
_SC_2_PBS,
_SC_2_PBS_ACCOUNTING,
_SC_2_PBS_LOCATE,
_SC_2_PBS_MESSAGE,
_SC_2_PBS_TRACK,
_SC_SYMLOOP_MAX,
_SC_STREAMS,
_SC_2_PBS_CHECKPOINT,
_SC_V6_ILP32_OFF32,
_SC_V6_ILP32_OFFBIG,
_SC_V6_LP64_OFF64,
_SC_V6_LPBIG_OFFBIG,
_SC_HOST_NAME_MAX,
_SC_TRACE,
_SC_TRACE_EVENT_FILTER,
_SC_TRACE_INHERIT,
_SC_TRACE_LOG
};
enum
{
_CS_PATH,
_CS_V6_WIDTH_RESTRICTED_ENVS,
_CS_GNU_LIBC_VERSION,
_CS_GNU_LIBPTHREAD_VERSION,
_CS_LFS_CFLAGS = 1000,
_CS_LFS_LDFLAGS,
_CS_LFS_LIBS,
_CS_LFS_LINTFLAGS,
_CS_LFS64_CFLAGS,
_CS_LFS64_LDFLAGS,
_CS_LFS64_LIBS,
_CS_LFS64_LINTFLAGS,
_CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
_CS_XBS5_ILP32_OFF32_LDFLAGS,
_CS_XBS5_ILP32_OFF32_LIBS,
_CS_XBS5_ILP32_OFF32_LINTFLAGS,
_CS_XBS5_ILP32_OFFBIG_CFLAGS,
_CS_XBS5_ILP32_OFFBIG_LDFLAGS,
_CS_XBS5_ILP32_OFFBIG_LIBS,
_CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
_CS_XBS5_LP64_OFF64_CFLAGS,
_CS_XBS5_LP64_OFF64_LDFLAGS,
_CS_XBS5_LP64_OFF64_LIBS,
_CS_XBS5_LP64_OFF64_LINTFLAGS,
_CS_XBS5_LPBIG_OFFBIG_CFLAGS,
_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
_CS_XBS5_LPBIG_OFFBIG_LIBS,
_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
_CS_POSIX_V6_ILP32_OFF32_CFLAGS,
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
_CS_POSIX_V6_ILP32_OFF32_LIBS,
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_LIBS,
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
_CS_POSIX_V6_LP64_OFF64_CFLAGS,
_CS_POSIX_V6_LP64_OFF64_LDFLAGS,
_CS_POSIX_V6_LP64_OFF64_LIBS,
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
};
# 501 "/usr/include/unistd.h" 2 3 4
extern long int pathconf (__const char *__path, int __name) ;
extern long int fpathconf (int __fd, int __name) ;
extern long int sysconf (int __name) __attribute__ ((__const__));
extern size_t confstr (int __name, char *__buf, size_t __len) ;
extern __pid_t getpid (void) ;
extern __pid_t getppid (void) ;
extern __pid_t getpgrp (void) ;
# 536 "/usr/include/unistd.h" 3 4
extern __pid_t __getpgid (__pid_t __pid) ;
extern __pid_t getpgid (__pid_t __pid) ;
extern int setpgid (__pid_t __pid, __pid_t __pgid) ;
# 562 "/usr/include/unistd.h" 3 4
extern int setpgrp (void) ;
# 580 "/usr/include/unistd.h" 3 4
extern __pid_t setsid (void) ;
extern __pid_t getsid (__pid_t __pid) ;
extern __uid_t getuid (void) ;
extern __uid_t geteuid (void) ;
extern __gid_t getgid (void) ;
extern __gid_t getegid (void) ;
extern int getgroups (int __size, __gid_t __list[]) ;
extern int group_member (__gid_t __gid) ;
extern int setuid (__uid_t __uid) ;
extern int setreuid (__uid_t __ruid, __uid_t __euid) ;
extern int seteuid (__uid_t __uid) ;
extern int setgid (__gid_t __gid) ;
extern int setregid (__gid_t __rgid, __gid_t __egid) ;
extern int setegid (__gid_t __gid) ;
extern int getresuid (__uid_t *__euid, __uid_t *__ruid, __uid_t *__suid);
extern int getresgid (__gid_t *__egid, __gid_t *__rgid, __gid_t *__sgid);
extern int setresuid (__uid_t __euid, __uid_t __ruid, __uid_t __suid);
extern int setresgid (__gid_t __egid, __gid_t __rgid, __gid_t __sgid);
extern __pid_t fork (void) ;
extern __pid_t vfork (void) ;
extern char *ttyname (int __fd) ;
extern int ttyname_r (int __fd, char *__buf, size_t __buflen) ;
extern int isatty (int __fd) ;
extern int ttyslot (void) ;
extern int link (__const char *__from, __const char *__to) ;
extern int symlink (__const char *__from, __const char *__to) ;
extern int readlink (__const char *__restrict __path, char *__restrict __buf,
size_t __len) ;
extern int unlink (__const char *__name) ;
extern int rmdir (__const char *__path) ;
extern __pid_t tcgetpgrp (int __fd) ;
extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) ;
extern char *getlogin (void) ;
extern int getlogin_r (char *__name, size_t __name_len) ;
extern int setlogin (__const char *__name) ;
# 744 "/usr/include/unistd.h" 3 4
# 1 "../../gcc/gcc/../include/getopt.h" 1 3 4
# 36 "../../gcc/gcc/../include/getopt.h" 3 4
extern char *optarg;
# 50 "../../gcc/gcc/../include/getopt.h" 3 4
extern int optind;
extern int opterr;
extern int optopt;
# 82 "../../gcc/gcc/../include/getopt.h" 3 4
struct option
{
const char *name;
int has_arg;
int *flag;
int val;
};
# 113 "../../gcc/gcc/../include/getopt.h" 3 4
extern int getopt (int argc, char *const *argv, const char *shortopts);
extern int getopt_long (int argc, char *const *argv, const char *shortopts,
const struct option *longopts, int *longind);
extern int getopt_long_only (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind);
extern int _getopt_internal (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind,
int long_only);
# 745 "/usr/include/unistd.h" 2 3 4
extern int gethostname (char *__name, size_t __len) ;
extern int sethostname (__const char *__name, size_t __len) ;
extern int sethostid (long int __id) ;
extern int getdomainname (char *__name, size_t __len) ;
extern int setdomainname (__const char *__name, size_t __len) ;
extern int vhangup (void) ;
extern int revoke (__const char *__file) ;
extern int profil (unsigned short int *__sample_buffer, size_t __size,
size_t __offset, unsigned int __scale) ;
extern int acct (__const char *__name) ;
extern char *getusershell (void) ;
extern void endusershell (void) ;
extern void setusershell (void) ;
extern int daemon (int __nochdir, int __noclose) ;
extern int chroot (__const char *__path) ;
extern char *getpass (__const char *__prompt) ;
extern int fsync (int __fd) ;
extern long int gethostid (void) ;
extern void sync (void) ;
extern int getpagesize (void) __attribute__ ((__const__));
extern int truncate (__const char *__file, __off_t __length) ;
# 854 "/usr/include/unistd.h" 3 4
extern int truncate64 (__const char *__file, __off64_t __length) ;
extern int ftruncate (int __fd, __off_t __length) ;
# 869 "/usr/include/unistd.h" 3 4
extern int ftruncate64 (int __fd, __off64_t __length) ;
extern int getdtablesize (void) ;
# 884 "/usr/include/unistd.h" 3 4
extern int brk (void *__addr) ;
extern void *sbrk (intptr_t __delta) ;
# 905 "/usr/include/unistd.h" 3 4
extern long int syscall (long int __sysno, ...) ;
# 925 "/usr/include/unistd.h" 3 4
extern int lockf (int __fd, int __cmd, __off_t __len) ;
# 935 "/usr/include/unistd.h" 3 4
extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
# 956 "/usr/include/unistd.h" 3 4
extern int fdatasync (int __fildes) ;
extern char *crypt (__const char *__key, __const char *__salt) ;
extern void encrypt (char *__block, int __edflag) ;
extern void swab (__const void *__restrict __from, void *__restrict __to,
ssize_t __n) ;
extern char *ctermid (char *__s) ;
# 1001 "/usr/include/unistd.h" 3 4
extern int pthread_atfork (void (*__prepare) (void),
void (*__parent) (void),
void (*__child) (void)) ;
# 159 "../../gcc/gcc/system.h" 2
# 1 "/usr/include/sys/param.h" 1 3 4
# 22 "/usr/include/sys/param.h" 3 4
# 1 "./include/limits.h" 1 3 4
# 11 "./include/limits.h" 3 4
# 1 "./include/syslimits.h" 1 3 4
# 1 "./include/limits.h" 1 3 4
# 122 "./include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 144 "/usr/include/limits.h" 3 4
# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
# 126 "/usr/include/bits/posix1_lim.h" 3 4
# 1 "/usr/include/bits/local_lim.h" 1 3 4
# 36 "/usr/include/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
# 37 "/usr/include/bits/local_lim.h" 2 3 4
# 127 "/usr/include/bits/posix1_lim.h" 2 3 4
# 145 "/usr/include/limits.h" 2 3 4
# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
# 149 "/usr/include/limits.h" 2 3 4
# 1 "/usr/include/bits/xopen_lim.h" 1 3 4
# 34 "/usr/include/bits/xopen_lim.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 35 "/usr/include/bits/xopen_lim.h" 2 3 4
# 153 "/usr/include/limits.h" 2 3 4
# 123 "./include/limits.h" 2 3 4
# 8 "./include/syslimits.h" 2 3 4
# 12 "./include/limits.h" 2 3 4
# 23 "/usr/include/sys/param.h" 2 3 4
# 1 "/usr/include/linux/param.h" 1 3 4
# 1 "/usr/include/asm/param.h" 1 3 4
# 5 "/usr/include/linux/param.h" 2 3 4
# 25 "/usr/include/sys/param.h" 2 3 4
# 163 "../../gcc/gcc/system.h" 2
# 1 "./include/limits.h" 1 3 4
# 169 "../../gcc/gcc/system.h" 2
# 1 "../../gcc/gcc/hwint.h" 1
# 173 "../../gcc/gcc/system.h" 2
# 201 "../../gcc/gcc/system.h"
# 1 "/usr/include/sys/time.h" 1 3 4
# 27 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 28 "/usr/include/sys/time.h" 2 3 4
# 1 "/usr/include/bits/time.h" 1 3 4
# 30 "/usr/include/sys/time.h" 2 3 4
# 39 "/usr/include/sys/time.h" 3 4
# 57 "/usr/include/sys/time.h" 3 4
struct timezone
{
int tz_minuteswest;
int tz_dsttime;
};
typedef struct timezone *__restrict __timezone_ptr_t;
# 73 "/usr/include/sys/time.h" 3 4
extern int gettimeofday (struct timeval *__restrict __tv,
__timezone_ptr_t __tz) ;
extern int settimeofday (__const struct timeval *__tv,
__const struct timezone *__tz) ;
extern int adjtime (__const struct timeval *__delta,
struct timeval *__olddelta) ;
enum __itimer_which
{
ITIMER_REAL = 0,
ITIMER_VIRTUAL = 1,
ITIMER_PROF = 2
};
struct itimerval
{
struct timeval it_interval;
struct timeval it_value;
};
typedef enum __itimer_which __itimer_which_t;
extern int getitimer (__itimer_which_t __which,
struct itimerval *__value) ;
extern int setitimer (__itimer_which_t __which,
__const struct itimerval *__restrict __new,
struct itimerval *__restrict __old) ;
extern int utimes (__const char *__file, __const struct timeval __tvp[2])
;
extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
;
extern int futimes (int fd, __const struct timeval __tvp[2]) ;
# 182 "/usr/include/sys/time.h" 3 4
# 202 "../../gcc/gcc/system.h" 2
# 1 "/usr/include/time.h" 1 3 4
# 30 "/usr/include/time.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 39 "/usr/include/time.h" 2 3 4
# 1 "/usr/include/bits/time.h" 1 3 4
# 43 "/usr/include/time.h" 2 3 4
# 129 "/usr/include/time.h" 3 4
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;
};
struct itimerspec
{
struct timespec it_interval;
struct timespec it_value;
};
struct sigevent;
# 178 "/usr/include/time.h" 3 4
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) ;
extern char *strptime (__const char *__restrict __s,
__const char *__restrict __fmt, struct tm *__tp)
;
extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
__const char *__restrict __format,
__const struct tm *__restrict __tp,
__locale_t __loc) ;
extern char *strptime_l (__const char *__restrict __s,
__const char *__restrict __fmt, struct tm *__tp,
__locale_t __loc) ;
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 *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) ;
# 309 "/usr/include/time.h" 3 4
extern time_t timegm (struct tm *__tp) ;
extern time_t timelocal (struct tm *__tp) ;
extern int dysize (int __year) __attribute__ ((__const__));
extern int nanosleep (__const struct timespec *__requested_time,
struct timespec *__remaining) ;
extern int clock_getres (clockid_t __clock_id, struct timespec *__res) ;
extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) ;
extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
;
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
__const struct timespec *__req,
struct timespec *__rem) ;
extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) ;
extern int timer_create (clockid_t __clock_id,
struct sigevent *__restrict __evp,
timer_t *__restrict __timerid) ;
extern int timer_delete (timer_t __timerid) ;
extern int timer_settime (timer_t __timerid, int __flags,
__const struct itimerspec *__restrict __value,
struct itimerspec *__restrict __ovalue) ;
extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
;
extern int timer_getoverrun (timer_t __timerid) ;
# 380 "/usr/include/time.h" 3 4
extern int getdate_err;
extern struct tm *getdate (__const char *__string) ;
# 395 "/usr/include/time.h" 3 4
extern int getdate_r (__const char *__restrict __string,
struct tm *__restrict __resbufp) ;
# 203 "../../gcc/gcc/system.h" 2
# 214 "../../gcc/gcc/system.h"
# 1 "/usr/include/fcntl.h" 1 3 4
# 29 "/usr/include/fcntl.h" 3 4
# 1 "/usr/include/bits/fcntl.h" 1 3 4
# 136 "/usr/include/bits/fcntl.h" 3 4
struct flock
{
short int l_type;
short int l_whence;
__off_t l_start;
__off_t l_len;
__pid_t l_pid;
};
struct flock64
{
short int l_type;
short int l_whence;
__off64_t l_start;
__off64_t l_len;
__pid_t l_pid;
};
# 34 "/usr/include/fcntl.h" 2 3 4
# 1 "/usr/include/sys/stat.h" 1 3 4
# 103 "/usr/include/sys/stat.h" 3 4
# 1 "/usr/include/bits/stat.h" 1 3 4
# 36 "/usr/include/bits/stat.h" 3 4
struct stat
{
__dev_t st_dev;
unsigned short int __pad1;
__ino_t st_ino;
__mode_t st_mode;
__nlink_t st_nlink;
__uid_t st_uid;
__gid_t st_gid;
__dev_t st_rdev;
unsigned short int __pad2;
__off_t st_size;
__blksize_t st_blksize;
__blkcnt_t st_blocks;
# 70 "/usr/include/bits/stat.h" 3 4
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
# 85 "/usr/include/bits/stat.h" 3 4
unsigned long int __unused4;
unsigned long int __unused5;
};
struct stat64
{
__dev_t st_dev;
unsigned int __pad1;
__ino_t __st_ino;
__mode_t st_mode;
__nlink_t st_nlink;
__uid_t st_uid;
__gid_t st_gid;
__dev_t st_rdev;
unsigned int __pad2;
__off64_t st_size;
__blksize_t st_blksize;
__blkcnt64_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
# 127 "/usr/include/bits/stat.h" 3 4
__ino64_t st_ino;
};
# 106 "/usr/include/sys/stat.h" 2 3 4
# 207 "/usr/include/sys/stat.h" 3 4
extern int stat (__const char *__restrict __file,
struct stat *__restrict __buf) ;
extern int fstat (int __fd, struct stat *__buf) ;
# 226 "/usr/include/sys/stat.h" 3 4
extern int stat64 (__const char *__restrict __file,
struct stat64 *__restrict __buf) ;
extern int fstat64 (int __fd, struct stat64 *__buf) ;
extern int lstat (__const char *__restrict __file,
struct stat *__restrict __buf) ;
# 248 "/usr/include/sys/stat.h" 3 4
extern int lstat64 (__const char *__restrict __file,
struct stat64 *__restrict __buf) ;
extern int chmod (__const char *__file, __mode_t __mode) ;
extern int lchmod (__const char *__file, __mode_t __mode) ;
extern int fchmod (int __fd, __mode_t __mode) ;
extern __mode_t umask (__mode_t __mask) ;
extern __mode_t getumask (void) ;
extern int mkdir (__const char *__path, __mode_t __mode) ;
extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
;
extern int mkfifo (__const char *__path, __mode_t __mode) ;
# 319 "/usr/include/sys/stat.h" 3 4
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) ;
extern int __xstat (int __ver, __const char *__filename,
struct stat *__stat_buf) ;
extern int __lxstat (int __ver, __const char *__filename,
struct stat *__stat_buf) ;
# 343 "/usr/include/sys/stat.h" 3 4
extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
;
extern int __xstat64 (int __ver, __const char *__filename,
struct stat64 *__stat_buf) ;
extern int __lxstat64 (int __ver, __const char *__filename,
struct stat64 *__stat_buf) ;
extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
__dev_t *__dev) ;
extern __inline__ int stat (__const char *__path,
struct stat *__statbuf)
{
return __xstat (3, __path, __statbuf);
}
extern __inline__ int lstat (__const char *__path,
struct stat *__statbuf)
{
return __lxstat (3, __path, __statbuf);
}
extern __inline__ int fstat (int __fd, struct stat *__statbuf)
{
return __fxstat (3, __fd, __statbuf);
}
extern __inline__ int mknod (__const char *__path, __mode_t __mode,
__dev_t __dev)
{
return __xmknod (1, __path, __mode, &__dev);
}
extern __inline__ int stat64 (__const char *__path,
struct stat64 *__statbuf)
{
return __xstat64 (3, __path, __statbuf);
}
extern __inline__ int lstat64 (__const char *__path,
struct stat64 *__statbuf)
{
return __lxstat64 (3, __path, __statbuf);
}
extern __inline__ int fstat64 (int __fd, struct stat64 *__statbuf)
{
return __fxstat64 (3, __fd, __statbuf);
}
# 38 "/usr/include/fcntl.h" 2 3 4
# 60 "/usr/include/fcntl.h" 3 4
extern int fcntl (int __fd, int __cmd, ...) ;
extern int open (__const char *__file, int __oflag, ...) ;
# 76 "/usr/include/fcntl.h" 3 4
extern int open64 (__const char *__file, int __oflag, ...) ;
extern int creat (__const char *__file, __mode_t __mode) ;
# 93 "/usr/include/fcntl.h" 3 4
extern int creat64 (__const char *__file, __mode_t __mode) ;
# 130 "/usr/include/fcntl.h" 3 4
extern int posix_fadvise (int __fd, __off_t __offset, size_t __len,
int __advise) ;
# 142 "/usr/include/fcntl.h" 3 4
extern int posix_fadvise64 (int __fd, __off64_t __offset, size_t __len,
int __advise) ;
extern int posix_fallocate (int __fd, __off_t __offset, size_t __len) ;
# 160 "/usr/include/fcntl.h" 3 4
extern int posix_fallocate64 (int __fd, __off64_t __offset, size_t __len)
;
# 215 "../../gcc/gcc/system.h" 2
# 252 "../../gcc/gcc/system.h"
# 1 "/usr/include/sys/wait.h" 1 3 4
# 28 "/usr/include/sys/wait.h" 3 4
# 1 "/usr/include/signal.h" 1 3 4
# 31 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 103 "/usr/include/bits/sigset.h" 3 4
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 117 "/usr/include/bits/sigset.h" 3 4
extern __inline int __sigismember (__const __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return (__set->__val[__word] & __mask) ? 1 : 0; }
extern __inline int __sigaddset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] |= __mask), 0); }
extern __inline int __sigdelset ( __sigset_t *__set, int __sig) { unsigned long int __mask = (((unsigned long int) 1) << (((__sig) - 1) % (8 * sizeof (unsigned long int)))); unsigned long int __word = (((__sig) - 1) / (8 * sizeof (unsigned long int))); return ((__set->__val[__word] &= ~__mask), 0); }
# 34 "/usr/include/signal.h" 2 3 4
typedef __sig_atomic_t sig_atomic_t;
# 58 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/signum.h" 1 3 4
# 59 "/usr/include/signal.h" 2 3 4
# 73 "/usr/include/signal.h" 3 4
typedef void (*__sighandler_t) (int);
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
;
extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
;
extern __sighandler_t signal (int __sig, __sighandler_t __handler) ;
# 102 "/usr/include/signal.h" 3 4
extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) ;
extern int kill (__pid_t __pid, int __sig) ;
extern int killpg (__pid_t __pgrp, int __sig) ;
extern int raise (int __sig) ;
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) ;
extern int gsignal (int __sig) ;
extern void psignal (int __sig, __const char *__s) ;
# 146 "/usr/include/signal.h" 3 4
extern int __sigpause (int __sig_or_mask, int __is_sig) ;
extern int sigpause (int __mask) ;
# 174 "/usr/include/signal.h" 3 4
extern int sigblock (int __mask) ;
extern int sigsetmask (int __mask) ;
extern int siggetmask (void) ;
# 189 "/usr/include/signal.h" 3 4
typedef __sighandler_t sighandler_t;
typedef __sighandler_t sig_t;
# 205 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/siginfo.h" 1 3 4
# 25 "/usr/include/bits/siginfo.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 26 "/usr/include/bits/siginfo.h" 2 3 4
typedef union sigval
{
int sival_int;
void *sival_ptr;
} sigval_t;
# 51 "/usr/include/bits/siginfo.h" 3 4
typedef struct siginfo
{
int si_signo;
int si_errno;
int si_code;
union
{
int _pad[((128 / sizeof (int)) - 3)];
struct
{
__pid_t si_pid;
__uid_t si_uid;
} _kill;
struct
{
unsigned int _timer1;
unsigned int _timer2;
} _timer;
struct
{
__pid_t si_pid;
__uid_t si_uid;
sigval_t si_sigval;
} _rt;
struct
{
__pid_t si_pid;
__uid_t si_uid;
int si_status;
__clock_t si_utime;
__clock_t si_stime;
} _sigchld;
struct
{
void *si_addr;
} _sigfault;
struct
{
long int si_band;
int si_fd;
} _sigpoll;
} _sifields;
} siginfo_t;
# 128 "/usr/include/bits/siginfo.h" 3 4
enum
{
SI_ASYNCNL = -6,
SI_SIGIO,
SI_ASYNCIO,
SI_MESGQ,
SI_TIMER,
SI_QUEUE,
SI_USER,
SI_KERNEL = 0x80
};
enum
{
ILL_ILLOPC = 1,
ILL_ILLOPN,
ILL_ILLADR,
ILL_ILLTRP,
ILL_PRVOPC,
ILL_PRVREG,
ILL_COPROC,
ILL_BADSTK
};
enum
{
FPE_INTDIV = 1,
FPE_INTOVF,
FPE_FLTDIV,
FPE_FLTOVF,
FPE_FLTUND,
FPE_FLTRES,
FPE_FLTINV,
FPE_FLTSUB
};
enum
{
SEGV_MAPERR = 1,
SEGV_ACCERR
};
enum
{
BUS_ADRALN = 1,
BUS_ADRERR,
BUS_OBJERR
};
enum
{
TRAP_BRKPT = 1,
TRAP_TRACE
};
enum
{
CLD_EXITED = 1,
CLD_KILLED,
CLD_DUMPED,
CLD_TRAPPED,
CLD_STOPPED,
CLD_CONTINUED
};
enum
{
POLL_IN = 1,
POLL_OUT,
POLL_MSG,
POLL_ERR,
POLL_PRI,
POLL_HUP
};
# 271 "/usr/include/bits/siginfo.h" 3 4
struct __pthread_attr_s;
typedef struct sigevent
{
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
union
{
int _pad[((64 / sizeof (int)) - 3)];
struct
{
void (*_function) (sigval_t);
void *_attribute;
} _sigev_thread;
} _sigev_un;
} sigevent_t;
enum
{
SIGEV_SIGNAL = 0,
SIGEV_NONE,
SIGEV_THREAD
};
# 206 "/usr/include/signal.h" 2 3 4
extern int sigemptyset (sigset_t *__set) ;
extern int sigfillset (sigset_t *__set) ;
extern int sigaddset (sigset_t *__set, int __signo) ;
extern int sigdelset (sigset_t *__set, int __signo) ;
extern int sigismember (__const sigset_t *__set, int __signo) ;
extern int sigisemptyset (__const sigset_t *__set) ;
extern int sigandset (sigset_t *__set, __const sigset_t *__left,
__const sigset_t *__right) ;
extern int sigorset (sigset_t *__set, __const sigset_t *__left,
__const sigset_t *__right) ;
# 1 "/usr/include/bits/sigaction.h" 1 3 4
# 25 "/usr/include/bits/sigaction.h" 3 4
struct sigaction
{
union
{
__sighandler_t sa_handler;
void (*sa_sigaction) (int, siginfo_t *, void *);
}
__sigaction_handler;
__sigset_t sa_mask;
int sa_flags;
void (*sa_restorer) (void);
};
# 239 "/usr/include/signal.h" 2 3 4
extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
sigset_t *__restrict __oset) ;
extern int sigsuspend (__const sigset_t *__set) ;
extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
struct sigaction *__restrict __oact) ;
extern int sigpending (sigset_t *__set) ;
extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
;
extern int sigwaitinfo (__const sigset_t *__restrict __set,
siginfo_t *__restrict __info) ;
extern int sigtimedwait (__const sigset_t *__restrict __set,
siginfo_t *__restrict __info,
__const struct timespec *__restrict __timeout)
;
extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
;
# 284 "/usr/include/signal.h" 3 4
extern __const char *__const _sys_siglist[64];
extern __const char *__const sys_siglist[64];
struct sigvec
{
__sighandler_t sv_handler;
int sv_mask;
int sv_flags;
};
# 308 "/usr/include/signal.h" 3 4
extern int sigvec (int __sig, __const struct sigvec *__vec,
struct sigvec *__ovec) ;
# 1 "/usr/include/bits/sigcontext.h" 1 3 4
# 28 "/usr/include/bits/sigcontext.h" 3 4
# 1 "/usr/include/asm/sigcontext.h" 1 3 4
# 18 "/usr/include/asm/sigcontext.h" 3 4
struct _fpreg {
unsigned short significand[4];
unsigned short exponent;
};
struct _fpxreg {
unsigned short significand[4];
unsigned short exponent;
unsigned short padding[3];
};
struct _xmmreg {
unsigned long element[4];
};
struct _fpstate {
unsigned long cw;
unsigned long sw;
unsigned long tag;
unsigned long ipoff;
unsigned long cssel;
unsigned long dataoff;
unsigned long datasel;
struct _fpreg _st[8];
unsigned short status;
unsigned short magic;
unsigned long _fxsr_env[6];
unsigned long mxcsr;
unsigned long reserved;
struct _fpxreg _fxsr_st[8];
struct _xmmreg _xmm[8];
unsigned long padding[56];
};
struct sigcontext {
unsigned short gs, __gsh;
unsigned short fs, __fsh;
unsigned short es, __esh;
unsigned short ds, __dsh;
unsigned long edi;
unsigned long esi;
unsigned long ebp;
unsigned long esp;
unsigned long ebx;
unsigned long edx;
unsigned long ecx;
unsigned long eax;
unsigned long trapno;
unsigned long err;
unsigned long eip;
unsigned short cs, __csh;
unsigned long eflags;
unsigned long esp_at_signal;
unsigned short ss, __ssh;
struct _fpstate * fpstate;
unsigned long oldmask;
unsigned long cr2;
};
# 29 "/usr/include/bits/sigcontext.h" 2 3 4
# 314 "/usr/include/signal.h" 2 3 4
extern int sigreturn (struct sigcontext *__scp) ;
# 326 "/usr/include/signal.h" 3 4
extern int siginterrupt (int __sig, int __interrupt) ;
# 1 "/usr/include/bits/sigstack.h" 1 3 4
# 26 "/usr/include/bits/sigstack.h" 3 4
struct sigstack
{
void *ss_sp;
int ss_onstack;
};
enum
{
SS_ONSTACK = 1,
SS_DISABLE
};
# 50 "/usr/include/bits/sigstack.h" 3 4
typedef struct sigaltstack
{
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 329 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/sys/ucontext.h" 1 3 4
# 23 "/usr/include/sys/ucontext.h" 3 4
# 1 "/usr/include/signal.h" 1 3 4
# 24 "/usr/include/sys/ucontext.h" 2 3 4
# 1 "/usr/include/bits/sigcontext.h" 1 3 4
# 28 "/usr/include/sys/ucontext.h" 2 3 4
typedef int greg_t;
typedef greg_t gregset_t[19];
enum
{
REG_GS = 0,
REG_FS,
REG_ES,
REG_DS,
REG_EDI,
REG_ESI,
REG_EBP,
REG_ESP,
REG_EBX,
REG_EDX,
REG_ECX,
REG_EAX,
REG_TRAPNO,
REG_ERR,
REG_EIP,
REG_CS,
REG_EFL,
REG_UESP,
REG_SS
};
struct _libc_fpreg
{
unsigned short int significand[4];
unsigned short int exponent;
};
struct _libc_fpstate
{
unsigned long int cw;
unsigned long int sw;
unsigned long int tag;
unsigned long int ipoff;
unsigned long int cssel;
unsigned long int dataoff;
unsigned long int datasel;
struct _libc_fpreg _st[8];
unsigned long int status;
};
typedef struct _libc_fpstate *fpregset_t;
typedef struct
{
gregset_t gregs;
fpregset_t fpregs;
unsigned long int oldmask;
unsigned long int cr2;
} mcontext_t;
typedef struct ucontext
{
unsigned long int uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
__sigset_t uc_sigmask;
struct _libc_fpstate __fpregs_mem;
} ucontext_t;
# 332 "/usr/include/signal.h" 2 3 4
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) ;
extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
struct sigaltstack *__restrict __oss) ;
extern int sighold (int __sig) ;
extern int sigrelse (int __sig) ;
extern int sigignore (int __sig) ;
extern __sighandler_t sigset (int __sig, __sighandler_t __disp) ;
# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
# 366 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/bits/sigthread.h" 1 3 4
# 31 "/usr/include/bits/sigthread.h" 3 4
extern int pthread_sigmask (int __how,
__const __sigset_t *__restrict __newmask,
__sigset_t *__restrict __oldmask);
extern int pthread_kill (pthread_t __threadid, int __signo) ;
# 367 "/usr/include/signal.h" 2 3 4
extern int __libc_current_sigrtmin (void) ;
extern int __libc_current_sigrtmax (void) ;
# 31 "/usr/include/sys/wait.h" 2 3 4
# 1 "/usr/include/sys/resource.h" 1 3 4
# 25 "/usr/include/sys/resource.h" 3 4
# 1 "/usr/include/bits/resource.h" 1 3 4
# 32 "/usr/include/bits/resource.h" 3 4
enum __rlimit_resource
{
RLIMIT_CPU = 0,
RLIMIT_FSIZE = 1,
RLIMIT_DATA = 2,
RLIMIT_STACK = 3,
RLIMIT_CORE = 4,
RLIMIT_RSS = 5,
RLIMIT_NOFILE = 7,
RLIMIT_OFILE = RLIMIT_NOFILE,
RLIMIT_AS = 9,
RLIMIT_NPROC = 6,
RLIMIT_MEMLOCK = 8,
RLIMIT_LOCKS = 10,
RLIMIT_NLIMITS = 11,
RLIM_NLIMITS = RLIMIT_NLIMITS
};
# 107 "/usr/include/bits/resource.h" 3 4
typedef __rlim_t rlim_t;
typedef __rlim64_t rlim64_t;
struct rlimit
{
rlim_t rlim_cur;
rlim_t rlim_max;
};
struct rlimit64
{
rlim64_t rlim_cur;
rlim64_t rlim_max;
};
enum __rusage_who
{
RUSAGE_SELF = 0,
RUSAGE_CHILDREN = -1,
RUSAGE_BOTH = -2
};
# 1 "/usr/include/bits/time.h" 1 3 4
# 151 "/usr/include/bits/resource.h" 2 3 4
struct rusage
{
struct timeval ru_utime;
struct timeval ru_stime;
long int ru_maxrss;
long int ru_ixrss;
long int ru_idrss;
long int ru_isrss;
long int ru_minflt;
long int ru_majflt;
long int ru_nswap;
long int ru_inblock;
long int ru_oublock;
long int ru_msgsnd;
long int ru_msgrcv;
long int ru_nsignals;
long int ru_nvcsw;
long int ru_nivcsw;
};
enum __priority_which
{
PRIO_PROCESS = 0,
PRIO_PGRP = 1,
PRIO_USER = 2
};
# 26 "/usr/include/sys/resource.h" 2 3 4
typedef enum __rlimit_resource __rlimit_resource_t;
typedef enum __rusage_who __rusage_who_t;
typedef enum __priority_which __priority_which_t;
# 51 "/usr/include/sys/resource.h" 3 4
extern int getrlimit (__rlimit_resource_t __resource,
struct rlimit *__rlimits) ;
# 63 "/usr/include/sys/resource.h" 3 4
extern int getrlimit64 (__rlimit_resource_t __resource,
struct rlimit64 *__rlimits) ;
extern int setrlimit (__rlimit_resource_t __resource,
__const struct rlimit *__rlimits) ;
# 83 "/usr/include/sys/resource.h" 3 4
extern int setrlimit64 (__rlimit_resource_t __resource,
__const struct rlimit64 *__rlimits) ;
extern int getrusage (__rusage_who_t __who, struct rusage *__usage) ;
extern int getpriority (__priority_which_t __which, id_t __who) ;
extern int setpriority (__priority_which_t __which, id_t __who, int __prio)
;
# 32 "/usr/include/sys/wait.h" 2 3 4
# 98 "/usr/include/sys/wait.h" 3 4
typedef enum
{
P_ALL,
P_PID,
P_PGID
} idtype_t;
extern __pid_t wait (__WAIT_STATUS __stat_loc) ;
# 129 "/usr/include/sys/wait.h" 3 4
extern __pid_t waitpid (__pid_t __pid, int *__stat_loc, int __options) ;
# 1 "/usr/include/bits/siginfo.h" 1 3 4
# 25 "/usr/include/bits/siginfo.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 26 "/usr/include/bits/siginfo.h" 2 3 4
# 134 "/usr/include/sys/wait.h" 2 3 4
# 142 "/usr/include/sys/wait.h" 3 4
extern int waitid (idtype_t __idtype, __id_t __id, siginfo_t *__infop,
int __options) ;
struct rusage;
extern __pid_t wait3 (__WAIT_STATUS __stat_loc, int __options,
struct rusage * __usage) ;
struct rusage;
extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options,
struct rusage *__usage) ;
# 253 "../../gcc/gcc/system.h" 2
# 303 "../../gcc/gcc/system.h"
extern int getopt (int, char * const *, const char *);
# 323 "../../gcc/gcc/system.h"
# 1 "/usr/include/malloc.h" 1 3 4
# 46 "/usr/include/malloc.h" 3 4
# 1 "./include/stddef.h" 1 3 4
# 47 "/usr/include/malloc.h" 2 3 4
# 110 "/usr/include/malloc.h" 3 4
extern void * malloc (size_t __size) __attribute__ ((__malloc__));
extern void * calloc (size_t __nmemb, size_t __size)
__attribute__ ((__malloc__));
extern void * realloc (void * __ptr, size_t __size)
__attribute__ ((__malloc__));
extern void free (void * __ptr) ;
extern void cfree (void * __ptr) ;
extern void * memalign (size_t __alignment, size_t __size) ;
extern void * valloc (size_t __size) __attribute__ ((__malloc__));
extern void * pvalloc (size_t __size)
__attribute__ ((__malloc__));
extern void * (*__morecore) (ptrdiff_t __size);
extern void * __default_morecore (ptrdiff_t __size)
__attribute__ ((__malloc__));
struct mallinfo {
int arena;
int ordblks;
int smblks;
int hblks;
int hblkhd;
int usmblks;
int fsmblks;
int uordblks;
int fordblks;
int keepcost;
};
extern struct mallinfo mallinfo (void) ;
# 187 "/usr/include/malloc.h" 3 4
extern int mallopt (int __param, int __val) ;
extern int malloc_trim (size_t __pad) ;
extern size_t malloc_usable_size (void * __ptr) ;
extern void malloc_stats (void) ;
extern void * malloc_get_state (void) ;
extern int malloc_set_state (void * __ptr) ;
extern void (*__malloc_initialize_hook) (void);
extern void (*__free_hook) (void * __ptr, __const void *);
extern void * (*__malloc_hook) (size_t __size, __const void *);
extern void * (*__realloc_hook) (void * __ptr, size_t __size, __const void *);
extern void * (*__memalign_hook) (size_t __alignment, size_t __size, __const void *);
extern void (*__after_morecore_hook) (void);
extern void __malloc_check_init (void) ;
# 324 "../../gcc/gcc/system.h" 2
# 456 "../../gcc/gcc/system.h"
# 1 "../../gcc/gcc/../include/filenames.h" 1
# 457 "../../gcc/gcc/system.h" 2
# 467 "../../gcc/gcc/system.h"
# 1 "../../gcc/gcc/../include/libiberty.h" 1
# 42 "../../gcc/gcc/../include/libiberty.h"
# 1 "../../gcc/gcc/../include/ansidecl.h" 1
# 43 "../../gcc/gcc/../include/libiberty.h" 2
# 1 "./include/stddef.h" 1 3 4
# 47 "../../gcc/gcc/../include/libiberty.h" 2
extern char **buildargv (const char *) __attribute__ ((__malloc__));
extern void freeargv (char **);
extern char **dupargv (char **) __attribute__ ((__malloc__));
# 86 "../../gcc/gcc/../include/libiberty.h"
extern const char *lbasename (const char *);
extern char *lrealpath (const char *);
extern char *concat (const char *, ...) __attribute__ ((__malloc__)) __attribute__ ((__sentinel__));
# 105 "../../gcc/gcc/../include/libiberty.h"
extern char *reconcat (char *, const char *, ...) __attribute__ ((__malloc__)) __attribute__ ((__sentinel__));
extern unsigned long concat_length (const char *, ...) __attribute__ ((__sentinel__));
extern char *concat_copy (char *, const char *, ...) __attribute__ ((__sentinel__));
extern char *concat_copy2 (const char *, ...) __attribute__ ((__sentinel__));
extern char *libiberty_concat_ptr;
# 141 "../../gcc/gcc/../include/libiberty.h"
extern int fdmatch (int fd1, int fd2);
extern char * getpwd (void);
extern long get_run_time (void);
extern char *make_relative_prefix (const char *, const char *, const char *);
extern char *choose_temp_base (void) __attribute__ ((__malloc__));
extern char *make_temp_file (const char *) __attribute__ ((__malloc__));
extern const char *spaces (int count);
extern int errno_max (void);
extern const char *strerrno (int);
extern int strtoerrno (const char *);
extern char *xstrerror (int);
extern int signo_max (void);
# 203 "../../gcc/gcc/../include/libiberty.h"
extern const char *strsigno (int);
extern int strtosigno (const char *);
extern int xatexit (void (*fn) (void));
extern void xexit (int status) __attribute__ ((__noreturn__));
extern void xmalloc_set_program_name (const char *);
extern void xmalloc_failed (size_t) __attribute__ ((__noreturn__));
extern void * xmalloc (size_t) __attribute__ ((__malloc__));
extern void * xrealloc (void *, size_t);
extern void * xcalloc (size_t, size_t) __attribute__ ((__malloc__));
extern char *xstrdup (const char *) __attribute__ ((__malloc__));
extern void * xmemdup (const void *, size_t, size_t) __attribute__ ((__malloc__));
extern double physmem_total (void);
extern double physmem_available (void);
# 288 "../../gcc/gcc/../include/libiberty.h"
extern const unsigned char _hex_value[256];
extern void hex_init (void);
# 305 "../../gcc/gcc/../include/libiberty.h"
extern int pexecute (const char *, char * const *, const char *, const char *, char **, char **, int);
extern int pwait (int, int *, int);
extern int asprintf (char **, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__nonnull__ (2)));
# 335 "../../gcc/gcc/../include/libiberty.h"
extern void * C_alloca (size_t) __attribute__ ((__malloc__));
# 468 "../../gcc/gcc/system.h" 2
# 505 "../../gcc/gcc/system.h"
extern void fancy_abort (const char *, int, const char *) __attribute__ ((__noreturn__));
# 583 "../../gcc/gcc/system.h"
# 622 "../../gcc/gcc/system.h"
# 663 "../../gcc/gcc/system.h"
# 679 "../../gcc/gcc/system.h"
# 689 "../../gcc/gcc/system.h"
# 23 "../../gcc/gcc/gengtype.c" 2
# 1 "../../gcc/gcc/coretypes.h" 1
# 40 "../../gcc/gcc/coretypes.h"
struct rtx_def;
typedef struct rtx_def *rtx;
struct rtvec_def;
typedef struct rtvec_def *rtvec;
union tree_node;
typedef union tree_node *tree;
struct cpp_reader;
enum tls_model {
TLS_MODEL_GLOBAL_DYNAMIC = 1,
TLS_MODEL_LOCAL_DYNAMIC,
TLS_MODEL_INITIAL_EXEC,
TLS_MODEL_LOCAL_EXEC
};
# 24 "../../gcc/gcc/gengtype.c" 2
# 1 "./tm.h" 1
# 1 "../../gcc/gcc/config/i386/i386.h" 1
# 39 "../../gcc/gcc/config/i386/i386.h"
struct processor_costs {
const int add;
const int lea;
const int shift_var;
const int shift_const;
const int mult_init[5];
const int mult_bit;
const int divide[5];
int movsx;
int movzx;
const int large_insn;
const int move_ratio;
const int movzbl_load;
const int int_load[3];
const int int_store[3];
const int fp_move;
const int fp_load[3];
const int fp_store[3];
const int mmx_move;
const int mmx_load[2];
const int mmx_store[2];
const int sse_move;
const int sse_load[3];
const int sse_store[3];
const int mmxsse_to_integer;
const int prefetch_block;
const int simultaneous_prefetches;
const int branch_cost;
const int fadd;
const int fmul;
const int fdiv;
const int fabs;
const int fchs;
const int fsqrt;
};
extern const struct processor_costs *ix86_cost;
extern int target_flags;
# 228 "../../gcc/gcc/config/i386/i386.h"
extern const int x86_use_leave, x86_push_memory, x86_zero_extend_with_and;
extern const int x86_use_bit_test, x86_cmove, x86_deep_branch;
extern const int x86_branch_hints, x86_unroll_strlen;
extern const int x86_double_with_add, x86_partial_reg_stall, x86_movx;
extern const int x86_use_loop, x86_use_fiop, x86_use_mov0;
extern const int x86_use_cltd, x86_read_modify_write;
extern const int x86_read_modify, x86_split_long_moves;
extern const int x86_promote_QImode, x86_single_stringop, x86_fast_prefix;
extern const int x86_himode_math, x86_qimode_math, x86_promote_qi_regs;
extern const int x86_promote_hi_regs, x86_integer_DFmode_moves;
extern const int x86_add_esp_4, x86_add_esp_8, x86_sub_esp_4, x86_sub_esp_8;
extern const int x86_partial_reg_dependency, x86_memory_mismatch_stall;
extern const int x86_accumulate_outgoing_args, x86_prologue_using_move;
extern const int x86_epilogue_using_move, x86_decompose_lea;
extern const int x86_arch_always_fancy_math_387, x86_shift1;
extern const int x86_sse_partial_reg_dependency, x86_sse_partial_regs;
extern const int x86_sse_typeless_stores, x86_sse_load0_by_pxor;
extern const int x86_use_ffreep, x86_sse_partial_regs_for_cvtsd2ss;
extern const int x86_inter_unit_moves, x86_schedule;
extern int x86_prefetch_sse;
# 1276 "../../gcc/gcc/config/i386/i386.h"
enum reg_class
{
NO_REGS,
AREG, DREG, CREG, BREG, SIREG, DIREG,
AD_REGS,
Q_REGS,
NON_Q_REGS,
INDEX_REGS,
LEGACY_REGS,
GENERAL_REGS,
FP_TOP_REG, FP_SECOND_REG,
FLOAT_REGS,
SSE_REGS,
MMX_REGS,
FP_TOP_SSE_REGS,
FP_SECOND_SSE_REGS,
FLOAT_SSE_REGS,
FLOAT_INT_REGS,
INT_SSE_REGS,
FLOAT_INT_SSE_REGS,
ALL_REGS, LIM_REG_CLASSES
};
# 1723 "../../gcc/gcc/config/i386/i386.h"
typedef struct ix86_args {
int words;
int nregs;
int regno;
int fastcall;
int sse_words;
int sse_nregs;
int warn_sse;
int warn_mmx;
int sse_regno;
int mmx_words;
int mmx_nregs;
int mmx_regno;
int maybe_vaarg;
} CUMULATIVE_ARGS;
# 2030 "../../gcc/gcc/config/i386/i386.h"
enum ix86_builtins
{
IX86_BUILTIN_ADDPS,
IX86_BUILTIN_ADDSS,
IX86_BUILTIN_DIVPS,
IX86_BUILTIN_DIVSS,
IX86_BUILTIN_MULPS,
IX86_BUILTIN_MULSS,
IX86_BUILTIN_SUBPS,
IX86_BUILTIN_SUBSS,
IX86_BUILTIN_CMPEQPS,
IX86_BUILTIN_CMPLTPS,
IX86_BUILTIN_CMPLEPS,
IX86_BUILTIN_CMPGTPS,
IX86_BUILTIN_CMPGEPS,
IX86_BUILTIN_CMPNEQPS,
IX86_BUILTIN_CMPNLTPS,
IX86_BUILTIN_CMPNLEPS,
IX86_BUILTIN_CMPNGTPS,
IX86_BUILTIN_CMPNGEPS,
IX86_BUILTIN_CMPORDPS,
IX86_BUILTIN_CMPUNORDPS,
IX86_BUILTIN_CMPNEPS,
IX86_BUILTIN_CMPEQSS,
IX86_BUILTIN_CMPLTSS,
IX86_BUILTIN_CMPLESS,
IX86_BUILTIN_CMPNEQSS,
IX86_BUILTIN_CMPNLTSS,
IX86_BUILTIN_CMPNLESS,
IX86_BUILTIN_CMPORDSS,
IX86_BUILTIN_CMPUNORDSS,
IX86_BUILTIN_CMPNESS,
IX86_BUILTIN_COMIEQSS,
IX86_BUILTIN_COMILTSS,
IX86_BUILTIN_COMILESS,
IX86_BUILTIN_COMIGTSS,
IX86_BUILTIN_COMIGESS,
IX86_BUILTIN_COMINEQSS,
IX86_BUILTIN_UCOMIEQSS,
IX86_BUILTIN_UCOMILTSS,
IX86_BUILTIN_UCOMILESS,
IX86_BUILTIN_UCOMIGTSS,
IX86_BUILTIN_UCOMIGESS,
IX86_BUILTIN_UCOMINEQSS,
IX86_BUILTIN_CVTPI2PS,
IX86_BUILTIN_CVTPS2PI,
IX86_BUILTIN_CVTSI2SS,
IX86_BUILTIN_CVTSI642SS,
IX86_BUILTIN_CVTSS2SI,
IX86_BUILTIN_CVTSS2SI64,
IX86_BUILTIN_CVTTPS2PI,
IX86_BUILTIN_CVTTSS2SI,
IX86_BUILTIN_CVTTSS2SI64,
IX86_BUILTIN_MAXPS,
IX86_BUILTIN_MAXSS,
IX86_BUILTIN_MINPS,
IX86_BUILTIN_MINSS,
IX86_BUILTIN_LOADAPS,
IX86_BUILTIN_LOADUPS,
IX86_BUILTIN_STOREAPS,
IX86_BUILTIN_STOREUPS,
IX86_BUILTIN_LOADSS,
IX86_BUILTIN_STORESS,
IX86_BUILTIN_MOVSS,
IX86_BUILTIN_MOVHLPS,
IX86_BUILTIN_MOVLHPS,
IX86_BUILTIN_LOADHPS,
IX86_BUILTIN_LOADLPS,
IX86_BUILTIN_STOREHPS,
IX86_BUILTIN_STORELPS,
IX86_BUILTIN_MASKMOVQ,
IX86_BUILTIN_MOVMSKPS,
IX86_BUILTIN_PMOVMSKB,
IX86_BUILTIN_MOVNTPS,
IX86_BUILTIN_MOVNTQ,
IX86_BUILTIN_LOADDQA,
IX86_BUILTIN_LOADDQU,
IX86_BUILTIN_STOREDQA,
IX86_BUILTIN_STOREDQU,
IX86_BUILTIN_MOVQ,
IX86_BUILTIN_LOADD,
IX86_BUILTIN_STORED,
IX86_BUILTIN_CLRTI,
IX86_BUILTIN_PACKSSWB,
IX86_BUILTIN_PACKSSDW,
IX86_BUILTIN_PACKUSWB,
IX86_BUILTIN_PADDB,
IX86_BUILTIN_PADDW,
IX86_BUILTIN_PADDD,
IX86_BUILTIN_PADDQ,
IX86_BUILTIN_PADDSB,
IX86_BUILTIN_PADDSW,
IX86_BUILTIN_PADDUSB,
IX86_BUILTIN_PADDUSW,
IX86_BUILTIN_PSUBB,
IX86_BUILTIN_PSUBW,
IX86_BUILTIN_PSUBD,
IX86_BUILTIN_PSUBQ,
IX86_BUILTIN_PSUBSB,
IX86_BUILTIN_PSUBSW,
IX86_BUILTIN_PSUBUSB,
IX86_BUILTIN_PSUBUSW,
IX86_BUILTIN_PAND,
IX86_BUILTIN_PANDN,
IX86_BUILTIN_POR,
IX86_BUILTIN_PXOR,
IX86_BUILTIN_PAVGB,
IX86_BUILTIN_PAVGW,
IX86_BUILTIN_PCMPEQB,
IX86_BUILTIN_PCMPEQW,
IX86_BUILTIN_PCMPEQD,
IX86_BUILTIN_PCMPGTB,
IX86_BUILTIN_PCMPGTW,
IX86_BUILTIN_PCMPGTD,
IX86_BUILTIN_PEXTRW,
IX86_BUILTIN_PINSRW,
IX86_BUILTIN_PMADDWD,
IX86_BUILTIN_PMAXSW,
IX86_BUILTIN_PMAXUB,
IX86_BUILTIN_PMINSW,
IX86_BUILTIN_PMINUB,
IX86_BUILTIN_PMULHUW,
IX86_BUILTIN_PMULHW,
IX86_BUILTIN_PMULLW,
IX86_BUILTIN_PSADBW,
IX86_BUILTIN_PSHUFW,
IX86_BUILTIN_PSLLW,
IX86_BUILTIN_PSLLD,
IX86_BUILTIN_PSLLQ,
IX86_BUILTIN_PSRAW,
IX86_BUILTIN_PSRAD,
IX86_BUILTIN_PSRLW,
IX86_BUILTIN_PSRLD,
IX86_BUILTIN_PSRLQ,
IX86_BUILTIN_PSLLWI,
IX86_BUILTIN_PSLLDI,
IX86_BUILTIN_PSLLQI,
IX86_BUILTIN_PSRAWI,
IX86_BUILTIN_PSRADI,
IX86_BUILTIN_PSRLWI,
IX86_BUILTIN_PSRLDI,
IX86_BUILTIN_PSRLQI,
IX86_BUILTIN_PUNPCKHBW,
IX86_BUILTIN_PUNPCKHWD,
IX86_BUILTIN_PUNPCKHDQ,
IX86_BUILTIN_PUNPCKLBW,
IX86_BUILTIN_PUNPCKLWD,
IX86_BUILTIN_PUNPCKLDQ,
IX86_BUILTIN_SHUFPS,
IX86_BUILTIN_RCPPS,
IX86_BUILTIN_RCPSS,
IX86_BUILTIN_RSQRTPS,
IX86_BUILTIN_RSQRTSS,
IX86_BUILTIN_SQRTPS,
IX86_BUILTIN_SQRTSS,
IX86_BUILTIN_UNPCKHPS,
IX86_BUILTIN_UNPCKLPS,
IX86_BUILTIN_ANDPS,
IX86_BUILTIN_ANDNPS,
IX86_BUILTIN_ORPS,
IX86_BUILTIN_XORPS,
IX86_BUILTIN_EMMS,
IX86_BUILTIN_LDMXCSR,
IX86_BUILTIN_STMXCSR,
IX86_BUILTIN_SFENCE,
IX86_BUILTIN_FEMMS,
IX86_BUILTIN_PAVGUSB,
IX86_BUILTIN_PF2ID,
IX86_BUILTIN_PFACC,
IX86_BUILTIN_PFADD,
IX86_BUILTIN_PFCMPEQ,
IX86_BUILTIN_PFCMPGE,
IX86_BUILTIN_PFCMPGT,
IX86_BUILTIN_PFMAX,
IX86_BUILTIN_PFMIN,
IX86_BUILTIN_PFMUL,
IX86_BUILTIN_PFRCP,
IX86_BUILTIN_PFRCPIT1,
IX86_BUILTIN_PFRCPIT2,
IX86_BUILTIN_PFRSQIT1,
IX86_BUILTIN_PFRSQRT,
IX86_BUILTIN_PFSUB,
IX86_BUILTIN_PFSUBR,
IX86_BUILTIN_PI2FD,
IX86_BUILTIN_PMULHRW,
IX86_BUILTIN_PF2IW,
IX86_BUILTIN_PFNACC,
IX86_BUILTIN_PFPNACC,
IX86_BUILTIN_PI2FW,
IX86_BUILTIN_PSWAPDSI,
IX86_BUILTIN_PSWAPDSF,
IX86_BUILTIN_SSE_ZERO,
IX86_BUILTIN_MMX_ZERO,
IX86_BUILTIN_ADDPD,
IX86_BUILTIN_ADDSD,
IX86_BUILTIN_DIVPD,
IX86_BUILTIN_DIVSD,
IX86_BUILTIN_MULPD,
IX86_BUILTIN_MULSD,
IX86_BUILTIN_SUBPD,
IX86_BUILTIN_SUBSD,
IX86_BUILTIN_CMPEQPD,
IX86_BUILTIN_CMPLTPD,
IX86_BUILTIN_CMPLEPD,
IX86_BUILTIN_CMPGTPD,
IX86_BUILTIN_CMPGEPD,
IX86_BUILTIN_CMPNEQPD,
IX86_BUILTIN_CMPNLTPD,
IX86_BUILTIN_CMPNLEPD,
IX86_BUILTIN_CMPNGTPD,
IX86_BUILTIN_CMPNGEPD,
IX86_BUILTIN_CMPORDPD,
IX86_BUILTIN_CMPUNORDPD,
IX86_BUILTIN_CMPNEPD,
IX86_BUILTIN_CMPEQSD,
IX86_BUILTIN_CMPLTSD,
IX86_BUILTIN_CMPLESD,
IX86_BUILTIN_CMPNEQSD,
IX86_BUILTIN_CMPNLTSD,
IX86_BUILTIN_CMPNLESD,
IX86_BUILTIN_CMPORDSD,
IX86_BUILTIN_CMPUNORDSD,
IX86_BUILTIN_CMPNESD,
IX86_BUILTIN_COMIEQSD,
IX86_BUILTIN_COMILTSD,
IX86_BUILTIN_COMILESD,
IX86_BUILTIN_COMIGTSD,
IX86_BUILTIN_COMIGESD,
IX86_BUILTIN_COMINEQSD,
IX86_BUILTIN_UCOMIEQSD,
IX86_BUILTIN_UCOMILTSD,
IX86_BUILTIN_UCOMILESD,
IX86_BUILTIN_UCOMIGTSD,
IX86_BUILTIN_UCOMIGESD,
IX86_BUILTIN_UCOMINEQSD,
IX86_BUILTIN_MAXPD,
IX86_BUILTIN_MAXSD,
IX86_BUILTIN_MINPD,
IX86_BUILTIN_MINSD,
IX86_BUILTIN_ANDPD,
IX86_BUILTIN_ANDNPD,
IX86_BUILTIN_ORPD,
IX86_BUILTIN_XORPD,
IX86_BUILTIN_SQRTPD,
IX86_BUILTIN_SQRTSD,
IX86_BUILTIN_UNPCKHPD,
IX86_BUILTIN_UNPCKLPD,
IX86_BUILTIN_SHUFPD,
IX86_BUILTIN_LOADAPD,
IX86_BUILTIN_LOADUPD,
IX86_BUILTIN_STOREAPD,
IX86_BUILTIN_STOREUPD,
IX86_BUILTIN_LOADSD,
IX86_BUILTIN_STORESD,
IX86_BUILTIN_MOVSD,
IX86_BUILTIN_LOADHPD,
IX86_BUILTIN_LOADLPD,
IX86_BUILTIN_STOREHPD,
IX86_BUILTIN_STORELPD,
IX86_BUILTIN_CVTDQ2PD,
IX86_BUILTIN_CVTDQ2PS,
IX86_BUILTIN_CVTPD2DQ,
IX86_BUILTIN_CVTPD2PI,
IX86_BUILTIN_CVTPD2PS,
IX86_BUILTIN_CVTTPD2DQ,
IX86_BUILTIN_CVTTPD2PI,
IX86_BUILTIN_CVTPI2PD,
IX86_BUILTIN_CVTSI2SD,
IX86_BUILTIN_CVTSI642SD,
IX86_BUILTIN_CVTSD2SI,
IX86_BUILTIN_CVTSD2SI64,
IX86_BUILTIN_CVTSD2SS,
IX86_BUILTIN_CVTSS2SD,
IX86_BUILTIN_CVTTSD2SI,
IX86_BUILTIN_CVTTSD2SI64,
IX86_BUILTIN_CVTPS2DQ,
IX86_BUILTIN_CVTPS2PD,
IX86_BUILTIN_CVTTPS2DQ,
IX86_BUILTIN_MOVNTI,
IX86_BUILTIN_MOVNTPD,
IX86_BUILTIN_MOVNTDQ,
IX86_BUILTIN_SETPD1,
IX86_BUILTIN_SETPD,
IX86_BUILTIN_CLRPD,
IX86_BUILTIN_SETRPD,
IX86_BUILTIN_LOADPD1,
IX86_BUILTIN_LOADRPD,
IX86_BUILTIN_STOREPD1,
IX86_BUILTIN_STORERPD,
IX86_BUILTIN_MASKMOVDQU,
IX86_BUILTIN_MOVMSKPD,
IX86_BUILTIN_PMOVMSKB128,
IX86_BUILTIN_MOVQ2DQ,
IX86_BUILTIN_MOVDQ2Q,
IX86_BUILTIN_PACKSSWB128,
IX86_BUILTIN_PACKSSDW128,
IX86_BUILTIN_PACKUSWB128,
IX86_BUILTIN_PADDB128,
IX86_BUILTIN_PADDW128,
IX86_BUILTIN_PADDD128,
IX86_BUILTIN_PADDQ128,
IX86_BUILTIN_PADDSB128,
IX86_BUILTIN_PADDSW128,
IX86_BUILTIN_PADDUSB128,
IX86_BUILTIN_PADDUSW128,
IX86_BUILTIN_PSUBB128,
IX86_BUILTIN_PSUBW128,
IX86_BUILTIN_PSUBD128,
IX86_BUILTIN_PSUBQ128,
IX86_BUILTIN_PSUBSB128,
IX86_BUILTIN_PSUBSW128,
IX86_BUILTIN_PSUBUSB128,
IX86_BUILTIN_PSUBUSW128,
IX86_BUILTIN_PAND128,
IX86_BUILTIN_PANDN128,
IX86_BUILTIN_POR128,
IX86_BUILTIN_PXOR128,
IX86_BUILTIN_PAVGB128,
IX86_BUILTIN_PAVGW128,
IX86_BUILTIN_PCMPEQB128,
IX86_BUILTIN_PCMPEQW128,
IX86_BUILTIN_PCMPEQD128,
IX86_BUILTIN_PCMPGTB128,
IX86_BUILTIN_PCMPGTW128,
IX86_BUILTIN_PCMPGTD128,
IX86_BUILTIN_PEXTRW128,
IX86_BUILTIN_PINSRW128,
IX86_BUILTIN_PMADDWD128,
IX86_BUILTIN_PMAXSW128,
IX86_BUILTIN_PMAXUB128,
IX86_BUILTIN_PMINSW128,
IX86_BUILTIN_PMINUB128,
IX86_BUILTIN_PMULUDQ,
IX86_BUILTIN_PMULUDQ128,
IX86_BUILTIN_PMULHUW128,
IX86_BUILTIN_PMULHW128,
IX86_BUILTIN_PMULLW128,
IX86_BUILTIN_PSADBW128,
IX86_BUILTIN_PSHUFHW,
IX86_BUILTIN_PSHUFLW,
IX86_BUILTIN_PSHUFD,
IX86_BUILTIN_PSLLW128,
IX86_BUILTIN_PSLLD128,
IX86_BUILTIN_PSLLQ128,
IX86_BUILTIN_PSRAW128,
IX86_BUILTIN_PSRAD128,
IX86_BUILTIN_PSRLW128,
IX86_BUILTIN_PSRLD128,
IX86_BUILTIN_PSRLQ128,
IX86_BUILTIN_PSLLDQI128,
IX86_BUILTIN_PSLLWI128,
IX86_BUILTIN_PSLLDI128,
IX86_BUILTIN_PSLLQI128,
IX86_BUILTIN_PSRAWI128,
IX86_BUILTIN_PSRADI128,
IX86_BUILTIN_PSRLDQI128,
IX86_BUILTIN_PSRLWI128,
IX86_BUILTIN_PSRLDI128,
IX86_BUILTIN_PSRLQI128,
IX86_BUILTIN_PUNPCKHBW128,
IX86_BUILTIN_PUNPCKHWD128,
IX86_BUILTIN_PUNPCKHDQ128,
IX86_BUILTIN_PUNPCKHQDQ128,
IX86_BUILTIN_PUNPCKLBW128,
IX86_BUILTIN_PUNPCKLWD128,
IX86_BUILTIN_PUNPCKLDQ128,
IX86_BUILTIN_PUNPCKLQDQ128,
IX86_BUILTIN_CLFLUSH,
IX86_BUILTIN_MFENCE,
IX86_BUILTIN_LFENCE,
IX86_BUILTIN_ADDSUBPS,
IX86_BUILTIN_HADDPS,
IX86_BUILTIN_HSUBPS,
IX86_BUILTIN_MOVSHDUP,
IX86_BUILTIN_MOVSLDUP,
IX86_BUILTIN_ADDSUBPD,
IX86_BUILTIN_HADDPD,
IX86_BUILTIN_HSUBPD,
IX86_BUILTIN_LOADDDUP,
IX86_BUILTIN_MOVDDUP,
IX86_BUILTIN_LDDQU,
IX86_BUILTIN_MONITOR,
IX86_BUILTIN_MWAIT,
IX86_BUILTIN_MAX
};
# 2714 "../../gcc/gcc/config/i386/i386.h"
extern int const dbx_register_map[53];
extern int const dbx64_register_map[53];
extern int const svr4_dbx_register_map[53];
# 2843 "../../gcc/gcc/config/i386/i386.h"
enum processor_type
{
PROCESSOR_I386,
PROCESSOR_I486,
PROCESSOR_PENTIUM,
PROCESSOR_PENTIUMPRO,
PROCESSOR_K6,
PROCESSOR_ATHLON,
PROCESSOR_PENTIUM4,
PROCESSOR_K8,
PROCESSOR_NOCONA,
PROCESSOR_max
};
extern enum processor_type ix86_tune;
extern const char *ix86_tune_string;
extern enum processor_type ix86_arch;
extern const char *ix86_arch_string;
enum fpmath_unit
{
FPMATH_387 = 1,
FPMATH_SSE = 2
};
extern enum fpmath_unit ix86_fpmath;
extern const char *ix86_fpmath_string;
enum tls_dialect
{
TLS_DIALECT_GNU,
TLS_DIALECT_SUN
};
extern enum tls_dialect ix86_tls_dialect;
extern const char *ix86_tls_dialect_string;
enum cmodel {
CM_32,
CM_SMALL,
CM_KERNEL,
CM_MEDIUM,
CM_LARGE,
CM_SMALL_PIC
};
extern enum cmodel ix86_cmodel;
extern const char *ix86_cmodel_string;
enum asm_dialect {
ASM_ATT,
ASM_INTEL
};
extern const char *ix86_asm_string;
extern enum asm_dialect ix86_asm_dialect;
extern int ix86_regparm;
extern const char *ix86_regparm_string;
extern unsigned int ix86_preferred_stack_boundary;
extern const char *ix86_preferred_stack_boundary_string;
extern int ix86_branch_cost;
extern const char *ix86_branch_cost_string;
extern const char *ix86_debug_arg_string;
extern const char *ix86_debug_addr_string;
extern const char *ix86_align_loops_string;
extern const char *ix86_align_jumps_string;
extern const char *ix86_align_funcs_string;
extern enum reg_class const regclass_map[53];
extern rtx ix86_compare_op0;
extern rtx ix86_compare_op1;
# 3010 "../../gcc/gcc/config/i386/i386.h"
struct machine_function
{
struct stack_local_entry *stack_locals;
const char *some_ld_name;
int save_varrargs_registers;
int accesses_prev_frame;
int optimize_mode_switching;
int use_fast_prologue_epilogue;
int use_fast_prologue_epilogue_nregs;
};
# 5 "./tm.h" 2
# 1 "../../gcc/gcc/config/i386/unix.h" 1
# 6 "./tm.h" 2
# 1 "../../gcc/gcc/config/i386/att.h" 1
# 7 "./tm.h" 2
# 1 "../../gcc/gcc/config/dbxelf.h" 1
# 8 "./tm.h" 2
# 1 "../../gcc/gcc/config/elfos.h" 1
# 9 "./tm.h" 2
# 1 "../../gcc/gcc/config/svr4.h" 1
# 10 "./tm.h" 2
# 1 "../../gcc/gcc/config/linux.h" 1
# 11 "./tm.h" 2
# 1 "../../gcc/gcc/config/i386/linux.h" 1
# 12 "./tm.h" 2
# 1 "../../gcc/gcc/defaults.h" 1
# 13 "./tm.h" 2
# 25 "../../gcc/gcc/gengtype.c" 2
# 1 "../../gcc/gcc/gengtype.h" 1
# 23 "../../gcc/gcc/gengtype.h"
struct fileloc {
const char *file;
int line;
};
enum typekind {
TYPE_SCALAR,
TYPE_STRING,
TYPE_STRUCT,
TYPE_UNION,
TYPE_POINTER,
TYPE_ARRAY,
TYPE_LANG_STRUCT,
TYPE_PARAM_STRUCT
};
typedef struct pair *pair_p;
typedef struct type *type_p;
typedef unsigned lang_bitmap;
struct nested_ptr_data {
type_p type;
const char *convert_to;
const char *convert_from;
};
typedef struct options {
struct options *next;
const char *name;
const char *info;
} *options_p;
struct pair {
pair_p next;
const char *name;
type_p type;
struct fileloc line;
options_p opt;
};
enum gc_used_enum
{
GC_UNUSED = 0,
GC_USED,
GC_MAYBE_POINTED_TO,
GC_POINTED_TO
};
struct type {
enum typekind kind;
type_p next;
type_p pointer_to;
enum gc_used_enum gc_used;
union {
type_p p;
struct {
const char *tag;
struct fileloc line;
pair_p fields;
options_p opt;
lang_bitmap bitmap;
type_p lang_struct;
} s;
char *sc;
struct {
type_p p;
const char *len;
} a;
struct {
type_p stru;
type_p param[10];
struct fileloc line;
} param_struct;
} u;
};
# 116 "../../gcc/gcc/gengtype.h"
extern struct type string_type;
extern int lexer_toplevel_done;
extern struct fileloc lexer_line;
extern void error_at_line
(struct fileloc *pos, const char *msg, ...) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__nonnull__ (2)));
extern int xvasprintf (char **, const char *, va_list)
__attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__nonnull__ (2)));
extern char * xasprintf (const char *, ...)
__attribute__ ((__format__ (__printf__, 1, 2))) __attribute__ ((__nonnull__ (1)));
extern void do_typedef (const char *s, type_p t, struct fileloc *pos);
extern type_p resolve_typedef (const char *s, struct fileloc *pos);
extern void new_structure (const char *name, int isunion,
struct fileloc *pos, pair_p fields,
options_p o);
extern type_p find_structure (const char *s, int isunion);
extern type_p create_scalar_type (const char *name, size_t name_len);
extern type_p create_pointer (type_p t);
extern type_p create_array (type_p t, const char *len);
extern options_p create_option (const char *name, void *info);
extern type_p adjust_field_type (type_p, options_p);
extern void note_variable (const char *s, type_p t, options_p o,
struct fileloc *pos);
extern void note_yacc_type (options_p o, pair_p fields,
pair_p typeinfo, struct fileloc *pos);
extern int yylex (void);
extern void yyerror (const char *);
extern int yyparse (void);
extern void parse_file (const char *name);
struct outf
{
struct outf *next;
const char *name;
size_t buflength;
size_t bufused;
char *buf;
};
typedef struct outf * outf_p;
extern outf_p get_output_file_with_visibility
(const char *input_file);
const char *get_output_file_name (const char *);
extern outf_p base_files[];
extern lang_bitmap get_base_file_bitmap (const char *input_file);
extern void oprintf (outf_p o, const char *S, ...)
__attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__nonnull__ (2)));
# 26 "../../gcc/gcc/gengtype.c" 2
# 1 "./gtyp-gen.h" 1
static const char *const srcdir =
"../../gcc/gcc"
;
static const char *const lang_files[] = {
"../../gcc/gcc/cp/mangle.c",
"../../gcc/gcc/cp/name-lookup.h",
"../../gcc/gcc/cp/name-lookup.c",
"../../gcc/gcc/cp/cp-tree.h",
"../../gcc/gcc/cp/decl.h",
"../../gcc/gcc/cp/call.c",
"../../gcc/gcc/cp/decl.c",
"../../gcc/gcc/cp/decl2.c",
"../../gcc/gcc/cp/pt.c",
"../../gcc/gcc/cp/repo.c",
"../../gcc/gcc/cp/semantics.c",
"../../gcc/gcc/cp/tree.c",
"../../gcc/gcc/cp/parser.c",
"../../gcc/gcc/cp/method.c",
"../../gcc/gcc/cp/typeck2.c",
"../../gcc/gcc/c-common.c",
"../../gcc/gcc/c-common.h",
"../../gcc/gcc/c-lex.c",
"../../gcc/gcc/c-pragma.c",
"../../gcc/gcc/java/java-tree.h",
"../../gcc/gcc/java/jcf.h",
"../../gcc/gcc/java/lex.h",
"../../gcc/gcc/java/parse.h",
"../../gcc/gcc/java/builtins.c",
"../../gcc/gcc/java/class.c",
"../../gcc/gcc/java/constants.c",
"../../gcc/gcc/java/decl.c",
"../../gcc/gcc/java/expr.c",
"../../gcc/gcc/java/jcf-parse.c",
"../../gcc/gcc/java/jcf-write.c",
"../../gcc/gcc/java/lang.c",
"../../gcc/gcc/java/mangle.c",
"../../gcc/gcc/java/parse.y",
"../../gcc/gcc/java/resource.c",
"../../gcc/gcc/c-lang.c",
"../../gcc/gcc/c-parse.in",
"../../gcc/gcc/c-tree.h",
"../../gcc/gcc/c-decl.c",
"../../gcc/gcc/c-common.c",
"../../gcc/gcc/c-common.h",
"../../gcc/gcc/c-pragma.c",
"../../gcc/gcc/c-objc-common.c",
((void *)0)};
static const char *const langs_for_lang_files[] = {
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"cp",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"java",
"c",
"c",
"c",
"c",
"c",
"c",
"c",
"c",
((void *)0)};
static const char *const all_files[] = {
"../../gcc/gcc/input.h",
"../../gcc/gcc/coretypes.h",
"../../gcc/gcc/../libcpp/include/line-map.h",
"../../gcc/gcc/../libcpp/include/cpplib.h",
"../../gcc/gcc/../libcpp/include/cpp-id-data.h",
"auto-host.h",
"../../gcc/gcc/../include/ansidecl.h",
"../../gcc/gcc/config/i386/i386.h",
"../../gcc/gcc/config/i386/unix.h",
"../../gcc/gcc/config/i386/att.h",
"../../gcc/gcc/config/dbxelf.h",
"../../gcc/gcc/config/elfos.h",
"../../gcc/gcc/config/svr4.h",
"../../gcc/gcc/config/linux.h",
"../../gcc/gcc/config/i386/linux.h",
"../../gcc/gcc/defaults.h",
"../../gcc/gcc/../include/hashtab.h",
"../../gcc/gcc/../include/splay-tree.h",
"../../gcc/gcc/bitmap.h",
"../../gcc/gcc/coverage.c",
"../../gcc/gcc/function.h",
"../../gcc/gcc/rtl.h",
"../../gcc/gcc/optabs.h",
"../../gcc/gcc/tree.h",
"../../gcc/gcc/libfuncs.h",
"../../gcc/gcc/../libcpp/include/symtab.h",
"../../gcc/gcc/real.h",
"../../gcc/gcc/varray.h",
"../../gcc/gcc/insn-addr.h",
"../../gcc/gcc/hwint.h",
"../../gcc/gcc/cselib.h",
"../../gcc/gcc/basic-block.h",
"../../gcc/gcc/cgraph.h",
"../../gcc/gcc/c-common.h",
"../../gcc/gcc/c-tree.h",
"../../gcc/gcc/reload.h",
"../../gcc/gcc/alias.c",
"../../gcc/gcc/bitmap.c",
"../../gcc/gcc/cselib.c",
"../../gcc/gcc/cgraph.c",
"../../gcc/gcc/dbxout.c",
"../../gcc/gcc/dwarf2out.c",
"../../gcc/gcc/dwarf2asm.c",
"../../gcc/gcc/dojump.c",
"../../gcc/gcc/emit-rtl.c",
"../../gcc/gcc/except.c",
"../../gcc/gcc/explow.c",
"../../gcc/gcc/expr.c",
"../../gcc/gcc/fold-const.c",
"../../gcc/gcc/function.c",
"../../gcc/gcc/gcse.c",
"../../gcc/gcc/integrate.c",
"../../gcc/gcc/lists.c",
"../../gcc/gcc/optabs.c",
"../../gcc/gcc/profile.c",
"../../gcc/gcc/ra-build.c",
"../../gcc/gcc/regclass.c",
"../../gcc/gcc/reg-stack.c",
"../../gcc/gcc/cfglayout.c",
"../../gcc/gcc/sdbout.c",
"../../gcc/gcc/stor-layout.c",
"../../gcc/gcc/stringpool.c",
"../../gcc/gcc/tree.c",
"../../gcc/gcc/varasm.c",
"../../gcc/gcc/tree-mudflap.c",
"../../gcc/gcc/tree-flow.h",
"../../gcc/gcc/c-objc-common.c",
"../../gcc/gcc/c-common.c",
"../../gcc/gcc/c-parse.in",
"../../gcc/gcc/tree-ssanames.c",
"../../gcc/gcc/tree-eh.c",
"../../gcc/gcc/tree-phinodes.c",
"../../gcc/gcc/tree-cfg.c",
"../../gcc/gcc/tree-dfa.c",
"../../gcc/gcc/tree-ssa-propagate.c",
"../../gcc/gcc/tree-iterator.c",
"../../gcc/gcc/gimplify.c",
"../../gcc/gcc/tree-chrec.h",
"../../gcc/gcc/tree-ssa-operands.h",
"../../gcc/gcc/tree-ssa-operands.c",
"../../gcc/gcc/tree-profile.c",
"../../gcc/gcc/rtl-profile.c",
"../../gcc/gcc/tree-nested.c",
"../../gcc/gcc/config/i386/i386.c",
"../../gcc/gcc/cp/mangle.c",
"../../gcc/gcc/cp/name-lookup.h",
"../../gcc/gcc/cp/name-lookup.c",
"../../gcc/gcc/cp/cp-tree.h",
"../../gcc/gcc/cp/decl.h",
"../../gcc/gcc/cp/call.c",
"../../gcc/gcc/cp/decl.c",
"../../gcc/gcc/cp/decl2.c",
"../../gcc/gcc/cp/pt.c",
"../../gcc/gcc/cp/repo.c",
"../../gcc/gcc/cp/semantics.c",
"../../gcc/gcc/cp/tree.c",
"../../gcc/gcc/cp/parser.c",
"../../gcc/gcc/cp/method.c",
"../../gcc/gcc/cp/typeck2.c",
"../../gcc/gcc/c-common.c",
"../../gcc/gcc/c-common.h",
"../../gcc/gcc/c-lex.c",
"../../gcc/gcc/c-pragma.c",
"../../gcc/gcc/java/java-tree.h",
"../../gcc/gcc/java/jcf.h",
"../../gcc/gcc/java/lex.h",
"../../gcc/gcc/java/parse.h",
"../../gcc/gcc/java/builtins.c",
"../../gcc/gcc/java/class.c",
"../../gcc/gcc/java/constants.c",
"../../gcc/gcc/java/decl.c",
"../../gcc/gcc/java/expr.c",
"../../gcc/gcc/java/jcf-parse.c",
"../../gcc/gcc/java/jcf-write.c",
"../../gcc/gcc/java/lang.c",
"../../gcc/gcc/java/mangle.c",
"../../gcc/gcc/java/parse.y",
"../../gcc/gcc/java/resource.c",
"../../gcc/gcc/c-lang.c",
"../../gcc/gcc/c-parse.in",
"../../gcc/gcc/c-tree.h",
"../../gcc/gcc/c-decl.c",
"../../gcc/gcc/c-common.c",
"../../gcc/gcc/c-common.h",
"../../gcc/gcc/c-pragma.c",
"../../gcc/gcc/c-objc-common.c",
((void *)0)};
static const char *const lang_dir_names[] = { "c",
"cp",
"java",
((void *)0)};
# 27 "../../gcc/gcc/gengtype.c" 2
# 1 "../../gcc/gcc/errors.h" 1
# 33 "../../gcc/gcc/errors.h"
extern void warning (const char *, ...);
extern void error (const char *, ...);
extern void fatal (const char *, ...) __attribute__ ((__noreturn__));
extern void internal_error (const char *, ...) __attribute__ ((__noreturn__));
extern const char *trim_filename (const char *);
extern int have_error;
extern const char *progname;
# 28 "../../gcc/gcc/gengtype.c" 2
static int hit_error = 0;
static void gen_rtx_next (void);
static void write_rtx_next (void);
static void open_base_files (void);
static void close_output_files (void);
void
error_at_line (struct fileloc *pos, const char *msg, ...)
{
va_list ap;
__builtin_va_start(ap,msg);
fprintf (stderr, "%s:%d: ", pos->file, pos->line);
vfprintf (stderr, msg, ap);
fputc_unlocked ('\n', stderr);
hit_error = 1;
__builtin_va_end(ap);
}
int
xvasprintf (char **result, const char *format, va_list args)
{
int ret = vasprintf (result, format, args);
if (*result == ((void *)0) || ret < 0)
{
fputs_unlocked ("gengtype: out of memory", stderr);
xexit (1);
}
return ret;
}
char *
xasprintf (const char *format, ...)
{
char *result;
va_list ap;
__builtin_va_start(ap,format);
xvasprintf (&result, format, ap);
__builtin_va_end(ap);
return result;
}
struct type string_type = {
TYPE_STRING, ((void *)0), ((void *)0), GC_USED, {0}
};
static pair_p typedefs;
static type_p structures;
static type_p param_structs;
static pair_p variables;
static void do_scalar_typedef (const char *, struct fileloc *);
static type_p find_param_structure
(type_p t, type_p param[10]);
static type_p adjust_field_tree_exp (type_p t, options_p opt);
static type_p adjust_field_rtx_def (type_p t, options_p opt);
void
do_typedef (const char *s, type_p t, struct fileloc *pos)
{
pair_p p;
for (p = typedefs; p != ((void *)0); p = p->next)
if (strcmp (p->name, s) == 0)
{
if (p->type != t)
{
error_at_line (pos, "type `%s' previously defined", s);
error_at_line (&p->line, "previously defined here");
}
return;
}
p = ((struct pair *) xmalloc (sizeof (struct pair)));
p->next = typedefs;
p->name = s;
p->type = t;
p->line = *pos;
typedefs = p;
}
static void
do_scalar_typedef (const char *s, struct fileloc *pos)
{
do_typedef (s, create_scalar_type (s, strlen (s)), pos);
}
type_p
resolve_typedef (const char *s, struct fileloc *pos)
{
pair_p p;
for (p = typedefs; p != ((void *)0); p = p->next)
if (strcmp (p->name, s) == 0)
return p->type;
error_at_line (pos, "unidentified type `%s'", s);
return create_scalar_type ("char", 4);
}
void
new_structure (const char *name, int isunion, struct fileloc *pos,
pair_p fields, options_p o)
{
type_p si;
type_p s = ((void *)0);
lang_bitmap bitmap = get_base_file_bitmap (pos->file);
for (si = structures; si != ((void *)0); si = si->next)
if (strcmp (name, si->u.s.tag) == 0
&& ((si)->kind == TYPE_UNION || ((si)->kind == TYPE_LANG_STRUCT && (si)->u.s.lang_struct->kind == TYPE_UNION)) == isunion)
{
type_p ls = ((void *)0);
if (si->kind == TYPE_LANG_STRUCT)
{
ls = si;
for (si = ls->u.s.lang_struct; si != ((void *)0); si = si->next)
if (si->u.s.bitmap == bitmap)
s = si;
}
else if (si->u.s.line.file != ((void *)0) && si->u.s.bitmap != bitmap)
{
ls = si;
si = ((struct type *) xcalloc (1, sizeof (struct type)));
memcpy (si, ls, sizeof (struct type));
ls->kind = TYPE_LANG_STRUCT;
ls->u.s.lang_struct = si;
ls->u.s.fields = ((void *)0);
si->next = ((void *)0);
si->pointer_to = ((void *)0);
si->u.s.lang_struct = ls;
}
else
s = si;
if (ls != ((void *)0) && s == ((void *)0))
{
s = ((struct type *) xcalloc (1, sizeof (struct type)));
s->next = ls->u.s.lang_struct;
ls->u.s.lang_struct = s;
s->u.s.lang_struct = ls;
}
break;
}
if (s == ((void *)0))
{
s = ((struct type *) xcalloc (1, sizeof (struct type)));
s->next = structures;
structures = s;
}
if (s->u.s.line.file != ((void *)0)
|| (s->u.s.lang_struct && (s->u.s.lang_struct->u.s.bitmap & bitmap)))
{
error_at_line (pos, "duplicate structure definition");
error_at_line (&s->u.s.line, "previous definition here");
}
s->kind = isunion ? TYPE_UNION : TYPE_STRUCT;
s->u.s.tag = name;
s->u.s.line = *pos;
s->u.s.fields = fields;
s->u.s.opt = o;
s->u.s.bitmap = bitmap;
if (s->u.s.lang_struct)
s->u.s.lang_struct->u.s.bitmap |= bitmap;
}
type_p
find_structure (const char *name, int isunion)
{
type_p s;
for (s = structures; s != ((void *)0); s = s->next)
if (strcmp (name, s->u.s.tag) == 0
&& ((s)->kind == TYPE_UNION || ((s)->kind == TYPE_LANG_STRUCT && (s)->u.s.lang_struct->kind == TYPE_UNION)) == isunion)
return s;
s = ((struct type *) xcalloc (1, sizeof (struct type)));
s->next = structures;
structures = s;
s->kind = isunion ? TYPE_UNION : TYPE_STRUCT;
s->u.s.tag = name;
structures = s;
return s;
}
static type_p
find_param_structure (type_p t, type_p param[10])
{
type_p res;
for (res = param_structs; res; res = res->next)
if (res->u.param_struct.stru == t
&& memcmp (res->u.param_struct.param, param,
sizeof (type_p) * 10) == 0)
break;
if (res == ((void *)0))
{
res = ((struct type *) xcalloc (1, sizeof (struct type)));
res->kind = TYPE_PARAM_STRUCT;
res->next = param_structs;
param_structs = res;
res->u.param_struct.stru = t;
memcpy (res->u.param_struct.param, param, sizeof (type_p) * 10);
}
return res;
}
type_p
create_scalar_type (const char *name, size_t name_len)
{
type_p r = ((struct type *) xcalloc (1, sizeof (struct type)));
r->kind = TYPE_SCALAR;
r->u.sc = (char *) xmemdup (name, name_len, name_len + 1);
return r;
}
type_p
create_pointer (type_p t)
{
if (! t->pointer_to)
{
type_p r = ((struct type *) xcalloc (1, sizeof (struct type)));
r->kind = TYPE_POINTER;
r->u.p = t;
t->pointer_to = r;
}
return t->pointer_to;
}
type_p
create_array (type_p t, const char *len)
{
type_p v;
v = ((struct type *) xcalloc (1, sizeof (struct type)));
v->kind = TYPE_ARRAY;
v->u.a.p = t;
v->u.a.len = len;
return v;
}
options_p
create_option (const char *name, void *info)
{
options_p o = ((struct options *) xmalloc (sizeof (struct options)));
o->name = name;
o->info = (const char*) info;
return o;
}
void
note_variable (const char *s, type_p t, options_p o, struct fileloc *pos)
{
pair_p n;
n = ((struct pair *) xmalloc (sizeof (struct pair)));
n->name = s;
n->type = t;
n->line = *pos;
n->opt = o;
n->next = variables;
variables = n;
}
enum rtx_code {
# 1 "../../gcc/gcc/rtl.def" 1
# 82 "../../gcc/gcc/rtl.def"
UNKNOWN ,
EXPR_LIST ,
INSN_LIST ,
SEQUENCE ,
ADDRESS ,
# 115 "../../gcc/gcc/rtl.def"
INSN ,
JUMP_INSN ,
CALL_INSN ,
BARRIER ,
CODE_LABEL ,
# 152 "../../gcc/gcc/rtl.def"
NOTE ,
# 165 "../../gcc/gcc/rtl.def"
COND_EXEC ,
PARALLEL ,
ASM_INPUT ,
# 204 "../../gcc/gcc/rtl.def"
ASM_OPERANDS ,
# 216 "../../gcc/gcc/rtl.def"
UNSPEC ,
UNSPEC_VOLATILE ,
ADDR_VEC ,
# 248 "../../gcc/gcc/rtl.def"
ADDR_DIFF_VEC ,
# 259 "../../gcc/gcc/rtl.def"
PREFETCH ,
# 271 "../../gcc/gcc/rtl.def"
SET ,
USE ,
CLOBBER ,
CALL ,
RETURN ,
TRAP_IF ,
RESX ,
CONST_INT ,
CONST_DOUBLE ,
CONST_VECTOR ,
CONST_STRING ,
CONST ,
PC ,
VALUE ,
# 345 "../../gcc/gcc/rtl.def"
REG ,
SCRATCH ,
# 362 "../../gcc/gcc/rtl.def"
SUBREG ,
# 375 "../../gcc/gcc/rtl.def"
STRICT_LOW_PART ,
CONCAT ,
MEM ,
LABEL_REF ,
SYMBOL_REF ,
CC0 ,
# 418 "../../gcc/gcc/rtl.def"
IF_THEN_ELSE ,
COMPARE ,
PLUS ,
MINUS ,
NEG ,
MULT ,
DIV ,
MOD ,
UDIV ,
UMOD ,
AND ,
IOR ,
XOR ,
NOT ,
ASHIFT ,
ROTATE ,
ASHIFTRT ,
LSHIFTRT ,
ROTATERT ,
SMIN ,
SMAX ,
UMIN ,
UMAX ,
# 477 "../../gcc/gcc/rtl.def"
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
# 494 "../../gcc/gcc/rtl.def"
PRE_MODIFY ,
POST_MODIFY ,
NE ,
EQ ,
GE ,
GT ,
LE ,
LT ,
GEU ,
GTU ,
LEU ,
LTU ,
UNORDERED ,
ORDERED ,
UNEQ ,
UNGE ,
UNGT ,
UNLE ,
UNLT ,
LTGT ,
SIGN_EXTEND ,
ZERO_EXTEND ,
TRUNCATE ,
FLOAT_EXTEND ,
FLOAT_TRUNCATE ,
FLOAT ,
FIX ,
UNSIGNED_FLOAT ,
UNSIGNED_FIX ,
ABS ,
SQRT ,
FFS ,
CLZ ,
CTZ ,
POPCOUNT ,
PARITY ,
# 590 "../../gcc/gcc/rtl.def"
SIGN_EXTRACT ,
ZERO_EXTRACT ,
HIGH ,
LO_SUM ,
VEC_MERGE ,
VEC_SELECT ,
VEC_CONCAT ,
VEC_DUPLICATE ,
SS_PLUS ,
US_PLUS ,
SS_MINUS ,
US_MINUS ,
SS_TRUNCATE ,
US_TRUNCATE ,
VAR_LOCATION ,
# 342 "../../gcc/gcc/gengtype.c" 2
NUM_RTX_CODE
};
static const char * const rtx_name[NUM_RTX_CODE] = {
# 1 "../../gcc/gcc/rtl.def" 1
# 82 "../../gcc/gcc/rtl.def"
"UnKnown" ,
"expr_list" ,
"insn_list" ,
"sequence" ,
"address" ,
# 115 "../../gcc/gcc/rtl.def"
"insn" ,
"jump_insn" ,
"call_insn" ,
"barrier" ,
"code_label" ,
# 152 "../../gcc/gcc/rtl.def"
"note" ,
# 165 "../../gcc/gcc/rtl.def"
"cond_exec" ,
"parallel" ,
"asm_input" ,
# 204 "../../gcc/gcc/rtl.def"
"asm_operands" ,
# 216 "../../gcc/gcc/rtl.def"
"unspec" ,
"unspec_volatile" ,
"addr_vec" ,
# 248 "../../gcc/gcc/rtl.def"
"addr_diff_vec" ,
# 259 "../../gcc/gcc/rtl.def"
"prefetch" ,
# 271 "../../gcc/gcc/rtl.def"
"set" ,
"use" ,
"clobber" ,
"call" ,
"return" ,
"trap_if" ,
"resx" ,
"const_int" ,
"const_double" ,
"const_vector" ,
"const_string" ,
"const" ,
"pc" ,
"value" ,
# 345 "../../gcc/gcc/rtl.def"
"reg" ,
"scratch" ,
# 362 "../../gcc/gcc/rtl.def"
"subreg" ,
# 375 "../../gcc/gcc/rtl.def"
"strict_low_part" ,
"concat" ,
"mem" ,
"label_ref" ,
"symbol_ref" ,
"cc0" ,
# 418 "../../gcc/gcc/rtl.def"
"if_then_else" ,
"compare" ,
"plus" ,
"minus" ,
"neg" ,
"mult" ,
"div" ,
"mod" ,
"udiv" ,
"umod" ,
"and" ,
"ior" ,
"xor" ,
"not" ,
"ashift" ,
"rotate" ,
"ashiftrt" ,
"lshiftrt" ,
"rotatert" ,
"smin" ,
"smax" ,
"umin" ,
"umax" ,
# 477 "../../gcc/gcc/rtl.def"
"pre_dec" ,
"pre_inc" ,
"post_dec" ,
"post_inc" ,
# 494 "../../gcc/gcc/rtl.def"
"pre_modify" ,
"post_modify" ,
"ne" ,
"eq" ,
"ge" ,
"gt" ,
"le" ,
"lt" ,
"geu" ,
"gtu" ,
"leu" ,
"ltu" ,
"unordered" ,
"ordered" ,
"uneq" ,
"unge" ,
"ungt" ,
"unle" ,
"unlt" ,
"ltgt" ,
"sign_extend" ,
"zero_extend" ,
"truncate" ,
"float_extend" ,
"float_truncate" ,
"float" ,
"fix" ,
"unsigned_float" ,
"unsigned_fix" ,
"abs" ,
"sqrt" ,
"ffs" ,
"clz" ,
"ctz" ,
"popcount" ,
"parity" ,
# 590 "../../gcc/gcc/rtl.def"
"sign_extract" ,
"zero_extract" ,
"high" ,
"lo_sum" ,
"vec_merge" ,
"vec_select" ,
"vec_concat" ,
"vec_duplicate" ,
"ss_plus" ,
"us_plus" ,
"ss_minus" ,
"us_minus" ,
"ss_truncate" ,
"us_truncate" ,
"var_location" ,
# 349 "../../gcc/gcc/gengtype.c" 2
};
static const char * const rtx_format[NUM_RTX_CODE] = {
# 1 "../../gcc/gcc/rtl.def" 1
# 82 "../../gcc/gcc/rtl.def"
"*" ,
"ee" ,
"ue" ,
"E" ,
"e" ,
# 115 "../../gcc/gcc/rtl.def"
"iuuBieiee" ,
"iuuBieiee0" ,
"iuuBieieee" ,
"iuu000000" ,
"iuuB00is" ,
# 152 "../../gcc/gcc/rtl.def"
"iuuB0ni" ,
# 165 "../../gcc/gcc/rtl.def"
"ee" ,
"E" ,
"s" ,
# 204 "../../gcc/gcc/rtl.def"
"ssiEEsi" ,
# 216 "../../gcc/gcc/rtl.def"
"Ei" ,
"Ei" ,
"E" ,
# 248 "../../gcc/gcc/rtl.def"
"eEee0" ,
# 259 "../../gcc/gcc/rtl.def"
"eee" ,
# 271 "../../gcc/gcc/rtl.def"
"ee" ,
"e" ,
"e" ,
"ee" ,
"" ,
"ee" ,
"i" ,
"w" ,
"ww" ,
"E" ,
"s" ,
"e" ,
"" ,
"0" ,
# 345 "../../gcc/gcc/rtl.def"
"i00" ,
"0" ,
# 362 "../../gcc/gcc/rtl.def"
"ei" ,
# 375 "../../gcc/gcc/rtl.def"
"e" ,
"ee" ,
"e0" ,
"u00" ,
"s00" ,
"" ,
# 418 "../../gcc/gcc/rtl.def"
"eee" ,
"ee" ,
"ee" ,
"ee" ,
"e" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"e" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
# 477 "../../gcc/gcc/rtl.def"
"e" ,
"e" ,
"e" ,
"e" ,
# 494 "../../gcc/gcc/rtl.def"
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
"e" ,
# 590 "../../gcc/gcc/rtl.def"
"eee" ,
"eee" ,
"e" ,
"ee" ,
"eee" ,
"ee" ,
"ee" ,
"e" ,
"ee" ,
"ee" ,
"ee" ,
"ee" ,
"e" ,
"e" ,
"te" ,
# 355 "../../gcc/gcc/gengtype.c" 2
};
static int rtx_next_new[NUM_RTX_CODE];
enum insn_note {
# 1 "../../gcc/gcc/insn-notes.def" 1
# 36 "../../gcc/gcc/insn-notes.def"
NOTE_INSN_DELETED,
NOTE_INSN_DELETED_LABEL,
NOTE_INSN_BLOCK_BEG,
NOTE_INSN_BLOCK_END,
NOTE_INSN_LOOP_BEG,
NOTE_INSN_LOOP_END,
NOTE_INSN_FUNCTION_BEG,
NOTE_INSN_FUNCTION_END,
NOTE_INSN_PROLOGUE_END,
NOTE_INSN_EPILOGUE_BEG,
NOTE_INSN_EH_REGION_BEG,
NOTE_INSN_EH_REGION_END,
NOTE_INSN_REPEATED_LINE_NUMBER,
NOTE_INSN_VAR_LOCATION,
NOTE_INSN_EXPECTED_VALUE,
NOTE_INSN_BASIC_BLOCK,
NOTE_INSN_UNLIKELY_EXECUTED_CODE,
# 365 "../../gcc/gcc/gengtype.c" 2
NOTE_INSN_MAX
};
static const char *const note_insn_name[NOTE_INSN_MAX] = {
# 1 "../../gcc/gcc/insn-notes.def" 1
# 36 "../../gcc/gcc/insn-notes.def"
"NOTE_INSN_DELETED",
"NOTE_INSN_DELETED_LABEL",
"NOTE_INSN_BLOCK_BEG",
"NOTE_INSN_BLOCK_END",
"NOTE_INSN_LOOP_BEG",
"NOTE_INSN_LOOP_END",
"NOTE_INSN_FUNCTION_BEG",
"NOTE_INSN_FUNCTION_END",
"NOTE_INSN_PROLOGUE_END",
"NOTE_INSN_EPILOGUE_BEG",
"NOTE_INSN_EH_REGION_BEG",
"NOTE_INSN_EH_REGION_END",
"NOTE_INSN_REPEATED_LINE_NUMBER",
"NOTE_INSN_VAR_LOCATION",
"NOTE_INSN_EXPECTED_VALUE",
"NOTE_INSN_BASIC_BLOCK",
"NOTE_INSN_UNLIKELY_EXECUTED_CODE",
# 373 "../../gcc/gcc/gengtype.c" 2
};
static void
gen_rtx_next (void)
{
int i;
for (i = 0; i < NUM_RTX_CODE; i++)
{
int k;
rtx_next_new[i] = -1;
if (strncmp (rtx_format[i], "iuu", 3) == 0)
rtx_next_new[i] = 2;
else if (i == COND_EXEC || i == SET || i == EXPR_LIST || i == INSN_LIST)
rtx_next_new[i] = 1;
else
for (k = strlen (rtx_format[i]) - 1; k >= 0; k--)
if (rtx_format[i][k] == 'e' || rtx_format[i][k] == 'u')
rtx_next_new[i] = k;
}
}
static void
write_rtx_next (void)
{
outf_p f = get_output_file_with_visibility (((void *)0));
int i;
oprintf (f, "\n/* Used to implement the RTX_NEXT macro. */\n");
oprintf (f, "const unsigned char rtx_next[NUM_RTX_CODE] = {\n");
for (i = 0; i < NUM_RTX_CODE; i++)
if (rtx_next_new[i] == -1)
oprintf (f, " 0,\n");
else
oprintf (f,
" RTX_HDR_SIZE + %d * sizeof (rtunion),\n",
rtx_next_new[i]);
oprintf (f, "};\n");
}
static type_p
adjust_field_rtx_def (type_p t, options_p opt __attribute__ ((__unused__)))
{
pair_p flds = ((void *)0);
options_p nodot;
int i;
type_p rtx_tp, rtvec_tp, tree_tp, mem_attrs_tp, note_union_tp, scalar_tp;
type_p bitmap_tp, basic_block_tp, reg_attrs_tp;
if (t->kind != TYPE_UNION)
{
error_at_line (&lexer_line,
"special `rtx_def' must be applied to a union");
return &string_type;
}
nodot = ((struct options *) xmalloc (sizeof (struct options)));
nodot->next = ((void *)0);
nodot->name = "dot";
nodot->info = "";
rtx_tp = create_pointer (find_structure ("rtx_def", 0));
rtvec_tp = create_pointer (find_structure ("rtvec_def", 0));
tree_tp = create_pointer (find_structure ("tree_node", 1));
mem_attrs_tp = create_pointer (find_structure ("mem_attrs", 0));
reg_attrs_tp = create_pointer (find_structure ("reg_attrs", 0));
bitmap_tp = create_pointer (find_structure ("bitmap_element_def", 0));
basic_block_tp = create_pointer (find_structure ("basic_block_def", 0));
scalar_tp = create_scalar_type ("rtunion scalar", 14);
{
pair_p note_flds = ((void *)0);
int c;
for (c = 0; c <= NOTE_INSN_MAX; c++)
{
pair_p old_note_flds = note_flds;
note_flds = ((struct pair *) xmalloc (sizeof (struct pair)));
note_flds->line.file = "../../gcc/gcc/gengtype.c";
note_flds->line.line = 465;
note_flds->opt = ((struct options *) xmalloc (sizeof (struct options)));
note_flds->opt->next = nodot;
note_flds->opt->name = "tag";
note_flds->opt->info = note_insn_name[c];
note_flds->next = old_note_flds;
switch (c)
{
case NOTE_INSN_MAX:
note_flds->opt->name = "default";
note_flds->name = "rt_str";
note_flds->type = &string_type;
break;
case NOTE_INSN_BLOCK_BEG:
case NOTE_INSN_BLOCK_END:
note_flds->name = "rt_tree";
note_flds->type = tree_tp;
break;
case NOTE_INSN_EXPECTED_VALUE:
case NOTE_INSN_VAR_LOCATION:
note_flds->name = "rt_rtx";
note_flds->type = rtx_tp;
break;
default:
note_flds->name = "rt_int";
note_flds->type = scalar_tp;
break;
}
}
new_structure ("rtx_def_note_subunion", 1, &lexer_line, note_flds, ((void *)0));
}
note_union_tp = find_structure ("rtx_def_note_subunion", 1);
for (i = 0; i < NUM_RTX_CODE; i++)
{
pair_p old_flds = flds;
pair_p subfields = ((void *)0);
size_t aindex, nmindex;
const char *sname;
char *ftag;
for (aindex = 0; aindex < strlen (rtx_format[i]); aindex++)
{
pair_p old_subf = subfields;
type_p t;
const char *subname;
switch (rtx_format[i][aindex])
{
case '*':
case 'i':
case 'n':
case 'w':
t = scalar_tp;
subname = "rt_int";
break;
case '0':
if (i == MEM && aindex == 1)
t = mem_attrs_tp, subname = "rt_mem";
else if (i == JUMP_INSN && aindex == 9)
t = rtx_tp, subname = "rt_rtx";
else if (i == CODE_LABEL && aindex == 4)
t = scalar_tp, subname = "rt_int";
else if (i == CODE_LABEL && aindex == 5)
t = rtx_tp, subname = "rt_rtx";
else if (i == LABEL_REF
&& (aindex == 1 || aindex == 2))
t = rtx_tp, subname = "rt_rtx";
else if (i == NOTE && aindex == 4)
t = note_union_tp, subname = "";
else if (i == NOTE && aindex >= 7)
t = scalar_tp, subname = "rt_int";
else if (i == ADDR_DIFF_VEC && aindex == 4)
t = scalar_tp, subname = "rt_int";
else if (i == VALUE && aindex == 0)
t = scalar_tp, subname = "rt_int";
else if (i == REG && aindex == 1)
t = scalar_tp, subname = "rt_int";
else if (i == REG && aindex == 2)
t = reg_attrs_tp, subname = "rt_reg";
else if (i == SCRATCH && aindex == 0)
t = scalar_tp, subname = "rt_int";
else if (i == SYMBOL_REF && aindex == 1)
t = scalar_tp, subname = "rt_int";
else if (i == SYMBOL_REF && aindex == 2)
t = tree_tp, subname = "rt_tree";
else if (i == BARRIER && aindex >= 3)
t = scalar_tp, subname = "rt_int";
else
{
error_at_line (&lexer_line,
"rtx type `%s' has `0' in position %lu, can't handle",
rtx_name[i], (unsigned long) aindex);
t = &string_type;
subname = "rt_int";
}
break;
case 's':
case 'S':
case 'T':
t = &string_type;
subname = "rt_str";
break;
case 'e':
case 'u':
t = rtx_tp;
subname = "rt_rtx";
break;
case 'E':
case 'V':
t = rtvec_tp;
subname = "rt_rtvec";
break;
case 't':
t = tree_tp;
subname = "rt_tree";
break;
case 'b':
t = bitmap_tp;
subname = "rt_bit";
break;
case 'B':
t = basic_block_tp;
subname = "rt_bb";
break;
default:
error_at_line (&lexer_line,
"rtx type `%s' has `%c' in position %lu, can't handle",
rtx_name[i], rtx_format[i][aindex],
(unsigned long)aindex);
t = &string_type;
subname = "rt_int";
break;
}
subfields = ((struct pair *) xmalloc (sizeof (struct pair)));
subfields->next = old_subf;
subfields->type = t;
subfields->name = xasprintf (".fld[%lu].%s", (unsigned long)aindex,
subname);
subfields->line.file = "../../gcc/gcc/gengtype.c";
subfields->line.line = 621;
if (t == note_union_tp)
{
subfields->opt = ((struct options *) xmalloc (sizeof (struct options)));
subfields->opt->next = nodot;
subfields->opt->name = "desc";
subfields->opt->info = "NOTE_LINE_NUMBER (&%0)";
}
else if (t == basic_block_tp)
{
subfields->opt = ((struct options *) xmalloc (sizeof (struct options)));
subfields->opt->next = nodot;
subfields->opt->name = "skip";
subfields->opt->info = ((void *)0);
}
else
subfields->opt = nodot;
}
flds = ((struct pair *) xmalloc (sizeof (struct pair)));
flds->next = old_flds;
flds->name = "";
sname = xasprintf ("rtx_def_%s", rtx_name[i]);
new_structure (sname, 0, &lexer_line, subfields, ((void *)0));
flds->type = find_structure (sname, 0);
flds->line.file = "../../gcc/gcc/gengtype.c";
flds->line.line = 648;
flds->opt = ((struct options *) xmalloc (sizeof (struct options)));
flds->opt->next = nodot;
flds->opt->name = "tag";
ftag = xstrdup (rtx_name[i]);
for (nmindex = 0; nmindex < strlen (ftag); nmindex++)
ftag[nmindex] = _sch_toupper[(ftag[nmindex]) & 0xff];
flds->opt->info = ftag;
}
new_structure ("rtx_def_subunion", 1, &lexer_line, flds, nodot);
return find_structure ("rtx_def_subunion", 1);
}
static type_p
adjust_field_tree_exp (type_p t, options_p opt __attribute__ ((__unused__)))
{
pair_p flds;
options_p nodot;
if (t->kind != TYPE_ARRAY)
{
error_at_line (&lexer_line,
"special `tree_exp' must be applied to an array");
return &string_type;
}
nodot = ((struct options *) xmalloc (sizeof (struct options)));
nodot->next = ((void *)0);
nodot->name = "dot";
nodot->info = "";
flds = ((struct pair *) xmalloc (sizeof (struct pair)));
flds->next = ((void *)0);
flds->name = "";
flds->type = t;
flds->line.file = "../../gcc/gcc/gengtype.c";
flds->line.line = 691;
flds->opt = ((struct options *) xmalloc (sizeof (struct options)));
flds->opt->next = nodot;
flds->opt->name = "length";
flds->opt->info = "TREE_CODE_LENGTH (TREE_CODE ((tree) &%0))";
{
options_p oldopt = flds->opt;
flds->opt = ((struct options *) xmalloc (sizeof (struct options)));
flds->opt->next = oldopt;
flds->opt->name = "default";
flds->opt->info = "";
}
new_structure ("tree_exp_subunion", 1, &lexer_line, flds, nodot);
return find_structure ("tree_exp_subunion", 1);
}
# 718 "../../gcc/gcc/gengtype.c"
type_p
adjust_field_type (type_p t, options_p opt)
{
int length_p = 0;
const int pointer_p = t->kind == TYPE_POINTER;
type_p params[10];
int params_p = 0;
int i;
for (i = 0; i < 10; i++)
params[i] = ((void *)0);
for (; opt; opt = opt->next)
if (strcmp (opt->name, "length") == 0)
length_p = 1;
else if (strcmp (opt->name, "param_is") == 0
|| (strncmp (opt->name, "param", 5) == 0
&& (_sch_istable[(opt->name[5]) & 0xff] & (unsigned short)(_sch_isdigit))
&& strcmp (opt->name + 6, "_is") == 0))
{
int num = (_sch_istable[(opt->name[5]) & 0xff] & (unsigned short)(_sch_isdigit)) ? opt->name[5] - '0' : 0;
if (! ((t)->kind == TYPE_UNION || (t)->kind == TYPE_STRUCT || (t)->kind == TYPE_LANG_STRUCT)
&& (t->kind != TYPE_POINTER || ! ((t->u.p)->kind == TYPE_UNION || (t->u.p)->kind == TYPE_STRUCT || (t->u.p)->kind == TYPE_LANG_STRUCT)))
{
error_at_line (&lexer_line,
"option `%s' may only be applied to structures or structure pointers",
opt->name);
return t;
}
params_p = 1;
if (params[num] != ((void *)0))
error_at_line (&lexer_line, "duplicate `%s' option", opt->name);
if (! (_sch_istable[(opt->name[5]) & 0xff] & (unsigned short)(_sch_isdigit)))
params[num] = create_pointer ((type_p) opt->info);
else
params[num] = (type_p) opt->info;
}
else if (strcmp (opt->name, "special") == 0)
{
const char *special_name = opt->info;
if (strcmp (special_name, "tree_exp") == 0)
t = adjust_field_tree_exp (t, opt);
else if (strcmp (special_name, "rtx_def") == 0)
t = adjust_field_rtx_def (t, opt);
else
error_at_line (&lexer_line, "unknown special `%s'", special_name);
}
if (params_p)
{
type_p realt;
if (pointer_p)
t = t->u.p;
realt = find_param_structure (t, params);
t = pointer_p ? create_pointer (realt) : realt;
}
if (! length_p
&& pointer_p
&& t->u.p->kind == TYPE_SCALAR
&& (strcmp (t->u.p->u.sc, "char") == 0
|| strcmp (t->u.p->u.sc, "unsigned char") == 0))
return &string_type;
if (t->kind == TYPE_ARRAY && t->u.a.p->kind == TYPE_POINTER
&& t->u.a.p->u.p->kind == TYPE_SCALAR
&& (strcmp (t->u.a.p->u.p->u.sc, "char") == 0
|| strcmp (t->u.a.p->u.p->u.sc, "unsigned char") == 0))
return create_array (&string_type, t->u.a.len);
return t;
}
void
note_yacc_type (options_p o, pair_p fields, pair_p typeinfo,
struct fileloc *pos)
{
pair_p p;
pair_p *p_p;
for (p = typeinfo; p; p = p->next)
{
pair_p m;
if (p->name == ((void *)0))
continue;
if (p->type == (type_p) 1)
{
pair_p pp;
int ok = 0;
for (pp = typeinfo; pp; pp = pp->next)
if (pp->type != (type_p) 1
&& strcmp (pp->opt->info, p->opt->info) == 0)
{
ok = 1;
break;
}
if (! ok)
continue;
}
for (m = fields; m; m = m->next)
if (strcmp (m->name, p->name) == 0)
p->type = m->type;
if (p->type == ((void *)0))
{
error_at_line (&p->line,
"couldn't match fieldname `%s'", p->name);
p->name = ((void *)0);
}
}
p_p = &typeinfo;
while (*p_p)
{
pair_p p = *p_p;
if (p->name == ((void *)0)
|| p->type == (type_p) 1)
*p_p = p->next;
else
p_p = &p->next;
}
new_structure ("yy_union", 1, pos, typeinfo, o);
do_typedef ("YYSTYPE", find_structure ("yy_union", 1), pos);
}
static void process_gc_options (options_p, enum gc_used_enum,
int *, int *, int *, type_p *);
static void set_gc_used_type (type_p, enum gc_used_enum, type_p *);
static void set_gc_used (pair_p);
static void
process_gc_options (options_p opt, enum gc_used_enum level, int *maybe_undef,
int *pass_param, int *length, type_p *nested_ptr)
{
options_p o;
for (o = opt; o; o = o->next)
if (strcmp (o->name, "ptr_alias") == 0 && level == GC_POINTED_TO)
set_gc_used_type ((type_p) o->info, GC_POINTED_TO, ((void *)0));
else if (strcmp (o->name, "maybe_undef") == 0)
*maybe_undef = 1;
else if (strcmp (o->name, "use_params") == 0)
*pass_param = 1;
else if (strcmp (o->name, "length") == 0)
*length = 1;
else if (strcmp (o->name, "nested_ptr") == 0)
*nested_ptr = ((const struct nested_ptr_data *) o->info)->type;
}
static void
set_gc_used_type (type_p t, enum gc_used_enum level, type_p param[10])
{
if (t->gc_used >= level)
return;
t->gc_used = level;
switch (t->kind)
{
case TYPE_STRUCT:
case TYPE_UNION:
{
pair_p f;
int dummy;
type_p dummy2;
process_gc_options (t->u.s.opt, level, &dummy, &dummy, &dummy,
&dummy2);
for (f = t->u.s.fields; f; f = f->next)
{
int maybe_undef = 0;
int pass_param = 0;
int length = 0;
type_p nested_ptr = ((void *)0);
process_gc_options (f->opt, level, &maybe_undef, &pass_param,
&length, &nested_ptr);
if (nested_ptr && f->type->kind == TYPE_POINTER)
set_gc_used_type (nested_ptr, GC_POINTED_TO,
pass_param ? param : ((void *)0));
else if (length && f->type->kind == TYPE_POINTER)
set_gc_used_type (f->type->u.p, GC_USED, ((void *)0));
else if (maybe_undef && f->type->kind == TYPE_POINTER)
set_gc_used_type (f->type->u.p, GC_MAYBE_POINTED_TO, ((void *)0));
else if (pass_param && f->type->kind == TYPE_POINTER && param)
set_gc_used_type (find_param_structure (f->type->u.p, param),
GC_POINTED_TO, ((void *)0));
else
set_gc_used_type (f->type, GC_USED, pass_param ? param : ((void *)0));
}
break;
}
case TYPE_POINTER:
set_gc_used_type (t->u.p, GC_POINTED_TO, ((void *)0));
break;
case TYPE_ARRAY:
set_gc_used_type (t->u.a.p, GC_USED, param);
break;
case TYPE_LANG_STRUCT:
for (t = t->u.s.lang_struct; t; t = t->next)
set_gc_used_type (t, level, param);
break;
case TYPE_PARAM_STRUCT:
{
int i;
for (i = 0; i < 10; i++)
if (t->u.param_struct.param[i] != 0)
set_gc_used_type (t->u.param_struct.param[i], GC_USED, ((void *)0));
}
if (t->u.param_struct.stru->gc_used == GC_POINTED_TO)
level = GC_POINTED_TO;
else
level = GC_USED;
t->u.param_struct.stru->gc_used = GC_UNUSED;
set_gc_used_type (t->u.param_struct.stru, level,
t->u.param_struct.param);
break;
default:
break;
}
}
static void
set_gc_used (pair_p variables)
{
pair_p p;
for (p = variables; p; p = p->next)
set_gc_used_type (p->type, GC_USED, ((void *)0));
}
static outf_p output_files;
static outf_p header_file;
# 988 "../../gcc/gcc/gengtype.c"
static int srcdir_len = 0;
outf_p base_files[((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1)];
static outf_p create_file (const char *, const char *);
static const char * get_file_basename (const char *);
static outf_p
create_file (const char *name, const char *oname)
{
static const char *const hdr[] = {
" Copyright (C) 2004 Free Software Foundation, Inc.\n",
"\n",
"This file is part of GCC.\n",
"\n",
"GCC is free software; you can redistribute it and/or modify it under\n",
"the terms of the GNU General Public License as published by the Free\n",
"Software Foundation; either version 2, or (at your option) any later\n",
"version.\n",
"\n",
"GCC is distributed in the hope that it will be useful, but WITHOUT ANY\n",
"WARRANTY; without even the implied warranty of MERCHANTABILITY or\n",
"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\n",
"for more details.\n",
"\n",
"You should have received a copy of the GNU General Public License\n",
"along with GCC; see the file COPYING. If not, write to the Free\n",
"Software Foundation, 59 Temple Place - Suite 330, Boston, MA\n",
"02111-1307, USA. */\n",
"\n",
"/* This file is machine generated. Do not edit. */\n"
};
outf_p f;
size_t i;
f = ((struct outf *) xcalloc (1, sizeof (struct outf)));
f->next = output_files;
f->name = oname;
output_files = f;
oprintf (f, "/* Type information for %s.\n", name);
for (i = 0; i < (sizeof (hdr) / sizeof ((hdr)[0])); i++)
oprintf (f, "%s", hdr[i]);
return f;
}
void
oprintf (outf_p o, const char *format, ...)
{
char *s;
size_t slength;
va_list ap;
__builtin_va_start(ap,format);
slength = xvasprintf (&s, format, ap);
if (o->bufused + slength > o->buflength)
{
size_t new_len = o->buflength;
if (new_len == 0)
new_len = 1024;
do {
new_len *= 2;
} while (o->bufused + slength >= new_len);
o->buf = ((char *) xrealloc ((void *) (o->buf), sizeof (char) * (new_len)));
o->buflength = new_len;
}
memcpy (o->buf + o->bufused, s, slength);
o->bufused += slength;
free (s);
__builtin_va_end(ap);
}
static void
open_base_files (void)
{
size_t i;
header_file = create_file ("GCC", "gtype-desc.h");
for (i = 0; i < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); i++)
base_files[i] = create_file (lang_dir_names[i],
xasprintf ("gtype-%s.h", lang_dir_names[i]));
{
static const char *const ifiles [] = {
"config.h", "system.h", "coretypes.h", "tm.h", "varray.h",
"hashtab.h", "splay-tree.h", "bitmap.h", "input.h", "tree.h", "rtl.h",
"function.h", "insn-config.h", "expr.h", "hard-reg-set.h",
"basic-block.h", "cselib.h", "insn-addr.h", "optabs.h",
"libfuncs.h", "debug.h", "ggc.h", "cgraph.h",
"tree-flow.h", "reload.h",
"cpp-id-data.h",
"tree-chrec.h",
((void *)0)
};
const char *const *ifp;
outf_p gtype_desc_c;
gtype_desc_c = create_file ("GCC", "gtype-desc.c");
for (ifp = ifiles; *ifp; ifp++)
oprintf (gtype_desc_c, "#include \"%s\"\n", *ifp);
}
}
static const char *
get_file_basename (const char *f)
{
const char *basename;
unsigned i;
basename = strrchr (f, '/');
if (!basename)
return f;
basename++;
for (i = 1; i < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); i++)
{
const char * s1;
const char * s2;
int l1;
int l2;
s1 = basename - strlen (lang_dir_names [i]) - 1;
s2 = lang_dir_names [i];
l1 = strlen (s1);
l2 = strlen (s2);
if (l1 >= l2 && ((s1[-1]) == '/') && !memcmp (s1, s2, l2))
{
basename -= l2 + 1;
if ((basename - f - 1) != srcdir_len)
fatal ("filename `%s' should be preceded by $srcdir", f);
break;
}
}
return basename;
}
# 1147 "../../gcc/gcc/gengtype.c"
unsigned
get_base_file_bitmap (const char *input_file)
{
const char *basename = get_file_basename (input_file);
const char *slashpos = strchr (basename, '/');
unsigned j;
unsigned k;
unsigned bitmap;
if (slashpos)
{
size_t i;
for (i = 1; i < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); i++)
if ((size_t)(slashpos - basename) == strlen (lang_dir_names [i])
&& memcmp (basename, lang_dir_names[i], strlen (lang_dir_names[i])) == 0)
{
bitmap = 1 << i;
}
}
bitmap = 0;
for (j = 0; j < ((sizeof (lang_files) / sizeof ((lang_files)[0])) - 1); j++)
{
if (!strcmp(input_file, lang_files[j]))
{
for (k = 0; k < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); k++)
{
if (!strcmp(lang_dir_names[k], langs_for_lang_files[j]))
bitmap |= (1 << k);
}
}
}
if (!bitmap)
bitmap = (1 << ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1)) - 1;
return bitmap;
}
outf_p
get_output_file_with_visibility (const char *input_file)
{
outf_p r;
size_t len;
const char *basename;
const char *for_name;
const char *output_name;
if (input_file == ((void *)0))
input_file = "system.h";
basename = get_file_basename (input_file);
len = strlen (basename);
if ((len > 2 && memcmp (basename+len-2, ".c", 2) == 0)
|| (len > 2 && memcmp (basename+len-2, ".y", 2) == 0)
|| (len > 3 && memcmp (basename+len-3, ".in", 3) == 0))
{
char *s;
output_name = s = xasprintf ("gt-%s", basename);
for (; *s != '.'; s++)
if (! (_sch_istable[(*s) & 0xff] & (unsigned short)(_sch_isalnum)) && *s != '-')
*s = '-';
memcpy (s, ".h", sizeof (".h"));
for_name = basename;
}
else if (strcmp (basename, "c-common.h") == 0)
output_name = "gt-c-common.h", for_name = "c-common.c";
else if (strcmp (basename, "c-tree.h") == 0)
output_name = "gt-c-decl.h", for_name = "c-decl.c";
else if (strncmp (basename, "objc", 4) == 0 && ((basename[4]) == '/')
&& strcmp (basename + 5, "objc-act.h") == 0)
output_name = "gt-objc-objc-act.h", for_name = "objc/objc-act.c";
else
{
size_t i;
for (i = 0; i < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); i++)
if (memcmp (basename, lang_dir_names[i], strlen (lang_dir_names[i])) == 0
&& basename[strlen(lang_dir_names[i])] == '/')
return base_files[i];
output_name = "gtype-desc.c";
for_name = ((void *)0);
}
for (r = output_files; r; r = r->next)
if (strcmp (r->name, output_name) == 0)
return r;
r = create_file (for_name, output_name);
return r;
}
const char *
get_output_file_name (const char *input_file)
{
return get_output_file_with_visibility (input_file)->name;
}
static void
close_output_files (void)
{
outf_p of;
for (of = output_files; of; of = of->next)
{
FILE * newfile;
newfile = fopen (of->name, "r");
if (newfile != ((void *)0) )
{
int no_write_p;
size_t i;
for (i = 0; i < of->bufused; i++)
{
int ch;
ch = fgetc (newfile);
if (ch == (-1) || ch != (unsigned char) of->buf[i])
break;
}
no_write_p = i == of->bufused && fgetc (newfile) == (-1);
fclose (newfile);
if (no_write_p)
continue;
}
newfile = fopen (of->name, "w");
if (newfile == ((void *)0))
{
perror ("opening output file");
exit (1);
}
if (fwrite_unlocked (of->buf, 1, of->bufused, newfile) != of->bufused)
{
perror ("writing output file");
exit (1);
}
if (fclose (newfile) != 0)
{
perror ("closing output file");
exit (1);
}
}
}
struct flist {
struct flist *next;
int started_p;
const char *name;
outf_p f;
};
struct walk_type_data;
typedef void (*process_field_fn)
(type_p f, const struct walk_type_data *p);
typedef void (*func_name_fn)
(type_p s, const struct walk_type_data *p);
struct write_types_data
{
const char *prefix;
const char *param_prefix;
const char *subfield_marker_routine;
const char *marker_routine;
const char *reorder_note_routine;
const char *comment;
};
static void output_escaped_param (struct walk_type_data *d,
const char *, const char *);
static void output_mangled_typename (outf_p, type_p);
static void walk_type (type_p t, struct walk_type_data *d);
static void write_func_for_structure
(type_p orig_s, type_p s, type_p * param,
const struct write_types_data *wtd);
static void write_types_process_field
(type_p f, const struct walk_type_data *d);
static void write_types (type_p structures,
type_p param_structs,
const struct write_types_data *wtd);
static void write_types_local_process_field
(type_p f, const struct walk_type_data *d);
static void write_local_func_for_structure
(type_p orig_s, type_p s, type_p * param);
static void write_local (type_p structures,
type_p param_structs);
static void write_enum_defn (type_p structures, type_p param_structs);
static int contains_scalar_p (type_p t);
static void put_mangled_filename (outf_p , const char *);
static void finish_root_table (struct flist *flp, const char *pfx,
const char *tname, const char *lastname,
const char *name);
static void write_root (outf_p , pair_p, type_p, const char *, int,
struct fileloc *, const char *);
static void write_array (outf_p f, pair_p v,
const struct write_types_data *wtd);
static void write_roots (pair_p);
struct walk_type_data
{
process_field_fn process_field;
const void *cookie;
outf_p of;
options_p opt;
const char *val;
const char *prev_val[4];
int indent;
int counter;
struct fileloc *line;
lang_bitmap bitmap;
type_p *param;
int used_length;
type_p orig_s;
const char *reorder_fn;
unsigned char needs_cast_p;
unsigned char fn_wants_lvalue;
};
static void
output_mangled_typename (outf_p of, type_p t)
{
if (t == ((void *)0))
oprintf (of, "Z");
else switch (t->kind)
{
case TYPE_POINTER:
oprintf (of, "P");
output_mangled_typename (of, t->u.p);
break;
case TYPE_SCALAR:
oprintf (of, "I");
break;
case TYPE_STRING:
oprintf (of, "S");
break;
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
oprintf (of, "%lu%s", (unsigned long) strlen (t->u.s.tag), t->u.s.tag);
break;
case TYPE_PARAM_STRUCT:
{
int i;
for (i = 0; i < 10; i++)
if (t->u.param_struct.param[i] != ((void *)0))
output_mangled_typename (of, t->u.param_struct.param[i]);
output_mangled_typename (of, t->u.param_struct.stru);
}
break;
case TYPE_ARRAY:
(fancy_abort ("../../gcc/gcc/gengtype.c", 1445, __FUNCTION__));
}
}
static void
output_escaped_param (struct walk_type_data *d, const char *param,
const char *oname)
{
const char *p;
for (p = param; *p; p++)
if (*p != '%')
oprintf (d->of, "%c", *p);
else switch (*++p)
{
case 'h':
oprintf (d->of, "(%s)", d->prev_val[2]);
break;
case '0':
oprintf (d->of, "(%s)", d->prev_val[0]);
break;
case '1':
oprintf (d->of, "(%s)", d->prev_val[1]);
break;
case 'a':
{
const char *pp = d->val + strlen (d->val);
while (pp[-1] == ']')
while (*pp != '[')
pp--;
oprintf (d->of, "%s", pp);
}
break;
default:
error_at_line (d->line, "`%s' option contains bad escape %c%c",
oname, '%', *p);
}
}
# 1500 "../../gcc/gcc/gengtype.c"
static void
walk_type (type_p t, struct walk_type_data *d)
{
const char *length = ((void *)0);
const char *desc = ((void *)0);
int maybe_undef_p = 0;
int use_param_num = -1;
int use_params_p = 0;
options_p oo;
const struct nested_ptr_data *nested_ptr_d = ((void *)0);
d->needs_cast_p = 0;
for (oo = d->opt; oo; oo = oo->next)
if (strcmp (oo->name, "length") == 0)
length = oo->info;
else if (strcmp (oo->name, "maybe_undef") == 0)
maybe_undef_p = 1;
else if (strncmp (oo->name, "use_param", 9) == 0
&& (oo->name[9] == '\0' || (_sch_istable[(oo->name[9]) & 0xff] & (unsigned short)(_sch_isdigit))))
use_param_num = oo->name[9] == '\0' ? 0 : oo->name[9] - '0';
else if (strcmp (oo->name, "use_params") == 0)
use_params_p = 1;
else if (strcmp (oo->name, "desc") == 0)
desc = oo->info;
else if (strcmp (oo->name, "nested_ptr") == 0)
nested_ptr_d = (const struct nested_ptr_data *) oo->info;
else if (strcmp (oo->name, "dot") == 0)
;
else if (strcmp (oo->name, "tag") == 0)
;
else if (strcmp (oo->name, "special") == 0)
;
else if (strcmp (oo->name, "skip") == 0)
;
else if (strcmp (oo->name, "default") == 0)
;
else if (strcmp (oo->name, "descbits") == 0)
;
else if (strcmp (oo->name, "param_is") == 0)
;
else if (strncmp (oo->name, "param", 5) == 0
&& (_sch_istable[(oo->name[5]) & 0xff] & (unsigned short)(_sch_isdigit))
&& strcmp (oo->name + 6, "_is") == 0)
;
else if (strcmp (oo->name, "chain_next") == 0)
;
else if (strcmp (oo->name, "chain_prev") == 0)
;
else if (strcmp (oo->name, "reorder") == 0)
;
else
error_at_line (d->line, "unknown option `%s'\n", oo->name);
if (d->used_length)
length = ((void *)0);
if (use_params_p)
{
int pointer_p = t->kind == TYPE_POINTER;
if (pointer_p)
t = t->u.p;
if (! ((t)->kind == TYPE_UNION || (t)->kind == TYPE_STRUCT || (t)->kind == TYPE_LANG_STRUCT))
error_at_line (d->line, "`use_params' option on unimplemented type");
else
t = find_param_structure (t, d->param);
if (pointer_p)
t = create_pointer (t);
}
if (use_param_num != -1)
{
if (d->param != ((void *)0) && d->param[use_param_num] != ((void *)0))
{
type_p nt = d->param[use_param_num];
if (t->kind == TYPE_ARRAY)
nt = create_array (nt, t->u.a.len);
else if (length != ((void *)0) && t->kind == TYPE_POINTER)
nt = create_pointer (nt);
d->needs_cast_p = (t->kind != TYPE_POINTER
&& (nt->kind == TYPE_POINTER
|| nt->kind == TYPE_STRING));
t = nt;
}
else
error_at_line (d->line, "no parameter defined for `%s'",
d->val);
}
if (maybe_undef_p
&& (t->kind != TYPE_POINTER || ! ((t->u.p)->kind == TYPE_UNION || (t->u.p)->kind == TYPE_STRUCT || (t->u.p)->kind == TYPE_LANG_STRUCT)))
{
error_at_line (d->line,
"field `%s' has invalid option `maybe_undef_p'\n",
d->val);
return;
}
switch (t->kind)
{
case TYPE_SCALAR:
case TYPE_STRING:
d->process_field (t, d);
break;
case TYPE_POINTER:
{
if (maybe_undef_p
&& t->u.p->u.s.line.file == ((void *)0))
{
oprintf (d->of, "%*sgcc_assert (!%s);\n", d->indent, "", d->val);
break;
}
if (! length)
{
if (! ((t->u.p)->kind == TYPE_UNION || (t->u.p)->kind == TYPE_STRUCT || (t->u.p)->kind == TYPE_LANG_STRUCT)
&& t->u.p->kind != TYPE_PARAM_STRUCT)
{
error_at_line (d->line,
"field `%s' is pointer to unimplemented type",
d->val);
break;
}
if (nested_ptr_d)
{
const char *oldprevval2 = d->prev_val[2];
if (! ((nested_ptr_d->type)->kind == TYPE_UNION || (nested_ptr_d->type)->kind == TYPE_STRUCT || (nested_ptr_d->type)->kind == TYPE_LANG_STRUCT))
{
error_at_line (d->line,
"field `%s' has invalid "
"option `nested_ptr'\n",
d->val);
return;
}
d->prev_val[2] = d->val;
oprintf (d->of, "%*s{\n", d->indent, "");
d->indent += 2;
d->val = xasprintf ("x%d", d->counter++);
oprintf (d->of, "%*s%s %s * %s%s =\n", d->indent, "",
(nested_ptr_d->type->kind == TYPE_UNION
? "union" : "struct"),
nested_ptr_d->type->u.s.tag,
d->fn_wants_lvalue ? "" : "const ",
d->val);
oprintf (d->of, "%*s", d->indent + 2, "");
output_escaped_param (d, nested_ptr_d->convert_from,
"nested_ptr");
oprintf (d->of, ";\n");
d->process_field (nested_ptr_d->type, d);
if (d->fn_wants_lvalue)
{
oprintf (d->of, "%*s%s = ", d->indent, "",
d->prev_val[2]);
d->prev_val[2] = d->val;
output_escaped_param (d, nested_ptr_d->convert_to,
"nested_ptr");
oprintf (d->of, ";\n");
}
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
d->val = d->prev_val[2];
d->prev_val[2] = oldprevval2;
}
else
d->process_field (t->u.p, d);
}
else
{
int loopcounter = d->counter++;
const char *oldval = d->val;
const char *oldprevval3 = d->prev_val[3];
char *newval;
oprintf (d->of, "%*sif (%s != NULL) {\n", d->indent, "", d->val);
d->indent += 2;
oprintf (d->of, "%*ssize_t i%d;\n", d->indent, "", loopcounter);
oprintf (d->of, "%*sfor (i%d = 0; i%d < (size_t)(", d->indent, "",
loopcounter, loopcounter);
output_escaped_param (d, length, "length");
oprintf (d->of, "); i%d++) {\n", loopcounter);
d->indent += 2;
d->val = newval = xasprintf ("%s[i%d]", oldval, loopcounter);
d->used_length = 1;
d->prev_val[3] = oldval;
walk_type (t->u.p, d);
free (newval);
d->val = oldval;
d->prev_val[3] = oldprevval3;
d->used_length = 0;
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
d->process_field(t, d);
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
}
}
break;
case TYPE_ARRAY:
{
int loopcounter = d->counter++;
const char *oldval = d->val;
char *newval;
if (t->u.a.p->kind == TYPE_SCALAR)
break;
oprintf (d->of, "%*s{\n", d->indent, "");
d->indent += 2;
oprintf (d->of, "%*ssize_t i%d;\n", d->indent, "", loopcounter);
oprintf (d->of, "%*sfor (i%d = 0; i%d < (size_t)(", d->indent, "",
loopcounter, loopcounter);
if (length)
output_escaped_param (d, length, "length");
else
oprintf (d->of, "%s", t->u.a.len);
oprintf (d->of, "); i%d++) {\n", loopcounter);
d->indent += 2;
d->val = newval = xasprintf ("%s[i%d]", oldval, loopcounter);
d->used_length = 1;
walk_type (t->u.a.p, d);
free (newval);
d->used_length = 0;
d->val = oldval;
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
d->indent -= 2;
oprintf (d->of, "%*s}\n", d->indent, "");
}
break;
case TYPE_STRUCT:
case TYPE_UNION:
{
pair_p f;
const char *oldval = d->val;
const char *oldprevval1 = d->prev_val[1];
const char *oldprevval2 = d->prev_val[2];
const int union_p = t->kind == TYPE_UNION;
int seen_default_p = 0;
options_p o;
if (! t->u.s.line.file)
error_at_line (d->line, "incomplete structure `%s'", t->u.s.tag);
if ((d->bitmap & t->u.s.bitmap) != d->bitmap)
{
error_at_line (d->line,
"structure `%s' defined for mismatching languages",
t->u.s.tag);
error_at_line (&t->u.s.line, "one structure defined here");
}
for (o = t->u.s.opt; o; o = o->next)
if (! desc && strcmp (o->name, "desc") == 0)
desc = o->info;
d->prev_val[2] = oldval;
d->prev_val[1] = oldprevval2;
if (union_p)
{
if (desc == ((void *)0))
{
error_at_line (d->line, "missing `desc' option for union `%s'",
t->u.s.tag);
desc = "1";
}
oprintf (d->of, "%*sswitch (", d->indent, "");
output_escaped_param (d, desc, "desc");
oprintf (d->of, ")\n");
d->indent += 2;
oprintf (d->of, "%*s{\n", d->indent, "");
}
for (f = t->u.s.fields; f; f = f->next)
{
options_p oo;
const char *dot = ".";
const char *tagid = ((void *)0);
int skip_p = 0;
int default_p = 0;
int use_param_p = 0;
char *newval;
d->reorder_fn = ((void *)0);
for (oo = f->opt; oo; oo = oo->next)
if (strcmp (oo->name, "dot") == 0)
dot = oo->info;
else if (strcmp (oo->name, "tag") == 0)
tagid = oo->info;
else if (strcmp (oo->name, "skip") == 0)
skip_p = 1;
else if (strcmp (oo->name, "default") == 0)
default_p = 1;
else if (strcmp (oo->name, "reorder") == 0)
d->reorder_fn = oo->info;
else if (strncmp (oo->name, "use_param", 9) == 0
&& (oo->name[9] == '\0' || (_sch_istable[(oo->name[9]) & 0xff] & (unsigned short)(_sch_isdigit))))
use_param_p = 1;
if (skip_p)
continue;
if (union_p && tagid)
{
oprintf (d->of, "%*scase %s:\n", d->indent, "", tagid);
d->indent += 2;
}
else if (union_p && default_p)
{
oprintf (d->of, "%*sdefault:\n", d->indent, "");
d->indent += 2;
seen_default_p = 1;
}
else if (! union_p && (default_p || tagid))
error_at_line (d->line,
"can't use `%s' outside a union on field `%s'",
default_p ? "default" : "tag", f->name);
else if (union_p && ! (default_p || tagid)
&& f->type->kind == TYPE_SCALAR)
{
fprintf (stderr,
"%s:%d: warning: field `%s' is missing `tag' or `default' option\n",
d->line->file, d->line->line, f->name);
continue;
}
else if (union_p && ! (default_p || tagid))
error_at_line (d->line,
"field `%s' is missing `tag' or `default' option",
f->name);
d->line = &f->line;
d->val = newval = xasprintf ("%s%s%s", oldval, dot, f->name);
d->opt = f->opt;
d->used_length = 0;
if (union_p && use_param_p && d->param == ((void *)0))
oprintf (d->of, "%*sgcc_unreachable ();\n", d->indent, "");
else
walk_type (f->type, d);
free (newval);
if (union_p)
{
oprintf (d->of, "%*sbreak;\n", d->indent, "");
d->indent -= 2;
}
}
d->reorder_fn = ((void *)0);
d->val = oldval;
d->prev_val[1] = oldprevval1;
d->prev_val[2] = oldprevval2;
if (union_p && ! seen_default_p)
{
oprintf (d->of, "%*sdefault:\n", d->indent, "");
oprintf (d->of, "%*s break;\n", d->indent, "");
}
if (union_p)
{
oprintf (d->of, "%*s}\n", d->indent, "");
d->indent -= 2;
}
}
break;
case TYPE_LANG_STRUCT:
{
type_p nt;
for (nt = t->u.s.lang_struct; nt; nt = nt->next)
if ((d->bitmap & nt->u.s.bitmap) == d->bitmap)
break;
if (nt == ((void *)0))
error_at_line (d->line, "structure `%s' differs between languages",
t->u.s.tag);
else
walk_type (nt, d);
}
break;
case TYPE_PARAM_STRUCT:
{
type_p *oldparam = d->param;
d->param = t->u.param_struct.param;
walk_type (t->u.param_struct.stru, d);
d->param = oldparam;
}
break;
default:
(fancy_abort ("../../gcc/gcc/gengtype.c", 1903, __FUNCTION__));
}
}
static void
write_types_process_field (type_p f, const struct walk_type_data *d)
{
const struct write_types_data *wtd;
const char *cast = d->needs_cast_p ? "(void *)" : "";
wtd = (const struct write_types_data *) d->cookie;
switch (f->kind)
{
case TYPE_POINTER:
oprintf (d->of, "%*s%s (%s%s", d->indent, "",
wtd->subfield_marker_routine, cast, d->val);
if (wtd->param_prefix)
{
oprintf (d->of, ", %s", d->prev_val[3]);
if (d->orig_s)
{
oprintf (d->of, ", gt_%s_", wtd->param_prefix);
output_mangled_typename (d->of, d->orig_s);
}
else
oprintf (d->of, ", gt_%sa_%s", wtd->param_prefix, d->prev_val[0]);
}
oprintf (d->of, ");\n");
if (d->reorder_fn && wtd->reorder_note_routine)
oprintf (d->of, "%*s%s (%s%s, %s, %s);\n", d->indent, "",
wtd->reorder_note_routine, cast, d->val,
d->prev_val[3], d->reorder_fn);
break;
case TYPE_STRING:
if (wtd->param_prefix == ((void *)0))
break;
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
case TYPE_PARAM_STRUCT:
oprintf (d->of, "%*sgt_%s_", d->indent, "", wtd->prefix);
output_mangled_typename (d->of, f);
oprintf (d->of, " (%s%s);\n", cast, d->val);
if (d->reorder_fn && wtd->reorder_note_routine)
oprintf (d->of, "%*s%s (%s%s, %s%s, %s);\n", d->indent, "",
wtd->reorder_note_routine, cast, d->val, cast, d->val,
d->reorder_fn);
break;
case TYPE_SCALAR:
break;
default:
(fancy_abort ("../../gcc/gcc/gengtype.c", 1960, __FUNCTION__));
}
}
# 1972 "../../gcc/gcc/gengtype.c"
static void
write_func_for_structure (type_p orig_s, type_p s, type_p *param,
const struct write_types_data *wtd)
{
const char *fn = s->u.s.line.file;
int i;
const char *chain_next = ((void *)0);
const char *chain_prev = ((void *)0);
options_p opt;
struct walk_type_data d;
for (i = 10 - 1; i >= 0; i--)
if (param && param[i] && param[i]->kind == TYPE_POINTER
&& ((param[i]->u.p)->kind == TYPE_UNION || (param[i]->u.p)->kind == TYPE_STRUCT || (param[i]->u.p)->kind == TYPE_LANG_STRUCT))
fn = param[i]->u.p->u.s.line.file;
memset (&d, 0, sizeof (d));
d.of = get_output_file_with_visibility (fn);
for (opt = s->u.s.opt; opt; opt = opt->next)
if (strcmp (opt->name, "chain_next") == 0)
chain_next = opt->info;
else if (strcmp (opt->name, "chain_prev") == 0)
chain_prev = opt->info;
if (chain_prev != ((void *)0) && chain_next == ((void *)0))
error_at_line (&s->u.s.line, "chain_prev without chain_next");
d.process_field = write_types_process_field;
d.cookie = wtd;
d.orig_s = orig_s;
d.opt = s->u.s.opt;
d.line = &s->u.s.line;
d.bitmap = s->u.s.bitmap;
d.param = param;
d.prev_val[0] = "*x";
d.prev_val[1] = "not valid postage";
d.prev_val[3] = "x";
d.val = "(*x)";
oprintf (d.of, "\n");
oprintf (d.of, "void\n");
if (param == ((void *)0))
oprintf (d.of, "gt_%sx_%s", wtd->prefix, orig_s->u.s.tag);
else
{
oprintf (d.of, "gt_%s_", wtd->prefix);
output_mangled_typename (d.of, orig_s);
}
oprintf (d.of, " (void *x_p)\n");
oprintf (d.of, "{\n");
oprintf (d.of, " %s %s * %sx = (%s %s *)x_p;\n",
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag,
chain_next == ((void *)0) ? "const " : "",
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
if (chain_next != ((void *)0))
oprintf (d.of, " %s %s * xlimit = x;\n",
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
if (chain_next == ((void *)0))
{
oprintf (d.of, " if (%s (x", wtd->marker_routine);
if (wtd->param_prefix)
{
oprintf (d.of, ", x, gt_%s_", wtd->param_prefix);
output_mangled_typename (d.of, orig_s);
}
oprintf (d.of, "))\n");
}
else
{
oprintf (d.of, " while (%s (xlimit", wtd->marker_routine);
if (wtd->param_prefix)
{
oprintf (d.of, ", xlimit, gt_%s_", wtd->param_prefix);
output_mangled_typename (d.of, orig_s);
}
oprintf (d.of, "))\n");
oprintf (d.of, " xlimit = (");
d.prev_val[2] = "*xlimit";
output_escaped_param (&d, chain_next, "chain_next");
oprintf (d.of, ");\n");
if (chain_prev != ((void *)0))
{
oprintf (d.of, " if (x != xlimit)\n");
oprintf (d.of, " for (;;)\n");
oprintf (d.of, " {\n");
oprintf (d.of, " %s %s * const xprev = (",
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
d.prev_val[2] = "*x";
output_escaped_param (&d, chain_prev, "chain_prev");
oprintf (d.of, ");\n");
oprintf (d.of, " if (xprev == NULL) break;\n");
oprintf (d.of, " x = xprev;\n");
oprintf (d.of, " (void) %s (xprev",
wtd->marker_routine);
if (wtd->param_prefix)
{
oprintf (d.of, ", xprev, gt_%s_", wtd->param_prefix);
output_mangled_typename (d.of, orig_s);
}
oprintf (d.of, ");\n");
oprintf (d.of, " }\n");
}
oprintf (d.of, " while (x != xlimit)\n");
}
oprintf (d.of, " {\n");
d.prev_val[2] = "*x";
d.indent = 6;
walk_type (s, &d);
if (chain_next != ((void *)0))
{
oprintf (d.of, " x = (");
output_escaped_param (&d, chain_next, "chain_next");
oprintf (d.of, ");\n");
}
oprintf (d.of, " }\n");
oprintf (d.of, "}\n");
}
static void
write_types (type_p structures, type_p param_structs,
const struct write_types_data *wtd)
{
type_p s;
oprintf (header_file, "\n/* %s*/\n", wtd->comment);
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO
|| s->gc_used == GC_MAYBE_POINTED_TO)
{
options_p opt;
if (s->gc_used == GC_MAYBE_POINTED_TO
&& s->u.s.line.file == ((void *)0))
continue;
oprintf (header_file, "#define gt_%s_", wtd->prefix);
output_mangled_typename (header_file, s);
oprintf (header_file, "(X) do { \\\n");
oprintf (header_file,
" if (X != NULL) gt_%sx_%s (X);\\\n", wtd->prefix,
s->u.s.tag);
oprintf (header_file,
" } while (0)\n");
for (opt = s->u.s.opt; opt; opt = opt->next)
if (strcmp (opt->name, "ptr_alias") == 0)
{
type_p t = (type_p) opt->info;
if (t->kind == TYPE_STRUCT
|| t->kind == TYPE_UNION
|| t->kind == TYPE_LANG_STRUCT)
oprintf (header_file,
"#define gt_%sx_%s gt_%sx_%s\n",
wtd->prefix, s->u.s.tag, wtd->prefix, t->u.s.tag);
else
error_at_line (&s->u.s.line,
"structure alias is not a structure");
break;
}
if (opt)
continue;
oprintf (header_file,
"extern void gt_%sx_%s (void *);\n",
wtd->prefix, s->u.s.tag);
if (s->u.s.line.file == ((void *)0))
{
fprintf (stderr, "warning: structure `%s' used but not defined\n",
s->u.s.tag);
continue;
}
if (s->kind == TYPE_LANG_STRUCT)
{
type_p ss;
for (ss = s->u.s.lang_struct; ss; ss = ss->next)
write_func_for_structure (s, ss, ((void *)0), wtd);
}
else
write_func_for_structure (s, s, ((void *)0), wtd);
}
for (s = param_structs; s; s = s->next)
if (s->gc_used == GC_POINTED_TO)
{
type_p * param = s->u.param_struct.param;
type_p stru = s->u.param_struct.stru;
oprintf (header_file, "extern void gt_%s_", wtd->prefix);
output_mangled_typename (header_file, s);
oprintf (header_file, " (void *);\n");
if (stru->u.s.line.file == ((void *)0))
{
fprintf (stderr, "warning: structure `%s' used but not defined\n",
s->u.s.tag);
continue;
}
if (stru->kind == TYPE_LANG_STRUCT)
{
type_p ss;
for (ss = stru->u.s.lang_struct; ss; ss = ss->next)
write_func_for_structure (s, ss, param, wtd);
}
else
write_func_for_structure (s, stru, param, wtd);
}
}
static const struct write_types_data ggc_wtd =
{
"ggc_m", ((void *)0), "ggc_mark", "ggc_test_and_set_mark", ((void *)0),
"GC marker procedures. "
};
static const struct write_types_data pch_wtd =
{
"pch_n", "pch_p", "gt_pch_note_object", "gt_pch_note_object",
"gt_pch_note_reorder",
"PCH type-walking procedures. "
};
static void
write_types_local_process_field (type_p f, const struct walk_type_data *d)
{
switch (f->kind)
{
case TYPE_POINTER:
case TYPE_STRUCT:
case TYPE_UNION:
case TYPE_LANG_STRUCT:
case TYPE_PARAM_STRUCT:
case TYPE_STRING:
oprintf (d->of, "%*sif ((void *)(%s) == this_obj)\n", d->indent, "",
d->prev_val[3]);
oprintf (d->of, "%*s op (&(%s), cookie);\n", d->indent, "", d->val);
break;
case TYPE_SCALAR:
break;
default:
(fancy_abort ("../../gcc/gcc/gengtype.c", 2230, __FUNCTION__));
}
}
static void
write_local_func_for_structure (type_p orig_s, type_p s, type_p *param)
{
const char *fn = s->u.s.line.file;
int i;
struct walk_type_data d;
for (i = 10 - 1; i >= 0; i--)
if (param && param[i] && param[i]->kind == TYPE_POINTER
&& ((param[i]->u.p)->kind == TYPE_UNION || (param[i]->u.p)->kind == TYPE_STRUCT || (param[i]->u.p)->kind == TYPE_LANG_STRUCT))
fn = param[i]->u.p->u.s.line.file;
memset (&d, 0, sizeof (d));
d.of = get_output_file_with_visibility (fn);
d.process_field = write_types_local_process_field;
d.opt = s->u.s.opt;
d.line = &s->u.s.line;
d.bitmap = s->u.s.bitmap;
d.param = param;
d.prev_val[0] = d.prev_val[2] = "*x";
d.prev_val[1] = "not valid postage";
d.prev_val[3] = "x";
d.val = "(*x)";
d.fn_wants_lvalue = 1;
oprintf (d.of, "\n");
oprintf (d.of, "void\n");
oprintf (d.of, "gt_pch_p_");
output_mangled_typename (d.of, orig_s);
oprintf (d.of, " (ATTRIBUTE_UNUSED void *this_obj,\n"
"\tvoid *x_p,\n"
"\tATTRIBUTE_UNUSED gt_pointer_operator op,\n"
"\tATTRIBUTE_UNUSED void *cookie)\n");
oprintf (d.of, "{\n");
oprintf (d.of, " %s %s * const x ATTRIBUTE_UNUSED = (%s %s *)x_p;\n",
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag,
s->kind == TYPE_UNION ? "union" : "struct", s->u.s.tag);
d.indent = 2;
walk_type (s, &d);
oprintf (d.of, "}\n");
}
static void
write_local (type_p structures, type_p param_structs)
{
type_p s;
oprintf (header_file, "\n/* Local pointer-walking routines. */\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO
|| s->gc_used == GC_MAYBE_POINTED_TO)
{
options_p opt;
if (s->u.s.line.file == ((void *)0))
continue;
for (opt = s->u.s.opt; opt; opt = opt->next)
if (strcmp (opt->name, "ptr_alias") == 0)
{
type_p t = (type_p) opt->info;
if (t->kind == TYPE_STRUCT
|| t->kind == TYPE_UNION
|| t->kind == TYPE_LANG_STRUCT)
{
oprintf (header_file, "#define gt_pch_p_");
output_mangled_typename (header_file, s);
oprintf (header_file, " gt_pch_p_");
output_mangled_typename (header_file, t);
oprintf (header_file, "\n");
}
else
error_at_line (&s->u.s.line,
"structure alias is not a structure");
break;
}
if (opt)
continue;
oprintf (header_file, "extern void gt_pch_p_");
output_mangled_typename (header_file, s);
oprintf (header_file,
"\n (void *, void *, gt_pointer_operator, void *);\n");
if (s->kind == TYPE_LANG_STRUCT)
{
type_p ss;
for (ss = s->u.s.lang_struct; ss; ss = ss->next)
write_local_func_for_structure (s, ss, ((void *)0));
}
else
write_local_func_for_structure (s, s, ((void *)0));
}
for (s = param_structs; s; s = s->next)
if (s->gc_used == GC_POINTED_TO)
{
type_p * param = s->u.param_struct.param;
type_p stru = s->u.param_struct.stru;
oprintf (header_file, "extern void gt_pch_p_");
output_mangled_typename (header_file, s);
oprintf (header_file,
"\n (void *, void *, gt_pointer_operator, void *);\n");
if (stru->u.s.line.file == ((void *)0))
{
fprintf (stderr, "warning: structure `%s' used but not defined\n",
s->u.s.tag);
continue;
}
if (stru->kind == TYPE_LANG_STRUCT)
{
type_p ss;
for (ss = stru->u.s.lang_struct; ss; ss = ss->next)
write_local_func_for_structure (s, ss, param);
}
else
write_local_func_for_structure (s, stru, param);
}
}
static void
write_enum_defn (type_p structures, type_p param_structs)
{
type_p s;
oprintf (header_file, "\n/* Enumeration of types known. */\n");
oprintf (header_file, "enum gt_types_enum {\n");
for (s = structures; s; s = s->next)
if (s->gc_used == GC_POINTED_TO
|| s->gc_used == GC_MAYBE_POINTED_TO)
{
if (s->gc_used == GC_MAYBE_POINTED_TO
&& s->u.s.line.file == ((void *)0))
continue;
oprintf (header_file, " gt_ggc_e_");
output_mangled_typename (header_file, s);
oprintf (header_file, ", \n");
}
for (s = param_structs; s; s = s->next)
if (s->gc_used == GC_POINTED_TO)
{
oprintf (header_file, " gt_e_");
output_mangled_typename (header_file, s);
oprintf (header_file, ", \n");
}
oprintf (header_file, " gt_types_enum_last\n");
oprintf (header_file, "};\n");
}
static int
contains_scalar_p (type_p t)
{
switch (t->kind)
{
case TYPE_STRING:
case TYPE_POINTER:
return 0;
case TYPE_ARRAY:
return contains_scalar_p (t->u.a.p);
default:
return 1;
}
}
static void
put_mangled_filename (outf_p f, const char *fn)
{
const char *name = get_output_file_name (fn);
for (; *name != 0; name++)
if ((_sch_istable[(*name) & 0xff] & (unsigned short)(_sch_isalnum)))
oprintf (f, "%c", *name);
else
oprintf (f, "%c", '_');
}
static void
finish_root_table (struct flist *flp, const char *pfx, const char *lastname,
const char *tname, const char *name)
{
struct flist *fli2;
for (fli2 = flp; fli2; fli2 = fli2->next)
if (fli2->started_p)
{
oprintf (fli2->f, " %s\n", lastname);
oprintf (fli2->f, "};\n\n");
}
for (fli2 = flp; fli2; fli2 = fli2->next)
if (fli2->started_p)
{
lang_bitmap bitmap = get_base_file_bitmap (fli2->name);
int fnum;
for (fnum = 0; bitmap != 0; fnum++, bitmap >>= 1)
if (bitmap & 1)
{
oprintf (base_files[fnum],
"extern const struct %s gt_%s_",
tname, pfx);
put_mangled_filename (base_files[fnum], fli2->name);
oprintf (base_files[fnum], "[];\n");
}
}
{
size_t fnum;
for (fnum = 0; fnum < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); fnum++)
oprintf (base_files [fnum],
"const struct %s * const %s[] = {\n",
tname, name);
}
for (fli2 = flp; fli2; fli2 = fli2->next)
if (fli2->started_p)
{
lang_bitmap bitmap = get_base_file_bitmap (fli2->name);
int fnum;
fli2->started_p = 0;
for (fnum = 0; bitmap != 0; fnum++, bitmap >>= 1)
if (bitmap & 1)
{
oprintf (base_files[fnum], " gt_%s_", pfx);
put_mangled_filename (base_files[fnum], fli2->name);
oprintf (base_files[fnum], ",\n");
}
}
{
size_t fnum;
for (fnum = 0; fnum < ((sizeof (lang_dir_names) / sizeof ((lang_dir_names)[0])) - 1); fnum++)
{
oprintf (base_files[fnum], " NULL\n");
oprintf (base_files[fnum], "};\n");
}
}
}
static void
write_root (outf_p f, pair_p v, type_p type, const char *name, int has_length,
struct fileloc *line, const char *if_marked)
{
switch (type->kind)
{
case TYPE_STRUCT:
{
pair_p fld;
for (fld = type->u.s.fields; fld; fld = fld->next)
{
int skip_p = 0;
const char *desc = ((void *)0);
options_p o;
for (o = fld->opt; o; o = o->next)
if (strcmp (o->name, "skip") == 0)
skip_p = 1;
else if (strcmp (o->name, "desc") == 0)
desc = o->info;
else
error_at_line (line,
"field `%s' of global `%s' has unknown option `%s'",
fld->name, name, o->name);
if (skip_p)
continue;
else if (desc && fld->type->kind == TYPE_UNION)
{
pair_p validf = ((void *)0);
pair_p ufld;
for (ufld = fld->type->u.s.fields; ufld; ufld = ufld->next)
{
const char *tag = ((void *)0);
options_p oo;
for (oo = ufld->opt; oo; oo = oo->next)
if (strcmp (oo->name, "tag") == 0)
tag = oo->info;
if (tag == ((void *)0) || strcmp (tag, desc) != 0)
continue;
if (validf != ((void *)0))
error_at_line (line,
"both `%s.%s.%s' and `%s.%s.%s' have tag `%s'",
name, fld->name, validf->name,
name, fld->name, ufld->name,
tag);
validf = ufld;
}
if (validf != ((void *)0))
{
char *newname;
newname = xasprintf ("%s.%s.%s",
name, fld->name, validf->name);
write_root (f, v, validf->type, newname, 0, line,
if_marked);
free (newname);
}
}
else if (desc)
error_at_line (line,
"global `%s.%s' has `desc' option but is not union",
name, fld->name);
else
{
char *newname;
newname = xasprintf ("%s.%s", name, fld->name);
write_root (f, v, fld->type, newname, 0, line, if_marked);
free (newname);
}
}
}
break;
case TYPE_ARRAY:
{
char *newname;
newname = xasprintf ("%s[0]", name);
write_root (f, v, type->u.a.p, newname, has_length, line, if_marked);
free (newname);
}
break;
case TYPE_POINTER:
{
type_p ap, tp;
oprintf (f, " {\n");
oprintf (f, " &%s,\n", name);
oprintf (f, " 1");
for (ap = v->type; ap->kind == TYPE_ARRAY; ap = ap->u.a.p)
if (ap->u.a.len[0])
oprintf (f, " * (%s)", ap->u.a.len);
else if (ap == v->type)
oprintf (f, " * ARRAY_SIZE (%s)", v->name);
oprintf (f, ",\n");
oprintf (f, " sizeof (%s", v->name);
for (ap = v->type; ap->kind == TYPE_ARRAY; ap = ap->u.a.p)
oprintf (f, "[0]");
oprintf (f, "),\n");
tp = type->u.p;
if (! has_length && ((tp)->kind == TYPE_UNION || (tp)->kind == TYPE_STRUCT || (tp)->kind == TYPE_LANG_STRUCT))
{
oprintf (f, " >_ggc_mx_%s,\n", tp->u.s.tag);
oprintf (f, " >_pch_nx_%s", tp->u.s.tag);
}
else if (! has_length && tp->kind == TYPE_PARAM_STRUCT)
{
oprintf (f, " >_ggc_m_");
output_mangled_typename (f, tp);
oprintf (f, ",\n >_pch_n_");
output_mangled_typename (f, tp);
}
else if (has_length
&& (tp->kind == TYPE_POINTER || ((tp)->kind == TYPE_UNION || (tp)->kind == TYPE_STRUCT || (tp)->kind == TYPE_LANG_STRUCT)))
{
oprintf (f, " >_ggc_ma_%s,\n", name);
oprintf (f, " >_pch_na_%s", name);
}
else
{
error_at_line (line,
"global `%s' is pointer to unimplemented type",
name);
}
if (if_marked)
oprintf (f, ",\n &%s", if_marked);
oprintf (f, "\n },\n");
}
break;
case TYPE_STRING:
{
oprintf (f, " {\n");
oprintf (f, " &%s,\n", name);
oprintf (f, " 1, \n");
oprintf (f, " sizeof (%s),\n", v->name);
oprintf (f, " >_ggc_m_S,\n");
oprintf (f, " (gt_pointer_walker) >_pch_n_S\n");
oprintf (f, " },\n");
}
break;
case TYPE_SCALAR:
break;
default:
error_at_line (line,
"global `%s' is unimplemented type",
name);
}
}
static void
write_array (outf_p f, pair_p v, const struct write_types_data *wtd)
{
struct walk_type_data d;
char *prevval3;
memset (&d, 0, sizeof (d));
d.of = f;
d.cookie = wtd;
d.indent = 2;
d.line = &v->line;
d.opt = v->opt;
d.bitmap = get_base_file_bitmap (v->line.file);
d.param = ((void *)0);
d.prev_val[3] = prevval3 = xasprintf ("&%s", v->name);
if (wtd->param_prefix)
{
oprintf (f, "static void gt_%sa_%s\n", wtd->param_prefix, v->name);
oprintf (f,
" (void *, void *, gt_pointer_operator, void *);\n");
oprintf (f, "static void gt_%sa_%s (ATTRIBUTE_UNUSED void *this_obj,\n",
wtd->param_prefix, v->name);
oprintf (d.of,
" ATTRIBUTE_UNUSED void *x_p,\n"
" ATTRIBUTE_UNUSED gt_pointer_operator op,\n"
" ATTRIBUTE_UNUSED void * cookie)\n");
oprintf (d.of, "{\n");
d.prev_val[0] = d.prev_val[1] = d.prev_val[2] = d.val = v->name;
d.process_field = write_types_local_process_field;
walk_type (v->type, &d);
oprintf (f, "}\n\n");
}
d.opt = v->opt;
oprintf (f, "static void gt_%sa_%s (void *);\n",
wtd->prefix, v->name);
oprintf (f, "static void\ngt_%sa_%s (ATTRIBUTE_UNUSED void *x_p)\n",
wtd->prefix, v->name);
oprintf (f, "{\n");
d.prev_val[0] = d.prev_val[1] = d.prev_val[2] = d.val = v->name;
d.process_field = write_types_process_field;
walk_type (v->type, &d);
free (prevval3);
oprintf (f, "}\n\n");
}
static void
write_roots (pair_p variables)
{
pair_p v;
struct flist *flp = ((void *)0);
for (v = variables; v; v = v->next)
{
outf_p f = get_output_file_with_visibility (v->line.file);
struct flist *fli;
const char *length = ((void *)0);
int deletable_p = 0;
options_p o;
for (o = v->opt; o; o = o->next)
if (strcmp (o->name, "length") == 0)
length = o->info;
else if (strcmp (o->name, "deletable") == 0)
deletable_p = 1;
else if (strcmp (o->name, "param_is") == 0)
;
else if (strncmp (o->name, "param", 5) == 0
&& (_sch_istable[(o->name[5]) & 0xff] & (unsigned short)(_sch_isdigit))
&& strcmp (o->name + 6, "_is") == 0)
;
else if (strcmp (o->name, "if_marked") == 0)
;
else
error_at_line (&v->line,
"global `%s' has unknown option `%s'",
v->name, o->name);
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (fli == ((void *)0))
{
fli = ((struct flist *) xmalloc (sizeof (struct flist)));
fli->f = f;
fli->next = flp;
fli->started_p = 0;
fli->name = v->line.file;
flp = fli;
oprintf (f, "\n/* GC roots. */\n\n");
}
if (! deletable_p
&& length
&& v->type->kind == TYPE_POINTER
&& (v->type->u.p->kind == TYPE_POINTER
|| v->type->u.p->kind == TYPE_STRUCT))
{
write_array (f, v, &ggc_wtd);
write_array (f, v, &pch_wtd);
}
}
for (v = variables; v; v = v->next)
{
outf_p f = get_output_file_with_visibility (v->line.file);
struct flist *fli;
int skip_p = 0;
int length_p = 0;
options_p o;
for (o = v->opt; o; o = o->next)
if (strcmp (o->name, "length") == 0)
length_p = 1;
else if (strcmp (o->name, "deletable") == 0
|| strcmp (o->name, "if_marked") == 0)
skip_p = 1;
if (skip_p)
continue;
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
{
fli->started_p = 1;
oprintf (f, "const struct ggc_root_tab gt_ggc_r_");
put_mangled_filename (f, v->line.file);
oprintf (f, "[] = {\n");
}
write_root (f, v, v->type, v->name, length_p, &v->line, ((void *)0));
}
finish_root_table (flp, "ggc_r", "LAST_GGC_ROOT_TAB", "ggc_root_tab",
"gt_ggc_rtab");
for (v = variables; v; v = v->next)
{
outf_p f = get_output_file_with_visibility (v->line.file);
struct flist *fli;
int skip_p = 1;
options_p o;
for (o = v->opt; o; o = o->next)
if (strcmp (o->name, "deletable") == 0)
skip_p = 0;
else if (strcmp (o->name, "if_marked") == 0)
skip_p = 1;
if (skip_p)
continue;
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
{
fli->started_p = 1;
oprintf (f, "const struct ggc_root_tab gt_ggc_rd_");
put_mangled_filename (f, v->line.file);
oprintf (f, "[] = {\n");
}
oprintf (f, " { &%s, 1, sizeof (%s), NULL, NULL },\n",
v->name, v->name);
}
finish_root_table (flp, "ggc_rd", "LAST_GGC_ROOT_TAB", "ggc_root_tab",
"gt_ggc_deletable_rtab");
for (v = variables; v; v = v->next)
{
outf_p f = get_output_file_with_visibility (v->line.file);
struct flist *fli;
const char *if_marked = ((void *)0);
int length_p = 0;
options_p o;
for (o = v->opt; o; o = o->next)
if (strcmp (o->name, "length") == 0)
length_p = 1;
else if (strcmp (o->name, "if_marked") == 0)
if_marked = o->info;
if (if_marked == ((void *)0))
continue;
if (v->type->kind != TYPE_POINTER
|| v->type->u.p->kind != TYPE_PARAM_STRUCT
|| v->type->u.p->u.param_struct.stru != find_structure ("htab", 0))
{
error_at_line (&v->line, "if_marked option used but not hash table");
continue;
}
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
{
fli->started_p = 1;
oprintf (f, "const struct ggc_cache_tab gt_ggc_rc_");
put_mangled_filename (f, v->line.file);
oprintf (f, "[] = {\n");
}
write_root (f, v, v->type->u.p->u.param_struct.param[0],
v->name, length_p, &v->line, if_marked);
}
finish_root_table (flp, "ggc_rc", "LAST_GGC_CACHE_TAB", "ggc_cache_tab",
"gt_ggc_cache_rtab");
for (v = variables; v; v = v->next)
{
outf_p f = get_output_file_with_visibility (v->line.file);
struct flist *fli;
int length_p = 0;
int if_marked_p = 0;
options_p o;
for (o = v->opt; o; o = o->next)
if (strcmp (o->name, "length") == 0)
length_p = 1;
else if (strcmp (o->name, "if_marked") == 0)
if_marked_p = 1;
if (! if_marked_p)
continue;
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
{
fli->started_p = 1;
oprintf (f, "const struct ggc_root_tab gt_pch_rc_");
put_mangled_filename (f, v->line.file);
oprintf (f, "[] = {\n");
}
write_root (f, v, v->type, v->name, length_p, &v->line, ((void *)0));
}
finish_root_table (flp, "pch_rc", "LAST_GGC_ROOT_TAB", "ggc_root_tab",
"gt_pch_cache_rtab");
for (v = variables; v; v = v->next)
{
outf_p f = get_output_file_with_visibility (v->line.file);
struct flist *fli;
int skip_p = 0;
options_p o;
for (o = v->opt; o; o = o->next)
if (strcmp (o->name, "deletable") == 0
|| strcmp (o->name, "if_marked") == 0)
skip_p = 1;
if (skip_p)
continue;
if (! contains_scalar_p (v->type))
continue;
for (fli = flp; fli; fli = fli->next)
if (fli->f == f)
break;
if (! fli->started_p)
{
fli->started_p = 1;
oprintf (f, "const struct ggc_root_tab gt_pch_rs_");
put_mangled_filename (f, v->line.file);
oprintf (f, "[] = {\n");
}
oprintf (f, " { &%s, 1, sizeof (%s), NULL, NULL },\n",
v->name, v->name);
}
finish_root_table (flp, "pch_rs", "LAST_GGC_ROOT_TAB", "ggc_root_tab",
"gt_pch_scalar_rtab");
}
extern int main (int argc, char **argv);
int
main(int argc __attribute__ ((__unused__)), char ** argv __attribute__ ((__unused__)))
{
unsigned i;
static struct fileloc pos = { "../../gcc/gcc/gengtype.c", 2969 };
unsigned j;
gen_rtx_next ();
srcdir_len = strlen (srcdir);
do_scalar_typedef ("CUMULATIVE_ARGS", &pos);
do_scalar_typedef ("REAL_VALUE_TYPE", &pos);
do_scalar_typedef ("uint8", &pos);
do_scalar_typedef ("jword", &pos);
do_scalar_typedef ("JCF_u2", &pos);
do_scalar_typedef ("void", &pos);
do_typedef ("PTR", create_pointer (resolve_typedef ("void", &pos)), &pos);
do_typedef ("HARD_REG_SET", create_array (
create_scalar_type ("unsigned long", strlen ("unsigned long")),
"2"), &pos);
for (i = 0; i < ((sizeof (all_files) / sizeof ((all_files)[0])) - 1); i++)
{
int dupflag = 0;
for (j = 0; j < i; j++)
{
if (!strcmp (all_files[i], all_files[j]))
{
dupflag = 1;
break;
}
}
if (!dupflag)
parse_file (all_files[i]);
if (i == 0)
do_typedef ("source_locus", create_pointer (resolve_typedef ("location_t", &pos)), &pos);
}
if (hit_error != 0)
exit (1);
set_gc_used (variables);
open_base_files ();
write_enum_defn (structures, param_structs);
write_types (structures, param_structs, &ggc_wtd);
write_types (structures, param_structs, &pch_wtd);
write_local (structures, param_structs);
write_roots (variables);
write_rtx_next ();
close_output_files ();
return (hit_error != 0);
}