diff mbox

[RFA,target/79404] Fix uninitialized reference to ira_register_move_cost[mode]

Message ID 25298b65-d1ff-f00b-c67a-a98aef794fe8@redhat.com
State New
Headers show

Commit Message

Jeff Law Feb. 14, 2017, 6:30 a.m. UTC
So imagine we have two allocnos related by a copy chain (two operand 
architecture).

(gdb) p *cp->first
$11 = {num = 9, regno = 33, mode = DImode, wmode = DImode, aclass = 
GENERAL_REGS, dont_reassign_p = 0,
   bad_spill_p = 0, assigned_p = 1, conflict_vec_p = 0, hard_regno = -1, 
next_regno_allocno = 0x0,
   loop_tree_node = 0x1e0b190, nrefs = 13, freq = 8069, class_cost = 
1380, updated_class_cost = 1380,
   memory_cost = 29656, updated_memory_cost = 29656, 
excess_pressure_points_num = 17, allocno_prefs = 0x0,
   allocno_copies = 0x1e4b400, cap = 0x0, cap_member = 0x0, num_objects 
= 1, objects = {0x1e8b6a0, 0x0},
   call_freq = 0, calls_crossed_num = 0, cheap_calls_crossed_num = 0, 
crossed_calls_clobbered_regs = 0,
   hard_reg_costs = 0x1da9510, updated_hard_reg_costs = 0x0, 
conflict_hard_reg_costs = 0x0,
   updated_conflict_hard_reg_costs = 0x0, add_data = 0x1e04378}

(gdb) p *cp->second
$12 = {num = 12, regno = 39, mode = SImode, wmode = SImode, aclass = 
GENERAL_REGS, dont_reassign_p = 0,
   bad_spill_p = 1, assigned_p = 1, conflict_vec_p = 0, hard_regno = 2, 
next_regno_allocno = 0x0,
   loop_tree_node = 0x1e0b190, nrefs = 2, freq = 388, class_cost = 0, 
updated_class_cost = 0, memory_cost = 1552,
   updated_memory_cost = 1552, excess_pressure_points_num = 0, 
allocno_prefs = 0x0, allocno_copies = 0x1e4b400,
   cap = 0x0, cap_member = 0x0, num_objects = 2, objects = {0x1e8b7e0, 
0x1e8b830}, call_freq = 0,
   calls_crossed_num = 0, cheap_calls_crossed_num = 0, 
crossed_calls_clobbered_regs = 0,
   hard_reg_costs = 0x1da9550, updated_hard_reg_costs = 0x0, 
conflict_hard_reg_costs = 0x0,
   updated_conflict_hard_reg_costs = 0x0, add_data = 0x1e04480}


Note how cp->first is mode DImode.

Now assume that all the real uses of cp->first occur as SUBREG 
expressions.  But there is a DImode clobber of cp->first.  Like this:


(insn 7 2 3 2 (clobber (reg/v:DI 33 [ u ])) 
"/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":404 -1
      (nil))
(insn 3 7 4 2 (set (subreg:HI (reg/v:DI 33 [ u ]) 0)
         (mem/c:HI (reg/f:HI 9 ap) [4 u+0 S2 A16])) 
"/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":404 5 {*movhi_h8300}
      (nil))
(insn 4 3 5 2 (set (subreg:HI (reg/v:DI 33 [ u ]) 2)
         (mem/c:HI (plus:HI (reg/f:HI 9 ap)
                 (const_int 2 [0x2])) [4 u+2 S2 A16])) 
"/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":404 5 {*movhi_h8300}
      (nil))
[ ... ]
(insn 35 32 37 5 (parallel [
             (set (reg:SI 39 [ _32 ])
                 (lshiftrt:SI (subreg:SI (reg/v:DI 33 [ u ]) 0)
                     (subreg:QI (reg:HI 38) 1)))
             (clobber (scratch:QI))
         ]) "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":415 229 {*shiftsi}
      (expr_list:REG_DEAD (reg:HI 38)
         (expr_list:REG_DEAD (reg/v:DI 33 [ u ])
             (expr_list:REG_EQUIV (mem/j/c:SI (plus:HI (reg/f:HI 11 fp)
                         (const_int -4 [0xfffffffffffffffc])) [1 
w.s.low+0 S4 A16])
                 (nil)))))

There's other references to (reg 33), but again, they all use subregs. 
The only real DImode reference to (reg 33) is in the clobber.  And 
remember that (reg 33) is involved in a copy chain.


So we'll eventually call allocno_copy_cost_saving and try to compute a 
cost savings using:

2764          cost += cp->freq * 
ira_register_move_cost[allocno_mode][rclass][rclass];

But ira_register_move_cost[DImode] is NULL -- it's never been 
initialized, presumably because we never see a real DImode reference to 
anything except in CLOBBER statements.

We can fix this in scan_one_insn via the attached patch.  I'm not sure 
if this is the best place to catch this or not.

I haven't included a testcase as this trips just building libgcc on the 
H8 target.  I could easily reduce it if folks think its worth the trouble.

I've verified this allows libgcc to build on the H8 target and 
bootstrapped/regression tested the change on x86_64-unknown-linux-gnu as 
well.

Vlad, is this OK for the trunk, or should we be catching this elsewhere?



Jeff

# 1 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c"
# 1 "/home/tmp/h8/gcc/h8300-elf/libgcc//"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c"
# 26 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c"
# 1 "../.././gcc/tconfig.h" 1





# 1 "../.././gcc/auto-host.h" 1
# 7 "../.././gcc/tconfig.h" 2

# 1 "/home/gcc/GIT-2/gcc/libgcc/../include/ansidecl.h" 1
# 9 "../.././gcc/tconfig.h" 2
# 27 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 1
# 44 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h"
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 149 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4

# 149 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 216 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4
typedef unsigned int size_t;
# 328 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4
typedef short unsigned int wchar_t;
# 426 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4
typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
# 437 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4
} max_align_t;
# 45 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2
# 1 "/home/tmp/h8/gcc/gcc/include/float.h" 1 3 4
# 46 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2
# 84 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h"
# 1 "/home/tmp/h8/gcc/gcc/include/stdarg.h" 1 3 4
# 40 "/home/tmp/h8/gcc/gcc/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 99 "/home/tmp/h8/gcc/gcc/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 85 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2


# 1 "/home/law/installed/h8300-elf/include/stdio.h" 1 3 4
# 29 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/_ansi.h" 1 3 4
# 15 "/home/law/installed/h8300-elf/include/_ansi.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/newlib.h" 1 3 4
# 16 "/home/law/installed/h8300-elf/include/_ansi.h" 2 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/config.h" 1 3 4



# 1 "/home/law/installed/h8300-elf/include/machine/ieeefp.h" 1 3 4
# 5 "/home/law/installed/h8300-elf/include/sys/config.h" 2 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/features.h" 1 3 4
# 6 "/home/law/installed/h8300-elf/include/sys/config.h" 2 3 4
# 17 "/home/law/installed/h8300-elf/include/_ansi.h" 2 3 4
# 30 "/home/law/installed/h8300-elf/include/stdio.h" 2 3 4





# 1 "/home/law/installed/h8300-elf/include/sys/cdefs.h" 1 3 4
# 43 "/home/law/installed/h8300-elf/include/sys/cdefs.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 1 3 4
# 27 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef signed char __int8_t;

typedef unsigned char __uint8_t;
# 41 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef short int __int16_t;

typedef short unsigned int __uint16_t;
# 63 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef long int __int32_t;

typedef long unsigned int __uint32_t;
# 89 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef long long int __int64_t;

typedef long long unsigned int __uint64_t;
# 120 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef signed char __int_least8_t;

typedef unsigned char __uint_least8_t;
# 146 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef short int __int_least16_t;

typedef short unsigned int __uint_least16_t;
# 168 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef long int __int_least32_t;

typedef long unsigned int __uint_least32_t;
# 186 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef long long int __int_least64_t;

typedef long long unsigned int __uint_least64_t;
# 200 "/home/law/installed/h8300-elf/include/machine/_default_types.h" 3 4
typedef int __intptr_t;

typedef unsigned int __uintptr_t;
# 44 "/home/law/installed/h8300-elf/include/sys/cdefs.h" 2 3 4

# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 46 "/home/law/installed/h8300-elf/include/sys/cdefs.h" 2 3 4
# 36 "/home/law/installed/h8300-elf/include/stdio.h" 2 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 37 "/home/law/installed/h8300-elf/include/stdio.h" 2 3 4
# 47 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/reent.h" 1 3 4
# 13 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/_ansi.h" 1 3 4
# 14 "/home/law/installed/h8300-elf/include/sys/reent.h" 2 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 15 "/home/law/installed/h8300-elf/include/sys/reent.h" 2 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/_types.h" 1 3 4
# 12 "/home/law/installed/h8300-elf/include/sys/_types.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/machine/_types.h" 1 3 4
# 13 "/home/law/installed/h8300-elf/include/sys/_types.h" 2 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/lock.h" 1 3 4





typedef int _LOCK_T;
typedef int _LOCK_RECURSIVE_T;
# 14 "/home/law/installed/h8300-elf/include/sys/_types.h" 2 3 4


typedef long _off_t;



typedef short __dev_t;



typedef unsigned short __uid_t;


typedef unsigned short __gid_t;



__extension__ typedef long long _off64_t;







typedef long _fpos_t;
# 55 "/home/law/installed/h8300-elf/include/sys/_types.h" 3 4
typedef signed int _ssize_t;
# 67 "/home/law/installed/h8300-elf/include/sys/_types.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 357 "/home/tmp/h8/gcc/gcc/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 68 "/home/law/installed/h8300-elf/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;
# 16 "/home/law/installed/h8300-elf/include/sys/reent.h" 2 3 4






typedef unsigned long __ULong;
# 38 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
struct _reent;






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];
 void * _dso_handle[32];

 __ULong _fntypes;


 __ULong _is_cxa;
};
# 91 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
struct _atexit {
 struct _atexit *_next;
 int _ind;

 void (*_fns[32])(void);
        struct _on_exit_args _on_exit_args;
};
# 115 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
struct __sbuf {
 unsigned char *_base;
 int _size;
};
# 179 "/home/law/installed/h8300-elf/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) (struct _reent *, void *, char *, int)
                                          ;
  int (* _write) (struct _reent *, void *, const char *, int)

                                   ;
  _fpos_t (* _seek) (struct _reent *, void *, _fpos_t, int);
  int (* _close) (struct _reent *, void *);


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


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


  struct __sbuf _lb;


  int _blksize;
  _off_t _offset;


  struct _reent *_data;



  _flock_t _lock;

  _mbstate_t _mbstate;
  int _flags2;
};
# 285 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
typedef struct __sFILE __FILE;



struct _glue
{
  struct _glue *_next;
  int _niobs;
  __FILE *_iobs;
};
# 317 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
struct _rand48 {
  unsigned short _seed[3];
  unsigned short _mult[3];
  unsigned short _add;




};
# 569 "/home/law/installed/h8300-elf/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;
   int _h_errno;
        } _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];
};
# 762 "/home/law/installed/h8300-elf/include/sys/reent.h" 3 4
extern struct _reent *_impure_ptr ;
extern struct _reent *const _global_impure_ptr ;

void _reclaim_reent (struct _reent *);
# 48 "/home/law/installed/h8300-elf/include/stdio.h" 2 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/types.h" 1 3 4
# 69 "/home/law/installed/h8300-elf/include/sys/types.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 70 "/home/law/installed/h8300-elf/include/sys/types.h" 2 3 4
# 1 "/home/law/installed/h8300-elf/include/machine/types.h" 1 3 4
# 19 "/home/law/installed/h8300-elf/include/machine/types.h" 3 4
typedef long int __off_t;
typedef int __pid_t;

__extension__ typedef long long int __loff_t;
# 71 "/home/law/installed/h8300-elf/include/sys/types.h" 2 3 4
# 93 "/home/law/installed/h8300-elf/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 ulong;



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;
# 155 "/home/law/installed/h8300-elf/include/sys/types.h" 3 4
typedef unsigned short ino_t;
# 184 "/home/law/installed/h8300-elf/include/sys/types.h" 3 4
typedef _off_t off_t;
typedef __dev_t dev_t;
typedef __uid_t uid_t;
typedef __gid_t gid_t;





typedef int pid_t;







typedef long key_t;

typedef _ssize_t ssize_t;
# 217 "/home/law/installed/h8300-elf/include/sys/types.h" 3 4
typedef unsigned int mode_t __attribute__ ((__mode__ (__SI__)));




typedef unsigned short nlink_t;
# 244 "/home/law/installed/h8300-elf/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;
# 275 "/home/law/installed/h8300-elf/include/sys/types.h" 3 4
typedef unsigned long clockid_t;




typedef unsigned long timer_t;



typedef unsigned long useconds_t;
typedef long suseconds_t;
# 49 "/home/law/installed/h8300-elf/include/stdio.h" 2 3 4



typedef __FILE FILE;




typedef _fpos_t fpos_t;





# 1 "/home/law/installed/h8300-elf/include/sys/stdio.h" 1 3 4
# 64 "/home/law/installed/h8300-elf/include/stdio.h" 2 3 4
# 164 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
FILE * tmpfile (void);
char * tmpnam (char *);

char * tempnam (const char *, const char *);

int fclose (FILE *);
int fflush (FILE *);
FILE * freopen (const char *restrict, const char *restrict, FILE *restrict);
void setbuf (FILE *restrict, char *restrict);
int setvbuf (FILE *restrict, char *restrict, int, size_t);
int fprintf (FILE *restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
int fscanf (FILE *restrict, const char *restrict, ...) __attribute__ ((__format__ (__scanf__, 2, 3)))
                                                           ;
int printf (const char *restrict, ...) __attribute__ ((__format__ (__printf__, 1, 2)))
                                                            ;
int scanf (const char *restrict, ...) __attribute__ ((__format__ (__scanf__, 1, 2)))
                                                           ;
int sscanf (const char *restrict, const char *restrict, ...) __attribute__ ((__format__ (__scanf__, 2, 3)))
                                                           ;
int vfprintf (FILE *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int vprintf (const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 1, 0)))
                                                            ;
int vsprintf (char *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int fgetc (FILE *);
char * fgets (char *restrict, int, FILE *restrict);
int fputc (int, FILE *);
int fputs (const char *restrict, FILE *restrict);
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 * restrict, size_t _size, size_t _n, FILE *restrict);
size_t fwrite (const void * restrict , size_t _size, size_t _n, FILE *);



int fgetpos (FILE *restrict, fpos_t *restrict);

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 *restrict _name, const char *restrict _type);
int sprintf (char *restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
int remove (const char *);
int rename (const char *, const char *);
# 235 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
int fseeko (FILE *, off_t, int);
off_t ftello ( FILE *);



int fcloseall (void);



int asiprintf (char **, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
char * asniprintf (char *, size_t *, const char *, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
char * asnprintf (char *restrict, size_t *restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int asprintf (char **restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;

int diprintf (int, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;

int fiprintf (FILE *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
int fiscanf (FILE *, const char *, ...) __attribute__ ((__format__ (__scanf__, 2, 3)))
                                                           ;
int iprintf (const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2)))
                                                            ;
int iscanf (const char *, ...) __attribute__ ((__format__ (__scanf__, 1, 2)))
                                                           ;
int siprintf (char *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
int siscanf (const char *, const char *, ...) __attribute__ ((__format__ (__scanf__, 2, 3)))
                                                           ;
int snprintf (char *restrict, size_t, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int sniprintf (char *, size_t, const char *, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int vasiprintf (char **, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
char * vasniprintf (char *, size_t *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
char * vasnprintf (char *, size_t *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int vasprintf (char **, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int vdiprintf (int, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int vfiprintf (FILE *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int vfiscanf (FILE *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 2, 0)))
                                                           ;
int vfscanf (FILE *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 2, 0)))
                                                           ;
int viprintf (const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 1, 0)))
                                                            ;
int viscanf (const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 1, 0)))
                                                           ;
int vscanf (const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 1, 0)))
                                                           ;
int vsiprintf (char *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int vsiscanf (const char *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 2, 0)))
                                                           ;
int vsniprintf (char *, size_t, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int vsnprintf (char *restrict, size_t, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int vsscanf (const char *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 2, 0)))
                                                           ;
# 313 "/home/law/installed/h8300-elf/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);
# 338 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
int dprintf (int, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;

FILE * fmemopen (void *restrict, size_t, const char *restrict);


FILE * open_memstream (char **, size_t *);

int renameat (int, const char *, int, const char *);

int vdprintf (int, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;







int _asiprintf_r (struct _reent *, char **, const char *, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
char * _asniprintf_r (struct _reent *, char *, size_t *, const char *, ...) __attribute__ ((__format__ (__printf__, 4, 5)))
                                                            ;
char * _asnprintf_r (struct _reent *, char *restrict, size_t *restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 4, 5)))
                                                            ;
int _asprintf_r (struct _reent *, char **restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _diprintf_r (struct _reent *, int, const char *, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _dprintf_r (struct _reent *, int, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _fclose_r (struct _reent *, FILE *);
int _fcloseall_r (struct _reent *);
FILE * _fdopen_r (struct _reent *, int, const char *);
int _fflush_r (struct _reent *, FILE *);
int _fgetc_r (struct _reent *, FILE *);
int _fgetc_unlocked_r (struct _reent *, FILE *);
char * _fgets_r (struct _reent *, char *restrict, int, FILE *restrict);
char * _fgets_unlocked_r (struct _reent *, char *restrict, int, FILE *restrict);




int _fgetpos_r (struct _reent *, FILE *, fpos_t *);
int _fsetpos_r (struct _reent *, FILE *, const fpos_t *);

int _fiprintf_r (struct _reent *, FILE *, const char *, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _fiscanf_r (struct _reent *, FILE *, const char *, ...) __attribute__ ((__format__ (__scanf__, 3, 4)))
                                                           ;
FILE * _fmemopen_r (struct _reent *, void *restrict, size_t, const char *restrict);
FILE * _fopen_r (struct _reent *, const char *restrict, const char *restrict);
FILE * _freopen_r (struct _reent *, const char *restrict, const char *restrict, FILE *restrict);
int _fprintf_r (struct _reent *, FILE *restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _fpurge_r (struct _reent *, FILE *);
int _fputc_r (struct _reent *, int, FILE *);
int _fputc_unlocked_r (struct _reent *, int, FILE *);
int _fputs_r (struct _reent *, const char *restrict, FILE *restrict);
int _fputs_unlocked_r (struct _reent *, const char *restrict, FILE *restrict);
size_t _fread_r (struct _reent *, void * restrict, size_t _size, size_t _n, FILE *restrict);
size_t _fread_unlocked_r (struct _reent *, void * restrict, size_t _size, size_t _n, FILE *restrict);
int _fscanf_r (struct _reent *, FILE *restrict, const char *restrict, ...) __attribute__ ((__format__ (__scanf__, 3, 4)))
                                                           ;
int _fseek_r (struct _reent *, FILE *, long, int);
int _fseeko_r (struct _reent *, FILE *, _off_t, int);
long _ftell_r (struct _reent *, FILE *);
_off_t _ftello_r (struct _reent *, FILE *);
void _rewind_r (struct _reent *, FILE *);
size_t _fwrite_r (struct _reent *, const void * restrict, size_t _size, size_t _n, FILE *restrict);
size_t _fwrite_unlocked_r (struct _reent *, const void * restrict, size_t _size, size_t _n, FILE *restrict);
int _getc_r (struct _reent *, FILE *);
int _getc_unlocked_r (struct _reent *, FILE *);
int _getchar_r (struct _reent *);
int _getchar_unlocked_r (struct _reent *);
char * _gets_r (struct _reent *, char *);
int _iprintf_r (struct _reent *, const char *, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
int _iscanf_r (struct _reent *, const char *, ...) __attribute__ ((__format__ (__scanf__, 2, 3)))
                                                           ;
FILE * _open_memstream_r (struct _reent *, char **, size_t *);
void _perror_r (struct _reent *, const char *);
int _printf_r (struct _reent *, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 2, 3)))
                                                            ;
int _putc_r (struct _reent *, int, FILE *);
int _putc_unlocked_r (struct _reent *, int, FILE *);
int _putchar_unlocked_r (struct _reent *, int);
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 *restrict, ...) __attribute__ ((__format__ (__scanf__, 2, 3)))
                                                           ;
int _siprintf_r (struct _reent *, char *, const char *, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _siscanf_r (struct _reent *, const char *, const char *, ...) __attribute__ ((__format__ (__scanf__, 3, 4)))
                                                           ;
int _sniprintf_r (struct _reent *, char *, size_t, const char *, ...) __attribute__ ((__format__ (__printf__, 4, 5)))
                                                            ;
int _snprintf_r (struct _reent *, char *restrict, size_t, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 4, 5)))
                                                            ;
int _sprintf_r (struct _reent *, char *restrict, const char *restrict, ...) __attribute__ ((__format__ (__printf__, 3, 4)))
                                                            ;
int _sscanf_r (struct _reent *, const char *restrict, const char *restrict, ...) __attribute__ ((__format__ (__scanf__, 3, 4)))
                                                           ;
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 _vasiprintf_r (struct _reent *, char **, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
char * _vasniprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 4, 0)))
                                                            ;
char * _vasnprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 4, 0)))
                                                            ;
int _vasprintf_r (struct _reent *, char **, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vdiprintf_r (struct _reent *, int, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vdprintf_r (struct _reent *, int, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vfiprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vfiscanf_r (struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 3, 0)))
                                                           ;
int _vfprintf_r (struct _reent *, FILE *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vfscanf_r (struct _reent *, FILE *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 3, 0)))
                                                           ;
int _viprintf_r (struct _reent *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int _viscanf_r (struct _reent *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 2, 0)))
                                                           ;
int _vprintf_r (struct _reent *, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 2, 0)))
                                                            ;
int _vscanf_r (struct _reent *, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 2, 0)))
                                                           ;
int _vsiprintf_r (struct _reent *, char *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vsiscanf_r (struct _reent *, const char *, const char *, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 3, 0)))
                                                           ;
int _vsniprintf_r (struct _reent *, char *, size_t, const char *, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 4, 0)))
                                                            ;
int _vsnprintf_r (struct _reent *, char *restrict, size_t, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 4, 0)))
                                                            ;
int _vsprintf_r (struct _reent *, char *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__printf__, 3, 0)))
                                                            ;
int _vsscanf_r (struct _reent *, const char *restrict, const char *restrict, __gnuc_va_list) __attribute__ ((__format__ (__scanf__, 3, 0)))
                                                           ;



int fpurge (FILE *);
ssize_t __getdelim (char **, size_t *, int, FILE *);
ssize_t __getline (char **, size_t *, FILE *);


void clearerr_unlocked (FILE *);
int feof_unlocked (FILE *);
int ferror_unlocked (FILE *);
int fileno_unlocked (FILE *);
int fflush_unlocked (FILE *);
int fgetc_unlocked (FILE *);
int fputc_unlocked (int, FILE *);
size_t fread_unlocked (void * restrict, size_t _size, size_t _n, FILE *restrict);
size_t fwrite_unlocked (const void * restrict , size_t _size, size_t _n, FILE *);



char * fgets_unlocked (char *restrict, int, FILE *restrict);
int fputs_unlocked (const char *restrict, FILE *restrict);
# 538 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
int __srget_r (struct _reent *, FILE *);
int __swbuf_r (struct _reent *, int, FILE *);
# 562 "/home/law/installed/h8300-elf/include/stdio.h" 3 4
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))





                                   ;
FILE *_funopen_r (struct _reent *, 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))





                                   ;







typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n);
typedef ssize_t cookie_write_function_t(void *__cookie, const char *__buf,
     size_t __n);




typedef int cookie_seek_function_t(void *__cookie, off_t *__off, int __whence);

typedef int cookie_close_function_t(void *__cookie);
typedef struct
{


  cookie_read_function_t *read;
  cookie_write_function_t *write;
  cookie_seek_function_t *seek;
  cookie_close_function_t *close;
} cookie_io_functions_t;
FILE *fopencookie (void *__cookie, const char *__mode, cookie_io_functions_t __functions)
                                                         ;
FILE *_fopencookie_r (struct _reent *, void *__cookie, const char *__mode, cookie_io_functions_t __functions)
                                                         ;
# 725 "/home/law/installed/h8300-elf/include/stdio.h" 3 4

# 88 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2





# 1 "/home/law/installed/h8300-elf/include/errno.h" 1 3 4




typedef int error_t;



# 1 "/home/law/installed/h8300-elf/include/sys/errno.h" 1 3 4
# 15 "/home/law/installed/h8300-elf/include/sys/errno.h" 3 4
extern int *__errno (void);




extern const char * const _sys_errlist[];
extern int _sys_nerr;
# 10 "/home/law/installed/h8300-elf/include/errno.h" 2 3 4
# 94 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2






# 1 "/home/law/installed/h8300-elf/include/string.h" 1 3 4
# 17 "/home/law/installed/h8300-elf/include/string.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 18 "/home/law/installed/h8300-elf/include/string.h" 2 3 4



void * memchr (const void *, int, size_t);
int memcmp (const void *, const void *, size_t);
void * memcpy (void * restrict, const void * restrict, size_t);
void * memmove (void *, const void *, size_t);
void * memset (void *, int, size_t);
char *strcat (char *restrict, const char *restrict);
char *strchr (const char *, int);
int strcmp (const char *, const char *);
int strcoll (const char *, const char *);
char *strcpy (char *restrict, const char *restrict);
size_t strcspn (const char *, const char *);
char *strerror (int);
size_t strlen (const char *);
char *strncat (char *restrict, const char *restrict, size_t);
int strncmp (const char *, const char *, size_t);
char *strncpy (char *restrict, const char *restrict, 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 *restrict, const char *restrict);

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


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


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 * restrict, const void * restrict, int, size_t);


void * mempcpy (void *, const void *, size_t);
void * memmem (const void *, size_t, const void *, size_t);

void * memrchr (const void *, int, size_t);

void * rawmemchr (const void *, int);


char *rindex (const char *, int);

char *stpcpy (char *restrict, const char *restrict);
char *stpncpy (char *restrict, const char *restrict, size_t);

int strcasecmp (const char *, const char *);


char *strcasestr (const char *, const char *);
char *strchrnul (const char *, int);


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



int ffsl (long);
int ffsll (long long);







char *strerror_r (int, char *, size_t);
# 115 "/home/law/installed/h8300-elf/include/string.h" 3 4
char * _strerror_r (struct _reent *, int, int, int *);


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 *);



char *strsignal (int __signo);
# 163 "/home/law/installed/h8300-elf/include/string.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/sys/string.h" 1 3 4
# 164 "/home/law/installed/h8300-elf/include/string.h" 2 3 4


# 101 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2
# 1 "/home/law/installed/h8300-elf/include/stdlib.h" 1 3 4
# 16 "/home/law/installed/h8300-elf/include/stdlib.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 17 "/home/law/installed/h8300-elf/include/stdlib.h" 2 3 4



# 1 "/home/law/installed/h8300-elf/include/machine/stdlib.h" 1 3 4
# 21 "/home/law/installed/h8300-elf/include/stdlib.h" 2 3 4

# 1 "/home/law/installed/h8300-elf/include/alloca.h" 1 3 4
# 23 "/home/law/installed/h8300-elf/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;




typedef int (*__compar_fn_t) (const void *, const void *);







int __locale_mb_cur_max (void);



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, __compar_fn_t _compar)



                                ;
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 *);

extern char *suboptarg;
int getsubopt (char **, char * const *, char **);

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 *restrict, const char *restrict, size_t);
int _mbtowc_r (struct _reent *, wchar_t *restrict, const char *restrict, size_t, _mbstate_t *);
int wctomb (char *, wchar_t);
int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
size_t mbstowcs (wchar_t *restrict, const char *restrict, size_t);
size_t _mbstowcs_r (struct _reent *, wchar_t *restrict, const char *restrict, size_t, _mbstate_t *);
size_t wcstombs (char *restrict, const wchar_t *restrict, size_t);
size_t _wcstombs_r (struct _reent *, char *restrict, const wchar_t *restrict, size_t, _mbstate_t *);


char * mkdtemp (char *);
int mkostemp (char *, int);
int mkostemps (char *, int, int);
int mkstemp (char *);
int mkstemps (char *, int);
char * mktemp (char *) __attribute__ ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")));

char * _mkdtemp_r (struct _reent *, char *);
int _mkostemp_r (struct _reent *, char *, int);
int _mkostemps_r (struct _reent *, char *, int, int);
int _mkstemp_r (struct _reent *, char *);
int _mkstemps_r (struct _reent *, char *, int);
char * _mktemp_r (struct _reent *, char *) __attribute__ ((__warning__ ("the use of `mktemp' is dangerous; use `mkstemp' instead")));

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

void * reallocf (void * __r, size_t __size);
char * realpath (const char *restrict path, char *restrict resolved_path);

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



float strtof (const char *restrict __n, char **restrict __end_PTR);







long strtol (const char *restrict __n, char **restrict __end_PTR, int __base);
long _strtol_r (struct _reent *,const char *restrict __n, char **restrict __end_PTR, int __base);
unsigned long strtoul (const char *restrict __n, char **restrict __end_PTR, int __base);
unsigned long _strtoul_r (struct _reent *,const char *restrict __n, char **restrict __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 (char *__string);
int _putenv_r (struct _reent *, char *__string);
void * _reallocf_r (struct _reent *, void *, size_t);
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**);

char * __itoa (int, char *, int);
char * __utoa (unsigned, char *, int);

char * itoa (int, char *, int);
char * utoa (unsigned, char *, int);
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 *restrict __n, char **restrict __end_PTR, int __base);


long long _strtoll_r (struct _reent *, const char *restrict __n, char **restrict __end_PTR, int __base);




unsigned long long strtoull (const char *restrict __n, char **restrict __end_PTR, int __base);


unsigned long long _strtoull_r (struct _reent *, const char *restrict __n, char **restrict __end_PTR, int __base);


void cfree (void *);
int unsetenv (const char *__string);
int _unsetenv_r (struct _reent *, const char *__string);
# 246 "/home/law/installed/h8300-elf/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 *);
# 271 "/home/law/installed/h8300-elf/include/stdlib.h" 3 4
void qsort_r (void * __base, size_t __nmemb, size_t __size, int (*_compar)(const void *, const void *, void *), void * __thunk);







extern long double strtold (const char *restrict, char **restrict);




# 102 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2
# 1 "/home/law/installed/h8300-elf/include/unistd.h" 1 3 4



# 1 "/home/law/installed/h8300-elf/include/sys/unistd.h" 1 3 4
# 14 "/home/law/installed/h8300-elf/include/sys/unistd.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 15 "/home/law/installed/h8300-elf/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 faccessat (int __dirfd, const char *__path, int __mode, int __flags);




int fchmod (int __fildes, mode_t __mode );

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


int fchownat (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags);




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);
int 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 issetugid (void);


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

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

int linkat (int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags );

int nice (int __nice_value );

off_t lseek (int __fildes, off_t __offset, int __whence );
# 141 "/home/law/installed/h8300-elf/include/sys/unistd.h" 3 4
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 sethostname (const char *, size_t);

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 *restrict, void *restrict, 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 usleep (useconds_t __useconds);
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 );
# 258 "/home/law/installed/h8300-elf/include/sys/unistd.h" 3 4
ssize_t readlink (const char *restrict __path, char *restrict __buf, size_t __buflen)
                                                                   ;

ssize_t readlinkat (int __dirfd1, const char *restrict __path, char *restrict __buf, size_t __buflen)
                                                                     ;

int symlink (const char *__name1, const char *__name2);

int symlinkat (const char *, int, const char *);
int unlinkat (int, const char *, int);
# 5 "/home/law/installed/h8300-elf/include/unistd.h" 2 3 4
# 103 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2


# 1 "/home/tmp/h8/gcc/gcc/include-fixed/limits.h" 1 3 4
# 34 "/home/tmp/h8/gcc/gcc/include-fixed/limits.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include-fixed/syslimits.h" 1 3 4






# 1 "/home/tmp/h8/gcc/gcc/include-fixed/limits.h" 1 3 4
# 194 "/home/tmp/h8/gcc/gcc/include-fixed/limits.h" 3 4
# 1 "/home/law/installed/h8300-elf/include/limits.h" 1 3 4
# 195 "/home/tmp/h8/gcc/gcc/include-fixed/limits.h" 2 3 4
# 8 "/home/tmp/h8/gcc/gcc/include-fixed/syslimits.h" 2 3 4
# 35 "/home/tmp/h8/gcc/gcc/include-fixed/limits.h" 2 3 4
# 106 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2


# 1 "/home/law/installed/h8300-elf/include/time.h" 1 3 4
# 15 "/home/law/installed/h8300-elf/include/time.h" 3 4
# 1 "/home/tmp/h8/gcc/gcc/include/stddef.h" 1 3 4
# 16 "/home/law/installed/h8300-elf/include/time.h" 2 3 4


# 1 "/home/law/installed/h8300-elf/include/machine/time.h" 1 3 4
# 19 "/home/law/installed/h8300-elf/include/time.h" 2 3 4
# 29 "/home/law/installed/h8300-elf/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;






};

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 *restrict _s, size_t _maxsize, const char *restrict _fmt, const struct tm *restrict _t)

                                        ;

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








char *strptime (const char *restrict, const char *restrict, struct tm *restrict)

                            ;
void tzset (void);
void _tzset_r (struct _reent *);

typedef struct __tzrule_struct
{
  char ch;
  int m;
  int n;
  int d;
  int s;
  time_t change;
  long offset;
} __tzrule_type;

typedef struct __tzinfo_struct
{
  int __tznorth;
  int __tzyear;
  __tzrule_type __tzrule[2];
} __tzinfo_type;

__tzinfo_type *__gettzinfo (void);
# 129 "/home/law/installed/h8300-elf/include/time.h" 3 4
extern long _timezone;
extern int _daylight;
extern char *_tzname[2];
# 109 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2
# 135 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h"
# 1 "/home/gcc/GIT-2/gcc/libgcc/../include/filenames.h" 1
# 29 "/home/gcc/GIT-2/gcc/libgcc/../include/filenames.h"
# 1 "/home/gcc/GIT-2/gcc/libgcc/../include/hashtab.h" 1
# 39 "/home/gcc/GIT-2/gcc/libgcc/../include/hashtab.h"
# 1 "/home/gcc/GIT-2/gcc/libgcc/../include/ansidecl.h" 1
# 40 "/home/gcc/GIT-2/gcc/libgcc/../include/hashtab.h" 2



# 42 "/home/gcc/GIT-2/gcc/libgcc/../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 *);
# 95 "/home/gcc/GIT-2/gcc/libgcc/../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_typed_alloc (size_t, htab_hash, htab_eq, htab_del,
     htab_alloc, htab_alloc, htab_free);


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);
# 30 "/home/gcc/GIT-2/gcc/libgcc/../include/filenames.h" 2
# 83 "/home/gcc/GIT-2/gcc/libgcc/../include/filenames.h"
extern int filename_cmp (const char *s1, const char *s2);


extern int filename_ncmp (const char *s1, const char *s2,
     size_t n);

extern hashval_t filename_hash (const void *s);

extern int filename_eq (const void *s1, const void *s2);

extern int canonical_filename_eq (const char *a, const char *b);
# 136 "/home/gcc/GIT-2/gcc/libgcc/../gcc/tsystem.h" 2
# 28 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/coretypes.h" 1
# 301 "/home/gcc/GIT-2/gcc/libgcc/../gcc/coretypes.h"
struct _dont_use_rtx_here_;
struct _dont_use_rtvec_here_;
struct _dont_use_rtx_insn_here_;
union _dont_use_tree_here_;
# 317 "/home/gcc/GIT-2/gcc/libgcc/../gcc/coretypes.h"
enum function_class {
  function_c94,
  function_c99_misc,
  function_c99_math_complex,
  function_sincos,
  function_c11_misc
};



enum symbol_visibility
{
  VISIBILITY_DEFAULT,
  VISIBILITY_PROTECTED,
  VISIBILITY_HIDDEN,
  VISIBILITY_INTERNAL
};



enum flt_eval_method
{
  FLT_EVAL_METHOD_UNPREDICTABLE = -1,
  FLT_EVAL_METHOD_PROMOTE_TO_FLOAT = 0,
  FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE = 1,
  FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE = 2,
  FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 = 16
};

enum excess_precision_type
{
  EXCESS_PRECISION_TYPE_IMPLICIT,
  EXCESS_PRECISION_TYPE_STANDARD,
  EXCESS_PRECISION_TYPE_FAST
};



typedef void (*gt_pointer_operator) (void *, void *);


typedef unsigned char uchar;
# 29 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c" 2
# 1 "../.././gcc/tm.h" 1
# 16 "../.././gcc/tm.h"
# 1 "../.././gcc/options.h" 1





# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/flag-types.h" 1
# 23 "/home/gcc/GIT-2/gcc/libgcc/../gcc/flag-types.h"
enum debug_info_type
{
  NO_DEBUG,
  DBX_DEBUG,
  SDB_DEBUG,
  DWARF2_DEBUG,
  XCOFF_DEBUG,
  VMS_DEBUG,
  VMS_AND_DWARF2_DEBUG

};

enum debug_info_levels
{
  DINFO_LEVEL_NONE,
  DINFO_LEVEL_TERSE,
  DINFO_LEVEL_NORMAL,
  DINFO_LEVEL_VERBOSE
};
# 51 "/home/gcc/GIT-2/gcc/libgcc/../gcc/flag-types.h"
enum debug_info_usage
{
  DINFO_USAGE_DFN,
  DINFO_USAGE_DIR_USE,
  DINFO_USAGE_IND_USE,
  DINFO_USAGE_NUM_ENUMS
};
# 84 "/home/gcc/GIT-2/gcc/libgcc/../gcc/flag-types.h"
enum debug_struct_file
{
  DINFO_STRUCT_FILE_NONE,
  DINFO_STRUCT_FILE_BASE,

  DINFO_STRUCT_FILE_SYS,

  DINFO_STRUCT_FILE_ANY
};



enum dwarf_gnat_encodings
{
  DWARF_GNAT_ENCODINGS_ALL = 0,



  DWARF_GNAT_ENCODINGS_GDB = 1,


  DWARF_GNAT_ENCODINGS_MINIMAL = 2

};



enum ivar_visibility
{
  IVAR_VISIBILITY_PRIVATE,
  IVAR_VISIBILITY_PROTECTED,
  IVAR_VISIBILITY_PUBLIC,
  IVAR_VISIBILITY_PACKAGE
};


enum stack_reuse_level
{
  SR_NONE,
  SR_NAMED_VARS,
  SR_ALL
};


enum reorder_blocks_algorithm
{
  REORDER_BLOCKS_ALGORITHM_SIMPLE,
  REORDER_BLOCKS_ALGORITHM_STC
};


enum ira_algorithm
{
  IRA_ALGORITHM_CB,
  IRA_ALGORITHM_PRIORITY
};


enum ira_region
{
  IRA_REGION_ONE,
  IRA_REGION_ALL,
  IRA_REGION_MIXED,



  IRA_REGION_AUTODETECT
};


enum excess_precision
{
  EXCESS_PRECISION_DEFAULT,
  EXCESS_PRECISION_FAST,
  EXCESS_PRECISION_STANDARD
};


enum permitted_flt_eval_methods
{
  PERMITTED_FLT_EVAL_METHODS_DEFAULT,
  PERMITTED_FLT_EVAL_METHODS_TS_18661,
  PERMITTED_FLT_EVAL_METHODS_C11
};


enum stack_check_type
{

  NO_STACK_CHECK = 0,



  GENERIC_STACK_CHECK,




  STATIC_BUILTIN_STACK_CHECK,



  FULL_BUILTIN_STACK_CHECK
};


enum fp_contract_mode {
  FP_CONTRACT_OFF = 0,
  FP_CONTRACT_ON = 1,
  FP_CONTRACT_FAST = 2
};


enum scalar_storage_order_kind {
  SSO_NATIVE = 0,
  SSO_BIG_ENDIAN,
  SSO_LITTLE_ENDIAN
};


enum vect_cost_model {
  VECT_COST_MODEL_UNLIMITED = 0,
  VECT_COST_MODEL_CHEAP = 1,
  VECT_COST_MODEL_DYNAMIC = 2,
  VECT_COST_MODEL_DEFAULT = 3
};


enum sanitize_code {

  SANITIZE_ADDRESS = 1UL << 0,
  SANITIZE_USER_ADDRESS = 1UL << 1,
  SANITIZE_KERNEL_ADDRESS = 1UL << 2,

  SANITIZE_THREAD = 1UL << 3,

  SANITIZE_LEAK = 1UL << 4,

  SANITIZE_SHIFT_BASE = 1UL << 5,
  SANITIZE_SHIFT_EXPONENT = 1UL << 6,
  SANITIZE_DIVIDE = 1UL << 7,
  SANITIZE_UNREACHABLE = 1UL << 8,
  SANITIZE_VLA = 1UL << 9,
  SANITIZE_NULL = 1UL << 10,
  SANITIZE_RETURN = 1UL << 11,
  SANITIZE_SI_OVERFLOW = 1UL << 12,
  SANITIZE_BOOL = 1UL << 13,
  SANITIZE_ENUM = 1UL << 14,
  SANITIZE_FLOAT_DIVIDE = 1UL << 15,
  SANITIZE_FLOAT_CAST = 1UL << 16,
  SANITIZE_BOUNDS = 1UL << 17,
  SANITIZE_ALIGNMENT = 1UL << 18,
  SANITIZE_NONNULL_ATTRIBUTE = 1UL << 19,
  SANITIZE_RETURNS_NONNULL_ATTRIBUTE = 1UL << 20,
  SANITIZE_OBJECT_SIZE = 1UL << 21,
  SANITIZE_VPTR = 1UL << 22,
  SANITIZE_BOUNDS_STRICT = 1UL << 23,
  SANITIZE_SHIFT = SANITIZE_SHIFT_BASE | SANITIZE_SHIFT_EXPONENT,
  SANITIZE_UNDEFINED = SANITIZE_SHIFT | SANITIZE_DIVIDE | SANITIZE_UNREACHABLE
         | SANITIZE_VLA | SANITIZE_NULL | SANITIZE_RETURN
         | SANITIZE_SI_OVERFLOW | SANITIZE_BOOL | SANITIZE_ENUM
         | SANITIZE_BOUNDS | SANITIZE_ALIGNMENT
         | SANITIZE_NONNULL_ATTRIBUTE
         | SANITIZE_RETURNS_NONNULL_ATTRIBUTE
         | SANITIZE_OBJECT_SIZE | SANITIZE_VPTR,
  SANITIZE_NONDEFAULT = SANITIZE_FLOAT_DIVIDE | SANITIZE_FLOAT_CAST
   | SANITIZE_BOUNDS_STRICT
};


enum vtv_priority {
  VTV_NO_PRIORITY = 0,
  VTV_STANDARD_PRIORITY = 1,
  VTV_PREINIT_PRIORITY = 2
};


enum lto_partition_model {
  LTO_PARTITION_NONE = 0,
  LTO_PARTITION_ONE = 1,
  LTO_PARTITION_BALANCED = 2,
  LTO_PARTITION_1TO1 = 3,
  LTO_PARTITION_MAX = 4
};


enum lto_linker_output {
  LTO_LINKER_OUTPUT_UNKNOWN,
  LTO_LINKER_OUTPUT_REL,
  LTO_LINKER_OUTPUT_DYN,
  LTO_LINKER_OUTPUT_PIE,
  LTO_LINKER_OUTPUT_EXEC
};



enum gfc_init_local_real
{
  GFC_INIT_REAL_OFF = 0,
  GFC_INIT_REAL_ZERO,
  GFC_INIT_REAL_NAN,
  GFC_INIT_REAL_SNAN,
  GFC_INIT_REAL_INF,
  GFC_INIT_REAL_NEG_INF
};



enum gfc_fcoarray
{
  GFC_FCOARRAY_NONE = 0,
  GFC_FCOARRAY_SINGLE,
  GFC_FCOARRAY_LIB
};




enum gfc_convert
{
  GFC_FLAG_CONVERT_NATIVE = 0,
  GFC_FLAG_CONVERT_SWAP,
  GFC_FLAG_CONVERT_BIG,
  GFC_FLAG_CONVERT_LITTLE
};
# 7 "../.././gcc/options.h" 2
# 5294 "../.././gcc/options.h"
enum opt_code
{
  OPT____ = 0,
# 5323 "../.././gcc/options.h"
  OPT__help = 27,
  OPT__help_ = 28,
# 5351 "../.././gcc/options.h"
  OPT__no_sysroot_suffix = 55,



  OPT__output_pch_ = 59,

  OPT__param = 61,
# 5388 "../.././gcc/options.h"
  OPT__sysroot_ = 92,
  OPT__target_help = 93,
# 5399 "../.././gcc/options.h"
  OPT__version = 103,


  OPT_A = 106,
  OPT_B = 107,
  OPT_C = 108,
  OPT_CC = 109,
  OPT_D = 110,
  OPT_E = 111,
  OPT_F = 112,
  OPT_H = 113,
  OPT_I = 114,
  OPT_J = 115,
  OPT_L = 116,
  OPT_M = 117,
  OPT_MD = 118,
  OPT_MF = 119,
  OPT_MG = 120,
  OPT_MM = 121,
  OPT_MMD = 122,
  OPT_MP = 123,
  OPT_MQ = 124,
  OPT_MT = 125,
  OPT_N = 126,
  OPT_O = 127,
  OPT_Ofast = 128,
  OPT_Og = 129,
  OPT_Os = 130,
  OPT_P = 131,
  OPT_Q = 132,
  OPT_Qn = 133,
  OPT_Qy = 134,
  OPT_R = 135,
  OPT_S = 136,
  OPT_T = 137,
  OPT_Tbss = 138,
  OPT_Tbss_ = 139,
  OPT_Tdata = 140,
  OPT_Tdata_ = 141,
  OPT_Ttext = 142,
  OPT_Ttext_ = 143,
  OPT_U = 144,

  OPT_Wa_ = 146,
  OPT_Wabi = 147,
  OPT_Wabi_tag = 148,
  OPT_Wabi_ = 149,
  OPT_Waddress = 150,
  OPT_Waggregate_return = 151,
  OPT_Waggressive_loop_optimizations = 152,
  OPT_Waliasing = 153,
  OPT_Walign_commons = 154,

  OPT_Waligned_new_ = 156,
  OPT_Wall = 157,
  OPT_Walloc_size_larger_than_ = 158,
  OPT_Walloc_zero = 159,
  OPT_Walloca = 160,
  OPT_Walloca_larger_than_ = 161,
  OPT_Wampersand = 162,
  OPT_Wargument_mismatch = 163,
  OPT_Warray_bounds = 164,
  OPT_Warray_bounds_ = 165,
  OPT_Warray_temporaries = 166,
  OPT_Wassign_intercept = 167,
  OPT_Wattributes = 168,
  OPT_Wbad_function_cast = 169,
  OPT_Wbool_compare = 170,
  OPT_Wbool_operation = 171,
  OPT_Wbuiltin_declaration_mismatch = 172,
  OPT_Wbuiltin_macro_redefined = 173,
  OPT_Wc___compat = 174,

  OPT_Wc__11_compat = 176,
  OPT_Wc__14_compat = 177,

  OPT_Wc__1z_compat = 179,
  OPT_Wc_binding_type = 180,
  OPT_Wc90_c99_compat = 181,
  OPT_Wc99_c11_compat = 182,
  OPT_Wcast_align = 183,
  OPT_Wcast_qual = 184,
  OPT_Wchar_subscripts = 185,
  OPT_Wcharacter_truncation = 186,
  OPT_Wchkp = 187,
  OPT_Wclobbered = 188,
  OPT_Wcomment = 189,

  OPT_Wcompare_reals = 191,
  OPT_Wconditionally_supported = 192,
  OPT_Wconversion = 193,
  OPT_Wconversion_extra = 194,
  OPT_Wconversion_null = 195,
  OPT_Wcoverage_mismatch = 196,
  OPT_Wcpp = 197,
  OPT_Wctor_dtor_privacy = 198,
  OPT_Wdangling_else = 199,
  OPT_Wdate_time = 200,
  OPT_Wdeclaration_after_statement = 201,
  OPT_Wdelete_incomplete = 202,
  OPT_Wdelete_non_virtual_dtor = 203,
  OPT_Wdeprecated = 204,
  OPT_Wdeprecated_declarations = 205,
  OPT_Wdesignated_init = 206,
  OPT_Wdisabled_optimization = 207,
  OPT_Wdiscarded_array_qualifiers = 208,
  OPT_Wdiscarded_qualifiers = 209,
  OPT_Wdiv_by_zero = 210,
  OPT_Wdouble_promotion = 211,
  OPT_Wduplicate_decl_specifier = 212,
  OPT_Wduplicated_branches = 213,
  OPT_Wduplicated_cond = 214,
  OPT_Weffc__ = 215,
  OPT_Wempty_body = 216,
  OPT_Wendif_labels = 217,
  OPT_Wenum_compare = 218,
  OPT_Werror = 219,

  OPT_Werror_ = 221,
  OPT_Wexpansion_to_defined = 222,
  OPT_Wextra = 223,
  OPT_Wfatal_errors = 224,
  OPT_Wfloat_conversion = 225,
  OPT_Wfloat_equal = 226,

  OPT_Wformat_contains_nul = 228,
  OPT_Wformat_extra_args = 229,
  OPT_Wformat_nonliteral = 230,

  OPT_Wformat_overflow_ = 232,
  OPT_Wformat_security = 233,
  OPT_Wformat_signedness = 234,

  OPT_Wformat_truncation_ = 236,
  OPT_Wformat_y2k = 237,
  OPT_Wformat_zero_length = 238,
  OPT_Wformat_ = 239,
  OPT_Wframe_address = 240,
  OPT_Wframe_larger_than_ = 241,
  OPT_Wfree_nonheap_object = 242,
  OPT_Wfunction_elimination = 243,
  OPT_Whsa = 244,
  OPT_Wignored_attributes = 245,
  OPT_Wignored_qualifiers = 246,
  OPT_Wimplicit = 247,

  OPT_Wimplicit_fallthrough_ = 249,
  OPT_Wimplicit_function_declaration = 250,
  OPT_Wimplicit_int = 251,
  OPT_Wimplicit_interface = 252,
  OPT_Wimplicit_procedure = 253,

  OPT_Wincompatible_pointer_types = 255,
  OPT_Winherited_variadic_ctor = 256,
  OPT_Winit_self = 257,
  OPT_Winline = 258,
  OPT_Wint_conversion = 259,
  OPT_Wint_in_bool_context = 260,
  OPT_Wint_to_pointer_cast = 261,
  OPT_Winteger_division = 262,
  OPT_Wintrinsic_shadow = 263,
  OPT_Wintrinsics_std = 264,
  OPT_Winvalid_memory_model = 265,
  OPT_Winvalid_offsetof = 266,
  OPT_Winvalid_pch = 267,
  OPT_Wjump_misses_init = 268,
  OPT_Wl_ = 269,

  OPT_Wlarger_than_ = 271,
  OPT_Wline_truncation = 272,
  OPT_Wliteral_suffix = 273,
  OPT_Wlogical_not_parentheses = 274,
  OPT_Wlogical_op = 275,
  OPT_Wlong_long = 276,
  OPT_Wlto_type_mismatch = 277,
  OPT_Wmain = 278,
  OPT_Wmaybe_uninitialized = 279,
  OPT_Wmemset_elt_size = 280,
  OPT_Wmemset_transposed_args = 281,
  OPT_Wmisleading_indentation = 282,
  OPT_Wmissing_braces = 283,
  OPT_Wmissing_declarations = 284,
  OPT_Wmissing_field_initializers = 285,

  OPT_Wmissing_include_dirs = 287,

  OPT_Wmissing_parameter_type = 289,
  OPT_Wmissing_prototypes = 290,

  OPT_Wmultichar = 292,
  OPT_Wmultiple_inheritance = 293,
  OPT_Wnamespaces = 294,
  OPT_Wnarrowing = 295,
  OPT_Wnested_externs = 296,
  OPT_Wnoexcept = 297,
  OPT_Wnon_template_friend = 298,
  OPT_Wnon_virtual_dtor = 299,
  OPT_Wnonnull = 300,
  OPT_Wnonnull_compare = 301,

  OPT_Wnormalized_ = 303,
  OPT_Wnull_dereference = 304,
  OPT_Wodr = 305,
  OPT_Wold_style_cast = 306,
  OPT_Wold_style_declaration = 307,
  OPT_Wold_style_definition = 308,
  OPT_Wopenmp_simd = 309,
  OPT_Woverflow = 310,
  OPT_Woverlength_strings = 311,
  OPT_Woverloaded_virtual = 312,
  OPT_Woverride_init = 313,
  OPT_Woverride_init_side_effects = 314,
  OPT_Wp_ = 315,
  OPT_Wpacked = 316,
  OPT_Wpacked_bitfield_compat = 317,
  OPT_Wpadded = 318,
  OPT_Wparentheses = 319,
  OPT_Wpedantic = 320,

  OPT_Wplacement_new_ = 322,
  OPT_Wpmf_conversions = 323,
  OPT_Wpointer_arith = 324,
  OPT_Wpointer_compare = 325,
  OPT_Wpointer_sign = 326,
  OPT_Wpointer_to_int_cast = 327,
  OPT_Wpragmas = 328,
  OPT_Wproperty_assign_default = 329,
  OPT_Wprotocol = 330,
  OPT_Wpsabi = 331,
  OPT_Wreal_q_constant = 332,
  OPT_Wrealloc_lhs = 333,
  OPT_Wrealloc_lhs_all = 334,
  OPT_Wredundant_decls = 335,
  OPT_Wregister = 336,
  OPT_Wreorder = 337,
  OPT_Wrestrict = 338,
  OPT_Wreturn_local_addr = 339,
  OPT_Wreturn_type = 340,
  OPT_Wscalar_storage_order = 341,
  OPT_Wselector = 342,
  OPT_Wsequence_point = 343,
  OPT_Wshadow = 344,

  OPT_Wshadow_ivar = 346,

  OPT_Wshadow_compatible_local = 348,

  OPT_Wshadow_local = 350,
  OPT_Wshift_count_negative = 351,
  OPT_Wshift_count_overflow = 352,
  OPT_Wshift_negative_value = 353,

  OPT_Wshift_overflow_ = 355,
  OPT_Wsign_compare = 356,
  OPT_Wsign_conversion = 357,
  OPT_Wsign_promo = 358,
  OPT_Wsized_deallocation = 359,
  OPT_Wsizeof_array_argument = 360,
  OPT_Wsizeof_pointer_memaccess = 361,
  OPT_Wstack_protector = 362,
  OPT_Wstack_usage_ = 363,
  OPT_Wstrict_aliasing = 364,
  OPT_Wstrict_aliasing_ = 365,
  OPT_Wstrict_null_sentinel = 366,
  OPT_Wstrict_overflow = 367,
  OPT_Wstrict_overflow_ = 368,
  OPT_Wstrict_prototypes = 369,
  OPT_Wstrict_selector_match = 370,

  OPT_Wstringop_overflow_ = 372,
  OPT_Wsubobject_linkage = 373,
  OPT_Wsuggest_attribute_const = 374,
  OPT_Wsuggest_attribute_format = 375,
  OPT_Wsuggest_attribute_noreturn = 376,
  OPT_Wsuggest_attribute_pure = 377,
  OPT_Wsuggest_final_methods = 378,
  OPT_Wsuggest_final_types = 379,
  OPT_Wsuggest_override = 380,
  OPT_Wsurprising = 381,
  OPT_Wswitch = 382,
  OPT_Wswitch_bool = 383,
  OPT_Wswitch_default = 384,
  OPT_Wswitch_enum = 385,
  OPT_Wswitch_unreachable = 386,
  OPT_Wsync_nand = 387,
  OPT_Wsynth = 388,
  OPT_Wsystem_headers = 389,
  OPT_Wtabs = 390,
  OPT_Wtarget_lifetime = 391,
  OPT_Wtautological_compare = 392,
  OPT_Wtemplates = 393,
  OPT_Wterminate = 394,
  OPT_Wtraditional = 395,
  OPT_Wtraditional_conversion = 396,
  OPT_Wtrampolines = 397,
  OPT_Wtrigraphs = 398,
  OPT_Wtype_limits = 399,
  OPT_Wundeclared_selector = 400,
  OPT_Wundef = 401,
  OPT_Wundefined_do_loop = 402,
  OPT_Wunderflow = 403,
  OPT_Wuninitialized = 404,
  OPT_Wunknown_pragmas = 405,

  OPT_Wunsafe_loop_optimizations = 407,
  OPT_Wunsuffixed_float_constants = 408,
  OPT_Wunused = 409,
  OPT_Wunused_but_set_parameter = 410,
  OPT_Wunused_but_set_variable = 411,

  OPT_Wunused_const_variable_ = 413,
  OPT_Wunused_dummy_argument = 414,
  OPT_Wunused_function = 415,
  OPT_Wunused_label = 416,
  OPT_Wunused_local_typedefs = 417,
  OPT_Wunused_macros = 418,
  OPT_Wunused_parameter = 419,
  OPT_Wunused_result = 420,
  OPT_Wunused_value = 421,
  OPT_Wunused_variable = 422,
  OPT_Wuse_without_only = 423,
  OPT_Wuseless_cast = 424,
  OPT_Wvarargs = 425,
  OPT_Wvariadic_macros = 426,
  OPT_Wvector_operation_performance = 427,
  OPT_Wvirtual_inheritance = 428,
  OPT_Wvirtual_move_assign = 429,
  OPT_Wvla = 430,
  OPT_Wvla_larger_than_ = 431,
  OPT_Wvolatile_register_var = 432,
  OPT_Wwrite_strings = 433,
  OPT_Wzero_as_null_pointer_constant = 434,
  OPT_Wzerotrip = 435,
  OPT_Xassembler = 436,
  OPT_Xlinker = 437,
  OPT_Xpreprocessor = 438,
  OPT_Z = 439,
  OPT_ansi = 440,
  OPT_aux_info = 441,

  OPT_auxbase = 443,
  OPT_auxbase_strip = 444,
  OPT_c = 445,
  OPT_coverage = 446,
  OPT_cpp = 447,
  OPT_cpp_ = 448,
  OPT_d = 449,
  OPT_dumpbase = 450,
  OPT_dumpdir = 451,
  OPT_dumpfullversion = 452,
  OPT_dumpmachine = 453,
  OPT_dumpspecs = 454,
  OPT_dumpversion = 455,
  OPT_e = 456,
  OPT_export_dynamic = 457,
  OPT_fPIC = 458,
  OPT_fPIE = 459,
  OPT_fRTS_ = 460,
  OPT_fabi_compat_version_ = 461,
  OPT_fabi_version_ = 462,
  OPT_faccess_control = 463,
  OPT_fada_spec_parent_ = 464,
  OPT_faggressive_function_elimination = 465,
  OPT_faggressive_loop_optimizations = 466,
  OPT_falign_commons = 467,
  OPT_falign_functions = 468,
  OPT_falign_functions_ = 469,
  OPT_falign_jumps = 470,
  OPT_falign_jumps_ = 471,
  OPT_falign_labels = 472,
  OPT_falign_labels_ = 473,
  OPT_falign_loops = 474,
  OPT_falign_loops_ = 475,

  OPT_faligned_new_ = 477,
  OPT_fall_intrinsics = 478,

  OPT_fallow_leading_underscore = 480,
  OPT_fallow_parameterless_variadic_functions = 481,





  OPT_fasan_shadow_offset_ = 487,
  OPT_fasm = 488,
  OPT_fassociative_math = 489,
  OPT_fasynchronous_unwind_tables = 490,
  OPT_fauto_inc_dec = 491,
  OPT_fauto_profile = 492,
  OPT_fauto_profile_ = 493,
  OPT_fautomatic = 494,
  OPT_fbackslash = 495,
  OPT_fbacktrace = 496,
  OPT_fblas_matmul_limit_ = 497,
  OPT_fbounds_check = 498,
  OPT_fbranch_count_reg = 499,
  OPT_fbranch_probabilities = 500,
  OPT_fbranch_target_load_optimize = 501,
  OPT_fbranch_target_load_optimize2 = 502,
  OPT_fbtr_bb_exclusive = 503,
  OPT_fbuilding_libgcc = 504,
  OPT_fbuiltin = 505,
  OPT_fbuiltin_ = 506,
  OPT_fbuiltin_printf = 507,
  OPT_fcall_saved_ = 508,
  OPT_fcall_used_ = 509,
  OPT_fcaller_saves = 510,
  OPT_fcanonical_system_headers = 511,
  OPT_fcheck_array_temporaries = 512,
  OPT_fcheck_data_deps = 513,
  OPT_fcheck_new = 514,
  OPT_fcheck_pointer_bounds = 515,
  OPT_fcheck_ = 516,
  OPT_fchecking = 517,
  OPT_fchecking_ = 518,
  OPT_fchkp_check_incomplete_type = 519,
  OPT_fchkp_check_read = 520,
  OPT_fchkp_check_write = 521,
  OPT_fchkp_first_field_has_own_bounds = 522,
  OPT_fchkp_flexible_struct_trailing_arrays = 523,
  OPT_fchkp_instrument_calls = 524,
  OPT_fchkp_instrument_marked_only = 525,
  OPT_fchkp_narrow_bounds = 526,
  OPT_fchkp_narrow_to_innermost_array = 527,
  OPT_fchkp_optimize = 528,
  OPT_fchkp_store_bounds = 529,
  OPT_fchkp_treat_zero_dynamic_size_as_infinite = 530,
  OPT_fchkp_use_fast_string_functions = 531,
  OPT_fchkp_use_nochk_string_functions = 532,
  OPT_fchkp_use_static_bounds = 533,
  OPT_fchkp_use_static_const_bounds = 534,
  OPT_fchkp_use_wrappers = 535,
  OPT_fchkp_zero_input_bounds_for_main = 536,
  OPT_fcilkplus = 537,
  OPT_fcoarray_ = 538,
  OPT_fcode_hoisting = 539,
  OPT_fcombine_stack_adjustments = 540,
  OPT_fcommon = 541,
  OPT_fcompare_debug = 542,
  OPT_fcompare_debug_second = 543,
  OPT_fcompare_debug_ = 544,
  OPT_fcompare_elim = 545,
  OPT_fconcepts = 546,
  OPT_fcond_mismatch = 547,
  OPT_fconserve_space = 548,
  OPT_fconserve_stack = 549,
  OPT_fconstant_string_class_ = 550,
  OPT_fconstexpr_depth_ = 551,
  OPT_fconstexpr_loop_limit_ = 552,
  OPT_fconvert_ = 553,
  OPT_fcprop_registers = 554,
  OPT_fcray_pointer = 555,
  OPT_fcrossjumping = 556,
  OPT_fcse_follow_jumps = 557,

  OPT_fcx_fortran_rules = 559,
  OPT_fcx_limited_range = 560,
  OPT_fd_lines_as_code = 561,
  OPT_fd_lines_as_comments = 562,
  OPT_fdata_sections = 563,
  OPT_fdbg_cnt_list = 564,
  OPT_fdbg_cnt_ = 565,
  OPT_fdce = 566,
  OPT_fdebug_cpp = 567,
  OPT_fdebug_prefix_map_ = 568,
  OPT_fdebug_types_section = 569,
  OPT_fdec = 570,
  OPT_fdec_intrinsic_ints = 571,
  OPT_fdec_math = 572,
  OPT_fdec_static = 573,
  OPT_fdec_structure = 574,
  OPT_fdeclone_ctor_dtor = 575,
  OPT_fdeduce_init_list = 576,
  OPT_fdefault_double_8 = 577,

  OPT_fdefault_integer_8 = 579,
  OPT_fdefault_real_8 = 580,
  OPT_fdefer_pop = 581,
  OPT_fdelayed_branch = 582,
  OPT_fdelete_dead_exceptions = 583,
  OPT_fdelete_null_pointer_checks = 584,
  OPT_fdevirtualize = 585,
  OPT_fdevirtualize_at_ltrans = 586,
  OPT_fdevirtualize_speculatively = 587,

  OPT_fdiagnostics_color_ = 589,
  OPT_fdiagnostics_generate_patch = 590,
  OPT_fdiagnostics_parseable_fixits = 591,
  OPT_fdiagnostics_show_caret = 592,
  OPT_fdiagnostics_show_location_ = 593,
  OPT_fdiagnostics_show_option = 594,
  OPT_fdirectives_only = 595,
  OPT_fdisable_ = 596,
  OPT_fdollar_ok = 597,
  OPT_fdollars_in_identifiers = 598,
  OPT_fdse = 599,
  OPT_fdump_ = 600,
  OPT_fdump_ada_spec = 601,
  OPT_fdump_ada_spec_slim = 602,

  OPT_fdump_final_insns = 604,
  OPT_fdump_final_insns_ = 605,
  OPT_fdump_fortran_optimized = 606,
  OPT_fdump_fortran_original = 607,
  OPT_fdump_go_spec_ = 608,
  OPT_fdump_internal_locations = 609,
  OPT_fdump_noaddr = 610,

  OPT_fdump_passes = 612,
  OPT_fdump_unnumbered = 613,
  OPT_fdump_unnumbered_links = 614,
  OPT_fdwarf2_cfi_asm = 615,
  OPT_fearly_inlining = 616,
  OPT_felide_constructors = 617,
  OPT_feliminate_dwarf2_dups = 618,
  OPT_feliminate_unused_debug_symbols = 619,
  OPT_feliminate_unused_debug_types = 620,
  OPT_femit_class_debug_always = 621,
  OPT_femit_struct_debug_baseonly = 622,
  OPT_femit_struct_debug_detailed_ = 623,
  OPT_femit_struct_debug_reduced = 624,
  OPT_fenable_ = 625,
  OPT_fenforce_eh_specs = 626,

  OPT_fexceptions = 628,
  OPT_fexcess_precision_ = 629,
  OPT_fexec_charset_ = 630,
  OPT_fexpensive_optimizations = 631,
  OPT_fext_numeric_literals = 632,
  OPT_fextended_identifiers = 633,
  OPT_fextern_tls_init = 634,
  OPT_fexternal_blas = 635,

  OPT_ff2c = 637,
  OPT_ffast_math = 638,
  OPT_ffat_lto_objects = 639,
  OPT_ffinite_math_only = 640,
  OPT_ffixed_ = 641,
  OPT_ffixed_form = 642,
  OPT_ffixed_line_length_ = 643,
  OPT_ffixed_line_length_none = 644,
  OPT_ffloat_store = 645,
  OPT_ffor_scope = 646,

  OPT_fforward_propagate = 648,
  OPT_ffp_contract_ = 649,
  OPT_ffp_int_builtin_inexact = 650,
  OPT_ffpe_summary_ = 651,
  OPT_ffpe_trap_ = 652,
  OPT_ffree_form = 653,
  OPT_ffree_line_length_ = 654,
  OPT_ffree_line_length_none = 655,
  OPT_ffreestanding = 656,
  OPT_ffriend_injection = 657,
  OPT_ffrontend_optimize = 658,
  OPT_ffunction_cse = 659,
  OPT_ffunction_sections = 660,
  OPT_fgcse = 661,
  OPT_fgcse_after_reload = 662,
  OPT_fgcse_las = 663,
  OPT_fgcse_lm = 664,
  OPT_fgcse_sm = 665,
  OPT_fgimple = 666,
  OPT_fgnat_encodings_ = 667,
  OPT_fgnu_keywords = 668,
  OPT_fgnu_runtime = 669,
  OPT_fgnu_tm = 670,
  OPT_fgnu_unique = 671,
  OPT_fgnu89_inline = 672,
  OPT_fgo_c_header_ = 673,
  OPT_fgo_check_divide_overflow = 674,
  OPT_fgo_check_divide_zero = 675,
  OPT_fgo_compiling_runtime = 676,
  OPT_fgo_debug_escape = 677,
  OPT_fgo_dump_ = 678,
  OPT_fgo_optimize_ = 679,
  OPT_fgo_pkgpath_ = 680,
  OPT_fgo_prefix_ = 681,
  OPT_fgo_relative_import_path_ = 682,
  OPT_fgraphite = 683,
  OPT_fgraphite_identity = 684,
  OPT_fguess_branch_probability = 685,




  OPT_fhoist_adjacent_loads = 690,

  OPT_fhosted = 692,

  OPT_fident = 694,
  OPT_fif_conversion = 695,
  OPT_fif_conversion2 = 696,
  OPT_fimplement_inlines = 697,
  OPT_fimplicit_inline_templates = 698,
  OPT_fimplicit_none = 699,
  OPT_fimplicit_templates = 700,
  OPT_findirect_inlining = 701,
  OPT_finhibit_size_directive = 702,
  OPT_finit_character_ = 703,
  OPT_finit_derived = 704,
  OPT_finit_integer_ = 705,
  OPT_finit_local_zero = 706,
  OPT_finit_logical_ = 707,
  OPT_finit_real_ = 708,
  OPT_finline = 709,
  OPT_finline_atomics = 710,
  OPT_finline_functions = 711,
  OPT_finline_functions_called_once = 712,

  OPT_finline_limit_ = 714,
  OPT_finline_matmul_limit_ = 715,
  OPT_finline_small_functions = 716,
  OPT_finput_charset_ = 717,
  OPT_finstrument_functions = 718,
  OPT_finstrument_functions_exclude_file_list_ = 719,
  OPT_finstrument_functions_exclude_function_list_ = 720,
  OPT_finteger_4_integer_8 = 721,
  OPT_fintrinsic_modules_path = 722,
  OPT_fintrinsic_modules_path_ = 723,
  OPT_fipa_bit_cp = 724,
  OPT_fipa_cp = 725,
  OPT_fipa_cp_alignment = 726,
  OPT_fipa_cp_clone = 727,
  OPT_fipa_icf = 728,
  OPT_fipa_icf_functions = 729,
  OPT_fipa_icf_variables = 730,

  OPT_fipa_profile = 732,
  OPT_fipa_pta = 733,
  OPT_fipa_pure_const = 734,
  OPT_fipa_ra = 735,
  OPT_fipa_reference = 736,
  OPT_fipa_sra = 737,

  OPT_fipa_vrp = 739,
  OPT_fira_algorithm_ = 740,
  OPT_fira_hoist_pressure = 741,
  OPT_fira_loop_pressure = 742,
  OPT_fira_region_ = 743,
  OPT_fira_share_save_slots = 744,
  OPT_fira_share_spill_slots = 745,
  OPT_fira_verbose_ = 746,
  OPT_fisolate_erroneous_paths_attribute = 747,
  OPT_fisolate_erroneous_paths_dereference = 748,
  OPT_fivar_visibility_ = 749,
  OPT_fivopts = 750,
  OPT_fjump_tables = 751,
  OPT_fkeep_gc_roots_live = 752,
  OPT_fkeep_inline_dllexport = 753,
  OPT_fkeep_inline_functions = 754,
  OPT_fkeep_static_consts = 755,
  OPT_fkeep_static_functions = 756,

  OPT_flax_vector_conversions = 758,
  OPT_fleading_underscore = 759,
  OPT_flifetime_dse = 760,
  OPT_flifetime_dse_ = 761,
  OPT_flimit_function_alignment = 762,
  OPT_flinker_output_ = 763,
  OPT_flive_range_shrinkage = 764,
  OPT_flocal_ivars = 765,



  OPT_floop_nest_optimize = 769,

  OPT_floop_parallelize_all = 771,


  OPT_flra_remat = 774,
  OPT_flto = 775,
  OPT_flto_compression_level_ = 776,
  OPT_flto_odr_type_merging = 777,
  OPT_flto_partition_ = 778,
  OPT_flto_report = 779,
  OPT_flto_report_wpa = 780,
  OPT_flto_ = 781,
  OPT_fltrans = 782,
  OPT_fltrans_output_list_ = 783,
  OPT_fmath_errno = 784,
  OPT_fmax_array_constructor_ = 785,
  OPT_fmax_errors_ = 786,
  OPT_fmax_identifier_length_ = 787,
  OPT_fmax_stack_var_size_ = 788,
  OPT_fmax_subrecord_length_ = 789,
  OPT_fmem_report = 790,
  OPT_fmem_report_wpa = 791,
  OPT_fmerge_all_constants = 792,
  OPT_fmerge_constants = 793,
  OPT_fmerge_debug_strings = 794,
  OPT_fmessage_length_ = 795,
  OPT_fmodule_private = 796,
  OPT_fmodulo_sched = 797,
  OPT_fmodulo_sched_allow_regmoves = 798,
  OPT_fmove_loop_invariants = 799,
  OPT_fms_extensions = 800,





  OPT_fnew_inheriting_ctors = 806,
  OPT_fnew_ttp_matching = 807,
  OPT_fnext_runtime = 808,
  OPT_fnil_receivers = 809,
  OPT_fnon_call_exceptions = 810,
  OPT_fnonansi_builtins = 811,

  OPT_fnothrow_opt = 813,
  OPT_fobjc_abi_version_ = 814,
  OPT_fobjc_call_cxx_cdtors = 815,
  OPT_fobjc_direct_dispatch = 816,
  OPT_fobjc_exceptions = 817,
  OPT_fobjc_gc = 818,
  OPT_fobjc_nilcheck = 819,
  OPT_fobjc_sjlj_exceptions = 820,
  OPT_fobjc_std_objc1 = 821,
  OPT_foffload_abi_ = 822,
  OPT_foffload_ = 823,
  OPT_fomit_frame_pointer = 824,
  OPT_fopenacc = 825,
  OPT_fopenacc_dim_ = 826,
  OPT_fopenmp = 827,
  OPT_fopenmp_simd = 828,
  OPT_foperator_names = 829,
  OPT_fopt_info = 830,
  OPT_fopt_info_ = 831,

  OPT_foptimize_sibling_calls = 833,
  OPT_foptimize_strlen = 834,

  OPT_fpack_derived = 836,
  OPT_fpack_struct = 837,
  OPT_fpack_struct_ = 838,
  OPT_fpartial_inlining = 839,
  OPT_fpcc_struct_return = 840,
  OPT_fpch_deps = 841,
  OPT_fpch_preprocess = 842,
  OPT_fpeel_loops = 843,
  OPT_fpeephole = 844,
  OPT_fpeephole2 = 845,
  OPT_fpermissive = 846,
  OPT_fpermitted_flt_eval_methods_ = 847,
  OPT_fpic = 848,
  OPT_fpie = 849,
  OPT_fplan9_extensions = 850,
  OPT_fplt = 851,
  OPT_fplugin_arg_ = 852,
  OPT_fplugin_ = 853,
  OPT_fpost_ipa_mem_report = 854,
  OPT_fpre_ipa_mem_report = 855,
  OPT_fpredictive_commoning = 856,
  OPT_fprefetch_loop_arrays = 857,
  OPT_fpreprocessed = 858,
  OPT_fpretty_templates = 859,
  OPT_fprintf_return_value = 860,
  OPT_fprofile = 861,
  OPT_fprofile_arcs = 862,
  OPT_fprofile_correction = 863,
  OPT_fprofile_dir_ = 864,
  OPT_fprofile_generate = 865,
  OPT_fprofile_generate_ = 866,
  OPT_fprofile_reorder_functions = 867,
  OPT_fprofile_report = 868,
  OPT_fprofile_update_ = 869,
  OPT_fprofile_use = 870,
  OPT_fprofile_use_ = 871,
  OPT_fprofile_values = 872,
  OPT_fprotect_parens = 873,
  OPT_frandom_seed = 874,
  OPT_frandom_seed_ = 875,
  OPT_frange_check = 876,
  OPT_freal_4_real_10 = 877,
  OPT_freal_4_real_16 = 878,
  OPT_freal_4_real_8 = 879,
  OPT_freal_8_real_10 = 880,
  OPT_freal_8_real_16 = 881,
  OPT_freal_8_real_4 = 882,
  OPT_frealloc_lhs = 883,
  OPT_freciprocal_math = 884,
  OPT_frecord_gcc_switches = 885,
  OPT_frecord_marker_4 = 886,
  OPT_frecord_marker_8 = 887,
  OPT_frecursive = 888,
  OPT_free = 889,
  OPT_freg_struct_return = 890,

  OPT_frename_registers = 892,
  OPT_freorder_blocks = 893,
  OPT_freorder_blocks_algorithm_ = 894,
  OPT_freorder_blocks_and_partition = 895,
  OPT_freorder_functions = 896,
  OPT_frepack_arrays = 897,
  OPT_freplace_objc_classes = 898,
  OPT_frepo = 899,
  OPT_freport_bug = 900,
  OPT_frequire_return_statement = 901,
  OPT_frerun_cse_after_loop = 902,

  OPT_freschedule_modulo_scheduled_loops = 904,
  OPT_fresolution_ = 905,
  OPT_frounding_math = 906,
  OPT_frtti = 907,
  OPT_fsanitize_address_use_after_scope = 908,
  OPT_fsanitize_coverage_trace_pc = 909,
  OPT_fsanitize_recover = 910,
  OPT_fsanitize_recover_ = 911,
  OPT_fsanitize_sections_ = 912,
  OPT_fsanitize_undefined_trap_on_error = 913,
  OPT_fsanitize_ = 914,
  OPT_fsched_critical_path_heuristic = 915,
  OPT_fsched_dep_count_heuristic = 916,
  OPT_fsched_group_heuristic = 917,
  OPT_fsched_interblock = 918,
  OPT_fsched_last_insn_heuristic = 919,
  OPT_fsched_pressure = 920,
  OPT_fsched_rank_heuristic = 921,
  OPT_fsched_spec = 922,
  OPT_fsched_spec_insn_heuristic = 923,
  OPT_fsched_spec_load = 924,
  OPT_fsched_spec_load_dangerous = 925,
  OPT_fsched_stalled_insns = 926,
  OPT_fsched_stalled_insns_dep = 927,
  OPT_fsched_stalled_insns_dep_ = 928,
  OPT_fsched_stalled_insns_ = 929,
  OPT_fsched_verbose_ = 930,
  OPT_fsched2_use_superblocks = 931,

  OPT_fschedule_fusion = 933,
  OPT_fschedule_insns = 934,
  OPT_fschedule_insns2 = 935,
  OPT_fsecond_underscore = 936,
  OPT_fsection_anchors = 937,

  OPT_fsel_sched_pipelining = 939,
  OPT_fsel_sched_pipelining_outer_loops = 940,
  OPT_fsel_sched_reschedule_pipelined = 941,
  OPT_fselective_scheduling = 942,
  OPT_fselective_scheduling2 = 943,
  OPT_fself_test_ = 944,
  OPT_fsemantic_interposition = 945,
  OPT_fshort_enums = 946,
  OPT_fshort_wchar = 947,
  OPT_fshow_column = 948,
  OPT_fshrink_wrap = 949,
  OPT_fshrink_wrap_separate = 950,
  OPT_fsign_zero = 951,
  OPT_fsignaling_nans = 952,
  OPT_fsigned_bitfields = 953,
  OPT_fsigned_char = 954,
  OPT_fsigned_zeros = 955,
  OPT_fsimd_cost_model_ = 956,
  OPT_fsingle_precision_constant = 957,
  OPT_fsized_deallocation = 958,
  OPT_fsplit_ivs_in_unroller = 959,
  OPT_fsplit_loops = 960,
  OPT_fsplit_paths = 961,
  OPT_fsplit_stack = 962,
  OPT_fsplit_wide_types = 963,

  OPT_fssa_backprop = 965,
  OPT_fssa_phiopt = 966,
  OPT_fsso_struct_ = 967,
  OPT_fstack_arrays = 968,

  OPT_fstack_check_ = 970,
  OPT_fstack_limit = 971,
  OPT_fstack_limit_register_ = 972,
  OPT_fstack_limit_symbol_ = 973,
  OPT_fstack_protector = 974,
  OPT_fstack_protector_all = 975,
  OPT_fstack_protector_explicit = 976,
  OPT_fstack_protector_strong = 977,
  OPT_fstack_reuse_ = 978,
  OPT_fstack_usage = 979,
  OPT_fstats = 980,
  OPT_fstdarg_opt = 981,
  OPT_fstore_merging = 982,

  OPT_fstrict_aliasing = 984,
  OPT_fstrict_enums = 985,
  OPT_fstrict_overflow = 986,

  OPT_fstrict_volatile_bitfields = 988,

  OPT_fstrong_eval_order_ = 990,
  OPT_fsync_libcalls = 991,
  OPT_fsyntax_only = 992,
  OPT_ftabstop_ = 993,

  OPT_ftemplate_backtrace_limit_ = 995,

  OPT_ftemplate_depth_ = 997,
  OPT_ftest_coverage = 998,
  OPT_ftest_forall_temp = 999,

  OPT_fthread_jumps = 1001,
  OPT_fthreadsafe_statics = 1002,
  OPT_ftime_report = 1003,
  OPT_ftime_report_details = 1004,
  OPT_ftls_model_ = 1005,
  OPT_ftoplevel_reorder = 1006,
  OPT_ftracer = 1007,
  OPT_ftrack_macro_expansion = 1008,
  OPT_ftrack_macro_expansion_ = 1009,
  OPT_ftrampolines = 1010,
  OPT_ftrapping_math = 1011,
  OPT_ftrapv = 1012,
  OPT_ftree_bit_ccp = 1013,
  OPT_ftree_builtin_call_dce = 1014,
  OPT_ftree_ccp = 1015,
  OPT_ftree_ch = 1016,

  OPT_ftree_coalesce_vars = 1018,
  OPT_ftree_copy_prop = 1019,

  OPT_ftree_cselim = 1021,
  OPT_ftree_dce = 1022,
  OPT_ftree_dominator_opts = 1023,
  OPT_ftree_dse = 1024,
  OPT_ftree_forwprop = 1025,
  OPT_ftree_fre = 1026,
  OPT_ftree_loop_distribute_patterns = 1027,
  OPT_ftree_loop_distribution = 1028,
  OPT_ftree_loop_if_convert = 1029,

  OPT_ftree_loop_im = 1031,
  OPT_ftree_loop_ivcanon = 1032,

  OPT_ftree_loop_optimize = 1034,
  OPT_ftree_loop_vectorize = 1035,
  OPT_ftree_lrs = 1036,
  OPT_ftree_parallelize_loops_ = 1037,
  OPT_ftree_partial_pre = 1038,
  OPT_ftree_phiprop = 1039,
  OPT_ftree_pre = 1040,
  OPT_ftree_pta = 1041,
  OPT_ftree_reassoc = 1042,

  OPT_ftree_scev_cprop = 1044,
  OPT_ftree_sink = 1045,
  OPT_ftree_slp_vectorize = 1046,
  OPT_ftree_slsr = 1047,
  OPT_ftree_sra = 1048,


  OPT_ftree_switch_conversion = 1051,
  OPT_ftree_tail_merge = 1052,
  OPT_ftree_ter = 1053,

  OPT_ftree_vectorize = 1055,

  OPT_ftree_vrp = 1057,
  OPT_funconstrained_commons = 1058,
  OPT_funderscoring = 1059,
  OPT_funit_at_a_time = 1060,
  OPT_funroll_all_loops = 1061,
  OPT_funroll_loops = 1062,

  OPT_funsafe_math_optimizations = 1064,
  OPT_funsigned_bitfields = 1065,
  OPT_funsigned_char = 1066,
  OPT_funswitch_loops = 1067,
  OPT_funwind_tables = 1068,
  OPT_fuse_cxa_atexit = 1069,
  OPT_fuse_cxa_get_exception_ptr = 1070,
  OPT_fuse_ld_bfd = 1071,
  OPT_fuse_ld_gold = 1072,
  OPT_fuse_linker_plugin = 1073,
  OPT_fvar_tracking = 1074,
  OPT_fvar_tracking_assignments = 1075,
  OPT_fvar_tracking_assignments_toggle = 1076,
  OPT_fvar_tracking_uninit = 1077,
  OPT_fvariable_expansion_in_unroller = 1078,

  OPT_fvect_cost_model_ = 1080,
  OPT_fverbose_asm = 1081,

  OPT_fvisibility_inlines_hidden = 1083,
  OPT_fvisibility_ms_compat = 1084,
  OPT_fvisibility_ = 1085,
  OPT_fvpt = 1086,


  OPT_fvtable_verify_ = 1089,
  OPT_fvtv_counts = 1090,
  OPT_fvtv_debug = 1091,
  OPT_fweak = 1092,
  OPT_fweb = 1093,

  OPT_fwhole_program = 1095,
  OPT_fwide_exec_charset_ = 1096,
  OPT_fworking_directory = 1097,
  OPT_fwpa = 1098,
  OPT_fwpa_ = 1099,
  OPT_fwrapv = 1100,


  OPT_fzero_initialized_in_bss = 1103,
  OPT_fzero_link = 1104,
  OPT_g = 1105,
  OPT_gant = 1106,
  OPT_gcoff = 1107,
  OPT_gdwarf = 1108,
  OPT_gdwarf_ = 1109,
  OPT_gen_decls = 1110,
  OPT_ggdb = 1111,
  OPT_ggnu_pubnames = 1112,
  OPT_gnat = 1113,
  OPT_gnatO = 1114,
  OPT_gno_pubnames = 1115,
  OPT_gno_record_gcc_switches = 1116,
  OPT_gno_split_dwarf = 1117,
  OPT_gno_strict_dwarf = 1118,
  OPT_gpubnames = 1119,
  OPT_grecord_gcc_switches = 1120,
  OPT_gsplit_dwarf = 1121,
  OPT_gstabs = 1122,
  OPT_gstabs_ = 1123,
  OPT_gstrict_dwarf = 1124,
  OPT_gtoggle = 1125,
  OPT_gvms = 1126,
  OPT_gxcoff = 1127,
  OPT_gxcoff_ = 1128,
  OPT_gz = 1129,
  OPT_gz_ = 1130,
  OPT_h = 1131,
  OPT_idirafter = 1132,
  OPT_imacros = 1133,
  OPT_imultiarch = 1134,
  OPT_imultilib = 1135,
  OPT_include = 1136,
  OPT_iplugindir_ = 1137,
  OPT_iprefix = 1138,
  OPT_iquote = 1139,
  OPT_isysroot = 1140,
  OPT_isystem = 1141,
  OPT_iwithprefix = 1142,
  OPT_iwithprefixbefore = 1143,
  OPT_k8 = 1144,
  OPT_l = 1145,
  OPT_lang_asm = 1146,
  OPT_maddresses = 1147,
  OPT_malign_300 = 1148,
  OPT_mexr = 1149,
  OPT_mh = 1150,
  OPT_mint32 = 1151,
  OPT_mn = 1152,
  OPT_mno_exr = 1153,
  OPT_mquickcall = 1154,
  OPT_mrelax = 1155,
  OPT_ms = 1156,
  OPT_ms2600 = 1157,
  OPT_mslowbyte = 1158,
  OPT_msx = 1159,
  OPT_n = 1160,
  OPT_no_canonical_prefixes = 1161,
  OPT_no_integrated_cpp = 1162,
  OPT_no_pie = 1163,
  OPT_nocpp = 1164,
  OPT_nodefaultlibs = 1165,
  OPT_nostartfiles = 1166,
  OPT_nostdinc = 1167,
  OPT_nostdinc__ = 1168,
  OPT_nostdlib = 1169,
  OPT_o = 1170,
  OPT_p = 1171,
  OPT_pass_exit_codes = 1172,

  OPT_pedantic_errors = 1174,
  OPT_pg = 1175,
  OPT_pie = 1176,
  OPT_pipe = 1177,
  OPT_print_file_name_ = 1178,
  OPT_print_libgcc_file_name = 1179,
  OPT_print_multi_directory = 1180,
  OPT_print_multi_lib = 1181,
  OPT_print_multi_os_directory = 1182,
  OPT_print_multiarch = 1183,
  OPT_print_objc_runtime_info = 1184,
  OPT_print_prog_name_ = 1185,
  OPT_print_search_dirs = 1186,
  OPT_print_sysroot = 1187,
  OPT_print_sysroot_headers_suffix = 1188,
  OPT_quiet = 1189,
  OPT_r = 1190,
  OPT_remap = 1191,
  OPT_s = 1192,
  OPT_save_temps = 1193,
  OPT_save_temps_ = 1194,
  OPT_shared = 1195,
  OPT_shared_libgcc = 1196,

  OPT_specs_ = 1198,
  OPT_static = 1199,
  OPT_static_libasan = 1200,
  OPT_static_libgcc = 1201,
  OPT_static_libgfortran = 1202,
  OPT_static_libgo = 1203,
  OPT_static_liblsan = 1204,
  OPT_static_libmpx = 1205,
  OPT_static_libmpxwrappers = 1206,
  OPT_static_libstdc__ = 1207,
  OPT_static_libtsan = 1208,
  OPT_static_libubsan = 1209,


  OPT_std_c__11 = 1212,
  OPT_std_c__14 = 1213,


  OPT_std_c__1z = 1216,
  OPT_std_c__98 = 1217,
  OPT_std_c11 = 1218,


  OPT_std_c90 = 1221,
  OPT_std_c99 = 1222,

  OPT_std_f2003 = 1224,
  OPT_std_f2008 = 1225,
  OPT_std_f2008ts = 1226,
  OPT_std_f95 = 1227,
  OPT_std_gnu = 1228,


  OPT_std_gnu__11 = 1231,
  OPT_std_gnu__14 = 1232,


  OPT_std_gnu__1z = 1235,
  OPT_std_gnu__98 = 1236,
  OPT_std_gnu11 = 1237,


  OPT_std_gnu90 = 1240,
  OPT_std_gnu99 = 1241,


  OPT_std_iso9899_199409 = 1244,



  OPT_std_legacy = 1248,
  OPT_symbolic = 1249,
  OPT_t = 1250,
  OPT_time = 1251,
  OPT_time_ = 1252,
  OPT_traditional = 1253,
  OPT_traditional_cpp = 1254,
  OPT_trigraphs = 1255,
  OPT_u = 1256,
  OPT_undef = 1257,
  OPT_v = 1258,
  OPT_version = 1259,
  OPT_w = 1260,
  OPT_wrapper = 1261,
  OPT_x = 1262,
  OPT_z = 1263,
  N_OPTS,
  OPT_SPECIAL_unknown,
  OPT_SPECIAL_ignore,
  OPT_SPECIAL_program_name,
  OPT_SPECIAL_input_file
};
# 17 "../.././gcc/tm.h" 2
# 1 "../.././gcc/insn-constants.h" 1
# 18 "../.././gcc/tm.h" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/h8300/h8300.h" 1
# 31 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/h8300/h8300.h"
extern int cpu_type;



extern const char *h8_push_op, *h8_pop_op, *h8_mov_op;
extern const char * const *h8_reg_names;
# 314 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/h8300/h8300.h"
enum reg_class {
  NO_REGS, COUNTER_REGS, SOURCE_REGS, DESTINATION_REGS,
  GENERAL_REGS, MAC_REGS, ALL_REGS, LIM_REG_CLASSES
};
# 453 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/h8300/h8300.h"
struct cum_arg
{
  int nbytes;
  struct _dont_use_rtx_here_ * libcall;
};
# 781 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/h8300/h8300.h"
extern int h8300_move_ratio;
# 19 "../.././gcc/tm.h" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/dbxelf.h" 1
# 20 "../.././gcc/tm.h" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/elfos.h" 1
# 21 "../.././gcc/tm.h" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/newlib-stdint.h" 1
# 22 "../.././gcc/tm.h" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/h8300/elf.h" 1
# 23 "../.././gcc/tm.h" 2
# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/config/initfini-array.h" 1
# 24 "../.././gcc/tm.h" 2





# 1 "../.././gcc/insn-modes.h" 1






enum machine_mode
{
  VOIDmode,

  BLKmode,

  CCmode,

  BImode,

  QImode,

  HImode,

  SImode,

  DImode,

  TImode,

  QQmode,

  HQmode,

  SQmode,

  DQmode,

  TQmode,

  UQQmode,

  UHQmode,

  USQmode,

  UDQmode,

  UTQmode,

  HAmode,

  SAmode,

  DAmode,

  TAmode,

  UHAmode,

  USAmode,

  UDAmode,

  UTAmode,

  SFmode,

  DFmode,

  SDmode,

  DDmode,

  TDmode,

  CQImode,

  CHImode,

  CSImode,

  CDImode,

  CTImode,

  SCmode,

  DCmode,

  MAX_MACHINE_MODE,

  MIN_MODE_RANDOM = VOIDmode,
  MAX_MODE_RANDOM = BLKmode,

  MIN_MODE_CC = CCmode,
  MAX_MODE_CC = CCmode,

  MIN_MODE_INT = QImode,
  MAX_MODE_INT = TImode,

  MIN_MODE_PARTIAL_INT = VOIDmode,
  MAX_MODE_PARTIAL_INT = VOIDmode,

  MIN_MODE_POINTER_BOUNDS = VOIDmode,
  MAX_MODE_POINTER_BOUNDS = VOIDmode,

  MIN_MODE_FRACT = QQmode,
  MAX_MODE_FRACT = TQmode,

  MIN_MODE_UFRACT = UQQmode,
  MAX_MODE_UFRACT = UTQmode,

  MIN_MODE_ACCUM = HAmode,
  MAX_MODE_ACCUM = TAmode,

  MIN_MODE_UACCUM = UHAmode,
  MAX_MODE_UACCUM = UTAmode,

  MIN_MODE_FLOAT = SFmode,
  MAX_MODE_FLOAT = DFmode,

  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 = DCmode,

  MIN_MODE_VECTOR_INT = VOIDmode,
  MAX_MODE_VECTOR_INT = VOIDmode,

  MIN_MODE_VECTOR_FRACT = VOIDmode,
  MAX_MODE_VECTOR_FRACT = VOIDmode,

  MIN_MODE_VECTOR_UFRACT = VOIDmode,
  MAX_MODE_VECTOR_UFRACT = VOIDmode,

  MIN_MODE_VECTOR_ACCUM = VOIDmode,
  MAX_MODE_VECTOR_ACCUM = VOIDmode,

  MIN_MODE_VECTOR_UACCUM = VOIDmode,
  MAX_MODE_VECTOR_UACCUM = VOIDmode,

  MIN_MODE_VECTOR_FLOAT = VOIDmode,
  MAX_MODE_VECTOR_FLOAT = VOIDmode,

  NUM_MACHINE_MODES = MAX_MACHINE_MODE
};
# 30 "../.././gcc/tm.h" 2




# 1 "/home/gcc/GIT-2/gcc/libgcc/../gcc/defaults.h" 1
# 35 "../.././gcc/tm.h" 2
# 30 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c" 2
# 1 "./libgcc_tm.h" 1



# 1 "/home/gcc/GIT-2/gcc/libgcc/config/h8300/h8300-lib.h" 1
# 5 "./libgcc_tm.h" 2
# 31 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c" 2
# 56 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c"
# 1 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h" 1
# 32 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
extern void __clear_cache (char *, char *);
extern void __eprintf (const char *, const char *, unsigned int, const char *)
  __attribute__ ((__noreturn__));
# 122 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
typedef int QItype __attribute__ ((mode (QI)));
typedef unsigned int UQItype __attribute__ ((mode (QI)));
typedef int HItype __attribute__ ((mode (HI)));
typedef unsigned int UHItype __attribute__ ((mode (HI)));


typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));


typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));
# 147 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
typedef float SFtype __attribute__ ((mode (SF)));
typedef _Complex float SCtype __attribute__ ((mode (SC)));
# 163 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
typedef int cmp_return_type __attribute__((mode (__libgcc_cmp_return__)));
typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__)));
# 375 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
extern DItype __muldi3 (DItype, DItype);
extern DItype __divdi3 (DItype, DItype);
extern UDItype __udivdi3 (UDItype, UDItype);
extern UDItype __umoddi3 (UDItype, UDItype);
extern DItype __moddi3 (DItype, DItype);
extern DItype __divmoddi4 (DItype, DItype, DItype *);





extern UDItype __udivmoddi4 (UDItype, UDItype, UDItype *);




extern DItype __negdi2 (DItype);


extern DItype __lshrdi3 (DItype, shift_count_type);
extern DItype __ashldi3 (DItype, shift_count_type);
extern DItype __ashrdi3 (DItype, shift_count_type);




extern USItype __udiv_w_sdiv (USItype *, USItype, USItype, USItype);


extern cmp_return_type __cmpdi2 (DItype, DItype);
extern cmp_return_type __ucmpdi2 (DItype, DItype);


extern SItype __bswapsi2 (SItype);


extern DItype __bswapdi2 (DItype);


extern SItype __absvsi2 (SItype);
extern SItype __addvsi3 (SItype, SItype);
extern SItype __subvsi3 (SItype, SItype);
extern SItype __mulvsi3 (SItype, SItype);
extern SItype __negvsi2 (SItype);
extern DItype __absvdi2 (DItype);
extern DItype __addvdi3 (DItype, DItype);
extern DItype __subvdi3 (DItype, DItype);
extern DItype __mulvdi3 (DItype, DItype);
extern DItype __negvdi2 (DItype);
# 445 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
extern DItype __fixsfdi (SFtype);
extern SFtype __floatdisf (DItype);
extern SFtype __floatundisf (UDItype);
extern USItype __fixunssfsi (SFtype);
extern UDItype __fixunssfdi (SFtype);
extern SFtype __powisf2 (SFtype, int);
extern SCtype __divsc3 (SFtype, SFtype, SFtype, SFtype);
extern SCtype __mulsc3 (SFtype, SFtype, SFtype, SFtype);
# 491 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
  struct DWstruct {SItype high, low;};
# 500 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h"
typedef union
{
  struct DWstruct s;
  DItype ll;
} DWunion;



extern const UQItype __popcount_tab[256];





extern const UQItype __clz_tab[256];

# 1 "/home/gcc/GIT-2/gcc/libgcc/../include/longlong.h" 1
# 60 "/home/gcc/GIT-2/gcc/libgcc/../include/longlong.h"
extern const UQItype __clz_tab[256] ;
# 517 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.h" 2


extern int __clzdi2 (UDItype);
extern int __clzsi2 (USItype);
extern int __ctzsi2 (USItype);
extern int __ctzdi2 (UDItype);
extern int __clrsbsi2 (SItype);
extern int __clrsbdi2 (DItype);
extern int __ffssi2 (USItype);
extern int __ffsdi2 (DItype);
extern int __popcountsi2 (USItype);
extern int __popcountdi2 (UDItype);
extern int __paritysi2 (USItype);
extern int __paritydi2 (UDItype);


extern void __enable_execute_stack (void *);
# 57 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c" 2
# 402 "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c"
DItype
__lshrdi3 (DItype u, shift_count_type b)
{
  if (b == 0)
    return u;

  const DWunion uu = {.ll = u};
  const shift_count_type bm = (4 * 8) - b;
  DWunion w;

  if (bm <= 0)
    {
      w.s.high = 0;
      w.s.low = (USItype) uu.s.high >> -bm;
    }
  else
    {
      const USItype carries = (USItype) uu.s.high << bm;

      w.s.high = (USItype) uu.s.high >> b;
      w.s.low = ((USItype) uu.s.low >> b) | carries;
    }

  return w.ll;
}

Comments

Vladimir Makarov Feb. 14, 2017, 4:37 p.m. UTC | #1
On 02/14/2017 01:30 AM, Jeff Law wrote:
>
> So imagine we have two allocnos related by a copy chain (two operand 
> architecture).
>
> (gdb) p *cp->first
> $11 = {num = 9, regno = 33, mode = DImode, wmode = DImode, aclass = 
> GENERAL_REGS, dont_reassign_p = 0,
>   bad_spill_p = 0, assigned_p = 1, conflict_vec_p = 0, hard_regno = 
> -1, next_regno_allocno = 0x0,
>   loop_tree_node = 0x1e0b190, nrefs = 13, freq = 8069, class_cost = 
> 1380, updated_class_cost = 1380,
>   memory_cost = 29656, updated_memory_cost = 29656, 
> excess_pressure_points_num = 17, allocno_prefs = 0x0,
>   allocno_copies = 0x1e4b400, cap = 0x0, cap_member = 0x0, num_objects 
> = 1, objects = {0x1e8b6a0, 0x0},
>   call_freq = 0, calls_crossed_num = 0, cheap_calls_crossed_num = 0, 
> crossed_calls_clobbered_regs = 0,
>   hard_reg_costs = 0x1da9510, updated_hard_reg_costs = 0x0, 
> conflict_hard_reg_costs = 0x0,
>   updated_conflict_hard_reg_costs = 0x0, add_data = 0x1e04378}
>
> (gdb) p *cp->second
> $12 = {num = 12, regno = 39, mode = SImode, wmode = SImode, aclass = 
> GENERAL_REGS, dont_reassign_p = 0,
>   bad_spill_p = 1, assigned_p = 1, conflict_vec_p = 0, hard_regno = 2, 
> next_regno_allocno = 0x0,
>   loop_tree_node = 0x1e0b190, nrefs = 2, freq = 388, class_cost = 0, 
> updated_class_cost = 0, memory_cost = 1552,
>   updated_memory_cost = 1552, excess_pressure_points_num = 0, 
> allocno_prefs = 0x0, allocno_copies = 0x1e4b400,
>   cap = 0x0, cap_member = 0x0, num_objects = 2, objects = {0x1e8b7e0, 
> 0x1e8b830}, call_freq = 0,
>   calls_crossed_num = 0, cheap_calls_crossed_num = 0, 
> crossed_calls_clobbered_regs = 0,
>   hard_reg_costs = 0x1da9550, updated_hard_reg_costs = 0x0, 
> conflict_hard_reg_costs = 0x0,
>   updated_conflict_hard_reg_costs = 0x0, add_data = 0x1e04480}
>
>
> Note how cp->first is mode DImode.
>
> Now assume that all the real uses of cp->first occur as SUBREG 
> expressions.  But there is a DImode clobber of cp->first.  Like this:
>
>
> (insn 7 2 3 2 (clobber (reg/v:DI 33 [ u ])) 
> "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":404 -1
>      (nil))
> (insn 3 7 4 2 (set (subreg:HI (reg/v:DI 33 [ u ]) 0)
>         (mem/c:HI (reg/f:HI 9 ap) [4 u+0 S2 A16])) 
> "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":404 5 {*movhi_h8300}
>      (nil))
> (insn 4 3 5 2 (set (subreg:HI (reg/v:DI 33 [ u ]) 2)
>         (mem/c:HI (plus:HI (reg/f:HI 9 ap)
>                 (const_int 2 [0x2])) [4 u+2 S2 A16])) 
> "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":404 5 {*movhi_h8300}
>      (nil))
> [ ... ]
> (insn 35 32 37 5 (parallel [
>             (set (reg:SI 39 [ _32 ])
>                 (lshiftrt:SI (subreg:SI (reg/v:DI 33 [ u ]) 0)
>                     (subreg:QI (reg:HI 38) 1)))
>             (clobber (scratch:QI))
>         ]) "/home/gcc/GIT-2/gcc/libgcc/libgcc2.c":415 229 {*shiftsi}
>      (expr_list:REG_DEAD (reg:HI 38)
>         (expr_list:REG_DEAD (reg/v:DI 33 [ u ])
>             (expr_list:REG_EQUIV (mem/j/c:SI (plus:HI (reg/f:HI 11 fp)
>                         (const_int -4 [0xfffffffffffffffc])) [1 
> w.s.low+0 S4 A16])
>                 (nil)))))
>
> There's other references to (reg 33), but again, they all use subregs. 
> The only real DImode reference to (reg 33) is in the clobber.  And 
> remember that (reg 33) is involved in a copy chain.
>
>
> So we'll eventually call allocno_copy_cost_saving and try to compute a 
> cost savings using:
>
> 2764          cost += cp->freq * 
> ira_register_move_cost[allocno_mode][rclass][rclass];
>
> But ira_register_move_cost[DImode] is NULL -- it's never been 
> initialized, presumably because we never see a real DImode reference 
> to anything except in CLOBBER statements.
>
> We can fix this in scan_one_insn via the attached patch.  I'm not sure 
> if this is the best place to catch this or not.
>
> I haven't included a testcase as this trips just building libgcc on 
> the H8 target.  I could easily reduce it if folks think its worth the 
> trouble.
>
> I've verified this allows libgcc to build on the H8 target and 
> bootstrapped/regression tested the change on x86_64-unknown-linux-gnu 
> as well.
>
> Vlad, is this OK for the trunk, or should we be catching this elsewhere?
There is no harm to put this fix.  We could check initialization at 
every usage but it will be a big impact on IRA's speed. Another place 
would be at the beginning of find_costs_and_classes in the following loop:

   for (i = max_reg_num () - 1; i >= FIRST_PSEUDO_REGISTER; i--)
     regno_best_class[i] = NO_REGS;

Still your place will save CPU cycles most probably.

So the patch is ok for me.  Thank you, Jeff.
Gerald Pfeifer Feb. 15, 2017, 7:42 p.m. UTC | #2
Hi Jeff,

On Mon, 13 Feb 2017, Jeff Law wrote:
> I've verified this allows libgcc to build on the H8 target and
> bootstrapped/regression tested the change on x86_64-unknown-linux-gnu as well.

I need to reproduce this, but my latest daily bootstrap on
i386-unknown-freebsd10.3 failed with...

 .../gerald/gcc-HEAD/libquadmath/math/remainderq.c: In function 'remainderq':
 .../gerald/gcc-HEAD/libquadmath/math/remainderq.c:67:1: internal compiler error: in ira_init_register_move_cost, at ira.c:1580

...and your message was the only one on gcc-patches the last couple
of days that contains the string "ira_init_register_move_cost".

Not sure yet that it's your patch, but this looks a little bit like 
a smoking gun... :-)

Gerald
Jeff Law Feb. 15, 2017, 8:04 p.m. UTC | #3
On 02/15/2017 12:42 PM, Gerald Pfeifer wrote:
> Hi Jeff,
>
> On Mon, 13 Feb 2017, Jeff Law wrote:
>> I've verified this allows libgcc to build on the H8 target and
>> bootstrapped/regression tested the change on x86_64-unknown-linux-gnu
>> as well.
>
> I need to reproduce this, but my latest daily bootstrap on
> i386-unknown-freebsd10.3 failed with...
>
> .../gerald/gcc-HEAD/libquadmath/math/remainderq.c: In function
> 'remainderq':
> .../gerald/gcc-HEAD/libquadmath/math/remainderq.c:67:1: internal
> compiler error: in ira_init_register_move_cost, at ira.c:1580
>
> ...and your message was the only one on gcc-patches the last couple
> of days that contains the string "ira_init_register_move_cost".
>
> Not sure yet that it's your patch, but this looks a little bit like a
> smoking gun... :-)
Already testing a fix.

jeff
Gerald Pfeifer Feb. 16, 2017, 7:44 p.m. UTC | #4
On Wed, 15 Feb 2017, Jeff Law wrote:
>> .../gerald/gcc-HEAD/libquadmath/math/remainderq.c:67:1: internal
>> compiler error: in ira_init_register_move_cost, at ira.c:1580
> Already testing a fix.

Thanks, Jeff.  Just to confirm that things are back to bootstrap 
land.

Gerald
diff mbox

Patch

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f352051..2170e57 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@ 
+2017-02-13 Jeff Law  <law@redhat.com>
+
+	PR target/79404
+	* ira-costs.c (scan_one_insn): Initialize register move costs
+	for pseudos seen in USE/CLOBBER insns.
+
 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
 
 	PR target/79449
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index c561db6..1737430 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1438,9 +1438,25 @@  scan_one_insn (rtx_insn *insn)
     return insn;
 
   pat_code = GET_CODE (PATTERN (insn));
-  if (pat_code == USE || pat_code == CLOBBER || pat_code == ASM_INPUT)
+  if (pat_code == ASM_INPUT)
     return insn;
 
+  /* If INSN is a USE/CLOBBER of a pseudo in a mode M then go ahead
+     and initialize the register move costs of mode M.
+
+     The pseudo may be related to another pseudo via a copy (implicit or
+     explicit) and if there are no mode M uses/sets of the original
+     pseudo, then we may leave the register move costs uninitialized for
+     mode M. */
+  if (pat_code == USE || pat_code == CLOBBER)
+    {
+      rtx x = XEXP (PATTERN (insn), 0);
+      if (GET_CODE (x) == REG
+	  && REGNO (x) >= FIRST_PSEUDO_REGISTER)
+        ira_init_register_move_cost_if_necessary (GET_MODE (x));
+      return insn;
+    }
+
   counted_mem = false;
   set = single_set (insn);
   extract_insn (insn);