gimple va_arg for sh

Joern Rennecke joern.rennecke@superh.com
Wed Jul 14 18:53:00 GMT 2004


> Tested as for c4x.
> 
> Whee.  The first of three that's complicated enough I didn't dare do
> anything but mirror the rtl generated one-for-one.  Not very pretty
> in the initial GENERIC, but it's all the same once we've passed all
> the gimple lowering phases.
> 
> 
> r~
> 
> 
>         * config/sh/sh-protos.h (sh_va_arg): Remove.
>         * config/sh/sh.c (TARGET_GIMPLIFY_VA_ARG_EXPR): New.
>         (sh_gimplify_va_arg_expr): Rewrite from sh_va_arg.
>         * config/sh/sh.h (EXPAND_BUILTIN_VA_ARG): Remove.

This falls over when trying to build _gcov_execl.o .

/swbuild/nightly/2004-07-13/sh-elf/gcc/xgcc -B/swbuild/nightly/2004-07-13/sh-elf/gcc/ -nostdinc -B/swbuild/nightly/2004-07-13/sh-elf/sh-elf/newlib/ -isystem /swbuild/nightly/2004-07-13/sh-elf/sh-elf/newlib/targ-include -isystem /swbuild/nightly/2004-07-13/srcw/newlib/libc/include -B/usr/local/sh-elf/bin/ -B/usr/local/sh-elf/lib/ -isystem /usr/local/sh-elf/include -isystem /usr/local/sh-elf/sys-include -L/swbuild/nightly/2004-07-13/sh-elf/ld -O2  -DIN_GCC -DCROSS_COMPILE   -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -g  -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I -I../../srcw/gcc -I../../srcw/gcc/ -I../../srcw/gcc/../include -I../../srcw/gcc/../libcpp/include -I../../srcw/gcc/../libbanshee/libcompat -I../../srcw/gcc/../libbanshee -I../../srcw/gcc/../libbanshee/points-to  -DL_gcov_execl -c ../../srcw/gcc/libgcov.c -o libgcc/./_gcov_execl.o
../../srcw/gcc/libgcov.c: In function `__gcov_execl':
../../srcw/gcc/libgcov.c:612: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[2]: *** [libgcc/./_gcov_execl.o] Error 1
make[2]: Leaving directory `/swbuild/nightly/2004-07-13/sh-elf/gcc'
make[1]: *** [stmp-multilib] Error 2
make[1]: Leaving directory `/swbuild/nightly/2004-07-13/sh-elf/gcc'
make: *** [all-gcc] Error 2

bash-2.05$ gdb cc1
GNU gdb Red Hat Linux 7.x (5.0rh-15) (MI_OUT)
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
Breakpoint 1 at 0x8169285: file ../../srcw/gcc/diagnostic.c, line 594.
Breakpoint 2 at 0x8049ab4
Breakpoint 3 at 0x8049834
(gdb) run -fpreprocessed libgcov.i -quiet -dumpbase libgcov.c -auxbase-strip libgcc/./_gcov_execl.o -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -o libgcov.s
Starting program: /swbuild/nightly/2004-07-13/sh-elf/gcc/cc1 -fpreprocessed libgcov.i -quiet -dumpbase libgcov.c -auxbase-strip libgcc/./_gcov_execl.o -g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -version -o libgcov.s
Breakpoint 2 at 0x400643b8: file exit.c, line 40.
Breakpoint 3 at 0x40062e39: file ../sysdeps/generic/abort.c, line 55.
GNU C version 3.5.0 20040713 (experimental) (sh-elf)
        compiled by GNU C version 2.96 20000731 (Red Hat Linux 7.1 2.96-98).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

Program received signal SIGSEGV, Segmentation fault.
0x081fa28b in pass_by_reference (ca=0x0, mode=SImode, type=0x4019c1d0, 
    named_arg=0 '\000') at ../../srcw/gcc/function.c:2050
2050      return FUNCTION_ARG_PASS_BY_REFERENCE (*ca, mode, type, named_arg);
(gdb) bt
#0  0x081fa28b in pass_by_reference (ca=0x0, mode=SImode, type=0x4019c1d0, 
    named_arg=0 '\000') at ../../srcw/gcc/function.c:2050
#1  0x0812b06f in std_gimplify_va_arg_expr (valist=0x402bdbc8, 
    type=0x4019c1d0, pre_p=0xbfffd864, post_p=0x0)
    at ../../srcw/gcc/builtins.c:4489
#2  0x08311a22 in sh_gimplify_va_arg_expr (valist=0x402bdbc8, type=0x4019c1d0, 
    pre_p=0xbfffd864, post_p=0xbfffd7d0) at ../../srcw/gcc/config/sh/sh.c:6479
#3  0x0812b516 in gimplify_va_arg_expr (expr_p=0x402aa574, pre_p=0xbfffd864, 
    post_p=0xbfffd7d0) at ../../srcw/gcc/builtins.c:4649
#4  0x080ca3cf in gimplify_expr (expr_p=0x402aa574, pre_p=0xbfffd864, 
    post_p=0xbfffd7d0, gimple_test_f=0x80bf908 <is_gimple_val>, 
    fallback=fb_rvalue) at ../../srcw/gcc/gimplify.c:3543
#5  0x080cb7c5 in gimplify_expr (expr_p=0x402be15c, pre_p=0xbfffd864, 
    post_p=0xbfffd7d0, gimple_test_f=0x80bf69c <is_gimple_condexpr>, 
    fallback=fb_rvalue) at ../../srcw/gcc/gimplify.c:3845
#6  0x080c6a39 in gimplify_cond_expr (expr_p=0x40023b6c, pre_p=0xbfffd864, 
    target=0x0) at ../../srcw/gcc/gimplify.c:2267
#7  0x080ca19a in gimplify_expr (expr_p=0x40023b6c, pre_p=0xbfffd864, 
    post_p=0xbfffd860, gimple_test_f=0x80bf74c <is_gimple_stmt>, 
    fallback=fb_none) at ../../srcw/gcc/gimplify.c:3505
#8  0x080c9f05 in gimplify_stmt (stmt_p=0x40023b6c)
    at ../../srcw/gcc/gimplify.c:3369
#9  0x080c87fc in gimplify_statement_list (expr_p=0x402be250)
---Type <return> to continue, or q <return> to quit---
    at ../../srcw/gcc/gimplify.c:2935
#10 0x080cb363 in gimplify_expr (expr_p=0x402be250, pre_p=0xbfffd914, 
    post_p=0xbfffd910, gimple_test_f=0x80bf74c <is_gimple_stmt>, 
    fallback=fb_none) at ../../srcw/gcc/gimplify.c:3792
#11 0x080c9f05 in gimplify_stmt (stmt_p=0x402be250)
    at ../../srcw/gcc/gimplify.c:3369
#12 0x080c9f19 in gimplify_to_stmt_list (stmt_p=0x402be250)
    at ../../srcw/gcc/gimplify.c:3377
#13 0x080c1838 in gimplify_bind_expr (expr_p=0x402b28f8, temp=0x0, 
    pre_p=0xbfffd9f4) at ../../srcw/gcc/gimplify.c:885
#14 0x080ca9f2 in gimplify_expr (expr_p=0x402b28f8, pre_p=0xbfffd9f4, 
    post_p=0xbfffd9f0, gimple_test_f=0x80bf74c <is_gimple_stmt>, 
    fallback=fb_none) at ../../srcw/gcc/gimplify.c:3643
#15 0x080c9f05 in gimplify_stmt (stmt_p=0x402b28f8)
    at ../../srcw/gcc/gimplify.c:3369
#16 0x080cc34e in gimplify_body (body_p=0x402b28f8, fndecl=0x402b289c)
    at ../../srcw/gcc/gimplify.c:4194
#17 0x080cc504 in gimplify_function_tree (fndecl=0x402b289c)
    at ../../srcw/gcc/gimplify.c:4241
#18 0x080991a1 in c_genericize (fndecl=0x402b289c)
    at ../../srcw/gcc/c-gimplify.c:138
#19 0x0805e2ec in finish_function () at ../../srcw/gcc/c-decl.c:6335
#20 0x0804a495 in yyparse () at c-parse.y:366
---Type <return> to continue, or q <return> to quit---
#21 0x0804e393 in c_parse_file () at c-parse.y:2932
#22 0x08090a79 in c_common_parse_file (set_yydebug=0)
    at ../../srcw/gcc/c-opts.c:1086
#23 0x082d4216 in compile_file () at ../../srcw/gcc/toplev.c:981
#24 0x082d5a52 in do_compile () at ../../srcw/gcc/toplev.c:2066
#25 0x082d5aaa in toplev_main (argc=19, argv=0xbfffe3f4)
    at ../../srcw/gcc/toplev.c:2098
#26 0x4004f507 in __libc_start_main (main=0x80a29a4 <main>, argc=19, 
    ubp_av=0xbfffe3f4, init=0x804954c <_init>, fini=0x83abd50 <_fini>, 
    rtld_fini=0x4000dc14 <_dl_fini>, stack_end=0xbfffe3ec)
    at ../sysdeps/generic/libc-start.c:129
(gdb) frame 1
#1  0x0812b06f in std_gimplify_va_arg_expr (valist=0x402bdbc8, 
    type=0x4019c1d0, pre_p=0xbfffd864, post_p=0x0)
    at ../../srcw/gcc/builtins.c:4489
4489      indirect = pass_by_reference (NULL, TYPE_MODE (type), type, false);

Here is the preprocessed source file:

# 1 "../../srcw/gcc/libgcov.c"
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc//"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../../srcw/gcc/libgcov.c"
# 36 "../../srcw/gcc/libgcov.c"
# 1 "./tconfig.h" 1



# 1 "../../srcw/gcc/../include/ansidecl.h" 1
# 5 "./tconfig.h" 2
# 37 "../../srcw/gcc/libgcov.c" 2
# 1 "../../srcw/gcc/tsystem.h" 1
# 44 "../../srcw/gcc/tsystem.h"
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 152 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 214 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 3 4
typedef unsigned int size_t;
# 326 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 3 4
typedef long int wchar_t;
# 45 "../../srcw/gcc/tsystem.h" 2
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/float.h" 1 3 4
# 46 "../../srcw/gcc/tsystem.h" 2
# 76 "../../srcw/gcc/tsystem.h"
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stdarg.h" 1 3 4
# 43 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 105 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 77 "../../srcw/gcc/tsystem.h" 2


# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 1 3 4
# 29 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 1 3 4
# 15 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/newlib.h" 1 3 4
# 16 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 2 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/config.h" 1 3 4



# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/machine/ieeefp.h" 1 3 4
# 5 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/config.h" 2 3 4
# 17 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 2 3 4
# 30 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 2 3 4




# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 35 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 2 3 4
# 45 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 1 3 4
# 14 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/_types.h" 1 3 4
# 12 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/_types.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/lock.h" 1 3 4





typedef int _LOCK_T;
typedef int _LOCK_RECURSIVE_T;
# 13 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/_types.h" 2 3 4

typedef long _off_t;
__extension__ typedef long long _off64_t;


typedef int _ssize_t;





# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 355 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 25 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/_types.h" 2 3 4


typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    unsigned char __wchb[4];
  } __value;
} _mbstate_t;

typedef _LOCK_RECURSIVE_T _flock_t;


typedef void *_iconv_t;
# 15 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 2 3 4




typedef unsigned long __ULong;
# 40 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
struct _Bigint
{
  struct _Bigint *_next;
  int _k, _maxwds, _sign, _wds;
  __ULong _x[1];
};


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;
};







struct _on_exit_args {
 void * _fnargs[32];
 __ULong _fntypes;

};
# 80 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
struct _atexit {
 struct _atexit *_next;
 int _ind;
 void (*_fns[32])(void);
        struct _on_exit_args _on_exit_args;
};
# 95 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
struct __sbuf {
 unsigned char *_base;
 int _size;
};






typedef long _fpos_t;
# 160 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
struct __sFILE {
  unsigned char *_p;
  int _r;
  int _w;
  short _flags;
  short _file;
  struct __sbuf _bf;
  int _lbfsize;






  void * _cookie;

  int (*_read) (void * _cookie, char *_buf, int _n);
  int (*_write) (void * _cookie, const char *_buf, int _n);

  _fpos_t (*_seek) (void * _cookie, _fpos_t _offset, int _whence);
  int (*_close) (void * _cookie);


  struct __sbuf _ub;
  unsigned char *_up;
  int _ur;


  unsigned char _ubuf[3];
  unsigned char _nbuf[1];


  struct __sbuf _lb;


  int _blksize;
  int _offset;


  struct _reent *_data;



  _flock_t _lock;

};
# 253 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
typedef struct __sFILE __FILE;


struct _glue
{
  struct _glue *_next;
  int _niobs;
  __FILE *_iobs;
};
# 284 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
struct _rand48 {
  unsigned short _seed[3];
  unsigned short _mult[3];
  unsigned short _add;




};
# 555 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
struct _reent
{
  int _errno;




  __FILE *_stdin, *_stdout, *_stderr;

  int _inc;
  char _emergency[25];

  int _current_category;
  const char *_current_locale;

  int __sdidinit;

  void (*__cleanup) (struct _reent *);


  struct _Bigint *_result;
  int _result_k;
  struct _Bigint *_p5s;
  struct _Bigint **_freelist;


  int _cvtlen;
  char *_cvtbuf;

  union
    {
      struct
        {
          unsigned int _unused_rand;
          char * _strtok_last;
          char _asctime_buf[26];
          struct __tm _localtime_buf;
          int _gamma_signgam;
          __extension__ unsigned long long _rand_next;
          struct _rand48 _r48;
          _mbstate_t _mblen_state;
          _mbstate_t _mbtowc_state;
          _mbstate_t _wctomb_state;
          char _l64a_buf[8];
          char _signal_buf[24];
          int _getdate_err;
          _mbstate_t _mbrlen_state;
          _mbstate_t _mbrtowc_state;
          _mbstate_t _mbsrtowcs_state;
          _mbstate_t _wcrtomb_state;
          _mbstate_t _wcsrtombs_state;
        } _reent;



      struct
        {

          unsigned char * _nextf[30];
          unsigned int _nmalloc[30];
        } _unused;
    } _new;


  struct _atexit *_atexit;
  struct _atexit _atexit0;


  void (**(_sig_func))(int);




  struct _glue __sglue;
  __FILE __sf[3];
};
# 789 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/reent.h" 3 4
extern struct _reent *_impure_ptr ;
extern struct _reent *const _global_impure_ptr ;

void _reclaim_reent (struct _reent *);
# 46 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 2 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 1 3 4
# 24 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
typedef short int __int16_t;
typedef unsigned short int __uint16_t;





typedef int __int32_t;
typedef unsigned int __uint32_t;






__extension__ typedef long long __int64_t;
__extension__ typedef unsigned long long __uint64_t;
# 55 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 56 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 2 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/machine/types.h" 1 3 4
# 36 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/machine/types.h" 3 4
typedef long int __off_t;
typedef int __pid_t;

__extension__ typedef long long int __loff_t;
# 57 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 2 3 4
# 78 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;



typedef unsigned short ushort;
typedef unsigned int uint;



typedef unsigned long clock_t;




typedef long time_t;




struct timespec {
  time_t tv_sec;
  long tv_nsec;
};

struct itimerspec {
  struct timespec it_interval;
  struct timespec it_value;
};


typedef long daddr_t;
typedef char * caddr_t;
# 121 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
typedef unsigned short ino_t;
# 155 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
typedef short dev_t;




typedef long off_t;

typedef unsigned short uid_t;
typedef unsigned short gid_t;


typedef int pid_t;

typedef long key_t;

typedef _ssize_t ssize_t;
# 184 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
typedef unsigned int mode_t __attribute__ ((__mode__ (__SI__)));




typedef unsigned short nlink_t;
# 211 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/types.h" 3 4
typedef long fd_mask;







typedef struct _types_fd_set {
 fd_mask fds_bits[(((64)+(((sizeof (fd_mask) * 8))-1))/((sizeof (fd_mask) * 8)))];
} _types_fd_set;
# 47 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 2 3 4



typedef __FILE FILE;
# 59 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4
typedef _fpos_t fpos_t;





# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/stdio.h" 1 3 4
# 66 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 2 3 4
# 170 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4
FILE * tmpfile (void);
char * tmpnam (char *);
int fclose (FILE *);
int fflush (FILE *);
FILE * freopen (const char *, const char *, FILE *);
void setbuf (FILE *, char *);
int setvbuf (FILE *, char *, int, size_t);
int fprintf (FILE *, const char *, ...);
int fscanf (FILE *, const char *, ...);
int printf (const char *, ...);
int scanf (const char *, ...);
int sscanf (const char *, const char *, ...);
int vfprintf (FILE *, const char *, __gnuc_va_list);
int vprintf (const char *, __gnuc_va_list);
int vsprintf (char *, const char *, __gnuc_va_list);
int fgetc (FILE *);
char * fgets (char *, int, FILE *);
int fputc (int, FILE *);
int fputs (const char *, FILE *);
int getc (FILE *);
int getchar (void);
char * gets (char *);
int putc (int, FILE *);
int putchar (int);
int puts (const char *);
int ungetc (int, FILE *);
size_t fread (void *, size_t _size, size_t _n, FILE *);
size_t fwrite (const void * , size_t _size, size_t _n, FILE *);



int fgetpos (FILE *, fpos_t *);

int fseek (FILE *, long, int);



int fsetpos (FILE *, const fpos_t *);

long ftell ( FILE *);
void rewind (FILE *);
void clearerr (FILE *);
int feof (FILE *);
int ferror (FILE *);
void perror (const char *);

FILE * fopen (const char *_name, const char *_type);
int sprintf (char *, const char *, ...);
int remove (const char *);
int rename (const char *, const char *);


int asprintf (char **, const char *, ...);




int fseeko (FILE *, off_t, int);
off_t ftello ( FILE *);

int vfiprintf (FILE *, const char *, __gnuc_va_list);
int iprintf (const char *, ...);
int fiprintf (FILE *, const char *, ...);
int siprintf (char *, const char *, ...);
char * tempnam (const char *, const char *);
int vasprintf (char **, const char *, __gnuc_va_list);
int vsnprintf (char *, size_t, const char *, __gnuc_va_list);
int vfscanf (FILE *, const char *, __gnuc_va_list);
int vscanf (const char *, __gnuc_va_list);
int vsscanf (const char *, const char *, __gnuc_va_list);

int fcloseall (void);
int snprintf (char *, size_t, const char *, ...);
# 252 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4
FILE * fdopen (int, const char *);

int fileno (FILE *);
int getw (FILE *);
int pclose (FILE *);
FILE * popen (const char *, const char *);
int putw (int, FILE *);
void setbuffer (FILE *, char *, int);
int setlinebuf (FILE *);
int getc_unlocked (FILE *);
int getchar_unlocked (void);
void flockfile (FILE *);
int ftrylockfile (FILE *);
void funlockfile (FILE *);
int putc_unlocked (int, FILE *);
int putchar_unlocked (int);






int _asprintf_r (struct _reent *, char **, const char *, ...);
int _fcloseall_r (struct _reent *);
FILE * _fdopen_r (struct _reent *, int, const char *);
FILE * _fopen_r (struct _reent *, const char *, const char *);
int _fclose_r (struct _reent *, FILE *);
int _fscanf_r (struct _reent *, FILE *, const char *, ...);
int _fseek_r (struct _reent *, FILE *, long, int);
long _ftell_r (struct _reent *, FILE *);
int _getchar_r (struct _reent *);
char * _gets_r (struct _reent *, char *);
int _iprintf_r (struct _reent *, const char *, ...);
int _siprintf_r (struct _reent *, char *, const char *, ...);
int _mkstemp_r (struct _reent *, char *);
char * _mktemp_r (struct _reent *, char *);
void _perror_r (struct _reent *, const char *);
int _printf_r (struct _reent *, const char *, ...);
int _putchar_r (struct _reent *, int);
int _puts_r (struct _reent *, const char *);
int _remove_r (struct _reent *, const char *);
int _rename_r (struct _reent *, const char *_old, const char *_new);

int _scanf_r (struct _reent *, const char *, ...);
int _sprintf_r (struct _reent *, char *, const char *, ...);
int _snprintf_r (struct _reent *, char *, size_t, const char *, ...);
int _sscanf_r (struct _reent *, const char *, const char *, ...);
char * _tempnam_r (struct _reent *, const char *, const char *);
FILE * _tmpfile_r (struct _reent *);
char * _tmpnam_r (struct _reent *, char *);
int _ungetc_r (struct _reent *, int, FILE *);
int _vasprintf_r (struct _reent *, char **, const char *, __gnuc_va_list);
int _vfiprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list);
int _vfprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list);
int _vprintf_r (struct _reent *, const char *, __gnuc_va_list);
int _vsprintf_r (struct _reent *, char *, const char *, __gnuc_va_list);
int _vsnprintf_r (struct _reent *, char *, size_t, const char *, __gnuc_va_list);
int _vfscanf_r (struct _reent *, FILE *, const char *, __gnuc_va_list);
int _vscanf_r (struct _reent *, const char *, __gnuc_va_list);
int _vsscanf_r (struct _reent *, const char *, const char *, __gnuc_va_list);

ssize_t __getdelim (char **, size_t *, int, FILE *);
ssize_t __getline (char **, size_t *, FILE *);
# 340 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4
int __srget (FILE *);
int __swbuf (int, FILE *);






FILE *funopen (const void * _cookie, int (*readfn)(void * _cookie, char *_buf, int _n), int (*writefn)(void * _cookie, const char *_buf, int _n), fpos_t (*seekfn)(void * _cookie, fpos_t _off, int _whence), int (*closefn)(void * _cookie));
# 447 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdio.h" 3 4

# 80 "../../srcw/gcc/tsystem.h" 2





# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/errno.h" 1 3 4




typedef int error_t;



# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/errno.h" 1 3 4
# 15 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/errno.h" 3 4
extern int *__errno (void);




extern const char * const _sys_errlist[];
extern int _sys_nerr;
# 10 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/errno.h" 2 3 4
# 86 "../../srcw/gcc/tsystem.h" 2






# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/string.h" 1 3 4
# 10 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/string.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 1 3 4
# 11 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/string.h" 2 3 4



# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 15 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/string.h" 2 3 4







void * memchr (const void *, int, size_t);
int memcmp (const void *, const void *, size_t);
void * memcpy (void *, const void *, size_t);
void * memmove (void *, const void *, size_t);
void * memset (void *, int, size_t);
char *strcat (char *, const char *);
char *strchr (const char *, int);
int strcmp (const char *, const char *);
int strcoll (const char *, const char *);
char *strcpy (char *, const char *);
size_t strcspn (const char *, const char *);
char *strerror (int);
size_t strlen (const char *);
char *strncat (char *, const char *, size_t);
int strncmp (const char *, const char *, size_t);
char *strncpy (char *, const char *, size_t);
char *strpbrk (const char *, const char *);
char *strrchr (const char *, int);
size_t strspn (const char *, const char *);
char *strstr (const char *, const char *);


char *strtok (char *, const char *);


size_t strxfrm (char *, const char *, size_t);


char *strtok_r (char *, const char *, char **);

int bcmp (const void *, const void *, size_t);
void bcopy (const void *, void *, size_t);
void bzero (void *, size_t);
int ffs (int);
char *index (const char *, int);
void * memccpy (void *, const void *, int, size_t);
void * mempcpy (void *, const void *, size_t);
char *rindex (const char *, int);
int strcasecmp (const char *, const char *);
char *strdup (const char *);
char *_strdup_r (struct _reent *, const char *);
char *strndup (const char *, size_t);
char *_strndup_r (struct _reent *, const char *, size_t);
char *strerror_r (int, char *, size_t);
size_t strlcat (char *, const char *, size_t);
size_t strlcpy (char *, const char *, size_t);
int strncasecmp (const char *, const char *, size_t);
size_t strnlen (const char *, size_t);
char *strsep (char **, const char *);
char *strlwr (char *);
char *strupr (char *);
# 98 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/string.h" 3 4

# 93 "../../srcw/gcc/tsystem.h" 2
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 1 3 4
# 10 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 1 3 4
# 11 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 2 3 4



# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 15 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 2 3 4


# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/machine/stdlib.h" 1 3 4
# 18 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 2 3 4

# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/alloca.h" 1 3 4
# 10 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/alloca.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 1 3 4
# 11 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/alloca.h" 2 3 4
# 20 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 2 3 4




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

typedef struct
{
  long quot;
  long rem;
} ldiv_t;


typedef struct
{
  long long int quot;
  long long int rem;
} lldiv_t;
# 53 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 3 4
extern int __mb_cur_max;



void abort (void) __attribute__ ((noreturn));
int abs (int);
int atexit (void (*__func)(void));
double atof (const char *__nptr);

float atoff (const char *__nptr);

int atoi (const char *__nptr);
int _atoi_r (struct _reent *, const char *__nptr);
long atol (const char *__nptr);
long _atol_r (struct _reent *, const char *__nptr);
void * bsearch (const void * __key, const void * __base, size_t __nmemb, size_t __size, int (* _compar) (const void *, const void *));




void * calloc (size_t __nmemb, size_t __size);
div_t div (int __numer, int __denom);
void exit (int __status) __attribute__ ((noreturn));
void free (void *);
char * getenv (const char *__string);
char * _getenv_r (struct _reent *, const char *__string);



char * _findenv (const char *, int *);
char * _findenv_r (struct _reent *, const char *, int *);
long labs (long);
ldiv_t ldiv (long __numer, long __denom);
void * malloc (size_t __size);
int mblen (const char *, size_t);
int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *);
int mbtowc (wchar_t *, const char *, size_t);
int _mbtowc_r (struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *);
int wctomb (char *, wchar_t);
int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
size_t mbstowcs (wchar_t *, const char *, size_t);
size_t _mbstowcs_r (struct _reent *, wchar_t *, const char *, size_t, _mbstate_t *);
size_t wcstombs (char *, const wchar_t *, size_t);
size_t _wcstombs_r (struct _reent *, char *, const wchar_t *, size_t, _mbstate_t *);


int mkstemp (char *);
char * mktemp (char *);


void qsort (void * __base, size_t __nmemb, size_t __size, int(*_compar)(const void *, const void *));
int rand (void);
void * realloc (void * __r, size_t __size);



void srand (unsigned __seed);
double strtod (const char *__n, char **__end_PTR);
double _strtod_r (struct _reent *,const char *__n, char **__end_PTR);
float strtof (const char *__n, char **__end_PTR);






long strtol (const char *__n, char **__end_PTR, int __base);
long _strtol_r (struct _reent *,const char *__n, char **__end_PTR, int __base);
unsigned long strtoul (const char *__n, char **__end_PTR, int __base);
unsigned long _strtoul_r (struct _reent *,const char *__n, char **__end_PTR, int __base);

int system (const char *__string);


long a64l (const char *__input);
char * l64a (long __input);
char * _l64a_r (struct _reent *,long __input);
int on_exit (void (*__func)(int, void *),void * __arg);
void _Exit (int __status) __attribute__ ((noreturn));
int putenv (const char *__string);
int _putenv_r (struct _reent *, const char *__string);
int setenv (const char *__string, const char *__value, int __overwrite);
int _setenv_r (struct _reent *, const char *__string, const char *__value, int __overwrite);

char * gcvt (double,int,char *);
char * gcvtf (float,int,char *);
char * fcvt (double,int,int *,int *);
char * fcvtf (float,int,int *,int *);
char * ecvt (double,int,int *,int *);
char * ecvtbuf (double, int, int*, int*, char *);
char * fcvtbuf (double, int, int*, int*, char *);
char * ecvtf (float,int,int *,int *);
char * dtoa (double, int, int, int *, int*, char**);
int rand_r (unsigned *__seed);

double drand48 (void);
double _drand48_r (struct _reent *);
double erand48 (unsigned short [3]);
double _erand48_r (struct _reent *, unsigned short [3]);
long jrand48 (unsigned short [3]);
long _jrand48_r (struct _reent *, unsigned short [3]);
void lcong48 (unsigned short [7]);
void _lcong48_r (struct _reent *, unsigned short [7]);
long lrand48 (void);
long _lrand48_r (struct _reent *);
long mrand48 (void);
long _mrand48_r (struct _reent *);
long nrand48 (unsigned short [3]);
long _nrand48_r (struct _reent *, unsigned short [3]);
unsigned short *
       seed48 (unsigned short [3]);
unsigned short *
       _seed48_r (struct _reent *, unsigned short [3]);
void srand48 (long);
void _srand48_r (struct _reent *, long);
long long atoll (const char *__nptr);
long long _atoll_r (struct _reent *, const char *__nptr);
long long llabs (long long);
lldiv_t lldiv (long long __numer, long long __denom);
long long strtoll (const char *__n, char **__end_PTR, int __base);
long long _strtoll_r (struct _reent *, const char *__n, char **__end_PTR, int __base);
unsigned long long strtoull (const char *__n, char **__end_PTR, int __base);
unsigned long long _strtoull_r (struct _reent *, const char *__n, char **__end_PTR, int __base);


void cfree (void *);
# 192 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 3 4
char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**);

void * _malloc_r (struct _reent *, size_t);
void * _calloc_r (struct _reent *, size_t, size_t);
void _free_r (struct _reent *, void *);
void * _realloc_r (struct _reent *, void *, size_t);
void _mstats_r (struct _reent *, char *);

int _system_r (struct _reent *, const char *);

void __eprintf (const char *, const char *, unsigned int, const char *);
# 233 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/stdlib.h" 3 4

# 94 "../../srcw/gcc/tsystem.h" 2
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/unistd.h" 1 3 4



# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/unistd.h" 1 3 4
# 13 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/unistd.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 14 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/unistd.h" 2 3 4

extern char **environ;

void _exit (int __status ) __attribute__ ((noreturn));

int access (const char *__path, int __amode );
unsigned alarm (unsigned __secs );
int chdir (const char *__path );
int chmod (const char *__path, mode_t __mode );

int chown (const char *__path, uid_t __owner, gid_t __group );




int close (int __fildes );
char *ctermid (char *__s );
char *cuserid (char *__s );



int dup (int __fildes );
int dup2 (int __fildes, int __fildes2 );



int execl (const char *__path, const char *, ... );
int execle (const char *__path, const char *, ... );
int execlp (const char *__file, const char *, ... );
int execv (const char *__path, char * const __argv[] );
int execve (const char *__path, char * const __argv[], char * const __envp[] );
int execvp (const char *__file, char * const __argv[] );



int fchmod (int __fildes, mode_t __mode );

int fchown (int __fildes, uid_t __owner, gid_t __group );

pid_t fork (void );
long fpathconf (int __fd, int __name );
int fsync (int __fd);

int fdatasync (int __fd);

char *getcwd (char *__buf, size_t __size );




gid_t getegid (void );
uid_t geteuid (void );
gid_t getgid (void );

int getgroups (int __gidsetsize, gid_t __grouplist[] );



char *getlogin (void );



char *getpass (__const char *__prompt);
size_t getpagesize (void);
pid_t getpgid (pid_t);
pid_t getpgrp (void );
pid_t getpid (void );
pid_t getppid (void );




uid_t getuid (void );






int isatty (int __fildes );

int lchown (const char *__path, uid_t __owner, gid_t __group );

int link (const char *__path1, const char *__path2 );
int nice (int __nice_value );

off_t lseek (int __fildes, off_t __offset, int __whence );

long pathconf (const char *__path, int __name );
int pause (void );



int pipe (int __fildes[2] );
ssize_t pread (int __fd, void *__buf, size_t __nbytes, off_t __offset);
ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, off_t __offset);
int read (int __fd, void *__buf, size_t __nbyte );




int rmdir (const char *__path );



void * sbrk (ptrdiff_t __incr);





int setgid (gid_t __gid );




int setpgid (pid_t __pid, pid_t __pgid );
int setpgrp (void );




pid_t setsid (void );

int setuid (uid_t __uid );




unsigned sleep (unsigned int __seconds );
void swab (const void *, void *, ssize_t);
long sysconf (int __name );
pid_t tcgetpgrp (int __fildes );
int tcsetpgrp (int __fildes, pid_t __pgrp_id );
char *ttyname (int __fildes );



int unlink (const char *__path );
int vhangup (void );
int write (int __fd, const void *__buf, size_t __nbyte );






extern char *optarg;
extern int optind, opterr, optopt;
int getopt(int, char * const [], const char *);
extern int optreset;



pid_t vfork (void );

extern char *suboptarg;
int getsubopt(char **, char * const *, char **);
# 194 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/unistd.h" 3 4
int ftruncate (int __fd, off_t __length);
int truncate (const char *, off_t __length);
# 226 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/unistd.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/features.h" 1 3 4
# 227 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/sys/unistd.h" 2 3 4
# 5 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/unistd.h" 2 3 4
# 95 "../../srcw/gcc/tsystem.h" 2


# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/limits.h" 1 3 4
# 98 "../../srcw/gcc/tsystem.h" 2


# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 1 3 4
# 10 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/_ansi.h" 1 3 4
# 11 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 2 3 4







# 1 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/machine/time.h" 1 3 4
# 19 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 2 3 4
# 27 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 3 4
# 1 "/swbuild/nightly/2004-07-13/sh-elf/gcc/include/stddef.h" 1 3 4
# 28 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 2 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;
};

clock_t clock (void);
double difftime (time_t _time2, time_t _time1);
time_t mktime (struct tm *_timeptr);
time_t time (time_t *_timer);

char *asctime (const struct tm *_tblock);
char *ctime (const time_t *_time);
struct tm *gmtime (const time_t *_timer);
struct tm *localtime (const time_t *_timer);

size_t strftime (char *_s, size_t _maxsize, const char *_fmt, const struct tm *_t);

char *asctime_r (const struct tm *, char *);
char *ctime_r (const time_t *, char *);
struct tm *gmtime_r (const time_t *, struct tm *);
struct tm *localtime_r (const time_t *, struct tm *);








char *strptime (const char *, const char *, struct tm *);
void tzset (void);
void _tzset_r (struct _reent *);
# 98 "/swbuild/nightly/2004-07-13/srcw/newlib/libc/include/time.h" 3 4
extern time_t _timezone;
extern int _daylight;
extern char *_tzname[2];
# 101 "../../srcw/gcc/tsystem.h" 2
# 38 "../../srcw/gcc/libgcov.c" 2
# 1 "../../srcw/gcc/coretypes.h" 1
# 55 "../../srcw/gcc/coretypes.h"
struct _dont_use_rtx_here_;
struct _dont_use_rtvec_here_;
union _dont_use_tree_here_;
# 39 "../../srcw/gcc/libgcov.c" 2
# 1 "./tm.h" 1
# 29 "./tm.h"
# 1 "../../srcw/gcc/config/sh/sh.h" 1
# 33 "../../srcw/gcc/config/sh/sh.h"
extern int code_for_indirect_jump_scratch;
# 131 "../../srcw/gcc/config/sh/sh.h"
extern int target_flags;
# 566 "../../srcw/gcc/config/sh/sh.h"
extern int assembler_dialect;
# 851 "../../srcw/gcc/config/sh/sh.h"
extern char sh_register_names[][5 + 1];
# 904 "../../srcw/gcc/config/sh/sh.h"
extern char sh_additional_register_names[32] [4 + 1];
# 1305 "../../srcw/gcc/config/sh/sh.h"
enum reg_class
{
  NO_REGS,
  R0_REGS,
  PR_REGS,
  T_REGS,
  MAC_REGS,
  FPUL_REGS,
  SIBCALL_REGS,
  GENERAL_REGS,
  FP0_REGS,
  FP_REGS,
  DF_HI_REGS,
  DF_REGS,
  FPSCR_REGS,
  GENERAL_FP_REGS,
  TARGET_REGS,
  ALL_REGS,
  LIM_REG_CLASSES
};
# 1394 "../../srcw/gcc/config/sh/sh.h"
extern enum reg_class regno_reg_class[153];
# 1444 "../../srcw/gcc/config/sh/sh.h"
extern enum reg_class reg_class_from_letter[];
# 1804 "../../srcw/gcc/config/sh/sh.h"
enum sh_arg_class { SH_ARG_INT = 0, SH_ARG_FLOAT = 1 };
struct sh_args {
    int arg_count[2];
    int force_mem;

    int prototype_p;


    int free_single_fp_reg;

    int outgoing;
# 1824 "../../srcw/gcc/config/sh/sh.h"
    int stack_regs;



    int byref_regs;


    int byref;
# 1900 "../../srcw/gcc/config/sh/sh.h"
    long call_cookie;



    int renesas_abi;
};
# 3190 "../../srcw/gcc/config/sh/sh.h"
extern struct rtx_def *sh_compare_op0;
extern struct rtx_def *sh_compare_op1;




enum processor_type {
  PROCESSOR_SH1,
  PROCESSOR_SH2,
  PROCESSOR_SH2E,
  PROCESSOR_SH3,
  PROCESSOR_SH3E,
  PROCESSOR_SH4,
  PROCESSOR_SH5
};


extern enum processor_type sh_cpu;

extern int optimize;

enum mdep_reorg_phase_e
{
  SH_BEFORE_MDEP_REORG,
  SH_INSERT_USES_LABELS,
  SH_SHORTEN_BRANCHES0,
  SH_FIXUP_PCLOAD,
  SH_SHORTEN_BRANCHES1,
  SH_AFTER_MDEP_REORG
};

extern enum mdep_reorg_phase_e mdep_reorg_phase;
# 3232 "../../srcw/gcc/config/sh/sh.h"
extern int pragma_interrupt;



extern int current_function_interrupt;



extern struct rtx_def *sp_switch;

extern int rtx_equal_function_value_matters;
# 30 "./tm.h" 2
# 1 "../../srcw/gcc/config/dbxelf.h" 1
# 31 "./tm.h" 2
# 1 "../../srcw/gcc/config/elfos.h" 1
# 32 "./tm.h" 2
# 1 "../../srcw/gcc/config/svr4.h" 1
# 33 "./tm.h" 2
# 1 "../../srcw/gcc/config/sh/elf.h" 1
# 34 "./tm.h" 2
# 1 "../../srcw/gcc/config/sh/embed-elf.h" 1
# 35 "./tm.h" 2
# 1 "../../srcw/gcc/defaults.h" 1
# 36 "./tm.h" 2
# 40 "../../srcw/gcc/libgcov.c" 2
# 51 "../../srcw/gcc/libgcov.c"
# 1 "../../srcw/gcc/gcov-io.h" 1
# 171 "../../srcw/gcc/gcov-io.h"
typedef unsigned gcov_unsigned_t __attribute__ ((mode (SI)));
typedef unsigned gcov_position_t __attribute__ ((mode (SI)));

typedef signed gcov_type __attribute__ ((mode (DI)));
# 255 "../../srcw/gcc/gcov-io.h"
       
       
# 276 "../../srcw/gcc/gcov-io.h"
# 1 "./gcov-iov.h" 1
# 277 "../../srcw/gcc/gcov-io.h" 2
# 374 "../../srcw/gcc/gcov-io.h"
struct gcov_ctr_summary
{
  gcov_unsigned_t num;
  gcov_unsigned_t runs;
  gcov_type sum_all;
  gcov_type run_max;
  gcov_type sum_max;
};


struct gcov_summary
{
  gcov_unsigned_t checksum;
  struct gcov_ctr_summary ctrs[1];
};
# 398 "../../srcw/gcc/gcov-io.h"
struct gcov_fn_info
{
  gcov_unsigned_t ident;
  gcov_unsigned_t checksum;
  unsigned n_ctrs[0];
};


typedef void (*gcov_merge_fn) (gcov_type *, gcov_unsigned_t);


struct gcov_ctr_info
{
  gcov_unsigned_t num;
  gcov_type *values;
  gcov_merge_fn merge;
};


struct gcov_info
{
  gcov_unsigned_t version;
  struct gcov_info *next;

  gcov_unsigned_t stamp;
  const char *filename;

  unsigned n_functions;
  const struct gcov_fn_info *functions;

  unsigned ctr_mask;
  struct gcov_ctr_info counts[0];



};


extern void __gcov_init (struct gcov_info *);


extern void __gcov_flush (void);


extern void __gcov_merge_add (gcov_type *, unsigned);


extern void __gcov_merge_single (gcov_type *, unsigned);



extern void __gcov_merge_delta (gcov_type *, unsigned);



extern pid_t __gcov_fork (void);
extern int __gcov_execl (const char *, const char *, ...);
extern int __gcov_execlp (const char *, const char *, ...);
extern int __gcov_execle (const char *, const char *, ...);
extern int __gcov_execv (const char *, char *const []);
extern int __gcov_execvp (const char *, char *const []);
extern int __gcov_execve (const char *, char *const [], char *const []);
# 469 "../../srcw/gcc/gcov-io.h"
extern struct __gcov_var
{
  FILE *file;
  gcov_position_t start;
  unsigned offset;
  unsigned length;
  unsigned overread;
  int error;
  int mode;





  gcov_unsigned_t buffer[(1 << 10) + 1];







} __gcov_var;
# 503 "../../srcw/gcc/gcov-io.h"
extern int __gcov_open (const char * );




extern int __gcov_close (void);


static gcov_position_t __gcov_position (void);
static int __gcov_is_error (void);
static int __gcov_is_eof (void);

extern gcov_unsigned_t __gcov_read_unsigned (void);
extern gcov_type __gcov_read_counter (void);
extern void __gcov_read_summary (struct gcov_summary *);



extern void __gcov_write_counter (gcov_type);
extern void __gcov_write_tag_length (gcov_unsigned_t, gcov_unsigned_t);
extern void __gcov_write_summary (gcov_unsigned_t ,
          const struct gcov_summary *);
static void gcov_truncate (void);
static void __gcov_rewrite (void);
extern void __gcov_seek (gcov_position_t );
# 537 "../../srcw/gcc/gcov-io.h"
extern void __gcov_write_unsigned (gcov_unsigned_t);
# 563 "../../srcw/gcc/gcov-io.h"
static __inline__ gcov_position_t
__gcov_position (void)
{
  ;
  return __gcov_var.start + __gcov_var.offset;
}



static __inline__ int
__gcov_is_eof (void)
{
  return !__gcov_var.overread;
}



static __inline__ int
__gcov_is_error (void)
{
  return __gcov_var.file ? __gcov_var.error : 1;
}




static __inline__ void
__gcov_rewrite (void)
{
  ;
  __gcov_var.mode = -1;
  __gcov_var.start = 0;
  __gcov_var.offset = 0;
  fseek (__gcov_var.file, 0L, 0);
}




static __inline__ void
gcov_truncate (void)
{
  ftruncate (fileno (__gcov_var.file), 0L);
}
# 52 "../../srcw/gcc/libgcov.c" 2
# 599 "../../srcw/gcc/libgcov.c"
int
__gcov_execl (const char *path, const char *arg, ...)
{
  va_list ap, aq;
  unsigned i, length;
  char **args;

  __gcov_flush ();

  __builtin_va_start(ap,arg);
  __builtin_va_copy(aq,ap);

  length = 2;
  while (__builtin_va_arg(ap,char *))
    length++;
  __builtin_va_end(ap);

  args = __builtin_alloca(length * sizeof (void *));
  args[0] = (char *) arg;
  for (i = 1; i < length; i++)
    args[i] = __builtin_va_arg(aq,char *);
  __builtin_va_end(aq);

  return execv (path, args);
}



More information about the Gcc-patches mailing list