# HG changeset patch # User kent # Date 1253764285 -32400 # Node ID 4c6926a2b9bcbac12e24dfda5ab4fd28d87334c5 # Parent 11a6cbe2d14c8dc1bd33e92bde8505d8b4d95b5a examples. diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/.gdb_history --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/.gdb_history Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,256 @@ +p debug_rtx(funexp) +run -O2 test_para2.c +p browse_tree (exp) +c +p browse_tree (exp) +n +p debug_rtx(funexp) +n +p debug_rtx(funexp) +n +p debug_rtx(get_last_insn()) +c +run -O2 test_csp1.c +p browse_tree (exp) +n +p debug_rtx(get_last_insn()) +c +b recog.c:2077 +run +c +p insn +p debug_rtx(insn) +backtrace +l +info b +del 2 +b recog.c:2078 +run +del 3 +b recog.c:2076 +c +l +p icode +c +p icode +c +c +p icode +n +c +n +c +c +c +c +run +c +p icode +backtrace +run +backtrace +info b +del 4 +b recog.c:2077 +run +backtrace +info b +disable 1 +info b +c +backtrace +quit +b expand_call +run -O2 test_para2.c +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +n +p browse_tree (fntype) +quit +b expand_call +run -O2 test04.c +p browse_tree (exp) +c +p browse_tree (exp) +n +p browse_tree (fntype ) +p browse_tree (fntype->type.values ) +p browse_tree (fntype->type.values->value ) +p browse_tree (fntype->type.values->type.value ) +p browse_tree (fntype->type.values->type.values ) +p browse_tree (fntype->type.values ) +p browse_tree (fntype->type.values->list.vlaue ) +p browse_tree (fntype->type.values->list.value ) +p browse_tree (fntype->type.values->common.chain ) +p browse_tree (fntype->type.value ) +p browse_tree (fntype->type.values ) +p browse_tree (fntype ) +l +p browse_tree (exp) +q +quit +b expand_call +run -O2 test04.c +p browse_tree (exp) +c +p browse_tree (exp) +p browse_tree (exp) +p browse_tree (exp) +p browse_tree (exp->exp.operands[1])) +p browse_tree (exp->exp.operands[1]) +p browse_tree (exp) +quit +b expand_call +run -O2 test_tailcall1.c +l +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +n +p browse_tree (fndecl) +p fndecl +n +p browse_tree (fntype) +n +p pass +p try_tail_call +run +c +c +p browse_tree (exp) +p try_tail_call +l +info stack +n +p try_tail_call +n +p try_tail_call +n +p try_tail_call +n +p try_tail_call +n +l +l - +l - +p try_tail_call +n +n +p browse_tree (exp) +n +n +n +n +p pass +p try_tail_call +quit +b expand_call +run -O2 test_tailcall1.c +cc +c +c +p browse_tree (exp) +n +p try_tail_call +n +p tree +p p +n +p p +p addr +n +p addr +n +p fndecl +n +p fndecl +n +p fntype +n +n +p funtype +n +p funtype +n +p try_tail_call +n +p try_tail_call +quit +b expand_call +run -O2 test_tailcall1.c +c +c +p browse_tree (exp) +n +p try_tail_call +n +p try_tail_call +n +n +p try_tail_call +n +p pass +quit +b expand_call +run -O2 test_tailcall1.c +p browse_tree (exp) +c +c +p browse_tree (exp) +n +p try_tail_call +n +p try_tail_call +p fndecl +p targetm.function_ok_for_sibcall(fndecl,exp) +run +c +c +n +p browse_tree (exp) +n +s +l +p decl +p exp +p browse_tree(exp) +n +s +s +quit +run -O2 test03.c +b expand_call +run +n +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +c +quit +b expand_call +run -O2 test_para2.c +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +c +p browse_tree (exp) +n +s +n +p debug_rtx(get_last_insn()) +quit diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/bug.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/bug.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,19 @@ +typedef void (*atexit_callback)(void); +typedef void (*cxa_atexit_callback)(void *); +struct one_atexit_routine +{ + int callback; +}; + + +static int +atexit_common (const struct one_atexit_routine *r, const void *dso) + + +{ + return 0; +} + +int main(){ + printf("hello\n"); +} diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/c-parser.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/c-parser.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,30292 @@ +# 1 "../../GCC/gcc/c-parser.c" +# 1 "/home/kent/cvs_tmp/CbC_project/build-test/gcc//" +# 1 "" +# 1 "" +# 1 "../../GCC/gcc/c-parser.c" +# 39 "../../GCC/gcc/c-parser.c" +# 1 "./config.h" 1 + + + + + +# 1 "./auto-host.h" 1 +# 7 "./config.h" 2 + +# 1 "../../GCC/gcc/../include/ansidecl.h" 1 +# 9 "./config.h" 2 +# 40 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/system.h" 1 +# 27 "../../GCC/gcc/system.h" +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h" 1 3 4 +# 43 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h" 3 4 +typedef __builtin_va_list __gnuc_va_list; +# 105 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h" 3 4 +typedef __gnuc_va_list va_list; +# 28 "../../GCC/gcc/system.h" 2 +# 38 "../../GCC/gcc/system.h" +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 152 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 3 4 +typedef int ptrdiff_t; +# 214 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 3 4 +typedef unsigned int size_t; +# 326 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 3 4 +typedef long int wchar_t; +# 39 "../../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 +# 329 "/usr/include/features.h" 3 4 +# 1 "/usr/include/sys/cdefs.h" 1 3 4 +# 313 "/usr/include/sys/cdefs.h" 3 4 +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 314 "/usr/include/sys/cdefs.h" 2 3 4 +# 330 "/usr/include/features.h" 2 3 4 +# 352 "/usr/include/features.h" 3 4 +# 1 "/usr/include/gnu/stubs.h" 1 3 4 + + + +# 1 "/usr/include/bits/wordsize.h" 1 3 4 +# 5 "/usr/include/gnu/stubs.h" 2 3 4 + + +# 1 "/usr/include/gnu/stubs-32.h" 1 3 4 +# 8 "/usr/include/gnu/stubs.h" 2 3 4 +# 353 "/usr/include/features.h" 2 3 4 +# 29 "/usr/include/stdio.h" 2 3 4 + + + + + +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.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 "/usr/lib/gcc/i386-redhat-linux/4.1.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; +# 134 "/usr/include/bits/types.h" 3 4 +# 1 "/usr/include/bits/typesizes.h" 1 3 4 +# 135 "/usr/include/bits/types.h" 2 3 4 + + +__extension__ typedef __u_quad_t __dev_t; +__extension__ typedef unsigned int __uid_t; +__extension__ typedef unsigned int __gid_t; +__extension__ typedef unsigned long int __ino_t; +__extension__ typedef __u_quad_t __ino64_t; +__extension__ typedef unsigned int __mode_t; +__extension__ typedef unsigned int __nlink_t; +__extension__ typedef long int __off_t; +__extension__ typedef __quad_t __off64_t; +__extension__ typedef int __pid_t; +__extension__ typedef struct { int __val[2]; } __fsid_t; +__extension__ typedef long int __clock_t; +__extension__ typedef unsigned long int __rlim_t; +__extension__ typedef __u_quad_t __rlim64_t; +__extension__ typedef unsigned int __id_t; +__extension__ typedef long int __time_t; +__extension__ typedef unsigned int __useconds_t; +__extension__ typedef long int __suseconds_t; + +__extension__ typedef int __daddr_t; +__extension__ typedef long int __swblk_t; +__extension__ typedef int __key_t; + + +__extension__ typedef int __clockid_t; + + +__extension__ typedef void * __timer_t; + + +__extension__ typedef long int __blksize_t; + + + + +__extension__ typedef long int __blkcnt_t; +__extension__ typedef __quad_t __blkcnt64_t; + + +__extension__ typedef unsigned long int __fsblkcnt_t; +__extension__ typedef __u_quad_t __fsblkcnt64_t; + + +__extension__ typedef unsigned long int __fsfilcnt_t; +__extension__ typedef __u_quad_t __fsfilcnt64_t; + +__extension__ typedef int __ssize_t; + + + +typedef __off64_t __loff_t; +typedef __quad_t *__qaddr_t; +typedef char *__caddr_t; + + +__extension__ typedef int __intptr_t; + + +__extension__ 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 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 355 "/usr/lib/gcc/i386-redhat-linux/4.1.1/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 "/usr/lib/gcc/i386-redhat-linux/4.1.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 +# 76 "/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 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 49 "/usr/include/wchar.h" 2 3 4 +# 29 "/usr/include/gconv.h" 2 3 4 + + +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.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 +# 166 "/usr/include/libio.h" 3 4 +struct _IO_jump_t; struct _IO_FILE; +# 176 "/usr/include/libio.h" 3 4 +typedef void _IO_lock_t; + + + + + +struct _IO_marker { + struct _IO_marker *_next; + struct _IO_FILE *_sbuf; + + + + int _pos; +# 199 "/usr/include/libio.h" 3 4 +}; + + +enum __codecvt_result +{ + __codecvt_ok, + __codecvt_partial, + __codecvt_error, + __codecvt_noconv +}; +# 267 "/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; +# 315 "/usr/include/libio.h" 3 4 + __off64_t _offset; +# 324 "/usr/include/libio.h" 3 4 + void *__pad1; + void *__pad2; + void *__pad3; + void *__pad4; + size_t __pad5; + + int _mode; + + char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; + +}; + + +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_; +# 360 "/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 *) __attribute__ ((__nothrow__)); +extern int __uflow (_IO_FILE *) __attribute__ ((__nothrow__)); +extern int __overflow (_IO_FILE *, int) __attribute__ ((__nothrow__)); +extern wint_t __wunderflow (_IO_FILE *) __attribute__ ((__nothrow__)); +extern wint_t __wuflow (_IO_FILE *) __attribute__ ((__nothrow__)); +extern wint_t __woverflow (_IO_FILE *, wint_t) __attribute__ ((__nothrow__)); +# 450 "/usr/include/libio.h" 3 4 +extern int _IO_getc (_IO_FILE *__fp) __attribute__ ((__nothrow__)); +extern int _IO_putc (int __c, _IO_FILE *__fp) __attribute__ ((__nothrow__)); +extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__)); +extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__)); + +extern int _IO_peekc_locked (_IO_FILE *__fp) __attribute__ ((__nothrow__)); + + + + + +extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__)); +extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__)); +extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__)); +# 480 "/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) __attribute__ ((__nothrow__)); +extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) __attribute__ ((__nothrow__)); + +extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) __attribute__ ((__nothrow__)); +extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) __attribute__ ((__nothrow__)); + +extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__)); +# 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) __attribute__ ((__nothrow__)); + +extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__)); + + + + +extern int renameat (int __oldfd, __const char *__old, int __newfd, + __const char *__new) __attribute__ ((__nothrow__)); + + + + + + + + +extern FILE *tmpfile (void); +# 181 "/usr/include/stdio.h" 3 4 +extern FILE *tmpfile64 (void); + + + +extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)); + + + + + +extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)); +# 203 "/usr/include/stdio.h" 3 4 +extern char *tempnam (__const char *__dir, __const char *__pfx) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)); + + + + + + + + +extern int fclose (FILE *__stream); + + + + +extern int fflush (FILE *__stream); + +# 228 "/usr/include/stdio.h" 3 4 +extern int fflush_unlocked (FILE *__stream); +# 238 "/usr/include/stdio.h" 3 4 +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); +# 269 "/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) __attribute__ ((__nothrow__)); + + + + + +extern FILE *fopencookie (void *__restrict __magic_cookie, + __const char *__restrict __modes, + _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)); + + +extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) __attribute__ ((__nothrow__)); + + + + +extern FILE *open_memstream (char **__restrict __bufloc, + size_t *__restrict __sizeloc) __attribute__ ((__nothrow__)); + + + +extern FILE *open_wmemstream (wchar_t **__restrict __bufloc, + size_t *__restrict __sizeloc) __attribute__ ((__nothrow__)); + + + + + + +extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__)); + + + +extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, + int __modes, size_t __n) __attribute__ ((__nothrow__)); + + + + + +extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, + size_t __size) __attribute__ ((__nothrow__)); + + +extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__)); + + + + + + + + +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, ...) __attribute__ ((__nothrow__)); + + + + + +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) __attribute__ ((__nothrow__)); + + + + + +extern int snprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); + +extern int vsnprintf (char *__restrict __s, size_t __maxlen, + __const char *__restrict __format, __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); + + + + + + +extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, + __gnuc_va_list __arg) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))); +extern int __asprintf (char **__restrict __ptr, + __const char *__restrict __fmt, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))); +extern int asprintf (char **__restrict __ptr, + __const char *__restrict __fmt, ...) + __attribute__ ((__nothrow__)) __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, ...) __attribute__ ((__nothrow__)); + + + + + + + + +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__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0))); + + + + + + + + + +extern int fgetc (FILE *__stream); +extern int getc (FILE *__stream); + + + + + +extern int getchar (void); + +# 466 "/usr/include/stdio.h" 3 4 +extern int getc_unlocked (FILE *__stream); +extern int getchar_unlocked (void); +# 477 "/usr/include/stdio.h" 3 4 +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); + +# 510 "/usr/include/stdio.h" 3 4 +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) ; + +# 556 "/usr/include/stdio.h" 3 4 +extern char *fgets_unlocked (char *__restrict __s, int __n, + FILE *__restrict __stream) ; +# 572 "/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) ; + +# 633 "/usr/include/stdio.h" 3 4 +extern int fputs_unlocked (__const char *__restrict __s, + FILE *__restrict __stream); +# 644 "/usr/include/stdio.h" 3 4 +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); + +# 680 "/usr/include/stdio.h" 3 4 +extern int fseeko (FILE *__stream, __off_t __off, int __whence); + + + + +extern __off_t ftello (FILE *__stream) ; +# 699 "/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); +# 722 "/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) __attribute__ ((__nothrow__)); + +extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ; + +extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ; + + + + +extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); +extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ; +extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ; + + + + + + + + +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[]; +# 761 "/usr/include/stdio.h" 2 3 4 + + + + +extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ; + + + + +extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ; +# 780 "/usr/include/stdio.h" 3 4 +extern FILE *popen (__const char *__command, __const char *__modes) ; + + + + + +extern int pclose (FILE *__stream); + + + + + +extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); + + + + + +extern char *cuserid (char *__s); + + + + +struct obstack; + + +extern int obstack_printf (struct obstack *__restrict __obstack, + __const char *__restrict __format, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))); +extern int obstack_vprintf (struct obstack *__restrict __obstack, + __const char *__restrict __format, + __gnuc_va_list __args) + __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))); + + + + + + + +extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__)); + + + +extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ; + + +extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__)); +# 850 "/usr/include/stdio.h" 3 4 + +# 42 "../../GCC/gcc/system.h" 2 +# 179 "../../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]; +# 180 "../../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 +# 59 "/usr/include/time.h" 3 4 + + +typedef __clock_t clock_t; + + + +# 75 "/usr/include/time.h" 3 4 + + +typedef __time_t time_t; + + + +# 93 "/usr/include/time.h" 3 4 +typedef __clockid_t clockid_t; +# 105 "/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 "/usr/lib/gcc/i386-redhat-linux/4.1.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; +# 195 "/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__))); +# 217 "/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 +# 218 "/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 +# 121 "/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 + +# 109 "/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); +# 121 "/usr/include/sys/select.h" 3 4 +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); + + + +# 221 "/usr/include/sys/types.h" 2 3 4 + + +# 1 "/usr/include/sys/sysmacros.h" 1 3 4 +# 29 "/usr/include/sys/sysmacros.h" 3 4 +__extension__ +extern __inline unsigned int gnu_dev_major (unsigned long long int __dev) + __attribute__ ((__nothrow__)); +__extension__ +extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev) + __attribute__ ((__nothrow__)); +__extension__ +extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major, + unsigned int __minor) + __attribute__ ((__nothrow__)); + + +__extension__ extern __inline unsigned int +__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev) +{ + return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); +} + +__extension__ extern __inline unsigned int +__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev) +{ + return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); +} + +__extension__ extern __inline unsigned long long int +__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor) +{ + return ((__minor & 0xff) | ((__major & 0xfff) << 8) + | (((unsigned long long int) (__minor & ~0xff)) << 12) + | (((unsigned long long int) (__major & ~0xfff)) << 32)); +} +# 224 "/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; +# 262 "/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 +# 36 "/usr/include/bits/pthreadtypes.h" 3 4 +typedef unsigned long int pthread_t; + + +typedef union +{ + char __size[36]; + long int __align; +} pthread_attr_t; + + +typedef struct __pthread_internal_slist +{ + struct __pthread_internal_slist *__next; +} __pthread_slist_t; + + + + +typedef union +{ + struct __pthread_mutex_s + { + int __lock; + unsigned int __count; + int __owner; + + + int __kind; + unsigned int __nusers; + __extension__ union + { + int __spins; + __pthread_slist_t __list; + }; + } __data; + char __size[24]; + long int __align; +} pthread_mutex_t; + +typedef union +{ + char __size[4]; + long int __align; +} pthread_mutexattr_t; + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __futex; + __extension__ unsigned long long int __total_seq; + __extension__ unsigned long long int __wakeup_seq; + __extension__ unsigned long long int __woken_seq; + void *__mutex; + unsigned int __nwaiters; + unsigned int __broadcast_seq; + } __data; + char __size[48]; + __extension__ long long int __align; +} pthread_cond_t; + +typedef union +{ + char __size[4]; + long int __align; +} pthread_condattr_t; + + + +typedef unsigned int pthread_key_t; + + + +typedef int pthread_once_t; + + + + + +typedef union +{ + struct + { + int __lock; + unsigned int __nr_readers; + unsigned int __readers_wakeup; + unsigned int __writer_wakeup; + unsigned int __nr_readers_queued; + unsigned int __nr_writers_queued; + + + unsigned int __flags; + int __writer; + } __data; + char __size[32]; + long int __align; +} pthread_rwlock_t; + +typedef union +{ + char __size[8]; + long int __align; +} pthread_rwlockattr_t; + + + + + +typedef volatile int pthread_spinlock_t; + + + + +typedef union +{ + char __size[20]; + long int __align; +} pthread_barrier_t; + +typedef union +{ + char __size[4]; + int __align; +} pthread_barrierattr_t; +# 271 "/usr/include/sys/types.h" 2 3 4 + + + +# 182 "../../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 +# 43 "/usr/include/bits/errno.h" 3 4 +extern int *__errno_location (void) __attribute__ ((__nothrow__)) __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; +# 184 "../../GCC/gcc/system.h" 2 +# 194 "../../GCC/gcc/system.h" +# 1 "/usr/include/string.h" 1 3 4 +# 28 "/usr/include/string.h" 3 4 + + + + + +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.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) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memmove (void *__dest, __const void *__src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, + int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void *memchr (__const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern void *rawmemchr (__const void *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern void *memrchr (__const void *__s, int __c, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strcat (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strncat (char *__restrict __dest, __const char *__restrict __src, + size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strcoll (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern size_t strxfrm (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + + +# 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; +# 119 "/usr/include/string.h" 2 3 4 + + +extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, + __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + + + + +extern char *strdup (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *strndup (__const char *__string, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); +# 165 "/usr/include/string.h" 3 4 + + +extern char *strchr (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + +extern char *strrchr (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strchrnul (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strcspn (__const char *__s, __const char *__reject) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern size_t strspn (__const char *__s, __const char *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strpbrk (__const char *__s, __const char *__accept) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + +extern char *strstr (__const char *__haystack, __const char *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *strtok (char *__restrict __s, __const char *__restrict __delim) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + +extern char *__strtok_r (char *__restrict __s, + __const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + +extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, + char **__restrict __save_ptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + + + + +extern char *strcasestr (__const char *__haystack, __const char *__needle) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern void *memmem (__const void *__haystack, size_t __haystacklen, + __const void *__needle, size_t __needlelen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); + + + +extern void *__mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern void *mempcpy (void *__restrict __dest, + __const void *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern size_t strlen (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern size_t strnlen (__const char *__string, size_t __maxlen) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern char *strerror (int __errnum) __attribute__ ((__nothrow__)); + +# 281 "/usr/include/string.h" 3 4 +extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + +extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern void bcopy (__const void *__src, void *__dest, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *index (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + +extern char *rindex (__const char *__s, int __c) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); + + + +extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + + +extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + +__extension__ extern int ffsll (long long int __ll) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + + +extern int strcasecmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int strcasecmp_l (__const char *__s1, __const char *__s2, + __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); + +extern int strncasecmp_l (__const char *__s1, __const char *__s2, + size_t __n, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); + + + + + +extern char *strsep (char **__restrict __stringp, + __const char *__restrict __delim) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + +extern int strverscmp (__const char *__s1, __const char *__s2) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strsignal (int __sig) __attribute__ ((__nothrow__)); + + +extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern char *__stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern char *stpncpy (char *__restrict __dest, + __const char *__restrict __src, size_t __n) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +# 426 "/usr/include/string.h" 3 4 + +# 195 "../../GCC/gcc/system.h" 2 +# 1 "/usr/include/strings.h" 1 3 4 +# 196 "../../GCC/gcc/system.h" 2 +# 207 "../../GCC/gcc/system.h" +# 1 "/usr/include/stdlib.h" 1 3 4 +# 33 "/usr/include/stdlib.h" 3 4 +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.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 +# 67 "/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__)); +# 96 "/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; + + +# 140 "/usr/include/stdlib.h" 3 4 +extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ; + + + + +extern double atof (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern int atoi (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int atol (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ extern long long int atoll (__const char *__nptr) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern double strtod (__const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern float strtof (__const char *__restrict __nptr, + char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern long double strtold (__const char *__restrict __nptr, + char **__restrict __endptr) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern long int strtol (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern unsigned long int strtoul (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +__extension__ +extern long long int strtoq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +__extension__ +extern unsigned long long int strtouq (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +__extension__ +extern long long int strtoll (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +__extension__ +extern unsigned long long int strtoull (__const char *__restrict __nptr, + char **__restrict __endptr, int __base) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +# 240 "/usr/include/stdlib.h" 3 4 +extern long int strtol_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +extern unsigned long int strtoul_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +__extension__ +extern long long int strtoll_l (__const char *__restrict __nptr, + char **__restrict __endptr, int __base, + __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +__extension__ +extern unsigned long long int strtoull_l (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ; + +extern double strtod_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + +extern float strtof_l (__const char *__restrict __nptr, + char **__restrict __endptr, __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + +extern long double strtold_l (__const char *__restrict __nptr, + char **__restrict __endptr, + __locale_t __loc) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + + + + + + +extern double __strtod_internal (__const char *__restrict __nptr, + char **__restrict __endptr, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +extern float __strtof_internal (__const char *__restrict __nptr, + char **__restrict __endptr, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +extern long double __strtold_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + +extern long int __strtol_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +__extension__ +extern long long int __strtoll_internal (__const char *__restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +__extension__ +extern unsigned long long int __strtoull_internal (__const char * + __restrict __nptr, + char **__restrict __endptr, + int __base, int __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 429 "/usr/include/stdlib.h" 3 4 +extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ; + + +extern long int a64l (__const char *__s) + __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ; +# 445 "/usr/include/stdlib.h" 3 4 +extern long int random (void) __attribute__ ((__nothrow__)); + + +extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__)); + + + + + +extern char *initstate (unsigned int __seed, char *__statebuf, + size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + +extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +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) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int srandom_r (unsigned int __seed, struct random_data *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, + size_t __statelen, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int setstate_r (char *__restrict __statebuf, + struct random_data *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int rand (void) __attribute__ ((__nothrow__)); + +extern void srand (unsigned int __seed) __attribute__ ((__nothrow__)); + + + + +extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__)); + + + + + + + +extern double drand48 (void) __attribute__ ((__nothrow__)); +extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int lrand48 (void) __attribute__ ((__nothrow__)); +extern long int nrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int mrand48 (void) __attribute__ ((__nothrow__)); +extern long int jrand48 (unsigned short int __xsubi[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern void srand48 (long int __seedval) __attribute__ ((__nothrow__)); +extern unsigned short int *seed48 (unsigned short int __seed16v[3]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +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) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int erand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int lrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int nrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int mrand48_r (struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int jrand48_r (unsigned short int __xsubi[3], + struct drand48_data *__restrict __buffer, + long int *__restrict __result) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + +extern int srand48_r (long int __seedval, struct drand48_data *__buffer) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + +extern int seed48_r (unsigned short int __seed16v[3], + struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + +extern int lcong48_r (unsigned short int __param[7], + struct drand48_data *__buffer) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + + + + +extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + +extern void *calloc (size_t __nmemb, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + + + + + + +extern void *realloc (void *__ptr, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + +extern void free (void *__ptr) __attribute__ ((__nothrow__)); + + + + +extern void cfree (void *__ptr) __attribute__ ((__nothrow__)); + + + +# 1 "/usr/include/alloca.h" 1 3 4 +# 25 "/usr/include/alloca.h" 3 4 +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 26 "/usr/include/alloca.h" 2 3 4 + + + + + + + +extern void *alloca (size_t __size) __attribute__ ((__nothrow__)); + + + + + + +# 613 "/usr/include/stdlib.h" 2 3 4 + + + + +extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + + + +extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + +extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + +extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); + + + + + + +extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + +extern char *__secure_getenv (__const char *__name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int setenv (__const char *__name, __const char *__value, int __replace) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + +extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__)); + + + + + + +extern int clearenv (void) __attribute__ ((__nothrow__)); +# 698 "/usr/include/stdlib.h" 3 4 +extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 709 "/usr/include/stdlib.h" 3 4 +extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 719 "/usr/include/stdlib.h" 3 4 +extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ; +# 729 "/usr/include/stdlib.h" 3 4 +extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + + + +extern int system (__const char *__command) ; + + + + + + + +extern char *canonicalize_file_name (__const char *__name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 757 "/usr/include/stdlib.h" 3 4 +extern char *realpath (__const char *__restrict __name, + char *__restrict __resolved) __attribute__ ((__nothrow__)) ; + + + + + + +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) + __attribute__ ((__nonnull__ (1, 2, 5))) ; + + + +extern void qsort (void *__base, size_t __nmemb, size_t __size, + __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); + + + +extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; +extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + +__extension__ extern long long int llabs (long long int __x) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + + + + + +extern div_t div (int __numer, int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; +extern ldiv_t ldiv (long int __numer, long int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + + + + +__extension__ extern lldiv_t lldiv (long long int __numer, + long long int __denom) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ; + +# 822 "/usr/include/stdlib.h" 3 4 +extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; + + + + +extern char *gcvt (double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ; + + + + +extern char *qecvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qfcvt (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ; +extern char *qgcvt (long double __value, int __ndigit, char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ; + + + + +extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); +extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, + int *__restrict __sign, char *__restrict __buf, + size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); + +extern int qecvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); +extern int qfcvt_r (long double __value, int __ndigit, + int *__restrict __decpt, int *__restrict __sign, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); + + + + + + + +extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ; + + +extern int mbtowc (wchar_t *__restrict __pwc, + __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ; + + +extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ; + + + +extern size_t mbstowcs (wchar_t *__restrict __pwcs, + __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)); + +extern size_t wcstombs (char *__restrict __s, + __const wchar_t *__restrict __pwcs, size_t __n) + __attribute__ ((__nothrow__)); + + + + + + + + +extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 910 "/usr/include/stdlib.h" 3 4 +extern int getsubopt (char **__restrict __optionp, + char *__const *__restrict __tokens, + char **__restrict __valuep) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ; + + + + + +extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + + +extern int posix_openpt (int __oflag) ; + + + + + + + +extern int grantpt (int __fd) __attribute__ ((__nothrow__)); + + + +extern int unlockpt (int __fd) __attribute__ ((__nothrow__)); + + + + +extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ; + + + + + + +extern int ptsname_r (int __fd, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + +extern int getpt (void); + + + + + + +extern int getloadavg (double __loadavg[], int __nelem) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +# 978 "/usr/include/stdlib.h" 3 4 + +# 208 "../../GCC/gcc/system.h" 2 +# 232 "../../GCC/gcc/system.h" +# 1 "/usr/include/unistd.h" 1 3 4 +# 28 "/usr/include/unistd.h" 3 4 + +# 171 "/usr/include/unistd.h" 3 4 +# 1 "/usr/include/bits/posix_opt.h" 1 3 4 +# 172 "/usr/include/unistd.h" 2 3 4 + + + +# 1 "/usr/include/bits/environments.h" 1 3 4 +# 176 "/usr/include/unistd.h" 2 3 4 +# 195 "/usr/include/unistd.h" 3 4 +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 196 "/usr/include/unistd.h" 2 3 4 +# 236 "/usr/include/unistd.h" 3 4 +typedef __intptr_t intptr_t; + + + + + + +typedef __socklen_t socklen_t; +# 256 "/usr/include/unistd.h" 3 4 +extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int euidaccess (__const char *__name, int __type) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int eaccess (__const char *__name, int __type) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int faccessat (int __fd, __const char *__file, int __type, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; +# 299 "/usr/include/unistd.h" 3 4 +extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__)); +# 310 "/usr/include/unistd.h" 3 4 +extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) + __attribute__ ((__nothrow__)); + + + + + + +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) ; +# 341 "/usr/include/unistd.h" 3 4 +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) ; +# 369 "/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]) __attribute__ ((__nothrow__)) ; +# 391 "/usr/include/unistd.h" 3 4 +extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__)); +# 403 "/usr/include/unistd.h" 3 4 +extern unsigned int sleep (unsigned int __seconds); + + + + + + +extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) + __attribute__ ((__nothrow__)); + + + + + + +extern int usleep (__useconds_t __useconds); +# 427 "/usr/include/unistd.h" 3 4 +extern int pause (void); + + + +extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) ; + + + + +extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + +extern int fchownat (int __fd, __const char *__file, __uid_t __owner, + __gid_t __group, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; + + + +extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern int fchdir (int __fd) __attribute__ ((__nothrow__)) ; +# 469 "/usr/include/unistd.h" 3 4 +extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) ; + + + + + +extern char *get_current_dir_name (void) __attribute__ ((__nothrow__)); + + + + + + +extern char *getwd (char *__buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ; + + + + +extern int dup (int __fd) __attribute__ ((__nothrow__)) ; + + +extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__)); + + +extern char **__environ; + +extern char **environ; + + + + + +extern int execve (__const char *__path, char *__const __argv[], + char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) + __attribute__ ((__nothrow__)); + + + + +extern int execv (__const char *__path, char *__const __argv[]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int execle (__const char *__path, __const char *__arg, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int execl (__const char *__path, __const char *__arg, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int execvp (__const char *__file, char *__const __argv[]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int execlp (__const char *__file, __const char *__arg, ...) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int nice (int __inc) __attribute__ ((__nothrow__)) ; + + + + +extern void _exit (int __status) __attribute__ ((__noreturn__)); + + + + + +# 1 "/usr/include/bits/confname.h" 1 3 4 +# 26 "/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, + + _PC_2_SYMLINKS + + }; + + +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, + + + _SC_LEVEL1_ICACHE_SIZE, + + _SC_LEVEL1_ICACHE_ASSOC, + + _SC_LEVEL1_ICACHE_LINESIZE, + + _SC_LEVEL1_DCACHE_SIZE, + + _SC_LEVEL1_DCACHE_ASSOC, + + _SC_LEVEL1_DCACHE_LINESIZE, + + _SC_LEVEL2_CACHE_SIZE, + + _SC_LEVEL2_CACHE_ASSOC, + + _SC_LEVEL2_CACHE_LINESIZE, + + _SC_LEVEL3_CACHE_SIZE, + + _SC_LEVEL3_CACHE_ASSOC, + + _SC_LEVEL3_CACHE_LINESIZE, + + _SC_LEVEL4_CACHE_SIZE, + + _SC_LEVEL4_CACHE_ASSOC, + + _SC_LEVEL4_CACHE_LINESIZE, + + + + _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, + + _SC_RAW_SOCKETS + + }; + + +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 + + }; +# 553 "/usr/include/unistd.h" 2 3 4 + + +extern long int pathconf (__const char *__path, int __name) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__)); + + +extern long int sysconf (int __name) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + +extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__)); + + + + +extern __pid_t getpid (void) __attribute__ ((__nothrow__)); + + +extern __pid_t getppid (void) __attribute__ ((__nothrow__)); + + + + +extern __pid_t getpgrp (void) __attribute__ ((__nothrow__)); +# 589 "/usr/include/unistd.h" 3 4 +extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__)); + +extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__)); + + + + + + +extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__)); +# 615 "/usr/include/unistd.h" 3 4 +extern int setpgrp (void) __attribute__ ((__nothrow__)); +# 632 "/usr/include/unistd.h" 3 4 +extern __pid_t setsid (void) __attribute__ ((__nothrow__)); + + + +extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__)); + + + +extern __uid_t getuid (void) __attribute__ ((__nothrow__)); + + +extern __uid_t geteuid (void) __attribute__ ((__nothrow__)); + + +extern __gid_t getgid (void) __attribute__ ((__nothrow__)); + + +extern __gid_t getegid (void) __attribute__ ((__nothrow__)); + + + + +extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) ; + + + +extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__)); + + + + + + +extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__)); + + + + +extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__)); + + + + +extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__)); + + + + + + +extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__)); + + + + +extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__)); + + + + +extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__)); + + + + + +extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) + __attribute__ ((__nothrow__)); + + + +extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) + __attribute__ ((__nothrow__)); + + + +extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) + __attribute__ ((__nothrow__)); + + + +extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) + __attribute__ ((__nothrow__)); + + + + + + +extern __pid_t fork (void) __attribute__ ((__nothrow__)); + + + + + + +extern __pid_t vfork (void) __attribute__ ((__nothrow__)); + + + + + +extern char *ttyname (int __fd) __attribute__ ((__nothrow__)); + + + +extern int ttyname_r (int __fd, char *__buf, size_t __buflen) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; + + + +extern int isatty (int __fd) __attribute__ ((__nothrow__)); + + + + + +extern int ttyslot (void) __attribute__ ((__nothrow__)); + + + + +extern int link (__const char *__from, __const char *__to) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ; + + + + +extern int linkat (int __fromfd, __const char *__from, int __tofd, + __const char *__to, int __flags) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) ; + + + + +extern int symlink (__const char *__from, __const char *__to) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ; + + + + +extern ssize_t readlink (__const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ; + + + + +extern int symlinkat (__const char *__from, int __tofd, + __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ; + + +extern ssize_t readlinkat (int __fd, __const char *__restrict __path, + char *__restrict __buf, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) ; + + + +extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int unlinkat (int __fd, __const char *__name, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + +extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__)); + + +extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__)); + + + + + + +extern char *getlogin (void); + + + + + + + +extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); + + + + +extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); +# 835 "/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); +# 836 "/usr/include/unistd.h" 2 3 4 + + + + + + + +extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sethostname (__const char *__name, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern int sethostid (long int __id) __attribute__ ((__nothrow__)) ; + + + + + +extern int getdomainname (char *__name, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +extern int setdomainname (__const char *__name, size_t __len) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + +extern int vhangup (void) __attribute__ ((__nothrow__)); + + +extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + + + + + +extern int profil (unsigned short int *__sample_buffer, size_t __size, + size_t __offset, unsigned int __scale) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int acct (__const char *__name) __attribute__ ((__nothrow__)); + + + +extern char *getusershell (void) __attribute__ ((__nothrow__)); +extern void endusershell (void) __attribute__ ((__nothrow__)); +extern void setusershell (void) __attribute__ ((__nothrow__)); + + + + + +extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) ; + + + + + + +extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; + + + +extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1))); +# 921 "/usr/include/unistd.h" 3 4 +extern int fsync (int __fd); + + + + + + +extern long int gethostid (void); + + +extern void sync (void) __attribute__ ((__nothrow__)); + + + + +extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + + + +extern int getdtablesize (void) __attribute__ ((__nothrow__)); + + + + +extern int truncate (__const char *__file, __off_t __length) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 958 "/usr/include/unistd.h" 3 4 +extern int truncate64 (__const char *__file, __off64_t __length) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ; +# 968 "/usr/include/unistd.h" 3 4 +extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) ; +# 978 "/usr/include/unistd.h" 3 4 +extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__)) ; +# 988 "/usr/include/unistd.h" 3 4 +extern int brk (void *__addr) __attribute__ ((__nothrow__)) ; + + + + + +extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__)); +# 1009 "/usr/include/unistd.h" 3 4 +extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__)); +# 1032 "/usr/include/unistd.h" 3 4 +extern int lockf (int __fd, int __cmd, __off_t __len) ; +# 1042 "/usr/include/unistd.h" 3 4 +extern int lockf64 (int __fd, int __cmd, __off64_t __len) ; +# 1063 "/usr/include/unistd.h" 3 4 +extern int fdatasync (int __fildes) __attribute__ ((__nothrow__)); + + + + + + + +extern char *crypt (__const char *__key, __const char *__salt) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern void swab (__const void *__restrict __from, void *__restrict __to, + ssize_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + + + +extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); +# 1101 "/usr/include/unistd.h" 3 4 + +# 233 "../../GCC/gcc/system.h" 2 + + + +# 1 "/usr/include/sys/param.h" 1 3 4 +# 22 "/usr/include/sys/param.h" 3 4 +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/limits.h" 1 3 4 +# 11 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/limits.h" 3 4 +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/syslimits.h" 1 3 4 + + + + + + +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/limits.h" 1 3 4 +# 122 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/limits.h" 3 4 +# 1 "/usr/include/limits.h" 1 3 4 +# 145 "/usr/include/limits.h" 3 4 +# 1 "/usr/include/bits/posix1_lim.h" 1 3 4 +# 153 "/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 +# 154 "/usr/include/bits/posix1_lim.h" 2 3 4 +# 146 "/usr/include/limits.h" 2 3 4 + + + +# 1 "/usr/include/bits/posix2_lim.h" 1 3 4 +# 150 "/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 +# 154 "/usr/include/limits.h" 2 3 4 +# 123 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/limits.h" 2 3 4 +# 8 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/syslimits.h" 2 3 4 +# 12 "/usr/lib/gcc/i386-redhat-linux/4.1.1/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 +# 237 "../../GCC/gcc/system.h" 2 + + + + + +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/limits.h" 1 3 4 +# 243 "../../GCC/gcc/system.h" 2 + + + +# 1 "../../GCC/gcc/hwint.h" 1 +# 247 "../../GCC/gcc/system.h" 2 +# 275 "../../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) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int settimeofday (__const struct timeval *__tv, + __const struct timezone *__tz) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int adjtime (__const struct timeval *__delta, + struct timeval *__olddelta) __attribute__ ((__nothrow__)); + + + + +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) __attribute__ ((__nothrow__)); + + + + +extern int setitimer (__itimer_which_t __which, + __const struct itimerval *__restrict __new, + struct itimerval *__restrict __old) __attribute__ ((__nothrow__)); + + + + +extern int utimes (__const char *__file, __const struct timeval __tvp[2]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int lutimes (__const char *__file, __const struct timeval __tvp[2]) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__)); + + + + + + +extern int futimesat (int __fd, __const char *__file, + __const struct timeval __tvp[2]) __attribute__ ((__nothrow__)); +# 191 "/usr/include/sys/time.h" 3 4 + +# 276 "../../GCC/gcc/system.h" 2 +# 1 "/usr/include/time.h" 1 3 4 +# 31 "/usr/include/time.h" 3 4 + + + + + + + + +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 40 "/usr/include/time.h" 2 3 4 + + + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 44 "/usr/include/time.h" 2 3 4 +# 132 "/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; +# 181 "/usr/include/time.h" 3 4 + + + +extern clock_t clock (void) __attribute__ ((__nothrow__)); + + +extern time_t time (time_t *__timer) __attribute__ ((__nothrow__)); + + +extern double difftime (time_t __time1, time_t __time0) + __attribute__ ((__nothrow__)) __attribute__ ((__const__)); + + +extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__)); + + + + + +extern size_t strftime (char *__restrict __s, size_t __maxsize, + __const char *__restrict __format, + __const struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + + + + + +extern char *strptime (__const char *__restrict __s, + __const char *__restrict __fmt, struct tm *__tp) + __attribute__ ((__nothrow__)); + + + + + + + +extern size_t strftime_l (char *__restrict __s, size_t __maxsize, + __const char *__restrict __format, + __const struct tm *__restrict __tp, + __locale_t __loc) __attribute__ ((__nothrow__)); + +extern char *strptime_l (__const char *__restrict __s, + __const char *__restrict __fmt, struct tm *__tp, + __locale_t __loc) __attribute__ ((__nothrow__)); + + + + + + +extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__)); + + + +extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__)); + + + + + +extern struct tm *gmtime_r (__const time_t *__restrict __timer, + struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + + + +extern struct tm *localtime_r (__const time_t *__restrict __timer, + struct tm *__restrict __tp) __attribute__ ((__nothrow__)); + + + + + +extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__)); + + +extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__)); + + + + + + + +extern char *asctime_r (__const struct tm *__restrict __tp, + char *__restrict __buf) __attribute__ ((__nothrow__)); + + +extern char *ctime_r (__const time_t *__restrict __timer, + char *__restrict __buf) __attribute__ ((__nothrow__)); + + + + +extern char *__tzname[2]; +extern int __daylight; +extern long int __timezone; + + + + +extern char *tzname[2]; + + + +extern void tzset (void) __attribute__ ((__nothrow__)); + + + +extern int daylight; +extern long int timezone; + + + + + +extern int stime (__const time_t *__when) __attribute__ ((__nothrow__)); +# 312 "/usr/include/time.h" 3 4 +extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__)); + + +extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__)); + + +extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); +# 327 "/usr/include/time.h" 3 4 +extern int nanosleep (__const struct timespec *__requested_time, + struct timespec *__remaining); + + + +extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__)); + + +extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__)); + + +extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) + __attribute__ ((__nothrow__)); + + + + + + +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) __attribute__ ((__nothrow__)); + + + + +extern int timer_create (clockid_t __clock_id, + struct sigevent *__restrict __evp, + timer_t *__restrict __timerid) __attribute__ ((__nothrow__)); + + +extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__)); + + +extern int timer_settime (timer_t __timerid, int __flags, + __const struct itimerspec *__restrict __value, + struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__)); + + +extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) + __attribute__ ((__nothrow__)); + + +extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__)); +# 389 "/usr/include/time.h" 3 4 +extern int getdate_err; +# 398 "/usr/include/time.h" 3 4 +extern struct tm *getdate (__const char *__string); +# 412 "/usr/include/time.h" 3 4 +extern int getdate_r (__const char *__restrict __string, + struct tm *__restrict __resbufp); + + + +# 277 "../../GCC/gcc/system.h" 2 +# 288 "../../GCC/gcc/system.h" +# 1 "/usr/include/fcntl.h" 1 3 4 +# 30 "/usr/include/fcntl.h" 3 4 + + + + +# 1 "/usr/include/bits/fcntl.h" 1 3 4 +# 138 "/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; + }; +# 183 "/usr/include/bits/fcntl.h" 3 4 + + + +extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) + __attribute__ ((__nothrow__)); + + +# 35 "/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) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + +extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); +# 226 "/usr/include/sys/stat.h" 3 4 +extern int stat64 (__const char *__restrict __file, + struct stat64 *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + + + +extern int fstatat (int __fd, __const char *__restrict __file, + struct stat *__restrict __buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +# 250 "/usr/include/sys/stat.h" 3 4 +extern int fstatat64 (int __fd, __const char *__restrict __file, + struct stat64 *__restrict __buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); + + + + + + +extern int lstat (__const char *__restrict __file, + struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); +# 272 "/usr/include/sys/stat.h" 3 4 +extern int lstat64 (__const char *__restrict __file, + struct stat64 *__restrict __buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); + + + + + +extern int chmod (__const char *__file, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int lchmod (__const char *__file, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + +extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__)); + + + + + +extern int fchmodat (int __fd, __const char *__file, __mode_t mode, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ; + + + + + + +extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__)); + + + + +extern __mode_t getumask (void) __attribute__ ((__nothrow__)); + + + +extern int mkdir (__const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mkdirat (int __fd, __const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + + + +extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int mknodat (int __fd, __const char *__path, __mode_t __mode, + __dev_t __dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); + + + + +extern int mkfifo (__const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + +extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); +# 380 "/usr/include/sys/stat.h" 3 4 +extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); +extern int __xstat (int __ver, __const char *__filename, + struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __lxstat (int __ver, __const char *__filename, + struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __fxstatat (int __ver, int __fildes, __const char *__filename, + struct stat *__stat_buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))); +# 413 "/usr/include/sys/stat.h" 3 4 +extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); +extern int __xstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __lxstat64 (int __ver, __const char *__filename, + struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); +extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename, + struct stat64 *__stat_buf, int __flag) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))); + +extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, + __dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); + +extern int __xmknodat (int __ver, int __fd, __const char *__path, + __mode_t __mode, __dev_t *__dev) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5))); + + + + +extern __inline__ int +__attribute__ ((__nothrow__)) stat (__const char *__path, struct stat *__statbuf) +{ + return __xstat (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) lstat (__const char *__path, struct stat *__statbuf) +{ + return __lxstat (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstat (int __fd, struct stat *__statbuf) +{ + return __fxstat (3, __fd, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag) + +{ + return __fxstatat (3, __fd, __filename, __statbuf, __flag); +} + + + +extern __inline__ int +__attribute__ ((__nothrow__)) mknod (__const char *__path, __mode_t __mode, __dev_t __dev) +{ + return __xmknod (1, __path, __mode, &__dev); +} + + + +extern __inline__ int +__attribute__ ((__nothrow__)) mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev) + +{ + return __xmknodat (1, __fd, __path, __mode, &__dev); +} + + + + + +extern __inline__ int +__attribute__ ((__nothrow__)) stat64 (__const char *__path, struct stat64 *__statbuf) +{ + return __xstat64 (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) lstat64 (__const char *__path, struct stat64 *__statbuf) +{ + return __lxstat64 (3, __path, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstat64 (int __fd, struct stat64 *__statbuf) +{ + return __fxstat64 (3, __fd, __statbuf); +} + + +extern __inline__ int +__attribute__ ((__nothrow__)) fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag) + +{ + return __fxstatat64 (3, __fd, __filename, __statbuf, __flag); +} + + + + + + + +# 39 "/usr/include/fcntl.h" 2 3 4 +# 76 "/usr/include/fcntl.h" 3 4 +extern int fcntl (int __fd, int __cmd, ...); +# 85 "/usr/include/fcntl.h" 3 4 +extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); +# 95 "/usr/include/fcntl.h" 3 4 +extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); +# 109 "/usr/include/fcntl.h" 3 4 +extern int openat (int __fd, __const char *__file, int __oflag, ...) + __attribute__ ((__nonnull__ (2))); +# 120 "/usr/include/fcntl.h" 3 4 +extern int openat64 (int __fd, __const char *__file, int __oflag, ...) + __attribute__ ((__nonnull__ (2))); +# 130 "/usr/include/fcntl.h" 3 4 +extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); +# 140 "/usr/include/fcntl.h" 3 4 +extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); +# 176 "/usr/include/fcntl.h" 3 4 +extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len, + int __advise) __attribute__ ((__nothrow__)); +# 188 "/usr/include/fcntl.h" 3 4 +extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, + int __advise) __attribute__ ((__nothrow__)); +# 198 "/usr/include/fcntl.h" 3 4 +extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len); +# 209 "/usr/include/fcntl.h" 3 4 +extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len); + + + + +# 289 "../../GCC/gcc/system.h" 2 +# 326 "../../GCC/gcc/system.h" +# 1 "/usr/include/sys/wait.h" 1 3 4 +# 29 "/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); +# 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 +# 75 "/usr/include/signal.h" 3 4 +typedef void (*__sighandler_t) (int); + + + + +extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + +extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + + + + + + + +extern __sighandler_t signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); +# 104 "/usr/include/signal.h" 3 4 + + + + + +extern __sighandler_t bsd_signal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); + + + + + + +extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__)); + + + + + + +extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__)); + + + + +extern int raise (int __sig) __attribute__ ((__nothrow__)); + + + + +extern __sighandler_t ssignal (int __sig, __sighandler_t __handler) + __attribute__ ((__nothrow__)); +extern int gsignal (int __sig) __attribute__ ((__nothrow__)); + + + + +extern void psignal (int __sig, __const char *__s); +# 153 "/usr/include/signal.h" 3 4 +extern int __sigpause (int __sig_or_mask, int __is_sig); +# 162 "/usr/include/signal.h" 3 4 +extern int sigpause (int __sig) __asm__ ("__xpg_sigpause"); +# 181 "/usr/include/signal.h" 3 4 +extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + +extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); +# 196 "/usr/include/signal.h" 3 4 +typedef __sighandler_t sighandler_t; + + + + +typedef __sighandler_t sig_t; +# 212 "/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 + { + int si_tid; + int si_overrun; + sigval_t si_sigval; + } _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; +# 129 "/usr/include/bits/siginfo.h" 3 4 +enum +{ + SI_ASYNCNL = -60, + + SI_TKILL = -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 + +}; +# 273 "/usr/include/bits/siginfo.h" 3 4 +typedef struct sigevent + { + sigval_t sigev_value; + int sigev_signo; + int sigev_notify; + + union + { + int _pad[((64 / sizeof (int)) - 3)]; + + + + __pid_t _tid; + + struct + { + void (*_function) (sigval_t); + void *_attribute; + } _sigev_thread; + } _sigev_un; + } sigevent_t; + + + + + + +enum +{ + SIGEV_SIGNAL = 0, + + SIGEV_NONE, + + SIGEV_THREAD, + + + SIGEV_THREAD_ID = 4 + +}; +# 213 "/usr/include/signal.h" 2 3 4 + + + +extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigismember (__const sigset_t *__set, int __signo) + __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + +extern int sigisemptyset (__const sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + +extern int sigandset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + +extern int sigorset (sigset_t *__set, __const sigset_t *__left, + __const sigset_t *__right) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); + + + + +# 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); + }; +# 247 "/usr/include/signal.h" 2 3 4 + + +extern int sigprocmask (int __how, __const sigset_t *__restrict __set, + sigset_t *__restrict __oset) __attribute__ ((__nothrow__)); + + + + + + +extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1))); + + +extern int sigaction (int __sig, __const struct sigaction *__restrict __act, + struct sigaction *__restrict __oact) __attribute__ ((__nothrow__)); + + +extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig) + __attribute__ ((__nonnull__ (1, 2))); + + + + + + +extern int sigwaitinfo (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1))); + + + + + + +extern int sigtimedwait (__const sigset_t *__restrict __set, + siginfo_t *__restrict __info, + __const struct timespec *__restrict __timeout) + __attribute__ ((__nonnull__ (1))); + + + +extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val) + __attribute__ ((__nothrow__)); +# 304 "/usr/include/signal.h" 3 4 +extern __const char *__const _sys_siglist[65]; +extern __const char *__const sys_siglist[65]; + + +struct sigvec + { + __sighandler_t sv_handler; + int sv_mask; + + int sv_flags; + + }; +# 328 "/usr/include/signal.h" 3 4 +extern int sigvec (int __sig, __const struct sigvec *__vec, + struct sigvec *__ovec) __attribute__ ((__nothrow__)); + + + +# 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 +# 334 "/usr/include/signal.h" 2 3 4 + + +extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__)); +# 346 "/usr/include/signal.h" 3 4 +extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__)); + +# 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; +# 349 "/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; +# 352 "/usr/include/signal.h" 2 3 4 + + + + + +extern int sigstack (struct sigstack *__ss, struct sigstack *__oss) + __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__)); + + + +extern int sigaltstack (__const struct sigaltstack *__restrict __ss, + struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__)); + + + + + + + +extern int sighold (int __sig) __attribute__ ((__nothrow__)); + + +extern int sigrelse (int __sig) __attribute__ ((__nothrow__)); + + +extern int sigignore (int __sig) __attribute__ ((__nothrow__)); + + +extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__)); + + + + + + +# 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)__attribute__ ((__nothrow__)); + + +extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__)); +# 388 "/usr/include/signal.h" 2 3 4 + + + + + + +extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__)); + +extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__)); + + + + +# 32 "/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 +# 33 "/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_SIGPENDING = 11, + + + + __RLIMIT_MSGQUEUE = 12, + + + + + + __RLIMIT_NICE = 13, + + + + + __RLIMIT_RTPRIO = 14, + + + __RLIMIT_NLIMITS = 15, + __RLIM_NLIMITS = __RLIMIT_NLIMITS + + +}; +# 127 "/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 + +}; + + +# 1 "/usr/include/bits/time.h" 1 3 4 +# 167 "/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) __attribute__ ((__nothrow__)); +# 62 "/usr/include/sys/resource.h" 3 4 +extern int getrlimit64 (__rlimit_resource_t __resource, + struct rlimit64 *__rlimits) __attribute__ ((__nothrow__)); + + + + + + +extern int setrlimit (__rlimit_resource_t __resource, + __const struct rlimit *__rlimits) __attribute__ ((__nothrow__)); +# 82 "/usr/include/sys/resource.h" 3 4 +extern int setrlimit64 (__rlimit_resource_t __resource, + __const struct rlimit64 *__rlimits) __attribute__ ((__nothrow__)); + + + + +extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __attribute__ ((__nothrow__)); + + + + + +extern int getpriority (__priority_which_t __which, id_t __who) __attribute__ ((__nothrow__)); + + + +extern int setpriority (__priority_which_t __which, id_t __who, int __prio) + __attribute__ ((__nothrow__)); + + +# 33 "/usr/include/sys/wait.h" 2 3 4 +# 102 "/usr/include/sys/wait.h" 3 4 +typedef enum +{ + P_ALL, + P_PID, + P_PGID +} idtype_t; +# 116 "/usr/include/sys/wait.h" 3 4 +extern __pid_t wait (__WAIT_STATUS __stat_loc); +# 139 "/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 +# 144 "/usr/include/sys/wait.h" 2 3 4 +# 155 "/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) __attribute__ ((__nothrow__)); + + + + + +struct rusage; + + +extern __pid_t wait4 (__pid_t __pid, __WAIT_STATUS __stat_loc, int __options, + struct rusage *__usage) __attribute__ ((__nothrow__)); + + + + +# 327 "../../GCC/gcc/system.h" 2 +# 377 "../../GCC/gcc/system.h" +extern int getopt (int, char * const *, const char *); +# 397 "../../GCC/gcc/system.h" +# 1 "/usr/include/malloc.h" 1 3 4 +# 24 "/usr/include/malloc.h" 3 4 +# 1 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 25 "/usr/include/malloc.h" 2 3 4 +# 46 "/usr/include/malloc.h" 3 4 + + + +extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ; + + +extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__nothrow__)) + __attribute__ ((__malloc__)) ; + + + +extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__nothrow__)) + __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); + + +extern void free (void *__ptr) __attribute__ ((__nothrow__)); + + +extern void cfree (void *__ptr) __attribute__ ((__nothrow__)); + + +extern void *memalign (size_t __alignment, size_t __size) __attribute__ ((__nothrow__)) + __attribute__ ((__malloc__)) ; + + +extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) + __attribute__ ((__malloc__)) ; + + + +extern void * pvalloc (size_t __size) __attribute__ ((__nothrow__)) + __attribute__ ((__malloc__)) ; + + + +extern void *(*__morecore) (ptrdiff_t __size); + + +extern void *__default_morecore (ptrdiff_t __size) __attribute__ ((__nothrow__)) + __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) __attribute__ ((__nothrow__)); +# 128 "/usr/include/malloc.h" 3 4 +extern int mallopt (int __param, int __val) __attribute__ ((__nothrow__)); + + + +extern int malloc_trim (size_t __pad) __attribute__ ((__nothrow__)); + + + +extern size_t malloc_usable_size (void *__ptr) __attribute__ ((__nothrow__)); + + +extern void malloc_stats (void) __attribute__ ((__nothrow__)); + + +extern void *malloc_get_state (void) __attribute__ ((__nothrow__)); + + + +extern int malloc_set_state (void *__ptr) __attribute__ ((__nothrow__)); + + + + +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) __attribute__ ((__nothrow__)); + + + +# 398 "../../GCC/gcc/system.h" 2 +# 521 "../../GCC/gcc/system.h" +# 1 "../../GCC/gcc/../include/filenames.h" 1 +# 522 "../../GCC/gcc/system.h" 2 +# 532 "../../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 "/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h" 1 3 4 +# 46 "../../GCC/gcc/../include/libiberty.h" 2 +# 55 "../../GCC/gcc/../include/libiberty.h" +extern void unlock_stream (FILE *); + + + + + +extern void unlock_std_streams (void); + + + + + +extern FILE *fopen_unlocked (const char *, const char *); +extern FILE *fdopen_unlocked (int, const char *); +extern FILE *freopen_unlocked (const char *, const char *, FILE *); + + + + +extern char **buildargv (const char *) __attribute__ ((__malloc__)); + + + +extern void freeargv (char **); + + + + +extern char **dupargv (char **) __attribute__ ((__malloc__)); + + + +extern void expandargv (int *, char ***); +# 112 "../../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__)); +# 131 "../../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; +# 167 "../../GCC/gcc/../include/libiberty.h" +extern int fdmatch (int fd1, int fd2); +# 179 "../../GCC/gcc/../include/libiberty.h" +extern char * getpwd (void); +# 192 "../../GCC/gcc/../include/libiberty.h" +extern long get_run_time (void); + + + + +extern char *make_relative_prefix (const char *, const char *, + const char *) __attribute__ ((__malloc__)); + + + +extern char *choose_temp_base (void) __attribute__ ((__malloc__)); + + + +extern char *make_temp_file (const char *) __attribute__ ((__malloc__)); + + + +extern int unlink_if_ordinary (const char *); + + + +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); +# 249 "../../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 char *xstrndup (const char *, size_t) __attribute__ ((__malloc__)); + + + +extern void *xmemdup (const void *, size_t, size_t) __attribute__ ((__malloc__)); + + +extern double physmem_total (void); +extern double physmem_available (void); +# 338 "../../GCC/gcc/../include/libiberty.h" +extern const unsigned char _hex_value[256]; +extern void hex_init (void); +# 364 "../../GCC/gcc/../include/libiberty.h" +extern struct pex_obj *pex_init (int flags, const char *pname, + const char *tempbase); +# 446 "../../GCC/gcc/../include/libiberty.h" +extern const char *pex_run (struct pex_obj *obj, int flags, + const char *executable, char * const *argv, + const char *outname, const char *errname, + int *err); +# 461 "../../GCC/gcc/../include/libiberty.h" +extern const char *pex_run_in_environment (struct pex_obj *obj, int flags, + const char *executable, + char * const *argv, + char * const *env, + const char *outname, + const char *errname, int *err); + + + + + +extern FILE *pex_input_file (struct pex_obj *obj, int flags, + const char *in_name); + + + + + + +extern FILE *pex_input_pipe (struct pex_obj *obj, int binary); + + + + + + + +extern FILE *pex_read_output (struct pex_obj *, int binary); + + + + + +extern int pex_get_status (struct pex_obj *, int count, int *vector); + + + + + + +struct pex_time +{ + unsigned long user_seconds; + unsigned long user_microseconds; + unsigned long system_seconds; + unsigned long system_microseconds; +}; + +extern int pex_get_times (struct pex_obj *, int count, + struct pex_time *vector); + + + +extern void pex_free (struct pex_obj *); +# 527 "../../GCC/gcc/../include/libiberty.h" +extern const char *pex_one (int flags, const char *executable, + char * const *argv, const char *pname, + const char *outname, const char *errname, + int *status, int *err); +# 546 "../../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); +# 590 "../../GCC/gcc/../include/libiberty.h" +extern void *C_alloca (size_t) __attribute__ ((__malloc__)); +# 533 "../../GCC/gcc/system.h" 2 +# 570 "../../GCC/gcc/system.h" +extern void fancy_abort (const char *, int, const char *) __attribute__ ((__noreturn__)); +# 614 "../../GCC/gcc/system.h" +# 1 "../../GCC/gcc/double-int.h" 1 +# 49 "../../GCC/gcc/double-int.h" +typedef struct +{ + unsigned long low; + long high; +} double_int; + +union tree_node; + + + +union tree_node *double_int_to_tree (union tree_node *, double_int); +double_int tree_to_double_int (union tree_node *tree); + + + + +static __inline__ double_int +shwi_to_double_int (long cst) +{ + double_int r; + + r.low = (unsigned long) cst; + r.high = cst < 0 ? -1 : 0; + + return r; +} +# 87 "../../GCC/gcc/double-int.h" +static __inline__ double_int +uhwi_to_double_int (unsigned long cst) +{ + double_int r; + + r.low = cst; + r.high = 0; + + return r; +} + + + + + + +double_int double_int_mul (double_int, double_int); +double_int double_int_add (double_int, double_int); +double_int double_int_neg (double_int); + + + + +unsigned char double_int_fits_in_hwi_p (double_int, unsigned char); +unsigned char double_int_fits_in_shwi_p (double_int); +unsigned char double_int_fits_in_uhwi_p (double_int); +long double_int_to_shwi (double_int); +unsigned long double_int_to_uhwi (double_int); +double_int double_int_div (double_int, double_int, unsigned char, unsigned); +double_int double_int_sdiv (double_int, double_int, unsigned); +double_int double_int_udiv (double_int, double_int, unsigned); +double_int double_int_mod (double_int, double_int, unsigned char, unsigned); +double_int double_int_smod (double_int, double_int, unsigned); +double_int double_int_umod (double_int, double_int, unsigned); +double_int double_int_divmod (double_int, double_int, unsigned char, unsigned, double_int *); +double_int double_int_sdivmod (double_int, double_int, unsigned, double_int *); +double_int double_int_udivmod (double_int, double_int, unsigned, double_int *); +unsigned char double_int_negative_p (double_int); +int double_int_cmp (double_int, double_int, unsigned char); +int double_int_scmp (double_int, double_int); +int double_int_ucmp (double_int, double_int); +void dump_double_int (FILE *, double_int, unsigned char); + + + +double_int double_int_ext (double_int, unsigned, unsigned char); +double_int double_int_sext (double_int, unsigned); +double_int double_int_zext (double_int, unsigned); +# 144 "../../GCC/gcc/double-int.h" +static __inline__ unsigned char +double_int_zero_p (double_int cst) +{ + return cst.low == 0 && cst.high == 0; +} + + + +static __inline__ unsigned char +double_int_one_p (double_int cst) +{ + return cst.low == 1 && cst.high == 0; +} + + + +static __inline__ unsigned char +double_int_minus_one_p (double_int cst) +{ + return (cst.low == (~((unsigned long) 0)) && cst.high == -1); +} + + + +static __inline__ unsigned char +double_int_equal_p (double_int cst1, double_int cst2) +{ + return cst1.low == cst2.low && cst1.high == cst2.high; +} +# 615 "../../GCC/gcc/system.h" 2 +# 650 "../../GCC/gcc/system.h" + + + + + + + + + + +# 691 "../../GCC/gcc/system.h" + +# 741 "../../GCC/gcc/system.h" + +# 757 "../../GCC/gcc/system.h" + +# 767 "../../GCC/gcc/system.h" + +# 41 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/coretypes.h" 1 +# 39 "../../GCC/gcc/coretypes.h" +struct bitmap_head_def; +typedef struct bitmap_head_def *bitmap; +struct rtx_def; +typedef struct rtx_def *rtx; +struct rtvec_def; +typedef struct rtvec_def *rtvec; +union tree_node; +typedef union tree_node *tree; +union section; +typedef union section section; + + + + + +struct cpp_reader; + + + + +enum tls_model { + TLS_MODEL_NONE, + TLS_MODEL_GLOBAL_DYNAMIC, + TLS_MODEL_LOCAL_DYNAMIC, + TLS_MODEL_INITIAL_EXEC, + TLS_MODEL_LOCAL_EXEC +}; +# 42 "../../GCC/gcc/c-parser.c" 2 +# 1 "./tm.h" 1 + + + + + + +# 1 "./options.h" 1 + + + + + +extern int target_flags; + +extern int warn_abi; +extern int warn_address; +extern int warn_aggregate_return; +extern int warn_assign_intercept; +extern int warn_attributes; +extern int warn_bad_function_cast; +extern int warn_cxx_compat; +extern int warn_cast_align; +extern int warn_cast_qual; +extern int warn_char_subscripts; +extern int warn_conversion; +extern int warn_ctor_dtor_privacy; +extern int warn_declaration_after_statement; +extern int warn_deprecated; +extern int warn_deprecated_decl; +extern int warn_disabled_optimization; +extern int warn_div_by_zero; +extern int warn_ecpp; +extern int warnings_are_errors; +extern int flag_fatal_errors; +extern int warn_float_equal; +extern int warn_format_extra_args; +extern int warn_format_nonliteral; +extern int warn_format_security; +extern int warn_format_y2k; +extern int warn_format_zero_length; +extern int mesg_implicit_function_declaration; +extern int warn_implicit_int; +extern int warn_init_self; +extern int warn_inline; +extern int warn_int_to_pointer_cast; +extern int warn_invalid_offsetof; +extern int warn_long_long; +extern int warn_missing_braces; +extern int warn_missing_declarations; +extern int warn_missing_field_initializers; +extern int warn_missing_format_attribute; +extern int warn_missing_noreturn; +extern int warn_missing_prototypes; +extern int warn_nested_externs; +extern int warn_nontemplate_friend; +extern int warn_nonvdtor; +extern int warn_nonnull; +extern int warn_old_style_cast; +extern int warn_old_style_definition; +extern int warn_overflow; +extern int warn_overlength_strings; +extern int warn_overloaded_virtual; +extern int warn_override_init; +extern int warn_packed; +extern int warn_padded; +extern int warn_parentheses; +extern int warn_pmf2ptr; +extern int warn_pointer_arith; +extern int warn_pointer_sign; +extern int warn_pointer_to_int_cast; +extern int warn_pragmas; +extern int warn_protocol; +extern int warn_redundant_decls; +extern int warn_reorder; +extern int warn_return_type; +extern int warn_selector; +extern int warn_sequence_point; +extern int warn_shadow; +extern int warn_sign_compare; +extern int warn_sign_promo; +extern int warn_stack_protect; +extern int warn_strict_prototypes; +extern int warn_strict_selector_match; +extern int warn_switch; +extern int warn_switch_default; +extern int warn_switch_enum; +extern int warn_synth; +extern int warn_system_headers; +extern int warn_traditional; +extern int warn_undeclared_selector; +extern int warn_uninitialized; +extern int warn_notreached; +extern int warn_unsafe_loop_optimizations; +extern int warn_unused_function; +extern int warn_unused_label; +extern int warn_unused_parameter; +extern int warn_unused_value; +extern int warn_unused_variable; +extern int warn_register_var; +extern int warn_write_strings; +extern int flag_pic; +extern int flag_pie; +extern int flag_abi_version; +extern int align_functions; +extern int align_jumps; +extern int align_labels; +extern int align_loops; +extern int flag_argument_noalias; +extern int flag_argument_noalias; +extern int flag_argument_noalias; +extern int flag_argument_noalias; +extern int flag_asynchronous_unwind_tables; +extern int flag_bounds_check; +extern int flag_branch_on_count_reg; +extern int flag_branch_probabilities; +extern int flag_branch_target_load_optimize; +extern int flag_branch_target_load_optimize2; +extern int flag_btr_bb_exclusive; +extern int flag_caller_saves; +extern int flag_no_common; +extern int flag_cprop_registers; +extern int flag_crossjumping; +extern int flag_cse_follow_jumps; +extern int flag_cse_skip_blocks; +extern int flag_cx_limited_range; +extern int flag_data_sections; +extern int flag_defer_pop; +extern int flag_delayed_branch; +extern int flag_delete_null_pointer_checks; +extern int flag_dump_noaddr; +extern int flag_dump_unnumbered; +extern int flag_early_inlining; +extern int flag_eliminate_dwarf2_dups; +extern int flag_debug_only_used_symbols; +extern int flag_eliminate_unused_debug_types; +extern int flag_emit_class_debug_always; +extern int flag_exceptions; +extern int flag_expensive_optimizations; +extern int flag_finite_math_only; +extern int flag_float_store; +extern int flag_force_addr; +extern int flag_force_mem; +extern int flag_friend_injection; +extern int flag_no_function_cse; +extern int flag_function_sections; +extern int flag_gcse; +extern int flag_gcse_after_reload; +extern int flag_gcse_las; +extern int flag_gcse_lm; +extern int flag_gcse_sm; +extern int flag_gnu89_inline; +extern int flag_guess_branch_prob; +extern int flag_no_ident; +extern int flag_if_conversion; +extern int flag_if_conversion2; +extern int flag_inhibit_size_directive; +extern int flag_no_inline; +extern int flag_inline_functions; +extern int flag_inline_functions_called_once; +extern int flag_instrument_function_entry_exit; +extern int flag_ipa_cp; +extern int flag_ipa_pta; +extern int flag_ipa_pure_const; +extern int flag_ipa_reference; +extern int flag_ipa_type_escape; +extern int flag_ivopts; +extern int flag_jump_tables; +extern int flag_keep_inline_functions; +extern int flag_keep_static_consts; +extern int flag_leading_underscore; +extern int flag_errno_math; +extern int mem_report; +extern int flag_merge_constants; +extern int flag_merge_constants; +extern int flag_modulo_sched; +extern int flag_move_loop_invariants; +extern int flag_mudflap; +extern int flag_mudflap_ignore_reads; +extern int flag_mudflap; +extern int flag_non_call_exceptions; +extern int flag_objc_call_cxx_cdtors; +extern int flag_objc_direct_dispatch; +extern int flag_objc_exceptions; +extern int flag_objc_gc; +extern int flag_objc_sjlj_exceptions; +extern int flag_omit_frame_pointer; +extern int flag_openmp; +extern int flag_regmove; +extern int flag_optimize_sibling_calls; +extern int flag_pack_struct; +extern int flag_pcc_struct_return; +extern int flag_peel_loops; +extern int flag_no_peephole; +extern int flag_peephole2; +extern int flag_pic; +extern int flag_pie; +extern int flag_prefetch_loop_arrays; +extern int profile_flag; +extern int profile_arc_flag; +extern int flag_profile_values; +extern int flag_pcc_struct_return; +extern int flag_regmove; +extern int flag_rename_registers; +extern int flag_reorder_blocks; +extern int flag_reorder_blocks_and_partition; +extern int flag_reorder_functions; +extern int flag_rerun_cse_after_loop; +extern int flag_resched_modulo_sched; +extern int flag_rounding_math; +extern int flag_rtl_seqabstr; +extern int flag_schedule_interblock; +extern int flag_schedule_speculative; +extern int flag_schedule_speculative_load; +extern int flag_schedule_speculative_load_dangerous; +extern int flag_sched_stalled_insns; +extern int flag_sched_stalled_insns_dep; +extern int flag_sched2_use_superblocks; +extern int flag_sched2_use_traces; +extern int flag_schedule_insns; +extern int flag_schedule_insns_after_reload; +extern int flag_section_anchors; +extern int flag_see; +extern int flag_show_column; +extern int flag_signaling_nans; +extern int flag_single_precision_constant; +extern int flag_split_ivs_in_unroller; +extern int flag_stack_check; +extern int flag_stack_protect; +extern int flag_stack_protect; +extern int flag_strict_aliasing; +extern int flag_strict_overflow; +extern int flag_syntax_only; +extern int flag_test_coverage; +extern int flag_thread_jumps; +extern int time_report; +extern int flag_toplevel_reorder; +extern int flag_tracer; +extern int flag_trapping_math; +extern int flag_trapv; +extern int flag_tree_ccp; +extern int flag_tree_ch; +extern int flag_tree_combine_temps; +extern int flag_tree_copy_prop; +extern int flag_tree_copyrename; +extern int flag_tree_dce; +extern int flag_tree_dom; +extern int flag_tree_dse; +extern int flag_tree_fre; +extern int flag_tree_loop_im; +extern int flag_tree_loop_ivcanon; +extern int flag_tree_loop_linear; +extern int flag_tree_loop_optimize; +extern int flag_tree_live_range_split; +extern int flag_tree_pre; +extern int flag_tree_salias; +extern int flag_tree_sink; +extern int flag_tree_sra; +extern int flag_tree_store_ccp; +extern int flag_tree_store_copy_prop; +extern int flag_tree_ter; +extern int flag_tree_vect_loop_version; +extern int flag_tree_vectorize; +extern int flag_tree_vrp; +extern int flag_unit_at_a_time; +extern int flag_unroll_all_loops; +extern int flag_unroll_loops; +extern int flag_unsafe_loop_optimizations; +extern int flag_unsafe_math_optimizations; +extern int flag_unswitch_loops; +extern int flag_unwind_tables; +extern int flag_var_tracking; +extern int flag_variable_expansion_in_unroller; +extern int flag_verbose_asm; +extern int flag_value_profile_transformations; +extern int flag_web; +extern int flag_whole_program; +extern int flag_wrapv; +extern int flag_zero_initialized_in_bss; +extern const char *ix86_align_funcs_string; +extern const char *ix86_align_jumps_string; +extern const char *ix86_align_loops_string; +extern const char *ix86_arch_string; +extern const char *ix86_asm_string; +extern const char *ix86_branch_cost_string; +extern const char *ix86_cmodel_string; +extern int TARGET_DEBUG_ADDR; +extern int TARGET_DEBUG_ARG; +extern const char *ix86_fpmath_string; +extern int linux_uclibc; +extern const char *ix86_section_threshold_string; +extern const char *ix86_preferred_stack_boundary_string; +extern const char *ix86_regparm_string; +extern int ix86_force_align_arg_pointer; +extern const char *ix86_tls_dialect_string; +extern const char *ix86_tune_string; +extern int linux_uclibc; +extern int profile_flag; +extern int pedantic; +extern int quiet_flag; +extern int version_flag; +extern int inhibit_warnings; +# 362 "./options.h" +enum opt_code +{ + OPT__help, + OPT__output_pch_, + OPT__param, + OPT__target_help, + OPT__version, + OPT_A, + OPT_C, + OPT_CC, + OPT_D, + OPT_E, + OPT_F, + OPT_G, + OPT_H, + OPT_I, + OPT_M, + OPT_MD, + OPT_MF, + OPT_MG, + OPT_MM, + OPT_MMD, + OPT_MP, + OPT_MQ, + OPT_MT, + OPT_O, + OPT_Os, + OPT_P, + OPT_U, + OPT_W, + OPT_Wabi, + OPT_Waddress, + OPT_Waggregate_return, + OPT_Wall, + OPT_Wassign_intercept, + OPT_Wattributes, + OPT_Wbad_function_cast, + OPT_Wc___compat, + OPT_Wcast_align, + OPT_Wcast_qual, + OPT_Wchar_subscripts, + OPT_Wcomment, + OPT_Wcomments, + OPT_Wconversion, + OPT_Wctor_dtor_privacy, + OPT_Wdeclaration_after_statement, + OPT_Wdeprecated, + OPT_Wdeprecated_declarations, + OPT_Wdisabled_optimization, + OPT_Wdiv_by_zero, + OPT_Weffc__, + OPT_Wendif_labels, + OPT_Werror, + OPT_Werror_implicit_function_declaration, + OPT_Werror_, + OPT_Wextra, + OPT_Wfatal_errors, + OPT_Wfloat_equal, + OPT_Wformat, + OPT_Wformat_extra_args, + OPT_Wformat_nonliteral, + OPT_Wformat_security, + OPT_Wformat_y2k, + OPT_Wformat_zero_length, + OPT_Wformat_, + OPT_Wimplicit, + OPT_Wimplicit_function_declaration, + OPT_Wimplicit_int, + OPT_Wimport, + OPT_Winit_self, + OPT_Winline, + OPT_Wint_to_pointer_cast, + OPT_Winvalid_offsetof, + OPT_Winvalid_pch, + OPT_Wlarger_than_, + OPT_Wlong_long, + OPT_Wmain, + OPT_Wmissing_braces, + OPT_Wmissing_declarations, + OPT_Wmissing_field_initializers, + OPT_Wmissing_format_attribute, + OPT_Wmissing_include_dirs, + OPT_Wmissing_noreturn, + OPT_Wmissing_prototypes, + OPT_Wmultichar, + OPT_Wnested_externs, + OPT_Wnon_template_friend, + OPT_Wnon_virtual_dtor, + OPT_Wnonnull, + OPT_Wnormalized_, + OPT_Wold_style_cast, + OPT_Wold_style_definition, + OPT_Woverflow, + OPT_Woverlength_strings, + OPT_Woverloaded_virtual, + OPT_Woverride_init, + OPT_Wpacked, + OPT_Wpadded, + OPT_Wparentheses, + OPT_Wpmf_conversions, + OPT_Wpointer_arith, + OPT_Wpointer_sign, + OPT_Wpointer_to_int_cast, + OPT_Wpragmas, + OPT_Wprotocol, + OPT_Wredundant_decls, + OPT_Wreorder, + OPT_Wreturn_type, + OPT_Wselector, + OPT_Wsequence_point, + OPT_Wshadow, + OPT_Wsign_compare, + OPT_Wsign_promo, + OPT_Wstack_protector, + OPT_Wstrict_aliasing, + OPT_Wstrict_aliasing_, + OPT_Wstrict_null_sentinel, + OPT_Wstrict_overflow, + OPT_Wstrict_overflow_, + OPT_Wstrict_prototypes, + OPT_Wstrict_selector_match, + OPT_Wswitch, + OPT_Wswitch_default, + OPT_Wswitch_enum, + OPT_Wsynth, + OPT_Wsystem_headers, + OPT_Wtraditional, + OPT_Wtrigraphs, + OPT_Wundeclared_selector, + OPT_Wundef, + OPT_Wuninitialized, + OPT_Wunknown_pragmas, + OPT_Wunreachable_code, + OPT_Wunsafe_loop_optimizations, + OPT_Wunused, + OPT_Wunused_function, + OPT_Wunused_label, + OPT_Wunused_macros, + OPT_Wunused_parameter, + OPT_Wunused_value, + OPT_Wunused_variable, + OPT_Wvariadic_macros, + OPT_Wvolatile_register_var, + OPT_Wwrite_strings, + OPT_ansi, + OPT_aux_info, + OPT_aux_info_, + OPT_auxbase, + OPT_auxbase_strip, + OPT_d, + OPT_dumpbase, + OPT_fPIC, + OPT_fPIE, + OPT_fabi_version_, + OPT_faccess_control, + OPT_falign_functions, + OPT_falign_functions_, + OPT_falign_jumps, + OPT_falign_jumps_, + OPT_falign_labels, + OPT_falign_labels_, + OPT_falign_loops, + OPT_falign_loops_, + OPT_fall_virtual, + OPT_falt_external_templates, + OPT_fargument_alias, + OPT_fargument_noalias, + OPT_fargument_noalias_anything, + OPT_fargument_noalias_global, + OPT_fasm, + OPT_fasynchronous_unwind_tables, + OPT_fbounds_check, + OPT_fbranch_count_reg, + OPT_fbranch_probabilities, + OPT_fbranch_target_load_optimize, + OPT_fbranch_target_load_optimize2, + OPT_fbtr_bb_exclusive, + OPT_fbuiltin, + OPT_fbuiltin_, + OPT_fcall_saved_, + OPT_fcall_used_, + OPT_fcaller_saves, + OPT_fcheck_new, + OPT_fcommon, + OPT_fcond_mismatch, + OPT_fconserve_space, + OPT_fconstant_string_class_, + OPT_fcprop_registers, + OPT_fcrossjumping, + OPT_fcse_follow_jumps, + OPT_fcse_skip_blocks, + OPT_fcx_limited_range, + OPT_fdata_sections, + OPT_fdefault_inline, + OPT_fdefer_pop, + OPT_fdelayed_branch, + OPT_fdelete_null_pointer_checks, + OPT_fdiagnostics_show_location_, + OPT_fdiagnostics_show_option, + OPT_fdollars_in_identifiers, + OPT_fdump_, + OPT_fdump_noaddr, + OPT_fdump_unnumbered, + OPT_fearly_inlining, + OPT_felide_constructors, + OPT_feliminate_dwarf2_dups, + OPT_feliminate_unused_debug_symbols, + OPT_feliminate_unused_debug_types, + OPT_femit_class_debug_always, + OPT_fenforce_eh_specs, + OPT_fenum_int_equiv, + OPT_fexceptions, + OPT_fexec_charset_, + OPT_fexpensive_optimizations, + OPT_fextended_identifiers, + OPT_fexternal_templates, + OPT_ffast_math, + OPT_ffinite_math_only, + OPT_ffixed_, + OPT_ffloat_store, + OPT_ffor_scope, + OPT_fforce_addr, + OPT_fforce_mem, + OPT_ffreestanding, + OPT_ffriend_injection, + OPT_ffunction_cse, + OPT_ffunction_sections, + OPT_fgcse, + OPT_fgcse_after_reload, + OPT_fgcse_las, + OPT_fgcse_lm, + OPT_fgcse_sm, + OPT_fgnu_keywords, + OPT_fgnu_runtime, + OPT_fgnu89_inline, + OPT_fguess_branch_probability, + OPT_fguiding_decls, + OPT_fhandle_exceptions, + OPT_fhonor_std, + OPT_fhosted, + OPT_fhuge_objects, + OPT_fident, + OPT_fif_conversion, + OPT_fif_conversion2, + OPT_fimplement_inlines, + OPT_fimplicit_inline_templates, + OPT_fimplicit_templates, + OPT_finhibit_size_directive, + OPT_finline, + OPT_finline_functions, + OPT_finline_functions_called_once, + OPT_finline_limit_, + OPT_finline_limit_eq, + OPT_finput_charset_, + OPT_finstrument_functions, + OPT_fipa_cp, + OPT_fipa_pta, + OPT_fipa_pure_const, + OPT_fipa_reference, + OPT_fipa_type_escape, + OPT_fivopts, + OPT_fjump_tables, + OPT_fkeep_inline_functions, + OPT_fkeep_static_consts, + OPT_flabels_ok, + OPT_fleading_underscore, + OPT_flexer_trace, + OPT_floop_optimize, + OPT_fmath_errno, + OPT_fmem_report, + OPT_fmerge_all_constants, + OPT_fmerge_constants, + OPT_fmessage_length_, + OPT_fmodulo_sched, + OPT_fmove_loop_invariants, + OPT_fms_extensions, + OPT_fmudflap, + OPT_fmudflapir, + OPT_fmudflapth, + OPT_fname_mangling_version_, + OPT_fnew_abi, + OPT_fnext_runtime, + OPT_fnil_receivers, + OPT_fnon_call_exceptions, + OPT_fnonansi_builtins, + OPT_fnonnull_objects, + OPT_fobjc_call_cxx_cdtors, + OPT_fobjc_direct_dispatch, + OPT_fobjc_exceptions, + OPT_fobjc_gc, + OPT_fobjc_sjlj_exceptions, + OPT_fomit_frame_pointer, + OPT_fopenmp, + OPT_foperator_names, + OPT_foptimize_register_move, + OPT_foptimize_sibling_calls, + OPT_foptional_diags, + OPT_fpack_struct, + OPT_fpack_struct_, + OPT_fparser_trace, + OPT_fpcc_struct_return, + OPT_fpch_deps, + OPT_fpch_preprocess, + OPT_fpeel_loops, + OPT_fpeephole, + OPT_fpeephole2, + OPT_fpermissive, + OPT_fpic, + OPT_fpie, + OPT_fprefetch_loop_arrays, + OPT_fpreprocessed, + OPT_fprofile, + OPT_fprofile_arcs, + OPT_fprofile_generate, + OPT_fprofile_use, + OPT_fprofile_values, + OPT_frandom_seed, + OPT_frandom_seed_, + OPT_freg_struct_return, + OPT_fregmove, + OPT_frename_registers, + OPT_freorder_blocks, + OPT_freorder_blocks_and_partition, + OPT_freorder_functions, + OPT_freplace_objc_classes, + OPT_frepo, + OPT_frerun_cse_after_loop, + OPT_frerun_loop_opt, + OPT_freschedule_modulo_scheduled_loops, + OPT_frounding_math, + OPT_frtl_abstract_sequences, + OPT_frtti, + OPT_fsched_interblock, + OPT_fsched_spec, + OPT_fsched_spec_load, + OPT_fsched_spec_load_dangerous, + OPT_fsched_stalled_insns, + OPT_fsched_stalled_insns_dep, + OPT_fsched_stalled_insns_dep_, + OPT_fsched_stalled_insns_, + OPT_fsched_verbose_, + OPT_fsched2_use_superblocks, + OPT_fsched2_use_traces, + OPT_fschedule_insns, + OPT_fschedule_insns2, + OPT_fsection_anchors, + OPT_fsee, + OPT_fshort_double, + OPT_fshort_enums, + OPT_fshort_wchar, + OPT_fshow_column, + OPT_fsignaling_nans, + OPT_fsigned_bitfields, + OPT_fsigned_char, + OPT_fsingle_precision_constant, + OPT_fsplit_ivs_in_unroller, + OPT_fsquangle, + OPT_fstack_check, + OPT_fstack_limit, + OPT_fstack_limit_register_, + OPT_fstack_limit_symbol_, + OPT_fstack_protector, + OPT_fstack_protector_all, + OPT_fstats, + OPT_fstrength_reduce, + OPT_fstrict_aliasing, + OPT_fstrict_overflow, + OPT_fstrict_prototype, + OPT_fsyntax_only, + OPT_ftabstop_, + OPT_ftemplate_depth_, + OPT_ftest_coverage, + OPT_fthis_is_variable, + OPT_fthread_jumps, + OPT_fthreadsafe_statics, + OPT_ftime_report, + OPT_ftls_model_, + OPT_ftoplevel_reorder, + OPT_ftracer, + OPT_ftrapping_math, + OPT_ftrapv, + OPT_ftree_ccp, + OPT_ftree_ch, + OPT_ftree_combine_temps, + OPT_ftree_copy_prop, + OPT_ftree_copyrename, + OPT_ftree_dce, + OPT_ftree_dominator_opts, + OPT_ftree_dse, + OPT_ftree_fre, + OPT_ftree_loop_im, + OPT_ftree_loop_ivcanon, + OPT_ftree_loop_linear, + OPT_ftree_loop_optimize, + OPT_ftree_lrs, + OPT_ftree_pre, + OPT_ftree_salias, + OPT_ftree_sink, + OPT_ftree_sra, + OPT_ftree_store_ccp, + OPT_ftree_store_copy_prop, + OPT_ftree_ter, + OPT_ftree_vect_loop_version, + OPT_ftree_vectorize, + OPT_ftree_vectorizer_verbose_, + OPT_ftree_vrp, + OPT_funit_at_a_time, + OPT_funroll_all_loops, + OPT_funroll_loops, + OPT_funsafe_loop_optimizations, + OPT_funsafe_math_optimizations, + OPT_funsigned_bitfields, + OPT_funsigned_char, + OPT_funswitch_loops, + OPT_funwind_tables, + OPT_fuse_cxa_atexit, + OPT_fuse_cxa_get_exception_ptr, + OPT_fvar_tracking, + OPT_fvariable_expansion_in_unroller, + OPT_fverbose_asm, + OPT_fvisibility_inlines_hidden, + OPT_fvisibility_, + OPT_fvpt, + OPT_fvtable_gc, + OPT_fvtable_thunks, + OPT_fweak, + OPT_fweb, + OPT_fwhole_program, + OPT_fwide_exec_charset_, + OPT_fworking_directory, + OPT_fwrapv, + OPT_fxref, + OPT_fzero_initialized_in_bss, + OPT_fzero_link, + OPT_g, + OPT_gcoff, + OPT_gdwarf_2, + OPT_gen_decls, + OPT_ggdb, + OPT_gstabs, + OPT_gstabs_, + OPT_gvms, + OPT_gxcoff, + OPT_gxcoff_, + OPT_idirafter, + OPT_imacros, + OPT_imultilib, + OPT_include, + OPT_iprefix, + OPT_iquote, + OPT_isysroot, + OPT_isystem, + OPT_iwithprefix, + OPT_iwithprefixbefore, + OPT_lang_asm, + OPT_lang_fortran, + OPT_lang_objc, + OPT_m128bit_long_double, + OPT_m32, + OPT_m386, + OPT_m3dnow, + OPT_m486, + OPT_m64, + OPT_m80387, + OPT_m96bit_long_double, + OPT_maccumulate_outgoing_args, + OPT_malign_double, + OPT_malign_functions_, + OPT_malign_jumps_, + OPT_malign_loops_, + OPT_malign_stringops, + OPT_march_, + OPT_masm_, + OPT_mbranch_cost_, + OPT_mcmodel_, + OPT_mdebug_addr, + OPT_mdebug_arg, + OPT_mfancy_math_387, + OPT_mfp_ret_in_387, + OPT_mfpmath_, + OPT_mglibc, + OPT_mhard_float, + OPT_mieee_fp, + OPT_minline_all_stringops, + OPT_mintel_syntax, + OPT_mlarge_data_threshold_, + OPT_mmmx, + OPT_mms_bitfields, + OPT_mno_align_stringops, + OPT_mno_fancy_math_387, + OPT_mno_push_args, + OPT_mno_red_zone, + OPT_momit_leaf_frame_pointer, + OPT_mpentium, + OPT_mpentiumpro, + OPT_mpreferred_stack_boundary_, + OPT_mpush_args, + OPT_mred_zone, + OPT_mregparm_, + OPT_mrtd, + OPT_msoft_float, + OPT_msse, + OPT_msse2, + OPT_msse3, + OPT_msseregparm, + OPT_mstack_arg_probe, + OPT_mstackrealign, + OPT_msvr3_shlib, + OPT_mtls_dialect_, + OPT_mtls_direct_seg_refs, + OPT_mtune_, + OPT_muclibc, + OPT_nostdinc, + OPT_nostdinc__, + OPT_o, + OPT_p, + OPT_pedantic, + OPT_pedantic_errors, + OPT_print_objc_runtime_info, + OPT_print_pch_checksum, + OPT_quiet, + OPT_remap, + OPT_std_c__98, + OPT_std_c89, + OPT_std_c99, + OPT_std_c9x, + OPT_std_gnu__98, + OPT_std_gnu89, + OPT_std_gnu99, + OPT_std_gnu9x, + OPT_std_iso9899_1990, + OPT_std_iso9899_199409, + OPT_std_iso9899_1999, + OPT_std_iso9899_199x, + OPT_traditional_cpp, + OPT_trigraphs, + OPT_undef, + OPT_v, + OPT_version, + OPT_w, + OPT_y, + N_OPTS +}; +# 8 "./tm.h" 2 +# 1 "../../GCC/gcc/config/i386/i386.h" 1 +# 38 "../../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; +# 143 "../../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_himode_fiop, x86_use_simode_fiop; +extern const int x86_use_mov0, 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_split_regs; +extern const int x86_sse_typeless_stores, x86_sse_load0_by_pxor; +extern const int x86_use_ffreep; +extern const int x86_inter_unit_moves, x86_schedule; +extern const int x86_use_bt; +extern const int x86_cmpxchg, x86_cmpxchg8b, x86_cmpxchg16b, x86_xadd; +extern const int x86_use_incdec; +extern const int x86_pad_returns; +extern const int x86_partial_flag_reg_stall; +extern int x86_prefetch_sse; +# 281 "../../GCC/gcc/config/i386/i386.h" +extern const char *host_detect_local_cpu (int argc, const char **argv); +# 1065 "../../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 +}; +# 1426 "../../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; + int float_in_sse; + +} CUMULATIVE_ARGS; +# 1955 "../../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]; +# 2071 "../../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_GENERIC32, + PROCESSOR_GENERIC64, + PROCESSOR_max +}; + +extern enum processor_type ix86_tune; +extern enum processor_type ix86_arch; + +enum fpmath_unit +{ + FPMATH_387 = 1, + FPMATH_SSE = 2 +}; + +extern enum fpmath_unit ix86_fpmath; + +enum tls_dialect +{ + TLS_DIALECT_GNU, + TLS_DIALECT_GNU2, + TLS_DIALECT_SUN +}; + +extern enum tls_dialect ix86_tls_dialect; + +enum cmodel { + CM_32, + CM_SMALL, + CM_KERNEL, + CM_MEDIUM, + CM_LARGE, + CM_SMALL_PIC, + CM_MEDIUM_PIC +}; + +extern enum cmodel ix86_cmodel; + + + + + + +enum asm_dialect { + ASM_ATT, + ASM_INTEL +}; + +extern enum asm_dialect ix86_asm_dialect; +extern unsigned int ix86_preferred_stack_boundary; +extern int ix86_branch_cost, ix86_section_threshold; + + +extern enum reg_class const regclass_map[53]; + +extern rtx ix86_compare_op0; +extern rtx ix86_compare_op1; +extern rtx ix86_compare_emitted; +# 2155 "../../GCC/gcc/config/i386/i386.h" +enum ix86_entity +{ + I387_TRUNC = 0, + I387_FLOOR, + I387_CEIL, + I387_MASK_PM, + MAX_386_ENTITIES +}; + +enum ix86_stack_slot +{ + SLOT_VIRTUAL = 0, + SLOT_TEMP, + SLOT_CW_STORED, + SLOT_CW_TRUNC, + SLOT_CW_FLOOR, + SLOT_CW_CEIL, + SLOT_CW_MASK_PM, + MAX_386_STACK_LOCALS +}; +# 2230 "../../GCC/gcc/config/i386/i386.h" +struct machine_function +{ + struct stack_local_entry *stack_locals; + const char *some_ld_name; + rtx force_align_arg_pointer; + int save_varrargs_registers; + int accesses_prev_frame; + int optimize_mode_switching[MAX_386_ENTITIES]; + + + int use_fast_prologue_epilogue; + + + int use_fast_prologue_epilogue_nregs; +# 2253 "../../GCC/gcc/config/i386/i386.h" + int tls_descriptor_call_expanded_p; +}; +# 9 "./tm.h" 2 +# 1 "../../GCC/gcc/config/i386/unix.h" 1 +# 10 "./tm.h" 2 +# 1 "../../GCC/gcc/config/i386/att.h" 1 +# 11 "./tm.h" 2 +# 1 "../../GCC/gcc/config/dbxelf.h" 1 +# 12 "./tm.h" 2 +# 1 "../../GCC/gcc/config/elfos.h" 1 +# 13 "./tm.h" 2 +# 1 "../../GCC/gcc/config/svr4.h" 1 +# 14 "./tm.h" 2 +# 1 "../../GCC/gcc/config/linux.h" 1 +# 15 "./tm.h" 2 +# 1 "../../GCC/gcc/config/i386/linux.h" 1 +# 16 "./tm.h" 2 +# 1 "../../GCC/gcc/defaults.h" 1 +# 741 "../../GCC/gcc/defaults.h" + +# 17 "./tm.h" 2 + + +# 1 "./insn-constants.h" 1 +# 20 "./tm.h" 2 +# 1 "./insn-flags.h" 1 +# 1102 "./insn-flags.h" +static __inline__ rtx gen_cmpdi_ccno_1_rex64 (rtx, rtx); +static __inline__ rtx +gen_cmpdi_ccno_1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_cmpdi_1_insn_rex64 (rtx, rtx); +static __inline__ rtx +gen_cmpdi_1_insn_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_cmpqi_ext_3_insn (rtx, rtx); +static __inline__ rtx gen_cmpqi_ext_3_insn_rex64 (rtx, rtx); +static __inline__ rtx +gen_cmpqi_ext_3_insn_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_x86_fnstsw_1 (rtx); +extern rtx gen_x86_sahf_1 (rtx); +extern rtx gen_popsi1 (rtx); +extern rtx gen_movsi_insv_1 (rtx, rtx); +static __inline__ rtx gen_movdi_insv_1_rex64 (rtx, rtx); +static __inline__ rtx +gen_movdi_insv_1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_popdi1 (rtx); +static __inline__ rtx +gen_popdi1(rtx a __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_swapxf (rtx, rtx); +extern rtx gen_zero_extendhisi2_and (rtx, rtx); +extern rtx gen_zero_extendsidi2_32 (rtx, rtx); +static __inline__ rtx gen_zero_extendsidi2_rex64 (rtx, rtx); +static __inline__ rtx +gen_zero_extendsidi2_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_zero_extendhidi2 (rtx, rtx); +static __inline__ rtx +gen_zero_extendhidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_zero_extendqidi2 (rtx, rtx); +static __inline__ rtx +gen_zero_extendqidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_extendsidi2_rex64 (rtx, rtx); +static __inline__ rtx +gen_extendsidi2_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_extendhidi2 (rtx, rtx); +static __inline__ rtx +gen_extendhidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_extendqidi2 (rtx, rtx); +static __inline__ rtx +gen_extendqidi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_extendhisi2 (rtx, rtx); +extern rtx gen_extendqihi2 (rtx, rtx); +extern rtx gen_extendqisi2 (rtx, rtx); +extern rtx gen_truncxfsf2_i387_noop (rtx, rtx); +extern rtx gen_truncxfdf2_i387_noop (rtx, rtx); +static __inline__ rtx gen_fix_truncsfdi_sse (rtx, rtx); +static __inline__ rtx +gen_fix_truncsfdi_sse(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_fix_truncdfdi_sse (rtx, rtx); +static __inline__ rtx +gen_fix_truncdfdi_sse(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_fix_truncsfsi_sse (rtx, rtx); +extern rtx gen_fix_truncdfsi_sse (rtx, rtx); +extern rtx gen_fix_trunchi_fisttp_i387_1 (rtx, rtx); +extern rtx gen_fix_truncsi_fisttp_i387_1 (rtx, rtx); +extern rtx gen_fix_truncdi_fisttp_i387_1 (rtx, rtx); +extern rtx gen_fix_trunchi_i387_fisttp (rtx, rtx); +extern rtx gen_fix_truncsi_i387_fisttp (rtx, rtx); +extern rtx gen_fix_truncdi_i387_fisttp (rtx, rtx); +extern rtx gen_fix_trunchi_i387_fisttp_with_temp (rtx, rtx, rtx); +extern rtx gen_fix_truncsi_i387_fisttp_with_temp (rtx, rtx, rtx); +extern rtx gen_fix_truncdi_i387_fisttp_with_temp (rtx, rtx, rtx); +extern rtx gen_fix_truncdi_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_fix_truncdi_i387_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_fix_trunchi_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_fix_truncsi_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_fix_trunchi_i387_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_fix_truncsi_i387_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_x86_fnstcw_1 (rtx); +extern rtx gen_x86_fldcw_1 (rtx); +extern rtx gen_floathixf2 (rtx, rtx); +extern rtx gen_floatsixf2 (rtx, rtx); +extern rtx gen_floatdixf2 (rtx, rtx); +static __inline__ rtx gen_adddi3_carry_rex64 (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_adddi3_carry_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_addqi3_carry (rtx, rtx, rtx, rtx); +extern rtx gen_addhi3_carry (rtx, rtx, rtx, rtx); +extern rtx gen_addsi3_carry (rtx, rtx, rtx, rtx); +extern rtx gen_addqi3_cc (rtx, rtx, rtx); +static __inline__ rtx gen_addsi_1_zext (rtx, rtx, rtx); +static __inline__ rtx +gen_addsi_1_zext(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_addqi_ext_1 (rtx, rtx, rtx); +static __inline__ rtx gen_subdi3_carry_rex64 (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_subdi3_carry_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_subqi3_carry (rtx, rtx, rtx, rtx); +extern rtx gen_subhi3_carry (rtx, rtx, rtx, rtx); +extern rtx gen_subsi3_carry (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_subsi3_carry_zext (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_subsi3_carry_zext(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_divqi3 (rtx, rtx, rtx); +extern rtx gen_udivqi3 (rtx, rtx, rtx); +extern rtx gen_divmodhi4 (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_udivmoddi4 (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_udivmoddi4(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_udivmodsi4 (rtx, rtx, rtx, rtx); +extern rtx gen_testsi_1 (rtx, rtx); +extern rtx gen_andqi_ext_0 (rtx, rtx, rtx); +extern rtx gen_iorqi_ext_0 (rtx, rtx, rtx); +extern rtx gen_xorqi_ext_0 (rtx, rtx, rtx); +extern rtx gen_copysignsf3_const (rtx, rtx, rtx, rtx); +extern rtx gen_copysignsf3_var (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_copysigndf3_const (rtx, rtx, rtx, rtx); +extern rtx gen_copysigndf3_var (rtx, rtx, rtx, rtx, rtx, rtx); +static __inline__ rtx gen_ashlti3_1 (rtx, rtx, rtx); +static __inline__ rtx +gen_ashlti3_1(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_x86_64_shld (rtx, rtx, rtx); +static __inline__ rtx +gen_x86_64_shld(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_x86_shld_1 (rtx, rtx, rtx); +static __inline__ rtx gen_ashrti3_1 (rtx, rtx, rtx); +static __inline__ rtx +gen_ashrti3_1(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_x86_64_shrd (rtx, rtx, rtx); +static __inline__ rtx +gen_x86_64_shrd(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_x86_shrd_1 (rtx, rtx, rtx); +extern rtx gen_ashrsi3_31 (rtx, rtx, rtx); +static __inline__ rtx gen_lshrti3_1 (rtx, rtx, rtx); +static __inline__ rtx +gen_lshrti3_1(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_ix86_rotldi3 (rtx, rtx, rtx); +extern rtx gen_ix86_rotrdi3 (rtx, rtx, rtx); +extern rtx gen_jump (rtx); +extern rtx gen_blockage (rtx); +extern rtx gen_return_internal (void); +extern rtx gen_return_internal_long (void); +extern rtx gen_return_pop_internal (rtx); +extern rtx gen_return_indirect_internal (rtx); +extern rtx gen_nop (void); +extern rtx gen_align (rtx); +extern rtx gen_set_got (rtx); +extern rtx gen_set_got_labelled (rtx, rtx); +static __inline__ rtx gen_set_got_rex64 (rtx); +static __inline__ rtx +gen_set_got_rex64(rtx a __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_eh_return_si (rtx); +static __inline__ rtx gen_eh_return_di (rtx); +static __inline__ rtx +gen_eh_return_di(rtx a __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_leave (void); +static __inline__ rtx gen_leave_rex64 (void); +static __inline__ rtx +gen_leave_rex64(void) +{ + return 0; +} +extern rtx gen_ctzsi2 (rtx, rtx); +static __inline__ rtx gen_ctzdi2 (rtx, rtx); +static __inline__ rtx +gen_ctzdi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sqrtxf2 (rtx, rtx); +extern rtx gen_fpremxf4 (rtx, rtx, rtx, rtx); +extern rtx gen_fprem1xf4 (rtx, rtx, rtx, rtx); +extern rtx gen_sincosdf3 (rtx, rtx, rtx); +extern rtx gen_sincossf3 (rtx, rtx, rtx); +extern rtx gen_sincosxf3 (rtx, rtx, rtx); +extern rtx gen_atan2df3_1 (rtx, rtx, rtx); +extern rtx gen_atan2sf3_1 (rtx, rtx, rtx); +extern rtx gen_atan2xf3_1 (rtx, rtx, rtx); +extern rtx gen_fyl2x_xf3 (rtx, rtx, rtx); +extern rtx gen_fyl2xp1_xf3 (rtx, rtx, rtx); +extern rtx gen_frndintxf2 (rtx, rtx); +extern rtx gen_fistdi2 (rtx, rtx); +extern rtx gen_fistdi2_with_temp (rtx, rtx, rtx); +extern rtx gen_fisthi2 (rtx, rtx); +extern rtx gen_fistsi2 (rtx, rtx); +extern rtx gen_fisthi2_with_temp (rtx, rtx, rtx); +extern rtx gen_fistsi2_with_temp (rtx, rtx, rtx); +extern rtx gen_frndintxf2_floor (rtx, rtx); +extern rtx gen_frndintxf2_floor_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_fistdi2_floor (rtx, rtx, rtx, rtx); +extern rtx gen_fistdi2_floor_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_fisthi2_floor (rtx, rtx, rtx, rtx); +extern rtx gen_fistsi2_floor (rtx, rtx, rtx, rtx); +extern rtx gen_fisthi2_floor_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_fistsi2_floor_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_frndintxf2_ceil (rtx, rtx); +extern rtx gen_frndintxf2_ceil_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_fistdi2_ceil (rtx, rtx, rtx, rtx); +extern rtx gen_fistdi2_ceil_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_fisthi2_ceil (rtx, rtx, rtx, rtx); +extern rtx gen_fistsi2_ceil (rtx, rtx, rtx, rtx); +extern rtx gen_fisthi2_ceil_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_fistsi2_ceil_with_temp (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_frndintxf2_trunc (rtx, rtx); +extern rtx gen_frndintxf2_trunc_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_frndintxf2_mask_pm (rtx, rtx); +extern rtx gen_frndintxf2_mask_pm_i387 (rtx, rtx, rtx, rtx); +extern rtx gen_cld (void); +static __inline__ rtx gen_x86_movdicc_0_m1_rex64 (rtx, rtx); +static __inline__ rtx +gen_x86_movdicc_0_m1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_x86_movsicc_0_m1 (rtx, rtx); +extern rtx gen_sminsf3 (rtx, rtx, rtx); +extern rtx gen_smaxsf3 (rtx, rtx, rtx); +extern rtx gen_smindf3 (rtx, rtx, rtx); +extern rtx gen_smaxdf3 (rtx, rtx, rtx); +extern rtx gen_pro_epilogue_adjust_stack_1 (rtx, rtx, rtx); +static __inline__ rtx gen_pro_epilogue_adjust_stack_rex64 (rtx, rtx, rtx); +static __inline__ rtx +gen_pro_epilogue_adjust_stack_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_pro_epilogue_adjust_stack_rex64_2 (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_pro_epilogue_adjust_stack_rex64_2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_allocate_stack_worker_1 (rtx); +static __inline__ rtx gen_allocate_stack_worker_rex64 (rtx); +static __inline__ rtx +gen_allocate_stack_worker_rex64(rtx a __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_trap (void); +extern rtx gen_stack_protect_set_si (rtx, rtx); +static __inline__ rtx gen_stack_protect_set_di (rtx, rtx); +static __inline__ rtx +gen_stack_protect_set_di(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_stack_tls_protect_set_si (rtx, rtx); +static __inline__ rtx gen_stack_tls_protect_set_di (rtx, rtx); +static __inline__ rtx +gen_stack_tls_protect_set_di(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_stack_protect_test_si (rtx, rtx, rtx); +static __inline__ rtx gen_stack_protect_test_di (rtx, rtx, rtx); +static __inline__ rtx +gen_stack_protect_test_di(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_stack_tls_protect_test_si (rtx, rtx, rtx); +static __inline__ rtx gen_stack_tls_protect_test_di (rtx, rtx, rtx); +static __inline__ rtx +gen_stack_tls_protect_test_di(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse_movups (rtx, rtx); +extern rtx gen_sse2_movupd (rtx, rtx); +extern rtx gen_sse2_movdqu (rtx, rtx); +extern rtx gen_sse_movntv4sf (rtx, rtx); +extern rtx gen_sse2_movntv2df (rtx, rtx); +extern rtx gen_sse2_movntv2di (rtx, rtx); +extern rtx gen_sse2_movntsi (rtx, rtx); +extern rtx gen_sse3_lddqu (rtx, rtx); +extern rtx gen_sse_vmaddv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_vmsubv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_vmmulv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_vmdivv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_rcpv4sf2 (rtx, rtx); +extern rtx gen_sse_vmrcpv4sf2 (rtx, rtx, rtx); +extern rtx gen_sse_rsqrtv4sf2 (rtx, rtx); +extern rtx gen_sse_vmrsqrtv4sf2 (rtx, rtx, rtx); +extern rtx gen_sqrtv4sf2 (rtx, rtx); +extern rtx gen_sse_vmsqrtv4sf2 (rtx, rtx, rtx); +extern rtx gen_sse_vmsmaxv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_vmsminv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse3_addsubv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse3_haddv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse3_hsubv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_maskcmpv4sf3 (rtx, rtx, rtx, rtx); +extern rtx gen_sse_vmmaskcmpv4sf3 (rtx, rtx, rtx, rtx); +extern rtx gen_sse_comi (rtx, rtx); +extern rtx gen_sse_ucomi (rtx, rtx); +extern rtx gen_sse_nandv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_cvtpi2ps (rtx, rtx, rtx); +extern rtx gen_sse_cvtps2pi (rtx, rtx); +extern rtx gen_sse_cvttps2pi (rtx, rtx); +extern rtx gen_sse_cvtsi2ss (rtx, rtx, rtx); +static __inline__ rtx gen_sse_cvtsi2ssq (rtx, rtx, rtx); +static __inline__ rtx +gen_sse_cvtsi2ssq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse_cvtss2si (rtx, rtx); +static __inline__ rtx gen_sse_cvtss2siq (rtx, rtx); +static __inline__ rtx +gen_sse_cvtss2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse_cvttss2si (rtx, rtx); +static __inline__ rtx gen_sse_cvttss2siq (rtx, rtx); +static __inline__ rtx +gen_sse_cvttss2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse2_cvtdq2ps (rtx, rtx); +extern rtx gen_sse2_cvtps2dq (rtx, rtx); +extern rtx gen_sse2_cvttps2dq (rtx, rtx); +extern rtx gen_sse_movhlps (rtx, rtx, rtx); +extern rtx gen_sse_movlhps (rtx, rtx, rtx); +extern rtx gen_sse_unpckhps (rtx, rtx, rtx); +extern rtx gen_sse_unpcklps (rtx, rtx, rtx); +extern rtx gen_sse3_movshdup (rtx, rtx); +extern rtx gen_sse3_movsldup (rtx, rtx); +extern rtx gen_sse_shufps_1 (rtx, rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_sse_storehps (rtx, rtx); +extern rtx gen_sse_loadhps (rtx, rtx, rtx); +extern rtx gen_sse_storelps (rtx, rtx); +extern rtx gen_sse_loadlps (rtx, rtx, rtx); +extern rtx gen_sse_movss (rtx, rtx, rtx); +extern rtx gen_sse2_vmaddv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_vmsubv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_vmmulv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_vmdivv2df3 (rtx, rtx, rtx); +extern rtx gen_sqrtv2df2 (rtx, rtx); +extern rtx gen_sse2_vmsqrtv2df2 (rtx, rtx, rtx); +extern rtx gen_sse2_vmsmaxv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_vmsminv2df3 (rtx, rtx, rtx); +extern rtx gen_sse3_addsubv2df3 (rtx, rtx, rtx); +extern rtx gen_sse3_haddv2df3 (rtx, rtx, rtx); +extern rtx gen_sse3_hsubv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_maskcmpv2df3 (rtx, rtx, rtx, rtx); +extern rtx gen_sse2_vmmaskcmpv2df3 (rtx, rtx, rtx, rtx); +extern rtx gen_sse2_comi (rtx, rtx); +extern rtx gen_sse2_ucomi (rtx, rtx); +extern rtx gen_sse2_nandv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_cvtpi2pd (rtx, rtx); +extern rtx gen_sse2_cvtpd2pi (rtx, rtx); +extern rtx gen_sse2_cvttpd2pi (rtx, rtx); +extern rtx gen_sse2_cvtsi2sd (rtx, rtx, rtx); +static __inline__ rtx gen_sse2_cvtsi2sdq (rtx, rtx, rtx); +static __inline__ rtx +gen_sse2_cvtsi2sdq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse2_cvtsd2si (rtx, rtx); +static __inline__ rtx gen_sse2_cvtsd2siq (rtx, rtx); +static __inline__ rtx +gen_sse2_cvtsd2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse2_cvttsd2si (rtx, rtx); +static __inline__ rtx gen_sse2_cvttsd2siq (rtx, rtx); +static __inline__ rtx +gen_sse2_cvttsd2siq(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse2_cvtdq2pd (rtx, rtx); +extern rtx gen_sse2_cvtsd2ss (rtx, rtx, rtx); +extern rtx gen_sse2_cvtss2sd (rtx, rtx, rtx); +extern rtx gen_sse2_cvtps2pd (rtx, rtx); +extern rtx gen_sse2_unpckhpd (rtx, rtx, rtx); +extern rtx gen_sse2_unpcklpd (rtx, rtx, rtx); +extern rtx gen_sse2_shufpd_1 (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_sse2_storehpd (rtx, rtx); +extern rtx gen_sse2_storelpd (rtx, rtx); +extern rtx gen_sse2_loadhpd (rtx, rtx, rtx); +extern rtx gen_sse2_loadlpd (rtx, rtx, rtx); +extern rtx gen_sse2_movsd (rtx, rtx, rtx); +extern rtx gen_sse2_ssaddv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_ssaddv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_usaddv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_usaddv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_sssubv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_sssubv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_ussubv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_ussubv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_smulv8hi3_highpart (rtx, rtx, rtx); +extern rtx gen_sse2_umulv8hi3_highpart (rtx, rtx, rtx); +extern rtx gen_sse2_umulv2siv2di3 (rtx, rtx, rtx); +extern rtx gen_sse2_pmaddwd (rtx, rtx, rtx); +extern rtx gen_ashrv8hi3 (rtx, rtx, rtx); +extern rtx gen_ashrv4si3 (rtx, rtx, rtx); +extern rtx gen_lshrv8hi3 (rtx, rtx, rtx); +extern rtx gen_lshrv4si3 (rtx, rtx, rtx); +extern rtx gen_lshrv2di3 (rtx, rtx, rtx); +extern rtx gen_ashlv8hi3 (rtx, rtx, rtx); +extern rtx gen_ashlv4si3 (rtx, rtx, rtx); +extern rtx gen_ashlv2di3 (rtx, rtx, rtx); +extern rtx gen_sse2_ashlti3 (rtx, rtx, rtx); +extern rtx gen_sse2_lshrti3 (rtx, rtx, rtx); +extern rtx gen_sse2_eqv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_eqv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_eqv4si3 (rtx, rtx, rtx); +extern rtx gen_sse2_gtv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_gtv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_gtv4si3 (rtx, rtx, rtx); +extern rtx gen_sse2_nandv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_nandv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_nandv4si3 (rtx, rtx, rtx); +extern rtx gen_sse2_nandv2di3 (rtx, rtx, rtx); +extern rtx gen_sse2_packsswb (rtx, rtx, rtx); +extern rtx gen_sse2_packssdw (rtx, rtx, rtx); +extern rtx gen_sse2_packuswb (rtx, rtx, rtx); +extern rtx gen_sse2_punpckhbw (rtx, rtx, rtx); +extern rtx gen_sse2_punpcklbw (rtx, rtx, rtx); +extern rtx gen_sse2_punpckhwd (rtx, rtx, rtx); +extern rtx gen_sse2_punpcklwd (rtx, rtx, rtx); +extern rtx gen_sse2_punpckhdq (rtx, rtx, rtx); +extern rtx gen_sse2_punpckldq (rtx, rtx, rtx); +extern rtx gen_sse2_punpckhqdq (rtx, rtx, rtx); +extern rtx gen_sse2_punpcklqdq (rtx, rtx, rtx); +extern rtx gen_sse2_pextrw (rtx, rtx, rtx); +extern rtx gen_sse2_pshufd_1 (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_sse2_pshuflw_1 (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_sse2_pshufhw_1 (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_sse2_loadld (rtx, rtx, rtx); +extern rtx gen_sse2_stored (rtx, rtx); +extern rtx gen_sse2_uavgv16qi3 (rtx, rtx, rtx); +extern rtx gen_sse2_uavgv8hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_psadbw (rtx, rtx, rtx); +extern rtx gen_sse_movmskps (rtx, rtx); +extern rtx gen_sse2_movmskpd (rtx, rtx); +extern rtx gen_sse2_pmovmskb (rtx, rtx); +extern rtx gen_sse_ldmxcsr (rtx); +extern rtx gen_sse_stmxcsr (rtx); +extern rtx gen_sse2_clflush (rtx); +extern rtx gen_sse3_mwait (rtx, rtx); +extern rtx gen_sse3_monitor (rtx, rtx, rtx); +static __inline__ rtx gen_sse3_monitor64 (rtx, rtx, rtx); +static __inline__ rtx +gen_sse3_monitor64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sse_movntdi (rtx, rtx); +extern rtx gen_mmx_addv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_subv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_mulv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_smaxv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_sminv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_rcpv2sf2 (rtx, rtx); +extern rtx gen_mmx_rcpit1v2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_rcpit2v2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_rsqrtv2sf2 (rtx, rtx); +extern rtx gen_mmx_rsqit1v2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_haddv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_hsubv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_addsubv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_gtv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_gev2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_eqv2sf3 (rtx, rtx, rtx); +extern rtx gen_mmx_pf2id (rtx, rtx); +extern rtx gen_mmx_pf2iw (rtx, rtx); +extern rtx gen_mmx_pi2fw (rtx, rtx); +extern rtx gen_mmx_floatv2si2 (rtx, rtx); +extern rtx gen_mmx_pswapdv2sf2 (rtx, rtx); +extern rtx gen_mmx_addv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_addv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_addv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_adddi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ssaddv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ssaddv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_usaddv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_usaddv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_subv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_subv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_subv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_subdi3 (rtx, rtx, rtx); +extern rtx gen_mmx_sssubv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_sssubv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ussubv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ussubv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_mulv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_smulv4hi3_highpart (rtx, rtx, rtx); +extern rtx gen_mmx_umulv4hi3_highpart (rtx, rtx, rtx); +extern rtx gen_mmx_pmaddwd (rtx, rtx, rtx); +extern rtx gen_mmx_pmulhrwv4hi3 (rtx, rtx, rtx); +extern rtx gen_sse2_umulsidi3 (rtx, rtx, rtx); +extern rtx gen_mmx_umaxv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_smaxv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_uminv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_sminv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ashrv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ashrv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_lshrv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_lshrv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_lshrdi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ashlv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_ashlv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_ashldi3 (rtx, rtx, rtx); +extern rtx gen_mmx_eqv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_eqv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_eqv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_gtv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_gtv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_gtv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_andv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_andv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_andv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_nandv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_nandv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_nandv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_iorv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_iorv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_iorv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_xorv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_xorv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_xorv2si3 (rtx, rtx, rtx); +extern rtx gen_mmx_packsswb (rtx, rtx, rtx); +extern rtx gen_mmx_packssdw (rtx, rtx, rtx); +extern rtx gen_mmx_packuswb (rtx, rtx, rtx); +extern rtx gen_mmx_punpckhbw (rtx, rtx, rtx); +extern rtx gen_mmx_punpcklbw (rtx, rtx, rtx); +extern rtx gen_mmx_punpckhwd (rtx, rtx, rtx); +extern rtx gen_mmx_punpcklwd (rtx, rtx, rtx); +extern rtx gen_mmx_punpckhdq (rtx, rtx, rtx); +extern rtx gen_mmx_punpckldq (rtx, rtx, rtx); +extern rtx gen_mmx_pextrw (rtx, rtx, rtx); +extern rtx gen_mmx_pshufw_1 (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_mmx_pswapdv2si2 (rtx, rtx); +extern rtx gen_mmx_uavgv8qi3 (rtx, rtx, rtx); +extern rtx gen_mmx_uavgv4hi3 (rtx, rtx, rtx); +extern rtx gen_mmx_psadbw (rtx, rtx, rtx); +extern rtx gen_mmx_pmovmskb (rtx, rtx); +extern rtx gen_mmx_emms (void); +extern rtx gen_mmx_femms (void); +extern rtx gen_sync_double_compare_and_swapdi (rtx, rtx, rtx, rtx, rtx); +static __inline__ rtx gen_sync_double_compare_and_swapti (rtx, rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_sync_double_compare_and_swapti(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__)), rtx e __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_double_compare_and_swap_ccdi (rtx, rtx, rtx, rtx, rtx); +static __inline__ rtx gen_sync_double_compare_and_swap_ccti (rtx, rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_sync_double_compare_and_swap_ccti(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__)), rtx e __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_old_addqi (rtx, rtx, rtx); +extern rtx gen_sync_old_addhi (rtx, rtx, rtx); +extern rtx gen_sync_old_addsi (rtx, rtx, rtx); +static __inline__ rtx gen_sync_old_adddi (rtx, rtx, rtx); +static __inline__ rtx +gen_sync_old_adddi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_lock_test_and_setqi (rtx, rtx, rtx); +extern rtx gen_sync_lock_test_and_sethi (rtx, rtx, rtx); +extern rtx gen_sync_lock_test_and_setsi (rtx, rtx, rtx); +static __inline__ rtx gen_sync_lock_test_and_setdi (rtx, rtx, rtx); +static __inline__ rtx +gen_sync_lock_test_and_setdi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_addqi (rtx, rtx); +extern rtx gen_sync_addhi (rtx, rtx); +extern rtx gen_sync_addsi (rtx, rtx); +static __inline__ rtx gen_sync_adddi (rtx, rtx); +static __inline__ rtx +gen_sync_adddi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_subqi (rtx, rtx); +extern rtx gen_sync_subhi (rtx, rtx); +extern rtx gen_sync_subsi (rtx, rtx); +static __inline__ rtx gen_sync_subdi (rtx, rtx); +static __inline__ rtx +gen_sync_subdi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_iorqi (rtx, rtx); +extern rtx gen_sync_iorhi (rtx, rtx); +extern rtx gen_sync_iorsi (rtx, rtx); +static __inline__ rtx gen_sync_iordi (rtx, rtx); +static __inline__ rtx +gen_sync_iordi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_andqi (rtx, rtx); +extern rtx gen_sync_andhi (rtx, rtx); +extern rtx gen_sync_andsi (rtx, rtx); +static __inline__ rtx gen_sync_anddi (rtx, rtx); +static __inline__ rtx +gen_sync_anddi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_xorqi (rtx, rtx); +extern rtx gen_sync_xorhi (rtx, rtx); +extern rtx gen_sync_xorsi (rtx, rtx); +static __inline__ rtx gen_sync_xordi (rtx, rtx); +static __inline__ rtx +gen_sync_xordi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_cmpti (rtx, rtx); +static __inline__ rtx +gen_cmpti(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_cmpdi (rtx, rtx); +extern rtx gen_cmpsi (rtx, rtx); +extern rtx gen_cmphi (rtx, rtx); +extern rtx gen_cmpqi (rtx, rtx); +static __inline__ rtx gen_cmpdi_1_rex64 (rtx, rtx); +static __inline__ rtx +gen_cmpdi_1_rex64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_cmpsi_1 (rtx, rtx); +extern rtx gen_cmpqi_ext_3 (rtx, rtx); +extern rtx gen_cmpxf (rtx, rtx); +extern rtx gen_cmpdf (rtx, rtx); +extern rtx gen_cmpsf (rtx, rtx); +extern rtx gen_movsi (rtx, rtx); +extern rtx gen_movhi (rtx, rtx); +extern rtx gen_movstricthi (rtx, rtx); +extern rtx gen_movqi (rtx, rtx); +extern rtx gen_reload_outqi (rtx, rtx, rtx); +extern rtx gen_movstrictqi (rtx, rtx); +extern rtx gen_movdi (rtx, rtx); +extern rtx gen_movti (rtx, rtx); +extern rtx gen_movsf (rtx, rtx); +extern rtx gen_movdf (rtx, rtx); +extern rtx gen_movxf (rtx, rtx); +static __inline__ rtx gen_movtf (rtx, rtx); +static __inline__ rtx +gen_movtf(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_zero_extendhisi2 (rtx, rtx); +extern rtx gen_zero_extendqihi2 (rtx, rtx); +extern rtx gen_zero_extendqisi2 (rtx, rtx); +extern rtx gen_zero_extendsidi2 (rtx, rtx); +extern rtx gen_extendsidi2 (rtx, rtx); +extern rtx gen_extendsfdf2 (rtx, rtx); +extern rtx gen_extendsfxf2 (rtx, rtx); +extern rtx gen_extenddfxf2 (rtx, rtx); +extern rtx gen_truncdfsf2 (rtx, rtx); +extern rtx gen_truncdfsf2_with_temp (rtx, rtx, rtx); +extern rtx gen_truncxfsf2 (rtx, rtx); +extern rtx gen_truncxfdf2 (rtx, rtx); +extern rtx gen_fix_truncxfdi2 (rtx, rtx); +extern rtx gen_fix_truncsfdi2 (rtx, rtx); +extern rtx gen_fix_truncdfdi2 (rtx, rtx); +extern rtx gen_fix_truncxfsi2 (rtx, rtx); +extern rtx gen_fix_truncsfsi2 (rtx, rtx); +extern rtx gen_fix_truncdfsi2 (rtx, rtx); +extern rtx gen_fix_truncsfhi2 (rtx, rtx); +extern rtx gen_fix_truncdfhi2 (rtx, rtx); +extern rtx gen_fix_truncxfhi2 (rtx, rtx); +extern rtx gen_floathisf2 (rtx, rtx); +extern rtx gen_floatsisf2 (rtx, rtx); +extern rtx gen_floatdisf2 (rtx, rtx); +extern rtx gen_floathidf2 (rtx, rtx); +extern rtx gen_floatsidf2 (rtx, rtx); +extern rtx gen_floatdidf2 (rtx, rtx); +extern rtx gen_floatunssisf2 (rtx, rtx); +static __inline__ rtx gen_floatunsdisf2 (rtx, rtx); +static __inline__ rtx +gen_floatunsdisf2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_floatunsdidf2 (rtx, rtx); +static __inline__ rtx +gen_floatunsdidf2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_addti3 (rtx, rtx, rtx); +static __inline__ rtx +gen_addti3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_adddi3 (rtx, rtx, rtx); +extern rtx gen_addsi3 (rtx, rtx, rtx); +extern rtx gen_addhi3 (rtx, rtx, rtx); +extern rtx gen_addqi3 (rtx, rtx, rtx); +extern rtx gen_addxf3 (rtx, rtx, rtx); +extern rtx gen_adddf3 (rtx, rtx, rtx); +extern rtx gen_addsf3 (rtx, rtx, rtx); +static __inline__ rtx gen_subti3 (rtx, rtx, rtx); +static __inline__ rtx +gen_subti3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_subdi3 (rtx, rtx, rtx); +extern rtx gen_subsi3 (rtx, rtx, rtx); +extern rtx gen_subhi3 (rtx, rtx, rtx); +extern rtx gen_subqi3 (rtx, rtx, rtx); +extern rtx gen_subxf3 (rtx, rtx, rtx); +extern rtx gen_subdf3 (rtx, rtx, rtx); +extern rtx gen_subsf3 (rtx, rtx, rtx); +static __inline__ rtx gen_muldi3 (rtx, rtx, rtx); +static __inline__ rtx +gen_muldi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_mulsi3 (rtx, rtx, rtx); +extern rtx gen_mulhi3 (rtx, rtx, rtx); +extern rtx gen_mulqi3 (rtx, rtx, rtx); +extern rtx gen_umulqihi3 (rtx, rtx, rtx); +extern rtx gen_mulqihi3 (rtx, rtx, rtx); +static __inline__ rtx gen_umulditi3 (rtx, rtx, rtx); +static __inline__ rtx +gen_umulditi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_umulsidi3 (rtx, rtx, rtx); +static __inline__ rtx gen_mulditi3 (rtx, rtx, rtx); +static __inline__ rtx +gen_mulditi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_mulsidi3 (rtx, rtx, rtx); +static __inline__ rtx gen_umuldi3_highpart (rtx, rtx, rtx); +static __inline__ rtx +gen_umuldi3_highpart(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_umulsi3_highpart (rtx, rtx, rtx); +static __inline__ rtx gen_smuldi3_highpart (rtx, rtx, rtx); +static __inline__ rtx +gen_smuldi3_highpart(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_smulsi3_highpart (rtx, rtx, rtx); +extern rtx gen_mulxf3 (rtx, rtx, rtx); +extern rtx gen_muldf3 (rtx, rtx, rtx); +extern rtx gen_mulsf3 (rtx, rtx, rtx); +extern rtx gen_divxf3 (rtx, rtx, rtx); +extern rtx gen_divdf3 (rtx, rtx, rtx); +extern rtx gen_divsf3 (rtx, rtx, rtx); +static __inline__ rtx gen_divmoddi4 (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_divmoddi4(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_divmodsi4 (rtx, rtx, rtx, rtx); +extern rtx gen_udivmodhi4 (rtx, rtx, rtx, rtx); +extern rtx gen_testsi_ccno_1 (rtx, rtx); +extern rtx gen_testqi_ccz_1 (rtx, rtx); +extern rtx gen_testqi_ext_ccno_0 (rtx, rtx); +static __inline__ rtx gen_anddi3 (rtx, rtx, rtx); +static __inline__ rtx +gen_anddi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_andsi3 (rtx, rtx, rtx); +extern rtx gen_andhi3 (rtx, rtx, rtx); +extern rtx gen_andqi3 (rtx, rtx, rtx); +static __inline__ rtx gen_iordi3 (rtx, rtx, rtx); +static __inline__ rtx +gen_iordi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_iorsi3 (rtx, rtx, rtx); +extern rtx gen_iorhi3 (rtx, rtx, rtx); +extern rtx gen_iorqi3 (rtx, rtx, rtx); +static __inline__ rtx gen_xordi3 (rtx, rtx, rtx); +static __inline__ rtx +gen_xordi3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_xorsi3 (rtx, rtx, rtx); +extern rtx gen_xorhi3 (rtx, rtx, rtx); +extern rtx gen_xorqi3 (rtx, rtx, rtx); +extern rtx gen_xorqi_cc_ext_1 (rtx, rtx, rtx); +static __inline__ rtx gen_negti2 (rtx, rtx); +static __inline__ rtx +gen_negti2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_negdi2 (rtx, rtx); +extern rtx gen_negsi2 (rtx, rtx); +extern rtx gen_neghi2 (rtx, rtx); +extern rtx gen_negqi2 (rtx, rtx); +extern rtx gen_negsf2 (rtx, rtx); +extern rtx gen_abssf2 (rtx, rtx); +extern rtx gen_copysignsf3 (rtx, rtx, rtx); +extern rtx gen_negdf2 (rtx, rtx); +extern rtx gen_absdf2 (rtx, rtx); +extern rtx gen_copysigndf3 (rtx, rtx, rtx); +extern rtx gen_negxf2 (rtx, rtx); +extern rtx gen_absxf2 (rtx, rtx); +static __inline__ rtx gen_one_cmpldi2 (rtx, rtx); +static __inline__ rtx +gen_one_cmpldi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_one_cmplsi2 (rtx, rtx); +extern rtx gen_one_cmplhi2 (rtx, rtx); +extern rtx gen_one_cmplqi2 (rtx, rtx); +static __inline__ rtx gen_ashlti3 (rtx, rtx, rtx); +static __inline__ rtx +gen_ashlti3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +static __inline__ rtx gen_x86_64_shift_adj (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_x86_64_shift_adj(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_ashldi3 (rtx, rtx, rtx); +extern rtx gen_x86_shift_adj_1 (rtx, rtx, rtx, rtx); +extern rtx gen_x86_shift_adj_2 (rtx, rtx, rtx); +extern rtx gen_ashlsi3 (rtx, rtx, rtx); +extern rtx gen_ashlhi3 (rtx, rtx, rtx); +extern rtx gen_ashlqi3 (rtx, rtx, rtx); +static __inline__ rtx gen_ashrti3 (rtx, rtx, rtx); +static __inline__ rtx +gen_ashrti3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_ashrdi3 (rtx, rtx, rtx); +extern rtx gen_x86_shift_adj_3 (rtx, rtx, rtx); +extern rtx gen_ashrsi3 (rtx, rtx, rtx); +extern rtx gen_ashrhi3 (rtx, rtx, rtx); +extern rtx gen_ashrqi3 (rtx, rtx, rtx); +static __inline__ rtx gen_lshrti3 (rtx, rtx, rtx); +static __inline__ rtx +gen_lshrti3(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_lshrdi3 (rtx, rtx, rtx); +extern rtx gen_lshrsi3 (rtx, rtx, rtx); +extern rtx gen_lshrhi3 (rtx, rtx, rtx); +extern rtx gen_lshrqi3 (rtx, rtx, rtx); +extern rtx gen_rotldi3 (rtx, rtx, rtx); +extern rtx gen_rotlsi3 (rtx, rtx, rtx); +extern rtx gen_rotlhi3 (rtx, rtx, rtx); +extern rtx gen_rotlqi3 (rtx, rtx, rtx); +extern rtx gen_rotrdi3 (rtx, rtx, rtx); +extern rtx gen_rotrsi3 (rtx, rtx, rtx); +extern rtx gen_rotrhi3 (rtx, rtx, rtx); +extern rtx gen_rotrqi3 (rtx, rtx, rtx); +extern rtx gen_extv (rtx, rtx, rtx, rtx); +extern rtx gen_extzv (rtx, rtx, rtx, rtx); +extern rtx gen_insv (rtx, rtx, rtx, rtx); +extern rtx gen_seq (rtx); +extern rtx gen_sne (rtx); +extern rtx gen_sgt (rtx); +extern rtx gen_sgtu (rtx); +extern rtx gen_slt (rtx); +extern rtx gen_sltu (rtx); +extern rtx gen_sge (rtx); +extern rtx gen_sgeu (rtx); +extern rtx gen_sle (rtx); +extern rtx gen_sleu (rtx); +extern rtx gen_sunordered (rtx); +extern rtx gen_sordered (rtx); +extern rtx gen_suneq (rtx); +extern rtx gen_sunge (rtx); +extern rtx gen_sungt (rtx); +extern rtx gen_sunle (rtx); +extern rtx gen_sunlt (rtx); +extern rtx gen_sltgt (rtx); +extern rtx gen_beq (rtx); +extern rtx gen_bne (rtx); +extern rtx gen_bgt (rtx); +extern rtx gen_bgtu (rtx); +extern rtx gen_blt (rtx); +extern rtx gen_bltu (rtx); +extern rtx gen_bge (rtx); +extern rtx gen_bgeu (rtx); +extern rtx gen_ble (rtx); +extern rtx gen_bleu (rtx); +extern rtx gen_bunordered (rtx); +extern rtx gen_bordered (rtx); +extern rtx gen_buneq (rtx); +extern rtx gen_bunge (rtx); +extern rtx gen_bungt (rtx); +extern rtx gen_bunle (rtx); +extern rtx gen_bunlt (rtx); +extern rtx gen_bltgt (rtx); +extern rtx gen_indirect_jump (rtx); +extern rtx gen_tablejump (rtx, rtx); + +extern rtx gen_call_pop (rtx, rtx, rtx, rtx); + +extern rtx gen_call (rtx, rtx, rtx); + +extern rtx gen_sibcall (rtx, rtx, rtx); + +extern rtx gen_call_value_pop (rtx, rtx, rtx, rtx, rtx); + +extern rtx gen_call_value (rtx, rtx, rtx, rtx); + +extern rtx gen_sibcall_value (rtx, rtx, rtx, rtx); +extern rtx gen_untyped_call (rtx, rtx, rtx); +extern rtx gen_return (void); +extern rtx gen_prologue (void); +extern rtx gen_epilogue (void); +extern rtx gen_sibcall_epilogue (void); +extern rtx gen_eh_return (rtx); +extern rtx gen_ffssi2 (rtx, rtx); +static __inline__ rtx gen_ffsdi2 (rtx, rtx); +static __inline__ rtx +gen_ffsdi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_clzsi2 (rtx, rtx); +static __inline__ rtx gen_clzdi2 (rtx, rtx); +static __inline__ rtx +gen_clzdi2(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_tls_global_dynamic_32 (rtx, rtx); +extern rtx gen_tls_global_dynamic_64 (rtx, rtx); +extern rtx gen_tls_local_dynamic_base_32 (rtx); +extern rtx gen_tls_local_dynamic_base_64 (rtx); +extern rtx gen_tls_dynamic_gnu2_32 (rtx, rtx, rtx); +static __inline__ rtx gen_tls_dynamic_gnu2_64 (rtx, rtx); +static __inline__ rtx +gen_tls_dynamic_gnu2_64(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sqrtsf2 (rtx, rtx); +extern rtx gen_sqrtdf2 (rtx, rtx); +extern rtx gen_fmodsf3 (rtx, rtx, rtx); +extern rtx gen_fmoddf3 (rtx, rtx, rtx); +extern rtx gen_fmodxf3 (rtx, rtx, rtx); +extern rtx gen_dremsf3 (rtx, rtx, rtx); +extern rtx gen_dremdf3 (rtx, rtx, rtx); +extern rtx gen_dremxf3 (rtx, rtx, rtx); +extern rtx gen_tandf2 (rtx, rtx); +extern rtx gen_tansf2 (rtx, rtx); +extern rtx gen_tanxf2 (rtx, rtx); +extern rtx gen_atan2df3 (rtx, rtx, rtx); +extern rtx gen_atandf2 (rtx, rtx); +extern rtx gen_atan2sf3 (rtx, rtx, rtx); +extern rtx gen_atansf2 (rtx, rtx); +extern rtx gen_atan2xf3 (rtx, rtx, rtx); +extern rtx gen_atanxf2 (rtx, rtx); +extern rtx gen_asindf2 (rtx, rtx); +extern rtx gen_asinsf2 (rtx, rtx); +extern rtx gen_asinxf2 (rtx, rtx); +extern rtx gen_acosdf2 (rtx, rtx); +extern rtx gen_acossf2 (rtx, rtx); +extern rtx gen_acosxf2 (rtx, rtx); +extern rtx gen_logsf2 (rtx, rtx); +extern rtx gen_logdf2 (rtx, rtx); +extern rtx gen_logxf2 (rtx, rtx); +extern rtx gen_log10sf2 (rtx, rtx); +extern rtx gen_log10df2 (rtx, rtx); +extern rtx gen_log10xf2 (rtx, rtx); +extern rtx gen_log2sf2 (rtx, rtx); +extern rtx gen_log2df2 (rtx, rtx); +extern rtx gen_log2xf2 (rtx, rtx); +extern rtx gen_log1psf2 (rtx, rtx); +extern rtx gen_log1pdf2 (rtx, rtx); +extern rtx gen_log1pxf2 (rtx, rtx); +extern rtx gen_logbsf2 (rtx, rtx); +extern rtx gen_logbdf2 (rtx, rtx); +extern rtx gen_logbxf2 (rtx, rtx); +extern rtx gen_ilogbsi2 (rtx, rtx, rtx, rtx); +extern rtx gen_expsf2 (rtx, rtx); +extern rtx gen_expdf2 (rtx, rtx); +extern rtx gen_expxf2 (rtx, rtx); +extern rtx gen_exp10sf2 (rtx, rtx); +extern rtx gen_exp10df2 (rtx, rtx); +extern rtx gen_exp10xf2 (rtx, rtx); +extern rtx gen_exp2sf2 (rtx, rtx); +extern rtx gen_exp2df2 (rtx, rtx); +extern rtx gen_exp2xf2 (rtx, rtx); +extern rtx gen_expm1df2 (rtx, rtx); +extern rtx gen_expm1sf2 (rtx, rtx); +extern rtx gen_expm1xf2 (rtx, rtx); +extern rtx gen_ldexpdf3 (rtx, rtx, rtx); +extern rtx gen_ldexpsf3 (rtx, rtx, rtx); +extern rtx gen_ldexpxf3 (rtx, rtx, rtx); +extern rtx gen_rintdf2 (rtx, rtx); +extern rtx gen_rintsf2 (rtx, rtx); +extern rtx gen_rintxf2 (rtx, rtx); +extern rtx gen_lrinthi2 (rtx, rtx); +extern rtx gen_lrintsi2 (rtx, rtx); +extern rtx gen_lrintdi2 (rtx, rtx); +extern rtx gen_floorxf2 (rtx, rtx); +extern rtx gen_floordf2 (rtx, rtx); +extern rtx gen_floorsf2 (rtx, rtx); +extern rtx gen_lfloorhi2 (rtx, rtx); +extern rtx gen_lfloorsi2 (rtx, rtx); +extern rtx gen_lfloordi2 (rtx, rtx); +extern rtx gen_ceilxf2 (rtx, rtx); +extern rtx gen_ceildf2 (rtx, rtx); +extern rtx gen_ceilsf2 (rtx, rtx); +extern rtx gen_lceilhi2 (rtx, rtx); +extern rtx gen_lceilsi2 (rtx, rtx); +extern rtx gen_lceildi2 (rtx, rtx); +extern rtx gen_btruncxf2 (rtx, rtx); +extern rtx gen_btruncdf2 (rtx, rtx); +extern rtx gen_btruncsf2 (rtx, rtx); +extern rtx gen_nearbyintxf2 (rtx, rtx); +extern rtx gen_nearbyintdf2 (rtx, rtx); +extern rtx gen_nearbyintsf2 (rtx, rtx); +extern rtx gen_movmemsi (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_movmemdi (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_movmemdi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_strmov (rtx, rtx, rtx, rtx); +extern rtx gen_strmov_singleop (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_rep_mov (rtx, rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_setmemsi (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_setmemdi (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_setmemdi(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_strset (rtx, rtx, rtx); +extern rtx gen_strset_singleop (rtx, rtx, rtx, rtx); +extern rtx gen_rep_stos (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_cmpstrnsi (rtx, rtx, rtx, rtx, rtx); +extern rtx gen_cmpintqi (rtx); +extern rtx gen_cmpstrnqi_nz_1 (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_cmpstrnqi_1 (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_strlensi (rtx, rtx, rtx, rtx); +extern rtx gen_strlendi (rtx, rtx, rtx, rtx); +extern rtx gen_strlenqi_1 (rtx, rtx, rtx); +static __inline__ rtx gen_movdicc (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_movdicc(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_movsicc (rtx, rtx, rtx, rtx); +extern rtx gen_movhicc (rtx, rtx, rtx, rtx); +extern rtx gen_movqicc (rtx, rtx, rtx, rtx); +extern rtx gen_movsfcc (rtx, rtx, rtx, rtx); +extern rtx gen_movdfcc (rtx, rtx, rtx, rtx); +extern rtx gen_movxfcc (rtx, rtx, rtx, rtx); +extern rtx gen_addqicc (rtx, rtx, rtx, rtx); +extern rtx gen_addhicc (rtx, rtx, rtx, rtx); +extern rtx gen_addsicc (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_adddicc (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_adddicc(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_allocate_stack_worker (rtx); +extern rtx gen_allocate_stack_worker_postreload (rtx); +extern rtx gen_allocate_stack_worker_rex64_postreload (rtx); +extern rtx gen_allocate_stack (rtx, rtx); +extern rtx gen_builtin_setjmp_receiver (rtx); +static __inline__ rtx gen_sse_prologue_save (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_sse_prologue_save(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_prefetch (rtx, rtx, rtx); +extern rtx gen_stack_protect_set (rtx, rtx); +extern rtx gen_stack_protect_test (rtx, rtx, rtx); +extern rtx gen_movv16qi (rtx, rtx); +extern rtx gen_movv8hi (rtx, rtx); +extern rtx gen_movv4si (rtx, rtx); +extern rtx gen_movv2di (rtx, rtx); +extern rtx gen_movv4sf (rtx, rtx); +extern rtx gen_movv2df (rtx, rtx); +extern rtx gen_pushv16qi1 (rtx); +extern rtx gen_pushv8hi1 (rtx); +extern rtx gen_pushv4si1 (rtx); +extern rtx gen_pushv2di1 (rtx); +extern rtx gen_pushv4sf1 (rtx); +extern rtx gen_pushv2df1 (rtx); +extern rtx gen_movmisalignv16qi (rtx, rtx); +extern rtx gen_movmisalignv8hi (rtx, rtx); +extern rtx gen_movmisalignv4si (rtx, rtx); +extern rtx gen_movmisalignv2di (rtx, rtx); +extern rtx gen_movmisalignv4sf (rtx, rtx); +extern rtx gen_movmisalignv2df (rtx, rtx); +extern rtx gen_negv4sf2 (rtx, rtx); +extern rtx gen_absv4sf2 (rtx, rtx); +extern rtx gen_addv4sf3 (rtx, rtx, rtx); +extern rtx gen_subv4sf3 (rtx, rtx, rtx); +extern rtx gen_mulv4sf3 (rtx, rtx, rtx); +extern rtx gen_divv4sf3 (rtx, rtx, rtx); +extern rtx gen_smaxv4sf3 (rtx, rtx, rtx); +extern rtx gen_sminv4sf3 (rtx, rtx, rtx); +extern rtx gen_reduc_splus_v4sf (rtx, rtx); +extern rtx gen_reduc_smax_v4sf (rtx, rtx); +extern rtx gen_reduc_smin_v4sf (rtx, rtx); +extern rtx gen_vcondv4sf (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_andv4sf3 (rtx, rtx, rtx); +extern rtx gen_iorv4sf3 (rtx, rtx, rtx); +extern rtx gen_xorv4sf3 (rtx, rtx, rtx); +extern rtx gen_sse_shufps (rtx, rtx, rtx, rtx); +extern rtx gen_vec_initv4sf (rtx, rtx); +extern rtx gen_vec_setv4sf (rtx, rtx, rtx); +extern rtx gen_vec_extractv4sf (rtx, rtx, rtx); +extern rtx gen_negv2df2 (rtx, rtx); +extern rtx gen_absv2df2 (rtx, rtx); +extern rtx gen_addv2df3 (rtx, rtx, rtx); +extern rtx gen_subv2df3 (rtx, rtx, rtx); +extern rtx gen_mulv2df3 (rtx, rtx, rtx); +extern rtx gen_divv2df3 (rtx, rtx, rtx); +extern rtx gen_smaxv2df3 (rtx, rtx, rtx); +extern rtx gen_sminv2df3 (rtx, rtx, rtx); +extern rtx gen_reduc_splus_v2df (rtx, rtx); +extern rtx gen_vcondv2df (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_andv2df3 (rtx, rtx, rtx); +extern rtx gen_iorv2df3 (rtx, rtx, rtx); +extern rtx gen_xorv2df3 (rtx, rtx, rtx); +extern rtx gen_sse2_cvtpd2dq (rtx, rtx); +extern rtx gen_sse2_cvttpd2dq (rtx, rtx); +extern rtx gen_sse2_cvtpd2ps (rtx, rtx); +extern rtx gen_sse2_shufpd (rtx, rtx, rtx, rtx); +extern rtx gen_vec_setv2df (rtx, rtx, rtx); +extern rtx gen_vec_extractv2df (rtx, rtx, rtx); +extern rtx gen_vec_initv2df (rtx, rtx); +extern rtx gen_negv16qi2 (rtx, rtx); +extern rtx gen_negv8hi2 (rtx, rtx); +extern rtx gen_negv4si2 (rtx, rtx); +extern rtx gen_negv2di2 (rtx, rtx); +extern rtx gen_addv16qi3 (rtx, rtx, rtx); +extern rtx gen_addv8hi3 (rtx, rtx, rtx); +extern rtx gen_addv4si3 (rtx, rtx, rtx); +extern rtx gen_addv2di3 (rtx, rtx, rtx); +extern rtx gen_subv16qi3 (rtx, rtx, rtx); +extern rtx gen_subv8hi3 (rtx, rtx, rtx); +extern rtx gen_subv4si3 (rtx, rtx, rtx); +extern rtx gen_subv2di3 (rtx, rtx, rtx); +extern rtx gen_mulv16qi3 (rtx, rtx, rtx); +extern rtx gen_mulv8hi3 (rtx, rtx, rtx); +extern rtx gen_mulv4si3 (rtx, rtx, rtx); +extern rtx gen_mulv2di3 (rtx, rtx, rtx); +extern rtx gen_sdot_prodv8hi (rtx, rtx, rtx, rtx); +extern rtx gen_udot_prodv4si (rtx, rtx, rtx, rtx); +extern rtx gen_vec_shl_v16qi (rtx, rtx, rtx); +extern rtx gen_vec_shl_v8hi (rtx, rtx, rtx); +extern rtx gen_vec_shl_v4si (rtx, rtx, rtx); +extern rtx gen_vec_shl_v2di (rtx, rtx, rtx); +extern rtx gen_vec_shr_v16qi (rtx, rtx, rtx); +extern rtx gen_vec_shr_v8hi (rtx, rtx, rtx); +extern rtx gen_vec_shr_v4si (rtx, rtx, rtx); +extern rtx gen_vec_shr_v2di (rtx, rtx, rtx); +extern rtx gen_umaxv16qi3 (rtx, rtx, rtx); +extern rtx gen_smaxv8hi3 (rtx, rtx, rtx); +extern rtx gen_umaxv8hi3 (rtx, rtx, rtx); +extern rtx gen_smaxv16qi3 (rtx, rtx, rtx); +extern rtx gen_smaxv4si3 (rtx, rtx, rtx); +extern rtx gen_umaxv4si3 (rtx, rtx, rtx); +extern rtx gen_uminv16qi3 (rtx, rtx, rtx); +extern rtx gen_sminv8hi3 (rtx, rtx, rtx); +extern rtx gen_sminv16qi3 (rtx, rtx, rtx); +extern rtx gen_sminv4si3 (rtx, rtx, rtx); +extern rtx gen_uminv8hi3 (rtx, rtx, rtx); +extern rtx gen_uminv4si3 (rtx, rtx, rtx); +extern rtx gen_vcondv16qi (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_vcondv8hi (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_vcondv4si (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_vconduv16qi (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_vconduv8hi (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_vconduv4si (rtx, rtx, rtx, rtx, rtx, rtx); +extern rtx gen_one_cmplv16qi2 (rtx, rtx); +extern rtx gen_one_cmplv8hi2 (rtx, rtx); +extern rtx gen_one_cmplv4si2 (rtx, rtx); +extern rtx gen_one_cmplv2di2 (rtx, rtx); +extern rtx gen_andv16qi3 (rtx, rtx, rtx); +extern rtx gen_andv8hi3 (rtx, rtx, rtx); +extern rtx gen_andv4si3 (rtx, rtx, rtx); +extern rtx gen_andv2di3 (rtx, rtx, rtx); +extern rtx gen_iorv16qi3 (rtx, rtx, rtx); +extern rtx gen_iorv8hi3 (rtx, rtx, rtx); +extern rtx gen_iorv4si3 (rtx, rtx, rtx); +extern rtx gen_iorv2di3 (rtx, rtx, rtx); +extern rtx gen_xorv16qi3 (rtx, rtx, rtx); +extern rtx gen_xorv8hi3 (rtx, rtx, rtx); +extern rtx gen_xorv4si3 (rtx, rtx, rtx); +extern rtx gen_xorv2di3 (rtx, rtx, rtx); +extern rtx gen_sse2_pinsrw (rtx, rtx, rtx, rtx); +extern rtx gen_sse2_pshufd (rtx, rtx, rtx); +extern rtx gen_sse2_pshuflw (rtx, rtx, rtx); +extern rtx gen_sse2_pshufhw (rtx, rtx, rtx); +extern rtx gen_sse2_loadd (rtx, rtx); +extern rtx gen_sse_storeq (rtx, rtx); +extern rtx gen_vec_setv2di (rtx, rtx, rtx); +extern rtx gen_vec_extractv2di (rtx, rtx, rtx); +extern rtx gen_vec_initv2di (rtx, rtx); +extern rtx gen_vec_setv4si (rtx, rtx, rtx); +extern rtx gen_vec_extractv4si (rtx, rtx, rtx); +extern rtx gen_vec_initv4si (rtx, rtx); +extern rtx gen_vec_setv8hi (rtx, rtx, rtx); +extern rtx gen_vec_extractv8hi (rtx, rtx, rtx); +extern rtx gen_vec_initv8hi (rtx, rtx); +extern rtx gen_vec_setv16qi (rtx, rtx, rtx); +extern rtx gen_vec_extractv16qi (rtx, rtx, rtx); +extern rtx gen_vec_initv16qi (rtx, rtx); +extern rtx gen_sse2_maskmovdqu (rtx, rtx, rtx); +extern rtx gen_sse_sfence (void); +extern rtx gen_sse2_mfence (void); +extern rtx gen_sse2_lfence (void); +extern rtx gen_movv8qi (rtx, rtx); +extern rtx gen_movv4hi (rtx, rtx); +extern rtx gen_movv2si (rtx, rtx); +extern rtx gen_movv2sf (rtx, rtx); +extern rtx gen_pushv8qi1 (rtx); +extern rtx gen_pushv4hi1 (rtx); +extern rtx gen_pushv2si1 (rtx); +extern rtx gen_pushv2sf1 (rtx); +extern rtx gen_movmisalignv8qi (rtx, rtx); +extern rtx gen_movmisalignv4hi (rtx, rtx); +extern rtx gen_movmisalignv2si (rtx, rtx); +extern rtx gen_movmisalignv2sf (rtx, rtx); +extern rtx gen_mmx_subrv2sf3 (rtx, rtx, rtx); +extern rtx gen_vec_setv2sf (rtx, rtx, rtx); +extern rtx gen_vec_extractv2sf (rtx, rtx, rtx); +extern rtx gen_vec_initv2sf (rtx, rtx); +extern rtx gen_mmx_pinsrw (rtx, rtx, rtx, rtx); +extern rtx gen_mmx_pshufw (rtx, rtx, rtx); +extern rtx gen_vec_setv2si (rtx, rtx, rtx); +extern rtx gen_vec_extractv2si (rtx, rtx, rtx); +extern rtx gen_vec_initv2si (rtx, rtx); +extern rtx gen_vec_setv4hi (rtx, rtx, rtx); +extern rtx gen_vec_extractv4hi (rtx, rtx, rtx); +extern rtx gen_vec_initv4hi (rtx, rtx); +extern rtx gen_vec_setv8qi (rtx, rtx, rtx); +extern rtx gen_vec_extractv8qi (rtx, rtx, rtx); +extern rtx gen_vec_initv8qi (rtx, rtx); +extern rtx gen_mmx_maskmovq (rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swapqi (rtx, rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swaphi (rtx, rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swapsi (rtx, rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swapdi (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_sync_compare_and_swapti (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_sync_compare_and_swapti(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +extern rtx gen_sync_compare_and_swap_ccqi (rtx, rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swap_cchi (rtx, rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swap_ccsi (rtx, rtx, rtx, rtx); +extern rtx gen_sync_compare_and_swap_ccdi (rtx, rtx, rtx, rtx); +static __inline__ rtx gen_sync_compare_and_swap_ccti (rtx, rtx, rtx, rtx); +static __inline__ rtx +gen_sync_compare_and_swap_ccti(rtx a __attribute__ ((__unused__)), rtx b __attribute__ ((__unused__)), rtx c __attribute__ ((__unused__)), rtx d __attribute__ ((__unused__))) +{ + return 0; +} +# 21 "./tm.h" 2 +# 43 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/tree.h" 1 +# 24 "../../GCC/gcc/tree.h" +# 1 "../../GCC/gcc/../include/hashtab.h" 1 +# 46 "../../GCC/gcc/../include/hashtab.h" +typedef unsigned int hashval_t; + + + + +typedef hashval_t (*htab_hash) (const void *); + + + + + + +typedef int (*htab_eq) (const void *, const void *); + + + +typedef void (*htab_del) (void *); + + + + + +typedef int (*htab_trav) (void **, void *); + + + + + +typedef void *(*htab_alloc) (size_t, size_t); + + +typedef void (*htab_free) (void *); + + + +typedef void *(*htab_alloc_with_arg) (void *, size_t, size_t); +typedef void (*htab_free_with_arg) (void *, void *); +# 99 "../../GCC/gcc/../include/hashtab.h" +struct htab +{ + + htab_hash hash_f; + + + htab_eq eq_f; + + + htab_del del_f; + + + void ** entries; + + + size_t size; + + + size_t n_elements; + + + size_t n_deleted; + + + + unsigned int searches; + + + + unsigned int collisions; + + + htab_alloc alloc_f; + htab_free free_f; + + + void * alloc_arg; + htab_alloc_with_arg alloc_with_arg_f; + htab_free_with_arg free_with_arg_f; + + + + unsigned int size_prime_index; +}; + +typedef struct htab *htab_t; + + +enum insert_option {NO_INSERT, INSERT}; + + + +extern htab_t htab_create_alloc (size_t, htab_hash, + htab_eq, htab_del, + htab_alloc, htab_free); + +extern htab_t htab_create_alloc_ex (size_t, htab_hash, + htab_eq, htab_del, + void *, htab_alloc_with_arg, + htab_free_with_arg); + + +extern htab_t htab_create (size_t, htab_hash, htab_eq, htab_del); +extern htab_t htab_try_create (size_t, htab_hash, htab_eq, htab_del); + +extern void htab_set_functions_ex (htab_t, htab_hash, + htab_eq, htab_del, + void *, htab_alloc_with_arg, + htab_free_with_arg); + +extern void htab_delete (htab_t); +extern void htab_empty (htab_t); + +extern void * htab_find (htab_t, const void *); +extern void ** htab_find_slot (htab_t, const void *, enum insert_option); +extern void * htab_find_with_hash (htab_t, const void *, hashval_t); +extern void ** htab_find_slot_with_hash (htab_t, const void *, + hashval_t, enum insert_option); +extern void htab_clear_slot (htab_t, void **); +extern void htab_remove_elt (htab_t, void *); +extern void htab_remove_elt_with_hash (htab_t, void *, hashval_t); + +extern void htab_traverse (htab_t, htab_trav, void *); +extern void htab_traverse_noresize (htab_t, htab_trav, void *); + +extern size_t htab_size (htab_t); +extern size_t htab_elements (htab_t); +extern double htab_collisions (htab_t); + + +extern htab_hash htab_hash_pointer; + + +extern htab_eq htab_eq_pointer; + + +extern hashval_t htab_hash_string (const void *); + + +extern hashval_t iterative_hash (const void *, size_t, hashval_t); +# 25 "../../GCC/gcc/tree.h" 2 +# 1 "../../GCC/gcc/machmode.h" 1 +# 25 "../../GCC/gcc/machmode.h" +# 1 "./insn-modes.h" 1 + + + + + + +enum machine_mode +{ + VOIDmode, + BLKmode, + CCmode, + CCGCmode, + CCGOCmode, + CCNOmode, + CCZmode, + CCFPmode, + CCFPUmode, + BImode, + QImode, + HImode, + SImode, + DImode, + TImode, + SFmode, + DFmode, + XFmode, + TFmode, + SDmode, + DDmode, + TDmode, + CQImode, + CHImode, + CSImode, + CDImode, + CTImode, + SCmode, + DCmode, + XCmode, + TCmode, + V4QImode, + V2HImode, + V8QImode, + V4HImode, + V2SImode, + V16QImode, + V8HImode, + V4SImode, + V2DImode, + V32QImode, + V16HImode, + V8SImode, + V4DImode, + V2SFmode, + V4SFmode, + V2DFmode, + V8SFmode, + V4DFmode, + MAX_MACHINE_MODE, + + MIN_MODE_RANDOM = VOIDmode, + MAX_MODE_RANDOM = BLKmode, + + MIN_MODE_CC = CCmode, + MAX_MODE_CC = CCFPUmode, + + MIN_MODE_INT = QImode, + MAX_MODE_INT = TImode, + + MIN_MODE_PARTIAL_INT = VOIDmode, + MAX_MODE_PARTIAL_INT = VOIDmode, + + MIN_MODE_FLOAT = SFmode, + MAX_MODE_FLOAT = TFmode, + + MIN_MODE_DECIMAL_FLOAT = SDmode, + MAX_MODE_DECIMAL_FLOAT = TDmode, + + MIN_MODE_COMPLEX_INT = CQImode, + MAX_MODE_COMPLEX_INT = CTImode, + + MIN_MODE_COMPLEX_FLOAT = SCmode, + MAX_MODE_COMPLEX_FLOAT = TCmode, + + MIN_MODE_VECTOR_INT = V4QImode, + MAX_MODE_VECTOR_INT = V4DImode, + + MIN_MODE_VECTOR_FLOAT = V2SFmode, + MAX_MODE_VECTOR_FLOAT = V4DFmode, + + NUM_MACHINE_MODES = MAX_MACHINE_MODE +}; +# 26 "../../GCC/gcc/machmode.h" 2 + + + +extern const char * const mode_name[NUM_MACHINE_MODES]; + + + + +# 1 "../../GCC/gcc/mode-classes.def" 1 +# 35 "../../GCC/gcc/machmode.h" 2 + +enum mode_class { MODE_RANDOM, MODE_CC, MODE_INT, MODE_PARTIAL_INT, MODE_FLOAT, MODE_DECIMAL_FLOAT, MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MODE_VECTOR_INT, MODE_VECTOR_FLOAT, MAX_MODE_CLASS }; + + + + + + +extern const unsigned char mode_class[NUM_MACHINE_MODES]; +# 93 "../../GCC/gcc/machmode.h" +extern unsigned char mode_size[NUM_MACHINE_MODES]; + + + + +extern const unsigned short mode_precision[NUM_MACHINE_MODES]; + + + + + +extern const unsigned long mode_mask_array[NUM_MACHINE_MODES]; + + + + + +extern const unsigned char mode_inner[NUM_MACHINE_MODES]; +# 122 "../../GCC/gcc/machmode.h" +extern const unsigned char mode_nunits[NUM_MACHINE_MODES]; + + + + +extern const unsigned char mode_wider[NUM_MACHINE_MODES]; + + +extern const unsigned char mode_2xwider[NUM_MACHINE_MODES]; + + + + + + +extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int); + + + +extern enum machine_mode smallest_mode_for_size (unsigned int, + enum mode_class); + + + + + +extern enum machine_mode int_mode_for_mode (enum machine_mode); + + + +extern enum machine_mode get_best_mode (int, int, unsigned int, + enum machine_mode, int); + + + +extern unsigned char mode_base_align[NUM_MACHINE_MODES]; + +extern unsigned get_mode_alignment (enum machine_mode); + + + + + +extern const unsigned char class_narrowest_mode[MAX_MODE_CLASS]; + + + + + +extern enum machine_mode byte_mode; +extern enum machine_mode word_mode; +extern enum machine_mode ptr_mode; + + +extern void init_adjust_machine_modes (void); +# 26 "../../GCC/gcc/tree.h" 2 +# 1 "../../GCC/gcc/input.h" 1 +# 25 "../../GCC/gcc/input.h" +# 1 "../../GCC/gcc/../libcpp/include/line-map.h" 1 +# 31 "../../GCC/gcc/../libcpp/include/line-map.h" +enum lc_reason {LC_ENTER = 0, LC_LEAVE, LC_RENAME}; + + + + +typedef unsigned int source_location; +# 50 "../../GCC/gcc/../libcpp/include/line-map.h" +struct line_map +{ + const char *to_file; + unsigned int to_line; + source_location start_location; + int included_from; + __extension__ enum lc_reason reason : 8; + + unsigned char sysp; + + unsigned int column_bits : 8; +}; + + +struct line_maps +{ + struct line_map *maps; + unsigned int allocated; + unsigned int used; + + unsigned int cache; + + + + + int last_listed; + + + unsigned int depth; + + + unsigned char trace_includes; + + + source_location highest_location; + + + source_location highest_line; + + + + unsigned int max_column_hint; +}; + + +extern void linemap_init (struct line_maps *); + + +extern void linemap_free (struct line_maps *); + + + +extern void linemap_check_files_exited (struct line_maps *); + + + + + + + +extern source_location linemap_line_start +(struct line_maps *set, unsigned int to_line, unsigned int max_column_hint); +# 124 "../../GCC/gcc/../libcpp/include/line-map.h" +extern const struct line_map *linemap_add + (struct line_maps *, enum lc_reason, unsigned int sysp, + const char *to_file, unsigned int to_line); + + + +extern const struct line_map *linemap_lookup + (struct line_maps *, source_location); + + + + +extern void linemap_print_containing_files (struct line_maps *, + const struct line_map *); +# 178 "../../GCC/gcc/../libcpp/include/line-map.h" +extern source_location +linemap_position_for_column (struct line_maps *set, unsigned int to_column); +# 26 "../../GCC/gcc/input.h" 2 +extern struct line_maps line_table; +# 52 "../../GCC/gcc/input.h" +struct location_s +{ + + const char *file; + + + int line; +}; + +typedef struct location_s expanded_location; +typedef struct location_s location_t; +typedef location_t *source_locus; + + +extern location_t unknown_location; + + + + +struct file_stack +{ + struct file_stack *next; + location_t location; +}; + + +extern const char *main_input_filename; + +extern location_t input_location; + + + +extern void push_srcloc (const char *name, int line); + +extern void pop_srcloc (void); +extern void restore_input_file_stack (int); +# 97 "../../GCC/gcc/input.h" +extern struct file_stack *input_file_stack; + + +extern int input_file_stack_tick; +# 27 "../../GCC/gcc/tree.h" 2 +# 1 "../../GCC/gcc/statistics.h" 1 +# 28 "../../GCC/gcc/tree.h" 2 +# 1 "../../GCC/gcc/vec.h" 1 +# 411 "../../GCC/gcc/vec.h" +extern void *vec_gc_p_reserve (void *, int ); +extern void *vec_gc_p_reserve_exact (void *, int ); +extern void *vec_gc_o_reserve (void *, int, size_t, size_t ); +extern void *vec_gc_o_reserve_exact (void *, int, size_t, size_t + ); +extern void ggc_free (void *); + +extern void *vec_heap_p_reserve (void *, int ); +extern void *vec_heap_p_reserve_exact (void *, int ); +extern void *vec_heap_o_reserve (void *, int, size_t, size_t ); +extern void *vec_heap_o_reserve_exact (void *, int, size_t, size_t + ); +# 29 "../../GCC/gcc/tree.h" 2 + + + + + +enum tree_code { +# 1 "../../GCC/gcc/tree.def" 1 +# 42 "../../GCC/gcc/tree.def" +ERROR_MARK, + + + + + +IDENTIFIER_NODE, + + + + + + +TREE_LIST, + + +TREE_VEC, +# 79 "../../GCC/gcc/tree.def" +BLOCK, +# 133 "../../GCC/gcc/tree.def" +OFFSET_TYPE, +# 146 "../../GCC/gcc/tree.def" +ENUMERAL_TYPE, + + + +BOOLEAN_TYPE, +# 160 "../../GCC/gcc/tree.def" +INTEGER_TYPE, + + + +REAL_TYPE, +# 173 "../../GCC/gcc/tree.def" +POINTER_TYPE, + + + +REFERENCE_TYPE, + + + + + + + +COMPLEX_TYPE, + + + + +VECTOR_TYPE, +# 206 "../../GCC/gcc/tree.def" +ARRAY_TYPE, +# 216 "../../GCC/gcc/tree.def" +RECORD_TYPE, + + + + + +UNION_TYPE, + + + + + +QUAL_UNION_TYPE, + + + + + + +VOID_TYPE, + + + + + + + +FUNCTION_TYPE, + + + + + + +METHOD_TYPE, + + + + + +LANG_TYPE, +# 270 "../../GCC/gcc/tree.def" +INTEGER_CST, + + +REAL_CST, + + + +COMPLEX_CST, + + +VECTOR_CST, + + +STRING_CST, +# 343 "../../GCC/gcc/tree.def" +FUNCTION_DECL, +LABEL_DECL, + + + + +FIELD_DECL, +VAR_DECL, +CONST_DECL, +PARM_DECL, +TYPE_DECL, +RESULT_DECL, + + + +STRUCT_FIELD_TAG, +NAME_MEMORY_TAG, +SYMBOL_MEMORY_TAG, + + + +NAMESPACE_DECL, + + + +TRANSLATION_UNIT_DECL, +# 378 "../../GCC/gcc/tree.def" +COMPONENT_REF, +# 387 "../../GCC/gcc/tree.def" +BIT_FIELD_REF, + + + + + + +INDIRECT_REF, + + + +ALIGN_INDIRECT_REF, + + + + + + +MISALIGNED_INDIRECT_REF, + + + + + + +ARRAY_REF, + + + + +ARRAY_RANGE_REF, +# 429 "../../GCC/gcc/tree.def" +OBJ_TYPE_REF, + + +EXC_PTR_EXPR, + + +FILTER_EXPR, +# 451 "../../GCC/gcc/tree.def" +CONSTRUCTOR, +# 461 "../../GCC/gcc/tree.def" +COMPOUND_EXPR, + + +MODIFY_EXPR, + + + + +INIT_EXPR, + + + + + + + +TARGET_EXPR, +# 487 "../../GCC/gcc/tree.def" +COND_EXPR, +# 499 "../../GCC/gcc/tree.def" +VEC_COND_EXPR, +# 522 "../../GCC/gcc/tree.def" +BIND_EXPR, + + + + + +CALL_EXPR, + + + + + + +WITH_CLEANUP_EXPR, +# 552 "../../GCC/gcc/tree.def" +CLEANUP_POINT_EXPR, +# 604 "../../GCC/gcc/tree.def" +PLACEHOLDER_EXPR, + + +PLUS_EXPR, +MINUS_EXPR, +MULT_EXPR, + + +TRUNC_DIV_EXPR, + + +CEIL_DIV_EXPR, + + +FLOOR_DIV_EXPR, + + +ROUND_DIV_EXPR, + + +TRUNC_MOD_EXPR, +CEIL_MOD_EXPR, +FLOOR_MOD_EXPR, +ROUND_MOD_EXPR, + + +RDIV_EXPR, + + + +EXACT_DIV_EXPR, + + + + + + +FIX_TRUNC_EXPR, +FIX_CEIL_EXPR, +FIX_FLOOR_EXPR, +FIX_ROUND_EXPR, + + +FLOAT_EXPR, + + +NEGATE_EXPR, + + + + +MIN_EXPR, +MAX_EXPR, + + + + + +ABS_EXPR, +# 671 "../../GCC/gcc/tree.def" +LSHIFT_EXPR, +RSHIFT_EXPR, +LROTATE_EXPR, +RROTATE_EXPR, + + +BIT_IOR_EXPR, +BIT_XOR_EXPR, +BIT_AND_EXPR, +BIT_NOT_EXPR, +# 691 "../../GCC/gcc/tree.def" +TRUTH_ANDIF_EXPR, +TRUTH_ORIF_EXPR, +TRUTH_AND_EXPR, +TRUTH_OR_EXPR, +TRUTH_XOR_EXPR, +TRUTH_NOT_EXPR, + + + + + + + +LT_EXPR, +LE_EXPR, +GT_EXPR, +GE_EXPR, +EQ_EXPR, +NE_EXPR, + + +UNORDERED_EXPR, +ORDERED_EXPR, + + +UNLT_EXPR, +UNLE_EXPR, +UNGT_EXPR, +UNGE_EXPR, +UNEQ_EXPR, + + +LTGT_EXPR, + +RANGE_EXPR, + + + + +CONVERT_EXPR, + + +NOP_EXPR, + + +NON_LVALUE_EXPR, +# 748 "../../GCC/gcc/tree.def" +VIEW_CONVERT_EXPR, + + + + +SAVE_EXPR, + + + +ADDR_EXPR, + + + +FDESC_EXPR, + + + +COMPLEX_EXPR, + + +CONJ_EXPR, + + + +REALPART_EXPR, +IMAGPART_EXPR, + + + + +PREDECREMENT_EXPR, +PREINCREMENT_EXPR, +POSTDECREMENT_EXPR, +POSTINCREMENT_EXPR, + + +VA_ARG_EXPR, + + + + + + +TRY_CATCH_EXPR, + + + + +TRY_FINALLY_EXPR, + + + + + +DECL_EXPR, + + + + +LABEL_EXPR, + + + +GOTO_EXPR, + + + + + + +RETURN_EXPR, + + + +EXIT_EXPR, + + + + +LOOP_EXPR, +# 841 "../../GCC/gcc/tree.def" +SWITCH_EXPR, + + + + + +CASE_LABEL_EXPR, + + + +RESX_EXPR, + + + + + +ASM_EXPR, + + + + +SSA_NAME, + + + + + + + +PHI_NODE, + + + +CATCH_EXPR, + + + + + +EH_FILTER_EXPR, + + + +SCEV_KNOWN, + + + +SCEV_NOT_KNOWN, + + + +POLYNOMIAL_CHREC, + + + +STATEMENT_LIST, + + + + + +VALUE_HANDLE, +# 916 "../../GCC/gcc/tree.def" +ASSERT_EXPR, + + + +TREE_BINFO, + + + + + + +WITH_SIZE_EXPR, +# 938 "../../GCC/gcc/tree.def" +REALIGN_LOAD_EXPR, +# 953 "../../GCC/gcc/tree.def" +TARGET_MEM_REF, +# 967 "../../GCC/gcc/tree.def" +OMP_PARALLEL, +# 988 "../../GCC/gcc/tree.def" +OMP_FOR, + + + + +OMP_SECTIONS, + + + + +OMP_SINGLE, + + + +OMP_SECTION, + + + +OMP_MASTER, + + + +OMP_ORDERED, + + + + +OMP_CRITICAL, + + +OMP_RETURN, + + + +OMP_CONTINUE, + + + + + + + +OMP_ATOMIC, + + +OMP_CLAUSE, + + + + + + + +REDUC_MAX_EXPR, +REDUC_MIN_EXPR, +REDUC_PLUS_EXPR, +# 1054 "../../GCC/gcc/tree.def" +DOT_PROD_EXPR, +# 1063 "../../GCC/gcc/tree.def" +WIDEN_SUM_EXPR, + + + + + + +WIDEN_MULT_EXPR, + + + + +VEC_LSHIFT_EXPR, +VEC_RSHIFT_EXPR, +# 36 "../../GCC/gcc/tree.h" 2 + + LAST_AND_UNUSED_TREE_CODE + +}; + + + +extern unsigned char tree_contains_struct[256][64]; +# 54 "../../GCC/gcc/tree.h" +enum tree_code_class { + tcc_exceptional, + tcc_constant, + + tcc_type, + tcc_declaration, + tcc_reference, + tcc_comparison, + tcc_unary, + tcc_binary, + tcc_statement, + + tcc_expression +}; + + + + +extern const char *const tree_code_class_strings[]; + + + + + + + +extern const enum tree_code_class tree_code_type[]; +# 185 "../../GCC/gcc/tree.h" +extern const unsigned char tree_code_length[]; + + + + +extern const char *const tree_code_name[]; + + +static __inline__ void VEC_tree_must_be_pointer_type (void) { (void)((tree)1 == (void *)1); } typedef struct VEC_tree_base { unsigned num; unsigned alloc; tree vec[1]; } VEC_tree_base; typedef struct VEC_tree_none { VEC_tree_base base; } VEC_tree_none; static __inline__ unsigned VEC_tree_base_length (const VEC_tree_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ tree VEC_tree_base_last (const VEC_tree_base *vec_ ) { (void)(vec_ && vec_->num); return vec_->vec[vec_->num - 1]; } static __inline__ tree VEC_tree_base_index (const VEC_tree_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return vec_->vec[ix_]; } static __inline__ int VEC_tree_base_iterate (const VEC_tree_base *vec_, unsigned ix_, tree *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_tree_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_tree_base, vec) + alloc_ * sizeof(tree); } static __inline__ void VEC_tree_base_embedded_init (VEC_tree_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_tree_base_space (VEC_tree_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ tree *VEC_tree_base_quick_push (VEC_tree_base *vec_, tree obj_ ) { tree *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ tree VEC_tree_base_pop (VEC_tree_base *vec_ ) { tree obj_; (void)(vec_->num); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_tree_base_truncate (VEC_tree_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ tree VEC_tree_base_replace (VEC_tree_base *vec_, unsigned ix_, tree obj_ ) { tree old_obj_; (void)(ix_ < vec_->num); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ tree *VEC_tree_base_quick_insert (VEC_tree_base *vec_, unsigned ix_, tree obj_ ) { tree *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (tree)); *slot_ = obj_; return slot_; } static __inline__ tree VEC_tree_base_ordered_remove (VEC_tree_base *vec_, unsigned ix_ ) { tree *slot_; tree obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (tree)); return obj_; } static __inline__ tree VEC_tree_base_unordered_remove (VEC_tree_base *vec_, unsigned ix_ ) { tree *slot_; tree obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_tree_base_block_remove (VEC_tree_base *vec_, unsigned ix_, unsigned len_ ) { tree *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (tree)); } static __inline__ tree *VEC_tree_base_address (VEC_tree_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_tree_base_lower_bound (VEC_tree_base *vec_, const tree obj_, unsigned char (*lessthan_)(const tree, const tree) ) { unsigned int len_ = VEC_tree_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { tree middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_tree_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_tree_gc { VEC_tree_base base; } VEC_tree_gc; static __inline__ VEC_tree_gc *VEC_tree_gc_alloc (int alloc_ ) { return (VEC_tree_gc *) vec_gc_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_tree_gc_free (VEC_tree_gc **vec_) { if (*vec_) ggc_free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_tree_gc *VEC_tree_gc_copy (VEC_tree_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_tree_gc *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_tree_gc *)(vec_gc_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (tree) * len_); } return new_vec_; } static __inline__ int VEC_tree_gc_reserve (VEC_tree_gc **vec_, int alloc_ ) { int extend = !VEC_tree_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_tree_gc *) vec_gc_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_tree_gc_reserve_exact (VEC_tree_gc **vec_, int alloc_ ) { int extend = !VEC_tree_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_tree_gc *) vec_gc_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_tree_gc_safe_grow (VEC_tree_gc **vec_, int size_ ) { (void)(size_ >= 0 && VEC_tree_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_tree_gc_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ tree *VEC_tree_gc_safe_push (VEC_tree_gc **vec_, tree obj_ ) { VEC_tree_gc_reserve (vec_, 1 ); return VEC_tree_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ tree *VEC_tree_gc_safe_insert (VEC_tree_gc **vec_, unsigned ix_, tree obj_ ) { VEC_tree_gc_reserve (vec_, 1 ); return VEC_tree_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; +typedef struct VEC_tree_heap { VEC_tree_base base; } VEC_tree_heap; static __inline__ VEC_tree_heap *VEC_tree_heap_alloc (int alloc_ ) { return (VEC_tree_heap *) vec_heap_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_tree_heap_free (VEC_tree_heap **vec_) { if (*vec_) free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_tree_heap *VEC_tree_heap_copy (VEC_tree_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_tree_heap *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_tree_heap *)(vec_heap_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (tree) * len_); } return new_vec_; } static __inline__ int VEC_tree_heap_reserve (VEC_tree_heap **vec_, int alloc_ ) { int extend = !VEC_tree_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_tree_heap *) vec_heap_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_tree_heap_reserve_exact (VEC_tree_heap **vec_, int alloc_ ) { int extend = !VEC_tree_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_tree_heap *) vec_heap_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_tree_heap_safe_grow (VEC_tree_heap **vec_, int size_ ) { (void)(size_ >= 0 && VEC_tree_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_tree_heap_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ tree *VEC_tree_heap_safe_push (VEC_tree_heap **vec_, tree obj_ ) { VEC_tree_heap_reserve (vec_, 1 ); return VEC_tree_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ tree *VEC_tree_heap_safe_insert (VEC_tree_heap **vec_, unsigned ix_, tree obj_ ) { VEC_tree_heap_reserve (vec_, 1 ); return VEC_tree_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; + + + + +enum built_in_class +{ + NOT_BUILT_IN = 0, + BUILT_IN_FRONTEND, + BUILT_IN_MD, + BUILT_IN_NORMAL +}; + + +extern const char *const built_in_class_names[4]; + + + + + +enum built_in_function +{ +# 1 "../../GCC/gcc/builtins.def" 1 +# 176 "../../GCC/gcc/builtins.def" +BUILT_IN_ACOS, +BUILT_IN_ACOSF, +BUILT_IN_ACOSH, +BUILT_IN_ACOSHF, +BUILT_IN_ACOSHL, +BUILT_IN_ACOSL, +BUILT_IN_ASIN, +BUILT_IN_ASINF, +BUILT_IN_ASINH, +BUILT_IN_ASINHF, +BUILT_IN_ASINHL, +BUILT_IN_ASINL, +BUILT_IN_ATAN, +BUILT_IN_ATAN2, +BUILT_IN_ATAN2F, +BUILT_IN_ATAN2L, +BUILT_IN_ATANF, +BUILT_IN_ATANH, +BUILT_IN_ATANHF, +BUILT_IN_ATANHL, +BUILT_IN_ATANL, +BUILT_IN_CBRT, +BUILT_IN_CBRTF, +BUILT_IN_CBRTL, +BUILT_IN_CEIL, +BUILT_IN_CEILF, +BUILT_IN_CEILL, +BUILT_IN_COPYSIGN, +BUILT_IN_COPYSIGNF, +BUILT_IN_COPYSIGNL, +BUILT_IN_COS, +BUILT_IN_COSF, +BUILT_IN_COSH, +BUILT_IN_COSHF, +BUILT_IN_COSHL, +BUILT_IN_COSL, +BUILT_IN_DREM, +BUILT_IN_DREMF, +BUILT_IN_DREML, +BUILT_IN_ERF, +BUILT_IN_ERFC, +BUILT_IN_ERFCF, +BUILT_IN_ERFCL, +BUILT_IN_ERFF, +BUILT_IN_ERFL, +BUILT_IN_EXP, +BUILT_IN_EXP10, +BUILT_IN_EXP10F, +BUILT_IN_EXP10L, +BUILT_IN_EXP2, +BUILT_IN_EXP2F, +BUILT_IN_EXP2L, +BUILT_IN_EXPF, +BUILT_IN_EXPL, +BUILT_IN_EXPM1, +BUILT_IN_EXPM1F, +BUILT_IN_EXPM1L, +BUILT_IN_FABS, +BUILT_IN_FABSF, +BUILT_IN_FABSL, +BUILT_IN_FDIM, +BUILT_IN_FDIMF, +BUILT_IN_FDIML, +BUILT_IN_FLOOR, +BUILT_IN_FLOORF, +BUILT_IN_FLOORL, +BUILT_IN_FMA, +BUILT_IN_FMAF, +BUILT_IN_FMAL, +BUILT_IN_FMAX, +BUILT_IN_FMAXF, +BUILT_IN_FMAXL, +BUILT_IN_FMIN, +BUILT_IN_FMINF, +BUILT_IN_FMINL, +BUILT_IN_FMOD, +BUILT_IN_FMODF, +BUILT_IN_FMODL, +BUILT_IN_FREXP, +BUILT_IN_FREXPF, +BUILT_IN_FREXPL, +BUILT_IN_GAMMA, +BUILT_IN_GAMMAF, +BUILT_IN_GAMMAL, +BUILT_IN_HUGE_VAL, +BUILT_IN_HUGE_VALF, +BUILT_IN_HUGE_VALL, +BUILT_IN_HYPOT, +BUILT_IN_HYPOTF, +BUILT_IN_HYPOTL, +BUILT_IN_ILOGB, +BUILT_IN_ILOGBF, +BUILT_IN_ILOGBL, +BUILT_IN_INF, +BUILT_IN_INFF, +BUILT_IN_INFL, +BUILT_IN_INFD32, +BUILT_IN_INFD64, +BUILT_IN_INFD128, +BUILT_IN_J0, +BUILT_IN_J0F, +BUILT_IN_J0L, +BUILT_IN_J1, +BUILT_IN_J1F, +BUILT_IN_J1L, +BUILT_IN_JN, +BUILT_IN_JNF, +BUILT_IN_JNL, +BUILT_IN_LCEIL, +BUILT_IN_LCEILF, +BUILT_IN_LCEILL, +BUILT_IN_LDEXP, +BUILT_IN_LDEXPF, +BUILT_IN_LDEXPL, +BUILT_IN_LFLOOR, +BUILT_IN_LFLOORF, +BUILT_IN_LFLOORL, +BUILT_IN_LGAMMA, +BUILT_IN_LGAMMAF, +BUILT_IN_LGAMMAL, +BUILT_IN_LLCEIL, +BUILT_IN_LLCEILF, +BUILT_IN_LLCEILL, +BUILT_IN_LLFLOOR, +BUILT_IN_LLFLOORF, +BUILT_IN_LLFLOORL, +BUILT_IN_LLRINT, +BUILT_IN_LLRINTF, +BUILT_IN_LLRINTL, +BUILT_IN_LLROUND, +BUILT_IN_LLROUNDF, +BUILT_IN_LLROUNDL, +BUILT_IN_LOG, +BUILT_IN_LOG10, +BUILT_IN_LOG10F, +BUILT_IN_LOG10L, +BUILT_IN_LOG1P, +BUILT_IN_LOG1PF, +BUILT_IN_LOG1PL, +BUILT_IN_LOG2, +BUILT_IN_LOG2F, +BUILT_IN_LOG2L, +BUILT_IN_LOGB, +BUILT_IN_LOGBF, +BUILT_IN_LOGBL, +BUILT_IN_LOGF, +BUILT_IN_LOGL, +BUILT_IN_LRINT, +BUILT_IN_LRINTF, +BUILT_IN_LRINTL, +BUILT_IN_LROUND, +BUILT_IN_LROUNDF, +BUILT_IN_LROUNDL, +BUILT_IN_MODF, +BUILT_IN_MODFF, +BUILT_IN_MODFL, +BUILT_IN_NAN, +BUILT_IN_NANF, +BUILT_IN_NANL, +BUILT_IN_NAND32, +BUILT_IN_NAND64, +BUILT_IN_NAND128, +BUILT_IN_NANS, +BUILT_IN_NANSF, +BUILT_IN_NANSL, +BUILT_IN_NEARBYINT, +BUILT_IN_NEARBYINTF, +BUILT_IN_NEARBYINTL, +BUILT_IN_NEXTAFTER, +BUILT_IN_NEXTAFTERF, +BUILT_IN_NEXTAFTERL, +BUILT_IN_NEXTTOWARD, +BUILT_IN_NEXTTOWARDF, +BUILT_IN_NEXTTOWARDL, +BUILT_IN_POW, +BUILT_IN_POW10, +BUILT_IN_POW10F, +BUILT_IN_POW10L, +BUILT_IN_POWF, +BUILT_IN_POWI, +BUILT_IN_POWIF, +BUILT_IN_POWIL, +BUILT_IN_POWL, +BUILT_IN_REMAINDER, +BUILT_IN_REMAINDERF, +BUILT_IN_REMAINDERL, +BUILT_IN_REMQUO, +BUILT_IN_REMQUOF, +BUILT_IN_REMQUOL, +BUILT_IN_RINT, +BUILT_IN_RINTF, +BUILT_IN_RINTL, +BUILT_IN_ROUND, +BUILT_IN_ROUNDF, +BUILT_IN_ROUNDL, +BUILT_IN_SCALB, +BUILT_IN_SCALBF, +BUILT_IN_SCALBL, +BUILT_IN_SCALBLN, +BUILT_IN_SCALBLNF, +BUILT_IN_SCALBLNL, +BUILT_IN_SCALBN, +BUILT_IN_SCALBNF, +BUILT_IN_SCALBNL, +BUILT_IN_SIGNBIT, +BUILT_IN_SIGNBITF, +BUILT_IN_SIGNBITL, +BUILT_IN_SIGNIFICAND, +BUILT_IN_SIGNIFICANDF, +BUILT_IN_SIGNIFICANDL, +BUILT_IN_SIN, +BUILT_IN_SINCOS, +BUILT_IN_SINCOSF, +BUILT_IN_SINCOSL, +BUILT_IN_SINF, +BUILT_IN_SINH, +BUILT_IN_SINHF, +BUILT_IN_SINHL, +BUILT_IN_SINL, +BUILT_IN_SQRT, +BUILT_IN_SQRTF, +BUILT_IN_SQRTL, +BUILT_IN_TAN, +BUILT_IN_TANF, +BUILT_IN_TANH, +BUILT_IN_TANHF, +BUILT_IN_TANHL, +BUILT_IN_TANL, +BUILT_IN_TGAMMA, +BUILT_IN_TGAMMAF, +BUILT_IN_TGAMMAL, +BUILT_IN_TRUNC, +BUILT_IN_TRUNCF, +BUILT_IN_TRUNCL, +BUILT_IN_Y0, +BUILT_IN_Y0F, +BUILT_IN_Y0L, +BUILT_IN_Y1, +BUILT_IN_Y1F, +BUILT_IN_Y1L, +BUILT_IN_YN, +BUILT_IN_YNF, +BUILT_IN_YNL, + + +BUILT_IN_CABS, +BUILT_IN_CABSF, +BUILT_IN_CABSL, +BUILT_IN_CACOS, +BUILT_IN_CACOSF, +BUILT_IN_CACOSH, +BUILT_IN_CACOSHF, +BUILT_IN_CACOSHL, +BUILT_IN_CACOSL, +BUILT_IN_CARG, +BUILT_IN_CARGF, +BUILT_IN_CARGL, +BUILT_IN_CASIN, +BUILT_IN_CASINF, +BUILT_IN_CASINH, +BUILT_IN_CASINHF, +BUILT_IN_CASINHL, +BUILT_IN_CASINL, +BUILT_IN_CATAN, +BUILT_IN_CATANF, +BUILT_IN_CATANH, +BUILT_IN_CATANHF, +BUILT_IN_CATANHL, +BUILT_IN_CATANL, +BUILT_IN_CCOS, +BUILT_IN_CCOSF, +BUILT_IN_CCOSH, +BUILT_IN_CCOSHF, +BUILT_IN_CCOSHL, +BUILT_IN_CCOSL, +BUILT_IN_CEXP, +BUILT_IN_CEXPF, +BUILT_IN_CEXPL, +BUILT_IN_CIMAG, +BUILT_IN_CIMAGF, +BUILT_IN_CIMAGL, +BUILT_IN_CLOG, +BUILT_IN_CLOGF, +BUILT_IN_CLOGL, +BUILT_IN_CLOG10, +BUILT_IN_CLOG10F, +BUILT_IN_CLOG10L, +BUILT_IN_CONJ, +BUILT_IN_CONJF, +BUILT_IN_CONJL, +BUILT_IN_CPOW, +BUILT_IN_CPOWF, +BUILT_IN_CPOWL, +BUILT_IN_CPROJ, +BUILT_IN_CPROJF, +BUILT_IN_CPROJL, +BUILT_IN_CREAL, +BUILT_IN_CREALF, +BUILT_IN_CREALL, +BUILT_IN_CSIN, +BUILT_IN_CSINF, +BUILT_IN_CSINH, +BUILT_IN_CSINHF, +BUILT_IN_CSINHL, +BUILT_IN_CSINL, +BUILT_IN_CSQRT, +BUILT_IN_CSQRTF, +BUILT_IN_CSQRTL, +BUILT_IN_CTAN, +BUILT_IN_CTANF, +BUILT_IN_CTANH, +BUILT_IN_CTANHF, +BUILT_IN_CTANHL, +BUILT_IN_CTANL, + + + + +BUILT_IN_BCMP, +BUILT_IN_BCOPY, +BUILT_IN_BZERO, +BUILT_IN_INDEX, +BUILT_IN_MEMCMP, +BUILT_IN_MEMCPY, +BUILT_IN_MEMMOVE, +BUILT_IN_MEMPCPY, +BUILT_IN_MEMSET, +BUILT_IN_RINDEX, +BUILT_IN_STPCPY, +BUILT_IN_STPNCPY, +BUILT_IN_STRCASECMP, +BUILT_IN_STRCAT, +BUILT_IN_STRCHR, +BUILT_IN_STRCMP, +BUILT_IN_STRCPY, +BUILT_IN_STRCSPN, +BUILT_IN_STRDUP, +BUILT_IN_STRNDUP, +BUILT_IN_STRLEN, +BUILT_IN_STRNCASECMP, +BUILT_IN_STRNCAT, +BUILT_IN_STRNCMP, +BUILT_IN_STRNCPY, +BUILT_IN_STRPBRK, +BUILT_IN_STRRCHR, +BUILT_IN_STRSPN, +BUILT_IN_STRSTR, + + +BUILT_IN_FPRINTF, +BUILT_IN_FPRINTF_UNLOCKED, +BUILT_IN_PUTC, +BUILT_IN_PUTC_UNLOCKED, +BUILT_IN_FPUTC, +BUILT_IN_FPUTC_UNLOCKED, +BUILT_IN_FPUTS, +BUILT_IN_FPUTS_UNLOCKED, +BUILT_IN_FSCANF, +BUILT_IN_FWRITE, +BUILT_IN_FWRITE_UNLOCKED, +BUILT_IN_PRINTF, +BUILT_IN_PRINTF_UNLOCKED, +BUILT_IN_PUTCHAR, +BUILT_IN_PUTCHAR_UNLOCKED, +BUILT_IN_PUTS, +BUILT_IN_PUTS_UNLOCKED, +BUILT_IN_SCANF, +BUILT_IN_SNPRINTF, +BUILT_IN_SPRINTF, +BUILT_IN_SSCANF, +BUILT_IN_VFPRINTF, +BUILT_IN_VFSCANF, +BUILT_IN_VPRINTF, +BUILT_IN_VSCANF, +BUILT_IN_VSNPRINTF, +BUILT_IN_VSPRINTF, +BUILT_IN_VSSCANF, + + +BUILT_IN_ISALNUM, +BUILT_IN_ISALPHA, +BUILT_IN_ISASCII, +BUILT_IN_ISBLANK, +BUILT_IN_ISCNTRL, +BUILT_IN_ISDIGIT, +BUILT_IN_ISGRAPH, +BUILT_IN_ISLOWER, +BUILT_IN_ISPRINT, +BUILT_IN_ISPUNCT, +BUILT_IN_ISSPACE, +BUILT_IN_ISUPPER, +BUILT_IN_ISXDIGIT, +BUILT_IN_TOASCII, +BUILT_IN_TOLOWER, +BUILT_IN_TOUPPER, + + +BUILT_IN_ISWALNUM, +BUILT_IN_ISWALPHA, +BUILT_IN_ISWBLANK, +BUILT_IN_ISWCNTRL, +BUILT_IN_ISWDIGIT, +BUILT_IN_ISWGRAPH, +BUILT_IN_ISWLOWER, +BUILT_IN_ISWPRINT, +BUILT_IN_ISWPUNCT, +BUILT_IN_ISWSPACE, +BUILT_IN_ISWUPPER, +BUILT_IN_ISWXDIGIT, +BUILT_IN_TOWLOWER, +BUILT_IN_TOWUPPER, + + +BUILT_IN_ABORT, +BUILT_IN_ABS, +BUILT_IN_AGGREGATE_INCOMING_ADDRESS, +BUILT_IN_ALLOCA, +BUILT_IN_APPLY, +BUILT_IN_APPLY_ARGS, +BUILT_IN_ARGS_INFO, +BUILT_IN_CALLOC, +BUILT_IN_CLASSIFY_TYPE, +BUILT_IN_CLZ, +BUILT_IN_CLZIMAX, +BUILT_IN_CLZL, +BUILT_IN_CLZLL, +BUILT_IN_CONSTANT_P, +BUILT_IN_CTZ, +BUILT_IN_CTZIMAX, +BUILT_IN_CTZL, +BUILT_IN_CTZLL, +BUILT_IN_DCGETTEXT, +BUILT_IN_DGETTEXT, +BUILT_IN_DWARF_CFA, +BUILT_IN_DWARF_SP_COLUMN, +BUILT_IN_EH_RETURN, +BUILT_IN_EH_RETURN_DATA_REGNO, +BUILT_IN_EXECL, +BUILT_IN_EXECLP, +BUILT_IN_EXECLE, +BUILT_IN_EXECV, +BUILT_IN_EXECVP, +BUILT_IN_EXECVE, +BUILT_IN_EXIT, +BUILT_IN_EXPECT, +BUILT_IN_EXTEND_POINTER, +BUILT_IN_EXTRACT_RETURN_ADDR, +BUILT_IN_FFS, +BUILT_IN_FFSIMAX, +BUILT_IN_FFSL, +BUILT_IN_FFSLL, +BUILT_IN_FORK, +BUILT_IN_FRAME_ADDRESS, +BUILT_IN_FROB_RETURN_ADDR, +BUILT_IN_GETTEXT, +BUILT_IN_IMAXABS, +BUILT_IN_INIT_DWARF_REG_SIZES, +BUILT_IN_FINITE, +BUILT_IN_FINITEF, +BUILT_IN_FINITEL, +BUILT_IN_FINITED32, +BUILT_IN_FINITED64, +BUILT_IN_FINITED128, +BUILT_IN_ISINF, +BUILT_IN_ISINFF, +BUILT_IN_ISINFL, +BUILT_IN_ISINFD32, +BUILT_IN_ISINFD64, +BUILT_IN_ISINFD128, +BUILT_IN_ISNAN, +BUILT_IN_ISNANF, +BUILT_IN_ISNANL, +BUILT_IN_ISNAND32, +BUILT_IN_ISNAND64, +BUILT_IN_ISNAND128, +BUILT_IN_ISGREATER, +BUILT_IN_ISGREATEREQUAL, +BUILT_IN_ISLESS, +BUILT_IN_ISLESSEQUAL, +BUILT_IN_ISLESSGREATER, +BUILT_IN_ISUNORDERED, +BUILT_IN_LABS, +BUILT_IN_LLABS, +BUILT_IN_LONGJMP, +BUILT_IN_MALLOC, +BUILT_IN_NEXT_ARG, +BUILT_IN_PARITY, +BUILT_IN_PARITYIMAX, +BUILT_IN_PARITYL, +BUILT_IN_PARITYLL, +BUILT_IN_POPCOUNT, +BUILT_IN_POPCOUNTIMAX, +BUILT_IN_POPCOUNTL, +BUILT_IN_POPCOUNTLL, +BUILT_IN_PREFETCH, +BUILT_IN_RETURN, +BUILT_IN_RETURN_ADDRESS, +BUILT_IN_SAVEREGS, +BUILT_IN_SETJMP, +BUILT_IN_STDARG_START, +BUILT_IN_STRFMON, +BUILT_IN_STRFTIME, +BUILT_IN_TRAP, +BUILT_IN_UNWIND_INIT, +BUILT_IN_UPDATE_SETJMP_BUF, +BUILT_IN_VA_COPY, +BUILT_IN_VA_END, +BUILT_IN_VA_START, +BUILT_IN__EXIT, +BUILT_IN__EXIT2, + + +BUILT_IN_INIT_TRAMPOLINE, +BUILT_IN_ADJUST_TRAMPOLINE, +BUILT_IN_NONLOCAL_GOTO, + + +BUILT_IN_SETJMP_SETUP, +BUILT_IN_SETJMP_DISPATCHER, +BUILT_IN_SETJMP_RECEIVER, + + +BUILT_IN_STACK_SAVE, +BUILT_IN_STACK_RESTORE, + + +BUILT_IN_OBJECT_SIZE, +BUILT_IN_MEMCPY_CHK, +BUILT_IN_MEMMOVE_CHK, +BUILT_IN_MEMPCPY_CHK, +BUILT_IN_MEMSET_CHK, +BUILT_IN_STPCPY_CHK, +BUILT_IN_STRCAT_CHK, +BUILT_IN_STRCPY_CHK, +BUILT_IN_STRNCAT_CHK, +BUILT_IN_STRNCPY_CHK, +BUILT_IN_SNPRINTF_CHK, +BUILT_IN_SPRINTF_CHK, +BUILT_IN_VSNPRINTF_CHK, +BUILT_IN_VSPRINTF_CHK, +BUILT_IN_FPRINTF_CHK, +BUILT_IN_PRINTF_CHK, +BUILT_IN_VFPRINTF_CHK, +BUILT_IN_VPRINTF_CHK, + + +BUILT_IN_PROFILE_FUNC_ENTER, +BUILT_IN_PROFILE_FUNC_EXIT, + + +# 1 "../../GCC/gcc/sync-builtins.def" 1 +# 31 "../../GCC/gcc/sync-builtins.def" +BUILT_IN_FETCH_AND_ADD_N, + +BUILT_IN_FETCH_AND_ADD_1, + +BUILT_IN_FETCH_AND_ADD_2, + +BUILT_IN_FETCH_AND_ADD_4, + +BUILT_IN_FETCH_AND_ADD_8, + +BUILT_IN_FETCH_AND_ADD_16, + + +BUILT_IN_FETCH_AND_SUB_N, + +BUILT_IN_FETCH_AND_SUB_1, + +BUILT_IN_FETCH_AND_SUB_2, + +BUILT_IN_FETCH_AND_SUB_4, + +BUILT_IN_FETCH_AND_SUB_8, + +BUILT_IN_FETCH_AND_SUB_16, + + +BUILT_IN_FETCH_AND_OR_N, + +BUILT_IN_FETCH_AND_OR_1, + +BUILT_IN_FETCH_AND_OR_2, + +BUILT_IN_FETCH_AND_OR_4, + +BUILT_IN_FETCH_AND_OR_8, + +BUILT_IN_FETCH_AND_OR_16, + + +BUILT_IN_FETCH_AND_AND_N, + +BUILT_IN_FETCH_AND_AND_1, + +BUILT_IN_FETCH_AND_AND_2, + +BUILT_IN_FETCH_AND_AND_4, + +BUILT_IN_FETCH_AND_AND_8, + +BUILT_IN_FETCH_AND_AND_16, + + +BUILT_IN_FETCH_AND_XOR_N, + +BUILT_IN_FETCH_AND_XOR_1, + +BUILT_IN_FETCH_AND_XOR_2, + +BUILT_IN_FETCH_AND_XOR_4, + +BUILT_IN_FETCH_AND_XOR_8, + +BUILT_IN_FETCH_AND_XOR_16, + + +BUILT_IN_FETCH_AND_NAND_N, + +BUILT_IN_FETCH_AND_NAND_1, + +BUILT_IN_FETCH_AND_NAND_2, + +BUILT_IN_FETCH_AND_NAND_4, + +BUILT_IN_FETCH_AND_NAND_8, + +BUILT_IN_FETCH_AND_NAND_16, + + +BUILT_IN_ADD_AND_FETCH_N, + +BUILT_IN_ADD_AND_FETCH_1, + +BUILT_IN_ADD_AND_FETCH_2, + +BUILT_IN_ADD_AND_FETCH_4, + +BUILT_IN_ADD_AND_FETCH_8, + +BUILT_IN_ADD_AND_FETCH_16, + + +BUILT_IN_SUB_AND_FETCH_N, + +BUILT_IN_SUB_AND_FETCH_1, + +BUILT_IN_SUB_AND_FETCH_2, + +BUILT_IN_SUB_AND_FETCH_4, + +BUILT_IN_SUB_AND_FETCH_8, + +BUILT_IN_SUB_AND_FETCH_16, + + +BUILT_IN_OR_AND_FETCH_N, + +BUILT_IN_OR_AND_FETCH_1, + +BUILT_IN_OR_AND_FETCH_2, + +BUILT_IN_OR_AND_FETCH_4, + +BUILT_IN_OR_AND_FETCH_8, + +BUILT_IN_OR_AND_FETCH_16, + + +BUILT_IN_AND_AND_FETCH_N, + +BUILT_IN_AND_AND_FETCH_1, + +BUILT_IN_AND_AND_FETCH_2, + +BUILT_IN_AND_AND_FETCH_4, + +BUILT_IN_AND_AND_FETCH_8, + +BUILT_IN_AND_AND_FETCH_16, + + +BUILT_IN_XOR_AND_FETCH_N, + +BUILT_IN_XOR_AND_FETCH_1, + +BUILT_IN_XOR_AND_FETCH_2, + +BUILT_IN_XOR_AND_FETCH_4, + +BUILT_IN_XOR_AND_FETCH_8, + +BUILT_IN_XOR_AND_FETCH_16, + + +BUILT_IN_NAND_AND_FETCH_N, + +BUILT_IN_NAND_AND_FETCH_1, + +BUILT_IN_NAND_AND_FETCH_2, + +BUILT_IN_NAND_AND_FETCH_4, + +BUILT_IN_NAND_AND_FETCH_8, + +BUILT_IN_NAND_AND_FETCH_16, + + +BUILT_IN_BOOL_COMPARE_AND_SWAP_N, + + +BUILT_IN_BOOL_COMPARE_AND_SWAP_1, + + +BUILT_IN_BOOL_COMPARE_AND_SWAP_2, + + +BUILT_IN_BOOL_COMPARE_AND_SWAP_4, + + +BUILT_IN_BOOL_COMPARE_AND_SWAP_8, + + +BUILT_IN_BOOL_COMPARE_AND_SWAP_16, + + + +BUILT_IN_VAL_COMPARE_AND_SWAP_N, + + +BUILT_IN_VAL_COMPARE_AND_SWAP_1, + + +BUILT_IN_VAL_COMPARE_AND_SWAP_2, + + +BUILT_IN_VAL_COMPARE_AND_SWAP_4, + + +BUILT_IN_VAL_COMPARE_AND_SWAP_8, + + +BUILT_IN_VAL_COMPARE_AND_SWAP_16, + + + +BUILT_IN_LOCK_TEST_AND_SET_N, + +BUILT_IN_LOCK_TEST_AND_SET_1, + +BUILT_IN_LOCK_TEST_AND_SET_2, + +BUILT_IN_LOCK_TEST_AND_SET_4, + +BUILT_IN_LOCK_TEST_AND_SET_8, + +BUILT_IN_LOCK_TEST_AND_SET_16, + + +BUILT_IN_LOCK_RELEASE_N, + +BUILT_IN_LOCK_RELEASE_1, + +BUILT_IN_LOCK_RELEASE_2, + +BUILT_IN_LOCK_RELEASE_4, + +BUILT_IN_LOCK_RELEASE_8, + +BUILT_IN_LOCK_RELEASE_16, + + +BUILT_IN_SYNCHRONIZE, +# 727 "../../GCC/gcc/builtins.def" 2 + + +# 1 "../../GCC/gcc/omp-builtins.def" 1 +# 27 "../../GCC/gcc/omp-builtins.def" +BUILT_IN_OMP_GET_THREAD_NUM, + +BUILT_IN_OMP_GET_NUM_THREADS, + + +BUILT_IN_GOMP_ATOMIC_START, + +BUILT_IN_GOMP_ATOMIC_END, + +BUILT_IN_GOMP_BARRIER, + +BUILT_IN_GOMP_CRITICAL_START, + +BUILT_IN_GOMP_CRITICAL_END, + +BUILT_IN_GOMP_CRITICAL_NAME_START, + + +BUILT_IN_GOMP_CRITICAL_NAME_END, + + + + + +BUILT_IN_GOMP_LOOP_STATIC_START, + + + +BUILT_IN_GOMP_LOOP_DYNAMIC_START, + + + +BUILT_IN_GOMP_LOOP_GUIDED_START, + + + +BUILT_IN_GOMP_LOOP_RUNTIME_START, + + + +BUILT_IN_GOMP_LOOP_ORDERED_STATIC_START, + + + +BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_START, + + + +BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_START, + + + +BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_START, + + + +BUILT_IN_GOMP_LOOP_STATIC_NEXT, + +BUILT_IN_GOMP_LOOP_DYNAMIC_NEXT, + +BUILT_IN_GOMP_LOOP_GUIDED_NEXT, + +BUILT_IN_GOMP_LOOP_RUNTIME_NEXT, + +BUILT_IN_GOMP_LOOP_ORDERED_STATIC_NEXT, + + +BUILT_IN_GOMP_LOOP_ORDERED_DYNAMIC_NEXT, + + +BUILT_IN_GOMP_LOOP_ORDERED_GUIDED_NEXT, + + +BUILT_IN_GOMP_LOOP_ORDERED_RUNTIME_NEXT, + + + + + +BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START, + + + +BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START, + + + +BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START, + + + +BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START, + + + +BUILT_IN_GOMP_LOOP_END, + +BUILT_IN_GOMP_LOOP_END_NOWAIT, + +BUILT_IN_GOMP_ORDERED_START, + +BUILT_IN_GOMP_ORDERED_END, + +BUILT_IN_GOMP_PARALLEL_START, + +BUILT_IN_GOMP_PARALLEL_END, + +BUILT_IN_GOMP_SECTIONS_START, + +BUILT_IN_GOMP_SECTIONS_NEXT, + +BUILT_IN_GOMP_PARALLEL_SECTIONS_START, + + +BUILT_IN_GOMP_SECTIONS_END, + +BUILT_IN_GOMP_SECTIONS_END_NOWAIT, + + +BUILT_IN_GOMP_SINGLE_START, + +BUILT_IN_GOMP_SINGLE_COPY_START, + +BUILT_IN_GOMP_SINGLE_COPY_END, +# 729 "../../GCC/gcc/builtins.def" 2 +# 218 "../../GCC/gcc/tree.h" 2 + + + + BUILT_IN_COMPLEX_MUL_MIN, + BUILT_IN_COMPLEX_MUL_MAX + = BUILT_IN_COMPLEX_MUL_MIN + + MAX_MODE_COMPLEX_FLOAT + - MIN_MODE_COMPLEX_FLOAT, + + BUILT_IN_COMPLEX_DIV_MIN, + BUILT_IN_COMPLEX_DIV_MAX + = BUILT_IN_COMPLEX_DIV_MIN + + MAX_MODE_COMPLEX_FLOAT + - MIN_MODE_COMPLEX_FLOAT, + + + END_BUILTINS +}; + + + +extern const char * built_in_names[(int) END_BUILTINS]; +# 263 "../../GCC/gcc/tree.h" +extern tree built_in_decls[(int) END_BUILTINS]; +extern tree implicit_built_in_decls[(int) END_BUILTINS]; + + + + +extern unsigned const char omp_clause_num_ops[]; +extern const char * const omp_clause_code_name[]; + + + +enum omp_clause_code +{ + + + OMP_CLAUSE_ERROR = 0, + + + OMP_CLAUSE_PRIVATE, + + + OMP_CLAUSE_SHARED, + + + OMP_CLAUSE_FIRSTPRIVATE, + + + OMP_CLAUSE_LASTPRIVATE, +# 299 "../../GCC/gcc/tree.h" + OMP_CLAUSE_REDUCTION, + + + OMP_CLAUSE_COPYIN, + + + OMP_CLAUSE_COPYPRIVATE, + + + OMP_CLAUSE_IF, + + + OMP_CLAUSE_NUM_THREADS, + + + OMP_CLAUSE_SCHEDULE, + + + OMP_CLAUSE_NOWAIT, + + + OMP_CLAUSE_ORDERED, + + + OMP_CLAUSE_DEFAULT +}; +# 347 "../../GCC/gcc/tree.h" +union tree_ann_d; + +struct tree_common +{ + tree chain; + tree type; + union tree_ann_d *ann; + + __extension__ enum tree_code code : 8; + + unsigned side_effects_flag : 1; + unsigned constant_flag : 1; + unsigned addressable_flag : 1; + unsigned volatile_flag : 1; + unsigned readonly_flag : 1; + unsigned unsigned_flag : 1; + unsigned asm_written_flag: 1; + unsigned nowarning_flag : 1; + + unsigned used_flag : 1; + unsigned nothrow_flag : 1; + unsigned static_flag : 1; + unsigned public_flag : 1; + unsigned private_flag : 1; + unsigned protected_flag : 1; + unsigned deprecated_flag : 1; + unsigned invariant_flag : 1; + + unsigned lang_flag_0 : 1; + unsigned lang_flag_1 : 1; + unsigned lang_flag_2 : 1; + unsigned lang_flag_3 : 1; + unsigned lang_flag_4 : 1; + unsigned lang_flag_5 : 1; + unsigned lang_flag_6 : 1; + unsigned visited : 1; +}; +# 546 "../../GCC/gcc/tree.h" +enum tree_node_structure_enum { +# 1 "../../GCC/gcc/treestruct.def" 1 +# 30 "../../GCC/gcc/treestruct.def" +TS_COMMON, +TS_INT_CST, +TS_REAL_CST, +TS_VECTOR, +TS_STRING, +TS_COMPLEX, +TS_IDENTIFIER, +TS_DECL_MINIMAL, +TS_DECL_COMMON, +TS_DECL_WRTL, +TS_DECL_NON_COMMON, +TS_DECL_WITH_VIS, +TS_FIELD_DECL, +TS_VAR_DECL, +TS_PARM_DECL, +TS_LABEL_DECL, +TS_RESULT_DECL, +TS_CONST_DECL, +TS_TYPE_DECL, +TS_FUNCTION_DECL, +TS_TYPE, +TS_LIST, +TS_VEC, +TS_EXP, +TS_SSA_NAME, +TS_PHI_NODE, +TS_BLOCK, +TS_BINFO, +TS_STATEMENT_LIST, +TS_VALUE_HANDLE, +TS_CONSTRUCTOR, +TS_MEMORY_TAG, +TS_STRUCT_FIELD_TAG, +TS_OMP_CLAUSE, +# 548 "../../GCC/gcc/tree.h" 2 + LAST_TS_ENUM +}; +# 776 "../../GCC/gcc/tree.h" +extern void tree_contains_struct_check_failed (const tree, + const enum tree_node_structure_enum, + const char *, int, const char *) + __attribute__ ((__noreturn__)); + +extern void tree_check_failed (const tree, const char *, int, const char *, + ...) __attribute__ ((__noreturn__)); +extern void tree_not_check_failed (const tree, const char *, int, const char *, + ...) __attribute__ ((__noreturn__)); +extern void tree_class_check_failed (const tree, const enum tree_code_class, + const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void tree_range_check_failed (const tree, const char *, int, + const char *, enum tree_code, + enum tree_code); +extern void tree_not_class_check_failed (const tree, + const enum tree_code_class, + const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void tree_vec_elt_check_failed (int, int, const char *, + int, const char *) + __attribute__ ((__noreturn__)); +extern void phi_node_elt_check_failed (int, int, const char *, + int, const char *) + __attribute__ ((__noreturn__)); +extern void tree_operand_check_failed (int, enum tree_code, + const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void omp_clause_check_failed (const tree, const char *, int, + const char *, enum omp_clause_code) + __attribute__ ((__noreturn__)); +extern void omp_clause_operand_check_failed (int, tree, const char *, + int, const char *) + __attribute__ ((__noreturn__)); +extern void omp_clause_range_check_failed (const tree, const char *, int, + const char *, enum omp_clause_code, + enum omp_clause_code) + __attribute__ ((__noreturn__)); +# 845 "../../GCC/gcc/tree.h" +# 1 "./tree-check.h" 1 +# 846 "../../GCC/gcc/tree.h" 2 +# 1260 "../../GCC/gcc/tree.h" +struct tree_int_cst +{ + struct tree_common common; + double_int int_cst; +}; + + + + +struct real_value; + + + + +struct tree_real_cst +{ + struct tree_common common; + struct real_value * real_cst_ptr; +}; + + + + + + +struct tree_string +{ + struct tree_common common; + int length; + char str[1]; +}; + + + + + +struct tree_complex +{ + struct tree_common common; + tree real; + tree imag; +}; + + + + +struct tree_vector +{ + struct tree_common common; + tree elements; +}; + +# 1 "../../GCC/gcc/../libcpp/include/symtab.h" 1 +# 21 "../../GCC/gcc/../libcpp/include/symtab.h" +# 1 "../../GCC/gcc/../include/obstack.h" 1 +# 157 "../../GCC/gcc/../include/obstack.h" +struct _obstack_chunk +{ + char *limit; + struct _obstack_chunk *prev; + char contents[4]; +}; + +struct obstack +{ + long chunk_size; + struct _obstack_chunk *chunk; + char *object_base; + char *next_free; + char *chunk_limit; + int temp; + int alignment_mask; + + + + struct _obstack_chunk *(*chunkfun) (void *, long); + void (*freefun) (void *, struct _obstack_chunk *); + void *extra_arg; + unsigned use_extra_arg:1; + unsigned maybe_empty_object:1; + + + + unsigned alloc_failed:1; + + +}; + + + +extern void _obstack_newchunk (struct obstack *, int); +extern void _obstack_free (struct obstack *, void *); +extern int _obstack_begin (struct obstack *, int, int, + void *(*) (long), void (*) (void *)); +extern int _obstack_begin_1 (struct obstack *, int, int, + void *(*) (void *, long), + void (*) (void *, void *), void *); +extern int _obstack_memory_used (struct obstack *); + + + + +void obstack_init (struct obstack *obstack); + +void * obstack_alloc (struct obstack *obstack, int size); + +void * obstack_copy (struct obstack *obstack, void *address, int size); +void * obstack_copy0 (struct obstack *obstack, void *address, int size); + +void obstack_free (struct obstack *obstack, void *block); + +void obstack_blank (struct obstack *obstack, int size); + +void obstack_grow (struct obstack *obstack, void *data, int size); +void obstack_grow0 (struct obstack *obstack, void *data, int size); + +void obstack_1grow (struct obstack *obstack, int data_char); +void obstack_ptr_grow (struct obstack *obstack, void *data); +void obstack_int_grow (struct obstack *obstack, int data); + +void * obstack_finish (struct obstack *obstack); + +int obstack_object_size (struct obstack *obstack); + +int obstack_room (struct obstack *obstack); +void obstack_make_room (struct obstack *obstack, int size); +void obstack_1grow_fast (struct obstack *obstack, int data_char); +void obstack_ptr_grow_fast (struct obstack *obstack, void *data); +void obstack_int_grow_fast (struct obstack *obstack, int data); +void obstack_blank_fast (struct obstack *obstack, int size); + +void * obstack_base (struct obstack *obstack); +void * obstack_next_free (struct obstack *obstack); +int obstack_alignment_mask (struct obstack *obstack); +int obstack_chunk_size (struct obstack *obstack); +int obstack_memory_used (struct obstack *obstack); + + + + +extern void (*obstack_alloc_failed_handler) (void); + + +extern int obstack_exit_failure; +# 22 "../../GCC/gcc/../libcpp/include/symtab.h" 2 + + + + +typedef struct ht_identifier ht_identifier; +struct ht_identifier +{ + const unsigned char *str; + unsigned int len; + unsigned int hash_value; +}; + + + + +typedef struct ht hash_table; +typedef struct ht_identifier *hashnode; + +enum ht_lookup_option {HT_NO_INSERT = 0, HT_ALLOC, HT_ALLOCED}; + + +struct ht +{ + + struct obstack stack; + + hashnode *entries; + + hashnode (*alloc_node) (hash_table *); + + + void * (*alloc_subobject) (size_t); + + unsigned int nslots; + unsigned int nelements; + + + struct cpp_reader *pfile; + + + unsigned int searches; + unsigned int collisions; + + + unsigned char entries_owned; +}; + + +extern hash_table *ht_create (unsigned int order); + + +extern void ht_destroy (hash_table *); + +extern hashnode ht_lookup (hash_table *, const unsigned char *, + size_t, enum ht_lookup_option); +extern hashnode ht_lookup_with_hash (hash_table *, const unsigned char *, + size_t, unsigned int, + enum ht_lookup_option); + + + + + + +typedef int (*ht_cb) (struct cpp_reader *, hashnode, const void *); +extern void ht_forall (hash_table *, ht_cb, const void *); + + +extern void ht_load (hash_table *ht, hashnode *entries, + unsigned int nslots, unsigned int nelements, unsigned char own); + + +extern void ht_dump_statistics (hash_table *); +# 1313 "../../GCC/gcc/tree.h" 2 +# 1330 "../../GCC/gcc/tree.h" +struct tree_identifier +{ + struct tree_common common; + struct ht_identifier id; +}; + + + + + +struct tree_list +{ + struct tree_common common; + tree purpose; + tree value; +}; +# 1354 "../../GCC/gcc/tree.h" +struct tree_vec +{ + struct tree_common common; + int length; + tree a[1]; +}; +# 1397 "../../GCC/gcc/tree.h" +typedef struct constructor_elt_d +{ + tree index; + tree value; +} constructor_elt; + +typedef struct VEC_constructor_elt_base { unsigned num; unsigned alloc; constructor_elt vec[1]; } VEC_constructor_elt_base; typedef struct VEC_constructor_elt_none { VEC_constructor_elt_base base; } VEC_constructor_elt_none; static __inline__ unsigned VEC_constructor_elt_base_length (const VEC_constructor_elt_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ constructor_elt *VEC_constructor_elt_base_last (VEC_constructor_elt_base *vec_ ) { (void)(vec_ && vec_->num); return &vec_->vec[vec_->num - 1]; } static __inline__ constructor_elt *VEC_constructor_elt_base_index (VEC_constructor_elt_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return &vec_->vec[ix_]; } static __inline__ int VEC_constructor_elt_base_iterate (VEC_constructor_elt_base *vec_, unsigned ix_, constructor_elt **ptr) { if (vec_ && ix_ < vec_->num) { *ptr = &vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_constructor_elt_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_constructor_elt_base, vec) + alloc_ * sizeof(constructor_elt); } static __inline__ void VEC_constructor_elt_base_embedded_init (VEC_constructor_elt_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_constructor_elt_base_space (VEC_constructor_elt_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ constructor_elt *VEC_constructor_elt_base_quick_push (VEC_constructor_elt_base *vec_, const constructor_elt *obj_ ) { constructor_elt *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ void VEC_constructor_elt_base_pop (VEC_constructor_elt_base *vec_ ) { (void)(vec_->num); --vec_->num; } static __inline__ void VEC_constructor_elt_base_truncate (VEC_constructor_elt_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ constructor_elt *VEC_constructor_elt_base_replace (VEC_constructor_elt_base *vec_, unsigned ix_, const constructor_elt *obj_ ) { constructor_elt *slot_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; if (obj_) *slot_ = *obj_; return slot_; } static __inline__ constructor_elt *VEC_constructor_elt_base_quick_insert (VEC_constructor_elt_base *vec_, unsigned ix_, const constructor_elt *obj_ ) { constructor_elt *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (constructor_elt)); if (obj_) *slot_ = *obj_; return slot_; } static __inline__ void VEC_constructor_elt_base_ordered_remove (VEC_constructor_elt_base *vec_, unsigned ix_ ) { constructor_elt *slot_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (constructor_elt)); } static __inline__ void VEC_constructor_elt_base_unordered_remove (VEC_constructor_elt_base *vec_, unsigned ix_ ) { (void)(ix_ < vec_->num); vec_->vec[ix_] = vec_->vec[--vec_->num]; } static __inline__ void VEC_constructor_elt_base_block_remove (VEC_constructor_elt_base *vec_, unsigned ix_, unsigned len_ ) { constructor_elt *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (constructor_elt)); } static __inline__ constructor_elt *VEC_constructor_elt_base_address (VEC_constructor_elt_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_constructor_elt_base_lower_bound (VEC_constructor_elt_base *vec_, const constructor_elt *obj_, unsigned char (*lessthan_)(const constructor_elt *, const constructor_elt *) ) { unsigned int len_ = VEC_constructor_elt_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { constructor_elt *middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_constructor_elt_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_constructor_elt_gc { VEC_constructor_elt_base base; } VEC_constructor_elt_gc; static __inline__ VEC_constructor_elt_gc *VEC_constructor_elt_gc_alloc (int alloc_ ) { return (VEC_constructor_elt_gc *) vec_gc_o_reserve_exact (((void *)0), alloc_, __builtin_offsetof (VEC_constructor_elt_gc, base.vec), sizeof (constructor_elt) ); } static __inline__ VEC_constructor_elt_gc *VEC_constructor_elt_gc_copy (VEC_constructor_elt_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_constructor_elt_gc *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_constructor_elt_gc *)(vec_gc_o_reserve_exact (((void *)0), len_, __builtin_offsetof (VEC_constructor_elt_gc, base.vec), sizeof (constructor_elt) )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (constructor_elt) * len_); } return new_vec_; } static __inline__ void VEC_constructor_elt_gc_free (VEC_constructor_elt_gc **vec_) { if (*vec_) ggc_free (*vec_); *vec_ = ((void *)0); } static __inline__ int VEC_constructor_elt_gc_reserve (VEC_constructor_elt_gc **vec_, int alloc_ ) { int extend = !VEC_constructor_elt_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_constructor_elt_gc *) vec_gc_o_reserve (*vec_, alloc_, __builtin_offsetof (VEC_constructor_elt_gc, base.vec), sizeof (constructor_elt) ); return extend; } static __inline__ int VEC_constructor_elt_gc_reserve_exact (VEC_constructor_elt_gc **vec_, int alloc_ ) { int extend = !VEC_constructor_elt_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_constructor_elt_gc *) vec_gc_o_reserve_exact (*vec_, alloc_, __builtin_offsetof (VEC_constructor_elt_gc, base.vec), sizeof (constructor_elt) ); return extend; } static __inline__ void VEC_constructor_elt_gc_safe_grow (VEC_constructor_elt_gc **vec_, int size_ ) { (void)(size_ >= 0 && VEC_constructor_elt_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_constructor_elt_gc_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ constructor_elt *VEC_constructor_elt_gc_safe_push (VEC_constructor_elt_gc **vec_, const constructor_elt *obj_ ) { VEC_constructor_elt_gc_reserve (vec_, 1 ); return VEC_constructor_elt_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ constructor_elt *VEC_constructor_elt_gc_safe_insert (VEC_constructor_elt_gc **vec_, unsigned ix_, const constructor_elt *obj_ ) { VEC_constructor_elt_gc_reserve (vec_, 1 ); return VEC_constructor_elt_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; + +struct tree_constructor +{ + struct tree_common common; + VEC_constructor_elt_gc *elts; +}; +# 1633 "../../GCC/gcc/tree.h" +enum omp_clause_schedule_kind +{ + OMP_CLAUSE_SCHEDULE_STATIC, + OMP_CLAUSE_SCHEDULE_DYNAMIC, + OMP_CLAUSE_SCHEDULE_GUIDED, + OMP_CLAUSE_SCHEDULE_RUNTIME +}; + + + + +enum omp_clause_default_kind +{ + OMP_CLAUSE_DEFAULT_UNSPECIFIED, + OMP_CLAUSE_DEFAULT_SHARED, + OMP_CLAUSE_DEFAULT_NONE, + OMP_CLAUSE_DEFAULT_PRIVATE +}; + + + + +struct tree_exp +{ + struct tree_common common; + source_locus locus; + int complexity; + tree block; + tree + + operands[1]; +}; +# 1702 "../../GCC/gcc/tree.h" +struct ptr_info_def; + + + + + + +typedef struct ssa_use_operand_d +{ + struct ssa_use_operand_d* prev; + struct ssa_use_operand_d* next; + tree stmt; + tree * use; +} ssa_use_operand_t; + + + + +struct tree_ssa_name +{ + struct tree_common common; + + + tree var; + + + unsigned int version; + + + struct ptr_info_def *ptr_info; + + + + + + + tree value_handle; + + + struct ssa_use_operand_d imm_uses; +}; +# 1767 "../../GCC/gcc/tree.h" +struct phi_arg_d +{ + + + struct ssa_use_operand_d imm_use; + tree def; +}; + +struct tree_phi_node +{ + struct tree_common common; + tree result; + int num_args; + int capacity; + + + struct basic_block_def *bb; + + + + struct phi_arg_d a[1]; +}; +# 1802 "../../GCC/gcc/tree.h" +struct tree_omp_clause +{ + struct tree_common common; + enum omp_clause_code code; + union omp_clause_subcode { + enum omp_clause_default_kind default_kind; + enum omp_clause_schedule_kind schedule_kind; + enum tree_code reduction_code; + } subcode; + tree ops[1]; +}; + + +struct varray_head_tag; +# 1868 "../../GCC/gcc/tree.h" +struct tree_block +{ + struct tree_common common; + + unsigned handler_block_flag : 1; + unsigned abstract_flag : 1; + unsigned block_num : 30; + + tree vars; + tree subblocks; + tree supercontext; + tree abstract_origin; + tree fragment_origin; + tree fragment_chain; + location_t locus; +}; +# 2079 "../../GCC/gcc/tree.h" +struct die_struct; + +struct tree_type +{ + struct tree_common common; + tree values; + tree size; + tree size_unit; + tree attributes; + unsigned int uid; + + unsigned int precision : 9; + __extension__ enum machine_mode mode : 7; + + unsigned string_flag : 1; + unsigned no_force_blk_flag : 1; + unsigned needs_constructing_flag : 1; + unsigned transparent_union_flag : 1; + unsigned packed_flag : 1; + unsigned restrict_flag : 1; + unsigned contains_placeholder_bits : 2; + + unsigned lang_flag_0 : 1; + unsigned lang_flag_1 : 1; + unsigned lang_flag_2 : 1; + unsigned lang_flag_3 : 1; + unsigned lang_flag_4 : 1; + unsigned lang_flag_5 : 1; + unsigned lang_flag_6 : 1; + unsigned user_align : 1; + + unsigned int align; + tree pointer_to; + tree reference_to; + union tree_type_symtab { + int address; + char * pointer; + struct die_struct * die; + } symtab; + + tree name; + tree minval; + tree maxval; + tree next_variant; + tree main_variant; + tree binfo; + tree context; + long alias_set; + + struct lang_type *lang_specific; +}; +# 2234 "../../GCC/gcc/tree.h" +struct tree_binfo +{ + struct tree_common common; + + tree offset; + tree vtable; + tree virtuals; + tree vptr_field; + VEC_tree_gc *base_accesses; + tree inheritance; + + tree vtt_subvtt; + tree vtt_vptr; + + VEC_tree_none base_binfos; +}; +# 2272 "../../GCC/gcc/tree.h" +enum symbol_visibility +{ + VISIBILITY_DEFAULT, + VISIBILITY_PROTECTED, + VISIBILITY_HIDDEN, + VISIBILITY_INTERNAL +}; + + +struct function; +# 2314 "../../GCC/gcc/tree.h" +struct tree_decl_minimal +{ + struct tree_common common; + location_t locus; + unsigned int uid; + tree name; + tree context; +}; +# 2340 "../../GCC/gcc/tree.h" +struct tree_memory_tag +{ + struct tree_decl_minimal common; + unsigned int is_global:1; + unsigned int is_used_alone:1; + unsigned int old_used_alone:1; +}; +# 2360 "../../GCC/gcc/tree.h" +struct tree_struct_field_tag +{ + struct tree_memory_tag common; + + + tree parent_var; + + + unsigned long offset; + + + unsigned long size; + +}; +# 2531 "../../GCC/gcc/tree.h" +struct tree_decl_common +{ + struct tree_decl_minimal common; + tree size; + + __extension__ enum machine_mode mode : 8; + + unsigned nonlocal_flag : 1; + unsigned virtual_flag : 1; + unsigned ignored_flag : 1; + unsigned abstract_flag : 1; + unsigned artificial_flag : 1; + unsigned user_align : 1; + unsigned preserve_flag: 1; + unsigned debug_expr_is_from : 1; + + unsigned lang_flag_0 : 1; + unsigned lang_flag_1 : 1; + unsigned lang_flag_2 : 1; + unsigned lang_flag_3 : 1; + unsigned lang_flag_4 : 1; + unsigned lang_flag_5 : 1; + unsigned lang_flag_6 : 1; + unsigned lang_flag_7 : 1; + + + + unsigned decl_flag_0 : 1; + + unsigned decl_flag_1 : 1; + + + + unsigned decl_flag_2 : 1; + + + unsigned decl_flag_3 : 1; + + + unsigned gimple_reg_flag : 1; + unsigned call_clobbered_flag : 1; + + union tree_decl_u1 { + + + enum built_in_function f; + + + long i; + + + struct tree_decl_u1_a { + unsigned int align : 24; + unsigned int off_align : 8; + } a; + } u1; + + tree size_unit; + tree initial; + tree attributes; + tree abstract_origin; + + long pointer_alias_set; + + struct lang_decl *lang_specific; +}; + +extern tree decl_value_expr_lookup (tree); +extern void decl_value_expr_insert (tree, tree); +# 2640 "../../GCC/gcc/tree.h" +struct tree_decl_with_rtl +{ + struct tree_decl_common common; + rtx rtl; +}; +# 2696 "../../GCC/gcc/tree.h" +struct tree_field_decl +{ + struct tree_decl_common common; + + tree offset; + tree bit_field_type; + tree qualifier; + tree bit_offset; + tree fcontext; + +}; +# 2718 "../../GCC/gcc/tree.h" +struct tree_label_decl +{ + struct tree_decl_with_rtl common; + + + + tree java_field_1; + tree java_field_2; + tree java_field_3; + unsigned int java_field_4; + +}; + +struct tree_result_decl +{ + struct tree_decl_with_rtl common; +}; + +struct tree_const_decl +{ + struct tree_decl_with_rtl common; +}; +# 2749 "../../GCC/gcc/tree.h" +struct tree_parm_decl +{ + struct tree_decl_with_rtl common; + rtx incoming_rtl; +}; +# 2793 "../../GCC/gcc/tree.h" +extern tree decl_restrict_base_lookup (tree); +extern void decl_restrict_base_insert (tree, tree); +# 2877 "../../GCC/gcc/tree.h" +struct tree_decl_with_vis +{ + struct tree_decl_with_rtl common; + tree assembler_name; + tree section_name; + + + unsigned defer_output:1; + unsigned hard_register:1; + unsigned thread_local:1; + unsigned common_flag:1; + unsigned in_text_section : 1; + unsigned gimple_formal_temp : 1; + unsigned dllimport_flag : 1; + unsigned based_on_restrict_p : 1; + + unsigned shadowed_for_var_p : 1; + + + unsigned in_system_header_flag : 1; + unsigned weak_flag:1; + unsigned seen_in_bind_expr : 1; + unsigned comdat_flag : 1; + __extension__ enum symbol_visibility visibility : 2; + unsigned visibility_specified : 1; + + unsigned one_only : 1; + unsigned init_priority_p:1; + + + __extension__ enum tls_model tls_model : 3; + +}; +# 2924 "../../GCC/gcc/tree.h" +extern tree decl_debug_expr_lookup (tree); +extern void decl_debug_expr_insert (tree, tree); +# 2936 "../../GCC/gcc/tree.h" +extern unsigned short decl_init_priority_lookup (tree); +extern void decl_init_priority_insert (tree, unsigned short); +# 2959 "../../GCC/gcc/tree.h" +struct tree_var_decl +{ + struct tree_decl_with_vis common; +}; +# 2979 "../../GCC/gcc/tree.h" +struct tree_decl_non_common + +{ + struct tree_decl_with_vis common; + + tree saved_tree; + + tree arguments; + + tree result; + + tree vindex; +}; +# 3084 "../../GCC/gcc/tree.h" +struct tree_function_decl +{ + struct tree_decl_non_common common; + + unsigned static_ctor_flag : 1; + unsigned static_dtor_flag : 1; + unsigned uninlinable : 1; + unsigned possibly_inlined : 1; + unsigned novops_flag : 1; + unsigned returns_twice_flag : 1; + unsigned malloc_flag : 1; + unsigned pure_flag : 1; + + unsigned declared_inline_flag : 1; + unsigned regdecl_flag : 1; + unsigned inline_flag : 1; + unsigned no_instrument_function_entry_exit : 1; + unsigned no_limit_stack : 1; + __extension__ enum built_in_class built_in_class : 2; + + struct function *f; +}; +# 3116 "../../GCC/gcc/tree.h" +struct tree_type_decl +{ + struct tree_decl_non_common common; + +}; +# 3133 "../../GCC/gcc/tree.h" +struct tree_statement_list_node + +{ + struct tree_statement_list_node *prev; + struct tree_statement_list_node *next; + tree stmt; +}; + +struct tree_statement_list + +{ + struct tree_common common; + struct tree_statement_list_node *head; + struct tree_statement_list_node *tail; +}; +# 3159 "../../GCC/gcc/tree.h" +struct value_set; + +struct tree_value_handle +{ + struct tree_common common; + + + struct value_set * expr_set; + + + + + unsigned int id; + + + VEC_tree_gc *vuses; +}; + + + + + +union tree_node + +{ + struct tree_common common; + struct tree_int_cst int_cst; + struct tree_real_cst real_cst; + struct tree_vector vector; + struct tree_string string; + struct tree_complex complex; + struct tree_identifier identifier; + struct tree_decl_minimal decl_minimal; + struct tree_decl_common decl_common; + struct tree_decl_with_rtl decl_with_rtl; + struct tree_decl_non_common decl_non_common; + struct tree_parm_decl parm_decl; + struct tree_decl_with_vis decl_with_vis; + struct tree_var_decl var_decl; + struct tree_field_decl field_decl; + struct tree_label_decl label_decl; + struct tree_result_decl result_decl; + struct tree_const_decl const_decl; + struct tree_type_decl type_decl; + struct tree_function_decl function_decl; + struct tree_type type; + struct tree_list list; + struct tree_vec vec; + struct tree_exp exp; + struct tree_ssa_name ssa_name; + struct tree_phi_node phi; + struct tree_block block; + struct tree_binfo binfo; + struct tree_statement_list stmt_list; + struct tree_value_handle value_handle; + struct tree_constructor constructor; + struct tree_memory_tag mtag; + struct tree_struct_field_tag sft; + struct tree_omp_clause omp_clause; +}; + + + +enum tree_index +{ + TI_ERROR_MARK, + TI_INTQI_TYPE, + TI_INTHI_TYPE, + TI_INTSI_TYPE, + TI_INTDI_TYPE, + TI_INTTI_TYPE, + + TI_UINTQI_TYPE, + TI_UINTHI_TYPE, + TI_UINTSI_TYPE, + TI_UINTDI_TYPE, + TI_UINTTI_TYPE, + + TI_INTEGER_ZERO, + TI_INTEGER_ONE, + TI_INTEGER_MINUS_ONE, + TI_NULL_POINTER, + + TI_SIZE_ZERO, + TI_SIZE_ONE, + + TI_BITSIZE_ZERO, + TI_BITSIZE_ONE, + TI_BITSIZE_UNIT, + + TI_PUBLIC, + TI_PROTECTED, + TI_PRIVATE, + + TI_BOOLEAN_FALSE, + TI_BOOLEAN_TRUE, + + TI_COMPLEX_INTEGER_TYPE, + TI_COMPLEX_FLOAT_TYPE, + TI_COMPLEX_DOUBLE_TYPE, + TI_COMPLEX_LONG_DOUBLE_TYPE, + + TI_FLOAT_TYPE, + TI_DOUBLE_TYPE, + TI_LONG_DOUBLE_TYPE, + + TI_FLOAT_PTR_TYPE, + TI_DOUBLE_PTR_TYPE, + TI_LONG_DOUBLE_PTR_TYPE, + TI_INTEGER_PTR_TYPE, + + TI_VOID_TYPE, + TI_PTR_TYPE, + TI_CONST_PTR_TYPE, + TI_SIZE_TYPE, + TI_PID_TYPE, + TI_PTRDIFF_TYPE, + TI_VA_LIST_TYPE, + TI_VA_LIST_GPR_COUNTER_FIELD, + TI_VA_LIST_FPR_COUNTER_FIELD, + TI_BOOLEAN_TYPE, + TI_FILEPTR_TYPE, + + TI_DFLOAT32_TYPE, + TI_DFLOAT64_TYPE, + TI_DFLOAT128_TYPE, + TI_DFLOAT32_PTR_TYPE, + TI_DFLOAT64_PTR_TYPE, + TI_DFLOAT128_PTR_TYPE, + + TI_VOID_LIST_NODE, + + TI_MAIN_IDENTIFIER, + + TI_MAX +}; + +extern tree global_trees[TI_MAX]; +# 3383 "../../GCC/gcc/tree.h" +enum integer_type_kind +{ + itk_char, + itk_signed_char, + itk_unsigned_char, + itk_short, + itk_unsigned_short, + itk_int, + itk_unsigned_int, + itk_long, + itk_unsigned_long, + itk_long_long, + itk_unsigned_long_long, + itk_none +}; + +typedef enum integer_type_kind integer_type_kind; + + + +extern tree integer_types[itk_none]; +# 3419 "../../GCC/gcc/tree.h" +extern enum tls_model flag_tls_default; +# 3443 "../../GCC/gcc/tree.h" +enum ptrmemfunc_vbit_where_t +{ + ptrmemfunc_vbit_in_pfn, + ptrmemfunc_vbit_in_delta +}; + + + +extern tree decl_assembler_name (tree); + + + + +extern size_t tree_size (tree); + + + + +extern size_t tree_code_size (enum tree_code); + + + + + +extern tree make_node_stat (enum tree_code ); + + + + +extern tree copy_node_stat (tree ); + + + + +extern tree copy_list (tree); + + +extern tree make_tree_binfo_stat (unsigned ); + + + + +extern tree make_tree_vec_stat (int ); + + + + +extern void init_phinodes (void); +extern void fini_phinodes (void); +extern void release_phi_node (tree); + + + + +extern void init_ssanames (void); +extern void fini_ssanames (void); +extern tree make_ssa_name (tree, tree); +extern tree duplicate_ssa_name (tree, tree); +extern void duplicate_ssa_name_ptr_info (tree, struct ptr_info_def *); +extern void release_ssa_name (tree); +extern void release_defs (tree); +extern void replace_ssa_name_symbol (tree, tree); +# 3513 "../../GCC/gcc/tree.h" +extern tree get_identifier (const char *); +# 3526 "../../GCC/gcc/tree.h" +extern tree get_identifier_with_length (const char *, size_t); + + + + + +extern tree maybe_get_identifier (const char *); + + + +extern tree build_nt (enum tree_code, ...); + +extern tree build0_stat (enum tree_code, tree ); + +extern tree build1_stat (enum tree_code, tree, tree ); + +extern tree build2_stat (enum tree_code, tree, tree, tree ); + +extern tree build3_stat (enum tree_code, tree, tree, tree, tree ); + +extern tree build4_stat (enum tree_code, tree, tree, tree, tree, + tree ); + +extern tree build5_stat (enum tree_code, tree, tree, tree, tree, tree, + tree ); + +extern tree build7_stat (enum tree_code, tree, tree, tree, tree, tree, + tree, tree, tree ); + + + +extern tree build_int_cst (tree, long); +extern tree build_int_cst_type (tree, long); +extern tree build_int_cstu (tree, unsigned long); +extern tree build_int_cst_wide (tree, unsigned long, long); +extern tree build_vector (tree, tree); +extern tree build_vector_from_ctor (tree, VEC_constructor_elt_gc *); +extern tree build_constructor (tree, VEC_constructor_elt_gc *); +extern tree build_constructor_single (tree, tree, tree); +extern tree build_constructor_from_list (tree, tree); +extern tree build_real_from_int_cst (tree, tree); +extern tree build_complex (tree, tree, tree); +extern tree build_one_cst (tree); +extern tree build_string (int, const char *); +extern tree build_tree_list_stat (tree, tree ); + +extern tree build_decl_stat (enum tree_code, tree, tree ); +extern tree build_fn_decl (const char *, tree); + +extern tree build_block (tree, tree, tree, tree); + +extern void annotate_with_file_line (tree, const char *, int); +extern void annotate_with_locus (tree, location_t); + +extern tree build_empty_stmt (void); +extern tree build_omp_clause (enum omp_clause_code); + + + +extern tree make_signed_type (int); +extern tree make_unsigned_type (int); +extern tree signed_type_for (tree); +extern tree unsigned_type_for (tree); +extern void initialize_sizetypes (unsigned char); +extern void set_sizetype (tree); +extern void fixup_unsigned_type (tree); +extern tree build_pointer_type_for_mode (tree, enum machine_mode, unsigned char); +extern tree build_pointer_type (tree); +extern tree build_reference_type_for_mode (tree, enum machine_mode, unsigned char); +extern tree build_reference_type (tree); +extern tree build_vector_type_for_mode (tree, enum machine_mode); +extern tree build_vector_type (tree innertype, int nunits); +extern tree build_type_no_quals (tree); +extern tree build_index_type (tree); +extern tree build_index_2_type (tree, tree); +extern tree build_array_type (tree, tree); +extern tree build_function_type (tree, tree); +extern tree build_function_type_list (tree, ...); +extern tree build_method_type_directly (tree, tree, tree); +extern tree build_method_type (tree, tree); +extern tree build_offset_type (tree, tree); +extern tree build_complex_type (tree); +extern tree build_resx (int); +extern tree array_type_nelts (tree); +extern unsigned char in_array_bounds_p (tree); +extern unsigned char range_in_array_bounds_p (tree); + +extern tree value_member (tree, tree); +extern tree purpose_member (tree, tree); + +extern int attribute_list_equal (tree, tree); +extern int attribute_list_contained (tree, tree); +extern int tree_int_cst_equal (tree, tree); +extern int tree_int_cst_lt (tree, tree); +extern int tree_int_cst_compare (tree, tree); +extern int host_integerp (tree, int); +extern long tree_low_cst (tree, int); +extern int tree_int_cst_msb (tree); +extern int tree_int_cst_sgn (tree); +extern int tree_int_cst_sign_bit (tree); +extern int tree_expr_nonnegative_p (tree); +extern int tree_expr_nonnegative_warnv_p (tree, unsigned char *); +extern unsigned char may_negate_without_overflow_p (tree); +extern tree get_inner_array_type (tree); + + + + + +extern tree make_tree (tree, rtx); + + + + + + + +extern tree build_type_attribute_variant (tree, tree); +extern tree build_decl_attribute_variant (tree, tree); + + +struct attribute_spec +{ + + + const char *const name; + + const int min_length; + + + const int max_length; + + + + + + + + const unsigned char decl_required; + + + const unsigned char type_required; + + + + + const unsigned char function_type_required; +# 3687 "../../GCC/gcc/tree.h" + tree (*const handler) (tree *node, tree name, tree args, + int flags, unsigned char *no_add_attrs); +}; + + + +enum attribute_flags +{ + + + + ATTR_FLAG_DECL_NEXT = 1, + + + + ATTR_FLAG_FUNCTION_NEXT = 2, + + + + ATTR_FLAG_ARRAY_NEXT = 4, + + + ATTR_FLAG_TYPE_IN_PLACE = 8, + + + + ATTR_FLAG_BUILT_IN = 16 +}; + + + +extern tree merge_decl_attributes (tree, tree); +extern tree merge_type_attributes (tree, tree); + + + + +extern int is_attribute_p (const char *, tree); + + + + +extern tree lookup_attribute (const char *, tree); + + + + +extern tree remove_attribute (const char *, tree); + + + +extern tree merge_attributes (tree, tree); +# 3752 "../../GCC/gcc/tree.h" +extern unsigned char check_qualified_type (tree, tree, int); + + + + + +extern tree get_qualified_type (tree, int); + + + + +extern tree build_qualified_type (tree, int); +# 3777 "../../GCC/gcc/tree.h" +extern tree build_distinct_type_copy (tree); +extern tree build_variant_type_copy (tree); + + + + +extern void finish_builtin_struct (tree, const char *, + tree, tree); + + + + + +extern void layout_type (tree); +# 3799 "../../GCC/gcc/tree.h" +typedef struct record_layout_info_s +{ + + tree t; + + + tree offset; + + unsigned int offset_align; + + tree bitpos; + + unsigned int record_align; + + + unsigned int unpacked_align; + + tree prev_field; + + + tree pending_statics; + + int remaining_in_alignment; + + + int packed_maybe_necessary; +} *record_layout_info; + +extern void set_lang_adjust_rli (void (*) (record_layout_info)); +extern record_layout_info start_record_layout (tree); +extern tree bit_from_pos (tree, tree); +extern tree byte_from_pos (tree, tree); +extern void pos_from_bit (tree *, tree *, unsigned int, tree); +extern void normalize_offset (tree *, tree *, unsigned int); +extern tree rli_size_unit_so_far (record_layout_info); +extern tree rli_size_so_far (record_layout_info); +extern void normalize_rli (record_layout_info); +extern void place_field (record_layout_info, tree); +extern void compute_record_mode (tree); +extern void finish_record_layout (record_layout_info, int); + + + + + + +extern tree type_hash_canon (unsigned int, tree); +# 3855 "../../GCC/gcc/tree.h" +extern void layout_decl (tree, unsigned); + + + + +extern void relayout_decl (tree); + + + + + + +extern enum machine_mode mode_for_size_tree (tree, enum mode_class, int); + + + +extern tree non_lvalue (tree); + +extern tree convert (tree, tree); +extern unsigned int expr_align (tree); +extern tree expr_first (tree); +extern tree expr_last (tree); +extern tree expr_only (tree); +extern tree size_in_bytes (tree); +extern long int_size_in_bytes (tree); +extern long max_int_size_in_bytes (tree); +extern tree bit_position (tree); +extern long int_bit_position (tree); +extern tree byte_position (tree); +extern long int_byte_position (tree); + + + + +enum size_type_kind +{ + SIZETYPE, + SSIZETYPE, + BITSIZETYPE, + SBITSIZETYPE, + TYPE_KIND_LAST}; + +extern tree sizetype_tab[(int) TYPE_KIND_LAST]; + + + + + + +extern tree size_int_kind (long, enum size_type_kind); +extern tree size_binop (enum tree_code, tree, tree); +extern tree size_diffop (tree, tree); + + + + + + +extern tree round_up (tree, int); +extern tree round_down (tree, int); +extern tree get_pending_sizes (void); +extern void put_pending_size (tree); +extern void put_pending_sizes (tree); +# 3927 "../../GCC/gcc/tree.h" +extern unsigned int maximum_field_alignment; + +extern unsigned int initial_max_fld_align; + + + + + +extern tree chainon (tree, tree); + + + +extern tree tree_cons_stat (tree, tree, tree ); + + + + +extern tree tree_last (tree); + + + +extern tree nreverse (tree); + + + + +extern int list_length (tree); + + + +extern int fields_length (tree); + + + + +extern unsigned char initializer_zerop (tree); +# 3975 "../../GCC/gcc/tree.h" +extern unsigned char categorize_ctor_elements (tree, long *, long *, + unsigned char *); + +extern long count_type_elements (tree, unsigned char); + + + +extern int integer_zerop (tree); + + + +extern int integer_onep (tree); + + + + +extern int integer_all_onesp (tree); + + + + +extern int integer_pow2p (tree); + + + + +extern int integer_nonzerop (tree); + +extern unsigned char zero_p (tree); +extern unsigned char cst_and_fits_in_hwi (tree); +extern tree num_ending_zeros (tree); + + + + +extern tree staticp (tree); + + + + + +extern tree save_expr (tree); + + + + +extern tree skip_simple_arithmetic (tree); + + + +enum tree_node_structure_enum tree_node_structure (tree); + + + + + + + +extern unsigned char contains_placeholder_p (tree); +# 4045 "../../GCC/gcc/tree.h" +extern unsigned char type_contains_placeholder_p (tree); + + + + + + +extern tree substitute_in_expr (tree, tree, tree); +# 4063 "../../GCC/gcc/tree.h" +extern tree substitute_placeholder_in_expr (tree, tree); +# 4078 "../../GCC/gcc/tree.h" +extern tree variable_size (tree); + + + + + +extern tree stabilize_reference (tree); + + + + + +extern tree stabilize_reference_1 (tree); + + + + + + +extern tree get_unwidened (tree, tree); + + + + + + +extern tree get_narrower (tree, int *); + + + + + +extern tree get_inner_reference (tree, long *, long *, + tree *, enum machine_mode *, int *, int *, + unsigned char); + + + + + +extern unsigned char contains_packed_reference (tree exp); + + + +extern int handled_component_p (tree); + + + + +extern tree array_ref_element_size (tree); + + + + +extern tree array_ref_low_bound (tree); + + + + +extern tree array_ref_up_bound (tree); + + + + +extern tree component_ref_field_offset (tree); + + + + +extern tree get_containing_scope (tree); + + + +extern tree decl_function_context (tree); + + + +extern tree decl_type_context (tree); + + +extern int real_zerop (tree); + + + + + + +extern int pedantic_lvalues; + + + +extern tree current_function_decl; + + +extern const char * current_function_func_begin_label; + + +extern unsigned crc32_string (unsigned, const char *); +extern void clean_symbol_name (char *); +extern tree get_file_function_name_long (const char *); +extern tree get_callee_fndecl (tree); +extern void change_decl_assembler_name (tree, tree); +extern int type_num_arguments (tree); +extern unsigned char associative_tree_code (enum tree_code); +extern unsigned char commutative_tree_code (enum tree_code); +extern tree upper_bound_in_type (tree, tree); +extern tree lower_bound_in_type (tree, tree); +extern int operand_equal_for_phi_arg_p (tree, tree); +extern unsigned char empty_body_p (tree); + + + +extern void expand_expr_stmt (tree); +extern int warn_if_unused_value (tree, location_t); +extern void expand_label (tree); +extern void expand_goto (tree); + +extern rtx expand_stack_save (void); +extern void expand_stack_restore (tree); +extern void expand_return (tree); +extern int is_body_block (tree); + + +extern void using_eh_for_cleanups (void); + + + + + +extern int folding_initializer; + + + + + + + +extern tree fold (tree); +extern tree fold_unary (enum tree_code, tree, tree); +extern tree fold_binary (enum tree_code, tree, tree, tree); +extern tree fold_ternary (enum tree_code, tree, tree, tree, tree); +extern tree fold_build1_stat (enum tree_code, tree, tree ); + +extern tree fold_build2_stat (enum tree_code, tree, tree, tree ); + +extern tree fold_build3_stat (enum tree_code, tree, tree, tree, tree ); + +extern tree fold_build1_initializer (enum tree_code, tree, tree); +extern tree fold_build2_initializer (enum tree_code, tree, tree, tree); +extern tree fold_build3_initializer (enum tree_code, tree, tree, tree, tree); +extern tree fold_convert (tree, tree); +extern tree fold_single_bit_test (enum tree_code, tree, tree, tree); +extern tree fold_ignored_result (tree); +extern tree fold_abs_const (tree, tree); +extern tree fold_indirect_ref_1 (tree, tree); +extern void fold_defer_overflow_warnings (void); +extern void fold_undefer_overflow_warnings (unsigned char, tree, int); +extern void fold_undefer_and_ignore_overflow_warnings (void); +extern unsigned char fold_deferring_overflow_warnings_p (void); + +extern tree force_fit_type (tree, int, unsigned char, unsigned char); + +extern int add_double_with_sign (unsigned long, long, + unsigned long, long, + unsigned long *, long *, + unsigned char); + + +extern int neg_double (unsigned long, long, + unsigned long *, long *); +extern int mul_double_with_sign (unsigned long, long, + unsigned long, long, + unsigned long *, long *, + unsigned char); + + +extern void lshift_double (unsigned long, long, + long, unsigned int, + unsigned long *, long *, int); +extern void rshift_double (unsigned long, long, + long, unsigned int, + unsigned long *, long *, int); +extern void lrotate_double (unsigned long, long, + long, unsigned int, + unsigned long *, long *); +extern void rrotate_double (unsigned long, long, + long, unsigned int, + unsigned long *, long *); + +extern int div_and_round_double (enum tree_code, int, unsigned long, + long, unsigned long, + long, unsigned long *, + long *, unsigned long *, + long *); + +enum operand_equal_flag +{ + OEP_ONLY_CONST = 1, + OEP_PURE_SAME = 2 +}; + +extern int operand_equal_p (tree, tree, unsigned int); + +extern tree omit_one_operand (tree, tree, tree); +extern tree omit_two_operands (tree, tree, tree, tree); +extern tree invert_truthvalue (tree); +extern tree fold_truth_not_expr (tree); +extern tree fold_unary_to_constant (enum tree_code, tree, tree); +extern tree fold_binary_to_constant (enum tree_code, tree, tree, tree); +extern tree fold_read_from_constant_string (tree); +extern tree int_const_binop (enum tree_code, tree, tree, int); +extern tree build_fold_addr_expr (tree); +extern tree fold_build_cleanup_point_expr (tree type, tree expr); +extern tree fold_strip_sign_ops (tree); +extern tree build_fold_addr_expr_with_type (tree, tree); +extern tree build_fold_indirect_ref (tree); +extern tree fold_indirect_ref (tree); +extern tree constant_boolean_node (int, tree); +extern tree build_low_bits_mask (tree, unsigned); + +extern unsigned char tree_swap_operands_p (tree, tree, unsigned char); +extern void swap_tree_operands (tree, tree *, tree *); +extern enum tree_code swap_tree_comparison (enum tree_code); + +extern unsigned char ptr_difference_const (tree, tree, long *); +extern enum tree_code invert_tree_comparison (enum tree_code, unsigned char); + +extern unsigned char tree_expr_nonzero_p (tree); +extern unsigned char tree_expr_nonzero_warnv_p (tree, unsigned char *); + + +extern tree fold_builtin (tree, tree, unsigned char); +extern tree fold_builtin_fputs (tree, unsigned char, unsigned char, tree); +extern tree fold_builtin_strcpy (tree, tree, tree); +extern tree fold_builtin_strncpy (tree, tree, tree); +extern tree fold_builtin_memory_chk (tree, tree, tree, unsigned char, + enum built_in_function); +extern tree fold_builtin_stxcpy_chk (tree, tree, tree, unsigned char, + enum built_in_function); +extern tree fold_builtin_strncpy_chk (tree, tree); +extern tree fold_builtin_snprintf_chk (tree, tree, enum built_in_function); +extern unsigned char fold_builtin_next_arg (tree); +extern enum built_in_function builtin_mathfn_code (tree); +extern tree build_function_call_expr (tree, tree); +extern tree mathfn_built_in (tree, enum built_in_function fn); +extern tree strip_float_extensions (tree); +extern tree c_strlen (tree, int); +extern tree std_gimplify_va_arg_expr (tree, tree, tree *, tree *); +extern tree build_va_arg_indirect_ref (tree); +tree build_string_literal (int, const char *); + + +extern tree strip_float_extensions (tree); + + +extern void record_component_aliases (tree); +extern long get_alias_set (tree); +extern int alias_sets_conflict_p (long, long); +extern int alias_sets_might_conflict_p (long, long); +extern int objects_must_conflict_p (tree, tree); + + +extern int really_constant_p (tree); +extern int int_fits_type_p (tree, tree); +extern unsigned char variably_modified_type_p (tree, tree); +extern int tree_log2 (tree); +extern int tree_floor_log2 (tree); +extern int simple_cst_equal (tree, tree); +extern hashval_t iterative_hash_expr (tree, hashval_t); +extern int compare_tree_int (tree, unsigned long); +extern int type_list_equal (tree, tree); +extern int chain_member (tree, tree); +extern tree type_hash_lookup (unsigned int, tree); +extern void type_hash_add (unsigned int, tree); +extern int simple_cst_list_equal (tree, tree); +extern void dump_tree_statistics (void); +extern void expand_function_end (void); +extern void expand_function_start (tree); +extern void stack_protect_prologue (void); +extern void stack_protect_epilogue (void); +extern void recompute_tree_invariant_for_addr_expr (tree); +extern unsigned char is_global_var (tree t); +extern unsigned char needs_to_live_in_memory (tree); +extern tree reconstruct_complex_type (tree, tree); + +extern int real_onep (tree); +extern int real_twop (tree); +extern int real_minus_onep (tree); +extern void init_ttree (void); +extern void build_common_tree_nodes (unsigned char, unsigned char); +extern void build_common_tree_nodes_2 (int); +extern void build_common_builtin_nodes (void); +extern tree build_nonstandard_integer_type (unsigned long, int); +extern tree build_range_type (tree, tree, tree); +extern long int_cst_value (tree); +extern tree tree_fold_gcd (tree, tree); +extern tree build_addr (tree, tree); + +extern unsigned char fields_compatible_p (tree, tree); +extern tree find_compatible_field (tree, tree); + + +extern void expand_main_function (void); +extern void init_dummy_function_start (void); +extern void expand_dummy_function_end (void); +extern unsigned int init_function_for_compilation (void); +extern void allocate_struct_function (tree); +extern void init_function_start (tree); +extern unsigned char use_register_for_decl (tree); +extern void setjmp_vars_warning (tree); +extern void setjmp_args_warning (void); +extern void init_temp_slots (void); +extern void free_temp_slots (void); +extern void pop_temp_slots (void); +extern void push_temp_slots (void); +extern void preserve_temp_slots (rtx); +extern int aggregate_value_p (tree, tree); +extern void push_function_context (void); +extern void pop_function_context (void); +extern void push_function_context_to (tree); +extern void pop_function_context_from (tree); +extern tree gimplify_parameters (void); + + + +extern void print_rtl (FILE *, rtx); + + + +extern void debug_tree (tree); + +extern void dump_addr (FILE*, const char *, void *); +extern void print_node (FILE *, const char *, tree, int); +extern void print_node_brief (FILE *, const char *, tree, int); +extern void indent_to (FILE *, int); + + + +extern unsigned char debug_find_tree (tree, tree); + + +extern tree unsave_expr_now (tree); +extern tree build_duplicate_type (tree); + + +extern rtx emit_line_note (location_t); +# 4455 "../../GCC/gcc/tree.h" +extern int flags_from_decl_or_type (tree); +extern int call_expr_flags (tree); + +extern int setjmp_call_p (tree); +extern unsigned char alloca_call_p (tree); +extern unsigned char must_pass_in_stack_var_size (enum machine_mode, tree); +extern unsigned char must_pass_in_stack_var_size_or_pad (enum machine_mode, tree); +# 4473 "../../GCC/gcc/tree.h" +extern tree decl_attributes (tree *, tree, int); + + +extern void set_decl_abstract_flags (tree, int); +extern void set_decl_origin_self (tree); + + +extern void set_min_and_max_values_for_integral_type (tree, int, unsigned char); +extern void fixup_signed_type (tree); +extern void internal_reference_types (void); +extern unsigned int update_alignment_for_field (record_layout_info, tree, + unsigned int); + +extern void make_decl_rtl (tree); +extern void make_decl_one_only (tree); +extern int supports_one_only (void); +extern void resolve_unique_section (tree, int, int); +extern void mark_referenced (tree); +extern void mark_decl_referenced (tree); +extern void notice_global_symbol (tree); +extern void set_user_assembler_name (tree, const char *); +extern void process_pending_assemble_externals (void); +extern void finish_aliases_1 (void); +extern void finish_aliases_2 (void); + + +extern void expand_computed_goto (tree); +extern unsigned char parse_output_constraint (const char **, int, int, int, + unsigned char *, unsigned char *, unsigned char *); +extern unsigned char parse_input_constraint (const char **, int, int, int, int, + const char * const *, unsigned char *, unsigned char *); +extern void expand_asm_expr (tree); +extern tree resolve_asm_operand_names (tree, tree, tree); +extern void expand_case (tree); +extern void expand_decl (tree); +extern void expand_anon_union_decl (tree, tree, tree); + + + + + + +extern tree create_artificial_label (void); +extern void gimplify_function_tree (tree); +extern const char *get_name (tree); +extern tree unshare_expr (tree); +extern void sort_case_labels (tree); + + + +extern tree get_file_function_name (int); + + + + + +extern char *dwarf2out_cfi_label (void); + + + +extern void dwarf2out_def_cfa (const char *, unsigned, long); + + + +extern void dwarf2out_window_save (const char *); + + + + +extern void dwarf2out_args_size (const char *, long); + + + +extern void dwarf2out_reg_save (const char *, unsigned, long); + + + +extern void dwarf2out_return_save (const char *, long); + + + +extern void dwarf2out_return_reg (const char *, unsigned); + + + +extern void dwarf2out_reg_save_reg (const char *, rtx, rtx); + + + + + +struct pointer_set_t; + + + +typedef tree (*walk_tree_fn) (tree *, int *, void *); +extern tree walk_tree (tree*, walk_tree_fn, void*, struct pointer_set_t*); +extern tree walk_tree_without_duplicates (tree*, walk_tree_fn, void*); + + + +extern void set_decl_rtl (tree, rtx); +extern void set_decl_incoming_rtl (tree, rtx); + + + +typedef enum +{ + d_kind, + t_kind, + b_kind, + s_kind, + r_kind, + e_kind, + c_kind, + id_kind, + perm_list_kind, + temp_list_kind, + vec_kind, + binfo_kind, + phi_kind, + ssa_name_kind, + constr_kind, + x_kind, + lang_decl, + lang_type, + omp_clause_kind, + all_kinds +} tree_node_kind; + +extern int tree_node_counts[]; +extern int tree_node_sizes[]; + + + + +extern unsigned char in_gimple_form; + + +extern tree get_base_address (tree t); + + +extern void vect_set_verbosity_level (const char *); + +struct tree_map +{ + unsigned int hash; + tree from; + tree to; +}; + +extern unsigned int tree_map_hash (const void *); +extern int tree_map_marked_p (const void *); +extern int tree_map_eq (const void *, const void *); + + +extern tree tree_mem_ref_addr (tree, tree); +extern void copy_mem_ref_info (tree, tree); + + +extern unsigned char ssa_name_nonzero_p (tree); +extern unsigned char ssa_name_nonnegative_p (tree); + + +extern void init_object_sizes (void); +extern void fini_object_sizes (void); +extern unsigned long compute_builtin_object_size (tree, int); + + +extern unsigned long highest_pow2_factor (tree); +# 44 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/rtl.h" 1 +# 27 "../../GCC/gcc/rtl.h" +# 1 "../../GCC/gcc/real.h" 1 +# 29 "../../GCC/gcc/real.h" +enum real_value_class { + rvc_zero, + rvc_normal, + rvc_inf, + rvc_nan +}; + + + + + + + +struct real_value +{ + + + + unsigned int cl : 2; + unsigned int decimal : 1; + unsigned int sign : 1; + unsigned int signalling : 1; + unsigned int canonical : 1; + unsigned int uexp : (32 - 6); + unsigned long sig[((128 + (8 * 4)) / (8 * 4))]; +}; +# 77 "../../GCC/gcc/real.h" +extern char test_real_width + [sizeof(struct real_value) <= (((128 + (8 * 4)) + 32)/(8 * 4) + (((128 + (8 * 4)) + 32)%(8 * 4) ? 1 : 0))*sizeof(long) ? 1 : -1]; +# 115 "../../GCC/gcc/real.h" +struct real_format +{ + + void (*encode) (const struct real_format *, long *, + const struct real_value *); + void (*decode) (const struct real_format *, struct real_value *, + const long *); + + + int b; + + + int log2_b; + + + int p; + + + int pnan; + + + int emin; + + + int emax; + + + + int signbit_ro; + + + + int signbit_rw; + + + unsigned char has_nans; + unsigned char has_inf; + unsigned char has_denorm; + unsigned char has_signed_zero; + unsigned char qnan_msb_set; +}; + + + + + + + +extern const struct real_format * + real_format_for_mode[MAX_MODE_FLOAT - MIN_MODE_FLOAT + 1 + + MAX_MODE_DECIMAL_FLOAT - MIN_MODE_DECIMAL_FLOAT + 1]; +# 182 "../../GCC/gcc/real.h" +extern unsigned char real_arithmetic (struct real_value *, int, const struct real_value *, + const struct real_value *); + + +extern unsigned char real_compare (int, const struct real_value *, const struct real_value *); + + +extern unsigned char real_isinf (const struct real_value *); + + +extern unsigned char real_isnan (const struct real_value *); + + +extern unsigned char real_isneg (const struct real_value *); + + +extern unsigned char real_isnegzero (const struct real_value *); + + +extern unsigned char real_identical (const struct real_value *, const struct real_value *); + + +extern void real_convert (struct real_value *, enum machine_mode, + const struct real_value *); + + +extern unsigned char exact_real_truncate (enum machine_mode, const struct real_value *); + + +extern void real_to_decimal (char *, const struct real_value *, size_t, + size_t, int); + + +extern void real_to_hexadecimal (char *, const struct real_value *, + size_t, size_t, int); + + +extern long real_to_integer (const struct real_value *); +extern void real_to_integer2 (long *, long *, + const struct real_value *); + + +extern void real_from_string (struct real_value *, const char *); + +extern void real_from_string3 (struct real_value *, const char *, enum machine_mode); + + +extern void real_from_integer (struct real_value *, enum machine_mode, + unsigned long, long, int); + +extern long real_to_target_fmt (long *, const struct real_value *, + const struct real_format *); +extern long real_to_target (long *, const struct real_value *, enum machine_mode); + +extern void real_from_target_fmt (struct real_value *, const long *, + const struct real_format *); +extern void real_from_target (struct real_value *, const long *, + enum machine_mode); + +extern void real_inf (struct real_value *); + +extern unsigned char real_nan (struct real_value *, const char *, int, enum machine_mode); + +extern void real_maxval (struct real_value *, int, enum machine_mode); + +extern void real_2expN (struct real_value *, int); + +extern unsigned int real_hash (const struct real_value *); + + + +extern const struct real_format ieee_single_format; +extern const struct real_format mips_single_format; +extern const struct real_format ieee_double_format; +extern const struct real_format mips_double_format; +extern const struct real_format ieee_extended_motorola_format; +extern const struct real_format ieee_extended_intel_96_format; +extern const struct real_format ieee_extended_intel_96_round_53_format; +extern const struct real_format ieee_extended_intel_128_format; +extern const struct real_format ibm_extended_format; +extern const struct real_format mips_extended_format; +extern const struct real_format ieee_quad_format; +extern const struct real_format mips_quad_format; +extern const struct real_format vax_f_format; +extern const struct real_format vax_d_format; +extern const struct real_format vax_g_format; +extern const struct real_format i370_single_format; +extern const struct real_format i370_double_format; +extern const struct real_format c4x_single_format; +extern const struct real_format c4x_extended_format; +extern const struct real_format real_internal_format; +extern const struct real_format decimal_single_format; +extern const struct real_format decimal_double_format; +extern const struct real_format decimal_quad_format; +# 331 "../../GCC/gcc/real.h" +extern struct real_value real_value_truncate (enum machine_mode, + struct real_value); + + + + +extern struct real_value real_arithmetic2 (int, const struct real_value *, + const struct real_value *); + + + + + + + +extern int significand_size (enum machine_mode); + +extern struct real_value real_from_string2 (const char *, enum machine_mode); +# 366 "../../GCC/gcc/real.h" +extern int real_exponent (const struct real_value *); + + +extern void real_ldexp (struct real_value *, const struct real_value *, int); + + + + + +extern struct real_value dconst0; +extern struct real_value dconst1; +extern struct real_value dconst2; +extern struct real_value dconst3; +extern struct real_value dconst10; +extern struct real_value dconstm1; +extern struct real_value dconstm2; +extern struct real_value dconsthalf; +extern struct real_value dconstthird; +extern struct real_value dconstpi; +extern struct real_value dconste; + + + +struct real_value real_value_from_int_cst (tree, tree); +# 398 "../../GCC/gcc/real.h" +extern rtx const_double_from_real_value (struct real_value, enum machine_mode); + + +extern unsigned char exact_real_inverse (enum machine_mode, struct real_value *); + + +extern tree build_real (tree, struct real_value); + + +extern unsigned char real_sqrt (struct real_value *, enum machine_mode, + const struct real_value *); + + +extern unsigned char real_powi (struct real_value *, enum machine_mode, + const struct real_value *, long); + + +extern void real_trunc (struct real_value *, enum machine_mode, + const struct real_value *); +extern void real_floor (struct real_value *, enum machine_mode, + const struct real_value *); +extern void real_ceil (struct real_value *, enum machine_mode, + const struct real_value *); +extern void real_round (struct real_value *, enum machine_mode, + const struct real_value *); + + +extern void real_copysign (struct real_value *, const struct real_value *); +# 28 "../../GCC/gcc/rtl.h" 2 +# 42 "../../GCC/gcc/rtl.h" +enum rtx_code { + + +# 1 "../../GCC/gcc/rtl.def" 1 +# 81 "../../GCC/gcc/rtl.def" +UNKNOWN , + + + + + + +EXPR_LIST , + + + +INSN_LIST , + + + + +DEPS_LIST , + + + + + +SEQUENCE , + + +ADDRESS , +# 119 "../../GCC/gcc/rtl.def" +INSN , + + + +JUMP_INSN , + + + + + + +CALL_INSN , + + +BARRIER , + + + + + + + +CODE_LABEL , +# 156 "../../GCC/gcc/rtl.def" +NOTE , +# 169 "../../GCC/gcc/rtl.def" +COND_EXEC , + + +PARALLEL , + + + + + + + +ASM_INPUT , +# 208 "../../GCC/gcc/rtl.def" +ASM_OPERANDS , +# 220 "../../GCC/gcc/rtl.def" +UNSPEC , + + +UNSPEC_VOLATILE , + + + +ADDR_VEC , +# 252 "../../GCC/gcc/rtl.def" +ADDR_DIFF_VEC , +# 263 "../../GCC/gcc/rtl.def" +PREFETCH , +# 275 "../../GCC/gcc/rtl.def" +SET , + + + + +USE , + + + + +CLOBBER , + + + + + +CALL , + + + +RETURN , + + + + + +TRAP_IF , + + + + +RESX , + + + + + + +CONST_INT , + + + + +CONST_DOUBLE , + + +CONST_VECTOR , + + + + +CONST_STRING , + + + + + +CONST , + + + +PC , + + + + +VALUE , +# 351 "../../GCC/gcc/rtl.def" +REG , + + + + + + +SCRATCH , +# 368 "../../GCC/gcc/rtl.def" +SUBREG , +# 381 "../../GCC/gcc/rtl.def" +STRICT_LOW_PART , + + + + + +CONCAT , + + + + +MEM , + + + +LABEL_REF , + + + + + + +SYMBOL_REF , + + + + + + +CC0 , +# 422 "../../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 , +# 469 "../../GCC/gcc/rtl.def" +SMIN , +SMAX , +UMIN , +UMAX , +# 481 "../../GCC/gcc/rtl.def" +PRE_DEC , +PRE_INC , +POST_DEC , +POST_INC , +# 498 "../../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 , +# 595 "../../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 , + + +SS_NEG , + + +SS_ASHIFT , + + +US_MINUS , + + +SS_TRUNCATE , + + +US_TRUNCATE , + + +VAR_LOCATION , +# 46 "../../GCC/gcc/rtl.h" 2 + + + LAST_AND_UNUSED_RTX_CODE}; +# 57 "../../GCC/gcc/rtl.h" +enum rtx_class { + + + + + RTX_COMPARE, + RTX_COMM_COMPARE, + RTX_BIN_ARITH, + RTX_COMM_ARITH, + + + RTX_UNARY, + + RTX_EXTRA, + RTX_MATCH, + RTX_INSN, + + + RTX_OBJ, + RTX_CONST_OBJ, + + RTX_TERNARY, + RTX_BITFIELD_OPS, + RTX_AUTOINC +}; +# 95 "../../GCC/gcc/rtl.h" +extern const unsigned char rtx_length[((int) LAST_AND_UNUSED_RTX_CODE)]; + + +extern const char * const rtx_name[((int) LAST_AND_UNUSED_RTX_CODE)]; + + +extern const char * const rtx_format[((int) LAST_AND_UNUSED_RTX_CODE)]; + + +extern const enum rtx_class rtx_class[((int) LAST_AND_UNUSED_RTX_CODE)]; + + +extern const unsigned char rtx_code_size[((int) LAST_AND_UNUSED_RTX_CODE)]; +extern const unsigned char rtx_next[((int) LAST_AND_UNUSED_RTX_CODE)]; + + + +typedef struct +{ + + unsigned min_align: 8; + + unsigned base_after_vec: 1; + unsigned min_after_vec: 1; + + unsigned max_after_vec: 1; + + unsigned min_after_base: 1; + + unsigned max_after_base: 1; + + + unsigned offset_unsigned: 1; + unsigned : 2; + unsigned scale : 8; +} addr_diff_vec_flags; +# 139 "../../GCC/gcc/rtl.h" +typedef struct mem_attrs +{ + long alias; + tree expr; + rtx offset; + rtx size; + unsigned int align; +} mem_attrs; + + + + +typedef struct reg_attrs +{ + tree decl; + long offset; +} reg_attrs; + + + +union rtunion_def +{ + int rt_int; + unsigned int rt_uint; + const char *rt_str; + rtx rt_rtx; + rtvec rt_rtvec; + enum machine_mode rt_type; + addr_diff_vec_flags rt_addr_diff_vec_flags; + struct cselib_val_struct *rt_cselib; + struct bitmap_head_def *rt_bit; + tree rt_tree; + struct basic_block_def *rt_bb; + mem_attrs *rt_mem; + reg_attrs *rt_reg; + struct constant_descriptor_rtx *rt_constant; +}; +typedef union rtunion_def rtunion; + + + + +struct block_symbol { + + rtunion fld[3]; + + + struct object_block *block; + + + + long offset; +}; + +static __inline__ void VEC_rtx_must_be_pointer_type (void) { (void)((rtx)1 == (void *)1); } typedef struct VEC_rtx_base { unsigned num; unsigned alloc; rtx vec[1]; } VEC_rtx_base; typedef struct VEC_rtx_none { VEC_rtx_base base; } VEC_rtx_none; static __inline__ unsigned VEC_rtx_base_length (const VEC_rtx_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ rtx VEC_rtx_base_last (const VEC_rtx_base *vec_ ) { (void)(vec_ && vec_->num); return vec_->vec[vec_->num - 1]; } static __inline__ rtx VEC_rtx_base_index (const VEC_rtx_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return vec_->vec[ix_]; } static __inline__ int VEC_rtx_base_iterate (const VEC_rtx_base *vec_, unsigned ix_, rtx *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_rtx_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_rtx_base, vec) + alloc_ * sizeof(rtx); } static __inline__ void VEC_rtx_base_embedded_init (VEC_rtx_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_rtx_base_space (VEC_rtx_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ rtx *VEC_rtx_base_quick_push (VEC_rtx_base *vec_, rtx obj_ ) { rtx *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ rtx VEC_rtx_base_pop (VEC_rtx_base *vec_ ) { rtx obj_; (void)(vec_->num); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_rtx_base_truncate (VEC_rtx_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ rtx VEC_rtx_base_replace (VEC_rtx_base *vec_, unsigned ix_, rtx obj_ ) { rtx old_obj_; (void)(ix_ < vec_->num); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ rtx *VEC_rtx_base_quick_insert (VEC_rtx_base *vec_, unsigned ix_, rtx obj_ ) { rtx *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (rtx)); *slot_ = obj_; return slot_; } static __inline__ rtx VEC_rtx_base_ordered_remove (VEC_rtx_base *vec_, unsigned ix_ ) { rtx *slot_; rtx obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (rtx)); return obj_; } static __inline__ rtx VEC_rtx_base_unordered_remove (VEC_rtx_base *vec_, unsigned ix_ ) { rtx *slot_; rtx obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_rtx_base_block_remove (VEC_rtx_base *vec_, unsigned ix_, unsigned len_ ) { rtx *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (rtx)); } static __inline__ rtx *VEC_rtx_base_address (VEC_rtx_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_rtx_base_lower_bound (VEC_rtx_base *vec_, const rtx obj_, unsigned char (*lessthan_)(const rtx, const rtx) ) { unsigned int len_ = VEC_rtx_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { rtx middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_rtx_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_rtx_heap { VEC_rtx_base base; } VEC_rtx_heap; static __inline__ VEC_rtx_heap *VEC_rtx_heap_alloc (int alloc_ ) { return (VEC_rtx_heap *) vec_heap_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_rtx_heap_free (VEC_rtx_heap **vec_) { if (*vec_) free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_rtx_heap *VEC_rtx_heap_copy (VEC_rtx_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_rtx_heap *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_rtx_heap *)(vec_heap_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (rtx) * len_); } return new_vec_; } static __inline__ int VEC_rtx_heap_reserve (VEC_rtx_heap **vec_, int alloc_ ) { int extend = !VEC_rtx_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_rtx_heap *) vec_heap_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_rtx_heap_reserve_exact (VEC_rtx_heap **vec_, int alloc_ ) { int extend = !VEC_rtx_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_rtx_heap *) vec_heap_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_rtx_heap_safe_grow (VEC_rtx_heap **vec_, int size_ ) { (void)(size_ >= 0 && VEC_rtx_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_rtx_heap_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ rtx *VEC_rtx_heap_safe_push (VEC_rtx_heap **vec_, rtx obj_ ) { VEC_rtx_heap_reserve (vec_, 1 ); return VEC_rtx_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ rtx *VEC_rtx_heap_safe_insert (VEC_rtx_heap **vec_, unsigned ix_, rtx obj_ ) { VEC_rtx_heap_reserve (vec_, 1 ); return VEC_rtx_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; +typedef struct VEC_rtx_gc { VEC_rtx_base base; } VEC_rtx_gc; static __inline__ VEC_rtx_gc *VEC_rtx_gc_alloc (int alloc_ ) { return (VEC_rtx_gc *) vec_gc_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_rtx_gc_free (VEC_rtx_gc **vec_) { if (*vec_) ggc_free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_rtx_gc *VEC_rtx_gc_copy (VEC_rtx_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_rtx_gc *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_rtx_gc *)(vec_gc_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (rtx) * len_); } return new_vec_; } static __inline__ int VEC_rtx_gc_reserve (VEC_rtx_gc **vec_, int alloc_ ) { int extend = !VEC_rtx_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_rtx_gc *) vec_gc_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_rtx_gc_reserve_exact (VEC_rtx_gc **vec_, int alloc_ ) { int extend = !VEC_rtx_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_rtx_gc *) vec_gc_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_rtx_gc_safe_grow (VEC_rtx_gc **vec_, int size_ ) { (void)(size_ >= 0 && VEC_rtx_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_rtx_gc_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ rtx *VEC_rtx_gc_safe_push (VEC_rtx_gc **vec_, rtx obj_ ) { VEC_rtx_gc_reserve (vec_, 1 ); return VEC_rtx_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ rtx *VEC_rtx_gc_safe_insert (VEC_rtx_gc **vec_, unsigned ix_, rtx obj_ ) { VEC_rtx_gc_reserve (vec_, 1 ); return VEC_rtx_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; + + + +struct object_block +{ + + section *sect; + + + unsigned int alignment; + + + long size; +# 218 "../../GCC/gcc/rtl.h" + VEC_rtx_gc *objects; +# 228 "../../GCC/gcc/rtl.h" + VEC_rtx_gc *anchors; +}; + + + +struct rtx_def + +{ + + __extension__ enum rtx_code code: 16; + + + __extension__ enum machine_mode mode : 8; + + + + + + + unsigned int jump : 1; + + + unsigned int call : 1; + + + + + + + + unsigned int unchanging : 1; +# 267 "../../GCC/gcc/rtl.h" + unsigned int volatil : 1; +# 281 "../../GCC/gcc/rtl.h" + unsigned int in_struct : 1; + + + + + + + unsigned int used : 1; + + + + + + + unsigned frame_related : 1; + + + + unsigned return_val : 1; + + + + + union u { + rtunion fld[1]; + long hwint[1]; + struct block_symbol block_sym; + struct real_value rv; + } u; +}; +# 347 "../../GCC/gcc/rtl.h" +struct rtvec_def { + int num_elem; + rtx elem[1]; +}; +# 539 "../../GCC/gcc/rtl.h" +extern void rtl_check_failed_bounds (rtx, int, const char *, int, + const char *) + __attribute__ ((__noreturn__)); +extern void rtl_check_failed_type1 (rtx, int, int, const char *, int, + const char *) + __attribute__ ((__noreturn__)); +extern void rtl_check_failed_type2 (rtx, int, int, int, const char *, + int, const char *) + __attribute__ ((__noreturn__)); +extern void rtl_check_failed_code1 (rtx, enum rtx_code, const char *, + int, const char *) + __attribute__ ((__noreturn__)); +extern void rtl_check_failed_code2 (rtx, enum rtx_code, enum rtx_code, + const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void rtl_check_failed_code_mode (rtx, enum rtx_code, enum machine_mode, + unsigned char, const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void rtl_check_failed_block_symbol (const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void rtvec_check_failed_bounds (rtvec, int, const char *, int, + const char *) + __attribute__ ((__noreturn__)); +# 793 "../../GCC/gcc/rtl.h" +enum reg_note +{ + +# 1 "../../GCC/gcc/reg-notes.def" 1 +# 32 "../../GCC/gcc/reg-notes.def" +REG_DEP_TRUE, + + + + +REG_DEAD, + + +REG_INC, +# 51 "../../GCC/gcc/reg-notes.def" +REG_EQUIV, + + + + +REG_EQUAL, + + + + + + +REG_RETVAL, + + + + +REG_LIBCALL, + + + + + + +REG_NONNEG, + + + +REG_NO_CONFLICT, + + +REG_UNUSED, +# 91 "../../GCC/gcc/reg-notes.def" +REG_CC_SETTER, +REG_CC_USER, + + + + +REG_LABEL, + + + +REG_DEP_OUTPUT, +REG_DEP_ANTI, + + + + + +REG_BR_PROB, + + + + +REG_VALUE_PROFILE, + + + +REG_NOALIAS, + + + + + +REG_BR_PRED, + + + + +REG_FRAME_RELATED_EXPR, + + + + +REG_EH_CONTEXT, + + + + + +REG_EH_REGION, + + +REG_SAVE_NOTE, + + + + + +REG_MAYBE_DEAD, + + +REG_NORETURN, + + + +REG_NON_LOCAL_GOTO, + + + + +REG_CROSSING_JUMP, + + + +REG_SETJMP, +# 797 "../../GCC/gcc/rtl.h" 2 + + REG_NOTE_MAX +}; +# 808 "../../GCC/gcc/rtl.h" +extern const char * const reg_note_name[]; +# 879 "../../GCC/gcc/rtl.h" +enum insn_note +{ + + NOTE_INSN_BIAS = -100, + + +# 1 "../../GCC/gcc/insn-notes.def" 1 +# 35 "../../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_SWITCH_TEXT_SECTIONS, +# 886 "../../GCC/gcc/rtl.h" 2 + + + NOTE_INSN_MAX +}; + + + +extern const char * const note_insn_name[NOTE_INSN_MAX - NOTE_INSN_BIAS]; +# 908 "../../GCC/gcc/rtl.h" +enum label_kind +{ + LABEL_NORMAL = 0, + LABEL_STATIC_ENTRY, + LABEL_GLOBAL_ENTRY, + LABEL_WEAK_ENTRY +}; +# 1032 "../../GCC/gcc/rtl.h" +extern void init_rtlanal (void); +extern int rtx_cost (rtx, enum rtx_code); +extern int address_cost (rtx, enum machine_mode); +extern unsigned int subreg_lsb (rtx); +extern unsigned int subreg_lsb_1 (enum machine_mode, enum machine_mode, + unsigned int); +extern unsigned int subreg_regno_offset (unsigned int, enum machine_mode, + unsigned int, enum machine_mode); +extern unsigned char subreg_offset_representable_p (unsigned int, enum machine_mode, + unsigned int, enum machine_mode); +extern unsigned int subreg_regno (rtx); +extern unsigned long nonzero_bits (rtx, enum machine_mode); +extern unsigned int num_sign_bit_copies (rtx, enum machine_mode); +extern unsigned char constant_pool_constant_p (rtx); +extern unsigned char truncated_to_mode (enum machine_mode, rtx); +# 1425 "../../GCC/gcc/rtl.h" +extern int generating_concat_p; + + +extern int currently_expanding_to_rtl; + + + + +extern int ceil_log2 (unsigned long); + + +extern rtx expand_builtin_expect_jump (tree, rtx, rtx); + + +extern void set_stack_check_libfunc (rtx); +extern long trunc_int_for_mode (long, enum machine_mode); +extern rtx plus_constant (rtx, long); + + +extern rtvec gen_rtvec (int, ...); +extern rtx copy_insn_1 (rtx); +extern rtx copy_insn (rtx); +extern rtx gen_int_mode (long, enum machine_mode); +extern rtx emit_copy_of_insn_after (rtx, rtx); +extern void set_reg_attrs_from_mem (rtx, rtx); +extern void set_mem_attrs_from_reg (rtx, rtx); +extern void set_reg_attrs_for_parm (rtx, rtx); +extern int mem_expr_equal_p (tree, tree); + + +extern rtx rtx_alloc_stat (enum rtx_code ); + + +extern rtvec rtvec_alloc (int); +extern rtx copy_rtx (rtx); +extern void dump_rtx_statistics (void); + + +extern rtx copy_rtx_if_shared (rtx); + + +extern unsigned int rtx_size (rtx); +extern rtx shallow_copy_rtx_stat (rtx ); + +extern int rtx_equal_p (rtx, rtx); + + +extern rtvec gen_rtvec_v (int, rtx *); +extern rtx gen_reg_rtx (enum machine_mode); +extern rtx gen_rtx_REG_offset (rtx, enum machine_mode, unsigned int, int); +extern rtx gen_label_rtx (void); +extern rtx gen_lowpart_common (enum machine_mode, rtx); + + +extern rtx gen_lowpart_if_possible (enum machine_mode, rtx); + + +extern rtx gen_highpart (enum machine_mode, rtx); +extern rtx gen_highpart_mode (enum machine_mode, enum machine_mode, rtx); +extern rtx operand_subword (rtx, unsigned int, int, enum machine_mode); + + +extern rtx operand_subword_force (rtx, unsigned int, enum machine_mode); +extern int subreg_lowpart_p (rtx); +extern unsigned int subreg_lowpart_offset (enum machine_mode, + enum machine_mode); +extern unsigned int subreg_highpart_offset (enum machine_mode, + enum machine_mode); +extern rtx make_safe_from (rtx, rtx); +extern rtx convert_memory_address (enum machine_mode, rtx); +extern rtx get_insns (void); +extern const char *get_insn_name (int); +extern rtx get_last_insn (void); +extern rtx get_last_insn_anywhere (void); +extern rtx get_first_nonnote_insn (void); +extern rtx get_last_nonnote_insn (void); +extern void start_sequence (void); +extern void push_to_sequence (rtx); +extern void end_sequence (void); +extern rtx immed_double_const (long, long, + enum machine_mode); + + + +extern rtx lowpart_subreg (enum machine_mode, rtx, enum machine_mode); + + +extern rtx force_const_mem (enum machine_mode, rtx); + + + +struct function; +extern rtx get_pool_constant (rtx); +extern rtx get_pool_constant_mark (rtx, unsigned char *); +extern enum machine_mode get_pool_mode (rtx); +extern rtx simplify_subtraction (rtx); + + +extern rtx assign_stack_local (enum machine_mode, long, int); +extern rtx assign_stack_temp (enum machine_mode, long, int); +extern rtx assign_stack_temp_for_type (enum machine_mode, + long, int, tree); +extern rtx assign_temp (tree, int, int, int); + + +extern rtx emit_insn_before (rtx, rtx); +extern rtx emit_insn_before_noloc (rtx, rtx); +extern rtx emit_insn_before_setloc (rtx, rtx, int); +extern rtx emit_jump_insn_before (rtx, rtx); +extern rtx emit_jump_insn_before_noloc (rtx, rtx); +extern rtx emit_jump_insn_before_setloc (rtx, rtx, int); +extern rtx emit_call_insn_before (rtx, rtx); +extern rtx emit_call_insn_before_noloc (rtx, rtx); +extern rtx emit_call_insn_before_setloc (rtx, rtx, int); +extern rtx emit_barrier_before (rtx); +extern rtx emit_label_before (rtx, rtx); +extern rtx emit_note_before (int, rtx); +extern rtx emit_insn_after (rtx, rtx); +extern rtx emit_insn_after_noloc (rtx, rtx); +extern rtx emit_insn_after_setloc (rtx, rtx, int); +extern rtx emit_jump_insn_after (rtx, rtx); +extern rtx emit_jump_insn_after_noloc (rtx, rtx); +extern rtx emit_jump_insn_after_setloc (rtx, rtx, int); +extern rtx emit_call_insn_after (rtx, rtx); +extern rtx emit_call_insn_after_noloc (rtx, rtx); +extern rtx emit_call_insn_after_setloc (rtx, rtx, int); +extern rtx emit_barrier_after (rtx); +extern rtx emit_label_after (rtx, rtx); +extern rtx emit_note_after (int, rtx); +extern rtx emit_note_copy_after (rtx, rtx); +extern rtx emit_insn (rtx); +extern rtx emit_jump_insn (rtx); +extern rtx emit_call_insn (rtx); +extern rtx emit_label (rtx); +extern rtx emit_barrier (void); +extern rtx emit_note (int); +extern rtx emit_note_copy (rtx); +extern rtx emit_line_note (location_t); +extern rtx make_insn_raw (rtx); +extern rtx make_jump_insn_raw (rtx); +extern void add_function_usage_to (rtx, rtx); +extern rtx last_call_insn (void); +extern rtx previous_insn (rtx); +extern rtx next_insn (rtx); +extern rtx prev_nonnote_insn (rtx); +extern rtx next_nonnote_insn (rtx); +extern rtx prev_real_insn (rtx); +extern rtx next_real_insn (rtx); +extern rtx prev_active_insn (rtx); +extern rtx next_active_insn (rtx); +extern int active_insn_p (rtx); +extern rtx prev_label (rtx); +extern rtx next_label (rtx); +extern rtx skip_consecutive_labels (rtx); +extern rtx next_cc0_user (rtx); +extern rtx prev_cc0_setter (rtx); + + +extern int insn_line (rtx); +extern const char * insn_file (rtx); +extern int locator_line (int); +extern const char * locator_file (int); +extern int prologue_locator, epilogue_locator; + + +extern enum rtx_code reverse_condition (enum rtx_code); +extern enum rtx_code reverse_condition_maybe_unordered (enum rtx_code); +extern enum rtx_code swap_condition (enum rtx_code); +extern enum rtx_code unsigned_condition (enum rtx_code); +extern enum rtx_code signed_condition (enum rtx_code); +extern void mark_jump_label (rtx, rtx, int); +extern unsigned int cleanup_barriers (void); + + +extern unsigned char squeeze_notes (rtx *, rtx *); +extern rtx delete_related_insns (rtx); +extern void delete_jump (rtx); +extern rtx get_label_before (rtx); +extern rtx get_label_after (rtx); +extern rtx follow_jumps (rtx); + + +extern rtx *find_constant_term_loc (rtx *); + + +extern rtx try_split (rtx, rtx, int); +extern int split_branch_probability; + + +extern rtx split_insns (rtx, rtx); + + +extern rtx simplify_const_unary_operation (enum rtx_code, enum machine_mode, + rtx, enum machine_mode); +extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, + enum machine_mode); +extern rtx simplify_const_binary_operation (enum rtx_code, enum machine_mode, + rtx, rtx); +extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, + rtx); +extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, + enum machine_mode, rtx, rtx, rtx); +extern rtx simplify_const_relational_operation (enum rtx_code, + enum machine_mode, rtx, rtx); +extern rtx simplify_relational_operation (enum rtx_code, enum machine_mode, + enum machine_mode, rtx, rtx); +extern rtx simplify_gen_binary (enum rtx_code, enum machine_mode, rtx, rtx); +extern rtx simplify_gen_unary (enum rtx_code, enum machine_mode, rtx, + enum machine_mode); +extern rtx simplify_gen_ternary (enum rtx_code, enum machine_mode, + enum machine_mode, rtx, rtx, rtx); +extern rtx simplify_gen_relational (enum rtx_code, enum machine_mode, + enum machine_mode, rtx, rtx); +extern rtx simplify_subreg (enum machine_mode, rtx, enum machine_mode, + unsigned int); +extern rtx simplify_gen_subreg (enum machine_mode, rtx, enum machine_mode, + unsigned int); +extern rtx simplify_replace_rtx (rtx, rtx, rtx); +extern rtx simplify_rtx (rtx); +extern rtx avoid_constant_pool_reference (rtx); +extern unsigned char constant_pool_reference_p (rtx x); +extern unsigned char mode_signbit_p (enum machine_mode, rtx); + + +extern enum machine_mode choose_hard_reg_mode (unsigned int, unsigned int, + unsigned char); + + +extern rtx set_unique_reg_note (rtx, enum reg_note, rtx); +# 1665 "../../GCC/gcc/rtl.h" +typedef struct replace_label_data +{ + rtx r1; + rtx r2; + unsigned char update_label_nuses; +} replace_label_data; + +extern int rtx_addr_can_trap_p (rtx); +extern unsigned char nonzero_address_p (rtx); +extern int rtx_unstable_p (rtx); +extern int rtx_varies_p (rtx, int); +extern int rtx_addr_varies_p (rtx, int); +extern long get_integer_term (rtx); +extern rtx get_related_value (rtx); +extern int reg_mentioned_p (rtx, rtx); +extern int count_occurrences (rtx, rtx, int); +extern int reg_referenced_p (rtx, rtx); +extern int reg_used_between_p (rtx, rtx, rtx); +extern int reg_set_between_p (rtx, rtx, rtx); +extern int commutative_operand_precedence (rtx); +extern int swap_commutative_operands_p (rtx, rtx); +extern int modified_between_p (rtx, rtx, rtx); +extern int no_labels_between_p (rtx, rtx); +extern int modified_in_p (rtx, rtx); +extern int reg_set_p (rtx, rtx); +extern rtx single_set_2 (rtx, rtx); +extern int multiple_sets (rtx); +extern int set_noop_p (rtx); +extern int noop_move_p (rtx); +extern rtx find_last_value (rtx, rtx *, rtx, int); +extern int refers_to_regno_p (unsigned int, unsigned int, rtx, rtx *); +extern int reg_overlap_mentioned_p (rtx, rtx); +extern rtx set_of (rtx, rtx); +extern void note_stores (rtx, void (*) (rtx, rtx, void *), void *); +extern void note_uses (rtx *, void (*) (rtx *, void *), void *); +extern int dead_or_set_p (rtx, rtx); +extern int dead_or_set_regno_p (rtx, unsigned int); +extern rtx find_reg_note (rtx, enum reg_note, rtx); +extern rtx find_regno_note (rtx, enum reg_note, unsigned int); +extern rtx find_reg_equal_equiv_note (rtx); +extern int find_reg_fusage (rtx, enum rtx_code, rtx); +extern int find_regno_fusage (rtx, enum rtx_code, unsigned int); +extern int pure_call_p (rtx); +extern void remove_note (rtx, rtx); +extern int side_effects_p (rtx); +extern int volatile_refs_p (rtx); +extern int volatile_insn_p (rtx); +extern int may_trap_p (rtx); +extern int may_trap_after_code_motion_p (rtx); +extern int may_trap_or_fault_p (rtx); +extern int inequality_comparisons_p (rtx); +extern rtx replace_rtx (rtx, rtx, rtx); +extern int replace_label (rtx *, void *); +extern int rtx_referenced_p (rtx, rtx); +extern unsigned char tablejump_p (rtx, rtx *, rtx *); +extern int computed_jump_p (rtx); +typedef int (*rtx_function) (rtx *, void *); +extern int for_each_rtx (rtx *, rtx_function, void *); +extern rtx regno_use_in (unsigned int, rtx); +extern int auto_inc_p (rtx); +extern int in_expr_list_p (rtx, rtx); +extern void remove_node_from_expr_list (rtx, rtx *); +extern int loc_mentioned_in_p (rtx *, rtx); +extern rtx find_first_parameter_load (rtx, rtx); +extern unsigned char keep_with_call_p (rtx); +extern unsigned char label_is_jump_target_p (rtx, rtx); +extern int insn_rtx_cost (rtx); + + + +extern rtx canonicalize_condition (rtx, rtx, int, rtx *, rtx, int, int); + + + +extern rtx get_condition (rtx, rtx *, int, int); + + + + +extern rtx find_use_as_address (rtx, rtx, long); + + + +void free_EXPR_LIST_list (rtx *); +void free_INSN_LIST_list (rtx *); +void free_EXPR_LIST_node (rtx); +void free_INSN_LIST_node (rtx); +rtx alloc_INSN_LIST (rtx, rtx); +rtx alloc_EXPR_LIST (int, rtx, rtx); +void free_DEPS_LIST_list (rtx *); +rtx alloc_DEPS_LIST (rtx, rtx, int); +void remove_free_DEPS_LIST_elem (rtx, rtx *); +void remove_free_INSN_LIST_elem (rtx, rtx *); +rtx remove_list_elem (rtx, rtx *); +rtx copy_DEPS_LIST_list (rtx); + + + + + + + +extern int max_parallel; + + +extern void free_reg_info (void); + + +extern int asm_noperands (rtx); +extern const char *decode_asm_operands (rtx, rtx *, rtx **, const char **, + enum machine_mode *); + +extern enum reg_class reg_preferred_class (int); +extern enum reg_class reg_alternate_class (int); + +extern void split_all_insns (int); +extern unsigned int split_all_insns_noflow (void); + + +extern rtx const_int_rtx[64 * 2 + 1]; + + + + + +extern rtx const_true_rtx; + +extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE]; +# 1815 "../../GCC/gcc/rtl.h" +enum global_rtl_index +{ + GR_PC, + GR_CC0, + GR_STACK_POINTER, + GR_FRAME_POINTER, +# 1830 "../../GCC/gcc/rtl.h" + GR_HARD_FRAME_POINTER, + + + + + + GR_ARG_POINTER, + + + GR_VIRTUAL_INCOMING_ARGS, + GR_VIRTUAL_STACK_ARGS, + GR_VIRTUAL_STACK_DYNAMIC, + GR_VIRTUAL_OUTGOING_ARGS, + GR_VIRTUAL_CFA, + + GR_MAX +}; + + +extern rtx global_rtl[GR_MAX]; +# 1863 "../../GCC/gcc/rtl.h" +extern rtx pic_offset_table_rtx; +extern rtx static_chain_rtx; +extern rtx static_chain_incoming_rtx; +extern rtx return_address_pointer_rtx; + + + + +# 1 "./genrtl.h" 1 + + + + + +extern rtx gen_rtx_fmt_ee (enum rtx_code, enum machine_mode mode, + rtx arg0, rtx arg1); +extern rtx gen_rtx_fmt_ue (enum rtx_code, enum machine_mode mode, + rtx arg0, rtx arg1); +extern rtx gen_rtx_fmt_uei (enum rtx_code, enum machine_mode mode, + rtx arg0, rtx arg1, int arg2); +extern rtx gen_rtx_fmt_E (enum rtx_code, enum machine_mode mode, + rtvec arg0); +extern rtx gen_rtx_fmt_e (enum rtx_code, enum machine_mode mode, + rtx arg0); +extern rtx gen_rtx_fmt_iuuBieiee (enum rtx_code, enum machine_mode mode, + int arg0, rtx arg1, rtx arg2, + struct basic_block_def *arg3, + int arg4, rtx arg5, int arg6, + rtx arg7, rtx arg8); +extern rtx gen_rtx_fmt_iuuBieiee0 (enum rtx_code, enum machine_mode mode, + int arg0, rtx arg1, rtx arg2, + struct basic_block_def *arg3, + int arg4, rtx arg5, int arg6, + rtx arg7, rtx arg8); +extern rtx gen_rtx_fmt_iuuBieieee (enum rtx_code, enum machine_mode mode, + int arg0, rtx arg1, rtx arg2, + struct basic_block_def *arg3, + int arg4, rtx arg5, int arg6, + rtx arg7, rtx arg8, rtx arg9); +extern rtx gen_rtx_fmt_iuu000000 (enum rtx_code, enum machine_mode mode, + int arg0, rtx arg1, rtx arg2); +extern rtx gen_rtx_fmt_iuuB00is (enum rtx_code, enum machine_mode mode, + int arg0, rtx arg1, rtx arg2, + struct basic_block_def *arg3, + int arg4, const char *arg5); +extern rtx gen_rtx_fmt_s (enum rtx_code, enum machine_mode mode, + const char *arg0); +extern rtx gen_rtx_fmt_ssiEEsi (enum rtx_code, enum machine_mode mode, + const char *arg0, const char *arg1, + int arg2, rtvec arg3, rtvec arg4, + const char *arg5, int arg6); +extern rtx gen_rtx_fmt_Ei (enum rtx_code, enum machine_mode mode, + rtvec arg0, int arg1); +extern rtx gen_rtx_fmt_eEee0 (enum rtx_code, enum machine_mode mode, + rtx arg0, rtvec arg1, rtx arg2, + rtx arg3); +extern rtx gen_rtx_fmt_eee (enum rtx_code, enum machine_mode mode, + rtx arg0, rtx arg1, rtx arg2); +extern rtx gen_rtx_fmt_ (enum rtx_code, enum machine_mode mode); +extern rtx gen_rtx_fmt_i (enum rtx_code, enum machine_mode mode, + int arg0); +extern rtx gen_rtx_fmt_w (enum rtx_code, enum machine_mode mode, + long arg0); +extern rtx gen_rtx_fmt_0 (enum rtx_code, enum machine_mode mode); +extern rtx gen_rtx_fmt_i00 (enum rtx_code, enum machine_mode mode, + int arg0); +extern rtx gen_rtx_fmt_ei (enum rtx_code, enum machine_mode mode, + rtx arg0, int arg1); +extern rtx gen_rtx_fmt_e0 (enum rtx_code, enum machine_mode mode, + rtx arg0); +extern rtx gen_rtx_fmt_u (enum rtx_code, enum machine_mode mode, + rtx arg0); +extern rtx gen_rtx_fmt_s00 (enum rtx_code, enum machine_mode mode, + const char *arg0); +extern rtx gen_rtx_fmt_te (enum rtx_code, enum machine_mode mode, + union tree_node *arg0, rtx arg1); +extern rtx gen_rtx_fmt_iss (enum rtx_code, enum machine_mode mode, + int arg0, const char *arg1, + const char *arg2); +extern rtx gen_rtx_fmt_is (enum rtx_code, enum machine_mode mode, + int arg0, const char *arg1); +extern rtx gen_rtx_fmt_isE (enum rtx_code, enum machine_mode mode, + int arg0, const char *arg1, + rtvec arg2); +extern rtx gen_rtx_fmt_iE (enum rtx_code, enum machine_mode mode, + int arg0, rtvec arg1); +extern rtx gen_rtx_fmt_ss (enum rtx_code, enum machine_mode mode, + const char *arg0, const char *arg1); +extern rtx gen_rtx_fmt_sEss (enum rtx_code, enum machine_mode mode, + const char *arg0, rtvec arg1, + const char *arg2, const char *arg3); +extern rtx gen_rtx_fmt_eE (enum rtx_code, enum machine_mode mode, + rtx arg0, rtvec arg1); +extern rtx gen_rtx_fmt_Ess (enum rtx_code, enum machine_mode mode, + rtvec arg0, const char *arg1, + const char *arg2); +extern rtx gen_rtx_fmt_ses (enum rtx_code, enum machine_mode mode, + const char *arg0, rtx arg1, + const char *arg2); +extern rtx gen_rtx_fmt_sss (enum rtx_code, enum machine_mode mode, + const char *arg0, const char *arg1, + const char *arg2); +extern rtx gen_rtx_fmt_sse (enum rtx_code, enum machine_mode mode, + const char *arg0, const char *arg1, + rtx arg2); +extern rtx gen_rtx_fmt_sies (enum rtx_code, enum machine_mode mode, + const char *arg0, int arg1, + rtx arg2, const char *arg3); +extern rtx gen_rtx_fmt_sE (enum rtx_code, enum machine_mode mode, + const char *arg0, rtvec arg1); +extern rtx gen_rtx_fmt_ii (enum rtx_code, enum machine_mode mode, + int arg0, int arg1); +extern rtx gen_rtx_fmt_Ee (enum rtx_code, enum machine_mode mode, + rtvec arg0, rtx arg1); +# 1872 "../../GCC/gcc/rtl.h" 2 +# 1883 "../../GCC/gcc/rtl.h" +extern rtx gen_rtx_CONST_INT (enum machine_mode, long); +extern rtx gen_rtx_CONST_VECTOR (enum machine_mode, rtvec); +extern rtx gen_raw_REG (enum machine_mode, int); +extern rtx gen_rtx_REG (enum machine_mode, unsigned); +extern rtx gen_rtx_SUBREG (enum machine_mode, rtx, int); +extern rtx gen_rtx_MEM (enum machine_mode, rtx); +# 1956 "../../GCC/gcc/rtl.h" +extern rtx output_constant_def (tree, int); +extern rtx lookup_constant_def (tree); + + + +extern int flow2_completed; + + + + +extern int reload_completed; + + +extern int epilogue_completed; + + + + +extern int reload_in_progress; + + + + +extern int regstack_completed; +# 1988 "../../GCC/gcc/rtl.h" +extern int cse_not_expected; + + + +extern int no_new_pseudos; + + + + + +extern int rtx_to_tree_code (enum rtx_code); + + +extern int delete_trivially_dead_insns (rtx, int); +extern int cse_main (rtx, int); +extern int exp_equiv_p (rtx, rtx, int, unsigned char); +extern unsigned hash_rtx (rtx x, enum machine_mode, int *, int *, unsigned char); + + +extern int comparison_dominates_p (enum rtx_code, enum rtx_code); +extern int condjump_p (rtx); +extern int any_condjump_p (rtx); +extern int any_uncondjump_p (rtx); +extern rtx pc_set (rtx); +extern rtx condjump_label (rtx); +extern int simplejump_p (rtx); +extern int returnjump_p (rtx); +extern int onlyjump_p (rtx); +extern int only_sets_cc0_p (rtx); +extern int sets_cc0_p (rtx); +extern int invert_jump_1 (rtx, rtx); +extern int invert_jump (rtx, rtx, int); +extern int rtx_renumbered_equal_p (rtx, rtx); +extern int true_regnum (rtx); +extern unsigned int reg_or_subregno (rtx); +extern int redirect_jump_1 (rtx, rtx); +extern void redirect_jump_2 (rtx, rtx, rtx, int, int); +extern int redirect_jump (rtx, rtx, int); +extern void rebuild_jump_labels (rtx); +extern rtx reversed_comparison (rtx, enum machine_mode); +extern enum rtx_code reversed_comparison_code (rtx, rtx); +extern enum rtx_code reversed_comparison_code_parts (enum rtx_code, + rtx, rtx, rtx); +extern void delete_for_peephole (rtx, rtx); +extern int condjump_in_parallel_p (rtx); +extern unsigned int purge_line_number_notes (void); + + +extern int max_reg_num (void); +extern int max_label_num (void); +extern int get_first_label_num (void); +extern void maybe_set_first_label_num (rtx); +extern void delete_insns_since (rtx); +extern void mark_reg_pointer (rtx, int); +extern void mark_user_reg (rtx); +extern void reset_used_flags (rtx); +extern void set_used_flags (rtx); +extern void reorder_insns (rtx, rtx, rtx); +extern void reorder_insns_nobb (rtx, rtx, rtx); +extern int get_max_uid (void); +extern int in_sequence_p (void); +extern void force_next_line_note (void); +extern void init_emit (void); +extern void init_emit_once (int); +extern void push_topmost_sequence (void); +extern void pop_topmost_sequence (void); +extern void set_new_first_and_last_insn (rtx, rtx); +extern unsigned int unshare_all_rtl (void); +extern void unshare_all_rtl_again (rtx); +extern void unshare_all_rtl_in_chain (rtx); +extern void verify_rtl_sharing (void); +extern void set_first_insn (rtx); +extern void set_last_insn (rtx); +extern void link_cc0_insns (rtx); +extern void add_insn (rtx); +extern void add_insn_before (rtx, rtx); +extern void add_insn_after (rtx, rtx); +extern void remove_insn (rtx); +extern void emit_insn_after_with_line_notes (rtx, rtx, rtx); +extern rtx emit (rtx); +extern void renumber_insns (void); +extern rtx delete_insn (rtx); +extern rtx entry_of_function (void); +extern void emit_insn_at_entry (rtx); +extern void delete_insn_chain (rtx, rtx); +extern rtx unlink_insn_chain (rtx, rtx); +extern rtx delete_insn_and_edges (rtx); +extern void delete_insn_chain_and_edges (rtx, rtx); +extern rtx gen_lowpart_SUBREG (enum machine_mode, rtx); +extern rtx gen_const_mem (enum machine_mode, rtx); +extern rtx gen_frame_mem (enum machine_mode, rtx); +extern rtx gen_tmp_stack_mem (enum machine_mode, rtx); +extern unsigned char validate_subreg (enum machine_mode, enum machine_mode, + rtx, unsigned int); + + +extern unsigned int extended_count (rtx, enum machine_mode, int); +extern rtx remove_death (unsigned int, rtx); +extern void dump_combine_stats (FILE *); +extern void dump_combine_total_stats (FILE *); + + +extern void print_rtl_slim_with_bb (FILE *, rtx, int); +extern void dump_insn_slim (FILE *f, rtx x); +extern void debug_insn_slim (rtx x); + + +extern void schedule_insns (void); + + +extern void schedule_ebbs (void); + + +extern void fix_sched_param (const char *, const char *); + + +extern const char *print_rtx_head; +extern void debug_rtx (rtx); +extern void debug_rtx_list (rtx, int); +extern void debug_rtx_range (rtx, rtx); +extern rtx debug_rtx_find (rtx, int); +extern void print_mem_expr (FILE *, tree); +extern void print_rtl (FILE *, rtx); +extern void print_simple_rtl (FILE *, rtx); +extern int print_rtl_single (FILE *, rtx); +extern void print_inline_rtx (FILE *, rtx, int); + + +extern void branch_target_load_optimize (unsigned char); + + +extern void reposition_prologue_and_epilogue_notes (rtx); +extern void thread_prologue_and_epilogue_insns (rtx); +extern int prologue_epilogue_contains (rtx); +extern int sibcall_epilogue_contains (rtx); +extern void mark_temp_addr_taken (rtx); +extern void update_temp_slot_address (rtx, rtx); + + +extern void expand_null_return (void); +extern void expand_naked_return (void); +extern void emit_jump (rtx); + + +extern rtx move_by_pieces (rtx, rtx, unsigned long, + unsigned int, int); + + +extern void delete_dead_jumptables (void); +extern void print_rtl_with_bb (FILE *, rtx); +extern void dump_flow_info (FILE *, int); + + +extern void init_expmed (void); +extern void expand_inc (rtx, rtx); +extern void expand_dec (rtx, rtx); + + +extern unsigned char can_copy_p (enum machine_mode); +extern rtx fis_get_condition (rtx); + + +extern void mark_elimination (int, int); +extern void dump_global_regs (FILE *); + + + + +extern void build_insn_chain (rtx); + + +extern int reg_classes_intersect_p (enum reg_class, enum reg_class); +extern int reg_class_subset_p (enum reg_class, enum reg_class); +extern void globalize_reg (int); +extern void init_reg_modes_once (void); +extern void init_regs (void); +extern void init_fake_stack_mems (void); +extern void init_reg_sets (void); +extern void regclass_init (void); +extern void regclass (rtx, int); +extern void reg_scan (rtx, unsigned int); +extern void fix_register (const char *, int, int); +extern void init_subregs_of_mode (void); +extern void record_subregs_of_mode (rtx); + + + + +extern unsigned char invalid_mode_change_p (unsigned int, enum reg_class, + enum machine_mode); + + +extern void dbr_schedule (rtx); + + +extern void dump_local_alloc (FILE *); + + +extern int function_invariant_p (rtx); + + +enum libcall_type +{ + LCT_NORMAL = 0, + LCT_CONST = 1, + LCT_PURE = 2, + LCT_CONST_MAKE_BLOCK = 3, + LCT_PURE_MAKE_BLOCK = 4, + LCT_NORETURN = 5, + LCT_THROW = 6, + LCT_RETURNS_TWICE = 7 +}; + +extern void emit_library_call (rtx, enum libcall_type, enum machine_mode, int, + ...); +extern rtx emit_library_call_value (rtx, rtx, enum libcall_type, + enum machine_mode, int, ...); + + +extern void init_varasm_once (void); +extern enum tls_model decl_default_tls_model (tree); + + +extern void traverse_md_constants (int (*) (void **, void *), void *); +struct md_constant { char *name, *value; }; + + +extern int read_skip_spaces (FILE *); +extern unsigned char read_rtx (FILE *, rtx *, int *); +extern void copy_rtx_ptr_loc (const void *, const void *); +extern void print_rtx_ptr_loc (const void *); +extern const char *join_c_conditions (const char *, const char *); +extern void print_c_condition (const char *); +extern const char *read_rtx_filename; +extern int read_rtx_lineno; + + +extern void clear_reg_alias_info (rtx); +extern rtx canon_rtx (rtx); +extern int true_dependence (rtx, enum machine_mode, rtx, int (*)(rtx, int)); +extern rtx get_addr (rtx); +extern int canon_true_dependence (rtx, enum machine_mode, rtx, rtx, + int (*)(rtx, int)); +extern int read_dependence (rtx, rtx); +extern int anti_dependence (rtx, rtx); +extern int output_dependence (rtx, rtx); +extern void init_alias_once (void); +extern void init_alias_analysis (void); +extern void end_alias_analysis (void); +extern unsigned char memory_modified_in_insn_p (rtx, rtx); +extern rtx find_base_term (rtx); +extern rtx gen_hard_reg_clobber (enum machine_mode, unsigned int); +extern rtx get_reg_known_value (unsigned int); +extern unsigned char get_reg_known_equiv_p (unsigned int); + + +extern int stack_regs_mentioned (rtx insn); + + + +extern rtx stack_limit_rtx; + + +extern void invert_br_probabilities (rtx); +extern unsigned char expensive_function_p (int); + +extern void tracer (unsigned int); + + +extern unsigned int variable_tracking_main (void); + + +extern void get_mode_bounds (enum machine_mode, int, enum machine_mode, + rtx *, rtx *); + + +extern rtx reversed_condition (rtx); +extern rtx compare_and_jump_seq (rtx, rtx, enum rtx_code, rtx, int, rtx); + + +extern rtx canon_condition (rtx); +extern void simplify_using_condition (rtx, rtx *, struct bitmap_head_def *); + +struct rtl_hooks +{ + rtx (*gen_lowpart) (enum machine_mode, rtx); + rtx (*gen_lowpart_no_emit) (enum machine_mode, rtx); + rtx (*reg_nonzero_bits) (rtx, enum machine_mode, rtx, enum machine_mode, + unsigned long, unsigned long *); + rtx (*reg_num_sign_bit_copies) (rtx, enum machine_mode, rtx, enum machine_mode, + unsigned int, unsigned int *); + unsigned char (*reg_truncated_to_mode) (enum machine_mode, rtx); + + +}; + + +extern struct rtl_hooks rtl_hooks; + + +extern const struct rtl_hooks general_rtl_hooks; +# 45 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/langhooks.h" 1 +# 26 "../../GCC/gcc/langhooks.h" +struct diagnostic_context; + +struct gimplify_omp_ctx; + + +typedef void (*lang_print_tree_hook) (FILE *, tree, int indent); + + + + +struct lang_hooks_for_tree_inlining +{ + tree (*walk_subtrees) (tree *, int *, + tree (*) (tree *, int *, void *), + void *, struct pointer_set_t*); + int (*cannot_inline_tree_fn) (tree *); + int (*disregard_inline_limits) (tree); + tree (*add_pending_fn_decls) (void *, tree); + int (*auto_var_in_fn_p) (tree, tree); + int (*anon_aggr_type_p) (tree); + unsigned char (*var_mod_type_p) (tree, tree); + int (*start_inlining) (tree); + void (*end_inlining) (tree); + tree (*convert_parm_for_inlining) (tree, tree, tree, int); +}; + +struct lang_hooks_for_callgraph +{ + + + tree (*analyze_expr) (tree *, int *, tree); + + + void (*expand_function) (tree); +}; + + + +struct lang_hooks_for_functions +{ + + void (*init) (struct function *); + + + void (*final) (struct function *); + + + void (*enter_nested) (struct function *); + + + void (*leave_nested) (struct function *); + + + unsigned char (*missing_noreturn_ok_p) (tree); +}; + + + +struct lang_hooks_for_tree_dump +{ + + + unsigned char (*dump_tree) (void *, tree); + + + int (*type_quals) (tree); +}; + + + +struct lang_hooks_for_types +{ + + + tree (*make_type) (enum tree_code); + + + + tree (*type_for_mode) (enum machine_mode, int); + + + + tree (*type_for_size) (unsigned, int); + + + + tree (*unsigned_type) (tree); + + + + tree (*signed_type) (tree); + + + + tree (*signed_or_unsigned_type) (int, tree); + + + + + + tree (*type_promotes_to) (tree); +# 135 "../../GCC/gcc/langhooks.h" + void (*register_builtin_type) (tree, const char *); + + + + + + void (*incomplete_type_error) (tree value, tree type); + + + + tree (*max_size) (tree); + + + + void (*omp_firstprivatize_type_sizes) (struct gimplify_omp_ctx *, tree); + + + + + unsigned char hash_types; +}; + + + +struct lang_hooks_for_decls +{ + + + int (*global_bindings_p) (void); + + + + + void (*insert_block) (tree); + + + + + + tree (*pushdecl) (tree); + + + tree (*getdecls) (void); + + + + unsigned char (*warn_unused_global) (tree); + + + + void (*final_write_globals) (void); + + + void (*prepare_assemble_variable) (tree); + + + unsigned char (*ok_for_sibcall) (tree); +# 200 "../../GCC/gcc/langhooks.h" + const char * (*comdat_group) (tree); + + + + unsigned char (*omp_privatize_by_reference) (tree); + + + + enum omp_clause_default_kind (*omp_predetermined_sharing) (tree); + + + + + + unsigned char (*omp_disregard_value_expr) (tree, unsigned char); + + + + unsigned char (*omp_private_debug_clause) (tree, unsigned char); + + + + tree (*omp_clause_default_ctor) (tree clause, tree decl); + + + tree (*omp_clause_copy_ctor) (tree clause, tree dst, tree src); + + + tree (*omp_clause_assign_op) (tree clause, tree dst, tree src); + + + + tree (*omp_clause_dtor) (tree clause, tree decl); +}; + + + +struct lang_hooks +{ + + const char *name; + + + + size_t identifier_size; + + + + + + size_t (*tree_size) (enum tree_code); + + + + + unsigned int (*init_options) (unsigned int argc, const char **argv); + + + + void (*initialize_diagnostics) (struct diagnostic_context *); +# 270 "../../GCC/gcc/langhooks.h" + int (*handle_option) (size_t code, const char *arg, int value); + + + + unsigned char (*missing_argument) (const char *opt, size_t code); +# 284 "../../GCC/gcc/langhooks.h" + unsigned char (*post_options) (const char **); + + + + + unsigned char (*init) (void); + + + void (*finish) (void); + + + + void (*parse_file) (int); + + + void (*clear_binding_stack) (void); + + + + long (*get_alias_set) (tree); + + + + + tree (*expand_constant) (tree); + + + + rtx (*expand_expr) (tree, rtx, enum machine_mode, int, rtx *); + + + + int (*expand_decl) (tree); +# 325 "../../GCC/gcc/langhooks.h" + int (*safe_from_p) (rtx, tree); + + + + void (*finish_incomplete_decl) (tree); + + + + + unsigned char (*mark_addressable) (tree); + + + tree (*staticp) (tree); + + + + void (*dup_lang_specific_decl) (tree); + + + + + + + void (*set_decl_assembler_name) (tree); + + + + unsigned char (*can_use_bit_fields_p) (void); + + + + unsigned char reduce_bit_field_operations; + + + + + unsigned char no_body_blocks; + + + + void (*print_statistics) (void); + + + + lang_print_tree_hook print_xnode; + + + + lang_print_tree_hook print_decl; + lang_print_tree_hook print_type; + lang_print_tree_hook print_identifier; + + + + + + + + const char *(*decl_printable_name) (tree decl, int verbosity); + + + + + const char *(*dwarf_name) (tree, int verbosity); + + + + + int (*types_compatible_p) (tree x, tree y); + + + tree (*lang_get_callee_fndecl) (tree); + + + void (*print_error_function) (struct diagnostic_context *, const char *); + + + + + + tree (*expr_size) (tree); +# 414 "../../GCC/gcc/langhooks.h" + long (*to_target_charset) (long); + + + + + + + const struct attribute_spec *attribute_table; + const struct attribute_spec *common_attribute_table; + const struct attribute_spec *format_attribute_table; + + + struct lang_hooks_for_functions function; + + struct lang_hooks_for_tree_inlining tree_inlining; + + struct lang_hooks_for_callgraph callgraph; + + struct lang_hooks_for_tree_dump tree_dump; + + struct lang_hooks_for_decls decls; + + struct lang_hooks_for_types types; + + + + int (*gimplify_expr) (tree *, tree *, tree *); + + + + tree (*fold_obj_type_ref) (tree, tree); +# 454 "../../GCC/gcc/langhooks.h" + tree (*builtin_function) (const char *name, tree type, int function_code, + enum built_in_class bt_class, + const char *library_name, tree attrs); + + + void (*init_ts) (void); + + + + + + tree (*expr_to_decl) (tree expr, unsigned char *tc, unsigned char *ti, unsigned char *se); + + + +}; + + +extern const struct lang_hooks lang_hooks; +# 46 "../../GCC/gcc/c-parser.c" 2 + +# 1 "../../GCC/gcc/../libcpp/include/cpplib.h" 1 +# 28 "../../GCC/gcc/../libcpp/include/cpplib.h" +# 1 "../../GCC/gcc/../libcpp/include/symtab.h" 1 +# 29 "../../GCC/gcc/../libcpp/include/cpplib.h" 2 +# 1 "../../GCC/gcc/../libcpp/include/line-map.h" 1 +# 30 "../../GCC/gcc/../libcpp/include/cpplib.h" 2 + + + + + +typedef struct cpp_reader cpp_reader; +typedef struct cpp_buffer cpp_buffer; +typedef struct cpp_options cpp_options; +typedef struct cpp_token cpp_token; +typedef struct cpp_string cpp_string; +typedef struct cpp_hashnode cpp_hashnode; +typedef struct cpp_macro cpp_macro; +typedef struct cpp_callbacks cpp_callbacks; +typedef struct cpp_dir cpp_dir; + +struct answer; +struct _cpp_file; +# 142 "../../GCC/gcc/../libcpp/include/cpplib.h" +enum cpp_ttype +{ + CPP_EQ, CPP_NOT, CPP_GREATER, CPP_LESS, CPP_PLUS, CPP_MINUS, CPP_MULT, CPP_DIV, CPP_MOD, CPP_AND, CPP_OR, CPP_XOR, CPP_RSHIFT, CPP_LSHIFT, CPP_COMPL, CPP_AND_AND, CPP_OR_OR, CPP_QUERY, CPP_COLON, CPP_COMMA, CPP_OPEN_PAREN, CPP_CLOSE_PAREN, CPP_EOF, CPP_EQ_EQ, CPP_NOT_EQ, CPP_GREATER_EQ, CPP_LESS_EQ, CPP_PLUS_EQ, CPP_MINUS_EQ, CPP_MULT_EQ, CPP_DIV_EQ, CPP_MOD_EQ, CPP_AND_EQ, CPP_OR_EQ, CPP_XOR_EQ, CPP_RSHIFT_EQ, CPP_LSHIFT_EQ, CPP_HASH, CPP_PASTE, CPP_OPEN_SQUARE, CPP_CLOSE_SQUARE, CPP_OPEN_BRACE, CPP_CLOSE_BRACE, CPP_SEMICOLON, CPP_ELLIPSIS, CPP_PLUS_PLUS, CPP_MINUS_MINUS, CPP_DEREF, CPP_DOT, CPP_SCOPE, CPP_DEREF_STAR, CPP_DOT_STAR, CPP_ATSIGN, CPP_NAME, CPP_AT_NAME, CPP_NUMBER, CPP_CHAR, CPP_WCHAR, CPP_OTHER, CPP_STRING, CPP_WSTRING, CPP_OBJC_STRING, CPP_HEADER_NAME, CPP_COMMENT, CPP_MACRO_ARG, CPP_PRAGMA, CPP_PRAGMA_EOL, CPP_PADDING, + N_TTYPES, + + + CPP_LAST_EQ = CPP_LSHIFT, + CPP_FIRST_DIGRAPH = CPP_HASH, + CPP_LAST_PUNCTUATOR= CPP_ATSIGN, + CPP_LAST_CPP_OP = CPP_LESS_EQ +}; + + + + +enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_STDC89, CLK_STDC94, CLK_STDC99, + CLK_GNUCXX, CLK_CXX98, CLK_ASM}; + + +struct cpp_string +{ + unsigned int len; + const unsigned char *text; +}; +# 180 "../../GCC/gcc/../libcpp/include/cpplib.h" +enum cpp_token_fld_kind { + CPP_TOKEN_FLD_NODE, + CPP_TOKEN_FLD_SOURCE, + CPP_TOKEN_FLD_STR, + CPP_TOKEN_FLD_ARG_NO, + CPP_TOKEN_FLD_PRAGMA, + CPP_TOKEN_FLD_NONE +}; + + + +struct cpp_token +{ + source_location src_loc; + __extension__ enum cpp_ttype type : 8; + unsigned char flags; + + union cpp_token_u + { + + cpp_hashnode * + + + + + node; + + + cpp_token * source; + + + struct cpp_string str; + + + unsigned int arg_no; + + + unsigned int pragma; + } val; +}; + + +extern enum cpp_token_fld_kind cpp_token_val_index (cpp_token *tok); +# 239 "../../GCC/gcc/../libcpp/include/cpplib.h" +typedef unsigned int cppchar_t; +typedef int cppchar_signed_t; + + +enum cpp_deps_style { DEPS_NONE = 0, DEPS_USER, DEPS_SYSTEM }; + + +enum cpp_normalize_level { + + normalized_KC = 0, + + normalized_C, + + + normalized_identifier_C, + + normalized_none +}; + + + +struct cpp_options +{ + + unsigned int tabstop; + + + enum c_lang lang; + + + unsigned char cplusplus; + + + unsigned char cplusplus_comments; + + + + unsigned char objc; + + + unsigned char discard_comments; + + + + unsigned char discard_comments_in_macro_exp; + + + unsigned char trigraphs; + + + unsigned char digraphs; + + + unsigned char extended_numbers; + + + unsigned char print_include_names; + + + unsigned char pedantic_errors; + + + unsigned char inhibit_warnings; + + + unsigned char warn_deprecated; + + + unsigned char warn_system_headers; + + + + unsigned char inhibit_errors; + + + unsigned char warn_comments; + + + + unsigned char warn_missing_include_dirs; + + + unsigned char warn_trigraphs; + + + unsigned char warn_multichar; + + + + unsigned char warn_traditional; + + + unsigned char warn_long_long; + + + unsigned char warn_endif_labels; + + + + unsigned char warn_num_sign_change; + + + + unsigned char warn_variadic_macros; + + + unsigned char warnings_are_errors; + + + + unsigned char remap; + + + unsigned char dollars_in_ident; + + + unsigned char extended_identifiers; + + + + unsigned char warn_dollars; + + + unsigned char warn_undef; + + + unsigned char warn_unused_macros; + + + unsigned char c99; + + + unsigned char std; + + + unsigned char pedantic; + + + + unsigned char preprocessed; + + + unsigned char show_column; + + + unsigned char operator_names; + + + unsigned char traditional; + + + const char *narrow_charset; + + + const char *wide_charset; + + + const char *input_charset; + + + + enum cpp_normalize_level warn_normalize; + + + unsigned char warn_invalid_pch; + + + unsigned char restore_pch_deps; + + + struct + { + + enum cpp_deps_style style; + + + unsigned char missing_files; + + + + unsigned char phony_targets; + + + unsigned char ignore_main_file; + } deps; + + + + + + size_t precision, char_precision, int_precision, wchar_precision; + + + unsigned char unsigned_char, unsigned_wchar; + + + + unsigned char bytes_big_endian; + + + unsigned char stdc_0_in_system_headers; + + + unsigned char client_diagnostic; +}; + + + + + + + +typedef const char *(*missing_header_cb)(cpp_reader *, const char *header, cpp_dir **); + + +struct cpp_callbacks +{ + + void (*line_change) (cpp_reader *, const cpp_token *, int); + + + + + + void (*file_change) (cpp_reader *, const struct line_map *); + + void (*dir_change) (cpp_reader *, const char *); + void (*include) (cpp_reader *, unsigned int, const unsigned char *, + const char *, int, const cpp_token **); + void (*define) (cpp_reader *, unsigned int, cpp_hashnode *); + void (*undef) (cpp_reader *, unsigned int, cpp_hashnode *); + void (*ident) (cpp_reader *, unsigned int, const cpp_string *); + void (*def_pragma) (cpp_reader *, unsigned int); + int (*valid_pch) (cpp_reader *, const char *, int); + void (*read_pch) (cpp_reader *, const char *, int, const char *); + missing_header_cb missing_header; + + + + void (*error) (cpp_reader *, int, const char *, va_list *) + __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__nonnull__ (3))); +}; + + +struct cpp_dir +{ + + struct cpp_dir *next; + + + char *name; + unsigned int len; + + + + unsigned char sysp; + + + + const char **name_map; + + + + + + char *(*construct) (const char *header, cpp_dir *dir); + + + + ino_t ino; + dev_t dev; + + + unsigned char user_supplied_p; +}; + + +extern const char *progname; +# 539 "../../GCC/gcc/../libcpp/include/cpplib.h" +enum node_type +{ + NT_VOID = 0, + NT_MACRO, + NT_ASSERTION +}; + + + +enum builtin_type +{ + BT_SPECLINE = 0, + BT_DATE, + BT_FILE, + BT_BASE_FILE, + BT_INCLUDE_LEVEL, + BT_TIME, + BT_STDC, + BT_PRAGMA, + BT_TIMESTAMP +}; +# 568 "../../GCC/gcc/../libcpp/include/cpplib.h" +enum { + NTV_MACRO, + NTV_ANSWER, + NTV_BUILTIN, + NTV_ARGUMENT, + NTV_NONE +}; +# 587 "../../GCC/gcc/../libcpp/include/cpplib.h" +union _cpp_hashnode_value +{ + + cpp_macro * macro; + + struct answer * answers; + + enum builtin_type builtin; + + unsigned short arg_index; +}; + +struct cpp_hashnode +{ + struct ht_identifier ident; + unsigned int is_directive : 1; + unsigned int directive_index : 7; + + + unsigned char rid_code; + __extension__ enum node_type type : 8; + unsigned char flags; + + union _cpp_hashnode_value value; +}; + + + + + + + +extern cpp_reader *cpp_create_reader (enum c_lang, struct ht *, + struct line_maps *); + + + +extern void cpp_set_lang (cpp_reader *, enum c_lang); + + +extern void cpp_set_include_chains (cpp_reader *, cpp_dir *, cpp_dir *, int); + + + + + + +extern cpp_options *cpp_get_options (cpp_reader *); +extern cpp_callbacks *cpp_get_callbacks (cpp_reader *); +extern void cpp_set_callbacks (cpp_reader *, cpp_callbacks *); +extern struct deps *cpp_get_deps (cpp_reader *); + + + + + + +extern const char *cpp_read_main_file (cpp_reader *, const char *); + + +extern void cpp_init_builtins (cpp_reader *, int); + + + +extern void cpp_post_options (cpp_reader *); + + +extern void cpp_init_iconv (cpp_reader *); + + + + + + +extern int cpp_finish (cpp_reader *, FILE *deps_stream); + + + + +extern void cpp_destroy (cpp_reader *); + + +extern unsigned int cpp_errors (cpp_reader *); + +extern unsigned int cpp_token_len (const cpp_token *); +extern unsigned char *cpp_token_as_text (cpp_reader *, const cpp_token *); +extern unsigned char *cpp_spell_token (cpp_reader *, const cpp_token *, + unsigned char *, unsigned char); +extern void cpp_register_pragma (cpp_reader *, const char *, const char *, + void (*) (cpp_reader *), unsigned char); +extern void cpp_register_deferred_pragma (cpp_reader *, const char *, + const char *, unsigned, unsigned char, unsigned char); +extern int cpp_avoid_paste (cpp_reader *, const cpp_token *, + const cpp_token *); +extern const cpp_token *cpp_get_token (cpp_reader *); +extern const unsigned char *cpp_macro_definition (cpp_reader *, + const cpp_hashnode *); +extern void _cpp_backup_tokens (cpp_reader *, unsigned int); + + +extern cppchar_t cpp_interpret_charconst (cpp_reader *, const cpp_token *, + unsigned int *, int *); + +extern unsigned char cpp_interpret_string (cpp_reader *, + const cpp_string *, size_t, + cpp_string *, unsigned char); +extern unsigned char cpp_interpret_string_notranslate (cpp_reader *, + const cpp_string *, size_t, + cpp_string *, unsigned char); + + +extern cppchar_t cpp_host_to_exec_charset (cpp_reader *, cppchar_t); + + + +extern void cpp_define (cpp_reader *, const char *); +extern void cpp_assert (cpp_reader *, const char *); +extern void cpp_undef (cpp_reader *, const char *); +extern void cpp_unassert (cpp_reader *, const char *); + + +extern void cpp_undef_all (cpp_reader *); + +extern cpp_buffer *cpp_push_buffer (cpp_reader *, const unsigned char *, + size_t, int); +extern int cpp_defined (cpp_reader *, const unsigned char *, int); + + + +typedef unsigned long cpp_num_part; +typedef struct cpp_num cpp_num; +struct cpp_num +{ + cpp_num_part high; + cpp_num_part low; + unsigned char unsignedp; + unsigned char overflow; +}; +# 754 "../../GCC/gcc/../libcpp/include/cpplib.h" +extern unsigned cpp_classify_number (cpp_reader *, const cpp_token *); + + +extern cpp_num cpp_interpret_integer (cpp_reader *, const cpp_token *, + unsigned int type); + + + +cpp_num cpp_num_sign_extend (cpp_num, size_t); +# 786 "../../GCC/gcc/../libcpp/include/cpplib.h" +extern void cpp_error (cpp_reader *, int, const char *msgid, ...) + __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__nonnull__ (3))); + + + +extern void cpp_errno (cpp_reader *, int, const char *msgid); + + + + +extern void cpp_error_with_line (cpp_reader *, int, source_location, unsigned, + const char *msgid, ...) __attribute__ ((__format__ (__printf__, 5, 6))) __attribute__ ((__nonnull__ (5))); + + +extern int cpp_ideq (const cpp_token *, const char *); +extern void cpp_output_line (cpp_reader *, FILE *); +extern void cpp_output_token (const cpp_token *, FILE *); +extern const char *cpp_type2name (enum cpp_ttype); + + + + + +extern cppchar_t cpp_parse_escape (cpp_reader *, const unsigned char ** pstr, + const unsigned char *limit, int wide); + + + + + +extern cpp_hashnode *cpp_lookup (cpp_reader *, const unsigned char *, + unsigned int); + +typedef int (*cpp_cb) (cpp_reader *, cpp_hashnode *, void *); +extern void cpp_forall_identifiers (cpp_reader *, cpp_cb, void *); + + +extern void cpp_scan_nooutput (cpp_reader *); +extern int cpp_sys_macro_p (cpp_reader *); +extern unsigned char *cpp_quote_string (unsigned char *, const unsigned char *, + unsigned int); + + +extern unsigned char cpp_included (cpp_reader *, const char *); +extern void cpp_make_system_header (cpp_reader *, int, int); +extern unsigned char cpp_push_include (cpp_reader *, const char *); +extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *); +extern const char *cpp_get_path (struct _cpp_file *); +extern cpp_dir *cpp_get_dir (struct _cpp_file *); +extern cpp_buffer *cpp_get_buffer (cpp_reader *); +extern struct _cpp_file *cpp_get_file (cpp_buffer *); +extern cpp_buffer *cpp_get_prev (cpp_buffer *); + + +struct save_macro_data; +extern int cpp_save_state (cpp_reader *, FILE *); +extern int cpp_write_pch_deps (cpp_reader *, FILE *); +extern int cpp_write_pch_state (cpp_reader *, FILE *); +extern int cpp_valid_state (cpp_reader *, const char *, int); +extern void cpp_prepare_state (cpp_reader *, struct save_macro_data **); +extern int cpp_read_state (cpp_reader *, const char *, FILE *, + struct save_macro_data *); +# 48 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/timevar.h" 1 +# 52 "../../GCC/gcc/timevar.h" +struct timevar_time_def +{ + + double user; + + + + double sys; + + + double wall; + + + unsigned ggc_mem; +}; + + + + + + +typedef enum +{ +# 1 "../../GCC/gcc/timevar.def" 1 +# 34 "../../GCC/gcc/timevar.def" +TV_TOTAL, + + +TV_GC, + + +TV_DUMP, + +TV_CGRAPH, +TV_CGRAPHOPT, +TV_IPA_CONSTANT_PROP, +TV_IPA_REFERENCE, +TV_IPA_PURE_CONST, +TV_IPA_TYPE_ESCAPE, +TV_IPA_PTA, + +TV_CFG, + +TV_CLEANUP_CFG, +TV_CFG_VERIFY, +TV_DELETE_TRIVIALLY_DEAD, + +TV_LIFE, +TV_LIFE_UPDATE, + +TV_ALIAS_ANALYSIS, +TV_REG_SCAN, +TV_REBUILD_JUMP, + +TV_CPP, +TV_LEX, +TV_PARSE, +TV_NAME_LOOKUP, +TV_INLINE_HEURISTICS, +TV_INTEGRATION, +TV_TREE_GIMPLIFY, +TV_TREE_EH, +TV_TREE_CFG, +TV_TREE_CLEANUP_CFG, +TV_TREE_VRP, +TV_TREE_COPY_PROP, +TV_TREE_STORE_COPY_PROP, +TV_FIND_REFERENCED_VARS, +TV_TREE_PTA, +TV_TREE_MAY_ALIAS, +TV_TREE_INSERT_PHI_NODES, +TV_TREE_SSA_REWRITE_BLOCKS, +TV_TREE_SSA_OTHER, +TV_TREE_SSA_INCREMENTAL, +TV_TREE_OPS, +TV_TREE_SSA_DOMINATOR_OPTS, +TV_TREE_SRA, +TV_TREE_STORE_CCP, +TV_TREE_CCP, +TV_TREE_PHI_CPROP, +TV_TREE_SPLIT_EDGES, +TV_TREE_REASSOC, +TV_TREE_PRE, +TV_TREE_REDPHI, +TV_TREE_FRE, +TV_TREE_SINK, +TV_TREE_PHIOPT, +TV_TREE_FORWPROP, +TV_TREE_DCE, +TV_TREE_CD_DCE, +TV_TREE_DSE, +TV_TREE_MERGE_PHI, +TV_TREE_LOOP, +TV_TREE_LOOP_BOUNDS, +TV_LIM, +TV_TREE_LOOP_IVCANON, +TV_SCEV_CONST, +TV_TREE_LOOP_UNSWITCH, +TV_COMPLETE_UNROLL, +TV_TREE_VECTORIZATION, +TV_TREE_LINEAR_TRANSFORM, +TV_TREE_PREFETCH, +TV_TREE_LOOP_IVOPTS, +TV_TREE_LOOP_INIT, +TV_TREE_LOOP_FINI, +TV_TREE_CH, +TV_TREE_SSA_UNCPROP, +TV_TREE_SSA_TO_NORMAL, +TV_TREE_NRV, +TV_TREE_COPY_RENAME, +TV_TREE_SSA_VERIFY, +TV_TREE_STMT_VERIFY, +TV_CGRAPH_VERIFY, +TV_DOM_FRONTIERS, +TV_DOMINANCE, +TV_CONTROL_DEPENDENCES, +TV_OVERLOAD, +TV_TEMPLATE_INSTANTIATION, +TV_EXPAND, +TV_VARCONST, +TV_JUMP, +TV_CSE, +TV_LOOP, +TV_GCSE, +TV_CPROP1, +TV_PRE, +TV_HOIST, +TV_CPROP2, +TV_LSM, +TV_BYPASS, +TV_TRACER, +TV_WEB, +TV_CSE2, +TV_BRANCH_PROB, +TV_VPT, +TV_FLOW, +TV_COMBINE, +TV_IFCVT, +TV_SEE, +TV_REGMOVE, +TV_MODE_SWITCH, +TV_SMS, +TV_SCHED, +TV_LOCAL_ALLOC, +TV_GLOBAL_ALLOC, +TV_RELOAD_CSE_REGS, +TV_SEQABSTR, +TV_GCSE_AFTER_RELOAD, +TV_FLOW2, +TV_IFCVT2, +TV_PEEPHOLE2, +TV_RENAME_REGISTERS, +TV_SCHED2, +TV_MACH_DEP, +TV_DBR_SCHED, +TV_REORDER_BLOCKS, +TV_SHORTEN_BRANCH, +TV_REG_STACK, +TV_FINAL, +TV_SYMOUT, +TV_VAR_TRACKING, + + +TV_REST_OF_COMPILATION, +# 76 "../../GCC/gcc/timevar.h" 2 + TIMEVAR_LAST +} +timevar_id_t; + + + + + + + +extern void timevar_init (void); +extern void timevar_push_1 (timevar_id_t); +extern void timevar_pop_1 (timevar_id_t); +extern void timevar_start (timevar_id_t); +extern void timevar_stop (timevar_id_t); +extern void timevar_print (FILE *); + + +extern void print_time (const char *, long); + +extern unsigned char timevar_enable; + +extern size_t timevar_ggc_mem_total; +# 49 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/c-pragma.h" 1 +# 24 "../../GCC/gcc/c-pragma.h" +# 1 "../../GCC/gcc/../libcpp/include/cpplib.h" 1 +# 25 "../../GCC/gcc/c-pragma.h" 2 + + + +typedef enum pragma_kind { + PRAGMA_NONE = 0, + + PRAGMA_OMP_ATOMIC, + PRAGMA_OMP_BARRIER, + PRAGMA_OMP_CRITICAL, + PRAGMA_OMP_FLUSH, + PRAGMA_OMP_FOR, + PRAGMA_OMP_MASTER, + PRAGMA_OMP_ORDERED, + PRAGMA_OMP_PARALLEL, + PRAGMA_OMP_PARALLEL_FOR, + PRAGMA_OMP_PARALLEL_SECTIONS, + PRAGMA_OMP_SECTION, + PRAGMA_OMP_SECTIONS, + PRAGMA_OMP_SINGLE, + PRAGMA_OMP_THREADPRIVATE, + + PRAGMA_GCC_PCH_PREPROCESS, + + PRAGMA_FIRST_EXTERNAL +} pragma_kind; + + + +extern int yydebug; + +extern struct cpp_reader* parse_in; +# 77 "../../GCC/gcc/c-pragma.h" +extern void push_visibility (const char *); +extern void pop_visibility (void); + +extern void init_pragma (void); + + +typedef void (*pragma_handler)(struct cpp_reader *); +extern void c_register_pragma (const char *, const char *, pragma_handler); +extern void c_register_pragma_with_expansion (const char *, const char *, + pragma_handler); +extern void c_invoke_pragma_handler (unsigned int); + +extern void maybe_apply_pragma_weak (tree); +extern void maybe_apply_pending_pragma_weaks (void); +extern tree maybe_apply_renaming_pragma (tree, tree); +extern void add_to_renaming_pragma_list (tree, tree); + +extern enum cpp_ttype pragma_lex (tree *); + + + + +extern enum cpp_ttype c_lex_with_flags (tree *, location_t *, unsigned char *); + + + + + +extern int c_lex_string_translate; + + + +extern unsigned char c_lex_return_raw_strings; +# 50 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/c-tree.h" 1 +# 24 "../../GCC/gcc/c-tree.h" +# 1 "../../GCC/gcc/c-common.h" 1 +# 24 "../../GCC/gcc/c-common.h" +# 1 "../../GCC/gcc/../include/splay-tree.h" 1 +# 47 "../../GCC/gcc/../include/splay-tree.h" +typedef unsigned long int splay_tree_key; +typedef unsigned long int splay_tree_value; + + +typedef struct splay_tree_node_s *splay_tree_node; + + + +typedef int (*splay_tree_compare_fn) (splay_tree_key, splay_tree_key); + + + +typedef void (*splay_tree_delete_key_fn) (splay_tree_key); + + + +typedef void (*splay_tree_delete_value_fn) (splay_tree_value); + + +typedef int (*splay_tree_foreach_fn) (splay_tree_node, void*); + + + + + +typedef void *(*splay_tree_allocate_fn) (int, void *); + + + + + +typedef void (*splay_tree_deallocate_fn) (void *, void *); + + +struct splay_tree_node_s +{ + + splay_tree_key key; + + + splay_tree_value value; + + + splay_tree_node left; + splay_tree_node right; +}; + + +struct splay_tree_s +{ + + splay_tree_node root; + + + splay_tree_compare_fn comp; + + + splay_tree_delete_key_fn delete_key; + + + splay_tree_delete_value_fn delete_value; + + + splay_tree_allocate_fn allocate; + splay_tree_deallocate_fn deallocate; + void * allocate_data; + +}; +typedef struct splay_tree_s *splay_tree; + +extern splay_tree splay_tree_new (splay_tree_compare_fn, + splay_tree_delete_key_fn, + splay_tree_delete_value_fn); +extern splay_tree splay_tree_new_with_allocator (splay_tree_compare_fn, + splay_tree_delete_key_fn, + splay_tree_delete_value_fn, + splay_tree_allocate_fn, + splay_tree_deallocate_fn, + void *); +extern void splay_tree_delete (splay_tree); +extern splay_tree_node splay_tree_insert (splay_tree, + splay_tree_key, + splay_tree_value); +extern void splay_tree_remove (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_lookup (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_predecessor (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_successor (splay_tree, splay_tree_key); +extern splay_tree_node splay_tree_max (splay_tree); +extern splay_tree_node splay_tree_min (splay_tree); +extern int splay_tree_foreach (splay_tree, splay_tree_foreach_fn, void*); +extern int splay_tree_compare_ints (splay_tree_key, splay_tree_key); +extern int splay_tree_compare_pointers (splay_tree_key, splay_tree_key); +# 25 "../../GCC/gcc/c-common.h" 2 + +# 1 "../../GCC/gcc/ggc.h" 1 +# 29 "../../GCC/gcc/ggc.h" +extern const char empty_string[]; +extern const char digit_vector[]; + + + + + + +typedef void (*gt_pointer_operator) (void *, void *); + +# 1 "./gtype-desc.h" 1 +# 23 "./gtype-desc.h" +enum gt_types_enum { + gt_ggc_e_11align_stack, + gt_ggc_e_7c_scope, + gt_ggc_e_9c_binding, + gt_ggc_e_20prod_token_parm_item, + gt_ggc_e_12nesting_info, + gt_ggc_e_11var_map_elt, + gt_ggc_e_20ssa_operand_memory_d, + gt_ggc_e_8c_parser, + gt_ggc_e_12int_tree_map, + gt_ggc_e_6subvar, + gt_ggc_e_17VEC_alias_pair_gc, + gt_ggc_e_24constant_descriptor_tree, + gt_ggc_e_17rtx_constant_pool, + gt_ggc_e_12tree_int_map, + gt_ggc_e_9type_hash, + gt_ggc_e_16string_pool_data, + gt_ggc_e_15throw_stmt_node, + gt_ggc_e_16VEC_eh_region_gc, + gt_ggc_e_9eh_region, + gt_ggc_e_13ehl_map_entry, + gt_ggc_e_16var_loc_list_def, + gt_ggc_e_12var_loc_node, + gt_ggc_e_16limbo_die_struct, + gt_ggc_e_19VEC_dw_attr_node_gc, + gt_ggc_e_16dw_ranges_struct, + gt_ggc_e_14pubname_struct, + gt_ggc_e_28dw_separate_line_info_struct, + gt_ggc_e_19dw_line_info_struct, + gt_ggc_e_18dw_loc_list_struct, + gt_ggc_e_15dwarf_file_data, + gt_ggc_e_15queued_reg_save, + gt_ggc_e_20indirect_string_node, + gt_ggc_e_19dw_loc_descr_struct, + gt_ggc_e_13dw_fde_struct, + gt_ggc_e_13dw_cfi_struct, + gt_ggc_e_8typeinfo, + gt_ggc_e_22VEC_alias_set_entry_gc, + gt_ggc_e_15alias_set_entry, + gt_ggc_e_10c_arg_info, + gt_ggc_e_8c_switch, + gt_ggc_e_18sorted_fields_type, + gt_ggc_e_15cgraph_asm_node, + gt_ggc_e_19cgraph_varpool_node, + gt_ggc_e_11cgraph_edge, + gt_ggc_e_11cgraph_node, + gt_ggc_e_18VEC_basic_block_gc, + gt_ggc_e_15edge_prediction, + gt_ggc_e_11rtl_bb_info, + gt_ggc_e_7et_node, + gt_ggc_e_4loop, + gt_ggc_e_11VEC_edge_gc, + gt_ggc_e_12elt_loc_list, + gt_ggc_e_17cselib_val_struct, + gt_ggc_e_25ipa_reference_vars_info_d, + gt_ggc_e_15varray_head_tag, + gt_ggc_e_8edge_def, + gt_ggc_e_8elt_list, + gt_ggc_e_12reg_info_def, + gt_ggc_e_17language_function, + gt_ggc_e_20initial_value_struct, + gt_ggc_e_18control_flow_graph, + gt_ggc_e_13varasm_status, + gt_ggc_e_9eh_status, + gt_ggc_e_18VEC_temp_slot_p_gc, + gt_ggc_e_9temp_slot, + gt_ggc_e_11expr_status, + gt_ggc_e_11emit_status, + gt_ggc_e_14sequence_stack, + gt_ggc_e_14var_refs_queue, + gt_ggc_e_8tree_map, + gt_ggc_e_14lang_tree_node, + gt_ggc_e_9value_set, + gt_ggc_e_24tree_statement_list_node, + gt_ggc_e_8function, + gt_ggc_e_9lang_decl, + gt_ggc_e_9lang_type, + gt_ggc_e_10die_struct, + gt_ggc_e_12ptr_info_def, + gt_ggc_e_17ssa_use_operand_d, + gt_ggc_e_22VEC_constructor_elt_gc, + gt_ggc_e_10tree_ann_d, + gt_ggc_e_11VEC_tree_gc, + gt_ggc_e_13convert_optab, + gt_ggc_e_5optab, + gt_ggc_e_23constant_descriptor_rtx, + gt_ggc_e_15basic_block_def, + gt_ggc_e_10real_value, + gt_ggc_e_10VEC_rtx_gc, + gt_ggc_e_12object_block, + gt_ggc_e_9reg_attrs, + gt_ggc_e_9mem_attrs, + gt_ggc_e_18bitmap_element_def, + gt_ggc_e_14bitmap_obstack, + gt_ggc_e_17stack_local_entry, + gt_ggc_e_16machine_function, + gt_ggc_e_6answer, + gt_ggc_e_9cpp_macro, + gt_ggc_e_9cpp_token, + gt_ggc_e_7section, + gt_ggc_e_9tree_node, + gt_ggc_e_9rtvec_def, + gt_ggc_e_7rtx_def, + gt_ggc_e_15bitmap_head_def, + gt_ggc_e_10location_s, + gt_e_II17splay_tree_node_s, + gt_e_SP9tree_node17splay_tree_node_s, + gt_e_IP9tree_node17splay_tree_node_s, + gt_e_P9tree_nodeP9tree_node17splay_tree_node_s, + gt_e_P9tree_nodeP9tree_node12splay_tree_s, + gt_e_IP9tree_node12splay_tree_s, + gt_e_P11var_map_elt4htab, + gt_e_P12int_tree_map4htab, + gt_e_P23constant_descriptor_rtx4htab, + gt_e_P24constant_descriptor_tree4htab, + gt_e_P12object_block4htab, + gt_e_P7section4htab, + gt_e_P12tree_int_map4htab, + gt_e_P8tree_map4htab, + gt_e_P9type_hash4htab, + gt_e_P13ehl_map_entry4htab, + gt_e_P15throw_stmt_node4htab, + gt_e_P9reg_attrs4htab, + gt_e_P9mem_attrs4htab, + gt_e_P7rtx_def4htab, + gt_e_SP9tree_node12splay_tree_s, + gt_e_P16var_loc_list_def4htab, + gt_e_P10die_struct4htab, + gt_e_P15dwarf_file_data4htab, + gt_e_P20indirect_string_node4htab, + gt_e_P19cgraph_varpool_node4htab, + gt_e_P11cgraph_node4htab, + gt_e_II12splay_tree_s, + gt_e_P11cgraph_edge4htab, + gt_e_P9tree_node4htab, + gt_types_enum_last +}; + + + + + +extern void gt_ggc_mx_align_stack (void *); + + + +extern void gt_ggc_mx_c_scope (void *); + + + +extern void gt_ggc_mx_c_binding (void *); + + + +extern void gt_ggc_mx_prod_token_parm_item (void *); + + + +extern void gt_ggc_mx_nesting_info (void *); + + + +extern void gt_ggc_mx_var_map_elt (void *); + + + +extern void gt_ggc_mx_ssa_operand_memory_d (void *); + + + +extern void gt_ggc_mx_c_parser (void *); + + + +extern void gt_ggc_mx_int_tree_map (void *); + + + +extern void gt_ggc_mx_subvar (void *); + + + +extern void gt_ggc_mx_VEC_alias_pair_gc (void *); + + + +extern void gt_ggc_mx_constant_descriptor_tree (void *); + + + +extern void gt_ggc_mx_rtx_constant_pool (void *); + + + +extern void gt_ggc_mx_tree_int_map (void *); + + + +extern void gt_ggc_mx_type_hash (void *); + + + +extern void gt_ggc_mx_string_pool_data (void *); + + + +extern void gt_ggc_mx_throw_stmt_node (void *); + + + +extern void gt_ggc_mx_VEC_eh_region_gc (void *); + + + +extern void gt_ggc_mx_eh_region (void *); + + + +extern void gt_ggc_mx_ehl_map_entry (void *); + + + +extern void gt_ggc_mx_var_loc_list_def (void *); + + + +extern void gt_ggc_mx_var_loc_node (void *); + + + +extern void gt_ggc_mx_limbo_die_struct (void *); + + + +extern void gt_ggc_mx_VEC_dw_attr_node_gc (void *); + + + +extern void gt_ggc_mx_dw_ranges_struct (void *); + + + +extern void gt_ggc_mx_pubname_struct (void *); + + + +extern void gt_ggc_mx_dw_separate_line_info_struct (void *); + + + +extern void gt_ggc_mx_dw_line_info_struct (void *); + + + +extern void gt_ggc_mx_dw_loc_list_struct (void *); + + + +extern void gt_ggc_mx_dwarf_file_data (void *); + + + +extern void gt_ggc_mx_queued_reg_save (void *); + + + +extern void gt_ggc_mx_indirect_string_node (void *); + + + +extern void gt_ggc_mx_dw_loc_descr_struct (void *); + + + +extern void gt_ggc_mx_dw_fde_struct (void *); + + + +extern void gt_ggc_mx_dw_cfi_struct (void *); + + + +extern void gt_ggc_mx_typeinfo (void *); + + + +extern void gt_ggc_mx_VEC_alias_set_entry_gc (void *); + + + +extern void gt_ggc_mx_alias_set_entry (void *); + + + +extern void gt_ggc_mx_c_arg_info (void *); + + + +extern void gt_ggc_mx_c_switch (void *); + + + +extern void gt_ggc_mx_sorted_fields_type (void *); + + + +extern void gt_ggc_mx_cgraph_asm_node (void *); + + + +extern void gt_ggc_mx_cgraph_varpool_node (void *); + + + +extern void gt_ggc_mx_cgraph_edge (void *); + + + +extern void gt_ggc_mx_cgraph_node (void *); + + + +extern void gt_ggc_mx_VEC_basic_block_gc (void *); + + + +extern void gt_ggc_mx_edge_prediction (void *); + + + +extern void gt_ggc_mx_rtl_bb_info (void *); + + + +extern void gt_ggc_mx_et_node (void *); + + + +extern void gt_ggc_mx_loop (void *); + + + +extern void gt_ggc_mx_VEC_edge_gc (void *); + + + +extern void gt_ggc_mx_elt_loc_list (void *); + + + +extern void gt_ggc_mx_cselib_val_struct (void *); + + + +extern void gt_ggc_mx_ipa_reference_vars_info_d (void *); + + + +extern void gt_ggc_mx_varray_head_tag (void *); + + + +extern void gt_ggc_mx_edge_def (void *); + + + +extern void gt_ggc_mx_elt_list (void *); + + + +extern void gt_ggc_mx_reg_info_def (void *); + + + +extern void gt_ggc_mx_language_function (void *); + + + +extern void gt_ggc_mx_initial_value_struct (void *); + + + +extern void gt_ggc_mx_control_flow_graph (void *); + + + +extern void gt_ggc_mx_varasm_status (void *); + + + +extern void gt_ggc_mx_eh_status (void *); + + + +extern void gt_ggc_mx_VEC_temp_slot_p_gc (void *); + + + +extern void gt_ggc_mx_temp_slot (void *); + + + +extern void gt_ggc_mx_expr_status (void *); + + + +extern void gt_ggc_mx_emit_status (void *); + + + +extern void gt_ggc_mx_sequence_stack (void *); + + + +extern void gt_ggc_mx_var_refs_queue (void *); + + + +extern void gt_ggc_mx_tree_map (void *); + + + +extern void gt_ggc_mx_lang_tree_node (void *); + + + +extern void gt_ggc_mx_value_set (void *); + + + +extern void gt_ggc_mx_tree_statement_list_node (void *); + + + +extern void gt_ggc_mx_function (void *); + + + +extern void gt_ggc_mx_lang_decl (void *); + + + +extern void gt_ggc_mx_lang_type (void *); + + + +extern void gt_ggc_mx_die_struct (void *); + + + +extern void gt_ggc_mx_ptr_info_def (void *); + + + +extern void gt_ggc_mx_ssa_use_operand_d (void *); + + + +extern void gt_ggc_mx_VEC_constructor_elt_gc (void *); + + + +extern void gt_ggc_mx_tree_ann_d (void *); + + + +extern void gt_ggc_mx_VEC_tree_gc (void *); + + + +extern void gt_ggc_mx_convert_optab (void *); + + + +extern void gt_ggc_mx_optab (void *); + + + +extern void gt_ggc_mx_constant_descriptor_rtx (void *); + + + +extern void gt_ggc_mx_basic_block_def (void *); + + + +extern void gt_ggc_mx_real_value (void *); + + + +extern void gt_ggc_mx_VEC_rtx_gc (void *); + + + +extern void gt_ggc_mx_object_block (void *); + + + +extern void gt_ggc_mx_reg_attrs (void *); + + + +extern void gt_ggc_mx_mem_attrs (void *); + + + +extern void gt_ggc_mx_bitmap_element_def (void *); + + + +extern void gt_ggc_mx_bitmap_obstack (void *); + + + +extern void gt_ggc_mx_stack_local_entry (void *); + + + +extern void gt_ggc_mx_machine_function (void *); + + + +extern void gt_ggc_mx_answer (void *); + + + +extern void gt_ggc_mx_cpp_macro (void *); + + + +extern void gt_ggc_mx_cpp_token (void *); + + + +extern void gt_ggc_mx_section (void *); + + + + + + + +extern void gt_ggc_mx_rtvec_def (void *); + + + +extern void gt_ggc_mx_rtx_def (void *); + + + +extern void gt_ggc_mx_bitmap_head_def (void *); + + + +extern void gt_ggc_mx_location_s (void *); +extern void gt_ggc_m_II17splay_tree_node_s (void *); +extern void gt_ggc_m_SP9tree_node17splay_tree_node_s (void *); +extern void gt_ggc_m_IP9tree_node17splay_tree_node_s (void *); +extern void gt_ggc_m_P9tree_nodeP9tree_node17splay_tree_node_s (void *); +extern void gt_ggc_m_P9tree_nodeP9tree_node12splay_tree_s (void *); +extern void gt_ggc_m_IP9tree_node12splay_tree_s (void *); +extern void gt_ggc_m_P11var_map_elt4htab (void *); +extern void gt_ggc_m_P12int_tree_map4htab (void *); +extern void gt_ggc_m_P23constant_descriptor_rtx4htab (void *); +extern void gt_ggc_m_P24constant_descriptor_tree4htab (void *); +extern void gt_ggc_m_P12object_block4htab (void *); +extern void gt_ggc_m_P7section4htab (void *); +extern void gt_ggc_m_P12tree_int_map4htab (void *); +extern void gt_ggc_m_P8tree_map4htab (void *); +extern void gt_ggc_m_P9type_hash4htab (void *); +extern void gt_ggc_m_P13ehl_map_entry4htab (void *); +extern void gt_ggc_m_P15throw_stmt_node4htab (void *); +extern void gt_ggc_m_P9reg_attrs4htab (void *); +extern void gt_ggc_m_P9mem_attrs4htab (void *); +extern void gt_ggc_m_P7rtx_def4htab (void *); +extern void gt_ggc_m_SP9tree_node12splay_tree_s (void *); +extern void gt_ggc_m_P16var_loc_list_def4htab (void *); +extern void gt_ggc_m_P10die_struct4htab (void *); +extern void gt_ggc_m_P15dwarf_file_data4htab (void *); +extern void gt_ggc_m_P20indirect_string_node4htab (void *); +extern void gt_ggc_m_P19cgraph_varpool_node4htab (void *); +extern void gt_ggc_m_P11cgraph_node4htab (void *); +extern void gt_ggc_m_II12splay_tree_s (void *); +extern void gt_ggc_m_P11cgraph_edge4htab (void *); +extern void gt_ggc_m_P9tree_node4htab (void *); + + + + + +extern void gt_pch_nx_align_stack (void *); + + + +extern void gt_pch_nx_c_scope (void *); + + + +extern void gt_pch_nx_c_binding (void *); + + + +extern void gt_pch_nx_prod_token_parm_item (void *); + + + +extern void gt_pch_nx_nesting_info (void *); + + + +extern void gt_pch_nx_var_map_elt (void *); + + + +extern void gt_pch_nx_ssa_operand_memory_d (void *); + + + +extern void gt_pch_nx_c_parser (void *); + + + +extern void gt_pch_nx_int_tree_map (void *); + + + +extern void gt_pch_nx_subvar (void *); + + + +extern void gt_pch_nx_VEC_alias_pair_gc (void *); + + + +extern void gt_pch_nx_constant_descriptor_tree (void *); + + + +extern void gt_pch_nx_rtx_constant_pool (void *); + + + +extern void gt_pch_nx_tree_int_map (void *); + + + +extern void gt_pch_nx_type_hash (void *); + + + +extern void gt_pch_nx_string_pool_data (void *); + + + +extern void gt_pch_nx_throw_stmt_node (void *); + + + +extern void gt_pch_nx_VEC_eh_region_gc (void *); + + + +extern void gt_pch_nx_eh_region (void *); + + + +extern void gt_pch_nx_ehl_map_entry (void *); + + + +extern void gt_pch_nx_var_loc_list_def (void *); + + + +extern void gt_pch_nx_var_loc_node (void *); + + + +extern void gt_pch_nx_limbo_die_struct (void *); + + + +extern void gt_pch_nx_VEC_dw_attr_node_gc (void *); + + + +extern void gt_pch_nx_dw_ranges_struct (void *); + + + +extern void gt_pch_nx_pubname_struct (void *); + + + +extern void gt_pch_nx_dw_separate_line_info_struct (void *); + + + +extern void gt_pch_nx_dw_line_info_struct (void *); + + + +extern void gt_pch_nx_dw_loc_list_struct (void *); + + + +extern void gt_pch_nx_dwarf_file_data (void *); + + + +extern void gt_pch_nx_queued_reg_save (void *); + + + +extern void gt_pch_nx_indirect_string_node (void *); + + + +extern void gt_pch_nx_dw_loc_descr_struct (void *); + + + +extern void gt_pch_nx_dw_fde_struct (void *); + + + +extern void gt_pch_nx_dw_cfi_struct (void *); + + + +extern void gt_pch_nx_typeinfo (void *); + + + +extern void gt_pch_nx_VEC_alias_set_entry_gc (void *); + + + +extern void gt_pch_nx_alias_set_entry (void *); + + + +extern void gt_pch_nx_c_arg_info (void *); + + + +extern void gt_pch_nx_c_switch (void *); + + + +extern void gt_pch_nx_sorted_fields_type (void *); + + + +extern void gt_pch_nx_cgraph_asm_node (void *); + + + +extern void gt_pch_nx_cgraph_varpool_node (void *); + + + +extern void gt_pch_nx_cgraph_edge (void *); + + + +extern void gt_pch_nx_cgraph_node (void *); + + + +extern void gt_pch_nx_VEC_basic_block_gc (void *); + + + +extern void gt_pch_nx_edge_prediction (void *); + + + +extern void gt_pch_nx_rtl_bb_info (void *); + + + +extern void gt_pch_nx_et_node (void *); + + + +extern void gt_pch_nx_loop (void *); + + + +extern void gt_pch_nx_VEC_edge_gc (void *); + + + +extern void gt_pch_nx_elt_loc_list (void *); + + + +extern void gt_pch_nx_cselib_val_struct (void *); + + + +extern void gt_pch_nx_ipa_reference_vars_info_d (void *); + + + +extern void gt_pch_nx_varray_head_tag (void *); + + + +extern void gt_pch_nx_edge_def (void *); + + + +extern void gt_pch_nx_elt_list (void *); + + + +extern void gt_pch_nx_reg_info_def (void *); + + + +extern void gt_pch_nx_language_function (void *); + + + +extern void gt_pch_nx_initial_value_struct (void *); + + + +extern void gt_pch_nx_control_flow_graph (void *); + + + +extern void gt_pch_nx_varasm_status (void *); + + + +extern void gt_pch_nx_eh_status (void *); + + + +extern void gt_pch_nx_VEC_temp_slot_p_gc (void *); + + + +extern void gt_pch_nx_temp_slot (void *); + + + +extern void gt_pch_nx_expr_status (void *); + + + +extern void gt_pch_nx_emit_status (void *); + + + +extern void gt_pch_nx_sequence_stack (void *); + + + +extern void gt_pch_nx_var_refs_queue (void *); + + + +extern void gt_pch_nx_tree_map (void *); + + + +extern void gt_pch_nx_lang_tree_node (void *); + + + +extern void gt_pch_nx_value_set (void *); + + + +extern void gt_pch_nx_tree_statement_list_node (void *); + + + +extern void gt_pch_nx_function (void *); + + + +extern void gt_pch_nx_lang_decl (void *); + + + +extern void gt_pch_nx_lang_type (void *); + + + +extern void gt_pch_nx_die_struct (void *); + + + +extern void gt_pch_nx_ptr_info_def (void *); + + + +extern void gt_pch_nx_ssa_use_operand_d (void *); + + + +extern void gt_pch_nx_VEC_constructor_elt_gc (void *); + + + +extern void gt_pch_nx_tree_ann_d (void *); + + + +extern void gt_pch_nx_VEC_tree_gc (void *); + + + +extern void gt_pch_nx_convert_optab (void *); + + + +extern void gt_pch_nx_optab (void *); + + + +extern void gt_pch_nx_constant_descriptor_rtx (void *); + + + +extern void gt_pch_nx_basic_block_def (void *); + + + +extern void gt_pch_nx_real_value (void *); + + + +extern void gt_pch_nx_VEC_rtx_gc (void *); + + + +extern void gt_pch_nx_object_block (void *); + + + +extern void gt_pch_nx_reg_attrs (void *); + + + +extern void gt_pch_nx_mem_attrs (void *); + + + +extern void gt_pch_nx_bitmap_element_def (void *); + + + +extern void gt_pch_nx_bitmap_obstack (void *); + + + +extern void gt_pch_nx_stack_local_entry (void *); + + + +extern void gt_pch_nx_machine_function (void *); + + + +extern void gt_pch_nx_answer (void *); + + + +extern void gt_pch_nx_cpp_macro (void *); + + + +extern void gt_pch_nx_cpp_token (void *); + + + +extern void gt_pch_nx_section (void *); + + + + + + + +extern void gt_pch_nx_rtvec_def (void *); + + + +extern void gt_pch_nx_rtx_def (void *); + + + +extern void gt_pch_nx_bitmap_head_def (void *); + + + +extern void gt_pch_nx_location_s (void *); +extern void gt_pch_n_II17splay_tree_node_s (void *); +extern void gt_pch_n_SP9tree_node17splay_tree_node_s (void *); +extern void gt_pch_n_IP9tree_node17splay_tree_node_s (void *); +extern void gt_pch_n_P9tree_nodeP9tree_node17splay_tree_node_s (void *); +extern void gt_pch_n_P9tree_nodeP9tree_node12splay_tree_s (void *); +extern void gt_pch_n_IP9tree_node12splay_tree_s (void *); +extern void gt_pch_n_P11var_map_elt4htab (void *); +extern void gt_pch_n_P12int_tree_map4htab (void *); +extern void gt_pch_n_P23constant_descriptor_rtx4htab (void *); +extern void gt_pch_n_P24constant_descriptor_tree4htab (void *); +extern void gt_pch_n_P12object_block4htab (void *); +extern void gt_pch_n_P7section4htab (void *); +extern void gt_pch_n_P12tree_int_map4htab (void *); +extern void gt_pch_n_P8tree_map4htab (void *); +extern void gt_pch_n_P9type_hash4htab (void *); +extern void gt_pch_n_P13ehl_map_entry4htab (void *); +extern void gt_pch_n_P15throw_stmt_node4htab (void *); +extern void gt_pch_n_P9reg_attrs4htab (void *); +extern void gt_pch_n_P9mem_attrs4htab (void *); +extern void gt_pch_n_P7rtx_def4htab (void *); +extern void gt_pch_n_SP9tree_node12splay_tree_s (void *); +extern void gt_pch_n_P16var_loc_list_def4htab (void *); +extern void gt_pch_n_P10die_struct4htab (void *); +extern void gt_pch_n_P15dwarf_file_data4htab (void *); +extern void gt_pch_n_P20indirect_string_node4htab (void *); +extern void gt_pch_n_P19cgraph_varpool_node4htab (void *); +extern void gt_pch_n_P11cgraph_node4htab (void *); +extern void gt_pch_n_II12splay_tree_s (void *); +extern void gt_pch_n_P11cgraph_edge4htab (void *); +extern void gt_pch_n_P9tree_node4htab (void *); + + +extern void gt_pch_p_11align_stack + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_7c_scope + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9c_binding + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_20prod_token_parm_item + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12nesting_info + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11var_map_elt + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_20ssa_operand_memory_d + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_8c_parser + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12int_tree_map + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_6subvar + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_17VEC_alias_pair_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_24constant_descriptor_tree + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_17rtx_constant_pool + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12tree_int_map + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9type_hash + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_16string_pool_data + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15throw_stmt_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_16VEC_eh_region_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9eh_region + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_13ehl_map_entry + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_16var_loc_list_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12var_loc_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_16limbo_die_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_19VEC_dw_attr_node_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_16dw_ranges_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_14pubname_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_28dw_separate_line_info_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_19dw_line_info_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_18dw_loc_list_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15dwarf_file_data + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15queued_reg_save + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_20indirect_string_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_19dw_loc_descr_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_13dw_fde_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_13dw_cfi_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_8typeinfo + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_22VEC_alias_set_entry_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15alias_set_entry + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_18sorted_fields_type + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15cgraph_asm_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_19cgraph_varpool_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11cgraph_edge + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11cgraph_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_18VEC_basic_block_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15edge_prediction + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11rtl_bb_info + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11VEC_edge_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12elt_loc_list + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_17cselib_val_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15varray_head_tag + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_8edge_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_8elt_list + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_17language_function + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_20initial_value_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_18control_flow_graph + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_13varasm_status + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9eh_status + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_18VEC_temp_slot_p_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9temp_slot + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11expr_status + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11emit_status + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_14sequence_stack + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_14var_refs_queue + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_8tree_map + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_14lang_tree_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_24tree_statement_list_node + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_8function + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9lang_decl + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9lang_type + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_10die_struct + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12ptr_info_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_17ssa_use_operand_d + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_22VEC_constructor_elt_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_10tree_ann_d + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_11VEC_tree_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_13convert_optab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_5optab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_23constant_descriptor_rtx + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15basic_block_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_10real_value + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_10VEC_rtx_gc + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_12object_block + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9reg_attrs + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9mem_attrs + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_18bitmap_element_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_14bitmap_obstack + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_17stack_local_entry + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_16machine_function + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_6answer + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9cpp_macro + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_9cpp_token + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_7section + (void *, void *, gt_pointer_operator, void *); + +extern void gt_pch_p_9rtvec_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_7rtx_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_15bitmap_head_def + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_10location_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_II17splay_tree_node_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_SP9tree_node17splay_tree_node_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_IP9tree_node17splay_tree_node_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P9tree_nodeP9tree_node17splay_tree_node_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P9tree_nodeP9tree_node12splay_tree_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_IP9tree_node12splay_tree_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P11var_map_elt4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P12int_tree_map4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P23constant_descriptor_rtx4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P24constant_descriptor_tree4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P12object_block4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P7section4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P12tree_int_map4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P8tree_map4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P9type_hash4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P13ehl_map_entry4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P15throw_stmt_node4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P9reg_attrs4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P9mem_attrs4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P7rtx_def4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_SP9tree_node12splay_tree_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P16var_loc_list_def4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P10die_struct4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P15dwarf_file_data4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P20indirect_string_node4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P19cgraph_varpool_node4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P11cgraph_node4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_II12splay_tree_s + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P11cgraph_edge4htab + (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_p_P9tree_node4htab + (void *, void *, gt_pointer_operator, void *); +# 40 "../../GCC/gcc/ggc.h" 2 + + + + +typedef void (*gt_note_pointers) (void *, void *, gt_pointer_operator, + void *); + + + + + + +typedef void (*gt_handle_reorder) (void *, void *, gt_pointer_operator, + void *); + + +extern int gt_pch_note_object (void *, void *, gt_note_pointers, + enum gt_types_enum); + + + +extern void gt_pch_note_reorder (void *, void *, gt_handle_reorder); + + +typedef void (*gt_pointer_walker) (void *); + + + +struct ggc_root_tab { + void *base; + size_t nelt; + size_t stride; + gt_pointer_walker cb; + gt_pointer_walker pchw; +}; + + +extern const struct ggc_root_tab * const gt_ggc_rtab[]; +extern const struct ggc_root_tab * const gt_ggc_deletable_rtab[]; +extern const struct ggc_root_tab * const gt_pch_cache_rtab[]; +extern const struct ggc_root_tab * const gt_pch_scalar_rtab[]; + + +struct htab; +struct ggc_cache_tab { + struct htab * *base; + size_t nelt; + size_t stride; + gt_pointer_walker cb; + gt_pointer_walker pchw; + int (*marked_p) (const void *); +}; + + +extern const struct ggc_cache_tab * const gt_ggc_cache_rtab[]; +# 113 "../../GCC/gcc/ggc.h" +extern int ggc_set_mark (const void *); + + + + +extern int ggc_marked_p (const void *); + + +extern void ggc_mark_stringpool (void); + + + +extern void ggc_mark_roots (void); + + + +extern void gt_pch_save_stringpool (void); +extern void gt_pch_fixup_stringpool (void); +extern void gt_pch_restore_stringpool (void); + + + +extern void gt_pch_p_S (void *, void *, gt_pointer_operator, void *); +extern void gt_pch_n_S (const void *); +extern void gt_ggc_m_S (void *); + + +extern void init_stringpool (void); + + + + + +struct alloc_zone; + + +extern void init_ggc (void); + + +extern struct alloc_zone *new_ggc_zone (const char *); + + +extern void destroy_ggc_zone (struct alloc_zone *); + +struct ggc_pch_data; + + +extern struct ggc_pch_data *init_ggc_pch (void); + + + + + +extern void ggc_pch_count_object (struct ggc_pch_data *, void *, size_t, unsigned char, + enum gt_types_enum); + + + +extern size_t ggc_pch_total_size (struct ggc_pch_data *); + + + +extern void ggc_pch_this_base (struct ggc_pch_data *, void *); + + + + +extern char *ggc_pch_alloc_object (struct ggc_pch_data *, void *, size_t, unsigned char, + enum gt_types_enum); + + +extern void ggc_pch_prepare_write (struct ggc_pch_data *, FILE *); + + +extern void ggc_pch_write_object (struct ggc_pch_data *, FILE *, void *, + void *, size_t, unsigned char); + + +extern void ggc_pch_finish (struct ggc_pch_data *, FILE *); + + + +extern void ggc_pch_read (FILE *, void *); + + + + + +extern unsigned char ggc_force_collect; + + +extern void *ggc_alloc_stat (size_t ); + + +extern void *ggc_alloc_typed_stat (enum gt_types_enum, size_t ); + + +extern void *ggc_alloc_cleared_stat (size_t ); + + +extern void *ggc_realloc_stat (void *, size_t ); + + +extern void *ggc_calloc (size_t, size_t); + +extern void ggc_free (void *); + +extern void ggc_record_overhead (size_t, size_t, void * ); +extern void ggc_free_overhead (void *); +extern void ggc_prune_overhead_list (void); + +extern void dump_ggc_loc_statistics (void); +# 248 "../../GCC/gcc/ggc.h" +extern void *ggc_splay_alloc (int, void *); +extern void ggc_splay_dont_free (void *, void *); + + + + +extern const char *ggc_alloc_string (const char *contents, int length); + + + + + + +extern void ggc_collect (void); + + +extern size_t ggc_get_size (const void *); + + +extern void gt_pch_save (FILE *f); + + +extern void gt_pch_restore (FILE *f); + + + + + +typedef struct ggc_statistics +{ + + int unused; +} ggc_statistics; + + + +extern void ggc_print_common_statistics (FILE *, ggc_statistics *); + + +extern void ggc_print_statistics (void); +extern void stringpool_statistics (void); + + +extern int ggc_min_expand_heuristic (void); +extern int ggc_min_heapsize_heuristic (void); +extern void init_ggc_heuristics (void); +# 27 "../../GCC/gcc/c-common.h" 2 +# 45 "../../GCC/gcc/c-common.h" +enum rid +{ + + + RID_STATIC = 0, + RID_UNSIGNED, RID_LONG, RID_CONST, RID_EXTERN, + RID_REGISTER, RID_TYPEDEF, RID_SHORT, RID_INLINE, + RID_VOLATILE, RID_SIGNED, RID_AUTO, RID_RESTRICT, + + + RID_COMPLEX, RID_THREAD, + + + RID_FRIEND, RID_VIRTUAL, RID_EXPLICIT, RID_EXPORT, RID_MUTABLE, + + + RID_IN, RID_OUT, RID_INOUT, RID_BYCOPY, RID_BYREF, RID_ONEWAY, + + + RID_INT, RID_CHAR, RID_FLOAT, RID_DOUBLE, RID_VOID, + RID_ENUM, RID_STRUCT, RID_UNION, RID_IF, RID_ELSE, + RID_WHILE, RID_DO, RID_FOR, RID_SWITCH, RID_CASE, + RID_DEFAULT, RID_BREAK, RID_CONTINUE, RID_RETURN, RID_GOTO, + RID_SIZEOF, + + + RID_ASM, RID_TYPEOF, RID_ALIGNOF, RID_ATTRIBUTE, RID_VA_ARG, + RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL, RID_CHOOSE_EXPR, + RID_TYPES_COMPATIBLE_P, + RID_DFLOAT32, RID_DFLOAT64, RID_DFLOAT128, + + + RID_FUNCTION_NAME, RID_PRETTY_FUNCTION_NAME, RID_C99_FUNCTION_NAME, + + + RID_BOOL, RID_WCHAR, RID_CLASS, + RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, + RID_TEMPLATE, RID_NULL, RID_CATCH, + RID_DELETE, RID_FALSE, RID_NAMESPACE, + RID_NEW, RID_OFFSETOF, RID_OPERATOR, + RID_THIS, RID_THROW, RID_TRUE, + RID_TRY, RID_TYPENAME, RID_TYPEID, + RID_USING, + + + RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST, + + + RID_AT_ENCODE, RID_AT_END, + RID_AT_CLASS, RID_AT_ALIAS, RID_AT_DEFS, + RID_AT_PRIVATE, RID_AT_PROTECTED, RID_AT_PUBLIC, + RID_AT_PROTOCOL, RID_AT_SELECTOR, + RID_AT_THROW, RID_AT_TRY, RID_AT_CATCH, + RID_AT_FINALLY, RID_AT_SYNCHRONIZED, + RID_AT_INTERFACE, + RID_AT_IMPLEMENTATION, + + + + RID_CbC_CODE, RID_CbC_ENV, + + + RID_MAX, + + RID_FIRST_MODIFIER = RID_STATIC, + RID_LAST_MODIFIER = RID_ONEWAY, + + RID_FIRST_AT = RID_AT_ENCODE, + RID_LAST_AT = RID_AT_IMPLEMENTATION, + RID_FIRST_PQ = RID_IN, + RID_LAST_PQ = RID_ONEWAY +}; +# 128 "../../GCC/gcc/c-common.h" +extern tree *ridpointers; + + + +enum c_tree_index +{ + CTI_WCHAR_TYPE, + CTI_SIGNED_WCHAR_TYPE, + CTI_UNSIGNED_WCHAR_TYPE, + CTI_WINT_TYPE, + CTI_SIGNED_SIZE_TYPE, + CTI_UNSIGNED_PTRDIFF_TYPE, + CTI_INTMAX_TYPE, + CTI_UINTMAX_TYPE, + CTI_WIDEST_INT_LIT_TYPE, + CTI_WIDEST_UINT_LIT_TYPE, + + CTI_CHAR_ARRAY_TYPE, + CTI_WCHAR_ARRAY_TYPE, + CTI_INT_ARRAY_TYPE, + CTI_STRING_TYPE, + CTI_CONST_STRING_TYPE, + + + CTI_TRUTHVALUE_TYPE, + CTI_TRUTHVALUE_TRUE, + CTI_TRUTHVALUE_FALSE, + + CTI_DEFAULT_FUNCTION_TYPE, + + + CTI_FUNCTION_NAME_DECL, + CTI_PRETTY_FUNCTION_NAME_DECL, + CTI_C99_FUNCTION_NAME_DECL, + CTI_SAVED_FUNCTION_NAME_DECLS, + + CTI_VOID_ZERO, + + CTI_NULL, + + CTI_MAX +}; + + + + + +struct c_common_identifier +{ + struct tree_common common; + struct cpp_hashnode node; +}; +# 215 "../../GCC/gcc/c-common.h" +extern tree c_global_trees[CTI_MAX]; + + + +struct sorted_fields_type +{ + int len; + tree elts[1]; +}; + + + + + +typedef enum c_language_kind +{ + clk_c = 0, + clk_objc = 1, + clk_cxx = 2, + clk_objcxx = 3 +} +c_language_kind; + + + +extern c_language_kind c_language; + + + + + + +struct stmt_tree_s { + + tree x_cur_stmt_list; +# 265 "../../GCC/gcc/c-common.h" + int stmts_are_full_exprs_p; +}; + +typedef struct stmt_tree_s *stmt_tree; + + + + +struct c_language_function { + + + struct stmt_tree_s x_stmt_tree; +}; +# 289 "../../GCC/gcc/c-common.h" +extern int (*lang_missing_noreturn_ok_p) (tree); + + + +extern void (*lang_post_pch_load) (void); + +extern void push_file_scope (void); +extern void pop_file_scope (void); +extern stmt_tree current_stmt_tree (void); +extern tree push_stmt_list (void); +extern tree pop_stmt_list (tree); +extern tree add_stmt (tree); +extern void push_cleanup (tree, tree, unsigned char); +extern tree pushdecl_top_level (tree); +extern tree pushdecl (tree); +extern tree build_modify_expr (tree, enum tree_code, tree); +extern tree build_indirect_ref (tree, const char *); + +extern int c_expand_decl (tree); + +extern int field_decl_cmp (const void *, const void *); +extern void resort_sorted_fields (void *, void *, gt_pointer_operator, + void *); +extern unsigned char has_c_linkage (tree decl); + + + + + +extern int flag_preprocess_only; + + + + +extern int flag_nil_receivers; + + + +extern int flag_objc_exceptions; + + +extern int flag_objc_sjlj_exceptions; + + + + +extern int flag_zero_link; + + + + +extern int flag_replace_objc_classes; + + + +extern char flag_no_line_commands; + + + + +extern char flag_no_output; + + + + +extern char flag_dump_macros; + + + +extern char flag_dump_includes; + + + +extern unsigned char flag_pch_preprocess; + + + + +extern const char *pch_file; + + + + +extern int flag_iso; + + + + +extern int flag_undef; + + + +extern int flag_no_builtin; + + + + +extern int flag_no_nonansi_builtin; + + + +extern int flag_short_double; + + + +extern int flag_short_wchar; + + +extern int flag_ms_extensions; + + + +extern int flag_no_asm; + + + + +extern int flag_const_strings; + + + +extern int flag_signed_bitfields; + + + +extern int warn_unknown_pragmas; + + + + +extern int warn_format; +# 428 "../../GCC/gcc/c-common.h" +extern int flag_cond_mismatch; + + + +extern int flag_isoc94; + + + +extern int flag_isoc99; + + + +extern int flag_hosted; + + + +extern int warn_main; +# 453 "../../GCC/gcc/c-common.h" +extern int flag_gen_declaration; + + + + + +extern int print_struct_values; + + + +extern const char *constant_string_class_name; + + + + + + + +extern int flag_no_gnu_keywords; + + + + +extern int flag_implement_inlines; + + + +extern int flag_implicit_templates; + + + + + +extern int flag_implicit_inline_templates; + + + + +extern int flag_use_repository; + + + + +extern int flag_optional_diags; + + + +extern int flag_elide_constructors; + + + + +extern int flag_default_inline; + + + + +extern int flag_rtti; + + + + + + +extern int flag_conserve_space; + + + +extern int flag_access_control; + + + + +extern int flag_check_new; +# 535 "../../GCC/gcc/c-common.h" +extern int flag_new_for_scope; + + + + + +extern int flag_weak; + + + + + + +extern int flag_working_directory; + + + + +extern int flag_use_cxa_atexit; + + + + +extern int flag_use_cxa_get_exception_ptr; + + + + +extern int flag_permissive; + + + + + + +extern int flag_enforce_eh_specs; + + + + +extern int flag_threadsafe_statics; + + + +extern int warn_implicit; + + + + + +extern int warn_strict_null_sentinel; + + + + + +extern int max_tinst_depth; + + + + +extern int skip_evaluation; +# 615 "../../GCC/gcc/c-common.h" +extern const struct attribute_spec c_common_attribute_table[]; +extern const struct attribute_spec c_common_format_attribute_table[]; + + + + + + +extern tree (*make_fname_decl) (tree, int); + +extern tree identifier_global_value (tree); +extern void record_builtin_type (enum rid, const char *, tree); +extern tree build_void_list_node (void); +extern void start_fname_decls (void); +extern void finish_fname_decls (void); +extern const char *fname_as_string (int); +extern tree fname_decl (unsigned, tree); + +extern void check_function_arguments (tree, tree, tree); +extern void check_function_arguments_recurse (void (*) + (void *, tree, + unsigned long), + void *, tree, + unsigned long); +extern void check_function_format (tree, tree); +extern void set_Wformat (int); +extern tree handle_format_attribute (tree *, tree, tree, int, unsigned char *); +extern tree handle_format_arg_attribute (tree *, tree, tree, int, unsigned char *); +extern int c_common_handle_option (size_t code, const char *arg, int value); +extern unsigned char c_common_missing_argument (const char *opt, size_t code); +extern tree c_common_type_for_mode (enum machine_mode, int); +extern tree c_common_type_for_size (unsigned int, int); +extern tree c_common_unsigned_type (tree); +extern tree c_common_signed_type (tree); +extern tree c_common_signed_or_unsigned_type (int, tree); +extern tree c_build_bitfield_integer_type (unsigned long, int); +extern tree c_common_truthvalue_conversion (tree); +extern void c_apply_type_quals_to_decl (int, tree); +extern tree c_sizeof_or_alignof_type (tree, unsigned char, int); +extern tree c_alignof_expr (tree); + + +extern void binary_op_error (enum tree_code); +extern tree fix_string_type (tree); +struct varray_head_tag; +extern void constant_expression_warning (tree); +extern void strict_aliasing_warning(tree, tree, tree); +extern void empty_body_warning (tree, tree); +extern tree convert_and_check (tree, tree); +extern void overflow_warning (tree); +extern unsigned char c_determine_visibility (tree); +extern unsigned char same_scalar_type_ignoring_signedness (tree, tree); + + + + + + + +extern tree shorten_compare (tree *, tree *, tree *, enum tree_code *); + +extern tree pointer_int_sum (enum tree_code, tree, tree); +extern unsigned int min_precision (tree, int); + + +extern tree c_build_qualified_type (tree, int); + + + +extern void c_common_nodes_and_builtins (void); + +extern void set_builtin_user_assembler_name (tree decl, const char *asmspec); + +extern void disable_builtin_function (const char *); + +extern void set_compound_literal_name (tree decl); + +extern tree build_va_arg (tree, tree); + +extern unsigned int c_common_init_options (unsigned int, const char **); +extern unsigned char c_common_post_options (const char **); +extern unsigned char c_common_init (void); +extern void c_common_finish (void); +extern void c_common_parse_file (int); +extern long c_common_get_alias_set (tree); +extern void c_register_builtin_type (tree, const char*); +extern unsigned char c_promoting_integer_type_p (tree); +extern int self_promoting_args_p (tree); +extern tree strip_array_types (tree); +extern tree strip_pointer_operator (tree); +extern long c_common_to_target_charset (long); + + +extern void c_parse_file (void); + +extern void finish_file (void); +# 732 "../../GCC/gcc/c-common.h" +enum c_tree_code { + C_DUMMY_TREE_CODE = LAST_AND_UNUSED_TREE_CODE, +# 1 "../../GCC/gcc/c-common.def" 1 +# 32 "../../GCC/gcc/c-common.def" +COMPOUND_LITERAL_EXPR, +# 735 "../../GCC/gcc/c-common.h" 2 + LAST_C_TREE_CODE +}; + + + +extern int anon_aggr_type_p (tree); +# 754 "../../GCC/gcc/c-common.h" +extern void emit_local_var (tree); +extern tree do_case (tree, tree); +extern tree build_stmt (enum tree_code, ...); +extern tree build_case_label (tree, tree, tree); + + + + +extern tree build_unary_op (enum tree_code, tree, int); +extern tree build_binary_op (enum tree_code, tree, tree, int); +extern tree perform_integral_promotions (tree); + + + + +extern tree default_conversion (tree); + + + + +extern tree common_type (tree, tree); + +extern tree decl_constant_value (tree); + + +extern tree boolean_increment (enum tree_code, tree); + +extern int case_compare (splay_tree_key, splay_tree_key); + +extern tree c_add_case_label (splay_tree, tree, tree, tree, tree); + +extern void c_do_switch_warnings (splay_tree, location_t, tree, tree); + +extern tree build_function_call (tree, tree); + +extern tree resolve_overloaded_builtin (tree, tree); + +extern tree finish_label_address_expr (tree); + + + +extern tree lookup_label (tree); +extern tree lookup_name (tree); + +extern int vector_types_convertible_p (tree t1, tree t2); + +extern rtx c_expand_expr (tree, rtx, enum machine_mode, int, rtx *); + +extern tree c_staticp (tree); + +extern void init_c_lex (void); + +extern void c_cpp_builtins (cpp_reader *); + + + +extern int pending_lang_change; + + + +struct c_fileinfo +{ + int time; + + + + + + + + short interface_only; + short interface_unknown; +}; + +struct c_fileinfo *get_fileinfo (const char *); +extern void dump_time_statistics (void); + +extern unsigned char c_dump_tree (void *, tree); + +extern void c_warn_unused_result (tree *); + +extern void verify_sequence_points (tree); + +extern tree fold_offsetof (tree, tree); + + + + +enum lvalue_use { + lv_assign, + lv_increment, + lv_decrement, + lv_addressof, + lv_asm +}; + +extern void lvalue_error (enum lvalue_use); + +extern int complete_array_type (tree *, tree, unsigned char); + +extern tree builtin_type_for_size (int, unsigned char); + +extern void warn_array_subscript_with_type_char (tree); + + +extern void c_genericize (tree); +extern int c_gimplify_expr (tree *, tree *, tree *); +extern tree c_build_bind_expr (tree, tree); + + +extern void pch_init (void); +extern int c_common_valid_pch (cpp_reader *pfile, const char *name, int fd); +extern void c_common_read_pch (cpp_reader *pfile, const char *name, int fd, + const char *orig); +extern void c_common_write_pch (void); +extern void c_common_no_more_pch (void); +extern void c_common_pch_pragma (cpp_reader *pfile, const char *); +extern void c_common_print_pch_checksum (FILE *f); + + +extern const unsigned char executable_checksum[16]; + +extern void builtin_define_with_value (const char *, const char *, int); +extern void c_stddef_cpp_builtins (void); +extern void fe_file_change (const struct line_map *); +extern void c_parse_error (const char *, enum cpp_ttype, tree); + + + + + +extern tree objc_is_class_name (tree); +extern tree objc_is_object_ptr (tree); +extern void objc_check_decl (tree); +extern int objc_is_reserved_word (tree); +extern unsigned char objc_compare_types (tree, tree, int, tree); +extern void objc_volatilize_decl (tree); +extern unsigned char objc_type_quals_match (tree, tree); +extern tree objc_rewrite_function_call (tree, tree); +extern tree objc_message_selector (void); +extern tree objc_lookup_ivar (tree, tree); +extern void objc_clear_super_receiver (void); +extern int objc_is_public (tree, tree); +extern tree objc_is_id (tree); +extern void objc_declare_alias (tree, tree); +extern void objc_declare_class (tree); +extern void objc_declare_protocols (tree); +extern tree objc_build_message_expr (tree); +extern tree objc_finish_message_expr (tree, tree, tree); +extern tree objc_build_selector_expr (tree); +extern tree objc_build_protocol_expr (tree); +extern tree objc_build_encode_expr (tree); +extern tree objc_build_string_object (tree); +extern tree objc_get_protocol_qualified_type (tree, tree); +extern tree objc_get_class_reference (tree); +extern tree objc_get_class_ivars (tree); +extern void objc_start_class_interface (tree, tree, tree); +extern void objc_start_category_interface (tree, tree, tree); +extern void objc_start_protocol (tree, tree); +extern void objc_continue_interface (void); +extern void objc_finish_interface (void); +extern void objc_start_class_implementation (tree, tree); +extern void objc_start_category_implementation (tree, tree); +extern void objc_continue_implementation (void); +extern void objc_finish_implementation (void); +extern void objc_set_visibility (int); +extern void objc_set_method_type (enum tree_code); +extern tree objc_build_method_signature (tree, tree, tree, unsigned char); +extern void objc_add_method_declaration (tree); +extern void objc_start_method_definition (tree); +extern void objc_finish_method_definition (tree); +extern void objc_add_instance_variable (tree); +extern tree objc_build_keyword_decl (tree, tree, tree); +extern tree objc_build_throw_stmt (tree); +extern void objc_begin_try_stmt (location_t, tree); +extern tree objc_finish_try_stmt (void); +extern void objc_begin_catch_clause (tree); +extern void objc_finish_catch_clause (void); +extern void objc_build_finally_clause (location_t, tree); +extern tree objc_build_synchronized (location_t, tree, tree); +extern int objc_static_init_needed_p (void); +extern tree objc_generate_static_init_call (tree); +extern tree objc_generate_write_barrier (tree, enum tree_code, tree); + + + +extern void *objc_get_current_scope (void); +extern void objc_mark_locals_volatile (void *); + + +extern void init_pp_output (FILE *); +extern void preprocess_file (cpp_reader *); +extern void pp_file_change (const struct line_map *); +extern void pp_dir_change (cpp_reader *, const char *); +extern unsigned char check_missing_format_attribute (tree, tree); + + +extern tree c_finish_omp_master (tree); +extern tree c_finish_omp_critical (tree, tree); +extern tree c_finish_omp_ordered (tree); +extern void c_finish_omp_barrier (void); +extern tree c_finish_omp_atomic (enum tree_code, tree, tree); +extern void c_finish_omp_flush (void); +extern tree c_finish_omp_for (location_t, tree, tree, tree, tree, tree, tree); +extern void c_split_parallel_clauses (tree, tree *, tree *); +extern enum omp_clause_default_kind c_omp_predetermined_sharing (tree); + + +extern unsigned char c_omp_sharing_predetermined (tree); +extern tree c_omp_remap_decl (tree, unsigned char); +# 25 "../../GCC/gcc/c-tree.h" 2 +# 1 "../../GCC/gcc/toplev.h" 1 +# 29 "../../GCC/gcc/toplev.h" +extern int toplev_main (unsigned int, const char **); +extern int read_integral_parameter (const char *, const char *, const int); +extern void strip_off_ending (char *, int); +extern const char *trim_filename (const char *); +extern void _fatal_insn_not_found (rtx, const char *, int, const char *) + __attribute__ ((__noreturn__)); +extern void _fatal_insn (const char *, rtx, const char *, int, const char *) + __attribute__ ((__noreturn__)); +# 56 "../../GCC/gcc/toplev.h" +extern void internal_error (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))) + __attribute__ ((__noreturn__)); +extern void warning0 (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); + +extern void warning (int, const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 2, 3))) __attribute__ ((__nonnull__ (2))); +extern void error (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); +extern void fatal_error (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))) + __attribute__ ((__noreturn__)); +extern void pedwarn (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); +extern void sorry (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); +extern void inform (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); +extern void verbatim (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1, 2))) __attribute__ ((__nonnull__ (1))); + +extern void rest_of_decl_compilation (tree, int, int); +extern void rest_of_type_compilation (tree, int); +extern void tree_rest_of_compilation (tree); +extern void init_optimization_passes (void); +extern void finish_optimization_passes (void); +extern unsigned char enable_rtl_dump_file (int); + +extern void announce_function (tree); + +extern void error_for_asm (rtx, const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 2, 3))) __attribute__ ((__nonnull__ (2))); +extern void warning_for_asm (rtx, const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 2, 3))) __attribute__ ((__nonnull__ (2))); +extern void warn_deprecated_use (tree); + + +extern void output_quoted_string (FILE *, const char *); +extern void output_file_directive (FILE *, const char *); + + + + + +extern void fnotice (FILE *, const char *, ...) + __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__nonnull__ (2))); + + +extern void wrapup_global_declaration_1 (tree); +extern unsigned char wrapup_global_declaration_2 (tree); +extern unsigned char wrapup_global_declarations (tree *, int); +extern void check_global_declaration_1 (tree); +extern void check_global_declarations (tree *, int); +extern void emit_debug_global_declarations (tree *, int); +extern void write_global_declarations (void); + + +extern unsigned local_tick; + +extern const char *progname; +extern const char *dump_base_name; +extern const char *aux_base_name; +extern const char *aux_info_file_name; +extern const char *asm_file_name; +extern unsigned char exit_after_options; + +extern int target_flags_explicit; + + + + +extern unsigned char user_defined_section_attribute; + + +extern int flag_crossjumping; +extern int flag_if_conversion; +extern int flag_if_conversion2; +extern int flag_keep_static_consts; +extern int flag_peel_loops; +extern int flag_rerun_cse_after_loop; +extern int flag_thread_jumps; +extern int flag_tracer; +extern int flag_unroll_loops; +extern int flag_unroll_all_loops; +extern int flag_unswitch_loops; +extern int flag_cprop_registers; +extern int time_report; + + +extern void print_version (FILE *, const char *); +extern void * default_get_pch_validity (size_t *); +extern const char * default_pch_valid_p (const void *, size_t); + + +extern struct ht *ident_hash; + + + + +extern void set_fast_math_flags (int); + + +extern void decode_d_option (const char *); + + +extern unsigned char fast_math_flags_set_p (void); + + +extern int exact_log2 (unsigned long); + + +extern int floor_log2 (unsigned long); +# 172 "../../GCC/gcc/toplev.h" +extern __inline__ int +floor_log2 (unsigned long x) +{ + return x ? (8 * 4) - 1 - (int) __builtin_clzl (x) : -1; +} + +extern __inline__ int +exact_log2 (unsigned long x) +{ + return x == (x & -x) && x ? (int) __builtin_ctzl (x) : -1; +} + + + + + +extern const char *get_src_pwd (void); +extern unsigned char set_src_pwd (const char *); +# 26 "../../GCC/gcc/c-tree.h" 2 +# 1 "../../GCC/gcc/diagnostic.h" 1 +# 25 "../../GCC/gcc/diagnostic.h" +# 1 "../../GCC/gcc/pretty-print.h" 1 +# 24 "../../GCC/gcc/pretty-print.h" +# 1 "../../GCC/gcc/../include/obstack.h" 1 +# 25 "../../GCC/gcc/pretty-print.h" 2 + + + + + + + +typedef struct +{ + const char *format_spec; + va_list *args_ptr; + int err_no; + location_t *locus; +} text_info; + + + + + + +typedef enum +{ + DIAGNOSTICS_SHOW_PREFIX_ONCE = 0x0, + DIAGNOSTICS_SHOW_PREFIX_NEVER = 0x1, + DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE = 0x2 +} diagnostic_prefixing_rule_t; + + + + + + +struct chunk_info +{ + + struct chunk_info *prev; + + + + + + + + const char *args[30 * 2]; +}; + + + +typedef struct +{ + + struct obstack formatted_obstack; + + + + struct obstack chunk_obstack; + + + + struct obstack *obstack; + + + struct chunk_info *cur_chunk_array; + + + FILE *stream; + + + int line_length; + + + + char digit_buffer[128]; +} output_buffer; + + +typedef unsigned int pp_flags; + +typedef enum +{ + pp_none, pp_before, pp_after +} pp_padding; + + + +typedef struct +{ + + diagnostic_prefixing_rule_t rule; + + + + int line_cutoff; +} pp_wrapping_mode_t; +# 133 "../../GCC/gcc/pretty-print.h" +typedef struct pretty_print_info pretty_printer; +typedef unsigned char (*printer_fn) (pretty_printer *, text_info *, const char *, + int, unsigned char, unsigned char, unsigned char); +# 153 "../../GCC/gcc/pretty-print.h" +struct pretty_print_info +{ + + output_buffer *buffer; + + + const char *prefix; + + + pp_padding padding; + + + + int maximum_length; + + + int indent_skip; + + + pp_wrapping_mode_t wrapping; +# 182 "../../GCC/gcc/pretty-print.h" + printer_fn format_decoder; + + + unsigned char emitted_prefix; + + + unsigned char need_newline; +}; +# 290 "../../GCC/gcc/pretty-print.h" +extern void pp_construct (pretty_printer *, const char *, int); +extern void pp_base_set_line_maximum_length (pretty_printer *, int); +extern void pp_base_set_prefix (pretty_printer *, const char *); +extern void pp_base_destroy_prefix (pretty_printer *); +extern int pp_base_remaining_character_count_for_line (pretty_printer *); +extern void pp_base_clear_output_area (pretty_printer *); +extern const char *pp_base_formatted_text (pretty_printer *); +extern const char *pp_base_last_position_in_text (const pretty_printer *); +extern void pp_base_emit_prefix (pretty_printer *); +extern void pp_base_append_text (pretty_printer *, const char *, const char *); +# 308 "../../GCC/gcc/pretty-print.h" +extern void pp_printf (pretty_printer *, const char *, ...) + __attribute__ ((__format__ (__gcc_diag__, 2 ,3))) __attribute__ ((__nonnull__ (2))); + +extern void pp_verbatim (pretty_printer *, const char *, ...) + __attribute__ ((__format__ (__gcc_diag__, 2 ,3))) __attribute__ ((__nonnull__ (2))); +extern void pp_base_flush (pretty_printer *); +extern void pp_base_format (pretty_printer *, text_info *); +extern void pp_base_output_formatted_text (pretty_printer *); +extern void pp_base_format_verbatim (pretty_printer *, text_info *); + +extern void pp_base_indent (pretty_printer *); +extern void pp_base_newline (pretty_printer *); +extern void pp_base_character (pretty_printer *, int); +extern void pp_base_string (pretty_printer *, const char *); +extern void pp_write_text_to_stream (pretty_printer *pp); +extern void pp_base_maybe_space (pretty_printer *); + + +static __inline__ pp_wrapping_mode_t +pp_set_verbatim_wrapping_ (pretty_printer *pp) +{ + pp_wrapping_mode_t oldmode = (pp)->wrapping; + (pp)->wrapping.line_cutoff = 0; + (pp)->wrapping.rule = DIAGNOSTICS_SHOW_PREFIX_NEVER; + return oldmode; +} +# 26 "../../GCC/gcc/diagnostic.h" 2 +# 1 "./options.h" 1 +# 27 "../../GCC/gcc/diagnostic.h" 2 + + +typedef enum +{ + +# 1 "../../GCC/gcc/diagnostic.def" 1 + + + + + + +DK_UNSPECIFIED, + + + + +DK_IGNORED, + + +DK_FATAL, +DK_ICE, +DK_ERROR, +DK_SORRY, +DK_WARNING, +DK_ANACHRONISM, +DK_NOTE, +DK_DEBUG, +# 33 "../../GCC/gcc/diagnostic.h" 2 + + DK_LAST_DIAGNOSTIC_KIND +} diagnostic_t; + + + + +typedef struct +{ + text_info message; + location_t location; + + diagnostic_t kind; + + int option_index; +} diagnostic_info; + + + + + +typedef struct diagnostic_context diagnostic_context; +typedef void (*diagnostic_starter_fn) (diagnostic_context *, + diagnostic_info *); +typedef diagnostic_starter_fn diagnostic_finalizer_fn; + + + +struct diagnostic_context +{ + + pretty_printer *printer; + + + int diagnostic_count[DK_LAST_DIAGNOSTIC_KIND]; + + + + unsigned char issue_warnings_are_errors_message; + + + unsigned char warning_as_error_requested; + + + + + + + char classify_diagnostic[N_OPTS]; + + + + unsigned char show_option_requested; + + + unsigned char abort_on_error; +# 97 "../../GCC/gcc/diagnostic.h" + diagnostic_starter_fn begin_diagnostic; + + + diagnostic_finalizer_fn end_diagnostic; + + + void (*internal_error) (const char *, va_list *); + + + + + tree last_function; + + + int last_module; + + int lock; +}; +# 165 "../../GCC/gcc/diagnostic.h" +extern diagnostic_context *global_dc; +# 186 "../../GCC/gcc/diagnostic.h" +extern void diagnostic_initialize (diagnostic_context *); +extern void diagnostic_report_current_module (diagnostic_context *); +extern void diagnostic_report_current_function (diagnostic_context *); + + +extern diagnostic_t diagnostic_classify_diagnostic (diagnostic_context *, + int , + diagnostic_t ); +extern void diagnostic_report_diagnostic (diagnostic_context *, + diagnostic_info *); + +extern void diagnostic_set_info (diagnostic_info *, const char *, va_list *, + location_t, diagnostic_t) __attribute__ ((__format__ (__gcc_cdiag__, 2, 0))) __attribute__ ((__nonnull__ (2))); +extern void diagnostic_set_info_translated (diagnostic_info *, const char *, + va_list *, location_t, + diagnostic_t) + __attribute__ ((__format__ (__gcc_cdiag__, 2, 0))) __attribute__ ((__nonnull__ (2))); + +extern char *diagnostic_build_prefix (diagnostic_info *); + + +extern char *file_name_as_prefix (const char *); + + +extern int dump_generic_node (pretty_printer *, tree, int, int, unsigned char); +extern void print_generic_stmt (FILE *, tree, int); +extern void print_generic_stmt_indented (FILE *, tree, int, int); +extern void print_generic_expr (FILE *, tree, int); +extern void print_generic_decl (FILE *, tree, int); + +extern void debug_generic_expr (tree); +extern void debug_generic_stmt (tree); +extern void debug_tree_chain (tree); +extern void debug_c_tree (tree); +# 27 "../../GCC/gcc/c-tree.h" 2 +# 35 "../../GCC/gcc/c-tree.h" +struct lang_decl +{ + char dummy; +}; +# 59 "../../GCC/gcc/c-tree.h" +struct lang_type +{ + + struct sorted_fields_type * s; + + tree enum_min; + tree enum_max; + + + + tree objc_info; +}; +# 150 "../../GCC/gcc/c-tree.h" +struct c_expr +{ + + tree value; + + + + + enum tree_code original_code; +}; + + + + +enum c_typespec_kind { + + ctsk_resword, + + + + + ctsk_tagref, + + + ctsk_tagfirstref, + + ctsk_tagdef, + + ctsk_typedef, + + ctsk_objc, + + ctsk_typeof +}; + + + +struct c_typespec { + + enum c_typespec_kind kind; + + tree spec; +}; + + +enum c_storage_class { + csc_none, + csc_auto, + csc_extern, + csc_register, + csc_static, + csc_typedef +}; + + + +enum c_typespec_keyword { + cts_none, + cts_void, + cts_bool, + cts_char, + cts_int, + cts_float, + cts_double, + + cts_CbC_code, + + cts_dfloat32, + cts_dfloat64, + cts_dfloat128 +}; + + +struct c_declspecs { + + + + + tree type; + + tree decl_attr; + + + + tree attrs; + + + enum c_typespec_keyword typespec_word; + + enum c_storage_class storage_class; + + unsigned int declspecs_seen_p : 1; + + unsigned int type_seen_p : 1; + + + + + + + unsigned int non_sc_seen_p : 1; + + unsigned int typedef_p : 1; + + + + unsigned int tag_defined_p : 1; + + + unsigned int explicit_signed_p : 1; + + unsigned int deprecated_p : 1; + + + unsigned int default_int_p; + + unsigned int long_p : 1; + + unsigned int long_long_p : 1; + + unsigned int short_p : 1; + + unsigned int signed_p : 1; + + unsigned int unsigned_p : 1; + + unsigned int complex_p : 1; + + unsigned int inline_p : 1; + + unsigned int thread_p : 1; + + unsigned int const_p : 1; + + unsigned int volatile_p : 1; + + unsigned int restrict_p : 1; +}; + + +enum c_declarator_kind { + + cdk_id, + + cdk_function, + + cdk_array, + + cdk_pointer, + + cdk_attrs +}; + + +struct c_arg_info { + + tree parms; + + tree tags; + + tree types; + + + tree others; + + + + + tree pending_sizes; + + unsigned int had_vla_unspec : 1; +}; + + +struct c_declarator { + + enum c_declarator_kind kind; + + struct c_declarator *declarator; + location_t id_loc; + union { + + + tree id; + + struct c_arg_info *arg_info; + + struct { + + tree dimen; + + int quals; + + tree attrs; + + unsigned int static_p : 1; + + unsigned int vla_unspec_p : 1; + } array; + + int pointer_quals; + + tree attrs; + } u; +}; + + +struct c_type_name { + + struct c_declspecs *specs; + + struct c_declarator *declarator; +}; + + +struct c_parm { + + struct c_declspecs *specs; + + tree attrs; + + struct c_declarator *declarator; +}; + + + + + +struct language_function +{ + struct c_language_function base; + tree x_break_label; + tree x_cont_label; + struct c_switch * x_switch_stack; + struct c_arg_info * arg_info; + int returns_value; + int returns_null; + int returns_abnormally; + int warn_about_return_type; + int extern_inline; +}; + + + + +struct c_label_list +{ + + tree label; + + struct c_label_list *next; +}; + + + +struct c_label_context_se +{ + + struct c_label_list *labels_def; + + struct c_label_list *labels_used; + + struct c_label_context_se *next; +}; + + + +struct c_label_context_vm +{ + + struct c_label_list *labels_def; + + struct c_label_list *labels_used; + + + + unsigned scope; + + struct c_label_context_vm *next; +}; + + + +extern void c_parse_init (void); + + +extern void gen_aux_info_record (tree, int, int, int); + + +extern struct obstack parser_obstack; +extern tree c_break_label; +extern tree c_cont_label; + +extern int global_bindings_p (void); +extern void push_scope (void); +extern tree pop_scope (void); +extern void insert_block (tree); +extern void c_expand_body (tree); + +extern void c_init_decl_processing (void); +extern void c_dup_lang_specific_decl (tree); +extern void c_print_identifier (FILE *, tree, int); +extern int quals_from_declspecs (const struct c_declspecs *); +extern struct c_declarator *build_array_declarator (tree, struct c_declspecs *, + unsigned char, unsigned char); +extern tree build_enumerator (tree, tree); +extern tree check_for_loop_decls (void); +extern void mark_forward_parm_decls (void); +extern void declare_parm_level (void); +extern void undeclared_variable (tree, location_t); +extern tree declare_label (tree); +extern tree define_label (location_t, tree); +extern void c_maybe_initialize_eh (void); +extern void finish_decl (tree, tree, tree); +extern tree finish_enum (tree, tree, tree); +extern void finish_function (void); +extern tree finish_struct (tree, tree, tree); +extern struct c_arg_info *get_parm_info (unsigned char); +extern tree grokfield (struct c_declarator *, struct c_declspecs *, tree); +extern tree groktypename (struct c_type_name *); +extern tree grokparm (const struct c_parm *); +extern tree implicitly_declare (tree); +extern void keep_next_level (void); +extern void pending_xref_error (void); +extern void c_push_function_context (struct function *); +extern void c_pop_function_context (struct function *); +extern void push_parm_decl (const struct c_parm *); +extern struct c_declarator *set_array_declarator_inner (struct c_declarator *, + struct c_declarator *, + unsigned char); +extern tree builtin_function (const char *, tree, int, enum built_in_class, + const char *, tree); +extern void shadow_tag (const struct c_declspecs *); +extern void shadow_tag_warned (const struct c_declspecs *, int); +extern tree start_enum (tree); +extern int start_function (struct c_declspecs *, struct c_declarator *, tree); +extern tree start_decl (struct c_declarator *, struct c_declspecs *, unsigned char, + tree); +extern tree start_struct (enum tree_code, tree); +extern void store_parm_decls (void); +extern void store_parm_decls_from (struct c_arg_info *); +extern tree xref_tag (enum tree_code, tree); +extern struct c_typespec parser_xref_tag (enum tree_code, tree); +extern int c_expand_decl (tree); +extern struct c_parm *build_c_parm (struct c_declspecs *, tree, + struct c_declarator *); +extern struct c_declarator *build_attrs_declarator (tree, + struct c_declarator *); +extern struct c_declarator *build_function_declarator (struct c_arg_info *, + struct c_declarator *); +extern struct c_declarator *build_id_declarator (tree); +extern struct c_declarator *make_pointer_declarator (struct c_declspecs *, + struct c_declarator *); +extern struct c_declspecs *build_null_declspecs (void); +extern struct c_declspecs *declspecs_add_qual (struct c_declspecs *, tree); +extern struct c_declspecs *declspecs_add_type (struct c_declspecs *, + struct c_typespec); +extern struct c_declspecs *declspecs_add_scspec (struct c_declspecs *, tree); +extern struct c_declspecs *declspecs_add_attrs (struct c_declspecs *, tree); +extern struct c_declspecs *finish_declspecs (struct c_declspecs *); + + +extern int c_disregard_inline_limits (tree); +extern int c_cannot_inline_tree_fn (tree *); +extern unsigned char c_objc_common_init (void); +extern unsigned char c_missing_noreturn_ok_p (tree); +extern tree c_objc_common_truthvalue_conversion (tree expr); +extern unsigned char c_warn_unused_global_decl (tree); +extern void c_initialize_diagnostics (diagnostic_context *); +extern unsigned char c_vla_unspec_p (tree x, tree fn); + + + + + + + +extern int in_alignof; +extern int in_sizeof; +extern int in_typeof; + +extern struct c_switch *c_switch_stack; +extern struct c_label_context_se *label_context_stack_se; +extern struct c_label_context_vm *label_context_stack_vm; + +extern tree require_complete_type (tree); +extern int same_translation_unit_p (tree, tree); +extern int comptypes (tree, tree); +extern unsigned char c_vla_type_p (tree); +extern unsigned char c_mark_addressable (tree); +extern void c_incomplete_type_error (tree, tree); +extern tree c_type_promotes_to (tree); +extern struct c_expr default_function_array_conversion (struct c_expr); +extern tree composite_type (tree, tree); +extern tree build_component_ref (tree, tree); +extern tree build_array_ref (tree, tree); +extern tree build_external_ref (tree, int, location_t); +extern void pop_maybe_used (unsigned char); +extern struct c_expr c_expr_sizeof_expr (struct c_expr); +extern struct c_expr c_expr_sizeof_type (struct c_type_name *); +extern struct c_expr parser_build_unary_op (enum tree_code, struct c_expr); +extern struct c_expr parser_build_binary_op (enum tree_code, struct c_expr, + struct c_expr); +extern tree build_conditional_expr (tree, tree, tree); +extern tree build_compound_expr (tree, tree); +extern tree c_cast_expr (struct c_type_name *, tree); +extern tree build_c_cast (tree, tree); +extern void store_init_value (tree, tree); +extern void error_init (const char *); +extern void pedwarn_init (const char *); +extern void maybe_warn_string_init (tree, struct c_expr); +extern void start_init (tree, tree, int); +extern void finish_init (void); +extern void really_start_incremental_init (tree); +extern void push_init_level (int); +extern struct c_expr pop_init_level (int); +extern void set_init_index (tree, tree); +extern void set_init_label (tree); +extern void process_init_element (struct c_expr); +extern tree build_compound_literal (tree, tree); +extern tree c_start_case (tree); +extern void c_finish_case (tree); +extern tree build_asm_expr (tree, tree, tree, tree, unsigned char); +extern tree build_asm_stmt (tree, tree); +extern tree c_convert_parm_for_inlining (tree, tree, tree, int); +extern int c_types_compatible_p (tree, tree); +extern tree c_begin_compound_stmt (unsigned char); +extern tree c_end_compound_stmt (tree, unsigned char); +extern void c_finish_if_stmt (location_t, tree, tree, tree, unsigned char); +extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, unsigned char); +extern tree c_begin_stmt_expr (void); +extern tree c_finish_stmt_expr (tree); +extern tree c_process_expr_stmt (tree); +extern tree c_finish_expr_stmt (tree); +extern tree c_finish_return (tree); +extern tree c_finish_bc_stmt (tree *, unsigned char); +extern tree c_finish_goto_label (tree); +extern tree c_finish_goto_ptr (tree); +extern void c_begin_vm_scope (unsigned int); +extern void c_end_vm_scope (unsigned int); +extern tree c_expr_to_decl (tree, unsigned char *, unsigned char *, unsigned char *); +extern tree c_begin_omp_parallel (void); +extern tree c_finish_omp_parallel (tree, tree); +extern tree c_finish_omp_clauses (tree); + + + + +extern int current_function_returns_value; + + + + +extern int current_function_returns_null; + + + + +extern int current_function_returns_abnormally; + + + +extern int system_header_p; + + + + +extern unsigned char c_override_global_bindings_to_false; + + +extern unsigned char c_eh_initialized_p; + + +extern void c_finish_incomplete_decl (tree); +extern void c_write_global_declarations (void); +# 635 "../../GCC/gcc/c-tree.h" +extern void pedwarn_c90 (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1 ,2))) __attribute__ ((__nonnull__ (1))); +extern void pedwarn_c99 (const char *, ...) __attribute__ ((__format__ (__gcc_cdiag__, 1 ,2))) __attribute__ ((__nonnull__ (1))); +# 51 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/flags.h" 1 +# 27 "../../GCC/gcc/flags.h" +enum debug_info_type +{ + NO_DEBUG, + DBX_DEBUG, + SDB_DEBUG, + DWARF2_DEBUG, + XCOFF_DEBUG, + VMS_DEBUG, + VMS_AND_DWARF2_DEBUG + +}; + + +extern enum debug_info_type write_symbols; + + +extern const char *const debug_type_names[]; + +enum debug_info_level +{ + DINFO_LEVEL_NONE, + DINFO_LEVEL_TERSE, + DINFO_LEVEL_NORMAL, + DINFO_LEVEL_VERBOSE +}; + + +extern enum debug_info_level debug_info_level; + + + +extern unsigned char use_gnu_debug_info_extensions; +# 74 "../../GCC/gcc/flags.h" +extern enum symbol_visibility default_visibility; + +struct visibility_flags +{ + unsigned inpragma : 1; + unsigned inlines_hidden : 1; +}; + + +extern struct visibility_flags visibility_options; + + + +extern int optimize; + + + +extern int optimize_size; + + + + +extern unsigned char extra_warnings; + + + + + +extern void set_Wunused (int setting); + + + + + +extern unsigned char warn_larger_than; +extern long larger_than_size; + + + + +extern int warn_strict_aliasing; + + + + +extern int warn_strict_overflow; + + + + +extern int in_system_header; + + + + +extern int flag_print_asm_name; + + + + + +extern int flag_signed_char; + + + + +extern int flag_short_enums; + + + +extern int flag_pcc_struct_return; + + + + + +extern int flag_complex_method; + + + + +extern int flag_really_no_inline; + + + +extern int rtl_dump_and_exit; + + + +extern int flag_gen_aux_info; + + + + +extern int flag_dump_unnumbered; + + + + +extern int flag_pedantic_errors; + + + + +extern int flag_shlib; +# 187 "../../GCC/gcc/flags.h" +extern int flag_debug_asm; + + + +extern int flag_next_runtime; + +extern int flag_dump_rtl_in_asm; + + + + +extern int flag_renumber_insns; + + + + + + + +extern int frame_pointer_needed; + + +extern int flag_evaluation_order; + + +extern unsigned long g_switch_value; +extern unsigned char g_switch_set; + + + + + + +extern int align_loops_log; +extern int align_loops_max_skip; +extern int align_jumps_log; +extern int align_jumps_max_skip; +extern int align_labels_log; +extern int align_labels_max_skip; +extern int align_functions_log; + + + +extern int force_align_functions_log; + + +extern int dump_for_graph; + + +enum graph_dump_types +{ + no_graph = 0, + vcg +}; +extern enum graph_dump_types graph_dump_format; + + + +extern int flag_detailed_statistics; + + + +extern int flag_remove_unreachable_functions; + + +extern int flag_var_tracking; + + + +extern unsigned char flag_speculative_prefetching_set; + + + + +extern const char *flag_random_seed; +# 319 "../../GCC/gcc/flags.h" +enum warn_strict_overflow_code +{ + + + + WARN_STRICT_OVERFLOW_ALL = 1, + + + + + WARN_STRICT_OVERFLOW_CONDITIONAL = 2, + + + WARN_STRICT_OVERFLOW_COMPARISON = 3, + + + WARN_STRICT_OVERFLOW_MISC = 4, + + + WARN_STRICT_OVERFLOW_MAGNITUDE = 5 +}; +# 52 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/output.h" 1 +# 27 "../../GCC/gcc/output.h" +extern void init_final (const char *); + + + +extern void app_enable (void); + + + +extern void app_disable (void); + + + + +extern int dbr_sequence_length (void); + + +extern void init_insn_lengths (void); + + + +extern int get_attr_length (rtx); + + + +extern int get_attr_min_length (rtx); + + + +extern void shorten_branches (rtx); + + + + + + +extern void final_start_function (rtx, FILE *, int); + + + + +extern void final_end_function (void); + + +extern void final (rtx, FILE *, int); + + + + +extern rtx final_scan_insn (rtx, FILE *, int, int, int *); + + + +extern rtx alter_subreg (rtx *); + + + +extern void output_operand_lossage (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2))) __attribute__ ((__nonnull__ (1))); + + + +extern void output_asm_insn (const char *, rtx *); + + + + +extern int insn_current_reference_address (rtx); + + + +extern int label_to_alignment (rtx); + + +extern void output_asm_label (rtx); + + + +extern void output_address (rtx); + + + + +extern void output_addr_const (FILE *, rtx); +# 117 "../../GCC/gcc/output.h" +typedef long __gcc_host_wide_int__; + + + + +extern void asm_fprintf (FILE *file, const char *p, ...) + __attribute__ ((__format__ (__asm_fprintf__, 2, 3))) __attribute__ ((__nonnull__ (2))); + + + +extern void split_double (rtx, rtx *, rtx *); + + +extern int leaf_function_p (void); + + + + +extern int final_forward_branch_p (rtx); + + + +extern int only_leaf_regs_used (void); + + + +extern void leaf_renumber_regs_insn (rtx); + + +extern const char *get_insn_template (int, rtx); + + +extern int regno_clobbered_at_setjmp (int); + + + + +extern void declare_weak (tree); + +extern void merge_weak (tree, tree); + + +extern void weak_finish (void); +# 168 "../../GCC/gcc/output.h" +extern int decode_reg_name (const char *); + +extern void assemble_alias (tree, tree); + +extern void default_assemble_visibility (tree, int); + + + +extern void assemble_asm (tree); + + + + + +extern void assemble_start_function (tree, const char *); + + + +extern void assemble_end_function (tree, const char *); +# 197 "../../GCC/gcc/output.h" +extern void assemble_variable (tree, int, int, int); + + + +extern void align_variable (tree decl, unsigned char dont_output_data); + + + + +extern void assemble_external (tree); + + +extern void assemble_zeros (unsigned long); + + +extern void assemble_align (int); + + +extern void assemble_string (const char *, int); + + +extern void assemble_external_libcall (rtx); + + +extern void assemble_label (const char *); + + + + + +extern void assemble_name_raw (FILE *, const char *); + + + + + +extern void assemble_name (FILE *, const char *); +# 242 "../../GCC/gcc/output.h" +extern const char *integer_asm_op (int, int); + + + +extern void assemble_integer_with_op (const char *, rtx); + + +extern unsigned char default_assemble_integer (rtx, unsigned int, int); + + + + + +extern unsigned char assemble_integer (rtx, unsigned, unsigned, int); +# 265 "../../GCC/gcc/output.h" +extern void assemble_real (struct real_value, enum machine_mode, unsigned); + + + +extern int get_pool_size (void); + + + + + +extern void output_shared_constant_pool (void); + +extern void output_object_blocks (void); + + + + + + +extern unsigned char constructor_static_from_elts_p (tree); +# 295 "../../GCC/gcc/output.h" +extern tree initializer_constant_valid_p (tree, tree); +# 305 "../../GCC/gcc/output.h" +extern void output_constant (tree, unsigned long, unsigned int); + + + + + + + +extern rtx final_sequence; +# 325 "../../GCC/gcc/output.h" +extern FILE *asm_out_file; + + + +extern const char *first_global_object_name; + + +extern const char *weak_global_object_name; + + + + + + +extern int current_function_is_leaf; + + + + + +extern int current_function_sp_is_unchanging; + + + + + +extern int current_function_uses_only_leaf_regs; + + + + +extern FILE *dump_file; + + + +extern rtx current_insn_predicate; + + +extern rtx current_output_insn; + + + + +extern rtx this_is_asm_operands; + + + +extern int size_directive_output; +extern tree last_assemble_variable_decl; + +extern unsigned char first_function_block_is_cold; + + + +extern unsigned char decl_readonly_section (tree, int); + + + +extern int compute_reloc_for_constant (tree); + + +extern const char *user_label_prefix; + + +extern void default_function_pro_epilogue (FILE *, long); + + +extern void no_asm_to_stream (FILE *); +# 430 "../../GCC/gcc/output.h" +enum section_category +{ + SECCAT_TEXT, + + SECCAT_RODATA, + SECCAT_RODATA_MERGE_STR, + SECCAT_RODATA_MERGE_STR_INIT, + SECCAT_RODATA_MERGE_CONST, + SECCAT_SRODATA, + + SECCAT_DATA, +# 451 "../../GCC/gcc/output.h" + SECCAT_DATA_REL, + SECCAT_DATA_REL_LOCAL, + SECCAT_DATA_REL_RO, + SECCAT_DATA_REL_RO_LOCAL, + + SECCAT_SDATA, + SECCAT_TDATA, + + SECCAT_BSS, + SECCAT_SBSS, + SECCAT_TBSS +}; + + +struct section_common { + + unsigned int flags; +}; + + +struct named_section { + struct section_common common; + + + const char *name; + + + + tree decl; +}; + + + +typedef void (*unnamed_section_callback) (const void *); + + +struct unnamed_section { + struct section_common common; + + + + unnamed_section_callback callback; + const void * data; + + + section *next; +}; +# 508 "../../GCC/gcc/output.h" +typedef unsigned char (*noswitch_section_callback) (tree decl, const char *name, + unsigned long size, + unsigned long rounded); + + +struct noswitch_section { + struct section_common common; + + + noswitch_section_callback callback; +}; + + +union section +{ + struct section_common common; + struct named_section named; + struct unnamed_section unnamed; + struct noswitch_section noswitch; +}; + + + + +struct object_block; + + +extern section *text_section; +extern section *data_section; +extern section *readonly_data_section; +extern section *sdata_section; +extern section *ctors_section; +extern section *dtors_section; +extern section *bss_section; +extern section *sbss_section; +extern section *exception_section; +extern section *eh_frame_section; +extern section *tls_comm_section; +extern section *comm_section; +extern section *lcomm_section; +extern section *bss_noswitch_section; + +extern section *in_section; +extern unsigned char in_cold_section_p; + +extern section *get_unnamed_section (unsigned int, void (*) (const void *), + const void *); +extern section *get_section (const char *, unsigned int, tree); +extern section *get_named_section (tree, const char *, int); +extern void place_block_symbol (rtx); +extern rtx get_section_anchor (struct object_block *, long, + enum tls_model); +extern section *mergeable_constant_section (enum machine_mode, + unsigned long, + unsigned int); +extern section *function_section (tree); +extern section *unlikely_text_section (void); +extern section *current_function_section (void); + +extern unsigned char unlikely_text_section_p (section *); +extern void switch_to_section (section *); +extern void output_section_asm_op (const void *); + +extern unsigned int default_section_type_flags (tree, const char *, int); + +extern unsigned char have_global_bss_p (void); +extern void default_no_named_section (const char *, unsigned int, tree); +extern void default_elf_asm_named_section (const char *, unsigned int, tree); +extern enum section_category categorize_decl_for_section (tree, int); +extern void default_coff_asm_named_section (const char *, unsigned int, tree); +extern void default_pe_asm_named_section (const char *, unsigned int, tree); + +extern void default_stabs_asm_out_destructor (rtx, int); +extern void default_named_section_asm_out_destructor (rtx, int); +extern void default_dtor_section_asm_out_destructor (rtx, int); +extern void default_stabs_asm_out_constructor (rtx, int); +extern void default_named_section_asm_out_constructor (rtx, int); +extern void default_ctor_section_asm_out_constructor (rtx, int); + +extern section *default_select_section (tree, int, unsigned long); +extern section *default_elf_select_section (tree, int, unsigned long); +extern void default_unique_section (tree, int); +extern section *default_function_rodata_section (tree); +extern section *default_no_function_rodata_section (tree); +extern section *default_select_rtx_section (enum machine_mode, rtx, + unsigned long); +extern section *default_elf_select_rtx_section (enum machine_mode, rtx, + unsigned long); +extern void default_encode_section_info (tree, rtx, int); +extern const char *default_strip_name_encoding (const char *); +extern void default_asm_output_anchor (rtx); +extern unsigned char default_use_anchors_for_symbol_p (rtx); +extern unsigned char default_binds_local_p (tree); +extern unsigned char default_binds_local_p_1 (tree, int); +extern void default_globalize_label (FILE *, const char *); +extern void default_emit_unwind_label (FILE *, tree, int, int); +extern void default_emit_except_table_label (FILE *); +extern void default_internal_label (FILE *, const char *, unsigned long); +extern void default_file_start (void); +extern void file_end_indicate_exec_stack (void); +extern unsigned char default_valid_pointer_mode (enum machine_mode); + +extern int default_address_cost (rtx); + + + + +extern void dbxout_int (int); +extern void dbxout_stabd (int, int); +extern void dbxout_begin_stabn (int); +extern void dbxout_begin_stabn_sline (int); +extern void dbxout_begin_empty_stabs (int); +extern void dbxout_begin_simple_stabs (const char *, int); +extern void dbxout_begin_simple_stabs_desc (const char *, int, int); + +extern void dbxout_stab_value_zero (void); +extern void dbxout_stab_value_label (const char *); +extern void dbxout_stab_value_label_diff (const char *, const char *); +extern void dbxout_stab_value_internal_label (const char *, int *); +extern void dbxout_stab_value_internal_label_diff (const char *, int *, + const char *); +# 53 "../../GCC/gcc/c-parser.c" 2 + + + + +# 1 "../../GCC/gcc/target.h" 1 +# 55 "../../GCC/gcc/target.h" +struct stdarg_info; +struct spec_info_def; + + +typedef struct secondary_reload_info +{ + + + int icode; + int extra_cost; + + + + struct secondary_reload_info *prev_sri; + int t_icode; +} secondary_reload_info; + + +struct gcc_target +{ + + struct asm_out + { + + const char *open_paren, *close_paren; + + + const char *byte_op; + struct asm_int_op + { + const char *hi; + const char *si; + const char *di; + const char *ti; + } aligned_op, unaligned_op; + + + + + + + unsigned char (* integer) (rtx x, unsigned int size, int aligned_p); + + + void (* globalize_label) (FILE *, const char *); + + + + + + + void (* unwind_label) (FILE *, tree, int, int); + + + + void (* except_table_label) (FILE *); + + + void (* unwind_emit) (FILE *, rtx); + + + void (* internal_label) (FILE *, const char *, unsigned long); + + + unsigned char (* ttype) (rtx); + + + + void (* visibility) (tree, int); + + + void (* function_prologue) (FILE *, long); + + + void (* function_end_prologue) (FILE *); + + + void (* function_begin_epilogue) (FILE *); + + + void (* function_epilogue) (FILE *, long); + + + void (* init_sections) (void); + + + + + void (* named_section) (const char *name, unsigned int flags, tree decl); + + + + + + int (*reloc_rw_mask) (void); + + + + + + section *(* select_section) (tree, int, unsigned long); + + + + section *(* select_rtx_section) (enum machine_mode, rtx, + unsigned long); + + + + void (* unique_section) (tree, int); + + + section *(* function_rodata_section) (tree); + + + void (* constructor) (rtx, int); + + + void (* destructor) (rtx, int); + + + + + + + void (* output_mi_thunk) (FILE *file, tree thunk_decl, + long delta, long vcall_offset, + tree function_decl); + + + + + + + + unsigned char (* can_output_mi_thunk) (tree thunk_decl, long delta, + long vcall_offset, + tree function_decl); + + + + void (*file_start) (void); + + + + void (*file_end) (void); + + + + void (*external_libcall) (rtx); + + + + void (*mark_decl_preserved) (const char *); + + + void (*output_anchor) (rtx); + + + void (*output_dwarf_dtprel) (FILE *file, int size, rtx x); + + } asm_out; + + + struct sched + { + + + + int (* adjust_cost) (rtx insn, rtx link, rtx def_insn, int cost); + + + + int (* adjust_priority) (rtx, int); + + + + + int (* issue_rate) (void); + + + + int (* variable_issue) (FILE *, int, rtx, int); + + + void (* md_init) (FILE *, int, int); + + + void (* md_finish) (FILE *, int); + + + void (* md_init_global) (FILE *, int, int); + + + void (* md_finish_global) (FILE *, int); + + + + int (* reorder) (FILE *, int, rtx *, int *, int); + int (* reorder2) (FILE *, int, rtx *, int *, int); + + + + + void (* dependencies_evaluation_hook) (rtx, rtx); +# 272 "../../GCC/gcc/target.h" + void (* init_dfa_pre_cycle_insn) (void); + rtx (* dfa_pre_cycle_insn) (void); + void (* init_dfa_post_cycle_insn) (void); + rtx (* dfa_post_cycle_insn) (void); +# 284 "../../GCC/gcc/target.h" + int (* first_cycle_multipass_dfa_lookahead) (void); + + + + + + + int (* first_cycle_multipass_dfa_lookahead_guard) (rtx); +# 305 "../../GCC/gcc/target.h" + int (* dfa_new_cycle) (FILE *, int, rtx, int, int, int *); +# 317 "../../GCC/gcc/target.h" + unsigned char (* is_costly_dependence) (rtx, rtx, rtx, int, int); + + + + + int (* adjust_cost_2) (rtx insn, int, rtx def_insn, int cost); + + + + + void (* h_i_d_extended) (void); +# 340 "../../GCC/gcc/target.h" + int (* speculate_insn) (rtx, int, rtx *); + + + + + + unsigned char (* needs_block_p) (rtx); +# 356 "../../GCC/gcc/target.h" + rtx (* gen_check) (rtx, rtx, unsigned char); + + + + + + + + unsigned char (* first_cycle_multipass_dfa_lookahead_guard_spec) (rtx); + + + + + void (* set_sched_flags) (struct spec_info_def *); + } sched; + + + struct vectorize + { + + + + tree (* builtin_mask_for_load) (void); + + + + unsigned char (* vector_alignment_reachable) (tree, unsigned char); + } vectorize; + + + int default_target_flags; + + + + + + + unsigned char (* handle_option) (size_t code, const char *arg, int value); + + + enum machine_mode (* eh_return_filter_mode) (void); + + + tree (* merge_decl_attributes) (tree, tree); + + + tree (* merge_type_attributes) (tree, tree); + + + + const struct attribute_spec *attribute_table; + + + + + int (* comp_type_attributes) (tree type1, tree type2); + + + void (* set_default_type_attributes) (tree type); + + + void (* insert_attributes) (tree decl, tree *attributes); + + + + unsigned char (* function_attribute_inlinable_p) (tree fndecl); + + + + unsigned char (* ms_bitfield_layout_p) (tree record_type); + + + unsigned char (* decimal_float_supported_p) (void); + + + unsigned char (* align_anon_bitfield) (void); + + + + unsigned char (* narrow_volatile_bitfield) (void); + + + void (* init_builtins) (void); + + + rtx (* expand_builtin) (tree exp, rtx target, rtx subtarget, + enum machine_mode mode, int ignore); + + + + + + tree (*resolve_overloaded_builtin) (tree decl, tree params); + + + tree (* fold_builtin) (tree fndecl, tree arglist, unsigned char ignore); + + + + + const char * (* mangle_fundamental_type) (tree type); + + + void (* init_libfuncs) (void); + + + + + unsigned int (* section_type_flags) (tree, const char *, int); + + + + unsigned char (* cannot_modify_jumps_p) (void); + + + + int (* branch_target_register_class) (void); + + + + + + unsigned char (* branch_target_register_callee_saved) (unsigned char after_pe_gen); + + + unsigned char (* cannot_force_const_mem) (rtx); + + + unsigned char (* cannot_copy_insn_p) (rtx); + + + unsigned char (* commutative_p) (rtx, int); + + + rtx (* delegitimize_address) (rtx); + + + unsigned char (* use_blocks_for_constant_p) (enum machine_mode, rtx); + + + long min_anchor_offset; + long max_anchor_offset; + + + unsigned char (* use_anchors_for_symbol_p) (rtx); + + + + + unsigned char (*function_ok_for_sibcall) (tree decl, tree exp); + + + unsigned char (* in_small_data_p) (tree); + + + + unsigned char (* binds_local_p) (tree); + + + + void (* encode_section_info) (tree, rtx, int); + + + const char * (* strip_name_encoding) (const char *); + + + + unsigned long (* shift_truncation_mask) (enum machine_mode mode); + + + + + unsigned int (* min_divisions_for_recip_mul) (enum machine_mode mode); + + + + + + + int (* mode_rep_extended) (enum machine_mode mode, + enum machine_mode mode_rep); + + + unsigned char (* valid_pointer_mode) (enum machine_mode mode); + + + + + unsigned char (* scalar_mode_supported_p) (enum machine_mode mode); + + + + + unsigned char (* vector_mode_supported_p) (enum machine_mode mode); + + + unsigned char (* vector_opaque_p) (tree); + + + + + + + unsigned char (* rtx_costs) (rtx x, int code, int outer_code, int *total); + + + + int (* address_cost) (rtx x); + + + + rtx (* allocate_initial_value) (rtx x); + + + + + + + + rtx (* dwarf_register_span) (rtx); +# 584 "../../GCC/gcc/target.h" + unsigned char (* fixed_condition_code_regs) (unsigned int *, unsigned int *); + + + + + + + enum machine_mode (* cc_modes_compatible) (enum machine_mode, + enum machine_mode); + + + + void (* machine_dependent_reorg) (void); + + + tree (* build_builtin_va_list) (void); + + + tree (* gimplify_va_arg_expr) (tree valist, tree type, tree *pre_p, + tree *post_p); + + + + + + + + void * (* get_pch_validity) (size_t *); + const char * (* pch_valid_p) (const void *, size_t); + + + + + const char *(*check_pch_target_flags) (int); + + + + + unsigned char (* default_short_enums) (void); + + + + rtx (* builtin_setjmp_frame_value) (void); + + + + tree (* md_asm_clobbers) (tree, tree, tree); + + + + + + + int (* dwarf_calling_convention) (tree); +# 646 "../../GCC/gcc/target.h" + void (* dwarf_handle_frame_unspec) (const char *, rtx, int); + + + + + + unsigned char (* stdarg_optimize_hook) (struct stdarg_info *ai, tree lhs, tree rhs); + + + + + tree (* stack_protect_guard) (void); + + + + tree (* stack_protect_fail) (void); + + + + const char * (*invalid_within_doloop) (rtx); + + + + + unsigned char (* valid_dllimport_attribute_p) (tree decl); + + + struct calls { + unsigned char (*promote_function_args) (tree fntype); + unsigned char (*promote_function_return) (tree fntype); + unsigned char (*promote_prototypes) (tree fntype); + rtx (*struct_value_rtx) (tree fndecl, int incoming); + unsigned char (*return_in_memory) (tree type, tree fndecl); + unsigned char (*return_in_msb) (tree type); + + + + + unsigned char (*pass_by_reference) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + tree type, unsigned char named_arg); + + rtx (*expand_builtin_saveregs) (void); + + void (*setup_incoming_varargs) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + tree type, int *pretend_arg_size, + int second_time); + unsigned char (*strict_argument_naming) (CUMULATIVE_ARGS *ca); + + + + unsigned char (*pretend_outgoing_varargs_named) (CUMULATIVE_ARGS *ca); + + + + unsigned char (* split_complex_arg) (tree type); + + + + + + unsigned char (* must_pass_in_stack) (enum machine_mode mode, tree t); + + + + + unsigned char (* callee_copies) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + tree type, unsigned char named); + + + + + int (* arg_partial_bytes) (CUMULATIVE_ARGS *ca, enum machine_mode mode, + tree type, unsigned char named); + + + + const char *(*invalid_arg_for_unprototyped_fn) (tree typelist, + tree funcdecl, tree val); + + + + rtx (*function_value) (tree ret_type, tree fn_decl_or_type, + unsigned char outgoing); + + + + rtx (*internal_arg_pointer) (void); + } calls; + + + + const char *(*invalid_conversion) (tree fromtype, tree totype); + + + + const char *(*invalid_unary_op) (int op, tree type); + + + + const char *(*invalid_binary_op) (int op, tree type1, tree type2); + + + enum reg_class (*secondary_reload) (unsigned char, rtx, enum reg_class, + enum machine_mode, + struct secondary_reload_info *); + + + struct cxx { + + tree (*guard_type) (void); + + unsigned char (*guard_mask_bit) (void); + + tree (*get_cookie_size) (tree); + + + unsigned char (*cookie_has_size) (void); + + + int (*import_export_class) (tree, int); + + unsigned char (*cdtor_returns_this) (void); + + + + + unsigned char (*key_method_may_be_inline) (void); + + + + + + + + void (*determine_class_data_visibility) (tree decl); + + + + + + unsigned char (*class_data_always_comdat) (void); + + + unsigned char (*use_aeabi_atexit) (void); + + + + + void (*adjust_class_at_definition) (tree type); + } cxx; + + + + + void (*live_on_entry) (bitmap); + + + unsigned char unwind_tables_default; + + + + + unsigned char have_named_sections; + + + + unsigned char have_switchable_bss_sections; + + + + unsigned char have_ctors_dtors; + + + unsigned char have_tls; + + + unsigned char have_srodata_section; + + + unsigned char terminate_dw2_eh_frame_info; + + + + unsigned char file_start_app_off; + + + + unsigned char file_start_file_directive; + + + unsigned char handle_pragma_redefine_extname; + + + unsigned char handle_pragma_extern_prefix; + + + + unsigned char relaxed_ordering; + + + + + unsigned char arm_eabi_unwinder; + + +}; + +extern struct gcc_target targetm; +# 58 "../../GCC/gcc/c-parser.c" 2 +# 1 "../../GCC/gcc/cgraph.h" 1 +# 24 "../../GCC/gcc/cgraph.h" +# 1 "../../GCC/gcc/basic-block.h" 1 +# 24 "../../GCC/gcc/basic-block.h" +# 1 "../../GCC/gcc/bitmap.h" 1 +# 27 "../../GCC/gcc/bitmap.h" +typedef unsigned long BITMAP_WORD; +# 43 "../../GCC/gcc/bitmap.h" +typedef struct bitmap_obstack +{ + struct bitmap_element_def *elements; + struct bitmap_head_def *heads; + struct obstack obstack; +} bitmap_obstack; +# 62 "../../GCC/gcc/bitmap.h" +typedef struct bitmap_element_def +{ + struct bitmap_element_def *next; + struct bitmap_element_def *prev; + unsigned int indx; + BITMAP_WORD bits[((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u))]; +} bitmap_element; + + +typedef struct bitmap_head_def { + bitmap_element *first; + bitmap_element *current; + unsigned int indx; + bitmap_obstack *obstack; + +} bitmap_head; + + + +extern bitmap_element bitmap_zero_bits; +extern bitmap_obstack bitmap_default_obstack; + + +extern void bitmap_clear (bitmap); + + +extern void bitmap_copy (bitmap, bitmap); + + +extern unsigned char bitmap_equal_p (bitmap, bitmap); + + +extern unsigned char bitmap_intersect_p (bitmap, bitmap); + + + +extern unsigned char bitmap_intersect_compl_p (bitmap, bitmap); + + + + + +extern unsigned long bitmap_count_bits (bitmap); + + + + + +extern void bitmap_and (bitmap, bitmap, bitmap); +extern void bitmap_and_into (bitmap, bitmap); +extern void bitmap_and_compl (bitmap, bitmap, bitmap); +extern unsigned char bitmap_and_compl_into (bitmap, bitmap); + +extern void bitmap_compl_and_into (bitmap, bitmap); +extern void bitmap_clear_range (bitmap, unsigned int, unsigned int); +extern unsigned char bitmap_ior (bitmap, bitmap, bitmap); +extern unsigned char bitmap_ior_into (bitmap, bitmap); +extern void bitmap_xor (bitmap, bitmap, bitmap); +extern void bitmap_xor_into (bitmap, bitmap); + + +extern unsigned char bitmap_ior_and_compl (bitmap DST, bitmap A, bitmap B, bitmap C); + +extern unsigned char bitmap_ior_and_compl_into (bitmap DST, bitmap B, bitmap C); + + +extern void bitmap_clear_bit (bitmap, int); + + +extern void bitmap_set_bit (bitmap, int); + + +extern int bitmap_bit_p (bitmap, int); + + +extern void debug_bitmap (bitmap); +extern void debug_bitmap_file (FILE *, bitmap); + + +extern void bitmap_print (FILE *, bitmap, const char *, const char *); + + +extern void bitmap_obstack_initialize (bitmap_obstack *); +extern void bitmap_obstack_release (bitmap_obstack *); + + + + +static __inline__ void +bitmap_initialize (bitmap head, bitmap_obstack *obstack) +{ + head->first = head->current = ((void *)0); + head->obstack = obstack; +} + + +extern bitmap bitmap_obstack_alloc (bitmap_obstack *obstack); +extern bitmap bitmap_gc_alloc (void); +extern void bitmap_obstack_free (bitmap); + + + + +extern unsigned bitmap_first_set_bit (bitmap); + + +extern hashval_t bitmap_hash(bitmap); +# 182 "../../GCC/gcc/bitmap.h" +typedef struct +{ + + bitmap_element *elt1; + + + bitmap_element *elt2; + + + unsigned word_no; + + + + + BITMAP_WORD bits; +} bitmap_iterator; + + + + +static __inline__ void +bmp_iter_set_init (bitmap_iterator *bi, bitmap map, + unsigned start_bit, unsigned *bit_no) +{ + bi->elt1 = map->first; + bi->elt2 = ((void *)0); + + + while (1) + { + if (!bi->elt1) + { + bi->elt1 = &bitmap_zero_bits; + break; + } + + if (bi->elt1->indx >= start_bit / (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u))) + break; + bi->elt1 = bi->elt1->next; + } + + + if (bi->elt1->indx != start_bit / (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u))) + start_bit = bi->elt1->indx * (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u)); + + + bi->word_no = start_bit / (8 * 4 * 1u) % ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)); + bi->bits = bi->elt1->bits[bi->word_no]; + bi->bits >>= start_bit % (8 * 4 * 1u); + + + + + + start_bit += !bi->bits; + + *bit_no = start_bit; +} + + + + +static __inline__ void +bmp_iter_and_init (bitmap_iterator *bi, bitmap map1, bitmap map2, + unsigned start_bit, unsigned *bit_no) +{ + bi->elt1 = map1->first; + bi->elt2 = map2->first; + + + + while (1) + { + if (!bi->elt1) + { + bi->elt2 = ((void *)0); + break; + } + + if (bi->elt1->indx >= start_bit / (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u))) + break; + bi->elt1 = bi->elt1->next; + } + + + while (1) + { + if (!bi->elt2) + { + bi->elt1 = bi->elt2 = &bitmap_zero_bits; + break; + } + + if (bi->elt2->indx >= bi->elt1->indx) + break; + bi->elt2 = bi->elt2->next; + } + + + if (bi->elt1->indx == bi->elt2->indx) + { + + + if (bi->elt1->indx != start_bit / (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u))) + start_bit = bi->elt1->indx * (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u)); + + bi->word_no = start_bit / (8 * 4 * 1u) % ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)); + bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no]; + bi->bits >>= start_bit % (8 * 4 * 1u); + } + else + { + + + bi->word_no = ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) - 1; + bi->bits = 0; + } + + + + + + start_bit += !bi->bits; + + *bit_no = start_bit; +} + + + + +static __inline__ void +bmp_iter_and_compl_init (bitmap_iterator *bi, bitmap map1, bitmap map2, + unsigned start_bit, unsigned *bit_no) +{ + bi->elt1 = map1->first; + bi->elt2 = map2->first; + + + while (1) + { + if (!bi->elt1) + { + bi->elt1 = &bitmap_zero_bits; + break; + } + + if (bi->elt1->indx >= start_bit / (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u))) + break; + bi->elt1 = bi->elt1->next; + } + + + while (bi->elt2 && bi->elt2->indx < bi->elt1->indx) + bi->elt2 = bi->elt2->next; + + + + if (bi->elt1->indx != start_bit / (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u))) + start_bit = bi->elt1->indx * (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u)); + + bi->word_no = start_bit / (8 * 4 * 1u) % ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)); + bi->bits = bi->elt1->bits[bi->word_no]; + if (bi->elt2 && bi->elt1->indx == bi->elt2->indx) + bi->bits &= ~bi->elt2->bits[bi->word_no]; + bi->bits >>= start_bit % (8 * 4 * 1u); + + + + + + start_bit += !bi->bits; + + *bit_no = start_bit; +} + + + + +static __inline__ void +bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no) +{ + bi->bits >>= 1; + *bit_no += 1; +} + + + + + +static __inline__ unsigned char +bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no) +{ + + if (bi->bits) + { + next_bit: + while (!(bi->bits & 1)) + { + bi->bits >>= 1; + *bit_no += 1; + } + return 1; + } + + + + + *bit_no = ((*bit_no + (8 * 4 * 1u) - 1) + / (8 * 4 * 1u) * (8 * 4 * 1u)); + bi->word_no++; + + while (1) + { + + while (bi->word_no != ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u))) + { + bi->bits = bi->elt1->bits[bi->word_no]; + if (bi->bits) + goto next_bit; + *bit_no += (8 * 4 * 1u); + bi->word_no++; + } + + + bi->elt1 = bi->elt1->next; + if (!bi->elt1) + return 0; + *bit_no = bi->elt1->indx * (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u)); + bi->word_no = 0; + } +} + + + + + +static __inline__ unsigned char +bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no) +{ + + if (bi->bits) + { + next_bit: + while (!(bi->bits & 1)) + { + bi->bits >>= 1; + *bit_no += 1; + } + return 1; + } + + + + + *bit_no = ((*bit_no + (8 * 4 * 1u) - 1) + / (8 * 4 * 1u) * (8 * 4 * 1u)); + bi->word_no++; + + while (1) + { + + while (bi->word_no != ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u))) + { + bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no]; + if (bi->bits) + goto next_bit; + *bit_no += (8 * 4 * 1u); + bi->word_no++; + } + + + do + { + + + do + { + bi->elt1 = bi->elt1->next; + if (!bi->elt1) + return 0; + } + while (bi->elt1->indx < bi->elt2->indx); + + + + while (bi->elt2->indx < bi->elt1->indx) + { + bi->elt2 = bi->elt2->next; + if (!bi->elt2) + return 0; + } + } + while (bi->elt1->indx != bi->elt2->indx); + + *bit_no = bi->elt1->indx * (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u)); + bi->word_no = 0; + } +} + + + + + +static __inline__ unsigned char +bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no) +{ + + if (bi->bits) + { + next_bit: + while (!(bi->bits & 1)) + { + bi->bits >>= 1; + *bit_no += 1; + } + return 1; + } + + + + + *bit_no = ((*bit_no + (8 * 4 * 1u) - 1) + / (8 * 4 * 1u) * (8 * 4 * 1u)); + bi->word_no++; + + while (1) + { + + while (bi->word_no != ((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u))) + { + bi->bits = bi->elt1->bits[bi->word_no]; + if (bi->elt2 && bi->elt2->indx == bi->elt1->indx) + bi->bits &= ~bi->elt2->bits[bi->word_no]; + if (bi->bits) + goto next_bit; + *bit_no += (8 * 4 * 1u); + bi->word_no++; + } + + + bi->elt1 = bi->elt1->next; + if (!bi->elt1) + return 0; + + + while (bi->elt2 && bi->elt2->indx < bi->elt1->indx) + bi->elt2 = bi->elt2->next; + + *bit_no = bi->elt1->indx * (((128 + (8 * 4 * 1u) - 1) / (8 * 4 * 1u)) * (8 * 4 * 1u)); + bi->word_no = 0; + } +} +# 25 "../../GCC/gcc/basic-block.h" 2 +# 1 "../../GCC/gcc/sbitmap.h" 1 +# 31 "../../GCC/gcc/sbitmap.h" +typedef struct simple_bitmap_def +{ + unsigned int n_bits; + unsigned int size; + unsigned int bytes; + unsigned long elms[1]; +} *sbitmap; + +typedef unsigned long *sbitmap_ptr; +# 59 "../../GCC/gcc/sbitmap.h" +typedef struct { + + unsigned long *ptr; + + + unsigned int size; + + + unsigned int word_num; + + + unsigned int bit_num; + + + unsigned long word; +} sbitmap_iterator; + + + + +static __inline__ void +sbitmap_iter_init (sbitmap_iterator *i, sbitmap bmp, unsigned int min) +{ + i->word_num = min / (unsigned int) ((unsigned) (8 * 4)); + i->bit_num = min; + i->size = bmp->size; + i->ptr = bmp->elms; + + if (i->word_num >= i->size) + i->word = 0; + else + i->word = (i->ptr[i->word_num] + >> (i->bit_num % (unsigned int) ((unsigned) (8 * 4)))); +} + + + + + +static __inline__ unsigned char +sbitmap_iter_cond (sbitmap_iterator *i, unsigned int *n) +{ + + for (; i->word == 0; i->word = i->ptr[i->word_num]) + { + i->word_num++; + + + if (i->word_num >= i->size) + return 0; + + i->bit_num = i->word_num * ((unsigned) (8 * 4)); + } + + + for (; (i->word & 1) == 0; i->word >>= 1) + i->bit_num++; + + *n = i->bit_num; + + return 1; +} + + + +static __inline__ void +sbitmap_iter_next (sbitmap_iterator *i) +{ + i->word >>= 1; + i->bit_num++; +} +# 171 "../../GCC/gcc/sbitmap.h" +struct int_list; + +extern void dump_sbitmap (FILE *, sbitmap); +extern void dump_sbitmap_file (FILE *, sbitmap); +extern void dump_sbitmap_vector (FILE *, const char *, const char *, sbitmap *, + int); +extern sbitmap sbitmap_alloc (unsigned int); +extern sbitmap *sbitmap_vector_alloc (unsigned int, unsigned int); +extern sbitmap sbitmap_resize (sbitmap, unsigned int, int); +extern void sbitmap_copy (sbitmap, sbitmap); +extern int sbitmap_equal (sbitmap, sbitmap); +extern void sbitmap_zero (sbitmap); +extern void sbitmap_ones (sbitmap); +extern void sbitmap_vector_zero (sbitmap *, unsigned int); +extern void sbitmap_vector_ones (sbitmap *, unsigned int); + +extern void sbitmap_union_of_diff (sbitmap, sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_union_of_diff_cg (sbitmap, sbitmap, sbitmap, sbitmap); +extern void sbitmap_difference (sbitmap, sbitmap, sbitmap); +extern void sbitmap_not (sbitmap, sbitmap); +extern void sbitmap_a_or_b_and_c (sbitmap, sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_a_or_b_and_c_cg (sbitmap, sbitmap, sbitmap, sbitmap); +extern void sbitmap_a_and_b_or_c (sbitmap, sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_a_and_b_or_c_cg (sbitmap, sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_any_common_bits (sbitmap, sbitmap); +extern void sbitmap_a_and_b (sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_a_and_b_cg (sbitmap, sbitmap, sbitmap); +extern void sbitmap_a_or_b (sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_a_or_b_cg (sbitmap, sbitmap, sbitmap); +extern void sbitmap_a_xor_b (sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_a_xor_b_cg (sbitmap, sbitmap, sbitmap); +extern unsigned char sbitmap_a_subset_b_p (sbitmap, sbitmap); + +extern int sbitmap_first_set_bit (sbitmap); +extern int sbitmap_last_set_bit (sbitmap); + +extern void sbitmap_intersect_of_predsucc (sbitmap, sbitmap *, int, + struct int_list **); + + + +extern void sbitmap_union_of_predsucc (sbitmap, sbitmap *, int, + struct int_list **); + + + + + + +extern void sbitmap_intersection_of_succs (sbitmap, sbitmap *, int); +extern void sbitmap_intersection_of_preds (sbitmap, sbitmap *, int); +extern void sbitmap_union_of_succs (sbitmap, sbitmap *, int); +extern void sbitmap_union_of_preds (sbitmap, sbitmap *, int); + +extern void debug_sbitmap (sbitmap); +extern sbitmap sbitmap_realloc (sbitmap, unsigned int); +# 26 "../../GCC/gcc/basic-block.h" 2 +# 1 "../../GCC/gcc/varray.h" 1 +# 38 "../../GCC/gcc/varray.h" +enum varray_data_enum { + VARRAY_DATA_C, + VARRAY_DATA_UC, + VARRAY_DATA_S, + VARRAY_DATA_US, + VARRAY_DATA_I, + VARRAY_DATA_U, + VARRAY_DATA_L, + VARRAY_DATA_UL, + VARRAY_DATA_HINT, + VARRAY_DATA_UHINT, + VARRAY_DATA_GENERIC, + VARRAY_DATA_GENERIC_NOGC, + VARRAY_DATA_CPTR, + VARRAY_DATA_RTX, + VARRAY_DATA_RTVEC, + VARRAY_DATA_TREE, + VARRAY_DATA_BITMAP, + VARRAY_DATA_REG, + VARRAY_DATA_BB, + VARRAY_DATA_TE, + VARRAY_DATA_EDGE, + VARRAY_DATA_TREE_PTR, + NUM_VARRAY_DATA +}; + + +typedef union varray_data_tag { + char vdt_c[1]; + + unsigned char vdt_uc[1]; + + short vdt_s[1]; + + unsigned short vdt_us[1]; + + int vdt_i[1]; + + unsigned int vdt_u[1]; + + long vdt_l[1]; + + unsigned long vdt_ul[1]; + + long vdt_hint[1]; + + unsigned long vdt_uhint[1]; + + void * vdt_generic[1]; + + void * vdt_generic_nogc[1]; + + char * vdt_cptr[1]; + + rtx vdt_rtx[1]; + + rtvec vdt_rtvec[1]; + + tree vdt_tree[1]; + + struct bitmap_head_def * vdt_bitmap[1]; + + struct reg_info_def * vdt_reg[1]; + + struct basic_block_def * vdt_bb[1]; + + struct elt_list * vdt_te[1]; + + struct edge_def * vdt_e[1]; + + tree * vdt_tp[1]; + +} varray_data; + + +struct varray_head_tag { + size_t num_elements; + size_t elements_used; + + enum varray_data_enum type; + const char *name; + varray_data data; + +}; +typedef struct varray_head_tag *varray_type; + + + +extern varray_type varray_init (size_t, enum varray_data_enum, const char *); +# 200 "../../GCC/gcc/varray.h" +extern varray_type varray_grow (varray_type, size_t); +# 211 "../../GCC/gcc/varray.h" +extern void varray_clear (varray_type); +extern void dump_varray_statistics (void); +# 27 "../../GCC/gcc/basic-block.h" 2 +# 1 "../../GCC/gcc/../include/partition.h" 1 +# 46 "../../GCC/gcc/../include/partition.h" +struct partition_elem +{ + + + int class_element; + + + struct partition_elem* next; + + + unsigned class_count; +}; + +typedef struct partition_def +{ + + int num_elements; + + struct partition_elem elements[1]; +} *partition; + +extern partition partition_new (int); +extern void partition_delete (partition); +extern int partition_union (partition, int, int); +extern void partition_print (partition, FILE*); +# 28 "../../GCC/gcc/basic-block.h" 2 +# 1 "../../GCC/gcc/hard-reg-set.h" 1 +# 42 "../../GCC/gcc/hard-reg-set.h" +typedef unsigned long HARD_REG_ELT_TYPE; +# 53 "../../GCC/gcc/hard-reg-set.h" +typedef HARD_REG_ELT_TYPE HARD_REG_SET[((53 + (8 * 4) - 1) / (8 * 4))]; +# 396 "../../GCC/gcc/hard-reg-set.h" +extern char fixed_regs[53]; + + + +extern HARD_REG_SET fixed_reg_set; + + + + + + +extern char call_used_regs[53]; + + + + + + + +extern HARD_REG_SET call_used_reg_set; + + +extern HARD_REG_SET losing_caller_save_reg_set; + + + + + + + +extern char call_fixed_regs[53]; + + + +extern HARD_REG_SET call_fixed_reg_set; + + + + + + +extern char global_regs[53]; +# 446 "../../GCC/gcc/hard-reg-set.h" +extern HARD_REG_SET regs_invalidated_by_call; + + + + +extern int reg_alloc_order[53]; + + + +extern int inv_reg_alloc_order[53]; + + + + +extern HARD_REG_SET reg_class_contents[((int) LIM_REG_CLASSES)]; + + + +extern unsigned int reg_class_size[((int) LIM_REG_CLASSES)]; + + + + +extern enum reg_class reg_class_subunion[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)]; + + + + +extern enum reg_class reg_class_superunion[((int) LIM_REG_CLASSES)][((int) LIM_REG_CLASSES)]; + + + +extern const char * reg_names[53]; + + + +extern const char * reg_class_names[]; +# 29 "../../GCC/gcc/basic-block.h" 2 +# 1 "../../GCC/gcc/predict.h" 1 +# 24 "../../GCC/gcc/predict.h" +enum br_predictor +{ +# 1 "../../GCC/gcc/predict.def" 1 +# 38 "../../GCC/gcc/predict.def" +PRED_COMBINED, + + +PRED_DS_THEORY, + + + +PRED_FIRST_MATCH, + + +PRED_NO_PREDICTION, + + +PRED_UNCONDITIONAL, + + + + + +PRED_LOOP_ITERATIONS, + + + +PRED_BUILTIN_EXPECT, + + + +PRED_CONTINUE, + + +PRED_NORETURN, + + + +PRED_LOOP_BRANCH, + + + +PRED_LOOP_EXIT, + + + + +PRED_LOOP_CONDITION, + + +PRED_LOOP_PRECONDITIONING, + + +PRED_LOOP_HEADER, + + +PRED_POINTER, +PRED_TREE_POINTER, + + +PRED_OPCODE_POSITIVE, +PRED_OPCODE_NONEQUAL, +PRED_FPOPCODE, +PRED_TREE_OPCODE_POSITIVE, +PRED_TREE_OPCODE_NONEQUAL, +PRED_TREE_FPOPCODE, + + +PRED_CALL, + + +PRED_EARLY_RETURN, +PRED_TREE_EARLY_RETURN, + + +PRED_GOTO, + + +PRED_CONST_RETURN, + + +PRED_NEGATIVE_RETURN, + + +PRED_NULL_RETURN, + + +PRED_MUDFLAP, +# 27 "../../GCC/gcc/predict.h" 2 + + + END_PREDICTORS +}; + +enum prediction +{ + NOT_TAKEN, + TAKEN +}; + +extern void predict_insn_def (rtx, enum br_predictor, enum prediction); +extern int counts_to_freqs (void); +# 30 "../../GCC/gcc/basic-block.h" 2 + +# 1 "../../GCC/gcc/function.h" 1 +# 27 "../../GCC/gcc/function.h" +struct var_refs_queue +{ + rtx modified; + enum machine_mode promoted_mode; + int unsignedp; + struct var_refs_queue *next; +}; + + + + + + +struct sequence_stack +{ + + rtx first; + rtx last; + struct sequence_stack *next; +}; + +extern struct sequence_stack *sequence_stack; + + + +struct simple_obstack_stack +{ + struct obstack *obstack; + struct simple_obstack_stack *next; +}; + +struct emit_status +{ + + + int x_reg_rtx_no; + + + int x_first_label_num; + + + + + + + rtx x_first_insn; + rtx x_last_insn; + + + + + + struct sequence_stack *sequence_stack; + + + + int x_cur_insn_uid; + + + + location_t x_last_location; + + + + + + int regno_pointer_align_length; + + + + + unsigned char * + regno_pointer_align; + + + + rtx * x_regno_reg_rtx; +}; +# 113 "../../GCC/gcc/function.h" +struct expr_status +{ + + + int x_pending_stack_adjust; +# 134 "../../GCC/gcc/function.h" + int x_inhibit_defer_pop; + + + + + + int x_stack_pointer_delta; + + + + + rtx x_saveregs_value; + + + rtx x_apply_args_value; + + + rtx x_forced_labels; +}; +# 161 "../../GCC/gcc/function.h" +struct temp_slot; +typedef struct temp_slot *temp_slot_p; + +static __inline__ void VEC_temp_slot_p_must_be_pointer_type (void) { (void)((temp_slot_p)1 == (void *)1); } typedef struct VEC_temp_slot_p_base { unsigned num; unsigned alloc; temp_slot_p vec[1]; } VEC_temp_slot_p_base; typedef struct VEC_temp_slot_p_none { VEC_temp_slot_p_base base; } VEC_temp_slot_p_none; static __inline__ unsigned VEC_temp_slot_p_base_length (const VEC_temp_slot_p_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ temp_slot_p VEC_temp_slot_p_base_last (const VEC_temp_slot_p_base *vec_ ) { (void)(vec_ && vec_->num); return vec_->vec[vec_->num - 1]; } static __inline__ temp_slot_p VEC_temp_slot_p_base_index (const VEC_temp_slot_p_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return vec_->vec[ix_]; } static __inline__ int VEC_temp_slot_p_base_iterate (const VEC_temp_slot_p_base *vec_, unsigned ix_, temp_slot_p *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_temp_slot_p_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_temp_slot_p_base, vec) + alloc_ * sizeof(temp_slot_p); } static __inline__ void VEC_temp_slot_p_base_embedded_init (VEC_temp_slot_p_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_temp_slot_p_base_space (VEC_temp_slot_p_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ temp_slot_p *VEC_temp_slot_p_base_quick_push (VEC_temp_slot_p_base *vec_, temp_slot_p obj_ ) { temp_slot_p *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ temp_slot_p VEC_temp_slot_p_base_pop (VEC_temp_slot_p_base *vec_ ) { temp_slot_p obj_; (void)(vec_->num); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_temp_slot_p_base_truncate (VEC_temp_slot_p_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ temp_slot_p VEC_temp_slot_p_base_replace (VEC_temp_slot_p_base *vec_, unsigned ix_, temp_slot_p obj_ ) { temp_slot_p old_obj_; (void)(ix_ < vec_->num); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ temp_slot_p *VEC_temp_slot_p_base_quick_insert (VEC_temp_slot_p_base *vec_, unsigned ix_, temp_slot_p obj_ ) { temp_slot_p *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (temp_slot_p)); *slot_ = obj_; return slot_; } static __inline__ temp_slot_p VEC_temp_slot_p_base_ordered_remove (VEC_temp_slot_p_base *vec_, unsigned ix_ ) { temp_slot_p *slot_; temp_slot_p obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (temp_slot_p)); return obj_; } static __inline__ temp_slot_p VEC_temp_slot_p_base_unordered_remove (VEC_temp_slot_p_base *vec_, unsigned ix_ ) { temp_slot_p *slot_; temp_slot_p obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_temp_slot_p_base_block_remove (VEC_temp_slot_p_base *vec_, unsigned ix_, unsigned len_ ) { temp_slot_p *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (temp_slot_p)); } static __inline__ temp_slot_p *VEC_temp_slot_p_base_address (VEC_temp_slot_p_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_temp_slot_p_base_lower_bound (VEC_temp_slot_p_base *vec_, const temp_slot_p obj_, unsigned char (*lessthan_)(const temp_slot_p, const temp_slot_p) ) { unsigned int len_ = VEC_temp_slot_p_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { temp_slot_p middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_temp_slot_p_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_temp_slot_p_gc { VEC_temp_slot_p_base base; } VEC_temp_slot_p_gc; static __inline__ VEC_temp_slot_p_gc *VEC_temp_slot_p_gc_alloc (int alloc_ ) { return (VEC_temp_slot_p_gc *) vec_gc_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_temp_slot_p_gc_free (VEC_temp_slot_p_gc **vec_) { if (*vec_) ggc_free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_temp_slot_p_gc *VEC_temp_slot_p_gc_copy (VEC_temp_slot_p_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_temp_slot_p_gc *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_temp_slot_p_gc *)(vec_gc_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (temp_slot_p) * len_); } return new_vec_; } static __inline__ int VEC_temp_slot_p_gc_reserve (VEC_temp_slot_p_gc **vec_, int alloc_ ) { int extend = !VEC_temp_slot_p_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_temp_slot_p_gc *) vec_gc_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_temp_slot_p_gc_reserve_exact (VEC_temp_slot_p_gc **vec_, int alloc_ ) { int extend = !VEC_temp_slot_p_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_temp_slot_p_gc *) vec_gc_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_temp_slot_p_gc_safe_grow (VEC_temp_slot_p_gc **vec_, int size_ ) { (void)(size_ >= 0 && VEC_temp_slot_p_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_temp_slot_p_gc_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ temp_slot_p *VEC_temp_slot_p_gc_safe_push (VEC_temp_slot_p_gc **vec_, temp_slot_p obj_ ) { VEC_temp_slot_p_gc_reserve (vec_, 1 ); return VEC_temp_slot_p_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ temp_slot_p *VEC_temp_slot_p_gc_safe_insert (VEC_temp_slot_p_gc **vec_, unsigned ix_, temp_slot_p obj_ ) { VEC_temp_slot_p_gc_reserve (vec_, 1 ); return VEC_temp_slot_p_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; + +enum function_frequency { + + + FUNCTION_FREQUENCY_UNLIKELY_EXECUTED, + + FUNCTION_FREQUENCY_NORMAL, + + + FUNCTION_FREQUENCY_HOT +}; + + + + +struct function +{ + struct eh_status *eh; + struct expr_status *expr; + struct emit_status *emit; + struct varasm_status *varasm; + + + struct control_flow_graph *cfg; + + + + + tree decl; + + + struct function *outer; + + + + + int pops_args; + + + + + int args_size; + + + + + int pretend_args_size; + + + + int outgoing_args_size; + + + + rtx arg_offset_rtx; + + + + CUMULATIVE_ARGS args_info; + + + + + + rtx return_rtx; + + + rtx internal_arg_pointer; + + + + struct initial_value_struct *hard_reg_initial_vals; + + + + rtx x_nonlocal_goto_handler_labels; + + + + + rtx x_return_label; + + + + + rtx x_naked_return_label; + + + + rtx x_stack_slot_list; + + + rtx x_stack_check_probe_note; + + + + + + rtx x_arg_pointer_save_area; + + + + + long x_frame_offset; + + + + tree static_chain_decl; + + + + + tree nonlocal_goto_save_area; + + + rtx x_parm_birth_insn; + + + VEC_temp_slot_p_gc *x_used_temp_slots; + + + struct temp_slot *x_avail_temp_slots; + + + + struct var_refs_queue *fixup_var_refs_queue; + + + int x_temp_slot_level; + + + int inl_max_label_num; + + + int funcdef_no; + + + + + + + int max_loop_depth; + + + + + struct machine_function * machine; + + + unsigned int stack_alignment_needed; + + + unsigned int preferred_stack_boundary; + + + struct language_function * language; + + + htab_t used_types_hash; + + + + + + rtx epilogue_delay_list; + + + + int max_jumptable_ents; + + + int last_label_uid; + + + location_t function_end_locus; + + + VEC_tree_gc *ib_boundaries_block; + + + tree unexpanded_var_list; + + + + + + const char *hot_section_label; + const char *cold_section_label; + const char *hot_section_end_label; + const char *cold_section_end_label; + + + + + const char *unlikely_text_section_name; + + + + tree stack_protect_guard; + + + + + + unsigned int returns_struct : 1; + + + + unsigned int returns_pcc_struct : 1; + + + unsigned int returns_pointer : 1; + + + unsigned int calls_setjmp : 1; + + + + unsigned int calls_alloca : 1; + + + + unsigned int accesses_prior_frames : 1; + + + unsigned int calls_eh_return : 1; + + + + unsigned int has_nonlocal_label : 1; + + + + unsigned int has_nonlocal_goto : 1; + + + + + + unsigned int is_thunk : 1; + + + + + + + unsigned int all_throwers_are_sibcalls : 1; + + + unsigned int profile : 1; + + + + unsigned int limit_stack : 1; + + + unsigned int stdarg : 1; +# 431 "../../GCC/gcc/function.h" + unsigned int x_dont_save_pending_sizes_p : 1; + + + unsigned int uses_const_pool : 1; + + + unsigned int uses_pic_offset_table : 1; + + + unsigned int uses_eh_lsda : 1; + + + unsigned int arg_pointer_save_area_init : 1; + + unsigned int after_inlining : 1; + + + unsigned int recursive_call_emit : 1; + + + unsigned int tail_call_emit : 1; + + + + __extension__ enum function_frequency function_frequency : 2; + + + + + unsigned int va_list_gpr_size : 8; + + + + unsigned int va_list_fpr_size : 8; +}; + + + + + + + +extern struct function *cfun; + + +extern struct function *outer_function_chain; + + +extern int virtuals_instantiated; + + +extern int trampolines_created; +# 525 "../../GCC/gcc/function.h" +struct function *find_function_data (tree); + + + +extern void reorder_blocks (void); + + +extern void number_blocks (tree); + +extern void clear_block_marks (tree); +extern tree blocks_nreverse (tree); +extern void reset_block_changes (void); +extern void record_block_change (tree); +extern void finalize_block_changes (void); +extern void check_block_change (rtx, tree *); +extern void free_block_changes (void); + + + + +extern long get_frame_size (void); + + + + +extern unsigned char frame_offset_overflow (long, tree); + + + +extern struct machine_function * (*init_machine_status) (void); + + +extern void free_after_parsing (struct function *); +extern void free_after_compilation (struct function *); + +extern void init_varasm_status (struct function *); + + +extern void diddle_return_value (void (*)(rtx, void*), void*); +extern void clobber_return_register (void); + + +extern rtx get_arg_pointer_save_area (struct function *); + + +extern const char *current_function_name (void); + +extern void do_warn_unused_parameter (tree); + +extern unsigned char pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, + tree, unsigned char); +extern unsigned char reference_callee_copied (CUMULATIVE_ARGS *, enum machine_mode, + tree, unsigned char); + +extern void used_types_insert (tree); +# 32 "../../GCC/gcc/basic-block.h" 2 + + +typedef bitmap_head regset_head; + + +typedef bitmap regset; +# 83 "../../GCC/gcc/basic-block.h" +extern void reg_set_to_hard_reg_set (HARD_REG_SET *, bitmap); + + + + + + +typedef bitmap_iterator reg_set_iterator; +# 114 "../../GCC/gcc/basic-block.h" +typedef long long gcov_type; + + +struct edge_def +{ + + struct basic_block_def *src; + struct basic_block_def *dest; + + + union edge_def_insns { + rtx r; + tree t; + } insns; + + + void * aux; + + + source_locus goto_locus; + + int flags; + int probability; + gcov_type count; + + + + + unsigned int dest_idx; +}; + +typedef struct edge_def *edge; +static __inline__ void VEC_edge_must_be_pointer_type (void) { (void)((edge)1 == (void *)1); } typedef struct VEC_edge_base { unsigned num; unsigned alloc; edge vec[1]; } VEC_edge_base; typedef struct VEC_edge_none { VEC_edge_base base; } VEC_edge_none; static __inline__ unsigned VEC_edge_base_length (const VEC_edge_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ edge VEC_edge_base_last (const VEC_edge_base *vec_ ) { (void)(vec_ && vec_->num); return vec_->vec[vec_->num - 1]; } static __inline__ edge VEC_edge_base_index (const VEC_edge_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return vec_->vec[ix_]; } static __inline__ int VEC_edge_base_iterate (const VEC_edge_base *vec_, unsigned ix_, edge *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_edge_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_edge_base, vec) + alloc_ * sizeof(edge); } static __inline__ void VEC_edge_base_embedded_init (VEC_edge_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_edge_base_space (VEC_edge_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ edge *VEC_edge_base_quick_push (VEC_edge_base *vec_, edge obj_ ) { edge *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ edge VEC_edge_base_pop (VEC_edge_base *vec_ ) { edge obj_; (void)(vec_->num); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_edge_base_truncate (VEC_edge_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ edge VEC_edge_base_replace (VEC_edge_base *vec_, unsigned ix_, edge obj_ ) { edge old_obj_; (void)(ix_ < vec_->num); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ edge *VEC_edge_base_quick_insert (VEC_edge_base *vec_, unsigned ix_, edge obj_ ) { edge *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (edge)); *slot_ = obj_; return slot_; } static __inline__ edge VEC_edge_base_ordered_remove (VEC_edge_base *vec_, unsigned ix_ ) { edge *slot_; edge obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (edge)); return obj_; } static __inline__ edge VEC_edge_base_unordered_remove (VEC_edge_base *vec_, unsigned ix_ ) { edge *slot_; edge obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_edge_base_block_remove (VEC_edge_base *vec_, unsigned ix_, unsigned len_ ) { edge *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (edge)); } static __inline__ edge *VEC_edge_base_address (VEC_edge_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_edge_base_lower_bound (VEC_edge_base *vec_, const edge obj_, unsigned char (*lessthan_)(const edge, const edge) ) { unsigned int len_ = VEC_edge_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { edge middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_edge_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_edge_gc { VEC_edge_base base; } VEC_edge_gc; static __inline__ VEC_edge_gc *VEC_edge_gc_alloc (int alloc_ ) { return (VEC_edge_gc *) vec_gc_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_edge_gc_free (VEC_edge_gc **vec_) { if (*vec_) ggc_free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_edge_gc *VEC_edge_gc_copy (VEC_edge_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_edge_gc *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_edge_gc *)(vec_gc_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (edge) * len_); } return new_vec_; } static __inline__ int VEC_edge_gc_reserve (VEC_edge_gc **vec_, int alloc_ ) { int extend = !VEC_edge_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_edge_gc *) vec_gc_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_edge_gc_reserve_exact (VEC_edge_gc **vec_, int alloc_ ) { int extend = !VEC_edge_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_edge_gc *) vec_gc_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_edge_gc_safe_grow (VEC_edge_gc **vec_, int size_ ) { (void)(size_ >= 0 && VEC_edge_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_edge_gc_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ edge *VEC_edge_gc_safe_push (VEC_edge_gc **vec_, edge obj_ ) { VEC_edge_gc_reserve (vec_, 1 ); return VEC_edge_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ edge *VEC_edge_gc_safe_insert (VEC_edge_gc **vec_, unsigned ix_, edge obj_ ) { VEC_edge_gc_reserve (vec_, 1 ); return VEC_edge_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; +# 177 "../../GCC/gcc/basic-block.h" +extern const struct gcov_ctr_summary *profile_info; + + +struct loop; +struct loops; + + +struct edge_prediction; +struct rtl_bb_info; +# 213 "../../GCC/gcc/basic-block.h" +struct basic_block_def +{ + + tree stmt_list; + + + VEC_edge_gc *preds; + VEC_edge_gc *succs; + + + void * aux; + + + struct loop * loop_father; + + + struct et_node * dom[2]; + + + struct basic_block_def *prev_bb; + struct basic_block_def *next_bb; + + union basic_block_il_dependent { + struct rtl_bb_info * rtl; + } il; + + + tree phi_nodes; + + + struct edge_prediction *predictions; + + + gcov_type count; + + + int index; + + + int loop_depth; + + + int frequency; + + + int flags; +}; + +struct rtl_bb_info +{ + + rtx head_; + rtx end_; + + + bitmap global_live_at_start; + + + bitmap global_live_at_end; + + + + rtx header; + rtx footer; + + + int visited; +}; + +typedef struct basic_block_def *basic_block; + +static __inline__ void VEC_basic_block_must_be_pointer_type (void) { (void)((basic_block)1 == (void *)1); } typedef struct VEC_basic_block_base { unsigned num; unsigned alloc; basic_block vec[1]; } VEC_basic_block_base; typedef struct VEC_basic_block_none { VEC_basic_block_base base; } VEC_basic_block_none; static __inline__ unsigned VEC_basic_block_base_length (const VEC_basic_block_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ basic_block VEC_basic_block_base_last (const VEC_basic_block_base *vec_ ) { (void)(vec_ && vec_->num); return vec_->vec[vec_->num - 1]; } static __inline__ basic_block VEC_basic_block_base_index (const VEC_basic_block_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return vec_->vec[ix_]; } static __inline__ int VEC_basic_block_base_iterate (const VEC_basic_block_base *vec_, unsigned ix_, basic_block *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_basic_block_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_basic_block_base, vec) + alloc_ * sizeof(basic_block); } static __inline__ void VEC_basic_block_base_embedded_init (VEC_basic_block_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_basic_block_base_space (VEC_basic_block_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ basic_block *VEC_basic_block_base_quick_push (VEC_basic_block_base *vec_, basic_block obj_ ) { basic_block *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ basic_block VEC_basic_block_base_pop (VEC_basic_block_base *vec_ ) { basic_block obj_; (void)(vec_->num); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_basic_block_base_truncate (VEC_basic_block_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ basic_block VEC_basic_block_base_replace (VEC_basic_block_base *vec_, unsigned ix_, basic_block obj_ ) { basic_block old_obj_; (void)(ix_ < vec_->num); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ basic_block *VEC_basic_block_base_quick_insert (VEC_basic_block_base *vec_, unsigned ix_, basic_block obj_ ) { basic_block *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (basic_block)); *slot_ = obj_; return slot_; } static __inline__ basic_block VEC_basic_block_base_ordered_remove (VEC_basic_block_base *vec_, unsigned ix_ ) { basic_block *slot_; basic_block obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (basic_block)); return obj_; } static __inline__ basic_block VEC_basic_block_base_unordered_remove (VEC_basic_block_base *vec_, unsigned ix_ ) { basic_block *slot_; basic_block obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_basic_block_base_block_remove (VEC_basic_block_base *vec_, unsigned ix_, unsigned len_ ) { basic_block *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (basic_block)); } static __inline__ basic_block *VEC_basic_block_base_address (VEC_basic_block_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_basic_block_base_lower_bound (VEC_basic_block_base *vec_, const basic_block obj_, unsigned char (*lessthan_)(const basic_block, const basic_block) ) { unsigned int len_ = VEC_basic_block_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { basic_block middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_basic_block_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_basic_block_gc { VEC_basic_block_base base; } VEC_basic_block_gc; static __inline__ VEC_basic_block_gc *VEC_basic_block_gc_alloc (int alloc_ ) { return (VEC_basic_block_gc *) vec_gc_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_basic_block_gc_free (VEC_basic_block_gc **vec_) { if (*vec_) ggc_free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_basic_block_gc *VEC_basic_block_gc_copy (VEC_basic_block_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_basic_block_gc *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_basic_block_gc *)(vec_gc_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (basic_block) * len_); } return new_vec_; } static __inline__ int VEC_basic_block_gc_reserve (VEC_basic_block_gc **vec_, int alloc_ ) { int extend = !VEC_basic_block_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_basic_block_gc *) vec_gc_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_basic_block_gc_reserve_exact (VEC_basic_block_gc **vec_, int alloc_ ) { int extend = !VEC_basic_block_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_basic_block_gc *) vec_gc_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_basic_block_gc_safe_grow (VEC_basic_block_gc **vec_, int size_ ) { (void)(size_ >= 0 && VEC_basic_block_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_basic_block_gc_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ basic_block *VEC_basic_block_gc_safe_push (VEC_basic_block_gc **vec_, basic_block obj_ ) { VEC_basic_block_gc_reserve (vec_, 1 ); return VEC_basic_block_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ basic_block *VEC_basic_block_gc_safe_insert (VEC_basic_block_gc **vec_, unsigned ix_, basic_block obj_ ) { VEC_basic_block_gc_reserve (vec_, 1 ); return VEC_basic_block_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; +typedef struct VEC_basic_block_heap { VEC_basic_block_base base; } VEC_basic_block_heap; static __inline__ VEC_basic_block_heap *VEC_basic_block_heap_alloc (int alloc_ ) { return (VEC_basic_block_heap *) vec_heap_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_basic_block_heap_free (VEC_basic_block_heap **vec_) { if (*vec_) free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_basic_block_heap *VEC_basic_block_heap_copy (VEC_basic_block_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_basic_block_heap *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_basic_block_heap *)(vec_heap_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (basic_block) * len_); } return new_vec_; } static __inline__ int VEC_basic_block_heap_reserve (VEC_basic_block_heap **vec_, int alloc_ ) { int extend = !VEC_basic_block_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_basic_block_heap *) vec_heap_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_basic_block_heap_reserve_exact (VEC_basic_block_heap **vec_, int alloc_ ) { int extend = !VEC_basic_block_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_basic_block_heap *) vec_heap_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_basic_block_heap_safe_grow (VEC_basic_block_heap **vec_, int size_ ) { (void)(size_ >= 0 && VEC_basic_block_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_basic_block_heap_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ basic_block *VEC_basic_block_heap_safe_push (VEC_basic_block_heap **vec_, basic_block obj_ ) { VEC_basic_block_heap_reserve (vec_, 1 ); return VEC_basic_block_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ basic_block *VEC_basic_block_heap_safe_insert (VEC_basic_block_heap **vec_, unsigned ix_, basic_block obj_ ) { VEC_basic_block_heap_reserve (vec_, 1 ); return VEC_basic_block_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; +# 298 "../../GCC/gcc/basic-block.h" +enum bb_flags +{ + + + BB_DIRTY = 1, + + + BB_NEW = 2, + + + + BB_REACHABLE = 4, + + + BB_IRREDUCIBLE_LOOP = 8, + + + BB_SUPERBLOCK = 16, + + + + BB_DISABLE_SCHEDULE = 32, + + + BB_HOT_PARTITION = 64, + + + BB_COLD_PARTITION = 128, + + + BB_DUPLICATED = 256, + + + BB_RTL = 1024, + + + + BB_FORWARDER_BLOCK = 2048, + + + + BB_NONTHREADABLE_BLOCK = 4096 +}; +# 361 "../../GCC/gcc/basic-block.h" +struct control_flow_graph +{ + + + basic_block x_entry_block_ptr; + basic_block x_exit_block_ptr; + + + VEC_basic_block_gc *x_basic_block_info; + + + int x_n_basic_blocks; + + + int x_n_edges; + + + int x_last_basic_block; + + + + VEC_basic_block_gc *x_label_to_block_map; + + enum profile_status { + PROFILE_ABSENT, + PROFILE_GUESSED, + PROFILE_READ + } x_profile_status; +}; +# 450 "../../GCC/gcc/basic-block.h" +extern bitmap_obstack reg_obstack; +# 481 "../../GCC/gcc/basic-block.h" +extern void compute_bb_for_insn (void); +extern unsigned int free_bb_for_insn (void); +extern void update_bb_for_insn (basic_block); + +extern void free_basic_block_vars (void); + +extern void insert_insn_on_edge (rtx, edge); + +extern void commit_edge_insertions (void); +extern void commit_edge_insertions_watch_calls (void); + +extern void remove_fake_edges (void); +extern void remove_fake_exit_edges (void); +extern void add_noreturn_fake_exit_edges (void); +extern void connect_infinite_loops_to_exit (void); +extern edge unchecked_make_edge (basic_block, basic_block, int); +extern edge cached_make_edge (sbitmap, basic_block, basic_block, int); +extern edge make_edge (basic_block, basic_block, int); +extern edge make_single_succ_edge (basic_block, basic_block, int); +extern void remove_edge (edge); +extern void redirect_edge_succ (edge, basic_block); +extern edge redirect_edge_succ_nodup (edge, basic_block); +extern void redirect_edge_pred (edge, basic_block); +extern basic_block create_basic_block_structure (rtx, rtx, rtx, basic_block); +extern void clear_bb_flags (void); +extern int post_order_compute (int *, unsigned char); +extern int pre_and_rev_post_order_compute (int *, int *, unsigned char); +extern int dfs_enumerate_from (basic_block, int, + unsigned char (*)(basic_block, void *), + basic_block *, int, void *); +extern void compute_dominance_frontiers (bitmap *); +extern void dump_bb_info (basic_block, unsigned char, unsigned char, int, const char *, FILE *); +extern void dump_edge_info (FILE *, edge, int); +extern void brief_dump_cfg (FILE *); +extern void clear_edges (void); +extern rtx first_insn_after_basic_block_note (basic_block); +extern void scale_bbs_frequencies_int (basic_block *, int, int, int); +extern void scale_bbs_frequencies_gcov_type (basic_block *, int, gcov_type, + gcov_type); + + + + + + +typedef struct ce_if_block +{ + basic_block test_bb; + basic_block then_bb; + basic_block else_bb; + basic_block join_bb; + basic_block last_test_bb; + int num_multiple_test_blocks; + int num_and_and_blocks; + int num_or_or_blocks; + int num_multiple_test_insns; + int and_and_p; + int num_then_insns; + int num_else_insns; + int pass; + + + + + +} ce_if_block_t; + + +struct edge_list +{ + int num_blocks; + int num_edges; + edge *index_to_edge; +}; +# 602 "../../GCC/gcc/basic-block.h" +static __inline__ unsigned char +single_succ_p (basic_block bb) +{ + return (VEC_edge_base_length((((bb->succs)) ? &((bb->succs))->base : 0))) == 1; +} + + + +static __inline__ unsigned char +single_pred_p (basic_block bb) +{ + return (VEC_edge_base_length((((bb->preds)) ? &((bb->preds))->base : 0))) == 1; +} + + + + +static __inline__ edge +single_succ_edge (basic_block bb) +{ + ((void)(!(single_succ_p (bb)) ? fancy_abort ("../../GCC/gcc/basic-block.h", 622, __FUNCTION__), 0 : 0)); + return (VEC_edge_base_index((((bb)->succs) ? &((bb)->succs)->base : 0),(0) )); +} + + + + +static __inline__ edge +single_pred_edge (basic_block bb) +{ + ((void)(!(single_pred_p (bb)) ? fancy_abort ("../../GCC/gcc/basic-block.h", 632, __FUNCTION__), 0 : 0)); + return (VEC_edge_base_index((((bb)->preds) ? &((bb)->preds)->base : 0),(0) )); +} + + + + +static __inline__ basic_block +single_succ (basic_block bb) +{ + return single_succ_edge (bb)->dest; +} + + + + +static __inline__ basic_block +single_pred (basic_block bb) +{ + return single_pred_edge (bb)->src; +} + + + +typedef struct { + unsigned index; + VEC_edge_gc **container; +} edge_iterator; + +static __inline__ VEC_edge_gc * +ei_container (edge_iterator i) +{ + ((void)(!(i.container) ? fancy_abort ("../../GCC/gcc/basic-block.h", 664, __FUNCTION__), 0 : 0)); + return *i.container; +} + + + + + +static __inline__ edge_iterator +ei_start_1 (VEC_edge_gc **ev) +{ + edge_iterator i; + + i.index = 0; + i.container = ev; + + return i; +} + + + +static __inline__ edge_iterator +ei_last_1 (VEC_edge_gc **ev) +{ + edge_iterator i; + + i.index = (VEC_edge_base_length((((*ev)) ? &((*ev))->base : 0))) - 1; + i.container = ev; + + return i; +} + + +static __inline__ unsigned char +ei_end_p (edge_iterator i) +{ + return (i.index == (VEC_edge_base_length((((ei_container (i))) ? &((ei_container (i)))->base : 0)))); +} + + + +static __inline__ unsigned char +ei_one_before_end_p (edge_iterator i) +{ + return (i.index + 1 == (VEC_edge_base_length((((ei_container (i))) ? &((ei_container (i)))->base : 0)))); +} + + +static __inline__ void +ei_next (edge_iterator *i) +{ + ((void)(!(i->index < (VEC_edge_base_length((((ei_container (*i))) ? &((ei_container (*i)))->base : 0)))) ? fancy_abort ("../../GCC/gcc/basic-block.h", 715, __FUNCTION__), 0 : 0)); + i->index++; +} + + +static __inline__ void +ei_prev (edge_iterator *i) +{ + ((void)(!(i->index > 0) ? fancy_abort ("../../GCC/gcc/basic-block.h", 723, __FUNCTION__), 0 : 0)); + i->index--; +} + + +static __inline__ edge +ei_edge (edge_iterator i) +{ + return (VEC_edge_base_index((((ei_container (i))) ? &((ei_container (i)))->base : 0),(i.index) )); +} + + + + +static __inline__ edge +ei_safe_edge (edge_iterator i) +{ + return !ei_end_p (i) ? ei_edge (i) : ((void *)0); +} + + + + + +static __inline__ unsigned char +ei_cond (edge_iterator ei, edge *p) +{ + if (!ei_end_p (ei)) + { + *p = ei_edge (ei); + return 1; + } + else + { + *p = ((void *)0); + return 0; + } +} +# 782 "../../GCC/gcc/basic-block.h" +struct edge_list * create_edge_list (void); +void free_edge_list (struct edge_list *); +void print_edge_list (FILE *, struct edge_list *); +void verify_edge_list (FILE *, struct edge_list *); +int find_edge_index (struct edge_list *, basic_block, basic_block); +edge find_edge (basic_block, basic_block); + + +enum update_life_extent +{ + UPDATE_LIFE_LOCAL = 0, + UPDATE_LIFE_GLOBAL = 1, + UPDATE_LIFE_GLOBAL_RM_NOTES = 2 +}; +# 848 "../../GCC/gcc/basic-block.h" +extern void life_analysis (int); +extern int update_life_info (sbitmap, enum update_life_extent, int); +extern int update_life_info_in_dirty_blocks (enum update_life_extent, int); +extern int count_or_remove_death_notes (sbitmap, int); +extern int propagate_block (basic_block, regset, regset, regset, int); + +struct propagate_block_info; +extern rtx propagate_one_insn (struct propagate_block_info *, rtx); +extern struct propagate_block_info *init_propagate_block_info + (basic_block, regset, regset, regset, int); +extern void free_propagate_block_info (struct propagate_block_info *); + + +extern struct edge_list *pre_edge_lcm (int, sbitmap *, sbitmap *, + sbitmap *, sbitmap *, sbitmap **, + sbitmap **); +extern struct edge_list *pre_edge_rev_lcm (int, sbitmap *, + sbitmap *, sbitmap *, + sbitmap *, sbitmap **, + sbitmap **); +extern void compute_available (sbitmap *, sbitmap *, sbitmap *, sbitmap *); + + +extern void expected_value_to_br_prob (void); +extern unsigned char maybe_hot_bb_p (basic_block); +extern unsigned char probably_cold_bb_p (basic_block); +extern unsigned char probably_never_executed_bb_p (basic_block); +extern unsigned char tree_predicted_by_p (basic_block, enum br_predictor); +extern unsigned char rtl_predicted_by_p (basic_block, enum br_predictor); +extern void tree_predict_edge (edge, enum br_predictor, int); +extern void rtl_predict_edge (edge, enum br_predictor, int); +extern void predict_edge_def (edge, enum br_predictor, enum prediction); +extern void guess_outgoing_edge_probabilities (basic_block); +extern void remove_predictions_associated_with_edge (edge); +extern unsigned char edge_probability_reliable_p (edge); +extern unsigned char br_prob_note_reliable_p (rtx); + + +extern void init_flow (void); +extern void debug_bb (basic_block); +extern basic_block debug_bb_n (int); +extern void dump_regset (regset, FILE *); +extern void debug_regset (regset); +extern void allocate_reg_life_data (void); +extern void expunge_block (basic_block); +extern void link_block (basic_block, basic_block); +extern void unlink_block (basic_block); +extern void compact_blocks (void); +extern basic_block alloc_block (void); +extern void find_unreachable_blocks (void); +extern int delete_noop_moves (void); +extern basic_block force_nonfallthru (edge); +extern rtx block_label (basic_block); +extern unsigned char forwarder_block_p (basic_block); +extern unsigned char purge_all_dead_edges (void); +extern unsigned char purge_dead_edges (basic_block); +extern void find_many_sub_basic_blocks (sbitmap); +extern void rtl_make_eh_edge (sbitmap, basic_block, rtx); +extern unsigned char can_fallthru (basic_block, basic_block); +extern unsigned char could_fall_through (basic_block, basic_block); +extern void flow_nodes_print (const char *, const sbitmap, FILE *); +extern void flow_edge_list_print (const char *, const edge *, int, FILE *); +extern void alloc_aux_for_block (basic_block, int); +extern void alloc_aux_for_blocks (int); +extern void clear_aux_for_blocks (void); +extern void free_aux_for_blocks (void); +extern void alloc_aux_for_edge (edge, int); +extern void alloc_aux_for_edges (int); +extern void clear_aux_for_edges (void); +extern void free_aux_for_edges (void); +extern void find_basic_blocks (rtx); +extern unsigned char cleanup_cfg (int); +extern unsigned char delete_unreachable_blocks (void); +extern unsigned char merge_seq_blocks (void); + +typedef struct conflict_graph_def *conflict_graph; + + + + +typedef int (*conflict_graph_enum_fn) (int, int, void *); + + + + +extern conflict_graph conflict_graph_new + (int); +extern void conflict_graph_delete (conflict_graph); +extern int conflict_graph_add (conflict_graph, int, int); +extern int conflict_graph_conflict_p (conflict_graph, int, int); +extern void conflict_graph_enum (conflict_graph, int, conflict_graph_enum_fn, + void *); +extern void conflict_graph_merge_regs (conflict_graph, int, int); +extern void conflict_graph_print (conflict_graph, FILE*); +extern unsigned char mark_dfs_back_edges (void); +extern void set_edge_can_fallthru_flag (void); +extern void update_br_prob_note (basic_block); +extern void fixup_abnormal_edges (void); +extern unsigned char inside_basic_block_p (rtx); +extern unsigned char control_flow_insn_p (rtx); +extern rtx get_last_bb_insn (basic_block); + + +extern void reorder_basic_blocks (unsigned int); + + + +enum cdi_direction +{ + CDI_DOMINATORS, + CDI_POST_DOMINATORS +}; + +enum dom_state +{ + DOM_NONE, + DOM_NO_FAST_QUERY, + DOM_OK +}; + +extern enum dom_state dom_computed[2]; + +extern unsigned char dom_info_available_p (enum cdi_direction); +extern void calculate_dominance_info (enum cdi_direction); +extern void free_dominance_info (enum cdi_direction); +extern basic_block nearest_common_dominator (enum cdi_direction, + basic_block, basic_block); +extern basic_block nearest_common_dominator_for_set (enum cdi_direction, + bitmap); +extern void set_immediate_dominator (enum cdi_direction, basic_block, + basic_block); +extern basic_block get_immediate_dominator (enum cdi_direction, basic_block); +extern unsigned char dominated_by_p (enum cdi_direction, basic_block, basic_block); +extern int get_dominated_by (enum cdi_direction, basic_block, basic_block **); +extern unsigned get_dominated_by_region (enum cdi_direction, basic_block *, + unsigned, basic_block *); +extern void add_to_dominance_info (enum cdi_direction, basic_block); +extern void delete_from_dominance_info (enum cdi_direction, basic_block); +basic_block recount_dominator (enum cdi_direction, basic_block); +extern void redirect_immediate_dominators (enum cdi_direction, basic_block, + basic_block); +extern void iterate_fix_dominators (enum cdi_direction, basic_block *, int); +extern void verify_dominators (enum cdi_direction); +extern basic_block first_dom_son (enum cdi_direction, basic_block); +extern basic_block next_dom_son (enum cdi_direction, basic_block); +unsigned bb_dom_dfs_in (enum cdi_direction, basic_block); +unsigned bb_dom_dfs_out (enum cdi_direction, basic_block); + +extern edge try_redirect_by_replacing_jump (edge, basic_block, unsigned char); +extern void break_superblocks (void); +extern void check_bb_profile (basic_block, FILE *); +extern void update_bb_profile_for_threading (basic_block, int, gcov_type, edge); +extern void init_rtl_bb_info (basic_block); + +extern void initialize_original_copy_tables (void); +extern void free_original_copy_tables (void); +extern void set_bb_original (basic_block, basic_block); +extern basic_block get_bb_original (basic_block); +extern void set_bb_copy (basic_block, basic_block); +extern basic_block get_bb_copy (basic_block); + +extern rtx insert_insn_end_bb_new (rtx, basic_block); + +# 1 "../../GCC/gcc/cfghooks.h" 1 +# 24 "../../GCC/gcc/cfghooks.h" +struct cfg_hooks +{ + + const char *name; + + + int (*verify_flow_info) (void); + void (*dump_bb) (basic_block, FILE *, int); + + + + + basic_block (*create_basic_block) (void *head, void *end, basic_block after); + + + + + + edge (*redirect_edge_and_branch) (edge e, basic_block b); + + + + + basic_block (*redirect_edge_and_branch_force) (edge, basic_block); + + + void (*delete_basic_block) (basic_block); + + + + basic_block (*split_block) (basic_block b, void * i); + + + unsigned char (*move_block_after) (basic_block b, basic_block a); + + + unsigned char (*can_merge_blocks_p) (basic_block a, basic_block b); + + + void (*merge_blocks) (basic_block a, basic_block b); + + + void (*predict_edge) (edge e, enum br_predictor predictor, int probability); + + + + unsigned char (*predicted_by_p) (basic_block bb, enum br_predictor predictor); + + + unsigned char (*can_duplicate_block_p) (basic_block a); + + + basic_block (*duplicate_block) (basic_block a); + + + + basic_block (*split_edge) (edge); + void (*make_forwarder_block) (edge); + + + void (*tidy_fallthru_edge) (edge); + + + + unsigned char (*block_ends_with_call_p) (basic_block); + + + + unsigned char (*block_ends_with_condjump_p) (basic_block); +# 101 "../../GCC/gcc/cfghooks.h" + int (*flow_call_edges_add) (sbitmap); + + + + void (*execute_on_growing_pred) (edge); + + + + void (*execute_on_shrinking_pred) (edge); + + + + unsigned char (*cfg_hook_duplicate_loop_to_header_edge) (struct loop *loop, edge e, + struct loops *loops, + unsigned int ndupl, + sbitmap wont_exit, + edge orig, edge *to_remove, + unsigned int *n_to_remove, + int flags); + + + + void (*lv_add_condition_to_bb) (basic_block, basic_block, basic_block, + void *); + + void (*lv_adjust_loop_header_phi) (basic_block, basic_block, + basic_block, edge); + + + + void (*extract_cond_bb_edges) (basic_block, edge *, edge *); + + + + + void (*flush_pending_stmts) (edge); +}; + +extern void verify_flow_info (void); +extern void dump_bb (basic_block, FILE *, int); +extern edge redirect_edge_and_branch (edge, basic_block); +extern basic_block redirect_edge_and_branch_force (edge, basic_block); +extern edge split_block (basic_block, void *); +extern edge split_block_after_labels (basic_block); +extern unsigned char move_block_after (basic_block, basic_block); +extern void delete_basic_block (basic_block); +extern basic_block split_edge (edge); +extern basic_block create_basic_block (void *, void *, basic_block); +extern basic_block create_empty_bb (basic_block); +extern unsigned char can_merge_blocks_p (basic_block, basic_block); +extern void merge_blocks (basic_block, basic_block); +extern edge make_forwarder_block (basic_block, unsigned char (*)(edge), + void (*) (basic_block)); +extern void tidy_fallthru_edge (edge); +extern void tidy_fallthru_edges (void); +extern void predict_edge (edge e, enum br_predictor predictor, int probability); +extern unsigned char predicted_by_p (basic_block bb, enum br_predictor predictor); +extern unsigned char can_duplicate_block_p (basic_block); +extern basic_block duplicate_block (basic_block, edge, basic_block); +extern unsigned char block_ends_with_call_p (basic_block bb); +extern unsigned char block_ends_with_condjump_p (basic_block bb); +extern int flow_call_edges_add (sbitmap); +extern void execute_on_growing_pred (edge); +extern void execute_on_shrinking_pred (edge); +extern unsigned char cfg_hook_duplicate_loop_to_header_edge (struct loop *loop, edge, + struct loops *loops, + unsigned int ndupl, + sbitmap wont_exit, + edge orig, edge *to_remove, + unsigned int *n_to_remove, + int flags); + +extern void lv_flush_pending_stmts (edge); +extern void extract_cond_bb_edges (basic_block, edge *, edge*); +extern void lv_adjust_loop_header_phi (basic_block, basic_block, basic_block, + edge); +extern void lv_add_condition_to_bb (basic_block, basic_block, basic_block, + void *); + + +extern struct cfg_hooks tree_cfg_hooks; +extern struct cfg_hooks rtl_cfg_hooks; +extern struct cfg_hooks cfg_layout_rtl_cfg_hooks; + + +extern int ir_type (void); +extern void rtl_register_cfg_hooks (void); +extern void cfg_layout_rtl_register_cfg_hooks (void); +extern void tree_register_cfg_hooks (void); +# 1012 "../../GCC/gcc/basic-block.h" 2 +# 1031 "../../GCC/gcc/basic-block.h" +struct struct_equiv_checkpoint +{ + int ninsns; + int local_count; + int input_count; + + + + + + + + rtx x_start, y_start; + + + + + unsigned char input_valid; +# 1057 "../../GCC/gcc/basic-block.h" + int version; +}; + + + + + +struct equiv_info +{ + + + basic_block x_block, y_block; + + + + + int mode; + + + + + + int input_cost; +# 1090 "../../GCC/gcc/basic-block.h" + rtx x_input, y_input; + + + + rtx input_reg; + + + + + + regset common_live; + + + + regset x_local_live, y_local_live; + + + + + + + bitmap equiv_used; + + + struct struct_equiv_checkpoint cur; + + + + struct struct_equiv_checkpoint best_match; + + + + + + unsigned char need_rerun; + + + + + + unsigned char check_input_conflict; + + + + unsigned char had_input_conflict; + + + + + + + unsigned char live_update; + + + + + rtx x_local[16], y_local[16]; + + + + + + unsigned char local_rvalue[16]; + + + + + + + int dying_inputs; + + + rtx x_end, y_end; + + + + rtx x_label, y_label; + +}; + +extern unsigned char insns_match_p (rtx, rtx, struct equiv_info *); +extern int struct_equiv_block_eq (int, struct equiv_info *); +extern unsigned char struct_equiv_init (int, struct equiv_info *); +extern unsigned char rtx_equiv_p (rtx *, rtx, int, struct equiv_info *); + + +extern unsigned char condjump_equiv_p (struct equiv_info *, unsigned char); + + +static __inline__ unsigned char bb_has_eh_pred (basic_block bb) +{ + edge e; + edge_iterator ei; + + for ((ei) = ei_start_1 (&((bb->preds))); ei_cond ((ei), &(e)); ei_next (&(ei))) + { + if (e->flags & 8) + return 1; + } + return 0; +} +# 25 "../../GCC/gcc/cgraph.h" 2 + +enum availability +{ + + AVAIL_UNSET, + + AVAIL_NOT_AVAILABLE, + + + + + + AVAIL_OVERWRITABLE, + + + AVAIL_AVAILABLE, + + + + + AVAIL_LOCAL +}; + + + + +struct cgraph_local_info +{ + + int self_insns; + + + + unsigned local : 1; + + + unsigned externally_visible : 1; + + + unsigned finalized : 1; + + + unsigned inlinable : 1; + + + unsigned disregard_inline_limits : 1; + + + + unsigned redefined_extern_inline : 1; + + + + unsigned for_functions_valid : 1; + + + + unsigned vtable_method : 1; +}; + + + + +struct cgraph_global_info +{ + + struct cgraph_node *inlined_to; + + + int insns; + + + int estimated_growth; + + + unsigned char inlined; +}; + + + + +struct cgraph_rtl_info +{ + int preferred_incoming_stack_boundary; +}; + + + + +struct cgraph_node +{ + tree decl; + struct cgraph_edge *callees; + struct cgraph_edge *callers; + struct cgraph_node *next; + struct cgraph_node *previous; + + struct cgraph_node *origin; + + struct cgraph_node *nested; + + struct cgraph_node *next_nested; + + struct cgraph_node *next_needed; + + struct cgraph_node *next_clone; + struct cgraph_node *prev_clone; + + + struct cgraph_node *master_clone; + + + htab_t call_site_hash; + + void * aux; + + struct cgraph_local_info local; + struct cgraph_global_info global; + struct cgraph_rtl_info rtl; + + + gcov_type count; + + int uid; + + int order; + + + + unsigned needed : 1; + + + unsigned reachable : 1; + + unsigned lowered : 1; + + + unsigned analyzed : 1; + + unsigned output : 1; + + unsigned alias : 1; + + + + + tree inline_decl; +}; + +struct cgraph_edge +{ + struct cgraph_node *caller; + struct cgraph_node *callee; + struct cgraph_edge *prev_caller; + struct cgraph_edge *next_caller; + struct cgraph_edge *prev_callee; + struct cgraph_edge *next_callee; + tree call_stmt; + void * aux; + + + const char *inline_failed; + + gcov_type count; + + int loop_nest; +}; + +typedef struct cgraph_edge *cgraph_edge_p; + +static __inline__ void VEC_cgraph_edge_p_must_be_pointer_type (void) { (void)((cgraph_edge_p)1 == (void *)1); } typedef struct VEC_cgraph_edge_p_base { unsigned num; unsigned alloc; cgraph_edge_p vec[1]; } VEC_cgraph_edge_p_base; typedef struct VEC_cgraph_edge_p_none { VEC_cgraph_edge_p_base base; } VEC_cgraph_edge_p_none; static __inline__ unsigned VEC_cgraph_edge_p_base_length (const VEC_cgraph_edge_p_base *vec_) { return vec_ ? vec_->num : 0; } static __inline__ cgraph_edge_p VEC_cgraph_edge_p_base_last (const VEC_cgraph_edge_p_base *vec_ ) { (void)(vec_ && vec_->num); return vec_->vec[vec_->num - 1]; } static __inline__ cgraph_edge_p VEC_cgraph_edge_p_base_index (const VEC_cgraph_edge_p_base *vec_, unsigned ix_ ) { (void)(vec_ && ix_ < vec_->num); return vec_->vec[ix_]; } static __inline__ int VEC_cgraph_edge_p_base_iterate (const VEC_cgraph_edge_p_base *vec_, unsigned ix_, cgraph_edge_p *ptr) { if (vec_ && ix_ < vec_->num) { *ptr = vec_->vec[ix_]; return 1; } else { *ptr = 0; return 0; } } static __inline__ size_t VEC_cgraph_edge_p_base_embedded_size (int alloc_) { return __builtin_offsetof (VEC_cgraph_edge_p_base, vec) + alloc_ * sizeof(cgraph_edge_p); } static __inline__ void VEC_cgraph_edge_p_base_embedded_init (VEC_cgraph_edge_p_base *vec_, int alloc_) { vec_->num = 0; vec_->alloc = alloc_; } static __inline__ int VEC_cgraph_edge_p_base_space (VEC_cgraph_edge_p_base *vec_, int alloc_ ) { (void)(alloc_ >= 0); return vec_ ? vec_->alloc - vec_->num >= (unsigned)alloc_ : !alloc_; } static __inline__ cgraph_edge_p *VEC_cgraph_edge_p_base_quick_push (VEC_cgraph_edge_p_base *vec_, cgraph_edge_p obj_ ) { cgraph_edge_p *slot_; (void)(vec_->num < vec_->alloc); slot_ = &vec_->vec[vec_->num++]; *slot_ = obj_; return slot_; } static __inline__ cgraph_edge_p VEC_cgraph_edge_p_base_pop (VEC_cgraph_edge_p_base *vec_ ) { cgraph_edge_p obj_; (void)(vec_->num); obj_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_cgraph_edge_p_base_truncate (VEC_cgraph_edge_p_base *vec_, unsigned size_ ) { (void)(vec_ ? vec_->num >= size_ : !size_); if (vec_) vec_->num = size_; } static __inline__ cgraph_edge_p VEC_cgraph_edge_p_base_replace (VEC_cgraph_edge_p_base *vec_, unsigned ix_, cgraph_edge_p obj_ ) { cgraph_edge_p old_obj_; (void)(ix_ < vec_->num); old_obj_ = vec_->vec[ix_]; vec_->vec[ix_] = obj_; return old_obj_; } static __inline__ cgraph_edge_p *VEC_cgraph_edge_p_base_quick_insert (VEC_cgraph_edge_p_base *vec_, unsigned ix_, cgraph_edge_p obj_ ) { cgraph_edge_p *slot_; (void)(vec_->num < vec_->alloc); (void)(ix_ <= vec_->num); slot_ = &vec_->vec[ix_]; memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (cgraph_edge_p)); *slot_ = obj_; return slot_; } static __inline__ cgraph_edge_p VEC_cgraph_edge_p_base_ordered_remove (VEC_cgraph_edge_p_base *vec_, unsigned ix_ ) { cgraph_edge_p *slot_; cgraph_edge_p obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; memmove (slot_, slot_ + 1, (--vec_->num - ix_) * sizeof (cgraph_edge_p)); return obj_; } static __inline__ cgraph_edge_p VEC_cgraph_edge_p_base_unordered_remove (VEC_cgraph_edge_p_base *vec_, unsigned ix_ ) { cgraph_edge_p *slot_; cgraph_edge_p obj_; (void)(ix_ < vec_->num); slot_ = &vec_->vec[ix_]; obj_ = *slot_; *slot_ = vec_->vec[--vec_->num]; return obj_; } static __inline__ void VEC_cgraph_edge_p_base_block_remove (VEC_cgraph_edge_p_base *vec_, unsigned ix_, unsigned len_ ) { cgraph_edge_p *slot_; (void)(ix_ + len_ <= vec_->num); slot_ = &vec_->vec[ix_]; vec_->num -= len_; memmove (slot_, slot_ + len_, (vec_->num - ix_) * sizeof (cgraph_edge_p)); } static __inline__ cgraph_edge_p *VEC_cgraph_edge_p_base_address (VEC_cgraph_edge_p_base *vec_) { return vec_ ? vec_->vec : 0; } static __inline__ unsigned VEC_cgraph_edge_p_base_lower_bound (VEC_cgraph_edge_p_base *vec_, const cgraph_edge_p obj_, unsigned char (*lessthan_)(const cgraph_edge_p, const cgraph_edge_p) ) { unsigned int len_ = VEC_cgraph_edge_p_base_length (vec_); unsigned int half_, middle_; unsigned int first_ = 0; while (len_ > 0) { cgraph_edge_p middle_elem_; half_ = len_ >> 1; middle_ = first_; middle_ += half_; middle_elem_ = VEC_cgraph_edge_p_base_index (vec_, middle_ ); if (lessthan_ (middle_elem_, obj_)) { first_ = middle_; ++first_; len_ = len_ - half_ - 1; } else len_ = half_; } return first_; } struct vec_swallow_trailing_semi; +typedef struct VEC_cgraph_edge_p_heap { VEC_cgraph_edge_p_base base; } VEC_cgraph_edge_p_heap; static __inline__ VEC_cgraph_edge_p_heap *VEC_cgraph_edge_p_heap_alloc (int alloc_ ) { return (VEC_cgraph_edge_p_heap *) vec_heap_p_reserve_exact (((void *)0), alloc_ ); } static __inline__ void VEC_cgraph_edge_p_heap_free (VEC_cgraph_edge_p_heap **vec_) { if (*vec_) free (*vec_); *vec_ = ((void *)0); } static __inline__ VEC_cgraph_edge_p_heap *VEC_cgraph_edge_p_heap_copy (VEC_cgraph_edge_p_base *vec_ ) { size_t len_ = vec_ ? vec_->num : 0; VEC_cgraph_edge_p_heap *new_vec_ = ((void *)0); if (len_) { new_vec_ = (VEC_cgraph_edge_p_heap *)(vec_heap_p_reserve_exact (((void *)0), len_ )); new_vec_->base.num = len_; memcpy (new_vec_->base.vec, vec_->vec, sizeof (cgraph_edge_p) * len_); } return new_vec_; } static __inline__ int VEC_cgraph_edge_p_heap_reserve (VEC_cgraph_edge_p_heap **vec_, int alloc_ ) { int extend = !VEC_cgraph_edge_p_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_cgraph_edge_p_heap *) vec_heap_p_reserve (*vec_, alloc_ ); return extend; } static __inline__ int VEC_cgraph_edge_p_heap_reserve_exact (VEC_cgraph_edge_p_heap **vec_, int alloc_ ) { int extend = !VEC_cgraph_edge_p_base_space (((*vec_) ? &(*vec_)->base : 0), alloc_ ); if (extend) *vec_ = (VEC_cgraph_edge_p_heap *) vec_heap_p_reserve_exact (*vec_, alloc_ ); return extend; } static __inline__ void VEC_cgraph_edge_p_heap_safe_grow (VEC_cgraph_edge_p_heap **vec_, int size_ ) { (void)(size_ >= 0 && VEC_cgraph_edge_p_base_length ((*vec_) ? &(*vec_)->base : 0) <= (unsigned)size_); VEC_cgraph_edge_p_heap_reserve_exact (vec_, size_ - (int)(*vec_ ? ((*vec_) ? &(*vec_)->base : 0)->num : 0) ); ((*vec_) ? &(*vec_)->base : 0)->num = size_; } static __inline__ cgraph_edge_p *VEC_cgraph_edge_p_heap_safe_push (VEC_cgraph_edge_p_heap **vec_, cgraph_edge_p obj_ ) { VEC_cgraph_edge_p_heap_reserve (vec_, 1 ); return VEC_cgraph_edge_p_base_quick_push (((*vec_) ? &(*vec_)->base : 0), obj_ ); } static __inline__ cgraph_edge_p *VEC_cgraph_edge_p_heap_safe_insert (VEC_cgraph_edge_p_heap **vec_, unsigned ix_, cgraph_edge_p obj_ ) { VEC_cgraph_edge_p_heap_reserve (vec_, 1 ); return VEC_cgraph_edge_p_base_quick_insert (((*vec_) ? &(*vec_)->base : 0), ix_, obj_ ); } struct vec_swallow_trailing_semi; + + + + +struct cgraph_varpool_node +{ + tree decl; + + struct cgraph_varpool_node *next; + + struct cgraph_varpool_node *next_needed; + + int order; + + + + unsigned needed : 1; + + + unsigned force_output : 1; + + + unsigned analyzed : 1; + + unsigned finalized : 1; + + unsigned output : 1; + + unsigned externally_visible : 1; + + unsigned alias : 1; +}; + + + +struct cgraph_asm_node +{ + + struct cgraph_asm_node *next; + + tree asm_str; + + int order; +}; + +extern struct cgraph_node *cgraph_nodes; +extern int cgraph_n_nodes; +extern int cgraph_max_uid; +extern unsigned char cgraph_global_info_ready; +extern unsigned char cgraph_function_flags_ready; +extern struct cgraph_node *cgraph_nodes_queue; +extern struct cgraph_node *cgraph_expand_queue; + +extern struct cgraph_varpool_node *cgraph_varpool_first_unanalyzed_node; +extern struct cgraph_varpool_node *cgraph_varpool_last_needed_node; +extern struct cgraph_varpool_node *cgraph_varpool_nodes_queue; +extern struct cgraph_varpool_node *cgraph_varpool_nodes; +extern struct cgraph_asm_node *cgraph_asm_nodes; +extern int cgraph_order; + + +void dump_cgraph (FILE *); +void dump_cgraph_node (FILE *, struct cgraph_node *); +void cgraph_insert_node_to_hashtable (struct cgraph_node *node); +void dump_varpool (FILE *); +void dump_cgraph_varpool_node (FILE *, struct cgraph_varpool_node *); +void cgraph_remove_edge (struct cgraph_edge *); +void cgraph_remove_node (struct cgraph_node *); +void cgraph_node_remove_callees (struct cgraph_node *node); +struct cgraph_edge *cgraph_create_edge (struct cgraph_node *, + struct cgraph_node *, + tree, gcov_type, int); +struct cgraph_node *cgraph_node (tree); +struct cgraph_node *cgraph_node_for_asm (tree asmname); +struct cgraph_edge *cgraph_edge (struct cgraph_node *, tree); +void cgraph_set_call_stmt (struct cgraph_edge *, tree); +struct cgraph_local_info *cgraph_local_info (tree); +struct cgraph_global_info *cgraph_global_info (tree); +struct cgraph_rtl_info *cgraph_rtl_info (tree); +const char * cgraph_node_name (struct cgraph_node *); +struct cgraph_edge * cgraph_clone_edge (struct cgraph_edge *, + struct cgraph_node *, + tree, gcov_type, int, unsigned char); +struct cgraph_node * cgraph_clone_node (struct cgraph_node *, gcov_type, + int, unsigned char); + +struct cgraph_varpool_node *cgraph_varpool_node (tree); +struct cgraph_varpool_node *cgraph_varpool_node_for_asm (tree asmname); +void cgraph_varpool_mark_needed_node (struct cgraph_varpool_node *); +void cgraph_varpool_finalize_decl (tree); +void cgraph_redirect_edge_callee (struct cgraph_edge *, struct cgraph_node *); + +struct cgraph_asm_node *cgraph_add_asm_node (tree); + +unsigned char cgraph_function_possibly_inlined_p (tree); +void cgraph_unnest_node (struct cgraph_node *); +void cgraph_varpool_enqueue_needed_node (struct cgraph_varpool_node *); +void cgraph_varpool_reset_queue (void); +unsigned char decide_is_variable_needed (struct cgraph_varpool_node *, tree); + +enum availability cgraph_function_body_availability (struct cgraph_node *); +enum availability cgraph_variable_initializer_availability (struct cgraph_varpool_node *); +unsigned char cgraph_is_master_clone (struct cgraph_node *); +struct cgraph_node *cgraph_master_clone (struct cgraph_node *); +void cgraph_add_new_function (tree); + + +unsigned char cgraph_assemble_pending_functions (void); +unsigned char cgraph_varpool_assemble_pending_decls (void); +void cgraph_finalize_function (tree, unsigned char); +void cgraph_finalize_compilation_unit (void); +void cgraph_optimize (void); +void cgraph_mark_needed_node (struct cgraph_node *); +void cgraph_mark_reachable_node (struct cgraph_node *); +unsigned char cgraph_inline_p (struct cgraph_edge *, const char **reason); +unsigned char cgraph_preserve_function_body_p (tree); +void verify_cgraph (void); +void verify_cgraph_node (struct cgraph_node *); +void cgraph_build_static_cdtor (char which, tree body, int priority); +void cgraph_reset_static_var_maps (void); +void init_cgraph (void); +struct cgraph_node *cgraph_function_versioning (struct cgraph_node *, + VEC_cgraph_edge_p_heap*, + varray_type); +void cgraph_analyze_function (struct cgraph_node *); +struct cgraph_node *save_inline_function_body (struct cgraph_node *); + + +unsigned char cgraph_remove_unreachable_nodes (unsigned char, FILE *); +int cgraph_postorder (struct cgraph_node **); + + +unsigned char cgraph_decide_inlining_incrementally (struct cgraph_node *, unsigned char); +void cgraph_clone_inlined_nodes (struct cgraph_edge *, unsigned char, unsigned char); +void cgraph_mark_inline_edge (struct cgraph_edge *, unsigned char); +unsigned char cgraph_default_inline_p (struct cgraph_node *, const char **); +# 59 "../../GCC/gcc/c-parser.c" 2 + +# 1 "../../GCC/gcc/cbc-tree.h" 1 +# 61 "../../GCC/gcc/c-parser.c" 2 + + + + + +int yydebug; + + + +static int objc_pq_context = 0; + + + + + +static int objc_need_raw_identifier = 0; + + + + + + + +struct resword +{ + const char *word; + __extension__ enum rid rid : 16; + unsigned int disable : 16; +}; +# 98 "../../GCC/gcc/c-parser.c" +static const struct resword reswords[] = +{ + { "_Bool", RID_BOOL, 0 }, + { "_Complex", RID_COMPLEX, 0 }, + { "_Decimal32", RID_DFLOAT32, 0x02 }, + { "_Decimal64", RID_DFLOAT64, 0x02 }, + { "_Decimal128", RID_DFLOAT128, 0x02 }, + { "__FUNCTION__", RID_FUNCTION_NAME, 0 }, + { "__PRETTY_FUNCTION__", RID_PRETTY_FUNCTION_NAME, 0 }, + { "__alignof", RID_ALIGNOF, 0 }, + { "__alignof__", RID_ALIGNOF, 0 }, + { "__asm", RID_ASM, 0 }, + { "__asm__", RID_ASM, 0 }, + { "__attribute", RID_ATTRIBUTE, 0 }, + { "__attribute__", RID_ATTRIBUTE, 0 }, + + + { "__code", RID_CbC_CODE, 0 }, + + { "__builtin_choose_expr", RID_CHOOSE_EXPR, 0 }, + { "__builtin_offsetof", RID_OFFSETOF, 0 }, + { "__builtin_types_compatible_p", RID_TYPES_COMPATIBLE_P, 0 }, + { "__builtin_va_arg", RID_VA_ARG, 0 }, + { "__complex", RID_COMPLEX, 0 }, + { "__complex__", RID_COMPLEX, 0 }, + { "__const", RID_CONST, 0 }, + { "__const__", RID_CONST, 0 }, + + + { "__environment", RID_CbC_ENV, 0 }, + + { "__extension__", RID_EXTENSION, 0 }, + { "__func__", RID_C99_FUNCTION_NAME, 0 }, + { "__imag", RID_IMAGPART, 0 }, + { "__imag__", RID_IMAGPART, 0 }, + { "__inline", RID_INLINE, 0 }, + { "__inline__", RID_INLINE, 0 }, + { "__label__", RID_LABEL, 0 }, + { "__real", RID_REALPART, 0 }, + { "__real__", RID_REALPART, 0 }, + { "__restrict", RID_RESTRICT, 0 }, + { "__restrict__", RID_RESTRICT, 0 }, + { "__signed", RID_SIGNED, 0 }, + { "__signed__", RID_SIGNED, 0 }, + { "__thread", RID_THREAD, 0 }, + { "__typeof", RID_TYPEOF, 0 }, + { "__typeof__", RID_TYPEOF, 0 }, + { "__volatile", RID_VOLATILE, 0 }, + { "__volatile__", RID_VOLATILE, 0 }, + { "asm", RID_ASM, 0x02 }, + { "auto", RID_AUTO, 0 }, + { "break", RID_BREAK, 0 }, + { "case", RID_CASE, 0 }, + { "char", RID_CHAR, 0 }, + { "const", RID_CONST, 0 }, + { "continue", RID_CONTINUE, 0 }, + { "default", RID_DEFAULT, 0 }, + { "do", RID_DO, 0 }, + { "double", RID_DOUBLE, 0 }, + { "else", RID_ELSE, 0 }, + { "enum", RID_ENUM, 0 }, + { "extern", RID_EXTERN, 0 }, + { "float", RID_FLOAT, 0 }, + { "for", RID_FOR, 0 }, + { "goto", RID_GOTO, 0 }, + { "if", RID_IF, 0 }, + { "inline", RID_INLINE, 0x04 }, + { "int", RID_INT, 0 }, + { "long", RID_LONG, 0 }, + { "register", RID_REGISTER, 0 }, + { "restrict", RID_RESTRICT, 0x01 }, + { "return", RID_RETURN, 0 }, + { "short", RID_SHORT, 0 }, + { "signed", RID_SIGNED, 0 }, + { "sizeof", RID_SIZEOF, 0 }, + { "static", RID_STATIC, 0 }, + { "struct", RID_STRUCT, 0 }, + { "switch", RID_SWITCH, 0 }, + { "typedef", RID_TYPEDEF, 0 }, + { "typeof", RID_TYPEOF, 0x02 }, + { "union", RID_UNION, 0 }, + { "unsigned", RID_UNSIGNED, 0 }, + { "void", RID_VOID, 0 }, + { "volatile", RID_VOLATILE, 0 }, + { "while", RID_WHILE, 0 }, + + + { "class", RID_AT_CLASS, 0x08 }, + { "compatibility_alias", RID_AT_ALIAS, 0x08 }, + { "defs", RID_AT_DEFS, 0x08 }, + { "encode", RID_AT_ENCODE, 0x08 }, + { "end", RID_AT_END, 0x08 }, + { "implementation", RID_AT_IMPLEMENTATION, 0x08 }, + { "interface", RID_AT_INTERFACE, 0x08 }, + { "private", RID_AT_PRIVATE, 0x08 }, + { "protected", RID_AT_PROTECTED, 0x08 }, + { "protocol", RID_AT_PROTOCOL, 0x08 }, + { "public", RID_AT_PUBLIC, 0x08 }, + { "selector", RID_AT_SELECTOR, 0x08 }, + { "throw", RID_AT_THROW, 0x08 }, + { "try", RID_AT_TRY, 0x08 }, + { "catch", RID_AT_CATCH, 0x08 }, + { "finally", RID_AT_FINALLY, 0x08 }, + { "synchronized", RID_AT_SYNCHRONIZED, 0x08 }, + + + { "bycopy", RID_BYCOPY, 0x08 }, + { "byref", RID_BYREF, 0x08 }, + { "in", RID_IN, 0x08 }, + { "inout", RID_INOUT, 0x08 }, + { "oneway", RID_ONEWAY, 0x08 }, + { "out", RID_OUT, 0x08 }, +}; + + + +typedef enum pragma_omp_clause { + PRAGMA_OMP_CLAUSE_NONE = 0, + + PRAGMA_OMP_CLAUSE_COPYIN, + PRAGMA_OMP_CLAUSE_COPYPRIVATE, + PRAGMA_OMP_CLAUSE_DEFAULT, + PRAGMA_OMP_CLAUSE_FIRSTPRIVATE, + PRAGMA_OMP_CLAUSE_IF, + PRAGMA_OMP_CLAUSE_LASTPRIVATE, + PRAGMA_OMP_CLAUSE_NOWAIT, + PRAGMA_OMP_CLAUSE_NUM_THREADS, + PRAGMA_OMP_CLAUSE_ORDERED, + PRAGMA_OMP_CLAUSE_PRIVATE, + PRAGMA_OMP_CLAUSE_REDUCTION, + PRAGMA_OMP_CLAUSE_SCHEDULE, + PRAGMA_OMP_CLAUSE_SHARED +} pragma_omp_clause; + + + + +void +c_parse_init (void) +{ + + + unsigned int i; + tree id; + int mask = (flag_isoc99 ? 0 : 0x01) + | (flag_no_asm ? (flag_isoc99 ? 0x02 : 0x02|0x04) : 0); + + if (!(c_language & clk_objc)) + mask |= 0x08; + + ridpointers = ((tree *) ggc_alloc_cleared_stat (((int) RID_MAX) * sizeof(tree) )); + for (i = 0; i < (sizeof reswords / sizeof (struct resword)); i++) + { + + + if (reswords[i].disable & mask) + continue; + + id = (__builtin_constant_p (reswords[i].word) ? get_identifier_with_length ((reswords[i].word), strlen (reswords[i].word)) : get_identifier (reswords[i].word)); + (((struct c_common_identifier *) (id))->node.rid_code) = reswords[i].rid; + ((id)->common.lang_flag_0) = 1; + ridpointers [(int) reswords[i].rid] = id; + } +} +# 280 "../../GCC/gcc/c-parser.c" +typedef enum c_id_kind { + + C_ID_ID, + + C_ID_TYPENAME, + + C_ID_CLASSNAME, + + C_ID_NONE +} c_id_kind; + + + +typedef struct c_token +{ + + __extension__ enum cpp_ttype type : 8; + + + __extension__ enum c_id_kind id_kind : 8; + + + __extension__ enum rid keyword : 8; + + + __extension__ enum pragma_kind pragma_kind : 7; + + unsigned int in_system_header : 1; + + tree value; + + location_t location; +} c_token; + + + + +typedef struct c_parser +{ + + c_token tokens[2]; + + short tokens_avail; + + + + unsigned int error : 1; + + + unsigned int in_pragma : 1; +} c_parser; + + + + + +static c_parser *the_parser; + + + + +static void +c_lex_one_token (c_token *token) +{ + do { if (timevar_enable) timevar_push_1 (TV_LEX); }while(0); + + token->type = c_lex_with_flags (&token->value, &token->location, ((void *)0)); + token->id_kind = C_ID_NONE; + token->keyword = RID_MAX; + token->pragma_kind = PRAGMA_NONE; + token->in_system_header = in_system_header; + + switch (token->type) + { + case CPP_NAME: + { + tree decl; + + int objc_force_identifier = objc_need_raw_identifier; + do { if ((c_language & clk_objc)) objc_need_raw_identifier = 0; } while (0); + + if (((token->value)->common.lang_flag_0)) + { + enum rid rid_code = (((struct c_common_identifier *) (token->value))->node.rid_code); + + if ((c_language & clk_objc)) + { + if (!((unsigned int) (rid_code) >= (unsigned int) RID_FIRST_AT && (unsigned int) (rid_code) <= (unsigned int) RID_LAST_AT) + && (!((unsigned int) (rid_code) >= (unsigned int) RID_FIRST_PQ && (unsigned int) (rid_code) <= (unsigned int) RID_LAST_PQ) || objc_pq_context)) + { + + token->value = ridpointers[(int) rid_code]; + token->type = ((enum cpp_ttype) (N_TTYPES + 1)); + token->keyword = rid_code; + break; + } + } + else + { + + token->value = ridpointers[(int) rid_code]; + token->type = ((enum cpp_ttype) (N_TTYPES + 1)); + token->keyword = rid_code; + break; + } + } + + decl = lookup_name (token->value); + if (decl) + { + if (((enum tree_code) (decl)->common.code) == TYPE_DECL) + { + token->id_kind = C_ID_TYPENAME; + break; + } + } + else if ((c_language & clk_objc)) + { + tree objc_interface_decl = objc_is_class_name (token->value); + + + + if (objc_interface_decl + && (global_bindings_p () + || (!objc_force_identifier && !decl))) + { + token->value = objc_interface_decl; + token->id_kind = C_ID_CLASSNAME; + break; + } + } + token->id_kind = C_ID_ID; + } + break; + case CPP_AT_NAME: + + token->type = ((enum cpp_ttype) (N_TTYPES + 1)); + token->keyword = (((struct c_common_identifier *) (token->value))->node.rid_code); + break; + case CPP_COLON: + case CPP_COMMA: + case CPP_CLOSE_PAREN: + case CPP_SEMICOLON: + + + do { if ((c_language & clk_objc)) objc_need_raw_identifier = 0; } while (0); + break; + case CPP_PRAGMA: + + token->pragma_kind = ((__extension__ ({ const tree __t = (token->value); if (((enum tree_code) (__t)->common.code) != (INTEGER_CST)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 429, __FUNCTION__, (INTEGER_CST), 0); __t; })->int_cst.int_cst).low); + token->value = ((void *)0); + break; + default: + break; + } + do { if (timevar_enable) timevar_pop_1 (TV_LEX); }while(0); +} + + + + +static __inline__ c_token * +c_parser_peek_token (c_parser *parser) +{ + if (parser->tokens_avail == 0) + { + c_lex_one_token (&parser->tokens[0]); + parser->tokens_avail = 1; + } + return &parser->tokens[0]; +} + + + + +static __inline__ unsigned char +c_parser_next_token_is (c_parser *parser, enum cpp_ttype type) +{ + return c_parser_peek_token (parser)->type == type; +} + + + + +static __inline__ unsigned char +c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type) +{ + return !c_parser_next_token_is (parser, type); +} + + + + +static __inline__ unsigned char +c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword) +{ + c_token *token; + + + token = c_parser_peek_token (parser); + + return token->keyword == keyword; +} + + + +static unsigned char +c_token_starts_typename (c_token *token) +{ + switch (token->type) + { + case CPP_NAME: + switch (token->id_kind) + { + case C_ID_ID: + return 0; + case C_ID_TYPENAME: + return 1; + case C_ID_CLASSNAME: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 499, __FUNCTION__), 0 : 0)); + return 1; + default: + (fancy_abort ("../../GCC/gcc/c-parser.c", 502, __FUNCTION__)); + } + case ((enum cpp_ttype) (N_TTYPES + 1)): + switch (token->keyword) + { + case RID_UNSIGNED: + case RID_LONG: + case RID_SHORT: + case RID_SIGNED: + case RID_COMPLEX: + case RID_INT: + case RID_CHAR: + case RID_FLOAT: + case RID_DOUBLE: + case RID_VOID: + case RID_DFLOAT32: + case RID_DFLOAT64: + case RID_DFLOAT128: + case RID_BOOL: + case RID_ENUM: + case RID_STRUCT: + case RID_UNION: + case RID_TYPEOF: + case RID_CONST: + case RID_VOLATILE: + case RID_RESTRICT: + case RID_ATTRIBUTE: + + case RID_CbC_CODE: + + return 1; + default: + return 0; + } + case CPP_LESS: + if ((c_language & clk_objc)) + return 1; + return 0; + default: + return 0; + } +} + + + +static __inline__ unsigned char +c_parser_next_token_starts_typename (c_parser *parser) +{ + c_token *token = c_parser_peek_token (parser); + return c_token_starts_typename (token); +} + + + +static unsigned char +c_token_starts_declspecs (c_token *token) +{ + switch (token->type) + { + case CPP_NAME: + switch (token->id_kind) + { + case C_ID_ID: + return 0; + case C_ID_TYPENAME: + return 1; + case C_ID_CLASSNAME: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 569, __FUNCTION__), 0 : 0)); + return 1; + default: + (fancy_abort ("../../GCC/gcc/c-parser.c", 572, __FUNCTION__)); + } + case ((enum cpp_ttype) (N_TTYPES + 1)): + switch (token->keyword) + { + case RID_STATIC: + case RID_EXTERN: + case RID_REGISTER: + case RID_TYPEDEF: + case RID_INLINE: + case RID_AUTO: + case RID_THREAD: + case RID_UNSIGNED: + case RID_LONG: + case RID_SHORT: + case RID_SIGNED: + case RID_COMPLEX: + case RID_INT: + case RID_CHAR: + case RID_FLOAT: + case RID_DOUBLE: + case RID_VOID: + case RID_DFLOAT32: + case RID_DFLOAT64: + case RID_DFLOAT128: + case RID_BOOL: + case RID_ENUM: + case RID_STRUCT: + case RID_UNION: + case RID_TYPEOF: + case RID_CONST: + case RID_VOLATILE: + case RID_RESTRICT: + case RID_ATTRIBUTE: + + case RID_CbC_CODE: + + return 1; + default: + return 0; + } + case CPP_LESS: + if ((c_language & clk_objc)) + return 1; + return 0; + default: + return 0; + } +} + + + +static __inline__ unsigned char +c_parser_next_token_starts_declspecs (c_parser *parser) +{ + c_token *token = c_parser_peek_token (parser); + return c_token_starts_declspecs (token); +} + + + + +static c_token * +c_parser_peek_2nd_token (c_parser *parser) +{ + if (parser->tokens_avail >= 2) + return &parser->tokens[1]; + ((void)(!(parser->tokens_avail == 1) ? fancy_abort ("../../GCC/gcc/c-parser.c", 639, __FUNCTION__), 0 : 0)); + ((void)(!(parser->tokens[0].type != CPP_EOF) ? fancy_abort ("../../GCC/gcc/c-parser.c", 640, __FUNCTION__), 0 : 0)); + ((void)(!(parser->tokens[0].type != CPP_PRAGMA_EOL) ? fancy_abort ("../../GCC/gcc/c-parser.c", 641, __FUNCTION__), 0 : 0)); + c_lex_one_token (&parser->tokens[1]); + parser->tokens_avail = 2; + return &parser->tokens[1]; +} + + + +static void +c_parser_consume_token (c_parser *parser) +{ + ((void)(!(parser->tokens_avail >= 1) ? fancy_abort ("../../GCC/gcc/c-parser.c", 652, __FUNCTION__), 0 : 0)); + ((void)(!(parser->tokens[0].type != CPP_EOF) ? fancy_abort ("../../GCC/gcc/c-parser.c", 653, __FUNCTION__), 0 : 0)); + ((void)(!(!parser->in_pragma || parser->tokens[0].type != CPP_PRAGMA_EOL) ? fancy_abort ("../../GCC/gcc/c-parser.c", 654, __FUNCTION__), 0 : 0)); + ((void)(!(parser->error || parser->tokens[0].type != CPP_PRAGMA) ? fancy_abort ("../../GCC/gcc/c-parser.c", 655, __FUNCTION__), 0 : 0)); + if (parser->tokens_avail == 2) + parser->tokens[0] = parser->tokens[1]; + parser->tokens_avail--; +} + + + + +static void +c_parser_consume_pragma (c_parser *parser) +{ + ((void)(!(!parser->in_pragma) ? fancy_abort ("../../GCC/gcc/c-parser.c", 667, __FUNCTION__), 0 : 0)); + ((void)(!(parser->tokens_avail >= 1) ? fancy_abort ("../../GCC/gcc/c-parser.c", 668, __FUNCTION__), 0 : 0)); + ((void)(!(parser->tokens[0].type == CPP_PRAGMA) ? fancy_abort ("../../GCC/gcc/c-parser.c", 669, __FUNCTION__), 0 : 0)); + if (parser->tokens_avail == 2) + parser->tokens[0] = parser->tokens[1]; + parser->tokens_avail--; + parser->in_pragma = 1; +} + + + +static __inline__ void +c_parser_set_source_position_from_token (c_token *token) +{ + if (token->type != CPP_EOF) + { + input_location = token->location; + in_system_header = token->in_system_header; + } +} +# 700 "../../GCC/gcc/c-parser.c" +static void +c_parser_error (c_parser *parser, const char *gmsgid) +{ + c_token *token = c_parser_peek_token (parser); + if (parser->error) + return; + parser->error = 1; + if (!gmsgid) + return; + + + c_parser_set_source_position_from_token (token); + c_parse_error (gmsgid, + + + + (token->type == ((enum cpp_ttype) (N_TTYPES + 1)) ? CPP_NAME : token->type), + token->value); +} + + + + + + +static unsigned char +c_parser_require (c_parser *parser, + enum cpp_ttype type, + const char *msgid) +{ + if (c_parser_next_token_is (parser, type)) + { + c_parser_consume_token (parser); + return 1; + } + else + { + c_parser_error (parser, msgid); + return 0; + } +} + + + + +static unsigned char +c_parser_require_keyword (c_parser *parser, + enum rid keyword, + const char *msgid) +{ + if (c_parser_next_token_is_keyword (parser, keyword)) + { + c_parser_consume_token (parser); + return 1; + } + else + { + c_parser_error (parser, msgid); + return 0; + } +} + + + + + + + +static void +c_parser_skip_until_found (c_parser *parser, + enum cpp_ttype type, + const char *msgid) +{ + unsigned nesting_depth = 0; + + if (c_parser_require (parser, type, msgid)) + return; + + + while (1) + { + + c_token *token = c_parser_peek_token (parser); + + if (token->type == type && !nesting_depth) + { + c_parser_consume_token (parser); + break; + } + + + if (token->type == CPP_EOF) + return; + if (token->type == CPP_PRAGMA_EOL && parser->in_pragma) + return; + if (token->type == CPP_OPEN_BRACE + || token->type == CPP_OPEN_PAREN + || token->type == CPP_OPEN_SQUARE) + ++nesting_depth; + else if (token->type == CPP_CLOSE_BRACE + || token->type == CPP_CLOSE_PAREN + || token->type == CPP_CLOSE_SQUARE) + { + if (nesting_depth-- == 0) + break; + } + + c_parser_consume_token (parser); + } + parser->error = 0; +} + + + + +static void +c_parser_skip_to_end_of_parameter (c_parser *parser) +{ + unsigned nesting_depth = 0; + + while (1) + { + c_token *token = c_parser_peek_token (parser); + if ((token->type == CPP_COMMA || token->type == CPP_SEMICOLON) + && !nesting_depth) + break; + + if (token->type == CPP_EOF) + return; + if (token->type == CPP_PRAGMA_EOL && parser->in_pragma) + return; + if (token->type == CPP_OPEN_BRACE + || token->type == CPP_OPEN_PAREN + || token->type == CPP_OPEN_SQUARE) + ++nesting_depth; + else if (token->type == CPP_CLOSE_BRACE + || token->type == CPP_CLOSE_PAREN + || token->type == CPP_CLOSE_SQUARE) + { + if (nesting_depth-- == 0) + break; + } + + c_parser_consume_token (parser); + } + parser->error = 0; +} + + + + +static void +c_parser_skip_to_pragma_eol (c_parser *parser) +{ + ((void)(!(parser->in_pragma) ? fancy_abort ("../../GCC/gcc/c-parser.c", 854, __FUNCTION__), 0 : 0)); + parser->in_pragma = 0; + + if (!c_parser_require (parser, CPP_PRAGMA_EOL, "expected end of line")) + while (1) + { + c_token *token = c_parser_peek_token (parser); + if (token->type == CPP_EOF) + break; + if (token->type == CPP_PRAGMA_EOL) + { + c_parser_consume_token (parser); + break; + } + c_parser_consume_token (parser); + } + + parser->error = 0; +} + + + + +static void +c_parser_skip_to_end_of_block_or_statement (c_parser *parser) +{ + unsigned nesting_depth = 0; + unsigned char save_error = parser->error; + + while (1) + { + c_token *token; + + + token = c_parser_peek_token (parser); + + switch (token->type) + { + case CPP_EOF: + return; + + case CPP_PRAGMA_EOL: + if (parser->in_pragma) + return; + break; + + case CPP_SEMICOLON: + + + if (!nesting_depth) + { + + c_parser_consume_token (parser); + goto finished; + } + break; + + case CPP_CLOSE_BRACE: + + + if (nesting_depth == 0 || --nesting_depth == 0) + { + c_parser_consume_token (parser); + goto finished; + } + break; + + case CPP_OPEN_BRACE: + + + ++nesting_depth; + break; + + case CPP_PRAGMA: + + + + + + + c_parser_consume_pragma (parser); + c_parser_skip_to_pragma_eol (parser); + parser->error = save_error; + continue; + + default: + break; + } + + c_parser_consume_token (parser); + } + + finished: + parser->error = 0; +} + + + +static __inline__ int +disable_extension_diagnostics (void) +{ + int ret = (pedantic + | (warn_pointer_arith << 1) + | (warn_traditional << 2) + | (flag_iso << 3)); + pedantic = 0; + warn_pointer_arith = 0; + warn_traditional = 0; + flag_iso = 0; + return ret; +} + + + + +static __inline__ void +restore_extension_diagnostics (int flags) +{ + pedantic = flags & 1; + warn_pointer_arith = (flags >> 1) & 1; + warn_traditional = (flags >> 2) & 1; + flag_iso = (flags >> 3) & 1; +} + + +typedef enum c_dtr_syn { + + C_DTR_NORMAL, + + C_DTR_ABSTRACT, +# 994 "../../GCC/gcc/c-parser.c" + C_DTR_PARM +} c_dtr_syn; + +static void c_parser_external_declaration (c_parser *); +static void c_parser_asm_definition (c_parser *); +static void c_parser_declaration_or_fndef (c_parser *, unsigned char, unsigned char, unsigned char, unsigned char); +static void c_parser_declspecs (c_parser *, struct c_declspecs *, unsigned char, unsigned char, + unsigned char); +static struct c_typespec c_parser_enum_specifier (c_parser *); +static struct c_typespec c_parser_struct_or_union_specifier (c_parser *); +static tree c_parser_struct_declaration (c_parser *); +static struct c_typespec c_parser_typeof_specifier (c_parser *); +static struct c_declarator *c_parser_declarator (c_parser *, unsigned char, c_dtr_syn, + unsigned char *); +static struct c_declarator *c_parser_direct_declarator (c_parser *, unsigned char, + c_dtr_syn, unsigned char *); +static struct c_declarator *c_parser_direct_declarator_inner (c_parser *, + unsigned char, + struct c_declarator *); +static struct c_arg_info *c_parser_parms_declarator (c_parser *, unsigned char, tree); +static struct c_arg_info *c_parser_parms_list_declarator (c_parser *, tree); +static struct c_parm *c_parser_parameter_declaration (c_parser *, tree); +static tree c_parser_simple_asm_expr (c_parser *); +static tree c_parser_attributes (c_parser *); +static struct c_type_name *c_parser_type_name (c_parser *); +static struct c_expr c_parser_initializer (c_parser *); +static struct c_expr c_parser_braced_init (c_parser *, tree, unsigned char); +static void c_parser_initelt (c_parser *); +static void c_parser_initval (c_parser *, struct c_expr *); +static tree c_parser_compound_statement (c_parser *); +static void c_parser_compound_statement_nostart (c_parser *); +static void c_parser_label (c_parser *); +static void c_parser_statement (c_parser *); +static void c_parser_statement_after_labels (c_parser *); +static void c_parser_if_statement (c_parser *); +static void c_parser_switch_statement (c_parser *); +static void c_parser_while_statement (c_parser *); +static void c_parser_do_statement (c_parser *); +static void c_parser_for_statement (c_parser *); +static tree c_parser_asm_statement (c_parser *); +static tree c_parser_asm_operands (c_parser *, unsigned char); +static tree c_parser_asm_clobbers (c_parser *); +static struct c_expr c_parser_expr_no_commas (c_parser *, struct c_expr *); +static struct c_expr c_parser_conditional_expression (c_parser *, + struct c_expr *); +static struct c_expr c_parser_binary_expression (c_parser *, struct c_expr *); +static struct c_expr c_parser_cast_expression (c_parser *, struct c_expr *); +static struct c_expr c_parser_unary_expression (c_parser *); +static struct c_expr c_parser_sizeof_expression (c_parser *); +static struct c_expr c_parser_alignof_expression (c_parser *); +static struct c_expr c_parser_postfix_expression (c_parser *); +static struct c_expr c_parser_postfix_expression_after_paren_type (c_parser *, + struct c_type_name *); +static struct c_expr c_parser_postfix_expression_after_primary (c_parser *, + struct c_expr); +static struct c_expr c_parser_expression (c_parser *); +static struct c_expr c_parser_expression_conv (c_parser *); +static tree c_parser_expr_list (c_parser *, unsigned char); +static void c_parser_omp_construct (c_parser *); +static void c_parser_omp_threadprivate (c_parser *); +static void c_parser_omp_barrier (c_parser *); +static void c_parser_omp_flush (c_parser *); + +enum pragma_context { pragma_external, pragma_stmt, pragma_compound }; +static unsigned char c_parser_pragma (c_parser *, enum pragma_context); + + + +static void c_parser_objc_class_definition (c_parser *); +static void c_parser_objc_class_instance_variables (c_parser *); +static void c_parser_objc_class_declaration (c_parser *); +static void c_parser_objc_alias_declaration (c_parser *); +static void c_parser_objc_protocol_definition (c_parser *); +static enum tree_code c_parser_objc_method_type (c_parser *); +static void c_parser_objc_method_definition (c_parser *); +static void c_parser_objc_methodprotolist (c_parser *); +static void c_parser_objc_methodproto (c_parser *); +static tree c_parser_objc_method_decl (c_parser *); +static tree c_parser_objc_type_name (c_parser *); +static tree c_parser_objc_protocol_refs (c_parser *); +static void c_parser_objc_try_catch_statement (c_parser *); +static void c_parser_objc_synchronized_statement (c_parser *); +static tree c_parser_objc_selector (c_parser *); +static tree c_parser_objc_selector_arg (c_parser *); +static tree c_parser_objc_receiver (c_parser *); +static tree c_parser_objc_message_args (c_parser *); +static tree c_parser_objc_keywordexpr (c_parser *); +# 1097 "../../GCC/gcc/c-parser.c" +static void +c_parser_translation_unit (c_parser *parser) +{ + if (c_parser_next_token_is (parser, CPP_EOF)) + { + if (pedantic) + pedwarn ("ISO C forbids an empty source file"); + } + else + { + void *obstack_position = __extension__ ({ struct obstack *__h = (&parser_obstack); __extension__ ({ struct obstack *__o = (__h); int __len = ((0)); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); }); + do + { + ggc_collect (); + c_parser_external_declaration (parser); + __extension__ ({ struct obstack *__o = (&parser_obstack); void *__obj = (void *) (obstack_position); if (__obj > (void *)__o->chunk && __obj < (void *)__o->chunk_limit) __o->next_free = __o->object_base = (char *) __obj; else (obstack_free) (__o, __obj); }); + } + while (c_parser_next_token_is_not (parser, CPP_EOF)); + } +} +# 1142 "../../GCC/gcc/c-parser.c" +static void +c_parser_external_declaration (c_parser *parser) +{ + int ext; + switch (c_parser_peek_token (parser)->type) + { + case ((enum cpp_ttype) (N_TTYPES + 1)): + switch (c_parser_peek_token (parser)->keyword) + { + case RID_EXTENSION: + ext = disable_extension_diagnostics (); + c_parser_consume_token (parser); + c_parser_external_declaration (parser); + restore_extension_diagnostics (ext); + break; + case RID_ASM: + c_parser_asm_definition (parser); + break; + case RID_AT_INTERFACE: + case RID_AT_IMPLEMENTATION: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1162, __FUNCTION__), 0 : 0)); + c_parser_objc_class_definition (parser); + break; + case RID_AT_CLASS: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1166, __FUNCTION__), 0 : 0)); + c_parser_objc_class_declaration (parser); + break; + case RID_AT_ALIAS: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1170, __FUNCTION__), 0 : 0)); + c_parser_objc_alias_declaration (parser); + break; + case RID_AT_PROTOCOL: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1174, __FUNCTION__), 0 : 0)); + c_parser_objc_protocol_definition (parser); + break; + case RID_AT_END: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1178, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + objc_finish_implementation (); + break; + default: + goto decl_or_fndef; + } + break; + case CPP_SEMICOLON: + if (pedantic) + pedwarn ("ISO C does not allow extra %<;%> outside of a function"); + c_parser_consume_token (parser); + break; + case CPP_PRAGMA: + c_parser_pragma (parser, pragma_external); + break; + case CPP_PLUS: + case CPP_MINUS: + if ((c_language & clk_objc)) + { + c_parser_objc_method_definition (parser); + break; + } + + + default: + decl_or_fndef: + + + + c_parser_declaration_or_fndef (parser, 1, 1, 0, 1); + break; + } +} +# 1271 "../../GCC/gcc/c-parser.c" +static void +c_parser_declaration_or_fndef (c_parser *parser, unsigned char fndef_ok, unsigned char empty_ok, + unsigned char nested, unsigned char start_attr_ok) +{ + struct c_declspecs *specs; + tree prefix_attrs; + tree all_prefix_attrs; + unsigned char diagnosed_no_specs = 0; + + specs = build_null_declspecs (); + c_parser_declspecs (parser, specs, 1, 1, start_attr_ok); + if (parser->error) + { + c_parser_skip_to_end_of_block_or_statement (parser); + return; + } + if (nested && !specs->declspecs_seen_p) + { + c_parser_error (parser, "expected declaration specifiers"); + c_parser_skip_to_end_of_block_or_statement (parser); + return; + } + finish_declspecs (specs); + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + if (empty_ok) + shadow_tag (specs); + else + { + shadow_tag_warned (specs, 1); + pedwarn ("empty declaration"); + } + c_parser_consume_token (parser); + return; + } + pending_xref_error (); + prefix_attrs = specs->attrs; + all_prefix_attrs = prefix_attrs; + specs->attrs = (tree) ((void *)0); + while (1) + { + struct c_declarator *declarator; + unsigned char dummy = 0; + tree fnbody; + + + + + declarator = c_parser_declarator (parser, specs->type_seen_p, + C_DTR_NORMAL, &dummy); + if (declarator == ((void *)0)) + { + c_parser_skip_to_end_of_block_or_statement (parser); + return; + } + if (c_parser_next_token_is (parser, CPP_EQ) + || c_parser_next_token_is (parser, CPP_COMMA) + || c_parser_next_token_is (parser, CPP_SEMICOLON) + || c_parser_next_token_is_keyword (parser, RID_ASM) + || c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + { + tree asm_name = (tree) ((void *)0); + tree postfix_attrs = (tree) ((void *)0); + if (!diagnosed_no_specs && !specs->declspecs_seen_p) + { + diagnosed_no_specs = 1; + pedwarn ("data definition has no type or storage class"); + } + + + fndef_ok = 0; + if (c_parser_next_token_is_keyword (parser, RID_ASM)) + asm_name = c_parser_simple_asm_expr (parser); + if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + postfix_attrs = c_parser_attributes (parser); + if (c_parser_next_token_is (parser, CPP_EQ)) + { + tree d; + struct c_expr init; + c_parser_consume_token (parser); + + + d = start_decl (declarator, specs, 1, + chainon (postfix_attrs, all_prefix_attrs)); + if (!d) + d = global_trees[TI_ERROR_MARK]; + start_init (d, asm_name, global_bindings_p ()); + init = c_parser_initializer (parser); + finish_init (); + if (d != global_trees[TI_ERROR_MARK]) + { + maybe_warn_string_init (((d)->common.type), init); + finish_decl (d, init.value, asm_name); + } + } + else + { + tree d = start_decl (declarator, specs, 0, + chainon (postfix_attrs, + all_prefix_attrs)); + if (d) + finish_decl (d, (tree) ((void *)0), asm_name); + } + if (c_parser_next_token_is (parser, CPP_COMMA)) + { + c_parser_consume_token (parser); + if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + all_prefix_attrs = chainon (c_parser_attributes (parser), + prefix_attrs); + else + all_prefix_attrs = prefix_attrs; + continue; + } + else if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + c_parser_consume_token (parser); + return; + } + else + { + c_parser_error (parser, "expected %<,%> or %<;%>"); + c_parser_skip_to_end_of_block_or_statement (parser); + return; + } + } + else if (!fndef_ok) + { + c_parser_error (parser, "expected %<=%>, %<,%>, %<;%>, " + "% or %<__attribute__%>"); + c_parser_skip_to_end_of_block_or_statement (parser); + return; + } + + if (nested) + { + if (pedantic) + pedwarn ("ISO C forbids nested functions"); + push_function_context (); + } + if (!start_function (specs, declarator, all_prefix_attrs)) + { + + + + c_parser_error (parser, "expected %<=%>, %<,%>, %<;%>, % " + "or %<__attribute__%>"); + if (nested) + pop_function_context (); + break; + } +# 1433 "../../GCC/gcc/c-parser.c" + while (c_parser_next_token_is_not (parser, CPP_EOF) + && c_parser_next_token_is_not (parser, CPP_OPEN_BRACE)) + c_parser_declaration_or_fndef (parser, 0, 0, 1, 0); + (__extension__ ({ const tree __t = (current_function_decl); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_MINIMAL)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_MINIMAL), "../../GCC/gcc/c-parser.c", 1436, __FUNCTION__); __t; })->decl_minimal.locus) + = c_parser_peek_token (parser)->location; + store_parm_decls (); + fnbody = c_parser_compound_statement (parser); + if (nested) + { + tree decl = current_function_decl; + add_stmt (fnbody); + finish_function (); + pop_function_context (); + add_stmt (build_stmt (DECL_EXPR, decl)); + } + else + { + add_stmt (fnbody); + finish_function (); + } + break; + } +} +# 1464 "../../GCC/gcc/c-parser.c" +static void +c_parser_asm_definition (c_parser *parser) +{ + tree asm_str = c_parser_simple_asm_expr (parser); + if (asm_str) + cgraph_add_asm_node (asm_str); + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); +} +# 1551 "../../GCC/gcc/c-parser.c" +static void +c_parser_declspecs (c_parser *parser, struct c_declspecs *specs, + unsigned char scspec_ok, unsigned char typespec_ok, unsigned char start_attr_ok) +{ + unsigned char attrs_ok = start_attr_ok; + unsigned char seen_type = specs->type_seen_p; + while (c_parser_next_token_is (parser, CPP_NAME) + || c_parser_next_token_is (parser, ((enum cpp_ttype) (N_TTYPES + 1))) + || ((c_language & clk_objc) && c_parser_next_token_is (parser, CPP_LESS))) + { + struct c_typespec t; + tree attrs; + if (c_parser_next_token_is (parser, CPP_NAME)) + { + tree value = c_parser_peek_token (parser)->value; + c_id_kind kind = c_parser_peek_token (parser)->id_kind; + + + + if (!typespec_ok || seen_type + || (kind != C_ID_TYPENAME && kind != C_ID_CLASSNAME)) + break; + c_parser_consume_token (parser); + seen_type = 1; + attrs_ok = 1; + if (kind == C_ID_TYPENAME + && (!(c_language & clk_objc) + || c_parser_next_token_is_not (parser, CPP_LESS))) + { + t.kind = ctsk_typedef; + + + t.spec = lookup_name (value); + } + else + { + tree proto = (tree) ((void *)0); + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1588, __FUNCTION__), 0 : 0)); + t.kind = ctsk_objc; + if (c_parser_next_token_is (parser, CPP_LESS)) + proto = c_parser_objc_protocol_refs (parser); + t.spec = objc_get_protocol_qualified_type (value, proto); + } + declspecs_add_type (specs, t); + continue; + } + if (c_parser_next_token_is (parser, CPP_LESS)) + { + + + tree proto; + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1602, __FUNCTION__), 0 : 0)); + if (!typespec_ok || seen_type) + break; + proto = c_parser_objc_protocol_refs (parser); + t.kind = ctsk_objc; + t.spec = objc_get_protocol_qualified_type ((tree) ((void *)0), proto); + declspecs_add_type (specs, t); + continue; + } + ((void)(!(c_parser_next_token_is (parser, ((enum cpp_ttype) (N_TTYPES + 1)))) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1611, __FUNCTION__), 0 : 0)); + switch (c_parser_peek_token (parser)->keyword) + { + case RID_STATIC: + case RID_EXTERN: + case RID_REGISTER: + case RID_TYPEDEF: + case RID_INLINE: + case RID_AUTO: + case RID_THREAD: + if (!scspec_ok) + goto out; + attrs_ok = 1; + + + + declspecs_add_scspec (specs, c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + break; + case RID_UNSIGNED: + case RID_LONG: + case RID_SHORT: + case RID_SIGNED: + case RID_COMPLEX: + case RID_INT: + case RID_CHAR: + case RID_FLOAT: + case RID_DOUBLE: + case RID_VOID: + case RID_DFLOAT32: + case RID_DFLOAT64: + case RID_DFLOAT128: + case RID_BOOL: + + case RID_CbC_CODE: + + if (!typespec_ok) + goto out; + attrs_ok = 1; + seen_type = 1; + do { if ((c_language & clk_objc)) objc_need_raw_identifier = 1; } while (0); + t.kind = ctsk_resword; + t.spec = c_parser_peek_token (parser)->value; + declspecs_add_type (specs, t); + c_parser_consume_token (parser); + break; + case RID_ENUM: + if (!typespec_ok) + goto out; + attrs_ok = 1; + seen_type = 1; + t = c_parser_enum_specifier (parser); + declspecs_add_type (specs, t); + break; + case RID_STRUCT: + case RID_UNION: + if (!typespec_ok) + goto out; + attrs_ok = 1; + seen_type = 1; + t = c_parser_struct_or_union_specifier (parser); + declspecs_add_type (specs, t); + break; + case RID_TYPEOF: + + + + if (!typespec_ok || seen_type) + goto out; + attrs_ok = 1; + seen_type = 1; + t = c_parser_typeof_specifier (parser); + declspecs_add_type (specs, t); + break; + case RID_CONST: + case RID_VOLATILE: + case RID_RESTRICT: + attrs_ok = 1; + declspecs_add_qual (specs, c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + break; + case RID_ATTRIBUTE: + if (!attrs_ok) + goto out; + attrs = c_parser_attributes (parser); + declspecs_add_attrs (specs, attrs); + break; + default: + goto out; + } + } + out: ; +} +# 1727 "../../GCC/gcc/c-parser.c" +static struct c_typespec +c_parser_enum_specifier (c_parser *parser) +{ + struct c_typespec ret; + tree attrs; + tree ident = (tree) ((void *)0); + ((void)(!(c_parser_next_token_is_keyword (parser, RID_ENUM)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1733, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + attrs = c_parser_attributes (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + ident = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + { + + tree type = start_enum (ident); + tree postfix_attrs; + + + tree values = (tree) ((void *)0); + c_parser_consume_token (parser); + while (1) + { + tree enum_id; + tree enum_value; + tree enum_decl; + unsigned char seen_comma; + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, ((void *)0)); + values = global_trees[TI_ERROR_MARK]; + break; + } + enum_id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_EQ)) + { + c_parser_consume_token (parser); + enum_value = c_parser_expr_no_commas (parser, ((void *)0)).value; + } + else + enum_value = (tree) ((void *)0); + enum_decl = build_enumerator (enum_id, enum_value); + ((enum_decl)->common.chain) = values; + values = enum_decl; + seen_comma = 0; + if (c_parser_next_token_is (parser, CPP_COMMA)) + { + seen_comma = 1; + c_parser_consume_token (parser); + } + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + if (seen_comma && pedantic && !flag_isoc99) + pedwarn ("comma at end of enumerator list"); + c_parser_consume_token (parser); + break; + } + if (!seen_comma) + { + c_parser_error (parser, "expected %<,%> or %<}%>"); + c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, ((void *)0)); + values = global_trees[TI_ERROR_MARK]; + break; + } + } + postfix_attrs = c_parser_attributes (parser); + ret.spec = finish_enum (type, nreverse (values), + chainon (attrs, postfix_attrs)); + ret.kind = ctsk_tagdef; + return ret; + } + else if (!ident) + { + c_parser_error (parser, "expected %<{%>"); + ret.spec = global_trees[TI_ERROR_MARK]; + ret.kind = ctsk_tagref; + return ret; + } + ret = parser_xref_tag (ENUMERAL_TYPE, ident); + + + if (pedantic && !((__extension__ ({ const tree __t = (ret.spec); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "../../GCC/gcc/c-parser.c", 1812, __FUNCTION__); __t; })->type.size) != (tree) ((void *)0))) + pedwarn ("ISO C forbids forward references to % types"); + return ret; +} +# 1856 "../../GCC/gcc/c-parser.c" +static struct c_typespec +c_parser_struct_or_union_specifier (c_parser *parser) +{ + struct c_typespec ret; + tree attrs; + tree ident = (tree) ((void *)0); + enum tree_code code; + switch (c_parser_peek_token (parser)->keyword) + { + case RID_STRUCT: + code = RECORD_TYPE; + break; + case RID_UNION: + code = UNION_TYPE; + break; + default: + (fancy_abort ("../../GCC/gcc/c-parser.c", 1872, __FUNCTION__)); + } + c_parser_consume_token (parser); + attrs = c_parser_attributes (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + ident = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + { + + + tree type = start_struct (code, ident); + tree postfix_attrs; +# 1897 "../../GCC/gcc/c-parser.c" + tree contents = (tree) ((void *)0); + c_parser_consume_token (parser); + + + if (c_parser_next_token_is_keyword (parser, RID_AT_DEFS)) + { + tree name; + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 1904, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + goto end_at_defs; + if (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME) + { + name = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + else + { + c_parser_error (parser, "expected class name"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + goto end_at_defs; + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + contents = nreverse (objc_get_class_ivars (name)); + } + end_at_defs: + + + + while (1) + { + tree decls; + + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + if (pedantic) + pedwarn ("extra semicolon in struct or union specified"); + c_parser_consume_token (parser); + continue; + } + + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + c_parser_consume_token (parser); + break; + } + + if (c_parser_next_token_is (parser, CPP_PRAGMA)) + { + c_parser_pragma (parser, pragma_external); + continue; + } + + + decls = c_parser_struct_declaration (parser); + contents = chainon (decls, contents); + + + + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + c_parser_consume_token (parser); + else + { + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + pedwarn ("no semicolon at end of struct or union"); + else + { + c_parser_error (parser, "expected %<;%>"); + c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, ((void *)0)); + break; + } + } + } + postfix_attrs = c_parser_attributes (parser); + ret.spec = finish_struct (type, nreverse (contents), + chainon (attrs, postfix_attrs)); + ret.kind = ctsk_tagdef; + return ret; + } + else if (!ident) + { + c_parser_error (parser, "expected %<{%>"); + ret.spec = global_trees[TI_ERROR_MARK]; + ret.kind = ctsk_tagref; + return ret; + } + ret = parser_xref_tag (code, ident); + return ret; +} +# 2020 "../../GCC/gcc/c-parser.c" +static tree +c_parser_struct_declaration (c_parser *parser) +{ + struct c_declspecs *specs; + tree prefix_attrs; + tree all_prefix_attrs; + tree decls; + if (c_parser_next_token_is_keyword (parser, RID_EXTENSION)) + { + int ext; + tree decl; + ext = disable_extension_diagnostics (); + c_parser_consume_token (parser); + decl = c_parser_struct_declaration (parser); + restore_extension_diagnostics (ext); + return decl; + } + specs = build_null_declspecs (); + c_parser_declspecs (parser, specs, 0, 1, 1); + if (parser->error) + return (tree) ((void *)0); + if (!specs->declspecs_seen_p) + { + c_parser_error (parser, "expected specifier-qualifier-list"); + return (tree) ((void *)0); + } + finish_declspecs (specs); + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + tree ret; + if (!specs->type_seen_p) + { + if (pedantic) + pedwarn ("ISO C forbids member declarations with no members"); + shadow_tag_warned (specs, pedantic); + ret = (tree) ((void *)0); + } + else + { + + + + ret = grokfield (build_id_declarator ((tree) ((void *)0)), specs, (tree) ((void *)0)); + } + return ret; + } + pending_xref_error (); + prefix_attrs = specs->attrs; + all_prefix_attrs = prefix_attrs; + specs->attrs = (tree) ((void *)0); + decls = (tree) ((void *)0); + while (1) + { + + struct c_declarator *declarator; + unsigned char dummy = 0; + if (c_parser_next_token_is (parser, CPP_COLON)) + declarator = build_id_declarator ((tree) ((void *)0)); + else + declarator = c_parser_declarator (parser, specs->type_seen_p, + C_DTR_NORMAL, &dummy); + if (declarator == ((void *)0)) + { + c_parser_skip_to_end_of_block_or_statement (parser); + break; + } + if (c_parser_next_token_is (parser, CPP_COLON) + || c_parser_next_token_is (parser, CPP_COMMA) + || c_parser_next_token_is (parser, CPP_SEMICOLON) + || c_parser_next_token_is (parser, CPP_CLOSE_BRACE) + || c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + { + tree postfix_attrs = (tree) ((void *)0); + tree width = (tree) ((void *)0); + tree d; + if (c_parser_next_token_is (parser, CPP_COLON)) + { + c_parser_consume_token (parser); + width = c_parser_expr_no_commas (parser, ((void *)0)).value; + } + if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + postfix_attrs = c_parser_attributes (parser); + d = grokfield (declarator, specs, width); + decl_attributes (&d, chainon (postfix_attrs, + all_prefix_attrs), 0); + ((d)->common.chain) = decls; + decls = d; + if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + all_prefix_attrs = chainon (c_parser_attributes (parser), + prefix_attrs); + else + all_prefix_attrs = prefix_attrs; + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else if (c_parser_next_token_is (parser, CPP_SEMICOLON) + || c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + + break; + } + else + { + c_parser_error (parser, "expected %<,%>, %<;%> or %<}%>"); + break; + } + } + else + { + c_parser_error (parser, + "expected %<:%>, %<,%>, %<;%>, %<}%> or " + "%<__attribute__%>"); + break; + } + } + return decls; +} +# 2144 "../../GCC/gcc/c-parser.c" +static struct c_typespec +c_parser_typeof_specifier (c_parser *parser) +{ + struct c_typespec ret; + ret.kind = ctsk_typeof; + ret.spec = global_trees[TI_ERROR_MARK]; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_TYPEOF)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 2150, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + skip_evaluation++; + in_typeof++; + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + skip_evaluation--; + in_typeof--; + return ret; + } + if (c_parser_next_token_starts_typename (parser)) + { + struct c_type_name *type = c_parser_type_name (parser); + skip_evaluation--; + in_typeof--; + if (type != ((void *)0)) + { + ret.spec = groktypename (type); + pop_maybe_used (variably_modified_type_p (ret.spec, (tree) ((void *)0))); + } + } + else + { + unsigned char was_vm; + struct c_expr expr = c_parser_expression (parser); + skip_evaluation--; + in_typeof--; + if (((enum tree_code) (expr.value)->common.code) == COMPONENT_REF + && ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (expr.value); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 2178, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 2178, __FUNCTION__); &__t->exp.operands[__i]; }))); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 2178, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_COMMON)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_COMMON), "../../GCC/gcc/c-parser.c", 2178, __FUNCTION__); __t; })->decl_common.lang_flag_4) == 1)) + error ("% applied to a bit-field"); + ret.spec = ((expr.value)->common.type); + was_vm = variably_modified_type_p (ret.spec, (tree) ((void *)0)); + + + + if (!skip_evaluation && was_vm) + { + tree e = expr.value; + + + + if ((tree_code_type[(int) (((enum tree_code) (e)->common.code))] == tcc_declaration) || (tree_code_type[(int) (((enum tree_code) (e)->common.code))] == tcc_constant)) + e = build1_stat (NOP_EXPR,global_trees[TI_VOID_TYPE],e ); + + if (((tree_code_type[(int) (((enum tree_code) (e)->common.code))]) >= tcc_reference && (tree_code_type[(int) (((enum tree_code) (e)->common.code))]) <= tcc_expression)) + annotate_with_locus (e, input_location); + + add_stmt (e); + } + pop_maybe_used (was_vm); + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + return ret; +} +# 2282 "../../GCC/gcc/c-parser.c" +static struct c_declarator * +c_parser_declarator (c_parser *parser, unsigned char type_seen_p, c_dtr_syn kind, + unsigned char *seen_id) +{ + + if (c_parser_next_token_is (parser, CPP_MULT)) + { + struct c_declspecs *quals_attrs = build_null_declspecs (); + struct c_declarator *inner; + c_parser_consume_token (parser); + c_parser_declspecs (parser, quals_attrs, 0, 0, 1); + inner = c_parser_declarator (parser, type_seen_p, kind, seen_id); + if (inner == ((void *)0)) + return ((void *)0); + else + return make_pointer_declarator (quals_attrs, inner); + } + + + return c_parser_direct_declarator (parser, type_seen_p, kind, seen_id); +} + + + + +static struct c_declarator * +c_parser_direct_declarator (c_parser *parser, unsigned char type_seen_p, c_dtr_syn kind, + unsigned char *seen_id) +{ +# 2345 "../../GCC/gcc/c-parser.c" + if (kind != C_DTR_ABSTRACT + && c_parser_next_token_is (parser, CPP_NAME) + && ((type_seen_p + && c_parser_peek_token (parser)->id_kind == C_ID_TYPENAME) + || c_parser_peek_token (parser)->id_kind == C_ID_ID)) + { + struct c_declarator *inner + = build_id_declarator (c_parser_peek_token (parser)->value); + *seen_id = 1; + inner->id_loc = c_parser_peek_token (parser)->location; + c_parser_consume_token (parser); + return c_parser_direct_declarator_inner (parser, *seen_id, inner); + } + + if (kind != C_DTR_NORMAL + && c_parser_next_token_is (parser, CPP_OPEN_SQUARE)) + { + struct c_declarator *inner = build_id_declarator ((tree) ((void *)0)); + return c_parser_direct_declarator_inner (parser, *seen_id, inner); + } + + + + + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + tree attrs; + struct c_declarator *inner; + c_parser_consume_token (parser); + attrs = c_parser_attributes (parser); + if (kind != C_DTR_NORMAL + && (c_parser_next_token_starts_declspecs (parser) + || c_parser_next_token_is (parser, CPP_CLOSE_PAREN))) + { + struct c_arg_info *args + = c_parser_parms_declarator (parser, kind == C_DTR_NORMAL, + attrs); + if (args == ((void *)0)) + return ((void *)0); + else + { + inner + = build_function_declarator (args, + build_id_declarator ((tree) ((void *)0))); + return c_parser_direct_declarator_inner (parser, *seen_id, + inner); + } + } + + inner = c_parser_declarator (parser, type_seen_p, kind, seen_id); + if (inner != ((void *)0) && attrs != ((void *)0)) + inner = build_attrs_declarator (attrs, inner); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + c_parser_consume_token (parser); + if (inner == ((void *)0)) + return ((void *)0); + else + return c_parser_direct_declarator_inner (parser, *seen_id, inner); + } + else + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + return ((void *)0); + } + } + else + { + if (kind == C_DTR_NORMAL) + { + c_parser_error (parser, "expected identifier or %<(%>"); + return ((void *)0); + } + else + return build_id_declarator ((tree) ((void *)0)); + } +} + + + + + + +static struct c_declarator * +c_parser_direct_declarator_inner (c_parser *parser, unsigned char id_present, + struct c_declarator *inner) +{ + + if (c_parser_next_token_is (parser, CPP_OPEN_SQUARE)) + { + struct c_declarator *declarator; + struct c_declspecs *quals_attrs = build_null_declspecs (); + unsigned char static_seen; + unsigned char star_seen; + tree dimen; + c_parser_consume_token (parser); + c_parser_declspecs (parser, quals_attrs, 0, 0, 1); + static_seen = c_parser_next_token_is_keyword (parser, RID_STATIC); + if (static_seen) + c_parser_consume_token (parser); + if (static_seen && !quals_attrs->declspecs_seen_p) + c_parser_declspecs (parser, quals_attrs, 0, 0, 1); + if (!quals_attrs->declspecs_seen_p) + quals_attrs = ((void *)0); + + + + if (static_seen) + { + star_seen = 0; + dimen = c_parser_expr_no_commas (parser, ((void *)0)).value; + } + else + { + if (c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) + { + dimen = (tree) ((void *)0); + star_seen = 0; + } + else if (c_parser_next_token_is (parser, CPP_MULT)) + { + if (c_parser_peek_2nd_token (parser)->type == CPP_CLOSE_SQUARE) + { + dimen = (tree) ((void *)0); + star_seen = 1; + c_parser_consume_token (parser); + } + else + { + star_seen = 0; + dimen = c_parser_expr_no_commas (parser, ((void *)0)).value; + } + } + else + { + star_seen = 0; + dimen = c_parser_expr_no_commas (parser, ((void *)0)).value; + } + } + if (c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) + c_parser_consume_token (parser); + else + { + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + return ((void *)0); + } + declarator = build_array_declarator (dimen, quals_attrs, static_seen, + star_seen); + if (declarator == ((void *)0)) + return ((void *)0); + inner = set_array_declarator_inner (declarator, inner, !id_present); + return c_parser_direct_declarator_inner (parser, id_present, inner); + } + else if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + tree attrs; + struct c_arg_info *args; + c_parser_consume_token (parser); + attrs = c_parser_attributes (parser); + args = c_parser_parms_declarator (parser, id_present, attrs); + if (args == ((void *)0)) + return ((void *)0); + else + { + inner = build_function_declarator (args, inner); + return c_parser_direct_declarator_inner (parser, id_present, inner); + } + } + return inner; +} + + + + + + +static struct c_arg_info * +c_parser_parms_declarator (c_parser *parser, unsigned char id_list_ok, tree attrs) +{ + push_scope (); + declare_parm_level (); + + + if (id_list_ok + && !attrs + && c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_token (parser)->id_kind == C_ID_ID) + { + tree list = (tree) ((void *)0), *nextp = &list; + while (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_token (parser)->id_kind == C_ID_ID) + { + *nextp = build_tree_list_stat((tree) ((void *)0),c_parser_peek_token (parser)->value ); + + nextp = & ((*nextp)->common.chain); + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_COMMA)) + break; + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + c_parser_error (parser, "expected identifier"); + break; + } + } + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + struct c_arg_info *ret = ((struct c_arg_info *) __extension__ ({ struct obstack *__h = ((&parser_obstack)); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct c_arg_info))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); })); + ret->parms = 0; + ret->tags = 0; + ret->types = list; + ret->others = 0; + ret->pending_sizes = 0; + ret->had_vla_unspec = 0; + c_parser_consume_token (parser); + pop_scope (); + return ret; + } + else + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + pop_scope (); + return ((void *)0); + } + } + else + { + struct c_arg_info *ret = c_parser_parms_list_declarator (parser, attrs); + pop_scope (); + return ret; + } +} + + + + + +static struct c_arg_info * +c_parser_parms_list_declarator (c_parser *parser, tree attrs) +{ + unsigned char good_parm = 0; + + + + + + + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + struct c_arg_info *ret = ((struct c_arg_info *) __extension__ ({ struct obstack *__h = ((&parser_obstack)); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct c_arg_info))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); })); + ret->parms = 0; + ret->tags = 0; + ret->types = 0; + ret->others = 0; + ret->pending_sizes = 0; + ret->had_vla_unspec = 0; + c_parser_consume_token (parser); + return ret; + } + if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) + { + struct c_arg_info *ret = ((struct c_arg_info *) __extension__ ({ struct obstack *__h = ((&parser_obstack)); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct c_arg_info))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); })); + ret->parms = 0; + ret->tags = 0; + ret->others = 0; + ret->pending_sizes = 0; + ret->had_vla_unspec = 0; + + ret->types = global_trees[TI_ERROR_MARK]; + error ("ISO C requires a named argument before %<...%>"); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + c_parser_consume_token (parser); + return ret; + } + else + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + return ((void *)0); + } + } + + + + while (1) + { + + struct c_parm *parm = c_parser_parameter_declaration (parser, attrs); + attrs = (tree) ((void *)0); + if (parm != ((void *)0)) + { + good_parm = 1; + push_parm_decl (parm); + } + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + tree new_attrs; + c_parser_consume_token (parser); + mark_forward_parm_decls (); + new_attrs = c_parser_attributes (parser); + return c_parser_parms_list_declarator (parser, new_attrs); + } + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + c_parser_consume_token (parser); + if (good_parm) + return get_parm_info (0); + else + { + struct c_arg_info *ret + = ((struct c_arg_info *) __extension__ ({ struct obstack *__h = ((&parser_obstack)); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct c_arg_info))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); })); + ret->parms = 0; + ret->tags = 0; + ret->types = 0; + ret->others = 0; + ret->pending_sizes = 0; + ret->had_vla_unspec = 0; + return ret; + } + } + if (!c_parser_require (parser, CPP_COMMA, + "expected %<;%>, %<,%> or %<)%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return ((void *)0); + } + if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) + { + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + c_parser_consume_token (parser); + if (good_parm) + return get_parm_info (1); + else + { + struct c_arg_info *ret + = ((struct c_arg_info *) __extension__ ({ struct obstack *__h = ((&parser_obstack)); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct c_arg_info))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); })); + ret->parms = 0; + ret->tags = 0; + ret->types = 0; + ret->others = 0; + ret->pending_sizes = 0; + ret->had_vla_unspec = 0; + return ret; + } + } + else + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + return ((void *)0); + } + } + } +} + + + + +static struct c_parm * +c_parser_parameter_declaration (c_parser *parser, tree attrs) +{ + struct c_declspecs *specs; + struct c_declarator *declarator; + tree prefix_attrs; + tree postfix_attrs = (tree) ((void *)0); + unsigned char dummy = 0; + if (!c_parser_next_token_starts_declspecs (parser)) + { + + + c_parser_error (parser, + "expected declaration specifiers or %<...%>"); + c_parser_skip_to_end_of_parameter (parser); + return ((void *)0); + } + specs = build_null_declspecs (); + if (attrs) + { + declspecs_add_attrs (specs, attrs); + attrs = (tree) ((void *)0); + } + c_parser_declspecs (parser, specs, 1, 1, 1); + finish_declspecs (specs); + pending_xref_error (); + prefix_attrs = specs->attrs; + specs->attrs = (tree) ((void *)0); + declarator = c_parser_declarator (parser, specs->type_seen_p, + C_DTR_PARM, &dummy); + if (declarator == ((void *)0)) + { + c_parser_skip_until_found (parser, CPP_COMMA, ((void *)0)); + return ((void *)0); + } + if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + postfix_attrs = c_parser_attributes (parser); + return build_c_parm (specs, chainon (postfix_attrs, prefix_attrs), + declarator); +} +# 2762 "../../GCC/gcc/c-parser.c" +static tree +c_parser_asm_string_literal (c_parser *parser) +{ + tree str; + if (c_parser_next_token_is (parser, CPP_STRING)) + { + str = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + else if (c_parser_next_token_is (parser, CPP_WSTRING)) + { + error ("wide string literal in %"); + str = build_string (1, ""); + c_parser_consume_token (parser); + } + else + { + c_parser_error (parser, "expected string literal"); + str = (tree) ((void *)0); + } + return str; +} +# 2793 "../../GCC/gcc/c-parser.c" +static tree +c_parser_simple_asm_expr (c_parser *parser) +{ + tree str; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_ASM)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 2797, __FUNCTION__), 0 : 0)); + + + c_lex_string_translate = 0; + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + c_lex_string_translate = 1; + return (tree) ((void *)0); + } + str = c_parser_asm_string_literal (parser); + c_lex_string_translate = 1; + if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return (tree) ((void *)0); + } + return str; +} +# 2844 "../../GCC/gcc/c-parser.c" +static tree +c_parser_attributes (c_parser *parser) +{ + tree attrs = (tree) ((void *)0); + while (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) + { + + + c_lex_string_translate = 0; + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + c_lex_string_translate = 1; + return attrs; + } + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return attrs; + } + + while (c_parser_next_token_is (parser, CPP_COMMA) + || c_parser_next_token_is (parser, CPP_NAME) + || c_parser_next_token_is (parser, ((enum cpp_ttype) (N_TTYPES + 1)))) + { + tree attr, attr_name, attr_args; + if (c_parser_next_token_is (parser, CPP_COMMA)) + { + c_parser_consume_token (parser); + continue; + } + if (c_parser_next_token_is (parser, ((enum cpp_ttype) (N_TTYPES + 1)))) + { + + + unsigned char ok; + switch (c_parser_peek_token (parser)->keyword) + { + case RID_STATIC: + case RID_UNSIGNED: + case RID_LONG: + case RID_CONST: + case RID_EXTERN: + case RID_REGISTER: + case RID_TYPEDEF: + case RID_SHORT: + case RID_INLINE: + case RID_VOLATILE: + case RID_SIGNED: + case RID_AUTO: + case RID_RESTRICT: + case RID_COMPLEX: + case RID_THREAD: + case RID_INT: + case RID_CHAR: + case RID_FLOAT: + case RID_DOUBLE: + case RID_VOID: + case RID_DFLOAT32: + case RID_DFLOAT64: + case RID_DFLOAT128: + case RID_BOOL: + ok = 1; + break; + default: + ok = 0; + break; + } + if (!ok) + break; + } + attr_name = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_OPEN_PAREN)) + { + attr = build_tree_list_stat(attr_name,(tree) ((void *)0) ); + attrs = chainon (attrs, attr); + continue; + } + c_parser_consume_token (parser); + + + + + if (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_token (parser)->id_kind == C_ID_ID + && ((c_parser_peek_2nd_token (parser)->type == CPP_COMMA) + || (c_parser_peek_2nd_token (parser)->type + == CPP_CLOSE_PAREN))) + { + tree arg1 = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + attr_args = build_tree_list_stat((tree) ((void *)0),arg1 ); + else + { + c_parser_consume_token (parser); + attr_args = tree_cons_stat ((tree) ((void *)0),arg1,c_parser_expr_list (parser, 0) ); + + } + } + else + { + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + attr_args = (tree) ((void *)0); + else + attr_args = c_parser_expr_list (parser, 0); + } + attr = build_tree_list_stat(attr_name,attr_args ); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + c_parser_consume_token (parser); + else + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + return attrs; + } + attrs = chainon (attrs, attr); + } + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + c_parser_consume_token (parser); + else + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + return attrs; + } + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + c_parser_consume_token (parser); + else + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + return attrs; + } + c_lex_string_translate = 1; + } + return attrs; +} + + + + + + + +static struct c_type_name * +c_parser_type_name (c_parser *parser) +{ + struct c_declspecs *specs = build_null_declspecs (); + struct c_declarator *declarator; + struct c_type_name *ret; + unsigned char dummy = 0; + c_parser_declspecs (parser, specs, 0, 1, 1); + if (!specs->declspecs_seen_p) + { + c_parser_error (parser, "expected specifier-qualifier-list"); + return ((void *)0); + } + pending_xref_error (); + finish_declspecs (specs); + declarator = c_parser_declarator (parser, specs->type_seen_p, + C_DTR_ABSTRACT, &dummy); + if (declarator == ((void *)0)) + return ((void *)0); + ret = ((struct c_type_name *) __extension__ ({ struct obstack *__h = ((&parser_obstack)); __extension__ ({ struct obstack *__o = (__h); int __len = ((sizeof (struct c_type_name))); if (__o->chunk_limit - __o->next_free < __len) _obstack_newchunk (__o, __len); ((__o)->next_free += (__len)); (void) 0; }); __extension__ ({ struct obstack *__o1 = (__h); void *value; value = (void *) __o1->object_base; if (__o1->next_free == value) __o1->maybe_empty_object = 1; __o1->next_free = (((((__o1->next_free) - (char *) 0)+__o1->alignment_mask) & ~ (__o1->alignment_mask)) + (char *) 0); if (__o1->next_free - (char *)__o1->chunk > __o1->chunk_limit - (char *)__o1->chunk) __o1->next_free = __o1->chunk_limit; __o1->object_base = __o1->next_free; value; }); })); + ret->specs = specs; + ret->declarator = declarator; + return ret; +} +# 3062 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_initializer (c_parser *parser) +{ + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + return c_parser_braced_init (parser, (tree) ((void *)0), 0); + else + { + struct c_expr ret; + ret = c_parser_expr_no_commas (parser, ((void *)0)); + if (((enum tree_code) (ret.value)->common.code) != STRING_CST + && ((enum tree_code) (ret.value)->common.code) != COMPOUND_LITERAL_EXPR) + ret = default_function_array_conversion (ret); + return ret; + } +} + + + + + + + +static struct c_expr +c_parser_braced_init (c_parser *parser, tree type, unsigned char nested_p) +{ + ((void)(!(c_parser_next_token_is (parser, CPP_OPEN_BRACE)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3087, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (nested_p) + push_init_level (0); + else + really_start_incremental_init (type); + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + if (pedantic) + pedwarn ("ISO C forbids empty initializer braces"); + } + else + { + + + while (1) + { + c_parser_initelt (parser); + if (parser->error) + break; + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + break; + } + } + if (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE)) + { + struct c_expr ret; + ret.value = global_trees[TI_ERROR_MARK]; + ret.original_code = ERROR_MARK; + c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, "expected %<}%>"); + return ret; + } + c_parser_consume_token (parser); + return pop_init_level (0); +} + + + +static void +c_parser_initelt (c_parser *parser) +{ + + + + if (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_2nd_token (parser)->type == CPP_COLON) + { + + set_init_label (c_parser_peek_token (parser)->value); + if (pedantic) + pedwarn ("obsolete use of designated initializer with %<:%>"); + c_parser_consume_token (parser); + c_parser_consume_token (parser); + } + else + { + + + int des_seen = 0; + while (c_parser_next_token_is (parser, CPP_OPEN_SQUARE) + || c_parser_next_token_is (parser, CPP_DOT)) + { + int des_prev = des_seen; + if (des_seen < 2) + des_seen++; + if (c_parser_next_token_is (parser, CPP_DOT)) + { + des_seen = 2; + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + set_init_label (c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + } + else + { + struct c_expr init; + init.value = global_trees[TI_ERROR_MARK]; + init.original_code = ERROR_MARK; + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_COMMA, ((void *)0)); + process_init_element (init); + return; + } + } + else + { + tree first, second; +# 3190 "../../GCC/gcc/c-parser.c" + if (des_prev == 1 && (c_language & clk_objc)) + { + des_seen = des_prev; + break; + } + if (des_prev == 0 && (c_language & clk_objc)) + { + + + + + + + + tree rec, args; + struct c_expr mexpr; + c_parser_consume_token (parser); + if (c_parser_peek_token (parser)->type == CPP_NAME + && ((c_parser_peek_token (parser)->id_kind + == C_ID_TYPENAME) + || (c_parser_peek_token (parser)->id_kind + == C_ID_CLASSNAME))) + { + + tree id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + rec = objc_get_class_reference (id); + goto parse_message_args; + } + first = c_parser_expr_no_commas (parser, ((void *)0)).value; + if (c_parser_next_token_is (parser, CPP_ELLIPSIS) + || c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) + goto array_desig_after_first; + + + + rec = first; + while (c_parser_next_token_is (parser, CPP_COMMA)) + { + struct c_expr next; + c_parser_consume_token (parser); + next = c_parser_expr_no_commas (parser, ((void *)0)); + next = default_function_array_conversion (next); + rec = build_compound_expr (rec, next.value); + } + parse_message_args: + + args = c_parser_objc_message_args (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + mexpr.value + = objc_build_message_expr (build_tree_list_stat(rec,args )); + mexpr.original_code = ERROR_MARK; + + + + c_parser_initval (parser, &mexpr); + return; + } + c_parser_consume_token (parser); + first = c_parser_expr_no_commas (parser, ((void *)0)).value; + array_desig_after_first: + if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) + { + c_parser_consume_token (parser); + second = c_parser_expr_no_commas (parser, ((void *)0)).value; + } + else + second = (tree) ((void *)0); + if (c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) + { + c_parser_consume_token (parser); + set_init_index (first, second); + if (pedantic && second) + pedwarn ("ISO C forbids specifying range of " + "elements to initialize"); + } + else + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + } + } + if (des_seen >= 1) + { + if (c_parser_next_token_is (parser, CPP_EQ)) + { + if (pedantic && !flag_isoc99) + pedwarn ("ISO C90 forbids specifying subobject to initialize"); + c_parser_consume_token (parser); + } + else + { + if (des_seen == 1) + { + if (pedantic) + pedwarn ("obsolete use of designated initializer " + "without %<=%>"); + } + else + { + struct c_expr init; + init.value = global_trees[TI_ERROR_MARK]; + init.original_code = ERROR_MARK; + c_parser_error (parser, "expected %<=%>"); + c_parser_skip_until_found (parser, CPP_COMMA, ((void *)0)); + process_init_element (init); + return; + } + } + } + } + c_parser_initval (parser, ((void *)0)); +} + + + + + + + +static void +c_parser_initval (c_parser *parser, struct c_expr *after) +{ + struct c_expr init; + ((void)(!(!after || (c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3314, __FUNCTION__), 0 : 0)); + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE) && !after) + init = c_parser_braced_init (parser, (tree) ((void *)0), 1); + else + { + init = c_parser_expr_no_commas (parser, after); + if (init.value != (tree) ((void *)0) + && ((enum tree_code) (init.value)->common.code) != STRING_CST + && ((enum tree_code) (init.value)->common.code) != COMPOUND_LITERAL_EXPR) + init = default_function_array_conversion (init); + } + process_init_element (init); +} +# 3381 "../../GCC/gcc/c-parser.c" +static tree +c_parser_compound_statement (c_parser *parser) +{ + tree stmt; + if (!c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) + return global_trees[TI_ERROR_MARK]; + stmt = c_begin_compound_stmt (1); + c_parser_compound_statement_nostart (parser); + return c_end_compound_stmt (stmt, 1); +} + + + + + +static void +c_parser_compound_statement_nostart (c_parser *parser) +{ + unsigned char last_stmt = 0; + unsigned char last_label = 0; + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + c_parser_consume_token (parser); + return; + } + if (c_parser_next_token_is_keyword (parser, RID_LABEL)) + { + + + while (c_parser_next_token_is_keyword (parser, RID_LABEL)) + { + c_parser_consume_token (parser); + + + while (1) + { + tree label; + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + break; + } + label + = declare_label (c_parser_peek_token (parser)->value); + ((label)->common.lang_flag_1) = 1; + add_stmt (build_stmt (DECL_EXPR, label)); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + } + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + } + + + + if (pedantic) + pedwarn ("ISO C forbids label declarations"); + } + + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + c_parser_error (parser, "expected declaration or statement"); + c_parser_consume_token (parser); + return; + } + while (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE)) + { + location_t loc = c_parser_peek_token (parser)->location; + if (c_parser_next_token_is_keyword (parser, RID_CASE) + || c_parser_next_token_is_keyword (parser, RID_DEFAULT) + || (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_2nd_token (parser)->type == CPP_COLON)) + { + last_label = 1; + last_stmt = 0; + c_parser_label (parser); + } + else if (!last_label + && c_parser_next_token_starts_declspecs (parser)) + { + last_label = 0; + c_parser_declaration_or_fndef (parser, 1, 1, 1, 1); + if (last_stmt + && ((pedantic && !flag_isoc99) + || warn_declaration_after_statement)) + pedwarn_c90 ("%HISO C90 forbids mixed declarations and code", + &loc); + last_stmt = 0; + } + else if (!last_label + && c_parser_next_token_is_keyword (parser, RID_EXTENSION)) + { + + + + + while (c_parser_peek_2nd_token (parser)->type == ((enum cpp_ttype) (N_TTYPES + 1)) + && (c_parser_peek_2nd_token (parser)->keyword + == RID_EXTENSION)) + c_parser_consume_token (parser); + if (c_token_starts_declspecs (c_parser_peek_2nd_token (parser))) + { + int ext; + ext = disable_extension_diagnostics (); + c_parser_consume_token (parser); + last_label = 0; + c_parser_declaration_or_fndef (parser, 1, 1, 1, 1); + + + restore_extension_diagnostics (ext); + if (last_stmt + && ((pedantic && !flag_isoc99) + || warn_declaration_after_statement)) + pedwarn_c90 ("%HISO C90 forbids mixed declarations and code", + &loc); + last_stmt = 0; + } + else + goto statement; + } + else if (c_parser_next_token_is (parser, CPP_PRAGMA)) + { + + + + + + if (c_parser_pragma (parser, pragma_compound)) + last_label = 0, last_stmt = 1; + } + else if (c_parser_next_token_is (parser, CPP_EOF)) + { + c_parser_error (parser, "expected declaration or statement"); + return; + } + else + { + statement: + last_label = 0; + last_stmt = 1; + c_parser_statement_after_labels (parser); + } + + parser->error = 0; + } + if (last_label) + error ("label at end of compound statement"); + c_parser_consume_token (parser); +} +# 3549 "../../GCC/gcc/c-parser.c" +static void +c_parser_label (c_parser *parser) +{ + location_t loc1 = c_parser_peek_token (parser)->location; + tree label = (tree) ((void *)0); + if (c_parser_next_token_is_keyword (parser, RID_CASE)) + { + tree exp1, exp2; + c_parser_consume_token (parser); + exp1 = c_parser_expr_no_commas (parser, ((void *)0)).value; + if (c_parser_next_token_is (parser, CPP_COLON)) + { + c_parser_consume_token (parser); + label = do_case (exp1, (tree) ((void *)0)); + } + else if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) + { + c_parser_consume_token (parser); + exp2 = c_parser_expr_no_commas (parser, ((void *)0)).value; + if (c_parser_require (parser, CPP_COLON, "expected %<:%>")) + label = do_case (exp1, exp2); + } + else + c_parser_error (parser, "expected %<:%> or %<...%>"); + } + else if (c_parser_next_token_is_keyword (parser, RID_DEFAULT)) + { + c_parser_consume_token (parser); + if (c_parser_require (parser, CPP_COLON, "expected %<:%>")) + label = do_case ((tree) ((void *)0), (tree) ((void *)0)); + } + else + { + tree name = c_parser_peek_token (parser)->value; + tree tlab; + location_t loc2; + tree attrs; + ((void)(!(c_parser_next_token_is (parser, CPP_NAME)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3586, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + ((void)(!(c_parser_next_token_is (parser, CPP_COLON)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3588, __FUNCTION__), 0 : 0)); + loc2 = c_parser_peek_token (parser)->location; + c_parser_consume_token (parser); + attrs = c_parser_attributes (parser); + tlab = define_label (loc2, name); + if (tlab) + { + decl_attributes (&tlab, attrs, 0); + label = add_stmt (build_stmt (LABEL_EXPR, tlab)); + } + } + if (label) + annotate_with_locus (label, loc1); +} +# 3700 "../../GCC/gcc/c-parser.c" +static void +c_parser_statement (c_parser *parser) +{ + while (c_parser_next_token_is_keyword (parser, RID_CASE) + || c_parser_next_token_is_keyword (parser, RID_DEFAULT) + || (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_2nd_token (parser)->type == CPP_COLON)) + c_parser_label (parser); + c_parser_statement_after_labels (parser); +} + + + +static void +c_parser_statement_after_labels (c_parser *parser) +{ + location_t loc = c_parser_peek_token (parser)->location; + tree stmt = (tree) ((void *)0); + switch (c_parser_peek_token (parser)->type) + { + case CPP_OPEN_BRACE: + add_stmt (c_parser_compound_statement (parser)); + break; + case ((enum cpp_ttype) (N_TTYPES + 1)): + switch (c_parser_peek_token (parser)->keyword) + { + case RID_IF: + c_parser_if_statement (parser); + break; + case RID_SWITCH: + c_parser_switch_statement (parser); + break; + case RID_WHILE: + c_parser_while_statement (parser); + break; + case RID_DO: + c_parser_do_statement (parser); + break; + case RID_FOR: + c_parser_for_statement (parser); + break; + case RID_GOTO: + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + + tree id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + if ( !c_parser_next_token_is (parser, CPP_OPEN_PAREN) ) + { + stmt = c_finish_goto_label (id); + } + else + { + struct c_expr expr; + tree exprlist; + + expr.value = build_external_ref (id, 1, loc); + expr.original_code = ERROR_MARK; + + c_parser_consume_token (parser); + + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + exprlist = (tree) ((void *)0); + else + exprlist = c_parser_expr_list (parser, 1); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + expr.value = build_function_call (expr.value, exprlist); + (__extension__ ({ const tree __t = (expr.value); if (((enum tree_code) (__t)->common.code) != (CALL_EXPR)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 3769, __FUNCTION__, (CALL_EXPR), 0); __t; })->common.lang_flag_5) = 1; + + expr.original_code = ERROR_MARK; + expr = default_function_array_conversion (expr); + stmt = c_finish_return (expr.value); + } +# 3807 "../../GCC/gcc/c-parser.c" + } + else if (c_parser_next_token_is (parser, CPP_MULT)) + { + c_parser_consume_token (parser); + stmt = c_finish_goto_ptr (c_parser_expression (parser).value); + } + + else if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + } + + else + c_parser_error (parser, "expected identifier or %<*%>"); + goto expect_semicolon; + case RID_CONTINUE: + c_parser_consume_token (parser); + stmt = c_finish_bc_stmt (&c_cont_label, 0); + goto expect_semicolon; + case RID_BREAK: + c_parser_consume_token (parser); + stmt = c_finish_bc_stmt (&c_break_label, 1); + goto expect_semicolon; + case RID_RETURN: + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + stmt = c_finish_return ((tree) ((void *)0)); + c_parser_consume_token (parser); + } + else + { + stmt = c_finish_return (c_parser_expression_conv (parser).value); + goto expect_semicolon; + } + break; + case RID_ASM: + stmt = c_parser_asm_statement (parser); + break; + case RID_AT_THROW: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3846, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + stmt = objc_build_throw_stmt ((tree) ((void *)0)); + c_parser_consume_token (parser); + } + else + { + stmt + = objc_build_throw_stmt (c_parser_expression (parser).value); + goto expect_semicolon; + } + break; + case RID_AT_TRY: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3861, __FUNCTION__), 0 : 0)); + c_parser_objc_try_catch_statement (parser); + break; + case RID_AT_SYNCHRONIZED: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3865, __FUNCTION__), 0 : 0)); + c_parser_objc_synchronized_statement (parser); + break; + default: + goto expr_stmt; + } + break; + case CPP_SEMICOLON: + c_parser_consume_token (parser); + break; + case CPP_CLOSE_PAREN: + case CPP_CLOSE_SQUARE: + + + + + c_parser_error (parser, "expected statement"); + c_parser_consume_token (parser); + break; + case CPP_PRAGMA: + c_parser_pragma (parser, pragma_stmt); + break; + default: + expr_stmt: + stmt = c_finish_expr_stmt (c_parser_expression_conv (parser).value); + expect_semicolon: + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + break; + } +# 3904 "../../GCC/gcc/c-parser.c" + if (stmt && ((tree_code_type[(int) (((enum tree_code) (stmt)->common.code))]) >= tcc_reference && (tree_code_type[(int) (((enum tree_code) (stmt)->common.code))]) <= tcc_expression)) + annotate_with_locus (stmt, loc); +} + + + + + + +static tree +c_parser_paren_condition (c_parser *parser) +{ + location_t loc; + tree cond; + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + return global_trees[TI_ERROR_MARK]; + loc = c_parser_peek_token (parser)->location; + cond = c_objc_common_truthvalue_conversion + (c_parser_expression_conv (parser).value); + if (((tree_code_type[(int) (((enum tree_code) (cond)->common.code))]) >= tcc_reference && (tree_code_type[(int) (((enum tree_code) (cond)->common.code))]) <= tcc_expression)) + annotate_with_locus (cond, loc); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + return cond; +} + + + +static tree +c_parser_c99_block_statement (c_parser *parser) +{ + tree block = c_begin_compound_stmt (flag_isoc99); + c_parser_statement (parser); + return c_end_compound_stmt (block, flag_isoc99); +} + + + + + + + +static tree +c_parser_if_body (c_parser *parser, unsigned char *if_p) +{ + tree block = c_begin_compound_stmt (flag_isoc99); + while (c_parser_next_token_is_keyword (parser, RID_CASE) + || c_parser_next_token_is_keyword (parser, RID_DEFAULT) + || (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_2nd_token (parser)->type == CPP_COLON)) + c_parser_label (parser); + *if_p = c_parser_next_token_is_keyword (parser, RID_IF); + if (extra_warnings && c_parser_next_token_is (parser, CPP_SEMICOLON)) + add_stmt (build_empty_stmt ()); + c_parser_statement_after_labels (parser); + return c_end_compound_stmt (block, flag_isoc99); +} +# 3968 "../../GCC/gcc/c-parser.c" +static void +c_parser_if_statement (c_parser *parser) +{ + tree block; + location_t loc; + tree cond; + unsigned char first_if = 0, second_if = 0; + tree first_body, second_body; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_IF)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 3976, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + block = c_begin_compound_stmt (flag_isoc99); + loc = c_parser_peek_token (parser)->location; + cond = c_parser_paren_condition (parser); + first_body = c_parser_if_body (parser, &first_if); + if (c_parser_next_token_is_keyword (parser, RID_ELSE)) + { + c_parser_consume_token (parser); + second_body = c_parser_if_body (parser, &second_if); + } + else + second_body = (tree) ((void *)0); + c_finish_if_stmt (loc, cond, first_body, second_body, first_if); + add_stmt (c_end_compound_stmt (block, flag_isoc99)); +} + + + + + + + +static void +c_parser_switch_statement (c_parser *parser) +{ + tree block, expr, body, save_break; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_SWITCH)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4003, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + block = c_begin_compound_stmt (flag_isoc99); + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr = c_parser_expression (parser).value; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + else + expr = global_trees[TI_ERROR_MARK]; + c_start_case (expr); + save_break = c_break_label; + c_break_label = (tree) ((void *)0); + body = c_parser_c99_block_statement (parser); + c_finish_case (body); + if (c_break_label) + add_stmt (build1_stat (LABEL_EXPR,global_trees[TI_VOID_TYPE],c_break_label )); + c_break_label = save_break; + add_stmt (c_end_compound_stmt (block, flag_isoc99)); +} + + + + + + + +static void +c_parser_while_statement (c_parser *parser) +{ + tree block, cond, body, save_break, save_cont; + location_t loc; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_WHILE)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4035, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + block = c_begin_compound_stmt (flag_isoc99); + loc = c_parser_peek_token (parser)->location; + cond = c_parser_paren_condition (parser); + save_break = c_break_label; + c_break_label = (tree) ((void *)0); + save_cont = c_cont_label; + c_cont_label = (tree) ((void *)0); + body = c_parser_c99_block_statement (parser); + c_finish_loop (loc, cond, ((void *)0), body, c_break_label, c_cont_label, 1); + add_stmt (c_end_compound_stmt (block, flag_isoc99)); + c_break_label = save_break; + c_cont_label = save_cont; +} + + + + + + + +static void +c_parser_do_statement (c_parser *parser) +{ + tree block, cond, body, save_break, save_cont, new_break, new_cont; + location_t loc; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_DO)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4062, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + block = c_begin_compound_stmt (flag_isoc99); + loc = c_parser_peek_token (parser)->location; + save_break = c_break_label; + c_break_label = (tree) ((void *)0); + save_cont = c_cont_label; + c_cont_label = (tree) ((void *)0); + body = c_parser_c99_block_statement (parser); + c_parser_require_keyword (parser, RID_WHILE, "expected %"); + new_break = c_break_label; + c_break_label = save_break; + new_cont = c_cont_label; + c_cont_label = save_cont; + cond = c_parser_paren_condition (parser); + if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) + c_parser_skip_to_end_of_block_or_statement (parser); + c_finish_loop (loc, cond, ((void *)0), body, new_break, new_cont, 0); + add_stmt (c_end_compound_stmt (block, flag_isoc99)); +} +# 4099 "../../GCC/gcc/c-parser.c" +static void +c_parser_for_statement (c_parser *parser) +{ + tree block, cond, incr, save_break, save_cont, body; + location_t loc; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_FOR)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4104, __FUNCTION__), 0 : 0)); + loc = c_parser_peek_token (parser)->location; + c_parser_consume_token (parser); + block = c_begin_compound_stmt (flag_isoc99); + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + c_parser_consume_token (parser); + c_finish_expr_stmt ((tree) ((void *)0)); + } + else if (c_parser_next_token_starts_declspecs (parser)) + { + c_parser_declaration_or_fndef (parser, 1, 1, 1, 1); + check_for_loop_decls (); + } + else if (c_parser_next_token_is_keyword (parser, RID_EXTENSION)) + { + + + + + while (c_parser_peek_2nd_token (parser)->type == ((enum cpp_ttype) (N_TTYPES + 1)) + && (c_parser_peek_2nd_token (parser)->keyword + == RID_EXTENSION)) + c_parser_consume_token (parser); + if (c_token_starts_declspecs (c_parser_peek_2nd_token (parser))) + { + int ext; + ext = disable_extension_diagnostics (); + c_parser_consume_token (parser); + c_parser_declaration_or_fndef (parser, 1, 1, 1, 1); + restore_extension_diagnostics (ext); + check_for_loop_decls (); + } + else + goto init_expr; + } + else + { + init_expr: + c_finish_expr_stmt (c_parser_expression (parser).value); + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + } + + loc = c_parser_peek_token (parser)->location; + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + c_parser_consume_token (parser); + cond = (tree) ((void *)0); + } + else + { + tree ocond = c_parser_expression_conv (parser).value; + cond = c_objc_common_truthvalue_conversion (ocond); + if (((tree_code_type[(int) (((enum tree_code) (cond)->common.code))]) >= tcc_reference && (tree_code_type[(int) (((enum tree_code) (cond)->common.code))]) <= tcc_expression)) + annotate_with_locus (cond, loc); + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + } + + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + incr = c_process_expr_stmt ((tree) ((void *)0)); + else + incr = c_process_expr_stmt (c_parser_expression (parser).value); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + else + { + cond = global_trees[TI_ERROR_MARK]; + incr = global_trees[TI_ERROR_MARK]; + } + save_break = c_break_label; + c_break_label = (tree) ((void *)0); + save_cont = c_cont_label; + c_cont_label = (tree) ((void *)0); + body = c_parser_c99_block_statement (parser); + c_finish_loop (loc, cond, incr, body, c_break_label, c_cont_label, 1); + add_stmt (c_end_compound_stmt (block, flag_isoc99)); + c_break_label = save_break; + c_cont_label = save_cont; +} +# 4203 "../../GCC/gcc/c-parser.c" +static tree +c_parser_asm_statement (c_parser *parser) +{ + tree quals, str, outputs, inputs, clobbers, ret; + unsigned char simple; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_ASM)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4208, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (c_parser_next_token_is_keyword (parser, RID_VOLATILE)) + { + quals = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + else if (c_parser_next_token_is_keyword (parser, RID_CONST) + || c_parser_next_token_is_keyword (parser, RID_RESTRICT)) + { + warning (0, "%E qualifier ignored on asm", + c_parser_peek_token (parser)->value); + quals = (tree) ((void *)0); + c_parser_consume_token (parser); + } + else + quals = (tree) ((void *)0); + + + c_lex_string_translate = 0; + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + c_lex_string_translate = 1; + return (tree) ((void *)0); + } + str = c_parser_asm_string_literal (parser); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + simple = 1; + outputs = (tree) ((void *)0); + inputs = (tree) ((void *)0); + clobbers = (tree) ((void *)0); + goto done_asm; + } + if (!c_parser_require (parser, CPP_COLON, "expected %<:%> or %<)%>")) + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return (tree) ((void *)0); + } + simple = 0; + + if (c_parser_next_token_is (parser, CPP_COLON) + || c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + outputs = (tree) ((void *)0); + else + outputs = c_parser_asm_operands (parser, 0); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + inputs = (tree) ((void *)0); + clobbers = (tree) ((void *)0); + goto done_asm; + } + if (!c_parser_require (parser, CPP_COLON, "expected %<:%> or %<)%>")) + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return (tree) ((void *)0); + } + + if (c_parser_next_token_is (parser, CPP_COLON) + || c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + inputs = (tree) ((void *)0); + else + inputs = c_parser_asm_operands (parser, 1); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + { + clobbers = (tree) ((void *)0); + goto done_asm; + } + if (!c_parser_require (parser, CPP_COLON, "expected %<:%> or %<)%>")) + { + c_lex_string_translate = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return (tree) ((void *)0); + } + + clobbers = c_parser_asm_clobbers (parser); + done_asm: + c_lex_string_translate = 1; + if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return (tree) ((void *)0); + } + if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) + c_parser_skip_to_end_of_block_or_statement (parser); + ret = build_asm_stmt (quals, build_asm_expr (str, outputs, inputs, + clobbers, simple)); + return ret; +} +# 4313 "../../GCC/gcc/c-parser.c" +static tree +c_parser_asm_operands (c_parser *parser, unsigned char convert_p) +{ + tree list = (tree) ((void *)0); + while (1) + { + tree name, str; + struct c_expr expr; + if (c_parser_next_token_is (parser, CPP_OPEN_SQUARE)) + { + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + tree id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + name = build_string ((__extension__ ({ const tree __t = (id); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 4328, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.len), + ((const char *) __extension__ ({ const tree __t = (id); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 4329, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str)); + } + else + { + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, ((void *)0)); + return (tree) ((void *)0); + } + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + } + else + name = (tree) ((void *)0); + str = c_parser_asm_string_literal (parser); + if (str == (tree) ((void *)0)) + return (tree) ((void *)0); + c_lex_string_translate = 1; + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + c_lex_string_translate = 0; + return (tree) ((void *)0); + } + expr = c_parser_expression (parser); + if (convert_p) + expr = default_function_array_conversion (expr); + c_lex_string_translate = 0; + if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return (tree) ((void *)0); + } + list = chainon (list, build_tree_list_stat(build_tree_list_stat(name,str ),expr.value )); + + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + } + return list; +} +# 4377 "../../GCC/gcc/c-parser.c" +static tree +c_parser_asm_clobbers (c_parser *parser) +{ + tree list = (tree) ((void *)0); + while (1) + { + tree str = c_parser_asm_string_literal (parser); + if (str) + list = tree_cons_stat ((tree) ((void *)0),str,list ); + else + return (tree) ((void *)0); + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + } + return list; +} +# 4412 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_expr_no_commas (c_parser *parser, struct c_expr *after) +{ + struct c_expr lhs, rhs, ret; + enum tree_code code; + ((void)(!(!after || (c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4417, __FUNCTION__), 0 : 0)); + lhs = c_parser_conditional_expression (parser, after); + switch (c_parser_peek_token (parser)->type) + { + case CPP_EQ: + code = NOP_EXPR; + break; + case CPP_MULT_EQ: + code = MULT_EXPR; + break; + case CPP_DIV_EQ: + code = TRUNC_DIV_EXPR; + break; + case CPP_MOD_EQ: + code = TRUNC_MOD_EXPR; + break; + case CPP_PLUS_EQ: + code = PLUS_EXPR; + break; + case CPP_MINUS_EQ: + code = MINUS_EXPR; + break; + case CPP_LSHIFT_EQ: + code = LSHIFT_EXPR; + break; + case CPP_RSHIFT_EQ: + code = RSHIFT_EXPR; + break; + case CPP_AND_EQ: + code = BIT_AND_EXPR; + break; + case CPP_XOR_EQ: + code = BIT_XOR_EXPR; + break; + case CPP_OR_EQ: + code = BIT_IOR_EXPR; + break; + default: + return lhs; + } + c_parser_consume_token (parser); + rhs = c_parser_expr_no_commas (parser, ((void *)0)); + rhs = default_function_array_conversion (rhs); + ret.value = build_modify_expr (lhs.value, code, rhs.value); + if (code == NOP_EXPR) + ret.original_code = MODIFY_EXPR; + else + { + ((ret.value)->common.nowarning_flag) = 1; + ret.original_code = ERROR_MARK; + } + return ret; +} +# 4485 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_conditional_expression (c_parser *parser, struct c_expr *after) +{ + struct c_expr cond, exp1, exp2, ret; + ((void)(!(!after || (c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4489, __FUNCTION__), 0 : 0)); + cond = c_parser_binary_expression (parser, after); + if (c_parser_next_token_is_not (parser, CPP_QUERY)) + return cond; + cond = default_function_array_conversion (cond); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_COLON)) + { + if (pedantic) + pedwarn ("ISO C forbids omitting the middle term of a ?: expression"); + + exp1.value = save_expr (default_conversion (cond.value)); + cond.value = c_objc_common_truthvalue_conversion (exp1.value); + skip_evaluation += cond.value == c_global_trees[CTI_TRUTHVALUE_TRUE]; + } + else + { + cond.value + = c_objc_common_truthvalue_conversion + (default_conversion (cond.value)); + skip_evaluation += cond.value == c_global_trees[CTI_TRUTHVALUE_FALSE]; + exp1 = c_parser_expression_conv (parser); + skip_evaluation += ((cond.value == c_global_trees[CTI_TRUTHVALUE_TRUE]) + - (cond.value == c_global_trees[CTI_TRUTHVALUE_FALSE])); + } + if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) + { + skip_evaluation -= cond.value == c_global_trees[CTI_TRUTHVALUE_TRUE]; + ret.value = global_trees[TI_ERROR_MARK]; + ret.original_code = ERROR_MARK; + return ret; + } + exp2 = c_parser_conditional_expression (parser, ((void *)0)); + exp2 = default_function_array_conversion (exp2); + skip_evaluation -= cond.value == c_global_trees[CTI_TRUTHVALUE_TRUE]; + ret.value = build_conditional_expr (cond.value, exp1.value, exp2.value); + ret.original_code = ERROR_MARK; + return ret; +} +# 4583 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_binary_expression (c_parser *parser, struct c_expr *after) +{ +# 4609 "../../GCC/gcc/c-parser.c" + enum prec { + PREC_NONE, + PREC_LOGOR, + PREC_LOGAND, + PREC_BITOR, + PREC_BITXOR, + PREC_BITAND, + PREC_EQ, + PREC_REL, + PREC_SHIFT, + PREC_ADD, + PREC_MULT, + NUM_PRECS + }; + struct { + + struct c_expr expr; + + + enum prec prec; + + enum tree_code op; + } stack[NUM_PRECS]; + int sp; +# 4655 "../../GCC/gcc/c-parser.c" + ((void)(!(!after || (c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4655, __FUNCTION__), 0 : 0)); + stack[0].expr = c_parser_cast_expression (parser, after); + stack[0].prec = PREC_NONE; + sp = 0; + while (1) + { + enum prec oprec; + enum tree_code ocode; + if (parser->error) + goto out; + switch (c_parser_peek_token (parser)->type) + { + case CPP_MULT: + oprec = PREC_MULT; + ocode = MULT_EXPR; + break; + case CPP_DIV: + oprec = PREC_MULT; + ocode = TRUNC_DIV_EXPR; + break; + case CPP_MOD: + oprec = PREC_MULT; + ocode = TRUNC_MOD_EXPR; + break; + case CPP_PLUS: + oprec = PREC_ADD; + ocode = PLUS_EXPR; + break; + case CPP_MINUS: + oprec = PREC_ADD; + ocode = MINUS_EXPR; + break; + case CPP_LSHIFT: + oprec = PREC_SHIFT; + ocode = LSHIFT_EXPR; + break; + case CPP_RSHIFT: + oprec = PREC_SHIFT; + ocode = RSHIFT_EXPR; + break; + case CPP_LESS: + oprec = PREC_REL; + ocode = LT_EXPR; + break; + case CPP_GREATER: + oprec = PREC_REL; + ocode = GT_EXPR; + break; + case CPP_LESS_EQ: + oprec = PREC_REL; + ocode = LE_EXPR; + break; + case CPP_GREATER_EQ: + oprec = PREC_REL; + ocode = GE_EXPR; + break; + case CPP_EQ_EQ: + oprec = PREC_EQ; + ocode = EQ_EXPR; + break; + case CPP_NOT_EQ: + oprec = PREC_EQ; + ocode = NE_EXPR; + break; + case CPP_AND: + oprec = PREC_BITAND; + ocode = BIT_AND_EXPR; + break; + case CPP_XOR: + oprec = PREC_BITXOR; + ocode = BIT_XOR_EXPR; + break; + case CPP_OR: + oprec = PREC_BITOR; + ocode = BIT_IOR_EXPR; + break; + case CPP_AND_AND: + oprec = PREC_LOGAND; + ocode = TRUTH_ANDIF_EXPR; + break; + case CPP_OR_OR: + oprec = PREC_LOGOR; + ocode = TRUTH_ORIF_EXPR; + break; + default: + + + goto out; + } + c_parser_consume_token (parser); + while (oprec <= stack[sp].prec) + do { switch (stack[sp].op) { case TRUTH_ANDIF_EXPR: skip_evaluation -= stack[sp - 1].expr.value == c_global_trees[CTI_TRUTHVALUE_FALSE]; break; case TRUTH_ORIF_EXPR: skip_evaluation -= stack[sp - 1].expr.value == c_global_trees[CTI_TRUTHVALUE_TRUE]; break; default: break; } stack[sp - 1].expr = default_function_array_conversion (stack[sp - 1].expr); stack[sp].expr = default_function_array_conversion (stack[sp].expr); stack[sp - 1].expr = parser_build_binary_op (stack[sp].op, stack[sp - 1].expr, stack[sp].expr); sp--; } while (0); + switch (ocode) + { + case TRUTH_ANDIF_EXPR: + stack[sp].expr + = default_function_array_conversion (stack[sp].expr); + stack[sp].expr.value = c_objc_common_truthvalue_conversion + (default_conversion (stack[sp].expr.value)); + skip_evaluation += stack[sp].expr.value == c_global_trees[CTI_TRUTHVALUE_FALSE]; + break; + case TRUTH_ORIF_EXPR: + stack[sp].expr + = default_function_array_conversion (stack[sp].expr); + stack[sp].expr.value = c_objc_common_truthvalue_conversion + (default_conversion (stack[sp].expr.value)); + skip_evaluation += stack[sp].expr.value == c_global_trees[CTI_TRUTHVALUE_TRUE]; + break; + default: + break; + } + sp++; + stack[sp].expr = c_parser_cast_expression (parser, ((void *)0)); + stack[sp].prec = oprec; + stack[sp].op = ocode; + } + out: + while (sp > 0) + do { switch (stack[sp].op) { case TRUTH_ANDIF_EXPR: skip_evaluation -= stack[sp - 1].expr.value == c_global_trees[CTI_TRUTHVALUE_FALSE]; break; case TRUTH_ORIF_EXPR: skip_evaluation -= stack[sp - 1].expr.value == c_global_trees[CTI_TRUTHVALUE_TRUE]; break; default: break; } stack[sp - 1].expr = default_function_array_conversion (stack[sp - 1].expr); stack[sp].expr = default_function_array_conversion (stack[sp].expr); stack[sp - 1].expr = parser_build_binary_op (stack[sp].op, stack[sp - 1].expr, stack[sp].expr); sp--; } while (0); + return stack[0].expr; + +} +# 4787 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_cast_expression (c_parser *parser, struct c_expr *after) +{ + ((void)(!(!after || (c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4790, __FUNCTION__), 0 : 0)); + if (after) + return c_parser_postfix_expression_after_primary (parser, *after); + + + + + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) + && c_token_starts_typename (c_parser_peek_2nd_token (parser))) + { + struct c_type_name *type_name; + struct c_expr ret; + struct c_expr expr; + c_parser_consume_token (parser); + type_name = c_parser_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + if (type_name == ((void *)0)) + { + ret.value = global_trees[TI_ERROR_MARK]; + ret.original_code = ERROR_MARK; + return ret; + } + + + used_types_insert (type_name->specs->type); + + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + return c_parser_postfix_expression_after_paren_type (parser, + type_name); + expr = c_parser_cast_expression (parser, ((void *)0)); + expr = default_function_array_conversion (expr); + ret.value = c_cast_expr (type_name, expr.value); + ret.original_code = ERROR_MARK; + return ret; + } + else + return c_parser_unary_expression (parser); +} +# 4856 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_unary_expression (c_parser *parser) +{ + int ext; + struct c_expr ret, op; + switch (c_parser_peek_token (parser)->type) + { + case CPP_PLUS_PLUS: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (PREINCREMENT_EXPR, op); + case CPP_MINUS_MINUS: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (PREDECREMENT_EXPR, op); + case CPP_AND: + c_parser_consume_token (parser); + return parser_build_unary_op (ADDR_EXPR, + c_parser_cast_expression (parser, ((void *)0))); + case CPP_MULT: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + ret.value = build_indirect_ref (op.value, "unary *"); + ret.original_code = ERROR_MARK; + return ret; + case CPP_PLUS: + c_parser_consume_token (parser); + if (!(c_language & clk_objc) && !in_system_header) + warning (OPT_Wtraditional, + "traditional C rejects the unary plus operator"); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (CONVERT_EXPR, op); + case CPP_MINUS: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (NEGATE_EXPR, op); + case CPP_COMPL: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (BIT_NOT_EXPR, op); + case CPP_NOT: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (TRUTH_NOT_EXPR, op); + case CPP_AND_AND: + + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + ret.value = finish_label_address_expr + (c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + } + else + { + c_parser_error (parser, "expected identifier"); + ret.value = global_trees[TI_ERROR_MARK]; + } + ret.original_code = ERROR_MARK; + return ret; + case ((enum cpp_ttype) (N_TTYPES + 1)): + switch (c_parser_peek_token (parser)->keyword) + { + case RID_SIZEOF: + return c_parser_sizeof_expression (parser); + case RID_ALIGNOF: + return c_parser_alignof_expression (parser); + case RID_EXTENSION: + c_parser_consume_token (parser); + ext = disable_extension_diagnostics (); + ret = c_parser_cast_expression (parser, ((void *)0)); + restore_extension_diagnostics (ext); + return ret; + case RID_REALPART: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (REALPART_EXPR, op); + case RID_IMAGPART: + c_parser_consume_token (parser); + op = c_parser_cast_expression (parser, ((void *)0)); + op = default_function_array_conversion (op); + return parser_build_unary_op (IMAGPART_EXPR, op); + default: + return c_parser_postfix_expression (parser); + } + default: + return c_parser_postfix_expression (parser); + } +} + + + +static struct c_expr +c_parser_sizeof_expression (c_parser *parser) +{ + struct c_expr expr; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_SIZEOF)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 4960, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + skip_evaluation++; + in_sizeof++; + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) + && c_token_starts_typename (c_parser_peek_2nd_token (parser))) + { + + + struct c_type_name *type_name; + c_parser_consume_token (parser); + type_name = c_parser_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + if (type_name == ((void *)0)) + { + struct c_expr ret; + skip_evaluation--; + in_sizeof--; + ret.value = global_trees[TI_ERROR_MARK]; + ret.original_code = ERROR_MARK; + return ret; + } + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + { + expr = c_parser_postfix_expression_after_paren_type (parser, + type_name); + goto sizeof_expr; + } + + skip_evaluation--; + in_sizeof--; + if (type_name->declarator->kind == cdk_array + && type_name->declarator->u.array.vla_unspec_p) + { + + error ("%<[*]%> not allowed in other than a declaration"); + } + return c_expr_sizeof_type (type_name); + } + else + { + expr = c_parser_unary_expression (parser); + sizeof_expr: + skip_evaluation--; + in_sizeof--; + if (((enum tree_code) (expr.value)->common.code) == COMPONENT_REF + && ((__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (__extension__ (*({const tree __t = __extension__ ({ const tree __t = (expr.value); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 5006, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 5006, __FUNCTION__); &__t->exp.operands[__i]; }))); if (((enum tree_code) (__t)->common.code) != (FIELD_DECL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 5006, __FUNCTION__, (FIELD_DECL), 0); __t; })); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_COMMON)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_COMMON), "../../GCC/gcc/c-parser.c", 5006, __FUNCTION__); __t; })->decl_common.lang_flag_4) == 1)) + error ("% applied to a bit-field"); + return c_expr_sizeof_expr (expr); + } +} + + + +static struct c_expr +c_parser_alignof_expression (c_parser *parser) +{ + struct c_expr expr; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_ALIGNOF)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5018, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + skip_evaluation++; + in_alignof++; + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) + && c_token_starts_typename (c_parser_peek_2nd_token (parser))) + { + + + struct c_type_name *type_name; + struct c_expr ret; + c_parser_consume_token (parser); + type_name = c_parser_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + if (type_name == ((void *)0)) + { + struct c_expr ret; + skip_evaluation--; + in_alignof--; + ret.value = global_trees[TI_ERROR_MARK]; + ret.original_code = ERROR_MARK; + return ret; + } + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + { + expr = c_parser_postfix_expression_after_paren_type (parser, + type_name); + goto alignof_expr; + } + + skip_evaluation--; + in_alignof--; + ret.value = c_sizeof_or_alignof_type (groktypename (type_name), 0, 1); + ret.original_code = ERROR_MARK; + return ret; + } + else + { + struct c_expr ret; + expr = c_parser_unary_expression (parser); + alignof_expr: + skip_evaluation--; + in_alignof--; + ret.value = c_alignof_expr (expr.value); + ret.original_code = ERROR_MARK; + return ret; + } +} +# 5120 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_postfix_expression (c_parser *parser) +{ + struct c_expr expr, e1, e2, e3; + struct c_type_name *t1, *t2; + switch (c_parser_peek_token (parser)->type) + { + case CPP_NUMBER: + case CPP_CHAR: + case CPP_WCHAR: + expr.value = c_parser_peek_token (parser)->value; + expr.original_code = ERROR_MARK; + c_parser_consume_token (parser); + break; + case CPP_STRING: + case CPP_WSTRING: + expr.value = c_parser_peek_token (parser)->value; + expr.original_code = STRING_CST; + c_parser_consume_token (parser); + break; + case CPP_OBJC_STRING: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5141, __FUNCTION__), 0 : 0)); + expr.value + = objc_build_string_object (c_parser_peek_token (parser)->value); + expr.original_code = ERROR_MARK; + c_parser_consume_token (parser); + break; + case CPP_NAME: + if (c_parser_peek_token (parser)->id_kind != C_ID_ID) + { + c_parser_error (parser, "expected expression"); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + { + tree id = c_parser_peek_token (parser)->value; + location_t loc = c_parser_peek_token (parser)->location; + c_parser_consume_token (parser); + expr.value = build_external_ref (id, + (c_parser_peek_token (parser)->type + == CPP_OPEN_PAREN), loc); + expr.original_code = ERROR_MARK; + } + break; + case CPP_OPEN_PAREN: + + + if (c_parser_peek_2nd_token (parser)->type == CPP_OPEN_BRACE) + { + + tree stmt; + c_parser_consume_token (parser); + c_parser_consume_token (parser); + if ((current_stmt_tree ()->x_cur_stmt_list) == ((void *)0)) + { + error ("braced-group within expression allowed " + "only inside a function"); + parser->error = 1; + c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, ((void *)0)); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + stmt = c_begin_stmt_expr (); + c_parser_compound_statement_nostart (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + if (pedantic) + pedwarn ("ISO C forbids braced-groups within expressions"); + expr.value = c_finish_stmt_expr (stmt); + expr.original_code = ERROR_MARK; + } + else if (c_token_starts_typename (c_parser_peek_2nd_token (parser))) + { + + + + + struct c_type_name *type_name; + c_parser_consume_token (parser); + type_name = c_parser_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + if (type_name == ((void *)0)) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + } + else + expr = c_parser_postfix_expression_after_paren_type (parser, + type_name); + } + else + { + + c_parser_consume_token (parser); + expr = c_parser_expression (parser); + if (((enum tree_code) (expr.value)->common.code) == MODIFY_EXPR) + ((expr.value)->common.nowarning_flag) = 1; + expr.original_code = ERROR_MARK; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + } + break; + case ((enum cpp_ttype) (N_TTYPES + 1)): + switch (c_parser_peek_token (parser)->keyword) + { + case RID_FUNCTION_NAME: + case RID_PRETTY_FUNCTION_NAME: + case RID_C99_FUNCTION_NAME: + expr.value = fname_decl (c_parser_peek_token (parser)->keyword, + c_parser_peek_token (parser)->value); + expr.original_code = ERROR_MARK; + c_parser_consume_token (parser); + break; + case RID_VA_ARG: + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + e1 = c_parser_expr_no_commas (parser, ((void *)0)); + if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + t1 = c_parser_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + if (t1 == ((void *)0)) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + } + else + { + expr.value = build_va_arg (e1.value, groktypename (t1)); + expr.original_code = ERROR_MARK; + } + break; + case RID_OFFSETOF: + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + t1 = c_parser_type_name (parser); + if (t1 == ((void *)0)) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + { + tree type = groktypename (t1); + tree offsetof_ref; + if (type == global_trees[TI_ERROR_MARK]) + offsetof_ref = global_trees[TI_ERROR_MARK]; + else + offsetof_ref = build1_stat (INDIRECT_REF,type,global_trees[TI_NULL_POINTER] ); + + + + if (c_parser_next_token_is (parser, CPP_NAME)) + { + offsetof_ref = build_component_ref + (offsetof_ref, c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + while (c_parser_next_token_is (parser, CPP_DOT) + || c_parser_next_token_is (parser, + CPP_OPEN_SQUARE)) + { + if (c_parser_next_token_is (parser, CPP_DOT)) + { + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, + CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + break; + } + offsetof_ref = build_component_ref + (offsetof_ref, + c_parser_peek_token (parser)->value); + c_parser_consume_token (parser); + } + else + { + tree idx; + c_parser_consume_token (parser); + idx = c_parser_expression (parser).value; + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + offsetof_ref = build_array_ref (offsetof_ref, idx); + } + } + } + else + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + expr.value = fold_offsetof (offsetof_ref, (tree) ((void *)0)); + expr.original_code = ERROR_MARK; + } + break; + case RID_CHOOSE_EXPR: + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + e1 = c_parser_expr_no_commas (parser, ((void *)0)); + if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + e2 = c_parser_expr_no_commas (parser, ((void *)0)); + if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + e3 = c_parser_expr_no_commas (parser, ((void *)0)); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + { + tree c; + + c = fold (e1.value); + if (((enum tree_code) (c)->common.code) != INTEGER_CST) + error ("first argument to %<__builtin_choose_expr%> not" + " a constant"); + expr = integer_zerop (c) ? e3 : e2; + } + break; + case RID_TYPES_COMPATIBLE_P: + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + t1 = c_parser_type_name (parser); + if (t1 == ((void *)0)) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + t2 = c_parser_type_name (parser); + if (t2 == ((void *)0)) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + { + tree e1, e2; + + e1 = (__extension__ ({ const tree __t = (groktypename (t1)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "../../GCC/gcc/c-parser.c", 5412, __FUNCTION__); __t; })->type.main_variant); + e2 = (__extension__ ({ const tree __t = (groktypename (t2)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "../../GCC/gcc/c-parser.c", 5413, __FUNCTION__); __t; })->type.main_variant); + + expr.value = comptypes (e1, e2) + ? build_int_cst ((tree) ((void *)0), 1) + : build_int_cst ((tree) ((void *)0), 0); + expr.original_code = ERROR_MARK; + } + break; + case RID_AT_SELECTOR: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5422, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + { + tree sel = c_parser_objc_selector_arg (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + expr.value = objc_build_selector_expr (sel); + expr.original_code = ERROR_MARK; + } + break; + case RID_AT_PROTOCOL: + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5439, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + { + tree id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + expr.value = objc_build_protocol_expr (id); + expr.original_code = ERROR_MARK; + } + break; + case RID_AT_ENCODE: + + ((void)(!((c_language & clk_objc)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5466, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + t1 = c_parser_type_name (parser); + if (t1 == ((void *)0)) + { + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + break; + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + { + tree type = groktypename (t1); + expr.value = objc_build_encode_expr (type); + expr.original_code = ERROR_MARK; + } + break; + default: + c_parser_error (parser, "expected expression"); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + break; + case CPP_OPEN_SQUARE: + if ((c_language & clk_objc)) + { + tree receiver, args; + c_parser_consume_token (parser); + receiver = c_parser_objc_receiver (parser); + args = c_parser_objc_message_args (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + expr.value = objc_build_message_expr (build_tree_list_stat(receiver,args )); + + expr.original_code = ERROR_MARK; + break; + } + + default: + c_parser_error (parser, "expected expression"); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + break; + } + return c_parser_postfix_expression_after_primary (parser, expr); +} +# 5529 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_postfix_expression_after_paren_type (c_parser *parser, + struct c_type_name *type_name) +{ + tree type; + struct c_expr init; + struct c_expr expr; + start_init ((tree) ((void *)0), ((void *)0), 0); + type = groktypename (type_name); + if (type != global_trees[TI_ERROR_MARK] && (__extension__ ({ const tree __t = (type); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "../../GCC/gcc/c-parser.c", 5538, __FUNCTION__); __t; })->type.lang_flag_1)) + { + error ("compound literal has variable size"); + type = global_trees[TI_ERROR_MARK]; + } + init = c_parser_braced_init (parser, type, 0); + finish_init (); + maybe_warn_string_init (type, init); + + if (pedantic && !flag_isoc99) + pedwarn ("ISO C90 forbids compound literals"); + expr.value = build_compound_literal (type, init.value); + expr.original_code = ERROR_MARK; + return c_parser_postfix_expression_after_primary (parser, expr); +} + + + + +static struct c_expr +c_parser_postfix_expression_after_primary (c_parser *parser, + struct c_expr expr) +{ + tree ident, idx, exprlist; + while (1) + { + switch (c_parser_peek_token (parser)->type) + { + case CPP_OPEN_SQUARE: + + c_parser_consume_token (parser); + idx = c_parser_expression (parser).value; + c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, + "expected %<]%>"); + expr.value = build_array_ref (expr.value, idx); + expr.original_code = ERROR_MARK; + break; + case CPP_OPEN_PAREN: + + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) + exprlist = (tree) ((void *)0); + else + exprlist = c_parser_expr_list (parser, 1); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + expr.value = build_function_call (expr.value, exprlist); + expr.original_code = ERROR_MARK; + break; + case CPP_DOT: + + c_parser_consume_token (parser); + expr = default_function_array_conversion (expr); + if (c_parser_next_token_is (parser, CPP_NAME)) + ident = c_parser_peek_token (parser)->value; + else + { + c_parser_error (parser, "expected identifier"); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + return expr; + } + c_parser_consume_token (parser); + expr.value = build_component_ref (expr.value, ident); + expr.original_code = ERROR_MARK; + break; + case CPP_DEREF: + + c_parser_consume_token (parser); + expr = default_function_array_conversion (expr); + if (c_parser_next_token_is (parser, CPP_NAME)) + ident = c_parser_peek_token (parser)->value; + else + { + c_parser_error (parser, "expected identifier"); + expr.value = global_trees[TI_ERROR_MARK]; + expr.original_code = ERROR_MARK; + return expr; + } + c_parser_consume_token (parser); + expr.value = build_component_ref (build_indirect_ref (expr.value, + "->"), ident); + expr.original_code = ERROR_MARK; + break; + case CPP_PLUS_PLUS: + + c_parser_consume_token (parser); + expr = default_function_array_conversion (expr); + expr.value = build_unary_op (POSTINCREMENT_EXPR, expr.value, 0); + expr.original_code = ERROR_MARK; + break; + case CPP_MINUS_MINUS: + + c_parser_consume_token (parser); + expr = default_function_array_conversion (expr); + expr.value = build_unary_op (POSTDECREMENT_EXPR, expr.value, 0); + expr.original_code = ERROR_MARK; + break; + default: + return expr; + } + } +} +# 5649 "../../GCC/gcc/c-parser.c" +static struct c_expr +c_parser_expression (c_parser *parser) +{ + struct c_expr expr; + expr = c_parser_expr_no_commas (parser, ((void *)0)); + while (c_parser_next_token_is (parser, CPP_COMMA)) + { + struct c_expr next; + c_parser_consume_token (parser); + next = c_parser_expr_no_commas (parser, ((void *)0)); + next = default_function_array_conversion (next); + expr.value = build_compound_expr (expr.value, next.value); + expr.original_code = COMPOUND_EXPR; + } + return expr; +} + + + + +static struct c_expr +c_parser_expression_conv (c_parser *parser) +{ + struct c_expr expr; + expr = c_parser_expression (parser); + expr = default_function_array_conversion (expr); + return expr; +} +# 5686 "../../GCC/gcc/c-parser.c" +static tree +c_parser_expr_list (c_parser *parser, unsigned char convert_p) +{ + struct c_expr expr; + tree ret, cur; + expr = c_parser_expr_no_commas (parser, ((void *)0)); + if (convert_p) + expr = default_function_array_conversion (expr); + ret = cur = build_tree_list_stat((tree) ((void *)0),expr.value ); + while (c_parser_next_token_is (parser, CPP_COMMA)) + { + c_parser_consume_token (parser); + expr = c_parser_expr_no_commas (parser, ((void *)0)); + if (convert_p) + expr = default_function_array_conversion (expr); + cur = ((cur)->common.chain) = build_tree_list_stat((tree) ((void *)0),expr.value ); + } + return ret; +} +# 5729 "../../GCC/gcc/c-parser.c" +static void +c_parser_objc_class_definition (c_parser *parser) +{ + unsigned char iface_p; + tree id1; + tree superclass; + if (c_parser_next_token_is_keyword (parser, RID_AT_INTERFACE)) + iface_p = 1; + else if (c_parser_next_token_is_keyword (parser, RID_AT_IMPLEMENTATION)) + iface_p = 0; + else + (fancy_abort ("../../GCC/gcc/c-parser.c", 5740, __FUNCTION__)); + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + return; + } + id1 = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + tree id2; + tree proto = (tree) ((void *)0); + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + return; + } + id2 = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + if (!iface_p) + { + objc_start_category_implementation (id1, id2); + return; + } + if (c_parser_next_token_is (parser, CPP_LESS)) + proto = c_parser_objc_protocol_refs (parser); + objc_start_category_interface (id1, id2, proto); + c_parser_objc_methodprotolist (parser); + c_parser_require_keyword (parser, RID_AT_END, "expected %<@end%>"); + objc_finish_interface (); + return; + } + if (c_parser_next_token_is (parser, CPP_COLON)) + { + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + return; + } + superclass = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + else + superclass = (tree) ((void *)0); + if (iface_p) + { + tree proto = (tree) ((void *)0); + if (c_parser_next_token_is (parser, CPP_LESS)) + proto = c_parser_objc_protocol_refs (parser); + objc_start_class_interface (id1, superclass, proto); + } + else + objc_start_class_implementation (id1, superclass); + if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + c_parser_objc_class_instance_variables (parser); + if (iface_p) + { + objc_continue_interface (); + c_parser_objc_methodprotolist (parser); + c_parser_require_keyword (parser, RID_AT_END, "expected %<@end%>"); + objc_finish_interface (); + } + else + { + objc_continue_implementation (); + return; + } +} +# 5836 "../../GCC/gcc/c-parser.c" +static void +c_parser_objc_class_instance_variables (c_parser *parser) +{ + ((void)(!(c_parser_next_token_is (parser, CPP_OPEN_BRACE)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5839, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + while (c_parser_next_token_is_not (parser, CPP_EOF)) + { + tree decls; + + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + if (pedantic) + pedwarn ("extra semicolon in struct or union specified"); + c_parser_consume_token (parser); + continue; + } + + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + { + c_parser_consume_token (parser); + break; + } + + if (c_parser_next_token_is_keyword (parser, RID_AT_PRIVATE)) + { + c_parser_consume_token (parser); + objc_set_visibility (2); + continue; + } + else if (c_parser_next_token_is_keyword (parser, RID_AT_PROTECTED)) + { + c_parser_consume_token (parser); + objc_set_visibility (0); + continue; + } + else if (c_parser_next_token_is_keyword (parser, RID_AT_PUBLIC)) + { + c_parser_consume_token (parser); + objc_set_visibility (1); + continue; + } + else if (c_parser_next_token_is (parser, CPP_PRAGMA)) + { + c_parser_pragma (parser, pragma_external); + continue; + } + + + decls = c_parser_struct_declaration (parser); + { + + + tree ivar = nreverse (decls); + for (; ivar; ivar = ((ivar)->common.chain)) + objc_add_instance_variable (copy_node_stat (ivar )); + } + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + } +} + + + + + + + +static void +c_parser_objc_class_declaration (c_parser *parser) +{ + tree list = (tree) ((void *)0); + ((void)(!(c_parser_next_token_is_keyword (parser, RID_AT_CLASS)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5906, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + + + while (1) + { + tree id; + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + break; + } + id = c_parser_peek_token (parser)->value; + list = chainon (list, build_tree_list_stat((tree) ((void *)0),id )); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + } + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + objc_declare_class (list); +} + + + + + + + +static void +c_parser_objc_alias_declaration (c_parser *parser) +{ + tree id1, id2; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_AT_ALIAS)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5940, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_SEMICOLON, ((void *)0)); + return; + } + id1 = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + c_parser_skip_until_found (parser, CPP_SEMICOLON, ((void *)0)); + return; + } + id2 = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + objc_declare_alias (id1, id2); +} +# 5973 "../../GCC/gcc/c-parser.c" +static void +c_parser_objc_protocol_definition (c_parser *parser) +{ + ((void)(!(c_parser_next_token_is_keyword (parser, RID_AT_PROTOCOL)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 5976, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + return; + } + if (c_parser_peek_2nd_token (parser)->type == CPP_COMMA + || c_parser_peek_2nd_token (parser)->type == CPP_SEMICOLON) + { + tree list = (tree) ((void *)0); + + + while (1) + { + tree id; + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + break; + } + id = c_parser_peek_token (parser)->value; + list = chainon (list, build_tree_list_stat((tree) ((void *)0),id )); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + } + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + objc_declare_protocols (list); + } + else + { + tree id = c_parser_peek_token (parser)->value; + tree proto = (tree) ((void *)0); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_LESS)) + proto = c_parser_objc_protocol_refs (parser); + objc_pq_context = 1; + objc_start_protocol (id, proto); + c_parser_objc_methodprotolist (parser); + c_parser_require_keyword (parser, RID_AT_END, "expected %<@end%>"); + objc_pq_context = 0; + objc_finish_interface (); + } +} +# 6031 "../../GCC/gcc/c-parser.c" +static enum tree_code +c_parser_objc_method_type (c_parser *parser) +{ + switch (c_parser_peek_token (parser)->type) + { + case CPP_PLUS: + c_parser_consume_token (parser); + return PLUS_EXPR; + case CPP_MINUS: + c_parser_consume_token (parser); + return MINUS_EXPR; + default: + (fancy_abort ("../../GCC/gcc/c-parser.c", 6043, __FUNCTION__)); + } +} + + + + + + + +static void +c_parser_objc_method_definition (c_parser *parser) +{ + enum tree_code type = c_parser_objc_method_type (parser); + tree decl; + objc_set_method_type (type); + objc_pq_context = 1; + decl = c_parser_objc_method_decl (parser); + if (c_parser_next_token_is (parser, CPP_SEMICOLON)) + { + c_parser_consume_token (parser); + if (pedantic) + pedwarn ("extra semicolon in method definition specified"); + } + if (!c_parser_next_token_is (parser, CPP_OPEN_BRACE)) + { + c_parser_error (parser, "expected %<{%>"); + return; + } + objc_pq_context = 0; + objc_start_method_definition (decl); + add_stmt (c_parser_compound_statement (parser)); + objc_finish_method_definition (current_function_decl); +} +# 6092 "../../GCC/gcc/c-parser.c" +static void +c_parser_objc_methodprotolist (c_parser *parser) +{ + while (1) + { + + switch (c_parser_peek_token (parser)->type) + { + case CPP_SEMICOLON: + if (pedantic) + pedwarn ("ISO C does not allow extra %<;%> outside of a function"); + c_parser_consume_token (parser); + break; + case CPP_PLUS: + case CPP_MINUS: + c_parser_objc_methodproto (parser); + break; + case CPP_PRAGMA: + c_parser_pragma (parser, pragma_external); + break; + case CPP_EOF: + return; + default: + if (c_parser_next_token_is_keyword (parser, RID_AT_END)) + return; + c_parser_declaration_or_fndef (parser, 0, 1, 0, 1); + break; + } + } +} + + + + + + + +static void +c_parser_objc_methodproto (c_parser *parser) +{ + enum tree_code type = c_parser_objc_method_type (parser); + tree decl; + objc_set_method_type (type); + + objc_pq_context = 1; + decl = c_parser_objc_method_decl (parser); + + objc_pq_context = 0; + objc_add_method_declaration (decl); + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); +} +# 6174 "../../GCC/gcc/c-parser.c" +static tree +c_parser_objc_method_decl (c_parser *parser) +{ + tree type = (tree) ((void *)0); + tree sel; + tree parms = (tree) ((void *)0); + unsigned char ellipsis = 0; + + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + c_parser_consume_token (parser); + type = c_parser_objc_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + sel = c_parser_objc_selector (parser); + + + + if (!sel || c_parser_next_token_is (parser, CPP_COLON)) + { + tree tsel = sel; + tree list = (tree) ((void *)0); + while (1) + { + tree atype = (tree) ((void *)0), id, keyworddecl; + if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) + break; + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + c_parser_consume_token (parser); + atype = c_parser_objc_type_name (parser); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<)%>"); + } + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + return global_trees[TI_ERROR_MARK]; + } + id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + keyworddecl = objc_build_keyword_decl (tsel, atype, id); + list = chainon (list, keyworddecl); + tsel = c_parser_objc_selector (parser); + if (!tsel && c_parser_next_token_is_not (parser, CPP_COLON)) + break; + } + + + + parms = make_node_stat (TREE_LIST ); + while (c_parser_next_token_is (parser, CPP_COMMA)) + { + struct c_parm *parm; + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) + { + ellipsis = 1; + c_parser_consume_token (parser); + break; + } + parm = c_parser_parameter_declaration (parser, (tree) ((void *)0)); + if (parm == ((void *)0)) + break; + parms = chainon (parms, + build_tree_list_stat((tree) ((void *)0),grokparm (parm) )); + } + sel = list; + } + return objc_build_method_signature (type, sel, parms, ellipsis); +} +# 6260 "../../GCC/gcc/c-parser.c" +static tree +c_parser_objc_type_name (c_parser *parser) +{ + tree quals = (tree) ((void *)0); + struct c_type_name *typename = ((void *)0); + tree type = (tree) ((void *)0); + while (1) + { + c_token *token = c_parser_peek_token (parser); + if (token->type == ((enum cpp_ttype) (N_TTYPES + 1)) + && (token->keyword == RID_IN + || token->keyword == RID_OUT + || token->keyword == RID_INOUT + || token->keyword == RID_BYCOPY + || token->keyword == RID_BYREF + || token->keyword == RID_ONEWAY)) + { + quals = chainon (quals, build_tree_list_stat((tree) ((void *)0),token->value )); + c_parser_consume_token (parser); + } + else + break; + } + if (c_parser_next_token_starts_typename (parser)) + typename = c_parser_type_name (parser); + if (typename) + type = groktypename (typename); + return build_tree_list_stat(quals,type ); +} + + + + + + + +static tree +c_parser_objc_protocol_refs (c_parser *parser) +{ + tree list = (tree) ((void *)0); + ((void)(!(c_parser_next_token_is (parser, CPP_LESS)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 6300, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + + + while (1) + { + tree id; + if (c_parser_next_token_is_not (parser, CPP_NAME)) + { + c_parser_error (parser, "expected identifier"); + break; + } + id = c_parser_peek_token (parser)->value; + list = chainon (list, build_tree_list_stat((tree) ((void *)0),id )); + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_COMMA)) + c_parser_consume_token (parser); + else + break; + } + c_parser_require (parser, CPP_GREATER, "expected %<>%>"); + return list; +} +# 6335 "../../GCC/gcc/c-parser.c" +static void +c_parser_objc_try_catch_statement (c_parser *parser) +{ + location_t loc; + tree stmt; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_AT_TRY)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 6340, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + loc = c_parser_peek_token (parser)->location; + stmt = c_parser_compound_statement (parser); + objc_begin_try_stmt (loc, stmt); + while (c_parser_next_token_is_keyword (parser, RID_AT_CATCH)) + { + struct c_parm *parm; + c_parser_consume_token (parser); + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + break; + parm = c_parser_parameter_declaration (parser, (tree) ((void *)0)); + if (parm == ((void *)0)) + { + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, ((void *)0)); + break; + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + objc_begin_catch_clause (grokparm (parm)); + if (c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) + c_parser_compound_statement_nostart (parser); + objc_finish_catch_clause (); + } + if (c_parser_next_token_is_keyword (parser, RID_AT_FINALLY)) + { + location_t finloc; + tree finstmt; + c_parser_consume_token (parser); + finloc = c_parser_peek_token (parser)->location; + finstmt = c_parser_compound_statement (parser); + objc_build_finally_clause (finloc, finstmt); + } + objc_finish_try_stmt (); +} + + + + + + + +static void +c_parser_objc_synchronized_statement (c_parser *parser) +{ + location_t loc; + tree expr, stmt; + ((void)(!(c_parser_next_token_is_keyword (parser, RID_AT_SYNCHRONIZED)) ? fancy_abort ("../../GCC/gcc/c-parser.c", 6386, __FUNCTION__), 0 : 0)); + c_parser_consume_token (parser); + loc = c_parser_peek_token (parser)->location; + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + expr = c_parser_expression (parser).value; + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + else + expr = global_trees[TI_ERROR_MARK]; + stmt = c_parser_compound_statement (parser); + objc_build_synchronized (loc, expr, stmt); +} +# 6414 "../../GCC/gcc/c-parser.c" +static tree +c_parser_objc_selector (c_parser *parser) +{ + c_token *token = c_parser_peek_token (parser); + tree value = token->value; + if (token->type == CPP_NAME) + { + c_parser_consume_token (parser); + return value; + } + if (token->type != ((enum cpp_ttype) (N_TTYPES + 1))) + return (tree) ((void *)0); + switch (token->keyword) + { + case RID_ENUM: + case RID_STRUCT: + case RID_UNION: + case RID_IF: + case RID_ELSE: + case RID_WHILE: + case RID_DO: + case RID_FOR: + case RID_SWITCH: + case RID_CASE: + case RID_DEFAULT: + case RID_BREAK: + case RID_CONTINUE: + case RID_RETURN: + case RID_GOTO: + case RID_ASM: + case RID_SIZEOF: + case RID_TYPEOF: + case RID_ALIGNOF: + case RID_UNSIGNED: + case RID_LONG: + case RID_CONST: + case RID_SHORT: + case RID_VOLATILE: + case RID_SIGNED: + case RID_RESTRICT: + case RID_COMPLEX: + case RID_IN: + case RID_OUT: + case RID_INOUT: + case RID_BYCOPY: + case RID_BYREF: + case RID_ONEWAY: + case RID_INT: + case RID_CHAR: + case RID_FLOAT: + case RID_DOUBLE: + case RID_VOID: + case RID_BOOL: + c_parser_consume_token (parser); + return value; + default: + return (tree) ((void *)0); + } +} +# 6489 "../../GCC/gcc/c-parser.c" +static tree +c_parser_objc_selector_arg (c_parser *parser) +{ + tree sel = c_parser_objc_selector (parser); + tree list = (tree) ((void *)0); + if (sel && c_parser_next_token_is_not (parser, CPP_COLON)) + return sel; + while (1) + { + if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) + return list; + list = chainon (list, build_tree_list_stat(sel,(tree) ((void *)0) )); + sel = c_parser_objc_selector (parser); + if (!sel && c_parser_next_token_is_not (parser, CPP_COLON)) + break; + } + return list; +} +# 6516 "../../GCC/gcc/c-parser.c" +static tree +c_parser_objc_receiver (c_parser *parser) +{ + if (c_parser_peek_token (parser)->type == CPP_NAME + && (c_parser_peek_token (parser)->id_kind == C_ID_TYPENAME + || c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME)) + { + tree id = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + return objc_get_class_reference (id); + } + return c_parser_expression (parser).value; +} +# 6545 "../../GCC/gcc/c-parser.c" +static tree +c_parser_objc_message_args (c_parser *parser) +{ + tree sel = c_parser_objc_selector (parser); + tree list = (tree) ((void *)0); + if (sel && c_parser_next_token_is_not (parser, CPP_COLON)) + return sel; + while (1) + { + tree keywordexpr; + if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) + return list; + keywordexpr = c_parser_objc_keywordexpr (parser); + list = chainon (list, build_tree_list_stat(sel,keywordexpr )); + sel = c_parser_objc_selector (parser); + if (!sel && c_parser_next_token_is_not (parser, CPP_COLON)) + break; + } + return list; +} + + + + + + + +static tree +c_parser_objc_keywordexpr (c_parser *parser) +{ + tree list = c_parser_expr_list (parser, 1); + if (((list)->common.chain) == (tree) ((void *)0)) + { + + + return (__extension__ ({ const tree __t = (list); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6580, __FUNCTION__, (TREE_LIST), 0); __t; })->list.value); + } + else + { + + return list; + } +} + + + + + + + +static unsigned char +c_parser_pragma (c_parser *parser, enum pragma_context context) +{ + unsigned int id; + + id = c_parser_peek_token (parser)->pragma_kind; + ((void)(!(id != PRAGMA_NONE) ? fancy_abort ("../../GCC/gcc/c-parser.c", 6601, __FUNCTION__), 0 : 0)); + + switch (id) + { + case PRAGMA_OMP_BARRIER: + if (context != pragma_compound) + { + if (context == pragma_stmt) + c_parser_error (parser, "%<#pragma omp barrier%> may only be " + "used in compound statements"); + goto bad_stmt; + } + c_parser_omp_barrier (parser); + return 0; + + case PRAGMA_OMP_FLUSH: + if (context != pragma_compound) + { + if (context == pragma_stmt) + c_parser_error (parser, "%<#pragma omp flush%> may only be " + "used in compound statements"); + goto bad_stmt; + } + c_parser_omp_flush (parser); + return 0; + + case PRAGMA_OMP_THREADPRIVATE: + c_parser_omp_threadprivate (parser); + return 0; + + case PRAGMA_OMP_SECTION: + error ("%<#pragma omp section%> may only be used in " + "%<#pragma omp sections%> construct"); + c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, ((void *)0)); + return 0; + + case PRAGMA_GCC_PCH_PREPROCESS: + c_parser_error (parser, "%<#pragma GCC pch_preprocess%> must be first"); + c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, ((void *)0)); + return 0; + + default: + if (id < PRAGMA_FIRST_EXTERNAL) + { + if (context == pragma_external) + { + bad_stmt: + c_parser_error (parser, "expected declaration specifiers"); + c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, ((void *)0)); + return 0; + } + c_parser_omp_construct (parser); + return 1; + } + break; + } + + c_parser_consume_pragma (parser); + c_invoke_pragma_handler (id); + + + + + parser->error = 1; + c_parser_skip_to_pragma_eol (parser); + + return 0; +} + + + +enum cpp_ttype +pragma_lex (tree *value) +{ + c_token *tok = c_parser_peek_token (the_parser); + enum cpp_ttype ret = tok->type; + + *value = tok->value; + if (ret == CPP_PRAGMA_EOL || ret == CPP_EOF) + ret = CPP_EOF; + else + { + if (ret == ((enum cpp_ttype) (N_TTYPES + 1))) + ret = CPP_NAME; + c_parser_consume_token (the_parser); + } + + return ret; +} + +static void +c_parser_pragma_pch_preprocess (c_parser *parser) +{ + tree name = ((void *)0); + + c_parser_consume_pragma (parser); + if (c_parser_next_token_is (parser, CPP_STRING)) + { + name = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + } + else + c_parser_error (parser, "expected string literal"); + c_parser_skip_to_pragma_eol (parser); + + if (name) + c_common_pch_pragma (parse_in, ((const char *)(__extension__ ({ const tree __t = (name); if (((enum tree_code) (__t)->common.code) != (STRING_CST)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6707, __FUNCTION__, (STRING_CST), 0); __t; })->string.str))); +} +# 6717 "../../GCC/gcc/c-parser.c" +static pragma_omp_clause +c_parser_omp_clause_name (c_parser *parser) +{ + pragma_omp_clause result = PRAGMA_OMP_CLAUSE_NONE; + + if (c_parser_next_token_is_keyword (parser, RID_IF)) + result = PRAGMA_OMP_CLAUSE_IF; + else if (c_parser_next_token_is_keyword (parser, RID_DEFAULT)) + result = PRAGMA_OMP_CLAUSE_DEFAULT; + else if (c_parser_next_token_is (parser, CPP_NAME)) + { + const char *p = ((const char *) __extension__ ({ const tree __t = (c_parser_peek_token (parser)->value); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6728, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str); + + switch (p[0]) + { + case 'c': + if (!strcmp ("copyin", p)) + result = PRAGMA_OMP_CLAUSE_COPYIN; + else if (!strcmp ("copyprivate", p)) + result = PRAGMA_OMP_CLAUSE_COPYPRIVATE; + break; + case 'f': + if (!strcmp ("firstprivate", p)) + result = PRAGMA_OMP_CLAUSE_FIRSTPRIVATE; + break; + case 'l': + if (!strcmp ("lastprivate", p)) + result = PRAGMA_OMP_CLAUSE_LASTPRIVATE; + break; + case 'n': + if (!strcmp ("nowait", p)) + result = PRAGMA_OMP_CLAUSE_NOWAIT; + else if (!strcmp ("num_threads", p)) + result = PRAGMA_OMP_CLAUSE_NUM_THREADS; + break; + case 'o': + if (!strcmp ("ordered", p)) + result = PRAGMA_OMP_CLAUSE_ORDERED; + break; + case 'p': + if (!strcmp ("private", p)) + result = PRAGMA_OMP_CLAUSE_PRIVATE; + break; + case 'r': + if (!strcmp ("reduction", p)) + result = PRAGMA_OMP_CLAUSE_REDUCTION; + break; + case 's': + if (!strcmp ("schedule", p)) + result = PRAGMA_OMP_CLAUSE_SCHEDULE; + else if (!strcmp ("shared", p)) + result = PRAGMA_OMP_CLAUSE_SHARED; + break; + } + } + + if (result != PRAGMA_OMP_CLAUSE_NONE) + c_parser_consume_token (parser); + + return result; +} + + + +static void +check_no_duplicate_clause (tree clauses, enum tree_code code, const char *name) +{ + tree c; + + for (c = clauses; c ; c = ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6786, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain)) + if ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6787, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->omp_clause.code == code) + { + error ("too many %qs clauses", name); + break; + } +} +# 6805 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_variable_list (c_parser *parser, enum omp_clause_code kind, + tree list) +{ + if (c_parser_next_token_is_not (parser, CPP_NAME) + || c_parser_peek_token (parser)->id_kind != C_ID_ID) + c_parser_error (parser, "expected identifier"); + + while (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_token (parser)->id_kind == C_ID_ID) + { + tree t = lookup_name (c_parser_peek_token (parser)->value); + + if (t == (tree) ((void *)0)) + undeclared_variable (c_parser_peek_token (parser)->value, + c_parser_peek_token (parser)->location); + else if (t == global_trees[TI_ERROR_MARK]) + ; + else if (kind != 0) + { + tree u = build_omp_clause (kind); + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (u); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6826, __FUNCTION__, (OMP_CLAUSE), 0); __t; })); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6826, __FUNCTION__, OMP_CLAUSE, 0); if ((int) __t->omp_clause.code < (int) (OMP_CLAUSE_PRIVATE) || (int) __t->omp_clause.code > (int) (OMP_CLAUSE_COPYPRIVATE)) omp_clause_range_check_failed (__t, "../../GCC/gcc/c-parser.c", 6826, __FUNCTION__, (OMP_CLAUSE_PRIVATE), (OMP_CLAUSE_COPYPRIVATE)); __t; }); const int __i = (0); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6826, __FUNCTION__, OMP_CLAUSE, 0); if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code]) omp_clause_operand_check_failed (__i, __t, "../../GCC/gcc/c-parser.c", 6826, __FUNCTION__); &__t->omp_clause.ops[__i]; })) = t; + ((__extension__ ({ const tree __t = (u); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6827, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + list = u; + } + else + list = tree_cons_stat (t,(tree) ((void *)0),list ); + + c_parser_consume_token (parser); + + if (c_parser_next_token_is_not (parser, CPP_COMMA)) + break; + + c_parser_consume_token (parser); + } + + return list; +} + + + + +static tree +c_parser_omp_var_list_parens (c_parser *parser, enum tree_code kind, tree list) +{ + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + list = c_parser_omp_variable_list (parser, kind, list); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + return list; +} + + + + +static tree +c_parser_omp_clause_copyin (c_parser *parser, tree list) +{ + return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_COPYIN, list); +} + + + + +static tree +c_parser_omp_clause_copyprivate (c_parser *parser, tree list) +{ + return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_COPYPRIVATE, list); +} + + + + +static tree +c_parser_omp_clause_default (c_parser *parser, tree list) +{ + enum omp_clause_default_kind kind = OMP_CLAUSE_DEFAULT_UNSPECIFIED; + tree c; + + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + return list; + if (c_parser_next_token_is (parser, CPP_NAME)) + { + const char *p = ((const char *) __extension__ ({ const tree __t = (c_parser_peek_token (parser)->value); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6889, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str); + + switch (p[0]) + { + case 'n': + if (strcmp ("none", p) != 0) + goto invalid_kind; + kind = OMP_CLAUSE_DEFAULT_NONE; + break; + + case 's': + if (strcmp ("shared", p) != 0) + goto invalid_kind; + kind = OMP_CLAUSE_DEFAULT_SHARED; + break; + + default: + goto invalid_kind; + } + + c_parser_consume_token (parser); + } + else + { + invalid_kind: + c_parser_error (parser, "expected % or %"); + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + + if (kind == OMP_CLAUSE_DEFAULT_UNSPECIFIED) + return list; + + check_no_duplicate_clause (list, OMP_CLAUSE_DEFAULT, "default"); + c = build_omp_clause (OMP_CLAUSE_DEFAULT); + ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6923, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + (__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6924, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_DEFAULT)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 6924, __FUNCTION__, (OMP_CLAUSE_DEFAULT)); __t; })->omp_clause.subcode.default_kind) = kind; + + return c; +} + + + + +static tree +c_parser_omp_clause_firstprivate (c_parser *parser, tree list) +{ + return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_FIRSTPRIVATE, list); +} + + + + +static tree +c_parser_omp_clause_if (c_parser *parser, tree list) +{ + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + tree t = c_parser_paren_condition (parser); + tree c; + + check_no_duplicate_clause (list, OMP_CLAUSE_IF, "if"); + + c = build_omp_clause (OMP_CLAUSE_IF); + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6952, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_IF)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 6952, __FUNCTION__, (OMP_CLAUSE_IF)); __t; }); const int __i = (0); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6952, __FUNCTION__, OMP_CLAUSE, 0); if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code]) omp_clause_operand_check_failed (__i, __t, "../../GCC/gcc/c-parser.c", 6952, __FUNCTION__); &__t->omp_clause.ops[__i]; })) = t; + ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6953, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + list = c; + } + else + c_parser_error (parser, "expected %<(%>"); + + return list; +} + + + + +static tree +c_parser_omp_clause_lastprivate (c_parser *parser, tree list) +{ + return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_LASTPRIVATE, list); +} + + + + +static tree +c_parser_omp_clause_nowait (c_parser *parser __attribute__ ((__unused__)), tree list) +{ + tree c; + + check_no_duplicate_clause (list, OMP_CLAUSE_NOWAIT, "nowait"); + + c = build_omp_clause (OMP_CLAUSE_NOWAIT); + ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 6982, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + return c; +} + + + + +static tree +c_parser_omp_clause_num_threads (c_parser *parser, tree list) +{ + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + tree c, t = c_parser_expression (parser).value; + + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + + if (!(((enum tree_code) (((t)->common.type))->common.code) == ENUMERAL_TYPE || ((enum tree_code) (((t)->common.type))->common.code) == BOOLEAN_TYPE || ((enum tree_code) (((t)->common.type))->common.code) == INTEGER_TYPE)) + { + c_parser_error (parser, "expected integer expression"); + return list; + } + + + c = fold_build2_stat (LE_EXPR, global_trees[TI_BOOLEAN_TYPE], t, build_int_cst (((t)->common.type), 0) ); + + if (c == global_trees[TI_BOOLEAN_TRUE]) + { + warning (0, "% value must be positive"); + t = global_trees[TI_INTEGER_ONE]; + } + + check_no_duplicate_clause (list, OMP_CLAUSE_NUM_THREADS, "num_threads"); + + c = build_omp_clause (OMP_CLAUSE_NUM_THREADS); + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7016, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_NUM_THREADS)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7016, __FUNCTION__, (OMP_CLAUSE_NUM_THREADS)); __t; }); const int __i = (0); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7016, __FUNCTION__, OMP_CLAUSE, 0); if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code]) omp_clause_operand_check_failed (__i, __t, "../../GCC/gcc/c-parser.c", 7016, __FUNCTION__); &__t->omp_clause.ops[__i]; })) = t; + ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7017, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + list = c; + } + + return list; +} + + + + +static tree +c_parser_omp_clause_ordered (c_parser *parser __attribute__ ((__unused__)), tree list) +{ + tree c; + + check_no_duplicate_clause (list, OMP_CLAUSE_ORDERED, "ordered"); + + c = build_omp_clause (OMP_CLAUSE_ORDERED); + ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7035, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + return c; +} + + + + +static tree +c_parser_omp_clause_private (c_parser *parser, tree list) +{ + return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_PRIVATE, list); +} + + + + + + + +static tree +c_parser_omp_clause_reduction (c_parser *parser, tree list) +{ + if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + { + enum tree_code code; + + switch (c_parser_peek_token (parser)->type) + { + case CPP_PLUS: + code = PLUS_EXPR; + break; + case CPP_MULT: + code = MULT_EXPR; + break; + case CPP_MINUS: + code = MINUS_EXPR; + break; + case CPP_AND: + code = BIT_AND_EXPR; + break; + case CPP_XOR: + code = BIT_XOR_EXPR; + break; + case CPP_OR: + code = BIT_IOR_EXPR; + break; + case CPP_AND_AND: + code = TRUTH_ANDIF_EXPR; + break; + case CPP_OR_OR: + code = TRUTH_ORIF_EXPR; + break; + default: + c_parser_error (parser, + "expected %<+%>, %<*%>, %<-%>, %<&%>, " + "%<^%>, %<|%>, %<&&%>, or %<||%>"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, 0); + return list; + } + c_parser_consume_token (parser); + if (c_parser_require (parser, CPP_COLON, "expected %<:%>")) + { + tree nl, c; + + nl = c_parser_omp_variable_list (parser, OMP_CLAUSE_REDUCTION, list); + for (c = nl; c != list; c = ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7100, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain)) + (__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7101, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_REDUCTION)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7101, __FUNCTION__, (OMP_CLAUSE_REDUCTION)); __t; })->omp_clause.subcode.reduction_code) = code; + + list = nl; + } + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + return list; +} +# 7118 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_clause_schedule (c_parser *parser, tree list) +{ + tree c, t; + + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + return list; + + c = build_omp_clause (OMP_CLAUSE_SCHEDULE); + + if (c_parser_next_token_is (parser, CPP_NAME)) + { + tree kind = c_parser_peek_token (parser)->value; + const char *p = ((const char *) __extension__ ({ const tree __t = (kind); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7131, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str); + + switch (p[0]) + { + case 'd': + if (strcmp ("dynamic", p) != 0) + goto invalid_kind; + (__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7138, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_SCHEDULE)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7138, __FUNCTION__, (OMP_CLAUSE_SCHEDULE)); __t; })->omp_clause.subcode.schedule_kind) = OMP_CLAUSE_SCHEDULE_DYNAMIC; + break; + + case 'g': + if (strcmp ("guided", p) != 0) + goto invalid_kind; + (__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7144, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_SCHEDULE)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7144, __FUNCTION__, (OMP_CLAUSE_SCHEDULE)); __t; })->omp_clause.subcode.schedule_kind) = OMP_CLAUSE_SCHEDULE_GUIDED; + break; + + case 'r': + if (strcmp ("runtime", p) != 0) + goto invalid_kind; + (__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7150, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_SCHEDULE)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7150, __FUNCTION__, (OMP_CLAUSE_SCHEDULE)); __t; })->omp_clause.subcode.schedule_kind) = OMP_CLAUSE_SCHEDULE_RUNTIME; + break; + + default: + goto invalid_kind; + } + } + else if (c_parser_next_token_is_keyword (parser, RID_STATIC)) + (__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7158, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_SCHEDULE)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7158, __FUNCTION__, (OMP_CLAUSE_SCHEDULE)); __t; })->omp_clause.subcode.schedule_kind) = OMP_CLAUSE_SCHEDULE_STATIC; + else + goto invalid_kind; + + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_COMMA)) + { + c_parser_consume_token (parser); + + t = c_parser_expr_no_commas (parser, ((void *)0)).value; + + if ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7169, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_SCHEDULE)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7169, __FUNCTION__, (OMP_CLAUSE_SCHEDULE)); __t; })->omp_clause.subcode.schedule_kind) == OMP_CLAUSE_SCHEDULE_RUNTIME) + error ("schedule % does not take " + "a % parameter"); + else if (((enum tree_code) (((t)->common.type))->common.code) == INTEGER_TYPE) + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7173, __FUNCTION__, OMP_CLAUSE, 0); if (__t->omp_clause.code != (OMP_CLAUSE_SCHEDULE)) omp_clause_check_failed (__t, "../../GCC/gcc/c-parser.c", 7173, __FUNCTION__, (OMP_CLAUSE_SCHEDULE)); __t; }); const int __i = (0); if (((enum tree_code) (__t)->common.code) != OMP_CLAUSE) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7173, __FUNCTION__, OMP_CLAUSE, 0); if (__i < 0 || __i >= omp_clause_num_ops [__t->omp_clause.code]) omp_clause_operand_check_failed (__i, __t, "../../GCC/gcc/c-parser.c", 7173, __FUNCTION__); &__t->omp_clause.ops[__i]; })) = t; + else + c_parser_error (parser, "expected integer expression"); + + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + else + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, + "expected %<,%> or %<)%>"); + + check_no_duplicate_clause (list, OMP_CLAUSE_SCHEDULE, "schedule"); + ((__extension__ ({ const tree __t = (c); if (((enum tree_code) (__t)->common.code) != (OMP_CLAUSE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7184, __FUNCTION__, (OMP_CLAUSE), 0); __t; }))->common.chain) = list; + return c; + + invalid_kind: + c_parser_error (parser, "invalid schedule kind"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, 0); + return list; +} + + + + +static tree +c_parser_omp_clause_shared (c_parser *parser, tree list) +{ + return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_SHARED, list); +} + + + + + +static tree +c_parser_omp_all_clauses (c_parser *parser, unsigned int mask, + const char *where) +{ + tree clauses = ((void *)0); + + while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) + { + const pragma_omp_clause c_kind = c_parser_omp_clause_name (parser); + const char *c_name; + tree prev = clauses; + + switch (c_kind) + { + case PRAGMA_OMP_CLAUSE_COPYIN: + clauses = c_parser_omp_clause_copyin (parser, clauses); + c_name = "copyin"; + break; + case PRAGMA_OMP_CLAUSE_COPYPRIVATE: + clauses = c_parser_omp_clause_copyprivate (parser, clauses); + c_name = "copyprivate"; + break; + case PRAGMA_OMP_CLAUSE_DEFAULT: + clauses = c_parser_omp_clause_default (parser, clauses); + c_name = "default"; + break; + case PRAGMA_OMP_CLAUSE_FIRSTPRIVATE: + clauses = c_parser_omp_clause_firstprivate (parser, clauses); + c_name = "firstprivate"; + break; + case PRAGMA_OMP_CLAUSE_IF: + clauses = c_parser_omp_clause_if (parser, clauses); + c_name = "if"; + break; + case PRAGMA_OMP_CLAUSE_LASTPRIVATE: + clauses = c_parser_omp_clause_lastprivate (parser, clauses); + c_name = "lastprivate"; + break; + case PRAGMA_OMP_CLAUSE_NOWAIT: + clauses = c_parser_omp_clause_nowait (parser, clauses); + c_name = "nowait"; + break; + case PRAGMA_OMP_CLAUSE_NUM_THREADS: + clauses = c_parser_omp_clause_num_threads (parser, clauses); + c_name = "num_threads"; + break; + case PRAGMA_OMP_CLAUSE_ORDERED: + clauses = c_parser_omp_clause_ordered (parser, clauses); + c_name = "ordered"; + break; + case PRAGMA_OMP_CLAUSE_PRIVATE: + clauses = c_parser_omp_clause_private (parser, clauses); + c_name = "private"; + break; + case PRAGMA_OMP_CLAUSE_REDUCTION: + clauses = c_parser_omp_clause_reduction (parser, clauses); + c_name = "reduction"; + break; + case PRAGMA_OMP_CLAUSE_SCHEDULE: + clauses = c_parser_omp_clause_schedule (parser, clauses); + c_name = "schedule"; + break; + case PRAGMA_OMP_CLAUSE_SHARED: + clauses = c_parser_omp_clause_shared (parser, clauses); + c_name = "shared"; + break; + default: + c_parser_error (parser, "expected %<#pragma omp%> clause"); + goto saw_error; + } + + if (((mask >> c_kind) & 1) == 0 && !parser->error) + { + + + clauses = prev; + error ("%qs is not valid for %qs", c_name, where); + } + } + + saw_error: + c_parser_skip_to_pragma_eol (parser); + + return c_finish_omp_clauses (clauses); +} +# 7300 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_structured_block (c_parser *parser) +{ + tree stmt = push_stmt_list (); + c_parser_statement (parser); + return pop_stmt_list (stmt); +} +# 7319 "../../GCC/gcc/c-parser.c" +static void +c_parser_omp_atomic (c_parser *parser) +{ + tree lhs, rhs; + tree stmt; + enum tree_code code; + + c_parser_skip_to_pragma_eol (parser); + + lhs = c_parser_unary_expression (parser).value; + switch (((enum tree_code) (lhs)->common.code)) + { + case ERROR_MARK: + saw_error: + c_parser_skip_to_end_of_block_or_statement (parser); + return; + + case PREINCREMENT_EXPR: + case POSTINCREMENT_EXPR: + lhs = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (lhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7338, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7338, __FUNCTION__); &__t->exp.operands[__i]; })); + code = PLUS_EXPR; + rhs = global_trees[TI_INTEGER_ONE]; + break; + + case PREDECREMENT_EXPR: + case POSTDECREMENT_EXPR: + lhs = __extension__ (*({const tree __t = __extension__ ({ const tree __t = (lhs); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7345, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7345, __FUNCTION__); &__t->exp.operands[__i]; })); + code = MINUS_EXPR; + rhs = global_trees[TI_INTEGER_ONE]; + break; + + default: + switch (c_parser_peek_token (parser)->type) + { + case CPP_MULT_EQ: + code = MULT_EXPR; + break; + case CPP_DIV_EQ: + code = TRUNC_DIV_EXPR; + break; + case CPP_PLUS_EQ: + code = PLUS_EXPR; + break; + case CPP_MINUS_EQ: + code = MINUS_EXPR; + break; + case CPP_LSHIFT_EQ: + code = LSHIFT_EXPR; + break; + case CPP_RSHIFT_EQ: + code = RSHIFT_EXPR; + break; + case CPP_AND_EQ: + code = BIT_AND_EXPR; + break; + case CPP_OR_EQ: + code = BIT_IOR_EXPR; + break; + case CPP_XOR_EQ: + code = BIT_XOR_EXPR; + break; + default: + c_parser_error (parser, + "invalid operator for %<#pragma omp atomic%>"); + goto saw_error; + } + + c_parser_consume_token (parser); + rhs = c_parser_expression (parser).value; + break; + } + stmt = c_finish_omp_atomic (code, lhs, rhs); + if (stmt != global_trees[TI_ERROR_MARK]) + add_stmt (stmt); + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); +} + + + + + + +static void +c_parser_omp_barrier (c_parser *parser) +{ + c_parser_consume_pragma (parser); + c_parser_skip_to_pragma_eol (parser); + + c_finish_omp_barrier (); +} + + + + + + +static tree +c_parser_omp_critical (c_parser *parser) +{ + tree stmt, name = ((void *)0); + + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + { + c_parser_consume_token (parser); + if (c_parser_next_token_is (parser, CPP_NAME)) + { + name = c_parser_peek_token (parser)->value; + c_parser_consume_token (parser); + c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + } + else + c_parser_error (parser, "expected identifier"); + } + else if (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) + c_parser_error (parser, "expected %<(%> or end of line"); + c_parser_skip_to_pragma_eol (parser); + + stmt = c_parser_omp_structured_block (parser); + return c_finish_omp_critical (stmt, name); +} + + + + + + + +static void +c_parser_omp_flush (c_parser *parser) +{ + c_parser_consume_pragma (parser); + if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) + c_parser_omp_var_list_parens (parser, 0, ((void *)0)); + else if (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) + c_parser_error (parser, "expected %<(%> or end of line"); + c_parser_skip_to_pragma_eol (parser); + + c_finish_omp_flush (); +} + + + + + +static tree +c_parser_omp_for_loop (c_parser *parser) +{ + tree decl, cond, incr, save_break, save_cont, body, init; + location_t loc; + + if (!c_parser_next_token_is_keyword (parser, RID_FOR)) + { + c_parser_error (parser, "for statement expected"); + return ((void *)0); + } + loc = c_parser_peek_token (parser)->location; + c_parser_consume_token (parser); + + if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) + return ((void *)0); + + + if (c_parser_next_token_starts_declspecs (parser)) + { + c_parser_declaration_or_fndef (parser, 1, 1, 1, 1); + decl = check_for_loop_decls (); + if (decl == ((void *)0)) + goto error_init; + init = decl; + } + else if (c_parser_next_token_is (parser, CPP_NAME) + && c_parser_peek_2nd_token (parser)->type == CPP_EQ) + { + decl = c_parser_postfix_expression (parser).value; + + c_parser_require (parser, CPP_EQ, "expected %<=%>"); + + init = c_parser_expr_no_commas (parser, ((void *)0)).value; + init = build_modify_expr (decl, NOP_EXPR, init); + init = c_process_expr_stmt (init); + + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + } + else + goto error_init; + + + cond = (tree) ((void *)0); + if (c_parser_next_token_is_not (parser, CPP_SEMICOLON)) + { + cond = c_parser_expression_conv (parser).value; + cond = c_objc_common_truthvalue_conversion (cond); + if (((tree_code_type[(int) (((enum tree_code) (cond)->common.code))]) >= tcc_reference && (tree_code_type[(int) (((enum tree_code) (cond)->common.code))]) <= tcc_expression)) + annotate_with_locus (cond, input_location); + } + c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); + + + incr = (tree) ((void *)0); + if (c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN)) + incr = c_process_expr_stmt (c_parser_expression (parser).value); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + + parse_body: + save_break = c_break_label; + c_break_label = global_trees[TI_SIZE_ONE]; + save_cont = c_cont_label; + c_cont_label = (tree) ((void *)0); + body = push_stmt_list (); + + add_stmt (c_parser_c99_block_statement (parser)); + if (c_cont_label) + add_stmt (build1_stat (LABEL_EXPR,global_trees[TI_VOID_TYPE],c_cont_label )); + + body = pop_stmt_list (body); + c_break_label = save_break; + c_cont_label = save_cont; + + + + if (decl != ((void *)0) && decl != global_trees[TI_ERROR_MARK] && init != global_trees[TI_ERROR_MARK]) + return c_finish_omp_for (loc, decl, init, cond, incr, body, ((void *)0)); + return ((void *)0); + + error_init: + c_parser_error (parser, "expected iteration declaration or initialization"); + c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); + decl = init = cond = incr = (tree) ((void *)0); + goto parse_body; +} +# 7564 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_for (c_parser *parser) +{ + tree block, clauses, ret; + + clauses = c_parser_omp_all_clauses (parser, ( (1u << PRAGMA_OMP_CLAUSE_PRIVATE) | (1u << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_LASTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_REDUCTION) | (1u << PRAGMA_OMP_CLAUSE_ORDERED) | (1u << PRAGMA_OMP_CLAUSE_SCHEDULE) | (1u << PRAGMA_OMP_CLAUSE_NOWAIT)), + "#pragma omp for"); + + block = c_begin_compound_stmt (1); + ret = c_parser_omp_for_loop (parser); + if (ret) + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (ret); if (((enum tree_code) (__t)->common.code) != (OMP_FOR)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7575, __FUNCTION__, (OMP_FOR), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7575, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7575, __FUNCTION__); &__t->exp.operands[__i]; })) = clauses; + block = c_end_compound_stmt (block, 1); + add_stmt (block); + + return ret; +} + + + + + + +static tree +c_parser_omp_master (c_parser *parser) +{ + c_parser_skip_to_pragma_eol (parser); + return c_finish_omp_master (c_parser_omp_structured_block (parser)); +} + + + + + + +static tree +c_parser_omp_ordered (c_parser *parser) +{ + c_parser_skip_to_pragma_eol (parser); + return c_finish_omp_ordered (c_parser_omp_structured_block (parser)); +} +# 7615 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_sections_scope (c_parser *parser) +{ + tree stmt, substmt; + unsigned char error_suppress = 0; + location_t loc; + + if (!c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) + { + + parser->error = 0; + return (tree) ((void *)0); + } + + stmt = push_stmt_list (); + + loc = c_parser_peek_token (parser)->location; + if (c_parser_peek_token (parser)->pragma_kind != PRAGMA_OMP_SECTION) + { + substmt = push_stmt_list (); + + while (1) + { + c_parser_statement (parser); + + if (c_parser_peek_token (parser)->pragma_kind == PRAGMA_OMP_SECTION) + break; + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + break; + if (c_parser_next_token_is (parser, CPP_EOF)) + break; + } + + substmt = pop_stmt_list (substmt); + substmt = build1_stat (OMP_SECTION,global_trees[TI_VOID_TYPE],substmt ); + annotate_with_locus (substmt, loc); + add_stmt (substmt); + } + + while (1) + { + if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) + break; + if (c_parser_next_token_is (parser, CPP_EOF)) + break; + + loc = c_parser_peek_token (parser)->location; + if (c_parser_peek_token (parser)->pragma_kind == PRAGMA_OMP_SECTION) + { + c_parser_consume_pragma (parser); + c_parser_skip_to_pragma_eol (parser); + error_suppress = 0; + } + else if (!error_suppress) + { + error ("expected %<#pragma omp section%> or %<}%>"); + error_suppress = 1; + } + + substmt = c_parser_omp_structured_block (parser); + substmt = build1_stat (OMP_SECTION,global_trees[TI_VOID_TYPE],substmt ); + annotate_with_locus (substmt, loc); + add_stmt (substmt); + } + c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, + "expected %<#pragma omp section%> or %<}%>"); + + substmt = pop_stmt_list (stmt); + + stmt = make_node_stat (OMP_SECTIONS ); + ((stmt)->common.type) = global_trees[TI_VOID_TYPE]; + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_SECTIONS)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7686, __FUNCTION__, (OMP_SECTIONS), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7686, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7686, __FUNCTION__); &__t->exp.operands[__i]; })) = substmt; + + return add_stmt (stmt); +} +# 7703 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_sections (c_parser *parser) +{ + tree block, clauses, ret; + + clauses = c_parser_omp_all_clauses (parser, ( (1u << PRAGMA_OMP_CLAUSE_PRIVATE) | (1u << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_LASTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_REDUCTION) | (1u << PRAGMA_OMP_CLAUSE_NOWAIT)), + "#pragma omp sections"); + + block = c_begin_compound_stmt (1); + ret = c_parser_omp_sections_scope (parser); + if (ret) + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (ret); if (((enum tree_code) (__t)->common.code) != (OMP_SECTIONS)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7714, __FUNCTION__, (OMP_SECTIONS), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7714, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7714, __FUNCTION__); &__t->exp.operands[__i]; })) = clauses; + block = c_end_compound_stmt (block, 1); + add_stmt (block); + + return ret; +} +# 7737 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_parallel (c_parser *parser) +{ + enum pragma_kind p_kind = PRAGMA_OMP_PARALLEL; + const char *p_name = "#pragma omp parallel"; + tree stmt, clauses, par_clause, ws_clause, block; + unsigned int mask = ( (1u << PRAGMA_OMP_CLAUSE_IF) | (1u << PRAGMA_OMP_CLAUSE_PRIVATE) | (1u << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_DEFAULT) | (1u << PRAGMA_OMP_CLAUSE_SHARED) | (1u << PRAGMA_OMP_CLAUSE_COPYIN) | (1u << PRAGMA_OMP_CLAUSE_REDUCTION) | (1u << PRAGMA_OMP_CLAUSE_NUM_THREADS)); + + if (c_parser_next_token_is_keyword (parser, RID_FOR)) + { + c_parser_consume_token (parser); + p_kind = PRAGMA_OMP_PARALLEL_FOR; + p_name = "#pragma omp parallel for"; + mask |= ( (1u << PRAGMA_OMP_CLAUSE_PRIVATE) | (1u << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_LASTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_REDUCTION) | (1u << PRAGMA_OMP_CLAUSE_ORDERED) | (1u << PRAGMA_OMP_CLAUSE_SCHEDULE) | (1u << PRAGMA_OMP_CLAUSE_NOWAIT)); + mask &= ~(1u << PRAGMA_OMP_CLAUSE_NOWAIT); + } + else if (c_parser_next_token_is (parser, CPP_NAME)) + { + const char *p = ((const char *) __extension__ ({ const tree __t = (c_parser_peek_token (parser)->value); if (((enum tree_code) (__t)->common.code) != (IDENTIFIER_NODE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7755, __FUNCTION__, (IDENTIFIER_NODE), 0); __t; })->identifier.id.str); + if (strcmp (p, "sections") == 0) + { + c_parser_consume_token (parser); + p_kind = PRAGMA_OMP_PARALLEL_SECTIONS; + p_name = "#pragma omp parallel sections"; + mask |= ( (1u << PRAGMA_OMP_CLAUSE_PRIVATE) | (1u << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_LASTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_REDUCTION) | (1u << PRAGMA_OMP_CLAUSE_NOWAIT)); + mask &= ~(1u << PRAGMA_OMP_CLAUSE_NOWAIT); + } + } + + clauses = c_parser_omp_all_clauses (parser, mask, p_name); + + switch (p_kind) + { + case PRAGMA_OMP_PARALLEL: + block = c_begin_omp_parallel (); + c_parser_statement (parser); + stmt = c_finish_omp_parallel (clauses, block); + break; + + case PRAGMA_OMP_PARALLEL_FOR: + block = c_begin_omp_parallel (); + c_split_parallel_clauses (clauses, &par_clause, &ws_clause); + stmt = c_parser_omp_for_loop (parser); + if (stmt) + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_FOR)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7781, __FUNCTION__, (OMP_FOR), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7781, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7781, __FUNCTION__); &__t->exp.operands[__i]; })) = ws_clause; + stmt = c_finish_omp_parallel (par_clause, block); + ((__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_PARALLEL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7783, __FUNCTION__, (OMP_PARALLEL), 0); __t; }))->common.private_flag) = 1; + break; + + case PRAGMA_OMP_PARALLEL_SECTIONS: + block = c_begin_omp_parallel (); + c_split_parallel_clauses (clauses, &par_clause, &ws_clause); + stmt = c_parser_omp_sections_scope (parser); + if (stmt) + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_SECTIONS)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7791, __FUNCTION__, (OMP_SECTIONS), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7791, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7791, __FUNCTION__); &__t->exp.operands[__i]; })) = ws_clause; + stmt = c_finish_omp_parallel (par_clause, block); + ((__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_PARALLEL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7793, __FUNCTION__, (OMP_PARALLEL), 0); __t; }))->common.private_flag) = 1; + break; + + default: + (fancy_abort ("../../GCC/gcc/c-parser.c", 7797, __FUNCTION__)); + } + + return stmt; +} +# 7814 "../../GCC/gcc/c-parser.c" +static tree +c_parser_omp_single (c_parser *parser) +{ + tree stmt = make_node_stat (OMP_SINGLE ); + ((stmt)->common.type) = global_trees[TI_VOID_TYPE]; + + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_SINGLE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7820, __FUNCTION__, (OMP_SINGLE), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7820, __FUNCTION__); __t; }); const int __i = (1); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7820, __FUNCTION__); &__t->exp.operands[__i]; })) + = c_parser_omp_all_clauses (parser, ( (1u << PRAGMA_OMP_CLAUSE_PRIVATE) | (1u << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_COPYPRIVATE) | (1u << PRAGMA_OMP_CLAUSE_NOWAIT)), + "#pragma omp single"); + __extension__ (*({const tree __t = __extension__ ({ const tree __t = (__extension__ ({ const tree __t = (stmt); if (((enum tree_code) (__t)->common.code) != (OMP_SINGLE)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7823, __FUNCTION__, (OMP_SINGLE), 0); __t; })); char const __c = tree_code_type[(int) (((enum tree_code) (__t)->common.code))]; if (!((__c) >= tcc_reference && (__c) <= tcc_expression)) tree_class_check_failed (__t, tcc_expression, "../../GCC/gcc/c-parser.c", 7823, __FUNCTION__); __t; }); const int __i = (0); if (__i < 0 || __i >= tree_code_length[(int) (((enum tree_code) (__t)->common.code))]) tree_operand_check_failed (__i, ((enum tree_code) (__t)->common.code), "../../GCC/gcc/c-parser.c", 7823, __FUNCTION__); &__t->exp.operands[__i]; })) = c_parser_omp_structured_block (parser); + + return add_stmt (stmt); +} + + + + +static void +c_parser_omp_construct (c_parser *parser) +{ + enum pragma_kind p_kind; + location_t loc; + tree stmt; + + loc = c_parser_peek_token (parser)->location; + p_kind = c_parser_peek_token (parser)->pragma_kind; + c_parser_consume_pragma (parser); + + + + + if (p_kind != PRAGMA_OMP_ATOMIC) + c_maybe_initialize_eh (); + + switch (p_kind) + { + case PRAGMA_OMP_ATOMIC: + c_parser_omp_atomic (parser); + return; + case PRAGMA_OMP_CRITICAL: + stmt = c_parser_omp_critical (parser); + break; + case PRAGMA_OMP_FOR: + stmt = c_parser_omp_for (parser); + break; + case PRAGMA_OMP_MASTER: + stmt = c_parser_omp_master (parser); + break; + case PRAGMA_OMP_ORDERED: + stmt = c_parser_omp_ordered (parser); + break; + case PRAGMA_OMP_PARALLEL: + stmt = c_parser_omp_parallel (parser); + break; + case PRAGMA_OMP_SECTIONS: + stmt = c_parser_omp_sections (parser); + break; + case PRAGMA_OMP_SINGLE: + stmt = c_parser_omp_single (parser); + break; + default: + (fancy_abort ("../../GCC/gcc/c-parser.c", 7875, __FUNCTION__)); + } + + if (stmt) + annotate_with_locus (stmt, loc); +} + + + + + +static void +c_parser_omp_threadprivate (c_parser *parser) +{ + tree vars, t; + + c_parser_consume_pragma (parser); + vars = c_parser_omp_var_list_parens (parser, 0, ((void *)0)); + + if (!targetm.have_tls) + sorry ("threadprivate variables not supported in this target"); + + + for (t = vars; t; t = ((t)->common.chain)) + { + tree v = (__extension__ ({ const tree __t = (t); if (((enum tree_code) (__t)->common.code) != (TREE_LIST)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7900, __FUNCTION__, (TREE_LIST), 0); __t; })->list.purpose); + + + + if (((v)->common.used_flag) && !(__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7904, __FUNCTION__, (VAR_DECL), 0); __t; })); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_COMMON)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_COMMON), "../../GCC/gcc/c-parser.c", 7904, __FUNCTION__); __t; })->decl_common.lang_flag_3)) + error ("%qE declared % after first use", v); + else if (! ((v)->common.static_flag) && ! (__extension__ ({ const tree __t = (v); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_COMMON)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_COMMON), "../../GCC/gcc/c-parser.c", 7906, __FUNCTION__); __t; })->decl_common.decl_flag_2)) + error ("automatic variable %qE cannot be %", v); + else if (! ((__extension__ ({ const tree __t = (((v)->common.type)); if (tree_code_type[(int) (((enum tree_code) (__t)->common.code))] != (tcc_type)) tree_class_check_failed (__t, (tcc_type), "../../GCC/gcc/c-parser.c", 7908, __FUNCTION__); __t; })->type.size) != (tree) ((void *)0))) + error ("% %qE has incomplete type", v); + else + { + if (! (__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7912, __FUNCTION__, (VAR_DECL), 0); __t; })->decl_with_vis.tls_model != TLS_MODEL_NONE)) + { + (__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7914, __FUNCTION__, (VAR_DECL), 0); __t; })->decl_with_vis.tls_model) = decl_default_tls_model (v); + + + + if ((((tree_contains_struct[(((enum tree_code) (v)->common.code))][(TS_DECL_WRTL)])) && __extension__ ({ const tree __t = (v); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_WRTL)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_WRTL), "../../GCC/gcc/c-parser.c", 7918, __FUNCTION__); __t; })->decl_with_rtl.rtl != ((void *)0))) + make_decl_rtl (v); + } + (__extension__ ({ const tree __t = (__extension__ ({ const tree __t = (v); if (((enum tree_code) (__t)->common.code) != (VAR_DECL)) tree_check_failed (__t, "../../GCC/gcc/c-parser.c", 7921, __FUNCTION__, (VAR_DECL), 0); __t; })); if (tree_contains_struct[((enum tree_code) (__t)->common.code)][(TS_DECL_COMMON)] != 1) tree_contains_struct_check_failed (__t, (TS_DECL_COMMON), "../../GCC/gcc/c-parser.c", 7921, __FUNCTION__); __t; })->decl_common.lang_flag_3) = 1; + } + } + + c_parser_skip_to_pragma_eol (parser); +} + + + + +void +c_parse_file (void) +{ + + + + c_parser tparser; + + memset (&tparser, 0, sizeof tparser); + the_parser = &tparser; + + if (c_parser_peek_token (&tparser)->pragma_kind == PRAGMA_GCC_PCH_PREPROCESS) + c_parser_pragma_pch_preprocess (&tparser); + + the_parser = ((c_parser *) ggc_alloc_stat (sizeof (c_parser) )); + *the_parser = tparser; + + c_parser_translation_unit (the_parser); + the_parser = ((void *)0); +} + +# 1 "./gt-c-parser.h" 1 +# 22 "./gt-c-parser.h" +void +gt_ggc_mx_c_parser (void *x_p) +{ + struct c_parser * const x = (struct c_parser *)x_p; + if (((x) != ((void *)0) && ((void *) (x)) != (void *) 1 && ! ggc_set_mark (x))) + { + { + size_t i0; + for (i0 = 0; i0 != (size_t)(2); i0++) { + do { if ((*x).tokens[i0].value != ((void *)0)) gt_ggc_mx_lang_tree_node ((*x).tokens[i0].value); } while (0); + } + } + } +} + +void +gt_pch_nx_c_parser (void *x_p) +{ + struct c_parser * const x = (struct c_parser *)x_p; + if (gt_pch_note_object (x, x, gt_pch_p_8c_parser, gt_ggc_e_8c_parser)) + { + { + size_t i0; + for (i0 = 0; i0 != (size_t)(2); i0++) { + do { if ((*x).tokens[i0].value != ((void *)0)) gt_pch_nx_lang_tree_node ((*x).tokens[i0].value); } while (0); + gt_pch_n_S ((*x).tokens[i0].location.file); + } + } + } +} + +void +gt_pch_p_8c_parser (__attribute__ ((__unused__)) void *this_obj, + void *x_p, + __attribute__ ((__unused__)) gt_pointer_operator op, + __attribute__ ((__unused__)) void *cookie) +{ + struct c_parser * const x __attribute__ ((__unused__)) = (struct c_parser *)x_p; + { + size_t i0; + for (i0 = 0; i0 != (size_t)(2); i0++) { + if ((void *)(x) == this_obj) + op (&((*x).tokens[i0].value), cookie); + if ((void *)(x) == this_obj) + op (&((*x).tokens[i0].location.file), cookie); + } + } +} + + + +const struct ggc_root_tab gt_ggc_r_gt_c_parser_h[] = { + { + &the_parser, + 1, + sizeof (the_parser), + >_ggc_mx_c_parser, + >_pch_nx_c_parser + }, + { ((void *)0), 0, 0, ((void *)0), ((void *)0) } +}; +# 7952 "../../GCC/gcc/c-parser.c" 2 diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/normal.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/normal.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,26 @@ +#include +#include + +//size_t size; +int size; +typedef int test_int; + +test_int ti; + +void end(){ + exit(0); +} + +int main(int argc, char **argv){ + size=0; + ti=10; + + printf("main: "); + printf("normal:%d\n", argc); + + size = 10; + printf("size = %d\n", size); + printf(" ti = %d\n", ti); + end(); +} + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/normal2.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/normal2.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,65 @@ +//#include +//#include + +struct abc { + int a; + double b; + char c; + double *d; +}; + +struct def { + int d; + struct abc e; + struct abc *f; +}; + +void print_abc(struct abc a){ + printf("\tstruct abc:\n"); + printf("\ta=%d, b=%lf, c=%d, d=%p\n", a.a, a.b, a.c, a.d); +} +void print_def(struct def b){ + printf("\tstruct def:\n"); + printf("\ta=%d, b=%p\n", b.d, b.f); + print_abc(b.e); +} + +void cs_exit(int a){ + printf("cs_exit : a=%d.\n", a); + exit(a); +} + +void cs0(struct abc a, struct def b, int c){ + printf("cs0 :\n"); + print_abc(a); + print_def(b); + return cs_exit( c*a.a+b.e.c ); +} + + +void cs_goto(int c, struct abc a, struct def b){ + printf("cs_return :\n"); + print_abc(a); + print_def(b); + return cs0(a, b, c); +} + +int main(int argc, char **argv){ + struct abc A; + struct def B; + //int a=10, b=20, c=30, d=40, e=50, f=60, g=70; + A.a = 10, A.b = 20.02, A.c = '\0', A.d = 0; + B.d = 30, B.f = &A; + B.e.a = 50, B.e.b = 60.06, B.e.c = '\1', B.e.d = 0; + + printf("main :\n"); + print_abc(A); + print_def(B); + //printf("20*%d + 30*%d + 40*%d + 50*%d =\n", a, b, c, d); + cs_goto(100, A, B); + return 0; +} + + + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/stack1.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/stack1.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,126 @@ +/* + test for CbC converted __code from C + */ + +//#include +#define NULL 0 + +extern void *malloc(int); + +typedef void *stack; + +void *stack0; /* size of void* == 1 */ + +struct cont_save { /* General Return Continuation */ + __code (*ret)(); +}; + + __code g(int,void *); + __code f_g0(int ,int ,void *); + __code f_g1(int,void *); + __code print(int i,int j,__code (*exit1)(),void*exit1env); + +struct f_g0_save { /* Specialized Return Continuation */ + __code (*ret)(); + int ii,kk,jj; +}; + +__code g(int i,void *sp) { + goto (* ((struct cont_save *)sp)->ret)(i+4,sp); +} + +__code __attribute__ ((fastcall)) f_g1(int j,void *sp) { /* Continuation */ + int k; + struct f_g0_save *c; + + c = sp; + k = c->kk; + sp += sizeof(struct f_g0_save); + goto (* ((struct cont_save *)sp)->ret)(k+4+j,sp); +} + +__code f(int i,void *sp) { + int k,j; + struct f_g0_save *c; +printf("#0042:f 0 sp: %x\n",sp-stack0); + + k = 3+i; + +printf("#0046:f 1 sp: %x\n",sp-stack0); + sp -= sizeof(struct f_g0_save); +printf("#0048:f 2 sp: %x\n",sp-stack0); + c = sp; + c->kk = k; + c->ii = i; + c->jj = j; + c->ret = f_g1; + goto g(i,sp); +} + + + +struct f0_save { /* Specialized Return Continuation */ + __code (*ret)(); + __code (*exit1)(); + void *exit1env; + int jj; +}; + +__code f1(int i,void *sp) ; +__code f0(int i,int j,__code(*exit2)(), void *exit2env,void *sp) +{ + struct f0_save *c; + printf("#0070:f0 1 sp: %x\n",sp-stack0); + sp -= sizeof(struct f0_save); + printf("#0072:f0 2 sp: %x\n",sp-stack0); + c = sp; + c->jj = j; + c->exit1 = exit2; + c->exit1env = exit2env; + c->ret = f1; + printf("#0078:f0 3 sp: %x\n",sp-stack0); + goto f(i,sp); +} + +__code f1(int i,void *sp) { + int j; + int *exit2env; + __code (*exit2)(); + struct f0_save *c; + + c = sp; + j = c->jj; + exit2 = c->exit1; + exit2env = c->exit1env; + + sp += sizeof(struct f0_save); + goto print(i,j,exit2,exit2env); +} + +int main(int ac, char*av[]){ + main0(ac,av); +} + +int main0( int ac, char *av[]) +{ + int i,j; + int *sp; + + // i = atoi(av[1]); + i = 1; + stack0 = ((char *)malloc(1024)+1024); + sp = stack0; + j = i; + + printf("#0108:sp: %x %x\n",sp-(int*)stack0,sizeof(*stack0)); + //goto f0(i,j,_CbC_return,_CbC_environment,sp); + goto f0(i,j,NULL,NULL,sp); +} + +__code print(int i,int j,__code (*exit1)(),void*exit1env) +{ + printf("#0114:%d %d\n",i,j); + //goto (*exit1)(0),exit1env; + exit(0); +} + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test01.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test01.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,34 @@ +#include + +int test_code(void){ + printf("\t\ttest_code: return 10\n"); + return 10; +} + +int test_goto(int a){ + printf("\ttest_goto: a = %d\n", a); + //return test_code(); + return test_code(); +} + +int main(int argc, char **argv){ + int ret; + printf("test code\n"); + ret = test_goto(20); + printf("main: ret = %d\n", ret); + + return test_goto2(10,20,30,40,50,60,70,80,90,100); + return 0; +} + +int test_code2(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k){ + printf("\t\ttest_code: return 10\n"); + printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,g=%d,h=%d,i=%d,j=%d,k=%d\n",a,b,c,d,e,f,g,h,i,j,k ); + return a+b+c+d+e+f+g+h+i+j+k; +} + +int test_goto2(int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k){ + printf("\ttest_goto: a = %d\n", a); + //return test_code(); + return test_code2(a,b,c,d,e,f,g,h,i,j,k); +} diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test02.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test02.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,22 @@ +#include + +__code test_code(void){ + printf("\t\ttest_code: return 10\n"); + return; +} + +__code test_goto(int a){ + printf("\ttest_goto: a = %d\n", a); + //return test_code(); + goto test_code(); +} + +int main(int argc, char **argv){ + int ret=0; + printf("test code\n"); + test_goto(20); + printf("main: ret = %d\n", ret); + + return 0; +} + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test03.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test03.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,26 @@ + +extern void test02() ; +extern void test03() ; + +extern int data; + +extern void +test01() { + test02(); +} + +extern void +test02() { + test03(); +} + +extern void +test03() { + data = 3; +} + +int +main() +{ + test01(); +} diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test04.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test04.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,33 @@ + +int test01(int a, double b, int *c){ + return a+b- *c; +} + +int test(int *a, double b){ + int c; + c = *a*b + 10; + printf("a = %x, *a = %d, b = %d\n", a, *a, b); + *a = test01( *a+b, 0.02, &c); + return *a+b; +} + + +int test02(int a, int b){ + int i,sum=0; + i = a; + while ( i <= b ) { + sum += i; + i++; + } + return sum - a*b; +} + +int main(int argc, char **argv){ + int a=10; + + printf("= %d\n", test02(0, 10)); + test( &a, 10.1); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_array.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_array.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,17 @@ +//#include +void print_array(int *, int); + +int main(int argc, char **argv){ + int array[10] = {10, 2, 3, 0, 7, 5}; + array[1] += array[2]+array[4]; + print_array(array, 10); + return 0; +} + +void print_array(int *a, int size){ + while( size-->0 ){ + printf(" %7d", *a++); + } + printf("\n"); +} + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_call.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_call.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,12 @@ + +int test(int a){ + printf("a = %d\n", a); + return 10*a; +} + +int main(){ + test(10); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_cs.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_cs.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,43 @@ +//#include +//#include + +__code cs_exit(int , double , char ); +__code cs1(int, int, int, int); +__code cs2(double, double, int, double); +void test_goto(void); + +int main(int argc, char **argv){ + printf("main start\n"); + //goto cs2(2.22, 3.33, 4, 5.55); + test_goto(); + return 0; +} + +void test_goto(){ + goto cs1(10, 20, 30, 40); +} + +__code cs1(int a, int b, int c, int d){ + printf("%4d, %4d, %4d, %4d\n", a, b, c, d); + a += 40, b += 40, c += 40, d += 40; + goto cs2((double)a, (double)b, c, (double)d); +} + +__code cs2(double a, double b, int c, double d){ + printf("%4d, %4d, %4d, %4d\n", (int)a, (int)b, (int)c, (int)d); + a += 40, b += 40, c += 40, d += 40; + goto cs_exit((int)a, b, (char)c); +} + +__code cs_exit(int a, double b, char c){ + printf("%4d, %4d, %4d\n", (int)a, (int)b, (int)c); + printf("cs_exit was called!\n"); + exit(0); +} + + +void caller(int a, double b){ + cs2(b,20.0,a, 40.4); + cs1(10,20,30, 40); +} + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_csp1.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_csp1.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,48 @@ +#include +#include + +//static __code (*csp)(int, int, int, int); + +__code cs_end(int a){ + printf("cs_exit : a=%d.\n", a); + exit(a); + goto cs_end(a); +} + +__code cs0(int a, int b, int c, int d){ + //printf("cs0 : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); + printf("cs_cs0 : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d); + goto cs_end( (int)(20*a + 30*b + 40*c + 50*d) ); +} + + +void* freturn(){ + return cs0; +} +__code cs_goto(int a, int b, int c, int d){ + __code (*csp)(int, int, int, int); + csp = freturn(); + printf("csp = %x.\n", csp); + + //printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); + //printf("cs_goto : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d); + //printf("cs_goto : a-4=%d, a-8=%d, a-12=%d, a-16=%d.\n", *(&a-4), *(&a-8), *(&a-12), *(&a-16)); + //printf("cs_goto : cs0(a, b, c, d)\n"); + goto csp(b+a, d+b, a+c, c+d); +} + +int function(double a, float b, int c){ + + printf("function:\n"); + printf("a=%lf, b=%f, c=%d\n", a, b, c); + //goto cs_goto(10, 20, 30, 40); + goto cs_goto(10, 20, 30, 40); +} + +int main(int argc, char **argv){ + //csp = cs0; + function(10.01, 20.02, 30); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_env.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_env.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,68 @@ + +typedef void (*RET_FUNC)(int, void *); + +int main(int argc, char **argv) +{ + int r; + r = f(); + printf("%d\n", r); +} + +//void z(RET_FUNC ret, void *fp) +__code z(RET_FUNC ret, void *fp) +{ + printf("z: fp=0x%x\n", __builtin_frame_address(0)); + ret(5, fp); +} +__code i(RET_FUNC ret, void *fp) +{ + printf("i: fp=0x%x\n", __builtin_frame_address(0)); + goto z(ret, fp); +} +__code h(RET_FUNC ret, void *fp) +{ + printf("h: fp=0x%x\n", __builtin_frame_address(0)); + goto i(ret, fp); +} +__code g(RET_FUNC ret, void *fp) +{ + printf("g: fp=0x%x\n", __builtin_frame_address(0)); + goto h(ret, fp); +} + +int f() +{ + __label__ exit0; + int retval; + //void (*ret)(int retval_, void *fp); + + /* + ret = ({ + void __return_func(int retval_, void *fp){ + retval = retval_; + goto exit0; + } + __return_func; + }); + */ + printf("f0: fp = 0x%x\n", __builtin_frame_address(0)); + void __return_func(int retval_, void *fp){ + retval = retval_; + goto exit0; + } + //ret = __return_func; + + printf("f1: fp = 0x%x\n", __builtin_frame_address(0)); + + //g(__return_func, __builtin_frame_address(0)); + goto g(__return_func, __builtin_frame_address(0)); + + printf("bad\n"); + +exit0: + printf("f2: fp = 0x%x\n", __builtin_frame_address(0)); + return retval; +} + + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_nest.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_nest.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,50 @@ + +int printf(char *, ...); +typedef void (*RET_FUNC)(int, void *); + +void g(RET_FUNC func) +{ + func(33, 0); +} + +int f() +{ + void *ret; + ret = ({ + __label__ exit0; + int retval; + void __return_func(int retval_, void *fp){ + retval = retval_; + goto exit0; + } + if (0) { + exit0: + printf("f2: fp = 0x%x\n", __builtin_frame_address(0)); + return retval; + } + __return_func; + }); + + //g(__return_func, __builtin_frame_address(0)); + printf("f0: fp = 0x%x\n", __builtin_frame_address(0)); + printf("__return_func = %x\n", ret); + g(ret); + + printf("not good\n"); + return 0; + +//exit0: + //printf("f2: fp = 0x%x\n", __builtin_frame_address(0)); + //return retval; +} + +int main(int argc, char **argv) +{ + int t; + printf("main before: fp = 0x%x\n", __builtin_frame_address(0)); + t = f(); + printf("f = %d\n", t); + printf("main after: fp = 0x%x\n", __builtin_frame_address(0)); +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_para.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_para.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,26 @@ +#include +#include + +__code cs_exit(int a){ + printf("cs_exit was called: a=%d.\n", a); + exit(a); +} + +__code cs0(int a, double b, int c, int d){ + printf("cs0 was called: a=%d, b=%lf, c=%d, d=%d.\n", a, b, c, d); + goto cs_exit( (int)(20*a + 4.4*b + 2022/c + 28*d) ); +} + + +__code cs_goto(){ + goto cs0(11, 22.2, 33, 44); +} + +int main(int argc, char **argv){ + + printf("it is in main.\n"); + goto cs_goto(); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_para2.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_para2.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,40 @@ +#include +#include + +__code cs_end(int a){ + printf("cs_exit : a=%d.\n", a); + exit(a); +} + +__code cs0(int a, int b, int c, int d); + +__code cs_goto(int a, int b, int c, int d){ + //printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); + printf("cs_goto : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d); + //printf("cs_goto : a-4=%d, a-8=%d, a-12=%d, a-16=%d.\n", *(&a-4), *(&a-8), *(&a-12), *(&a-16)); + //printf("cs_goto : cs0(a, b, c, d)\n"); + goto cs0(b, c, d, a); +} + +__code cs0(int a, int b, int c, int d){ + //printf("cs0 : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); + printf("cs_cs0 : a=%d, b=%d, c=%d, d=%d.\n", a, b, c, d); + goto cs_end( (int)(20*a + 30*b + 40*c + 50*d) ); +} + + +int function(double a, float b, int c){ + + //printf("function:\n"); + //printf("a=%lf, b=%f, c=%d\n", a, b, c); + //goto cs_goto(10, 20, 30, 40); + goto cs_goto(10, 20, 30, 40); +} + +int main(int argc, char **argv){ + + function(10.01, 20.02, 30); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_para3.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_para3.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,83 @@ +#include +#include + +struct abc { + int a; + double b; + char c; + double *d; +}; + +struct def { + int d; + struct abc e; + struct abc *f; +}; + +void print_abc(struct abc a){ + printf("\tstruct abc:\n"); + printf("\ta=%d, b=%lf, c=%d, d=%p\n", a.a, a.b, a.c, a.d); +} +void print_def(struct def b){ + printf("\tstruct def:\n"); + printf("\td=%d, f=%p\n", b.d, b.f); + print_abc(b.e); +} + +__code cs_exit(int a){ + printf("cs_exit : a=%d.\n", a); + exit(a); +} + +__code cs0(struct abc a, struct def b, int c){ + printf("cs0 :\n"); + printf("c=%d\n", c); + print_abc(a); + print_def(b); + goto cs_exit( c*a.a+b.e.c ); +} + + +__code cs_goto(int c, struct abc a, struct def b){ + printf("cs_goto :\n"); + printf("c=%d\n", c); + print_abc(a); + print_def(b); + goto cs0(a, b, c); +} + +int function(){ + struct abc A; + struct def B; + A.a = 10, A.b = 20.02, A.c = '\0', A.d = 0xad; + B.d = 30, B.f = 0xbf; + B.e.a = 50, B.e.b = 60.06, B.e.c = '\1', B.e.d = 0xed; + + printf("function :\n"); + print_abc(A); + print_def(B); + //printf("20*%d + 30*%d + 40*%d + 50*%d =\n", a, b, c, d); + goto cs_goto(100, A, B); + return 0; +} + +int main(int argc, char **argv){ + struct abc A; + struct def B; + //int a=10, b=20, c=30, d=40, e=50, f=60, g=70; + A.a = 10, A.b = 20.02, A.c = '\0', A.d = 0xad; + B.d = 30, B.f = 0xbf; + B.e.a = 50, B.e.b = 60.06, B.e.c = '\1', B.e.d = 0xed; + + /* + printf("main :\n"); + print_abc(A); + print_def(B); + //printf("20*%d + 30*%d + 40*%d + 50*%d =\n", a, b, c, d); + goto cs_goto(100, A, B); + */ + function(); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_para4.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_para4.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,74 @@ +//#include +//#include + +#define DPRINT 1 +#define NOINLINE __attribute__((noinline)) + +extern __code cs_goto(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, + int a2, int b2, int c2, int d2, int e2, int f2, int g2, int h2, int i2, int j2); +extern __code cs0(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, + int a2, int b2, int c2, int d2, int e2, int f2, int g2, int h2, int i2, int j2); + +__code (*csp)(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, + int a2, int b2, int c2, int d2, int e2, int f2, int g2, int h2, int i2, int j2); + +__code NOINLINE cs_exit(int a){ + int b = 20 * a + 3; + printf("cs_exit : a=%d. b=%d\n", a, b); + exit(a); +} + +int function(double l, float m, int n){ + int a=10, b=20, c=30, d=40, e=50, f=60, g=70, h=80, i=90, j=100; + int a2=110, b2=120, c2=130, d2=140, e2=150, f2=160, g2=170, h2=180, i2=190, j2=200; + +#if DPRINT + printf("function: a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a, b, c, d, e, f, g, h, i, j); + printf("function: a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a2, b2, c2, d2, e2, f2, g2, h2, i2, j2); + //printf("l=%lf, m=%f, n=%d\n", l, m, n); +#endif + //goto cs_goto(10, 20, 30, 40); + goto cs_goto(a, b, c, d, e, f, g, h, i, j, a2, b2, c2, d2, e2, f2, g2, h2, i2, j2); +} + +__code NOINLINE cs_goto(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, + int a2, int b2, int c2, int d2, int e2, int f2, int g2, int h2, int i2, int j2){ +#if DPRINT + printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a, b, c, d, e, f, g, h, i, j); + printf("cs_goto : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a2, b2, c2, d2, e2, f2, g2, h2, i2, j2); +#endif + goto cs0(b, c, d, e, f, g, h, i, j, a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, a); +} + +__code NOINLINE cs0(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, + int a2, int b2, int c2, int d2, int e2, int f2, int g2, int h2, int i2, int j2){ +#if DPRINT + //printf("cs0 : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d.\n", a, b, c, d, e, f, g); + printf("cs0 : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a, b, c, d, e, f, g, h, i, j); + printf("cs0 : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a2, b2, c2, d2, e2, f2, g2, h2, i2, j2); +#endif + goto cs_exit( (int)(10*a + 10*b + 10*i2 + 10*j2) ); +} + + +int main(int argc, char **argv){ + + //printf("main :\n"); + /* + printf("main : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a, b, c, d, e, f, g, h, i, j); + printf("main : a=%d, b=%d, c=%d, d=%d, e=%d, f=%d, g=%d, h=%d, i=%d, j=%d\n", + a2, b2, c2, d2, e2, f2, g2, h2, i2, j2); + */ + //csp = cs0; + function(10.01, 20.02, 30); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_return.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_return.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,89 @@ +#include + +#if 0 +typedef float testtype; +testtype good = 33.3f; +testtype bad = 0.0f; +void print_testtype(testtype t) +{ + printf("return value = %2.3f good=%2.3f,bad=%2.3f\n", t,good,bad); +} +#elif 1 +typedef char testtype; +testtype good = 33; +testtype bad = 0; +void print_testtype(testtype t) +{ + printf("return value = %d, good=%d,bad=%d\n", t,good,bad); +} +#elif 0 +typedef double testtype; +testtype good = 333.3; +testtype bad = 0.00; +void print_testtype(testtype t) +{ + printf("return value = %3.3lf, good=%3.3lf,bad=%3.3lf\n", t,good,bad); +} +#elif 0 +typedef +struct { + int a; + float b; + int c[4]; +} testtype; +testtype good = {33, 33.3, {4,4,4,4}}; +testtype bad = {0, 00.0, {0,0,0,0}}; +void print_testtype(testtype t) +{ + printf( "return value = {\n" + " a = %d\n" + " b = %2.3f\n" + " c = { %d, %d, %d, %d }" + "}\n", t.a, t.b, + t.c[0],t.c[1],t.c[2],t.c[3]); +} +#else +typedef int testtype; +testtype good = 33; +testtype bad = 0; +void print_testtype(testtype t) +{ + printf("return value = %d, good=%d,bad=%d\n", t,good,bad); +} +#endif + +typedef void (*RET_FUNC)(testtype, void *); + +void g(RET_FUNC func) +{ + func(good, NULL); +} + +testtype f_cbc() +{ + //__label__ _cbc_exit0; + //int retval; + void *ret; + + ret = _CbC_return; + + printf("f0: fp = %p\n", __builtin_frame_address(0)); + printf("__return_func = %p\n", ret); + g(ret); + + printf("not good\n"); + return bad; +//_cbc_exit0: + //printf("f1: fp = 0x%x\n", __builtin_frame_address(0)); + //return retval; +} + +int main(int argc, char **argv) +{ + testtype t; + printf("main before: fp = %p\n", __builtin_frame_address(0)); + t = f_cbc(); + print_testtype(t); + printf("main after: fp = %p\n", __builtin_frame_address(0)); +} + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_struct.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_struct.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,31 @@ + +struct aaa{ + int a; // 4 + char b; // 1 + int c; // 4 + double d; // 8 + char e[10]; //10 +}; //27 --> 32 + +int main(int argc, char **argv){ + struct aaa A; + A.a = 10; + A.b = 'A'; + A.c = 20; + A.d = 1.11; + A.e[0] = 'A', A.e[1] = 'Z'; + + printf("sizeof aaa = %d\n", sizeof(struct aaa)); + tset01( A, 10); + return 0; +} + +void tset01( struct aaa B, int size){ + printf("B.a = %d\n", B.a); + printf("B.b = %d\n", B.b); + printf("B.c = %d\n", B.c); + printf("B.d = %lf\n", B.d); + B.e[9] = '\0'; + printf("B.e = %s\n", B.e); + printf("size = %d\n", size); +} diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_tailcall1.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_tailcall1.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,28 @@ +#include + + +void B(int a, int b, int c){ + printf("B: a=%d, b=%d, c=%d\n", a, b, c); + return ; +} + +void* freturn(){ + return B; +} +void A(int a, int b, int c, int d){ + void (*fp)(int, int, int); + fp = freturn(); + + printf("A: a=%d, b=%d, c=%d, d=%d\n", a, b, c, d); + return fp(a, b, c+d); + //return B(a, b, c+d); +} + +int main(int argc, char **argv){ + printf("main: \n"); + //fp = B; + A(10, 20, 30, 40); + return 0; +} + + diff -r 11a6cbe2d14c -r 4c6926a2b9bc CbC-examples/test_tree.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CbC-examples/test_tree.c Thu Sep 24 12:51:25 2009 +0900 @@ -0,0 +1,54 @@ +//#include +double test(char, char, int, double); +__code cs(int , double , char ); +void testvoid(double a); +int testint(double a); + +__code cs(int a, double b, char c){ + printf("__code cs was called.\n"); + printf("a = %d, b = %lf, c = %d\n", a, b, c); + exit(0); +} +__code cs1(int a, double b, char c, int d){ + printf("__code cs1 was called.\n"); + printf("a = %d, b = %lf, c = %d, d = %d\n", a, b, c, d); + exit(0); +} + +int main(int argc, char **argv){ + double t; + //goto cs(2, 10.2, 2); + + t = test('a', 'b', 10, 2.5); + printf("t = %lf\n", t); + testvoid(2.22); + testint(2.22); + + printf("test_goto\n"); + goto test_goto1(10, 20, 30.3); + return 0; +} +void test0(){ + exit(0); +} + +void testvoid(double a){ + return ; +} +int testint(double a){ + int b; + b = (a*100-a) +2; + return 1; +} + +double test(char c, char l, int a, double d){ + return (double)a*d+c+l; +} + +void test_goto(int a, int b, double c){ + goto cs(2, 10.2, 3); +} +__code test_goto1(int a, int b, double c){ + goto cs1(2, 10.2, 3, 4); +} +