<|start_filename|>testdata/issue57.c<|end_filename|>
typedef int bool_t;

typedef bool_t (*bool_func) (void);
typedef bool_func func1;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20150108.c<|end_filename|>
long long a[10];
long long b, c, d, k, m, n, o, p, q, r, s, t, u, v, w;
int e, f, g, h, i, j, l, x;

int fn1 () {
  for (; x; x++)
    if (x & 1)
      s = h | g;
    else
      s = f | e;
  l = ~0;
  m = 1 | k;
  n = i;
  o = j;
  p = f | e;
  q = h | g;
  w = d | c | a[1];
  t = c;
  v = b | c;
  u = v;
  r = b | a[4];
  return e;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40321.c<|end_filename|>
struct X { int flag; int pos; };
int foo(struct X *a, struct X *b)
{
  while (1)
    {
      if (a->flag)
	break;
      ({ struct X *tmp = a; a = b; b = tmp; });
    }

  return a->pos + b->pos;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42716.c<|end_filename|>
static short foo (long long si1, short si2)
{
  return si1 > 0 && si2 > 0 || si1 < 0
      && si2 < 0 && si1 < 1 - si2 ? : si1 + si2;
}

int g_13;
unsigned g_17;

int safe (int, int);

void bar (short p_51, short * p_52)
{
  int *const l_55 = &g_13;
  if (safe (*p_52, g_13 != foo (*p_52 & *l_55 == g_13 && g_17 >= 1, 0)))
    {
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41181.c<|end_filename|>
/* { dg-require-effective-target ptr32plus } */
/* { dg-skip-if "The array is too big" { "avr-*-*" "pdp11-*-*" } { "*" } { "" } } */ 
char paths[1024];
static void x264_slicetype_path(char (*best_paths)[250], int n, int length)
{
    __builtin_memcpy (best_paths[n], paths, length);
}
void x264_slicetype_analyse(int n, int length)
{
    char best_paths[250][250];
    x264_slicetype_path (best_paths, n, length);
}


<|start_filename|>v2/headers/linux_arm/usr/include/dirent.h<|end_filename|>
/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 *	POSIX Standard: 5.1.2 Directory Operations	<dirent.h>
 */

#ifndef	_DIRENT_H
#define	_DIRENT_H	1

#include <features.h>

__BEGIN_DECLS
#include <bits/types.h>
#ifdef __USE_XOPEN
#ifndef __ino_t_defined
#ifndef __USE_FILE_OFFSET64
typedef __ino_t ino_t;
#else
typedef __ino64_t ino_t;
#endif
#define __ino_t_defined
#endif
#if defined __USE_LARGEFILE64 && !defined __ino64_t_defined
typedef __ino64_t ino64_t;
#define __ino64_t_defined
#endif
#endif

/* This file defines `struct dirent'.

   It defines the macro `_DIRENT_HAVE_D_NAMLEN' iff there is a `d_namlen'
   member that gives the length of `d_name'.

   It defines the macro `_DIRENT_HAVE_D_RECLEN' iff there is a `d_reclen'
   member that gives the size of the entire directory entry.

   It defines the macro `_DIRENT_HAVE_D_OFF' iff there is a `d_off'
   member that gives the file offset of the next directory entry.

   It defines the macro `_DIRENT_HAVE_D_TYPE' iff there is a `d_type'
   member that gives the type of the file.
 */

#include <bits/dirent.h>

#if defined __USE_MISC && !defined d_fileno
#define d_ino	d_fileno	/* Backward compatibility.  */
#endif

/* These macros extract size information from a `struct dirent *'.
   They may evaluate their argument multiple times, so it must not
   have side effects.  Each of these may involve a relatively costly
   call to `strlen' on some systems, so these values should be cached.

   _D_EXACT_NAMLEN (DP)	returns the length of DP->d_name, not including
   its terminating null character.

   _D_ALLOC_NAMLEN (DP)	returns a size at least (_D_EXACT_NAMLEN (DP) + 1);
   that is, the allocation size needed to hold the DP->d_name string.
   Use this macro when you don't need the exact length, just an upper bound.
   This macro is less likely to require calling `strlen' than _D_EXACT_NAMLEN.
   */

#ifdef _DIRENT_HAVE_D_NAMLEN
#define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
#define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1)
#else
#define _D_EXACT_NAMLEN(d) (strlen ((d)->d_name))
#ifdef _DIRENT_HAVE_D_RECLEN
#define _D_ALLOC_NAMLEN(d) (((char *) (d) + (d)->d_reclen) - &(d)->d_name[0])
#else
#define _D_ALLOC_NAMLEN(d) (sizeof (d)->d_name > 1 ? sizeof (d)->d_name : \
			      _D_EXACT_NAMLEN (d) + 1)
#endif
#endif

#ifdef __USE_MISC
/* File types for `d_type'.  */
enum {
	DT_UNKNOWN = 0,
#define DT_UNKNOWN	DT_UNKNOWN
	DT_FIFO = 1,
#define DT_FIFO	DT_FIFO
	DT_CHR = 2,
#define DT_CHR		DT_CHR
	DT_DIR = 4,
#define DT_DIR		DT_DIR
	DT_BLK = 6,
#define DT_BLK		DT_BLK
	DT_REG = 8,
#define DT_REG		DT_REG
	DT_LNK = 10,
#define DT_LNK		DT_LNK
	DT_SOCK = 12,
#define DT_SOCK	DT_SOCK
	DT_WHT = 14
#define DT_WHT		DT_WHT
};

/* Convert between stat structure types and directory types.  */
#define IFTODT(mode)	(((mode) & 0170000) >> 12)
#define DTTOIF(dirtype)	((dirtype) << 12)
#endif

/* This is the data type of directory stream objects.
   The actual structure is opaque to users.  */
typedef struct __dirstream DIR;

/* Open a directory stream on NAME.
   Return a DIR stream on the directory, or NULL if it could not be opened.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern DIR *opendir(const char *__name) __nonnull((1));

#ifdef __USE_XOPEN2K8
/* Same as opendir, but open the stream on the file descriptor FD.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern DIR *fdopendir(int __fd);
#endif

/* Close the directory stream DIRP.
   Return 0 if successful, -1 if not.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int closedir(DIR * __dirp) __nonnull((1));

/* Read a directory entry from DIRP.  Return a pointer to a `struct
   dirent' describing the entry, or NULL for EOF or error.  The
   storage returned may be overwritten by a later readdir call on the
   same DIR stream.

   If the Large File Support API is selected we have to use the
   appropriate interface.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
#ifndef __USE_FILE_OFFSET64
extern struct dirent *readdir(DIR * __dirp) __nonnull((1));
#else
#ifdef __REDIRECT
extern struct dirent *__REDIRECT(readdir, (DIR * __dirp), readdir64) __nonnull((1));
#else
#define readdir readdir64
#endif
#endif

#ifdef __USE_LARGEFILE64
extern struct dirent64 *readdir64(DIR * __dirp) __nonnull((1));
#endif

#ifdef __USE_POSIX
/* Reentrant version of `readdir'.  Return in RESULT a pointer to the
   next entry.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
#ifndef __USE_FILE_OFFSET64
extern int readdir_r(DIR * __restrict __dirp, struct dirent *__restrict __entry, struct dirent **__restrict __result) __nonnull((1, 2, 3)) __attribute_deprecated__;
#else
#ifdef __REDIRECT
extern int __REDIRECT(readdir_r, (DIR * __restrict __dirp, struct dirent * __restrict __entry, struct dirent ** __restrict __result), readdir64_r) __nonnull((1, 2, 3)) __attribute_deprecated__;
#else
#define readdir_r readdir64_r
#endif
#endif

#ifdef __USE_LARGEFILE64
extern int readdir64_r(DIR * __restrict __dirp, struct dirent64 *__restrict __entry, struct dirent64 **__restrict __result) __nonnull((1, 2, 3)) __attribute_deprecated__;
#endif
#endif				/* POSIX or misc */

/* Rewind DIRP to the beginning of the directory.  */
extern void rewinddir(DIR * __dirp)
__THROW __nonnull((1));

#if defined __USE_MISC || defined __USE_XOPEN
#include <bits/types.h>

/* Seek to position POS on DIRP.  */
extern void seekdir(DIR * __dirp, long int __pos)
__THROW __nonnull((1));

/* Return the current position of DIRP.  */
extern long int telldir(DIR * __dirp)
__THROW __nonnull((1));
#endif

#ifdef __USE_XOPEN2K8

/* Return the file descriptor used by DIRP.  */
extern int dirfd(DIR * __dirp)
__THROW __nonnull((1));

#if defined __OPTIMIZE__ && defined _DIR_dirfd
#define dirfd(dirp)	_DIR_dirfd (dirp)
#endif

#ifdef __USE_MISC
#ifndef MAXNAMLEN
/* Get the definitions of the POSIX.1 limits.  */
#include <bits/posix1_lim.h>

/* `MAXNAMLEN' is the BSD name for what POSIX calls `NAME_MAX'.  */
#ifdef NAME_MAX
#define MAXNAMLEN	NAME_MAX
#else
#define MAXNAMLEN	255
#endif
#endif
#endif

#define __need_size_t
#include <stddef.h>

/* Scan the directory DIR, calling SELECTOR on each directory entry.
   Entries for which SELECT returns nonzero are individually malloc'd,
   sorted using qsort with CMP, and collected in a malloc'd array in
   *NAMELIST.  Returns the number of entries selected, or -1 on error.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
#ifndef __USE_FILE_OFFSET64
extern int scandir(const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)) __nonnull((1, 2));
#else
#ifdef __REDIRECT
extern int __REDIRECT(scandir, (const char *__restrict __dir, struct dirent *** __restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)), scandir64) __nonnull((1, 2));
#else
#define scandir scandir64
#endif
#endif

#if defined __USE_GNU && defined __USE_LARGEFILE64
/* This function is like `scandir' but it uses the 64bit dirent structure.
   Please note that the CMP function must now work with struct dirent64 **.  */
extern int scandir64(const char *__restrict __dir, struct dirent64 ***__restrict __namelist, int (*__selector) (const struct dirent64 *), int (*__cmp) (const struct dirent64 **, const struct dirent64 **)) __nonnull((1, 2));
#endif

#ifdef __USE_GNU
/* Similar to `scandir' but a relative DIR name is interpreted relative
   to the directory for which DFD is a descriptor.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
#ifndef __USE_FILE_OFFSET64
extern int scandirat(int __dfd, const char *__restrict __dir, struct dirent ***__restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)) __nonnull((2, 3));
#else
#ifdef __REDIRECT
extern int __REDIRECT(scandirat, (int __dfd, const char *__restrict __dir, struct dirent *** __restrict __namelist, int (*__selector) (const struct dirent *), int (*__cmp) (const struct dirent **, const struct dirent **)), scandirat64) __nonnull((2, 3));
#else
#define scandirat scandirat64
#endif
#endif

/* This function is like `scandir' but it uses the 64bit dirent structure.
   Please note that the CMP function must now work with struct dirent64 **.  */
extern int scandirat64(int __dfd, const char *__restrict __dir, struct dirent64 ***__restrict __namelist, int (*__selector) (const struct dirent64 *), int (*__cmp) (const struct dirent64 **, const struct dirent64 **)) __nonnull((2, 3));
#endif

/* Function to compare two `struct dirent's alphabetically.  */
#ifndef __USE_FILE_OFFSET64
extern int alphasort(const struct dirent **__e1, const struct dirent **__e2)
__THROW __attribute_pure__ __nonnull((1, 2));
#else
#ifdef __REDIRECT
extern int __REDIRECT_NTH(alphasort, (const struct dirent ** __e1, const struct dirent ** __e2), alphasort64)
__attribute_pure__ __nonnull((1, 2));
#else
#define alphasort alphasort64
#endif
#endif

#if defined __USE_GNU && defined __USE_LARGEFILE64
extern int alphasort64(const struct dirent64 **__e1, const struct dirent64 **__e2)
__THROW __attribute_pure__ __nonnull((1, 2));
#endif
#endif				/* Use XPG7.  */

#ifdef __USE_MISC
/* Read directory entries from FD into BUF, reading at most NBYTES.
   Reading starts at offset *BASEP, and *BASEP is updated with the new
   position after reading.  Returns the number of bytes read; zero when at
   end of directory; or -1 for errors.  */
#ifndef __USE_FILE_OFFSET64
extern __ssize_t getdirentries(int __fd, char *__restrict __buf, size_t __nbytes, __off_t * __restrict __basep)
__THROW __nonnull((2, 4));
#else
#ifdef __REDIRECT
extern __ssize_t __REDIRECT_NTH(getdirentries, (int __fd, char *__restrict __buf, size_t __nbytes, __off64_t * __restrict __basep), getdirentries64) __nonnull((2, 4));
#else
#define getdirentries getdirentries64
#endif
#endif

#ifdef __USE_LARGEFILE64
extern __ssize_t getdirentries64(int __fd, char *__restrict __buf, size_t __nbytes, __off64_t * __restrict __basep)
__THROW __nonnull((2, 4));
#endif
#endif				/* Use misc.  */

#ifdef __USE_GNU
/* Function to compare two `struct dirent's by name & version.  */
#ifndef __USE_FILE_OFFSET64
extern int versionsort(const struct dirent **__e1, const struct dirent **__e2)
__THROW __attribute_pure__ __nonnull((1, 2));
#else
#ifdef __REDIRECT
extern int __REDIRECT_NTH(versionsort, (const struct dirent ** __e1, const struct dirent ** __e2), versionsort64)
__attribute_pure__ __nonnull((1, 2));
#else
#define versionsort versionsort64
#endif
#endif

#ifdef __USE_LARGEFILE64
extern int versionsort64(const struct dirent64 **__e1, const struct dirent64 **__e2)
__THROW __attribute_pure__ __nonnull((1, 2));
#endif
#endif				/* Use GNU.  */

__END_DECLS
#endif				/* dirent.h  */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/pr66556.c<|end_filename|>
/* { dg-do run } */

extern void abort (void);

struct {
  unsigned f2;
  unsigned f3 : 15;
  unsigned f5 : 3;
  short f6;
} b = {0x7f8000, 6, 5, 0}, g = {8, 0, 5, 0};

short d, l;
int a, c, h = 8;
volatile char e[237] = {4};
short *f = &d;
short i[5] = {3};
char j;
int *k = &c;

int
fn1 (unsigned p1) { return -p1; }

void
fn2 (char p1)
{
  a = p1;
  e[0];
}

short
fn3 ()
{
  *k = 4;
  return *f;
}

int
main ()
{

  unsigned m;
  short *n = &i[4];

  m = fn1 ((h && j) <= b.f5);
  l = m > g.f3;
  *n = 3;
  fn2 (b.f2 >> 15);
  if ((a & 0xff) != 0xff)
    abort ();

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070129.c<|end_filename|>
/* This testcase would cause a hang in PTA solving due to a complex copy
   constraint and marking the wrong variable as changed.  */

typedef struct RExC_state_t
{
 char *end;
 char *parse;
} RExC_state_t;

struct regnode_string
{
 unsigned char str_len;
 char string[1];
};

static void *regatom (RExC_state_t * pRExC_state, int *flagp);

static void *
regpiece (RExC_state_t * pRExC_state, int *flagp)
{
 return regatom (0, 0);
}

static void *
regbranch (RExC_state_t * pRExC_state, int *flagp, int first)
{
 return regpiece (0, 0);
}

static void *
reg (RExC_state_t * pRExC_state, int paren, int *flagp)
{
 return regbranch (0, 0, 1);
}

void *
Perl_pregcomp (char *exp, char *xend, void *pm)
{
 return reg (0, 0, 0);
}

static void *
regatom (RExC_state_t * pRExC_state, int *flagp)
{
 register void *ret = 0;
 int flags;

tryagain:
 switch (*(pRExC_state->parse))
   {
   case '(':
     ret = reg (pRExC_state, 1, &flags);
     if (flags & 0x8)
       {
         goto tryagain;
       }
     break;
   default:
 {
       register unsigned long len;
       register unsigned ender;
       register char *p;
       char *oldp, *s;
       unsigned long numlen;
       unsigned long foldlen;
       unsigned char tmpbuf[6 + 1], *foldbuf;

     defchar:
       s = (((struct regnode_string *) ret)->string);
       for (len = 0, p = (pRExC_state->parse) - 1;
            len < 127 && p < (pRExC_state->end); len++)
         {
           if (((*p) == '*' || (*p) == '+' || (*p) == '?'
                || ((*p) == '{' && regcurly (p))))
             {
               unsigned long unilen;
               for (foldbuf = tmpbuf; foldlen; foldlen -= numlen)
                 {
                   reguni (pRExC_state, ender, s, &unilen);
                   s += unilen;
                 }
               break;
             }
           unsigned long unilen;

           reguni (pRExC_state, ender, s, &unilen);
           s += unilen;
         }

     };
     break;
   }
 return (ret);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr50565-1.c<|end_filename|>
struct s { char p[2]; };
static struct s v;
const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0U;
const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1U;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44946.c<|end_filename|>
struct A
{
  int i;
  long l;
};

struct B
{
  int i;
};

struct C
{
  int i;
  struct B b;
};

struct B foo (struct A a)
{
  struct C *c = (struct C *) &a;
  return c->b;
}
void bar (struct A a, struct B b)
{
  struct C *c = (struct C *) &a;
  c->b = b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41728.c<|end_filename|>
int a[8];
int s244(void)
{
  int lrc, j;
  lrc = 0;
  for (j=0; j<7; j++)
    if(a[j] != a[j+1])
      lrc = 1;
  if (lrc != 0)
    return 0;
  return 1;
}


<|start_filename|>v2/testdata/bug/13.c<|end_filename|>
#include <assert.h>

typedef struct _OVERLAPPED {
	int Internal;
	int InternalHigh;
	union {
		struct {
			int Offset;
			int OffsetHigh;
		};
		void *Pointer;
	};
	unsigned hEvent;
} OVERLAPPED;

OVERLAPPED test;
OVERLAPPED test2;

int main() {
	OVERLAPPED test3, test4;
	OVERLAPPED *p = &test2, *q = &test4;
	test.Offset = 42;
	p->Offset = 43;
	test3.Offset = 44;
	q->Offset = 45;
	assert(test.Offset == 42);
	assert(p->Offset == 43);
	assert(test3.Offset == 44);
	assert(q->Offset == 45);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/strcpy-1.c<|end_filename|>


typedef struct
{
  char str[20];
}STACK;
STACK stack[15];
int level;
rezero ()
{
  level = 0;
  __builtin_strcpy (stack[level].str, "");
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050303-1.c<|end_filename|>
/* { dg-require-effective-target int32plus } */
/* { dg-require-effective-target size32plus } */

void crc()
{
    int  toread;
    long long nleft;
    unsigned char buf[(128 * 1024)];

    nleft = 0;
    while (toread = (nleft < (2147483647 * 2U + 1U)) ? nleft: (2147483647 * 2U + 1U) )
	;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr13066-1.c<|end_filename|>
void *g, *c;
int a, b;

int f()
{
  if ((0 == a) != (b || g == c))
    return 1;
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/inline-1.c<|end_filename|>
typedef __builtin_va_list va_list;

extern void foo (va_list);

static void
build_message_string (const char *msg, ...)
{
  va_list ap;

  __builtin_va_start (ap, msg);
  foo (ap);
  __builtin_va_end (ap);
}

void
file_name_as_prefix (f)
     const char *f;
{
  build_message_string ("%s: ", f);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030319-1.c<|end_filename|>
/* PR 10073 */
typedef struct
{
  unsigned short digits[4];
} INT_64;

INT_64 int_64_com (INT_64 a)
{
  a.digits[0] ^= 0xFFFF;
  a.digits[1] ^= 0xFFFF;
  a.digits[2] ^= 0xFFFF;
  a.digits[3] ^= 0xFFFF;
  return a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080929-1.c<|end_filename|>
struct option {
  const char *name;
  int has_arg;
  int *flag;
  int val;
};
enum {
  UBI_DYNAMIC_VOLUME = 3,  UBI_STATIC_VOLUME = 4, };
typedef void * libubi_t;
struct ubi_dev_info {
  int leb_size;
};
struct args {
  int vol_id;
  int vol_type;
  long long bytes;
  int lebs;
  int alignment;
  const char *node;
  int maxavs;
  int devn;
};
static struct args args = {
  .vol_type = UBI_DYNAMIC_VOLUME,  .bytes = -1,  .lebs = -1,  .alignment = 1,  .vol_id = (-1),  .devn = -1, };
extern libubi_t libubi_open (int);
extern int ubi_get_dev_info (libubi_t, const char *, struct ubi_dev_info *);
int main(int argc, char * const argv[]) {
  int err;
  libubi_t libubi;
  struct ubi_dev_info dev_info;
  libubi = libubi_open(1);
  if (!libubi)
    return 0;
  err = ubi_get_dev_info(libubi, args.node, &dev_info);
  if (args.maxavs) {
    args.bytes = dev_info.leb_size;
  }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39423-1.c<|end_filename|>
/* PR target/39423 */
/* { dg-skip-if "ptxas times out" { nvptx-*-* } { "-O2" } { "" } } */

int
foo (const char *name, int nmlen, char *flags)
{
  const char *nonspc;
  int len, n, lfn;
  int needlfn[2], dotspc[2];
  unsigned char locale[2];
  for (nonspc = &name[nmlen - 1]; nonspc >= name && *nonspc == ' '; ++n)
    {
      if (!nmlen)
	{
	  needlfn[name >= nonspc] = !0, dotspc[n != 0] =
	    locale[0], --n, name += len, nmlen -= len;
	}
    }
  if (!lfn && ((dotspc[0] == ' ' && !(len & 0x0010)) || dotspc[0] == '.'))
    return 22;
  if (!(needlfn[0] || needlfn[1]))
    *flags |= 0x02;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pc44485.c<|end_filename|>
static int
foo (int si1, int si2)
{
  return si1 > 0 && si2 > 0 && si1 > -si2 || si1 < 0 && si2 < 0
    && si1 < -si2 ? : si1 + si2;
}

struct S0
{
  unsigned short f1;
};
int g_4;
struct S0 g_54 = {
  3428
};

int
func_21 (int * p_22, int * const int32p_24, unsigned p_25,
         const int * p_26);

void int324 (unsigned p_15, int * p_16, int * p_17, int * p_18)
{
  if (foo (g_4, func_21 (p_18, &g_4, 0, 0)))
    {
      for (g_54.f1; g_54.f1; g_54.f1 += 1)
        {
        }
    }
}

int
func_21 (int * p_22, int * const int32p_24, unsigned p_25,
         const int * p_26)
{
  for (0; 1; p_25 += 1)
  lbl_29:if (p_25)
      goto lbl_28;
lbl_28:for (p_25 = 0; p_25 < 9; p_25 += 1)
    if (p_25)
      goto lbl_29;
  unsigned short l_53;
  for (0; l_53; l_53 = foo)
    {
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46637.c<|end_filename|>
/* PR middle-end/46637 */

struct S { int s[5]; } *p;

void
foo (long x)
{
  long a = x == 1 ? 4L : 1L;
  asm ("" : "+m" (p->s[a]));
  p->s[0]++;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030323-1.c<|end_filename|>
/* PR c/10178.  The following code would ICE because we didn't check for
   overflow when computing the range of the switch-statment, and therefore
   decided it could be implemented using bit-tests.  */

int
banana(long citron)
{
  switch (citron) {
    case 0x80000000:
    case 0x40000:
    case 0x40001:
      return 1;
      break;
  }
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26622.c<|end_filename|>
/* PR middle-end/26622
   fold_ternary used to create a tree with mismatching types, causing
   (const_int 128) to appear in QImode rtx.  */

unsigned char g;

unsigned long long
foo (void)
{
  return ((long long) ((g & 0x80) != 0)) << 7;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40351.c<|end_filename|>
/* PR tree-optimizations/40351 */

struct IO_APIC_route_entry {
    unsigned int vector : 8;
    unsigned int delivery_mode : 1;
    unsigned int mask : 1;
    unsigned int __reserved_2 : 15;
    unsigned int __reserved_3 : 8;
} __attribute__ ((packed));
union entry_union {
    struct {
        unsigned int w1, w2;
    };
    struct IO_APIC_route_entry entry;
};
unsigned int io_apic_read(void);
struct IO_APIC_route_entry ioapic_read_entry(void)
{
  union entry_union eu;
  eu.w1 = io_apic_read();
  return eu.entry;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45047.c<|end_filename|>
/* PR tree-optimization/45047 */

void
foo (const unsigned short *w, char *x, int y, int z)
{
  int i;
  for (i = 0; i < y; i++)
    x[i] = w[i] == z;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58970-1.c<|end_filename|>
/* PR middle-end/58970 */

struct T { int b : 1; };
struct S { struct T t[1]; };

void
foo (int x, struct S *s)
{
  if (x == -1)
    s->t[x].b = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/const-high-part.c<|end_filename|>
/* { dg-require-effective-target int32plus } */
/* { dg-require-effective-target size32plus } */

char *buf;
int buflen;

inline int
sub (int length)
{
  if (length <= buflen)
    buf[length] = '\0';
  return 0;
}

int
sub2 (void)
{
  return sub (0x7fffffff);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37026.c<|end_filename|>
struct a {
    long a1;
    long a2;
};
struct b {
    struct a b1;
    struct a b2;
};
void bar (struct b *c)
{
  c->b1 = c->b2 = ((struct a) { foo(), 0 });
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48596.c<|end_filename|>
/* PR target/48596  */
enum { nrrdCenterUnknown, nrrdCenterNode, nrrdCenterCell, nrrdCenterLast };
typedef struct { int size; int center; }  NrrdAxis;
typedef struct { int dim; NrrdAxis axis[10]; } Nrrd;
typedef struct { } NrrdKernel;
typedef struct { const NrrdKernel *kernel[10]; int samples[10]; } Info;

void
foo (Nrrd *nout, Nrrd *nin, const NrrdKernel *kernel, const double *parm,
     const int *samples, const double *scalings)
{
  Info *info;
  int d, p, np, center;
  for (d=0; d<nin->dim; d++)
    {
      info->kernel[d] = kernel;
      if (samples)
	info->samples[d] = samples[d];
      else
	{
	  center = _nrrdCenter(nin->axis[d].center);
	  if (nrrdCenterCell == center)
	    info->samples[d] = nin->axis[d].size*scalings[d];
	  else
	    info->samples[d] = (nin->axis[d].size - 1)*scalings[d] + 1;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26626.c<|end_filename|>
typedef union {
    int d;
} U;

int rv;
void breakme()
{
    U *rv0;
    U *pretmp = (U*)&rv;
    rv0 = pretmp;
    rv0->d = 42;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38123.c<|end_filename|>
/* PR target/38123 */

#include <stdarg.h>

struct S { int i; double d; };

struct S
test (char *x, va_list ap)
{
  struct S s;
  s = va_arg (ap, struct S);
  return s;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr20539-1.c<|end_filename|>
char l7_en;
long long l6_data_Z_0th;
int t;
void f()
{
  if (((char )(l6_data_Z_0th>>1 & 1U)) & ((l6_data_Z_0th & 1U)
     | !(((char )(l6_data_Z_0th>>35 & 15U))==14U)))
    t = 0ULL;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050105-1.c<|end_filename|>
void bar (struct S *);
void foo (void *x)
{
  bar ((struct S *) x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/ext.c<|end_filename|>
/* The bit-field below would have a problem if __INT_MAX__ is too
   small.  */
#if __INT_MAX__ < 2147483647
int
main (void)
{
  exit (0);
}
#else
struct foo
{
  unsigned b31 : 1;
  unsigned b30 : 1;
  unsigned b29 : 1;
  unsigned b28 : 1;
  unsigned rest : 28;
};
foo(a)
     struct foo a;
{
  return a.b30;
}
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42705.c<|end_filename|>
typedef int GLint;
typedef unsigned char GLubyte;
typedef unsigned int uint32_t;
struct radeon_bo {
    void *ptr;
    uint32_t flags;
};
struct radeon_renderbuffer {
    struct radeon_bo *bo;
    unsigned int cpp;
    int has_surface;
};
static inline
GLint r600_1d_tile_helper(const struct radeon_renderbuffer * rrb,
			  GLint x, GLint y, GLint is_depth, GLint is_stencil)
{
  GLint element_bytes = rrb->cpp;
  GLint num_samples = 1;
  GLint tile_width = 8;
  GLint tile_height = 8;
  GLint tile_thickness = 1;
  GLint tile_bytes;
  GLint tiles_per_row;
  GLint slice_offset;
  GLint tile_row_index;
  GLint tile_column_index;
  GLint tile_offset;
  GLint pixel_number = 0;
  GLint element_offset;
  GLint offset = 0;
  tile_bytes = tile_width * tile_height * tile_thickness
      * element_bytes * num_samples;
  tile_column_index = x / tile_width;
  tile_offset = ((tile_row_index * tiles_per_row)
		 + tile_column_index) * tile_bytes;
  if (is_depth) {
  }
  else {
      GLint sample_offset;
      switch (element_bytes) {
	  case 1:       pixel_number |= ((x >> 0) & 1) << 0;
      }
      element_offset = sample_offset + (pixel_number * element_bytes);
  }
  offset = slice_offset + tile_offset + element_offset;
  return offset;
}
GLubyte *r600_ptr_color(const struct radeon_renderbuffer * rrb,
			GLint x, GLint y)
{
  GLubyte *ptr = rrb->bo->ptr;
  uint32_t mask = 1 | 2;
  GLint offset;
  if (rrb->has_surface || !(rrb->bo->flags & mask)) {
      offset = r600_1d_tile_helper(rrb, x, y, 0, 0);
  }
  return &ptr[offset];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/930513-1.c<|end_filename|>
/* The bit-field below would have a problem if __INT_MAX__ is too
   small.  */
#if __INT_MAX__ < 2147483647
int a;
#else
struct s {
  int f1 : 26;
  int f2 : 8;
};

f (struct s *x)
{
  return x->f2++ == 0;
}
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70240.c<|end_filename|>
typedef short v16hi __attribute__ ((vector_size (32)));
typedef int v8si __attribute__ ((vector_size (32)));
typedef long long v4di __attribute__ ((vector_size (32)));

int
foo(int u16_0, int u32_0, int u64_0, int u16_1, int u32_1, int u64_1, v16hi v32u16_0, v8si v32u32_0, v4di v32u64_0, v16hi v32u16_1, v8si v32u32_1, v4di v32u64_1)
{
  do {
    v32u16_1 += (v16hi){ v32u32_1[7], ~v32u32_1[3], 0, v32u64_0[0]};
    u32_0 = (u32_0 << 31) | (u32_0 >> ~v32u32_0[1]);
    u64_0 += 1;
    v32u64_0[2] <<= v32u64_0[2] & 63;
    u16_1 = (u16_1 >> (v32u16_0[11] & 15)) | (u16_1 << (-v32u16_0[11] & 15));
    v32u16_0 -= ~v32u16_1;
    v32u32_1[5] += u32_1;
    if (v32u32_1[3] >= 0) {
      u64_1 -= ~v32u64_1[1];
      v32u16_1 += (v16hi){ -u64_1, ~u32_0, ~u16_1, v32u32_1[1], 0, ~v32u16_1[2], ~v32u64_1[2], ~v32u32_0[7]};
    }
    v32u64_1 += (v4di){0, 0, ~v32u32_0[5]};
    v32u32_1 *= (v8si){0, ~v32u32_1[6]};
    v32u64_0[3] &= 0x1234;
    v32u64_0 += (v4di){v32u32_1[6]};
  } while (u16_0 < 0x1234);
  return u64_0 + u16_1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33166.c<|end_filename|>
static void ConvertAddr (char *saddr, void **addr)
{
  *addr = (void *) &saddr;
}
void DefineSelf (char *addr)
{
  ConvertAddr (addr, (void **) &addr);
  if (addr[0] == 127 && addr[3] == 1)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040624-1.c<|end_filename|>
struct s { float f[1]; };
struct s foo();
float bar() { return foo().f[0]; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58332.c<|end_filename|>
static inline int foo (int x) { return x + 1; }
__attribute__ ((__optimize__ (0))) int bar (void) { return foo (100); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58340.c<|end_filename|>
int a, b, c, d;

int foo (int x, int y)
{
  return y == 0 ? x : 1 % y;
}

int main ()
{
  c = 0 || a;

  for (;;)
    b = foo (d, c) && 1;

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56448.c<|end_filename|>
/* PR tree-optimization/56448 */

volatile int a[1];
int b;

void
foo ()
{
  for (;;)
    {
      int *c[3][6] = { 0, 0, 0, &b, 0, 0, 0, 0, &b, 0, 0, 0, 0, 0, 0, 0, &b, (int *) &a[0] };
      b = *c[2][5];
    }
}


<|start_filename|>v2/headers/linux_amd64/usr/include/assert.h<|end_filename|>
/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 *	ISO C99 Standard: 7.2 Diagnostics	<assert.h>
 */

#ifdef	_ASSERT_H

# undef	_ASSERT_H
# undef	assert
# undef __ASSERT_VOID_CAST

# ifdef	__USE_GNU
#  undef assert_perror
# endif

#endif				/* assert.h      */

#define	_ASSERT_H	1
#include <features.h>

#if defined __cplusplus && __GNUC_PREREQ (2,95)
# define __ASSERT_VOID_CAST static_cast<void>
#else
# define __ASSERT_VOID_CAST (void)
#endif

/* void assert (int expression);

   If NDEBUG is defined, do nothing.
   If not, and EXPRESSION is zero, print an error message and abort.  */

#ifdef	NDEBUG

# define assert(expr)		(__ASSERT_VOID_CAST (0))

/* void assert_perror (int errnum);

   If NDEBUG is defined, do nothing.  If not, and ERRNUM is not zero, print an
   error message with the error text for ERRNUM and abort.
   (This is a GNU extension.) */

# ifdef	__USE_GNU
#  define assert_perror(errnum)	(__ASSERT_VOID_CAST (0))
# endif

#else				/* Not NDEBUG.  */

__BEGIN_DECLS
/* This prints an "Assertion failed" message and aborts.  */
extern void __assert_fail(const char *__assertion, const char *__file, unsigned int __line, const char *__function)
__THROW __attribute__ ((__noreturn__));

/* Likewise, but prints the error text for ERRNUM.  */
extern void __assert_perror_fail(int __errnum, const char *__file, unsigned int __line, const char *__function)
__THROW __attribute__ ((__noreturn__));

/* The following is not at all used here but needed for standard
   compliance.  */
extern void __assert(const char *__assertion, const char *__file, int __line)
__THROW __attribute__ ((__noreturn__));

__END_DECLS
# define assert(expr)							\
  ((expr)								\
   ? __ASSERT_VOID_CAST (0)						\
   : __assert_fail (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION))
# ifdef	__USE_GNU
#  define assert_perror(errnum)						\
  (!(errnum)								\
   ? __ASSERT_VOID_CAST (0)						\
   : __assert_perror_fail ((errnum), __FILE__, __LINE__, __ASSERT_FUNCTION))
# endif
/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
   which contains the name of the function currently being defined.
   This is broken in G++ before version 2.6.
   C9x has a similar variable called __func__, but prefer the GCC one since
   it demangles C++ function names.  */
# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
#   define __ASSERT_FUNCTION	__PRETTY_FUNCTION__
# else
#  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
#   define __ASSERT_FUNCTION	__func__
#  else
#   define __ASSERT_FUNCTION	((const char *) 0)
#  endif
# endif
#endif				/* NDEBUG.  */
#if defined __USE_ISOC11 && !defined __cplusplus
# undef static_assert
# define static_assert _Static_assert
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37662.c<|end_filename|>
/* PR tree-optimization/37662 */

extern int baz (void);

static int
foo (void)
{
  return 1;
}

int
bar (void)
{
  return foo () >= 1 ^ (baz () || 0) || 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20081108-1.c<|end_filename|>
/* Test function call with function designator involving VLA
   side-effects does not lead to an ICE.  */

void f (void);
void g (void);

void
h (int a, void *b)
{
  ((void *)(int (*)[++a])b ? f : g) ();
}


<|start_filename|>v2/testdata/cpp-expand/mustfail/example-6.10.3.5-9c.h<|end_filename|>
#define FUNC_LIKE(a) ( a )
#define FUNC_LIKE(b) ( a ) // different parameter usage


<|start_filename|>v2/testdata/bug/9.c<|end_filename|>
#include <stdio.h>

int main() {
	float f32;
	unsigned long long u64;
	f32 = __FLT_MAX__;
	u64 = f32;
	printf("%f %llu\n", f32, u64);
	int i32;
	int *pi32;
	pi32 = &i32;
	*pi32 = 0x9.A70A99p+87;
	printf("%f %i\n", 0x9.A70A99p+87, i32);
	return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/zero-strct-5.c<|end_filename|>
/* Check that the inliner does not crash for this testcase.
   gimple_expr can change the expr to NULL meaning that we
   should not add any statement. */
struct f {};
struct g1 {struct f l;};

static inline void g(struct f a, int i){}

void h(void)
{
  struct g1 t;
  g(t.l , 1);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34334.c<|end_filename|>
/* { dg-skip-if "ptxas times out" { nvptx-*-* } { "*" } { "-O0" } } */
__extension__ typedef __SIZE_TYPE__ size_t;
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef __quad_t __off64_t;
typedef __mode_t mode_t;
typedef __off64_t off_t;
struct timeval   {};
typedef struct   {} fd_set;
typedef union {} __pthread_slist_t;
typedef union {
    struct __pthread_mutex_s   { __extension__ union { };   } __data;
};
extern int stat64 (__const char *__restrict __file,      struct stat64 *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fstatat64 (int __fd, __const char *__restrict __file,         struct stat64 *__restrict __buf, int __flag)      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
enum __socket_type { SOCK_STREAM = 1, };
enum { SI_ASYNCNL = -60, };
enum { CLD_EXITED = 1, };
typedef struct sigaltstack   { } stack_t;
enum __rlimit_resource { __RLIMIT_SIGPENDING = 11, };
struct rlimit   { };
enum __priority_which { PRIO_PROCESS = 0, };
typedef union   { } __WAIT_STATUS __attribute__ ((__transparent_union__));
union wait   {
    struct       {       } __wait_stopped;
};
typedef enum {  P_ALL, } idtype_t;
struct utsname   { };
enum   { IPPROTO_IP = 0,   };
enum   { IPPORT_ECHO = 7,   };
struct in_addr   { };
struct in6_addr   {
    union       {       } in6_u;
};
typedef long int wchar_t;
typedef unsigned char guint8;
typedef signed int gint32;
typedef unsigned int guint32;
typedef signed int gssize;
typedef unsigned int gsize;
struct _GStaticMutex {
    union {   } static_mutex;
};
union _GSystemThread { };
typedef int GPid;
typedef char gchar;
typedef int gint;
typedef gint gboolean;
typedef unsigned short gushort;
typedef unsigned long gulong;
typedef unsigned int guint;
typedef void* gpointer;
typedef const void *gconstpointer;
typedef gboolean (*GEqualFunc) (gconstpointer a, gconstpointer b);
typedef void (*GFunc) (gpointer data,   gpointer user_data);
typedef void (*GHFunc) (gpointer key,   gpointer user_data);
struct _GTimeVal { };
typedef struct _GByteArray GByteArray;
guint8* g_byte_array_free (GByteArray *array,      guint index_);
typedef guint32 GQuark;
typedef struct _GError GError;
GError* g_error_new (GQuark domain,   const gchar *message);
gboolean g_error_matches (const GError *error,   gint code);
typedef __builtin_va_list __gnuc_va_list;
typedef __gnuc_va_list va_list;
typedef enum { G_USER_DIRECTORY_DESKTOP, } GUserDirectory;
typedef enum { G_THREAD_PRIORITY_URGENT } GThreadPriority;
struct _GThread { };
typedef struct _GCond GCond;
struct _GThreadFunctions {
    void (*cond_wait) (GCond *cond,  GError **error);
    gboolean (*thread_equal) (gpointer thread1,        gpointer thread2);
};
typedef struct _GAsyncQueue GAsyncQueue;
void g_async_queue_sort (GAsyncQueue *queue,           guint *save);
struct tm { };
typedef struct __locale_struct { } *__locale_t;
extern int getaddrinfo (__const char *__restrict __name, struct addrinfo **__restrict __pai);
typedef struct _IO_FILE FILE;
__strsep_1c (char **__s, char __reject) { }
__strsep_2c (char **__s, char __reject1, char __reject2) { }
typedef struct stack_st  { } STACK;
typedef struct asn1_string_st ASN1_BIT_STRING;
typedef struct bn_mont_ctx_st BN_MONT_CTX;
typedef struct evp_cipher_st EVP_CIPHER;
typedef struct EDIPartyName_st {
    union { } d;
} GENERAL_NAME;
typedef struct DIST_POINT_NAME_st {
    union { } name;
} DIST_POINT_NAME;
typedef struct SXNET_st { } NOTICEREF;
typedef struct GENERAL_SUBTREE_st { } X509_PURPOSE;
int X509V3_add_value(const char *name, const char *value, STACK **extlist);
int X509_PURPOSE_add(int id, int trust, int flags, char *name, char *sname, void *arg);
extern char *dcgettext (__const char *__domainname, __const char *__msgid, int __category) __attribute__ ((__nothrow__)) __attribute__ ((__format_arg__ (2)));
enum { __LC_CTYPE = 0, };
struct lconv { };
typedef enum gftp_logging_level_tag { gftp_logging_send, } gftp_logging_level;
struct gftp_file_tag {
    char *file,        *destfile;
    unsigned int selected : 1,
                is_fd : 1;
    gint32 ipv4_network_address, ipv4_netmask;
} gftp_proxy_hosts;
typedef enum { gftp_option_type_text = 0, } gftp_option_type_enum;
typedef struct gftp_config_list_vars_tag { } gftp_config_list_vars;
typedef struct gftp_config_vars_tag { } gftp_config_vars;
typedef struct gftp_option_type_tag {
    int (*read_function) (char *str, gftp_config_vars * cv, int line);
    int (*write_function) (gftp_config_vars * cv, char *buf, size_t buflen, int to_config_file);
} gftp_option_type_var;
typedef struct gftp_request_tag gftp_request;
typedef void (*gftp_logging_func) ( gftp_logging_level level, const char *string, ... );
typedef struct gftp_transfer_tag {
    gftp_request * fromreq, * toreq;
    unsigned int cancel : 1,
                skip_file : 1;
    long numfiles,  resumed_bytes;
} gftp_transfer;
typedef struct gftp_log_tag {
    unsigned int shown : 1,
	use_threads : 1;
} supported_gftp_protocols;
void
gftp_config_parse_args (char *str, int numargs, int lineno, char **first, ...)
{
    char *curpos, *endpos, *pos, **dest, tempchar;
    va_list argp;
    dest = first;
    while (numargs > 0)
    {
        if (numargs > 1)
	{  
	    dest = __builtin_va_arg(argp,char **); 
	    *dest = ((void *)0);
	} 
	numargs--; 
	**dest = '\0'; 
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/ieee/mzero4.c<|end_filename|>
/* Copyright (C) 2003  Free Software Foundation.
   by <NAME> <<EMAIL>>, derived from mzero3.c

   Constant folding of sin(-0.0), tan(-0.0) and atan(-0.0) should
   all return -0.0, for both double and float forms.  */

void abort (void);
typedef __SIZE_TYPE__ size_t;
extern int memcmp (const void *, const void *, size_t);

double sin (double);
double tan (double);
double atan (double);

float sinf (float);
float tanf (float);
float atanf (float);

void expectd (double, double);
void expectf (float, float);

void
expectd (double value, double expected)
{
  if (value != expected
      || memcmp ((void *)&value, (void *) &expected, sizeof (double)) != 0)
    abort ();
}

void
expectf (float value, float expected)
{
  if (value != expected
      || memcmp ((void *)&value, (void *) &expected, sizeof (float)) != 0)
    abort ();
}

int main ()
{
  expectd (sin (0.0), 0.0);
  expectd (tan (0.0), 0.0);
  expectd (atan (0.0), 0.0);

  expectd (sin (-0.0), -0.0);
  expectd (tan (-0.0), -0.0);
  expectd (atan (-0.0), -0.0);

  expectf (sinf (0.0f), 0.0f);
  expectf (tanf (0.0f), 0.0f);
  expectf (atanf (0.0f), 0.0f);

  expectf (sinf (-0.0f), -0.0f);
  expectf (tanf (-0.0f), -0.0f);
  expectf (atanf (-0.0f), -0.0f);

  return 0;
}



<|start_filename|>testdata/issue68.h<|end_filename|>
typedef struct a *b;
#define c(type, name, paramName)                          \
  void set##name(const b node, type paramName); \
  type get##name(const b node);

c(void *, Context, context); // The final semicolon is a C++11 empty declaration, illegal in C99.

// See also http://en.cppreference.com/w/cpp/language/declarations


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030331-1.c<|end_filename|>
/* From PR/9301.  Fixed by ebotcazou's patch for PR/9493.  */

void bar (void);

void foo (int a, int b, int c, int d, int e)
{
  if (a)
    bar();
  if (b && c)
    ;
  if (d && e)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70263-1.c<|end_filename|>
int a[91];
int b, c;
void fn1() {
  int n, m;
  do {
    a[c--];
    a[--c] = m;
    a[--m] = b;
  } while (n);
}



<|start_filename|>testdata/issue77.c<|end_filename|>
void f() {
	if ("abc"[0] == 'a') {}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030612-1.c<|end_filename|>
static inline void
foo (long long const v0, long long const v1)
{
  bar (v0 == v1);
}

void
test (void)
{
  foo (0, 1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38590-2.c<|end_filename|>

int func_75 (int p_76) 
{
  return (1 / (int) -(unsigned int)p_76) ? 1 : p_76;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17529.c<|end_filename|>

static inline void 
bar (const int * const x) 
{ 
  __asm__ __volatile__ (""::"m" (*x)); 
} 
 
static const int y[1]; 
 
void 
foo (void) 
{ 
  bar (y); 
} 


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17273.c<|end_filename|>
struct A { int i; };
struct B { struct A a; };

void f(struct A*, struct A*);
#define bool _Bool

void bar(bool b)
{
  struct B * D1601;
  struct A D1576;
  struct A * D1593;
  struct B * D1592;
  struct B D1575;

  D1575 = (struct B){};

  if (b) D1592 = &D1575; else D1592 = &D1575;

  D1593 = &D1592->a; // <-- we are prograting &D1575 into here.
  D1576 = (struct A){};
  f (D1593, &D1576);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36154.c<|end_filename|>
struct eth_test_pkt {
  unsigned short len;
  unsigned short ctr;
  unsigned char packet[];
} __attribute__ ((packed));
struct eth_test_pkt pkt_unaligned = { .packet = { 0xFC } };
int cmd_unaligned(const void *p)
{
  return memcmp(p, pkt_unaligned.packet, 1);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27373.c<|end_filename|>
typedef struct atype
{
    float bg[1], cg[1];
    _Bool ant;
}atype;


void cp_assert(_Bool*, float*, int*, _Bool*);

void f(atype **rng_stream, int *error, float u)
{
    _Bool t = *rng_stream != 0;
    float routinep;
    _Bool failure;
    cp_assert ( &t, &routinep, error, &failure);
    if (failure == 0)
    {
        typedef float ty[1];
        ty *tt = &((*rng_stream)->bg);
        int i = 1;

        do 
        {
            (*tt)[i - 1] = u;
            i ++;
        }while (i > 1);
        {
            ty *tt = &(*rng_stream)->cg;
            int i = 1;

            do 
            {
                (*tt)[i - 1] = u;
                i ++;
            }while (i > 1);
        }
    }    
}




<|start_filename|>testdata/issue92.c<|end_filename|>
typedef struct{int i;} t;
typedef struct{int i;} t;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40233.c<|end_filename|>
typedef int aligned __attribute__((aligned(64)));
struct Frame {
  aligned i;
};

void foo(struct Frame *p)
{
  aligned *q = &p->i;
  *q = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38343.c<|end_filename|>
/* PR middle-end/38343 */

static struct A
{
  char f[6];
} a[] = { {"01000"} };

void
foo (void)
{
  __builtin_stpcpy (a[0].f, "S0022");
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35432.c<|end_filename|>
/* PR middle-end/35432 */

struct A
{
  char c[0];
};

void foo(struct A a)
{
  (a = a).c;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/memops-asm-lib.c<|end_filename|>
extern void abort (void);
extern int inside_main;
typedef __SIZE_TYPE__ size_t;

#define TEST_ABORT if (inside_main) abort()

/* LTO code is at the present to able to track that asm alias my_bcopy on builtin
   actually refers to this function.  See PR47181. */
__attribute__ ((used))
void *
my_memcpy (void *d, const void *s, size_t n)
{
  char *dst = (char *) d;
  const char *src = (const char *) s;
  while (n--)
    *dst++ = *src++;
  return (char *) d;
}

/* LTO code is at the present to able to track that asm alias my_bcopy on builtin
   actually refers to this function.  See PR47181. */
__attribute__ ((used))
void
my_bcopy (const void *s, void *d, size_t n)
{
  char *dst = (char *) d;
  const char *src = (const char *) s;
  if (src >= dst)
    while (n--)
      *dst++ = *src++;
  else
    {
      dst += n;
      src += n;
      while (n--)
        *--dst = *--src;
    }
}

/* LTO code is at the present to able to track that asm alias my_bcopy on builtin
   actually refers to this function.  See PR47181. */
__attribute__ ((used))
void *
my_memset (void *d, int c, size_t n)
{
  char *dst = (char *) d;
  while (n--)
    *dst++ = c;
  return (char *) d;
}

/* LTO code is at the present to able to track that asm alias my_bcopy on builtin
   actually refers to this function.  See PR47181. */
__attribute__ ((used))
void
my_bzero (void *d, size_t n)
{
  char *dst = (char *) d;
  while (n--)
    *dst++ = '\0';
}

void *
memcpy (void *d, const void *s, size_t n)
{
  void *result = my_memcpy (d, s, n);
  TEST_ABORT;
  return result;
}

void
bcopy (const void *s, void *d, size_t n)
{
  my_bcopy (s, d, n);
  TEST_ABORT;
}

void *
memset (void *d, int c, size_t n)
{
  void *result = my_memset (d, c, n);
  TEST_ABORT;
  return result;
}

void
bzero (void *d, size_t n)
{
  my_bzero (d, n);
  TEST_ABORT;
}

#ifdef __vxworks
/* The RTP C library uses bfill, which is defined in the same file as
   bzero and bcopy.  */
#include "lib/bfill.c"
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/ssa-pre-1.c<|end_filename|>
void washQtoM3(double m[9], double q[4]);
double sqrt(double);
int f(int samp)
{
      double clp[2], xyz[3], q[4], len;
      double mRF[9];
      int xi;
      for (xi=0; xi<samp; xi++)
	    {
		    q[0] = 1.0;
		    q[1] = ( ((double)(1)-(-1))*((double)((float)xi)-(-0.5)) / ((double)(samp-0.5)-(-0.5)) + (-1));
		    q[2] = ( ((double)(1)-(-1))*((double)((float)0)-(-0.5)) / ((double)(samp-0.5)-(-0.5)) + (-1));
		    q[3] = ( ((double)(1)-(-1))*((double)((float)0)-(-0.5)) / ((double)(samp-0.5)-(-0.5)) + (-1));
		    len = (sqrt((((q))[0]*((q))[0] + ((q))[1]*((q))[1] + ((q))[2]*((q))[2] + ((q))[3]*((q))[3])));
		  ((q)[0] = (q)[0]*1.0/len, (q)[1] = (q)[1]*1.0/len, (q)[2] = (q)[2]*1.0/len, (q)[3] = (q)[3]*1.0/len);
		 washQtoM3(mRF, q);
		      }
      return 0;
}


<|start_filename|>v2/headers/linux_arm/usr/include/zconf.h<|end_filename|>
/* zconf.h -- configuration of the zlib compression library
 * Copyright (C) 1995-2013 <NAME>.
 * For conditions of distribution and use, see copyright notice in zlib.h
 */

/* @(#) $Id$ */

#ifndef ZCONF_H
#define ZCONF_H

/*
 * If you *really* need a unique prefix for all types and library functions,
 * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
 * Even better than compiling with -DZ_PREFIX would be to use configure to set
 * this permanently in zconf.h using "./configure --zprefix".
 */
#ifdef Z_PREFIX			/* may be set to #if 1 by ./configure */
#define Z_PREFIX_SET

/* all linked symbols */
#define _dist_code            z__dist_code
#define _length_code          z__length_code
#define _tr_align             z__tr_align
#define _tr_flush_bits        z__tr_flush_bits
#define _tr_flush_block       z__tr_flush_block
#define _tr_init              z__tr_init
#define _tr_stored_block      z__tr_stored_block
#define _tr_tally             z__tr_tally
#define adler32               z_adler32
#define adler32_combine       z_adler32_combine
#define adler32_combine64     z_adler32_combine64
#ifndef Z_SOLO
#define compress              z_compress
#define compress2             z_compress2
#define compressBound         z_compressBound
#endif
#define crc32                 z_crc32
#define crc32_combine         z_crc32_combine
#define crc32_combine64       z_crc32_combine64
#define deflate               z_deflate
#define deflateBound          z_deflateBound
#define deflateCopy           z_deflateCopy
#define deflateEnd            z_deflateEnd
#define deflateInit2_         z_deflateInit2_
#define deflateInit_          z_deflateInit_
#define deflateParams         z_deflateParams
#define deflatePending        z_deflatePending
#define deflatePrime          z_deflatePrime
#define deflateReset          z_deflateReset
#define deflateResetKeep      z_deflateResetKeep
#define deflateSetDictionary  z_deflateSetDictionary
#define deflateSetHeader      z_deflateSetHeader
#define deflateTune           z_deflateTune
#define deflate_copyright     z_deflate_copyright
#define get_crc_table         z_get_crc_table
#ifndef Z_SOLO
#define gz_error              z_gz_error
#define gz_intmax             z_gz_intmax
#define gz_strwinerror        z_gz_strwinerror
#define gzbuffer              z_gzbuffer
#define gzclearerr            z_gzclearerr
#define gzclose               z_gzclose
#define gzclose_r             z_gzclose_r
#define gzclose_w             z_gzclose_w
#define gzdirect              z_gzdirect
#define gzdopen               z_gzdopen
#define gzeof                 z_gzeof
#define gzerror               z_gzerror
#define gzflush               z_gzflush
#define gzgetc                z_gzgetc
#define gzgetc_               z_gzgetc_
#define gzgets                z_gzgets
#define gzoffset              z_gzoffset
#define gzoffset64            z_gzoffset64
#define gzopen                z_gzopen
#define gzopen64              z_gzopen64
#ifdef _WIN32
#define gzopen_w              z_gzopen_w
#endif
#define gzprintf              z_gzprintf
#define gzvprintf             z_gzvprintf
#define gzputc                z_gzputc
#define gzputs                z_gzputs
#define gzread                z_gzread
#define gzrewind              z_gzrewind
#define gzseek                z_gzseek
#define gzseek64              z_gzseek64
#define gzsetparams           z_gzsetparams
#define gztell                z_gztell
#define gztell64              z_gztell64
#define gzungetc              z_gzungetc
#define gzwrite               z_gzwrite
#endif
#define inflate               z_inflate
#define inflateBack           z_inflateBack
#define inflateBackEnd        z_inflateBackEnd
#define inflateBackInit_      z_inflateBackInit_
#define inflateCopy           z_inflateCopy
#define inflateEnd            z_inflateEnd
#define inflateGetHeader      z_inflateGetHeader
#define inflateInit2_         z_inflateInit2_
#define inflateInit_          z_inflateInit_
#define inflateMark           z_inflateMark
#define inflatePrime          z_inflatePrime
#define inflateReset          z_inflateReset
#define inflateReset2         z_inflateReset2
#define inflateSetDictionary  z_inflateSetDictionary
#define inflateGetDictionary  z_inflateGetDictionary
#define inflateSync           z_inflateSync
#define inflateSyncPoint      z_inflateSyncPoint
#define inflateUndermine      z_inflateUndermine
#define inflateResetKeep      z_inflateResetKeep
#define inflate_copyright     z_inflate_copyright
#define inflate_fast          z_inflate_fast
#define inflate_table         z_inflate_table
#ifndef Z_SOLO
#define uncompress            z_uncompress
#endif
#define zError                z_zError
#ifndef Z_SOLO
#define zcalloc               z_zcalloc
#define zcfree                z_zcfree
#endif
#define zlibCompileFlags      z_zlibCompileFlags
#define zlibVersion           z_zlibVersion

/* all zlib typedefs in zlib.h and zconf.h */
#define Byte                  z_Byte
#define Bytef                 z_Bytef
#define alloc_func            z_alloc_func
#define charf                 z_charf
#define free_func             z_free_func
#ifndef Z_SOLO
#define gzFile                z_gzFile
#endif
#define gz_header             z_gz_header
#define gz_headerp            z_gz_headerp
#define in_func               z_in_func
#define intf                  z_intf
#define out_func              z_out_func
#define uInt                  z_uInt
#define uIntf                 z_uIntf
#define uLong                 z_uLong
#define uLongf                z_uLongf
#define voidp                 z_voidp
#define voidpc                z_voidpc
#define voidpf                z_voidpf

/* all zlib structs in zlib.h and zconf.h */
#define gz_header_s           z_gz_header_s
#define internal_state        z_internal_state

#endif

#if defined(__MSDOS__) && !defined(MSDOS)
#define MSDOS
#endif
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
#define OS2
#endif
#if defined(_WINDOWS) && !defined(WINDOWS)
#define WINDOWS
#endif
#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
#ifndef WIN32
#define WIN32
#endif
#endif
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
#if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
#ifndef SYS16BIT
#define SYS16BIT
#endif
#endif
#endif

/*
 * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
 * than 64k bytes at a time (needed on systems with 16-bit int).
 */
#ifdef SYS16BIT
#define MAXSEG_64K
#endif
#ifdef MSDOS
#define UNALIGNED_OK
#endif

#ifdef __STDC_VERSION__
#ifndef STDC
#define STDC
#endif
#if __STDC_VERSION__ >= 199901L
#ifndef STDC99
#define STDC99
#endif
#endif
#endif
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
#define STDC
#endif
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
#define STDC
#endif
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
#define STDC
#endif
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
#define STDC
#endif

#if defined(__OS400__) && !defined(STDC)	/* iSeries (formerly AS/400). */
#define STDC
#endif

#ifndef STDC
#ifndef const			/* cannot use !defined(STDC) && !defined(const) on Mac */
#define const			/* note: need a more gentle solution here */
#endif
#endif

#if defined(ZLIB_CONST) && !defined(z_const)
#define z_const const
#else
#define z_const
#endif

/* Some Mac compilers merge all .h files incorrectly: */
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
#define NO_DUMMY_DECL
#endif

/* Maximum value for memLevel in deflateInit2 */
#ifndef MAX_MEM_LEVEL
#ifdef MAXSEG_64K
#define MAX_MEM_LEVEL 8
#else
#define MAX_MEM_LEVEL 9
#endif
#endif

/* Maximum value for windowBits in deflateInit2 and inflateInit2.
 * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
 * created by gzip. (Files created by minigzip can still be extracted by
 * gzip.)
 */
#ifndef MAX_WBITS
#define MAX_WBITS   15		/* 32K LZ77 window */
#endif

/* The memory requirements for deflate are (in bytes):
            (1 << (windowBits+2)) +  (1 << (memLevel+9))
 that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
 plus a few kilobytes for small objects. For example, if you want to reduce
 the default memory requirements from 256K to 128K, compile with
     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
 Of course this will generally degrade compression (there's no free lunch).

   The memory requirements for inflate are (in bytes) 1 << windowBits
 that is, 32K for windowBits=15 (default value) plus a few kilobytes
 for small objects.
*/

			/* Type declarations */

#ifndef OF			/* function prototypes */
#ifdef STDC
#define OF(args)  args
#else
#define OF(args)  ()
#endif
#endif

#ifndef Z_ARG			/* function prototypes for stdarg */
#if defined(STDC) || defined(Z_HAVE_STDARG_H)
#define Z_ARG(args)  args
#else
#define Z_ARG(args)  ()
#endif
#endif

/* The following definitions for FAR are needed only for MSDOS mixed
 * model programming (small or medium model with some far allocations).
 * This was tested only with MSC; for other MSDOS compilers you may have
 * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
 * just define FAR to be empty.
 */
#ifdef SYS16BIT
#if defined(M_I86SM) || defined(M_I86MM)
     /* MSC small or medium model */
#define SMALL_MEDIUM
#ifdef _MSC_VER
#define FAR _far
#else
#define FAR far
#endif
#endif
#if (defined(__SMALL__) || defined(__MEDIUM__))
     /* Turbo C small or medium model */
#define SMALL_MEDIUM
#ifdef __BORLANDC__
#define FAR _far
#else
#define FAR far
#endif
#endif
#endif

#if defined(WINDOWS) || defined(WIN32)
   /* If building or using zlib as a DLL, define ZLIB_DLL.
    * This is not mandatory, but it offers a little performance increase.
    */
#ifdef ZLIB_DLL
#if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
#ifdef ZLIB_INTERNAL
#define ZEXTERN extern __declspec(dllexport)
#else
#define ZEXTERN extern __declspec(dllimport)
#endif
#endif
#endif				/* ZLIB_DLL */
   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
    * define ZLIB_WINAPI.
    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
    */
#ifdef ZLIB_WINAPI
#ifdef FAR
#undef FAR
#endif
#include <windows.h>
     /* No need for _export, use ZLIB.DEF instead. */
     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
#define ZEXPORT WINAPI
#ifdef WIN32
#define ZEXPORTVA WINAPIV
#else
#define ZEXPORTVA FAR CDECL
#endif
#endif
#endif

#if defined (__BEOS__)
#ifdef ZLIB_DLL
#ifdef ZLIB_INTERNAL
#define ZEXPORT   __declspec(dllexport)
#define ZEXPORTVA __declspec(dllexport)
#else
#define ZEXPORT   __declspec(dllimport)
#define ZEXPORTVA __declspec(dllimport)
#endif
#endif
#endif

#ifndef ZEXTERN
#define ZEXTERN extern
#endif
#ifndef ZEXPORT
#define ZEXPORT
#endif
#ifndef ZEXPORTVA
#define ZEXPORTVA
#endif

#ifndef FAR
#define FAR
#endif

#if !defined(__MACTYPES__)
typedef unsigned char Byte;	/* 8 bits */
#endif
typedef unsigned int uInt;	/* 16 bits or more */
typedef unsigned long uLong;	/* 32 bits or more */

#ifdef SMALL_MEDIUM
   /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
#define Bytef Byte FAR
#else
typedef Byte FAR Bytef;
#endif
typedef char FAR charf;
typedef int FAR intf;
typedef uInt FAR uIntf;
typedef uLong FAR uLongf;

#ifdef STDC
typedef void const *voidpc;
typedef void FAR *voidpf;
typedef void *voidp;
#else
typedef Byte const *voidpc;
typedef Byte FAR *voidpf;
typedef Byte *voidp;
#endif

#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC)
#include <limits.h>
#if (UINT_MAX == 0xffffffffUL)
#define Z_U4 unsigned
#elif (ULONG_MAX == 0xffffffffUL)
#define Z_U4 unsigned long
#elif (USHRT_MAX == 0xffffffffUL)
#define Z_U4 unsigned short
#endif
#endif

#ifdef Z_U4
typedef Z_U4 z_crc_t;
#else
typedef unsigned long z_crc_t;
#endif

#if 1				/* was set to #if 1 by ./configure */
#define Z_HAVE_UNISTD_H
#endif

#if 1				/* was set to #if 1 by ./configure */
#define Z_HAVE_STDARG_H
#endif

#ifdef STDC
#ifndef Z_SOLO
#include <sys/types.h>		/* for off_t */
#endif
#endif

#if defined(STDC) || defined(Z_HAVE_STDARG_H)
#ifndef Z_SOLO
#include <stdarg.h>		/* for va_list */
#endif
#endif

#ifdef _WIN32
#ifndef Z_SOLO
#include <stddef.h>		/* for wchar_t */
#endif
#endif

/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
 * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
 * though the former does not conform to the LFS document), but considering
 * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
 * equivalently requesting no 64-bit operations
 */
#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1
#undef _LARGEFILE64_SOURCE
#endif

#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
#define Z_HAVE_UNISTD_H
#endif
#ifndef Z_SOLO
#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
#include <unistd.h>		/* for SEEK_*, off_t, and _LFS64_LARGEFILE */
#ifdef VMS
#include <unixio.h>		/* for off_t */
#endif
#ifndef z_off_t
#define z_off_t off_t
#endif
#endif
#endif

#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0
#define Z_LFS64
#endif

#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64)
#define Z_LARGE64
#endif

#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64)
#define Z_WANT64
#endif

#if !defined(SEEK_SET) && !defined(Z_SOLO)
#define SEEK_SET        0	/* Seek from beginning of file.  */
#define SEEK_CUR        1	/* Seek from current position.  */
#define SEEK_END        2	/* Set file pointer to EOF plus "offset" */
#endif

#ifndef z_off_t
#define z_off_t long
#endif

#if !defined(_WIN32) && defined(Z_LARGE64)
#define z_off64_t off64_t
#else
#if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO)
#define z_off64_t __int64
#else
#define z_off64_t z_off_t
#endif
#endif

/* MVS linker does not support external names larger than 8 bytes */
#if defined(__MVS__)
#pragma map(deflateInit_,"DEIN")
#pragma map(deflateInit2_,"DEIN2")
#pragma map(deflateEnd,"DEEND")
#pragma map(deflateBound,"DEBND")
#pragma map(inflateInit_,"ININ")
#pragma map(inflateInit2_,"ININ2")
#pragma map(inflateEnd,"INEND")
#pragma map(inflateSync,"INSY")
#pragma map(inflateSetDictionary,"INSEDI")
#pragma map(compressBound,"CMBND")
#pragma map(inflate_table,"INTABL")
#pragma map(inflate_fast,"INFA")
#pragma map(inflate_copyright,"INCOPY")
#endif

#endif				/* ZCONF_H */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031023-1.c<|end_filename|>
/* Declaration of the frame size doesn't work on ptx.  */
/* { dg-require-effective-target untyped_assembly } */
#ifndef ASIZE
# define ASIZE 0x10000000000UL
#endif

#include <limits.h>

#if LONG_MAX < 8 * ASIZE
# undef ASIZE
# define ASIZE 4096
#endif

extern void abort (void);

int __attribute__((noinline))
foo (const char *s)
{
  if (!s)
    return 1;
  if (s[0] != 'a')
    abort ();
  s += ASIZE - 1;
  if (s[0] != 'b')
    abort ();
  return 0;
}

int (*fn) (const char *) = foo;

int __attribute__((noinline))
bar (void)
{
  char s[ASIZE];
  s[0] = 'a';
  s[ASIZE - 1] = 'b';
  foo (s);
  foo (s);
  return 0;
}

int __attribute__((noinline))
baz (long i)
{
  if (i)
    return fn (0);
  else
    {
      char s[ASIZE];
      s[0] = 'a';
      s[ASIZE - 1] = 'b';
      foo (s);
      foo (s);
      return fn (0);
    }
}

int
main (void)
{
  if (bar ())
    abort ();
  if (baz (0) != 1)
    abort ();
  if (baz (1) != 1)
    abort ();
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080922-1.c<|end_filename|>
typedef struct rtx_def *rtx;
typedef struct rtvec_def *rtvec;
enum rtx_code { PARALLEL, SET };
union rtunion_def {
    rtx rt_rtx;
    rtvec rt_rtvec;
};
typedef union rtunion_def rtunion;
struct rtx_def {
    rtunion fld;
};
struct rtvec_def {
    int num_elem;
};
extern rtx operand;

rtx peephole2_insns (rtx x0, enum rtx_code code)
{
  switch (code)
    {
      case SET:
	  operand = (((x0)->fld).rt_rtx);
	  return operand;
      case PARALLEL:
	  if ((((((x0)->fld).rt_rtvec))->num_elem) == 2)
	    return 0;
	  break;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40432.c<|end_filename|>
/* Test that SRA produces valid gimple when handling both type punning by means
   of VCE and creating an access to a union.  */

union U {
  struct something *sth;
  void *nothing;
};

void
foo (union U *target, void *p)
{
  union U u;

  u.nothing = p;
  *target = u;
  return;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21761.c<|end_filename|>
void f1()
{
  long bit=0, exponent;
  exponent = -exponent;
  for (bit = 1; exponent; bit <<= 1)
      if (exponent & bit)
              exponent ^= bit;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040216-1.c<|end_filename|>
int foo (int a, int b, int c, int d)
{
  return ~a & ~b & ~c & ~d;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/mipscop-1.c<|end_filename|>
/* { dg-do compile { target mips*-*-* } } */

register unsigned int cp0count asm ("$c0r1");

int __attribute__ ((nomips16))
main (int argc, char *argv[])
{
  unsigned int d;

  d = cp0count + 3;
  printf ("%d\n", d);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060826-1.c<|end_filename|>
typedef _Complex double S;
S bar (void);
void quux (S, S);
void foo (void)
{
 quux (bar(), bar());
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040214-2.c<|end_filename|>
/* http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01307.html */

typedef struct xdef xdef;
struct xdef
{
  char xtyp;
  xdef *next;
  int y;
};

extern void b ();
extern void *foo (void *bar);
extern void *foo2 (void *bar1, void *bar2);
extern void *qwe;

static void
c (xdef * xp)
{
  b (xp);
}
static void
a (xdef ** xpp)
{
  xdef *xp;
  xp = *xpp;

  foo (xp);
  xp = foo2 (xp, qwe);
  b (xp->next);
  foo (xp);
  if (xp->y)
  {
    foo (xp);
    if (xp)
    {
      xdef *p = foo2 (xp, qwe);
      foo2 (xp, p);
      xp = foo (p);
    }
    else
    {
      foo2 (foo(*xpp), *xpp);
    }
  }
  *xpp = foo2 (xpp, qwe);
}

void
b (xdef ** xpp)
{
  xdef *xp = *xpp;
  if (!xp)
    return;
  if (xp->xtyp == 0)
    a (xpp);
  c (xp);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37381.c<|end_filename|>
extern unsigned int __invalid_size_argument_for_IOC;
typedef unsigned int __u32;
struct video_window
{
  __u32 x, y;
  __u32 width, height;
};
typedef unsigned long XID;
typedef XID Window;
typedef struct _XExtData
{
  Window root;
}
Screen;
typedef struct
{
  int border_width;
}
XWindowAttributes;
typedef struct _XDisplay Display;
typedef struct
{
  int default_screen;
  Screen *screens;
}
 *_XPrivDisplay;
typedef struct
{
  int x, y;
}
XSizeHints;
typedef struct
{
  unsigned short hdisplay;
  unsigned short vdisplay;
}
XF86VidModeModeInfo;
Display *display;
int tfd;
int ccapt;
int tml;
int fswidth = 0;
int fsheight = 0;
Window fmwin;
XF86VidModeModeInfo **modelines, *fullscreenmode = ((void *) 0);
struct video_window vswin;
DoFullScreen (void)
{
  int i;
  int rx, ry;
  Window junkwin;
  XSizeHints fmsizehints;
  XWindowAttributes fmwinattr;
  if (ioctl
      (tfd,
       (((1U) << (((0 + 8) + 8) + 14)) | ((('v')) << (0 + 8)) | (((8)) << 0) |
	(((((sizeof (int) == sizeof (int[1])
	     && sizeof (int) <
	     (1 << 14)) ? sizeof (int) : __invalid_size_argument_for_IOC))) <<
	 ((0 + 8) + 8))), &ccapt) < 0)
    {
      perror ("ioctl VIDIOCCAPTURE");
    }
  if (!XTranslateCoordinates
      (display, fmwin,
       ((&((_XPrivDisplay) display)->
	 screens[(((_XPrivDisplay) display)->default_screen)])->root),
       -fmwinattr.border_width, -fmwinattr.border_width, &rx, &ry, &junkwin))
    {
    }
  vswin.width = fswidth;
  vswin.height = fsheight;
  vswin.x = fmsizehints.x + rx;
  vswin.y = fmsizehints.y + ry;
  if (ioctl
      (tfd,
       (((1U) << (((0 + 8) + 8) + 14)) | ((('v')) << (0 + 8)) | (((8)) << 0) |
	(((((sizeof (int) == sizeof (int[1])
	     && sizeof (int) <
	     (1 << 14)) ? sizeof (int) : __invalid_size_argument_for_IOC))) <<
	 ((0 + 8) + 8))), &ccapt) < 0)
    {
      XF86VidModeGetAllModeLines (display, XDefaultScreen (display), &tml,
				  &modelines);
	{
	  if ((modelines[i]->hdisplay == fswidth)
	      && (modelines[i]->vdisplay == fsheight))
	    {
	      fullscreenmode = modelines[i];
	    }
	}
	{
	  XF86VidModeSetViewPort (display, XDefaultScreen (display), vswin.x,
				  vswin.y);
	}
    }
}


<|start_filename|>v2/headers/linux_386/predefined.h<|end_filename|>
// Code generated by $ go generate - DO NOT EDIT.

// +build ignore

#define __SSP_STRONG__ 3
#define __DBL_MIN_EXP__ (-1021)
#define __FLT32X_MAX_EXP__ 1024
#define __pentiumpro__ 1
#define __UINT_LEAST16_MAX__ 0xffff
#define __ATOMIC_ACQUIRE 2
#define __FLT128_MAX_10_EXP__ 4932
#define __FLT_MIN__ 1.17549435082228750796873653722224568e-38F
#define __UINT_LEAST8_TYPE__ unsigned char
#define __SIZEOF_FLOAT80__ 12
#define __INTMAX_C(c) c ## LL
#define __CHAR_BIT__ 8
#define __UINT8_MAX__ 0xff
#define __WINT_MAX__ 0xffffffffU
#define __FLT32_MIN_EXP__ (-125)
#define __ORDER_LITTLE_ENDIAN__ 1234
#define __SIZE_MAX__ 0xffffffffU
#define __WCHAR_MAX__ 0x7fffffffL
#define __DBL_DENORM_MIN__ ((double)4.94065645841246544176568792868221372e-324L)
#define __FLT32X_DECIMAL_DIG__ 17
#define __FLT_EVAL_METHOD__ 2
#define __unix__ 1
#define __FLT64_DECIMAL_DIG__ 17
#define __UINT_FAST64_MAX__ 0xffffffffffffffffULL
#define __SIG_ATOMIC_TYPE__ int
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __FLT32_HAS_DENORM__ 1
#define __UINT_FAST8_MAX__ 0xff
#define __has_include(STR) __has_include__(STR)
#define __DEC64_MAX_EXP__ 385
#define __INT8_C(c) c
#define __INT_LEAST8_WIDTH__ 8
#define __UINT_LEAST64_MAX__ 0xffffffffffffffffULL
#define __SHRT_MAX__ 0x7fff
#define __LDBL_MAX__ 1.18973149535723176502126385303097021e+4932L
#define __FLT64X_MAX_10_EXP__ 4932
#define __UINT_LEAST8_MAX__ 0xff
#define __FLT128_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966F128
#define __UINTMAX_TYPE__ long long unsigned int
#define __linux 1
#define __DEC32_EPSILON__ 1E-6DF
#define __FLT_EVAL_METHOD_TS_18661_3__ 2
#define __unix 1
#define __UINT32_MAX__ 0xffffffffU
#define __LDBL_MAX_EXP__ 16384
#define __FLT128_MIN_EXP__ (-16381)
#define __WINT_MIN__ 0U
#define __linux__ 1
#define __FLT128_MIN_10_EXP__ (-4931)
#define __INT_LEAST16_WIDTH__ 16
#define __SCHAR_MAX__ 0x7f
#define __FLT128_MANT_DIG__ 113
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __INT64_C(c) c ## LL
#define __DBL_DIG__ 15
#define __FLT64X_MANT_DIG__ 64
#define __SIZEOF_INT__ 4
#define __SIZEOF_POINTER__ 4
#define __USER_LABEL_PREFIX__
#define __FLT64X_EPSILON__ 1.08420217248550443400745280086994171e-19F64x
#define __STDC_HOSTED__ 1
#define __LDBL_HAS_INFINITY__ 1
#define __FLT32_DIG__ 6
#define __FLT_EPSILON__ 1.19209289550781250000000000000000000e-7F
#define __SHRT_WIDTH__ 16
#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
#define __DEC32_MAX__ 9.999999E96DF
#define __FLT64X_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951F64x
#define __FLT32X_HAS_INFINITY__ 1
#define __INT32_MAX__ 0x7fffffff
#define __INT_WIDTH__ 32
#define __SIZEOF_LONG__ 4
#define __STDC_IEC_559__ 1
#define __STDC_ISO_10646__ 201706L
#define __UINT16_C(c) c
#define __PTRDIFF_WIDTH__ 32
#define __DECIMAL_DIG__ 21
#define __FLT64_EPSILON__ 2.22044604925031308084726333618164062e-16F64
#define __INTMAX_WIDTH__ 64
#define __has_include_next(STR) __has_include_next__(STR)
#define __FLT64X_MIN_10_EXP__ (-4931)
#define __LDBL_HAS_QUIET_NAN__ 1
#define __FLT64_MANT_DIG__ 53
#define __pie__ 2
#define __FLT_HAS_DENORM__ 1
#define __SIZEOF_LONG_DOUBLE__ 12
#define __BIGGEST_ALIGNMENT__ 16
#define __FLT64_MAX_10_EXP__ 308
#define __i686 1
#define __FLT32_HAS_INFINITY__ 1
#define __DBL_MAX__ ((double)1.79769313486231570814527423731704357e+308L)
#define __INT_FAST32_MAX__ 0x7fffffff
#define __DBL_HAS_INFINITY__ 1
#define __DEC32_MIN_EXP__ (-94)
#define __INTPTR_WIDTH__ 32
#define __FLT32X_HAS_DENORM__ 1
#define __INT_FAST16_TYPE__ int
#define __STRICT_ANSI__ 1
#define __LDBL_HAS_DENORM__ 1
#define __FLT128_HAS_INFINITY__ 1
#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
#define __INT_LEAST32_MAX__ 0x7fffffff
#define __DEC32_MIN__ 1E-95DF
#define __DBL_MAX_EXP__ 1024
#define __WCHAR_WIDTH__ 32
#define __FLT32_MAX__ 3.40282346638528859811704183484516925e+38F32
#define __DEC128_EPSILON__ 1E-33DL
#define __ATOMIC_HLE_RELEASE 131072
#define __PTRDIFF_MAX__ 0x7fffffff
#define __STDC_NO_THREADS__ 1
#define __ATOMIC_HLE_ACQUIRE 65536
#define __FLT32_HAS_QUIET_NAN__ 1
#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
#define __SIZEOF_SIZE_T__ 4
#define __FLT64X_MIN_EXP__ (-16381)
#define __SIZEOF_WINT_T__ 4
#define __LONG_LONG_WIDTH__ 64
#define __FLT32_MAX_EXP__ 128
#define __GXX_ABI_VERSION 1011
#define __FLT_MIN_EXP__ (-125)
#define __i686__ 1
#define __FLT64X_HAS_QUIET_NAN__ 1
#define __INT_FAST64_TYPE__ long long int
#define __FLT64_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F64
#define __DBL_MIN__ ((double)2.22507385850720138309023271733240406e-308L)
#define __PIE__ 2
#define __FLT32X_EPSILON__ 2.22044604925031308084726333618164062e-16F32x
#define __DECIMAL_BID_FORMAT__ 1
#define __FLT64_MIN_EXP__ (-1021)
#define __FLT64_MIN_10_EXP__ (-307)
#define __FLT64X_DECIMAL_DIG__ 21
#define __DEC128_MIN__ 1E-6143DL
#define __REGISTER_PREFIX__
#define __UINT16_MAX__ 0xffff
#define __DBL_HAS_DENORM__ 1
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __UINT8_TYPE__ unsigned char
#define __NO_INLINE__ 1
#define __i386 1
#define __FLT_MANT_DIG__ 24
#define __LDBL_DECIMAL_DIG__ 21
#define __VERSION__ "7.3.0"
#define __UINT64_C(c) c ## ULL
#define _STDC_PREDEF_H 1
#define __FLT128_MAX_EXP__ 16384
#define __FLT32_MANT_DIG__ 24
#define __FLOAT_WORD_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __STDC_IEC_559_COMPLEX__ 1
#define __FLT128_HAS_DENORM__ 1
#define __FLT128_DIG__ 33
#define __SCHAR_WIDTH__ 8
#define __INT32_C(c) c
#define __DEC64_EPSILON__ 1E-15DD
#define __ORDER_PDP_ENDIAN__ 3412
#define __DEC128_MIN_EXP__ (-6142)
#define __code_model_32__ 1
#define __FLT32_MAX_10_EXP__ 38
#define __INT_FAST32_TYPE__ int
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __FLT64X_HAS_INFINITY__ 1
#define __INT16_MAX__ 0x7fff
#define __i386__ 1
#define __SIZE_TYPE__ unsigned int
#define __UINT64_MAX__ 0xffffffffffffffffULL
#define __FLT64X_DIG__ 18
#define __INT8_TYPE__ signed char
#define __ELF__ 1
#define __FLT_RADIX__ 2
#define __INT_LEAST16_TYPE__ short int
#define __LDBL_EPSILON__ 1.08420217248550443400745280086994171e-19L
#define __UINTMAX_C(c) c ## ULL
#define __SIG_ATOMIC_MAX__ 0x7fffffff
#define __SIZEOF_PTRDIFF_T__ 4
#define __FLT32X_MANT_DIG__ 53
#define __FLT32X_MIN_EXP__ (-1021)
#define __DEC32_SUBNORMAL_MIN__ 0.000001E-95DF
#define __pentiumpro 1
#define __INT_FAST16_MAX__ 0x7fffffff
#define __FLT64_DIG__ 15
#define __UINT_FAST32_MAX__ 0xffffffffU
#define __UINT_LEAST64_TYPE__ long long unsigned int
#define __FLT_HAS_QUIET_NAN__ 1
#define __FLT_MAX_10_EXP__ 38
#define __LONG_MAX__ 0x7fffffffL
#define __FLT64X_HAS_DENORM__ 1
#define __DEC128_SUBNORMAL_MIN__ 0.000000000000000000000000000000001E-6143DL
#define __FLT_HAS_INFINITY__ 1
#define __UINT_FAST16_TYPE__ unsigned int
#define __DEC64_MAX__ 9.999999999999999E384DD
#define __INT_FAST32_WIDTH__ 32
#define __CHAR16_TYPE__ short unsigned int
#define __PRAGMA_REDEFINE_EXTNAME 1
#define __SIZE_WIDTH__ 32
#define __SEG_FS 1
#define __INT_LEAST16_MAX__ 0x7fff
#define __DEC64_MANT_DIG__ 16
#define __INT64_MAX__ 0x7fffffffffffffffLL
#define __UINT_LEAST32_MAX__ 0xffffffffU
#define __SEG_GS 1
#define __FLT32_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F32
#define __SIG_ATOMIC_WIDTH__ 32
#define __INT_LEAST64_TYPE__ long long int
#define __INT16_TYPE__ short int
#define __INT_LEAST8_TYPE__ signed char
#define __STDC_VERSION__ 199901L
#define __DEC32_MAX_EXP__ 97
#define __INT_FAST8_MAX__ 0x7f
#define __FLT128_MAX__ 1.18973149535723176508575932662800702e+4932F128
#define __INTPTR_MAX__ 0x7fffffff
#define __FLT64_HAS_QUIET_NAN__ 1
#define __FLT32_MIN_10_EXP__ (-37)
#define __FLT32X_DIG__ 15
#define __LDBL_MANT_DIG__ 64
#define __DBL_HAS_QUIET_NAN__ 1
#define __FLT64_HAS_INFINITY__ 1
#define __FLT64X_MAX__ 1.18973149535723176502126385303097021e+4932F64x
#define __SIG_ATOMIC_MIN__ (-__SIG_ATOMIC_MAX__ - 1)
#define __INTPTR_TYPE__ int
#define __UINT16_TYPE__ short unsigned int
#define __WCHAR_TYPE__ long int
#define __SIZEOF_FLOAT__ 4
#define __pic__ 2
#define __UINTPTR_MAX__ 0xffffffffU
#define __INT_FAST64_WIDTH__ 64
#define __DEC64_MIN_EXP__ (-382)
#define __FLT32_DECIMAL_DIG__ 9
#define __INT_FAST64_MAX__ 0x7fffffffffffffffLL
#define __FLT_DIG__ 6
#define __FLT64X_MAX_EXP__ 16384
#define __UINT_FAST64_TYPE__ long long unsigned int
#define __INT_MAX__ 0x7fffffff
#define __INT64_TYPE__ long long int
#define __FLT_MAX_EXP__ 128
#define __DBL_MANT_DIG__ 53
#define __SIZEOF_FLOAT128__ 16
#define __INT_LEAST64_MAX__ 0x7fffffffffffffffLL
#define __DEC64_MIN__ 1E-383DD
#define __WINT_TYPE__ unsigned int
#define __UINT_LEAST32_TYPE__ unsigned int
#define __SIZEOF_SHORT__ 2
#define __LDBL_MIN_EXP__ (-16381)
#define __FLT64_MAX__ 1.79769313486231570814527423731704357e+308F64
#define __WINT_WIDTH__ 32
#define __INT_LEAST8_MAX__ 0x7f
#define __FLT32X_MAX_10_EXP__ 308
#define __LDBL_MAX_10_EXP__ 4932
#define __ATOMIC_RELAXED 0
#define __DBL_EPSILON__ ((double)2.22044604925031308084726333618164062e-16L)
#define __FLT128_MIN__ 3.36210314311209350626267781732175260e-4932F128
#define __UINT8_C(c) c
#define __FLT64_MAX_EXP__ 1024
#define __INT_LEAST32_TYPE__ int
#define __SIZEOF_WCHAR_T__ 4
#define __UINT64_TYPE__ long long unsigned int
#define __FLT128_HAS_QUIET_NAN__ 1
#define __INT_FAST8_TYPE__ signed char
#define __FLT64X_MIN__ 3.36210314311209350626267781732175260e-4932F64x
#define __FLT64_HAS_DENORM__ 1
#define __FLT32_EPSILON__ 1.19209289550781250000000000000000000e-7F32
#define __DBL_DECIMAL_DIG__ 17
#define __INT_FAST8_WIDTH__ 8
#define __DEC_EVAL_METHOD__ 2
#define __FLT32X_MAX__ 1.79769313486231570814527423731704357e+308F32x
#define __ORDER_BIG_ENDIAN__ 4321
#define __UINT32_C(c) c ## U
#define __INTMAX_MAX__ 0x7fffffffffffffffLL
#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
#define __FLT_DENORM_MIN__ 1.40129846432481707092372958328991613e-45F
#define __INT8_MAX__ 0x7f
#define __LONG_WIDTH__ 32
#define __PIC__ 2
#define __UINT_FAST32_TYPE__ unsigned int
#define __CHAR32_TYPE__ unsigned int
#define __FLT_MAX__ 3.40282346638528859811704183484516925e+38F
#define __INT32_TYPE__ int
#define __SIZEOF_DOUBLE__ 8
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT64_MIN__ 2.22507385850720138309023271733240406e-308F64
#define __INT_LEAST32_WIDTH__ 32
#define __INTMAX_TYPE__ long long int
#define __DEC128_MAX_EXP__ 6145
#define __FLT32X_HAS_QUIET_NAN__ 1
#define __ATOMIC_CONSUME 1
#define __INT_FAST16_WIDTH__ 32
#define __UINTMAX_MAX__ 0xffffffffffffffffULL
#define __DEC32_MANT_DIG__ 7
#define __FLT32X_DENORM_MIN__ 4.94065645841246544176568792868221372e-324F32x
#define __DBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 3.64519953188247460252840593361941982e-4951L
#define __INT16_C(c) c
#define __STDC__ 1
#define __PTRDIFF_TYPE__ int
#define __ATOMIC_SEQ_CST 5
#define __UINT32_TYPE__ unsigned int
#define __FLT32X_MIN_10_EXP__ (-307)
#define __UINTPTR_TYPE__ unsigned int
#define __DEC64_SUBNORMAL_MIN__ 0.000000000000001E-383DD
#define __DEC128_MANT_DIG__ 34
#define __LDBL_MIN_10_EXP__ (-4931)
#define __FLT128_EPSILON__ 1.92592994438723585305597794258492732e-34F128
#define __SIZEOF_LONG_LONG__ 8
#define __FLT128_DECIMAL_DIG__ 36
#define __FLT32X_MIN__ 2.22507385850720138309023271733240406e-308F32x
#define __LDBL_DIG__ 18
#define __FLT_DECIMAL_DIG__ 9
#define __UINT_FAST16_MAX__ 0xffffffffU
#define __INT_LEAST64_WIDTH__ 64
#define __UINT_FAST8_TYPE__ unsigned char
#define __ATOMIC_ACQ_REL 4
#define __ATOMIC_RELEASE 3


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920826-1.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */

f(int*x){goto*(char)*x;}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27282.c<|end_filename|>
/* This test used to ICE on PowerPC at -O due to combine GEN_INT bug.  */
typedef struct _ColRowInfo ColRowInfo;
typedef struct { }
GnmSheetRange;
struct _ColRowInfo
{
  float size_pts;
  unsigned margin_a:3;
  unsigned margin_b:3;
  unsigned visible:1;
};
colrow_equal (ColRowInfo const *a, ColRowInfo const *b)
{
  return a->size_pts == b->size_pts && a->margin_a == b->margin_a
    && a->visible == b->visible;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26781-1.c<|end_filename|>
void zconfdump(void)
{
  char *p, *p2;
  for (p2 = p; p2; )
    {
      char __a0, __a1, __a2;
      __a0 = ((__const char *) ("\"\\"))[0];
      if (__a0)
        return;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031125-2.c<|end_filename|>
struct BlobSpan {
	int right;
};
/* This test makes sure we don't accidentally cause a bad insertion to occur
   by choosing the wrong variable name so that we end up with a use not
   dominated by a def. */
void render_blob_line(struct BlobSpan blobdata) {
	int buf[4 * 8];
	int *data = buf;
	int i, n = 0;
	if (blobdata.right)
		n++;
	if (n)
		for (; i < 2 * n;)
			data[i] = 0;
	n *= 2;
	for (; n;) ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20101216-1.c<|end_filename|>
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef union
{
  double value;
  struct
  {
    __uint32_t msw;
    __uint32_t lsw;
  } parts;
} ieee_double_shape_type;
two52= 4.50359962737049600000e+15,
w6 = -1.63092934096575273989e-03;
double sin_pi(double x)
{
 double y,z;
 __int32_t n,ix;
ieee_double_shape_type gh_u;
 gh_u.value = (x); 
(ix) = gh_u.parts.msw;
                if(ix<0x43300000)
 z = y+two52;
 ieee_double_shape_type gl_u;
 gl_u.value = (z);
 (n) = gl_u.parts.lsw;
  n &= 1;
 switch (n)
 {
     case 0:
__kernel_sin();
     }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45109.c<|end_filename|>
struct o_fsm_t;
struct o_fsm_event_t;

typedef void (*fn_t) (struct o_fsm_t *,
		      struct o_fsm_event_t const *);

struct o_fsm_state_t {
    fn_t dispatch;
};

struct o_fsm_t {
    fn_t dispatch;
};

extern struct o_fsm_state_t o_fsm_tran(struct o_fsm_t *fsm,
				       struct o_fsm_state_t next_state);
static void plist_parser_state_start(struct o_fsm_t *fsm,
				     struct o_fsm_event_t const *fsm_event);

struct o_fsm_state_t o_fsm_state(fn_t dispatch_fcn)
{
  return *(struct o_fsm_state_t *)&dispatch_fcn;
}

typedef struct _o_plist_parser_t {
    struct o_fsm_t fsm;
} o_plist_parser_t;

static void plist_parser_state_start(struct o_fsm_t *fsm,
				     struct o_fsm_event_t const *fsm_event)
{
}

void o_plist_deserialize_xml(int fin)
{
  o_plist_parser_t parser;
  o_fsm_tran(&parser.fsm, o_fsm_state(plist_parser_state_start));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53411.c<|end_filename|>
/* PR middle-end/53411 */
/* { dg-require-effective-target untyped_assembly } */

int a, b, c, d, e, f, g, h;
void fn1 (void);
int fn2 (void);

int
fn3 (x)
     int x;
{
  return a ? 0 : x;
}

void
fn4 (char x)
{
  int i, j, k;
  for (; e; e++)
    if (fn2 ())
      {
	f = 1;
	k = 0;
	for (; k <= 1; k++)
	  {
	    j = ~x;
	    i = f * j;
	    h = (fn3 (i | 0 <= c ^ 9L) != b | d) & 8;
	    g = x | 1;
	    fn1 ();
	  }
      }
  c = x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23929.c<|end_filename|>
/* PR tree-optimization/23929 */

extern void bar (char *);

void
foo (int n, char *z)
{
  char b[2048];
  int x, y;

  bar (b);
  for (y = 0; y < 60; y++)
    if (n == 600)
      for (x = 0; x < 320;)
	{
	  *z++ = b[x];
	  x += 1;
	  *z++ = b[x];
	  x += 1;
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42237.c<|end_filename|>
struct A
{
  int p;
};

struct B
{
  struct A n;
  struct A m;
  int x;
  int y;
  int z;
};

extern int g1, g2;

static void __attribute__((noinline)) foo (struct B *b)
{
  int t;

  t = b->n.p;
  g1 = t;
  b->n.p = t+1;
  g2 = b->m.p;

  b->m = b->n;
}

void bar (struct B *b)
{
  foo (b);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr16566-1.c<|end_filename|>
/* ICE with flexible arrays in non-lvalue structures.  Bug 16566
   (comment #3).  */

struct S;

struct C {
    int i;
    struct S *tab[];
};

struct S { struct C c; };

void foo (struct S *x) {
  foo(((void)1, x->c).tab[0]);
}


<|start_filename|>parser.go<|end_filename|>
// Code generated by goyacc - DO NOT EDIT.

// Copyright 2016 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Based on [0], 6.10. Substantial portions of expression AST size
// optimizations are from [2], license of which follows.

// ----------------------------------------------------------------------------

// Copyright 2013 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This grammar is derived from the C grammar in the 'ansitize'
// program, which carried this notice:
//
// Copyright (c) 2006 <NAME>,
// 	Massachusetts Institute of Technology
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated
// documentation files (the "Software"), to deal in the
// Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute,
// sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the
// Software.
//
// The software is provided "as is", without warranty of any
// kind, express or implied, including but not limited to the
// warranties of merchantability, fitness for a particular
// purpose and noninfringement.  In no event shall the authors
// or copyright holders be liable for any claim, damages or
// other liability, whether in an action of contract, tort or
// otherwise, arising from, out of or in connection with the
// software or the use or other dealings in the software.

package cc

import __yyfmt__ "fmt"

import (
	"fmt"

	"github.com/cznic/golex/lex"
	"github.com/cznic/xc"
)

type yySymType struct {
	yys       int
	Token     xc.Token
	groupPart Node
	node      Node
	toks      PPTokenList
}

type yyXError struct {
	state, xsym int
}

const (
	yyDefault           = 57460
	yyEofCode           = 57344
	ADDASSIGN           = 57346
	ALIGNOF             = 57347
	ANDAND              = 57348
	ANDASSIGN           = 57349
	ARROW               = 57350
	ASM                 = 57351
	AUTO                = 57352
	BOOL                = 57353
	BREAK               = 57354
	CASE                = 57355
	CAST                = 57356
	CHAR                = 57357
	CHARCONST           = 57358
	COMPLEX             = 57359
	CONST               = 57360
	CONSTANT_EXPRESSION = 1048577
	CONTINUE            = 57361
	DDD                 = 57362
	DEC                 = 57363
	DEFAULT             = 57364
	DIVASSIGN           = 57365
	DO                  = 57366
	DOUBLE              = 57367
	ELSE                = 57368
	ENUM                = 57369
	EQ                  = 57370
	EXTERN              = 57371
	FLOAT               = 57372
	FLOATCONST          = 57373
	FOR                 = 57374
	GEQ                 = 57375
	GOTO                = 57376
	IDENTIFIER          = 57377
	IDENTIFIER_LPAREN   = 57378
	IDENTIFIER_NONREPL  = 57379
	IF                  = 57380
	INC                 = 57381
	INLINE              = 57382
	INT                 = 57383
	INTCONST            = 57384
	LEQ                 = 57385
	LONG                = 57386
	LONGCHARCONST       = 57387
	LONGSTRINGLITERAL   = 57388
	LSH                 = 57389
	LSHASSIGN           = 57390
	MODASSIGN           = 57391
	MULASSIGN           = 57392
	NEQ                 = 57393
	NOELSE              = 57394
	NORETURN            = 57395
	NOSEMI              = 57396
	ORASSIGN            = 57397
	OROR                = 57398
	PPDEFINE            = 57399
	PPELIF              = 57400
	PPELSE              = 57401
	PPENDIF             = 57402
	PPERROR             = 57403
	PPHASH_NL           = 57404
	PPHEADER_NAME       = 57405
	PPIF                = 57406
	PPIFDEF             = 57407
	PPIFNDEF            = 57408
	PPINCLUDE           = 57409
	PPINCLUDE_NEXT      = 57410
	PPLINE              = 57411
	PPNONDIRECTIVE      = 57412
	PPNUMBER            = 57413
	PPOTHER             = 57414
	PPPASTE             = 57415
	PPPRAGMA            = 57416
	PPUNDEF             = 57417
	PREPROCESSING_FILE  = 1048576
	REGISTER            = 57418
	RESTRICT            = 57419
	RETURN              = 57420
	RSH                 = 57421
	RSHASSIGN           = 57422
	SHORT               = 57423
	SIGNED              = 57424
	SIZEOF              = 57425
	STATIC              = 57426
	STATIC_ASSERT       = 57427
	STRINGLITERAL       = 57428
	STRUCT              = 57429
	SUBASSIGN           = 57430
	SWITCH              = 57431
	TRANSLATION_UNIT    = 1048578
	TYPEDEF             = 57432
	TYPEDEFNAME         = 57433
	TYPEOF              = 57434
	UNARY               = 57435
	UNION               = 57436
	UNSIGNED            = 57437
	VOID                = 57438
	VOLATILE            = 57439
	WHILE               = 57440
	XORASSIGN           = 57441
	yyErrCode           = 57345

	yyMaxDepth = 200
	yyTabOfs   = -328
)

var (
	yyXLAT = map[int]int{
		40:      0,   // '(' (333x)
		42:      1,   // '*' (294x)
		57377:   2,   // IDENTIFIER (241x)
		38:      3,   // '&' (226x)
		43:      4,   // '+' (226x)
		45:      5,   // '-' (226x)
		57348:   6,   // ANDAND (226x)
		57363:   7,   // DEC (226x)
		57381:   8,   // INC (226x)
		59:      9,   // ';' (220x)
		41:      10,  // ')' (203x)
		44:      11,  // ',' (191x)
		57428:   12,  // STRINGLITERAL (169x)
		91:      13,  // '[' (167x)
		33:      14,  // '!' (150x)
		126:     15,  // '~' (150x)
		57347:   16,  // ALIGNOF (150x)
		57358:   17,  // CHARCONST (150x)
		57373:   18,  // FLOATCONST (150x)
		57384:   19,  // INTCONST (150x)
		57387:   20,  // LONGCHARCONST (150x)
		57388:   21,  // LONGSTRINGLITERAL (150x)
		57425:   22,  // SIZEOF (150x)
		57439:   23,  // VOLATILE (141x)
		57360:   24,  // CONST (139x)
		57419:   25,  // RESTRICT (139x)
		125:     26,  // '}' (132x)
		57353:   27,  // BOOL (129x)
		57357:   28,  // CHAR (129x)
		57359:   29,  // COMPLEX (129x)
		57367:   30,  // DOUBLE (129x)
		57369:   31,  // ENUM (129x)
		57372:   32,  // FLOAT (129x)
		57383:   33,  // INT (129x)
		57386:   34,  // LONG (129x)
		57423:   35,  // SHORT (129x)
		57424:   36,  // SIGNED (129x)
		57429:   37,  // STRUCT (129x)
		57433:   38,  // TYPEDEFNAME (129x)
		57434:   39,  // TYPEOF (129x)
		57436:   40,  // UNION (129x)
		57437:   41,  // UNSIGNED (129x)
		57438:   42,  // VOID (129x)
		58:      43,  // ':' (126x)
		57426:   44,  // STATIC (120x)
		57352:   45,  // AUTO (114x)
		57371:   46,  // EXTERN (114x)
		57382:   47,  // INLINE (114x)
		57395:   48,  // NORETURN (114x)
		57418:   49,  // REGISTER (114x)
		57432:   50,  // TYPEDEF (114x)
		57344:   51,  // $end (106x)
		61:      52,  // '=' (96x)
		123:     53,  // '{' (93x)
		57503:   54,  // Expression (88x)
		93:      55,  // ']' (86x)
		46:      56,  // '.' (85x)
		57351:   57,  // ASM (84x)
		57427:   58,  // STATIC_ASSERT (79x)
		37:      59,  // '%' (77x)
		47:      60,  // '/' (77x)
		60:      61,  // '<' (77x)
		62:      62,  // '>' (77x)
		63:      63,  // '?' (77x)
		94:      64,  // '^' (77x)
		124:     65,  // '|' (77x)
		57346:   66,  // ADDASSIGN (77x)
		57349:   67,  // ANDASSIGN (77x)
		57350:   68,  // ARROW (77x)
		57365:   69,  // DIVASSIGN (77x)
		57370:   70,  // EQ (77x)
		57375:   71,  // GEQ (77x)
		57385:   72,  // LEQ (77x)
		57389:   73,  // LSH (77x)
		57390:   74,  // LSHASSIGN (77x)
		57391:   75,  // MODASSIGN (77x)
		57392:   76,  // MULASSIGN (77x)
		57393:   77,  // NEQ (77x)
		57397:   78,  // ORASSIGN (77x)
		57398:   79,  // OROR (77x)
		57421:   80,  // RSH (77x)
		57422:   81,  // RSHASSIGN (77x)
		57430:   82,  // SUBASSIGN (77x)
		57441:   83,  // XORASSIGN (77x)
		10:      84,  // '\n' (58x)
		57376:   85,  // GOTO (55x)
		57440:   86,  // WHILE (53x)
		57354:   87,  // BREAK (52x)
		57355:   88,  // CASE (52x)
		57361:   89,  // CONTINUE (52x)
		57364:   90,  // DEFAULT (52x)
		57366:   91,  // DO (52x)
		57374:   92,  // FOR (52x)
		57380:   93,  // IF (52x)
		57414:   94,  // PPOTHER (52x)
		57420:   95,  // RETURN (52x)
		57431:   96,  // SWITCH (52x)
		57402:   97,  // PPENDIF (44x)
		57401:   98,  // PPELSE (40x)
		57400:   99,  // PPELIF (39x)
		57399:   100, // PPDEFINE (35x)
		57403:   101, // PPERROR (35x)
		57404:   102, // PPHASH_NL (35x)
		57406:   103, // PPIF (35x)
		57407:   104, // PPIFDEF (35x)
		57408:   105, // PPIFNDEF (35x)
		57409:   106, // PPINCLUDE (35x)
		57410:   107, // PPINCLUDE_NEXT (35x)
		57411:   108, // PPLINE (35x)
		57412:   109, // PPNONDIRECTIVE (35x)
		57416:   110, // PPPRAGMA (35x)
		57417:   111, // PPUNDEF (35x)
		57368:   112, // ELSE (32x)
		57555:   113, // TypeQualifier (28x)
		57504:   114, // ExpressionList (26x)
		57528:   115, // PPTokenList (22x)
		57530:   116, // PPTokens (22x)
		57499:   117, // EnumSpecifier (20x)
		57550:   118, // StructOrUnion (20x)
		57551:   119, // StructOrUnionSpecifier (20x)
		57558:   120, // TypeSpecifier (20x)
		57505:   121, // ExpressionListOpt (18x)
		57470:   122, // BasicAssemblerStatement (15x)
		57476:   123, // CompoundStatement (15x)
		57482:   124, // DeclarationSpecifiers (15x)
		57511:   125, // FunctionSpecifier (15x)
		57529:   126, // PPTokenListOpt (15x)
		57545:   127, // StorageClassSpecifier (15x)
		57468:   128, // AssemblerStatement (13x)
		57507:   129, // ExpressionStatement (12x)
		57525:   130, // IterationStatement (12x)
		57526:   131, // JumpStatement (12x)
		57527:   132, // LabeledStatement (12x)
		57535:   133, // Pointer (12x)
		57539:   134, // SelectionStatement (12x)
		57543:   135, // Statement (12x)
		57536:   136, // PointerOpt (11x)
		57484:   137, // Declarator (9x)
		57544:   138, // StaticAssertDeclaration (9x)
		57478:   139, // ControlLine (8x)
		57514:   140, // GroupPart (8x)
		57518:   141, // IfGroup (8x)
		57519:   142, // IfSection (8x)
		57552:   143, // TextLine (8x)
		57479:   144, // Declaration (7x)
		57454:   145, // $@4 (6x)
		57477:   146, // ConstantExpression (6x)
		57362:   147, // DDD (6x)
		57512:   148, // GroupList (6x)
		57466:   149, // AssemblerOperand (5x)
		57469:   150, // AssemblerSymbolicNameOpt (5x)
		57513:   151, // GroupListOpt (5x)
		57538:   152, // ReplacementList (5x)
		57540:   153, // SpecifierQualifierList (5x)
		57556:   154, // TypeQualifierList (5x)
		57459:   155, // $@9 (4x)
		57461:   156, // AbstractDeclarator (4x)
		57467:   157, // AssemblerOperands (4x)
		57483:   158, // DeclarationSpecifiersOpt (4x)
		57488:   159, // Designator (4x)
		57523:   160, // Initializer (4x)
		57531:   161, // ParameterDeclaration (4x)
		57554:   162, // TypeName (4x)
		57557:   163, // TypeQualifierListOpt (4x)
		57465:   164, // AssemblerInstructions (3x)
		57475:   165, // CommaOpt (3x)
		57486:   166, // Designation (3x)
		57487:   167, // DesignationOpt (3x)
		57489:   168, // DesignatorList (3x)
		57506:   169, // ExpressionOpt (3x)
		57515:   170, // IdentifierList (3x)
		57520:   171, // InitDeclarator (3x)
		57532:   172, // ParameterList (3x)
		57533:   173, // ParameterTypeList (3x)
		57443:   174, // $@10 (2x)
		57447:   175, // $@14 (2x)
		57449:   176, // $@16 (2x)
		57450:   177, // $@17 (2x)
		57451:   178, // $@18 (2x)
		57455:   179, // $@5 (2x)
		57462:   180, // AbstractDeclaratorOpt (2x)
		57471:   181, // BlockItem (2x)
		57474:   182, // Clobbers (2x)
		57481:   183, // DeclarationListOpt (2x)
		57485:   184, // DeclaratorOpt (2x)
		57490:   185, // DirectAbstractDeclarator (2x)
		57491:   186, // DirectAbstractDeclaratorOpt (2x)
		57492:   187, // DirectDeclarator (2x)
		57493:   188, // ElifGroup (2x)
		57500:   189, // EnumerationConstant (2x)
		57501:   190, // Enumerator (2x)
		57508:   191, // ExternalDeclaration (2x)
		57509:   192, // FunctionBody (2x)
		57510:   193, // FunctionDefinition (2x)
		57516:   194, // IdentifierListOpt (2x)
		57517:   195, // IdentifierOpt (2x)
		57521:   196, // InitDeclaratorList (2x)
		57522:   197, // InitDeclaratorListOpt (2x)
		57524:   198, // InitializerList (2x)
		57534:   199, // ParameterTypeListOpt (2x)
		57541:   200, // SpecifierQualifierListOpt (2x)
		57546:   201, // StructDeclaration (2x)
		57548:   202, // StructDeclarator (2x)
		57559:   203, // VolatileOpt (2x)
		57442:   204, // $@1 (1x)
		57444:   205, // $@11 (1x)
		57445:   206, // $@12 (1x)
		57446:   207, // $@13 (1x)
		57448:   208, // $@15 (1x)
		57452:   209, // $@2 (1x)
		57453:   210, // $@3 (1x)
		57456:   211, // $@6 (1x)
		57457:   212, // $@7 (1x)
		57458:   213, // $@8 (1x)
		57463:   214, // ArgumentExpressionList (1x)
		57464:   215, // ArgumentExpressionListOpt (1x)
		57472:   216, // BlockItemList (1x)
		57473:   217, // BlockItemListOpt (1x)
		1048577: 218, // CONSTANT_EXPRESSION (1x)
		57480:   219, // DeclarationList (1x)
		57494:   220, // ElifGroupList (1x)
		57495:   221, // ElifGroupListOpt (1x)
		57496:   222, // ElseGroup (1x)
		57497:   223, // ElseGroupOpt (1x)
		57498:   224, // EndifLine (1x)
		57502:   225, // EnumeratorList (1x)
		57378:   226, // IDENTIFIER_LPAREN (1x)
		1048576: 227, // PREPROCESSING_FILE (1x)
		57537:   228, // PreprocessingFile (1x)
		57542:   229, // Start (1x)
		57547:   230, // StructDeclarationList (1x)
		57549:   231, // StructDeclaratorList (1x)
		1048578: 232, // TRANSLATION_UNIT (1x)
		57553:   233, // TranslationUnit (1x)
		57460:   234, // $default (0x)
		57356:   235, // CAST (0x)
		57345:   236, // error (0x)
		57379:   237, // IDENTIFIER_NONREPL (0x)
		57394:   238, // NOELSE (0x)
		57396:   239, // NOSEMI (0x)
		57405:   240, // PPHEADER_NAME (0x)
		57413:   241, // PPNUMBER (0x)
		57415:   242, // PPPASTE (0x)
		57435:   243, // UNARY (0x)
	}

	yySymNames = []string{
		"'('",
		"'*'",
		"IDENTIFIER",
		"'&'",
		"'+'",
		"'-'",
		"ANDAND",
		"DEC",
		"INC",
		"';'",
		"')'",
		"','",
		"STRINGLITERAL",
		"'['",
		"'!'",
		"'~'",
		"ALIGNOF",
		"CHARCONST",
		"FLOATCONST",
		"INTCONST",
		"LONGCHARCONST",
		"LONGSTRINGLITERAL",
		"SIZEOF",
		"VOLATILE",
		"CONST",
		"RESTRICT",
		"'}'",
		"BOOL",
		"CHAR",
		"COMPLEX",
		"DOUBLE",
		"ENUM",
		"FLOAT",
		"INT",
		"LONG",
		"SHORT",
		"SIGNED",
		"STRUCT",
		"TYPEDEFNAME",
		"TYPEOF",
		"UNION",
		"UNSIGNED",
		"VOID",
		"':'",
		"STATIC",
		"AUTO",
		"EXTERN",
		"INLINE",
		"NORETURN",
		"REGISTER",
		"TYPEDEF",
		"$end",
		"'='",
		"'{'",
		"Expression",
		"']'",
		"'.'",
		"ASM",
		"STATIC_ASSERT",
		"'%'",
		"'/'",
		"'<'",
		"'>'",
		"'?'",
		"'^'",
		"'|'",
		"ADDASSIGN",
		"ANDASSIGN",
		"ARROW",
		"DIVASSIGN",
		"EQ",
		"GEQ",
		"LEQ",
		"LSH",
		"LSHASSIGN",
		"MODASSIGN",
		"MULASSIGN",
		"NEQ",
		"ORASSIGN",
		"OROR",
		"RSH",
		"RSHASSIGN",
		"SUBASSIGN",
		"XORASSIGN",
		"'\\n'",
		"GOTO",
		"WHILE",
		"BREAK",
		"CASE",
		"CONTINUE",
		"DEFAULT",
		"DO",
		"FOR",
		"IF",
		"PPOTHER",
		"RETURN",
		"SWITCH",
		"PPENDIF",
		"PPELSE",
		"PPELIF",
		"PPDEFINE",
		"PPERROR",
		"PPHASH_NL",
		"PPIF",
		"PPIFDEF",
		"PPIFNDEF",
		"PPINCLUDE",
		"PPINCLUDE_NEXT",
		"PPLINE",
		"PPNONDIRECTIVE",
		"PPPRAGMA",
		"PPUNDEF",
		"ELSE",
		"TypeQualifier",
		"ExpressionList",
		"PPTokenList",
		"PPTokens",
		"EnumSpecifier",
		"StructOrUnion",
		"StructOrUnionSpecifier",
		"TypeSpecifier",
		"ExpressionListOpt",
		"BasicAssemblerStatement",
		"CompoundStatement",
		"DeclarationSpecifiers",
		"FunctionSpecifier",
		"PPTokenListOpt",
		"StorageClassSpecifier",
		"AssemblerStatement",
		"ExpressionStatement",
		"IterationStatement",
		"JumpStatement",
		"LabeledStatement",
		"Pointer",
		"SelectionStatement",
		"Statement",
		"PointerOpt",
		"Declarator",
		"StaticAssertDeclaration",
		"ControlLine",
		"GroupPart",
		"IfGroup",
		"IfSection",
		"TextLine",
		"Declaration",
		"$@4",
		"ConstantExpression",
		"DDD",
		"GroupList",
		"AssemblerOperand",
		"AssemblerSymbolicNameOpt",
		"GroupListOpt",
		"ReplacementList",
		"SpecifierQualifierList",
		"TypeQualifierList",
		"$@9",
		"AbstractDeclarator",
		"AssemblerOperands",
		"DeclarationSpecifiersOpt",
		"Designator",
		"Initializer",
		"ParameterDeclaration",
		"TypeName",
		"TypeQualifierListOpt",
		"AssemblerInstructions",
		"CommaOpt",
		"Designation",
		"DesignationOpt",
		"DesignatorList",
		"ExpressionOpt",
		"IdentifierList",
		"InitDeclarator",
		"ParameterList",
		"ParameterTypeList",
		"$@10",
		"$@14",
		"$@16",
		"$@17",
		"$@18",
		"$@5",
		"AbstractDeclaratorOpt",
		"BlockItem",
		"Clobbers",
		"DeclarationListOpt",
		"DeclaratorOpt",
		"DirectAbstractDeclarator",
		"DirectAbstractDeclaratorOpt",
		"DirectDeclarator",
		"ElifGroup",
		"EnumerationConstant",
		"Enumerator",
		"ExternalDeclaration",
		"FunctionBody",
		"FunctionDefinition",
		"IdentifierListOpt",
		"IdentifierOpt",
		"InitDeclaratorList",
		"InitDeclaratorListOpt",
		"InitializerList",
		"ParameterTypeListOpt",
		"SpecifierQualifierListOpt",
		"StructDeclaration",
		"StructDeclarator",
		"VolatileOpt",
		"$@1",
		"$@11",
		"$@12",
		"$@13",
		"$@15",
		"$@2",
		"$@3",
		"$@6",
		"$@7",
		"$@8",
		"ArgumentExpressionList",
		"ArgumentExpressionListOpt",
		"BlockItemList",
		"BlockItemListOpt",
		"CONSTANT_EXPRESSION",
		"DeclarationList",
		"ElifGroupList",
		"ElifGroupListOpt",
		"ElseGroup",
		"ElseGroupOpt",
		"EndifLine",
		"EnumeratorList",
		"IDENTIFIER_LPAREN",
		"PREPROCESSING_FILE",
		"PreprocessingFile",
		"Start",
		"StructDeclarationList",
		"StructDeclaratorList",
		"TRANSLATION_UNIT",
		"TranslationUnit",
		"$default",
		"CAST",
		"error",
		"IDENTIFIER_NONREPL",
		"NOELSE",
		"NOSEMI",
		"PPHEADER_NAME",
		"PPNUMBER",
		"PPPASTE",
		"UNARY",
	}

	yyTokenLiteralStrings = map[int]string{
		57377:   "identifier",
		57348:   "&&",
		57363:   "--",
		57381:   "++",
		57428:   "string literal",
		57347:   "_Alignof",
		57358:   "character constant",
		57373:   "floating-point constant",
		57384:   "integer constant",
		57387:   "long character constant",
		57388:   "long string constant",
		57425:   "sizeof",
		57439:   "volatile",
		57360:   "const",
		57419:   "restrict",
		57353:   "_Bool",
		57357:   "char",
		57359:   "_Complex",
		57367:   "double",
		57369:   "enum",
		57372:   "float",
		57383:   "int",
		57386:   "long",
		57423:   "short",
		57424:   "signed",
		57429:   "struct",
		57433:   "typedefname",
		57434:   "typeof",
		57436:   "union",
		57437:   "unsigned",
		57438:   "void",
		57426:   "static",
		57352:   "auto",
		57371:   "extern",
		57382:   "inline",
		57395:   "_Noreturn",
		57418:   "register",
		57432:   "typedef",
		57351:   "asm",
		57427:   "_Static_assert",
		57346:   "+=",
		57349:   "&=",
		57350:   "->",
		57365:   "/=",
		57370:   "==",
		57375:   ">=",
		57385:   "<=",
		57389:   "<<",
		57390:   "<<=",
		57391:   "%=",
		57392:   "*=",
		57393:   "!=",
		57397:   "|=",
		57398:   "||",
		57421:   ">>",
		57422:   ">>=",
		57430:   "-=",
		57441:   "^=",
		57376:   "goto",
		57440:   "while",
		57354:   "break",
		57355:   "case",
		57361:   "continue",
		57364:   "default",
		57366:   "do",
		57374:   "for",
		57380:   "if",
		57414:   "ppother",
		57420:   "return",
		57431:   "switch",
		57402:   "#endif",
		57401:   "#else",
		57400:   "#elif",
		57399:   "#define",
		57403:   "#error",
		57404:   "#",
		57406:   "#if",
		57407:   "#ifdef",
		57408:   "#ifndef",
		57409:   "#include",
		57410:   "#include_next",
		57411:   "#line",
		57412:   "#foo",
		57416:   "#pragma",
		57417:   "#undef",
		57368:   "else",
		57362:   "...",
		1048577: "constant expression prefix",
		57378:   "identifier immediatelly followed by '('",
		1048576: "preprocessing file prefix",
		1048578: "translation unit prefix",
		57379:   "non replaceable identifier",
		57405:   "header name",
		57413:   "preprocessing number",
		57415:   "##",
	}

	yyReductions = map[int]struct{ xsym, components int }{
		0:   {0, 1},
		1:   {204, 0},
		2:   {229, 3},
		3:   {209, 0},
		4:   {229, 3},
		5:   {210, 0},
		6:   {229, 3},
		7:   {189, 1},
		8:   {214, 1},
		9:   {214, 3},
		10:  {215, 0},
		11:  {215, 1},
		12:  {54, 1},
		13:  {54, 1},
		14:  {54, 1},
		15:  {54, 1},
		16:  {54, 1},
		17:  {54, 1},
		18:  {54, 1},
		19:  {54, 3},
		20:  {54, 4},
		21:  {54, 4},
		22:  {54, 3},
		23:  {54, 3},
		24:  {54, 2},
		25:  {54, 2},
		26:  {54, 7},
		27:  {54, 2},
		28:  {54, 2},
		29:  {54, 2},
		30:  {54, 2},
		31:  {54, 2},
		32:  {54, 2},
		33:  {54, 2},
		34:  {54, 2},
		35:  {54, 2},
		36:  {54, 4},
		37:  {54, 4},
		38:  {54, 3},
		39:  {54, 3},
		40:  {54, 3},
		41:  {54, 3},
		42:  {54, 3},
		43:  {54, 3},
		44:  {54, 3},
		45:  {54, 3},
		46:  {54, 3},
		47:  {54, 3},
		48:  {54, 3},
		49:  {54, 3},
		50:  {54, 3},
		51:  {54, 3},
		52:  {54, 3},
		53:  {54, 3},
		54:  {54, 3},
		55:  {54, 3},
		56:  {54, 5},
		57:  {54, 3},
		58:  {54, 3},
		59:  {54, 3},
		60:  {54, 3},
		61:  {54, 3},
		62:  {54, 3},
		63:  {54, 3},
		64:  {54, 3},
		65:  {54, 3},
		66:  {54, 3},
		67:  {54, 3},
		68:  {54, 4},
		69:  {54, 3},
		70:  {54, 2},
		71:  {54, 4},
		72:  {169, 0},
		73:  {169, 1},
		74:  {114, 1},
		75:  {114, 3},
		76:  {121, 0},
		77:  {121, 1},
		78:  {145, 0},
		79:  {146, 2},
		80:  {144, 3},
		81:  {144, 1},
		82:  {124, 2},
		83:  {124, 2},
		84:  {124, 2},
		85:  {124, 2},
		86:  {158, 0},
		87:  {158, 1},
		88:  {196, 1},
		89:  {196, 3},
		90:  {197, 0},
		91:  {197, 1},
		92:  {171, 1},
		93:  {179, 0},
		94:  {171, 4},
		95:  {127, 1},
		96:  {127, 1},
		97:  {127, 1},
		98:  {127, 1},
		99:  {127, 1},
		100: {120, 1},
		101: {120, 1},
		102: {120, 1},
		103: {120, 1},
		104: {120, 1},
		105: {120, 1},
		106: {120, 1},
		107: {120, 1},
		108: {120, 1},
		109: {120, 1},
		110: {120, 1},
		111: {120, 1},
		112: {120, 1},
		113: {120, 1},
		114: {120, 4},
		115: {120, 4},
		116: {211, 0},
		117: {119, 6},
		118: {119, 2},
		119: {119, 4},
		120: {118, 1},
		121: {118, 1},
		122: {230, 1},
		123: {230, 2},
		124: {201, 3},
		125: {201, 2},
		126: {201, 1},
		127: {153, 2},
		128: {153, 2},
		129: {200, 0},
		130: {200, 1},
		131: {231, 1},
		132: {231, 3},
		133: {202, 1},
		134: {202, 3},
		135: {165, 0},
		136: {165, 1},
		137: {212, 0},
		138: {117, 7},
		139: {117, 2},
		140: {225, 1},
		141: {225, 3},
		142: {190, 1},
		143: {190, 3},
		144: {113, 1},
		145: {113, 1},
		146: {113, 1},
		147: {125, 1},
		148: {125, 1},
		149: {137, 2},
		150: {184, 0},
		151: {184, 1},
		152: {187, 1},
		153: {187, 3},
		154: {187, 5},
		155: {187, 6},
		156: {187, 6},
		157: {187, 5},
		158: {213, 0},
		159: {187, 5},
		160: {187, 4},
		161: {133, 2},
		162: {133, 3},
		163: {136, 0},
		164: {136, 1},
		165: {154, 1},
		166: {154, 2},
		167: {163, 0},
		168: {163, 1},
		169: {173, 1},
		170: {173, 3},
		171: {199, 0},
		172: {199, 1},
		173: {172, 1},
		174: {172, 3},
		175: {161, 2},
		176: {161, 2},
		177: {170, 1},
		178: {170, 3},
		179: {194, 0},
		180: {194, 1},
		181: {195, 0},
		182: {195, 1},
		183: {155, 0},
		184: {162, 3},
		185: {156, 1},
		186: {156, 2},
		187: {180, 0},
		188: {180, 1},
		189: {185, 3},
		190: {185, 4},
		191: {185, 5},
		192: {185, 6},
		193: {185, 6},
		194: {185, 4},
		195: {174, 0},
		196: {185, 4},
		197: {205, 0},
		198: {185, 5},
		199: {186, 0},
		200: {186, 1},
		201: {160, 1},
		202: {160, 4},
		203: {160, 3},
		204: {198, 2},
		205: {198, 4},
		206: {198, 0},
		207: {166, 2},
		208: {167, 0},
		209: {167, 1},
		210: {168, 1},
		211: {168, 2},
		212: {159, 3},
		213: {159, 2},
		214: {135, 1},
		215: {135, 1},
		216: {135, 1},
		217: {135, 1},
		218: {135, 1},
		219: {135, 1},
		220: {135, 1},
		221: {132, 3},
		222: {132, 4},
		223: {132, 3},
		224: {206, 0},
		225: {123, 4},
		226: {216, 1},
		227: {216, 2},
		228: {217, 0},
		229: {217, 1},
		230: {181, 1},
		231: {181, 1},
		232: {129, 2},
		233: {134, 5},
		234: {134, 7},
		235: {134, 5},
		236: {130, 5},
		237: {130, 7},
		238: {130, 9},
		239: {130, 8},
		240: {131, 3},
		241: {131, 2},
		242: {131, 2},
		243: {131, 3},
		244: {131, 3},
		245: {233, 1},
		246: {233, 2},
		247: {191, 1},
		248: {191, 1},
		249: {191, 2},
		250: {191, 1},
		251: {207, 0},
		252: {193, 5},
		253: {175, 0},
		254: {208, 0},
		255: {193, 5},
		256: {176, 0},
		257: {192, 2},
		258: {177, 0},
		259: {192, 3},
		260: {219, 1},
		261: {219, 2},
		262: {183, 0},
		263: {178, 0},
		264: {183, 2},
		265: {164, 1},
		266: {164, 2},
		267: {122, 5},
		268: {203, 0},
		269: {203, 1},
		270: {149, 5},
		271: {157, 1},
		272: {157, 3},
		273: {150, 0},
		274: {150, 3},
		275: {182, 1},
		276: {182, 3},
		277: {128, 1},
		278: {128, 7},
		279: {128, 9},
		280: {128, 11},
		281: {128, 13},
		282: {128, 6},
		283: {128, 8},
		284: {138, 7},
		285: {228, 1},
		286: {148, 1},
		287: {148, 2},
		288: {151, 0},
		289: {151, 1},
		290: {140, 1},
		291: {140, 1},
		292: {140, 3},
		293: {140, 1},
		294: {142, 4},
		295: {141, 4},
		296: {141, 4},
		297: {141, 4},
		298: {220, 1},
		299: {220, 2},
		300: {221, 0},
		301: {221, 1},
		302: {188, 4},
		303: {222, 3},
		304: {223, 0},
		305: {223, 1},
		306: {224, 1},
		307: {139, 3},
		308: {139, 5},
		309: {139, 7},
		310: {139, 5},
		311: {139, 2},
		312: {139, 1},
		313: {139, 3},
		314: {139, 3},
		315: {139, 2},
		316: {139, 3},
		317: {139, 6},
		318: {139, 2},
		319: {139, 4},
		320: {139, 3},
		321: {143, 1},
		322: {152, 1},
		323: {115, 1},
		324: {126, 1},
		325: {126, 2},
		326: {116, 1},
		327: {116, 2},
	}

	yyXErrors = map[yyXError]string{
		{0, 51}:   "invalid empty input",
		{583, -1}: "expected #endif",
		{585, -1}: "expected #endif",
		{1, -1}:   "expected $end",
		{503, -1}: "expected $end",
		{505, -1}: "expected $end",
		{32, -1}:  "expected '('",
		{49, -1}:  "expected '('",
		{75, -1}:  "expected '('",
		{274, -1}: "expected '('",
		{275, -1}: "expected '('",
		{276, -1}: "expected '('",
		{278, -1}: "expected '('",
		{288, -1}: "expected '('",
		{311, -1}: "expected '('",
		{353, -1}: "expected '('",
		{435, -1}: "expected '('",
		{54, -1}:  "expected ')'",
		{79, -1}:  "expected ')'",
		{86, -1}:  "expected ')'",
		{180, -1}: "expected ')'",
		{195, -1}: "expected ')'",
		{198, -1}: "expected ')'",
		{201, -1}: "expected ')'",
		{209, -1}: "expected ')'",
		{214, -1}: "expected ')'",
		{220, -1}: "expected ')'",
		{236, -1}: "expected ')'",
		{241, -1}: "expected ')'",
		{252, -1}: "expected ')'",
		{253, -1}: "expected ')'",
		{343, -1}: "expected ')'",
		{349, -1}: "expected ')'",
		{433, -1}: "expected ')'",
		{489, -1}: "expected ')'",
		{547, -1}: "expected ')'",
		{548, -1}: "expected ')'",
		{555, -1}: "expected ')'",
		{558, -1}: "expected ')'",
		{52, -1}:  "expected ','",
		{267, -1}: "expected ':'",
		{293, -1}: "expected ':'",
		{377, -1}: "expected ':'",
		{479, -1}: "expected ':'",
		{45, -1}:  "expected ';'",
		{55, -1}:  "expected ';'",
		{273, -1}: "expected ';'",
		{280, -1}: "expected ';'",
		{281, -1}: "expected ';'",
		{330, -1}: "expected ';'",
		{339, -1}: "expected ';'",
		{341, -1}: "expected ';'",
		{347, -1}: "expected ';'",
		{356, -1}: "expected ';'",
		{380, -1}: "expected ';'",
		{448, -1}: "expected ';'",
		{387, -1}: "expected '='",
		{91, -1}:  "expected '['",
		{527, -1}: "expected '\\n'",
		{531, -1}: "expected '\\n'",
		{535, -1}: "expected '\\n'",
		{538, -1}: "expected '\\n'",
		{540, -1}: "expected '\\n'",
		{562, -1}: "expected '\\n'",
		{567, -1}: "expected '\\n'",
		{570, -1}: "expected '\\n'",
		{577, -1}: "expected '\\n'",
		{582, -1}: "expected '\\n'",
		{588, -1}: "expected '\\n'",
		{97, -1}:  "expected ']'",
		{188, -1}: "expected ']'",
		{232, -1}: "expected ']'",
		{299, -1}: "expected ']'",
		{401, -1}: "expected ']'",
		{452, -1}: "expected '{'",
		{454, -1}: "expected '{'",
		{466, -1}: "expected '{'",
		{268, -1}: "expected '}'",
		{407, -1}: "expected '}'",
		{423, -1}: "expected '}'",
		{463, -1}: "expected '}'",
		{0, -1}:   "expected Start or one of [constant expression prefix, preprocessing file prefix, translation unit prefix]",
		{208, -1}: "expected abstract declarator or declarator or optional parameter type list or one of ['(', ')', '*', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{90, -1}:  "expected abstract declarator or optional parameter type list or one of ['(', ')', '*', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{287, -1}: "expected assembler instructions or string literal",
		{289, -1}: "expected assembler instructions or string literal",
		{436, -1}: "expected assembler instructions or string literal",
		{301, -1}: "expected assembler operand or one of ['[', string literal]",
		{317, -1}: "expected assembler operands or one of [')', ':', '[', string literal]",
		{294, -1}: "expected assembler operands or one of ['[', string literal]",
		{320, -1}: "expected assembler operands or one of ['[', string literal]",
		{324, -1}: "expected assembler operands or one of ['[', string literal]",
		{447, -1}: "expected assembler statement or asm",
		{270, -1}: "expected block item or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{302, -1}: "expected clobbers or string literal",
		{327, -1}: "expected clobbers or string literal",
		{446, -1}: "expected compound statement or '{'",
		{64, -1}:  "expected compound statement or expression list or type name or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, _Bool, _Complex, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{249, -1}: "expected compound statement or expression list or type name or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, _Bool, _Complex, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{3, -1}:   "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{50, -1}:  "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{266, -1}: "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{398, -1}: "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{460, -1}: "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{480, -1}: "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{502, -1}: "expected constant expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{440, -1}: "expected declaration list or one of [_Bool, _Complex, _Noreturn, _Static_assert, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{442, -1}: "expected declaration or one of ['{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{338, -1}: "expected declaration or optional expression list or one of [&&, '!', '&', '(', '*', '+', '-', ';', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{47, -1}:  "expected declarator or one of ['(', '*', identifier]",
		{386, -1}: "expected declarator or one of ['(', '*', identifier]",
		{200, -1}: "expected declarator or optional abstract declarator or one of ['(', ')', '*', ',', '[', identifier]",
		{7, -1}:   "expected declarator or optional init declarator list or one of ['(', '*', ';', identifier]",
		{395, -1}: "expected designator or one of ['.', '=', '[']",
		{203, -1}: "expected direct abstract declarator or direct declarator or one of ['(', '[', identifier]",
		{87, -1}:  "expected direct abstract declarator or one of ['(', '[']",
		{384, -1}: "expected direct declarator or one of ['(', identifier]",
		{575, -1}: "expected elif group or one of [#elif, #else, #endif]",
		{581, -1}: "expected endif line or #endif",
		{512, -1}: "expected endif line or optional elif group list or optional else group or one of [#elif, #else, #endif]",
		{573, -1}: "expected endif line or optional else group or one of [#else, #endif]",
		{455, -1}: "expected enumerator list or identifier",
		{462, -1}: "expected enumerator or one of ['}', identifier]",
		{126, -1}: "expected expression list or one of [&&, '!', '&', '(', '*', '+', '-', ':', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{102, -1}: "expected expression list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{354, -1}: "expected expression list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{358, -1}: "expected expression list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{362, -1}: "expected expression list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{366, -1}: "expected expression list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{419, -1}: "expected expression or one of [!=, $end, %=, &&, &=, '!', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '{', '|', '}', '~', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal, |=, ||]",
		{94, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{231, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{434, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{51, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{66, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{67, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{68, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{69, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{70, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{71, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{72, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{73, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{74, -1}:  "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{100, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{108, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{109, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{110, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{111, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{112, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{113, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{114, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{115, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{116, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{117, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{118, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{119, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{120, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{121, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{122, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{123, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{124, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{125, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{127, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{128, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{129, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{130, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{131, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{132, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{133, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{134, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{135, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{136, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{137, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{152, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{154, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{155, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{182, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{189, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{225, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{228, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{279, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{312, -1}: "expected expression or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{98, -1}:  "expected expression or optional type qualifier list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, string literal, volatile]",
		{223, -1}: "expected expression or optional type qualifier list or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, string literal, volatile]",
		{487, -1}: "expected expression or type name or one of [&&, '!', '&', '(', '*', '+', '-', '~', ++, --, _Alignof, _Bool, _Complex, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{6, -1}:   "expected external declaration or one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{439, -1}: "expected function body or one of ['{', asm]",
		{444, -1}: "expected function body or one of ['{', asm]",
		{498, -1}: "expected function body or one of ['{', asm]",
		{499, -1}: "expected function body or one of ['{', asm]",
		{497, -1}: "expected function body or optional declaration list or one of [',', ';', '=', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{438, -1}: "expected function body or optional declaration list or one of ['{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{564, -1}: "expected group part or one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{506, -1}: "expected group part or one of [#, #define, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{76, -1}:  "expected identifier",
		{104, -1}: "expected identifier",
		{105, -1}: "expected identifier",
		{217, -1}: "expected identifier",
		{298, -1}: "expected identifier",
		{399, -1}: "expected identifier",
		{514, -1}: "expected identifier",
		{515, -1}: "expected identifier",
		{522, -1}: "expected identifier",
		{306, -1}: "expected identifier list or identifier",
		{544, -1}: "expected identifier list or optional identifier list or one of [')', ..., identifier]",
		{413, -1}: "expected init declarator or one of ['(', '*', identifier]",
		{392, -1}: "expected initializer list or optional comma or one of [&&, '!', '&', '(', '*', '+', ',', '-', '.', '[', '{', '}', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{421, -1}: "expected initializer list or optional comma or one of [&&, '!', '&', '(', '*', '+', ',', '-', '.', '[', '{', '}', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{388, -1}: "expected initializer or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{394, -1}: "expected initializer or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{409, -1}: "expected initializer or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{411, -1}: "expected initializer or one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{406, -1}: "expected initializer or optional designation or one of [&&, '!', '&', '(', '*', '+', '-', '.', '[', '{', '}', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{57, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{58, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{59, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{60, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{61, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{62, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{63, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{77, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{106, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{107, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{139, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{140, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{141, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{142, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{143, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{144, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{145, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{146, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{147, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{148, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{149, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{153, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{157, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{158, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{159, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{160, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{161, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{162, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{163, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{164, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{165, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{166, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{167, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{168, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{169, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{170, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{171, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{172, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{173, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{174, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{175, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{176, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{177, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{181, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{185, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{193, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{248, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{250, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{418, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{420, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{424, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{425, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{426, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{427, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{428, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{429, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{430, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{431, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{432, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{65, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{150, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{156, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{178, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{183, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{313, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{488, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{389, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{256, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{390, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ';', '<', '=', '>', '?', '[', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{334, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', ';', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{335, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', ';', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{93, -1}:  "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{101, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{190, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{226, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{229, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{507, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{508, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{509, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{511, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{518, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{524, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{526, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{529, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{532, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{534, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{536, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{537, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{539, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{541, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{542, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{545, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{550, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{551, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{553, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{557, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{560, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{561, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{566, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{586, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{587, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{589, -1}: "expected one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, $end, '\\n', ppother]",
		{565, -1}: "expected one of [#elif, #else, #endif]",
		{569, -1}: "expected one of [#elif, #else, #endif]",
		{572, -1}: "expected one of [#elif, #else, #endif]",
		{574, -1}: "expected one of [#elif, #else, #endif]",
		{579, -1}: "expected one of [#elif, #else, #endif]",
		{580, -1}: "expected one of [#elif, #else, #endif]",
		{374, -1}: "expected one of [$end, &&, '!', '&', '(', ')', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{8, -1}:   "expected one of [$end, &&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{56, -1}:  "expected one of [$end, &&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{415, -1}: "expected one of [$end, &&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{42, -1}:  "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{43, -1}:  "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{44, -1}:  "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{46, -1}:  "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{445, -1}: "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{449, -1}: "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{450, -1}: "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{451, -1}: "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{500, -1}: "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{501, -1}: "expected one of [$end, '(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{37, -1}:  "expected one of [&&, '!', '&', '(', ')', '*', '+', ',', '-', ':', ';', '[', ']', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{38, -1}:  "expected one of [&&, '!', '&', '(', ')', '*', '+', ',', '-', ':', ';', '[', ']', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{39, -1}:  "expected one of [&&, '!', '&', '(', ')', '*', '+', ',', '-', ':', ';', '[', ']', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{95, -1}:  "expected one of [&&, '!', '&', '(', ')', '*', '+', ',', '-', '[', ']', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{186, -1}: "expected one of [&&, '!', '&', '(', ')', '*', '+', ',', '-', '[', ']', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{259, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{260, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{261, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{262, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{263, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{264, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{265, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{284, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{308, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{316, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{319, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{322, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{323, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{326, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{329, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{331, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{332, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{333, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{336, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{337, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{345, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{351, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{357, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{361, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{365, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{369, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{371, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{372, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{376, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{379, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{417, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{269, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{271, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{272, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{373, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{396, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{403, -1}: "expected one of [&&, '!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{453, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', '{', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{467, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', '{', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{18, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{19, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{20, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{21, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{22, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{23, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{24, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{25, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{26, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{27, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{28, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{29, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{30, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{31, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{464, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{470, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{485, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{490, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{491, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{13, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{14, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{15, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{16, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{17, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{40, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{41, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{492, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{493, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{494, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{495, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{496, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{245, -1}: "expected one of ['(', ')', '*', ':', ';', '[', identifier]",
		{246, -1}: "expected one of ['(', ')', '*', ':', ';', '[', identifier]",
		{247, -1}: "expected one of ['(', ')', '*', ':', ';', '[', identifier]",
		{206, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{207, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{210, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{219, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{221, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{227, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{230, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{233, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{234, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{85, -1}:  "expected one of ['(', ')', ',', '[', identifier]",
		{244, -1}: "expected one of ['(', ')', ',', '[', identifier]",
		{89, -1}:  "expected one of ['(', ')', ',', '[']",
		{138, -1}: "expected one of ['(', ')', ',', '[']",
		{187, -1}: "expected one of ['(', ')', ',', '[']",
		{191, -1}: "expected one of ['(', ')', ',', '[']",
		{192, -1}: "expected one of ['(', ')', ',', '[']",
		{194, -1}: "expected one of ['(', ')', ',', '[']",
		{202, -1}: "expected one of ['(', ')', ',', '[']",
		{238, -1}: "expected one of ['(', ')', ',', '[']",
		{242, -1}: "expected one of ['(', ')', ',', '[']",
		{285, -1}: "expected one of ['(', goto]",
		{286, -1}: "expected one of ['(', goto]",
		{385, -1}: "expected one of ['(', identifier]",
		{296, -1}: "expected one of [')', ',', ':']",
		{303, -1}: "expected one of [')', ',', ':']",
		{309, -1}: "expected one of [')', ',', ':']",
		{310, -1}: "expected one of [')', ',', ':']",
		{314, -1}: "expected one of [')', ',', ':']",
		{318, -1}: "expected one of [')', ',', ':']",
		{325, -1}: "expected one of [')', ',', ':']",
		{257, -1}: "expected one of [')', ',', ';']",
		{215, -1}: "expected one of [')', ',', ...]",
		{218, -1}: "expected one of [')', ',', ...]",
		{546, -1}: "expected one of [')', ',', ...]",
		{88, -1}:  "expected one of [')', ',']",
		{179, -1}: "expected one of [')', ',']",
		{197, -1}: "expected one of [')', ',']",
		{199, -1}: "expected one of [')', ',']",
		{204, -1}: "expected one of [')', ',']",
		{205, -1}: "expected one of [')', ',']",
		{216, -1}: "expected one of [')', ',']",
		{237, -1}: "expected one of [')', ',']",
		{251, -1}: "expected one of [')', ',']",
		{307, -1}: "expected one of [')', ',']",
		{321, -1}: "expected one of [')', ',']",
		{328, -1}: "expected one of [')', ',']",
		{355, -1}: "expected one of [')', ',']",
		{359, -1}: "expected one of [')', ',']",
		{363, -1}: "expected one of [')', ',']",
		{367, -1}: "expected one of [')', ',']",
		{290, -1}: "expected one of [')', ':', string literal]",
		{292, -1}: "expected one of [')', ':', string literal]",
		{315, -1}: "expected one of [')', ':', string literal]",
		{437, -1}: "expected one of [')', string literal]",
		{478, -1}: "expected one of [',', ':', ';']",
		{151, -1}: "expected one of [',', ':']",
		{297, -1}: "expected one of [',', ':']",
		{304, -1}: "expected one of [',', ':']",
		{383, -1}: "expected one of [',', ';', '=']",
		{408, -1}: "expected one of [',', ';', '}']",
		{412, -1}: "expected one of [',', ';', '}']",
		{381, -1}: "expected one of [',', ';']",
		{382, -1}: "expected one of [',', ';']",
		{391, -1}: "expected one of [',', ';']",
		{414, -1}: "expected one of [',', ';']",
		{475, -1}: "expected one of [',', ';']",
		{477, -1}: "expected one of [',', ';']",
		{481, -1}: "expected one of [',', ';']",
		{484, -1}: "expected one of [',', ';']",
		{456, -1}: "expected one of [',', '=', '}']",
		{459, -1}: "expected one of [',', '=', '}']",
		{184, -1}: "expected one of [',', ']']",
		{405, -1}: "expected one of [',', '}']",
		{410, -1}: "expected one of [',', '}']",
		{458, -1}: "expected one of [',', '}']",
		{461, -1}: "expected one of [',', '}']",
		{465, -1}: "expected one of [',', '}']",
		{397, -1}: "expected one of ['.', '=', '[']",
		{400, -1}: "expected one of ['.', '=', '[']",
		{402, -1}: "expected one of ['.', '=', '[']",
		{404, -1}: "expected one of ['.', '=', '[']",
		{291, -1}: "expected one of [':', string literal]",
		{516, -1}: "expected one of ['\\n', identifier, identifier immediatelly followed by '(']",
		{525, -1}: "expected one of ['\\n', ppother]",
		{528, -1}: "expected one of ['\\n', ppother]",
		{530, -1}: "expected one of ['\\n', ppother]",
		{441, -1}: "expected one of ['{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{443, -1}: "expected one of ['{', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{34, -1}:  "expected one of ['{', identifier]",
		{35, -1}:  "expected one of ['{', identifier]",
		{472, -1}: "expected one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{474, -1}: "expected one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{476, -1}: "expected one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{482, -1}: "expected one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{486, -1}: "expected one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{554, -1}: "expected one of [..., identifier]",
		{83, -1}:  "expected optional abstract declarator or one of ['(', ')', '*', '[']",
		{103, -1}: "expected optional argument expression list or one of [&&, '!', '&', '(', ')', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{254, -1}: "expected optional block item list or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{255, -1}: "expected optional block item list or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Alignof, _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedefname, typeof, union, unsigned, void, volatile, while]",
		{393, -1}: "expected optional comma or one of [',', '}']",
		{422, -1}: "expected optional comma or one of [',', '}']",
		{457, -1}: "expected optional comma or one of [',', '}']",
		{9, -1}:   "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{10, -1}:  "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{11, -1}:  "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{12, -1}:  "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{342, -1}: "expected optional expression list or one of [&&, '!', '&', '(', ')', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{348, -1}: "expected optional expression list or one of [&&, '!', '&', '(', ')', '*', '+', '-', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{282, -1}: "expected optional expression list or one of [&&, '!', '&', '(', '*', '+', '-', ';', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{340, -1}: "expected optional expression list or one of [&&, '!', '&', '(', '*', '+', '-', ';', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{346, -1}: "expected optional expression list or one of [&&, '!', '&', '(', '*', '+', '-', ';', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{222, -1}: "expected optional expression or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{211, -1}: "expected optional expression or optional type qualifier list or type qualifier list or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{92, -1}:  "expected optional expression or type qualifier list or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{96, -1}:  "expected optional expression or type qualifier or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{563, -1}: "expected optional group list or one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{568, -1}: "expected optional group list or one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{571, -1}: "expected optional group list or one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{578, -1}: "expected optional group list or one of [#, #define, #elif, #else, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{584, -1}: "expected optional group list or one of [#, #define, #endif, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{212, -1}: "expected optional identifier list or parameter type list or one of [')', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{33, -1}:  "expected optional identifier or one of ['{', identifier]",
		{36, -1}:  "expected optional identifier or one of ['{', identifier]",
		{258, -1}: "expected optional init declarator list or one of ['(', '*', ';', identifier]",
		{196, -1}: "expected optional parameter type list or one of [')', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{239, -1}: "expected optional parameter type list or one of [')', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{240, -1}: "expected optional parameter type list or one of [')', _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{81, -1}:  "expected optional specifier qualifier list or one of ['(', ')', '*', ':', ';', '[', _Bool, _Complex, char, const, double, enum, float, identifier, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{82, -1}:  "expected optional specifier qualifier list or one of ['(', ')', '*', ':', ';', '[', _Bool, _Complex, char, const, double, enum, float, identifier, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{517, -1}: "expected optional token list or one of ['\\n', ppother]",
		{521, -1}: "expected optional token list or one of ['\\n', ppother]",
		{84, -1}:  "expected optional type qualifier list or pointer or one of ['(', ')', '*', ',', '[', const, identifier, restrict, volatile]",
		{283, -1}: "expected optional volatile or one of ['(', goto, volatile]",
		{48, -1}:  "expected optional volatile or one of ['(', volatile]",
		{235, -1}: "expected parameter declaration or one of [..., _Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{213, -1}: "expected parameter type list or one of [_Bool, _Complex, _Noreturn, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{243, -1}: "expected pointer or one of ['(', ')', '*', ',', '[', identifier]",
		{2, -1}:   "expected preprocessing file or one of [#, #define, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{504, -1}: "expected preprocessing file or one of [#, #define, #error, #foo, #if, #ifdef, #ifndef, #include, #include_next, #line, #pragma, #undef, '\\n', ppother]",
		{543, -1}: "expected replacement list or one of ['\\n', ppother]",
		{549, -1}: "expected replacement list or one of ['\\n', ppother]",
		{552, -1}: "expected replacement list or one of ['\\n', ppother]",
		{556, -1}: "expected replacement list or one of ['\\n', ppother]",
		{559, -1}: "expected replacement list or one of ['\\n', ppother]",
		{80, -1}:  "expected specifier qualifier list or one of [_Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{277, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{344, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{350, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{360, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{364, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{368, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{370, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{375, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{378, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{416, -1}: "expected statement or one of [&&, '!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, _Alignof, asm, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, while]",
		{53, -1}:  "expected string literal",
		{295, -1}: "expected string literal",
		{300, -1}: "expected string literal",
		{305, -1}: "expected string literal",
		{468, -1}: "expected struct declaration list or one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{469, -1}: "expected struct declaration list or one of [_Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{471, -1}: "expected struct declaration or one of ['}', _Bool, _Complex, _Static_assert, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{473, -1}: "expected struct declarator list or one of ['(', '*', ':', ';', identifier]",
		{483, -1}: "expected struct declarator or one of ['(', '*', ':', identifier]",
		{533, -1}: "expected token list or one of ['\\n', ppother]",
		{510, -1}: "expected token list or ppother",
		{513, -1}: "expected token list or ppother",
		{519, -1}: "expected token list or ppother",
		{520, -1}: "expected token list or ppother",
		{523, -1}: "expected token list or ppother",
		{576, -1}: "expected token list or ppother",
		{4, -1}:   "expected translation unit or one of ['(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{5, -1}:   "expected translation unit or one of ['(', '*', ';', _Bool, _Complex, _Noreturn, _Static_assert, asm, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedefname, typeof, union, unsigned, void, volatile]",
		{78, -1}:  "expected type name or one of [_Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedefname, typeof, union, unsigned, void, volatile]",
		{99, -1}:  "expected type qualifier or one of [&&, '!', '&', '(', ')', '*', '+', ',', '-', '[', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, string literal, volatile]",
		{224, -1}: "expected type qualifier or one of [&&, '!', '&', '(', '*', '+', '-', ']', '~', ++, --, _Alignof, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{352, -1}: "expected while",
		{3, 51}:   "unexpected EOF",
		{2, 51}:   "unexpected EOF",
		{4, 51}:   "unexpected EOF",
	}

	yyParseTab = [590][]uint16{
		// 0
		{218: 331, 227: 330, 229: 329, 232: 332},
		{51: 328},
		{84: 327, 94: 327, 100: 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, 204: 832},
		{325, 325, 325, 325, 325, 325, 325, 325, 325, 12: 325, 14: 325, 325, 325, 325, 325, 325, 325, 325, 325, 209: 830},
		{323, 323, 323, 9: 323, 23: 323, 323, 323, 27: 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, 44: 323, 323, 323, 323, 323, 323, 323, 57: 323, 323, 210: 333},
		// 5
		{75, 75, 75, 9: 374, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 57: 376, 377, 113: 339, 117: 358, 361, 357, 338, 122: 373, 124: 335, 340, 127: 337, 138: 336, 144: 372, 175: 375, 191: 370, 193: 371, 233: 334},
		{75, 75, 75, 9: 374, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 322, 57: 376, 377, 113: 339, 117: 358, 361, 357, 338, 122: 373, 124: 335, 340, 127: 337, 138: 336, 144: 372, 175: 375, 191: 829, 193: 371},
		{165, 412, 165, 9: 238, 133: 713, 136: 712, 825, 171: 709, 196: 710, 708},
		{247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 12: 247, 14: 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 44: 247, 247, 247, 247, 247, 247, 247, 247, 53: 247, 57: 247, 247, 85: 247, 247, 247, 247, 247, 247, 247, 247, 247, 95: 247, 247},
		{242, 242, 242, 9: 242, 242, 242, 13: 242, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 821, 340, 127: 337, 158: 824},
		// 10
		{242, 242, 242, 9: 242, 242, 242, 13: 242, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 821, 340, 127: 337, 158: 823},
		{242, 242, 242, 9: 242, 242, 242, 13: 242, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 821, 340, 127: 337, 158: 822},
		{242, 242, 242, 9: 242, 242, 242, 13: 242, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 821, 340, 127: 337, 158: 820},
		{233, 233, 233, 9: 233, 233, 233, 13: 233, 23: 233, 233, 233, 27: 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 44: 233, 233, 233, 233, 233, 233, 233},
		{232, 232, 232, 9: 232, 232, 232, 13: 232, 23: 232, 232, 232, 27: 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 44: 232, 232, 232, 232, 232, 232, 232},
		// 15
		{231, 231, 231, 9: 231, 231, 231, 13: 231, 23: 231, 231, 231, 27: 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 44: 231, 231, 231, 231, 231, 231, 231},
		{230, 230, 230, 9: 230, 230, 230, 13: 230, 23: 230, 230, 230, 27: 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 44: 230, 230, 230, 230, 230, 230, 230},
		{229, 229, 229, 9: 229, 229, 229, 13: 229, 23: 229, 229, 229, 27: 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 44: 229, 229, 229, 229, 229, 229, 229},
		{228, 228, 228, 9: 228, 228, 228, 13: 228, 23: 228, 228, 228, 27: 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228},
		{227, 227, 227, 9: 227, 227, 227, 13: 227, 23: 227, 227, 227, 27: 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227},
		// 20
		{226, 226, 226, 9: 226, 226, 226, 13: 226, 23: 226, 226, 226, 27: 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226},
		{225, 225, 225, 9: 225, 225, 225, 13: 225, 23: 225, 225, 225, 27: 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225},
		{224, 224, 224, 9: 224, 224, 224, 13: 224, 23: 224, 224, 224, 27: 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224},
		{223, 223, 223, 9: 223, 223, 223, 13: 223, 23: 223, 223, 223, 27: 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223},
		{222, 222, 222, 9: 222, 222, 222, 13: 222, 23: 222, 222, 222, 27: 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222},
		// 25
		{221, 221, 221, 9: 221, 221, 221, 13: 221, 23: 221, 221, 221, 27: 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221},
		{220, 220, 220, 9: 220, 220, 220, 13: 220, 23: 220, 220, 220, 27: 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220},
		{219, 219, 219, 9: 219, 219, 219, 13: 219, 23: 219, 219, 219, 27: 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219},
		{218, 218, 218, 9: 218, 218, 218, 13: 218, 23: 218, 218, 218, 27: 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218},
		{217, 217, 217, 9: 217, 217, 217, 13: 217, 23: 217, 217, 217, 27: 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217},
		// 30
		{216, 216, 216, 9: 216, 216, 216, 13: 216, 23: 216, 216, 216, 27: 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216},
		{215, 215, 215, 9: 215, 215, 215, 13: 215, 23: 215, 215, 215, 27: 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215},
		{815},
		{2: 795, 53: 147, 195: 794},
		{2: 208, 53: 208},
		// 35
		{2: 207, 53: 207},
		{2: 781, 53: 147, 195: 780},
		{184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 27: 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 55: 184},
		{183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 27: 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 55: 183},
		{182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 27: 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 55: 182},
		// 40
		{181, 181, 181, 9: 181, 181, 181, 13: 181, 23: 181, 181, 181, 27: 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 44: 181, 181, 181, 181, 181, 181, 181},
		{180, 180, 180, 9: 180, 180, 180, 13: 180, 23: 180, 180, 180, 27: 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 44: 180, 180, 180, 180, 180, 180, 180},
		{83, 83, 83, 9: 83, 23: 83, 83, 83, 27: 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 44: 83, 83, 83, 83, 83, 83, 83, 83, 57: 83, 83},
		{81, 81, 81, 9: 81, 23: 81, 81, 81, 27: 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 44: 81, 81, 81, 81, 81, 81, 81, 81, 57: 81, 81},
		{80, 80, 80, 9: 80, 23: 80, 80, 80, 27: 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 44: 80, 80, 80, 80, 80, 80, 80, 80, 57: 80, 80},
		// 45
		{9: 779},
		{78, 78, 78, 9: 78, 23: 78, 78, 78, 27: 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 44: 78, 78, 78, 78, 78, 78, 78, 78, 57: 78, 78},
		{165, 412, 165, 133: 713, 136: 712, 766},
		{60, 23: 614, 203: 763},
		{378},
		// 50
		{250, 250, 250, 250, 250, 250, 250, 250, 250, 12: 250, 14: 250, 250, 250, 250, 250, 250, 250, 250, 250, 145: 379, 380},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 393},
		{11: 381},
		{12: 382},
		{10: 383},
		// 55
		{9: 384},
		{44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 12: 44, 14: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44: 44, 44, 44, 44, 44, 44, 44, 44, 53: 44, 57: 44, 44, 85: 44, 44, 44, 44, 44, 44, 44, 44, 44, 95: 44, 44},
		{316, 316, 3: 316, 316, 316, 316, 316, 316, 316, 316, 316, 13: 316, 26: 316, 43: 316, 51: 316, 316, 55: 316, 316, 59: 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316},
		{315, 315, 3: 315, 315, 315, 315, 315, 315, 315, 315, 315, 13: 315, 26: 315, 43: 315, 51: 315, 315, 55: 315, 315, 59: 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315, 315},
		{314, 314, 3: 314, 314, 314, 314, 314, 314, 314, 314, 314, 13: 314, 26: 314, 43: 314, 51: 314, 314, 55: 314, 314, 59: 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314, 314},
		// 60
		{313, 313, 3: 313, 313, 313, 313, 313, 313, 313, 313, 313, 13: 313, 26: 313, 43: 313, 51: 313, 313, 55: 313, 313, 59: 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313},
		{312, 312, 3: 312, 312, 312, 312, 312, 312, 312, 312, 312, 13: 312, 26: 312, 43: 312, 51: 312, 312, 55: 312, 312, 59: 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, 312},
		{311, 311, 3: 311, 311, 311, 311, 311, 311, 311, 311, 311, 13: 311, 26: 311, 43: 311, 51: 311, 311, 55: 311, 311, 59: 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 311},
		{310, 310, 3: 310, 310, 310, 310, 310, 310, 310, 310, 310, 13: 310, 26: 310, 43: 310, 51: 310, 310, 55: 310, 310, 59: 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, 310},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 145, 145, 145, 27: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 53: 582, 478, 114: 579, 123: 581, 155: 408, 162: 761},
		// 65
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 249, 11: 249, 13: 430, 26: 249, 43: 249, 51: 249, 455, 55: 249, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 760},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 759},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 758},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 521},
		// 70
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 757},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 756},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 755},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 754},
		{577, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 578},
		// 75
		{406},
		{2: 405},
		{258, 258, 3: 258, 258, 258, 258, 258, 258, 258, 258, 258, 13: 258, 26: 258, 43: 258, 51: 258, 258, 55: 258, 258, 59: 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258},
		{23: 145, 145, 145, 27: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 155: 408, 162: 407},
		{10: 576},
		// 80
		{23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 113: 410, 117: 358, 361, 357, 409, 153: 411},
		{199, 199, 199, 9: 199, 199, 13: 199, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 199, 113: 410, 117: 358, 361, 357, 409, 153: 574, 200: 575},
		{199, 199, 199, 9: 199, 199, 13: 199, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 199, 113: 410, 117: 358, 361, 357, 409, 153: 574, 200: 573},
		{165, 412, 10: 141, 13: 165, 133: 413, 136: 415, 156: 416, 180: 414},
		{161, 161, 161, 10: 161, 161, 13: 161, 23: 367, 365, 366, 113: 423, 154: 427, 163: 571},
		// 85
		{164, 2: 164, 10: 143, 143, 13: 164},
		{10: 144},
		{418, 13: 129, 185: 417, 419},
		{10: 140, 140},
		{567, 10: 142, 142, 13: 128},
		// 90
		{165, 412, 10: 133, 13: 165, 23: 133, 133, 133, 27: 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 44: 133, 133, 133, 133, 133, 133, 133, 133: 413, 136: 415, 156: 523, 174: 524},
		{13: 420},
		{392, 422, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 367, 365, 366, 44: 426, 54: 421, 256, 113: 423, 154: 424, 169: 425},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 13: 430, 52: 455, 55: 255, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 521, 522},
		// 95
		{163, 163, 163, 163, 163, 163, 163, 163, 163, 10: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 44: 163, 55: 163},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 367, 365, 366, 44: 517, 54: 421, 256, 113: 514, 169: 516},
		{55: 515},
		{161, 161, 161, 161, 161, 161, 161, 161, 161, 12: 161, 14: 161, 161, 161, 161, 161, 161, 161, 161, 161, 367, 365, 366, 113: 423, 154: 427, 163: 428},
		{160, 160, 160, 160, 160, 160, 160, 160, 160, 10: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 367, 365, 366, 113: 514},
		// 100
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 429},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 13: 430, 52: 455, 55: 466, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 512},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 10: 318, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 506, 214: 507, 508},
		{2: 505},
		// 105
		{2: 504},
		{304, 304, 3: 304, 304, 304, 304, 304, 304, 304, 304, 304, 13: 304, 26: 304, 43: 304, 51: 304, 304, 55: 304, 304, 59: 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304, 304},
		{303, 303, 3: 303, 303, 303, 303, 303, 303, 303, 303, 303, 13: 303, 26: 303, 43: 303, 51: 303, 303, 55: 303, 303, 59: 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, 303},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 503},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 502},
		// 110
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 501},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 500},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 499},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 498},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 497},
		// 115
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 496},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 495},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 494},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 493},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 492},
		// 120
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 491},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 490},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 489},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 488},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 487},
		// 125
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 486},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 43: 480, 54: 478, 114: 479},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 477},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 476},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 475},
		// 130
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 474},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 473},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 472},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 471},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 470},
		// 135
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 469},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 468},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 467},
		{136, 10: 136, 136, 13: 136},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 261, 261, 261, 13: 430, 26: 261, 43: 261, 51: 261, 455, 55: 261, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		// 140
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 262, 262, 262, 13: 430, 26: 262, 43: 262, 51: 262, 455, 55: 262, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 263, 263, 263, 13: 430, 26: 263, 43: 263, 51: 263, 455, 55: 263, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 264, 264, 264, 13: 430, 26: 264, 43: 264, 51: 264, 455, 55: 264, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 265, 265, 265, 13: 430, 26: 265, 43: 265, 51: 265, 455, 55: 265, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 266, 266, 266, 13: 430, 26: 266, 43: 266, 51: 266, 455, 55: 266, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		// 145
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 267, 267, 267, 13: 430, 26: 267, 43: 267, 51: 267, 455, 55: 267, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 268, 268, 268, 13: 430, 26: 268, 43: 268, 51: 268, 455, 55: 268, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 269, 269, 269, 13: 430, 26: 269, 43: 269, 51: 269, 455, 55: 269, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 270, 270, 270, 13: 430, 26: 270, 43: 270, 51: 270, 455, 55: 270, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 271, 271, 271, 13: 430, 26: 271, 43: 271, 51: 271, 455, 55: 271, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		// 150
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 254, 254, 254, 13: 430, 43: 254, 52: 455, 55: 254, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{11: 483, 43: 482},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 481},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 257, 257, 257, 13: 430, 26: 257, 43: 257, 51: 257, 257, 55: 257, 432, 59: 438, 437, 443, 444, 454, 450, 451, 257, 257, 433, 257, 447, 446, 445, 441, 257, 257, 257, 448, 257, 453, 442, 257, 257, 257},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 485},
		// 155
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 484},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 253, 253, 253, 13: 430, 43: 253, 52: 455, 55: 253, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 272, 272, 272, 13: 430, 26: 272, 43: 272, 51: 272, 272, 55: 272, 432, 59: 438, 437, 443, 444, 454, 450, 451, 272, 272, 433, 272, 447, 446, 445, 441, 272, 272, 272, 448, 272, 453, 442, 272, 272, 272},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 273, 273, 273, 13: 430, 26: 273, 43: 273, 51: 273, 273, 55: 273, 432, 59: 438, 437, 443, 444, 273, 450, 451, 273, 273, 433, 273, 447, 446, 445, 441, 273, 273, 273, 448, 273, 273, 442, 273, 273, 273},
		{431, 436, 3: 449, 439, 440, 274, 435, 434, 274, 274, 274, 13: 430, 26: 274, 43: 274, 51: 274, 274, 55: 274, 432, 59: 438, 437, 443, 444, 274, 450, 451, 274, 274, 433, 274, 447, 446, 445, 441, 274, 274, 274, 448, 274, 274, 442, 274, 274, 274},
		// 160
		{431, 436, 3: 449, 439, 440, 275, 435, 434, 275, 275, 275, 13: 430, 26: 275, 43: 275, 51: 275, 275, 55: 275, 432, 59: 438, 437, 443, 444, 275, 450, 275, 275, 275, 433, 275, 447, 446, 445, 441, 275, 275, 275, 448, 275, 275, 442, 275, 275, 275},
		{431, 436, 3: 449, 439, 440, 276, 435, 434, 276, 276, 276, 13: 430, 26: 276, 43: 276, 51: 276, 276, 55: 276, 432, 59: 438, 437, 443, 444, 276, 276, 276, 276, 276, 433, 276, 447, 446, 445, 441, 276, 276, 276, 448, 276, 276, 442, 276, 276, 276},
		{431, 436, 3: 277, 439, 440, 277, 435, 434, 277, 277, 277, 13: 430, 26: 277, 43: 277, 51: 277, 277, 55: 277, 432, 59: 438, 437, 443, 444, 277, 277, 277, 277, 277, 433, 277, 447, 446, 445, 441, 277, 277, 277, 448, 277, 277, 442, 277, 277, 277},
		{431, 436, 3: 278, 439, 440, 278, 435, 434, 278, 278, 278, 13: 430, 26: 278, 43: 278, 51: 278, 278, 55: 278, 432, 59: 438, 437, 443, 444, 278, 278, 278, 278, 278, 433, 278, 278, 446, 445, 441, 278, 278, 278, 278, 278, 278, 442, 278, 278, 278},
		{431, 436, 3: 279, 439, 440, 279, 435, 434, 279, 279, 279, 13: 430, 26: 279, 43: 279, 51: 279, 279, 55: 279, 432, 59: 438, 437, 443, 444, 279, 279, 279, 279, 279, 433, 279, 279, 446, 445, 441, 279, 279, 279, 279, 279, 279, 442, 279, 279, 279},
		// 165
		{431, 436, 3: 280, 439, 440, 280, 435, 434, 280, 280, 280, 13: 430, 26: 280, 43: 280, 51: 280, 280, 55: 280, 432, 59: 438, 437, 280, 280, 280, 280, 280, 280, 280, 433, 280, 280, 280, 280, 441, 280, 280, 280, 280, 280, 280, 442, 280, 280, 280},
		{431, 436, 3: 281, 439, 440, 281, 435, 434, 281, 281, 281, 13: 430, 26: 281, 43: 281, 51: 281, 281, 55: 281, 432, 59: 438, 437, 281, 281, 281, 281, 281, 281, 281, 433, 281, 281, 281, 281, 441, 281, 281, 281, 281, 281, 281, 442, 281, 281, 281},
		{431, 436, 3: 282, 439, 440, 282, 435, 434, 282, 282, 282, 13: 430, 26: 282, 43: 282, 51: 282, 282, 55: 282, 432, 59: 438, 437, 282, 282, 282, 282, 282, 282, 282, 433, 282, 282, 282, 282, 441, 282, 282, 282, 282, 282, 282, 442, 282, 282, 282},
		{431, 436, 3: 283, 439, 440, 283, 435, 434, 283, 283, 283, 13: 430, 26: 283, 43: 283, 51: 283, 283, 55: 283, 432, 59: 438, 437, 283, 283, 283, 283, 283, 283, 283, 433, 283, 283, 283, 283, 441, 283, 283, 283, 283, 283, 283, 442, 283, 283, 283},
		{431, 436, 3: 284, 439, 440, 284, 435, 434, 284, 284, 284, 13: 430, 26: 284, 43: 284, 51: 284, 284, 55: 284, 432, 59: 438, 437, 284, 284, 284, 284, 284, 284, 284, 433, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284},
		// 170
		{431, 436, 3: 285, 439, 440, 285, 435, 434, 285, 285, 285, 13: 430, 26: 285, 43: 285, 51: 285, 285, 55: 285, 432, 59: 438, 437, 285, 285, 285, 285, 285, 285, 285, 433, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285},
		{431, 436, 3: 286, 286, 286, 286, 435, 434, 286, 286, 286, 13: 430, 26: 286, 43: 286, 51: 286, 286, 55: 286, 432, 59: 438, 437, 286, 286, 286, 286, 286, 286, 286, 433, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286, 286},
		{431, 436, 3: 287, 287, 287, 287, 435, 434, 287, 287, 287, 13: 430, 26: 287, 43: 287, 51: 287, 287, 55: 287, 432, 59: 438, 437, 287, 287, 287, 287, 287, 287, 287, 433, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, 287},
		{431, 288, 3: 288, 288, 288, 288, 435, 434, 288, 288, 288, 13: 430, 26: 288, 43: 288, 51: 288, 288, 55: 288, 432, 59: 288, 288, 288, 288, 288, 288, 288, 288, 288, 433, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288},
		{431, 289, 3: 289, 289, 289, 289, 435, 434, 289, 289, 289, 13: 430, 26: 289, 43: 289, 51: 289, 289, 55: 289, 432, 59: 289, 289, 289, 289, 289, 289, 289, 289, 289, 433, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, 289},
		// 175
		{431, 290, 3: 290, 290, 290, 290, 435, 434, 290, 290, 290, 13: 430, 26: 290, 43: 290, 51: 290, 290, 55: 290, 432, 59: 290, 290, 290, 290, 290, 290, 290, 290, 290, 433, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, 290},
		{305, 305, 3: 305, 305, 305, 305, 305, 305, 305, 305, 305, 13: 305, 26: 305, 43: 305, 51: 305, 305, 55: 305, 305, 59: 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305},
		{306, 306, 3: 306, 306, 306, 306, 306, 306, 306, 306, 306, 13: 306, 26: 306, 43: 306, 51: 306, 306, 55: 306, 306, 59: 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, 306},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 10: 320, 320, 13: 430, 52: 455, 56: 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{10: 317, 510},
		// 180
		{10: 509},
		{307, 307, 3: 307, 307, 307, 307, 307, 307, 307, 307, 307, 13: 307, 26: 307, 43: 307, 51: 307, 307, 55: 307, 307, 59: 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, 307},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 511},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 10: 319, 319, 13: 430, 52: 455, 56: 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{11: 483, 55: 513},
		// 185
		{308, 308, 3: 308, 308, 308, 308, 308, 308, 308, 308, 308, 13: 308, 26: 308, 43: 308, 51: 308, 308, 55: 308, 308, 59: 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308},
		{162, 162, 162, 162, 162, 162, 162, 162, 162, 10: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 44: 162, 55: 162},
		{138, 10: 138, 138, 13: 138},
		{55: 520},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 518},
		// 190
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 13: 430, 52: 455, 55: 519, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{135, 10: 135, 135, 13: 135},
		{137, 10: 137, 137, 13: 137},
		{431, 298, 3: 298, 298, 298, 298, 435, 434, 298, 298, 298, 13: 430, 26: 298, 43: 298, 51: 298, 298, 55: 298, 432, 59: 298, 298, 298, 298, 298, 298, 298, 298, 298, 433, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298},
		{134, 10: 134, 134, 13: 134},
		// 195
		{10: 566},
		{10: 157, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 528, 340, 127: 337, 161: 527, 172: 525, 526, 199: 529},
		{10: 159, 563},
		{10: 156},
		{10: 155, 155},
		// 200
		{165, 412, 165, 10: 141, 141, 13: 165, 133: 413, 136: 531, 532, 156: 416, 180: 533},
		{10: 530},
		{132, 10: 132, 132, 13: 132},
		{536, 2: 535, 13: 129, 185: 417, 419, 534},
		{10: 153, 153},
		// 205
		{10: 152, 152},
		{540, 9: 179, 179, 179, 13: 539, 23: 179, 179, 179, 27: 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 52: 179, 179, 57: 179, 179},
		{176, 9: 176, 176, 176, 13: 176, 23: 176, 176, 176, 27: 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 52: 176, 176, 57: 176, 176},
		{165, 412, 165, 10: 133, 13: 165, 23: 133, 133, 133, 27: 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 44: 133, 133, 133, 133, 133, 133, 133, 133: 413, 136: 531, 537, 156: 523, 174: 524},
		{10: 538},
		// 210
		{175, 9: 175, 175, 175, 13: 175, 23: 175, 175, 175, 27: 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 52: 175, 175, 57: 175, 175},
		{161, 161, 161, 161, 161, 161, 161, 161, 161, 12: 161, 14: 161, 161, 161, 161, 161, 161, 161, 161, 161, 367, 365, 366, 44: 551, 55: 161, 113: 423, 154: 552, 163: 550},
		{2: 543, 10: 149, 23: 170, 170, 170, 27: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 44: 170, 170, 170, 170, 170, 170, 170, 170: 544, 194: 542, 213: 541},
		{23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 528, 340, 127: 337, 161: 527, 172: 525, 548},
		{10: 547},
		// 215
		{10: 151, 151, 147: 151},
		{10: 148, 545},
		{2: 546},
		{10: 150, 150, 147: 150},
		{168, 9: 168, 168, 168, 13: 168, 23: 168, 168, 168, 27: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 52: 168, 168, 57: 168, 168},
		// 220
		{10: 549},
		{169, 9: 169, 169, 169, 13: 169, 23: 169, 169, 169, 27: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 52: 169, 169, 57: 169, 169},
		{392, 559, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 421, 256, 169: 560},
		{161, 161, 161, 161, 161, 161, 161, 161, 161, 12: 161, 14: 161, 161, 161, 161, 161, 161, 161, 161, 161, 367, 365, 366, 113: 423, 154: 427, 163: 556},
		{160, 160, 160, 160, 160, 160, 160, 160, 160, 12: 160, 14: 160, 160, 160, 160, 160, 160, 160, 160, 160, 367, 365, 366, 44: 553, 55: 160, 113: 514},
		// 225
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 554},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 13: 430, 52: 455, 55: 555, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{172, 9: 172, 172, 172, 13: 172, 23: 172, 172, 172, 27: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 52: 172, 172, 57: 172, 172},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 557},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 13: 430, 52: 455, 55: 558, 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		// 230
		{173, 9: 173, 173, 173, 13: 173, 23: 173, 173, 173, 27: 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 52: 173, 173, 57: 173, 173},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 521, 562},
		{55: 561},
		{174, 9: 174, 174, 174, 13: 174, 23: 174, 174, 174, 27: 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 52: 174, 174, 57: 174, 174},
		{171, 9: 171, 171, 171, 13: 171, 23: 171, 171, 171, 27: 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 52: 171, 171, 57: 171, 171},
		// 235
		{23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 528, 340, 127: 337, 147: 564, 161: 565},
		{10: 158},
		{10: 154, 154},
		{139, 10: 139, 139, 13: 139},
		{10: 131, 23: 131, 131, 131, 27: 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 44: 131, 131, 131, 131, 131, 131, 131, 205: 568},
		// 240
		{10: 157, 23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 113: 339, 117: 358, 361, 357, 338, 124: 528, 340, 127: 337, 161: 527, 172: 525, 526, 199: 569},
		{10: 570},
		{130, 10: 130, 130, 13: 130},
		{167, 412, 167, 10: 167, 167, 13: 167, 133: 572},
		{166, 2: 166, 10: 166, 166, 13: 166},
		// 245
		{200, 200, 200, 9: 200, 200, 13: 200, 43: 200},
		{198, 198, 198, 9: 198, 198, 13: 198, 43: 198},
		{201, 201, 201, 9: 201, 201, 13: 201, 43: 201},
		{260, 260, 3: 260, 260, 260, 260, 260, 260, 260, 260, 260, 13: 260, 26: 260, 43: 260, 51: 260, 260, 55: 260, 260, 59: 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 145, 145, 145, 27: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 53: 582, 478, 114: 579, 123: 581, 155: 408, 162: 580},
		// 250
		{431, 293, 3: 293, 293, 293, 293, 435, 434, 293, 293, 293, 13: 430, 26: 293, 43: 293, 51: 293, 293, 55: 293, 432, 59: 293, 293, 293, 293, 293, 293, 293, 293, 293, 433, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, 293},
		{10: 753, 483},
		{10: 747},
		{10: 746},
		{104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 12: 104, 14: 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 44: 104, 104, 104, 104, 104, 104, 104, 53: 104, 57: 104, 104, 85: 104, 104, 104, 104, 104, 104, 104, 104, 104, 95: 104, 104, 206: 583},
		// 255
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 367, 365, 366, 100, 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 53: 582, 478, 57: 611, 377, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 113: 339, 585, 117: 358, 361, 357, 338, 601, 612, 588, 586, 340, 127: 337, 593, 589, 591, 592, 587, 134: 590, 600, 138: 336, 144: 599, 181: 597, 216: 598, 596},
		{316, 316, 3: 316, 316, 316, 316, 316, 316, 316, 11: 316, 13: 316, 43: 744, 52: 316, 56: 316, 59: 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316},
		{9: 251, 251, 483},
		{165, 412, 165, 9: 238, 133: 713, 136: 712, 711, 171: 709, 196: 710, 708},
		{114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 12: 114, 14: 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 44: 114, 114, 114, 114, 114, 114, 114, 53: 114, 57: 114, 114, 85: 114, 114, 114, 114, 114, 114, 114, 114, 114, 95: 114, 114, 112: 114},
		// 260
		{113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 12: 113, 14: 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 44: 113, 113, 113, 113, 113, 113, 113, 53: 113, 57: 113, 113, 85: 113, 113, 113, 113, 113, 113, 113, 113, 113, 95: 113, 113, 112: 113},
		{112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 12: 112, 14: 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 44: 112, 112, 112, 112, 112, 112, 112, 53: 112, 57: 112, 112, 85: 112, 112, 112, 112, 112, 112, 112, 112, 112, 95: 112, 112, 112: 112},
		{111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 12: 111, 14: 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 44: 111, 111, 111, 111, 111, 111, 111, 53: 111, 57: 111, 111, 85: 111, 111, 111, 111, 111, 111, 111, 111, 111, 95: 111, 111, 112: 111},
		{110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 12: 110, 14: 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 44: 110, 110, 110, 110, 110, 110, 110, 53: 110, 57: 110, 110, 85: 110, 110, 110, 110, 110, 110, 110, 110, 110, 95: 110, 110, 112: 110},
		{109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 12: 109, 14: 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 44: 109, 109, 109, 109, 109, 109, 109, 53: 109, 57: 109, 109, 85: 109, 109, 109, 109, 109, 109, 109, 109, 109, 95: 109, 109, 112: 109},
		// 265
		{108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 12: 108, 14: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 44: 108, 108, 108, 108, 108, 108, 108, 53: 108, 57: 108, 108, 85: 108, 108, 108, 108, 108, 108, 108, 108, 108, 95: 108, 108, 112: 108},
		{250, 250, 250, 250, 250, 250, 250, 250, 250, 12: 250, 14: 250, 250, 250, 250, 250, 250, 250, 250, 250, 145: 379, 705},
		{43: 703},
		{26: 702},
		{102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 12: 102, 14: 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 44: 102, 102, 102, 102, 102, 102, 102, 53: 102, 57: 102, 102, 85: 102, 102, 102, 102, 102, 102, 102, 102, 102, 95: 102, 102},
		// 270
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 367, 365, 366, 99, 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 53: 582, 478, 57: 611, 377, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 113: 339, 585, 117: 358, 361, 357, 338, 601, 612, 588, 586, 340, 127: 337, 593, 589, 591, 592, 587, 134: 590, 600, 138: 336, 144: 599, 181: 701},
		{98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 12: 98, 14: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 44: 98, 98, 98, 98, 98, 98, 98, 53: 98, 57: 98, 98, 85: 98, 98, 98, 98, 98, 98, 98, 98, 98, 95: 98, 98},
		{97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 12: 97, 14: 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 44: 97, 97, 97, 97, 97, 97, 97, 53: 97, 57: 97, 97, 85: 97, 97, 97, 97, 97, 97, 97, 97, 97, 95: 97, 97},
		{9: 700},
		{694},
		// 275
		{690},
		{686},
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 680},
		{666},
		{392, 397, 662, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 663},
		// 280
		{9: 661},
		{9: 660},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 585, 121: 658},
		{60, 23: 614, 85: 60, 203: 613},
		{51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 12: 51, 14: 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 44: 51, 51, 51, 51, 51, 51, 51, 53: 51, 57: 51, 51, 85: 51, 51, 51, 51, 51, 51, 51, 51, 51, 95: 51, 51, 112: 51},
		// 285
		{615, 85: 616},
		{59, 85: 59},
		{12: 618, 164: 643},
		{617},
		{12: 618, 164: 619},
		// 290
		{10: 63, 12: 63, 43: 63},
		{12: 620, 43: 621},
		{10: 62, 12: 62, 43: 62},
		{43: 622},
		{12: 55, 626, 149: 624, 623, 157: 625},
		// 295
		{12: 639},
		{10: 57, 57, 43: 57},
		{11: 629, 43: 630},
		{2: 627},
		{55: 628},
		// 300
		{12: 54},
		{12: 55, 626, 149: 638, 623},
		{12: 631, 182: 632},
		{10: 53, 53, 43: 53},
		{11: 633, 43: 634},
		// 305
		{12: 637},
		{2: 543, 170: 635},
		{10: 636, 545},
		{47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 12: 47, 14: 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 44: 47, 47, 47, 47, 47, 47, 47, 53: 47, 57: 47, 47, 85: 47, 47, 47, 47, 47, 47, 47, 47, 47, 95: 47, 47, 112: 47},
		{10: 52, 52, 43: 52},
		// 310
		{10: 56, 56, 43: 56},
		{640},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 641},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 10: 642, 13: 430, 52: 455, 56: 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{10: 58, 58, 43: 58},
		// 315
		{10: 644, 12: 620, 43: 645},
		{61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 12: 61, 14: 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 44: 61, 61, 61, 61, 61, 61, 61, 53: 61, 57: 61, 61, 85: 61, 61, 61, 61, 61, 61, 61, 61, 61, 95: 61, 61, 112: 61},
		{10: 647, 12: 55, 626, 43: 648, 149: 624, 623, 157: 646},
		{10: 651, 629, 43: 652},
		{46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 12: 46, 14: 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 44: 46, 46, 46, 46, 46, 46, 46, 53: 46, 57: 46, 46, 85: 46, 46, 46, 46, 46, 46, 46, 46, 46, 95: 46, 46, 112: 46},
		// 320
		{12: 55, 626, 149: 624, 623, 157: 649},
		{10: 650, 629},
		{45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 12: 45, 14: 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 44: 45, 45, 45, 45, 45, 45, 45, 53: 45, 57: 45, 45, 85: 45, 45, 45, 45, 45, 45, 45, 45, 45, 95: 45, 45, 112: 45},
		{50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 12: 50, 14: 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 44: 50, 50, 50, 50, 50, 50, 50, 53: 50, 57: 50, 50, 85: 50, 50, 50, 50, 50, 50, 50, 50, 50, 95: 50, 50, 112: 50},
		{12: 55, 626, 149: 624, 623, 157: 653},
		// 325
		{10: 654, 629, 43: 655},
		{49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 12: 49, 14: 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 44: 49, 49, 49, 49, 49, 49, 49, 53: 49, 57: 49, 49, 85: 49, 49, 49, 49, 49, 49, 49, 49, 49, 95: 49, 49, 112: 49},
		{12: 631, 182: 656},
		{10: 657, 633},
		{48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 12: 48, 14: 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 44: 48, 48, 48, 48, 48, 48, 48, 53: 48, 57: 48, 48, 85: 48, 48, 48, 48, 48, 48, 48, 48, 48, 95: 48, 48, 112: 48},
		// 330
		{9: 659},
		{85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 12: 85, 14: 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 44: 85, 85, 85, 85, 85, 85, 85, 53: 85, 57: 85, 85, 85: 85, 85, 85, 85, 85, 85, 85, 85, 85, 95: 85, 85, 112: 85},
		{86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 12: 86, 14: 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 44: 86, 86, 86, 86, 86, 86, 86, 53: 86, 57: 86, 86, 85: 86, 86, 86, 86, 86, 86, 86, 86, 86, 95: 86, 86, 112: 86},
		{87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 12: 87, 14: 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 44: 87, 87, 87, 87, 87, 87, 87, 53: 87, 57: 87, 87, 85: 87, 87, 87, 87, 87, 87, 87, 87, 87, 95: 87, 87, 112: 87},
		{316, 316, 3: 316, 316, 316, 316, 316, 316, 665, 13: 316, 52: 316, 56: 316, 59: 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316},
		// 335
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 664, 13: 430, 52: 455, 56: 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 12: 84, 14: 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 44: 84, 84, 84, 84, 84, 84, 84, 53: 84, 57: 84, 84, 85: 84, 84, 84, 84, 84, 84, 84, 84, 84, 95: 84, 84, 112: 84},
		{88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 12: 88, 14: 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 44: 88, 88, 88, 88, 88, 88, 88, 53: 88, 57: 88, 88, 85: 88, 88, 88, 88, 88, 88, 88, 88, 88, 95: 88, 88, 112: 88},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 54: 478, 58: 377, 113: 339, 585, 117: 358, 361, 357, 338, 667, 124: 586, 340, 127: 337, 138: 336, 144: 668},
		{9: 674},
		// 340
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 585, 121: 669},
		{9: 670},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 10: 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 585, 121: 671},
		{10: 672},
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 673},
		// 345
		{89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 12: 89, 14: 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 44: 89, 89, 89, 89, 89, 89, 89, 53: 89, 57: 89, 89, 85: 89, 89, 89, 89, 89, 89, 89, 89, 89, 95: 89, 89, 112: 89},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 585, 121: 675},
		{9: 676},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 10: 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 585, 121: 677},
		{10: 678},
		// 350
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 679},
		{90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 12: 90, 14: 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 44: 90, 90, 90, 90, 90, 90, 90, 53: 90, 57: 90, 90, 85: 90, 90, 90, 90, 90, 90, 90, 90, 90, 95: 90, 90, 112: 90},
		{86: 681},
		{682},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 683},
		// 355
		{10: 684, 483},
		{9: 685},
		{91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 12: 91, 14: 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 44: 91, 91, 91, 91, 91, 91, 91, 53: 91, 57: 91, 91, 85: 91, 91, 91, 91, 91, 91, 91, 91, 91, 95: 91, 91, 112: 91},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 687},
		{10: 688, 483},
		// 360
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 689},
		{92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 12: 92, 14: 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 44: 92, 92, 92, 92, 92, 92, 92, 53: 92, 57: 92, 92, 85: 92, 92, 92, 92, 92, 92, 92, 92, 92, 95: 92, 92, 112: 92},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 691},
		{10: 692, 483},
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 693},
		// 365
		{93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 12: 93, 14: 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 44: 93, 93, 93, 93, 93, 93, 93, 53: 93, 57: 93, 93, 85: 93, 93, 93, 93, 93, 93, 93, 93, 93, 95: 93, 93, 112: 93},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 54: 478, 114: 695},
		{10: 696, 483},
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 697},
		{95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 12: 95, 14: 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 44: 95, 95, 95, 95, 95, 95, 95, 53: 95, 57: 95, 95, 85: 95, 95, 95, 95, 95, 95, 95, 95, 95, 95: 95, 95, 112: 698},
		// 370
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 699},
		{94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 12: 94, 14: 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 44: 94, 94, 94, 94, 94, 94, 94, 53: 94, 57: 94, 94, 85: 94, 94, 94, 94, 94, 94, 94, 94, 94, 95: 94, 94, 112: 94},
		{96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 12: 96, 14: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 44: 96, 96, 96, 96, 96, 96, 96, 53: 96, 57: 96, 96, 85: 96, 96, 96, 96, 96, 96, 96, 96, 96, 95: 96, 96, 112: 96},
		{101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 12: 101, 14: 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 44: 101, 101, 101, 101, 101, 101, 101, 53: 101, 57: 101, 101, 85: 101, 101, 101, 101, 101, 101, 101, 101, 101, 95: 101, 101},
		{103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 12: 103, 14: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 44: 103, 103, 103, 103, 103, 103, 103, 103, 53: 103, 57: 103, 103, 85: 103, 103, 103, 103, 103, 103, 103, 103, 103, 95: 103, 103, 112: 103},
		// 375
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 704},
		{105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 12: 105, 14: 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 44: 105, 105, 105, 105, 105, 105, 105, 53: 105, 57: 105, 105, 85: 105, 105, 105, 105, 105, 105, 105, 105, 105, 95: 105, 105, 112: 105},
		{43: 706},
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 707},
		{106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 12: 106, 14: 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 44: 106, 106, 106, 106, 106, 106, 106, 53: 106, 57: 106, 106, 85: 106, 106, 106, 106, 106, 106, 106, 106, 106, 95: 106, 106, 112: 106},
		// 380
		{9: 743},
		{9: 240, 11: 240},
		{9: 237, 11: 741},
		{9: 236, 11: 236, 52: 235, 179: 715},
		{714, 2: 535, 187: 534},
		// 385
		{164, 2: 164},
		{165, 412, 165, 133: 713, 136: 712, 537},
		{52: 716},
		{392, 397, 717, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 720, 718, 160: 719},
		{316, 316, 3: 316, 316, 316, 316, 316, 316, 316, 11: 316, 13: 316, 26: 316, 43: 739, 52: 316, 56: 316, 59: 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, 316},
		// 390
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 127, 11: 127, 13: 430, 26: 127, 52: 455, 56: 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{9: 234, 11: 234},
		{120, 120, 120, 120, 120, 120, 120, 120, 120, 11: 122, 120, 726, 120, 120, 120, 120, 120, 120, 120, 120, 120, 26: 122, 53: 120, 56: 727, 159: 725, 166: 724, 722, 723, 198: 721},
		{11: 734, 26: 193, 165: 735},
		{392, 397, 717, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 720, 718, 160: 733},
		// 395
		{13: 726, 52: 731, 56: 727, 159: 732},
		{119, 119, 119, 119, 119, 119, 119, 119, 119, 12: 119, 14: 119, 119, 119, 119, 119, 119, 119, 119, 119, 53: 119},
		{13: 118, 52: 118, 56: 118},
		{250, 250, 250, 250, 250, 250, 250, 250, 250, 12: 250, 14: 250, 250, 250, 250, 250, 250, 250, 250, 250, 145: 379, 729},
		{2: 728},
		// 400
		{13: 115, 52: 115, 56: 115},
		{55: 730},
		{13: 116, 52: 116, 56: 116},
		{121, 121, 121, 121, 121, 121, 121, 121, 121, 12: 121, 14: 121, 121, 121, 121, 121, 121, 121, 121, 121, 53: 121},
		{13: 117, 52: 117, 56: 117},
		// 405
		{11: 124, 26: 124},
		{120, 120, 120, 120, 120, 120, 120, 120, 120, 12: 120, 726, 120, 120, 120, 120, 120, 120, 120, 120, 120, 26: 192, 53: 120, 56: 727, 159: 725, 166: 724, 737, 723},
		{26: 736},
		{9: 126, 11: 126, 26: 126},
		{392, 397, 717, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 720, 718, 160: 738},
		// 410
		{11: 123, 26: 123},
		{392, 397, 717, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 720, 718, 160: 740},
		{9: 125, 11: 125, 26: 125},
		{165, 412, 165, 133: 713, 136: 712, 711, 171: 742},
		{9: 239, 11: 239},
		// 415
		{248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 12: 248, 14: 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 44: 248, 248, 248, 248, 248, 248, 248, 248, 53: 248, 57: 248, 248, 85: 248, 248, 248, 248, 248, 248, 248, 248, 248, 95: 248, 248},
		{392, 397, 584, 396, 398, 399, 404, 395, 394, 252, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 582, 478, 57: 611, 85: 607, 604, 609, 594, 608, 595, 605, 606, 602, 95: 610, 603, 114: 585, 121: 601, 612, 588, 128: 593, 589, 591, 592, 587, 134: 590, 745},
		{107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 12: 107, 14: 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 44: 107, 107, 107, 107, 107, 107, 107, 53: 107, 57: 107, 107, 85: 107, 107, 107, 107, 107, 107, 107, 107, 107, 95: 107, 107, 112: 107},
		{259, 259, 3: 259, 259, 259, 259, 259, 259, 259, 259, 259, 13: 259, 26: 259, 43: 259, 51: 259, 259, 55: 259, 259, 59: 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, 259},
		{392, 292, 385, 292, 292, 292, 292, 395, 394, 292, 292, 292, 391, 292, 401, 400, 403, 386, 387, 388, 389, 390, 402, 26: 292, 43: 292, 51: 292, 292, 749, 748, 292, 292, 59: 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, 292},
		// 420
		{431, 291, 3: 291, 291, 291, 291, 435, 434, 291, 291, 291, 13: 430, 26: 291, 43: 291, 51: 291, 291, 55: 291, 432, 59: 291, 291, 291, 291, 291, 291, 291, 291, 291, 433, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291},
		{120, 120, 120, 120, 120, 120, 120, 120, 120, 11: 122, 120, 726, 120, 120, 120, 120, 120, 120, 120, 120, 120, 26: 122, 53: 120, 56: 727, 159: 725, 166: 724, 722, 723, 198: 750},
		{11: 734, 26: 193, 165: 751},
		{26: 752},
		{302, 302, 3: 302, 302, 302, 302, 302, 302, 302, 302, 302, 13: 302, 26: 302, 43: 302, 51: 302, 302, 55: 302, 302, 59: 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302},
		// 425
		{309, 309, 3: 309, 309, 309, 309, 309, 309, 309, 309, 309, 13: 309, 26: 309, 43: 309, 51: 309, 309, 55: 309, 309, 59: 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, 309},
		{431, 294, 3: 294, 294, 294, 294, 435, 434, 294, 294, 294, 13: 430, 26: 294, 43: 294, 51: 294, 294, 55: 294, 432, 59: 294, 294, 294, 294, 294, 294, 294, 294, 294, 433, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294},
		{431, 295, 3: 295, 295, 295, 295, 435, 434, 295, 295, 295, 13: 430, 26: 295, 43: 295, 51: 295, 295, 55: 295, 432, 59: 295, 295, 295, 295, 295, 295, 295, 295, 295, 433, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295},
		{431, 296, 3: 296, 296, 296, 296, 435, 434, 296, 296, 296, 13: 430, 26: 296, 43: 296, 51: 296, 296, 55: 296, 432, 59: 296, 296, 296, 296, 296, 296, 296, 296, 296, 433, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296},
		{431, 297, 3: 297, 297, 297, 297, 435, 434, 297, 297, 297, 13: 430, 26: 297, 43: 297, 51: 297, 297, 55: 297, 432, 59: 297, 297, 297, 297, 297, 297, 297, 297, 297, 433, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297, 297},
		// 430
		{431, 299, 3: 299, 299, 299, 299, 435, 434, 299, 299, 299, 13: 430, 26: 299, 43: 299, 51: 299, 299, 55: 299, 432, 59: 299, 299, 299, 299, 299, 299, 299, 299, 299, 433, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299},
		{431, 300, 3: 300, 300, 300, 300, 435, 434, 300, 300, 300, 13: 430, 26: 300, 43: 300, 51: 300, 300, 55: 300, 432, 59: 300, 300, 300, 300, 300, 300, 300, 300, 300, 433, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300, 300},
		{431, 301, 3: 301, 301, 301, 301, 435, 434, 301, 301, 301, 13: 430, 26: 301, 43: 301, 51: 301, 301, 55: 301, 432, 59: 301, 301, 301, 301, 301, 301, 301, 301, 301, 433, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, 301},
		{10: 762},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 53: 749, 748},
		// 435
		{764},
		{12: 618, 164: 765},
		{10: 644, 12: 620},
		{23: 65, 65, 65, 27: 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 44: 65, 65, 65, 65, 65, 65, 65, 53: 66, 57: 66, 65, 178: 768, 183: 767},
		{53: 74, 57: 74, 208: 772},
		// 440
		{23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 58: 377, 113: 339, 117: 358, 361, 357, 338, 124: 586, 340, 127: 337, 138: 336, 144: 769, 219: 770},
		{23: 68, 68, 68, 27: 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 44: 68, 68, 68, 68, 68, 68, 68, 53: 68, 57: 68, 68},
		{23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 44: 343, 344, 342, 368, 369, 345, 341, 53: 64, 57: 64, 377, 113: 339, 117: 358, 361, 357, 338, 124: 586, 340, 127: 337, 138: 336, 144: 771},
		{23: 67, 67, 67, 27: 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 44: 67, 67, 67, 67, 67, 67, 67, 53: 67, 57: 67, 67},
		{53: 72, 57: 70, 176: 774, 775, 192: 773},
		// 445
		{73, 73, 73, 9: 73, 23: 73, 73, 73, 27: 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 44: 73, 73, 73, 73, 73, 73, 73, 73, 57: 73, 73},
		{53: 582, 123: 778},
		{57: 611, 122: 612, 128: 776},
		{9: 777},
		{69, 69, 69, 9: 69, 23: 69, 69, 69, 27: 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 44: 69, 69, 69, 69, 69, 69, 69, 69, 57: 69, 69},
		// 450
		{71, 71, 71, 9: 71, 23: 71, 71, 71, 27: 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 44: 71, 71, 71, 71, 71, 71, 71, 71, 57: 71, 71},
		{79, 79, 79, 9: 79, 23: 79, 79, 79, 27: 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 44: 79, 79, 79, 79, 79, 79, 79, 79, 57: 79, 79},
		{53: 191, 212: 782},
		{189, 189, 189, 9: 189, 189, 189, 13: 189, 23: 189, 189, 189, 27: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 53: 146},
		{53: 783},
		// 455
		{2: 784, 189: 787, 786, 225: 785},
		{11: 321, 26: 321, 52: 321},
		{11: 790, 26: 193, 165: 791},
		{11: 188, 26: 188},
		{11: 186, 26: 186, 52: 788},
		// 460
		{250, 250, 250, 250, 250, 250, 250, 250, 250, 12: 250, 14: 250, 250, 250, 250, 250, 250, 250, 250, 250, 145: 379, 789},
		{11: 185, 26: 185},
		{2: 784, 26: 192, 189: 787, 793},
		{26: 792},
		{190, 190, 190, 9: 190, 190, 190, 13: 190, 23: 190, 190, 190, 27: 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190},
		// 465
		{11: 187, 26: 187},
		{53: 796},
		{210, 210, 210, 9: 210, 210, 210, 13: 210, 23: 210, 210, 210, 27: 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 53: 146},
		{23: 212, 212, 212, 798, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 58: 212, 211: 797},
		{23: 367, 365, 366, 27: 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 58: 377, 113: 410, 117: 358, 361, 357, 409, 138: 802, 153: 801, 201: 800, 230: 799},
		// 470
		{209, 209, 209, 9: 209, 209, 209, 13: 209, 23: 209, 209, 209, 27: 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209},
		{23: 367, 365, 366, 813, 355, 347, 356, 352, 364, 351, 349, 350, 348, 353, 362, 359, 360, 363, 354, 346, 58: 377, 113: 410, 117: 358, 361, 357, 409, 138: 802, 153: 801, 201: 814},
		{23: 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 58: 206},
		{165, 412, 165, 9: 804, 43: 178, 133: 713, 136: 712, 806, 184: 807, 202: 805, 231: 803},
		{23: 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 58: 202},
		// 475
		{9: 810, 11: 811},
		{23: 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 58: 203},
		{9: 197, 11: 197},
		{9: 195, 11: 195, 43: 177},
		{43: 808},
		// 480
		{250, 250, 250, 250, 250, 250, 250, 250, 250, 12: 250, 14: 250, 250, 250, 250, 250, 250, 250, 250, 250, 145: 379, 809},
		{9: 194, 11: 194},
		{23: 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 58: 204},
		{165, 412, 165, 43: 178, 133: 713, 136: 712, 806, 184: 807, 202: 812},
		{9: 196, 11: 196},
		// 485
		{211, 211, 211, 9: 211, 211, 211, 13: 211, 23: 211, 211, 211, 27: 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211},
		{23: 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 58: 205},
		{392, 397, 385, 396, 398, 399, 404, 395, 394, 12: 391, 14: 401, 400, 403, 386, 387, 388, 389, 390, 402, 145, 145, 145, 27: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 816, 155: 408, 162: 817},
		{431, 436, 3: 449, 439, 440, 452, 435, 434, 10: 819, 13: 430, 52: 455, 56: 432, 59: 438, 437, 443, 444, 454, 450, 451, 459, 463, 433, 457, 447, 446, 445, 441, 461, 458, 456, 448, 465, 453, 442, 462, 460, 464},
		{10: 818},
		// 490
		{213, 213, 213, 9: 213, 213, 213, 13: 213, 23: 213, 213, 213, 27: 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213},
		{214, 214, 214, 9: 214, 214, 214, 13: 214, 23: 214, 214, 214, 27: 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214},
		{243, 243, 243, 9: 243, 243, 243, 13: 243},
		{241, 241, 241, 9: 241, 241, 241, 13: 241},
		{244, 244, 244, 9: 244, 244, 244, 13: 244},
		// 495
		{245, 245, 245, 9: 245, 245, 245, 13: 245},
		{246, 246, 246, 9: 246, 246, 246, 13: 246},
		{9: 236, 11: 236, 23: 65, 65, 65, 27: 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 44: 65, 65, 65, 65, 65, 65, 65, 52: 235, 66, 57: 66, 65, 178: 768, 715, 183: 826},
		{53: 77, 57: 77, 207: 827},
		{53: 72, 57: 70, 176: 774, 775, 192: 828},
		// 500
		{76, 76, 76, 9: 76, 23: 76, 76, 76, 27: 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 44: 76, 76, 76, 76, 76, 76, 76, 76, 57: 76, 76},
		{82, 82, 82, 9: 82, 23: 82, 82, 82, 27: 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 44: 82, 82, 82, 82, 82, 82, 82, 82, 57: 82, 82},
		{250, 250, 250, 250, 250, 250, 250, 250, 250, 12: 250, 14: 250, 250, 250, 250, 250, 250, 250, 250, 250, 145: 379, 831},
		{51: 324},
		{84: 854, 94: 856, 100: 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 835, 840, 837, 839, 148: 834, 228: 833},
		// 505
		{51: 326},
		{51: 43, 84: 854, 94: 856, 100: 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 894, 840, 837, 839},
		{51: 42, 84: 42, 94: 42, 97: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42},
		{51: 38, 84: 38, 94: 38, 97: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38},
		{51: 37, 84: 37, 94: 37, 97: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37},
		// 510
		{94: 856, 115: 916, 853},
		{51: 35, 84: 35, 94: 35, 97: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35},
		{97: 28, 28, 904, 188: 902, 220: 903, 901},
		{94: 856, 115: 898, 853},
		{2: 895},
		// 515
		{2: 890},
		{2: 871, 84: 873, 226: 872},
		{84: 854, 94: 856, 115: 855, 853, 126: 870},
		{51: 16, 84: 16, 94: 16, 97: 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
		{94: 856, 115: 868, 853},
		// 520
		{94: 856, 115: 866, 853},
		{84: 854, 94: 856, 115: 855, 853, 126: 865},
		{2: 861},
		{94: 856, 115: 859, 853},
		{51: 7, 84: 7, 94: 7, 97: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7},
		// 525
		{84: 5, 94: 858},
		{51: 4, 84: 4, 94: 4, 97: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
		{84: 857},
		{84: 2, 94: 2},
		{51: 3, 84: 3, 94: 3, 97: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
		// 530
		{84: 1, 94: 1},
		{84: 860},
		{51: 8, 84: 8, 94: 8, 97: 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
		{84: 862, 94: 856, 115: 863, 853},
		{51: 12, 84: 12, 94: 12, 97: 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
		// 535
		{84: 864},
		{51: 9, 84: 9, 94: 9, 97: 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9},
		{51: 13, 84: 13, 94: 13, 97: 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
		{84: 867},
		{51: 14, 84: 14, 94: 14, 97: 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
		// 540
		{84: 869},
		{51: 15, 84: 15, 94: 15, 97: 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
		{51: 17, 84: 17, 94: 17, 97: 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17},
		{84: 854, 94: 856, 115: 855, 853, 126: 879, 152: 889},
		{2: 543, 10: 149, 147: 875, 170: 874, 194: 876},
		// 545
		{51: 10, 84: 10, 94: 10, 97: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
		{10: 148, 882, 147: 883},
		{10: 880},
		{10: 877},
		{84: 854, 94: 856, 115: 855, 853, 126: 879, 152: 878},
		// 550
		{51: 18, 84: 18, 94: 18, 97: 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18},
		{51: 6, 84: 6, 94: 6, 97: 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6},
		{84: 854, 94: 856, 115: 855, 853, 126: 879, 152: 881},
		{51: 20, 84: 20, 94: 20, 97: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
		{2: 546, 147: 886},
		// 555
		{10: 884},
		{84: 854, 94: 856, 115: 855, 853, 126: 879, 152: 885},
		{51: 11, 84: 11, 94: 11, 97: 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11},
		{10: 887},
		{84: 854, 94: 856, 115: 855, 853, 126: 879, 152: 888},
		// 560
		{51: 19, 84: 19, 94: 19, 97: 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19},
		{51: 21, 84: 21, 94: 21, 97: 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21},
		{84: 891},
		{84: 854, 94: 856, 97: 40, 40, 40, 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 835, 840, 837, 839, 148: 892, 151: 893},
		{84: 854, 94: 856, 97: 39, 39, 39, 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 894, 840, 837, 839},
		// 565
		{97: 31, 31, 31},
		{51: 41, 84: 41, 94: 41, 97: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41},
		{84: 896},
		{84: 854, 94: 856, 97: 40, 40, 40, 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 835, 840, 837, 839, 148: 892, 151: 897},
		{97: 32, 32, 32},
		// 570
		{84: 899},
		{84: 854, 94: 856, 97: 40, 40, 40, 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 835, 840, 837, 839, 148: 892, 151: 900},
		{97: 33, 33, 33},
		{97: 24, 910, 222: 911, 909},
		{97: 30, 30, 30},
		// 575
		{97: 27, 27, 904, 188: 908},
		{94: 856, 115: 905, 853},
		{84: 906},
		{84: 854, 94: 856, 97: 40, 40, 40, 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 835, 840, 837, 839, 148: 892, 151: 907},
		{97: 26, 26, 26},
		// 580
		{97: 29, 29, 29},
		{97: 915, 224: 914},
		{84: 912},
		{97: 23},
		{84: 854, 94: 856, 97: 40, 100: 844, 845, 846, 841, 842, 843, 847, 851, 848, 838, 849, 850, 115: 855, 853, 126: 852, 139: 836, 835, 840, 837, 839, 148: 892, 151: 913},
		// 585
		{97: 25},
		{51: 34, 84: 34, 94: 34, 97: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34},
		{51: 22, 84: 22, 94: 22, 97: 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22},
		{84: 917},
		{51: 36, 84: 36, 94: 36, 97: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36},
	}
)

var yyDebug = 0

type yyLexer interface {
	Lex(lval *yySymType) int
	Error(s string)
}

type yyLexerEx interface {
	yyLexer
	Reduced(rule, state int, lval *yySymType) bool
}

func yySymName(c int) (s string) {
	x, ok := yyXLAT[c]
	if ok {
		return yySymNames[x]
	}

	if c < 0x7f {
		return __yyfmt__.Sprintf("'%c'", c)
	}

	return __yyfmt__.Sprintf("%d", c)
}

func yylex1(yylex yyLexer, lval *yySymType) (n int) {
	n = yylex.Lex(lval)
	if n <= 0 {
		n = yyEofCode
	}
	if yyDebug >= 3 {
		__yyfmt__.Printf("\nlex %s(%#x %d), PrettyString(lval.Token): %v\n", yySymName(n), n, n, PrettyString(lval.Token))
	}
	return n
}

func yyParse(yylex yyLexer) int {
	const yyError = 236

	yyEx, _ := yylex.(yyLexerEx)
	var yyn int
	var yylval yySymType
	var yyVAL yySymType
	yyS := make([]yySymType, 200)

	Nerrs := 0   /* number of errors */
	Errflag := 0 /* error recovery flag */
	yyerrok := func() {
		if yyDebug >= 2 {
			__yyfmt__.Printf("yyerrok()\n")
		}
		Errflag = 0
	}
	_ = yyerrok
	yystate := 0
	yychar := -1
	var yyxchar int
	var yyshift int
	yyp := -1
	goto yystack

ret0:
	return 0

ret1:
	return 1

yystack:
	/* put a state and value onto the stack */
	yyp++
	if yyp >= len(yyS) {
		nyys := make([]yySymType, len(yyS)*2)
		copy(nyys, yyS)
		yyS = nyys
	}
	yyS[yyp] = yyVAL
	yyS[yyp].yys = yystate

yynewstate:
	if yychar < 0 {
		yylval.yys = yystate
		yychar = yylex1(yylex, &yylval)
		var ok bool
		if yyxchar, ok = yyXLAT[yychar]; !ok {
			yyxchar = len(yySymNames) // > tab width
		}
	}
	if yyDebug >= 4 {
		var a []int
		for _, v := range yyS[:yyp+1] {
			a = append(a, v.yys)
		}
		__yyfmt__.Printf("state stack %v\n", a)
	}
	row := yyParseTab[yystate]
	yyn = 0
	if yyxchar < len(row) {
		if yyn = int(row[yyxchar]); yyn != 0 {
			yyn += yyTabOfs
		}
	}
	switch {
	case yyn > 0: // shift
		yychar = -1
		yyVAL = yylval
		yystate = yyn
		yyshift = yyn
		if yyDebug >= 2 {
			__yyfmt__.Printf("shift, and goto state %d\n", yystate)
		}
		if Errflag > 0 {
			Errflag--
		}
		goto yystack
	case yyn < 0: // reduce
	case yystate == 1: // accept
		if yyDebug >= 2 {
			__yyfmt__.Println("accept")
		}
		goto ret0
	}

	if yyn == 0 {
		/* error ... attempt to resume parsing */
		switch Errflag {
		case 0: /* brand new error */
			if yyDebug >= 1 {
				__yyfmt__.Printf("no action for %s in state %d\n", yySymName(yychar), yystate)
			}
			msg, ok := yyXErrors[yyXError{yystate, yyxchar}]
			if !ok {
				msg, ok = yyXErrors[yyXError{yystate, -1}]
			}
			if !ok && yyshift != 0 {
				msg, ok = yyXErrors[yyXError{yyshift, yyxchar}]
			}
			if !ok {
				msg, ok = yyXErrors[yyXError{yyshift, -1}]
			}
			if yychar > 0 {
				ls := yyTokenLiteralStrings[yychar]
				if ls == "" {
					ls = yySymName(yychar)
				}
				if ls != "" {
					switch {
					case msg == "":
						msg = __yyfmt__.Sprintf("unexpected %s", ls)
					default:
						msg = __yyfmt__.Sprintf("unexpected %s, %s", ls, msg)
					}
				}
			}
			if msg == "" {
				msg = "syntax error"
			}
			yylex.Error(msg)
			Nerrs++
			fallthrough

		case 1, 2: /* incompletely recovered error ... try again */
			Errflag = 3

			/* find a state where "error" is a legal shift action */
			for yyp >= 0 {
				row := yyParseTab[yyS[yyp].yys]
				if yyError < len(row) {
					yyn = int(row[yyError]) + yyTabOfs
					if yyn > 0 { // hit
						if yyDebug >= 2 {
							__yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
						}
						yystate = yyn /* simulate a shift of "error" */
						goto yystack
					}
				}

				/* the current p has no shift on "error", pop stack */
				if yyDebug >= 2 {
					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
				}
				yyp--
			}
			/* there is no state on the stack with an error shift ... abort */
			if yyDebug >= 2 {
				__yyfmt__.Printf("error recovery failed\n")
			}
			goto ret1

		case 3: /* no shift yet; clobber input char */
			if yyDebug >= 2 {
				__yyfmt__.Printf("error recovery discards %s\n", yySymName(yychar))
			}
			if yychar == yyEofCode {
				goto ret1
			}

			yychar = -1
			goto yynewstate /* try again in the same state */
		}
	}

	r := -yyn
	x0 := yyReductions[r]
	x, n := x0.xsym, x0.components
	yypt := yyp
	_ = yypt // guard against "declared and not used"

	yyp -= n
	if yyp+1 >= len(yyS) {
		nyys := make([]yySymType, len(yyS)*2)
		copy(nyys, yyS)
		yyS = nyys
	}
	yyVAL = yyS[yyp+1]

	/* consult goto table to find next state */
	exState := yystate
	yystate = int(yyParseTab[yyS[yyp].yys][x]) + yyTabOfs
	/* reduction by production r */
	if yyDebug >= 2 {
		__yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yySymNames[x], yystate)
	}

	switch r {
	case 1:
		{
			lx := yylex.(*lexer)
			lx.preprocessingFile = nil
		}
	case 2:
		{
			lx := yylex.(*lexer)
			lx.preprocessingFile = yyS[yypt-0].node.(*PreprocessingFile)
		}
	case 3:
		{
			lx := yylex.(*lexer)
			lx.constantExpression = nil
		}
	case 4:
		{
			lx := yylex.(*lexer)
			lx.constantExpression = yyS[yypt-0].node.(*ConstantExpression)
		}
	case 5:
		{
			lx := yylex.(*lexer)
			lx.translationUnit = nil
		}
	case 6:
		{
			lx := yylex.(*lexer)
			if lx.report.Errors(false) == nil && lx.scope.kind != ScopeFile {
				panic("internal error")
			}

			lx.translationUnit = yyS[yypt-0].node.(*TranslationUnit).reverse()
			lx.translationUnit.Declarations = lx.scope
		}
	case 7:
		{
			yyVAL.node = &EnumerationConstant{
				Token: yyS[yypt-0].Token,
			}
		}
	case 8:
		{
			yyVAL.node = &ArgumentExpressionList{
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 9:
		{
			yyVAL.node = &ArgumentExpressionList{
				Case: 1,
				ArgumentExpressionList: yyS[yypt-2].node.(*ArgumentExpressionList),
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 10:
		{
			yyVAL.node = (*ArgumentExpressionListOpt)(nil)
		}
	case 11:
		{
			yyVAL.node = &ArgumentExpressionListOpt{
				ArgumentExpressionList: yyS[yypt-0].node.(*ArgumentExpressionList).reverse(),
			}
		}
	case 12:
		{
			lx := yylex.(*lexer)
			lhs := &Expression{
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
		}
	case 13:
		{
			yyVAL.node = &Expression{
				Case:  1,
				Token: yyS[yypt-0].Token,
			}
		}
	case 14:
		{
			yyVAL.node = &Expression{
				Case:  2,
				Token: yyS[yypt-0].Token,
			}
		}
	case 15:
		{
			yyVAL.node = &Expression{
				Case:  3,
				Token: yyS[yypt-0].Token,
			}
		}
	case 16:
		{
			yyVAL.node = &Expression{
				Case:  4,
				Token: yyS[yypt-0].Token,
			}
		}
	case 17:
		{
			yyVAL.node = &Expression{
				Case:  5,
				Token: yyS[yypt-0].Token,
			}
		}
	case 18:
		{
			yyVAL.node = &Expression{
				Case:  6,
				Token: yyS[yypt-0].Token,
			}
		}
	case 19:
		{
			yyVAL.node = &Expression{
				Case:           7,
				Token:          yyS[yypt-2].Token,
				ExpressionList: yyS[yypt-1].node.(*ExpressionList).reverse(),
				Token2:         yyS[yypt-0].Token,
			}
		}
	case 20:
		{
			yyVAL.node = &Expression{
				Case:           8,
				Expression:     yyS[yypt-3].node.(*Expression),
				Token:          yyS[yypt-2].Token,
				ExpressionList: yyS[yypt-1].node.(*ExpressionList).reverse(),
				Token2:         yyS[yypt-0].Token,
			}
		}
	case 21:
		{
			lx := yylex.(*lexer)
			lhs := &Expression{
				Case:       9,
				Expression: yyS[yypt-3].node.(*Expression),
				Token:      yyS[yypt-2].Token,
				ArgumentExpressionListOpt: yyS[yypt-1].node.(*ArgumentExpressionListOpt),
				Token2: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			o := lhs.ArgumentExpressionListOpt
			if o == nil {
				break
			}

			if lhs.Expression.Case == 0 { // IDENTIFIER
				if lx.tweaks.enableBuiltinConstantP && lhs.Expression.Token.Val == idBuiltinConstantP {
					break
				}

				b := lhs.Expression.scope.Lookup(NSIdentifiers, lhs.Expression.Token.Val)
				if b.Node == nil && lx.tweaks.enableImplicitFuncDef {
					for l := o.ArgumentExpressionList; l != nil; l = l.ArgumentExpressionList {
						l.Expression.eval(lx)
					}
					break
				}
			}

			lhs.Expression.eval(lx)
			for l := o.ArgumentExpressionList; l != nil; l = l.ArgumentExpressionList {
				l.Expression.eval(lx)
			}
		}
	case 22:
		{
			yyVAL.node = &Expression{
				Case:       10,
				Expression: yyS[yypt-2].node.(*Expression),
				Token:      yyS[yypt-1].Token,
				Token2:     yyS[yypt-0].Token,
			}
		}
	case 23:
		{
			yyVAL.node = &Expression{
				Case:       11,
				Expression: yyS[yypt-2].node.(*Expression),
				Token:      yyS[yypt-1].Token,
				Token2:     yyS[yypt-0].Token,
			}
		}
	case 24:
		{
			yyVAL.node = &Expression{
				Case:       12,
				Expression: yyS[yypt-1].node.(*Expression),
				Token:      yyS[yypt-0].Token,
			}
		}
	case 25:
		{
			yyVAL.node = &Expression{
				Case:       13,
				Expression: yyS[yypt-1].node.(*Expression),
				Token:      yyS[yypt-0].Token,
			}
		}
	case 26:
		{
			yyVAL.node = &Expression{
				Case:            14,
				Token:           yyS[yypt-6].Token,
				TypeName:        yyS[yypt-5].node.(*TypeName),
				Token2:          yyS[yypt-4].Token,
				Token3:          yyS[yypt-3].Token,
				InitializerList: yyS[yypt-2].node.(*InitializerList).reverse(),
				CommaOpt:        yyS[yypt-1].node.(*CommaOpt),
				Token4:          yyS[yypt-0].Token,
			}
		}
	case 27:
		{
			yyVAL.node = &Expression{
				Case:       15,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 28:
		{
			yyVAL.node = &Expression{
				Case:       16,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 29:
		{
			yyVAL.node = &Expression{
				Case:       17,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 30:
		{
			yyVAL.node = &Expression{
				Case:       18,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 31:
		{
			yyVAL.node = &Expression{
				Case:       19,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 32:
		{
			yyVAL.node = &Expression{
				Case:       20,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 33:
		{
			yyVAL.node = &Expression{
				Case:       21,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 34:
		{
			yyVAL.node = &Expression{
				Case:       22,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 35:
		{
			yyVAL.node = &Expression{
				Case:       23,
				Token:      yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 36:
		{
			yyVAL.node = &Expression{
				Case:     24,
				Token:    yyS[yypt-3].Token,
				Token2:   yyS[yypt-2].Token,
				TypeName: yyS[yypt-1].node.(*TypeName),
				Token3:   yyS[yypt-0].Token,
			}
		}
	case 37:
		{
			yyVAL.node = &Expression{
				Case:       25,
				Token:      yyS[yypt-3].Token,
				TypeName:   yyS[yypt-2].node.(*TypeName),
				Token2:     yyS[yypt-1].Token,
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 38:
		{
			yyVAL.node = &Expression{
				Case:        26,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 39:
		{
			yyVAL.node = &Expression{
				Case:        27,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 40:
		{
			yyVAL.node = &Expression{
				Case:        28,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 41:
		{
			yyVAL.node = &Expression{
				Case:        29,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 42:
		{
			yyVAL.node = &Expression{
				Case:        30,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 43:
		{
			yyVAL.node = &Expression{
				Case:        31,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 44:
		{
			yyVAL.node = &Expression{
				Case:        32,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 45:
		{
			yyVAL.node = &Expression{
				Case:        33,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 46:
		{
			yyVAL.node = &Expression{
				Case:        34,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 47:
		{
			yyVAL.node = &Expression{
				Case:        35,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 48:
		{
			yyVAL.node = &Expression{
				Case:        36,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 49:
		{
			yyVAL.node = &Expression{
				Case:        37,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 50:
		{
			yyVAL.node = &Expression{
				Case:        38,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 51:
		{
			yyVAL.node = &Expression{
				Case:        39,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 52:
		{
			yyVAL.node = &Expression{
				Case:        40,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 53:
		{
			yyVAL.node = &Expression{
				Case:        41,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 54:
		{
			yyVAL.node = &Expression{
				Case:        42,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 55:
		{
			yyVAL.node = &Expression{
				Case:        43,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 56:
		{
			yyVAL.node = &Expression{
				Case:           44,
				Expression:     yyS[yypt-4].node.(*Expression),
				Token:          yyS[yypt-3].Token,
				ExpressionList: yyS[yypt-2].node.(*ExpressionList).reverse(),
				Token2:         yyS[yypt-1].Token,
				Expression2:    yyS[yypt-0].node.(*Expression),
			}
		}
	case 57:
		{
			yyVAL.node = &Expression{
				Case:        45,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 58:
		{
			yyVAL.node = &Expression{
				Case:        46,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 59:
		{
			yyVAL.node = &Expression{
				Case:        47,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 60:
		{
			yyVAL.node = &Expression{
				Case:        48,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 61:
		{
			yyVAL.node = &Expression{
				Case:        49,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 62:
		{
			yyVAL.node = &Expression{
				Case:        50,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 63:
		{
			yyVAL.node = &Expression{
				Case:        51,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 64:
		{
			yyVAL.node = &Expression{
				Case:        52,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 65:
		{
			yyVAL.node = &Expression{
				Case:        53,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 66:
		{
			yyVAL.node = &Expression{
				Case:        54,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 67:
		{
			yyVAL.node = &Expression{
				Case:        55,
				Expression:  yyS[yypt-2].node.(*Expression),
				Token:       yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
		}
	case 68:
		{
			yyVAL.node = &Expression{
				Case:     56,
				Token:    yyS[yypt-3].Token,
				Token2:   yyS[yypt-2].Token,
				TypeName: yyS[yypt-1].node.(*TypeName),
				Token3:   yyS[yypt-0].Token,
			}
		}
	case 69:
		{
			yyVAL.node = &Expression{
				Case:              57,
				Token:             yyS[yypt-2].Token,
				CompoundStatement: yyS[yypt-1].node.(*CompoundStatement),
				Token2:            yyS[yypt-0].Token,
			}
		}
	case 70:
		{
			lx := yylex.(*lexer)
			lhs := &Expression{
				Case:   58,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableComputedGotos {
				lx.report.Err(lhs.Pos(), "computed gotos not enabled")
			}
		}
	case 71:
		{
			lx := yylex.(*lexer)
			lhs := &Expression{
				Case:        59,
				Expression:  yyS[yypt-3].node.(*Expression),
				Token:       yyS[yypt-2].Token,
				Token2:      yyS[yypt-1].Token,
				Expression2: yyS[yypt-0].node.(*Expression),
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableOmitConditionalOperand {
				lx.report.Err(lhs.Pos(), "omitting conditional operand not enabled")
			}
		}
	case 72:
		{
			yyVAL.node = (*ExpressionOpt)(nil)
		}
	case 73:
		{
			lx := yylex.(*lexer)
			lhs := &ExpressionOpt{
				Expression: yyS[yypt-0].node.(*Expression),
			}
			yyVAL.node = lhs
			lhs.Expression.eval(lx)
		}
	case 74:
		{
			yyVAL.node = &ExpressionList{
				Expression: yyS[yypt-0].node.(*Expression),
			}
		}
	case 75:
		{
			yyVAL.node = &ExpressionList{
				Case:           1,
				ExpressionList: yyS[yypt-2].node.(*ExpressionList),
				Token:          yyS[yypt-1].Token,
				Expression:     yyS[yypt-0].node.(*Expression),
			}
		}
	case 76:
		{
			yyVAL.node = (*ExpressionListOpt)(nil)
		}
	case 77:
		{
			lx := yylex.(*lexer)
			lhs := &ExpressionListOpt{
				ExpressionList: yyS[yypt-0].node.(*ExpressionList).reverse(),
			}
			yyVAL.node = lhs
			lhs.ExpressionList.eval(lx)
		}
	case 78:
		{
			lx := yylex.(*lexer)
			lx.constExprToks = []xc.Token{lx.last}
		}
	case 79:
		{
			lx := yylex.(*lexer)
			lhs := &ConstantExpression{
				Expression: yyS[yypt-0].node.(*Expression),
			}
			yyVAL.node = lhs
			lhs.Value, lhs.Type = lhs.Expression.eval(lx)
			if lhs.Value == nil {
				lx.report.Err(lhs.Pos(), "not a constant expression")
			}
			l := lx.constExprToks
			lhs.toks = l[:len(l)-1]
			lx.constExprToks = nil
		}
	case 80:
		{
			lx := yylex.(*lexer)
			lhs := &Declaration{
				DeclarationSpecifiers: yyS[yypt-2].node.(*DeclarationSpecifiers),
				InitDeclaratorListOpt: yyS[yypt-1].node.(*InitDeclaratorListOpt),
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			ts0 := lhs.DeclarationSpecifiers.typeSpecifiers()
			if ts0 == 0 && lx.tweaks.enableImplicitIntType {
				lhs.DeclarationSpecifiers.typeSpecifier = tsEncode(tsInt)
			}
			ts := tsDecode(lhs.DeclarationSpecifiers.typeSpecifiers())
			ok := false
			for _, v := range ts {
				if v == tsStructSpecifier || v == tsUnionSpecifier {
					ok = true
					break
				}
			}
			if ok {
				s := lhs.DeclarationSpecifiers
				d := &Declarator{specifier: s}
				dd := &DirectDeclarator{
					Token:      xc.Token{Char: lex.NewChar(lhs.Pos(), 0)},
					declarator: d,
					idScope:    lx.scope,
					specifier:  s,
				}
				d.DirectDeclarator = dd
				d.setFull(lx)
				for l := lhs.DeclarationSpecifiers; l != nil; {
					ts := l.TypeSpecifier
					if ts != nil && ts.Case == 11 && ts.StructOrUnionSpecifier.Case == 0 { // StructOrUnion IdentifierOpt '{' StructDeclarationList '}'
						ts.StructOrUnionSpecifier.declarator = d
						break
					}

					if o := l.DeclarationSpecifiersOpt; o != nil {
						l = o.DeclarationSpecifiers
						continue
					}

					break
				}
			}

			o := lhs.InitDeclaratorListOpt
			if o != nil {
				break
			}

			s := lhs.DeclarationSpecifiers
			d := &Declarator{specifier: s}
			dd := &DirectDeclarator{
				Token:      xc.Token{Char: lex.NewChar(lhs.Pos(), 0)},
				declarator: d,
				idScope:    lx.scope,
				specifier:  s,
			}
			d.DirectDeclarator = dd
			d.setFull(lx)
			lhs.declarator = d
		}
	case 81:
		{
			yyVAL.node = &Declaration{
				Case: 1,
				StaticAssertDeclaration: yyS[yypt-0].node.(*StaticAssertDeclaration),
			}
		}
	case 82:
		{
			lx := yylex.(*lexer)
			lhs := &DeclarationSpecifiers{
				StorageClassSpecifier:    yyS[yypt-1].node.(*StorageClassSpecifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
			yyVAL.node = lhs
			lx.scope.specifier = lhs
			a := lhs.StorageClassSpecifier
			b := lhs.DeclarationSpecifiersOpt
			if b == nil {
				lhs.attr = a.attr
				break
			}

			if a.attr&b.attr != 0 {
				lx.report.Err(a.Pos(), "invalid storage class specifier")
				break
			}

			lhs.attr = a.attr | b.attr
			lhs.typeSpecifier = b.typeSpecifier
			if lhs.StorageClassSpecifier.Case != 0 /* "typedef" */ && lhs.IsTypedef() {
				lx.report.Err(a.Pos(), "invalid storage class specifier")
			}
		}
	case 83:
		{
			lx := yylex.(*lexer)
			lhs := &DeclarationSpecifiers{
				Case:                     1,
				TypeSpecifier:            yyS[yypt-1].node.(*TypeSpecifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
			yyVAL.node = lhs
			lx.scope.specifier = lhs
			a := lhs.TypeSpecifier
			b := lhs.DeclarationSpecifiersOpt
			if b == nil {
				lhs.typeSpecifier = a.typeSpecifier
				break
			}

			lhs.attr = b.attr
			tsb := tsDecode(b.typeSpecifier)
			if len(tsb) == 1 && tsb[0] == tsTypedefName && lx.tweaks.allowCompatibleTypedefRedefinitions {
				tsb[0] = 0
			}
			ts := tsEncode(append(tsDecode(a.typeSpecifier), tsb...)...)
			if _, ok := tsValid[ts]; !ok {
				ts = tsEncode(tsInt)
				lx.report.Err(a.Pos(), "invalid type specifier")
			}
			lhs.typeSpecifier = ts
		}
	case 84:
		{
			lx := yylex.(*lexer)
			lhs := &DeclarationSpecifiers{
				Case:                     2,
				TypeQualifier:            yyS[yypt-1].node.(*TypeQualifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
			yyVAL.node = lhs
			lx.scope.specifier = lhs
			a := lhs.TypeQualifier
			b := lhs.DeclarationSpecifiersOpt
			if b == nil {
				lhs.attr = a.attr
				break
			}

			if a.attr&b.attr != 0 {
				lx.report.Err(a.Pos(), "invalid type qualifier")
				break
			}

			lhs.attr = a.attr | b.attr
			lhs.typeSpecifier = b.typeSpecifier
			if lhs.IsTypedef() {
				lx.report.Err(a.Pos(), "invalid type qualifier")
			}
		}
	case 85:
		{
			lx := yylex.(*lexer)
			lhs := &DeclarationSpecifiers{
				Case:                     3,
				FunctionSpecifier:        yyS[yypt-1].node.(*FunctionSpecifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
			yyVAL.node = lhs
			lx.scope.specifier = lhs
			a := lhs.FunctionSpecifier
			b := lhs.DeclarationSpecifiersOpt
			if b == nil {
				lhs.attr = a.attr
				break
			}

			if a.attr&b.attr != 0 {
				lx.report.Err(a.Pos(), "invalid function specifier")
				break
			}

			lhs.attr = a.attr | b.attr
			lhs.typeSpecifier = b.typeSpecifier
			if lhs.IsTypedef() {
				lx.report.Err(a.Pos(), "invalid function specifier")
			}
		}
	case 86:
		{
			yyVAL.node = (*DeclarationSpecifiersOpt)(nil)
		}
	case 87:
		{
			lhs := &DeclarationSpecifiersOpt{
				DeclarationSpecifiers: yyS[yypt-0].node.(*DeclarationSpecifiers),
			}
			yyVAL.node = lhs
			lhs.attr = lhs.DeclarationSpecifiers.attr
			lhs.typeSpecifier = lhs.DeclarationSpecifiers.typeSpecifier
		}
	case 88:
		{
			yyVAL.node = &InitDeclaratorList{
				InitDeclarator: yyS[yypt-0].node.(*InitDeclarator),
			}
		}
	case 89:
		{
			yyVAL.node = &InitDeclaratorList{
				Case:               1,
				InitDeclaratorList: yyS[yypt-2].node.(*InitDeclaratorList),
				Token:              yyS[yypt-1].Token,
				InitDeclarator:     yyS[yypt-0].node.(*InitDeclarator),
			}
		}
	case 90:
		{
			yyVAL.node = (*InitDeclaratorListOpt)(nil)
		}
	case 91:
		{
			yyVAL.node = &InitDeclaratorListOpt{
				InitDeclaratorList: yyS[yypt-0].node.(*InitDeclaratorList).reverse(),
			}
		}
	case 92:
		{
			lx := yylex.(*lexer)
			lhs := &InitDeclarator{
				Declarator: yyS[yypt-0].node.(*Declarator),
			}
			yyVAL.node = lhs
			lhs.Declarator.setFull(lx)
		}
	case 93:
		{
			lx := yylex.(*lexer)
			d := yyS[yypt-0].node.(*Declarator)
			d.setFull(lx)
		}
	case 94:
		{
			lx := yylex.(*lexer)
			lhs := &InitDeclarator{
				Case:        1,
				Declarator:  yyS[yypt-3].node.(*Declarator),
				Token:       yyS[yypt-1].Token,
				Initializer: yyS[yypt-0].node.(*Initializer),
			}
			yyVAL.node = lhs
			d := lhs.Declarator
			lhs.Initializer.typeCheck(&d.Type, d.Type, lhs.Declarator.specifier.IsStatic(), lx)
			if d.Type.Specifier().IsExtern() {
				id, _ := d.Identifier()
				lx.report.Err(d.Pos(), "'%s' initialized and declared 'extern'", dict.S(id))
			}
		}
	case 95:
		{
			lhs := &StorageClassSpecifier{
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saTypedef
		}
	case 96:
		{
			lhs := &StorageClassSpecifier{
				Case:  1,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saExtern
		}
	case 97:
		{
			lhs := &StorageClassSpecifier{
				Case:  2,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saStatic
		}
	case 98:
		{
			lhs := &StorageClassSpecifier{
				Case:  3,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saAuto
		}
	case 99:
		{
			lhs := &StorageClassSpecifier{
				Case:  4,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saRegister
		}
	case 100:
		{
			lhs := &TypeSpecifier{
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsVoid)
		}
	case 101:
		{
			lhs := &TypeSpecifier{
				Case:  1,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsChar)
		}
	case 102:
		{
			lhs := &TypeSpecifier{
				Case:  2,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsShort)
		}
	case 103:
		{
			lhs := &TypeSpecifier{
				Case:  3,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsInt)
		}
	case 104:
		{
			lhs := &TypeSpecifier{
				Case:  4,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsLong)
		}
	case 105:
		{
			lhs := &TypeSpecifier{
				Case:  5,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsFloat)
		}
	case 106:
		{
			lhs := &TypeSpecifier{
				Case:  6,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsDouble)
		}
	case 107:
		{
			lhs := &TypeSpecifier{
				Case:  7,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsSigned)
		}
	case 108:
		{
			lhs := &TypeSpecifier{
				Case:  8,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsUnsigned)
		}
	case 109:
		{
			lhs := &TypeSpecifier{
				Case:  9,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsBool)
		}
	case 110:
		{
			lhs := &TypeSpecifier{
				Case:  10,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsComplex)
		}
	case 111:
		{
			lhs := &TypeSpecifier{
				Case: 11,
				StructOrUnionSpecifier: yyS[yypt-0].node.(*StructOrUnionSpecifier),
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(lhs.StructOrUnionSpecifier.typeSpecifiers())
		}
	case 112:
		{
			lhs := &TypeSpecifier{
				Case:          12,
				EnumSpecifier: yyS[yypt-0].node.(*EnumSpecifier),
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsEnumSpecifier)
		}
	case 113:
		{
			lx := yylex.(*lexer)
			lhs := &TypeSpecifier{
				Case:  13,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsTypedefName)
			_, lhs.scope = lx.scope.Lookup2(NSIdentifiers, lhs.Token.Val)
		}
	case 114:
		{
			lx := yylex.(*lexer)
			lhs := &TypeSpecifier{
				Case:       14,
				Token:      yyS[yypt-3].Token,
				Token2:     yyS[yypt-2].Token,
				Expression: yyS[yypt-1].node.(*Expression),
				Token3:     yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsTypeof)
			_, lhs.Type = lhs.Expression.eval(lx)
		}
	case 115:
		{
			lhs := &TypeSpecifier{
				Case:     15,
				Token:    yyS[yypt-3].Token,
				Token2:   yyS[yypt-2].Token,
				TypeName: yyS[yypt-1].node.(*TypeName),
				Token3:   yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.typeSpecifier = tsEncode(tsTypeof)
			lhs.Type = undefined
			if t := lhs.TypeName.Type; t != nil {
				lhs.Type = t
			}
		}
	case 116:
		{
			lx := yylex.(*lexer)
			if o := yyS[yypt-1].node.(*IdentifierOpt); o != nil {
				lx.scope.declareStructTag(o.Token, lx.report)
			}
			lx.pushScope(ScopeMembers)
			lx.scope.isUnion = yyS[yypt-2].node.(*StructOrUnion).Case == 1 // "union"
			lx.scope.prevStructDeclarator = nil
		}
	case 117:
		{
			lx := yylex.(*lexer)
			lhs := &StructOrUnionSpecifier{
				StructOrUnion: yyS[yypt-5].node.(*StructOrUnion),
				IdentifierOpt: yyS[yypt-4].node.(*IdentifierOpt),
				Token:         yyS[yypt-3].Token,
				StructDeclarationList: yyS[yypt-1].node.(*StructDeclarationList).reverse(),
				Token2:                yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			sc := lx.scope
			lhs.scope = sc
			if sc.bitOffset != 0 {
				finishBitField(lhs, lx)
			}

			i := 0
			var bt Type
			var d *Declarator
			for l := lhs.StructDeclarationList; l != nil; l = l.StructDeclarationList {
				for l := l.StructDeclaration.StructDeclaratorList; l != nil; l = l.StructDeclaratorList {
					switch sd := l.StructDeclarator; sd.Case {
					case 0: // Declarator
						d = sd.Declarator
					case 1: // DeclaratorOpt ':' ConstantExpression
						if o := sd.DeclaratorOpt; o != nil {
							x := o.Declarator
							if x.bitOffset == 0 {
								d = x
								bt = lx.scope.bitFieldTypes[i]
								i++
							}
							x.bitFieldType = bt
						}
					}
				}
			}
			lx.scope.bitFieldTypes = nil

			lhs.alignOf = sc.maxAlign
			switch {
			case sc.isUnion:
				lhs.sizeOf = align(sc.maxSize, sc.maxAlign)
			default:
				off := sc.offset
				lhs.sizeOf = align(sc.offset, sc.maxAlign)
				if d != nil {
					d.padding = lhs.sizeOf - off
				}
			}

			lx.popScope(lhs.Token2)
			if o := lhs.IdentifierOpt; o != nil {
				lx.scope.defineStructTag(o.Token, lhs, lx.report)
			}
		}
	case 118:
		{
			lx := yylex.(*lexer)
			lhs := &StructOrUnionSpecifier{
				Case:          1,
				StructOrUnion: yyS[yypt-1].node.(*StructOrUnion),
				Token:         yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lx.scope.declareStructTag(lhs.Token, lx.report)
			lhs.scope = lx.scope
		}
	case 119:
		{
			lx := yylex.(*lexer)
			lhs := &StructOrUnionSpecifier{
				Case:          2,
				StructOrUnion: yyS[yypt-3].node.(*StructOrUnion),
				IdentifierOpt: yyS[yypt-2].node.(*IdentifierOpt),
				Token:         yyS[yypt-1].Token,
				Token2:        yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableEmptyStructs {
				lx.report.Err(lhs.Token.Pos(), "empty structs/unions not allowed")
			}
			if o := yyS[yypt-2].node.(*IdentifierOpt); o != nil {
				lx.scope.declareStructTag(o.Token, lx.report)
			}
			lx.scope.isUnion = yyS[yypt-3].node.(*StructOrUnion).Case == 1 // "union"
			lx.scope.prevStructDeclarator = nil
			lhs.alignOf = 1
			lhs.sizeOf = 0
			if o := lhs.IdentifierOpt; o != nil {
				lx.scope.defineStructTag(o.Token, lhs, lx.report)
			}
		}
	case 120:
		{
			yyVAL.node = &StructOrUnion{
				Token: yyS[yypt-0].Token,
			}
		}
	case 121:
		{
			yyVAL.node = &StructOrUnion{
				Case:  1,
				Token: yyS[yypt-0].Token,
			}
		}
	case 122:
		{
			yyVAL.node = &StructDeclarationList{
				StructDeclaration: yyS[yypt-0].node.(*StructDeclaration),
			}
		}
	case 123:
		{
			yyVAL.node = &StructDeclarationList{
				Case: 1,
				StructDeclarationList: yyS[yypt-1].node.(*StructDeclarationList),
				StructDeclaration:     yyS[yypt-0].node.(*StructDeclaration),
			}
		}
	case 124:
		{
			lx := yylex.(*lexer)
			lhs := &StructDeclaration{
				SpecifierQualifierList: yyS[yypt-2].node.(*SpecifierQualifierList),
				StructDeclaratorList:   yyS[yypt-1].node.(*StructDeclaratorList).reverse(),
				Token:                  yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			s := lhs.SpecifierQualifierList
			if k := s.kind(); k != Struct && k != Union {
				break
			}

			d := &Declarator{specifier: s}
			dd := &DirectDeclarator{
				Token:      xc.Token{Char: lex.NewChar(lhs.Pos(), 0)},
				declarator: d,
				idScope:    lx.scope,
				specifier:  s,
			}
			d.DirectDeclarator = dd
			d.setFull(lx)
			for l := lhs.SpecifierQualifierList; l != nil; {
				ts := l.TypeSpecifier
				if ts != nil && ts.Case == 11 && ts.StructOrUnionSpecifier.Case == 0 { // StructOrUnion IdentifierOpt '{' StructDeclarationList '}'
					ts.StructOrUnionSpecifier.declarator = d
					break
				}

				if o := l.SpecifierQualifierListOpt; o != nil {
					l = o.SpecifierQualifierList
					continue
				}

				break
			}
		}
	case 125:
		{
			lx := yylex.(*lexer)
			lhs := &StructDeclaration{
				Case: 1,
				SpecifierQualifierList: yyS[yypt-1].node.(*SpecifierQualifierList),
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			s := lhs.SpecifierQualifierList
			if !lx.tweaks.enableAnonymousStructFields {
				lx.report.Err(lhs.Token.Pos(), "unnamed fields not allowed")
			} else if k := s.kind(); k != Struct && k != Union {
				lx.report.Err(lhs.Token.Pos(), "only unnamed structs and unions are allowed")
				break
			}

			d := &Declarator{specifier: s}
			dd := &DirectDeclarator{
				Token:      xc.Token{Char: lex.NewChar(lhs.Pos(), 0)},
				declarator: d,
				idScope:    lx.scope,
				specifier:  s,
			}
			d.DirectDeclarator = dd
			d.setFull(lx)

			// we have no struct declarators to parse, so we have to create the case of one implicit declarator
			// because else the size of anonymous members is not included in the struct size!
			dummy := &StructDeclarator{Declarator: d}
			dummy.post(lx)

			for l := lhs.SpecifierQualifierList; l != nil; {
				ts := l.TypeSpecifier
				if ts != nil && ts.Case == 11 && ts.StructOrUnionSpecifier.Case == 0 { // StructOrUnion IdentifierOpt '{' StructDeclarationList '}'
					ts.StructOrUnionSpecifier.declarator = d
					break
				}

				if o := l.SpecifierQualifierListOpt; o != nil {
					l = o.SpecifierQualifierList
					continue
				}

				break
			}
		}
	case 126:
		{
			yyVAL.node = &StructDeclaration{
				Case: 2,
				StaticAssertDeclaration: yyS[yypt-0].node.(*StaticAssertDeclaration),
			}
		}
	case 127:
		{
			lx := yylex.(*lexer)
			lhs := &SpecifierQualifierList{
				TypeSpecifier:             yyS[yypt-1].node.(*TypeSpecifier),
				SpecifierQualifierListOpt: yyS[yypt-0].node.(*SpecifierQualifierListOpt),
			}
			yyVAL.node = lhs
			lx.scope.specifier = lhs
			a := lhs.TypeSpecifier
			b := lhs.SpecifierQualifierListOpt
			if b == nil {
				lhs.typeSpecifier = a.typeSpecifier
				break
			}

			lhs.attr = b.attr
			ts := tsEncode(append(tsDecode(a.typeSpecifier), tsDecode(b.typeSpecifier)...)...)
			if _, ok := tsValid[ts]; !ok {
				lx.report.Err(a.Pos(), "invalid type specifier")
				break
			}

			lhs.typeSpecifier = ts
		}
	case 128:
		{
			lx := yylex.(*lexer)
			lhs := &SpecifierQualifierList{
				Case:                      1,
				TypeQualifier:             yyS[yypt-1].node.(*TypeQualifier),
				SpecifierQualifierListOpt: yyS[yypt-0].node.(*SpecifierQualifierListOpt),
			}
			yyVAL.node = lhs
			lx.scope.specifier = lhs
			a := lhs.TypeQualifier
			b := lhs.SpecifierQualifierListOpt
			if b == nil {
				lhs.attr = a.attr
				break
			}

			if a.attr&b.attr != 0 {
				lx.report.Err(a.Pos(), "invalid type qualifier")
				break
			}

			lhs.attr = a.attr | b.attr
			lhs.typeSpecifier = b.typeSpecifier
		}
	case 129:
		{
			yyVAL.node = (*SpecifierQualifierListOpt)(nil)
		}
	case 130:
		{
			lhs := &SpecifierQualifierListOpt{
				SpecifierQualifierList: yyS[yypt-0].node.(*SpecifierQualifierList),
			}
			yyVAL.node = lhs
			lhs.attr = lhs.SpecifierQualifierList.attr
			lhs.typeSpecifier = lhs.SpecifierQualifierList.typeSpecifier
		}
	case 131:
		{
			yyVAL.node = &StructDeclaratorList{
				StructDeclarator: yyS[yypt-0].node.(*StructDeclarator),
			}
		}
	case 132:
		{
			yyVAL.node = &StructDeclaratorList{
				Case:                 1,
				StructDeclaratorList: yyS[yypt-2].node.(*StructDeclaratorList),
				Token:                yyS[yypt-1].Token,
				StructDeclarator:     yyS[yypt-0].node.(*StructDeclarator),
			}
		}
	case 133:
		{
			lx := yylex.(*lexer)
			lhs := &StructDeclarator{
				Declarator: yyS[yypt-0].node.(*Declarator),
			}
			yyVAL.node = lhs
			lhs.Declarator.setFull(lx)
			lhs.post(lx)
		}
	case 134:
		{
			lx := yylex.(*lexer)
			lhs := &StructDeclarator{
				Case:               1,
				DeclaratorOpt:      yyS[yypt-2].node.(*DeclaratorOpt),
				Token:              yyS[yypt-1].Token,
				ConstantExpression: yyS[yypt-0].node.(*ConstantExpression),
			}
			yyVAL.node = lhs
			m := lx.model
			e := lhs.ConstantExpression
			if e.Value == nil {
				e.Value, e.Type = m.value2(1, m.IntType)
			}
			if !IsIntType(e.Type) {
				lx.report.Err(e.Pos(), "bit field width not an integer (have '%s')", e.Type)
				e.Value, e.Type = m.value2(1, m.IntType)
			}
			if o := lhs.DeclaratorOpt; o != nil {
				o.Declarator.setFull(lx)
			}
			lhs.post(lx)
		}
	case 135:
		{
			yyVAL.node = (*CommaOpt)(nil)
		}
	case 136:
		{
			yyVAL.node = &CommaOpt{
				Token: yyS[yypt-0].Token,
			}
		}
	case 137:
		{
			lx := yylex.(*lexer)
			if o := yyS[yypt-0].node.(*IdentifierOpt); o != nil {
				lx.scope.declareEnumTag(o.Token, lx.report)
			}
			lx.iota = 0
		}
	case 138:
		{
			lx := yylex.(*lexer)
			lhs := &EnumSpecifier{
				Token:          yyS[yypt-6].Token,
				IdentifierOpt:  yyS[yypt-5].node.(*IdentifierOpt),
				Token2:         yyS[yypt-3].Token,
				EnumeratorList: yyS[yypt-2].node.(*EnumeratorList).reverse(),
				CommaOpt:       yyS[yypt-1].node.(*CommaOpt),
				Token3:         yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			if o := lhs.IdentifierOpt; o != nil {
				lx.scope.defineEnumTag(o.Token, lhs, lx.report)
			}
			if !lx.tweaks.enableUnsignedEnums {
				break
			}

			lhs.unsigned = true
		loop:
			for l := lhs.EnumeratorList; l != nil; l = l.EnumeratorList {
				switch e := l.Enumerator; x := e.Value.(type) {
				case int32:
					if x < 0 {
						lhs.unsigned = false
						break loop
					}
				case int64:
					if x < 0 {
						lhs.unsigned = false
						break loop
					}
				default:
					panic(fmt.Errorf("%s: TODO Enumerator.Value type %T", position(e.Pos()), x))
				}
			}
		}
	case 139:
		{
			lx := yylex.(*lexer)
			lhs := &EnumSpecifier{
				Case:   1,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lx.scope.declareEnumTag(lhs.Token2, lx.report)
		}
	case 140:
		{
			yyVAL.node = &EnumeratorList{
				Enumerator: yyS[yypt-0].node.(*Enumerator),
			}
		}
	case 141:
		{
			yyVAL.node = &EnumeratorList{
				Case:           1,
				EnumeratorList: yyS[yypt-2].node.(*EnumeratorList),
				Token:          yyS[yypt-1].Token,
				Enumerator:     yyS[yypt-0].node.(*Enumerator),
			}
		}
	case 142:
		{
			lx := yylex.(*lexer)
			lhs := &Enumerator{
				EnumerationConstant: yyS[yypt-0].node.(*EnumerationConstant),
			}
			yyVAL.node = lhs
			m := lx.model
			v := m.MustConvert(lx.iota, m.IntType)
			lhs.Value = v
			lx.scope.defineEnumConst(lx, lhs.EnumerationConstant.Token, v)
		}
	case 143:
		{
			lx := yylex.(*lexer)
			lhs := &Enumerator{
				Case:                1,
				EnumerationConstant: yyS[yypt-2].node.(*EnumerationConstant),
				Token:               yyS[yypt-1].Token,
				ConstantExpression:  yyS[yypt-0].node.(*ConstantExpression),
			}
			yyVAL.node = lhs
			m := lx.model
			e := lhs.ConstantExpression
			var v interface{}
			// [0], 6.7.2.2
			// The expression that defines the value of an enumeration
			// constant shall be an integer constant expression that has a
			// value representable as an int.
			switch {
			case !IsIntType(e.Type):
				lx.report.Err(e.Pos(), "not an integer constant expression (have '%s')", e.Type)
				v = m.MustConvert(int32(0), m.IntType)
			default:
				var ok bool
				if v, ok = m.enumValueToInt(e.Value); !ok {
					lx.report.Err(e.Pos(), "overflow in enumeration value: %v", e.Value)
				}
			}

			lhs.Value = v
			lx.scope.defineEnumConst(lx, lhs.EnumerationConstant.Token, v)
		}
	case 144:
		{
			lhs := &TypeQualifier{
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saConst
		}
	case 145:
		{
			lhs := &TypeQualifier{
				Case:  1,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saRestrict
		}
	case 146:
		{
			lhs := &TypeQualifier{
				Case:  2,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saVolatile
		}
	case 147:
		{
			lhs := &FunctionSpecifier{
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saInline
		}
	case 148:
		{
			lhs := &FunctionSpecifier{
				Case:  1,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.attr = saNoreturn
		}
	case 149:
		{
			lx := yylex.(*lexer)
			lhs := &Declarator{
				PointerOpt:       yyS[yypt-1].node.(*PointerOpt),
				DirectDeclarator: yyS[yypt-0].node.(*DirectDeclarator),
			}
			yyVAL.node = lhs
			lhs.specifier = lx.scope.specifier
			lhs.DirectDeclarator.declarator = lhs
		}
	case 150:
		{
			yyVAL.node = (*DeclaratorOpt)(nil)
		}
	case 151:
		{
			yyVAL.node = &DeclaratorOpt{
				Declarator: yyS[yypt-0].node.(*Declarator),
			}
		}
	case 152:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.specifier = lx.scope.specifier
			lx.scope.declareIdentifier(lhs.Token, lhs, lx.report)
			lhs.idScope = lx.scope
		}
	case 153:
		{
			lhs := &DirectDeclarator{
				Case:       1,
				Token:      yyS[yypt-2].Token,
				Declarator: yyS[yypt-1].node.(*Declarator),
				Token2:     yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Declarator.specifier = nil
			lhs.Declarator.DirectDeclarator.parent = lhs
		}
	case 154:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Case:                 2,
				DirectDeclarator:     yyS[yypt-4].node.(*DirectDeclarator),
				Token:                yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				ExpressionOpt:        yyS[yypt-1].node.(*ExpressionOpt),
				Token2:               yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.elements = -1
			if o := lhs.ExpressionOpt; o != nil {
				var err error
				if lhs.elements, err = elements(o.Expression.eval(lx)); err != nil {
					lx.report.Err(o.Expression.Pos(), "%s", err)
				}

			}
			lhs.DirectDeclarator.parent = lhs
		}
	case 155:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Case:                 3,
				DirectDeclarator:     yyS[yypt-5].node.(*DirectDeclarator),
				Token:                yyS[yypt-4].Token,
				Token2:               yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				Expression:           yyS[yypt-1].node.(*Expression),
				Token3:               yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			var err error
			if lhs.elements, err = elements(lhs.Expression.eval(lx)); err != nil {
				lx.report.Err(lhs.Expression.Pos(), "%s", err)
			}
			lhs.DirectDeclarator.parent = lhs
		}
	case 156:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Case:              4,
				DirectDeclarator:  yyS[yypt-5].node.(*DirectDeclarator),
				Token:             yyS[yypt-4].Token,
				TypeQualifierList: yyS[yypt-3].node.(*TypeQualifierList).reverse(),
				Token2:            yyS[yypt-2].Token,
				Expression:        yyS[yypt-1].node.(*Expression),
				Token3:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			var err error
			if lhs.elements, err = elements(lhs.Expression.eval(lx)); err != nil {
				lx.report.Err(lhs.Expression.Pos(), "%s", err)
			}
			lhs.DirectDeclarator.parent = lhs
		}
	case 157:
		{
			lhs := &DirectDeclarator{
				Case:                 5,
				DirectDeclarator:     yyS[yypt-4].node.(*DirectDeclarator),
				Token:                yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				Token2:               yyS[yypt-1].Token,
				Token3:               yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.DirectDeclarator.parent = lhs
			lhs.elements = -1
		}
	case 158:
		{
			lx := yylex.(*lexer)
			lx.pushScope(ScopeParams)
		}
	case 159:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Case:              6,
				DirectDeclarator:  yyS[yypt-4].node.(*DirectDeclarator),
				Token:             yyS[yypt-3].Token,
				ParameterTypeList: yyS[yypt-1].node.(*ParameterTypeList),
				Token2:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.paramsScope, _ = lx.popScope(lhs.Token2)
			lhs.DirectDeclarator.parent = lhs
		}
	case 160:
		{
			lhs := &DirectDeclarator{
				Case:              7,
				DirectDeclarator:  yyS[yypt-3].node.(*DirectDeclarator),
				Token:             yyS[yypt-2].Token,
				IdentifierListOpt: yyS[yypt-1].node.(*IdentifierListOpt),
				Token2:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.DirectDeclarator.parent = lhs
		}
	case 161:
		{
			yyVAL.node = &Pointer{
				Token:                yyS[yypt-1].Token,
				TypeQualifierListOpt: yyS[yypt-0].node.(*TypeQualifierListOpt),
			}
		}
	case 162:
		{
			yyVAL.node = &Pointer{
				Case:                 1,
				Token:                yyS[yypt-2].Token,
				TypeQualifierListOpt: yyS[yypt-1].node.(*TypeQualifierListOpt),
				Pointer:              yyS[yypt-0].node.(*Pointer),
			}
		}
	case 163:
		{
			yyVAL.node = (*PointerOpt)(nil)
		}
	case 164:
		{
			yyVAL.node = &PointerOpt{
				Pointer: yyS[yypt-0].node.(*Pointer),
			}
		}
	case 165:
		{
			lhs := &TypeQualifierList{
				TypeQualifier: yyS[yypt-0].node.(*TypeQualifier),
			}
			yyVAL.node = lhs
			lhs.attr = lhs.TypeQualifier.attr
		}
	case 166:
		{
			lx := yylex.(*lexer)
			lhs := &TypeQualifierList{
				Case:              1,
				TypeQualifierList: yyS[yypt-1].node.(*TypeQualifierList),
				TypeQualifier:     yyS[yypt-0].node.(*TypeQualifier),
			}
			yyVAL.node = lhs
			a := lhs.TypeQualifierList
			b := lhs.TypeQualifier
			if a.attr&b.attr != 0 {
				lx.report.Err(b.Pos(), "invalid type qualifier")
				break
			}

			lhs.attr = a.attr | b.attr
		}
	case 167:
		{
			yyVAL.node = (*TypeQualifierListOpt)(nil)
		}
	case 168:
		{
			yyVAL.node = &TypeQualifierListOpt{
				TypeQualifierList: yyS[yypt-0].node.(*TypeQualifierList).reverse(),
			}
		}
	case 169:
		{
			lhs := &ParameterTypeList{
				ParameterList: yyS[yypt-0].node.(*ParameterList).reverse(),
			}
			yyVAL.node = lhs
			lhs.post()
		}
	case 170:
		{
			lhs := &ParameterTypeList{
				Case:          1,
				ParameterList: yyS[yypt-2].node.(*ParameterList).reverse(),
				Token:         yyS[yypt-1].Token,
				Token2:        yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.post()
		}
	case 171:
		{
			yyVAL.node = (*ParameterTypeListOpt)(nil)
		}
	case 172:
		{
			yyVAL.node = &ParameterTypeListOpt{
				ParameterTypeList: yyS[yypt-0].node.(*ParameterTypeList),
			}
		}
	case 173:
		{
			yyVAL.node = &ParameterList{
				ParameterDeclaration: yyS[yypt-0].node.(*ParameterDeclaration),
			}
		}
	case 174:
		{
			yyVAL.node = &ParameterList{
				Case:                 1,
				ParameterList:        yyS[yypt-2].node.(*ParameterList),
				Token:                yyS[yypt-1].Token,
				ParameterDeclaration: yyS[yypt-0].node.(*ParameterDeclaration),
			}
		}
	case 175:
		{
			lx := yylex.(*lexer)
			lhs := &ParameterDeclaration{
				DeclarationSpecifiers: yyS[yypt-1].node.(*DeclarationSpecifiers),
				Declarator:            yyS[yypt-0].node.(*Declarator),
			}
			yyVAL.node = lhs
			lhs.Declarator.setFull(lx)
			lhs.declarator = lhs.Declarator
		}
	case 176:
		{
			lx := yylex.(*lexer)
			lhs := &ParameterDeclaration{
				Case: 1,
				DeclarationSpecifiers: yyS[yypt-1].node.(*DeclarationSpecifiers),
				AbstractDeclaratorOpt: yyS[yypt-0].node.(*AbstractDeclaratorOpt),
			}
			yyVAL.node = lhs
			if o := lhs.AbstractDeclaratorOpt; o != nil {
				lhs.declarator = o.AbstractDeclarator.declarator
				lhs.declarator.setFull(lx)
				break
			}

			d := &Declarator{
				specifier: lx.scope.specifier,
				DirectDeclarator: &DirectDeclarator{
					Case: 0, // IDENTIFIER
				},
			}
			d.DirectDeclarator.declarator = d
			lhs.declarator = d
			d.setFull(lx)
		}
	case 177:
		{
			yyVAL.node = &IdentifierList{
				Token: yyS[yypt-0].Token,
			}
		}
	case 178:
		{
			yyVAL.node = &IdentifierList{
				Case:           1,
				IdentifierList: yyS[yypt-2].node.(*IdentifierList),
				Token:          yyS[yypt-1].Token,
				Token2:         yyS[yypt-0].Token,
			}
		}
	case 179:
		{
			yyVAL.node = (*IdentifierListOpt)(nil)
		}
	case 180:
		{
			yyVAL.node = &IdentifierListOpt{
				IdentifierList: yyS[yypt-0].node.(*IdentifierList).reverse(),
			}
		}
	case 181:
		{
			yyVAL.node = (*IdentifierOpt)(nil)
		}
	case 182:
		{
			yyVAL.node = &IdentifierOpt{
				Token: yyS[yypt-0].Token,
			}
		}
	case 183:
		{
			lx := yylex.(*lexer)
			lx.pushScope(ScopeBlock)
		}
	case 184:
		{
			lx := yylex.(*lexer)
			lhs := &TypeName{
				SpecifierQualifierList: yyS[yypt-1].node.(*SpecifierQualifierList),
				AbstractDeclaratorOpt:  yyS[yypt-0].node.(*AbstractDeclaratorOpt),
			}
			yyVAL.node = lhs
			if o := lhs.AbstractDeclaratorOpt; o != nil {
				lhs.declarator = o.AbstractDeclarator.declarator
			} else {
				d := &Declarator{
					specifier: lhs.SpecifierQualifierList,
					DirectDeclarator: &DirectDeclarator{
						Case:    0, // IDENTIFIER
						idScope: lx.scope,
					},
				}
				d.DirectDeclarator.declarator = d
				lhs.declarator = d
			}
			lhs.Type = lhs.declarator.setFull(lx)
			lhs.scope = lx.scope
			lx.popScope(xc.Token{})
		}
	case 185:
		{
			lx := yylex.(*lexer)
			lhs := &AbstractDeclarator{
				Pointer: yyS[yypt-0].node.(*Pointer),
			}
			yyVAL.node = lhs
			d := &Declarator{
				specifier: lx.scope.specifier,
				PointerOpt: &PointerOpt{
					Pointer: lhs.Pointer,
				},
				DirectDeclarator: &DirectDeclarator{
					Case:    0, // IDENTIFIER
					idScope: lx.scope,
				},
			}
			d.DirectDeclarator.declarator = d
			lhs.declarator = d
		}
	case 186:
		{
			lx := yylex.(*lexer)
			lhs := &AbstractDeclarator{
				Case:                     1,
				PointerOpt:               yyS[yypt-1].node.(*PointerOpt),
				DirectAbstractDeclarator: yyS[yypt-0].node.(*DirectAbstractDeclarator),
			}
			yyVAL.node = lhs
			d := &Declarator{
				specifier:        lx.scope.specifier,
				PointerOpt:       lhs.PointerOpt,
				DirectDeclarator: lhs.DirectAbstractDeclarator.directDeclarator,
			}
			d.DirectDeclarator.declarator = d
			lhs.declarator = d
		}
	case 187:
		{
			yyVAL.node = (*AbstractDeclaratorOpt)(nil)
		}
	case 188:
		{
			yyVAL.node = &AbstractDeclaratorOpt{
				AbstractDeclarator: yyS[yypt-0].node.(*AbstractDeclarator),
			}
		}
	case 189:
		{
			lhs := &DirectAbstractDeclarator{
				Token:              yyS[yypt-2].Token,
				AbstractDeclarator: yyS[yypt-1].node.(*AbstractDeclarator),
				Token2:             yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.AbstractDeclarator.declarator.specifier = nil
			lhs.directDeclarator = &DirectDeclarator{
				Case:       1, // '(' Declarator ')'
				Declarator: lhs.AbstractDeclarator.declarator,
			}
			lhs.AbstractDeclarator.declarator.DirectDeclarator.parent = lhs.directDeclarator
		}
	case 190:
		{
			lx := yylex.(*lexer)
			lhs := &DirectAbstractDeclarator{
				Case: 1,
				DirectAbstractDeclaratorOpt: yyS[yypt-3].node.(*DirectAbstractDeclaratorOpt),
				Token:         yyS[yypt-2].Token,
				ExpressionOpt: yyS[yypt-1].node.(*ExpressionOpt),
				Token2:        yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			nElements := -1
			if o := lhs.ExpressionOpt; o != nil {
				var err error
				if nElements, err = elements(o.Expression.eval(lx)); err != nil {
					lx.report.Err(o.Expression.Pos(), "%s", err)
				}
			}
			var dd *DirectDeclarator
			switch o := lhs.DirectAbstractDeclaratorOpt; {
			case o == nil:
				dd = &DirectDeclarator{
					Case: 0, // IDENTIFIER
				}
			default:
				dd = o.DirectAbstractDeclarator.directDeclarator
			}
			lhs.directDeclarator = &DirectDeclarator{
				Case:             2, // DirectDeclarator '[' TypeQualifierListOpt ExpressionOpt ']'
				DirectDeclarator: dd,
				ExpressionOpt:    lhs.ExpressionOpt,
				elements:         nElements,
			}
			dd.parent = lhs.directDeclarator
		}
	case 191:
		{
			lx := yylex.(*lexer)
			lhs := &DirectAbstractDeclarator{
				Case: 2,
				DirectAbstractDeclaratorOpt: yyS[yypt-4].node.(*DirectAbstractDeclaratorOpt),
				Token:             yyS[yypt-3].Token,
				TypeQualifierList: yyS[yypt-2].node.(*TypeQualifierList).reverse(),
				ExpressionOpt:     yyS[yypt-1].node.(*ExpressionOpt),
				Token2:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			if o := lhs.ExpressionOpt; o != nil {
				o.Expression.eval(lx)
			}
			var dd *DirectDeclarator
			switch o := lhs.DirectAbstractDeclaratorOpt; {
			case o == nil:
				dd = &DirectDeclarator{
					Case: 0, // IDENTIFIER
				}
			default:
				dd = o.DirectAbstractDeclarator.directDeclarator
			}
			lhs.directDeclarator = &DirectDeclarator{
				Case:                 2, // DirectDeclarator '[' TypeQualifierListOpt ExpressionOpt ']'
				DirectDeclarator:     dd,
				TypeQualifierListOpt: &TypeQualifierListOpt{lhs.TypeQualifierList},
				ExpressionOpt:        lhs.ExpressionOpt,
			}
			dd.parent = lhs.directDeclarator
		}
	case 192:
		{
			lx := yylex.(*lexer)
			lhs := &DirectAbstractDeclarator{
				Case: 3,
				DirectAbstractDeclaratorOpt: yyS[yypt-5].node.(*DirectAbstractDeclaratorOpt),
				Token:                yyS[yypt-4].Token,
				Token2:               yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				Expression:           yyS[yypt-1].node.(*Expression),
				Token3:               yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Expression.eval(lx)
			var dd *DirectDeclarator
			switch o := lhs.DirectAbstractDeclaratorOpt; {
			case o == nil:
				dd = &DirectDeclarator{
					Case: 0, // IDENTIFIER
				}
			default:
				dd = o.DirectAbstractDeclarator.directDeclarator
			}
			lhs.directDeclarator = &DirectDeclarator{
				Case:                 2, // DirectDeclarator '[' "static" TypeQualifierListOpt Expression ']'
				DirectDeclarator:     dd,
				TypeQualifierListOpt: lhs.TypeQualifierListOpt,
				Expression:           lhs.Expression,
			}
			dd.parent = lhs.directDeclarator
		}
	case 193:
		{
			lx := yylex.(*lexer)
			lhs := &DirectAbstractDeclarator{
				Case: 4,
				DirectAbstractDeclaratorOpt: yyS[yypt-5].node.(*DirectAbstractDeclaratorOpt),
				Token:             yyS[yypt-4].Token,
				TypeQualifierList: yyS[yypt-3].node.(*TypeQualifierList).reverse(),
				Token2:            yyS[yypt-2].Token,
				Expression:        yyS[yypt-1].node.(*Expression),
				Token3:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Expression.eval(lx)
			var dd *DirectDeclarator
			switch o := lhs.DirectAbstractDeclaratorOpt; {
			case o == nil:
				dd = &DirectDeclarator{
					Case: 0, // IDENTIFIER
				}
			default:
				dd = o.DirectAbstractDeclarator.directDeclarator
			}
			lhs.directDeclarator = &DirectDeclarator{
				Case:              4, // DirectDeclarator '[' TypeQualifierList "static" Expression ']'
				DirectDeclarator:  dd,
				TypeQualifierList: lhs.TypeQualifierList,
				Expression:        lhs.Expression,
			}
			dd.parent = lhs.directDeclarator
		}
	case 194:
		{
			lhs := &DirectAbstractDeclarator{
				Case: 5,
				DirectAbstractDeclaratorOpt: yyS[yypt-3].node.(*DirectAbstractDeclaratorOpt),
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Token3: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			var dd *DirectDeclarator
			switch o := lhs.DirectAbstractDeclaratorOpt; {
			case o == nil:
				dd = &DirectDeclarator{
					Case: 0, // IDENTIFIER
				}
			default:
				dd = o.DirectAbstractDeclarator.directDeclarator
			}
			lhs.directDeclarator = &DirectDeclarator{
				Case:             5, // DirectDeclarator '[' TypeQualifierListOpt '*' ']'
				DirectDeclarator: dd,
			}
			dd.parent = lhs.directDeclarator
		}
	case 195:
		{
			lx := yylex.(*lexer)
			lx.pushScope(ScopeParams)
		}
	case 196:
		{
			lx := yylex.(*lexer)
			lhs := &DirectAbstractDeclarator{
				Case:                 6,
				Token:                yyS[yypt-3].Token,
				ParameterTypeListOpt: yyS[yypt-1].node.(*ParameterTypeListOpt),
				Token2:               yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.paramsScope, _ = lx.popScope(lhs.Token2)
			switch o := lhs.ParameterTypeListOpt; {
			case o != nil:
				lhs.directDeclarator = &DirectDeclarator{
					Case: 6, // DirectDeclarator '(' ParameterTypeList ')'
					DirectDeclarator: &DirectDeclarator{
						Case: 0, // IDENTIFIER
					},
					ParameterTypeList: o.ParameterTypeList,
				}
			default:
				lhs.directDeclarator = &DirectDeclarator{
					Case: 7, // DirectDeclarator '(' IdentifierListOpt ')'
					DirectDeclarator: &DirectDeclarator{
						Case: 0, // IDENTIFIER
					},
				}
			}
			lhs.directDeclarator.DirectDeclarator.parent = lhs.directDeclarator
		}
	case 197:
		{
			lx := yylex.(*lexer)
			lx.pushScope(ScopeParams)
		}
	case 198:
		{
			lx := yylex.(*lexer)
			lhs := &DirectAbstractDeclarator{
				Case: 7,
				DirectAbstractDeclarator: yyS[yypt-4].node.(*DirectAbstractDeclarator),
				Token:                yyS[yypt-3].Token,
				ParameterTypeListOpt: yyS[yypt-1].node.(*ParameterTypeListOpt),
				Token2:               yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.paramsScope, _ = lx.popScope(lhs.Token2)
			switch o := lhs.ParameterTypeListOpt; {
			case o != nil:
				lhs.directDeclarator = &DirectDeclarator{
					Case:              6, // DirectDeclarator '(' ParameterTypeList ')'
					DirectDeclarator:  lhs.DirectAbstractDeclarator.directDeclarator,
					ParameterTypeList: o.ParameterTypeList,
				}
			default:
				lhs.directDeclarator = &DirectDeclarator{
					Case:             7, // DirectDeclarator '(' IdentifierListOpt ')'
					DirectDeclarator: lhs.DirectAbstractDeclarator.directDeclarator,
				}
			}
			lhs.directDeclarator.DirectDeclarator.parent = lhs.directDeclarator
		}
	case 199:
		{
			yyVAL.node = (*DirectAbstractDeclaratorOpt)(nil)
		}
	case 200:
		{
			yyVAL.node = &DirectAbstractDeclaratorOpt{
				DirectAbstractDeclarator: yyS[yypt-0].node.(*DirectAbstractDeclarator),
			}
		}
	case 201:
		{
			lx := yylex.(*lexer)
			lhs := &Initializer{
				Expression: yyS[yypt-0].node.(*Expression),
			}
			yyVAL.node = lhs
			lhs.Expression.eval(lx)
		}
	case 202:
		{
			yyVAL.node = &Initializer{
				Case:            1,
				Token:           yyS[yypt-3].Token,
				InitializerList: yyS[yypt-2].node.(*InitializerList).reverse(),
				CommaOpt:        yyS[yypt-1].node.(*CommaOpt),
				Token2:          yyS[yypt-0].Token,
			}
		}
	case 203:
		{
			lx := yylex.(*lexer)
			lhs := &Initializer{
				Case:        2,
				Token:       yyS[yypt-2].Token,
				Token2:      yyS[yypt-1].Token,
				Initializer: yyS[yypt-0].node.(*Initializer),
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableLegacyDesignators {
				lx.report.Err(lhs.Pos(), "legacy designators not enabled")
			}
		}
	case 204:
		{
			yyVAL.node = &InitializerList{
				DesignationOpt: yyS[yypt-1].node.(*DesignationOpt),
				Initializer:    yyS[yypt-0].node.(*Initializer),
			}
		}
	case 205:
		{
			yyVAL.node = &InitializerList{
				Case:            1,
				InitializerList: yyS[yypt-3].node.(*InitializerList),
				Token:           yyS[yypt-2].Token,
				DesignationOpt:  yyS[yypt-1].node.(*DesignationOpt),
				Initializer:     yyS[yypt-0].node.(*Initializer),
			}
		}
	case 206:
		{
			yyVAL.node = (*InitializerList)(nil)
		}
	case 207:
		{
			yyVAL.node = &Designation{
				DesignatorList: yyS[yypt-1].node.(*DesignatorList).reverse(),
				Token:          yyS[yypt-0].Token,
			}
		}
	case 208:
		{
			yyVAL.node = (*DesignationOpt)(nil)
		}
	case 209:
		{
			yyVAL.node = &DesignationOpt{
				Designation: yyS[yypt-0].node.(*Designation),
			}
		}
	case 210:
		{
			yyVAL.node = &DesignatorList{
				Designator: yyS[yypt-0].node.(*Designator),
			}
		}
	case 211:
		{
			yyVAL.node = &DesignatorList{
				Case:           1,
				DesignatorList: yyS[yypt-1].node.(*DesignatorList),
				Designator:     yyS[yypt-0].node.(*Designator),
			}
		}
	case 212:
		{
			yyVAL.node = &Designator{
				Token:              yyS[yypt-2].Token,
				ConstantExpression: yyS[yypt-1].node.(*ConstantExpression),
				Token2:             yyS[yypt-0].Token,
			}
		}
	case 213:
		{
			yyVAL.node = &Designator{
				Case:   1,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 214:
		{
			yyVAL.node = &Statement{
				LabeledStatement: yyS[yypt-0].node.(*LabeledStatement),
			}
		}
	case 215:
		{
			yyVAL.node = &Statement{
				Case:              1,
				CompoundStatement: yyS[yypt-0].node.(*CompoundStatement),
			}
		}
	case 216:
		{
			yyVAL.node = &Statement{
				Case:                2,
				ExpressionStatement: yyS[yypt-0].node.(*ExpressionStatement),
			}
		}
	case 217:
		{
			yyVAL.node = &Statement{
				Case:               3,
				SelectionStatement: yyS[yypt-0].node.(*SelectionStatement),
			}
		}
	case 218:
		{
			yyVAL.node = &Statement{
				Case:               4,
				IterationStatement: yyS[yypt-0].node.(*IterationStatement),
			}
		}
	case 219:
		{
			yyVAL.node = &Statement{
				Case:          5,
				JumpStatement: yyS[yypt-0].node.(*JumpStatement),
			}
		}
	case 220:
		{
			yyVAL.node = &Statement{
				Case:               6,
				AssemblerStatement: yyS[yypt-0].node.(*AssemblerStatement),
			}
		}
	case 221:
		{
			yyVAL.node = &LabeledStatement{
				Token:     yyS[yypt-2].Token,
				Token2:    yyS[yypt-1].Token,
				Statement: yyS[yypt-0].node.(*Statement),
			}
		}
	case 222:
		{
			yyVAL.node = &LabeledStatement{
				Case:               1,
				Token:              yyS[yypt-3].Token,
				ConstantExpression: yyS[yypt-2].node.(*ConstantExpression),
				Token2:             yyS[yypt-1].Token,
				Statement:          yyS[yypt-0].node.(*Statement),
			}
		}
	case 223:
		{
			yyVAL.node = &LabeledStatement{
				Case:      2,
				Token:     yyS[yypt-2].Token,
				Token2:    yyS[yypt-1].Token,
				Statement: yyS[yypt-0].node.(*Statement),
			}
		}
	case 224:
		{
			lx := yylex.(*lexer)
			m := lx.scope.mergeScope
			lx.pushScope(ScopeBlock)
			if m != nil {
				lx.scope.merge(m)
			}
			lx.scope.mergeScope = nil
		}
	case 225:
		{
			lx := yylex.(*lexer)
			lhs := &CompoundStatement{
				Token:            yyS[yypt-3].Token,
				BlockItemListOpt: yyS[yypt-1].node.(*BlockItemListOpt),
				Token2:           yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
			lx.popScope(lhs.Token2)
		}
	case 226:
		{
			yyVAL.node = &BlockItemList{
				BlockItem: yyS[yypt-0].node.(*BlockItem),
			}
		}
	case 227:
		{
			yyVAL.node = &BlockItemList{
				Case:          1,
				BlockItemList: yyS[yypt-1].node.(*BlockItemList),
				BlockItem:     yyS[yypt-0].node.(*BlockItem),
			}
		}
	case 228:
		{
			yyVAL.node = (*BlockItemListOpt)(nil)
		}
	case 229:
		{
			yyVAL.node = &BlockItemListOpt{
				BlockItemList: yyS[yypt-0].node.(*BlockItemList).reverse(),
			}
		}
	case 230:
		{
			yyVAL.node = &BlockItem{
				Declaration: yyS[yypt-0].node.(*Declaration),
			}
		}
	case 231:
		{
			yyVAL.node = &BlockItem{
				Case:      1,
				Statement: yyS[yypt-0].node.(*Statement),
			}
		}
	case 232:
		{
			yyVAL.node = &ExpressionStatement{
				ExpressionListOpt: yyS[yypt-1].node.(*ExpressionListOpt),
				Token:             yyS[yypt-0].Token,
			}
		}
	case 233:
		{
			lx := yylex.(*lexer)
			lhs := &SelectionStatement{
				Token:          yyS[yypt-4].Token,
				Token2:         yyS[yypt-3].Token,
				ExpressionList: yyS[yypt-2].node.(*ExpressionList).reverse(),
				Token3:         yyS[yypt-1].Token,
				Statement:      yyS[yypt-0].node.(*Statement),
			}
			yyVAL.node = lhs
			lhs.ExpressionList.eval(lx)
		}
	case 234:
		{
			lx := yylex.(*lexer)
			lhs := &SelectionStatement{
				Case:           1,
				Token:          yyS[yypt-6].Token,
				Token2:         yyS[yypt-5].Token,
				ExpressionList: yyS[yypt-4].node.(*ExpressionList).reverse(),
				Token3:         yyS[yypt-3].Token,
				Statement:      yyS[yypt-2].node.(*Statement),
				Token4:         yyS[yypt-1].Token,
				Statement2:     yyS[yypt-0].node.(*Statement),
			}
			yyVAL.node = lhs
			lhs.ExpressionList.eval(lx)
		}
	case 235:
		{
			lx := yylex.(*lexer)
			lhs := &SelectionStatement{
				Case:           2,
				Token:          yyS[yypt-4].Token,
				Token2:         yyS[yypt-3].Token,
				ExpressionList: yyS[yypt-2].node.(*ExpressionList).reverse(),
				Token3:         yyS[yypt-1].Token,
				Statement:      yyS[yypt-0].node.(*Statement),
			}
			yyVAL.node = lhs
			lhs.ExpressionList.eval(lx)
		}
	case 236:
		{
			lx := yylex.(*lexer)
			lhs := &IterationStatement{
				Token:          yyS[yypt-4].Token,
				Token2:         yyS[yypt-3].Token,
				ExpressionList: yyS[yypt-2].node.(*ExpressionList).reverse(),
				Token3:         yyS[yypt-1].Token,
				Statement:      yyS[yypt-0].node.(*Statement),
			}
			yyVAL.node = lhs
			lhs.ExpressionList.eval(lx)
		}
	case 237:
		{
			lx := yylex.(*lexer)
			lhs := &IterationStatement{
				Case:           1,
				Token:          yyS[yypt-6].Token,
				Statement:      yyS[yypt-5].node.(*Statement),
				Token2:         yyS[yypt-4].Token,
				Token3:         yyS[yypt-3].Token,
				ExpressionList: yyS[yypt-2].node.(*ExpressionList).reverse(),
				Token4:         yyS[yypt-1].Token,
				Token5:         yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.ExpressionList.eval(lx)
		}
	case 238:
		{
			yyVAL.node = &IterationStatement{
				Case:               2,
				Token:              yyS[yypt-8].Token,
				Token2:             yyS[yypt-7].Token,
				ExpressionListOpt:  yyS[yypt-6].node.(*ExpressionListOpt),
				Token3:             yyS[yypt-5].Token,
				ExpressionListOpt2: yyS[yypt-4].node.(*ExpressionListOpt),
				Token4:             yyS[yypt-3].Token,
				ExpressionListOpt3: yyS[yypt-2].node.(*ExpressionListOpt),
				Token5:             yyS[yypt-1].Token,
				Statement:          yyS[yypt-0].node.(*Statement),
			}
		}
	case 239:
		{
			yyVAL.node = &IterationStatement{
				Case:               3,
				Token:              yyS[yypt-7].Token,
				Token2:             yyS[yypt-6].Token,
				Declaration:        yyS[yypt-5].node.(*Declaration),
				ExpressionListOpt:  yyS[yypt-4].node.(*ExpressionListOpt),
				Token3:             yyS[yypt-3].Token,
				ExpressionListOpt2: yyS[yypt-2].node.(*ExpressionListOpt),
				Token4:             yyS[yypt-1].Token,
				Statement:          yyS[yypt-0].node.(*Statement),
			}
		}
	case 240:
		{
			yyVAL.node = &JumpStatement{
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Token3: yyS[yypt-0].Token,
			}
		}
	case 241:
		{
			yyVAL.node = &JumpStatement{
				Case:   1,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 242:
		{
			yyVAL.node = &JumpStatement{
				Case:   2,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 243:
		{
			yyVAL.node = &JumpStatement{
				Case:              3,
				Token:             yyS[yypt-2].Token,
				ExpressionListOpt: yyS[yypt-1].node.(*ExpressionListOpt),
				Token2:            yyS[yypt-0].Token,
			}
		}
	case 244:
		{
			lx := yylex.(*lexer)
			lhs := &JumpStatement{
				Case:       4,
				Token:      yyS[yypt-2].Token,
				Expression: yyS[yypt-1].node.(*Expression),
				Token2:     yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			_, t := lhs.Expression.eval(lx)
			if t == nil {
				break
			}

			for t != nil && t.Kind() == Ptr {
				t = t.Element()
			}

			if t == nil || t.Kind() != Void {
				lx.report.Err(lhs.Pos(), "invalid computed goto argument type, have '%s'", t)
			}

			if !lx.tweaks.enableComputedGotos {
				lx.report.Err(lhs.Pos(), "computed gotos not enabled")
			}
		}
	case 245:
		{
			yyVAL.node = &TranslationUnit{
				ExternalDeclaration: yyS[yypt-0].node.(*ExternalDeclaration),
			}
		}
	case 246:
		{
			yyVAL.node = &TranslationUnit{
				Case:                1,
				TranslationUnit:     yyS[yypt-1].node.(*TranslationUnit),
				ExternalDeclaration: yyS[yypt-0].node.(*ExternalDeclaration),
			}
		}
	case 247:
		{
			yyVAL.node = &ExternalDeclaration{
				FunctionDefinition: yyS[yypt-0].node.(*FunctionDefinition),
			}
		}
	case 248:
		{
			yyVAL.node = &ExternalDeclaration{
				Case:        1,
				Declaration: yyS[yypt-0].node.(*Declaration),
			}
		}
	case 249:
		{
			yyVAL.node = &ExternalDeclaration{
				Case: 2,
				BasicAssemblerStatement: yyS[yypt-1].node.(*BasicAssemblerStatement),
				Token: yyS[yypt-0].Token,
			}
		}
	case 250:
		{
			lx := yylex.(*lexer)
			lhs := &ExternalDeclaration{
				Case:  3,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableEmptyDeclarations {
				lx.report.Err(lhs.Pos(), "C++11 empty declarations are illegal in C99.")
			}
		}
	case 251:
		{
			lx := yylex.(*lexer)
			if ds := yyS[yypt-2].node.(*DeclarationSpecifiers); ds.typeSpecifier == 0 {
				ds.typeSpecifier = tsEncode(tsInt)
				yyS[yypt-1].node.(*Declarator).Type = lx.model.IntType
				if !lx.tweaks.enableOmitFuncRetType {
					lx.report.Err(yyS[yypt-1].node.Pos(), "missing function return type")
				}
			}
			var fd *FunctionDefinition
			fd.post(lx, yyS[yypt-1].node.(*Declarator), yyS[yypt-0].node.(*DeclarationListOpt))
		}
	case 252:
		{
			yyVAL.node = &FunctionDefinition{
				DeclarationSpecifiers: yyS[yypt-4].node.(*DeclarationSpecifiers),
				Declarator:            yyS[yypt-3].node.(*Declarator),
				DeclarationListOpt:    yyS[yypt-2].node.(*DeclarationListOpt),
				FunctionBody:          yyS[yypt-0].node.(*FunctionBody),
			}
		}
	case 253:
		{
			lx := yylex.(*lexer)
			lx.scope.specifier = &DeclarationSpecifiers{typeSpecifier: tsEncode(tsInt)}
		}
	case 254:
		{
			lx := yylex.(*lexer)
			if !lx.tweaks.enableOmitFuncRetType {
				lx.report.Err(yyS[yypt-1].node.Pos(), "missing function return type")
			}
			var fd *FunctionDefinition
			fd.post(lx, yyS[yypt-1].node.(*Declarator), yyS[yypt-0].node.(*DeclarationListOpt))
		}
	case 255:
		{
			yyVAL.node = &FunctionDefinition{
				Case:               1,
				Declarator:         yyS[yypt-3].node.(*Declarator),
				DeclarationListOpt: yyS[yypt-2].node.(*DeclarationListOpt),
				FunctionBody:       yyS[yypt-0].node.(*FunctionBody),
			}
		}
	case 256:
		{
			lx := yylex.(*lexer)
			// Handle __func__, [0], 6.4.2.2.
			id, _ := lx.fnDeclarator.Identifier()
			lx.injectFunc = []xc.Token{
				{lex.Char{Rune: STATIC}, idStatic},
				{lex.Char{Rune: CONST}, idConst},
				{lex.Char{Rune: CHAR}, idChar},
				{lex.Char{Rune: IDENTIFIER}, idMagicFunc},
				{lex.Char{Rune: '['}, 0},
				{lex.Char{Rune: ']'}, 0},
				{lex.Char{Rune: '='}, 0},
				{lex.Char{Rune: STRINGLITERAL}, xc.Dict.SID(fmt.Sprintf("%q", xc.Dict.S(id)))},
				{lex.Char{Rune: ';'}, 0},
			}
		}
	case 257:
		{
			lhs := &FunctionBody{
				CompoundStatement: yyS[yypt-0].node.(*CompoundStatement),
			}
			yyVAL.node = lhs
			lhs.scope = lhs.CompoundStatement.scope
		}
	case 258:
		{
			lx := yylex.(*lexer)
			m := lx.scope.mergeScope
			lx.pushScope(ScopeBlock)
			if m != nil {
				lx.scope.merge(m)
			}
			lx.scope.mergeScope = nil
		}
	case 259:
		{
			lx := yylex.(*lexer)
			lhs := &FunctionBody{
				Case:               1,
				AssemblerStatement: yyS[yypt-1].node.(*AssemblerStatement),
				Token:              yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
			lx.popScope(lx.tokPrev)
		}
	case 260:
		{
			yyVAL.node = &DeclarationList{
				Declaration: yyS[yypt-0].node.(*Declaration),
			}
		}
	case 261:
		{
			yyVAL.node = &DeclarationList{
				Case:            1,
				DeclarationList: yyS[yypt-1].node.(*DeclarationList),
				Declaration:     yyS[yypt-0].node.(*Declaration),
			}
		}
	case 262:
		{
			yyVAL.node = (*DeclarationListOpt)(nil)
		}
	case 263:
		{
			lx := yylex.(*lexer)
			lx.pushScope(ScopeParams)
		}
	case 264:
		{
			lx := yylex.(*lexer)
			lhs := &DeclarationListOpt{
				DeclarationList: yyS[yypt-0].node.(*DeclarationList).reverse(),
			}
			yyVAL.node = lhs
			lhs.paramsScope, _ = lx.popScopePos(lhs.Pos())
		}
	case 265:
		{
			yyVAL.node = &AssemblerInstructions{
				Token: yyS[yypt-0].Token,
			}
		}
	case 266:
		{
			yyVAL.node = &AssemblerInstructions{
				Case: 1,
				AssemblerInstructions: yyS[yypt-1].node.(*AssemblerInstructions),
				Token: yyS[yypt-0].Token,
			}
		}
	case 267:
		{
			yyVAL.node = &BasicAssemblerStatement{
				Token:                 yyS[yypt-4].Token,
				VolatileOpt:           yyS[yypt-3].node.(*VolatileOpt),
				Token2:                yyS[yypt-2].Token,
				AssemblerInstructions: yyS[yypt-1].node.(*AssemblerInstructions).reverse(),
				Token3:                yyS[yypt-0].Token,
			}
		}
	case 268:
		{
			yyVAL.node = (*VolatileOpt)(nil)
		}
	case 269:
		{
			yyVAL.node = &VolatileOpt{
				Token: yyS[yypt-0].Token,
			}
		}
	case 270:
		{
			yyVAL.node = &AssemblerOperand{
				AssemblerSymbolicNameOpt: yyS[yypt-4].node.(*AssemblerSymbolicNameOpt),
				Token:      yyS[yypt-3].Token,
				Token2:     yyS[yypt-2].Token,
				Expression: yyS[yypt-1].node.(*Expression),
				Token3:     yyS[yypt-0].Token,
			}
		}
	case 271:
		{
			yyVAL.node = &AssemblerOperands{
				AssemblerOperand: yyS[yypt-0].node.(*AssemblerOperand),
			}
		}
	case 272:
		{
			yyVAL.node = &AssemblerOperands{
				Case:              1,
				AssemblerOperands: yyS[yypt-2].node.(*AssemblerOperands),
				Token:             yyS[yypt-1].Token,
				AssemblerOperand:  yyS[yypt-0].node.(*AssemblerOperand),
			}
		}
	case 273:
		{
			yyVAL.node = (*AssemblerSymbolicNameOpt)(nil)
		}
	case 274:
		{
			yyVAL.node = &AssemblerSymbolicNameOpt{
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Token3: yyS[yypt-0].Token,
			}
		}
	case 275:
		{
			yyVAL.node = &Clobbers{
				Token: yyS[yypt-0].Token,
			}
		}
	case 276:
		{
			yyVAL.node = &Clobbers{
				Case:     1,
				Clobbers: yyS[yypt-2].node.(*Clobbers),
				Token:    yyS[yypt-1].Token,
				Token2:   yyS[yypt-0].Token,
			}
		}
	case 277:
		{
			yyVAL.node = &AssemblerStatement{
				BasicAssemblerStatement: yyS[yypt-0].node.(*BasicAssemblerStatement),
			}
		}
	case 278:
		{
			yyVAL.node = &AssemblerStatement{
				Case:                  1,
				Token:                 yyS[yypt-6].Token,
				VolatileOpt:           yyS[yypt-5].node.(*VolatileOpt),
				Token2:                yyS[yypt-4].Token,
				AssemblerInstructions: yyS[yypt-3].node.(*AssemblerInstructions).reverse(),
				Token3:                yyS[yypt-2].Token,
				AssemblerOperands:     yyS[yypt-1].node.(*AssemblerOperands).reverse(),
				Token4:                yyS[yypt-0].Token,
			}
		}
	case 279:
		{
			yyVAL.node = &AssemblerStatement{
				Case:                  2,
				Token:                 yyS[yypt-8].Token,
				VolatileOpt:           yyS[yypt-7].node.(*VolatileOpt),
				Token2:                yyS[yypt-6].Token,
				AssemblerInstructions: yyS[yypt-5].node.(*AssemblerInstructions).reverse(),
				Token3:                yyS[yypt-4].Token,
				AssemblerOperands:     yyS[yypt-3].node.(*AssemblerOperands).reverse(),
				Token4:                yyS[yypt-2].Token,
				AssemblerOperands2:    yyS[yypt-1].node.(*AssemblerOperands).reverse(),
				Token5:                yyS[yypt-0].Token,
			}
		}
	case 280:
		{
			yyVAL.node = &AssemblerStatement{
				Case:                  3,
				Token:                 yyS[yypt-10].Token,
				VolatileOpt:           yyS[yypt-9].node.(*VolatileOpt),
				Token2:                yyS[yypt-8].Token,
				AssemblerInstructions: yyS[yypt-7].node.(*AssemblerInstructions).reverse(),
				Token3:                yyS[yypt-6].Token,
				AssemblerOperands:     yyS[yypt-5].node.(*AssemblerOperands).reverse(),
				Token4:                yyS[yypt-4].Token,
				AssemblerOperands2:    yyS[yypt-3].node.(*AssemblerOperands).reverse(),
				Token5:                yyS[yypt-2].Token,
				Clobbers:              yyS[yypt-1].node.(*Clobbers).reverse(),
				Token6:                yyS[yypt-0].Token,
			}
		}
	case 281:
		{
			yyVAL.node = &AssemblerStatement{
				Case:                  4,
				Token:                 yyS[yypt-12].Token,
				VolatileOpt:           yyS[yypt-11].node.(*VolatileOpt),
				Token2:                yyS[yypt-10].Token,
				Token3:                yyS[yypt-9].Token,
				AssemblerInstructions: yyS[yypt-8].node.(*AssemblerInstructions).reverse(),
				Token4:                yyS[yypt-7].Token,
				Token5:                yyS[yypt-6].Token,
				AssemblerOperands:     yyS[yypt-5].node.(*AssemblerOperands).reverse(),
				Token6:                yyS[yypt-4].Token,
				Clobbers:              yyS[yypt-3].node.(*Clobbers).reverse(),
				Token7:                yyS[yypt-2].Token,
				IdentifierList:        yyS[yypt-1].node.(*IdentifierList).reverse(),
				Token8:                yyS[yypt-0].Token,
			}
		}
	case 282:
		{
			yyVAL.node = &AssemblerStatement{
				Case:                  5,
				Token:                 yyS[yypt-5].Token,
				VolatileOpt:           yyS[yypt-4].node.(*VolatileOpt),
				Token2:                yyS[yypt-3].Token,
				AssemblerInstructions: yyS[yypt-2].node.(*AssemblerInstructions).reverse(),
				Token3:                yyS[yypt-1].Token,
				Token4:                yyS[yypt-0].Token,
			}
		}
	case 283:
		{
			yyVAL.node = &AssemblerStatement{
				Case:                  6,
				Token:                 yyS[yypt-7].Token,
				VolatileOpt:           yyS[yypt-6].node.(*VolatileOpt),
				Token2:                yyS[yypt-5].Token,
				AssemblerInstructions: yyS[yypt-4].node.(*AssemblerInstructions).reverse(),
				Token3:                yyS[yypt-3].Token,
				Token4:                yyS[yypt-2].Token,
				AssemblerOperands:     yyS[yypt-1].node.(*AssemblerOperands).reverse(),
				Token5:                yyS[yypt-0].Token,
			}
		}
	case 284:
		{
			lx := yylex.(*lexer)
			lhs := &StaticAssertDeclaration{
				Token:              yyS[yypt-6].Token,
				Token2:             yyS[yypt-5].Token,
				ConstantExpression: yyS[yypt-4].node.(*ConstantExpression),
				Token3:             yyS[yypt-3].Token,
				Token4:             yyS[yypt-2].Token,
				Token5:             yyS[yypt-1].Token,
				Token6:             yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			ce := lhs.ConstantExpression
			if ce.Type == nil || ce.Type.Kind() == Undefined || ce.Value == nil || !IsIntType(ce.Type) {
				lx.report.Err(ce.Pos(), "invalid static assert expression (have '%v')", ce.Type)
				break
			}

			if !isNonZero(ce.Value) {
				lx.report.ErrTok(lhs.Token, "%s", lhs.Token4.S())
			}
		}
	case 285:
		{
			lx := yylex.(*lexer)
			lhs := &PreprocessingFile{
				GroupList: yyS[yypt-0].node.(*GroupList).reverse(),
			}
			yyVAL.node = lhs
			lhs.path = lx.file.Name()
		}
	case 286:
		{
			yyVAL.node = &GroupList{
				GroupPart: yyS[yypt-0].groupPart,
			}
		}
	case 287:
		{
			yyVAL.node = &GroupList{
				Case:      1,
				GroupList: yyS[yypt-1].node.(*GroupList),
				GroupPart: yyS[yypt-0].groupPart,
			}
		}
	case 288:
		{
			yyVAL.node = (*GroupListOpt)(nil)
		}
	case 289:
		{
			yyVAL.node = &GroupListOpt{
				GroupList: yyS[yypt-0].node.(*GroupList).reverse(),
			}
		}
	case 290:
		{
			yyVAL.groupPart = yyS[yypt-0].node.(Node)
		}
	case 291:
		{
			yyVAL.groupPart = yyS[yypt-0].node.(Node)
		}
	case 292:
		{
			yyVAL.groupPart = yyS[yypt-2].Token
		}
	case 293:
		{
			yyVAL.groupPart = yyS[yypt-0].toks
		}
	case 294:
		{
			yyVAL.node = &IfSection{
				IfGroup:          yyS[yypt-3].node.(*IfGroup),
				ElifGroupListOpt: yyS[yypt-2].node.(*ElifGroupListOpt),
				ElseGroupOpt:     yyS[yypt-1].node.(*ElseGroupOpt),
				EndifLine:        yyS[yypt-0].node.(*EndifLine),
			}
		}
	case 295:
		{
			yyVAL.node = &IfGroup{
				Token:        yyS[yypt-3].Token,
				PPTokenList:  yyS[yypt-2].toks,
				Token2:       yyS[yypt-1].Token,
				GroupListOpt: yyS[yypt-0].node.(*GroupListOpt),
			}
		}
	case 296:
		{
			yyVAL.node = &IfGroup{
				Case:         1,
				Token:        yyS[yypt-3].Token,
				Token2:       yyS[yypt-2].Token,
				Token3:       yyS[yypt-1].Token,
				GroupListOpt: yyS[yypt-0].node.(*GroupListOpt),
			}
		}
	case 297:
		{
			yyVAL.node = &IfGroup{
				Case:         2,
				Token:        yyS[yypt-3].Token,
				Token2:       yyS[yypt-2].Token,
				Token3:       yyS[yypt-1].Token,
				GroupListOpt: yyS[yypt-0].node.(*GroupListOpt),
			}
		}
	case 298:
		{
			yyVAL.node = &ElifGroupList{
				ElifGroup: yyS[yypt-0].node.(*ElifGroup),
			}
		}
	case 299:
		{
			yyVAL.node = &ElifGroupList{
				Case:          1,
				ElifGroupList: yyS[yypt-1].node.(*ElifGroupList),
				ElifGroup:     yyS[yypt-0].node.(*ElifGroup),
			}
		}
	case 300:
		{
			yyVAL.node = (*ElifGroupListOpt)(nil)
		}
	case 301:
		{
			yyVAL.node = &ElifGroupListOpt{
				ElifGroupList: yyS[yypt-0].node.(*ElifGroupList).reverse(),
			}
		}
	case 302:
		{
			yyVAL.node = &ElifGroup{
				Token:        yyS[yypt-3].Token,
				PPTokenList:  yyS[yypt-2].toks,
				Token2:       yyS[yypt-1].Token,
				GroupListOpt: yyS[yypt-0].node.(*GroupListOpt),
			}
		}
	case 303:
		{
			yyVAL.node = &ElseGroup{
				Token:        yyS[yypt-2].Token,
				Token2:       yyS[yypt-1].Token,
				GroupListOpt: yyS[yypt-0].node.(*GroupListOpt),
			}
		}
	case 304:
		{
			yyVAL.node = (*ElseGroupOpt)(nil)
		}
	case 305:
		{
			yyVAL.node = &ElseGroupOpt{
				ElseGroup: yyS[yypt-0].node.(*ElseGroup),
			}
		}
	case 306:
		{
			yyVAL.node = &EndifLine{
				Token: yyS[yypt-0].Token,
			}
		}
	case 307:
		{
			yyVAL.node = &ControlLine{
				Token:           yyS[yypt-2].Token,
				Token2:          yyS[yypt-1].Token,
				ReplacementList: yyS[yypt-0].toks,
			}
		}
	case 308:
		{
			yyVAL.node = &ControlLine{
				Case:            1,
				Token:           yyS[yypt-4].Token,
				Token2:          yyS[yypt-3].Token,
				Token3:          yyS[yypt-2].Token,
				Token4:          yyS[yypt-1].Token,
				ReplacementList: yyS[yypt-0].toks,
			}
		}
	case 309:
		{
			yyVAL.node = &ControlLine{
				Case:            2,
				Token:           yyS[yypt-6].Token,
				Token2:          yyS[yypt-5].Token,
				IdentifierList:  yyS[yypt-4].node.(*IdentifierList).reverse(),
				Token3:          yyS[yypt-3].Token,
				Token4:          yyS[yypt-2].Token,
				Token5:          yyS[yypt-1].Token,
				ReplacementList: yyS[yypt-0].toks,
			}
		}
	case 310:
		{
			yyVAL.node = &ControlLine{
				Case:              3,
				Token:             yyS[yypt-4].Token,
				Token2:            yyS[yypt-3].Token,
				IdentifierListOpt: yyS[yypt-2].node.(*IdentifierListOpt),
				Token3:            yyS[yypt-1].Token,
				ReplacementList:   yyS[yypt-0].toks,
			}
		}
	case 311:
		{
			yyVAL.node = &ControlLine{
				Case:           4,
				Token:          yyS[yypt-1].Token,
				PPTokenListOpt: yyS[yypt-0].toks,
			}
		}
	case 312:
		{
			yyVAL.node = &ControlLine{
				Case:  5,
				Token: yyS[yypt-0].Token,
			}
		}
	case 313:
		{
			yyVAL.node = &ControlLine{
				Case:        6,
				Token:       yyS[yypt-2].Token,
				PPTokenList: yyS[yypt-1].toks,
				Token2:      yyS[yypt-0].Token,
			}
		}
	case 314:
		{
			yyVAL.node = &ControlLine{
				Case:        7,
				Token:       yyS[yypt-2].Token,
				PPTokenList: yyS[yypt-1].toks,
				Token2:      yyS[yypt-0].Token,
			}
		}
	case 315:
		{
			yyVAL.node = &ControlLine{
				Case:           8,
				Token:          yyS[yypt-1].Token,
				PPTokenListOpt: yyS[yypt-0].toks,
			}
		}
	case 316:
		{
			yyVAL.node = &ControlLine{
				Case:   9,
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Token3: yyS[yypt-0].Token,
			}
		}
	case 317:
		{
			lx := yylex.(*lexer)
			lhs := &ControlLine{
				Case:            10,
				Token:           yyS[yypt-5].Token,
				Token2:          yyS[yypt-4].Token,
				IdentifierList:  yyS[yypt-3].node.(*IdentifierList).reverse(),
				Token3:          yyS[yypt-2].Token,
				Token4:          yyS[yypt-1].Token,
				ReplacementList: yyS[yypt-0].toks,
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableDefineOmitCommaBeforeDDD {
				lx.report.ErrTok(lhs.Token4, "missing comma before \"...\"")
			}
		}
	case 318:
		{
			lx := yylex.(*lexer)
			lhs := &ControlLine{
				Case:   11,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			if !lx.tweaks.enableEmptyDefine {
				lx.report.ErrTok(lhs.Token2, "expected identifier")
			}
		}
	case 319:
		{
			lx := yylex.(*lexer)
			lhs := &ControlLine{
				Case:        12,
				Token:       yyS[yypt-3].Token,
				Token2:      yyS[yypt-2].Token,
				PPTokenList: yyS[yypt-1].toks,
				Token3:      yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			toks := decodeTokens(lhs.PPTokenList, nil, false)
			if len(toks) == 0 {
				lhs.Case = 9 // PPUNDEF IDENTIFIER '\n'
				break
			}

			lx.report.ErrTok(toks[0], "extra tokens after #undef argument")
		}
	case 320:
		{
			yyVAL.node = &ControlLine{
				Case:        13,
				Token:       yyS[yypt-2].Token,
				PPTokenList: yyS[yypt-1].toks,
				Token2:      yyS[yypt-0].Token,
			}
		}
	case 323:
		{
			lx := yylex.(*lexer)
			yyVAL.toks = PPTokenList(dict.ID(lx.encBuf))
			lx.encBuf = lx.encBuf[:0]
			lx.encPos = 0
		}
	case 324:
		{
			yyVAL.toks = 0
		}

	}

	if yyEx != nil && yyEx.Reduced(r, exState, &yyVAL) {
		return -1
	}
	goto yystack /* stack new state and value */
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20100609-1.c<|end_filename|>
extern unsigned long int strtoul (__const char *__restrict __nptr,       char **__restrict __endptr, int __base);
int find_reloads (int i, char *p)
{
  int c;
  while ((c = *p++))
    return strtoul (p - 1, &p, 10); 
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr16566-3.c<|end_filename|>
/* ICE with flexible arrays in non-lvalue structures.  Bug 16566
   (testcase from duplicate bug 16575).  */

struct S;
struct C {
    int i;
    struct S *tab[];
};
struct S { struct C c; };
void foo (struct S *x) {
  ((void)1, x->c).tab[0] = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/pr68648.c<|end_filename|>
int __attribute__ ((noinline))
foo (void)
{
  return 123;
}

int __attribute__ ((noinline))
bar (void)
{
  int c = 1;
  c |= 4294967295 ^ (foo () | 4073709551608);
  return c;
}

int
main ()
{
  if (bar () != 0x83fd4005)
    __builtin_abort ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40753.c<|end_filename|>
typedef struct {
    unsigned nargs;
} ffi_cif;
typedef struct {
    char tramp[24];
    ffi_cif *cif;
} ffi_closure;
extern void *memcpy (void *, const void *, __SIZE_TYPE__);
extern void ffi_closure_LINUX64 (void);

int
ffi_prep_closure_loc (ffi_closure *closure, ffi_cif *cif)
{
  void **tramp = (void **) &closure->tramp[0];

  memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
  closure->cif = cif;

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040727-1.c<|end_filename|>
/* Extracted from boehm-gc/os_dep.c on Darwin.  It caused an ICE when
   trying to merge alias information from two pointers that had
   different type memory tags.  */
typedef int thread_state_flavor_t;
typedef int exception_behavior_t;
typedef unsigned int exception_mask_t;
typedef unsigned int exception_handler_t;
typedef unsigned int mach_msg_type_number_t;
static struct {
   mach_msg_type_number_t count;
   exception_mask_t masks[16];
   exception_handler_t ports[16];
   thread_state_flavor_t flavors[16];
} GC_old_exc_ports;

typedef exception_handler_t *exception_handler_array_t;
typedef thread_state_flavor_t *exception_flavor_array_t;


int task_get_exception_ports
(
  mach_msg_type_number_t *masksCnt,
  exception_handler_array_t old_handlers,
  exception_flavor_array_t old_flavors
);

void GC_dirty_init()
{
   task_get_exception_ports(GC_old_exc_ports.masks,
                           GC_old_exc_ports.ports,
                           GC_old_exc_ports.flavors);
}


<|start_filename|>v2/headers/linux_arm/usr/include/arm-linux-gnueabihf/gnu/stubs.h<|end_filename|>
/* This file is automatically generated.
   This file selects the right generated file of `__stub_FUNCTION' macros
   based on the architecture being compiled for.  */

#if !defined __ARM_PCS_VFP
#include <gnu/stubs-soft.h>
#endif
#if defined __ARM_PCS_VFP
#include <gnu/stubs-hard.h>
#endif


<|start_filename|>testdata/vers2.h<|end_filename|>
vers2.h included from testdata/example-6.10.3.5-4.h


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920501-12.c<|end_filename|>
/* { dg-do assemble } */

x(x){            return 3 + x;}
a(x){int y[994]; return 3 + x;}
b(x){int y[999]; return 2*(x + 3);}
A(x){int y[9999];return 2*(x + 3);}
B(x){int y[9949];return 3 + x;}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33614.c<|end_filename|>
typedef float V2SF __attribute__ ((vector_size (8)));

V2SF
foo (int x, V2SF a)
{
  while (x--)
    a += (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f};
  return a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34030.c<|end_filename|>
int myvar;

int foo(int mynum)
{
  if ((((void *)0) == (myvar & ((1U<<0) << mynum))) && (mynum > 0))
    return 1;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920917-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */

inline f(x){switch(x){case 6:case 4:case 3:case 1:;}return x;}
g(){f(sizeof("xxxxxx"));}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/961203-1.c<|end_filename|>
/* The structure is too large for the xstormy16 - won't fit in 16
   bits.  */
/* { dg-do assemble } */

#if __INT_MAX__ >= 2147483647L
struct s {
  char a[0x32100000];
  int x:30, y:30;
};

int
main ()
{
  struct s* p;

  p = (struct s*) 0;
  if (p->x == p->y)
    exit (1);
}
#else
int g;
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65153.c<|end_filename|>
/* { dg-additional-options "-fPIC" { target fpic } }  */

typedef unsigned long word32;
typedef unsigned char byte;
typedef struct cast256_instance { word32 l_key[96];} cast256_key;
word32 cast256_sbox[4][256] = {};
void
key (cast256_key *key, const word32 *in_key, const int key_len)
{
  word32 i, j, t, u, cm, cr, lk[8], tm[8], tr[8];
  for (i = 0; i < 96; i += 8)
    {
      for (j = 0; j < 8; ++j)
	{
	  tm[j] = cm;
	  cm += 0x6ed9eba1;
	  tr[j] = cr;
	  cr += 17;
	}
      t = (((tm[0] + lk[7]) << ((word32)(tr[0] & 31)))
	   | ((tm[0] + lk[7]) >> (32 - (word32)(tr[0] & 31))));
      u = cast256_sbox[0][((byte)((t) >> (8 * 3)))];
      u ^= cast256_sbox[1][((byte)((t) >> (8 * 2)))];
      lk[7] ^= u;
      for (j = 0; j < 8; ++j)
	{
	  cm += 0x6ed9eba1;
	  tr[j] = cr;
	  cr += 17;
	}
      t = (((tm[0] + lk[7]) << ((word32)(tr[0] & 31)))
	   | ((tm[0] + lk[7]) >> (32 - (word32)(tr[0] & 31))));
      u = cast256_sbox[0][((byte)((t) >> (8 * 3)))];
      u ^= cast256_sbox[1][((byte)((t) >> (8 * 2)))];
      u -= cast256_sbox[2][((byte)((t) >> (8 * 1)))];
      lk[2] ^= u;
      lk[7] ^= u;
      key->l_key[i + 1] = lk[2];
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr61222-2.c<|end_filename|>
int a, b, d;
int main (void)
{
  int c = a && 1;
  d = 1 << (((c | (b - 842)) << 1) + 1);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38661.c<|end_filename|>
/* We used to ICE because we would wrap INT_MAX
   into INT_MIN while doing the switch converison. */

const char *func(int val) {
 switch (val) {
   case __INT_MAX__: return "foo";
   default: return "";
 }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32349.c<|end_filename|>
/* { dg-options "-fmodulo-sched" } */


extern long *x1, *x2, *x3;

int
foo ()
{
  /* Switching the following two lines prevents the ICE.  */
  long *p1, *p2;
  long m, n, i;

  p1 = x1;
  p2 = x2;
  n = 0;
  for (i = *x3; 0 < i; i--)
    {
      m = (*p1++) ^ (*p2++);
      m = (m & 0x55555555) + ((m >> 1) & 0x55555555);
      m = (m & 0x33333333) + ((m >> 2) & 0x33333333);
      m = (m + (m >> 4)) & 0x0f0f0f0f;
      m = (m + (m >> 8));
      n += m;
    }
  return n;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43188.c<|end_filename|>
int *__attribute__((__aligned__(16))) *p;

int main (void)
{
  return **p;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43417.c<|end_filename|>
int pid_count = 0;

unsigned int getopt (int, const char**, const char*);
unsigned long long atoll (const char*);
int fork (void);
void kill (int, int);

int
main (int argc, const char *argv[])
{
  unsigned int c;
  unsigned long long maxbytes = 0;
  extern const char *optarg;
  int i;
  int pid_cntr;
  int pid;
  int pid_list[1000];
  while ((c = getopt (argc, argv, "c:b:p:wvh")) != (-1))
    {
      switch ((char) c)
	{
	case 'b':
	  maxbytes = atoll (optarg);
	}
    }
  pid = fork ();
  while ((pid != 0) && (maxbytes > 1024 * 1024 * 1024))
    {
      maxbytes = maxbytes - (1024 * 1024 * 1024);
      pid = fork ();
      if (pid != 0)
	pid_cntr++;
      pid_list[i] = pid;
    }
  while ((pid_count < pid_cntr))
    {
    }
  kill (pid_list[i], 9);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20081119-1.c<|end_filename|>
unsigned long long
f (__builtin_va_list  ap)
{
  return __builtin_va_arg (ap, unsigned long long);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071102-1.c<|end_filename|>
/* PR rtl-optimization/28062 */
/* Original testcase by <NAME> <<EMAIL>> */
/* C testcase by <NAME> <<EMAIL>> */

struct _NSPoint
{
  float x;
  float y;
};

typedef struct _NSPoint NSPoint;

static inline NSPoint
NSMakePoint (float x, float y)
{
  NSPoint point;
  point.x = x;
  point.y = y;
  return point;
}

static inline NSPoint
RelativePoint (NSPoint point, NSPoint refPoint)
{
  return NSMakePoint (refPoint.x + point.x, refPoint.y + point.y);
}

NSPoint g(NSPoint refPoint)
{
  float pointA, pointB;
  return RelativePoint (NSMakePoint (0, pointA), refPoint);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36817.c<|end_filename|>
void xxx()
{
  unsigned i;
  unsigned *p=0;
  for(i=0; i<4; ++i)
    *p++=0;
  for(i=0; i<4; ++i)
    *p++=0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48767.c<|end_filename|>
/* PR target/48767 */

void
foo (__builtin_va_list ap)
{
  __builtin_va_arg (ap, void); /* { dg-error "second argument to .va_arg. is of incomplete type .void." } */
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20020129-1.c<|end_filename|>
/* Test call to static variable.  */

typedef struct
{
  long long a[10];
} A;
  
void bar (A *);
  
typedef int (*B)(int);
  
void foo (void)
{
  static A a;
  bar (&a);
  (*(B)&a) (1);
}


<|start_filename|>testdata/issue9.c<|end_filename|>
typedef short JBLOCK[64];
typedef JBLOCK *JBLOCKROW;
typedef JBLOCKROW *JBLOCKARRAY;
typedef JBLOCKARRAY *JBLOCKIMAGE;

short v6[64];
short (v6)[64];
JBLOCK v6;
JBLOCK (v6);

short (*v11)[64];
short ((*v11))[64];
short ((*v11)[64]);
JBLOCKROW v11;
JBLOCKROW (v11);

short (**v17)[64];
short ((**v17))[64];
short ((**v17)[64]);
JBLOCKARRAY v17;
JBLOCKARRAY (v17);

short (***v23)[64];
short ((***v23))[64];
short ((***v23)[64]);
JBLOCKIMAGE v23;
JBLOCKIMAGE (v23);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20051228-1.c<|end_filename|>
/* PR target/25554 */
/* Bitwise shift with negative shift count has undefined behavior,
   but we shouldn't ICE on it.  */

void
foo (long x)
{
  if (((x >> -2) & 1) != 0)
    bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr28865.c<|end_filename|>
struct var_len
{
  int field1;
  const char field2[];
};

/* Note - strictly speaking this array declaration is illegal
   since each element has a variable length.  We used to allow
   this because it was used in existing code.
   Since PR64417 we reject this code.  */
static const struct var_len var_array[] = 
{
  { 1, "Long exposure noise reduction" }, /* { dg-error "initialization of flexible array member" } */
  { 2, "Shutter/AE lock buttons" }, /* { dg-error "initialization of flexible array member" } */
  { 3, "Mirror lockup" } /* { dg-error "initialization of flexible array member" } */
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040303-1.c<|end_filename|>
typedef struct input {
        struct input *next;
} input_t;
static input_t *inputs = (input_t *)((void *)0);
void
RemoveInput(unsigned long id)
{
 input_t *ip;
 input_t *prev;
 while (1)
  if (ip == (input_t *)id)
   break;
 if (ip == (input_t *)((void *)0))
  return;
  prev->next = ip->next;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-idinternal.c<|end_filename|>
#define LIM1 0123456789
#define LIM2 LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1
#define LIM3 LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2
#define LIM4 LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3
#define LIM5 LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4
#define LIM6 LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5

#define V(x) v##LIM6##x

static int V(a);
static int V(b);


<|start_filename|>testdata/issue66.c<|end_filename|>
short *p = ((short*)3)[5];


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46107.c<|end_filename|>
/* PR tree-optimization/46107 */
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

int foo (void) __attribute__ ((noreturn));

void
bar (int x, int *y, int z)
{
  static void *j[] = { &&l1, &&l2 };
l1:
  if (*y)
    goto *j[z];
  foo ();
l2:
  *y ^= (x & 1) ? -1 : 0;
  goto *j[x];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51495.c<|end_filename|>
/* PR rtl-optimization/51495 */
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

void bar (void);

int
foo (int i)
{
  static const void *const table[] = { &&begin, &&end };
  goto *(table[i]);
begin:
  bar ();
end:
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42049.c<|end_filename|>
/* PR middle-end/42049 */

extern char *strcpy (char *s1, const char *s2);
struct S { char s[4]; };

int
foo (int x, char **y)
{
  char const *a;
  char const *b;
  struct S s[9];
  long i;
  if (x > 1)
    a = y[1];
  else
    a = "abc";
  if (x > 2)
    b = y[2];
  else
    b = "def";
  strcpy (s[0].s, a);
  strcpy (s[1].s, b);
  for (i = 2; i < x - 2 && i < 8; i++)
    strcpy (s[i].s, y[i + 1]);
  s[i].s[0] = '\0';
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20160205-1.c<|end_filename|>
int a[32];
int fn1(int d) {
  int c = 1;
  for (int b = 0; b < 32; b++)
    if (a[b])
      c = 0;
  return c;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46934.c<|end_filename|>
int caller (unsigned int reg_type)
{
  switch (reg_type)
    {
    case 0x80000000:
      return (int)foo();

    case 0x80000003:
      return (int) bar();

    case 0x80000001:
      return (int) baz();

    case 0x80000004:
      return (int) fooz();
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030605-1.c<|end_filename|>
/* Test for proper preparation of the comparison operands for 
   generation of a conditional trap.  Produced unrecognizable
   rtl on Sparc.  */

struct blah { char *b_data; };

void set_bh_page(struct blah *bh, unsigned long offset)
{
        if ((1UL << 12 ) <= offset)
                __builtin_trap() ;
        bh->b_data = (char *)offset;
}


<|start_filename|>v2/all_test.go<|end_filename|>
// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

import (
	"bytes"
	"flag"
	"fmt"
	"go/token"
	"io"
	"io/ioutil"
	"os"
	"path"
	"path/filepath"
	"regexp"
	"runtime"
	"strings"
	"testing"
	"unicode"
	"unicode/utf8"

	"github.com/cznic/golex/lex"
	"github.com/cznic/xc"
)

func caller(s string, va ...interface{}) {
	if s == "" {
		s = strings.Repeat("%v ", len(va))
	}
	_, fn, fl, _ := runtime.Caller(2)
	fmt.Fprintf(os.Stderr, "# caller: %s:%d: ", path.Base(fn), fl)
	fmt.Fprintf(os.Stderr, s, va...)
	fmt.Fprintln(os.Stderr)
	_, fn, fl, _ = runtime.Caller(1)
	fmt.Fprintf(os.Stderr, "# \tcallee: %s:%d: ", path.Base(fn), fl)
	fmt.Fprintln(os.Stderr)
	os.Stderr.Sync()
}

func caller3(s string, va ...interface{}) {
	if s == "" {
		s = strings.Repeat("%v ", len(va))
	}
	_, fn, fl, _ := runtime.Caller(3)
	fmt.Fprintf(os.Stderr, "# caller: %s:%d: ", path.Base(fn), fl)
	fmt.Fprintf(os.Stderr, s, va...)
	fmt.Fprintln(os.Stderr)
	_, fn, fl, _ = runtime.Caller(1)
	fmt.Fprintf(os.Stderr, "# \tcallee: %s:%d: ", path.Base(fn), fl)
	fmt.Fprintln(os.Stderr)
	os.Stderr.Sync()
}

func dbg(s string, va ...interface{}) {
	if s == "" {
		s = strings.Repeat("%v ", len(va))
	}
	_, fn, fl, _ := runtime.Caller(1)
	fmt.Fprintf(os.Stderr, "# dbg %s:%d: ", path.Base(fn), fl)
	fmt.Fprintf(os.Stderr, s, va...)
	fmt.Fprintln(os.Stderr)
	os.Stderr.Sync()
}

func TODO(...interface{}) string { //TODOOK
	_, fn, fl, _ := runtime.Caller(1)
	return fmt.Sprintf("# TODO: %s:%d:\n", path.Base(fn), fl) //TODOOK
}

func use(...interface{}) {}

func init() {
	use(caller, caller3, dbg, TODO, toksDump) //TODOOK
	flag.IntVar(&yyDebug, "yydebug", 0, "")
	flag.BoolVar(&traceMacroDefs, "macros", false, "")
}

// ============================================================================

var (
	oRE = flag.String("re", "", "")

	shellc      = filepath.FromSlash("testdata/_sqlite/sqlite-amalgamation-3210000/shell.c")
	sqlite3c    = filepath.FromSlash("testdata/_sqlite/sqlite-amalgamation-3210000/sqlite3.c")
	searchPaths []string
)

func init() {
	var err error
	searchPaths, err = Paths(true)
	if err != nil {
		panic(err)
	}
}

func testUCNTable(t *testing.T, tab []rune, fOk, fOther func(rune) bool, fcategory func(rune) bool, tag string) {
	m := map[rune]struct{}{}
	for i := 0; i < len(tab); i += 2 {
		l, h := tab[i], tab[i+1]
		if h == 0 {
			h = l
		}
		for r := l; r <= h; r++ {
			m[r] = struct{}{}
		}
	}
	for r := rune(0); r < 0xffff; r++ {
		_, ok := m[r]
		if g, e := fOk(r), ok; g != e {
			t.Errorf("%#04x %v %v", r, g, e)
		}

		if ok {
			if g, e := fOther(r), false; g != e {
				t.Errorf("%#04x %v %v", r, g, e)
			}
		}
	}
}

func TestUCNDigitsTable(t *testing.T) {
	tab := []rune{
		0x0660, 0x0669, 0x06F0, 0x06F9, 0x0966, 0x096F, 0x09E6, 0x09EF, 0x0A66, 0x0A6F,
		0x0AE6, 0x0AEF, 0x0B66, 0x0B6F, 0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF,
		0x0D66, 0x0D6F, 0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F33,
	}
	testUCNTable(t, tab, isUCNDigit, isUCNNonDigit, unicode.IsDigit, "unicode.IsDigit")
}

func TestUCNNonDigitsTable(t *testing.T) {
	tab := []rune{
		0x00AA, 0x0000, 0x00B5, 0x0000, 0x00B7, 0x0000, 0x00BA, 0x0000, 0x00C0, 0x00D6,
		0x00D8, 0x00F6, 0x00F8, 0x01F5, 0x01FA, 0x0217, 0x0250, 0x02A8, 0x02B0, 0x02B8,
		0x02BB, 0x0000, 0x02BD, 0x02C1, 0x02D0, 0x02D1, 0x02E0, 0x02E4, 0x037A, 0x0000,
		0x0386, 0x0000, 0x0388, 0x038A, 0x038C, 0x0000, 0x038E, 0x03A1, 0x03A3, 0x03CE,
		0x03D0, 0x03D6, 0x03DA, 0x0000, 0x03DC, 0x0000, 0x03DE, 0x0000, 0x03E0, 0x0000,
		0x03E2, 0x03F3, 0x0401, 0x040C, 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481,
		0x0490, 0x04C4, 0x04C7, 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5,
		0x04F8, 0x04F9, 0x0531, 0x0556, 0x0559, 0x0000, 0x0561, 0x0587, 0x05B0, 0x05B9,
		0x05F0, 0x05F2, 0x0621, 0x063A, 0x0640, 0x0652, 0x0670, 0x06B7, 0x06BA, 0x06BE,
		0x06C0, 0x06CE, 0x06D0, 0x06DC, 0x06E5, 0x06E8, 0x06EA, 0x06ED, 0x0901, 0x0903,
		0x0905, 0x0939, 0x093D, 0x0000, 0x093E, 0x094D, 0x0950, 0x0952, 0x0958, 0x0963,
		0x0981, 0x0983, 0x0985, 0x098C, 0x098F, 0x0990, 0x0993, 0x09A8, 0x09AA, 0x09B0,
		0x09B2, 0x0000, 0x09B6, 0x09B9, 0x09BE, 0x09C4, 0x09C7, 0x09C8, 0x09CB, 0x09CD,
		0x09DC, 0x09DD, 0x09DF, 0x09E3, 0x09F0, 0x09F1, 0x0A02, 0x0000, 0x0A05, 0x0A0A,
		0x0A0F, 0x0A10, 0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36,
		0x0A38, 0x0A39, 0x0A3E, 0x0A42, 0x0A47, 0x0A48, 0x0A4B, 0x0A4D, 0x0A59, 0x0A5C,
		0x0A5E, 0x0000, 0x0A74, 0x0000, 0x0A81, 0x0A83, 0x0A85, 0x0A8B, 0x0A8D, 0x0000,
		0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3, 0x0AB5, 0x0AB9,
		0x0ABD, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0AD0, 0x0000, 0x0AE0, 0x0000,
		0x0B01, 0x0B03, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28, 0x0B2A, 0x0B30,
		0x0B32, 0x0B33, 0x0B36, 0x0B39, 0x0B3D, 0x0000, 0x0B3E, 0x0B43, 0x0B47, 0x0B48,
		0x0B4B, 0x0B4D, 0x0B5C, 0x0B5D, 0x0B5F, 0x0B61, 0x0B82, 0x0B83, 0x0B85, 0x0B8A,
		0x0B8E, 0x0B90, 0x0B92, 0x0B95, 0x0B99, 0x0B9A, 0x0B9C, 0x0000, 0x0B9E, 0x0B9F,
		0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA, 0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0BBE, 0x0BC2,
		0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD, 0x0C01, 0x0C03, 0x0C05, 0x0C0C, 0x0C0E, 0x0C10,
		0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C3E, 0x0C44, 0x0C46, 0x0C48,
		0x0C4A, 0x0C4D, 0x0C60, 0x0C61, 0x0C82, 0x0C83, 0x0C85, 0x0C8C, 0x0C8E, 0x0C90,
		0x0C92, 0x0CA8, 0x0CAA, 0x0CB3, 0x0CB5, 0x0CB9, 0x0CBE, 0x0CC4, 0x0CC6, 0x0CC8,
		0x0CCA, 0x0CCD, 0x0CDE, 0x0000, 0x0CE0, 0x0CE1, 0x0D02, 0x0D03, 0x0D05, 0x0D0C,
		0x0D0E, 0x0D10, 0x0D12, 0x0D28, 0x0D2A, 0x0D39, 0x0D3E, 0x0D43, 0x0D46, 0x0D48,
		0x0D4A, 0x0D4D, 0x0D60, 0x0D61, 0x0E01, 0x0E3A,

		// In [0], Annex D, Thai [0x0E40, 0x0E5B] overlaps with digits
		// [0x0E50, 0x0E59]. Exclude them.
		0x0E40, 0x0E4F,
		0x0E5A, 0x0E5B,

		0x0E81, 0x0E82,
		0x0E84, 0x0000, 0x0E87, 0x0E88, 0x0E8A, 0x0000, 0x0E8D, 0x0000, 0x0E94, 0x0E97,
		0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EA5, 0x0000, 0x0EA7, 0x0000, 0x0EAA, 0x0EAB,
		0x0EAD, 0x0EAE, 0x0EB0, 0x0EB9, 0x0EBB, 0x0EBD, 0x0EC0, 0x0EC4, 0x0EC6, 0x0000,
		0x0EC8, 0x0ECD, 0x0EDC, 0x0EDD, 0x0F00, 0x0000, 0x0F18, 0x0F19, 0x0F35, 0x0000,
		0x0F37, 0x0000, 0x0F39, 0x0000, 0x0F3E, 0x0F47, 0x0F49, 0x0F69, 0x0F71, 0x0F84,
		0x0F86, 0x0F8B, 0x0F90, 0x0F95, 0x0F97, 0x0000, 0x0F99, 0x0FAD, 0x0FB1, 0x0FB7,
		0x0FB9, 0x0000, 0x10A0, 0x10C5, 0x10D0, 0x10F6, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9,
		0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D, 0x1F50, 0x1F57,
		0x1F59, 0x0000, 0x1F5B, 0x0000, 0x1F5D, 0x0000, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4,
		0x1FB6, 0x1FBC, 0x1FBE, 0x0000, 0x1FC2, 0x1FC4, 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3,
		0x1FD6, 0x1FDB, 0x1FE0, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FFC, 0x203F, 0x2040,
		0x207F, 0x0000, 0x2102, 0x0000, 0x2107, 0x0000, 0x210A, 0x2113, 0x2115, 0x0000,
		0x2118, 0x211D, 0x2124, 0x0000, 0x2126, 0x0000, 0x2128, 0x0000, 0x212A, 0x2131,
		0x2133, 0x2138, 0x2160, 0x2182, 0x3005, 0x3007, 0x3021, 0x3029, 0x3041, 0x3093,
		0x309B, 0x309C, 0x30A1, 0x30F6, 0x30FB, 0x30FC, 0x3105, 0x312C, 0x4E00, 0x9FA5,
		0xAC00, 0xD7A3,
	}
	testUCNTable(t, tab, isUCNNonDigit, isUCNDigit, unicode.IsLetter, "unicode.IsLetter")
}

func charStr(c rune) string { return yySymName(int(c)) }

func charsStr(chars []lex.Char, delta token.Pos) (a []string) {
	for _, v := range chars {
		a = append(a, fmt.Sprintf("{%s %d}", charStr(v.Rune), v.Pos()-delta))
	}
	return a
}

type x []struct {
	c   rune
	pos token.Pos
}

type lexerTests []struct {
	src   string
	chars x
}

func testLexer(t *testing.T, newLexer func(i int, src string) (*lexer, error), tab lexerTests) {
nextTest:
	for ti, test := range tab {
		lx, err := newLexer(ti, test.src)
		if err != nil {
			t.Fatal(err)
		}

		delta := token.Pos(lx.File.Base() - 1)
		var chars []lex.Char
		var c lex.Char
		var lval yySymType
		for i := 0; c.Rune >= 0 && i < len(test.src)+2; i++ {
			lx.Lex(&lval)
			c = lval.Token.Char
			chars = append(chars, c)
		}
		if c.Rune >= 0 {
			t.Errorf("%d: scanner stall %v", ti, charsStr(chars, delta))
			continue
		}

		if g, e := lx.error(), error(nil); g != e {
			t.Errorf("%d: lx.err %v %v %v", ti, g, e, charsStr(chars, delta))
			continue
		}

		if g, e := len(chars), len(test.chars); g != e {
			t.Errorf("%d: len(chars) %v %v %v", ti, g, e, charsStr(chars, delta))
			continue
		}

		for i, c := range chars {
			c = chars[i]
			e := test.chars[i]
			g := c.Rune
			if e := e.c; g != e {
				t.Errorf("%d: c[%d] %v %v %v", ti, i, charStr(g), charStr(e), charsStr(chars, delta))
				continue nextTest
			}

			if g, e := c.Pos()-delta, e.pos; g != e {
				t.Errorf("%d: pos[%d] %v %v %v", ti, i, g, e, charsStr(chars, delta))
				continue nextTest
			}
		}
	}
}

func TestLexer(t *testing.T) {
	ctx, err := newContext(&Tweaks{})
	if err != nil {
		t.Fatal(err)
	}

	testLexer(
		t,
		func(i int, src string) (*lexer, error) {
			return newLexer(ctx, fmt.Sprintf("TestLexer.%d", i), len(src), strings.NewReader(src))
		},
		lexerTests{
			{"", x{{-1, 1}}},
			{"%0", x{{'%', 1}, {INTCONST, 2}, {-1, 3}}},
			{"%:%:", x{{PPPASTE, 1}, {-1, 5}}},
			{"%>", x{{'}', 1}, {-1, 3}}},
			{"0", x{{INTCONST, 1}, {-1, 2}}},
			{"01", x{{INTCONST, 1}, {-1, 3}}},
			{"0??/1\n", x{{INTCONST, 1}, {'?', 2}, {'?', 3}, {'/', 4}, {INTCONST, 5}, {'\n', 6}, {-1, 7}}},
			{"0??/1\n2", x{{INTCONST, 1}, {'?', 2}, {'?', 3}, {'/', 4}, {INTCONST, 5}, {'\n', 6}, {INTCONST, 7}, {-1, 8}}},
			{"0??/\n", x{{INTCONST, 1}, {'?', 2}, {'?', 3}, {'/', 4}, {'\n', 5}, {-1, 6}}},
			{"0??/\n2", x{{INTCONST, 1}, {'?', 2}, {'?', 3}, {'/', 4}, {'\n', 5}, {INTCONST, 6}, {-1, 7}}},
			{"0\\1\n", x{{INTCONST, 1}, {'\\', 2}, {INTCONST, 3}, {'\n', 4}, {-1, 5}}},
			{"0\\1\n2", x{{INTCONST, 1}, {'\\', 2}, {INTCONST, 3}, {'\n', 4}, {INTCONST, 5}, {-1, 6}}},
			{"0\\\n", x{{INTCONST, 1}, {-1, 4}}},
			{"0\\\n2", x{{INTCONST, 1}, {-1, 5}}},
			{"0\x00", x{{INTCONST, 1}, {0, 2}, {-1, 3}}},
			{"0\x001", x{{INTCONST, 1}, {0, 2}, {INTCONST, 3}, {-1, 4}}},
			{":>", x{{']', 1}, {-1, 3}}},
			{"<%", x{{'{', 1}, {-1, 3}}},
			{"<:", x{{'[', 1}, {-1, 3}}},
			{"??!", x{{'?', 1}, {'?', 2}, {'!', 3}, {-1, 4}}},
			{"??!0", x{{'?', 1}, {'?', 2}, {'!', 3}, {INTCONST, 4}, {-1, 5}}},
			{"??!01", x{{'?', 1}, {'?', 2}, {'!', 3}, {INTCONST, 4}, {-1, 6}}},
			{"??!=", x{{'?', 1}, {'?', 2}, {NEQ, 3}, {-1, 5}}},
			{"??'", x{{'?', 1}, {'?', 2}, {'\'', 3}, {-1, 4}}},
			{"??(", x{{'?', 1}, {'?', 2}, {'(', 3}, {-1, 4}}},
			{"??)", x{{'?', 1}, {'?', 2}, {')', 3}, {-1, 4}}},
			{"??-", x{{'?', 1}, {'?', 2}, {'-', 3}, {-1, 4}}},
			{"??/", x{{'?', 1}, {'?', 2}, {'/', 3}, {-1, 4}}},
			{"??/1\n", x{{'?', 1}, {'?', 2}, {'/', 3}, {INTCONST, 4}, {'\n', 5}, {-1, 6}}},
			{"??/1\n2", x{{'?', 1}, {'?', 2}, {'/', 3}, {INTCONST, 4}, {'\n', 5}, {INTCONST, 6}, {-1, 7}}},
			{"??/\n", x{{'?', 1}, {'?', 2}, {'/', 3}, {'\n', 4}, {-1, 5}}},
			{"??/\n2", x{{'?', 1}, {'?', 2}, {'/', 3}, {'\n', 4}, {INTCONST, 5}, {-1, 6}}},
			{"??<", x{{'?', 1}, {'?', 2}, {'<', 3}, {-1, 4}}},
			{"??=??=", x{{'?', 1}, {'?', 2}, {'=', 3}, {'?', 4}, {'?', 5}, {'=', 6}, {-1, 7}}},
			{"??>", x{{'?', 1}, {'?', 2}, {'>', 3}, {-1, 4}}},
			{"???!", x{{'?', 1}, {'?', 2}, {'?', 3}, {'!', 4}, {-1, 5}}},
			{"???!0", x{{'?', 1}, {'?', 2}, {'?', 3}, {'!', 4}, {INTCONST, 5}, {-1, 6}}},
			{"???/\n2", x{{'?', 1}, {'?', 2}, {'?', 3}, {'/', 4}, {'\n', 5}, {INTCONST, 6}, {-1, 7}}},
			{"????!0", x{{'?', 1}, {'?', 2}, {'?', 3}, {'?', 4}, {'!', 5}, {INTCONST, 6}, {-1, 7}}},
			{"???x0", x{{'?', 1}, {'?', 2}, {'?', 3}, {IDENTIFIER, 4}, {-1, 6}}},
			{"???x??!0", x{{'?', 1}, {'?', 2}, {'?', 3}, {IDENTIFIER, 4}, {'?', 5}, {'?', 6}, {'!', 7}, {INTCONST, 8}, {-1, 9}}},
			{"??x0", x{{'?', 1}, {'?', 2}, {IDENTIFIER, 3}, {-1, 5}}},
			{"??x??!0", x{{'?', 1}, {'?', 2}, {IDENTIFIER, 3}, {'?', 4}, {'?', 5}, {'!', 6}, {INTCONST, 7}, {-1, 8}}},
			{"?x0", x{{'?', 1}, {IDENTIFIER, 2}, {-1, 4}}},
			{"?x??!0", x{{'?', 1}, {IDENTIFIER, 2}, {'?', 3}, {'?', 4}, {'!', 5}, {INTCONST, 6}, {-1, 7}}},
			{"@", x{{'@', 1}, {-1, 2}}},
			{"@%", x{{'@', 1}, {'%', 2}, {-1, 3}}},
			{"@%0", x{{'@', 1}, {'%', 2}, {INTCONST, 3}, {-1, 4}}},
			{"@%:", x{{'@', 1}, {'#', 2}, {-1, 4}}},
			{"@%:0", x{{'@', 1}, {'#', 2}, {INTCONST, 4}, {-1, 5}}},
			{"@%:01", x{{'@', 1}, {'#', 2}, {INTCONST, 4}, {-1, 6}}},
			{"@??=", x{{'@', 1}, {'?', 2}, {'?', 3}, {'=', 4}, {-1, 5}}},
			{"\"(a\\\nz", x{{'"', 1}, {'(', 2}, {IDENTIFIER, 3}, {-1, 7}}},
			{"\\1\n", x{{'\\', 1}, {INTCONST, 2}, {'\n', 3}, {-1, 4}}},
			{"\\1\n2", x{{'\\', 1}, {INTCONST, 2}, {'\n', 3}, {INTCONST, 4}, {-1, 5}}},
			{"\\\n", x{{-1, 3}}},
			{"\\\n2", x{{INTCONST, 3}, {-1, 4}}},
			{"\\\r\n", x{{-1, 4}}},
			{"\\\r\n2", x{{INTCONST, 4}, {-1, 5}}},
			{"\r", x{{-1, 2}}},
			{"\r0", x{{INTCONST, 2}, {-1, 3}}},
			{"\r01", x{{INTCONST, 2}, {-1, 4}}},
			{"\x00", x{{0, 1}, {-1, 2}}},
			{"\x000", x{{0, 1}, {INTCONST, 2}, {-1, 3}}},
		},
	)
}

func TestLexerTrigraphs(t *testing.T) {
	ctx, err := newContext(&Tweaks{EnableTrigraphs: true})
	if err != nil {
		t.Fatal(err)
	}

	testLexer(
		t,
		func(i int, src string) (*lexer, error) {
			return newLexer(ctx, fmt.Sprintf("TestLexer.%d", i), len(src), strings.NewReader(src))
		},
		lexerTests{
			{"", x{{-1, 1}}},
			{"%0", x{{'%', 1}, {INTCONST, 2}, {-1, 3}}},
			{"%:%:", x{{PPPASTE, 1}, {-1, 5}}},
			{"%>", x{{'}', 1}, {-1, 3}}},
			{"0", x{{INTCONST, 1}, {-1, 2}}},
			{"01", x{{INTCONST, 1}, {-1, 3}}},
			{"0??/1\n", x{{INTCONST, 1}, {'\\', 2}, {INTCONST, 5}, {'\n', 6}, {-1, 7}}},
			{"0??/1\n2", x{{INTCONST, 1}, {'\\', 2}, {INTCONST, 5}, {'\n', 6}, {INTCONST, 7}, {-1, 8}}},
			{"0??/\n", x{{INTCONST, 1}, {-1, 6}}},
			{"0??/\n2", x{{INTCONST, 1}, {-1, 7}}},
			{"0\\1\n", x{{INTCONST, 1}, {'\\', 2}, {INTCONST, 3}, {'\n', 4}, {-1, 5}}},
			{"0\\1\n2", x{{INTCONST, 1}, {'\\', 2}, {INTCONST, 3}, {'\n', 4}, {INTCONST, 5}, {-1, 6}}},
			{"0\\\n", x{{INTCONST, 1}, {-1, 4}}},
			{"0\\\n2", x{{INTCONST, 1}, {-1, 5}}},
			{"0\x00", x{{INTCONST, 1}, {0, 2}, {-1, 3}}},
			{"0\x001", x{{INTCONST, 1}, {0, 2}, {INTCONST, 3}, {-1, 4}}},
			{":>", x{{']', 1}, {-1, 3}}},
			{"<%", x{{'{', 1}, {-1, 3}}},
			{"<:", x{{'[', 1}, {-1, 3}}},
			{"??!", x{{'|', 1}, {-1, 4}}},
			{"??!0", x{{'|', 1}, {INTCONST, 4}, {-1, 5}}},
			{"??!01", x{{'|', 1}, {INTCONST, 4}, {-1, 6}}},
			{"??!=", x{{ORASSIGN, 1}, {-1, 5}}},
			{"??'", x{{'^', 1}, {-1, 4}}},
			{"??(", x{{'[', 1}, {-1, 4}}},
			{"??)", x{{']', 1}, {-1, 4}}},
			{"??-", x{{'~', 1}, {-1, 4}}},
			{"??/", x{{'\\', 1}, {-1, 4}}},
			{"??/1\n", x{{'\\', 1}, {INTCONST, 4}, {'\n', 5}, {-1, 6}}},
			{"??/1\n2", x{{'\\', 1}, {INTCONST, 4}, {'\n', 5}, {INTCONST, 6}, {-1, 7}}},
			{"??/\n", x{{-1, 5}}},
			{"??/\n2", x{{INTCONST, 5}, {-1, 6}}},
			{"??<", x{{'{', 1}, {-1, 4}}},
			{"??=??=", x{{PPPASTE, 1}, {-1, 7}}},
			{"??>", x{{'}', 1}, {-1, 4}}},
			{"???!", x{{'?', 1}, {'|', 2}, {-1, 5}}},
			{"???!0", x{{'?', 1}, {'|', 2}, {INTCONST, 5}, {-1, 6}}},
			{"???/\n2", x{{'?', 1}, {INTCONST, 6}, {-1, 7}}},
			{"????!0", x{{'?', 1}, {'?', 2}, {'|', 3}, {INTCONST, 6}, {-1, 7}}},
			{"???x0", x{{'?', 1}, {'?', 2}, {'?', 3}, {IDENTIFIER, 4}, {-1, 6}}},
			{"???x??!0", x{{'?', 1}, {'?', 2}, {'?', 3}, {IDENTIFIER, 4}, {'|', 5}, {INTCONST, 8}, {-1, 9}}},
			{"??x0", x{{'?', 1}, {'?', 2}, {IDENTIFIER, 3}, {-1, 5}}},
			{"??x??!0", x{{'?', 1}, {'?', 2}, {IDENTIFIER, 3}, {'|', 4}, {INTCONST, 7}, {-1, 8}}},
			{"?x0", x{{'?', 1}, {IDENTIFIER, 2}, {-1, 4}}},
			{"?x??!0", x{{'?', 1}, {IDENTIFIER, 2}, {'|', 3}, {INTCONST, 6}, {-1, 7}}},
			{"@", x{{'@', 1}, {-1, 2}}},
			{"@%", x{{'@', 1}, {'%', 2}, {-1, 3}}},
			{"@%0", x{{'@', 1}, {'%', 2}, {INTCONST, 3}, {-1, 4}}},
			{"@%:", x{{'@', 1}, {'#', 2}, {-1, 4}}},
			{"@%:0", x{{'@', 1}, {'#', 2}, {INTCONST, 4}, {-1, 5}}},
			{"@%:01", x{{'@', 1}, {'#', 2}, {INTCONST, 4}, {-1, 6}}},
			{"@??=", x{{'@', 1}, {'#', 2}, {-1, 5}}},
			{"\"(a\\\nz", x{{'"', 1}, {'(', 2}, {IDENTIFIER, 3}, {-1, 7}}},
			{"\\1\n", x{{'\\', 1}, {INTCONST, 2}, {'\n', 3}, {-1, 4}}},
			{"\\1\n2", x{{'\\', 1}, {INTCONST, 2}, {'\n', 3}, {INTCONST, 4}, {-1, 5}}},
			{"\\\n", x{{-1, 3}}},
			{"\\\n2", x{{INTCONST, 3}, {-1, 4}}},
			{"\\\r\n", x{{-1, 4}}},
			{"\\\r\n2", x{{INTCONST, 4}, {-1, 5}}},
			{"\r", x{{-1, 2}}},
			{"\r0", x{{INTCONST, 2}, {-1, 3}}},
			{"\r01", x{{INTCONST, 2}, {-1, 4}}},
			{"\x00", x{{0, 1}, {-1, 2}}},
			{"\x000", x{{0, 1}, {INTCONST, 2}, {-1, 3}}},
		},
	)
}

func exampleAST(rule int, src string) interface{} {
	ctx, err := newContext(&Tweaks{
		EnableAnonymousStructFields: true,
		EnableEmptyStructs:          true,
		EnableOmitFuncDeclSpec:      true,
	})
	if err != nil {
		return fmt.Sprintf("TODO: %v", err) //TODOOK
	}

	ctx.exampleRule = rule
	src = strings.TrimSpace(src)
	r, n := utf8.DecodeRuneInString(src)
	src = src[n:]
	l, err := newLexer(ctx, fmt.Sprintf("example%v.c", rule), len(src), strings.NewReader(src))
	if err != nil {
		return fmt.Sprintf("TODO: %v", err) //TODOOK
	}

	l.unget(cppToken{Token: xc.Token{Char: lex.Char{Rune: r}}})
	yyParse(l)
	if err := ctx.error(); err != nil {
		return fmt.Sprintf("TODO: %v", err) //TODOOK
	}

	if ctx.exampleAST == nil {
		return "TODO: nil" //TODOOK
	}

	return ctx.exampleAST
}

func testCPPParseSource(ctx *context, src Source) (*cpp, tokenReader, error) {
	if ctx == nil {
		var err error
		if ctx, err = newContext(&Tweaks{}); err != nil {
			return nil, nil, err
		}
	}

	c := newCPP(ctx)
	r, err := c.parse(src)
	if err != nil {
		return nil, nil, err
	}

	return c, r, nil
}

func testCPPParseFile(ctx *context, nm string) (*cpp, tokenReader, error) {
	return testCPPParseSource(ctx, MustFileSource(nm))
}

func testCPPParseString(ctx *context, name, src string) (*cpp, tokenReader, error) {
	return testCPPParseSource(ctx, NewStringSource(name, src))
}

func TestCPPParse0(t *testing.T) {
	ctx, err := newContext(&Tweaks{})
	if err != nil {
		t.Fatal(err)
	}

	for i, v := range []string{
		"",
		"\n",
		"foo\n",
		`#if 1
#endif
`,
		`#if 1
# /* foo */
#endif
`,
	} {
		if _, _, err := testCPPParseString(ctx, "test", v); err != nil {
			t.Error(i, err)
		}
	}
}

func TestCPPExpand(t *testing.T) {
	var re *regexp.Regexp
	if s := *oRE; s != "" {
		re = regexp.MustCompile(s)
	}

	model, err := NewModel()
	if err != nil {
		t.Fatal(err)
	}

	if err := filepath.Walk(filepath.FromSlash("testdata/cpp-expand/"), func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}

		if info.IsDir() || (!strings.HasSuffix(path, ".c") && !strings.HasSuffix(path, ".h")) {
			return nil
		}

		if re != nil && !re.MatchString(path) {
			return nil
		}

		t.Log(path)
		ctx, err := newContext(&Tweaks{
			cppExpandTest: true,
		})
		if err != nil {
			t.Fatal(err)
		}

		ctx.model = model
		b, err := ioutil.ReadFile(path)
		if err != nil {
			t.Fatal(err)
		}

		c, r, err := testCPPParseFile(ctx, path)
		if err != nil {
			t.Fatal(ErrString(err))
		}

		var tb tokenBuffer
		if err := c.eval(r, &tb); err != nil {
			t.Fatal(ErrString(err))
		}

		switch {
		case strings.Contains(filepath.ToSlash(path), "/mustfail/"):
			err := c.error()
			if err != nil {
				t.Logf(ErrString(err))
				return nil
			}

			t.Fatalf("unexpected success: %s", path)
		default:
			if err := c.error(); err != nil {
				t.Fatal(ErrString(err))
			}
		}

		var a []string
		for {
			t := tb.read()
			if t.Rune == ccEOF {
				break
			}

			a = append(a, TokSrc(t.Token))
		}
		s := strings.Join(a, "")
		exp, err := ioutil.ReadFile(path + ".expect")
		if err != nil {
			t.Fatal(err)
		}

		if g, e := s, string(exp); g != e {
			t.Errorf("\n---- src %s\n%s---- got\n%s---- exp %s\n%s", path, b, g, path+".expect", e)
		}
		return nil
	}); err != nil {
		t.Fatal(err)
	}
}

func (b *tokenBuffer) WriteTo(fset *token.FileSet, w io.Writer) {
	var lpos token.Position
	for {
		t := b.read()
		if t.Rune == ccEOF {
			return
		}

		pos := fset.Position(t.Pos())
		if pos.Filename != lpos.Filename {
			fmt.Fprintf(w, "# %d %v\n", pos.Line, pos.Filename)
		}
		lpos = pos
		w.Write([]byte(TokSrc(t.Token)))
	}
}

func (b *tokenBuffer) Bytes(fset *token.FileSet) []byte {
	var buf bytes.Buffer
	b.WriteTo(fset, &buf)
	return buf.Bytes()
}

func TestPreprocessSQLite(t *testing.T) {
	model, err := NewModel()
	if err != nil {
		t.Fatal(err)
	}

	ctx, err := newContext(&Tweaks{})
	if err != nil {
		t.Fatal(err)
	}

	ctx.model = model
	cpp := newCPP(ctx)
	cpp.includePaths = []string{"@"}
	cpp.sysIncludePaths = searchPaths
	r, err := cpp.parse(MustBuiltin(), MustFileSource(sqlite3c))
	if err != nil {
		t.Fatalf("%v: %v", sqlite3c, err)
	}

	var w tokenBuffer
	if err := cpp.eval(r, &w); err != nil {
		t.Fatalf("%v: %v", sqlite3c, ErrString(err))
	}

	if err := cpp.error(); err != nil {
		t.Fatalf("%v: %v", sqlite3c, ErrString(err))
	}

	if n := len(cpp.lx.ungetBuffer); n != 0 {
		t.Fatal(n)
	}
}

func TestParseSQLite(t *testing.T) {
	model, err := NewModel()
	if err != nil {
		t.Fatal(err)
	}

	ctx, err := newContext(&Tweaks{
		EnableAnonymousStructFields: true,
		EnableEmptyStructs:          true,
	})
	if err != nil {
		t.Fatal(err)
	}

	ctx.model = model
	ctx.includePaths = []string{"@"}
	ctx.sysIncludePaths = searchPaths
	if _, err := ctx.parse([]Source{MustBuiltin(), MustFileSource(sqlite3c)}); err != nil {
		dbg("%T %v", err, PrettyString(err))
		t.Fatalf("%v", ErrString(err))
	}
}

func TestFunc(t *testing.T) {
	model, err := NewModel()
	if err != nil {
		t.Fatal(err)
	}

	ctx, err := newContext(&Tweaks{InjectFinalNL: true})
	if err != nil {
		t.Fatal(err)
	}

	ctx.model = model
	tu, err := ctx.parse(
		[]Source{NewStringSource("testfunc.c", `int (*foo(char bar))(double baz){}`)},
	)
	if err != nil {
		t.Fatalf("%v", ErrString(err))
	}

	if err := tu.ExternalDeclarationList.check(ctx); err != nil {
		t.Fatal(err)
	}

	if err := ctx.error(); err != nil {
		t.Fatal(err)
	}

	fileScope := ctx.scope
	n := fileScope.LookupIdent(dict.SID("foo"))
	d, ok := n.(*Declarator)
	if !ok {
		t.Fatalf("%T", n)
	}

	fd := d
	if g, e := d.Type.String(), "function (char) returning pointer to function (double) returning int"; g != e {
		t.Fatalf("got %q\nexp %q", g, e)
	}

	if g, e := fmt.Sprint(d.Type.(*FunctionType).Params), "[char]"; g != e {
		t.Fatalf("got %q\nexp %q", g, e)
	}

	fnScope := tu.ExternalDeclarationList.ExternalDeclaration.FunctionDefinition.FunctionBody.CompoundStmt.scope
	n = fnScope.LookupIdent(dict.SID("bar"))
	if d, ok = n.(*Declarator); !ok {
		t.Fatalf("%T", n)
	}

	if g, e := fmt.Sprint(d.Type), "char"; g != e {
		t.Fatalf("got %q\nexp %q", g, e)
	}

	names := fd.ParameterNames()
	if g, e := len(names), 1; g != e {
		t.Fatal(g, e)
	}

	if g, e := names[0], dict.SID("bar"); g != e {
		t.Fatal(g, e)
	}

	params := fd.Parameters
	if g, e := len(params), 1; g != e {
		t.Fatal(g, e)
	}

	if g, e := params[0].Name(), dict.SID("bar"); g != e {
		t.Fatal(g, e)
	}
}

func TestTypecheckSQLite(t *testing.T) {
	if _, err := Translate(
		&Tweaks{
			EnableAnonymousStructFields: true,
			EnableEmptyStructs:          true,
		},
		[]string{"@"},
		searchPaths,
		MustBuiltin(),
		MustFileSource(sqlite3c),
	); err != nil {
		t.Fatal(err)
	}
}

func TestTypecheckSQLiteShell(t *testing.T) {
	if _, err := Translate(
		&Tweaks{
			EnableAnonymousStructFields: true,
			EnableEmptyStructs:          true,
		},
		[]string{"@"},
		searchPaths,
		MustBuiltin(),
		MustCrt0(),
		MustFileSource(shellc),
	); err != nil {
		t.Fatal(err)
	}
}

func TestTypecheckTCCTests(t *testing.T) {
	blacklist := map[string]struct{}{
		"34_array_assignment.c": {}, // gcc: main.c:16:6: error: incompatible types when assigning to type ‘int[4]’ from type ‘int *’
		"46_grep.c":             {}, // gcc: 46_grep.c:489:12: error: ‘documentation’ undeclared (first use in this function)
	}
	m, err := filepath.Glob("testdata/tcc-0.9.26/tests/tests2/*.c")
	if err != nil {
		t.Fatal(err)
	}

	for _, pth := range m {
		if _, ok := blacklist[filepath.Base(pth)]; ok {
			continue
		}

		if _, err := Translate(
			&Tweaks{
				EnableBinaryLiterals:        true,
				EnableEmptyStructs:          true,
				EnableImplicitDeclarations:  true,
				EnableReturnExprInVoidFunc:  true,
				EnableAnonymousStructFields: true,
			},
			[]string{"@"},
			searchPaths,
			MustBuiltin(),
			MustCrt0(),
			MustFileSource(pth),
		); err != nil {
			t.Fatal(ErrString(err))
		}
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20111209-1.c<|end_filename|>
/* { dg-do compile { target s390x-*-* *-*-*vms* } } */

typedef char* char_ptr32 __attribute__ ((mode(SI)));

char_ptr32 getenv (const char *name);
unsigned long strlen (const char *str);

void
__gnat_getenv (char *name, int *len, char **value)
{
  *value = getenv (name);
  *len = strlen (*value);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53418-1.c<|end_filename|>
void
f (void)
{
  int i = (0 ? 1 : 0U / 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36238.c<|end_filename|>
typedef signed char int8_t;
typedef int int32_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
int32_t g_19 = 0x67F5AEE0L;
uint16_t g_169 = 0x89E3L;
const volatile uint32_t g_258 = 0x63AFEBCAL;
int32_t func_11;
int32_t func_29;
int32_t
func_5 (int32_t p_6, int32_t p_8, uint16_t p_10)
{
  if (lshift_s_s (func_11, p_8))
    {
      int8_t l_18 = 0x6FL;
      if (l_18)
        for (p_6 = -14;; g_19 += 6)
          {
            int32_t l_283 = -1L;
            if (((0x45L / 1L) > 0x07414511L * 1L / 1L > func_29) / 1L)
              for (p_8 = 6;; p_8 -= 5)
                l_283 = 0xC90541F7L;
          }
    }
  else
    g_169 = g_258;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44687.c<|end_filename|>
typedef int int32_t;
typedef unsigned char uint8_t;
struct S0
{
  uint8_t f0;
};
struct S0 *g_18[7][5][1][1] = {
};

struct S0 **g_17 = &g_18[0][3][0][0];
int32_t g_86;
struct S0 func_72 (uint8_t p_73, struct S0 p_74);

void
int326 (struct S0 **p_67, int32_t p_68, int32_t * *const p_69,
	struct S0 *p_70)
{
  struct S0 l_95 = {
    -1L
  };
  func_72 (1L, func_72 (0, l_95));
}

struct S0
func_72 (uint8_t p_73, struct S0 p_74)
{
  int32_t *l_85 = &g_86;
  if (*l_85)
  lbl_94:*l_85 ^= 0;
  if (g_86)
    goto lbl_94;
  return **g_17;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr24227.c<|end_filename|>
int Fdisplay_buffer   (int buffer)
{
  if (((struct buffer *) ((unsigned int) buffer)) ==
      (0,(struct buffer *) ((unsigned int) ((buffer) & 1))))
    return 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56484.c<|end_filename|>
/* PR rtl-optimization/56484 */

unsigned char b[4096];
int bar (void);

int
foo (void)
{
  int a = 0;
  while (bar ())
    {
      int c = bar ();
      a = a < 0 ? a : c;
      __builtin_memset (b, 0, sizeof b);
    }
  return a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41469.c<|end_filename|>
/* { dg-options "-fexceptions" } */
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */

void
af (void *a)
{
}
void
bf (void)
{
  int i = 1;
  char v[i];
  af (v);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr30311.c<|end_filename|>
/* ICE in subreg_get_info: bug 30311.  */
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
inline double bar(double x)
{
  long double d;
  __asm__ ("" : "=t" (d) : "0" (x));
  return d;
}

double foo(double x)
{
  if (x)
    return bar(x);
  else
    return bar(x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40026.c<|end_filename|>
typedef struct {
    unsigned long bits;
} S;
struct T {
    S span;
    int flags;
};

struct T f(int x)
{
  return (struct T) {
      .span = (S) { 0UL },
      .flags = (x ? 256 : 0),
  };
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51246.c<|end_filename|>
/* PR tree-optimization/51246 */

int a, *b;

void
test (void)
{
  while (1)
    {
      int c;
      a = c;
      b = &c;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071214-1.c<|end_filename|>
typedef __builtin_va_list va_list;
void gftp_config_parse_args (int numargs, char **first, ...)
{
  char **dest = first;
  va_list argp;
  __builtin_va_start (argp, first);
  while (numargs-- > 0)
    {
      *dest = __builtin_malloc (1);
      dest = __builtin_va_arg(argp, char **);
      *dest = ((void *)0);
    }
  __builtin_va_end(argp);
}



<|start_filename|>v2/testdata/cpp-expand/002.h<|end_filename|>
#define x      3
#define f(a)   f(x * (a))
#undef  x      
#define x      2
#define g      f
#define w      0,1

g(x+(3,4)-w)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21562.c<|end_filename|>
/* { dg-options "-fno-inline" } */
struct foo { int a, b, c; };
void abort(void);
void exit(int);

void
brother (int a, int b, int c)
{
  if (a)
    abort ();
}

void
sister (struct foo f, int b, int c)
{
  brother ((f.b == b), b, c);
}

int
main ()
{
  struct foo f = { 7, 8, 9 };
  sister (f, 1, 2);
  exit (0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39041.c<|end_filename|>
int test_bit(int nr, void *addr)
{
  int *a = (int *)addr;
  int mask;
  a += nr;
  mask = 1 << nr;
  return mask & *a;
}
struct {
    struct {
	int disabled;
    } *data[1];
} trace;
struct {
    unsigned bits[1];
} cpumask;
void inc(int *);
void dec(int *);
int foo(void)
{
  int cpu;
  for (cpu = 0; cpu < 1; cpu++) {
      if (test_bit(cpu, cpumask.bits))
	inc(&trace.data[cpu]->disabled);
      if (!test_bit(cpu, cpumask.bits))
	dec(&trace.data[cpu]->disabled);
  }
}


<|start_filename|>v2/testdata/cpp-expand/009.c<|end_filename|>
long __syscall(syscall_arg_t, ...);

#ifndef __scc
#define __scc(X) ((long) (X))
typedef long syscall_arg_t;
#endif


#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b)
#define __SYSCALL_CONCAT_X(a,b) a##b
#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,)
#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n
#define __sys_open(...) __SYSCALL_DISP(__sys_open,,__VA_ARGS__)
#define __sys_open3(x,pn,fl,mo) __syscall4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo)
#define __syscall4(n,a,b,c,d) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d))
#define sys_open(...) __syscall_ret(__sys_open(__VA_ARGS__))

int fd = sys_open(filename, flags, 0666);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20000804-1.c<|end_filename|>
/* This does not work on h8300 due to the use of an asm
   statement to force a 'long long' (64-bits) to go in a register.  */
/* { dg-do assemble } */
/* { dg-skip-if "" { { i?86-*-* x86_64-*-* } && { ia32 && { ! nonpic } } } { "*" } { "" } } */
/* { dg-skip-if "No 64-bit registers" { m32c-*-* } { "*" } { "" } } */
/* { dg-skip-if "Not enough 64-bit registers" { pdp11-*-* } { "-O0" } { "" } } */
/* { dg-xfail-if "" { h8300-*-* } { "*" } { "" } } */

/* Copyright (C) 2000, 2003 Free Software Foundation */
__complex__ long long f ()
{
  int i[99];
  __complex__ long long v;

  v += f ();
  asm("": "+r" (v) : "r" (0), "r" (1));
  v = 2;
  return v;
  g (&v);
}


<|start_filename|>v2/testdata/bug/3.c<|end_filename|>
static void f(int);

int main() {
	f(42);
	return 0;
}

static void f(int i) {
	int j = 0;
	if (j) {
		j++;
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr18903.c<|end_filename|>
/* We were ICEing in bsi_after_labels because 
   we had a BB which did not have a lablel.
   PR middle-end/18903 */

#ifndef NO_LABEL_VALUES
void g (int s, int f)
{
  &&ff;
  s = f;
  ff:
  goto end;
  f = s;
  end:;
}
#else
int g;
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59362.c<|end_filename|>
/* PR tree-optimization/59362 */

char *
foo (char *r, int s)
{
  r = __builtin___stpcpy_chk (r, "abc", __builtin_object_size (r, 1));
  if (s)
    r = __builtin___stpcpy_chk (r, "d", __builtin_object_size (r, 1));
  return r;
}

char *a;
long int b;

void
bar (void)
{
  b = __builtin_object_size (0, 0);
  a = __builtin___stpcpy_chk (0, "", b);
  b = __builtin_object_size (a, 0);
}


<|start_filename|>v2/headers/linux_386/usr/include/i386-linux-gnu/bits/types/struct_osockaddr.h<|end_filename|>
#ifndef __osockaddr_defined
#define __osockaddr_defined 1

/* This is the 4.3 BSD `struct sockaddr' format, which is used as wire
   format in the grotty old 4.3 `talk' protocol.  */
struct osockaddr {
	unsigned short int sa_family;
	unsigned char sa_data[14];
};

#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr25311.c<|end_filename|>

struct w
{
  int top;
  int left;
  int height;
  int width;
  struct w *next;
  struct w *parent;
  struct w *child;
};

extern struct w *Qnil;

void
set_size (struct w *w, int new_size, int nodelete, int set_height)
{
  int old_size = set_height? w->height : w->width;

  if (nodelete || w->parent == Qnil)
    {
      int last_pos, last_old_pos, pos, old_pos, first;
      int div_val = old_size << 1;
      struct w *c;

      last_pos = first = set_height? w->top : w->left;
      last_old_pos = 0;

      for (c = w->child; c != Qnil; c = c->next)
	{
	  if (set_height)
	    old_pos = last_old_pos + c->height;
	  else
	    old_pos = last_old_pos + c->width;

	  pos = (((old_pos * new_size) << 1) + old_size) / div_val;
	  set_size (c, pos + first - last_pos, 1, set_height);
	  last_pos = pos + first;
	  last_old_pos = old_pos;
	}

      if (!nodelete)
	for (c = w->child; c != Qnil; c = c->next)
	  use (c);
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23960.c<|end_filename|>
/* PR tree-optimization/23960
   fold-const.c used to construct a comparison node with one pointer
   operand and one non-pointer operand.  */

void abort (void) __attribute__ ((noreturn));

void
foo (char *d, unsigned long int n)
{ 
  if (d + n > d)
    abort ();
} 


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47141.c<|end_filename|>
int
foo (__UINTPTR_TYPE__ x)
{
  int a = 6;
  int *b = &a;
  if (x)
    for (a = 0; a; a++)
      ;
  return a;
}

void
bar (void)
{
  foo ((__UINTPTR_TYPE__) foo);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41646.c<|end_filename|>
/* PR rtl-optimization/41646 */

struct A { unsigned long a; };
struct B { unsigned short b, c, d; };
struct B bar (unsigned long);

char *
foo (char *a, struct A *x)
{
  struct B b = bar (x->a);
  unsigned char c;
  unsigned short d;
  a[3] = ((unsigned char) (b.b % 10) + 48);
  d = b.b / 10;
  a[2] = ((unsigned char) (d % 10) + 48);
  d = d / 10;
  a[1] = ((unsigned char) (d % 10) + 48);
  a[0] = ((unsigned char) ((d / 10) % 10) + 48);
  a[4] = 46;
  c = (unsigned char) b.c;
  a[6] = (c % 10 + 48);
  a[5] = ((c / 10) % 10 + 48);
  a[7] = 46;
  c = b.d;
  a[9] = (c % 10 + 48);
  a[8] = ((c / 10) % 10 + 48);
  return a + 10;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20161124-1.c<|end_filename|>
/* PR middle-end/78429 */
/* Testcase by <NAME> <<EMAIL>> */

int a[6];
char b;
unsigned c;
short d;
volatile int e;

int foo (void)
{
  int f;
  for (; c <= 2; c++) {
    d = 3;
    for (; d >= 0; d--) {
      int g = b;
      f = a[d] || b;
    }
    f || e;
  }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37418-1.c<|end_filename|>
typedef void ft(int);
void f(int args)__attribute__((noreturn));
void f2(ft *p __attribute__((noreturn)))
{
  p = f;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040726-1.c<|end_filename|>
/* PR rtl-optimization/16643 */
void foo (int a, int b, int c, int d, int e, int *f)
{
  if (a == 0)
    if (b == 0)
      if (c == 0)
	if (d == 0)
	  {
	    *f = e;
	    return;
	  }
  *f = e;
  return;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040109-1.c<|end_filename|>
/* PR target/13380.
   On m32r, the condition code register, (reg:SI 17), was replaced with
   a pseudo reg, which would cause an unrecognized insn.  */

void
foo (unsigned int a, unsigned int b)
{
  if (a > b)
    {
      while (a)
	{
	  switch (b)
	    {
	    default:
	      a = 0;
	    case 2:
	      a = 0;
	    case 1:
	      a = 0;
	    case 0:
	      ;
	    }
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55920.c<|end_filename|>
/* PR tree-optimization/55920 */

struct A { unsigned a; } __attribute__((packed));
struct B { int b; unsigned char c[16]; };
void bar (struct A);

void
foo (struct B *x)
{
  struct A a;
  if (x->b)
    __builtin_memcpy (&a, x->c, sizeof a);
  else
    a.a = 0;
  bar (a);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46856.c<|end_filename|>
struct data {
    int prio;
    signed char status;
};

struct base {
    unsigned _num;
    struct data vec[10];
};

static struct data *ix(struct base *base, unsigned i)
{
    return &base->vec[i];
}

struct heap {
    struct base base;
};

struct heap *heap;

void increase_insn_priority (int *fld, int amount)
{
    if (ix(heap ? &heap->base : 0, *fld)->status > 0)
	ix(heap ? &heap->base : 0, *fld)->prio += amount;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031203-1.c<|end_filename|>
void make_file_symbol_completion_list (char *);
/* This tests to make sure PRE doesn't choose the wrong name when
   inserting phi nodes.  Otherwise, we get uses that aren't dominated
   by defs.  
   PR 13177.  */
void location_completer (char *text)
{
	char *p, *symbol_start = text;
	for (p = text; *p != '\0'; ++p) {
		if (*p == '\\' && p[1] == '\'')
			p++;
		else if (*p == ':')
			symbol_start = p + 1;
		else 
			symbol_start = p + 1;
		make_file_symbol_completion_list(symbol_start);
	}
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr20928.c<|end_filename|>
extern struct bar_t bar;
void *a;
void
foo (void)
{
  void **p = a;
  do {
    *p++ = ((unsigned char *) &bar + ((unsigned long int) 1L << 31));
  } while (p);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69740-2.c<|end_filename|>
inline int foo(int *p1, int p2) {
  int z = *p1;
  while (z > p2)
    p2 = 2;
  return z;
}
int main() {
  int i;
  for (;;) {
    int j, k;
    i = foo(&k, 7);
    if (k)
      j = i;
    else
      k = j;
    if (2 != j)
      __builtin_abort();
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53418-2.c<|end_filename|>
void
f (void)
{
  int i = (1 ? 0U / 0 : 1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59386.c<|end_filename|>
/* PR tree-optimization/59386 */

struct S { int s; };
struct T { int t; struct S u; } c;
int b;

struct S
foo ()
{
  struct T d;
  if (b)
    while (c.t)
      ;
  else
    return d.u;
}

struct S
bar ()
{
  struct T a;
  a.u = foo ();
  return a.u;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34966.c<|end_filename|>
extern double sin (double), cos (double);

__inline double
atan (double __x)
{
  register double __result;
#if defined(__i386__) || defined(__x86_64__)
  __asm __volatile__ ("" : "=t" (__result) : "0" (__x));
#else
  __result = __x;
#endif
  return __result;
}

double
f(double x)
{
  double t = atan (x);
  return cos (t) + sin (t);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37418-3.c<|end_filename|>
typedef void ft(int);
void f(int args)__attribute__((const));
void f2(ft *p __attribute__((const)))
{
  p = f;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr61684.c<|end_filename|>
/* PR tree-optimization/61684 */
/* { dg-xfail-if "ptxas crashes" { nvptx-*-* } { "*" } { "-O0" "-O1" "-Os" } } */

int a, c;
static int *b = 0;
short d;
static short **e = 0;

void
foo ()
{
  for (; c < 1; c++)
    ;
  *e = &d;
  a = d && (c && 1) & *b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/call386.c<|end_filename|>
void foo () {}

int main ()
{
  int i;
  for (i = 100000; i >= 0; i--)
    {
      foo ();
      foo ();
      foo ();
      foo ();
      foo ();
      foo ();
      foo ();
      foo ();
      foo ();
      foo ();
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47140.c<|end_filename|>
/* PR tree-optimization/47140 */

static inline int
foo (int x, short y)
{
  return y == 0 ? x : x + y;
}

static inline unsigned short
bar (unsigned short x, unsigned char y)
{
  return x - y;
}

int w;

int baz (void);

int
test (void)
{
  int i;
  for (i = 0; i < 50; i++)
    w += foo ((unsigned char) (1 + baz ()) >= bar (0, 1), 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/callind.c<|end_filename|>
bar (foo, a)
     int (**foo) ();
{

  (foo)[1] = bar;

  foo[a] (1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20041211-1.c<|end_filename|>
/* PR tree-optimization/16951 */

void dummy_use(const char *p);

__inline void f(const char *const p) {
  const char q;
  dummy_use(p);
  f(&q);
}

void crash() {
  f(0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920502-1.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */

extern void*t[];x(i){goto*t[i];}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/simd-1.c<|end_filename|>
typedef int v2si __attribute__ ((vector_size (8)));
typedef unsigned di __attribute__ ((mode(DI)));
void foo(unsigned long);
void bar() {
    v2si x = { 1, 2 };
    foo((di) x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030410-1.c<|end_filename|>
/* PR 10201 */

extern struct _zend_compiler_globals compiler_globals;
typedef struct _zend_executor_globals zend_executor_globals;
extern zend_executor_globals executor_globals;

typedef struct _zend_ptr_stack {
        int top;
        void **top_element;
} zend_ptr_stack;
struct _zend_compiler_globals {
};
struct _zend_executor_globals {
        int *uninitialized_zval_ptr;
        zend_ptr_stack argument_stack;
};

static inline void safe_free_zval_ptr(int *p)
{
        if (p!=(executor_globals.uninitialized_zval_ptr)) {
        }
}
zend_executor_globals executor_globals;
static inline void zend_ptr_stack_clear_multiple(void)
{
        executor_globals.argument_stack.top -= 2;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32988.c<|end_filename|>
enum zone_type {
  ZONE_DMA,
  ZONE_NORMAL,
  ZONE_MOVABLE,
  MAX_NR_ZONES
};
static unsigned long arch_zone_lowest_possible_pfn[MAX_NR_ZONES];
static unsigned long arch_zone_highest_possible_pfn[MAX_NR_ZONES];
void free_area_init_nodes(unsigned long *max_zone_pfn)
{
  enum zone_type i;
  for (i = 1; i < MAX_NR_ZONES; i++)
  {
    if (i == ZONE_MOVABLE)
      continue;
    unsigned long _x = max_zone_pfn[i];
    unsigned long _y = arch_zone_lowest_possible_pfn[i];
    arch_zone_highest_possible_pfn[i] = _x > _y ? _x : _y;
  }
}


<|start_filename|>testdata/issue84.c<|end_filename|>
#define a(b, ...) c(b, __VA_ARGS__)
a(1, 2, 3);
a(1, 2);
a(1);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35006.c<|end_filename|>
/* { dg-require-effective-target alloca } */
typedef unsigned long grub_uint64_t;
typedef grub_uint64_t grub_size_t;
grub_cmdline_get (unsigned max_len, int echo_char)
{
  unsigned xpos, ypos, ystart;
  grub_size_t lpos, llen;
  char buf[max_len];
  void cl_print (int pos, int c)
  {
      char *p;
      for (p = buf + pos; *p; p++)
      {
        if (xpos++ > 78)
          grub_putchar ('\n');
        grub_putchar (*p);
      }
 }
 void cl_delete (unsigned len)
 {
   cl_set_pos ();
   cl_print (lpos, ' ');
   grub_memmove ();
   cl_print (lpos, echo_char);
   cl_set_pos ();
 }
 cl_delete (llen);
 grub_size_t n = lpos;
 cl_delete (n);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/labels-3.c<|end_filename|>
/* Verify that we can narrow the storage associated with label diffs.  */
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

int foo (int a)
{
  static const short ar[] = { &&l1 - &&l1, &&l2 - &&l1 };
  void *p = &&l1 + ar[a];
  goto *p;
 l1:
  return 1;
 l2:
  return 2;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20110913-1.c<|end_filename|>
struct ieee754_double {
  double d;
};
extern const float __exp_deltatable[178];
float __ieee754_expf (float x)
{
  static const float himark = 88.72283935546875;
  static const float lomark = -103.972084045410;
  if (__builtin_isless(x, himark) && __builtin_isgreater(x, lomark))
    {
      int tval;
      double x22, t, result, dx;
      float delta;
      struct ieee754_double ex2_u;
      dx -= t;
      tval = (int) (t * 512.0);
      if (t >= 0)
	delta = - __exp_deltatable[tval];
      else
	delta = __exp_deltatable[-tval];
      x22 = (0.5000000496709180453 * dx + 1.0000001192102037084) * dx + delta;
      result = x22 * ex2_u.d + ex2_u.d;
      return (float) result;
    }
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44038.c<|end_filename|>
struct Ustr {
    char data[1]; 
};
int ustr_xi__embed_val_get(char *);
inline static int ustr_len(struct Ustr *s1)
{
  return ustr_xi__embed_val_get(s1->data);
}
static struct Ustr *s1 = ((struct Ustr *) "");
int tst(char *cstr)
{
  return ustr_len(s1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031010-1.c<|end_filename|>
/* This crashed the ARM backend with -mcpu=iwmmxt -O because an insn
   required a split which was not available for the iwmmxt.  */
inline int *f1(int* a, int* b) { if (*b < *a) return b; return a; }
int f2(char *d, char *e, int f) { int g = e - d; return *f1(&f, &g); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33855.c<|end_filename|>
/* Testcase by <NAME> <<EMAIL>> */
/* Used to segfault due to cselim not marking the complex temp var
   as GIMPLE reg.  */

typedef struct {
  int nsant, nvqd;
  _Complex long double *vqd;
} vsorc_t;
vsorc_t vsorc;

void foo(int next_job, int ain_num, int iped, long t) {
  long double zpnorm;

  while (!next_job)
    if (ain_num)
    {
      if (iped == 1)
        zpnorm = 0.0;
      int indx = vsorc.nvqd-1;
      vsorc.vqd[indx] = t*1.0fj;
      if (cabsl(vsorc.vqd[indx]) < 1.e-20)
        vsorc.vqd[indx] = 0.0fj;
      zpnorm = t;
      if (zpnorm > 0.0)
        iped = vsorc.nsant;
    }
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/20030209-1.c<|end_filename|>
#ifdef STACK_SIZE
#if STACK_SIZE < 8*100*100
#define SKIP
#endif
#endif

#ifndef SKIP
double x[100][100];
int main ()
{
  int i;

  i = 99;
  x[i][0] = 42;
  if (x[99][0] != 42)
    abort ();
  exit (0);
}
#else
int
main ()
{
  exit (0);
}
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53226.c<|end_filename|>
/* PR tree-optimization/53226 */

void
foo (unsigned long *x, char y, char z)
{
  int i;
  for (i = y; i < z; ++i)
    {
      unsigned long a = ((unsigned char) i) & 63UL;
      unsigned long b = 1ULL << a;
      *x |= b;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040708-1.c<|end_filename|>
/* PR rtl-optimization/16199 */
/* Origin: <NAME> <<EMAIL>> */

typedef enum {
    APR_LOCK_FCNTL,
    APR_LOCK_FLOCK,
    APR_LOCK_SYSVSEM,
    APR_LOCK_PROC_PTHREAD,
    APR_LOCK_POSIXSEM,
    APR_LOCK_DEFAULT
} apr_lockmech_e;

struct apr_proc_mutex_unix_lock_methods_t {
    unsigned int flags;
    const char *name;
};

typedef struct apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_lock_methods_t;

extern const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_sysv_methods;

struct apr_proc_mutex_t {
    const apr_proc_mutex_unix_lock_methods_t *inter_meth;
    int curr_locked;
    char *fname;
};

typedef struct apr_proc_mutex_t apr_proc_mutex_t;

extern const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_proc_pthread_methods;

extern const apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_fcntl_methods;

static int proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech)
{
    switch (mech) {
    case APR_LOCK_FCNTL:
        new_mutex->inter_meth = &apr_proc_mutex_unix_fcntl_methods;
        break;
    case APR_LOCK_FLOCK:
        return ((20000 + 50000) + 23);
        break;
    case APR_LOCK_SYSVSEM:
        new_mutex->inter_meth = &apr_proc_mutex_unix_sysv_methods;
        break;
    case APR_LOCK_POSIXSEM:
        return ((20000 + 50000) + 23);
        break;
    case APR_LOCK_PROC_PTHREAD:
        new_mutex->inter_meth = &apr_proc_mutex_unix_proc_pthread_methods;
        break;
    case APR_LOCK_DEFAULT:
        new_mutex->inter_meth = &apr_proc_mutex_unix_proc_pthread_methods;
        break;
    default:
        return ((20000 + 50000) + 23);
    }
    return 0;
}

const char* apr_proc_mutex_defname(void)
{
    apr_proc_mutex_t mutex;

    if (proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT) != 0) {
        return "unknown";
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050423-1.c<|end_filename|>
/* PR tree-optimization/20742 */

int
foo (int x, int y)
{
  register int a = y + 57;
  register int b = y + 31;

  while (x-- > 0)
    {
 #define TEN(x) x x x x x x x x x x
      TEN (TEN (a += b; b -= a;))
      TEN (TEN (a += b; b -= a;))
    }
  return a + b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071128-1.c<|end_filename|>
/* PR tree-optimization/34140 */
/* Testcase by <NAME> <<EMAIL>> */

struct S
{
  unsigned int s;
};
struct T
{
  struct S t[2];
  unsigned int u : 1;
};

void
foo (int x, int y, int z)
{
  int i;
  struct T t;

  t.u = t.u;
  for (i = 0; i < x; i++)
    if (z != 1)
      t.t[i].s = y || t.u;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr29241.c<|end_filename|>
static inline __attribute__((always_inline)) void ip_finish_output2(){}
void ip_fragment(void (*)(void));
static inline __attribute__((always_inline)) void ip_finish_output()
{
 ip_fragment(ip_finish_output2);
 ip_finish_output2();
}
void ip_mc_output()
{
 ip_finish_output();
}
void ip_output()
{
 ip_finish_output();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34091.c<|end_filename|>
typedef unsigned int GLenum;
typedef unsigned char GLboolean;
typedef int GLint;
typedef unsigned short GLushort;
typedef unsigned int GLuint;
typedef float GLfloat;
typedef GLushort GLchan;
struct gl_texture_image;
typedef struct __GLcontextRec GLcontext;
typedef void (*FetchTexelFuncC) (const struct gl_texture_image * texImage,
				 GLint col, GLint row, GLint img,
				 GLchan * texelOut);
struct gl_texture_format
{
};
struct gl_texture_image
{
  GLenum _BaseFormat;
  GLboolean _IsPowerOfTwo;
  FetchTexelFuncC FetchTexelc;
};
struct gl_texture_object
{
  GLenum Target;
  GLenum WrapS;
  GLenum MinFilter;
  GLenum MagFilter;
  GLint BaseLevel;
  GLint _MaxLevel;
  struct gl_texture_image *Image[6][12];
};
enum _format
{
    MESA_FORMAT_RGBA_DXT3, MESA_FORMAT_RGBA_DXT5, MESA_FORMAT_RGBA,
    MESA_FORMAT_RGB, MESA_FORMAT_ALPHA, MESA_FORMAT_LUMINANCE,
};
typedef void (*texture_sample_func) (GLcontext * ctx,
				     const struct gl_texture_object * tObj,
				     GLuint n, const GLfloat texcoords[][4],
				     const GLfloat lambda[],
				     GLchan rgba[][4]);
lerp_2d (GLfloat a, GLfloat b, GLfloat v00, GLfloat v10, GLfloat v01,
	 GLfloat v11)
{
  const GLfloat temp0 = ((v00) + (a) * ((v10) - (v00)));
  const GLfloat temp1 = ((v01) + (a) * ((v11) - (v01)));
  return ((temp0) + (b) * ((temp1) - (temp0)));
}
static __inline__ void
lerp_rgba (GLchan result[4], GLfloat t, const GLchan a[4], const GLchan b[4])
{
  result[0] = (GLchan) (((a[0]) + (t) * ((b[0]) - (a[0]))) + 0.5);
  result[1] = (GLchan) (((a[1]) + (t) * ((b[1]) - (a[1]))) + 0.5);
  result[2] = (GLchan) (((a[2]) + (t) * ((b[2]) - (a[2]))) + 0.5);
}
static __inline__ void
lerp_rgba_2d (GLchan result[4], GLfloat a, GLfloat b, const GLchan t00[4],
	      const GLchan t10[4], const GLchan t01[4], const GLchan t11[4])
{
  result[0] = (GLchan) (lerp_2d (a, b, t00[0], t10[0], t01[0], t11[0]) + 0.5);
  result[1] = (GLchan) (lerp_2d (a, b, t00[1], t10[1], t01[1], t11[1]) + 0.5);
  result[2] = (GLchan) (lerp_2d (a, b, t00[2], t10[2], t01[2], t11[2]) + 0.5);
}
static __inline__ void
sample_2d_linear_repeat (GLcontext * ctx,
			 const struct gl_texture_object *tObj,
			 const struct gl_texture_image *img,
			 const GLfloat texcoord[4], GLchan rgba[])
{
  GLint i0, j0, i1, j1;
  GLfloat a, b;
  GLchan t00[4], t10[4], t01[4], t11[4];
  {
  };
  img->FetchTexelc (img, i1, j1, 0, t11);
  lerp_rgba_2d (rgba, a, b, t00, t10, t01, t11);
}
sample_2d_nearest_mipmap_linear (GLcontext * ctx,
				 const struct gl_texture_object *tObj,
				 GLuint n, const GLfloat texcoord[][4],
				 const GLfloat lambda[], GLchan rgba[][4])
{
  GLuint i;
  GLint level = linear_mipmap_level (tObj, lambda[i]);
  sample_2d_nearest (ctx, tObj, tObj->Image[0][tObj->_MaxLevel], texcoord[i], rgba[i]);
  GLchan t0[4], t1[4];
  sample_2d_nearest (ctx, tObj, tObj->Image[0][level], texcoord[i], t0);
  sample_2d_nearest (ctx, tObj, tObj->Image[0][level + 1], texcoord[i], t1);
}
static void
sample_2d_linear_mipmap_linear_repeat (GLcontext * ctx,
				       const struct gl_texture_object *tObj,
				       GLuint n, const GLfloat texcoord[][4],
				       const GLfloat lambda[],
				       GLchan rgba[][4])
{
  GLuint i;
  for (i = 0; i < n; i++)
    {
      GLint level = linear_mipmap_level (tObj, lambda[i]);
      if (level >= tObj->_MaxLevel)
	{
	  GLchan t0[4], t1[4];
	  const GLfloat f = ((lambda[i]) - ifloor (lambda[i]));
	  sample_2d_linear_repeat (ctx, tObj, tObj->Image[0][level],
				   texcoord[i], t0);
	  sample_2d_linear_repeat (ctx, tObj, tObj->Image[0][level + 1],
				   texcoord[i], t1);
	  lerp_rgba (rgba[i], f, t0, t1);
	}
    }
}
static void
sample_lambda_2d (GLcontext * ctx, const struct gl_texture_object *tObj,
		  GLuint n, const GLfloat texcoords[][4],
		  const GLfloat lambda[], GLchan rgba[][4])
{
  const struct gl_texture_image *tImg = tObj->Image[0][tObj->BaseLevel];
  GLuint minStart, minEnd;
  GLuint magStart, magEnd;
  const GLboolean repeatNoBorderPOT = (tObj->WrapS == 0x2901)
    && (tImg->_BaseFormat != 0x1900) && tImg->_IsPowerOfTwo;
  compute_min_mag_ranges (tObj, n, lambda, &minStart, &minEnd, &magStart,
			  &magEnd);
  if (minStart < minEnd)
    {
      const GLuint m = minEnd - minStart;
      switch (tObj->MinFilter)
	{
	case 0x2600:
	  if (repeatNoBorderPOT)
	    {
		case MESA_FORMAT_RGB:
		  opt_sample_rgb_2d (ctx, tObj, m, texcoords + minStart,
				     ((void *) 0), rgba + minStart);
		case MESA_FORMAT_RGBA:
		  opt_sample_rgba_2d (ctx, tObj, m, texcoords + minStart,
				      ((void *) 0), rgba + minStart);
	    }
	    {
	      sample_nearest_2d (ctx, tObj, m, texcoords + minStart,
				 ((void *) 0), rgba + minStart);
	    }
	  break;
	  sample_2d_nearest_mipmap_linear (ctx, tObj, m, texcoords + minStart,
					   lambda + minStart,
					   rgba + minStart);
	case 0x2703:
	  if (repeatNoBorderPOT)
	    sample_2d_linear_mipmap_linear_repeat (ctx, tObj, m,
						   texcoords + minStart,
						   lambda + minStart,
						   rgba + minStart);
	}
      switch (tObj->MagFilter)
	{
		case MESA_FORMAT_RGB:
		  opt_sample_rgb_2d (ctx, tObj, m, texcoords + magStart,
				     ((void *) 0), rgba + magStart);
		  opt_sample_rgba_2d (ctx, tObj, m, texcoords + magStart,
				      ((void *) 0), rgba + magStart);
                  sample_nearest_2d (ctx, tObj, m, texcoords + magStart,
                                     ((void *) 0), rgba + magStart);
	}
    }
}
texture_sample_func
_swrast_choose_texture_sample_func (const struct gl_texture_object *t)
{
      switch (t->Target)
	{
	case 0x0DE0:
	      return &sample_lambda_2d;
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22269.c<|end_filename|>
/* We used to ICE in tree-ssa-reassoc because we did look at the correct operand to
   see if it was a SSA_NAME.  */
int printf(const char*, ...);
int main(int argv, char*argc) {

    int d1;
    int d2;
    int s1, s2;
    int b;
    ((d1)&=(int)0x0000ffffL, (d1)|=((int)(short)(0x344))<<16);
    ((d1)&=(int)0xffff0000UL, (d1)|=(int)(unsigned short)(0x4567));
    ((d2)&=(int)0x0000ffffL, (d2)|=((int)(short)(0))<<16);
    ((d2)&=(int)0xffff0000UL, (d2)|=(int)(unsigned short)(0x3b9a));
    printf(" dividend >>: %ld\n", d1);
    printf(" divisor  >>: %ld\n", d2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040730-1.c<|end_filename|>
/*  PR tree-opt/16827
    This used to ICE in tree-ssa-loop-im.c */

extern unsigned short dev_roles[];
void super_1_sync(int *rdev2)
{
 int i;
 int max_dev = 0;

 for (i =0;i<20;i++)
  if (rdev2[i] > max_dev)
   max_dev = rdev2[i];

 for (i=0; i<max_dev;i++)
  dev_roles[max_dev] = 0xfffe;

}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32571.c<|end_filename|>

struct list_head {
 struct list_head *next, *prev;
};
struct ib_fmr {
 int *device;
 struct list_head list;
};
static inline
struct mthca_fmr *to_mfmr(struct ib_fmr *ibmr)
{
 const struct ib_fmr *__mptr = (ibmr);
 return (struct mthca_fmr *)( (char *)__mptr );
}
void mthca_unmap_fmr(struct list_head *fmr_list)
{
 struct ib_fmr *fmr;
 if (mthca_is_memfree())
 {
 for (fmr =
 ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)(
(char *)__mptr - 8 );});
 &fmr->list != (fmr_list);
 fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr
*)( (char *)__mptr - 8);})
 )
  mthca_arbel_fmr_unmap(to_mfmr(fmr));
 }
 else
 for (fmr =
 ({ const struct list_head *__mptr = ((fmr_list)->next); (struct ib_fmr *)(
(char *)__mptr - 8);});
  &fmr->list != (fmr_list);
  fmr = ({ const struct list_head *__mptr = (fmr->list.next); (struct ib_fmr
*)( (char *)__mptr - 8);})
  )
  mthca_tavor_fmr_unmap(to_mfmr(fmr));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32584.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
/* Kludge */
#define unsigned
typedef __SIZE_TYPE__ __ssize_t;
#undef unsigned
typedef struct
{
} __mbstate_t;
typedef struct
{
} _G_fpos64_t;
enum
{
  __GCONV_INTERNAL_ERROR
};
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
      size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
       unsigned char *, unsigned char *);
struct __gconv_trans_data
{
};
struct _IO_marker {
};
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);
typedef struct blockbox {
} *BBOXPTR, BBOX ;
typedef struct netbox {
} *NBOXPTR, NBOX ;
typedef struct termbox {
    struct termbox *nextterm ;
} *TEBOXPTR, TEBOX ;
typedef struct tilebox {
    TEBOXPTR termsptr ;
}
*TIBOXPTR ,
TIBOX ;
typedef struct cellbox {
    TIBOXPTR tileptr ;
}
*CBOXPTR ,
CBOX ;
typedef struct dimbox {
}
DBOX ;
typedef struct rowbox {
} ROWBOX ;
typedef struct binbox {
}
CHANGRDBOX ;
extern int numcells ;
extern int numterms ;
sortpin()
{
int j , n , cell ;
CBOXPTR ptr ;
TIBOXPTR tile ;
TEBOXPTR term , *xpptr ;
for( cell = 1 ; cell <= numcells + numterms ; cell++ ) {
    if( ( tile = ptr->tileptr ) == (TIBOXPTR) ((void *)0) ) {
    }
    n = 0 ;
    for( term = tile->termsptr ; term != (TEBOXPTR) ((void *)0) ;
      term = term->nextterm ) {
 xpptr[ ++n ] = term ;
    }
    xpptr[ n + 1 ] = (TEBOXPTR) ((void *)0) ;
    ptr->tileptr->termsptr = xpptr[ 1 ] ;
    for( j = 1 ; j <= n ; j++ ) {
    }
}
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17656.c<|end_filename|>
int sprintf (char *s, const char *format, ...);

int foo(int i, int j)
{
   char *buf, *str;

   if (i)
     str = "";
   else if (j)
     str = "";
   else
     return 1;

   /* We were propagating &""[0] here and not calling fold_stmt with a
      proper statement pointer.  */
   sprintf(buf, str);
   return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070501-1.c<|end_filename|>
 typedef signed int signed16 __attribute__ ((__mode__ (__HI__)));
 typedef unsigned int unsigned16 __attribute__ ((__mode__ (__HI__)));
 typedef signed16 HI;
 typedef unsigned16 UHI;
unsigned short f(int y)
{
  HI tmp_b4;
  tmp_b4 = y;
  UHI opval;
  if (tmp_b4 == -32768)
    opval = 32767;
  else
   opval = -tmp_b4;
 return opval;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53519.c<|end_filename|>
/* PR rtl-optimization/53519 */

int a, b, c, d, e;

short int
foo (short int x)
{
  return a == 0 ? x : 0;
}

short int
bar (int x, int y)
{
  return x + y;
}

void
baz (void)
{
  if (!e)
    {
      int f = foo (65535 ^ b);
      if (bar (!6L <= ~f, ~e) == c)
	d = 0;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060109-1.c<|end_filename|>
/* This test exposed a bug in combine where it was improperly changing
   the mode of a register.  The bug appeared to be latent until web
   was moved after combine.  This is the reduced test that fails 
   by crashing in reload.  */


typedef struct cpp_reader cpp_reader;
typedef struct cpp_string cpp_string;
struct cpp_string
{
  unsigned int len;
  const unsigned char *text;
};
struct cpp_callbacks
{
  void (*ident) (cpp_reader *, unsigned int, const cpp_string *);
};
static void cb_ident (cpp_reader *, unsigned int, const cpp_string *);
init_c_lex (void)
{
  struct cpp_callbacks *cb;
  cb->ident = cb_ident;
}
cb_ident (cpp_reader * pfile __attribute__ ((__unused__)), unsigned int
line
          __attribute__ ((__unused__)), const cpp_string * str
          __attribute__ ((__unused__)))
{
  {
    cpp_string cstr = {
    };
    if (cpp_interpret_string (pfile, str, 1, &cstr, 0))
      {
      }
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21839.c<|end_filename|>
 typedef struct { } spinlock_t;
typedef struct {
 unsigned sequence;
 spinlock_t lock;
} seqlock_t;
void ext3_new_inode(seqlock_t *rsv_seqlock)
{
 *rsv_seqlock = (seqlock_t) { 0, (spinlock_t) { } };

}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55832.c<|end_filename|>
/* PR tree-optimization/55832 */

int g, b;

void
foo (void)
{
  union U { int i; unsigned short s; } a = { 0 };
  unsigned char c;
  unsigned short d = 0, *p = &a.s;

  if (g)
    a.i--;

  if (b && a.i < (d = 1))
    return;

  for (; a.i < 15; a.i++)
    b |= d <= c;

  if (!*p)
    g = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr16461.c<|end_filename|>
/* PR tree-optimization/16461  */

int DVDinput_read(int);
int DVDReadBlocksPath(int offset, int block_count) {
    int ret = 0, ret2 = 0;
    for (;;) {
	if (offset)
	    ret = DVDinput_read(block_count);
	else 
	    ret2 = DVDinput_read(block_count);
	break;
    }
    return ret + ret2;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr67106.c<|end_filename|>
/* { dg-options "-g -fpack-struct" } */
typedef struct S S;

struct S
{
  struct
  {
    S *s;
  };
  int a;
};



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47427.c<|end_filename|>
/* PR tree-optimization/47427 */

char *g, *h;

int
bar (unsigned char x, const int y)
{
lab:
  for (; h; g = h)
    for (g = 0; h; h++)
      {
	int a = 1;
	if (h)
	  {
	    if (a)
	      goto lab;
	    return y;
	  }
      }
  return x;
}

void
foo (void)
{
  if (bar (0, 1))
    bar (1, 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/vector-5.c<|end_filename|>
typedef int v2si __attribute__((__vector_size__(8)));

v2si
f (int x)
{
  return (v2si) { x, (__INTPTR_TYPE__) "" };
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46866.c<|end_filename|>
extern void *malloc(__SIZE_TYPE__);
typedef struct T T;
struct T {
    void (*destroy)(void *);
};
void destroy(union { void *this; } __attribute__((transparent_union)));
static const typeof(destroy) *_destroy  = (const typeof(destroy)*)destroy;
void destroy(void *this);
static T *create_empty(void)
{
  T *this = malloc(sizeof(*this));
  *this = (typeof(*this)){ _destroy };
  return this;
}
void openssl_crl_load(void)
{
  T *this = create_empty();
  destroy(this);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49220.c<|end_filename|>
int array[2];

static int
func1 (int b)
{
  return b;
}

static int
func2 (int a, int b)
{
  return b == 0 ? a : b;
}

int
func3 (int a)
{
}

int *
func4 (int *arg)
{
  *arg = func1 ((func2 (func3 (array[0]), *arg)) | array[0]);
  return &array[1];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/dll.c<|end_filename|>
/* { dg-require-dll "" } */

__declspec (dllimport) int foo;
extern int (* import) (void) __attribute__((dllimport));
int func2 (void) __attribute__((dllexport));

__declspec(dllexport) int 
func1 (int a)
{
  return a + foo;
}

static int
internal (void)
{
  return 77;
}

int
func2 (void)
{
  return import ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34127.c<|end_filename|>
static void 
whichtable(char **pfmt)
{
  --*pfmt;
}
void prepare_s(const char *fmt)
{
  whichtable((char **)&fmt);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/unalign-1.c<|end_filename|>
typedef struct __attribute__ ((__packed__))
{
    char valueField[2];
} ptp_tlv_t;
typedef struct __attribute__ ((__packed__))
{
    char stepsRemoved;
    ptp_tlv_t tlv[1];
} ptp_message_announce_t;
int ptplib_send_announce(int sequenceId, int i)
{
    ptp_message_announce_t tx_packet;
    ((long long *)tx_packet.tlv[0].valueField)[sequenceId] = i;
    f(&tx_packet);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51694.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
void
foo (x, fn)
  void (*fn) ();
{
  int a = baz ((void *) 0, x);
  (*fn) (x, 0);
}

void
bar (void)
{
  void *x = 0;
  foo (x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/930529-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */

struct r
{
  int d1, d2;
};

struct km
{
  int d;
};

struct f1
{
  char *fn;
  char *fd;
  char *fs;
  char *ic;
  void (*ff) ();
};

int g ();

int y;
struct r *bs;
int bv;

void b ();
char *w ();

struct km **q;
char **mns;
int nm;
struct f1 **z;

f (char *km, char *h)
{
  struct f1 *t;
  int map = midn(km, strlen(km));
  int V;
  int c;
  struct r r;
  struct f1 *cm;

  if (!g(&V, &cm, h, strlen(h)))
    {
      c = (cm - z[V]);
      goto L;
    }

  for (c = 0; c < nm; c++)
    if (!strcmp (h, mns[c]))
      {
	V = -1;
	goto L;
      }

  for (c = 0; c < y; c++)
    {
      if (!memcmp (&bs[c], &r, 8))
	goto L;
    }

  h = w (&r);
  if (!bv)
    {
      bs = g (8);
      t = (struct f1 *)g (20);
    }
  else
    {
      bs = g (bs, y * 8);
      z[bv] = cr (z[bv], (1 + y) * 20);
      t = &z[bv][y - 1];
    }
  bs[y - 1] = r;
  t->fs[0] = sp (y - 1);
  t->fs[1] = 0;
  t->ic = 0;
  t->fd = 0;
  t->fn = cs (h);
  t->ff = b;
 L:
  g (q[map], V, c);
}


<|start_filename|>testdata/arith-1.h<|end_filename|>
#include "arith-1.c"
int i;


<|start_filename|>testdata/issue72.h<|end_filename|>
enum {
  PERF_TXN_ABORT_MASK  = (0xffffffffULL << 32)
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46388.c<|end_filename|>
/* PR middle-end/46388 */

struct S;
struct T
{
  struct S *t;
};
extern struct S s, u;

void
foo (void)
{
  ((struct T *) &u)->t = &s;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40204.c<|end_filename|>
/* { dg-require-effective-target int32plus } */
/* PR middle-end/40204 */

struct S
{
  unsigned int a : 4;
  unsigned int b : 28;
} s;
char c;

void
f (void)
{
  s.a = (c >> 4) & ~(1 << 4);
}


<|start_filename|>v2/testdata/bug/16.c<|end_filename|>
#include <assert.h>
#include <errno.h>

int foo() { return 42; }

int main() {
	int j = foo();
	__errno_location();
	int *p = __errno_location();
	int i = *__errno_location();
	p = &*__errno_location();
	errno = 42;
	assert(*p == 42);
	p = &(*__errno_location());
	errno = 421;
	assert(*p == 421);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48136.c<|end_filename|>
/* PR middle-end/48136 */

int
foo (int x, int y)
{
  return (x ^ 5U) == (y ^ 1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040611-1.c<|end_filename|>
/* This would cause PRE load motion to generate invalid code and ICE */
void foo (char *name)
{
  if (*name)
    name ++;
  while (name[0]);
  asm ("" : "=r" (name));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920831-1.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */

f(x){goto*(char)x;}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34458.c<|end_filename|>
/* Testcase by <NAME> <<EMAIL>> */

typedef struct
{
  int data[1024];
}
Lint;
Lint lint_operate (Lint a, long long ammount)
{
  int index;
  Lint ret;
  for (index = 0; index < 24; index++)
    ret.data[index] =
      a.data[index + ammount / 32 + 1] << a.data[index + ammount / 32];
  return ret;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20041119-1.c<|end_filename|>
/* PR rtl-optimization/17825 */
#ifdef __i386__
register unsigned int reg __asm ("esi");
#elif defined __x86_64__
register unsigned int reg __asm ("r14");
#else
unsigned int reg;
#endif

struct S
{
  unsigned int h[8];
} *b;
unsigned int c;
void foo (int);

void
bar (void)
{
  unsigned int j, k, l, m;

  j = (reg & 0xffff) | ((b->h[2] & 0xffff) << 16);
  k = c & 0xffff;
  if (k == 0)
    foo (0);
  l = (j / k) & 0xffff;
  m = (j % k) & 0xffff;
  reg = (reg & 0xffff0000) | l;
  b->h[2] = (b->h[2] & 0xffff0000) | m;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39834.c<|end_filename|>
/* { dg-options "-Winline" } */
void quit_mined ();
void bottom_line ();
typedef enum { False, True } FLAG;
inline void
nextfile (FLAG exitiflast)
{
  if (exitiflast)     
    quit_mined ();
  else 
    bottom_line ();
  nextfile (True);
}


<|start_filename|>v2/testdata/cpp-expand/example-6.10-8.h<|end_filename|>
#define EMPTY
EMPTY # include <file.h>


<|start_filename|>v2/testdata/cpp-expand/example-6.10.3.5-4.h<|end_filename|>
#define max(a, b) ((a) > (b) ? (a) : (b))
max(x, y);
max((x), y);
max(x, (y));
max((x), (y));
max((x, 1), y);
max((x, (1, 3)), ((y, 4), 2));


<|start_filename|>v2/testdata/cpp-expand/example-6.10.2-8.h<|end_filename|>
#if VERSION == 1
	#define INCFILE "vers1.h"
#elif VERSION == 2
	#define INCFILE "vers2.h" // and so on
#else
	#define INCFILE "versN.h"
#endif
#include INCFILE


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21638.c<|end_filename|>
typedef struct hashhdr {
 int bitmaps[32];
} HASHHDR;

static void
swap_header_copy(HASHHDR *srcp, HASHHDR *destp)
{
  int i;
  for (i = 0; i < 32; i++)
    ((char *)&(destp->bitmaps[i]))[0] = ((char *)&(srcp->bitmaps[i]))[1];
}

int
flush_meta(HASHHDR *whdrp1)
{
 HASHHDR *whdrp;
 HASHHDR whdr;
 whdrp = &whdr;
 swap_header_copy(whdrp1, whdrp);
 return (0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/builtin_unreachable-1.c<|end_filename|>
void bar (const char *);
void foo (void)
{
  bar ("foo");
  __builtin_unreachable ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38554.c<|end_filename|>
typedef unsigned long sample;
struct pam
{
  sample maxval;
};
typedef sample *tuple;
enum function
  {
    FN_MULTIPLY, FN_DIVIDE, FN_ADD, FN_SUBTRACT, FN_MIN, FN_MAX, FN_AND, FN_OR,
    FN_XOR, FN_NOT, FN_SHIFTLEFT, FN_SHIFTRIGHT
  };
struct cmdlineInfo
{
  enum function function;
  union
  {
    float divisor;
    unsigned int shiftCount;
  }
    u;
};
applyFunction (struct cmdlineInfo const cmdline, struct pam const inpam,
               struct pam const outpam, tuple * const inputRow,
               tuple * const outputRow)
{
  float const oneOverDivisor = 1 / cmdline.u.divisor;
  int col;
  {
    int plane;
    {
      sample const inSample = inputRow[col][plane];
      sample outSample;
      switch (cmdline.function)
        {
        case FN_DIVIDE:
          outSample = ((unsigned int) ((inSample * oneOverDivisor) + 0.5));
          break;
        case FN_SHIFTLEFT:
          outSample = (inSample << cmdline.u.shiftCount) & outpam.maxval;
        }
      outputRow[col][plane] =
        ((outpam.maxval) < (outSample) ? (outpam.maxval) : (outSample));
    }
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26840.c<|end_filename|>
extern int f1 (void **);
extern void f2 (void *);

struct s
{
  unsigned char field1;
  int field2;
};

static inline struct s *
get_globals (void)
{
  struct s * r;
  void * rr;

  if (f1 (&rr))
    return 0;
  r = rr;
  if (! r)
    {
      extern struct s t;
      r = &t;
    }
  r->field1 = 1;
  return r;
}

void
atexit_common (const void *dso)
{
  struct s *g = get_globals ();

  if (! g)
    return;
  if (g->field1)
    {
      g->field2 = 0;
      f2 (g);
    }
  else
    f2 (g);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20150327.c<|end_filename|>
int a;
int (*b)(), (*c)();
int fn1(int p1) {
  if (a)
    return 0;
  if (p1) {
    c();
    b();
  }
}
void fn2() { fn1(0); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39941.c<|end_filename|>
typedef void (*entry_func) (void) __attribute__ ((noreturn));
extern entry_func entry_addr;
static void bsd_boot_entry (void)
{
  stop ();
}   
void bsd_boot (void)
{
  entry_addr = (entry_func) bsd_boot_entry;
  (*entry_addr) ();
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26781-2.c<|end_filename|>
void zconfdump(__SIZE_TYPE__ i)
{
  for (;;)
    {
      char __a0;
      __a0 = ("\"\\")[i];
      if (__a0)
        return;
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39202.c<|end_filename|>
typedef struct
{
  union
    {
      int * aaa;
    } u;
} t_a;

typedef struct
{
  unsigned bbb : 1;
} t_b;

typedef struct
{
  int ccc;
  t_a ddd;
  t_b eee;
  int fff;
} t_c;

typedef struct t_d
{
  t_c f1;
  t_c f2;
} t_d;

void foo (void)
{
  t_d ggg;
  ggg.f1 = ggg.f2;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56984.c<|end_filename|>
/* PR tree-optimization/56984 */

int
foo (int x)
{
  if ((x >> 31) < -1)
    x++;
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43635.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
extern void d (void);

void (*foo (void)) (float)
{
  void (*(*x) (void)) (float) = d;
  return (*x) ();
}


<|start_filename|>v2/testdata/_sqlite/src/vdbemem.c<|end_filename|>
/*
** 2004 May 26
**
** The author disclaims copyright to this source code.  In place of
** a legal notice, here is a blessing:
**
**    May you do good and not evil.
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.
**
*************************************************************************
**
** This file contains code use to manipulate "Mem" structure.  A "Mem"
** stores a single value in the VDBE.  Mem is an opaque structure visible
** only within the VDBE.  Interface routines refer to a Mem using the
** name sqlite_value
*/
#include "sqliteInt.h"
#include "vdbeInt.h"

#ifdef SQLITE_DEBUG
/*
** Check invariants on a Mem object.
**
** This routine is intended for use inside of assert() statements, like
** this:    assert( sqlite3VdbeCheckMemInvariants(pMem) );
*/
int sqlite3VdbeCheckMemInvariants(Mem *p){
  /* If MEM_Dyn is set then Mem.xDel!=0.  
  ** Mem.xDel might not be initialized if MEM_Dyn is clear.
  */
  assert( (p->flags & MEM_Dyn)==0 || p->xDel!=0 );

  /* MEM_Dyn may only be set if Mem.szMalloc==0.  In this way we
  ** ensure that if Mem.szMalloc>0 then it is safe to do
  ** Mem.z = Mem.zMalloc without having to check Mem.flags&MEM_Dyn.
  ** That saves a few cycles in inner loops. */
  assert( (p->flags & MEM_Dyn)==0 || p->szMalloc==0 );

  /* Cannot be both MEM_Int and MEM_Real at the same time */
  assert( (p->flags & (MEM_Int|MEM_Real))!=(MEM_Int|MEM_Real) );

  if( p->flags & MEM_Null ){
    /* Cannot be both MEM_Null and some other type */
    assert( (p->flags & (MEM_Int|MEM_Real|MEM_Str|MEM_Blob
                         |MEM_RowSet|MEM_Frame|MEM_Agg|MEM_Zero))==0 );

    /* If MEM_Null is set, then either the value is a pure NULL (the usual
    ** case) or it is a pointer set using sqlite3_bind_pointer() or
    ** sqlite3_result_pointer().  If a pointer, then MEM_Term must also be
    ** set.
    */
    if( (p->flags & (MEM_Term|MEM_Subtype))==(MEM_Term|MEM_Subtype) ){
      /* This is a pointer type.  There may be a flag to indicate what to
      ** do with the pointer. */
      assert( ((p->flags&MEM_Dyn)!=0 ? 1 : 0) +
              ((p->flags&MEM_Ephem)!=0 ? 1 : 0) +
              ((p->flags&MEM_Static)!=0 ? 1 : 0) <= 1 );

      /* No other bits set */
      assert( (p->flags & ~(MEM_Null|MEM_Term|MEM_Subtype
                           |MEM_Dyn|MEM_Ephem|MEM_Static))==0 );
    }else{
      /* A pure NULL might have other flags, such as MEM_Static, MEM_Dyn,
      ** MEM_Ephem, MEM_Cleared, or MEM_Subtype */
    }
  }else{
    /* The MEM_Cleared bit is only allowed on NULLs */
    assert( (p->flags & MEM_Cleared)==0 );
  }

  /* The szMalloc field holds the correct memory allocation size */
  assert( p->szMalloc==0
       || p->szMalloc==sqlite3DbMallocSize(p->db,p->zMalloc) );

  /* If p holds a string or blob, the Mem.z must point to exactly
  ** one of the following:
  **
  **   (1) Memory in Mem.zMalloc and managed by the Mem object
  **   (2) Memory to be freed using Mem.xDel
  **   (3) An ephemeral string or blob
  **   (4) A static string or blob
  */
  if( (p->flags & (MEM_Str|MEM_Blob)) && p->n>0 ){
    assert( 
      ((p->szMalloc>0 && p->z==p->zMalloc)? 1 : 0) +
      ((p->flags&MEM_Dyn)!=0 ? 1 : 0) +
      ((p->flags&MEM_Ephem)!=0 ? 1 : 0) +
      ((p->flags&MEM_Static)!=0 ? 1 : 0) == 1
    );
  }
  return 1;
}
#endif


/*
** If pMem is an object with a valid string representation, this routine
** ensures the internal encoding for the string representation is
** 'desiredEnc', one of SQLITE_UTF8, SQLITE_UTF16LE or SQLITE_UTF16BE.
**
** If pMem is not a string object, or the encoding of the string
** representation is already stored using the requested encoding, then this
** routine is a no-op.
**
** SQLITE_OK is returned if the conversion is successful (or not required).
** SQLITE_NOMEM may be returned if a malloc() fails during conversion
** between formats.
*/
int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){
#ifndef SQLITE_OMIT_UTF16
  int rc;
#endif
  assert( (pMem->flags&MEM_RowSet)==0 );
  assert( desiredEnc==SQLITE_UTF8 || desiredEnc==SQLITE_UTF16LE
           || desiredEnc==SQLITE_UTF16BE );
  if( !(pMem->flags&MEM_Str) || pMem->enc==desiredEnc ){
    return SQLITE_OK;
  }
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
#ifdef SQLITE_OMIT_UTF16
  return SQLITE_ERROR;
#else

  /* MemTranslate() may return SQLITE_OK or SQLITE_NOMEM. If NOMEM is returned,
  ** then the encoding of the value may not have changed.
  */
  rc = sqlite3VdbeMemTranslate(pMem, (u8)desiredEnc);
  assert(rc==SQLITE_OK    || rc==SQLITE_NOMEM);
  assert(rc==SQLITE_OK    || pMem->enc!=desiredEnc);
  assert(rc==SQLITE_NOMEM || pMem->enc==desiredEnc);
  return rc;
#endif
}

/*
** Make sure pMem->z points to a writable allocation of at least 
** min(n,32) bytes.
**
** If the bPreserve argument is true, then copy of the content of
** pMem->z into the new allocation.  pMem must be either a string or
** blob if bPreserve is true.  If bPreserve is false, any prior content
** in pMem->z is discarded.
*/
SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
  assert( sqlite3VdbeCheckMemInvariants(pMem) );
  assert( (pMem->flags&MEM_RowSet)==0 );
  testcase( pMem->db==0 );

  /* If the bPreserve flag is set to true, then the memory cell must already
  ** contain a valid string or blob value.  */
  assert( bPreserve==0 || pMem->flags&(MEM_Blob|MEM_Str) );
  testcase( bPreserve && pMem->z==0 );

  assert( pMem->szMalloc==0
       || pMem->szMalloc==sqlite3DbMallocSize(pMem->db, pMem->zMalloc) );
  if( n<32 ) n = 32;
  if( pMem->szMalloc>0 && bPreserve && pMem->z==pMem->zMalloc ){
    pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n);
    bPreserve = 0;
  }else{
    if( pMem->szMalloc>0 ) sqlite3DbFreeNN(pMem->db, pMem->zMalloc);
    pMem->zMalloc = sqlite3DbMallocRaw(pMem->db, n);
  }
  if( pMem->zMalloc==0 ){
    sqlite3VdbeMemSetNull(pMem);
    pMem->z = 0;
    pMem->szMalloc = 0;
    return SQLITE_NOMEM_BKPT;
  }else{
    pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
  }

  if( bPreserve && pMem->z ){
    assert( pMem->z!=pMem->zMalloc );
    memcpy(pMem->zMalloc, pMem->z, pMem->n);
  }
  if( (pMem->flags&MEM_Dyn)!=0 ){
    assert( pMem->xDel!=0 && pMem->xDel!=SQLITE_DYNAMIC );
    pMem->xDel((void *)(pMem->z));
  }

  pMem->z = pMem->zMalloc;
  pMem->flags &= ~(MEM_Dyn|MEM_Ephem|MEM_Static);
  return SQLITE_OK;
}

/*
** Change the pMem->zMalloc allocation to be at least szNew bytes.
** If pMem->zMalloc already meets or exceeds the requested size, this
** routine is a no-op.
**
** Any prior string or blob content in the pMem object may be discarded.
** The pMem->xDel destructor is called, if it exists.  Though MEM_Str
** and MEM_Blob values may be discarded, MEM_Int, MEM_Real, and MEM_Null
** values are preserved.
**
** Return SQLITE_OK on success or an error code (probably SQLITE_NOMEM)
** if unable to complete the resizing.
*/
int sqlite3VdbeMemClearAndResize(Mem *pMem, int szNew){
  assert( szNew>0 );
  assert( (pMem->flags & MEM_Dyn)==0 || pMem->szMalloc==0 );
  if( pMem->szMalloc<szNew ){
    return sqlite3VdbeMemGrow(pMem, szNew, 0);
  }
  assert( (pMem->flags & MEM_Dyn)==0 );
  pMem->z = pMem->zMalloc;
  pMem->flags &= (MEM_Null|MEM_Int|MEM_Real);
  return SQLITE_OK;
}

/*
** It is already known that pMem contains an unterminated string.
** Add the zero terminator.
*/
static SQLITE_NOINLINE int vdbeMemAddTerminator(Mem *pMem){
  if( sqlite3VdbeMemGrow(pMem, pMem->n+2, 1) ){
    return SQLITE_NOMEM_BKPT;
  }
  pMem->z[pMem->n] = 0;
  pMem->z[pMem->n+1] = 0;
  pMem->flags |= MEM_Term;
  return SQLITE_OK;
}

/*
** Change pMem so that its MEM_Str or MEM_Blob value is stored in
** MEM.zMalloc, where it can be safely written.
**
** Return SQLITE_OK on success or SQLITE_NOMEM if malloc fails.
*/
int sqlite3VdbeMemMakeWriteable(Mem *pMem){
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( (pMem->flags&MEM_RowSet)==0 );
  if( (pMem->flags & (MEM_Str|MEM_Blob))!=0 ){
    if( ExpandBlob(pMem) ) return SQLITE_NOMEM;
    if( pMem->szMalloc==0 || pMem->z!=pMem->zMalloc ){
      int rc = vdbeMemAddTerminator(pMem);
      if( rc ) return rc;
    }
  }
  pMem->flags &= ~MEM_Ephem;
#ifdef SQLITE_DEBUG
  pMem->pScopyFrom = 0;
#endif

  return SQLITE_OK;
}

/*
** If the given Mem* has a zero-filled tail, turn it into an ordinary
** blob stored in dynamically allocated space.
*/
#ifndef SQLITE_OMIT_INCRBLOB
int sqlite3VdbeMemExpandBlob(Mem *pMem){
  int nByte;
  assert( pMem->flags & MEM_Zero );
  assert( pMem->flags&MEM_Blob );
  assert( (pMem->flags&MEM_RowSet)==0 );
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );

  /* Set nByte to the number of bytes required to store the expanded blob. */
  nByte = pMem->n + pMem->u.nZero;
  if( nByte<=0 ){
    nByte = 1;
  }
  if( sqlite3VdbeMemGrow(pMem, nByte, 1) ){
    return SQLITE_NOMEM_BKPT;
  }

  memset(&pMem->z[pMem->n], 0, pMem->u.nZero);
  pMem->n += pMem->u.nZero;
  pMem->flags &= ~(MEM_Zero|MEM_Term);
  return SQLITE_OK;
}
#endif

/*
** Make sure the given Mem is \u0000 terminated.
*/
int sqlite3VdbeMemNulTerminate(Mem *pMem){
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  testcase( (pMem->flags & (MEM_Term|MEM_Str))==(MEM_Term|MEM_Str) );
  testcase( (pMem->flags & (MEM_Term|MEM_Str))==0 );
  if( (pMem->flags & (MEM_Term|MEM_Str))!=MEM_Str ){
    return SQLITE_OK;   /* Nothing to do */
  }else{
    return vdbeMemAddTerminator(pMem);
  }
}

/*
** Add MEM_Str to the set of representations for the given Mem.  Numbers
** are converted using sqlite3_snprintf().  Converting a BLOB to a string
** is a no-op.
**
** Existing representations MEM_Int and MEM_Real are invalidated if
** bForce is true but are retained if bForce is false.
**
** A MEM_Null value will never be passed to this function. This function is
** used for converting values to text for returning to the user (i.e. via
** sqlite3_value_text()), or for ensuring that values to be used as btree
** keys are strings. In the former case a NULL pointer is returned the
** user and the latter is an internal programming error.
*/
int sqlite3VdbeMemStringify(Mem *pMem, u8 enc, u8 bForce){
  int fg = pMem->flags;
  const int nByte = 32;

  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( !(fg&MEM_Zero) );
  assert( !(fg&(MEM_Str|MEM_Blob)) );
  assert( fg&(MEM_Int|MEM_Real) );
  assert( (pMem->flags&MEM_RowSet)==0 );
  assert( EIGHT_BYTE_ALIGNMENT(pMem) );


  if( sqlite3VdbeMemClearAndResize(pMem, nByte) ){
    pMem->enc = 0;
    return SQLITE_NOMEM_BKPT;
  }

  /* For a Real or Integer, use sqlite3_snprintf() to produce the UTF-8
  ** string representation of the value. Then, if the required encoding
  ** is UTF-16le or UTF-16be do a translation.
  ** 
  ** FIX ME: It would be better if sqlite3_snprintf() could do UTF-16.
  */
  if( fg & MEM_Int ){
    sqlite3_snprintf(nByte, pMem->z, "%lld", pMem->u.i);
  }else{
    assert( fg & MEM_Real );
    sqlite3_snprintf(nByte, pMem->z, "%!.15g", pMem->u.r);
  }
  pMem->n = sqlite3Strlen30(pMem->z);
  pMem->enc = SQLITE_UTF8;
  pMem->flags |= MEM_Str|MEM_Term;
  if( bForce ) pMem->flags &= ~(MEM_Int|MEM_Real);
  sqlite3VdbeChangeEncoding(pMem, enc);
  return SQLITE_OK;
}

/*
** Memory cell pMem contains the context of an aggregate function.
** This routine calls the finalize method for that function.  The
** result of the aggregate is stored back into pMem.
**
** Return SQLITE_ERROR if the finalizer reports an error.  SQLITE_OK
** otherwise.
*/
int sqlite3VdbeMemFinalize(Mem *pMem, FuncDef *pFunc){
  int rc = SQLITE_OK;
  if( ALWAYS(pFunc && pFunc->xFinalize) ){
    sqlite3_context ctx;
    Mem t;
    assert( (pMem->flags & MEM_Null)!=0 || pFunc==pMem->u.pDef );
    assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
    memset(&ctx, 0, sizeof(ctx));
    memset(&t, 0, sizeof(t));
    t.flags = MEM_Null;
    t.db = pMem->db;
    ctx.pOut = &t;
    ctx.pMem = pMem;
    ctx.pFunc = pFunc;
    pFunc->xFinalize(&ctx); /* IMP: R-24505-23230 */
    assert( (pMem->flags & MEM_Dyn)==0 );
    if( pMem->szMalloc>0 ) sqlite3DbFreeNN(pMem->db, pMem->zMalloc);
    memcpy(pMem, &t, sizeof(t));
    rc = ctx.isError;
  }
  return rc;
}

/*
** If the memory cell contains a value that must be freed by
** invoking the external callback in Mem.xDel, then this routine
** will free that value.  It also sets Mem.flags to MEM_Null.
**
** This is a helper routine for sqlite3VdbeMemSetNull() and
** for sqlite3VdbeMemRelease().  Use those other routines as the
** entry point for releasing Mem resources.
*/
static SQLITE_NOINLINE void vdbeMemClearExternAndSetNull(Mem *p){
  assert( p->db==0 || sqlite3_mutex_held(p->db->mutex) );
  assert( VdbeMemDynamic(p) );
  if( p->flags&MEM_Agg ){
    sqlite3VdbeMemFinalize(p, p->u.pDef);
    assert( (p->flags & MEM_Agg)==0 );
    testcase( p->flags & MEM_Dyn );
  }
  if( p->flags&MEM_Dyn ){
    assert( (p->flags&MEM_RowSet)==0 );
    assert( p->xDel!=SQLITE_DYNAMIC && p->xDel!=0 );
    p->xDel((void *)p->z);
  }else if( p->flags&MEM_RowSet ){
    sqlite3RowSetClear(p->u.pRowSet);
  }else if( p->flags&MEM_Frame ){
    VdbeFrame *pFrame = p->u.pFrame;
    pFrame->pParent = pFrame->v->pDelFrame;
    pFrame->v->pDelFrame = pFrame;
  }
  p->flags = MEM_Null;
}

/*
** Release memory held by the Mem p, both external memory cleared
** by p->xDel and memory in p->zMalloc.
**
** This is a helper routine invoked by sqlite3VdbeMemRelease() in
** the unusual case where there really is memory in p that needs
** to be freed.
*/
static SQLITE_NOINLINE void vdbeMemClear(Mem *p){
  if( VdbeMemDynamic(p) ){
    vdbeMemClearExternAndSetNull(p);
  }
  if( p->szMalloc ){
    sqlite3DbFreeNN(p->db, p->zMalloc);
    p->szMalloc = 0;
  }
  p->z = 0;
}

/*
** Release any memory resources held by the Mem.  Both the memory that is
** free by Mem.xDel and the Mem.zMalloc allocation are freed.
**
** Use this routine prior to clean up prior to abandoning a Mem, or to
** reset a Mem back to its minimum memory utilization.
**
** Use sqlite3VdbeMemSetNull() to release just the Mem.xDel space
** prior to inserting new content into the Mem.
*/
void sqlite3VdbeMemRelease(Mem *p){
  assert( sqlite3VdbeCheckMemInvariants(p) );
  if( VdbeMemDynamic(p) || p->szMalloc ){
    vdbeMemClear(p);
  }
}

/*
** Convert a 64-bit IEEE double into a 64-bit signed integer.
** If the double is out of range of a 64-bit signed integer then
** return the closest available 64-bit signed integer.
*/
static SQLITE_NOINLINE i64 doubleToInt64(double r){
#ifdef SQLITE_OMIT_FLOATING_POINT
  /* When floating-point is omitted, double and int64 are the same thing */
  return r;
#else
  /*
  ** Many compilers we encounter do not define constants for the
  ** minimum and maximum 64-bit integers, or they define them
  ** inconsistently.  And many do not understand the "LL" notation.
  ** So we define our own static constants here using nothing
  ** larger than a 32-bit integer constant.
  */
  static const i64 maxInt = LARGEST_INT64;
  static const i64 minInt = SMALLEST_INT64;

  if( r<=(double)minInt ){
    return minInt;
  }else if( r>=(double)maxInt ){
    return maxInt;
  }else{
    return (i64)r;
  }
#endif
}

/*
** Return some kind of integer value which is the best we can do
** at representing the value that *pMem describes as an integer.
** If pMem is an integer, then the value is exact.  If pMem is
** a floating-point then the value returned is the integer part.
** If pMem is a string or blob, then we make an attempt to convert
** it into an integer and return that.  If pMem represents an
** an SQL-NULL value, return 0.
**
** If pMem represents a string value, its encoding might be changed.
*/
static SQLITE_NOINLINE i64 memIntValue(Mem *pMem){
  i64 value = 0;
  sqlite3Atoi64(pMem->z, &value, pMem->n, pMem->enc);
  return value;
}
i64 sqlite3VdbeIntValue(Mem *pMem){
  int flags;
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
  flags = pMem->flags;
  if( flags & MEM_Int ){
    return pMem->u.i;
  }else if( flags & MEM_Real ){
    return doubleToInt64(pMem->u.r);
  }else if( flags & (MEM_Str|MEM_Blob) ){
    assert( pMem->z || pMem->n==0 );
    return memIntValue(pMem);
  }else{
    return 0;
  }
}

/*
** Return the best representation of pMem that we can get into a
** double.  If pMem is already a double or an integer, return its
** value.  If it is a string or blob, try to convert it to a double.
** If it is a NULL, return 0.0.
*/
static SQLITE_NOINLINE double memRealValue(Mem *pMem){
  /* (double)0 In case of SQLITE_OMIT_FLOATING_POINT... */
  double val = (double)0;
  sqlite3AtoF(pMem->z, &val, pMem->n, pMem->enc);
  return val;
}
double sqlite3VdbeRealValue(Mem *pMem){
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( EIGHT_BYTE_ALIGNMENT(pMem) );
  if( pMem->flags & MEM_Real ){
    return pMem->u.r;
  }else if( pMem->flags & MEM_Int ){
    return (double)pMem->u.i;
  }else if( pMem->flags & (MEM_Str|MEM_Blob) ){
    return memRealValue(pMem);
  }else{
    /* (double)0 In case of SQLITE_OMIT_FLOATING_POINT... */
    return (double)0;
  }
}

/*
** The MEM structure is already a MEM_Real.  Try to also make it a
** MEM_Int if we can.
*/
void sqlite3VdbeIntegerAffinity(Mem *pMem){
  i64 ix;
  assert( pMem->flags & MEM_Real );
  assert( (pMem->flags & MEM_RowSet)==0 );
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( EIGHT_BYTE_ALIGNMENT(pMem) );

  ix = doubleToInt64(pMem->u.r);

  /* Only mark the value as an integer if
  **
  **    (1) the round-trip conversion real->int->real is a no-op, and
  **    (2) The integer is neither the largest nor the smallest
  **        possible integer (ticket #3922)
  **
  ** The second and third terms in the following conditional enforces
  ** the second condition under the assumption that addition overflow causes
  ** values to wrap around.
  */
  if( pMem->u.r==ix && ix>SMALLEST_INT64 && ix<LARGEST_INT64 ){
    pMem->u.i = ix;
    MemSetTypeFlag(pMem, MEM_Int);
  }
}

/*
** Convert pMem to type integer.  Invalidate any prior representations.
*/
int sqlite3VdbeMemIntegerify(Mem *pMem){
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( (pMem->flags & MEM_RowSet)==0 );
  assert( EIGHT_BYTE_ALIGNMENT(pMem) );

  pMem->u.i = sqlite3VdbeIntValue(pMem);
  MemSetTypeFlag(pMem, MEM_Int);
  return SQLITE_OK;
}

/*
** Convert pMem so that it is of type MEM_Real.
** Invalidate any prior representations.
*/
int sqlite3VdbeMemRealify(Mem *pMem){
  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( EIGHT_BYTE_ALIGNMENT(pMem) );

  pMem->u.r = sqlite3VdbeRealValue(pMem);
  MemSetTypeFlag(pMem, MEM_Real);
  return SQLITE_OK;
}

/*
** Convert pMem so that it has types MEM_Real or MEM_Int or both.
** Invalidate any prior representations.
**
** Every effort is made to force the conversion, even if the input
** is a string that does not look completely like a number.  Convert
** as much of the string as we can and ignore the rest.
*/
int sqlite3VdbeMemNumerify(Mem *pMem){
  if( (pMem->flags & (MEM_Int|MEM_Real|MEM_Null))==0 ){
    int rc;
    assert( (pMem->flags & (MEM_Blob|MEM_Str))!=0 );
    assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
    rc = sqlite3Atoi64(pMem->z, &pMem->u.i, pMem->n, pMem->enc);
    if( rc==0 ){
      MemSetTypeFlag(pMem, MEM_Int);
    }else{
      i64 i = pMem->u.i;
      sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc);
      if( rc==1 && pMem->u.r==(double)i ){
        pMem->u.i = i;
        MemSetTypeFlag(pMem, MEM_Int);
      }else{
        MemSetTypeFlag(pMem, MEM_Real);
      }
    }
  }
  assert( (pMem->flags & (MEM_Int|MEM_Real|MEM_Null))!=0 );
  pMem->flags &= ~(MEM_Str|MEM_Blob|MEM_Zero);
  return SQLITE_OK;
}

/*
** Cast the datatype of the value in pMem according to the affinity
** "aff".  Casting is different from applying affinity in that a cast
** is forced.  In other words, the value is converted into the desired
** affinity even if that results in loss of data.  This routine is
** used (for example) to implement the SQL "cast()" operator.
*/
void sqlite3VdbeMemCast(Mem *pMem, u8 aff, u8 encoding){
  if( pMem->flags & MEM_Null ) return;
  switch( aff ){
    case SQLITE_AFF_BLOB: {   /* Really a cast to BLOB */
      if( (pMem->flags & MEM_Blob)==0 ){
        sqlite3ValueApplyAffinity(pMem, SQLITE_AFF_TEXT, encoding);
        assert( pMem->flags & MEM_Str || pMem->db->mallocFailed );
        if( pMem->flags & MEM_Str ) MemSetTypeFlag(pMem, MEM_Blob);
      }else{
        pMem->flags &= ~(MEM_TypeMask&~MEM_Blob);
      }
      break;
    }
    case SQLITE_AFF_NUMERIC: {
      sqlite3VdbeMemNumerify(pMem);
      break;
    }
    case SQLITE_AFF_INTEGER: {
      sqlite3VdbeMemIntegerify(pMem);
      break;
    }
    case SQLITE_AFF_REAL: {
      sqlite3VdbeMemRealify(pMem);
      break;
    }
    default: {
      assert( aff==SQLITE_AFF_TEXT );
      assert( MEM_Str==(MEM_Blob>>3) );
      pMem->flags |= (pMem->flags&MEM_Blob)>>3;
      sqlite3ValueApplyAffinity(pMem, SQLITE_AFF_TEXT, encoding);
      assert( pMem->flags & MEM_Str || pMem->db->mallocFailed );
      pMem->flags &= ~(MEM_Int|MEM_Real|MEM_Blob|MEM_Zero);
      break;
    }
  }
}

/*
** Initialize bulk memory to be a consistent Mem object.
**
** The minimum amount of initialization feasible is performed.
*/
void sqlite3VdbeMemInit(Mem *pMem, sqlite3 *db, u16 flags){
  assert( (flags & ~MEM_TypeMask)==0 );
  pMem->flags = flags;
  pMem->db = db;
  pMem->szMalloc = 0;
}


/*
** Delete any previous value and set the value stored in *pMem to NULL.
**
** This routine calls the Mem.xDel destructor to dispose of values that
** require the destructor.  But it preserves the Mem.zMalloc memory allocation.
** To free all resources, use sqlite3VdbeMemRelease(), which both calls this
** routine to invoke the destructor and deallocates Mem.zMalloc.
**
** Use this routine to reset the Mem prior to insert a new value.
**
** Use sqlite3VdbeMemRelease() to complete erase the Mem prior to abandoning it.
*/
void sqlite3VdbeMemSetNull(Mem *pMem){
  if( VdbeMemDynamic(pMem) ){
    vdbeMemClearExternAndSetNull(pMem);
  }else{
    pMem->flags = MEM_Null;
  }
}
void sqlite3ValueSetNull(sqlite3_value *p){
  sqlite3VdbeMemSetNull((Mem*)p); 
}

/*
** Delete any previous value and set the value to be a BLOB of length
** n containing all zeros.
*/
void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
  sqlite3VdbeMemRelease(pMem);
  pMem->flags = MEM_Blob|MEM_Zero;
  pMem->n = 0;
  if( n<0 ) n = 0;
  pMem->u.nZero = n;
  pMem->enc = SQLITE_UTF8;
  pMem->z = 0;
}

/*
** The pMem is known to contain content that needs to be destroyed prior
** to a value change.  So invoke the destructor, then set the value to
** a 64-bit integer.
*/
static SQLITE_NOINLINE void vdbeReleaseAndSetInt64(Mem *pMem, i64 val){
  sqlite3VdbeMemSetNull(pMem);
  pMem->u.i = val;
  pMem->flags = MEM_Int;
}

/*
** Delete any previous value and set the value stored in *pMem to val,
** manifest type INTEGER.
*/
void sqlite3VdbeMemSetInt64(Mem *pMem, i64 val){
  if( VdbeMemDynamic(pMem) ){
    vdbeReleaseAndSetInt64(pMem, val);
  }else{
    pMem->u.i = val;
    pMem->flags = MEM_Int;
  }
}

/* A no-op destructor */
static void sqlite3NoopDestructor(void *p){ UNUSED_PARAMETER(p); }

/*
** Set the value stored in *pMem should already be a NULL.
** Also store a pointer to go with it.
*/
void sqlite3VdbeMemSetPointer(
  Mem *pMem,
  void *pPtr,
  const char *zPType,
  void (*xDestructor)(void*)
){
  assert( pMem->flags==MEM_Null );
  pMem->u.zPType = zPType ? zPType : "";
  pMem->z = pPtr;
  pMem->flags = MEM_Null|MEM_Dyn|MEM_Subtype|MEM_Term;
  pMem->eSubtype = 'p';
  pMem->xDel = xDestructor ? xDestructor : sqlite3NoopDestructor;
}

#ifndef SQLITE_OMIT_FLOATING_POINT
/*
** Delete any previous value and set the value stored in *pMem to val,
** manifest type REAL.
*/
void sqlite3VdbeMemSetDouble(Mem *pMem, double val){
  sqlite3VdbeMemSetNull(pMem);
  if( !sqlite3IsNaN(val) ){
    pMem->u.r = val;
    pMem->flags = MEM_Real;
  }
}
#endif

/*
** Delete any previous value and set the value of pMem to be an
** empty boolean index.
*/
void sqlite3VdbeMemSetRowSet(Mem *pMem){
  sqlite3 *db = pMem->db;
  assert( db!=0 );
  assert( (pMem->flags & MEM_RowSet)==0 );
  sqlite3VdbeMemRelease(pMem);
  pMem->zMalloc = sqlite3DbMallocRawNN(db, 64);
  if( db->mallocFailed ){
    pMem->flags = MEM_Null;
    pMem->szMalloc = 0;
  }else{
    assert( pMem->zMalloc );
    pMem->szMalloc = sqlite3DbMallocSize(db, pMem->zMalloc);
    pMem->u.pRowSet = sqlite3RowSetInit(db, pMem->zMalloc, pMem->szMalloc);
    assert( pMem->u.pRowSet!=0 );
    pMem->flags = MEM_RowSet;
  }
}

/*
** Return true if the Mem object contains a TEXT or BLOB that is
** too large - whose size exceeds SQLITE_MAX_LENGTH.
*/
int sqlite3VdbeMemTooBig(Mem *p){
  assert( p->db!=0 );
  if( p->flags & (MEM_Str|MEM_Blob) ){
    int n = p->n;
    if( p->flags & MEM_Zero ){
      n += p->u.nZero;
    }
    return n>p->db->aLimit[SQLITE_LIMIT_LENGTH];
  }
  return 0; 
}

#ifdef SQLITE_DEBUG
/*
** This routine prepares a memory cell for modification by breaking
** its link to a shallow copy and by marking any current shallow
** copies of this cell as invalid.
**
** This is used for testing and debugging only - to make sure shallow
** copies are not misused.
*/
void sqlite3VdbeMemAboutToChange(Vdbe *pVdbe, Mem *pMem){
  int i;
  Mem *pX;
  for(i=0, pX=pVdbe->aMem; i<pVdbe->nMem; i++, pX++){
    if( pX->pScopyFrom==pMem ){
      pX->flags |= MEM_Undefined;
      pX->pScopyFrom = 0;
    }
  }
  pMem->pScopyFrom = 0;
}
#endif /* SQLITE_DEBUG */


/*
** Make an shallow copy of pFrom into pTo.  Prior contents of
** pTo are freed.  The pFrom->z field is not duplicated.  If
** pFrom->z is used, then pTo->z points to the same thing as pFrom->z
** and flags gets srcType (either MEM_Ephem or MEM_Static).
*/
static SQLITE_NOINLINE void vdbeClrCopy(Mem *pTo, const Mem *pFrom, int eType){
  vdbeMemClearExternAndSetNull(pTo);
  assert( !VdbeMemDynamic(pTo) );
  sqlite3VdbeMemShallowCopy(pTo, pFrom, eType);
}
void sqlite3VdbeMemShallowCopy(Mem *pTo, const Mem *pFrom, int srcType){
  assert( (pFrom->flags & MEM_RowSet)==0 );
  assert( pTo->db==pFrom->db );
  if( VdbeMemDynamic(pTo) ){ vdbeClrCopy(pTo,pFrom,srcType); return; }
  memcpy(pTo, pFrom, MEMCELLSIZE);
  if( (pFrom->flags&MEM_Static)==0 ){
    pTo->flags &= ~(MEM_Dyn|MEM_Static|MEM_Ephem);
    assert( srcType==MEM_Ephem || srcType==MEM_Static );
    pTo->flags |= srcType;
  }
}

/*
** Make a full copy of pFrom into pTo.  Prior contents of pTo are
** freed before the copy is made.
*/
int sqlite3VdbeMemCopy(Mem *pTo, const Mem *pFrom){
  int rc = SQLITE_OK;

  assert( (pFrom->flags & MEM_RowSet)==0 );
  if( VdbeMemDynamic(pTo) ) vdbeMemClearExternAndSetNull(pTo);
  memcpy(pTo, pFrom, MEMCELLSIZE);
  pTo->flags &= ~MEM_Dyn;
  if( pTo->flags&(MEM_Str|MEM_Blob) ){
    if( 0==(pFrom->flags&MEM_Static) ){
      pTo->flags |= MEM_Ephem;
      rc = sqlite3VdbeMemMakeWriteable(pTo);
    }
  }

  return rc;
}

/*
** Transfer the contents of pFrom to pTo. Any existing value in pTo is
** freed. If pFrom contains ephemeral data, a copy is made.
**
** pFrom contains an SQL NULL when this routine returns.
*/
void sqlite3VdbeMemMove(Mem *pTo, Mem *pFrom){
  assert( pFrom->db==0 || sqlite3_mutex_held(pFrom->db->mutex) );
  assert( pTo->db==0 || sqlite3_mutex_held(pTo->db->mutex) );
  assert( pFrom->db==0 || pTo->db==0 || pFrom->db==pTo->db );

  sqlite3VdbeMemRelease(pTo);
  memcpy(pTo, pFrom, sizeof(Mem));
  pFrom->flags = MEM_Null;
  pFrom->szMalloc = 0;
}

/*
** Change the value of a Mem to be a string or a BLOB.
**
** The memory management strategy depends on the value of the xDel
** parameter. If the value passed is SQLITE_TRANSIENT, then the 
** string is copied into a (possibly existing) buffer managed by the 
** Mem structure. Otherwise, any existing buffer is freed and the
** pointer copied.
**
** If the string is too large (if it exceeds the SQLITE_LIMIT_LENGTH
** size limit) then no memory allocation occurs.  If the string can be
** stored without allocating memory, then it is.  If a memory allocation
** is required to store the string, then value of pMem is unchanged.  In
** either case, SQLITE_TOOBIG is returned.
*/
int sqlite3VdbeMemSetStr(
  Mem *pMem,          /* Memory cell to set to string value */
  const char *z,      /* String pointer */
  int n,              /* Bytes in string, or negative */
  u8 enc,             /* Encoding of z.  0 for BLOBs */
  void (*xDel)(void*) /* Destructor function */
){
  int nByte = n;      /* New value for pMem->n */
  int iLimit;         /* Maximum allowed string or blob size */
  u16 flags = 0;      /* New value for pMem->flags */

  assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
  assert( (pMem->flags & MEM_RowSet)==0 );

  /* If z is a NULL pointer, set pMem to contain an SQL NULL. */
  if( !z ){
    sqlite3VdbeMemSetNull(pMem);
    return SQLITE_OK;
  }

  if( pMem->db ){
    iLimit = pMem->db->aLimit[SQLITE_LIMIT_LENGTH];
  }else{
    iLimit = SQLITE_MAX_LENGTH;
  }
  flags = (enc==0?MEM_Blob:MEM_Str);
  if( nByte<0 ){
    assert( enc!=0 );
    if( enc==SQLITE_UTF8 ){
      nByte = 0x7fffffff & (int)strlen(z);
      if( nByte>iLimit ) nByte = iLimit+1;
    }else{
      for(nByte=0; nByte<=iLimit && (z[nByte] | z[nByte+1]); nByte+=2){}
    }
    flags |= MEM_Term;
  }

  /* The following block sets the new values of Mem.z and Mem.xDel. It
  ** also sets a flag in local variable "flags" to indicate the memory
  ** management (one of MEM_Dyn or MEM_Static).
  */
  if( xDel==SQLITE_TRANSIENT ){
    int nAlloc = nByte;
    if( flags&MEM_Term ){
      nAlloc += (enc==SQLITE_UTF8?1:2);
    }
    if( nByte>iLimit ){
      return SQLITE_TOOBIG;
    }
    testcase( nAlloc==0 );
    testcase( nAlloc==31 );
    testcase( nAlloc==32 );
    if( sqlite3VdbeMemClearAndResize(pMem, MAX(nAlloc,32)) ){
      return SQLITE_NOMEM_BKPT;
    }
    memcpy(pMem->z, z, nAlloc);
  }else if( xDel==SQLITE_DYNAMIC ){
    sqlite3VdbeMemRelease(pMem);
    pMem->zMalloc = pMem->z = (char *)z;
    pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
  }else{
    sqlite3VdbeMemRelease(pMem);
    pMem->z = (char *)z;
    pMem->xDel = xDel;
    flags |= ((xDel==SQLITE_STATIC)?MEM_Static:MEM_Dyn);
  }

  pMem->n = nByte;
  pMem->flags = flags;
  pMem->enc = (enc==0 ? SQLITE_UTF8 : enc);

#ifndef SQLITE_OMIT_UTF16
  if( pMem->enc!=SQLITE_UTF8 && sqlite3VdbeMemHandleBom(pMem) ){
    return SQLITE_NOMEM_BKPT;
  }
#endif

  if( nByte>iLimit ){
    return SQLITE_TOOBIG;
  }

  return SQLITE_OK;
}

/*
** Move data out of a btree key or data field and into a Mem structure.
** The data is payload from the entry that pCur is currently pointing
** to.  offset and amt determine what portion of the data or key to retrieve.
** The result is written into the pMem element.
**
** The pMem object must have been initialized.  This routine will use
** pMem->zMalloc to hold the content from the btree, if possible.  New
** pMem->zMalloc space will be allocated if necessary.  The calling routine
** is responsible for making sure that the pMem object is eventually
** destroyed.
**
** If this routine fails for any reason (malloc returns NULL or unable
** to read from the disk) then the pMem is left in an inconsistent state.
*/
static SQLITE_NOINLINE int vdbeMemFromBtreeResize(
  BtCursor *pCur,   /* Cursor pointing at record to retrieve. */
  u32 offset,       /* Offset from the start of data to return bytes from. */
  u32 amt,          /* Number of bytes to return. */
  Mem *pMem         /* OUT: Return data in this Mem structure. */
){
  int rc;
  pMem->flags = MEM_Null;
  if( SQLITE_OK==(rc = sqlite3VdbeMemClearAndResize(pMem, amt+1)) ){
    rc = sqlite3BtreePayload(pCur, offset, amt, pMem->z);
    if( rc==SQLITE_OK ){
      pMem->z[amt] = 0;   /* Overrun area used when reading malformed records */
      pMem->flags = MEM_Blob;
      pMem->n = (int)amt;
    }else{
      sqlite3VdbeMemRelease(pMem);
    }
  }
  return rc;
}
int sqlite3VdbeMemFromBtree(
  BtCursor *pCur,   /* Cursor pointing at record to retrieve. */
  u32 offset,       /* Offset from the start of data to return bytes from. */
  u32 amt,          /* Number of bytes to return. */
  Mem *pMem         /* OUT: Return data in this Mem structure. */
){
  char *zData;        /* Data from the btree layer */
  u32 available = 0;  /* Number of bytes available on the local btree page */
  int rc = SQLITE_OK; /* Return code */

  assert( sqlite3BtreeCursorIsValid(pCur) );
  assert( !VdbeMemDynamic(pMem) );

  /* Note: the calls to BtreeKeyFetch() and DataFetch() below assert() 
  ** that both the BtShared and database handle mutexes are held. */
  assert( (pMem->flags & MEM_RowSet)==0 );
  zData = (char *)sqlite3BtreePayloadFetch(pCur, &available);
  assert( zData!=0 );

  if( offset+amt<=available ){
    pMem->z = &zData[offset];
    pMem->flags = MEM_Blob|MEM_Ephem;
    pMem->n = (int)amt;
  }else{
    rc = vdbeMemFromBtreeResize(pCur, offset, amt, pMem);
  }

  return rc;
}

/*
** The pVal argument is known to be a value other than NULL.
** Convert it into a string with encoding enc and return a pointer
** to a zero-terminated version of that string.
*/
static SQLITE_NOINLINE const void *valueToText(sqlite3_value* pVal, u8 enc){
  assert( pVal!=0 );
  assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
  assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
  assert( (pVal->flags & MEM_RowSet)==0 );
  assert( (pVal->flags & (MEM_Null))==0 );
  if( pVal->flags & (MEM_Blob|MEM_Str) ){
    if( ExpandBlob(pVal) ) return 0;
    pVal->flags |= MEM_Str;
    if( pVal->enc != (enc & ~SQLITE_UTF16_ALIGNED) ){
      sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED);
    }
    if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&SQLITE_PTR_TO_INT(pVal->z)) ){
      assert( (pVal->flags & (MEM_Ephem|MEM_Static))!=0 );
      if( sqlite3VdbeMemMakeWriteable(pVal)!=SQLITE_OK ){
        return 0;
      }
    }
    sqlite3VdbeMemNulTerminate(pVal); /* IMP: R-31275-44060 */
  }else{
    sqlite3VdbeMemStringify(pVal, enc, 0);
    assert( 0==(1&SQLITE_PTR_TO_INT(pVal->z)) );
  }
  assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
              || pVal->db->mallocFailed );
  if( pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) ){
    return pVal->z;
  }else{
    return 0;
  }
}

/* This function is only available internally, it is not part of the
** external API. It works in a similar way to sqlite3_value_text(),
** except the data returned is in the encoding specified by the second
** parameter, which must be one of SQLITE_UTF16BE, SQLITE_UTF16LE or
** SQLITE_UTF8.
**
** (2006-02-16:)  The enc value can be or-ed with SQLITE_UTF16_ALIGNED.
** If that is the case, then the result must be aligned on an even byte
** boundary.
*/
const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){
  if( !pVal ) return 0;
  assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
  assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
  assert( (pVal->flags & MEM_RowSet)==0 );
  if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
    return pVal->z;
  }
  if( pVal->flags&MEM_Null ){
    return 0;
  }
  return valueToText(pVal, enc);
}

/*
** Create a new sqlite3_value object.
*/
sqlite3_value *sqlite3ValueNew(sqlite3 *db){
  Mem *p = sqlite3DbMallocZero(db, sizeof(*p));
  if( p ){
    p->flags = MEM_Null;
    p->db = db;
  }
  return p;
}

/*
** Context object passed by sqlite3Stat4ProbeSetValue() through to 
** valueNew(). See comments above valueNew() for details.
*/
struct ValueNewStat4Ctx {
  Parse *pParse;
  Index *pIdx;
  UnpackedRecord **ppRec;
  int iVal;
};

/*
** Allocate and return a pointer to a new sqlite3_value object. If
** the second argument to this function is NULL, the object is allocated
** by calling sqlite3ValueNew().
**
** Otherwise, if the second argument is non-zero, then this function is 
** being called indirectly by sqlite3Stat4ProbeSetValue(). If it has not
** already been allocated, allocate the UnpackedRecord structure that 
** that function will return to its caller here. Then return a pointer to
** an sqlite3_value within the UnpackedRecord.a[] array.
*/
static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  if( p ){
    UnpackedRecord *pRec = p->ppRec[0];

    if( pRec==0 ){
      Index *pIdx = p->pIdx;      /* Index being probed */
      int nByte;                  /* Bytes of space to allocate */
      int i;                      /* Counter variable */
      int nCol = pIdx->nColumn;   /* Number of index columns including rowid */
  
      nByte = sizeof(Mem) * nCol + ROUND8(sizeof(UnpackedRecord));
      pRec = (UnpackedRecord*)sqlite3DbMallocZero(db, nByte);
      if( pRec ){
        pRec->pKeyInfo = sqlite3KeyInfoOfIndex(p->pParse, pIdx);
        if( pRec->pKeyInfo ){
          assert( pRec->pKeyInfo->nAllField==nCol );
          assert( pRec->pKeyInfo->enc==ENC(db) );
          pRec->aMem = (Mem *)((u8*)pRec + ROUND8(sizeof(UnpackedRecord)));
          for(i=0; i<nCol; i++){
            pRec->aMem[i].flags = MEM_Null;
            pRec->aMem[i].db = db;
          }
        }else{
          sqlite3DbFreeNN(db, pRec);
          pRec = 0;
        }
      }
      if( pRec==0 ) return 0;
      p->ppRec[0] = pRec;
    }
  
    pRec->nField = p->iVal+1;
    return &pRec->aMem[p->iVal];
  }
#else
  UNUSED_PARAMETER(p);
#endif /* defined(SQLITE_ENABLE_STAT3_OR_STAT4) */
  return sqlite3ValueNew(db);
}

/*
** The expression object indicated by the second argument is guaranteed
** to be a scalar SQL function. If
**
**   * all function arguments are SQL literals,
**   * one of the SQLITE_FUNC_CONSTANT or _SLOCHNG function flags is set, and
**   * the SQLITE_FUNC_NEEDCOLL function flag is not set,
**
** then this routine attempts to invoke the SQL function. Assuming no
** error occurs, output parameter (*ppVal) is set to point to a value 
** object containing the result before returning SQLITE_OK.
**
** Affinity aff is applied to the result of the function before returning.
** If the result is a text value, the sqlite3_value object uses encoding 
** enc.
**
** If the conditions above are not met, this function returns SQLITE_OK
** and sets (*ppVal) to NULL. Or, if an error occurs, (*ppVal) is set to
** NULL and an SQLite error code returned.
*/
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
static int valueFromFunction(
  sqlite3 *db,                    /* The database connection */
  Expr *p,                        /* The expression to evaluate */
  u8 enc,                         /* Encoding to use */
  u8 aff,                         /* Affinity to use */
  sqlite3_value **ppVal,          /* Write the new value here */
  struct ValueNewStat4Ctx *pCtx   /* Second argument for valueNew() */
){
  sqlite3_context ctx;            /* Context object for function invocation */
  sqlite3_value **apVal = 0;      /* Function arguments */
  int nVal = 0;                   /* Size of apVal[] array */
  FuncDef *pFunc = 0;             /* Function definition */
  sqlite3_value *pVal = 0;        /* New value */
  int rc = SQLITE_OK;             /* Return code */
  ExprList *pList = 0;            /* Function arguments */
  int i;                          /* Iterator variable */

  assert( pCtx!=0 );
  assert( (p->flags & EP_TokenOnly)==0 );
  pList = p->x.pList;
  if( pList ) nVal = pList->nExpr;
  pFunc = sqlite3FindFunction(db, p->u.zToken, nVal, enc, 0);
  assert( pFunc );
  if( (pFunc->funcFlags & (SQLITE_FUNC_CONSTANT|SQLITE_FUNC_SLOCHNG))==0 
   || (pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL)
  ){
    return SQLITE_OK;
  }

  if( pList ){
    apVal = (sqlite3_value**)sqlite3DbMallocZero(db, sizeof(apVal[0]) * nVal);
    if( apVal==0 ){
      rc = SQLITE_NOMEM_BKPT;
      goto value_from_function_out;
    }
    for(i=0; i<nVal; i++){
      rc = sqlite3ValueFromExpr(db, pList->a[i].pExpr, enc, aff, &apVal[i]);
      if( apVal[i]==0 || rc!=SQLITE_OK ) goto value_from_function_out;
    }
  }

  pVal = valueNew(db, pCtx);
  if( pVal==0 ){
    rc = SQLITE_NOMEM_BKPT;
    goto value_from_function_out;
  }

  assert( pCtx->pParse->rc==SQLITE_OK );
  memset(&ctx, 0, sizeof(ctx));
  ctx.pOut = pVal;
  ctx.pFunc = pFunc;
  pFunc->xSFunc(&ctx, nVal, apVal);
  if( ctx.isError ){
    rc = ctx.isError;
    sqlite3ErrorMsg(pCtx->pParse, "%s", sqlite3_value_text(pVal));
  }else{
    sqlite3ValueApplyAffinity(pVal, aff, SQLITE_UTF8);
    assert( rc==SQLITE_OK );
    rc = sqlite3VdbeChangeEncoding(pVal, enc);
    if( rc==SQLITE_OK && sqlite3VdbeMemTooBig(pVal) ){
      rc = SQLITE_TOOBIG;
      pCtx->pParse->nErr++;
    }
  }
  pCtx->pParse->rc = rc;

 value_from_function_out:
  if( rc!=SQLITE_OK ){
    pVal = 0;
  }
  if( apVal ){
    for(i=0; i<nVal; i++){
      sqlite3ValueFree(apVal[i]);
    }
    sqlite3DbFreeNN(db, apVal);
  }

  *ppVal = pVal;
  return rc;
}
#else
# define valueFromFunction(a,b,c,d,e,f) SQLITE_OK
#endif /* defined(SQLITE_ENABLE_STAT3_OR_STAT4) */

/*
** Extract a value from the supplied expression in the manner described
** above sqlite3ValueFromExpr(). Allocate the sqlite3_value object
** using valueNew().
**
** If pCtx is NULL and an error occurs after the sqlite3_value object
** has been allocated, it is freed before returning. Or, if pCtx is not
** NULL, it is assumed that the caller will free any allocated object
** in all cases.
*/
static int valueFromExpr(
  sqlite3 *db,                    /* The database connection */
  Expr *pExpr,                    /* The expression to evaluate */
  u8 enc,                         /* Encoding to use */
  u8 affinity,                    /* Affinity to use */
  sqlite3_value **ppVal,          /* Write the new value here */
  struct ValueNewStat4Ctx *pCtx   /* Second argument for valueNew() */
){
  int op;
  char *zVal = 0;
  sqlite3_value *pVal = 0;
  int negInt = 1;
  const char *zNeg = "";
  int rc = SQLITE_OK;

  assert( pExpr!=0 );
  while( (op = pExpr->op)==TK_UPLUS || op==TK_SPAN ) pExpr = pExpr->pLeft;
  if( NEVER(op==TK_REGISTER) ) op = pExpr->op2;

  /* Compressed expressions only appear when parsing the DEFAULT clause
  ** on a table column definition, and hence only when pCtx==0.  This
  ** check ensures that an EP_TokenOnly expression is never passed down
  ** into valueFromFunction(). */
  assert( (pExpr->flags & EP_TokenOnly)==0 || pCtx==0 );

  if( op==TK_CAST ){
    u8 aff = sqlite3AffinityType(pExpr->u.zToken,0);
    rc = valueFromExpr(db, pExpr->pLeft, enc, aff, ppVal, pCtx);
    testcase( rc!=SQLITE_OK );
    if( *ppVal ){
      sqlite3VdbeMemCast(*ppVal, aff, SQLITE_UTF8);
      sqlite3ValueApplyAffinity(*ppVal, affinity, SQLITE_UTF8);
    }
    return rc;
  }

  /* Handle negative integers in a single step.  This is needed in the
  ** case when the value is -9223372036854775808.
  */
  if( op==TK_UMINUS
   && (pExpr->pLeft->op==TK_INTEGER || pExpr->pLeft->op==TK_FLOAT) ){
    pExpr = pExpr->pLeft;
    op = pExpr->op;
    negInt = -1;
    zNeg = "-";
  }

  if( op==TK_STRING || op==TK_FLOAT || op==TK_INTEGER ){
    pVal = valueNew(db, pCtx);
    if( pVal==0 ) goto no_mem;
    if( ExprHasProperty(pExpr, EP_IntValue) ){
      sqlite3VdbeMemSetInt64(pVal, (i64)pExpr->u.iValue*negInt);
    }else{
      zVal = sqlite3MPrintf(db, "%s%s", zNeg, pExpr->u.zToken);
      if( zVal==0 ) goto no_mem;
      sqlite3ValueSetStr(pVal, -1, zVal, SQLITE_UTF8, SQLITE_DYNAMIC);
    }
    if( (op==TK_INTEGER || op==TK_FLOAT ) && affinity==SQLITE_AFF_BLOB ){
      sqlite3ValueApplyAffinity(pVal, SQLITE_AFF_NUMERIC, SQLITE_UTF8);
    }else{
      sqlite3ValueApplyAffinity(pVal, affinity, SQLITE_UTF8);
    }
    if( pVal->flags & (MEM_Int|MEM_Real) ) pVal->flags &= ~MEM_Str;
    if( enc!=SQLITE_UTF8 ){
      rc = sqlite3VdbeChangeEncoding(pVal, enc);
    }
  }else if( op==TK_UMINUS ) {
    /* This branch happens for multiple negative signs.  Ex: -(-5) */
    if( SQLITE_OK==valueFromExpr(db,pExpr->pLeft,enc,affinity,&pVal,pCtx) 
     && pVal!=0
    ){
      sqlite3VdbeMemNumerify(pVal);
      if( pVal->flags & MEM_Real ){
        pVal->u.r = -pVal->u.r;
      }else if( pVal->u.i==SMALLEST_INT64 ){
        pVal->u.r = -(double)SMALLEST_INT64;
        MemSetTypeFlag(pVal, MEM_Real);
      }else{
        pVal->u.i = -pVal->u.i;
      }
      sqlite3ValueApplyAffinity(pVal, affinity, enc);
    }
  }else if( op==TK_NULL ){
    pVal = valueNew(db, pCtx);
    if( pVal==0 ) goto no_mem;
    sqlite3VdbeMemNumerify(pVal);
  }
#ifndef SQLITE_OMIT_BLOB_LITERAL
  else if( op==TK_BLOB ){
    int nVal;
    assert( pExpr->u.zToken[0]=='x' || pExpr->u.zToken[0]=='X' );
    assert( pExpr->u.zToken[1]=='\'' );
    pVal = valueNew(db, pCtx);
    if( !pVal ) goto no_mem;
    zVal = &pExpr->u.zToken[2];
    nVal = sqlite3Strlen30(zVal)-1;
    assert( zVal[nVal]=='\'' );
    sqlite3VdbeMemSetStr(pVal, sqlite3HexToBlob(db, zVal, nVal), nVal/2,
                         0, SQLITE_DYNAMIC);
  }
#endif

#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  else if( op==TK_FUNCTION && pCtx!=0 ){
    rc = valueFromFunction(db, pExpr, enc, affinity, &pVal, pCtx);
  }
#endif

  *ppVal = pVal;
  return rc;

no_mem:
  sqlite3OomFault(db);
  sqlite3DbFree(db, zVal);
  assert( *ppVal==0 );
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
  if( pCtx==0 ) sqlite3ValueFree(pVal);
#else
  assert( pCtx==0 ); sqlite3ValueFree(pVal);
#endif
  return SQLITE_NOMEM_BKPT;
}

/*
** Create a new sqlite3_value object, containing the value of pExpr.
**
** This only works for very simple expressions that consist of one constant
** token (i.e. "5", "5.1", "'a string'"). If the expression can
** be converted directly into a value, then the value is allocated and
** a pointer written to *ppVal. The caller is responsible for deallocating
** the value by passing it to sqlite3ValueFree() later on. If the expression
** cannot be converted to a value, then *ppVal is set to NULL.
*/
int sqlite3ValueFromExpr(
  sqlite3 *db,              /* The database connection */
  Expr *pExpr,              /* The expression to evaluate */
  u8 enc,                   /* Encoding to use */
  u8 affinity,              /* Affinity to use */
  sqlite3_value **ppVal     /* Write the new value here */
){
  return pExpr ? valueFromExpr(db, pExpr, enc, affinity, ppVal, 0) : 0;
}

#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
/*
** The implementation of the sqlite_record() function. This function accepts
** a single argument of any type. The return value is a formatted database 
** record (a blob) containing the argument value.
**
** This is used to convert the value stored in the 'sample' column of the
** sqlite_stat3 table to the record format SQLite uses internally.
*/
static void recordFunc(
  sqlite3_context *context,
  int argc,
  sqlite3_value **argv
){
  const int file_format = 1;
  u32 iSerial;                    /* Serial type */
  int nSerial;                    /* Bytes of space for iSerial as varint */
  u32 nVal;                       /* Bytes of space required for argv[0] */
  int nRet;
  sqlite3 *db;
  u8 *aRet;

  UNUSED_PARAMETER( argc );
  iSerial = sqlite3VdbeSerialType(argv[0], file_format, &nVal);
  nSerial = sqlite3VarintLen(iSerial);
  db = sqlite3_context_db_handle(context);

  nRet = 1 + nSerial + nVal;
  aRet = sqlite3DbMallocRawNN(db, nRet);
  if( aRet==0 ){
    sqlite3_result_error_nomem(context);
  }else{
    aRet[0] = nSerial+1;
    putVarint32(&aRet[1], iSerial);
    sqlite3VdbeSerialPut(&aRet[1+nSerial], argv[0], iSerial);
    sqlite3_result_blob(context, aRet, nRet, SQLITE_TRANSIENT);
    sqlite3DbFreeNN(db, aRet);
  }
}

/*
** Register built-in functions used to help read ANALYZE data.
*/
void sqlite3AnalyzeFunctions(void){
  static FuncDef aAnalyzeTableFuncs[] = {
    FUNCTION(sqlite_record,   1, 0, 0, recordFunc),
  };
  sqlite3InsertBuiltinFuncs(aAnalyzeTableFuncs, ArraySize(aAnalyzeTableFuncs));
}

/*
** Attempt to extract a value from pExpr and use it to construct *ppVal.
**
** If pAlloc is not NULL, then an UnpackedRecord object is created for
** pAlloc if one does not exist and the new value is added to the
** UnpackedRecord object.
**
** A value is extracted in the following cases:
**
**  * (pExpr==0). In this case the value is assumed to be an SQL NULL,
**
**  * The expression is a bound variable, and this is a reprepare, or
**
**  * The expression is a literal value.
**
** On success, *ppVal is made to point to the extracted value.  The caller
** is responsible for ensuring that the value is eventually freed.
*/
static int stat4ValueFromExpr(
  Parse *pParse,                  /* Parse context */
  Expr *pExpr,                    /* The expression to extract a value from */
  u8 affinity,                    /* Affinity to use */
  struct ValueNewStat4Ctx *pAlloc,/* How to allocate space.  Or NULL */
  sqlite3_value **ppVal           /* OUT: New value object (or NULL) */
){
  int rc = SQLITE_OK;
  sqlite3_value *pVal = 0;
  sqlite3 *db = pParse->db;

  /* Skip over any TK_COLLATE nodes */
  pExpr = sqlite3ExprSkipCollate(pExpr);

  assert( pExpr==0 || pExpr->op!=TK_REGISTER || pExpr->op2!=TK_VARIABLE );
  if( !pExpr ){
    pVal = valueNew(db, pAlloc);
    if( pVal ){
      sqlite3VdbeMemSetNull((Mem*)pVal);
    }
  }else if( pExpr->op==TK_VARIABLE && (db->flags & SQLITE_EnableQPSG)==0 ){
    Vdbe *v;
    int iBindVar = pExpr->iColumn;
    sqlite3VdbeSetVarmask(pParse->pVdbe, iBindVar);
    if( (v = pParse->pReprepare)!=0 ){
      pVal = valueNew(db, pAlloc);
      if( pVal ){
        rc = sqlite3VdbeMemCopy((Mem*)pVal, &v->aVar[iBindVar-1]);
        sqlite3ValueApplyAffinity(pVal, affinity, ENC(db));
        pVal->db = pParse->db;
      }
    }
  }else{
    rc = valueFromExpr(db, pExpr, ENC(db), affinity, &pVal, pAlloc);
  }

  assert( pVal==0 || pVal->db==db );
  *ppVal = pVal;
  return rc;
}

/*
** This function is used to allocate and populate UnpackedRecord 
** structures intended to be compared against sample index keys stored 
** in the sqlite_stat4 table.
**
** A single call to this function populates zero or more fields of the
** record starting with field iVal (fields are numbered from left to
** right starting with 0). A single field is populated if:
**
**  * (pExpr==0). In this case the value is assumed to be an SQL NULL,
**
**  * The expression is a bound variable, and this is a reprepare, or
**
**  * The sqlite3ValueFromExpr() function is able to extract a value 
**    from the expression (i.e. the expression is a literal value).
**
** Or, if pExpr is a TK_VECTOR, one field is populated for each of the
** vector components that match either of the two latter criteria listed
** above.
**
** Before any value is appended to the record, the affinity of the 
** corresponding column within index pIdx is applied to it. Before
** this function returns, output parameter *pnExtract is set to the
** number of values appended to the record.
**
** When this function is called, *ppRec must either point to an object
** allocated by an earlier call to this function, or must be NULL. If it
** is NULL and a value can be successfully extracted, a new UnpackedRecord
** is allocated (and *ppRec set to point to it) before returning.
**
** Unless an error is encountered, SQLITE_OK is returned. It is not an
** error if a value cannot be extracted from pExpr. If an error does
** occur, an SQLite error code is returned.
*/
int sqlite3Stat4ProbeSetValue(
  Parse *pParse,                  /* Parse context */
  Index *pIdx,                    /* Index being probed */
  UnpackedRecord **ppRec,         /* IN/OUT: Probe record */
  Expr *pExpr,                    /* The expression to extract a value from */
  int nElem,                      /* Maximum number of values to append */
  int iVal,                       /* Array element to populate */
  int *pnExtract                  /* OUT: Values appended to the record */
){
  int rc = SQLITE_OK;
  int nExtract = 0;

  if( pExpr==0 || pExpr->op!=TK_SELECT ){
    int i;
    struct ValueNewStat4Ctx alloc;

    alloc.pParse = pParse;
    alloc.pIdx = pIdx;
    alloc.ppRec = ppRec;

    for(i=0; i<nElem; i++){
      sqlite3_value *pVal = 0;
      Expr *pElem = (pExpr ? sqlite3VectorFieldSubexpr(pExpr, i) : 0);
      u8 aff = sqlite3IndexColumnAffinity(pParse->db, pIdx, iVal+i);
      alloc.iVal = iVal+i;
      rc = stat4ValueFromExpr(pParse, pElem, aff, &alloc, &pVal);
      if( !pVal ) break;
      nExtract++;
    }
  }

  *pnExtract = nExtract;
  return rc;
}

/*
** Attempt to extract a value from expression pExpr using the methods
** as described for sqlite3Stat4ProbeSetValue() above. 
**
** If successful, set *ppVal to point to a new value object and return 
** SQLITE_OK. If no value can be extracted, but no other error occurs
** (e.g. OOM), return SQLITE_OK and set *ppVal to NULL. Or, if an error
** does occur, return an SQLite error code. The final value of *ppVal
** is undefined in this case.
*/
int sqlite3Stat4ValueFromExpr(
  Parse *pParse,                  /* Parse context */
  Expr *pExpr,                    /* The expression to extract a value from */
  u8 affinity,                    /* Affinity to use */
  sqlite3_value **ppVal           /* OUT: New value object (or NULL) */
){
  return stat4ValueFromExpr(pParse, pExpr, affinity, 0, ppVal);
}

/*
** Extract the iCol-th column from the nRec-byte record in pRec.  Write
** the column value into *ppVal.  If *ppVal is initially NULL then a new
** sqlite3_value object is allocated.
**
** If *ppVal is initially NULL then the caller is responsible for 
** ensuring that the value written into *ppVal is eventually freed.
*/
int sqlite3Stat4Column(
  sqlite3 *db,                    /* Database handle */
  const void *pRec,               /* Pointer to buffer containing record */
  int nRec,                       /* Size of buffer pRec in bytes */
  int iCol,                       /* Column to extract */
  sqlite3_value **ppVal           /* OUT: Extracted value */
){
  u32 t;                          /* a column type code */
  int nHdr;                       /* Size of the header in the record */
  int iHdr;                       /* Next unread header byte */
  int iField;                     /* Next unread data byte */
  int szField;                    /* Size of the current data field */
  int i;                          /* Column index */
  u8 *a = (u8*)pRec;              /* Typecast byte array */
  Mem *pMem = *ppVal;             /* Write result into this Mem object */

  assert( iCol>0 );
  iHdr = getVarint32(a, nHdr);
  if( nHdr>nRec || iHdr>=nHdr ) return SQLITE_CORRUPT_BKPT;
  iField = nHdr;
  for(i=0; i<=iCol; i++){
    iHdr += getVarint32(&a[iHdr], t);
    testcase( iHdr==nHdr );
    testcase( iHdr==nHdr+1 );
    if( iHdr>nHdr ) return SQLITE_CORRUPT_BKPT;
    szField = sqlite3VdbeSerialTypeLen(t);
    iField += szField;
  }
  testcase( iField==nRec );
  testcase( iField==nRec+1 );
  if( iField>nRec ) return SQLITE_CORRUPT_BKPT;
  if( pMem==0 ){
    pMem = *ppVal = sqlite3ValueNew(db);
    if( pMem==0 ) return SQLITE_NOMEM_BKPT;
  }
  sqlite3VdbeSerialGet(&a[iField-szField], t, pMem);
  pMem->enc = ENC(db);
  return SQLITE_OK;
}

/*
** Unless it is NULL, the argument must be an UnpackedRecord object returned
** by an earlier call to sqlite3Stat4ProbeSetValue(). This call deletes
** the object.
*/
void sqlite3Stat4ProbeFree(UnpackedRecord *pRec){
  if( pRec ){
    int i;
    int nCol = pRec->pKeyInfo->nAllField;
    Mem *aMem = pRec->aMem;
    sqlite3 *db = aMem[0].db;
    for(i=0; i<nCol; i++){
      sqlite3VdbeMemRelease(&aMem[i]);
    }
    sqlite3KeyInfoUnref(pRec->pKeyInfo);
    sqlite3DbFreeNN(db, pRec);
  }
}
#endif /* ifdef SQLITE_ENABLE_STAT4 */

/*
** Change the string value of an sqlite3_value object
*/
void sqlite3ValueSetStr(
  sqlite3_value *v,     /* Value to be set */
  int n,                /* Length of string z */
  const void *z,        /* Text of the new string */
  u8 enc,               /* Encoding to use */
  void (*xDel)(void*)   /* Destructor for the string */
){
  if( v ) sqlite3VdbeMemSetStr((Mem *)v, z, n, enc, xDel);
}

/*
** Free an sqlite3_value object
*/
void sqlite3ValueFree(sqlite3_value *v){
  if( !v ) return;
  sqlite3VdbeMemRelease((Mem *)v);
  sqlite3DbFreeNN(((Mem*)v)->db, v);
}

/*
** The sqlite3ValueBytes() routine returns the number of bytes in the
** sqlite3_value object assuming that it uses the encoding "enc".
** The valueBytes() routine is a helper function.
*/
static SQLITE_NOINLINE int valueBytes(sqlite3_value *pVal, u8 enc){
  return valueToText(pVal, enc)!=0 ? pVal->n : 0;
}
int sqlite3ValueBytes(sqlite3_value *pVal, u8 enc){
  Mem *p = (Mem*)pVal;
  assert( (p->flags & MEM_Null)==0 || (p->flags & (MEM_Str|MEM_Blob))==0 );
  if( (p->flags & MEM_Str)!=0 && pVal->enc==enc ){
    return p->n;
  }
  if( (p->flags & MEM_Blob)!=0 ){
    if( p->flags & MEM_Zero ){
      return p->n + p->u.nZero;
    }else{
      return p->n;
    }
  }
  if( p->flags & MEM_Null ) return 0;
  return valueBytes(pVal, enc);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35043.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
typedef struct   {
      long double dat[2];
} gsl_complex_long_double;
typedef struct {
    size_t size;
    size_t stride;
    long double *data;
} gsl_vector_complex_long_double;
void gsl_vector_complex_long_double_set_zero (gsl_vector_complex_long_double * v) 
{
    long double * const data = v->data;
    const size_t n = v->size;
    const size_t stride = v->stride;
    const gsl_complex_long_double zero = { { 0.0L,0.0L} } ;
    size_t i;
    for (i = 0; i < n; i++)     
        *(gsl_complex_long_double *) (data + 2 * i * stride) = zero;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36172.c<|end_filename|>
int f(float * );
__SIZE_TYPE__ FcCharSetFreeze (int *fcs, int b)
{
  int i;
  int a = 0;
  for (i = 0; i < *fcs; i++)
  {
    float *leaf = (float *)fcs;
    int hash = f (leaf);
    if (hash)
      a = b;
    if (!a)
      return;
  }
  return (__SIZE_TYPE__) fcs;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58997.c<|end_filename|>
/* PR rtl-optimization/58997 */

int a, b, c, e;
short d;
char h;

void
foo ()
{
  while (b)
    {
      d = a ? c : 1 % a;
      c = d;
      h = d;
      if (!h)
	while (e)
	  ;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47265.c<|end_filename|>
/* PR tree-optimization/47265 */

struct S
{
  char a[3];
  char b[3];
};

void
bar (char *dst, const char *src, unsigned n)
{
  while (n--)
    *dst++ = *src ? *src++ : ' ';
}

void
foo (struct S *s)
{
  bar (s->a, s->b, 3);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46547-1.c<|end_filename|>
void foo (void) {
  _Bool d;
  long double _Complex *s;

  d = *s++;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39845.c<|end_filename|>

/* { dg-options "-fno-short-enums" {target short_enums} } */
typedef union tree_node *tree;
enum tree_code { EXCESS_PRECISION_EXPR };
enum built_in_function { BUILT_IN_ACOS, BUILT_IN_FPCLASSIFY, BUILT_IN_ISFINITE };
struct tree_base {
    __extension__ enum tree_code code : 16;
    unsigned side_effects_flag : 1;
};
struct tree_exp {
    tree     operands[1];
};
struct tree_function_decl {
    __extension__ enum built_in_function function_code : 11;
    unsigned static_ctor_flag : 1;
};
union tree_node {
    struct tree_base base;
    struct tree_function_decl function_decl;
    struct tree_exp exp;
};
static tree
convert_arguments (tree fundecl)
{
  tree val = (void *)0;
  unsigned int parmnum;
  unsigned char type_generic_remove_excess_precision = 0;
  switch (((fundecl)->function_decl.function_code))
    {
      case BUILT_IN_ISFINITE:
      case BUILT_IN_FPCLASSIFY:
	  type_generic_remove_excess_precision = 1;
    }
  for (parmnum = 0;; ++parmnum)
    if (((enum tree_code) (val)->base.code) == EXCESS_PRECISION_EXPR
	&& !type_generic_remove_excess_precision)
      val = ((val)->exp.operands[0]);
  return val;
}
tree
build_function_call_vec (tree function)
{
  return convert_arguments (function);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42196-1.c<|end_filename|>
union U
{
  double d;
  __complex__ int c;
};

double gd;
extern double bar (union U);

double foo (int b, double d, int c1, int c2)
{
  union U u;
  double r;

  if (b)
    {
      u.d = d;
      r = u.d;
    }
  else
    {
      __real__ u.c = c1;
      __imag__ u.c = c2;
      r = bar (u);
    }

  return r;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080910-1.c<|end_filename|>
/* This used to crash IRA with -O3 -fPIC.
  See PR 37333.  */
struct yy_buffer_state  {
  int yy_is_interactive;
};
static struct yy_buffer_state * * yy_buffer_stack = 0;
static int yy_n_chars;
int orafce_sql_yyleng;
unsigned char *yy_c_buf_p = 0;
extern char *orafce_sql_yytext;
static const int yy_ec[256] = { };
short yy_accept[155], yy_base[193] = { }, yy_def[193] = { };
short yy_chk[738] = { };
unsigned char *yy_last_accepting_cpos;
int orafce_sql_yylex (int a)
{
  register int yy_current_state;
  unsigned char *yy_cp, *yy_bp;
  register int yy_act;
  while ( 1 )   {
    do {
      char yy_c = yy_ec[*yy_cp];
      if ( yy_accept[yy_current_state] )
	yy_last_accepting_cpos = yy_cp;
      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
	yy_current_state = yy_def[yy_current_state];
    } while ( yy_current_state != 154 );
yy_find_action:
    yy_act = yy_accept[yy_current_state];
    *yy_cp = '\0';
    switch ( yy_act )  {
      case 2:
	*yy_cp = 1;
	return 265;
      case 24: 
      case 25:
	addlit(orafce_sql_yytext, orafce_sql_yyleng);
      case 26:
	addlit(orafce_sql_yytext, orafce_sql_yyleng);
      case 53:
	yy_fatal_error( "flex scanner jammed" );
	break;
      case 54:
	yy_cp = ++(yy_c_buf_p);
	unsigned long n = 0;
	if ( yy_buffer_stack[0]->yy_is_interactive )
	  for ( ; _IO_getc () != (-1) ;   ++n )
	    yy_n_chars = n;
	if (a == 0)
	{
	  yy_current_state = yy_get_previous_state( );
	  goto yy_find_action;
	}
    }
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr19357.c<|end_filename|>
/* This generated an ICE for an ia64-linux target.  */
struct f {
  float f[8];
};

long double ftest(struct f arg1, long double arg2) {
  return arg2;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17408.c<|end_filename|>
/* PRs 17408 and 17409, with different options. */
extern int t;
extern int t = 0;
void f(){t =0;}
void g(){h(&t);}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52255.c<|end_filename|>
/* PR tree-optimization/52255 */

int a, b, c[10], d[10] = { 0, 0 };

void
foo (void)
{
  for (a = 1; a <= 4; a += 1)
    d[a] = d[1];
  for (; b; ++b)
    c[0] |= 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/complex-3.c<|end_filename|>
/* PR 22116 */

void g(_Complex float);
_Complex float f(int data, _Complex float x, _Complex float y)
{
  _Complex float i, t;
  if (data) 
  {
    i = x +  __imag__ y;
    g(i);
  }
  else
    i = 5;
  t = x + __imag__ y;
  g(t);
  return t * i;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-externdecl.c<|end_filename|>
/* { dg-skip-if "ptxas runs out of memory" { nvptx-*-* } { "*" } { "" } } */

/* { dg-require-effective-target int32plus } */
/* Inspired by the test case for PR middle-end/52640.  */

typedef struct
{
    char *value;
} REFERENCE;

/* Add a few "extern int Xxxxxx ();" declarations.  */
#undef DEF
#undef LIM1
#undef LIM2
#undef LIM3
#undef LIM4
#undef LIM5
#undef LIM6
#define DEF(x) 	extern int x ()
#define LIM1(x) DEF(x##0); DEF(x##1); DEF(x##2); DEF(x##3); DEF(x##4); \
		DEF(x##5); DEF(x##6); DEF(x##7); DEF(x##8); DEF(x##9);
#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
LIM5 (X);

/* Add references to them, or GCC will simply ignore the extern decls.  */
#undef DEF
#undef LIM1
#undef LIM2
#undef LIM3
#undef LIM4
#undef LIM5
#undef LIM6
#define DEF(x)	(char *) x
#define LIM1(x) DEF(x##0), DEF(x##1), DEF(x##2), DEF(x##3), DEF(x##4), \
		DEF(x##5), DEF(x##6), DEF(x##7), DEF(x##8), DEF(x##9),
#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
REFERENCE references[] = {
  LIM5 (X)
  0
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20140213.c<|end_filename|>
static unsigned short
foo (unsigned char *x, int y)
{
  unsigned short r = 0;
  int i;
  for (i = 0; i < y; i++)
    r += x[i];
  return r;
}

int baz (int, unsigned short);

void
bar (unsigned char *x, unsigned char *y)
{
  int i;
  unsigned short key = foo (x, 0x10000);
  baz (0, 0);
  for (i = 0; i < 0x80000; i++)
    y[i] = x[baz (i, key)];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr50380.c<|end_filename|>
__attribute__ ((__noreturn__)) extern void fail (void);

char x;

/* This used to get stuck in an infinite loop in find_comparison_args
   when compiling this function for MIPS at -O2.  */

void foo (const unsigned char y)
{
   ((void) (__builtin_expect((!! y == y), 1) ? 0 : (fail (), 0)));
   x = ! y;
}

/* This used to similarly get stuck when compiling for PowerPC at -O2.  */

int foo2 (int arg)
{
  if (arg != !arg)
    fail ();
  if (arg)
    fail ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20020910-1.c<|end_filename|>
/* The bit-field below would have a problem if __INT_MAX__ is too
   small.  */
#if __INT_MAX__ < 2147483647
int a;
#else
unsigned int  x0  = 0;

typedef struct {
  unsigned int  field1 : 20;
  unsigned int  field2 : 12;
} XX;

static XX yy;

static void foo (void)
{
  yy.field1 = (unsigned int ) (&x0);
}
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090907-1.c<|end_filename|>
struct platform_device;
typedef unsigned long __kernel_size_t;
typedef unsigned short __u16;
typedef unsigned int __u32;
typedef unsigned char u8;
typedef unsigned short u16;
typedef __kernel_size_t size_t;
typedef __u32 uint32_t;
static inline __attribute__ ((always_inline))
uint32_t __attribute__ ((pure)) bfin_dspid (void)
{
    return ( {
	    uint32_t __v; __v;}
    );
}
struct list_head {
    struct list_head *next, *prev;
};
struct page {
    union {
    };
    struct list_head lru;
};
struct device_driver {
    const char *name;
    struct module *owner;
};
struct fb_info {
    struct device *dev;
};
struct platform_driver {
    int (*probe) (struct platform_device *);
    int (*remove) (struct platform_device *);
    struct device_driver driver;
};
struct firmware {
    size_t size;
    const u8 *data;
};
struct metronomefb_par {
    struct fb_info *info;
};
struct waveform_hdr {
    u8 trc;
};
static u8 calc_cksum (int start, int end, u8 * mem)
{
    u8 tmp = 0;
    int i;
    for (i = start; i < end; i++)
	tmp += mem[i];
    return tmp;
}
extern struct waveform_hdr *wfm_hdr;
extern int wmta;

static int
load_waveform (u8 * mem, size_t size, int m, int t, struct metronomefb_par *par)
{
    int tta;
    int trn = 0;
    int i;
    u8 cksum;
    int cksum_idx;
    struct device *dev = par->info->dev;
    for (i = 0; i <= sizeof (*wfm_hdr) + wfm_hdr->trc; i++) {
	if (mem[i] > t) {
	    trn = i - sizeof (*wfm_hdr) - 1;
	}
    }
    tta = * (mem + wmta + m * 4) & 0x00FFFFFF;
    cksum_idx = tta + trn * 4 + 3;
    cksum = calc_cksum (cksum_idx - 3, cksum_idx, mem);
    if (cksum != mem[cksum_idx]) {
	abort();
    }
}
extern struct firmware *fw_entry;
extern struct metronomefb_par *par;

int metronomefb_probe (struct platform_device *dev)
{
	return load_waveform ((u8 *) fw_entry->data, fw_entry->size, 3, 31, par);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35468.c<|end_filename|>
/* PR tree-optimization/35468 */
/* { dg-do compile } */

void
foo (void)
{
  *(char *) "c" = 'x';
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37432.c<|end_filename|>
static void print_wkb_byte(unsigned char val) {
    print_wkb_bytes((unsigned char *)&val, 1, 1);
}
void InsertMultiPoint(int b) {
    char a = 1;
    if (b) a = 0;
    print_wkb_byte(a);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090401-1.c<|end_filename|>
/* PR rtl-optimization/39588 */
/* Testcase by <NAME> <<EMAIL>> */

#define lit_from_int(in) ((in<0)?(((-in)<<1)|1):(in<<1))

void init_clause(int *literals, int size, int *lits)
{
  int i;
  for(i=0; i < size; i++)
    lits[i] = lit_from_int(literals[i]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38789.c<|end_filename|>
/* PR tree-optimization/38789 */
/* { dg-do compile } */

void
baz (int v)
{
  unsigned a = (v == 1) ? 1 : 2;

  if (__builtin_constant_p (a))
    asm volatile ("# constant %0" :: "i" (a));
  else
    asm volatile ("# register %0" :: "r" (a));

  a = 6;
  if (__builtin_constant_p (a))
    asm volatile ("# constant %0" :: "i" (a));
  else
    asm volatile ("# register %0" :: "r" (a));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20020604-1.c<|end_filename|>
/* { dg-do assemble } */
/* { dg-require-effective-target ptr32plus } */
/* { dg-xfail-if "The array too big" { "h8300-*-*" } { "-mno-h" "-mn" } { "" } } */

/* PR c/6957
   This testcase ICEd at -O2 on IA-32, because
   (insn 141 139 142 (set (subreg:SF (reg:QI 72) 0)
	   (plus:SF (reg:SF 73)
	       (reg:SF 76))) 525 {*fop_sf_comm_nosse} (insn_list 134 (nil))
       (expr_list:REG_DEAD (reg:SF 73) (nil)))
   couldn't be reloaded. */

void
foo (unsigned int n, int x, int y, unsigned char *z)
{
  int a, b;
  float c[2048][4];

  switch (x)
    {
    case 0x1906:
      a = b = -1;
      break;
    case 0x190A:
      a = b = -1;
      break;
    case 0x8049:
      a = b = -1;
      break;
    case 0x1907:
      a = 1;
      b = 2;
      break;
    default:
      return;
    }

  if (a >= 0)
    {
      unsigned char *d = z;
      unsigned int i;
      for (i = 0; i < n; i++)
	{
	  do
	    {
	      union
	      {
		float r;
		unsigned int i;
	      }
	      e;
	      e.r = c[i][1];
	      d[a] =
		((e.i >= 0x3f7f0000) ? ((int) e.i <
					    0) ? (unsigned char) 0
		 : (unsigned char) 255 : (e.r =
					  e.r * (255.0F / 256.0F) +
					  32768.0F, (unsigned char) e.i));
	    }
	  while (0);
	  d += y;
	}
    }

  if (b >= 0)
    {
      unsigned char *d = z;
      unsigned int i;
      for (i = 0; i < n; i++)
	{
	  do
	    {
	      union
	      {
		float r;
		unsigned int i;
	      }
	      e;
	      e.r = c[i][2];
	      d[b] =
		((e.i >= 0x3f7f0000) ? ((int) e.i <
					    0) ? (unsigned char) 0
		 : (unsigned char) 255 : (e.r =
					  e.r * (255.0F / 256.0F) +
					  32768.0F, (unsigned char) e.i));
	    }
	  while (0);
	  d += y;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38926.c<|end_filename|>
static inline int foo (unsigned _si1)
{
  if (_si1 != 0)
    if (_si1 > 2147483647)
      return 1;
  return 0;
}

static inline unsigned bar (unsigned _left, int _right)
{
  return (unsigned) _right >= 8 ? 1 : _left >> _right;
}

unsigned g_2;
unsigned g_67;
volatile unsigned g_162;

static inline int func_62 (unsigned p_63)
{
  p_63 = g_2 & g_67;
  if (g_2)
    ;
  else if (p_63)
    return 1;
  g_67 = bar (p_63, g_2);
  return 0;
}

unsigned baz (void)
{
  if (g_2)
    for (; g_2 <= -16; g_2 = foo (g_2))
      {
        for (; g_162; g_162)
          func_62 (func_62 (0));
        if (g_67)
          break;
      }
  return g_2;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39636.c<|end_filename|>
typedef float real;
typedef real rvec[3];
void calc_dx2dx(real *, real *);
void phi_sr(int nj,rvec x[],int k)
{
  int i,j;
  for(i=0; (i<nj-1); i++)
    for(j=i+1; (j<nj); j++)
      if (k)
	calc_dx2dx(x[i],x[j]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58978.c<|end_filename|>
/* PR tree-optimization/58978 */

int
foo (int x)
{
  switch (x)
    {
    case 0:
    case 1:
    case 9:
      break;
    default:
      __builtin_unreachable ();
    }
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr63761.c<|end_filename|>
int a, b;
short c;

void fn1 ();

void
fn2 (unsigned short p1)
{
  int d;

  c = p1 >> 8 | p1 << 8;
  d = b;
  if (d)
    fn1 ();
  a = d >> 8 & 0x00FF
    | d << 8 & 0xFF00;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52555.c<|end_filename|>
/* { dg-options "-ffast-math" } */

float farg;
unsigned val;

void __attribute__((optimize("O")))
test()
{
  val = __builtin_ceilf(farg);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/921206-1.c<|end_filename|>
double sqrt(double),fabs(double),sin(double);
int sxs;
int sys;
f()
{
  int l;
  int sm = -52, sx = 52;
  char *smap;
  for (l = 0; l < 9; l++)
    {
      double g;
      int cx, cy, gx, gy, x, y;
      gx = 2 > g / 3 ? 2 : g / 3;
      gy = 2 > g / 3 ? 2 : g / 3;
      for (y = 0 > cy - gy ? 0 : cy - gy; y <= (sys - 1 < cy + gy ? sys : cy + gy); y++)
	{
	  int sx = 0 > cx - gx ? 0 : cx - gx;
	  short *ax = (short *) (y * sxs + sx);

	  for (x = sx; x <= (sxs - 1 < cx + gx ? sxs - 1 : cx + gx); x++)
	    {
	      double c=2.25, z=sqrt(fabs(1-c)), cz=(c>1?0.0:-10)>z?c>1?0:1:z;
	    }
	}
    }
  for (l = sm; l <= sx; l++)
    smap[l] = l > 0 ? 1 + foo(sin(.1 * l / sx)) : 1 - foo(sin(.1 * l / sm));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32606.c<|end_filename|>
int inb(int);
void is870(unsigned int wkport, unsigned char j)
{
 unsigned int tmport;
 unsigned char i;
 for (i = 0; i < 16; i++)
 {
  tmport = wkport + 0x18;
  tmport += 0x07;
  while ((inb(tmport) & 0x80) == 0)
  {
   if ((inb(tmport) & 0x01) != 0)
   {
    tmport -= 0x06;
    tmport += 0x06;
   }
  }
  tmport = wkport + 0x14;
  tmport += 0x04;
  tmport += 0x07;
widep_in1:
  if ((j & 0x01) != 0)
  {
   tmport -= 0x06;
   tmport += 0x06;
   goto widep_in1;
  }
  while ((inb(tmport) & 0x80) == 0) {}
 }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52375.c<|end_filename|>
/* PR target/52375 */

struct C { int c, d; };

unsigned
foo (struct C *p)
{
  unsigned int b = 0, i;
  for (i = 0; i < 64; i++)
    b |= 0x80000000U >> p[i].c;
  return b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17397.c<|end_filename|>
/* ICE due to invalid GIMPLE created during strlen simplification.  */
/* { dg-require-effective-target alloca } */

extern unsigned long strlen (__const char *__s);
extern void bar ();
extern int cols;

void foo (void)
{
  char s[cols + 2];
  if (strlen (s) > 0)
    bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51354.c<|end_filename|>
/* PR target/51354 */
/* { dg-require-effective-target alloca } */

extern void abort (void);

typedef int __attribute__ ((aligned (32))) ai;

void foo (int *x, ai * y);

int
bar (int x)
{
  if (x == 12346)
    return 24;
  ai i;
  foo (__builtin_alloca (x), &i);
  return 128;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53163.c<|end_filename|>
/* PR tree-optimization/53163 */

struct S { int s; } b, f;
int a, c;

void
foo (void)
{
  int d, e;
  for (d = 4; d < 19; ++d)
    for (e = 2; e >= 0; e--)
      {
	a = 0;
	a = 1;
      }
}

void
bar (void)
{
  int g, h, i;
  for (i = 1; i >= 0; i--)
    {
      b = f;
      for (g = 0; g <= 1; g++)
	{
	  if (c)
	    break;
	  for (h = 0; h <= 1; h++)
	    foo ();
	  foo ();
	}
    }
}


<|start_filename|>v2/testdata/tcc-0.9.26/tests/tcctest.c<|end_filename|>
/*
 * TCC auto test program
 */
#include "../config.h"

#if GCC_MAJOR >= 3

/* Unfortunately, gcc version < 3 does not handle that! */
#define ALL_ISOC99

/* only gcc 3 handles _Bool correctly */
#define BOOL_ISOC99

/* gcc 2.95.3 does not handle correctly CR in strings or after strays */
#define CORRECT_CR_HANDLING

#endif

/* deprecated and no longer supported in gcc 3.3 */
//#define ACCEPT_CR_IN_STRINGS

/* __VA_ARGS__ and __func__ support */
#define C99_MACROS

/* test various include syntaxes */

#define TCCLIB_INC <tcclib.h>
#define TCCLIB_INC1 <tcclib
#define TCCLIB_INC2 h>
#define TCCLIB_INC3 "tcclib"

#include TCCLIB_INC

#include TCCLIB_INC1.TCCLIB_INC2

#include TCCLIB_INC1.h>

/* gcc 3.2 does not accept that (bug ?) */
//#include TCCLIB_INC3 ".h"

#include <tcclib.h>

#include "tcclib.h"

void string_test();
void expr_test();
void macro_test();
void recursive_macro_test();
void scope_test();
void forward_test();
void funcptr_test();
void loop_test();
void switch_test();
void goto_test();
void enum_test();
void typedef_test();
void struct_test();
void array_test();
void expr_ptr_test();
void bool_test();
void expr2_test();
void constant_expr_test();
void expr_cmp_test();
void char_short_test();
void init_test(void);
void compound_literal_test(void);
int kr_test();
void struct_assign_test(void);
void cast_test(void);
void bitfield_test(void);
void c99_bool_test(void);
void float_test(void);
void longlong_test(void);
void manyarg_test(void);
void stdarg_test(void);
void whitespace_test(void);
void relocation_test(void);
void old_style_function(void);
void alloca_test(void);
void c99_vla_test(int size1, int size2);
void sizeof_test(void);
void typeof_test(void);
void local_label_test(void);
void statement_expr_test(void);
void asm_test(void);
void builtin_test(void);
void weak_test(void);
void global_data_test(void);
void cmp_comparison_test(void);
void math_cmp_test(void);
void callsave_test(void);
void builtin_frame_address_test(void);

int fib(int n);
void num(int n);
void forward_ref(void);
int isid(int c);

#define A 2
#define N 1234 + A
#define pf printf
#define M1(a, b)  (a) + (b)

#define str\
(s) # s
#define glue(a, b) a ## b
#define xglue(a, b) glue(a, b)
#define HIGHLOW "hello"
#define LOW LOW ", world"

static int onetwothree = 123;
#define onetwothree4 onetwothree
#define onetwothree xglue(onetwothree,4)

#define min(a, b) ((a) < (b) ? (a) : (b))

#ifdef C99_MACROS
#define dprintf(level,...) printf(__VA_ARGS__)
#endif

/* gcc vararg macros */
#define dprintf1(level, fmt, args...) printf(fmt, ## args)

#define MACRO_NOARGS()

#define AAA 3
#undef AAA
#define AAA 4

#if 1
#define B3 1
#elif 1
#define B3 2
#elif 0
#define B3 3
#else
#define B3 4
#endif

#define __INT64_C(c)	c ## LL
#define INT64_MIN	(-__INT64_C(9223372036854775807)-1)

int qq(int x)
{
    return x + 40;
}
#define qq(x) x

#define spin_lock(lock) do { } while (0)
#define wq_spin_lock spin_lock
#define TEST2() wq_spin_lock(a)

void macro_test(void)
{
    printf("macro:\n");
    pf("N=%d\n", N);
    printf("aaa=%d\n", AAA);

    printf("min=%d\n", min(1, min(2, -1)));

    printf("s1=%s\n", glue(HIGH, LOW));
    printf("s2=%s\n", xglue(HIGH, LOW));
    printf("s3=%s\n", str("c"));
    printf("s4=%s\n", str(a1));
    printf("B3=%d\n", B3);

    printf("onetwothree=%d\n", onetwothree);

#ifdef A
    printf("A defined\n");
#endif
#ifdef B
    printf("B defined\n");
#endif
#ifdef A
    printf("A defined\n");
#else
    printf("A not defined\n");
#endif
#ifdef B
    printf("B defined\n");
#else
    printf("B not defined\n");
#endif

#ifdef A
    printf("A defined\n");
#ifdef B
    printf("B1 defined\n");
#else
    printf("B1 not defined\n");
#endif
#else
    printf("A not defined\n");
#ifdef B
    printf("B2 defined\n");
#else
    printf("B2 not defined\n");
#endif
#endif

#if 1+1
    printf("test true1\n");
#endif
#if 0
    printf("test true2\n");
#endif
#if 1-1
    printf("test true3\n");
#endif
#if defined(A)
    printf("test trueA\n");
#endif
#if defined(B)
    printf("test trueB\n");
#endif

#if 0
    printf("test 0\n");
#elif 0
    printf("test 1\n");
#elif 2
    printf("test 2\n");
#else
    printf("test 3\n");
#endif

    MACRO_NOARGS();

#ifdef __LINE__
    printf("__LINE__ defined\n");
#endif

    printf("__LINE__=%d __FILE__=%s\n",
           __LINE__, __FILE__);
#line 200
    printf("__LINE__=%d __FILE__=%s\n",
           __LINE__, __FILE__);
#line 203 "test" 
    printf("__LINE__=%d __FILE__=%s\n",
           __LINE__, __FILE__);
#line 227 "tcctest.c"

    /* not strictly preprocessor, but we test it there */
#ifdef C99_MACROS
    printf("__func__ = %s\n", __func__);
    dprintf(1, "vaarg=%d\n", 1);
#endif
    dprintf1(1, "vaarg1\n");
    dprintf1(1, "vaarg1=%d\n", 2);
    dprintf1(1, "vaarg1=%d %d\n", 1, 2);

    /* gcc extension */
    printf("func='%s'\n", __FUNCTION__);

    /* complicated macros in glibc */
    printf("INT64_MIN=%Ld\n", INT64_MIN);
    {
        int a;
        a = 1;
        glue(a+, +);
        printf("a=%d\n", a);
        glue(a <, <= 2);
        printf("a=%d\n", a);
    }
    
    /* macro function with argument outside the macro string */
#define MF_s MF_hello
#define MF_hello(msg) printf("%s\n",msg)

#define MF_t printf("tralala\n"); MF_hello

    MF_s("hi");
    MF_t("hi");
    
    /* test macro substituion inside args (should not eat stream) */
    printf("qq=%d\n", qq(qq)(2));

    /* test zero argument case. NOTE: gcc 2.95.x does not accept a
       null argument without a space. gcc 3.2 fixes that. */

#define qq1(x) 1
    printf("qq1=%d\n", qq1( ));

    /* comment with stray handling *\
/
       /* this is a valid *\/ comment */
       /* this is a valid comment *\*/
    //  this is a valid\
comment

    /* test function macro substitution when the function name is
       substituted */
    TEST2();

    /* And again when the name and parenthes are separated by a
       comment.  */
    TEST2 /* the comment */ ();
}


static void print_num(char *fn, int line, int num) {
    printf("fn %s, line %d, num %d\n", fn, line, num);
}

void recursive_macro_test(void)
{

#define ELF32_ST_TYPE(val)              ((val) & 0xf)
#define ELF32_ST_INFO(bind, type)       (((bind) << 4) + ((type) & 0xf))
#define STB_WEAK        2               /* Weak symbol */
#define ELFW(type) ELF##32##_##type
    printf("%d\n", ELFW(ST_INFO)(STB_WEAK, ELFW(ST_TYPE)(123)));

#define WRAP(x) x
    
#define print_num(x) print_num(__FILE__,__LINE__,x)
    print_num(123);
    WRAP(print_num(123));
    WRAP(WRAP(print_num(123)));

static struct recursive_macro { int rm_field; } G;
#define rm_field (G.rm_field)
    printf("rm_field = %d\n", rm_field);
    printf("rm_field = %d\n", WRAP(rm_field));
    WRAP((printf("rm_field = %d %d\n", rm_field, WRAP(rm_field))));
}

int op(a,b)
{
    return a / b;
}

int ret(a)
{
    if (a == 2)
        return 1;
    if (a == 3)
        return 2;
    return 0;
}

void ps(const char *s)
{
    int c;
    while (1) {
        c = *s;
        if (c == 0)
            break;
        printf("%c", c);
        s++;
    }
}

const char foo1_string[] = "\
bar\n\
test\14\
1";

void string_test()
{
    unsigned int b;
    printf("string:\n");
    printf("\141\1423\143\n");/* dezdez test */
    printf("\x41\x42\x43\x3a\n");
    printf("c=%c\n", 'r');
    printf("wc=%C 0x%lx %C\n", L'a', L'\x1234', L'c');
    printf("foo1_string='%s'\n", foo1_string);
#if 0
    printf("wstring=%S\n", L"abc");
    printf("wstring=%S\n", L"abc" L"def" "ghi");
    printf("'\\377'=%d '\\xff'=%d\n", '\377', '\xff');
    printf("L'\\377'=%d L'\\xff'=%d\n", L'\377', L'\xff');
#endif
    ps("test\n");
    b = 32;
    while ((b = b + 1) < 96) {
        printf("%c", b);
    }
    printf("\n");
    printf("fib=%d\n", fib(33));
    b = 262144;
    while (b != 0x80000000) {
        num(b);
        b = b * 2;
    }
}

void loop_test()
{
    int i;
    i = 0;
    while (i < 10)
        printf("%d", i++);
    printf("\n");
    for(i = 0; i < 10;i++)
        printf("%d", i);
    printf("\n");
    i = 0;
    do {
        printf("%d", i++);
    } while (i < 10);
    printf("\n");

    char count = 123;
    /* c99 for loop init test */
    for (size_t count = 1; count < 3; count++)
        printf("count=%d\n", count);
    printf("count = %d\n", count);

    /* break/continue tests */
    i = 0;
    while (1) {
        if (i == 6)
            break;
        i++;
        if (i == 3)
            continue;
        printf("%d", i);
    }
    printf("\n");

    /* break/continue tests */
    i = 0;
    do {
        if (i == 6)
            break;
        i++;
        if (i == 3)
            continue;
        printf("%d", i);
    } while(1);
    printf("\n");

    for(i = 0;i < 10;i++) {
        if (i == 3)
            continue;
        printf("%d", i);
    }
    printf("\n");
}

typedef int typedef_and_label;

void goto_test()
{
    int i;
    static void *label_table[3] = { &&label1, &&label2, &&label3 };

    printf("goto:\n");
    i = 0;
    /* This needs to parse as label, not as start of decl.  */
 typedef_and_label:
 s_loop:
    if (i >= 10) 
        goto s_end;
    printf("%d", i);
    i++;
    goto s_loop;
 s_end:
    printf("\n");

    /* we also test computed gotos (GCC extension) */
    for(i=0;i<3;i++) {
        goto *label_table[i];
    label1:
        printf("label1\n");
        goto next;
    label2:
        printf("label2\n");
        goto next;
    label3:
        printf("label3\n");
    next: ;
    }
}

enum {
    E0,
    E1 = 2,
    E2 = 4,
    E3,
    E4,
};

enum test {
    E5 = 1000,
};

void enum_test()
{
    enum test b1;
    printf("enum:\n%d %d %d %d %d %d\n",
           E0, E1, E2, E3, E4, E5);
    b1 = 1;
    printf("b1=%d\n", b1);
}

typedef int *my_ptr;

typedef int mytype1;
typedef int mytype2;

void typedef_test()
{
    my_ptr a;
    mytype1 mytype2;
    int b;

    a = &b;
    *a = 1234;
    printf("typedef:\n");
    printf("a=%d\n", *a);
    mytype2 = 2;
    printf("mytype2=%d\n", mytype2);
}

void forward_test()
{
    printf("forward:\n");
    forward_ref();
    forward_ref();
}


void forward_ref(void)
{
    printf("forward ok\n");
}

typedef struct struct1 {
    int f1;
    int f2, f3;
    union union1 {
        int v1;
        int v2;
    } u;
    char str[3];
} struct1;

struct struct2 {
    int a;
    char b;
};

union union2 {
    int w1;
    int w2;
};

struct struct1 st1, st2;

int main(int argc, char **argv)
{
    string_test();
    expr_test();
    macro_test();
    recursive_macro_test();
    scope_test();
    forward_test();
    funcptr_test();
    loop_test();
    switch_test();
    goto_test();
    enum_test();
    typedef_test();
    struct_test();
    array_test();
    expr_ptr_test();
    bool_test();
    expr2_test();
    constant_expr_test();
    expr_cmp_test();
    char_short_test();
    init_test();
    compound_literal_test();
    kr_test();
    struct_assign_test();
    cast_test();
    bitfield_test();
    c99_bool_test();
    float_test();
    longlong_test();
    manyarg_test();
    stdarg_test();
    whitespace_test();
    relocation_test();
    old_style_function();
    alloca_test();
    c99_vla_test(5, 2);
    sizeof_test();
    typeof_test();
    statement_expr_test();
    local_label_test();
    asm_test();
    builtin_test();
#ifndef _WIN32
    weak_test();
#endif
    global_data_test();
    cmp_comparison_test();
    math_cmp_test();
    callsave_test();
    builtin_frame_address_test();
    return 0; 
}

int tab[3];
int tab2[3][2];

int g;

void f1(g)
{
    printf("g1=%d\n", g);
}

void scope_test()
{
    printf("scope:\n");
    g = 2;
    f1(1);
    printf("g2=%d\n", g);
    {
        int g;
        g = 3;
        printf("g3=%d\n", g);
        {
            int g;
            g = 4;
            printf("g4=%d\n", g);
        }
    }
    printf("g5=%d\n", g);
}

void array_test()
{
    int i, j, a[4];

    printf("array:\n");
    printf("sizeof(a) = %d\n", sizeof(a));
    printf("sizeof(\"a\") = %d\n", sizeof("a"));
#ifdef C99_MACROS
    printf("sizeof(__func__) = %d\n", sizeof(__func__));
#endif
    printf("sizeof tab %d\n", sizeof(tab));
    printf("sizeof tab2 %d\n", sizeof tab2);
    tab[0] = 1;
    tab[1] = 2;
    tab[2] = 3;
    printf("%d %d %d\n", tab[0], tab[1], tab[2]);
    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            tab2[i][j] = 10 * i + j;
    for(i=0;i<3*2;i++) {
        printf(" %3d", ((int *)tab2)[i]);
    }
    printf("\n");
    printf("sizeof(size_t)=%d\n", sizeof(size_t));
    printf("sizeof(ptrdiff_t)=%d\n", sizeof(ptrdiff_t));
}

void expr_test()
{
    int a, b;
    a = 0;
    printf("%d\n", a += 1);
    printf("%d\n", a -= 2);
    printf("%d\n", a *= 31232132);
    printf("%d\n", a /= 4);
    printf("%d\n", a %= 20);
    printf("%d\n", a &= 6);
    printf("%d\n", a ^= 7);
    printf("%d\n", a |= 8);
    printf("%d\n", a >>= 3);
    printf("%d\n", a <<= 4);

    a = 22321;
    b = -22321;
    printf("%d\n", a + 1);
    printf("%d\n", a - 2);
    printf("%d\n", a * 312);
    printf("%d\n", a / 4);
    printf("%d\n", b / 4);
    printf("%d\n", (unsigned)b / 4);
    printf("%d\n", a % 20);
    printf("%d\n", b % 20);
    printf("%d\n", (unsigned)b % 20);
    printf("%d\n", a & 6);
    printf("%d\n", a ^ 7);
    printf("%d\n", a | 8);
    printf("%d\n", a >> 3);
    printf("%d\n", b >> 3);
    printf("%d\n", (unsigned)b >> 3);
    printf("%d\n", a << 4);
    printf("%d\n", ~a);
    printf("%d\n", -a);
    printf("%d\n", +a);

    printf("%d\n", 12 + 1);
    printf("%d\n", 12 - 2);
    printf("%d\n", 12 * 312);
    printf("%d\n", 12 / 4);
    printf("%d\n", 12 % 20);
    printf("%d\n", 12 & 6);
    printf("%d\n", 12 ^ 7);
    printf("%d\n", 12 | 8);
    printf("%d\n", 12 >> 2);
    printf("%d\n", 12 << 4);
    printf("%d\n", ~12);
    printf("%d\n", -12);
    printf("%d\n", +12);
    printf("%d %d %d %d\n", 
           isid('a'), 
           isid('g'), 
           isid('T'), 
           isid('('));
}

int isid(int c)
{
    return (c >= 'a' & c <= 'z') | (c >= 'A' & c <= 'Z') | c == '_';
}

/**********************/

int vstack[10], *vstack_ptr;

void vpush(int vt, int vc)
{
    *vstack_ptr++ = vt;
    *vstack_ptr++ = vc;
}

void vpop(int *ft, int *fc)
{
    *fc = *--vstack_ptr;
    *ft = *--vstack_ptr;
}

void expr2_test()
{
    int a, b;

    printf("expr2:\n");
    vstack_ptr = vstack;
    vpush(1432432, 2);
    vstack_ptr[-2] &= ~0xffffff80;
    vpop(&a, &b);
    printf("res= %d %d\n", a, b);
}

void constant_expr_test()
{
    int a;
    printf("constant_expr:\n");
    a = 3;
    printf("%d\n", a * 16);
    printf("%d\n", a * 1);
    printf("%d\n", a + 0);
}

int tab4[10];

void expr_ptr_test()
{
    int *p, *q;
    int i = -1;

    printf("expr_ptr:\n");
    p = tab4;
    q = tab4 + 10;
    printf("diff=%d\n", q - p);
    p++;
    printf("inc=%d\n", p - tab4);
    p--;
    printf("dec=%d\n", p - tab4);
    ++p;
    printf("inc=%d\n", p - tab4);
    --p;
    printf("dec=%d\n", p - tab4);
    printf("add=%d\n", p + 3 - tab4);
    printf("add=%d\n", 3 + p - tab4);

    /* check if 64bit support is ok */
    q = p = 0;
    q += i;
    printf("%p %p %ld\n", q, p, p-q);
    printf("%d %d %d %d %d %d\n",
           p == q, p != q, p < q, p <= q, p >= q, p > q);
    i = 0xf0000000;
    p += i;
    printf("%p %p %ld\n", q, p, p-q);
    printf("%d %d %d %d %d %d\n",
           p == q, p != q, p < q, p <= q, p >= q, p > q);
    p = (int *)((char *)p + 0xf0000000);
    printf("%p %p %ld\n", q, p, p-q);
    printf("%d %d %d %d %d %d\n",
           p == q, p != q, p < q, p <= q, p >= q, p > q);
    p += 0xf0000000;
    printf("%p %p %ld\n", q, p, p-q);
    printf("%d %d %d %d %d %d\n",
           p == q, p != q, p < q, p <= q, p >= q, p > q);
    {
        struct size12 {
            int i, j, k;
        };
        struct size12 s[2], *sp = s;
        int i, j;
        sp->i = 42;
        sp++;
        j = -1;
        printf("%d\n", sp[j].i);
    }
}

void expr_cmp_test()
{
    int a, b;
    printf("constant_expr:\n");
    a = -1;
    b = 1;
    printf("%d\n", a == a);
    printf("%d\n", a != a);

    printf("%d\n", a < b);
    printf("%d\n", a <= b);
    printf("%d\n", a <= a);
    printf("%d\n", b >= a);
    printf("%d\n", a >= a);
    printf("%d\n", b > a);

    printf("%d\n", (unsigned)a < b);
    printf("%d\n", (unsigned)a <= b);
    printf("%d\n", (unsigned)a <= a);
    printf("%d\n", (unsigned)b >= a);
    printf("%d\n", (unsigned)a >= a);
    printf("%d\n", (unsigned)b > a);
}

struct empty {
};

struct aligntest1 {
    char a[10];
};

struct aligntest2 {
    int a;
    char b[10];
};

struct aligntest3 {
    double a, b;
};

struct aligntest4 {
    double a[0];
};

void struct_test()
{
    struct1 *s;
    union union2 u;

    printf("struct:\n");
    printf("sizes: %d %d %d %d\n",
           sizeof(struct struct1),
           sizeof(struct struct2),
           sizeof(union union1),
           sizeof(union union2));
    st1.f1 = 1;
    st1.f2 = 2;
    st1.f3 = 3;
    printf("st1: %d %d %d\n",
           st1.f1, st1.f2, st1.f3);
    st1.u.v1 = 1;
    st1.u.v2 = 2;
    printf("union1: %d\n", st1.u.v1);
    u.w1 = 1;
    u.w2 = 2;
    printf("union2: %d\n", u.w1);
    s = &st2;
    s->f1 = 3;
    s->f2 = 2;
    s->f3 = 1;
    printf("st2: %d %d %d\n",
           s->f1, s->f2, s->f3);
    printf("str_addr=%x\n", (int)st1.str - (int)&st1.f1);

    /* align / size tests */
    printf("aligntest1 sizeof=%d alignof=%d\n",
           sizeof(struct aligntest1), __alignof__(struct aligntest1));
    printf("aligntest2 sizeof=%d alignof=%d\n",
           sizeof(struct aligntest2), __alignof__(struct aligntest2));
    printf("aligntest3 sizeof=%d alignof=%d\n",
           sizeof(struct aligntest3), __alignof__(struct aligntest3));
    printf("aligntest4 sizeof=%d alignof=%d\n",
           sizeof(struct aligntest4), __alignof__(struct aligntest4));
           
    /* empty structures (GCC extension) */
    printf("sizeof(struct empty) = %d\n", sizeof(struct empty));
    printf("alignof(struct empty) = %d\n", __alignof__(struct empty));
}

/* XXX: depend on endianness */
void char_short_test()
{
    int var1, var2;

    printf("char_short:\n");

    var1 = 0x01020304;
    var2 = 0xfffefdfc;
    printf("s8=%d %d\n", 
           *(char *)&var1, *(char *)&var2);
    printf("u8=%d %d\n", 
           *(unsigned char *)&var1, *(unsigned char *)&var2);
    printf("s16=%d %d\n", 
           *(short *)&var1, *(short *)&var2);
    printf("u16=%d %d\n", 
           *(unsigned short *)&var1, *(unsigned short *)&var2);
    printf("s32=%d %d\n", 
           *(int *)&var1, *(int *)&var2);
    printf("u32=%d %d\n", 
           *(unsigned int *)&var1, *(unsigned int *)&var2);
    *(char *)&var1 = 0x08;
    printf("var1=%x\n", var1);
    *(short *)&var1 = 0x0809;
    printf("var1=%x\n", var1);
    *(int *)&var1 = 0x08090a0b;
    printf("var1=%x\n", var1);
}

/******************/

typedef struct Sym {
    int v;
    int t;
    int c;
    struct Sym *next;
    struct Sym *prev;
} Sym;

#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))

static int toupper1(int a)
{
    return TOUPPER(a);
}

void bool_test()
{
    int *s, a, b, t, f, i;

    a = 0;
    s = (void*)0;
    printf("!s=%d\n", !s);

    if (!s || !s[0])
        a = 1;
    printf("a=%d\n", a);

    printf("a=%d %d %d\n", 0 || 0, 0 || 1, 1 || 1);
    printf("a=%d %d %d\n", 0 && 0, 0 && 1, 1 && 1);
    printf("a=%d %d\n", 1 ? 1 : 0, 0 ? 1 : 0);
#if 1 && 1
    printf("a1\n");
#endif
#if 1 || 0
    printf("a2\n");
#endif
#if 1 ? 0 : 1
    printf("a3\n");
#endif
#if 0 ? 0 : 1
    printf("a4\n");
#endif

    a = 4;
    printf("b=%d\n", a + (0 ? 1 : a / 2));

    /* test register spilling */
    a = 10;
    b = 10;
    a = (a + b) * ((a < b) ?
                   ((b - a) * (a - b)): a + b);
    printf("a=%d\n", a);

    /* test complex || or && expressions */
    t = 1;
    f = 0;
    a = 32;
    printf("exp=%d\n", f == (32 <= a && a <= 3));
    printf("r=%d\n", (t || f) + (t && f));

    /* test ? : cast */
    {
        int aspect_on;
        int aspect_native = 65536;
        double bfu_aspect = 1.0;
        int aspect;
        for(aspect_on = 0; aspect_on < 2; aspect_on++) {
            aspect=aspect_on?(aspect_native*bfu_aspect+0.5):65535UL;
            printf("aspect=%d\n", aspect);
        }
    }

    /* test ? : GCC extension */
    {
        static int v1 = 34 ? : -1; /* constant case */
        static int v2 = 0 ? : -1; /* constant case */
        int a = 30;
        
        printf("%d %d\n", v1, v2);
        printf("%d %d\n", a - 30 ? : a * 2, a + 1 ? : a * 2);
    }

    /* again complex expression */
    for(i=0;i<256;i++) {
        if (toupper1 (i) != TOUPPER (i))
            printf("error %d\n", i);
    }
}

/* GCC accepts that */
static int tab_reinit[];
static int tab_reinit[10];

//int cinit1; /* a global variable can be defined several times without error ! */
int cinit1; 
int cinit1; 
int cinit1 = 0;
int *cinit2 = (int []){3, 2, 1};

void compound_literal_test(void)
{
    int *p, i;
    char *q, *q3;

    printf("compound_test:\n");

    p = (int []){1, 2, 3};
    for(i=0;i<3;i++)
        printf(" %d", p[i]);
    printf("\n");

    for(i=0;i<3;i++)
        printf("%d", cinit2[i]);
    printf("\n");

    q = "tralala1";
    printf("q1=%s\n", q);

    q = (char *){ "tralala2" };
    printf("q2=%s\n", q);

    q3 = (char *){ q };
    printf("q3=%s\n", q3);

    q = (char []){ "tralala3" };
    printf("q4=%s\n", q);

#ifdef ALL_ISOC99
    p = (int []){1, 2, cinit1 + 3};
    for(i=0;i<3;i++)
        printf(" %d", p[i]);
    printf("\n");

    for(i=0;i<3;i++) {
        p = (int []){1, 2, 4 + i};
        printf("%d %d %d\n", 
               p[0],
               p[1],
               p[2]);
    }
#endif
}

/* K & R protos */

kr_func1(a, b)
{
    return a + b;
}

int kr_func2(a, b)
{
    return a + b;
}

kr_test()
{
    printf("kr_test:\n");
    printf("func1=%d\n", kr_func1(3, 4));
    printf("func2=%d\n", kr_func2(3, 4));
    return 0;
}

void num(int n)
{
    char *tab, *p;
    tab = (char*)malloc(20); 
    p = tab;
    while (1) {
        *p = 48 + (n % 10);
        p++;
        n = n / 10;
        if (n == 0)
            break;
    }
    while (p != tab) {
        p--;
        printf("%c", *p);
    }
    printf("\n");
    free(tab);
}

/* structure assignment tests */
struct structa1 {
    int f1;
    char f2;
};

struct structa1 ssta1;

void struct_assign_test1(struct structa1 s1, int t, float f)
{
    printf("%d %d %d %f\n", s1.f1, s1.f2, t, f);
}

struct structa1 struct_assign_test2(struct structa1 s1, int t)
{
    s1.f1 += t;
    s1.f2 -= t;
    return s1;
}

void struct_assign_test(void)
{
    struct S {
      struct structa1 lsta1, lsta2;
      int i;
    } s, *ps;
    
    ps = &s;
    ps->i = 4;
#if 0
    printf("struct_assign_test:\n");

    s.lsta1.f1 = 1;
    s.lsta1.f2 = 2;
    printf("%d %d\n", s.lsta1.f1, s.lsta1.f2);
    s.lsta2 = s.lsta1;
    printf("%d %d\n", s.lsta2.f1, s.lsta2.f2);
#else
    s.lsta2.f1 = 1;
    s.lsta2.f2 = 2;
#endif
    struct_assign_test1(ps->lsta2, 3, 4.5);
    
    printf("before call: %d %d\n", s.lsta2.f1, s.lsta2.f2);
    ps->lsta2 = struct_assign_test2(ps->lsta2, ps->i);
    printf("after call: %d %d\n", ps->lsta2.f1, ps->lsta2.f2);

    static struct {
        void (*elem)();
    } t[] = {
        /* XXX: we should allow this even without braces */
        { struct_assign_test }
    };
    printf("%d\n", struct_assign_test == t[0].elem);
}

/* casts to short/char */

void cast1(char a, short b, unsigned char c, unsigned short d)
{
    printf("%d %d %d %d\n", a, b, c, d);
}

char bcast;
short scast;

void cast_test()
{
    int a;
    char c;
    char tab[10];
    unsigned b,d;
    short s;
    char *p = NULL;
    p -= 0x700000000042;

    printf("cast_test:\n");
    a = 0xfffff;
    cast1(a, a, a, a);
    a = 0xffffe;
    printf("%d %d %d %d\n",
           (char)(a + 1),
           (short)(a + 1),
           (unsigned char)(a + 1),
           (unsigned short)(a + 1));
    printf("%d %d %d %d\n",
           (char)0xfffff,
           (short)0xfffff,
           (unsigned char)0xfffff,
           (unsigned short)0xfffff);

    a = (bcast = 128) + 1;
    printf("%d\n", a);
    a = (scast = 65536) + 1;
    printf("%d\n", a);
    
    printf("sizeof(c) = %d, sizeof((int)c) = %d\n", sizeof(c), sizeof((int)c));
    
    /* test cast from unsigned to signed short to int */
    b = 0xf000;
    d = (short)b;
    printf("((unsigned)(short)0x%08x) = 0x%08x\n", b, d);
    b = 0xf0f0;
    d = (char)b;
    printf("((unsigned)(char)0x%08x) = 0x%08x\n", b, d);
    
    /* test implicit int casting for array accesses */
    c = 0;
    tab[1] = 2;
    tab[c] = 1;
    printf("%d %d\n", tab[0], tab[1]);

    /* test implicit casting on some operators */
    printf("sizeof(+(char)'a') = %d\n", sizeof(+(char)'a'));
    printf("sizeof(-(char)'a') = %d\n", sizeof(-(char)'a'));
    printf("sizeof(~(char)'a') = %d\n", sizeof(-(char)'a'));

    /* from pointer to integer types */
    printf("%d %d %ld %ld %lld %lld\n",
           (int)p, (unsigned int)p,
           (long)p, (unsigned long)p,
           (long long)p, (unsigned long long)p);

    /* from integers to pointers */
    printf("%p %p %p %p\n",
           (void *)a, (void *)b, (void *)c, (void *)d);
}

/* initializers tests */
struct structinit1 {
    int f1;
    char f2;
    short f3;
    int farray[3];
};

int sinit1 = 2;
int sinit2 = { 3 };
int sinit3[3] = { 1, 2, {{3}}, };
int sinit4[3][2] = { {1, 2}, {3, 4}, {5, 6} };
int sinit5[3][2] = { 1, 2, 3, 4, 5, 6 };
int sinit6[] = { 1, 2, 3 };
int sinit7[] = { [2] = 3, [0] = 1, 2 };
char sinit8[] = "hello" "trala";

struct structinit1 sinit9 = { 1, 2, 3 };
struct structinit1 sinit10 = { .f2 = 2, 3, .f1 = 1 };
struct structinit1 sinit11 = { .f2 = 2, 3, .f1 = 1, 
#ifdef ALL_ISOC99
                               .farray[0] = 10,
                               .farray[1] = 11,
                               .farray[2] = 12,
#endif
};

char *sinit12 = "hello world";
char *sinit13[] = {
    "test1",
    "test2",
    "test3",
};
char sinit14[10] = { "abc" };
int sinit15[3] = { sizeof(sinit15), 1, 2 };

struct { int a[3], b; } sinit16[] = { { 1 }, 2 };

struct bar {
        char *s;
        int len;
} sinit17[] = {
        "a1", 4,
        "a2", 1
};

int sinit18[10] = {
    [2 ... 5] = 20,
    2,
    [8] = 10,
};

struct complexinit0 {
    int a;
    int b;
};

struct complexinit {
    int a;
    const struct complexinit0 *b;
};

const static struct complexinit cix[] = {
    [0] = {
	.a = 2000,
	.b = (const struct complexinit0[]) {
		{ 2001, 2002 },
		{ 2003, 2003 },
		{}
	}
    }
};

struct complexinit2 {
	int a;
	int b[];
};

struct complexinit2 cix20;

struct complexinit2 cix21 = {
	.a = 3000,
	.b = { 3001, 3002, 3003 }
};

struct complexinit2 cix22 = {
	.a = 4000,
	.b = { 4001, 4002, 4003, 4004, 4005, 4006 }
};

void init_test(void)
{
    int linit1 = 2;
    int linit2 = { 3 };
    int linit4[3][2] = { {1, 2}, {3, 4}, {5, 6} };
    int linit6[] = { 1, 2, 3 };
    int i, j;
    char linit8[] = "hello" "trala";
    int linit12[10] = { 1, 2 };
    int linit13[10] = { 1, 2, [7] = 3, [3] = 4, };
    char linit14[10] = "abc";
    int linit15[10] = { linit1, linit1 + 1, [6] = linit1 + 2, };
    struct linit16 { int a1, a2, a3, a4; } linit16 = { 1, .a3 = 2 };
    int linit17 = sizeof(linit17);
    
    printf("init_test:\n");

    printf("sinit1=%d\n", sinit1);
    printf("sinit2=%d\n", sinit2);
    printf("sinit3=%d %d %d %d\n", 
           sizeof(sinit3),
           sinit3[0],
           sinit3[1],
           sinit3[2]
           );
    printf("sinit6=%d\n", sizeof(sinit6));
    printf("sinit7=%d %d %d %d\n", 
           sizeof(sinit7),
           sinit7[0],
           sinit7[1],
           sinit7[2]
           );
    printf("sinit8=%s\n", sinit8);
    printf("sinit9=%d %d %d\n", 
           sinit9.f1,
           sinit9.f2,
           sinit9.f3
           );
    printf("sinit10=%d %d %d\n", 
           sinit10.f1,
           sinit10.f2,
           sinit10.f3
           );
    printf("sinit11=%d %d %d %d %d %d\n", 
           sinit11.f1,
           sinit11.f2,
           sinit11.f3,
           sinit11.farray[0],
           sinit11.farray[1],
           sinit11.farray[2]
           );

    for(i=0;i<3;i++)
        for(j=0;j<2;j++)
            printf("[%d][%d] = %d %d %d\n", 
                   i, j, sinit4[i][j], sinit5[i][j], linit4[i][j]);
    printf("linit1=%d\n", linit1);
    printf("linit2=%d\n", linit2);
    printf("linit6=%d\n", sizeof(linit6));
    printf("linit8=%d %s\n", sizeof(linit8), linit8);

    printf("sinit12=%s\n", sinit12);
    printf("sinit13=%d %s %s %s\n",
           sizeof(sinit13), 
           sinit13[0],
           sinit13[1],
           sinit13[2]);
    printf("sinit14=%s\n", sinit14);

    for(i=0;i<10;i++) printf(" %d", linit12[i]);
    printf("\n");
    for(i=0;i<10;i++) printf(" %d", linit13[i]);
    printf("\n");
    for(i=0;i<10;i++) printf(" %d", linit14[i]);
    printf("\n");
    for(i=0;i<10;i++) printf(" %d", linit15[i]);
    printf("\n");
    printf("%d %d %d %d\n", 
           linit16.a1,
           linit16.a2,
           linit16.a3,
           linit16.a4);
    /* test that initialisation is done after variable declare */
    printf("linit17=%d\n", linit17);
    printf("sinit15=%d\n", sinit15[0]);
    printf("sinit16=%d %d\n", sinit16[0].a[0], sinit16[1].a[0]);
    printf("sinit17=%s %d %s %d\n",
           sinit17[0].s, sinit17[0].len,
           sinit17[1].s, sinit17[1].len);
    for(i=0;i<10;i++)
        printf("%x ", sinit18[i]);
    printf("\n");
    /* complex init check */
    printf("cix: %d %d %d %d %d %d %d\n",
	cix[0].a,
	cix[0].b[0].a, cix[0].b[0].b,
	cix[0].b[1].a, cix[0].b[1].b,
	cix[0].b[2].a, cix[0].b[2].b);
    printf("cix2: %d %d\n", cix21.b[2], cix22.b[5]);
    printf("sizeof cix20 %d, cix21 %d, sizeof cix22 %d\n", sizeof cix20, sizeof cix21, sizeof cix22);
}


void switch_test()
{
    int i;

    for(i=0;i<15;i++) {
        switch(i) {
        case 0:
        case 1:
            printf("a");
            break;
        default:
            printf("%d", i);
            break;
        case 8 ... 12:
            printf("c");
            break;
        case 3:
            printf("b");
            break;
        }
    }
    printf("\n");
}

/* ISOC99 _Bool type */
void c99_bool_test(void)
{
#ifdef BOOL_ISOC99
    int a;
    _Bool b;

    printf("bool_test:\n");
    printf("sizeof(_Bool) = %d\n", sizeof(_Bool));
    a = 3;
    printf("cast: %d %d %d\n", (_Bool)10, (_Bool)0, (_Bool)a);
    b = 3;
    printf("b = %d\n", b);
    b++;
    printf("b = %d\n", b);
#endif
}

void bitfield_test(void)
{
    int a;
    short sa;
    unsigned char ca;
    struct sbf1 {
        int f1 : 3;
        int : 2;
        int f2 : 1;
        int : 0;
        int f3 : 5;
        int f4 : 7;
        unsigned int f5 : 7;
    } st1;
    printf("bitfield_test:");
    printf("sizeof(st1) = %d\n", sizeof(st1));

    st1.f1 = 3;
    st1.f2 = 1;
    st1.f3 = 15;
    a = 120;
    st1.f4 = a;
    st1.f5 = a;
    st1.f5++;
    printf("%d %d %d %d %d\n",
           st1.f1, st1.f2, st1.f3, st1.f4, st1.f5);
    sa = st1.f5;
    ca = st1.f5;
    printf("%d %d\n", sa, ca);

    st1.f1 = 7;
    if (st1.f1 == -1) 
        printf("st1.f1 == -1\n");
    else 
        printf("st1.f1 != -1\n");
    if (st1.f2 == -1) 
        printf("st1.f2 == -1\n");
    else 
        printf("st1.f2 != -1\n");

    /* bit sizes below must be bigger than 32 since GCC doesn't allow
       long-long bitfields whose size is not bigger than int */
    struct sbf2 {
        long long f1 : 45;
        long long : 2;
        long long f2 : 35;
        unsigned long long f3 : 38;
    } st2;
    st2.f1 = 0x123456789ULL;
    a = 120;
    st2.f2 = (long long)a << 25;
    st2.f3 = a;
    st2.f2++;
    printf("%lld %lld %lld\n", st2.f1, st2.f2, st2.f3);
}

#ifdef __x86_64__
#define FLOAT_FMT "%f\n"
#else
/* x86's float isn't compatible with GCC */
#define FLOAT_FMT "%.5f\n"
#endif

/* declare strto* functions as they are C99 */
double strtod(const char *nptr, char **endptr);
float strtof(const char *nptr, char **endptr);
long double strtold(const char *nptr, char **endptr);

#define FTEST(prefix, type, fmt)\
void prefix ## cmp(type a, type b)\
{\
    printf("%d %d %d %d %d %d\n",\
           a == b,\
           a != b,\
           a < b,\
           a > b,\
           a >= b,\
           a <= b);\
    printf(fmt " " fmt " " fmt " " fmt " " fmt " " fmt " " fmt "\n",\
           a,\
           b,\
           a + b,\
           a - b,\
           a * b,\
           a / b,\
           -a);\
    printf(fmt "\n", ++a);\
    printf(fmt "\n", a++);\
    printf(fmt "\n", a);\
    b = 0;\
    printf("%d %d\n", !a, !b);\
}\
void prefix ## fcast(type a)\
{\
    float fa;\
    double da;\
    long double la;\
    int ia;\
    unsigned int ua;\
    type b;\
    fa = a;\
    da = a;\
    la = a;\
    printf("ftof: %f %f %Lf\n", fa, da, la);\
    ia = (int)a;\
    ua = (unsigned int)a;\
    printf("ftoi: %d %u\n", ia, ua);\
    ia = -1234;\
    ua = 0x81234500;\
    b = ia;\
    printf("itof: " fmt "\n", b);\
    b = ua;\
    printf("utof: " fmt "\n", b);\
}\
\
float prefix ## retf(type a) { return a; }\
double prefix ## retd(type a) { return a; }\
long double prefix ## retld(type a) { return a; }\
\
void prefix ## call(void)\
{\
    printf("float: " FLOAT_FMT, prefix ## retf(42.123456789));\
    printf("double: %f\n", prefix ## retd(42.123456789));\
    printf("long double: %Lf\n", prefix ## retld(42.123456789));\
    printf("strto%s: %f\n", #prefix, (double)strto ## prefix("1.2", NULL));\
}\
\
void prefix ## test(void)\
{\
    printf("testing '%s'\n", #type);\
    prefix ## cmp(1, 2.5);\
    prefix ## cmp(2, 1.5);\
    prefix ## cmp(1, 1);\
    prefix ## fcast(234.6);\
    prefix ## fcast(-2334.6);\
    prefix ## call();\
}

FTEST(f, float, "%f")
FTEST(d, double, "%f")
FTEST(ld, long double, "%Lf")

double ftab1[3] = { 1.2, 3.4, -5.6 };


void float_test(void)
{
    float fa, fb;
    double da, db;
    int a;
    unsigned int b;

    printf("float_test:\n");
    printf("sizeof(float) = %d\n", sizeof(float));
    printf("sizeof(double) = %d\n", sizeof(double));
    printf("sizeof(long double) = %d\n", sizeof(long double));
    ftest();
    dtest();
    ldtest();
    printf("%f %f %f\n", ftab1[0], ftab1[1], ftab1[2]);
    printf("%f %f %f\n", 2.12, .5, 2.3e10);
    //    printf("%f %f %f\n", 0x1234p12, 0x1e23.23p10, 0x12dp-10);
    da = 123;
    printf("da=%f\n", da);
    fa = 123;
    printf("fa=%f\n", fa);
    a = 4000000000;
    da = a;
    printf("da = %f\n", da);
    b = 4000000000;
    db = b;
    printf("db = %f\n", db);
}

int fib(int n)
{
    if (n <= 2)
        return 1;
    else
        return fib(n-1) + fib(n-2);
}

void funcptr_test()
{
    void (*func)(int);
    int a;
    struct {
        int dummy;
        void (*func)(int);
    } st1;

    printf("funcptr:\n");
    func = &num;
    (*func)(12345);
    func = num;
    a = 1;
    a = 1;
    func(12345);
    /* more complicated pointer computation */
    st1.func = num;
    st1.func(12346);
    printf("sizeof1 = %d\n", sizeof(funcptr_test));
    printf("sizeof2 = %d\n", sizeof funcptr_test);
    printf("sizeof3 = %d\n", sizeof(&funcptr_test));
    printf("sizeof4 = %d\n", sizeof &funcptr_test);
}

void lloptest(long long a, long long b)
{
    unsigned long long ua, ub;

    ua = a;
    ub = b;
    /* arith */
    printf("arith: %Ld %Ld %Ld\n",
           a + b,
           a - b,
           a * b);
    
    if (b != 0) {
        printf("arith1: %Ld %Ld\n",
           a / b,
           a % b);
    }

    /* binary */
    printf("bin: %Ld %Ld %Ld\n",
           a & b,
           a | b,
           a ^ b);

    /* tests */
    printf("test: %d %d %d %d %d %d\n",
           a == b,
           a != b,
           a < b,
           a > b,
           a >= b,
           a <= b);
    
    printf("utest: %d %d %d %d %d %d\n",
           ua == ub,
           ua != ub,
           ua < ub,
           ua > ub,
           ua >= ub,
           ua <= ub);

    /* arith2 */
    a++;
    b++;
    printf("arith2: %Ld %Ld\n", a, b);
    printf("arith2: %Ld %Ld\n", a++, b++);
    printf("arith2: %Ld %Ld\n", --a, --b);
    printf("arith2: %Ld %Ld\n", a, b);
    b = ub = 0;
    printf("not: %d %d %d %d\n", !a, !ua, !b, !ub);
}

void llshift(long long a, int b)
{
    printf("shift: %Ld %Ld %Ld\n",
           (unsigned long long)a >> b,
           a >> b,
           a << b);
    printf("shiftc: %Ld %Ld %Ld\n",
           (unsigned long long)a >> 3,
           a >> 3,
           a << 3);
    printf("shiftc: %Ld %Ld %Ld\n",
           (unsigned long long)a >> 35,
           a >> 35,
           a << 35);
}

void llfloat(void)
{
    float fa;
    double da;
    long double lda;
    long long la, lb, lc;
    unsigned long long ula, ulb, ulc;
    la = 0x12345678;
    ula = 0x72345678;
    la = (la << 20) | 0x12345;
    ula = ula << 33;
    printf("la=%Ld ula=%Lu\n", la, ula);

    fa = la;
    da = la;
    lda = la;
    printf("lltof: %f %f %Lf\n", fa, da, lda);

    la = fa;
    lb = da;
    lc = lda;
    printf("ftoll: %Ld %Ld %Ld\n", la, lb, lc);

    fa = ula;
    da = ula;
    lda = ula;
    printf("ulltof: %f %f %Lf\n", fa, da, lda);

    ula = fa;
    ulb = da;
    ulc = lda;
    printf("ftoull: %Lu %Lu %Lu\n", ula, ulb, ulc);
}

long long llfunc1(int a)
{
    return a * 2;
}

struct S {
    int id; 
    char item;
};

long long int value(struct S *v)
{
    return ((long long int)v->item);
}

void longlong_test(void)
{
    long long a, b, c;
    int ia;
    unsigned int ua;
    printf("longlong_test:\n");
    printf("sizeof(long long) = %d\n", sizeof(long long));
    ia = -1;
    ua = -2;
    a = ia;
    b = ua;
    printf("%Ld %Ld\n", a, b);
    printf("%Ld %Ld %Ld %Lx\n", 
           (long long)1, 
           (long long)-2,
           1LL,
           0x1234567812345679);
    a = llfunc1(-3);
    printf("%Ld\n", a);

    lloptest(1000, 23);
    lloptest(0xff, 0x1234);
    b = 0x72345678 << 10;
    lloptest(-3, b);
    llshift(0x123, 5);
    llshift(-23, 5);
    b = 0x72345678LL << 10;
    llshift(b, 47);

    llfloat();
#if 1
    b = 0x12345678;
    a = -1;
    c = a + b;
    printf("%Lx\n", c);
#endif

    /* long long reg spill test */
    {
          struct S a;

          a.item = 3;
          printf("%lld\n", value(&a));
    }
    lloptest(0x80000000, 0);

    /* another long long spill test */
    {
        long long *p, v;
        v = 1;
        p = &v;
        p[0]++;
        printf("%lld\n", *p);
    }

    a = 68719476720LL;
    b = 4294967295LL;
    printf("%d %d %d %d\n", a > b, a < b, a >= b, a <= b);

    printf("%Ld\n", 0x123456789LLU);
}

void manyarg_test(void)
{
    long double ld = 1234567891234LL;
    printf("manyarg_test:\n");
    printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f\n",
           1, 2, 3, 4, 5, 6, 7, 8,
           0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0);
    printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
           "%Ld %Ld %f %f\n",
           1, 2, 3, 4, 5, 6, 7, 8,
           0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
           1234567891234LL, 987654321986LL,
           42.0, 43.0);
    printf("%Lf %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
           "%Ld %Ld %f %f\n",
           ld, 1, 2, 3, 4, 5, 6, 7, 8,
           0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
           1234567891234LL, 987654321986LL,
           42.0, 43.0);
    /* XXX: known bug of x86-64 */
#ifndef __x86_64__
    printf("%d %d %d %d %d %d %d %d %Lf\n",
           1, 2, 3, 4, 5, 6, 7, 8, ld);
    printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
           "%Ld %Ld %f %f %Lf\n",
           1, 2, 3, 4, 5, 6, 7, 8,
           0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
           1234567891234LL, 987654321986LL,
           42.0, 43.0, ld);
    printf("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
           "%Lf %Ld %Ld %f %f %Lf\n",
           1, 2, 3, 4, 5, 6, 7, 8,
           0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
           ld, 1234567891234LL, 987654321986LL,
           42.0, 43.0, ld);
#endif
}

void vprintf1(const char *fmt, ...)
{
    va_list ap, aq;
    const char *p;
    int c, i;
    double d;
    long long ll;
    long double ld;

    va_start(aq, fmt);
    va_copy(ap, aq);
    
    p = fmt;
    for(;;) {
        c = *p;
        if (c == '\0')
            break;
        p++;
        if (c == '%') {
            c = *p;
            switch(c) {
            case '\0':
                goto the_end;
            case 'd':
                i = va_arg(ap, int);
                printf("%d", i);
                break;
            case 'f':
                d = va_arg(ap, double);
                printf("%f", d);
                break;
            case 'l':
                ll = va_arg(ap, long long);
                printf("%Ld", ll);
                break;
            case 'F':
                ld = va_arg(ap, long double);
                printf("%Lf", ld);
                break;
            }
            p++;
        } else {
            putchar(c);
        }
    }
 the_end:
    va_end(aq);
    va_end(ap);
}

struct myspace {
    short int profile;
};

void stdarg_for_struct(struct myspace bob, ...)
{
    struct myspace george, bill;
    va_list ap;
    short int validate;

    va_start(ap, bob);
    bill     = va_arg(ap, struct myspace);
    george   = va_arg(ap, struct myspace);
    validate = va_arg(ap, int);
    printf("stdarg_for_struct: %d %d %d %d\n",
           bob.profile, bill.profile, george.profile, validate);
    va_end(ap);
}

void stdarg_test(void)
{
    long double ld = 1234567891234LL;
    struct myspace bob;

    vprintf1("%d %d %d\n", 1, 2, 3);
    vprintf1("%f %d %f\n", 1.0, 2, 3.0);
    vprintf1("%l %l %d %f\n", 1234567891234LL, 987654321986LL, 3, 1234.0);
    vprintf1("%F %F %F\n", 1.2L, 2.3L, 3.4L);
#ifdef __x86_64__
    /* a bug of x86's TCC */
    vprintf1("%d %f %l %F %d %f %l %F\n",
             1, 1.2, 3L, 4.5L, 6, 7.8, 9L, 0.1L);
#endif
    vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f\n",
             1, 2, 3, 4, 5, 6, 7, 8,
             0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8);
    vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f\n",
             1, 2, 3, 4, 5, 6, 7, 8,
             0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0);
    vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
             "%l %l %f %f\n",
             1, 2, 3, 4, 5, 6, 7, 8,
             0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
             1234567891234LL, 987654321986LL,
             42.0, 43.0);
    vprintf1("%F %d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
             "%l %l %f %f\n",
             ld, 1, 2, 3, 4, 5, 6, 7, 8,
             0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
             1234567891234LL, 987654321986LL,
             42.0, 43.0);
    vprintf1("%d %d %d %d %d %d %d %d %F\n",
             1, 2, 3, 4, 5, 6, 7, 8, ld);
    vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
             "%l %l %f %f %F\n",
             1, 2, 3, 4, 5, 6, 7, 8,
             0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
             1234567891234LL, 987654321986LL,
             42.0, 43.0, ld);
    vprintf1("%d %d %d %d %d %d %d %d %f %f %f %f %f %f %f %f %f %f "
             "%F %l %l %f %f %F\n",
             1, 2, 3, 4, 5, 6, 7, 8,
             0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9, 9.0,
             ld, 1234567891234LL, 987654321986LL,
             42.0, 43.0, ld);

    bob.profile = 42;
    stdarg_for_struct(bob, bob, bob, bob.profile);
}

void whitespace_test(void)
{
    char *str;


#if 1
    pri\
ntf("whitspace:\n");
#endif
    pf("N=%d\n", 2);

#ifdef CORRECT_CR_HANDLING
    pri\
ntf("aaa=%d\n", 3);
#endif

    pri\
\
ntf("min=%d\n", 4);

#ifdef ACCEPT_CR_IN_STRINGS
    printf("len1=%d\n", strlen("
"));
#ifdef CORRECT_CR_HANDLING
    str = "
";
    printf("len1=%d str[0]=%d\n", strlen(str), str[0]);
#endif
    printf("len1=%d\n", strlen("
a
"));
#endif /* ACCEPT_CR_IN_STRINGS */
}

int reltab[3] = { 1, 2, 3 };

int *rel1 = &reltab[1];
int *rel2 = &reltab[2];

void relocation_test(void)
{
    printf("*rel1=%d\n", *rel1);
    printf("*rel2=%d\n", *rel2);
}

void old_style_f(a,b,c)
     int a, b;
     double c;
{
    printf("a=%d b=%d b=%f\n", a, b, c);
}

void decl_func1(int cmpfn())
{
    printf("cmpfn=%lx\n", (long)cmpfn);
}

void decl_func2(cmpfn)
int cmpfn();
{
    printf("cmpfn=%lx\n", (long)cmpfn);
}

void old_style_function(void)
{
    old_style_f((void *)1, 2, 3.0);
    decl_func1(NULL);
    decl_func2(NULL);
}

void alloca_test()
{
#if defined __i386__ || defined __x86_64__
    char *p = alloca(16);
    strcpy(p,"123456789012345");
    printf("alloca: p is %s\n", p);
    char *demo = "This is only a test.\n";
    /* Test alloca embedded in a larger expression */
    printf("alloca: %s\n", strcpy(alloca(strlen(demo)+1),demo) );
#endif
}

void *bounds_checking_is_enabled()
{
    char ca[10], *cp = ca-1;
    return (ca != cp + 1) ? cp : NULL;
}

typedef int constant_negative_array_size_as_compile_time_assertion_idiom[(1 ? 2 : 0) - 1];

void c99_vla_test(int size1, int size2)
{
#if defined __i386__ || defined __x86_64__
    int size = size1 * size2;
    int tab1[size][2], tab2[10][2];
    void *tab1_ptr, *tab2_ptr, *bad_ptr;

    /* "size" should have been 'captured' at tab1 declaration, 
        so modifying it should have no effect on VLA behaviour. */
    size = size-1;
    
    printf("Test C99 VLA 1 (sizeof): ");
    printf("%s\n", (sizeof tab1 == size1 * size2 * 2 * sizeof(int)) ? "PASSED" : "FAILED");
    tab1_ptr = tab1;
    tab2_ptr = tab2;
    printf("Test C99 VLA 2 (ptrs substract): ");
    printf("%s\n", (tab2 - tab1 == (tab2_ptr - tab1_ptr) / (sizeof(int) * 2)) ? "PASSED" : "FAILED");
    printf("Test C99 VLA 3 (ptr add): ");
    printf("%s\n", &tab1[5][1] == (tab1_ptr + (5 * 2 + 1) * sizeof(int)) ? "PASSED" : "FAILED");
    printf("Test C99 VLA 4 (ptr access): ");
    tab1[size1][1] = 42;
    printf("%s\n", (*((int *) (tab1_ptr + (size1 * 2 + 1) * sizeof(int))) == 42) ? "PASSED" : "FAILED");

    printf("Test C99 VLA 5 (bounds checking (might be disabled)): ");
    if (bad_ptr = bounds_checking_is_enabled()) {
        int *t1 = &tab1[size1 * size2 - 1][3];
        int *t2 = &tab2[9][3];
        printf("%s ", bad_ptr == t1 ? "PASSED" : "FAILED");
        printf("%s ", bad_ptr == t2 ? "PASSED" : "FAILED");

        char*c1 = 1 + sizeof(tab1) + (char*)tab1;
        char*c2 = 1 + sizeof(tab2) + (char*)tab2;
        printf("%s ", bad_ptr == c1 ? "PASSED" : "FAILED");
        printf("%s ", bad_ptr == c2 ? "PASSED" : "FAILED");

        int *i1 = tab1[-1];
        int *i2 = tab2[-1];
        printf("%s ", bad_ptr == i1 ? "PASSED" : "FAILED");
        printf("%s ", bad_ptr == i2 ? "PASSED" : "FAILED");

        int *x1 = tab1[size1 * size2 + 1];
        int *x2 = tab2[10 + 1];
        printf("%s ", bad_ptr == x1 ? "PASSED" : "FAILED");
        printf("%s ", bad_ptr == x2 ? "PASSED" : "FAILED");
    } else {
        printf("PASSED PASSED PASSED PASSED PASSED PASSED PASSED PASSED ");
    }
    printf("\n");
#endif
}

typedef __SIZE_TYPE__ uintptr_t;

void sizeof_test(void)
{
    int a;
    int **ptr;

    printf("sizeof(int) = %d\n", sizeof(int));
    printf("sizeof(unsigned int) = %d\n", sizeof(unsigned int));
    printf("sizeof(long) = %d\n", sizeof(long));
    printf("sizeof(unsigned long) = %d\n", sizeof(unsigned long));
    printf("sizeof(short) = %d\n", sizeof(short));
    printf("sizeof(unsigned short) = %d\n", sizeof(unsigned short));
    printf("sizeof(char) = %d\n", sizeof(char));
    printf("sizeof(unsigned char) = %d\n", sizeof(unsigned char));
    printf("sizeof(func) = %d\n", sizeof sizeof_test());
    a = 1;
    printf("sizeof(a++) = %d\n", sizeof a++);
    printf("a=%d\n", a);
    ptr = NULL;
    printf("sizeof(**ptr) = %d\n", sizeof (**ptr));

    /* The type of sizeof should be as large as a pointer, actually
       it should be size_t.  */
    printf("sizeof(sizeof(int) = %d\n", sizeof(sizeof(int)));
    uintptr_t t = 1;
    uintptr_t t2;
    /* Effectively <<32, but defined also on 32bit machines.  */
    t <<= 16;
    t <<= 16;
    t++;
    /* This checks that sizeof really can be used to manipulate 
       uintptr_t objects, without truncation.  */
    t2 = t & -sizeof(uintptr_t);
    printf ("%lu %lu\n", t, t2);

    /* some alignof tests */
    printf("__alignof__(int) = %d\n", __alignof__(int));
    printf("__alignof__(unsigned int) = %d\n", __alignof__(unsigned int));
    printf("__alignof__(short) = %d\n", __alignof__(short));
    printf("__alignof__(unsigned short) = %d\n", __alignof__(unsigned short));
    printf("__alignof__(char) = %d\n", __alignof__(char));
    printf("__alignof__(unsigned char) = %d\n", __alignof__(unsigned char));
    printf("__alignof__(func) = %d\n", __alignof__ sizeof_test());
}

void typeof_test(void)
{
    double a;
    typeof(a) b;
    typeof(float) c;

    a = 1.5;
    b = 2.5;
    c = 3.5;
    printf("a=%f b=%f c=%f\n", a, b, c);
}

void statement_expr_test(void)
{
    int a, i;

    a = 0;
    for(i=0;i<10;i++) {
        a += 1 + 
            ( { int b, j; 
                b = 0; 
                for(j=0;j<5;j++) 
                    b += j; b; 
            } );
    }
    printf("a=%d\n", a);
    
}

void local_label_test(void)
{
    int a;
    goto l1;
 l2:
    a = 1 + ({
        __label__ l1, l2, l3, l4;
        goto l1;
    l4:
        printf("aa1\n");
        goto l3;
    l2:
        printf("aa3\n");
        goto l4;
    l1:
        printf("aa2\n");
        goto l2;
    l3:;
        1;
    });
    printf("a=%d\n", a);
    return;
 l4:
    printf("bb1\n");
    goto l2;
 l1:
    printf("bb2\n");
    goto l4;
}

/* inline assembler test */
#ifdef __i386__

/* from linux kernel */
static char * strncat1(char * dest,const char * src,size_t count)
{
int d0, d1, d2, d3;
__asm__ __volatile__(
	"repne\n\t"
	"scasb\n\t"
	"decl %1\n\t"
	"movl %8,%3\n"
	"1:\tdecl %3\n\t"
	"js 2f\n\t"
	"lodsb\n\t"
	"stosb\n\t"
	"testb %%al,%%al\n\t"
	"jne 1b\n"
	"2:\txorl %2,%2\n\t"
	"stosb"
	: "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
	: "0" (src),"1" (dest),"2" (0),"3" (0xffffffff), "g" (count)
	: "memory");
return dest;
}

static char * strncat2(char * dest,const char * src,size_t count)
{
int d0, d1, d2, d3;
__asm__ __volatile__(
	"repne scasb\n\t" /* one-line repne prefix + string op */
	"decl %1\n\t"
	"movl %8,%3\n"
	"1:\tdecl %3\n\t"
	"js 2f\n\t"
	"lodsb\n\t"
	"stosb\n\t"
	"testb %%al,%%al\n\t"
	"jne 1b\n"
	"2:\txorl %2,%2\n\t"
	"stosb"
	: "=&S" (d0), "=&D" (d1), "=&a" (d2), "=&c" (d3)
	: "0" (src),"1" (dest),"2" (0),"3" (0xffffffff), "g" (count)
	: "memory");
return dest;
}

static inline void * memcpy1(void * to, const void * from, size_t n)
{
int d0, d1, d2;
__asm__ __volatile__(
	"rep ; movsl\n\t"
	"testb $2,%b4\n\t"
	"je 1f\n\t"
	"movsw\n"
	"1:\ttestb $1,%b4\n\t"
	"je 2f\n\t"
	"movsb\n"
	"2:"
	: "=&c" (d0), "=&D" (d1), "=&S" (d2)
	:"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
	: "memory");
return (to);
}

static inline void * memcpy2(void * to, const void * from, size_t n)
{
int d0, d1, d2;
__asm__ __volatile__(
	"rep movsl\n\t"  /* one-line rep prefix + string op */
	"testb $2,%b4\n\t"
	"je 1f\n\t"
	"movsw\n"
	"1:\ttestb $1,%b4\n\t"
	"je 2f\n\t"
	"movsb\n"
	"2:"
	: "=&c" (d0), "=&D" (d1), "=&S" (d2)
	:"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from)
	: "memory");
return (to);
}

static __inline__ void sigaddset1(unsigned int *set, int _sig)
{
	__asm__("btsl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
}

static __inline__ void sigdelset1(unsigned int *set, int _sig)
{
	asm("btrl %1,%0" : "=m"(*set) : "Ir"(_sig - 1) : "cc");
}

static __inline__ __const__ unsigned int swab32(unsigned int x)
{
	__asm__("xchgb %b0,%h0\n\t"	/* swap lower bytes	*/
		"rorl $16,%0\n\t"	/* swap words		*/
		"xchgb %b0,%h0"		/* swap higher bytes	*/
		:"=q" (x)
		: "0" (x));
	return x;
}

static __inline__ unsigned long long mul64(unsigned int a, unsigned int b)
{
    unsigned long long res;
    __asm__("mull %2" : "=A" (res) : "a" (a), "r" (b));
    return res;
}

static __inline__ unsigned long long inc64(unsigned long long a)
{
    unsigned long long res;
    __asm__("addl $1, %%eax ; adcl $0, %%edx" : "=A" (res) : "A" (a));
    return res;
}

unsigned int set;

void asm_test(void)
{
    char buf[128];
    unsigned int val;

    printf("inline asm:\n");
    /* test the no operand case */
    asm volatile ("xorl %eax, %eax");

    memcpy1(buf, "hello", 6);
    strncat1(buf, " worldXXXXX", 3);
    printf("%s\n", buf);

    memcpy2(buf, "hello", 6);
    strncat2(buf, " worldXXXXX", 3);
    printf("%s\n", buf);

    /* 'A' constraint test */
    printf("mul64=0x%Lx\n", mul64(0x12345678, 0xabcd1234));
    printf("inc64=0x%Lx\n", inc64(0x12345678ffffffff));

    set = 0xff;
    sigdelset1(&set, 2);
    sigaddset1(&set, 16);
    /* NOTE: we test here if C labels are correctly restored after the
       asm statement */
    goto label1;
 label2:
    __asm__("btsl %1,%0" : "=m"(set) : "Ir"(20) : "cc");
#ifdef __GNUC__ // works strange with GCC 4.3
    set=0x1080fd;
#endif
    printf("set=0x%x\n", set);
    val = 0x01020304;
    printf("swab32(0x%08x) = 0x%0x\n", val, swab32(val));
    return;
 label1:
    goto label2;
}

#else

void asm_test(void)
{
}

#endif

#define COMPAT_TYPE(type1, type2) \
{\
    printf("__builtin_types_compatible_p(%s, %s) = %d\n", #type1, #type2, \
           __builtin_types_compatible_p (type1, type2));\
}

int constant_p_var;

void builtin_test(void)
{
#if GCC_MAJOR >= 3
    COMPAT_TYPE(int, int);
    COMPAT_TYPE(int, unsigned int);
    COMPAT_TYPE(int, char);
    COMPAT_TYPE(int, const int);
    COMPAT_TYPE(int, volatile int);
    COMPAT_TYPE(int *, int *);
    COMPAT_TYPE(int *, void *);
    COMPAT_TYPE(int *, const int *);
    COMPAT_TYPE(char *, unsigned char *);
/* space is needed because tcc preprocessor introduces a space between each token */
    COMPAT_TYPE(char * *, void *); 
#endif
    printf("res = %d\n", __builtin_constant_p(1));
    printf("res = %d\n", __builtin_constant_p(1 + 2));
    printf("res = %d\n", __builtin_constant_p(&constant_p_var));
    printf("res = %d\n", __builtin_constant_p(constant_p_var));
}

#ifndef _WIN32
extern int __attribute__((weak)) weak_f1(void);
extern int __attribute__((weak)) weak_f2(void);
extern int                       weak_f3(void);
extern int __attribute__((weak)) weak_v1;
extern int __attribute__((weak)) weak_v2;
extern int                       weak_v3;

extern int                           (*weak_fpa)() __attribute__((weak));
extern int __attribute__((weak))     (*weak_fpb)();
extern     __attribute__((weak)) int (*weak_fpc)();

extern int                     weak_asm_f1(void) asm("weak_asm_f1x") __attribute((weak));
extern int __attribute((weak)) weak_asm_f2(void) asm("weak_asm_f2x")                    ;
extern int __attribute((weak)) weak_asm_f3(void) asm("weak_asm_f3x") __attribute((weak));
extern int                     weak_asm_v1       asm("weak_asm_v1x") __attribute((weak));
extern int __attribute((weak)) weak_asm_v2       asm("weak_asm_v2x")                    ;
extern int __attribute((weak)) weak_asm_v3(void) asm("weak_asm_v3x") __attribute((weak));

static const size_t dummy = 0;
extern __typeof(dummy) weak_dummy1 __attribute__((weak, alias("dummy")));
extern __typeof(dummy) __attribute__((weak, alias("dummy"))) weak_dummy2;
extern __attribute__((weak, alias("dummy"))) __typeof(dummy) weak_dummy3;

int some_lib_func(void);
int dummy_impl_of_slf(void) { return 444; }
int some_lib_func(void) __attribute__((weak, alias("dummy_impl_of_slf")));

int weak_toolate() __attribute__((weak));
int weak_toolate() { return 0; }

void __attribute__((weak)) weak_test(void)
{
	printf("weak_f1=%d\n", weak_f1 ? weak_f1() : 123);
	printf("weak_f2=%d\n", weak_f2 ? weak_f2() : 123);
	printf("weak_f3=%d\n", weak_f3 ? weak_f3() : 123);
	printf("weak_v1=%d\n",&weak_v1 ? weak_v1   : 123);
	printf("weak_v2=%d\n",&weak_v2 ? weak_v2   : 123);
	printf("weak_v3=%d\n",&weak_v3 ? weak_v3   : 123);

	printf("weak_fpa=%d\n",&weak_fpa ? weak_fpa() : 123);
	printf("weak_fpb=%d\n",&weak_fpb ? weak_fpb() : 123);
	printf("weak_fpc=%d\n",&weak_fpc ? weak_fpc() : 123);
	
	printf("weak_asm_f1=%d\n", weak_asm_f1 != NULL);
	printf("weak_asm_f2=%d\n", weak_asm_f2 != NULL);
	printf("weak_asm_f3=%d\n", weak_asm_f3 != NULL);
	printf("weak_asm_v1=%d\n",&weak_asm_v1 != NULL);
	printf("weak_asm_v2=%d\n",&weak_asm_v2 != NULL);
	printf("weak_asm_v3=%d\n",&weak_asm_v3 != NULL);
}

int __attribute__((weak)) weak_f2() { return 222; }
int __attribute__((weak)) weak_f3() { return 333; }
int __attribute__((weak)) weak_v2 = 222;
int __attribute__((weak)) weak_v3 = 333;
#endif

void const_func(const int a)
{
}

void const_warn_test(void)
{
    const_func(1);
}

struct condstruct {
  int i;
};

int getme (struct condstruct *s, int i)
{
  int i1 = (i == 0 ? 0 : s)->i;
  int i2 = (i == 0 ? s : 0)->i;
  int i3 = (i == 0 ? (void*)0 : s)->i;
  int i4 = (i == 0 ? s : (void*)0)->i;
  return i1 + i2 + i3 + i4;
}

struct global_data
{
  int a[40];
  int *b[40];
};

struct global_data global_data;

int global_data_getstuff (int *, int);

void global_data_callit (int i)
{
  *global_data.b[i] = global_data_getstuff (global_data.b[i], 1);
}

int global_data_getstuff (int *p, int i)
{
  return *p + i;
}

void global_data_test (void)
{
  global_data.a[0] = 42;
  global_data.b[0] = &global_data.a[0];
  global_data_callit (0);
  printf ("%d\n", global_data.a[0]);
}

struct cmpcmpS
{
  unsigned char fill : 3;
  unsigned char b1 : 1;
  unsigned char b2 : 1;
  unsigned char fill2 : 3;
};

int glob1, glob2, glob3;

void compare_comparisons (struct cmpcmpS *s)
{
  if (s->b1 != (glob1 == glob2)
      || (s->b2 != (glob1 == glob3)))
    printf ("comparing comparisons broken\n");
}

void cmp_comparison_test(void)
{
  struct cmpcmpS s;
  s.b1 = 1;
  glob1 = 42; glob2 = 42;
  s.b2 = 0;
  glob3 = 43;
  compare_comparisons (&s);
}

int fcompare (double a, double b, int code)
{
  switch (code) {
    case 0: return a == b;
    case 1: return a != b;
    case 2: return a < b;
    case 3: return a >= b;
    case 4: return a > b;
    case 5: return a <= b;
  }
}

void math_cmp_test(void)
{
  double nan = 0.0/0.0;
  double one = 1.0;
  double two = 2.0;
  int comp = 0;
#define bug(a,b,op,iop,part) printf("Test broken: %s %s %s %s %d\n", #a, #b, #op, #iop, part)

  /* This asserts that "a op b" is _not_ true, but "a iop b" is true.
     And it does this in various ways so that all code generation paths
     are checked (generating inverted tests, or non-inverted tests, or
     producing a 0/1 value without jumps (that's done in the fcompare
     function).  */
#define FCMP(a,b,op,iop,code) \
  if (fcompare (a,b,code))    \
    bug (a,b,op,iop,1); \
  if (a op b) \
    bug (a,b,op,iop,2); \
  if (a iop b) \
    ; \
  else \
    bug (a,b,op,iop,3); \
  if ((a op b) || comp) \
    bug (a,b,op,iop,4); \
  if ((a iop b) || comp) \
    ; \
  else \
    bug (a,b,op,iop,5);

  /* Equality tests.  */
  FCMP(nan, nan, ==, !=, 0);
  FCMP(one, two, ==, !=, 0);
  FCMP(one, one, !=, ==, 1);
  /* Non-equality is a bit special.  */
  if (!fcompare (nan, nan, 1))
    bug (nan, nan, !=, ==, 6);

  /* Relational tests on numbers.  */
  FCMP(two, one, <, >=, 2);
  FCMP(one, two, >=, <, 3);
  FCMP(one, two, >, <=, 4);
  FCMP(two, one, <=, >, 5);

  /* Relational tests on NaNs.  Note that the inverse op here is
     always !=, there's no operator in C that is equivalent to !(a < b),
     when NaNs are involved, same for the other relational ops.  */
  FCMP(nan, nan, <, !=, 2);
  FCMP(nan, nan, >=, !=, 3);
  FCMP(nan, nan, >, !=, 4);
  FCMP(nan, nan, <=, !=, 5);
}

double get100 () { return 100.0; }

void callsave_test(void)
{
#if defined __i386__ || defined __x86_64__
  int i, s; double *d; double t;
  s = sizeof (double);
  printf ("callsavetest: %d\n", s);
  d = alloca (sizeof(double));
  d[0] = 10.0;
  /* x86-64 had a bug were the next call to get100 would evict
     the lvalue &d[0] as VT_LLOCAL, and the reload would be done
     in int type, not pointer type.  When alloca returns a pointer
     with the high 32 bit set (which is likely on x86-64) the access
     generates a segfault.  */
  i = d[0] > get100 ();
  printf ("%d\n", i);
#endif
}


void bfa3(ptrdiff_t str_offset)
{
    printf("bfa3: %s\n", (char *)__builtin_frame_address(3) + str_offset);
}
void bfa2(ptrdiff_t str_offset)
{
    printf("bfa2: %s\n", (char *)__builtin_frame_address(2) + str_offset);
    bfa3(str_offset);
}
void bfa1(ptrdiff_t str_offset)
{
    printf("bfa1: %s\n", (char *)__builtin_frame_address(1) + str_offset);
#if defined(__arm__) && !defined(__GNUC__)
    bfa2(str_offset);
#endif
}

void builtin_frame_address_test(void)
{
    char str[] = "__builtin_frame_address";
    char *fp0 = __builtin_frame_address(0);

    printf("str: %s\n", str);
    bfa1(str-fp0);
}


<|start_filename|>v2/testdata/cpp-expand/008.c<|end_filename|>
#define QUOTE_(s) #s
#define QUOTE(s) QUOTE_(s)
#define check(t) check(QUOTE(t), __alignof__(t))
 
check (void);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54552-1.c<|end_filename|>
void
f (void)
{
  unsigned n = 10;

  typedef double T[n];
  (double (*)[n])((unsigned char (*)[sizeof (T)]){ 0 });
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52092.c<|end_filename|>
/* PR rtl-optimization/52092 */

int a, b, c, d, e, f, g;

void
foo (void)
{
  for (;;)
    {
      int *h = 0;
      int i = 3;
      int **j = &h;
      if (e)
	{
	  c = d || a;
	  g = c ? a : b;
	  if ((char) (i * g))
	    {
	      h = &f;
	      *h = 0;
	    }
	  **j = 0;
	}
    }
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr20621-1.c<|end_filename|>
/* When generating o32 MIPS PIC, main's $gp save slot was out of range
   of a single load instruction.  */
struct big { int i[sizeof (int) >= 4 && sizeof (void *) >= 4 ? 0x4000 : 4]; };
struct big gb;
int foo (struct big b, int x) { return b.i[x]; }
#if defined(STACK_SIZE) && STACK_SIZE <= 0x10000
int main (void) { return 0; }
#else
int main (void) { return foo (gb, 0) + foo (gb, 1); }
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050801-2.c<|end_filename|>
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
__inline int f(int i)
{
  struct {
    int t[i];
  } t;
  return sizeof(t.t[i--]);
}

int g(int i)
{
  return f(i);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060904-1.c<|end_filename|>
/* PR rtl-optimization/27616 */
/* Reported by <NAME> <<EMAIL>> */
/* Testcase by <NAME> <<EMAIL>> */

struct chunk_s
{
  unsigned int size;
  int offset_next;
};

typedef struct chunk_s chunk_t;

void foo(chunk_t *first)
{
  chunk_t *cur;
  char *first0;

  do {
    first0 = (char *) first;
    cur = (chunk_t *) (first0 + first->offset_next);
    if ((chunk_t *) (first0 + cur->offset_next) != first)
      return ;

    first->offset_next = 0;

  } while (cur->size != 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050122-1.c<|end_filename|>
/* From PR 19484.  */
extern void foo (void) __attribute__((noreturn));
int n;

void
g (void)
{
  void (*f) (void) = foo;
  if (n)
    f ();
  n = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33146.c<|end_filename|>
typedef struct
{
  int end;
  int term;
}
jpc_enc_pass_t;
void foo(int numpasses, jpc_enc_pass_t *p)
{
  jpc_enc_pass_t *pass;
  jpc_enc_pass_t *termpass;
  for (pass = p; pass != termpass; ++pass)
    if (!pass->term)
    {
      termpass = pass;
      while (termpass - pass < numpasses && !termpass->term)
        ++termpass;
      pass->end = termpass->end;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr57441.c<|end_filename|>
/* PR tree-optimization/57441 */

int a, c, d, *e;
unsigned char b;

char
baz (char p1)
{
    return p1 * a;
}

void func_65 ();
func_1 ()
{
    func_65 ();
    func_65 ();
}

void
func_65 ()
{
    d = baz (b--);
    if (*e)
        b--;
    c = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35595.c<|end_filename|>
/* { dg-require-effective-target int32plus } */
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef union
{
  float value;
  __uint32_t word;
}
ieee_float_shape_type;
static const float two23 = 8.3886080000e+06;
static const float pi = 3.1415927410e+00;
static const float zero = 0.0000000000e+00;
static float
sin_pif (float x)
{
  float y = 0;
  float z = 0;
  __int32_t n = 0;
  __int32_t ix = 0;
  do
    {
      ieee_float_shape_type gf_u = { 0 };
      (ix) = gf_u.word;
    }
  while (0);
  if (z == y)
    {
      if (ix < 0x4b800000)
	{
	  if (ix < 0x4b000000)
	    z = y + two23;
	  do
	    {
	      ieee_float_shape_type gf_u;
	      gf_u.value = (z);
	      (n) = gf_u.word;
	    }
	  while (0);
	}
    }
  if (n == 0)
    y = __kernel_sinf (pi * y, zero, 0);
}

float
__ieee754_lgammaf_r (float x, int *signgamp)
{
  float t = 0;
  __int32_t hx = 0;
  do
    {
      ieee_float_shape_type gf_u = { 0 };
      (hx) = gf_u.word;
    }
  while (0);
  if (hx < 0)
    t = sin_pif (x);
  return 0;
}


<|start_filename|>testdata/empty.c<|end_filename|>
#define m(x) #x
#define n(x, y) #x
#define o(x, y) #y
#define p(x, y, z) #y

char s[] = m();
char t[] = n(, 42);
char u[] = o(42,);
char v[] = p(42,,314);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35607.c<|end_filename|>
extern void (*__fini_array_start []) (void);
extern void (*__fini_array_end []) (void);
void
__libc_csu_fini (void)
{
  __SIZE_TYPE__ i = __fini_array_end - __fini_array_start;
  while (i-- > 0)
    (*__fini_array_start [i]) ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43636.c<|end_filename|>
/* PR target/43636 */

extern char a[], *b[];

char *
foo (char *x, int y)
{
  x = __builtin_stpcpy (x, b[a[y]]);
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/compound-literal-3.c<|end_filename|>
/* PR C/30265, invalid gimple was produced because we did not mark
   the compound literal's decl early enough.  */

int f(_Complex float *);
int g(_Complex float x)
{
  return f(&(_Complex float){x+1}) + f(&x);
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/nestfunc-6.c<|end_filename|>
/* Test that the GP gets properly restored, either by the nonlocal
   receiver or the nested function.  */

#ifndef NO_TRAMPOLINES

typedef __SIZE_TYPE__ size_t;
extern void abort (void);
extern void exit (int);
extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));

int main ()
{
  __label__ nonlocal;
  int compare (const void *a, const void *b)
  {
    goto nonlocal;
  }

  char array[3];
  qsort (array, 3, 1, compare);
  abort ();

 nonlocal:
  exit (0);
}

#else
int main() { return 0; }
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/m68k-byte-addr.c<|end_filename|>
/* This testcase triggered an attempt to reload a byte value into an
   address register.  */
extern volatile unsigned char x[];

#define DECLARE(I) orig##I, inc##I
#define READ(I) orig##I = x[I]
#define INC(I) inc##I = orig##I + 1
#define WRITE1(I) x[I] = orig##I
#define WRITE2(I) x[I] = inc##I

#define REPEAT(X) X(0), X(1), X(2), X(3), X(4), X(5), X(6), X(7), X(8)

void foo (void)
{
  unsigned char REPEAT (DECLARE);
  REPEAT (READ);
  REPEAT (INC);
  REPEAT (WRITE1);
  REPEAT (WRITE2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46360.c<|end_filename|>
/* PR middle-end/46360 */

__attribute__((gnu_inline, always_inline)) extern inline char *
strncpy (char *dest, const char *src, __SIZE_TYPE__ len)
{
  return __builtin_strncpy (dest, src, len);
}

void
foo (char *s)
{
  strncpy (s, "", 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20140110-1.c<|end_filename|>
typedef long unsigned int size_t;
struct RangeMapRange {
  unsigned fromMin;
  unsigned fromMax;
  unsigned toMin;
};
void reserve1(void);
void f(struct RangeMapRange *q1, size_t t)
{
  const struct RangeMapRange *q2 = q1 + t;
  size_t n = q2 - q1;
  if (n > 0)
    reserve1();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46248.c<|end_filename|>
/* PR rtl-optimization/46248 */

struct S
{
  int s;
};

void
foo (unsigned char *x, int y, struct S *z)
{
  const int l1 = y;
  const int l2 = y + l1;
  const int l3 = y + l2;
  const int l4 = y + l3;
  const int l5 = y + l4;
  const int l6 = y + l5;
  const int l7 = y + l6;
  int i;
  for (i = 0; i < 8; i++)
    {
      int a = x[l3] - x[l4];
      int b = x[l4] - x[l5];
      int c = x[l5] - x[l6];
      int d = (b >= 0 ? b : -b) - (((a >= 0 ? a : -a) + (c >= 0 ? c : -c)) >> 1);
      if (d < z->s * 2)
	{
	  int v = d * (-b > 0 ? 1 : -1);
	  x[l2] += v >> 3;
	  x[l7] -= v >> 3;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030917-1.c<|end_filename|>
typedef struct string STR;
typedef struct atbl ARRAY;
struct string {
    unsigned char str_pok;
};
struct atbl {
    int ary_fill;
};
blah(size,strp)
register int size;
register STR **strp;
{
    register ARRAY *ar;
    ar->ary_fill = size - 1;
    while (size--)
     (*strp)->str_pok &= ~128;
}



<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/bf64-1.c<|end_filename|>
/* { dg-xfail-if "ABI specifies bitfields cannot exceed 32 bits" { mcore-*-* } "*" "" } */
struct tmp
{
  long long int pad : 12;
  long long int field : 52;
};

struct tmp2
{
  long long int field : 52;
  long long int pad : 12;
};

struct tmp
sub (struct tmp tmp)
{
  tmp.field |= 0x0008765412345678LL;
  return tmp;
}

struct tmp2
sub2 (struct tmp2 tmp2)
{
  tmp2.field |= 0x0008765412345678LL;
  return tmp2;
}

main()
{
  struct tmp tmp = {0x123, 0xFFF000FFF000FLL};
  struct tmp2 tmp2 = {0xFFF000FFF000FLL, 0x123};

  tmp = sub (tmp);
  tmp2 = sub2 (tmp2);

  if (tmp.pad != 0x123 || tmp.field != 0xFFFFFF541FFF567FLL)
    abort ();
  if (tmp2.pad != 0x123 || tmp2.field != 0xFFFFFF541FFF567FLL)
    abort ();
  exit (0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34448.c<|end_filename|>
typedef struct chunk_t chunk_t;
struct chunk_t
{
  unsigned char *ptr;
  long unsigned int len;
};
extern chunk_t asn1_wrap (chunk_t c, ...);
typedef struct linked_list_t linked_list_t;
chunk_t ietfAttr_list_encode (linked_list_t * list);
extern linked_list_t *groups;
static unsigned char ASN1_group_oid_str[] = {
    0x06
};
static const chunk_t ASN1_group_oid = {
  ASN1_group_oid_str, sizeof (ASN1_group_oid_str)
};
static chunk_t
build_attribute_type (const chunk_t type, chunk_t content)
{
  return type;
}
static chunk_t
build_attributes (void)
{
  return asn1_wrap (build_attribute_type (ASN1_group_oid,
					  ietfAttr_list_encode (groups)));
}
void build_attr_cert (void)
{
  asn1_wrap (build_attributes ());
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58775.c<|end_filename|>
/* PR tree-optimization/58775 */

void bar (void);

void
foo (char *x)
{
  char a;
  _Bool b, c, d, e, f, g, h, i, j, k, l, m;

  a = *x;
  b = a == 100;
  c = a == 105;
  d = b | c;
  e = a != 111;
  f = !d;
  g = e & f;
  h = a != 117;
  i = g & h;
  j = a != 120;
  k = i & j;
  l = a != 88;
  m = k & l;
  if (m == 0)
    bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr57108.c<|end_filename|>
/* PR target/57108  */

void __assert_func (void) __attribute__ ((__noreturn__));

void
ATATransfer (int num, int buffer)
{
  int wordCount;

  while (num > 0)
    {
      wordCount = num * 512 / sizeof (int);

      ((0 == (buffer & 63)) ? (void)0 : __assert_func () );
      ((0 == (wordCount & 31)) ? (void)0 : __assert_func ());
    }
}


<|start_filename|>v2/headers/linux_arm/usr/lib/gcc/arm-linux-gnueabihf/6/include/stdint.h<|end_filename|>
#ifndef _GCC_WRAP_STDINT_H
#if __STDC_HOSTED__
#if defined __cplusplus && __cplusplus >= 201103L
#undef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS
#undef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
#include_next <stdint.h>
#else
#include "stdint-gcc.h"
#endif
#define _GCC_WRAP_STDINT_H
#endif


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr28982b.c<|end_filename|>
/* Like pr28982a.c, but with the spill slots outside the range of
   a single sp-based load on ARM.  This test tests for cases where
   the addresses in the base and index reloads require further reloads.  */
#if defined(STACK_SIZE) && STACK_SIZE <= 0x80100
int main (void) { return 0; }
#else
#define NITER 4
#define NVARS 20
#define MULTI(X) \
  X( 0), X( 1), X( 2), X( 3), X( 4), X( 5), X( 6), X( 7), X( 8), X( 9), \
  X(10), X(11), X(12), X(13), X(14), X(15), X(16), X(17), X(18), X(19)

#define DECLAREI(INDEX) inc##INDEX = incs[INDEX]
#define DECLAREF(INDEX) *ptr##INDEX = ptrs[INDEX], result##INDEX = 0
#define LOOP(INDEX) result##INDEX += *ptr##INDEX, ptr##INDEX += inc##INDEX
#define COPYOUT(INDEX) results[INDEX] = result##INDEX

float *ptrs[NVARS];
float results[NVARS];
int incs[NVARS];

struct big { int i[0x10000]; };
void __attribute__((noinline))
bar (struct big b)
{
  incs[0] += b.i[0];
}

void __attribute__((noinline))
foo (int n)
{
  struct big b = {};
  int MULTI (DECLAREI);
  float MULTI (DECLAREF);
  while (n--)
    MULTI (LOOP);
  MULTI (COPYOUT);
  bar (b);
}

float input[NITER * NVARS];

int
main (void)
{
  int i;

  for (i = 0; i < NVARS; i++)
    ptrs[i] = input + i, incs[i] = i;
  for (i = 0; i < NITER * NVARS; i++)
    input[i] = i;
  foo (NITER);
  for (i = 0; i < NVARS; i++)
    if (results[i] != i * NITER * (NITER + 1) / 2)
      return 1;
  return 0;
}
#endif


<|start_filename|>v2/testdata/bug/15.c<|end_filename|>
#include <assert.h>
#include <stdarg.h>

va_list a;

void g(va_list ap) {
	assert(va_arg(ap, int) == 278);
}

void f(int i, ...) {
	va_list ap;
	va_start(ap, i);
	assert(va_arg(ap, int) == 42);
	assert(va_arg(ap, double) == 3.14);
	g(ap);
	assert(va_arg(ap, int) == 123);
	va_end(ap);
}

int main() {
	va_list b;
	__builtin_printf("%i %i\n", sizeof(a), sizeof(b));
	assert(sizeof(a) == sizeof(void*));
	assert(sizeof(b) == sizeof(void*));
	f(0, 42, 3.14, 278, 123);
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/alias-3.c<|end_filename|>
/* { dg-require-alias "" } */
static int a=0;
extern int b __attribute__ ((alias("a")));
__attribute__ ((noinline))
static inc()
{
  b++;
}
int
main()
{
  a=0;
  inc ();
  if (a!=1)
    __builtin_abort ();
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53410-1.c<|end_filename|>
/* PR tree-optimization/53410 */

int *a, b, c, d;

void
foo (void)
{
  for (; d <= 0; d++)
    b &= ((a || d) ^ c) == 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37991.c<|end_filename|>
typedef int Int32;
void use_it(int);
void FindAndReadSignature(int processedSize)
{
  int numPrevBytes = 1;
  for (;;)
    {
      int numBytesInBuffer = numPrevBytes + processedSize;
      Int32 numTests = numBytesInBuffer - 1;
      use_it (numTests);
      numPrevBytes = numBytesInBuffer - numTests;
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53886.c<|end_filename|>
/* PR target/53886  */
typedef struct asn1_string_st ASN1_BIT_STRING;
typedef struct bignum_st BIGNUM;
typedef struct ec_group_st EC_GROUP;
typedef struct ec_key_st EC_KEY;

struct ec_key_st
{
  EC_GROUP *group;
  BIGNUM *priv_key;
  unsigned int enc_flag;
}
X9_62_PENTANOMIAL;
typedef struct ec_privatekey_st
{
  ASN1_BIT_STRING *publicKey;
}
EC_PRIVATEKEY;

extern EC_PRIVATEKEY* EC_PRIVATEKEY_new (void);
extern void EC_PRIVATEKEY_free (EC_PRIVATEKEY*);
extern unsigned char* CRYPTO_realloc (char*,int,const char*,int);

int
i2d_ECPrivateKey (EC_KEY * a, unsigned char **out)
{
  int ret = 0, ok = 0;
  unsigned char *buffer = 0;
  unsigned buf_len = 0, tmp_len;
  EC_PRIVATEKEY *priv_key = 0;
  if (a == 0 || a->group == 0 || a->priv_key == 0)
    {
      ERR_put_error (16, (192), ((3 | 64)),
		     "",
		     1234);
      goto err;
    }
  if ((priv_key = EC_PRIVATEKEY_new ()) == 0)
    {
      ERR_put_error (16, (192), ((1 | 64)),
		     "",
		     1241);
      goto err;
    }
  if (!(a->enc_flag & 0x002))
    {
      if (priv_key->publicKey == 0)
	{
	  goto err;
	}
      if (tmp_len > buf_len)
	{
	  unsigned char *tmp_buffer =
	    CRYPTO_realloc ((char *) buffer, (int) tmp_len, "", 1293);
	  buffer = tmp_buffer;
	}
    }
  if ((ret = i2d_EC_PRIVATEKEY (priv_key, out)) == 0)
    {
    }
  ok = 1;
err:
  if (buffer)
    CRYPTO_free (buffer);
  if (priv_key)
    EC_PRIVATEKEY_free (priv_key);
  return (ok ? ret : 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38752.c<|end_filename|>
typedef struct
{
  int             baddr;
} mstruct_t;

static struct
{
  unsigned int    mapnum;
  mstruct_t       unused;
} mtab;

static mstruct_t *mactab = &mtab.unused;

int
main(void)
{
  int i;
  int addr;

  for (i=1; i <= mtab.mapnum; i++)
    if (addr < mactab[i].baddr)
      break;
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20081108-3.c<|end_filename|>
/* Test boolean conversion of an overflowing integer return value does
   not lead to an ICE.  */

_Bool f(void) { return __INT_MAX__ + 1; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20081108-2.c<|end_filename|>
/* Test boolean conversion as part of returning unsigned value does
   not lead to an ICE.  */

_Bool f(unsigned a) { return a & 1; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45771.c<|end_filename|>
static const int data[2048];

void foo (void *ptr)
{
  __builtin_memcmp (data, ptr, 1);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20140723-1.c<|end_filename|>
double f(double a, double b, int c, int d)
{
  return (c>10&&d>20)?a:b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/930120-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
union {
  short I[2];
  long int L;
  char C[4];
} itolws;
char *errflg;
long int dot;
short dotinc;
long int expvf;

char *
f(fcount,ifp,itype,ptype)
     short fcount;
     char *ifp;
{
  unsigned w;
  long int savdot, wx;
  char *fp;
  char c, modifier, longpr;
  union {
    double dval;
    struct {
      int i1;
      int i2;
    } ival;
  } dw;
  union {
    float fval;
    int ival;
  } fw;
  int gotdot = 0;
  while (fcount > 0) {
    fp = ifp;
    c = *fp;
    longpr = ((c >= 'A') & (c <= 'Z') | (c == 'f') | (c == '4') | (c == 'p') | (c == 'i'));
    if ((itype == 0) || (*fp == 'a')) {
      wx = dot;
      w = dot;
    } else {
      gotdot = 1;
      wx = get((int)dot, itype);
      if (!longpr) {
	w = (itolws.L=(wx), itolws.I[((dot)&3)>>1]);
      }
    }
    if (c == 'F') {
      dw.ival.i1 = wx;
      if (itype == 0) {
	dw.ival.i2 = expvf;
      }
    }

    modifier = *fp++;
    switch(modifier) {
    case ' ' :
    case '\t' :
      break;
    case 't':
    case 'T':
      printf("%T",fcount);
      return(fp);
    case 'r':
    case 'R':
      printf("%M",fcount);
      return(fp);
    case 'k':
      printf("%k",w);
      break;
    case 'K':
      printf("%K",wx);
      break;
    case 'a':
      psymoff(dot,ptype,":%16t");
      dotinc = 0;
      break;
    case 'p':
      psymoff(0,ptype,"%16t");
      break;
    case 'u':
      printf("%-8u",w);
      break;
    case 'U':
      printf("%-16U",wx); break;
    case 'c':
    case 'C':
      if (modifier == 'C') {
	printesc((int)(itolws.L=(wx), itolws.C[(dot)&3]));
      } else {
	printc((char)(itolws.L=(wx), itolws.C[(dot)&3]));
      }
      dotinc = 1;
      break;
    case 'b':
      printf("%-8x", (itolws.L=(wx), itolws.C[(dot)&3]));
      dotinc = 1;
      break;
    case 'B':
      printf("%-8o", (itolws.L=(wx), itolws.C[(dot)&3]));
      dotinc = 1;
      break;
    case 's':
    case 'S':
      savdot = dot;
      dotinc = 1;
      while ((c = (itolws.L=(wx), itolws.C[(dot)&3])) && (errflg == 0)) {
	dot = inkdot(1);
	if (modifier == 'S') {
	  printesc(c);
	} else {
	  printc(c);
	}
	endline();
	if (!(dot & 3))
	  wx = get((int)dot, itype);
      }
      dotinc = dot - savdot + 1;
      dot = savdot;
      break;
    case 'i':
      if (gotdot) {
	wx = get((int)(dot & ~3), itype);
      }
      iDasm((int)(wx), (unsigned int)0, (unsigned int)(dot&~3));
      printc('\n');
      break;
    case 'f':
      fw.ival = wx;
      printf("%-16.9f", fw.fval);
      dotinc = 4;
      break;
    case 'F':
      printf("%-32.18F", dw.dval);
      dotinc = 8;
      break;
    }
  }
  return(fp);
}


<|start_filename|>testdata/issue80.c<|end_filename|>
char s[] = "abcdef";
char *t = "abcdef";
char u[11] = "abcdef";


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr25514.c<|end_filename|>
struct node {
  struct node *next;
  int value;
};

struct node *current_node, global_list;

void
bar (void)
{
  struct node *node, *next;

  node = current_node;
  next = node->next;
  if (node != &global_list)
    current_node = next;
  else
    {
      node = global_list.next;
      global_list.value = node->value;
      global_list.next = node->next;
    }
  foo (node);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52979-1.c<|end_filename|>
/* PR middle-end/52979 */

struct S
{
  unsigned int a : 16, b : 16, c : 16, d : 16, e : 14;
  unsigned int f : 4, g : 14, h : 8;
  char i;
  int j;
};

void
foo (struct S *s)
{
  s->f = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44831.c<|end_filename|>
typedef unsigned char UCHAR, *PUCHAR;
typedef void *HANDLE;
typedef struct _NCB {
    UCHAR ncb_reserve[10];
} NCB, *PNCB;
struct NBCmdQueue {
    PNCB head;
};
PNCB *NBCmdQueueFindNBC(struct NBCmdQueue *queue, PNCB ncb)
{
  PNCB *ret = &queue->head;
  while (ret && *ret != ncb)
    ret = (PNCB *)((*ret)->ncb_reserve + sizeof(HANDLE));
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/scal.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
int g1, g2;

void
write_at (addr, off, val)
     int *addr;
     int off;
     int val;
{
  g2 = 1;
  addr[off] = val;
  g2++;
}

main ()
{
  g2 = 12;
  write_at (&g1, &g2 - &g1, 12345);
  printf ("%d\n", g2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59417.c<|end_filename|>
/* PR tree-optimization/59417 */
/* { dg-skip-if "ptxas times out" { nvptx-*-* } { "-O1" "-O2" "-Os" } { "" } } */

int a, b, d;
short c;

void
f (void)
{
  if (b)
    {
      int *e;

      if (d)
	{
	  for (; b; a++)
	  lbl1:
	    d = 0;

	  for (; d <= 1; d++)
	    {
	      int **q = &e;
	      for (**q = 0; **q <= 0; **q++)
		d = 0;
	    }
	}
    }

  else
    {
      int t;
      for (c = 0; c < 77; c++)
	for (c = 0; c < 46; c++);
      for (; t <= 0; t++)
      lbl2:
	;
      goto lbl1;
    }
  goto lbl2;
}


<|start_filename|>testdata/paste.c<|end_filename|>
# define __REPB_PREFIX(name) __##name

unsigned char *__REPB_PREFIX(buffer);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55273.c<|end_filename|>
extern int debug_threads;
extern void sigsuspend (void);
void my_waitpid (int flags, int wnohang)
{
  while (1)
    {
      if (flags & 0x80000000)
        {
          if (wnohang)
            break;
          if (debug_threads)
            __builtin_puts ("blocking\n");
          sigsuspend ();
        }
      flags ^= 0x80000000;
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/section.c<|end_filename|>
/* { dg-do compile } */

/* { dg-require-effective-target named_sections } */
extern int __attribute__ ((__section__(".init.text"))) elv_register(void)
{
 return 0;
}
extern typeof(elv_register) elv_register;


<|start_filename|>v2/headers/linux_arm/builtin.h<|end_filename|>
//  Copyright 2018 The CC Authors. All rights reserved.
//  Use of this source code is governed by a BSD-style
//  license that can be found in the LICENSE file.

// +build ignore

#ifndef _BUILTIN_H_
#define _BUILTIN_H_

#include "predefined.h"

typedef struct {
	void *_[2];		// Go *[]interface{}
} *__builtin_va_list;

typedef void *__FILE_TYPE__;

__SIZE_TYPE__ __builtin_strlen(char *__s);
__UINT64_TYPE__ __builtin_bswap64(__UINT64_TYPE__ x);
char *__builtin_strchrnul(char *, int);
char *__builtin_strcpy(char *__dest, char *__src);
double __builtin_copysign(double x, double y);
int __builtin_abs(int j);
int __builtin_ffs(int i);
int __builtin_isprint(int);
int __builtin_memcmp(void *__s1, void *__s2, __SIZE_TYPE__ __n);
int __builtin_printf(char *__format, ...);
int __builtin_sprintf(char *__s, char *__format, ...);
int __builtin_strcmp(char *__s1, char *__s2);
int __signbit(double x);
int __signbitf(float x);
void *__builtin_alloca(__SIZE_TYPE__ __size);
void *__builtin_memcpy(void *dest, const void *src, __SIZE_TYPE__ n);
void *__builtin_memset(void *s, int c, __SIZE_TYPE__ n);
#ifdef __ccgo__
extern void *__ccgo_va_end;
extern void *__ccgo_va_start;
#endif
void __GO__(char*);
void __builtin_abort(void);
void __builtin_exit(int __status);
void __builtin_trap(void);
void __register_stdfiles(void *, void *, void *, void *);

#define __builtin_choose_expr(a, b, c) (a) ? (b) : (c)
#define __builtin_expect(exp, c) (exp)
#define __builtin_offsetof(st, m) ((__SIZE_TYPE__)(&((st *)0)->m))
#define __builtin_prefetch(addr, ...) (void)(addr)
#define __builtin_signbit(x) (sizeof(x) == sizeof(float) ? __signbitf(x) : sizeof (x) == sizeof(double) ? __signbit(x) : __signbitl(x))
#define __builtin_types_compatible_p(type1, type2) __builtin_types_compatible__((type1){}, (type2){})
#define __builtin_va_arg(ap, type) (type)ap
#define __builtin_va_copy(dest, src) dest = src
#ifdef __ccgo__
#define __builtin_va_end(ap) ap = __ccgo_va_end
#define __builtin_va_start(ap, arg) ap = __ccgo_va_start
#else
#define __builtin_va_end(ap) ap = (void*)0
#define __builtin_va_start(ap, arg) ap = (void*)-1
#endif
#define __complex__ _Complex
#define __const const
#define __extension__
#define __typeof__ typeof
#define __volatile volatile

#endif				/* _BUILTIN_H_ */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920428-3.c<|end_filename|>
/* { dg-require-effective-target label_values } */
/* { dg-require-effective-target indirect_jumps } */

x(a){static void*j[]={&&l1,&&l2};goto*j[a];l1:return 0;l2:return 1;}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr57331.c<|end_filename|>
/* PR tree-optimization/57331 */

int
foo (int x)
{
  void *p = x ? (void *) 1 : (void *) 0;
  __INTPTR_TYPE__ b = (__INTPTR_TYPE__) p;
  if (b)
    return 0;
  return 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090209-1.c<|end_filename|>
/* PR middle-end/38981 */
/* Reporter: <NAME> <<EMAIL>> */

struct d_info
{
  int **subs;
};

static int *
d_substitution (struct d_info *di, int prefix)
{
  char c;

	c='_';

  if (c == '_')
    {
      unsigned int id;

      if (c != '_')
	{
	  do
	    {
	      unsigned int new_id;

	      if (new_id < id)
		return 0;
	      id = new_id;
	    }
	  while (c != '_');
	}



      return di->subs[id];
    }
  else
    {
      int verbose;
      int code;
      int simple_len;

	code=0;
	simple_len=0;
	verbose=0;
      if (! code && prefix)
	{
	  char peek;
		peek='A';

	  if (peek == 'C' || peek == 'D')
	    verbose = 1;
	}

	      if (verbose)
		{
		  code = simple_len;
		}

    }
}


<|start_filename|>v2/testdata/cpp-expand/011.c<|end_filename|>
#if 0 != (0 && (0/0))
   FAIL
#endif

#if 1 != (-1 || (0/0))
   FAIL
#endif

#if 3 != (-1 ? 3 : (0/0))
   FAIL
#endif

int
main()
{
	return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32796.c<|end_filename|>


__SIZE_TYPE__ f (void *ptr)
{
  return ((__SIZE_TYPE__)(ptr)-1) | 1ULL;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47428.c<|end_filename|>
/* PR tree-optimization/47428 */
/* { dg-require-effective-target untyped_assembly } */

struct S
{
  int s;
} a;
int b;

void bar (struct S);

int
baz (int x __attribute__((unused)), int y)
{
  int i;
  for (i = 0; i < 1; i = 1)
    for (y = 0; y < 1; y = 1);
  return y;
}

void
foo (void)
{
  fn (0);
}

int
fn (const int x, int y __attribute__((unused)))
{
  if (baz (baz (0, x), 0))
    return 0;
  else
    bar (a);
  return 0;
}

void
bar (struct S x)
{
  for (;;)
    for (; x.s;)
      b = 0 ? : baz (0, 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39937.c<|end_filename|>
int foo (__const char *__restrict __s);
static void 
read_anisou(char line[])
{
  foo (line+1);
}
void
read_pdbfile(void)
{
  char line[4096];
  read_anisou (line);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45919.c<|end_filename|>
/* PR tree-optimization/45919 */

const struct S { int a; int b[]; } s = { 0, { 0 }};

int
foo (void)
{
  return s.b[0];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44119.c<|end_filename|>
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef unsigned int uint32_t;
static int8_t
safe_mul_func_int16_t_s_s (int16_t si1, int8_t si2)
{
  return si1 && si2 && si1 > +si2 || si1 && si2 && si2 < +si1 || si1 && si2
    && si1 < +si2 || si1 && si2 && si1 && si2 < +si1 ? : si1 * si2;
}

struct S0
{
};
int32_t g_72[7][4][1];
int32_t *g_184 = &g_72[1][2][0];
int32_t **g_224 = &g_184;
struct S0 g_244 = {
};

int8_t *
func_96 (int8_t p_97, uint32_t p_98, uint32_t p_99)
{
  struct S0 *l_243 = &g_244;
  int i;
  for (i = 0; i < 1; p_98 = 1)
    {
      int32_t *l_202[3];
      int i;
      for (i = 0; i < 1; i++)
        l_202[i] = &g_72[2][2][0];
      if (safe_mul_func_int16_t_s_s (0xCAF0, **g_224))
        {
          if (p_98 && &l_243)
            {
            }
          else
            *g_224 = l_202[0];
          for (0;; 1)
            {
            }
        }
    }
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060208-1.c<|end_filename|>
/* PR middle-end/26092 */
/* { dg-skip-if "can't take address of malloc" { nvptx-*-* } { "*" } { "" } } */
typedef __SIZE_TYPE__ size_t;
extern void *malloc (size_t);

void *(*const foo) (size_t) = malloc;

void *test (void)
{
  return (*foo) (3);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20081101-1.c<|end_filename|>
int foo (int i, int b)
{
  int mask;
  int result;
  if (b)
    mask = -1;
  else
    mask = 0;
  result = i + 1;
  result = result & mask;
  return result;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr30433.c<|end_filename|>
int f = (_Complex float)(0.5) == 0.5;



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59134.c<|end_filename|>
/* { dg-do compile } */

extern void* malloc(__SIZE_TYPE__) __attribute__((malloc));

typedef struct {
  char pad;
  int arr[0];
} __attribute__((packed)) str;

str *
foo (void)
{
  str *s = malloc (sizeof (str) + sizeof (int));
  s->arr[0] = 0x12345678;
  return s;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20121027-1.c<|end_filename|>
extern int nc;
void f(void)
{
    unsigned char resp[1024];
    int c;
    int bl = 0;
    unsigned long long *dwords = (unsigned long long *)(resp + 5);
    for (c=0; c<nc; c++)
    {
        ff(dwords[bl/64]);
        bl++;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33122.c<|end_filename|>
struct dis386 {
  const char *x;
};

static const struct dis386 float_reg[][2] = {
  { { "fadd" }, { "fadd" } },
};

void foo(int i, int j)
{
  const struct dis386 *dp;

  dp = &float_reg[i - 1][j];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59569-1.c<|end_filename|>
/* PR middle-end/59569 */
extern char c;

void
foo (int i, char **j)
{
  while (i)
    j[--i] = &c;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40676.c<|end_filename|>
extern int f1();
extern int f2(void*);
extern void* f3(int);
int xmsih;
typedef unsigned short XWCHAR;

inline unsigned int xstrlenW( const XWCHAR *str )
{
    const XWCHAR *s = str;
    while (*s) s++;
    return s - str;
}


static int msi_dialog_register_class( void )
{
    int cls;

    if( !f2( &cls ) )
        return 0;
    if( !f2( &cls ) )
        return 0;
    xmsih = f1();
    if( !xmsih )
        return 0;
    return 1;
}

void *xmsi_dialog_create(const XWCHAR* szDialogName)
{
    msi_dialog_register_class();
    return f3(xstrlenW(szDialogName));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34029-1.c<|end_filename|>
static const char s[] = "ab.cd.efghijk";

int
foo (const char *x)
{
  const char *a;
  int b = 0;

  a = __builtin_strchr (s, '.');
  if (a == 0)
    b = 1;
  else if ((a = __builtin_strchr (a + 1, '.')) == 0)
    b = 1;
  else if (__builtin_strncmp (s, x, a - s))
    b = 1;
  else if (__builtin_strncmp (a + 1, x + (a - s + 1), 4) < 0)
    b = 1;

  if (b)
    return 4;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/libcall-1.c<|end_filename|>
/* Failed on ARM because rtx_varies_p didn't like the REG_EQUAL notes
   generated for libcalls.
   http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01518.html */
static const char digs[] = "0123456789ABCDEF";
int __attribute__((pure)) bar();

int foo (int i)
{
  int len;
  if (i)
    return 0;
  len = bar();
  return digs[len];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr71916.c<|end_filename|>
/* PR rtl-optimization/71916 */

int a, b, c, d, f, g;
short h;

short
foo (short p1)
{
  return a >= 2 || p1 > 7 >> a ? p1 : p1 << a;
}

void
bar (void)
{
  for (;;)
    {
      int i, j[3];
      h = b >= 2 ? d : d >> b;
      if (foo (f > h ^ c))
	{
	  d = 0;
	  while (f <= 2)
	    {
	      char k[2];
	      for (;;)
		k[i++] = 7;
	    }
	}
      else
	for (;;)
	  g = j[2];
      if (g)
	for (;;)
	  ;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49163.c<|end_filename|>
/* PR target/49163 */
/* { dg-require-effective-target int32plus } */
struct S1
{
 unsigned f0:18;
 int f1;
} __attribute__ ((packed));

struct S2
{
  volatile long long f0;
  int f1;
};

struct S1 s1;
struct S2 s2;
const struct S2 s2array[2][1] = { };

struct S2 **sptr;

extern int bar (char a, long long b, int * c, long long d, long long e);
extern int baz (void);

int i;
int *ptr;

void
foo (int *arg)
{
  for (i = 0; i < 1; i = baz())
    {
      *arg = *(int *)sptr;
      *ptr = bar (*arg, s2.f1, ptr,
		  bar (s2array[1][0].f0, *arg, ptr, s1.f1, *ptr), *arg);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65540.c<|end_filename|>
long double func1 (long double x)
{
  if (x > 0.0)
    return x;
  else if (x < 0.0)
    return -x;
  else
    return x;
}

long double func2 (long double x)
{
  if (x > 0.0)
    return x;
  else if (x < 0.0)
    return -x;
  else
    return x;
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21532.c<|end_filename|>


int
bar (unsigned char key)
{
  unsigned char buf[sizeof (unsigned long)+2];
  unsigned char b;
  unsigned char *buf_ = buf + 1;

  for (b = 8; b != 0; b--)
    buf_[b] = key >> b;

  return foo (b);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20051207-1.c<|end_filename|>
/* PR target/25268 */

long long
foo (long long x, int y)
{
  return x << ((y + 1) & 63);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090114-1.c<|end_filename|>
typedef struct {
    int MbInterlace;
    int channel_type;
} InputParameters;
typedef struct {
    int type;
    int NumberofCodedPFrame;
    int NumberofGOP;
    int NumberofPPicture;
    int FieldControl;
    int Frame_Total_Number_MB;
    int NumberofCodedMacroBlocks;
    int BasicUnit;
} ImageParameters;
extern InputParameters *input;
extern ImageParameters *img;
long T;
void rc_init_pict(int fieldpic)
{
  if(input->MbInterlace)
    T = img->Frame_Total_Number_MB;
  img->NumberofCodedMacroBlocks=0;
  if(input->channel_type==1
     && img->NumberofCodedPFrame==58)
    T = 4;
  if(fieldpic)
    {
      switch (img->type)
	{
	  case 0:
	   if(img->NumberofCodedPFrame>0
	      && img->FieldControl==1)
	     T = 3;
	   if(img->NumberofPPicture==1)
	     T = 2;
	}
      if(img->type==0
	 && img->NumberofCodedPFrame>0)
	T = 0;
    }
  if(img->type==0
     && img->FieldControl==1)
    T = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37742-3.c<|end_filename|>
void matmul_i4 (int * __restrict dest_y,
		const int * __restrict abase,
		const int * __restrict bbase_y,
		int count, int xcount, int ycount, int aystride)
{               
  int x, y, n;
  const int * __restrict abase_n;
  int bbase_yn;
  for (y = 0; y < ycount; y++)
    for (n = 0; n < count; n++) {
	abase_n = abase + n*aystride;
	bbase_yn = bbase_y[n];
	for (x = 0; x < xcount; x++)
	  dest_y[x] += abase_n[x] * bbase_yn; 
    }
}



<|start_filename|>v2/headers/linux_386/usr/include/i386-linux-gnu/bits/confname.h<|end_filename|>
/* `sysconf', `pathconf', and `confstr' NAME values.  Generic version.
   Copyright (C) 1993-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _UNISTD_H
# error "Never use <bits/confname.h> directly; include <unistd.h> instead."
#endif

/* Values for the NAME argument to `pathconf' and `fpathconf'.  */
enum {
	_PC_LINK_MAX,
#define	_PC_LINK_MAX			_PC_LINK_MAX
	_PC_MAX_CANON,
#define	_PC_MAX_CANON			_PC_MAX_CANON
	_PC_MAX_INPUT,
#define	_PC_MAX_INPUT			_PC_MAX_INPUT
	_PC_NAME_MAX,
#define	_PC_NAME_MAX			_PC_NAME_MAX
	_PC_PATH_MAX,
#define	_PC_PATH_MAX			_PC_PATH_MAX
	_PC_PIPE_BUF,
#define	_PC_PIPE_BUF			_PC_PIPE_BUF
	_PC_CHOWN_RESTRICTED,
#define	_PC_CHOWN_RESTRICTED		_PC_CHOWN_RESTRICTED
	_PC_NO_TRUNC,
#define	_PC_NO_TRUNC			_PC_NO_TRUNC
	_PC_VDISABLE,
#define _PC_VDISABLE			_PC_VDISABLE
	_PC_SYNC_IO,
#define	_PC_SYNC_IO			_PC_SYNC_IO
	_PC_ASYNC_IO,
#define	_PC_ASYNC_IO			_PC_ASYNC_IO
	_PC_PRIO_IO,
#define	_PC_PRIO_IO			_PC_PRIO_IO
	_PC_SOCK_MAXBUF,
#define	_PC_SOCK_MAXBUF			_PC_SOCK_MAXBUF
	_PC_FILESIZEBITS,
#define _PC_FILESIZEBITS		_PC_FILESIZEBITS
	_PC_REC_INCR_XFER_SIZE,
#define _PC_REC_INCR_XFER_SIZE		_PC_REC_INCR_XFER_SIZE
	_PC_REC_MAX_XFER_SIZE,
#define _PC_REC_MAX_XFER_SIZE		_PC_REC_MAX_XFER_SIZE
	_PC_REC_MIN_XFER_SIZE,
#define _PC_REC_MIN_XFER_SIZE		_PC_REC_MIN_XFER_SIZE
	_PC_REC_XFER_ALIGN,
#define _PC_REC_XFER_ALIGN		_PC_REC_XFER_ALIGN
	_PC_ALLOC_SIZE_MIN,
#define _PC_ALLOC_SIZE_MIN		_PC_ALLOC_SIZE_MIN
	_PC_SYMLINK_MAX,
#define _PC_SYMLINK_MAX			_PC_SYMLINK_MAX
	_PC_2_SYMLINKS
#define _PC_2_SYMLINKS			_PC_2_SYMLINKS
};

/* Values for the argument to `sysconf'.  */
enum {
	_SC_ARG_MAX,
#define	_SC_ARG_MAX			_SC_ARG_MAX
	_SC_CHILD_MAX,
#define	_SC_CHILD_MAX			_SC_CHILD_MAX
	_SC_CLK_TCK,
#define	_SC_CLK_TCK			_SC_CLK_TCK
	_SC_NGROUPS_MAX,
#define	_SC_NGROUPS_MAX			_SC_NGROUPS_MAX
	_SC_OPEN_MAX,
#define	_SC_OPEN_MAX			_SC_OPEN_MAX
	_SC_STREAM_MAX,
#define	_SC_STREAM_MAX			_SC_STREAM_MAX
	_SC_TZNAME_MAX,
#define	_SC_TZNAME_MAX			_SC_TZNAME_MAX
	_SC_JOB_CONTROL,
#define	_SC_JOB_CONTROL			_SC_JOB_CONTROL
	_SC_SAVED_IDS,
#define	_SC_SAVED_IDS			_SC_SAVED_IDS
	_SC_REALTIME_SIGNALS,
#define	_SC_REALTIME_SIGNALS		_SC_REALTIME_SIGNALS
	_SC_PRIORITY_SCHEDULING,
#define	_SC_PRIORITY_SCHEDULING		_SC_PRIORITY_SCHEDULING
	_SC_TIMERS,
#define	_SC_TIMERS			_SC_TIMERS
	_SC_ASYNCHRONOUS_IO,
#define	_SC_ASYNCHRONOUS_IO		_SC_ASYNCHRONOUS_IO
	_SC_PRIORITIZED_IO,
#define	_SC_PRIORITIZED_IO		_SC_PRIORITIZED_IO
	_SC_SYNCHRONIZED_IO,
#define	_SC_SYNCHRONIZED_IO		_SC_SYNCHRONIZED_IO
	_SC_FSYNC,
#define	_SC_FSYNC			_SC_FSYNC
	_SC_MAPPED_FILES,
#define	_SC_MAPPED_FILES		_SC_MAPPED_FILES
	_SC_MEMLOCK,
#define	_SC_MEMLOCK			_SC_MEMLOCK
	_SC_MEMLOCK_RANGE,
#define	_SC_MEMLOCK_RANGE		_SC_MEMLOCK_RANGE
	_SC_MEMORY_PROTECTION,
#define	_SC_MEMORY_PROTECTION		_SC_MEMORY_PROTECTION
	_SC_MESSAGE_PASSING,
#define	_SC_MESSAGE_PASSING		_SC_MESSAGE_PASSING
	_SC_SEMAPHORES,
#define	_SC_SEMAPHORES			_SC_SEMAPHORES
	_SC_SHARED_MEMORY_OBJECTS,
#define	_SC_SHARED_MEMORY_OBJECTS	_SC_SHARED_MEMORY_OBJECTS
	_SC_AIO_LISTIO_MAX,
#define	_SC_AIO_LISTIO_MAX		_SC_AIO_LISTIO_MAX
	_SC_AIO_MAX,
#define	_SC_AIO_MAX			_SC_AIO_MAX
	_SC_AIO_PRIO_DELTA_MAX,
#define	_SC_AIO_PRIO_DELTA_MAX		_SC_AIO_PRIO_DELTA_MAX
	_SC_DELAYTIMER_MAX,
#define	_SC_DELAYTIMER_MAX		_SC_DELAYTIMER_MAX
	_SC_MQ_OPEN_MAX,
#define	_SC_MQ_OPEN_MAX			_SC_MQ_OPEN_MAX
	_SC_MQ_PRIO_MAX,
#define	_SC_MQ_PRIO_MAX			_SC_MQ_PRIO_MAX
	_SC_VERSION,
#define	_SC_VERSION			_SC_VERSION
	_SC_PAGESIZE,
#define	_SC_PAGESIZE			_SC_PAGESIZE
#define	_SC_PAGE_SIZE			_SC_PAGESIZE
	_SC_RTSIG_MAX,
#define	_SC_RTSIG_MAX			_SC_RTSIG_MAX
	_SC_SEM_NSEMS_MAX,
#define	_SC_SEM_NSEMS_MAX		_SC_SEM_NSEMS_MAX
	_SC_SEM_VALUE_MAX,
#define	_SC_SEM_VALUE_MAX		_SC_SEM_VALUE_MAX
	_SC_SIGQUEUE_MAX,
#define	_SC_SIGQUEUE_MAX		_SC_SIGQUEUE_MAX
	_SC_TIMER_MAX,
#define	_SC_TIMER_MAX			_SC_TIMER_MAX

	/* Values for the argument to `sysconf'
	   corresponding to _POSIX2_* symbols.  */
	_SC_BC_BASE_MAX,
#define	_SC_BC_BASE_MAX			_SC_BC_BASE_MAX
	_SC_BC_DIM_MAX,
#define	_SC_BC_DIM_MAX			_SC_BC_DIM_MAX
	_SC_BC_SCALE_MAX,
#define	_SC_BC_SCALE_MAX		_SC_BC_SCALE_MAX
	_SC_BC_STRING_MAX,
#define	_SC_BC_STRING_MAX		_SC_BC_STRING_MAX
	_SC_COLL_WEIGHTS_MAX,
#define	_SC_COLL_WEIGHTS_MAX		_SC_COLL_WEIGHTS_MAX
	_SC_EQUIV_CLASS_MAX,
#define	_SC_EQUIV_CLASS_MAX		_SC_EQUIV_CLASS_MAX
	_SC_EXPR_NEST_MAX,
#define	_SC_EXPR_NEST_MAX		_SC_EXPR_NEST_MAX
	_SC_LINE_MAX,
#define	_SC_LINE_MAX			_SC_LINE_MAX
	_SC_RE_DUP_MAX,
#define	_SC_RE_DUP_MAX			_SC_RE_DUP_MAX
	_SC_CHARCLASS_NAME_MAX,
#define	_SC_CHARCLASS_NAME_MAX		_SC_CHARCLASS_NAME_MAX

	_SC_2_VERSION,
#define	_SC_2_VERSION			_SC_2_VERSION
	_SC_2_C_BIND,
#define	_SC_2_C_BIND			_SC_2_C_BIND
	_SC_2_C_DEV,
#define	_SC_2_C_DEV			_SC_2_C_DEV
	_SC_2_FORT_DEV,
#define	_SC_2_FORT_DEV			_SC_2_FORT_DEV
	_SC_2_FORT_RUN,
#define	_SC_2_FORT_RUN			_SC_2_FORT_RUN
	_SC_2_SW_DEV,
#define	_SC_2_SW_DEV			_SC_2_SW_DEV
	_SC_2_LOCALEDEF,
#define	_SC_2_LOCALEDEF			_SC_2_LOCALEDEF

	_SC_PII,
#define	_SC_PII				_SC_PII
	_SC_PII_XTI,
#define	_SC_PII_XTI			_SC_PII_XTI
	_SC_PII_SOCKET,
#define	_SC_PII_SOCKET			_SC_PII_SOCKET
	_SC_PII_INTERNET,
#define	_SC_PII_INTERNET		_SC_PII_INTERNET
	_SC_PII_OSI,
#define	_SC_PII_OSI			_SC_PII_OSI
	_SC_POLL,
#define	_SC_POLL			_SC_POLL
	_SC_SELECT,
#define	_SC_SELECT			_SC_SELECT
	_SC_UIO_MAXIOV,
#define	_SC_UIO_MAXIOV			_SC_UIO_MAXIOV
	_SC_IOV_MAX = _SC_UIO_MAXIOV,
#define _SC_IOV_MAX			_SC_IOV_MAX
	_SC_PII_INTERNET_STREAM,
#define	_SC_PII_INTERNET_STREAM		_SC_PII_INTERNET_STREAM
	_SC_PII_INTERNET_DGRAM,
#define	_SC_PII_INTERNET_DGRAM		_SC_PII_INTERNET_DGRAM
	_SC_PII_OSI_COTS,
#define	_SC_PII_OSI_COTS		_SC_PII_OSI_COTS
	_SC_PII_OSI_CLTS,
#define	_SC_PII_OSI_CLTS		_SC_PII_OSI_CLTS
	_SC_PII_OSI_M,
#define	_SC_PII_OSI_M			_SC_PII_OSI_M
	_SC_T_IOV_MAX,
#define	_SC_T_IOV_MAX			_SC_T_IOV_MAX

	/* Values according to POSIX 1003.1c (POSIX threads).  */
	_SC_THREADS,
#define	_SC_THREADS			_SC_THREADS
	_SC_THREAD_SAFE_FUNCTIONS,
#define _SC_THREAD_SAFE_FUNCTIONS	_SC_THREAD_SAFE_FUNCTIONS
	_SC_GETGR_R_SIZE_MAX,
#define	_SC_GETGR_R_SIZE_MAX		_SC_GETGR_R_SIZE_MAX
	_SC_GETPW_R_SIZE_MAX,
#define	_SC_GETPW_R_SIZE_MAX		_SC_GETPW_R_SIZE_MAX
	_SC_LOGIN_NAME_MAX,
#define	_SC_LOGIN_NAME_MAX		_SC_LOGIN_NAME_MAX
	_SC_TTY_NAME_MAX,
#define	_SC_TTY_NAME_MAX		_SC_TTY_NAME_MAX
	_SC_THREAD_DESTRUCTOR_ITERATIONS,
#define	_SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
	_SC_THREAD_KEYS_MAX,
#define	_SC_THREAD_KEYS_MAX		_SC_THREAD_KEYS_MAX
	_SC_THREAD_STACK_MIN,
#define	_SC_THREAD_STACK_MIN		_SC_THREAD_STACK_MIN
	_SC_THREAD_THREADS_MAX,
#define	_SC_THREAD_THREADS_MAX		_SC_THREAD_THREADS_MAX
	_SC_THREAD_ATTR_STACKADDR,
#define	_SC_THREAD_ATTR_STACKADDR	_SC_THREAD_ATTR_STACKADDR
	_SC_THREAD_ATTR_STACKSIZE,
#define	_SC_THREAD_ATTR_STACKSIZE	_SC_THREAD_ATTR_STACKSIZE
	_SC_THREAD_PRIORITY_SCHEDULING,
#define	_SC_THREAD_PRIORITY_SCHEDULING	_SC_THREAD_PRIORITY_SCHEDULING
	_SC_THREAD_PRIO_INHERIT,
#define	_SC_THREAD_PRIO_INHERIT		_SC_THREAD_PRIO_INHERIT
	_SC_THREAD_PRIO_PROTECT,
#define	_SC_THREAD_PRIO_PROTECT		_SC_THREAD_PRIO_PROTECT
	_SC_THREAD_PROCESS_SHARED,
#define	_SC_THREAD_PROCESS_SHARED	_SC_THREAD_PROCESS_SHARED

	_SC_NPROCESSORS_CONF,
#define _SC_NPROCESSORS_CONF		_SC_NPROCESSORS_CONF
	_SC_NPROCESSORS_ONLN,
#define _SC_NPROCESSORS_ONLN		_SC_NPROCESSORS_ONLN
	_SC_PHYS_PAGES,
#define _SC_PHYS_PAGES			_SC_PHYS_PAGES
	_SC_AVPHYS_PAGES,
#define _SC_AVPHYS_PAGES		_SC_AVPHYS_PAGES
	_SC_ATEXIT_MAX,
#define _SC_ATEXIT_MAX			_SC_ATEXIT_MAX
	_SC_PASS_MAX,
#define _SC_PASS_MAX			_SC_PASS_MAX

	_SC_XOPEN_VERSION,
#define _SC_XOPEN_VERSION		_SC_XOPEN_VERSION
	_SC_XOPEN_XCU_VERSION,
#define _SC_XOPEN_XCU_VERSION		_SC_XOPEN_XCU_VERSION
	_SC_XOPEN_UNIX,
#define _SC_XOPEN_UNIX			_SC_XOPEN_UNIX
	_SC_XOPEN_CRYPT,
#define _SC_XOPEN_CRYPT			_SC_XOPEN_CRYPT
	_SC_XOPEN_ENH_I18N,
#define _SC_XOPEN_ENH_I18N		_SC_XOPEN_ENH_I18N
	_SC_XOPEN_SHM,
#define _SC_XOPEN_SHM			_SC_XOPEN_SHM

	_SC_2_CHAR_TERM,
#define _SC_2_CHAR_TERM			_SC_2_CHAR_TERM
	_SC_2_C_VERSION,
#define _SC_2_C_VERSION			_SC_2_C_VERSION
	_SC_2_UPE,
#define _SC_2_UPE			_SC_2_UPE

	_SC_XOPEN_XPG2,
#define _SC_XOPEN_XPG2			_SC_XOPEN_XPG2
	_SC_XOPEN_XPG3,
#define _SC_XOPEN_XPG3			_SC_XOPEN_XPG3
	_SC_XOPEN_XPG4,
#define _SC_XOPEN_XPG4			_SC_XOPEN_XPG4

	_SC_CHAR_BIT,
#define	_SC_CHAR_BIT			_SC_CHAR_BIT
	_SC_CHAR_MAX,
#define	_SC_CHAR_MAX			_SC_CHAR_MAX
	_SC_CHAR_MIN,
#define	_SC_CHAR_MIN			_SC_CHAR_MIN
	_SC_INT_MAX,
#define	_SC_INT_MAX			_SC_INT_MAX
	_SC_INT_MIN,
#define	_SC_INT_MIN			_SC_INT_MIN
	_SC_LONG_BIT,
#define	_SC_LONG_BIT			_SC_LONG_BIT
	_SC_WORD_BIT,
#define	_SC_WORD_BIT			_SC_WORD_BIT
	_SC_MB_LEN_MAX,
#define	_SC_MB_LEN_MAX			_SC_MB_LEN_MAX
	_SC_NZERO,
#define	_SC_NZERO			_SC_NZERO
	_SC_SSIZE_MAX,
#define	_SC_SSIZE_MAX			_SC_SSIZE_MAX
	_SC_SCHAR_MAX,
#define	_SC_SCHAR_MAX			_SC_SCHAR_MAX
	_SC_SCHAR_MIN,
#define	_SC_SCHAR_MIN			_SC_SCHAR_MIN
	_SC_SHRT_MAX,
#define	_SC_SHRT_MAX			_SC_SHRT_MAX
	_SC_SHRT_MIN,
#define	_SC_SHRT_MIN			_SC_SHRT_MIN
	_SC_UCHAR_MAX,
#define	_SC_UCHAR_MAX			_SC_UCHAR_MAX
	_SC_UINT_MAX,
#define	_SC_UINT_MAX			_SC_UINT_MAX
	_SC_ULONG_MAX,
#define	_SC_ULONG_MAX			_SC_ULONG_MAX
	_SC_USHRT_MAX,
#define	_SC_USHRT_MAX			_SC_USHRT_MAX

	_SC_NL_ARGMAX,
#define	_SC_NL_ARGMAX			_SC_NL_ARGMAX
	_SC_NL_LANGMAX,
#define	_SC_NL_LANGMAX			_SC_NL_LANGMAX
	_SC_NL_MSGMAX,
#define	_SC_NL_MSGMAX			_SC_NL_MSGMAX
	_SC_NL_NMAX,
#define	_SC_NL_NMAX			_SC_NL_NMAX
	_SC_NL_SETMAX,
#define	_SC_NL_SETMAX			_SC_NL_SETMAX
	_SC_NL_TEXTMAX,
#define	_SC_NL_TEXTMAX			_SC_NL_TEXTMAX

	_SC_XBS5_ILP32_OFF32,
#define _SC_XBS5_ILP32_OFF32		_SC_XBS5_ILP32_OFF32
	_SC_XBS5_ILP32_OFFBIG,
#define _SC_XBS5_ILP32_OFFBIG		_SC_XBS5_ILP32_OFFBIG
	_SC_XBS5_LP64_OFF64,
#define _SC_XBS5_LP64_OFF64		_SC_XBS5_LP64_OFF64
	_SC_XBS5_LPBIG_OFFBIG,
#define _SC_XBS5_LPBIG_OFFBIG		_SC_XBS5_LPBIG_OFFBIG

	_SC_XOPEN_LEGACY,
#define _SC_XOPEN_LEGACY		_SC_XOPEN_LEGACY
	_SC_XOPEN_REALTIME,
#define _SC_XOPEN_REALTIME		_SC_XOPEN_REALTIME
	_SC_XOPEN_REALTIME_THREADS,
#define _SC_XOPEN_REALTIME_THREADS	_SC_XOPEN_REALTIME_THREADS

	_SC_ADVISORY_INFO,
#define _SC_ADVISORY_INFO		_SC_ADVISORY_INFO
	_SC_BARRIERS,
#define _SC_BARRIERS			_SC_BARRIERS
	_SC_BASE,
#define _SC_BASE			_SC_BASE
	_SC_C_LANG_SUPPORT,
#define _SC_C_LANG_SUPPORT		_SC_C_LANG_SUPPORT
	_SC_C_LANG_SUPPORT_R,
#define _SC_C_LANG_SUPPORT_R		_SC_C_LANG_SUPPORT_R
	_SC_CLOCK_SELECTION,
#define _SC_CLOCK_SELECTION		_SC_CLOCK_SELECTION
	_SC_CPUTIME,
#define _SC_CPUTIME			_SC_CPUTIME
	_SC_THREAD_CPUTIME,
#define _SC_THREAD_CPUTIME		_SC_THREAD_CPUTIME
	_SC_DEVICE_IO,
#define _SC_DEVICE_IO			_SC_DEVICE_IO
	_SC_DEVICE_SPECIFIC,
#define _SC_DEVICE_SPECIFIC		_SC_DEVICE_SPECIFIC
	_SC_DEVICE_SPECIFIC_R,
#define _SC_DEVICE_SPECIFIC_R		_SC_DEVICE_SPECIFIC_R
	_SC_FD_MGMT,
#define _SC_FD_MGMT			_SC_FD_MGMT
	_SC_FIFO,
#define _SC_FIFO			_SC_FIFO
	_SC_PIPE,
#define _SC_PIPE			_SC_PIPE
	_SC_FILE_ATTRIBUTES,
#define _SC_FILE_ATTRIBUTES		_SC_FILE_ATTRIBUTES
	_SC_FILE_LOCKING,
#define _SC_FILE_LOCKING		_SC_FILE_LOCKING
	_SC_FILE_SYSTEM,
#define _SC_FILE_SYSTEM			_SC_FILE_SYSTEM
	_SC_MONOTONIC_CLOCK,
#define _SC_MONOTONIC_CLOCK		_SC_MONOTONIC_CLOCK
	_SC_MULTI_PROCESS,
#define _SC_MULTI_PROCESS		_SC_MULTI_PROCESS
	_SC_SINGLE_PROCESS,
#define _SC_SINGLE_PROCESS		_SC_SINGLE_PROCESS
	_SC_NETWORKING,
#define _SC_NETWORKING			_SC_NETWORKING
	_SC_READER_WRITER_LOCKS,
#define _SC_READER_WRITER_LOCKS		_SC_READER_WRITER_LOCKS
	_SC_SPIN_LOCKS,
#define _SC_SPIN_LOCKS			_SC_SPIN_LOCKS
	_SC_REGEXP,
#define _SC_REGEXP			_SC_REGEXP
	_SC_REGEX_VERSION,
#define _SC_REGEX_VERSION		_SC_REGEX_VERSION
	_SC_SHELL,
#define _SC_SHELL			_SC_SHELL
	_SC_SIGNALS,
#define _SC_SIGNALS			_SC_SIGNALS
	_SC_SPAWN,
#define _SC_SPAWN			_SC_SPAWN
	_SC_SPORADIC_SERVER,
#define _SC_SPORADIC_SERVER		_SC_SPORADIC_SERVER
	_SC_THREAD_SPORADIC_SERVER,
#define _SC_THREAD_SPORADIC_SERVER	_SC_THREAD_SPORADIC_SERVER
	_SC_SYSTEM_DATABASE,
#define _SC_SYSTEM_DATABASE		_SC_SYSTEM_DATABASE
	_SC_SYSTEM_DATABASE_R,
#define _SC_SYSTEM_DATABASE_R		_SC_SYSTEM_DATABASE_R
	_SC_TIMEOUTS,
#define _SC_TIMEOUTS			_SC_TIMEOUTS
	_SC_TYPED_MEMORY_OBJECTS,
#define _SC_TYPED_MEMORY_OBJECTS	_SC_TYPED_MEMORY_OBJECTS
	_SC_USER_GROUPS,
#define _SC_USER_GROUPS			_SC_USER_GROUPS
	_SC_USER_GROUPS_R,
#define _SC_USER_GROUPS_R		_SC_USER_GROUPS_R
	_SC_2_PBS,
#define _SC_2_PBS			_SC_2_PBS
	_SC_2_PBS_ACCOUNTING,
#define _SC_2_PBS_ACCOUNTING		_SC_2_PBS_ACCOUNTING
	_SC_2_PBS_LOCATE,
#define _SC_2_PBS_LOCATE		_SC_2_PBS_LOCATE
	_SC_2_PBS_MESSAGE,
#define _SC_2_PBS_MESSAGE		_SC_2_PBS_MESSAGE
	_SC_2_PBS_TRACK,
#define _SC_2_PBS_TRACK			_SC_2_PBS_TRACK
	_SC_SYMLOOP_MAX,
#define _SC_SYMLOOP_MAX			_SC_SYMLOOP_MAX
	_SC_STREAMS,
#define _SC_STREAMS			_SC_STREAMS
	_SC_2_PBS_CHECKPOINT,
#define _SC_2_PBS_CHECKPOINT		_SC_2_PBS_CHECKPOINT

	_SC_V6_ILP32_OFF32,
#define _SC_V6_ILP32_OFF32		_SC_V6_ILP32_OFF32
	_SC_V6_ILP32_OFFBIG,
#define _SC_V6_ILP32_OFFBIG		_SC_V6_ILP32_OFFBIG
	_SC_V6_LP64_OFF64,
#define _SC_V6_LP64_OFF64		_SC_V6_LP64_OFF64
	_SC_V6_LPBIG_OFFBIG,
#define _SC_V6_LPBIG_OFFBIG		_SC_V6_LPBIG_OFFBIG

	_SC_HOST_NAME_MAX,
#define _SC_HOST_NAME_MAX		_SC_HOST_NAME_MAX
	_SC_TRACE,
#define _SC_TRACE			_SC_TRACE
	_SC_TRACE_EVENT_FILTER,
#define _SC_TRACE_EVENT_FILTER		_SC_TRACE_EVENT_FILTER
	_SC_TRACE_INHERIT,
#define _SC_TRACE_INHERIT		_SC_TRACE_INHERIT
	_SC_TRACE_LOG,
#define _SC_TRACE_LOG			_SC_TRACE_LOG

	_SC_LEVEL1_ICACHE_SIZE,
#define _SC_LEVEL1_ICACHE_SIZE		_SC_LEVEL1_ICACHE_SIZE
	_SC_LEVEL1_ICACHE_ASSOC,
#define _SC_LEVEL1_ICACHE_ASSOC		_SC_LEVEL1_ICACHE_ASSOC
	_SC_LEVEL1_ICACHE_LINESIZE,
#define _SC_LEVEL1_ICACHE_LINESIZE	_SC_LEVEL1_ICACHE_LINESIZE
	_SC_LEVEL1_DCACHE_SIZE,
#define _SC_LEVEL1_DCACHE_SIZE		_SC_LEVEL1_DCACHE_SIZE
	_SC_LEVEL1_DCACHE_ASSOC,
#define _SC_LEVEL1_DCACHE_ASSOC		_SC_LEVEL1_DCACHE_ASSOC
	_SC_LEVEL1_DCACHE_LINESIZE,
#define _SC_LEVEL1_DCACHE_LINESIZE	_SC_LEVEL1_DCACHE_LINESIZE
	_SC_LEVEL2_CACHE_SIZE,
#define _SC_LEVEL2_CACHE_SIZE		_SC_LEVEL2_CACHE_SIZE
	_SC_LEVEL2_CACHE_ASSOC,
#define _SC_LEVEL2_CACHE_ASSOC		_SC_LEVEL2_CACHE_ASSOC
	_SC_LEVEL2_CACHE_LINESIZE,
#define _SC_LEVEL2_CACHE_LINESIZE	_SC_LEVEL2_CACHE_LINESIZE
	_SC_LEVEL3_CACHE_SIZE,
#define _SC_LEVEL3_CACHE_SIZE		_SC_LEVEL3_CACHE_SIZE
	_SC_LEVEL3_CACHE_ASSOC,
#define _SC_LEVEL3_CACHE_ASSOC		_SC_LEVEL3_CACHE_ASSOC
	_SC_LEVEL3_CACHE_LINESIZE,
#define _SC_LEVEL3_CACHE_LINESIZE	_SC_LEVEL3_CACHE_LINESIZE
	_SC_LEVEL4_CACHE_SIZE,
#define _SC_LEVEL4_CACHE_SIZE		_SC_LEVEL4_CACHE_SIZE
	_SC_LEVEL4_CACHE_ASSOC,
#define _SC_LEVEL4_CACHE_ASSOC		_SC_LEVEL4_CACHE_ASSOC
	_SC_LEVEL4_CACHE_LINESIZE,
#define _SC_LEVEL4_CACHE_LINESIZE	_SC_LEVEL4_CACHE_LINESIZE
	/* Leave room here, maybe we need a few more cache levels some day.  */

	_SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
#define _SC_IPV6			_SC_IPV6
	_SC_RAW_SOCKETS,
#define _SC_RAW_SOCKETS			_SC_RAW_SOCKETS

	_SC_V7_ILP32_OFF32,
#define _SC_V7_ILP32_OFF32		_SC_V7_ILP32_OFF32
	_SC_V7_ILP32_OFFBIG,
#define _SC_V7_ILP32_OFFBIG		_SC_V7_ILP32_OFFBIG
	_SC_V7_LP64_OFF64,
#define _SC_V7_LP64_OFF64		_SC_V7_LP64_OFF64
	_SC_V7_LPBIG_OFFBIG,
#define _SC_V7_LPBIG_OFFBIG		_SC_V7_LPBIG_OFFBIG

	_SC_SS_REPL_MAX,
#define _SC_SS_REPL_MAX			_SC_SS_REPL_MAX

	_SC_TRACE_EVENT_NAME_MAX,
#define _SC_TRACE_EVENT_NAME_MAX	_SC_TRACE_EVENT_NAME_MAX
	_SC_TRACE_NAME_MAX,
#define _SC_TRACE_NAME_MAX		_SC_TRACE_NAME_MAX
	_SC_TRACE_SYS_MAX,
#define _SC_TRACE_SYS_MAX		_SC_TRACE_SYS_MAX
	_SC_TRACE_USER_EVENT_MAX,
#define _SC_TRACE_USER_EVENT_MAX	_SC_TRACE_USER_EVENT_MAX

	_SC_XOPEN_STREAMS,
#define _SC_XOPEN_STREAMS		_SC_XOPEN_STREAMS

	_SC_THREAD_ROBUST_PRIO_INHERIT,
#define _SC_THREAD_ROBUST_PRIO_INHERIT	_SC_THREAD_ROBUST_PRIO_INHERIT
	_SC_THREAD_ROBUST_PRIO_PROTECT
#define _SC_THREAD_ROBUST_PRIO_PROTECT	_SC_THREAD_ROBUST_PRIO_PROTECT
};

/* Values for the NAME argument to `confstr'.  */
enum {
	_CS_PATH,		/* The default search path.  */
#define _CS_PATH		_CS_PATH

	_CS_V6_WIDTH_RESTRICTED_ENVS,
#define _CS_V6_WIDTH_RESTRICTED_ENVS	_CS_V6_WIDTH_RESTRICTED_ENVS
#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	_CS_V6_WIDTH_RESTRICTED_ENVS

	_CS_GNU_LIBC_VERSION,
#define _CS_GNU_LIBC_VERSION	_CS_GNU_LIBC_VERSION
	_CS_GNU_LIBPTHREAD_VERSION,
#define _CS_GNU_LIBPTHREAD_VERSION	_CS_GNU_LIBPTHREAD_VERSION

	_CS_V5_WIDTH_RESTRICTED_ENVS,
#define _CS_V5_WIDTH_RESTRICTED_ENVS	_CS_V5_WIDTH_RESTRICTED_ENVS
#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS	_CS_V5_WIDTH_RESTRICTED_ENVS

	_CS_V7_WIDTH_RESTRICTED_ENVS,
#define _CS_V7_WIDTH_RESTRICTED_ENVS	_CS_V7_WIDTH_RESTRICTED_ENVS
#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS	_CS_V7_WIDTH_RESTRICTED_ENVS

	_CS_LFS_CFLAGS = 1000,
#define _CS_LFS_CFLAGS	_CS_LFS_CFLAGS
	_CS_LFS_LDFLAGS,
#define _CS_LFS_LDFLAGS	_CS_LFS_LDFLAGS
	_CS_LFS_LIBS,
#define _CS_LFS_LIBS		_CS_LFS_LIBS
	_CS_LFS_LINTFLAGS,
#define _CS_LFS_LINTFLAGS	_CS_LFS_LINTFLAGS
	_CS_LFS64_CFLAGS,
#define _CS_LFS64_CFLAGS	_CS_LFS64_CFLAGS
	_CS_LFS64_LDFLAGS,
#define _CS_LFS64_LDFLAGS	_CS_LFS64_LDFLAGS
	_CS_LFS64_LIBS,
#define _CS_LFS64_LIBS	_CS_LFS64_LIBS
	_CS_LFS64_LINTFLAGS,
#define _CS_LFS64_LINTFLAGS	_CS_LFS64_LINTFLAGS

	_CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
	_CS_XBS5_ILP32_OFF32_LDFLAGS,
#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
	_CS_XBS5_ILP32_OFF32_LIBS,
#define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
	_CS_XBS5_ILP32_OFF32_LINTFLAGS,
#define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
	_CS_XBS5_ILP32_OFFBIG_CFLAGS,
#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
	_CS_XBS5_ILP32_OFFBIG_LDFLAGS,
#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
	_CS_XBS5_ILP32_OFFBIG_LIBS,
#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
	_CS_XBS5_LP64_OFF64_CFLAGS,
#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
	_CS_XBS5_LP64_OFF64_LDFLAGS,
#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
	_CS_XBS5_LP64_OFF64_LIBS,
#define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
	_CS_XBS5_LP64_OFF64_LINTFLAGS,
#define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
	_CS_XBS5_LPBIG_OFFBIG_CFLAGS,
#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
	_CS_XBS5_LPBIG_OFFBIG_LIBS,
#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS

	_CS_POSIX_V6_ILP32_OFF32_CFLAGS,
#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
	_CS_POSIX_V6_ILP32_OFF32_LIBS,
#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
	_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
	_CS_POSIX_V6_ILP32_OFFBIG_LIBS,
#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
	_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
	_CS_POSIX_V6_LP64_OFF64_CFLAGS,
#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
	_CS_POSIX_V6_LP64_OFF64_LDFLAGS,
#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
	_CS_POSIX_V6_LP64_OFF64_LIBS,
#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
	_CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
	_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS

	_CS_POSIX_V7_ILP32_OFF32_CFLAGS,
#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
	_CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
	_CS_POSIX_V7_ILP32_OFF32_LIBS,
#define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
	_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
	_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
	_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
	_CS_POSIX_V7_ILP32_OFFBIG_LIBS,
#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
	_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
	_CS_POSIX_V7_LP64_OFF64_CFLAGS,
#define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
	_CS_POSIX_V7_LP64_OFF64_LDFLAGS,
#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
	_CS_POSIX_V7_LP64_OFF64_LIBS,
#define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
	_CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
	_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
	_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
	_CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
	_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS

	_CS_V6_ENV,
#define _CS_V6_ENV			_CS_V6_ENV
	_CS_V7_ENV
#define _CS_V7_ENV			_CS_V7_ENV
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040220-1.c<|end_filename|>
/* PR 14194 */

int irqs;

static inline __attribute__((always_inline))
int kstat_irqs (void) {
  int i, sum = 0;
  for (i = 0; i < 1; i++)
    if (__builtin_expect(i, 0))
      sum += irqs;
  return sum;
}

int show_interrupts (void) {
  return kstat_irqs ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38807.c<|end_filename|>
/* PR tree-optimization/38807 */

int
baz (short x)
{
  return x;
}

int a, b;

int
bar (int x)
{
  if (baz (a ^ x ^ a))
    return b;
  return 0;
}

int
foo (void)
{
  return bar (a == 0 || 1 == 1 - a) ? 1 : bar (1 && a);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070919-1.c<|end_filename|>
typedef short int int16_t;
typedef unsigned char uint8_t;
typedef struct {
	int16_t LARc[8];
	int16_t Nc[4];
	int16_t bc[4];
	int16_t Mc[4];
	int16_t xmaxc[4];
	int16_t xMc[4][13];
} gsm0610_frame_t;
int gsm0610_unpack_voip(gsm0610_frame_t * s, const uint8_t c[33])
{
	int i;
	for (i = 0; i < 4; i++) {
		s->Nc[i] = (*c >> 1) & 0x7F;
		s->bc[i] = (*c++ & 0x1) << 1;
		s->bc[i] |= (*c >> 7) & 0x1;
		s->Mc[i] = (*c >> 5) & 0x3;
		s->xmaxc[i] = (*c++ & 0x1F) << 1;
		s->xmaxc[i] |= (*c >> 7) & 0x1;
		s->xMc[i][0] = (*c >> 4) & 0x7;
		s->xMc[i][1] = (*c >> 1) & 0x7;
		s->xMc[i][2] = (*c++ & 0x1) << 2;
		s->xMc[i][2] |= (*c >> 6) & 0x3;
		s->xMc[i][3] = (*c >> 3) & 0x7;
		s->xMc[i][4] = *c++ & 0x7;
		s->xMc[i][10] |= (*c >> 6) & 0x3;
		s->xMc[i][11] = (*c >> 3) & 0x7;
		s->xMc[i][12] = *c++ & 0x7;
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20041018-1.c<|end_filename|>
void
foo (int y, int z, unsigned char **t, int **c, int *b)
{
  int i, j, k;
  unsigned char a[2];

  a[0] = 0;
  a[1] = 0;
  for (j = 0; j < z; j++)
    for (i = 0; i < y; i++, a[0] += 3)
      for (k = 0; k < 3; k++)
	c[0][k] += 3 * b[k];
  for (i = 0; i < 3; i++)
    if (t[0][i] + c[0][i] / a[0] <= 0)
      t[0][i] = 0;
    else
      t[0][i] = t[0][i] + c[0][i] / a[0];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050113-1.c<|end_filename|>
/* PR c/17297 */

typedef float V2SF __attribute__ ((vector_size (8)));

int test0 (V2SF, V2SF);

int
main (void)
{
  V2SF a = (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f};
  V2SF b = (V2SF) {567.345, 1984.0};
  int i;

  i = test0 (a, b);
  return i;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040304-1.c<|end_filename|>
void
cpplib_macroExpand (char * pfile)
{
  int nargs;
  int rest_args;
  int token = -1;
  rest_args = 0;
  do
    {
      if (rest_args != 0)
          continue;
      if (nargs == 0)
        {
          rest_args = 1;
          token = macarg (pfile, rest_args);
        }
    }
  while (token == 20);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59743.c<|end_filename|>
/* PR middle-end/59743 */

typedef union {
  long all;
  struct {
    int low;
    int high;
  } s;
} udwords;
int a, b, c, d;
void __udivmoddi4() {
  udwords r;
  d = __builtin_clz(0);
  r.s.low = 0;
  for (; d; --d) {
    r.s.high = r.s.high << 1 | r.s.low >> a;
    r.s.low = r.s.low << b >> 1;
    int s = -r.all;
    c = s;
    r.all--;
  }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040121-1.c<|end_filename|>
/* PR target/12898
   0x8000 needs multiple instructions to be emitted on Alpha; the
   fluff around it causes it to be emitted in a no_new_pseudos
   context, which triggered a problem in alpha.c.  */

void f (const char *, ...);
int g (void);
void *p (void);

int isymBase, ilineBase, sym_hdr, want_line, proc_desc;
char *lines;

void print_file_desc (int *fdp)
{
  char *str_base = p ();
  int symi, pdi = g ();

  for (symi = 0; isymBase;)
    {
      int proc_ptr = proc_desc + pdi;
      f("1", isymBase, proc_ptr + *fdp, str_base);
      if (want_line && *fdp)
	{
	  int delta;
	  long cur_line = proc_ptr;
	  char *line_ptr = lines + proc_ptr;
	  char *line_end = p ();

	  f("2", sym_hdr);
	  while (line_ptr < line_end)
	    {
	      delta = *line_ptr;
	      if (delta)
		line_ptr++;
	      else
		delta = line_ptr[1] ^ 0x8000;
	      f("3", cur_line, delta);
	    }
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43191.c<|end_filename|>
/* { dg-require-effective-target int32plus } */

struct S0
{
};

struct S1
{
  unsigned f0:27;
  const unsigned:0;
};

struct S2
{
  unsigned f2:1;
};

unsigned char g_4[1][8][3][1][1][1];
unsigned char *g_17;
unsigned char **g_16[1][10][7];

struct S2 g_35 = {
  0
};

struct S2 *g_34 = &g_35;

struct S1 func_86 (unsigned char p_87, struct S2 **p_89)
{
  struct S1 l_92[6][8][1][1] = {
    16143586
  }
  ;
  return l_92[0][0][0][0];
}

void func_28 (struct S1 p_30, const struct S1 p_32)
{
}

void func_70 (unsigned char p_72)
{
  unsigned char *const *l_93 = &g_17;
  struct S2 **l_94;
  unsigned char *const *l_97 = &g_17;
  func_28 (func_86 (p_72, 0),
           func_86 (p_72, &g_34));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080625-1.c<|end_filename|>
/* { dg-require-effective-target int32plus } */

struct peakbufStruct {
    unsigned int lnum [5000];
    int lscan [5000][4000];
    double lmz [5000][4000];
    double lint [5000][4000];
    int PeaksInBuf;
    unsigned char freelists [350000];
    unsigned char freelistl [5000];
    unsigned int LastFreeL;
} peakbuf;
void foo(int);
void findmzROI(int i, int *p_scan)
{
    foo(peakbuf.PeaksInBuf);
    __builtin_memmove(p_scan, peakbuf.lscan[i], peakbuf.lnum[i]*sizeof(int));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20041007-1.c<|end_filename|>
/* PR rtl-optimization/17027 */
/* Origin: dbk <<EMAIL>> */
/* Testcase by <NAME> <<EMAIL>> */

int bar(void);
void baz (void)  __attribute__ ((noreturn)); /* noreturn is required */

void foo (void) 
{
  while (bar ()) {
    switch (1) {
      default:
      baz ();
    }
  }
} 


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69102.c<|end_filename|>
/* { dg-options "-Og -fPIC -fschedule-insns2 -fselective-scheduling2 -fno-tree-fre --param=max-sched-extend-regions-iters=10" } */
void bar (unsigned int);

void
foo (void)
{
  char buf[1] = { 3 };
  const char *p = buf;
  const char **q = &p;
  unsigned int ch;
  switch (**q)
    {
    case 1:  ch = 5; break;
    case 2:  ch = 4; break;
    case 3:  ch = 3; break;
    case 4:  ch = 2; break;
    case 5:  ch = 1; break;
    default: ch = 0; break;
    }
  bar (ch);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22398.c<|end_filename|>
#if ULONG_MAX != 4294967295u && ULONG_MAX != 18446744073709551615ull
int main(void) { exit (0); }
#else
#if ULONG_MAX != 18446744073709551615ull
#define NUM 0xf0000000
#else
#define NUM 0xf000000000000000
#endif


int func1(void *rw)
{
  return (rw && (((unsigned long) rw) >= NUM) );
}

void func2(void *rw)
{
  while(rw && (((unsigned long) rw) >= NUM) ) {}
}

#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030624-1.c<|end_filename|>
/* Derived from PR optimization/11311 */

double pow(double, double);

double foo(double x) { return pow(x,261); }



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/vector-align-1.c<|end_filename|>
/* Check to make sure the alignment on vectors is not being lost. */

/* If some target has a Max alignment less than 128, please create
   a #ifdef around the alignment and add your alignment.  */
#define alignment 128

char x __attribute__((aligned(alignment),vector_size(2)));


int f[__alignof__(x) == alignment?1:-1];



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pta-1.c<|end_filename|>
typedef struct JSObject JSObject;
typedef struct JSObjectMap *(*JSNewObjectMapOp) (JSObject *obj);
typedef JSObject *(*JSGetMethodOp) (JSObject *obj);
struct JSObjectOps {
    JSNewObjectMapOp newObjectMap;
};
struct JSXMLObjectOps {
    struct JSObjectOps base;
    JSGetMethodOp getMethod;
};
struct JSObjectMap {
    struct JSObjectOps *ops;
};
struct JSObject {
    struct JSObjectMap *map;
};

struct JSXMLObjectOps js_XMLObjectOps;


/* We need to create SFT's for the entire structure when this address is taken, 
   not just the part in the component reference itself.  */
JSObject *JS_GetMethod(JSObject *obj)
{
    if (obj->map->ops == &js_XMLObjectOps.base) {
        struct JSXMLObjectOps *ops;
        ops = (struct JSXMLObjectOps *) obj->map->ops;
        obj = ops->getMethod(obj);
    }
    return obj;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40570.c<|end_filename|>
extern void anything(int);

static int foo(int i);

static int bar(int i) { foo(i); }

extern int j;

static int foo(int i)
{
  if (j)
    anything(j);
  return bar(i);
}

int baz()
{
  foo(0);
  if (baz())
    return 1;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34885.c<|end_filename|>
typedef union {
  __const struct sockaddr *__restrict __sockaddr__;
} __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
extern int _pure_socketcall (const struct sockaddr *);
extern int sendto (__CONST_SOCKADDR_ARG __addr);
int send(void)
{
  return sendto((void *)0);
}
int sendto(const struct sockaddr *to)
{
   return _pure_socketcall(to);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr72802.c<|end_filename|>
static a[];
static b, h, m, n, o, p, q, t, u, v, t5, t6, t16, t17, t18, t25;
c;
static volatile d;
static volatile e;
static volatile f;
static volatile g;
j;
static volatile k;
static volatile l;
static volatile r;
const volatile s;
static volatile w;
static volatile x;
const volatile y;
static volatile z;
static volatile t1;
static volatile t2;
const t3;
t4;
const volatile t8;
const volatile t9;
const volatile t10;
static volatile t11;
static volatile t12;
static volatile t13;
static volatile t14;
const volatile t15;
static volatile t19;
static volatile t20;
const volatile t21;
static volatile t22;
static volatile t23;
const volatile t24;
*t29;
fn1() { b = 5; }
fn2(long);
#pragma pack(1)
struct S0 {
  short f3;
  float f4;
  signed f5
};
const struct S0 t7[] = {};
static fn3() {
  int t26[] = {};
  int t27[10] = {};
  --t25;
  if (fn4()) {
    t5++;
    fn5();
    int t28[] = {t26, t27};
    return;
  }
}
fn6() {
  int i, t30 = 0;
  if (fn6 == 2)
    t30 = 1;
  {
    int t31, i = 0;
    for (; i < 256; i++) {
      t31 = i;
      if (i & 1)
        t31 = 0;
      a[i] = t31;
    }
    i = 0;
    for (; i < 3; i++)
      t29[i] = t6;
    fn7();
    fn3();
    t4 = c = j = 0;
  }
  fn2(h);
  if (t30)
    printf(b);
  g;
  fn2(g);
  printf(b);
  f;
  fn2(f);
  if (t30)
    printf(b);
  e;
  fn2(e);
  printf(b);
  fn8();
  d;
  fn2(d);
  if (t30)
    printf(b);
  l;
  fn2(l);
  printf(b);
  k;
  fn2(k);
  if (t30)
    printf(b);
  printf(b);
  for (; i; i++) {
    y;
    fn2(y);
    printf(b);
    x;
    fn2(x);
    if (t30)
      printf(b);
    w;
    fn2(w);
    printf(b);
    fn2(v);
    printf(b);
    fn2(u);
    if (t30)
      printf(b);
    fn2(t);
    printf(b);
    s;
    fn2(s);
    if (t30)
      printf(b);
    r;
    fn2(r);
    printf(b);
    fn2(q);
    if (t30)
      printf(b);
    fn2(p);
    printf("", b);
    fn2(o);
    printf(b);
    fn2(n);
    if (t30)
      printf(b);
    fn2(m);
    printf(b);
  }
  fn2(z);
  if (t30)
    printf(b);
  printf("", t3);
  t2;
  fn2(t2);
  printf(b);
  t1;
  fn2(t1);
  if (t30)
    printf(b);
  for (; i < 6; i++) {
    t10;
    fn2(t10);
    printf(b);
    t9;
    fn2(t9);
    if (t30)
      printf(b);
    t8;
    fn2(t8);
    printf(b);
    fn2(t7[i].f3);
    if (t30)
      printf(b);
    fn2(t7[i].f4);
    printf(b);
    fn2(t7[i].f5);
    if (t30)
      printf(b);
    t15;
    fn2(t15);
    printf(b);
    t14;
    fn2(t14);
    if (t30)
      printf(b);
    t13;
    fn2(t13);
    printf(b);
    t12;
    fn2(t12);
    if (t30)
      printf(b);
    t11;
    fn2(t11);
    printf(b);
    t21;
    fn2(t21);
    if (t30)
      printf(b);
    t20;
    fn2(t20);
    fn2(t19);
    if (t30)
      printf(b);
    fn2(t18);
    printf(b);
    fn2(t17);
    printf(b);
    fn2(t16);
    printf(b);
  }
  t24;
  t24;
  if (t30)
    printf(b);
  printf(t23);
  t22;
  t22;
  if (t30)
    printf(b);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23237.c<|end_filename|>
/* Don't assemble, as this section syntax may not be valid on all platforms
   (e.g., Darwin).  */
/* { dg-do compile } */

/* { dg-require-effective-target named_sections } */

static __attribute__ ((__section__ (".init.data"))) char *message;
static __attribute__ ((__section__ (".init.data"))) int (*actions[])(void) = {};
void unpack_to_rootfs(void)
{
  while (!message)
  {
    if(!actions[0])
      return;
  }
}


<|start_filename|>ucn64.go<|end_filename|>
// Copyright 2016 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build amd64 amd64p32 arm64 arm64be ppc64 ppc64le mips64 mips64le mips64p32 mips64p32le sparc64

package cc

var ucnDigits = [...]uint64{
	0x19: 0x3ff00000000, 0x1b: 0x3ff000000000000,
	0x25: 0xffc000000000, 0x27: 0xffc000000000,
	0x29: 0xffc000000000, 0x2b: 0xffc000000000,
	0x2d: 0xffc000000000, 0x2f: 0xff8000000000,
	0x31: 0xffc000000000, 0x33: 0xffc000000000,
	0x35: 0xffc000000000,
	0x39: 0x3ff0000, 0x3b: 0x3ff0000,
	0xfffff00000000,
}

var ucnNonDigits = [...]uint64{
	0x2: 0x4a0040000000000, 0xff7fffffff7fffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfc3fffffffffffff,
	0xffffff, 0xffffffffffff0000, 0xe9ff01ffffffffff, 0x1f00030003,
	0xd: 0x400000000000000, 0xfffffffbffffd740, 0xffffd547f7fff,
	0xffffffffffffdffe, 0xffffffffdffeffff, 0xffffffffffff0003, 0x33fcfffffff199f,
	0xfffe000000000000, 0xfffffffe027fffff, 0x3ff0000000000ff, 0x7000000000000,
	0x7fffffe00000000, 0xffff00000007ffff, 0x7cffffffffffffff, 0x3de01fff7fff,
	0x24: 0xe3ffffffffffffee, 0xfff073fff, 0xc3c5fdfffff99fee, 0x3000fb000399f,
	0xc36dfdfffff987e4, 0x1000005e003987, 0xe3edfdfffffbafee, 0x100013bbf,
	0xe3cdfdfffff99fee, 0x3b000398f, 0xc3bfc718d63dc7ec, 0x3dc7,
	0xc3effdfffffddfee, 0x300003ddf, 0xc3effdfffffddfec, 0x340003ddf,
	0xc3fffdfffffddfec, 0x300003dcf,
	0x38: 0x7fffffffffffffe, 0xc00ffff, 0x3bff6caefef02596, 0x30003f5f,
	0xc2a0000003000001, 0xfffe03fffffffeff, 0x2fe3ffffebf0fdf,
	0x42: 0xffffffff00000000, 0x7fffffffff003f,
	0x78: 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0fffffff, 0x3ffffffffffffff,
	0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff, 0x1fdc1fff0fcf1fdc,
	0x8000000000000000, 0x8000000000000001,
	0x84: 0x1fbfd503f2ffc84, 0xffffffff00000000, 0x7,
	0xc0: 0x3fe000000e0, 0xfffffffffffffffe, 0xfffffffe180fffff, 0x187fffffffffffff,
	0x1fffffffffe0,
	0x138: 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffff,
	0x2b0: 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff,
	0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffff,
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr15245.c<|end_filename|>
/*  Testcase from <<EMAIL>>
    PR optimization/15245
    This used to ICE as convert was used
    in tree-ssa-phiopt which created non gimple
    code.   */

char *f(char *x, int flag)
{
    char *ret = (char*)0;


    if( x > (char*)1 ) {
      if(x)
        return (char*)0;
    } else {
      if( flag & 1 )
        ret = (char*)1;
      flag |= 2;
    }
    return ret;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53187.c<|end_filename|>
/* PR target/53187 */

void bar (int);

void
foo (int x, double y, double z)
{
  _Bool t = z >= y;
  if (!t || x)
    bar (t ? 1 : 16);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17407.c<|end_filename|>
typedef struct libxml_xpathCallback { 
  void *ns_uri; 
} libxml_xpathCallback; 
 
typedef libxml_xpathCallback libxml_xpathCallbackArray[]; 
 
libxml_xpathCallbackArray *libxml_xpathCallbacks; 

void foo1(void);
 
void 
foo (void) 
{ 
  if ((*libxml_xpathCallbacks)[3].ns_uri != ((void *)0)) foo1(); 
} 


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43288.c<|end_filename|>
static int a __attribute__ ((common));


<|start_filename|>v2/headers/features.c<|end_filename|>
// +build ignore

#include <features.h>
#include <stdio.h>

int main()
{
#ifdef _POSIX_SOURCE
	printf("_POSIX_SOURCE %li\n", (long)_POSIX_SOURCE);
#endif
#ifdef _POSIX_C_SOURCE
	printf("_POSIX_C_SOURCE %li\n", (long)_POSIX_C_SOURCE);
#endif
#ifdef _XOPEN_SOURCE
	printf("_XOPEN_SOURCE %li\n", (long)_XOPEN_SOURCE);
#endif
#ifdef _XOPEN_SOURCE_EXTENDED
	printf("_XOPEN_SOURCE_EXTENDED %li\n", (long)_XOPEN_SOURCE_EXTENDED);
#endif
#ifdef _LARGEFILE_SOURCE
	printf("_LARGEFILE_SOURCE %li\n", (long)_LARGEFILE_SOURCE);
#endif
#ifdef _LARGEFILE64_SOURCE
	printf("_LARGEFILE64_SOURCE %li\n", (long)_LARGEFILE64_SOURCE);
#endif
#ifdef _FILE_OFFSET_BITS
	printf("_FILE_OFFSET_BITS %li\n", (long)_FILE_OFFSET_BITS);
#endif
#ifdef _ISOC99_SOURCE
	printf("_ISOC99_SOURCE %li\n", (long)_ISOC99_SOURCE);
#endif
#ifdef __STDC_WANT_LIB_EXT2__
	printf("__STDC_WANT_LIB_EXT2__ %li\n", (long)__STDC_WANT_LIB_EXT2__);
#endif
#ifdef __STDC_WANT_IEC_60559_BFP_EXT__
	printf("__STDC_WANT_IEC_60559_BFP_EXT__ %li\n", (long)__STDC_WANT_IEC_60559_BFP_EXT__);
#endif
#ifdef __STDC_WANT_IEC_60559_FUNCS_EXT__
	printf("__STDC_WANT_IEC_60559_FUNCS_EXT__ %li\n", (long)__STDC_WANT_IEC_60559_FUNCS_EXT__);
#endif
#ifdef __STDC_WANT_IEC_60559_TYPES_EXT__
	printf("__STDC_WANT_IEC_60559_TYPES_EXT__ %li\n", (long)__STDC_WANT_IEC_60559_TYPES_EXT__);
#endif
#ifdef _GNU_SOURCE
	printf("_GNU_SOURCE %li\n", (long)_GNU_SOURCE);
#endif
#ifdef _DEFAULT_SOURCE
	printf("_DEFAULT_SOURCE %li\n", (long)_DEFAULT_SOURCE);
#endif
#ifdef _REENTRANT
	printf("_REENTRANT %li\n", (long)_REENTRANT);
#endif
#ifdef _THREAD_SAFE
	printf("_THREAD_SAFE %li\n", (long)_THREAD_SAFE);
#endif
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr30132.c<|end_filename|>
double testit(double _Complex* t)
{
  return *t==0.0?0.0:-*t;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42196-2.c<|end_filename|>
union U
{
  __complex__ int ci;
  __complex__ float cf;
};

float gd;
extern float bar (union U);

float foo (int b, double f1, double f2, int c1, int c2)
{
  union U u;
  double r;

  if (b)
    {
      __real__ u.cf = f1;
      __imag__ u.cf = f2;
    }
  else
    {
      __real__ u.ci = c1;
      __imag__ u.ci = c2;
    }

  r = bar (u);
  return r;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48335-1.c<|end_filename|>
/* PR middle-end/48335 */

struct S { float d; };

void bar (struct S);

void
f0 (int x)
{
  struct S s = {.d = 0.0f };
  ((char *) &s.d)[0] = x;
  s.d *= 7.0;
  bar (s);
}

void
f1 (int x)
{
  struct S s = {.d = 0.0f };
  ((char *) &s.d)[1] = x;
  s.d *= 7.0;
  bar (s);
}

void
f2 (int x)
{
  struct S s = {.d = 0.0f };
  ((char *) &s.d)[2] = x;
  s.d *= 7.0;
  bar (s);
}

void
f3 (int x)
{
  struct S s = {.d = 0.0f };
  ((char *) &s.d)[3] = x;
  s.d *= 7.0;
  bar (s);
}


<|start_filename|>v2/testdata/bug/2.c<|end_filename|>
#include <stdlib.h>

void foo(char**) {}

int main() {
	char *p = NULL;
	foo(&p);
	return p != NULL;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030310-1.c<|end_filename|>
static inline void
foo (char accept)
{
  char s;
  while (s == accept) ;
}

static void
bar (void)
{
  char ch;
  foo (ch);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050210-1.c<|end_filename|>
/* PR middle-end/19858 */

typedef __SIZE_TYPE__ size_t;
union U { int c; } foo;
int bar (void)
{
  return !(((size_t) &foo & 3) == 0 && !((size_t) &foo & 1));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40080.c<|end_filename|>
extern void *ff(void*,int);

struct lpgl { struct lpgl *next; };
struct lpgd { struct lpgl *first; };

typedef int (*xfn)( );
static void xDP_IF_EnumGroupsInGroup ( void *a, int b, xfn fn)
{
  struct lpgd *lpGData;
  struct lpgl *lpGList;

  if( ( lpGData = ff( a, b ) ) == ((void *)0) )
    return;

  if( lpGData->first  == ((void *)0) )
    return;
  lpGList = lpGData->first;

  for( ;; ) {
    if( !(*fn)( ) )
      return;
    if( lpGList->next == ((void *)0) )
      break;
    lpGList = lpGList->next;
  }
  return;
}


static int 
xcbDeletePlayerFromAllGroups() {
  xDP_IF_EnumGroupsInGroup(0, 0, 0);
  return 1;
}

void xDP_IF_EnumGroups( xfn fn) {
  xDP_IF_EnumGroupsInGroup( 0, 0, fn);
}

static void xDP_IF_DestroyPlayer () {
  xDP_IF_EnumGroups( xcbDeletePlayerFromAllGroups);
}

void* foo=xDP_IF_DestroyPlayer;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27889.c<|end_filename|>
/* { dg-require-effective-target trampolines } */

void h(void (*)(void));
_Complex int g (void)
{
  _Complex int x;
  void f(void)
  {
     x = x + x;
  }
  h(f);
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070121.c<|end_filename|>
/* PR rtl-optimization/29329 */
/* Origin: Debian GCC Maintainers <<EMAIL>> */
/* Testcase by: <NAME> <<EMAIL>> */

struct node234_Tag
{
  int t1;
  int kids[4];
  void *elems[3];
};

void *add234_internal(struct node234_Tag *n, int ei)
{
  int j;
  for (j = ei; j < 2 && n->elems[j+1];)
    j++;
  n->kids[j+1] = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr14730.c<|end_filename|>
/* PR middle-end/14730 */

int t (char i)
{
  switch (i)
    {
    case 1:
    case 7:
    case 10:
    case 14:
    case 9:
    case 256:
      return 0;
    }
  return 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070905-1.c<|end_filename|>
/* PR tree-optimization/32772 */

struct S
{
  unsigned long bits[1];
};

void f1 (int, unsigned long *);
int f2 (void);
int f3 (int, unsigned long *);
int f4 (int, unsigned long *);

static inline __attribute__ ((always_inline))
void baz (int x, volatile struct S *y)
{
  f1 (x, y->bits);
}

static int
bar (int x, struct S *y)
{
  int n;
  if (__builtin_constant_p (x) ? f3 (x, y->bits) : f4 (x, y->bits))
    baz (x, y);
  for (n = f2 (); n < 8; n = f2 ())
    f3 (n, y->bits);
}

void
foo (int x, int y)
{
  struct S m;
  while ((y = bar (x, &m)) >= 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42025-2.c<|end_filename|>
typedef struct
{
  void *p;
} Ptr;

struct A
{
  int i;
  union
  {
    Ptr p;
    char *q;
  } u;
};

extern Ptr get_stuff (void);
extern void use_stuff (char *);

static void foo(struct A p, char *q)
{
  if (p.i)
    p.u.p = get_stuff ();
  else
    p.u.q = q;

  use_stuff (p.u.q);
}

void bar(struct A *p, char *q)
{
  foo(*p, q);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70633.c<|end_filename|>
/* PR middle-end/70633 */

typedef long V __attribute__((vector_size (4 * sizeof (long))));

void foo (V *);

void
bar (void)
{ 
  V b = { (long) bar, 0, 0, 0 };
  foo (&b);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/930623-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */

g (a, b) {}

f (xx)
     void* xx;
{
  __builtin_apply ((void*)g, xx, 200);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42956.c<|end_filename|>
/* { dg-require-effective-target alloca } */
typedef const int cint;
typedef struct {
} Bounds;
int ndim_, ncomp_, selectedcomp_, nregions_;
void *voidregion_;
typedef struct {
    double diff, err, spread;
} Errors;
typedef const Errors cErrors;
void Split(int iregion, int depth, int xregion)
{
  typedef struct {
      double avg, err, spread, chisq;
      double xmin[ndim_], xmax[ndim_];
  } Result;
  typedef struct region {
      Result result[ncomp_];
  } Region;
  Errors errors[ncomp_];
  int comp, ireg, xreg;
  for( ireg = iregion, xreg = xregion; ireg < nregions_; ireg = xreg++ )
    {
      Result *result = ((Region *)voidregion_)[ireg].result;
      for( comp = 0; comp < ncomp_; ++comp )
	{
	  Result *r = &result[comp];
	  cErrors *e = &errors[comp];
	  double c = e->diff;
	  if( r->err > 0 ) r->err = r->err*e->err + c;
	}
    }
}



<|start_filename|>testdata/issue9b.c<|end_filename|>
typedef short JBLOCK[64];
typedef JBLOCK *JBLOCKROW;
typedef JBLOCKROW *JBLOCKARRAY;
typedef JBLOCKARRAY *JBLOCKIMAGE;

short (**ok)[64];
JBLOCKARRAY ok;

short ***bad[64];
JBLOCKARRAY bad;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32399.c<|end_filename|>
void f(unsigned char *src, unsigned char *dst, int num, unsigned char *pos, unsigned char *diffuse, int hasdiffuse, unsigned char *specular, int hasspecular) {
    int i;

    for(i=num;i--;) {
	float *p = (float *) ((__SIZE_TYPE__) dst + (__SIZE_TYPE__) pos);
        if(hasdiffuse) {
            unsigned int *dstColor = (unsigned int *) (dst + i + (__SIZE_TYPE__) diffuse);
            *dstColor = * (unsigned int *) ( ((__SIZE_TYPE__) src + (__SIZE_TYPE__) diffuse) + i);
        }
        if(hasspecular) {
            unsigned int *dstColor = (unsigned int *) (dst + i + (__SIZE_TYPE__) specular);
            *dstColor = * (unsigned int *) ( ((__SIZE_TYPE__) src + (__SIZE_TYPE__) specular) + i);
        }
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-fnargs.c<|end_filename|>
/* { dg-timeout-factor 4.0 } */
/* { dg-require-effective-target run_expensive_tests } */

#define PAR1 int, int, int, int, int, int, int, int, int, int
#define PAR2 PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1, PAR1
#define PAR3 PAR2, PAR2, PAR2, PAR2, PAR2, PAR2, PAR2, PAR2, PAR2, PAR2
#define PAR4 PAR3, PAR3, PAR3, PAR3, PAR3, PAR3, PAR3, PAR3, PAR3, PAR3
#define PAR5 PAR4, PAR4, PAR4, PAR4, PAR4, PAR4, PAR4, PAR4, PAR4, PAR4
#define PAR6 PAR5, PAR5, PAR5, PAR5, PAR5, PAR5, PAR5, PAR5, PAR5, PAR5

extern void func (PAR4);

#define ARG1 0,1,2,3,4,5,6,7,8,9
#define ARG2 ARG1, ARG1, ARG1, ARG1, ARG1, ARG1, ARG1, ARG1, ARG1, ARG1
#define ARG3 ARG2, ARG2, ARG2, ARG2, ARG2, ARG2, ARG2, ARG2, ARG2, ARG2
#define ARG4 ARG3, ARG3, ARG3, ARG3, ARG3, ARG3, ARG3, ARG3, ARG3, ARG3
#define ARG5 ARG4, ARG4, ARG4, ARG4, ARG4, ARG4, ARG4, ARG4, ARG4, ARG4
#define ARG5HALF ARG5, ARG5, ARG5, ARG5, ARG5

void caller(void)
{
  func (ARG4);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48161.c<|end_filename|>
/* PR bootstrap/48161 */

struct T { int u; };
struct G { int l; int t; int r; };
struct V { struct G v[10]; };
struct { struct V b; } *h;
void bar (void);

struct G *
baz (struct V *x, unsigned y)
{
  return &x->v[y];
}

int
foo (struct T *x, struct T *y)
{
  if ((baz (&h->b, y->u)->t ? baz (&h->b, y->u)->t : 0)
      - baz (h ? &h->b : 0, x->u)->r
      - (baz (h ? &h->b : 0, x->u)->t > 0 ? 5 : 0))
    return 1;
  bar ();
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52306.c<|end_filename|>
/* PR middle-end/52306 */

struct xmlNs {
    const unsigned char *prefix;
};

struct xmlNode {
    const unsigned char *name;
    struct xmlNs *ns;
    struct xmlNs *nsDef;
};

struct xsltTemplate {
    const unsigned char *name;
    int inheritedNsNr;
    void *inheritedNs;
};

struct xsltTemplate *xsltNewTemplate(void);
void xsltGetQNameURI(unsigned char**);
long xmlMalloc(unsigned long);
void xsltGenericDebug(void);
int xmlStrEqual(const unsigned char*, const unsigned char*);

static void xsltGetInheritedNsList(
    struct xsltTemplate *template,
    struct xmlNode *node)
{
    struct xmlNs *cur;
    struct xmlNs **ret;
    int nbns = 0;
    int maxns = 10;
    int i;

    if (template == 0
	|| template->inheritedNsNr != 0
	|| template->inheritedNs != 0)
	return;

    while (node != 0) {
	cur = node->nsDef;
	ret = (struct xmlNs**) xmlMalloc((maxns + 1) * sizeof(struct xmlNs*));
	for (i = 0; i < nbns; i++)
	    if (cur->prefix == ret[i]->prefix
		|| xmlStrEqual(cur->prefix, 0))
		break;

	if (i >= nbns) {
	    if (nbns >= maxns)
		return;
	    ret[nbns++] = cur;
	}
    }
}

static void
xsltParseStylesheetTemplate(struct xmlNode *template)
{
    struct xsltTemplate *ret;
    unsigned char *prop;

    ret = xsltNewTemplate();
    if (ret == 0)
	return;
    xsltGetInheritedNsList(ret, template);
    xsltGenericDebug();
    xsltGetQNameURI(&prop);
    xmlStrEqual(0, ret->name);
}

void xsltParseStylesheetTop(struct xmlNode *cur)
{
    xmlStrEqual(0, 0);

    while (cur != 0) {
	if (xmlStrEqual(cur->name, 0))
	    ;
	else if (xmlStrEqual(cur->name, 0))
	    ;
	else if (xmlStrEqual(cur->name, 0))
	    xsltParseStylesheetTemplate(cur);
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/struct-non-lval-3.c<|end_filename|>
/* Bug c/17855, using assignment for non-lvalue.  */
struct foo {char x, y, z[2];};
struct foo p, q;
void bar(int baz)
{
  (p = q).z[baz] = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/bitfld-7.c<|end_filename|>
union U
{
  const int a;
  unsigned b : 24;
};

static union U u = { 0x12345678 };

/* Constant folding used to fail to account for endianness when folding a
   union.  */

int
main (void)
{
#ifdef __BYTE_ORDER__
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
  return u.b - 0x345678;
#else
  return u.b - 0x123456;
#endif
#endif
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42559.c<|end_filename|>
/* { dg-require-effective-target label_values } */

void jumpfunc(int copy, void *p)
{
  void *l = &&jumplabel;
  if (copy)
    __builtin___memcpy_chk (p, l, 128, __builtin_object_size (p, 0));
jumplabel:
  return;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58088.c<|end_filename|>
int
bar (int i)
{
  return 1 | ((i * 2) & 254);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23946.c<|end_filename|>

extern int foo (void);

int
avi_parse_comments (int fd, char *buf, int space_left)
{
  int len = 0, readlen = 0, k;
  char *data, *c, *d;

  if (fd <= 0 || !buf || space_left <= 0)
    return -1;

  memset (buf, 0, space_left);

  readlen = foo ();
  if (!(data = malloc (readlen * sizeof (char) + 1)))
    return -1;

  c = data;
  space_left--;

  while (len < space_left)
    {
      if (!c || *c == '\0')
	break;
      else if (*c == 'I')
	{
	  d = c + 4;

	  k = 0;
	  while (d[k] != '\r' && d[k] != '\n' && d[k] != '\0')
	    ++k;
	  if (k >= space_left)
	    return len;


	  memcpy (buf + len, c, 4);
	  len += 4;


	  long2str (buf + len, k + 1);
	  len += 4;


	  memcpy (buf + len, d, k);

	  *(buf + len + k + 1) = '\0';


	  if ((k + 1) & 1)
	    {
	      k++;
	      *(buf + len + k + 1) = '\0';
	    }
	  len += k + 1;


	  while (*c != '\n' && *c != '\0')
	    ++c;
	  if (*c != '\0')
	    ++c;
	  else
	    break;

	}
    }
  free (data);

  return len;
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071105-1.c<|end_filename|>
/* PR tree-optimization/33993 */
/* Testcase by <NAME> <<EMAIL>> */

void
init_full (char *array, int ny)
{
  int j;
  char acc = 128;
  for (j = 0; j < ny; j++)
    *array++ = acc++;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080628-1.c<|end_filename|>
void f (long double, long double);

struct s {
  char c;
  struct s *p;
} *p;

void
g (void)
{
  long double ld;
  p->p->c = 1;
  ld = p->p->c;
  f (ld, 1.0L);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65241.c<|end_filename|>
enum E { A, B, C, D };
void fn4 (void);

int
fn1 (enum E p1)
{
  static int w[D];
  if (w[p1])
    switch (p1)
      case C:
      w[p1] = 0;
}

void
fn2 (p1)
{
  fn1 (p1);
}

void
fn3 (enum E p1)
{
  fn2 (p1);
  fn4 ();
  fn2 (p1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47364-2.c<|end_filename|>
extern __SIZE_TYPE__ strlen (const char *);
void foo (char *, const char *);
int bar (const char *prefix)
{
    char buff[256];
    foo (buff, prefix);
    return strlen(buff);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/lib/strncpy.c<|end_filename|>
extern void abort(void);
extern int inside_main;

typedef __SIZE_TYPE__ size_t;

__attribute__ ((__noinline__))
char *
strncpy(char *s1, const char *s2, size_t n)
{
  char *dest = s1;
#ifdef __OPTIMIZE__
  if (inside_main)
    abort();
#endif
  for (; *s2 && n; n--)
    *s1++ = *s2++;
  while (n--)
    *s1++ = 0;
  return dest;
}



<|start_filename|>testdata/issue3.h<|end_filename|>
#define FOO 3

void foo(int a, int b);

#define do_foo(x) \
  foo(x, FOO)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49145.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
static int
func1 (int a, int b)
{
  return b ? a : a / b;
}

static unsigned char
func2 (unsigned char a, int b)
{
  return b ? a : b;
}

int i;

void
func3 (const int arg)
{
  for (i = 0; i != 10; i = foo ())
    {
      if (!arg)
	{
	  int j;
	  for (j = 0; j < 5; j += 1)
	    {
	      int *ptr;
	      *ptr = func2 (func1 (arg, *ptr), foo (arg));
	    }
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32372.c<|end_filename|>
typedef struct AVCodecContext
{
  int flags;
  void *priv_data;
  char codec_name[32];
}
AVCodecContext;
typedef struct ScanTable
{
  int obmc;
  int umvplus;
  int h263_aic;
}
MpegEncContext;
MPV_encode_init (AVCodecContext *avctx)
{
  MpegEncContext *s = avctx->priv_data;
  s->umvplus = (avctx->flags & 0x02000000) ? 1 : 0;
  s->h263_aic = (avctx->flags & 0x01000000) ? 1 : 0;
  s->h263_aic = s->obmc || s->umvplus;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr29945.c<|end_filename|>
/* This test used to ICE on the SPU target. */
extern const char *__ctype_ptr;

parse_real (unsigned char c)
{
  if ((__ctype_ptr[c]&04) && c != '.')
   unget_char ( c);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090303-1.c<|end_filename|>
/* The array offset became 0x1ffffffffffffffe via a conversion from
   signed to unsigned HOST_WIDE_INT, causing an ICE compiling for
   Thumb.  */

int r (unsigned short *);
void s (unsigned short *, unsigned short *);

int
f (int x)
{
  unsigned short a[1], c[1];

  if (r (a))
    return x;

  if (c[-1])
    s (a, c);

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31703.c<|end_filename|>
typedef unsigned long long HARD_REG_ELT_TYPE;
static HARD_REG_ELT_TYPE reload_reg_used_in_output_addr[30];
int reload_reg_reaches_end_p (unsigned int regno, int opnum)
{
    int i;
    for (i = opnum + 1; i < opnum; i++)
        if (reload_reg_used_in_output_addr[i]
            & ((HARD_REG_ELT_TYPE)1 << regno))
            return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40692.c<|end_filename|>
/* PR middle-end/40692 */

#define M1(x) (((x) & 0x00000002) ? 0x2 : ((x) & 0x1))
#define M2(x) (((x) & 0x0000000c) ? M1 ((x) >> 2) << 2 : M1 (x))
#define M3(x) (((x) & 0x000000f0) ? M2 ((x) >> 4) << 4 : M2 (x))
#define M4(x) (((x) & 0x0000ff00) ? M3 ((x) >> 8) << 8 : M3 (x))
#define M5(x) (((x) & 0xffff0000) ? M4 ((x) >> 16) << 16 : M4 (x))

struct A { char e; char f; };

long
foo (void)
{
  return M5 (4096UL - (long) &((struct A *) 0)->f);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030823-1.c<|end_filename|>
struct A
{
  int a;
};

int foo (struct A *a)
{
  static int c = 30;
  int x;

  a->a = c;
  /* Dominator optimizations will replace the use of 'a->a' with 'c', but
     they won't copy the virtual operands for 'c' from its originating
     statement.  This exposes symbol 'c' without a correct SSA version
     number.  */
  x = a->a;
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52113.c<|end_filename|>
/* PR rtl-optimization/52113 */

unsigned long v1;
unsigned char v2;

void
foo (void)
{
  if (v1 > (v2 * 1000L))
    v1 = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031124-1.c<|end_filename|>
/* PR 13143 */

int f (void *ptr)
{
    extern char const stop[];
    return ptr >= (void *) &stop;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050122-2.c<|end_filename|>
/* Related to PR 19484.  */
/* { dg-require-effective-target trampolines } */

extern void foo (void) __attribute__((noreturn));
int n;

void
g (void)
{
  __label__ lab;
  void h (void) { if (n == 2) goto lab; }
  void (*f1) (void) = foo;
  void (*f2) (void) = h;

  f2 ();
  if (n)
    f1 ();
  n = 1;
 lab:
  n++;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43661.c<|end_filename|>
int
func (int x)
{
  return 0 ? (unsigned short) (0 ? : 1 * (signed char) (x ^ x) >= 0) : 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23445.c<|end_filename|>
 struct buffer_head {
   char *b_data;
 };
   void asfs_deletebnode( struct buffer_head *bhsec)  {
     if (bhsec == 0)   {
     void *bnc2 = (void *) bhsec->b_data;
     if (bnc2)       return;
     if (bhsec)       __brelse(bhsec);
   }
 }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr30564-2.c<|end_filename|>

static int RawOrEnc = 0;
static inline void addpair(int fp, int un)
{
  if (RawOrEnc == 0 && fp != un)
    RawOrEnc = 1;
}
int f(int un0, char *a, unsigned int __s2_len)
{
  addpair(un0, un0);
  __s2_len < 4 ? __builtin_strcmp (a, "-") : 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40035.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
void *memmove (void *dest, const void *src, size_t count);
size_t strlen (const char *s);

int
foo (char *param, char *val)
{
  if (val)
    {
      if (val == param + strlen (param) + 1)
        val[-1] = '=';
      else if (val == param + strlen (param) + 2)
        {
          val[-2] = '=';
          memmove (val - 1, val, strlen (val) + 1);
          val--;
        }
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31953.c<|end_filename|>
struct WView
{
  int hexedit_mode:1;
};
toggle_hexedit_mode (struct WView *view)
{
  if (view->hexedit_mode)
    {
    }
  else
    {
      view->hexedit_mode = !view->hexedit_mode;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43066.c<|end_filename|>
struct S {
  struct { } empty[1];
  int i;
};

int foo(int i, ...)
{
  struct S s;
  __builtin_va_list va;
  __builtin_va_start(va, i);
  s = __builtin_va_arg(va, struct S);
  __builtin_va_end(va);
  return s.i;
}


<|start_filename|>v2/testdata/_sqlite/src/dbpage.c<|end_filename|>
/*
** 2017-10-11
**
** The author disclaims copyright to this source code.  In place of
** a legal notice, here is a blessing:
**
**    May you do good and not evil.
**    May you find forgiveness for yourself and forgive others.
**    May you share freely, never taking more than you give.
**
******************************************************************************
**
** This file contains an implementation of the "sqlite_dbpage" virtual table.
**
** The sqlite_dbpage virtual table is used to read or write whole raw
** pages of the database file.  The pager interface is used so that 
** uncommitted changes and changes recorded in the WAL file are correctly
** retrieved.
**
** Usage example:
**
**    SELECT data FROM sqlite_dbpage('aux1') WHERE pgno=123;
**
** This is an eponymous virtual table so it does not need to be created before
** use.  The optional argument to the sqlite_dbpage() table name is the
** schema for the database file that is to be read.  The default schema is
** "main".
**
** The data field of sqlite_dbpage table can be updated.  The new
** value must be a BLOB which is the correct page size, otherwise the
** update fails.  Rows may not be deleted or inserted.
*/

#include "sqliteInt.h"   /* Requires access to internal data structures */
#if (defined(SQLITE_ENABLE_DBPAGE_VTAB) || defined(SQLITE_TEST)) \
    && !defined(SQLITE_OMIT_VIRTUALTABLE)

typedef struct DbpageTable DbpageTable;
typedef struct DbpageCursor DbpageCursor;

struct DbpageCursor {
  sqlite3_vtab_cursor base;       /* Base class.  Must be first */
  int pgno;                       /* Current page number */
  int mxPgno;                     /* Last page to visit on this scan */
};

struct DbpageTable {
  sqlite3_vtab base;              /* Base class.  Must be first */
  sqlite3 *db;                    /* The database */
  Pager *pPager;                  /* Pager being read/written */
  int iDb;                        /* Index of database to analyze */
  int szPage;                     /* Size of each page in bytes */
  int nPage;                      /* Number of pages in the file */
};

/*
** Connect to or create a dbpagevfs virtual table.
*/
static int dbpageConnect(
  sqlite3 *db,
  void *pAux,
  int argc, const char *const*argv,
  sqlite3_vtab **ppVtab,
  char **pzErr
){
  DbpageTable *pTab = 0;
  int rc = SQLITE_OK;
  int iDb;

  if( argc>=4 ){
    Token nm;
    sqlite3TokenInit(&nm, (char*)argv[3]);
    iDb = sqlite3FindDb(db, &nm);
    if( iDb<0 ){
      *pzErr = sqlite3_mprintf("no such schema: %s", argv[3]);
      return SQLITE_ERROR;
    }
  }else{
    iDb = 0;
  }
  rc = sqlite3_declare_vtab(db, 
          "CREATE TABLE x(pgno INTEGER PRIMARY KEY, data BLOB, schema HIDDEN)");
  if( rc==SQLITE_OK ){
    pTab = (DbpageTable *)sqlite3_malloc64(sizeof(DbpageTable));
    if( pTab==0 ) rc = SQLITE_NOMEM_BKPT;
  }

  assert( rc==SQLITE_OK || pTab==0 );
  if( rc==SQLITE_OK ){
    Btree *pBt = db->aDb[iDb].pBt;
    memset(pTab, 0, sizeof(DbpageTable));
    pTab->db = db;
    pTab->iDb = iDb;
    pTab->pPager = pBt ? sqlite3BtreePager(pBt) : 0;
  }

  *ppVtab = (sqlite3_vtab*)pTab;
  return rc;
}

/*
** Disconnect from or destroy a dbpagevfs virtual table.
*/
static int dbpageDisconnect(sqlite3_vtab *pVtab){
  sqlite3_free(pVtab);
  return SQLITE_OK;
}

/*
** idxNum:
**
**     0     full table scan
**     1     pgno=?1
*/
static int dbpageBestIndex(sqlite3_vtab *tab, sqlite3_index_info *pIdxInfo){
  int i;
  pIdxInfo->estimatedCost = 1.0e6;  /* Initial cost estimate */
  for(i=0; i<pIdxInfo->nConstraint; i++){
    struct sqlite3_index_constraint *p = &pIdxInfo->aConstraint[i];
    if( p->usable && p->iColumn<=0 && p->op==SQLITE_INDEX_CONSTRAINT_EQ ){
      pIdxInfo->estimatedRows = 1;
      pIdxInfo->idxFlags = SQLITE_INDEX_SCAN_UNIQUE;
      pIdxInfo->estimatedCost = 1.0;
      pIdxInfo->idxNum = 1;
      pIdxInfo->aConstraintUsage[i].argvIndex = 1;
      pIdxInfo->aConstraintUsage[i].omit = 1;
      break;
    }
  }
  if( pIdxInfo->nOrderBy>=1
   && pIdxInfo->aOrderBy[0].iColumn<=0
   && pIdxInfo->aOrderBy[0].desc==0
  ){
    pIdxInfo->orderByConsumed = 1;
  }
  return SQLITE_OK;
}

/*
** Open a new dbpagevfs cursor.
*/
static int dbpageOpen(sqlite3_vtab *pVTab, sqlite3_vtab_cursor **ppCursor){
  DbpageCursor *pCsr;

  pCsr = (DbpageCursor *)sqlite3_malloc64(sizeof(DbpageCursor));
  if( pCsr==0 ){
    return SQLITE_NOMEM_BKPT;
  }else{
    memset(pCsr, 0, sizeof(DbpageCursor));
    pCsr->base.pVtab = pVTab;
    pCsr->pgno = -1;
  }

  *ppCursor = (sqlite3_vtab_cursor *)pCsr;
  return SQLITE_OK;
}

/*
** Close a dbpagevfs cursor.
*/
static int dbpageClose(sqlite3_vtab_cursor *pCursor){
  DbpageCursor *pCsr = (DbpageCursor *)pCursor;
  sqlite3_free(pCsr);
  return SQLITE_OK;
}

/*
** Move a dbpagevfs cursor to the next entry in the file.
*/
static int dbpageNext(sqlite3_vtab_cursor *pCursor){
  int rc = SQLITE_OK;
  DbpageCursor *pCsr = (DbpageCursor *)pCursor;
  pCsr->pgno++;
  return rc;
}

static int dbpageEof(sqlite3_vtab_cursor *pCursor){
  DbpageCursor *pCsr = (DbpageCursor *)pCursor;
  return pCsr->pgno > pCsr->mxPgno;
}

static int dbpageFilter(
  sqlite3_vtab_cursor *pCursor, 
  int idxNum, const char *idxStr,
  int argc, sqlite3_value **argv
){
  DbpageCursor *pCsr = (DbpageCursor *)pCursor;
  DbpageTable *pTab = (DbpageTable *)pCursor->pVtab;
  int rc = SQLITE_OK;
  Btree *pBt = pTab->db->aDb[pTab->iDb].pBt;

  pTab->szPage = sqlite3BtreeGetPageSize(pBt);
  pTab->nPage = sqlite3BtreeLastPage(pBt);
  if( idxNum==1 ){
    pCsr->pgno = sqlite3_value_int(argv[0]);
    if( pCsr->pgno<1 || pCsr->pgno>pTab->nPage ){
      pCsr->pgno = 1;
      pCsr->mxPgno = 0;
    }else{
      pCsr->mxPgno = pCsr->pgno;
    }
  }else{
    pCsr->pgno = 1;
    pCsr->mxPgno = pTab->nPage;
  }
  return rc;
}

static int dbpageColumn(
  sqlite3_vtab_cursor *pCursor, 
  sqlite3_context *ctx, 
  int i
){
  DbpageCursor *pCsr = (DbpageCursor *)pCursor;
  DbpageTable *pTab = (DbpageTable *)pCursor->pVtab;
  int rc = SQLITE_OK;
  switch( i ){
    case 0: {           /* pgno */
      sqlite3_result_int(ctx, pCsr->pgno);
      break;
    }
    case 1: {           /* data */
      DbPage *pDbPage = 0;
      rc = sqlite3PagerGet(pTab->pPager, pCsr->pgno, (DbPage**)&pDbPage, 0);
      if( rc==SQLITE_OK ){
        sqlite3_result_blob(ctx, sqlite3PagerGetData(pDbPage), pTab->szPage,
                            SQLITE_TRANSIENT);
      }
      sqlite3PagerUnref(pDbPage);
      break;
    }
    default: {          /* schema */
      sqlite3 *db = sqlite3_context_db_handle(ctx);
      sqlite3_result_text(ctx, db->aDb[pTab->iDb].zDbSName, -1, SQLITE_STATIC);
      break;
    }
  }
  return SQLITE_OK;
}

static int dbpageRowid(sqlite3_vtab_cursor *pCursor, sqlite_int64 *pRowid){
  DbpageCursor *pCsr = (DbpageCursor *)pCursor;
  *pRowid = pCsr->pgno;
  return SQLITE_OK;
}

static int dbpageUpdate(
  sqlite3_vtab *pVtab,
  int argc,
  sqlite3_value **argv,
  sqlite_int64 *pRowid
){
  DbpageTable *pTab = (DbpageTable *)pVtab;
  int pgno;
  DbPage *pDbPage = 0;
  int rc = SQLITE_OK;
  char *zErr = 0;

  if( argc==1 ){
    zErr = "cannot delete";
    goto update_fail;
  }
  pgno = sqlite3_value_int(argv[0]);
  if( pgno<1 || pgno>pTab->nPage ){
    zErr = "bad page number";
    goto update_fail;
  }
  if( sqlite3_value_int(argv[1])!=pgno ){
    zErr = "cannot insert";
    goto update_fail;
  }
  if( sqlite3_value_type(argv[3])!=SQLITE_BLOB 
   || sqlite3_value_bytes(argv[3])!=pTab->szPage 
  ){
    zErr = "bad page value";
    goto update_fail;
  }
  rc = sqlite3PagerGet(pTab->pPager, pgno, (DbPage**)&pDbPage, 0);
  if( rc==SQLITE_OK ){
    rc = sqlite3PagerWrite(pDbPage);
    if( rc==SQLITE_OK ){
      memcpy(sqlite3PagerGetData(pDbPage),
             sqlite3_value_blob(argv[3]),
             pTab->szPage);
    }
  }
  sqlite3PagerUnref(pDbPage);
  return rc;

update_fail:
  sqlite3_free(pVtab->zErrMsg);
  pVtab->zErrMsg = sqlite3_mprintf("%s", zErr);
  return SQLITE_ERROR;
}

/*
** Invoke this routine to register the "dbpage" virtual table module
*/
int sqlite3DbpageRegister(sqlite3 *db){
  static sqlite3_module dbpage_module = {
    0,                            /* iVersion */
    dbpageConnect,                /* xCreate */
    dbpageConnect,                /* xConnect */
    dbpageBestIndex,              /* xBestIndex */
    dbpageDisconnect,             /* xDisconnect */
    dbpageDisconnect,             /* xDestroy */
    dbpageOpen,                   /* xOpen - open a cursor */
    dbpageClose,                  /* xClose - close a cursor */
    dbpageFilter,                 /* xFilter - configure scan constraints */
    dbpageNext,                   /* xNext - advance a cursor */
    dbpageEof,                    /* xEof - check for end of scan */
    dbpageColumn,                 /* xColumn - read data */
    dbpageRowid,                  /* xRowid - read data */
    dbpageUpdate,                 /* xUpdate */
    0,                            /* xBegin */
    0,                            /* xSync */
    0,                            /* xCommit */
    0,                            /* xRollback */
    0,                            /* xFindMethod */
    0,                            /* xRename */
    0,                            /* xSavepoint */
    0,                            /* xRelease */
    0,                            /* xRollbackTo */
  };
  return sqlite3_create_module(db, "sqlite_dbpage", &dbpage_module, 0);
}
#elif defined(SQLITE_ENABLE_DBPAGE_VTAB)
int sqlite3DbpageRegister(sqlite3 *db){ return SQLITE_OK; }
#endif /* SQLITE_ENABLE_DBSTAT_VTAB */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040909-1.c<|end_filename|>
static __inline__ int
one_utf8_to_utf16 () { }

static __inline__ unsigned char
conversion_loop (int (*const one_conversion)())
{
return one_conversion ();
}
static unsigned char
convert_utf8_utf16 ()
{
  return conversion_loop (one_utf8_to_utf16);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55569.c<|end_filename|>
/* { dg-options "-ftree-vectorize" } */
int *bar (void);

void
foo (void)
{
  long x;
  int *y = bar ();
    for (x = -1 / sizeof (int); x; --x, ++y)
       *y = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030518-1.c<|end_filename|>
/* Test case from PR middle-end/10472  */

extern void f (char *);

void foo (char *s)
{
  f (__builtin_stpcpy (s, "hi"));
}

void bar (char *s)
{
  f (__builtin_mempcpy (s, "hi", 3));
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20121010-1.c<|end_filename|>
int _IO_getc(int*);
read_long(int *fp)
{
  unsigned char b0, b1, b2, b3;
  b0 = _IO_getc (fp);
  b1 = _IO_getc (fp);
  b2 = _IO_getc (fp);
  b3 = _IO_getc (fp);
  return ((int)(((((b3 << 8) | b2) << 8) | b1) << 8) | b0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37418-4.c<|end_filename|>
typedef void ft(int);
const ft f;
void f2(ft *p __attribute__((const)))
{
  p = f;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120830-2.c<|end_filename|>
ubidi_writeReordered_49( int *dest, const unsigned char *dirProps) 
{
    if (!(1&(1UL<<*dirProps)))
      *dest=1;
}


<|start_filename|>v2/headers/linux_386/usr/include/i386-linux-gnu/sys/ucontext.h<|end_filename|>
/* Copyright (C) 2001-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _SYS_UCONTEXT_H
#define _SYS_UCONTEXT_H	1

#include <features.h>

#include <bits/types.h>
#include <bits/types/sigset_t.h>
#include <bits/types/stack_t.h>

#ifdef __USE_MISC
# define __ctx(fld) fld
#else
# define __ctx(fld) __ ## fld
#endif

#ifdef __x86_64__

/* Type for general register.  */
__extension__ typedef long long int greg_t;

/* Number of general registers.  */
#define __NGREG	23
#ifdef __USE_MISC
# define NGREG	__NGREG
#endif

/* Container for all general registers.  */
typedef greg_t gregset_t[__NGREG];

#ifdef __USE_GNU
/* Number of each register in the `gregset_t' array.  */
enum {
	REG_R8 = 0,
# define REG_R8		REG_R8
	REG_R9,
# define REG_R9		REG_R9
	REG_R10,
# define REG_R10	REG_R10
	REG_R11,
# define REG_R11	REG_R11
	REG_R12,
# define REG_R12	REG_R12
	REG_R13,
# define REG_R13	REG_R13
	REG_R14,
# define REG_R14	REG_R14
	REG_R15,
# define REG_R15	REG_R15
	REG_RDI,
# define REG_RDI	REG_RDI
	REG_RSI,
# define REG_RSI	REG_RSI
	REG_RBP,
# define REG_RBP	REG_RBP
	REG_RBX,
# define REG_RBX	REG_RBX
	REG_RDX,
# define REG_RDX	REG_RDX
	REG_RAX,
# define REG_RAX	REG_RAX
	REG_RCX,
# define REG_RCX	REG_RCX
	REG_RSP,
# define REG_RSP	REG_RSP
	REG_RIP,
# define REG_RIP	REG_RIP
	REG_EFL,
# define REG_EFL	REG_EFL
	REG_CSGSFS,		/* Actually short cs, gs, fs, __pad0.  */
# define REG_CSGSFS	REG_CSGSFS
	REG_ERR,
# define REG_ERR	REG_ERR
	REG_TRAPNO,
# define REG_TRAPNO	REG_TRAPNO
	REG_OLDMASK,
# define REG_OLDMASK	REG_OLDMASK
	REG_CR2
# define REG_CR2	REG_CR2
};
#endif

struct _libc_fpxreg {
	unsigned short int __ctx(significand)[4];
	unsigned short int __ctx(exponent);
	unsigned short int __glibc_reserved1[3];
};

struct _libc_xmmreg {
	__uint32_t __ctx(element)[4];
};

struct _libc_fpstate {
	/* 64-bit FXSAVE format.  */
	__uint16_t __ctx(cwd);
	__uint16_t __ctx(swd);
	__uint16_t __ctx(ftw);
	__uint16_t __ctx(fop);
	__uint64_t __ctx(rip);
	__uint64_t __ctx(rdp);
	__uint32_t __ctx(mxcsr);
	__uint32_t __ctx(mxcr_mask);
	struct _libc_fpxreg _st[8];
	struct _libc_xmmreg _xmm[16];
	__uint32_t __glibc_reserved1[24];
};

/* Structure to describe FPU registers.  */
typedef struct _libc_fpstate *fpregset_t;

/* Context to describe whole processor state.  */
typedef struct {
	gregset_t __ctx(gregs);
	/* Note that fpregs is a pointer.  */
	fpregset_t __ctx(fpregs);
	__extension__ unsigned long long __reserved1[8];
} mcontext_t;

/* Userlevel context.  */
typedef struct ucontext_t {
	unsigned long int __ctx(uc_flags);
	struct ucontext_t *uc_link;
	stack_t uc_stack;
	mcontext_t uc_mcontext;
	sigset_t uc_sigmask;
	struct _libc_fpstate __fpregs_mem;
} ucontext_t;

#else				/* !__x86_64__ */

/* Type for general register.  */
typedef int greg_t;

/* Number of general registers.  */
#define __NGREG	19
#ifdef __USE_MISC
# define NGREG	__NGREG
#endif

/* Container for all general registers.  */
typedef greg_t gregset_t[__NGREG];

#ifdef __USE_GNU
/* Number of each register is the `gregset_t' array.  */
enum {
	REG_GS = 0,
# define REG_GS		REG_GS
	REG_FS,
# define REG_FS		REG_FS
	REG_ES,
# define REG_ES		REG_ES
	REG_DS,
# define REG_DS		REG_DS
	REG_EDI,
# define REG_EDI	REG_EDI
	REG_ESI,
# define REG_ESI	REG_ESI
	REG_EBP,
# define REG_EBP	REG_EBP
	REG_ESP,
# define REG_ESP	REG_ESP
	REG_EBX,
# define REG_EBX	REG_EBX
	REG_EDX,
# define REG_EDX	REG_EDX
	REG_ECX,
# define REG_ECX	REG_ECX
	REG_EAX,
# define REG_EAX	REG_EAX
	REG_TRAPNO,
# define REG_TRAPNO	REG_TRAPNO
	REG_ERR,
# define REG_ERR	REG_ERR
	REG_EIP,
# define REG_EIP	REG_EIP
	REG_CS,
# define REG_CS		REG_CS
	REG_EFL,
# define REG_EFL	REG_EFL
	REG_UESP,
# define REG_UESP	REG_UESP
	REG_SS
# define REG_SS	REG_SS
};
#endif

/* Definitions taken from the kernel headers.  */
struct _libc_fpreg {
	unsigned short int __ctx(significand)[4];
	unsigned short int __ctx(exponent);
};

struct _libc_fpstate {
	unsigned long int __ctx(cw);
	unsigned long int __ctx(sw);
	unsigned long int __ctx(tag);
	unsigned long int __ctx(ipoff);
	unsigned long int __ctx(cssel);
	unsigned long int __ctx(dataoff);
	unsigned long int __ctx(datasel);
	struct _libc_fpreg _st[8];
	unsigned long int __ctx(status);
};

/* Structure to describe FPU registers.  */
typedef struct _libc_fpstate *fpregset_t;

/* Context to describe whole processor state.  */
typedef struct {
	gregset_t __ctx(gregs);
	/* Due to Linux's history we have to use a pointer here.  The SysV/i386
	   ABI requires a struct with the values.  */
	fpregset_t __ctx(fpregs);
	unsigned long int __ctx(oldmask);
	unsigned long int __ctx(cr2);
} mcontext_t;

/* Userlevel context.  */
typedef struct ucontext_t {
	unsigned long int __ctx(uc_flags);
	struct ucontext_t *uc_link;
	stack_t uc_stack;
	mcontext_t uc_mcontext;
	sigset_t uc_sigmask;
	struct _libc_fpstate __fpregs_mem;
} ucontext_t;

#endif				/* !__x86_64__ */

#undef __ctx

#endif				/* sys/ucontext.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21380.c<|end_filename|>
void bar (void);
                                                                                
void
foo (int *diff)
{
  double deltay = 0.0;
  int Stangent = 0;
  int mindiff;
  int Sflipped = 0;
  int i;
  int Sturn, Snofit;
                                                                                
  Sturn = 1;
  if (Sturn)
    Stangent = 1;
  if (Sturn)
    {
      Sflipped = 0;
      Snofit = 1;
      while (Snofit)
        {
          Snofit = 0;
          mindiff = 0;
          for (i = 0; i < 4; i++)
            mindiff = diff[i];
          while (!Snofit && (mindiff < 0.0))
            {
              deltay = (Stangent ? deltay : 0.0);
              if (deltay < 0.0)
                Snofit = 1;
              for (i = 0; i < 4; i++)
                {
                }
            }
          if (Snofit)
            if (Sflipped)
              break;
        }
      if (Snofit)
        bar ();
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70061.c<|end_filename|>
typedef int v8si __attribute__ ((vector_size (32)));

int
foo(v8si c, v8si d)
{
l0:
  if (c[2])
    d ^= c;
  return d[3];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20051216-1.c<|end_filename|>
/* PR rtl-optimization/25432 */

void *malloc (__SIZE_TYPE__);
void *realloc (void *, __SIZE_TYPE__);

struct A { double x, y; };
struct B { double x0, y0, x1, y1; };
struct C { int n_points; int dir; struct B bbox; struct A *points; };
struct D { int n_segs; struct C segs[1]; };

void foo (int, int, int *, int, int *, struct A **, int *, int *,
	  struct D *, int *, struct D **, int *, int **);
int baz (struct A, struct A, struct A, struct A);

static void
bar (struct D *svp, int *n_points_max,
     struct A p, int *seg_map, int *active_segs, int i)
{
  int asi, n_points;
  struct C *seg;

  asi = seg_map[active_segs[i]];
  seg = &svp->segs[asi];
  n_points = seg->n_points;
  seg->points = ((struct A *)
		realloc (seg->points, (n_points_max[asi] <<= 1) * sizeof (struct A)));
  seg->points[n_points] = p;
  seg->bbox.y1 = p.y;
  seg->n_points++;
}

struct D *
test (struct D *vp)
{
  int *active_segs, n_active_segs, *cursor, seg_idx;
  double y, share_x;
  int tmp1, tmp2, asi, i, j, *n_ips, *n_ips_max, n_segs_max;
  struct A **ips, p_curs, *pts;
  struct D *new_vp;
  int *n_points_max, *seg_map, first_share;

  n_segs_max = 16;
  new_vp = (struct D *) malloc (sizeof (struct D) +
				(n_segs_max - 1) * sizeof (struct C));
  new_vp->n_segs = 0;

  if (vp->n_segs == 0)
    return new_vp;

  active_segs = ((int *) malloc ((vp->n_segs) * sizeof (int)));
  cursor = ((int *) malloc ((vp->n_segs) * sizeof (int)));

  seg_map = ((int *) malloc ((vp->n_segs) * sizeof (int)));
  n_ips = ((int *) malloc ((vp->n_segs) * sizeof (int)));
  n_ips_max = ((int *) malloc ((vp->n_segs) * sizeof (int)));
  ips = ((struct A * *) malloc ((vp->n_segs) * sizeof (struct A *)));

  n_points_max = ((int *) malloc ((n_segs_max) * sizeof (int)));

  n_active_segs = 0;
  seg_idx = 0;
  y = vp->segs[0].points[0].y;
  while (seg_idx < vp->n_segs || n_active_segs > 0)
    {
      for (i = 0; i < n_active_segs; i++)
	{
	  asi = active_segs[i];
	  if (vp->segs[asi].n_points - 1 == cursor[asi] &&
	      vp->segs[asi].points[cursor[asi]].y == y)
	    i--;
	}

      while (seg_idx < vp->n_segs && y == vp->segs[seg_idx].points[0].y)
	{
	  cursor[seg_idx] = 0;
	  n_ips[seg_idx] = 1;
	  n_ips_max[seg_idx] = 2;
	  ips[seg_idx] =
	    ((struct A *) malloc ((n_ips_max[seg_idx]) * sizeof (struct A)));
	  ips[seg_idx][0] = vp->segs[seg_idx].points[0];
	  pts = ((struct A *) malloc ((16) * sizeof (struct A)));
	  pts[0] = vp->segs[seg_idx].points[0];
	  tmp1 = seg_idx;
	  for (j = i; j < n_active_segs; j++)
	    {
	      tmp2 = active_segs[j];
	      active_segs[j] = tmp1;
	      tmp1 = tmp2;
	    }
	  active_segs[n_active_segs] = tmp1;
	  n_active_segs++;
	  seg_idx++;
	}
      first_share = -1;
      share_x = 0;

      for (i = 0; i < n_active_segs; i++)
	{
	  asi = active_segs[i];
	  p_curs = ips[asi][1];
	  if (p_curs.y == y)
	    {
	      bar (new_vp, n_points_max,
		   p_curs, seg_map, active_segs, i);

	      n_ips[asi]--;
	      for (j = 0; j < n_ips[asi]; j++)
		ips[asi][j] = ips[asi][j + 1];

	      if (first_share < 0 || p_curs.x != share_x)
		{
		  foo (first_share, i,
		       active_segs, n_active_segs,
		       cursor, ips, n_ips, n_ips_max, vp, seg_map,
		       &new_vp, &n_segs_max, &n_points_max);
		  first_share = i;
		  share_x = p_curs.x;
		}
	    }
	  else
	    {
	      foo (first_share, i,
		   active_segs, n_active_segs,
		   cursor, ips, n_ips, n_ips_max, vp, seg_map,
		   &new_vp, &n_segs_max, &n_points_max);
	      first_share = -1;
	    }
	}
    }
  return new_vp;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54559.c<|end_filename|>
/* PR c/54559 */

typedef double _Complex T;

T
foo (double x, double y)
{
  return x + y * (T) (__extension__ 1.0iF);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34093.c<|end_filename|>
struct X { int i; int j; };
#define FOO struct X
#define FOO10(x) FOO x ## 0; FOO x ## 1; FOO x ## 2; FOO x ## 3; FOO x ## 4; FOO x ## 5; FOO x ## 6; FOO x ## 7; FOO x ## 8; FOO x ## 9;
#define FOO100(x) FOO10(x ## 0) FOO10(x ## 1) FOO10(x ## 2) FOO10(x ## 3) FOO10(x ## 4) FOO10(x ## 5) FOO10(x ## 6) FOO10(x ## 7) FOO10(x ## 8) FOO10(x ## 9)
  FOO100(x0)
  FOO100(x1)
  FOO100(x2)
  FOO100(x3)
  FOO100(x4)
  FOO100(x5)
  FOO100(x6)
  FOO100(x7)
  FOO100(x8)
  FOO100(x9)

#define COO(n,f) case n: p = &f; break;
#define COO10(n,f) COO(n ## 0, f ## 0) COO(n ## 1, f ## 1) COO(n ## 2, f ## 2) COO(n ## 3, f ## 3) COO(n ## 4, f ## 4) COO(n ## 5, f ## 5) COO(n ## 6, f ## 6) COO(n ## 7, f ## 7) COO(n ## 8, f ## 8) COO(n ## 9, f ## 9)
#define COO100(n,f) COO10(n ## 0, f ## 0) COO10(n ## 1, f ## 1) COO10(n ## 2, f ## 2) COO10(n ## 3, f ## 3) COO10(n ## 4, f ## 4) COO10(n ## 5, f ## 5) COO10(n ## 6, f ## 6) COO10(n ## 7, f ## 7) COO10(n ## 8, f ## 8) COO10(n ## 9, f ## 9)

int foo(int i)
{
  struct X *p = 0;
  x000.i = 0;
  x599.j = 0;
  switch (i)
    {
  COO100(1, x0)
  COO100(2, x1)
  COO100(3, x2)
  COO100(4, x3)
  COO100(5, x4)
  COO100(6, x5)
  COO100(7, x6)
  COO100(8, x7)
  COO100(9, x8)
  COO100(10, x9)
    }
  return p->j;
}


<|start_filename|>global.go<|end_filename|>
// Copyright 2016 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

import (
	"reflect"
	"strconv"
	"strings"

	"github.com/cznic/golex/lex"
	"github.com/cznic/strutil"
	"github.com/cznic/xc"
)

const (
	commentNotClosed = "comment not closed"
)

var (
	debugIncludes bool
	debugMacros   bool
	dict          = xc.Dict
	fset          = xc.FileSet
	isGenerating  bool // go generate hook.
	isTesting     bool // Test hook.
	printHooks    = strutil.PrettyPrintHooks{}
)

func init() {
	for k, v := range xc.PrintHooks {
		printHooks[k] = v
	}
	lcRT := reflect.TypeOf(lex.Char{})
	lcH := func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		c := v.(lex.Char)
		r := c.Rune
		s := yySymName(int(r))
		if x := s[0]; x >= '0' && x <= '9' {
			s = strconv.QuoteRune(r)
		}
		f.Format("%s%v: %s"+suffix, prefix, fset.Position(c.Pos()), s)
	}

	printHooks[lcRT] = lcH
	printHooks[reflect.TypeOf(xc.Token{})] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		t := v.(xc.Token)
		if (t == xc.Token{}) {
			return
		}

		lcH(f, t.Char, prefix, "")
		if s := t.S(); len(s) != 0 {
			f.Format(" %q", s)
		}
		f.Format(suffix)
	}

	printHooks[reflect.TypeOf(PPTokenList(0))] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		x := v.(PPTokenList)
		if x == 0 {
			return
		}

		a := strings.Split(prefix+PrettyString(decodeTokens(x, nil, true))+",", "\n")
		for _, v := range a {
			f.Format("%s\n", v)
		}

	}

	printHooks[reflect.TypeOf((*ctype)(nil))] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		f.Format(prefix)
		f.Format("%v", v.(Type).String())
		f.Format(suffix)
	}

	printHooks[reflect.TypeOf(Kind(0))] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		f.Format(prefix)
		f.Format("%v", v.(Kind))
		f.Format(suffix)
	}

	printHooks[reflect.TypeOf(Linkage(0))] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		f.Format(prefix)
		f.Format("%v", v.(Linkage))
		f.Format(suffix)
	}
}


<|start_filename|>testdata/issue4.c<|end_filename|>
typedef int int_t;

// redeclaration error:
int foo(void *ptr);
typedef int foo(void *ptr);

// redeclaration error:
int_t foo2(void *ptr);
typedef int_t foo2(void *ptr);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65014.c<|end_filename|>
/* PR tree-optimization/65014 */
/* { dg-do compile { target int32plus } } */

extern int x;

unsigned
foo (unsigned int y)
{
  return (y << ((__INTPTR_TYPE__) &x)) | (y >> (32 - ((__INTPTR_TYPE__) &x)));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/complex-2.c<|end_filename|>
/* PR 22103 */

_Complex float f(void);
void *a;

_Complex float g(void)
{
  _Complex float x = f();
  __imag__ x = 1.0;
  if (__imag__ x != 1.0)
    {
      a = &x;
    }
  return x;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42717.c<|end_filename|>
/* { dg-xfail-if "ptxas crashes" { nvptx-*-* } { "-O0" } { "" } } */
static signed char
foo (signed char si1, unsigned char si2)
{
  return (si1 ^ si2) & (-si2 ^ si2) ? : si1 - si2;
}

struct S0
{
};

unsigned char g_21;

struct S0 g_34;

void
bar (unsigned char p_20)
{
  unsigned char *l_22 = &g_21;
  unsigned char l_23 = 0;
  struct S0 *l = &g_34;
  goto lbl_42;
  for (; l_23; l_23 = foo (l_23, 1))
    {
      for (p_20 = 0; 0; p_20 = foo (p_20, 1))
	lbl_42:;
      (l == &g_34) ? 0 : "";
lbl_85:*l_22 = p_20;
    }
  goto lbl_85;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40640.c<|end_filename|>
void decode_opic_address(int *);
void sim_io_printf_filtered2 (int, unsigned);
void
hw_opic_io_read_buffer(int index)
{
  unsigned reg = 0;
  decode_opic_address(&index);
  switch (index)
    {
      case 0:
	  reg = 1;
    }
  sim_io_printf_filtered2 (index, reg);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34856.c<|end_filename|>
/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
#undef __vector
#define __vector __attribute__((vector_size(16) ))
typedef __vector signed char qword;
typedef __vector unsigned int VU32;
extern short g[192 +16];
void f(qword);
void f1 (unsigned ctr)
{
  VU32 pin;
  pin = (VU32){(__SIZE_TYPE__)&g[16]};
  do {
   f((qword)pin);
   ctr--;
  }
while(ctr);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/calls.c<|end_filename|>
/* { dg-require-effective-target ptr32plus } */
/* { dg-require-effective-target untyped_assembly } */

typedef void  *(*T)(void);
f1 ()
{
  ((T) 0)();
}
f2 ()
{
  ((T) 1000)();
}
f3 ()
{
  ((T) 10000000)();
}
f4 (r)
{
  ((T) r)();
}
f5 ()
{
  int (*r)() = f3;
  ((T) r)();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48641.c<|end_filename|>
/* { dg-options "-O -fno-tree-ccp -fno-tree-copy-prop" } */
#define CSF __builtin_copysignf
#define CSD __builtin_copysign
#define CSL __builtin_copysignl
#define MODFF __builtin_modff
#define MODFD __builtin_modf
#define MODFL __builtin_modfl

extern void link_error (void);

void
foo (void)
{
  float iptrf;
  double iptr;
  long double iptrl;
  long long iptrll;
  if ((CSF (1.0F, MODFF (0x1p10F + 0.5f, &iptrf)) != CSF (1.0F, 0.5f))
      || (CSF (1.0F, iptrf) != 0x1p10f))
    link_error ();
  if (MODFD (0x1p10F + 0.5, &iptr) != 0.5
      || (CSD (1.0, MODFD (0x1p10F + 0.5, &iptr)) != CSD (1.0, 0.5))
      || (CSD (1.0, iptr) != CSD (1.0, 0x1p10)))
    link_error ();
  if (MODFL (0x1p10F + 0.5l, &iptrl) != 0.5l
      || (CSL (1.0L, MODFL (0x1p10F + 0.5l, &iptrl)) != CSL (1.0L, 0.5l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0x1p10l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (0x1p10F + 0x1p-10f, &iptrf)))
       != CSF (1.0F, 0x1p-10f))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0x1p10f)))
    link_error ();
  if (MODFD (0x1p10F + 0x1p-10, &iptr) != 0x1p-10
      || (CSD (1.0, (MODFD (0x1p10F + 0x1p-10, &iptr)))
	  != CSD (1.0, 0x1p-10)) || (CSD (1.0, iptr) != CSD (1.0, 0x1p10)))
    link_error ();
  if (MODFL (0x1p10F + 0x1p-10l, &iptrl) != 0x1p-10l
      || (CSL (1.0L, (MODFL (0x1p10F + 0x1p-10l, &iptrl)))
	  != CSL (1.0L, 0x1p-10l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0x1p10l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (12345678L / 17.0f, &iptrf)))
       != CSF (1.0F, (-726216L + 12345678L / 17.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 726216.0f)))
    link_error ();
  if (MODFD (12345678L / 17.0, &iptr) != -726216L + 12345678L / 17.0
      || (CSD (1.0, (MODFD (12345678L / 17.0, &iptr)))
	  != CSD (1.0, (-726216L + 12345678L / 17.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 726216.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (12345678L / 17.0l, &iptrl)))
       != CSL (1.0L, (-726216L + 12345678L / 17.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 726216.0l)))
    link_error ();
  if (MODFF (555.555f, &iptrf) != -555 + 555.555f
      || (CSF (1.0F, iptrf) != CSF (1.0F, 555.0f)))
    link_error ();
  if (MODFD (555.555, &iptr) != -555 + 555.555
      || (CSD (1.0, (MODFD (555.555, &iptr))) != CSD (1.0, (-555 + 555.555)))
      || (CSD (1.0, iptr) != CSD (1.0, 555.0)))
    link_error ();
  if (MODFL (555.555l, &iptrl) != -555 + 555.555l
      || (CSL (1.0L, (MODFL (555.555l, &iptrl)))
	  != CSL (1.0L, (-555 + 555.555l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 555.0l)))
    link_error ();
  if (MODFF (5000 / 11.0f, &iptrf) != -454 + 5000 / 11.0f
      || (CSF (1.0F, (MODFF (5000 / 11.0f, &iptrf)))
	  != CSF (1.0F, (-454 + 5000 / 11.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 454.0f)))
    link_error ();
  if (MODFD (5000 / 11.0, &iptr) != -454 + 5000 / 11.0
      || (CSD (1.0, (MODFD (5000 / 11.0, &iptr)))
	  != CSD (1.0, (-454 + 5000 / 11.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 454.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (5000 / 11.0l, &iptrl)))
       != CSL (1.0L, (-454 + 5000 / 11.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 454.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (1000 / 7.0f, &iptrf)))
       != CSF (1.0F, (-142 + 1000 / 7.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 142.0f)))
    link_error ();
  if ((CSD (1.0, (MODFD (1000 / 7.0, &iptr)))
       != CSD (1.0, (-142 + 1000 / 7.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 142.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (1000 / 7.0l, &iptrl)))
       != CSL (1.0L, (-142 + 1000 / 7.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 142.0l)))
    link_error ();
  if (MODFF (123 / 7.0f, &iptrf) != -17 + 123 / 7.0f
      || (CSF (1.0F, iptrf) != CSF (1.0F, 17.0f)))
    link_error ();
  if (MODFD (123 / 7.0, &iptr) != -17 + 123 / 7.0
      || (CSD (1.0, iptr) != CSD (1.0, 17.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (123 / 7.0l, &iptrl)))
       != CSL (1.0L, (-17 + 123 / 7.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 17.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (117 / 7.0f, &iptrf)))
       != CSF (1.0F, (-16 + 117 / 7.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 16.0f)))
    link_error ();
  if ((CSD (1.0, (MODFD (117 / 7.0, &iptr))) != CSD (1.0, (-16 + 117 / 7.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 16.0)))
    link_error ();
  if (MODFL (117 / 7.0l, &iptrl) != -16 + 117 / 7.0l
      || (CSL (1.0L, iptrl) != CSL (1.0L, 16.0l)))
    link_error ();
  if (MODFF (5.5f, &iptrf) != 0.5f || (CSF (1.0F, iptrf) != CSF (1.0F, 5.0f)))
    link_error ();
  if (MODFD (5.5, &iptr) != 0.5 || (CSD (1.0, iptr) != CSD (1.0, 5.0)))
    link_error ();
  if (MODFL (5.5l, &iptrl) != 0.5l || (CSL (1.0L, iptrl) != CSL (1.0L, 5.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (1.5f, &iptrf))) != CSF (1.0F, 0.5f))
      || (CSF (1.0F, iptrf) != 1.0f))
    link_error ();
  if ((CSD (1.0, (MODFD (1.5, &iptr))) != CSD (1.0, 0.5))
      || (CSD (1.0, iptr) != 1.0))
    link_error ();
  if (MODFL (1.5l, &iptrl) != iptrl != 1.0l || (CSL (1.0L, iptrl) != 1.0l))
    link_error ();
  if (MODFF (4 / 3.0f, &iptrf) != -1 + 4 / 3.0f
      || (CSF (1.0F, (MODFF (4 / 3.0f, &iptrf)))
	  != CSF (1.0F, (-1 + 4 / 3.0f))) || (CSF (1.0F, iptrf) != (1.0F)))
    link_error ();
  if (MODFD (4 / 3.0, &iptr) != -1 + 4 / 3.0 || (CSD (1.0, iptr) != 1.0))
    link_error ();
  if (MODFL (4 / 3.0l, &iptrl) != iptrl != 1.0l
      || (CSL (1.0L, iptrl) != 1.0l))
    link_error ();
  if ((((MODFF (1.0f, &iptrf)))) || (CSF (1.0F, iptrf) != 1.0f))
    link_error ();
  if ((((MODFD (1.0, &iptr))) != 0.0) || (CSD (1.0, iptr) != 1.0))
    link_error ();
  if ((((MODFL (1.0l, &iptrl))) != 0.0l) || (CSL (1.0L, iptrl) != 1.0l))
    link_error ();
  if (MODFF (0.5f, &iptrf) != 0.5f || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (0.5, &iptr) != 0.5 || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (0.5l, &iptrl))) != CSL (1.0L, 0.5l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if (MODFF (4 / 9.0f, &iptrf) != 4 / 9.0f
      != (CSF (1.0F, (MODFF (4 / 9.0f, &iptrf))) != CSF (1.0F, (4 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (4 / 9.0, &iptr) != 4 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if (MODFL (4 / 9.0l, &iptrl) != 4 / 9.0l
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if (MODFF (1 / 3.0f, &iptrf) != 1 / 3.0f
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (1 / 3.0, &iptr) != 1 / 3.0
      || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (1 / 3.0l, &iptrl))) != CSL (1.0L, (1 / 3.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (1 / 9.0f, &iptrf))) != CSF (1.0F, (1 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (1 / 9.0, &iptr) != 1 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (1 / 9.0l, &iptrl))) != CSL (1.0L, (1 / 9.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if ((((MODFF (0.0f, &iptrf)))) || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if ((((MODFD (0.0, &iptr)))) || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((((MODFL (0.0l, &iptrl))) != 0.0l)
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if ((((MODFF (-0.0f, &iptrf)))) || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if ((((MODFD (-0.0, &iptr)))) || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (-0.0l, &iptrl))) != CSL (1.0L, -0.0l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if (MODFF (-1 / 9.0f, &iptrf) != -1 / 9.0f
      || (CSF (1.0F, (MODFF (-1 / 9.0f, &iptrf))) != CSF (1.0F, (-1 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-1 / 9.0, &iptr) != -1 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (-1 / 9.0l, &iptrl))) != CSL (1.0L, (-1 / 9.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (-1 / 3.0f, &iptrf))) != CSF (1.0F, (-1 / 3.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-1 / 3.0, &iptr) != -1 / 3.0
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (-1 / 3.0l, &iptrl))) != CSL (1.0L, (-1 / 3.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if (MODFF (-4 / 9.0f, &iptrf) != -4 / 9.0f
      || (CSF (1.0F, (MODFF (-4 / 9.0f, &iptrf))) != CSF (1.0F, (-4 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-4 / 9.0, &iptr) != -4 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if (MODFL (-4 / 9.0l, &iptrl) != -4 / 9.0l
      || (CSL (1.0L, (MODFL (-4 / 9.0l, &iptrl))) != CSL (1.0L, (-4 / 9.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if (MODFF (-0.5f, &iptrf) != -0.5f
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-0.5, &iptr) != -0.5
      != (CSD (1.0, (MODFD (-0.5, &iptr))) != CSD (1.0, -0.5))
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    (MODFL (-0.5l, (long double *) &iptrll));
  if ((((MODFF (-1.0f, &iptrf)))) || (CSF (1.0F, iptrf) != -1.0f))
    link_error ();
  if ((((MODFD (-1.0, &iptr))) != -0.0) || (CSD (1.0, iptr) != -1.0))
    link_error ();
  if ((((MODFL (-1.0l, &iptrl)))) || (CSL (1.0L, iptrl) != -1.0l))
    link_error ();
  if ((CSF (1.0F, (MODFF (-4 / 3.0f, &iptrf))) != CSF (1.0F, (1 - 4 / 3.0f)))
      || (CSF (1.0F, iptrf) != -1.0f))
    link_error ();
  if (MODFD (-4 / 3.0, &iptr) != 1 - 4 / 3.0 || (CSD (1.0, iptr) != -1.0))
    link_error ();
  if (MODFL (-4 / 3.0l, &iptrl) != 1 - 4 / 3.0l
      || (CSL (1.0L, (MODFL (-4 / 3.0l, &iptrl)))
	  != CSL (1.0L, (1 - 4 / 3.0l))) || (CSL (1.0L, iptrl) != -1.0l))
    link_error ();
  if ((CSF (1.0F, (MODFF (-1.5f, &iptrf))) != CSF (1.0F, -0.5f))
      || (CSF (1.0F, iptrf) != -1.0f))
    link_error ();
  if ((CSD (1.0, (MODFD (-1.5, &iptr))) != CSD (1.0, -0.5))
      || (CSD (1.0, iptr) != -1.0))
    link_error ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/ex.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */

foo (a, b)
{
  if ((a & (1 << b)) == 0)
    return 1;
  return 0;
}

main ()
{
  printf ("%d\n", foo ());
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65163.c<|end_filename|>
/* PR target/65163  */

typedef unsigned int uint32_t;
typedef unsigned short uint16_t;
union unaligned_32 { uint32_t l; } __attribute__((packed));
union unaligned_16 { uint16_t l; } __attribute__((packed));

int
test_00 (unsigned char* buf, int bits_per_component)
{
  (((union unaligned_32*)(buf))->l) =
    __builtin_bswap32 (bits_per_component == 10 ? 1 : 0);
  return 0;
}

int
test_01 (unsigned char* buf, int bits_per_component)
{
  (((union unaligned_16*)(buf))->l) =
    __builtin_bswap16 (bits_per_component == 10 ? 1 : 0);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/complex-6.c<|end_filename|>
/* PR tree-opt/35737 */
/* { dg-require-effective-target indirect_jumps } */

long buf[10];

int foo()
{
  __complex__ int i = 0;

  if (__builtin_setjmp(buf))
  {
    i = 1;
    bar();
  }

  return i == 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69161.c<|end_filename|>
/* PR target/69161.  */

char a;
int b, c, d, e;

void
foo (void)
{
  int f;
  for (f = 0; f <= 4; f++)
    {
      for (d = 0; d < 20; d++)
	{
	  __INTPTR_TYPE__ g = (__INTPTR_TYPE__) & c;
	  b &= (0 != g) > e;
	}
      e &= a;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47364-1.c<|end_filename|>
static unsigned char foo[256];

arc4_init(void)
{
  int n;

  for (n = 0; n < 256; n++)
    foo[n] = n;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20101217-1.c<|end_filename|>
/* Testcase provided by HUAWEI.  */
#include <stdio.h>
int main()
{
        int cur_k;
        int cur_j=0;
        int cur_i=28;
        unsigned char temp_data[8];
        unsigned int Data_Size=20;

        for (cur_k=0;cur_j<7;cur_j++,cur_i++) {
                if (cur_j%2==0) {
                        temp_data[cur_k++]=0;
                }
                if (cur_k==7) {
                        for (;cur_k>0;cur_k--) {
                                if (cur_k>2) {
                                        if ((temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) && (temp_data[7-cur_k+1]=='a' || temp_data[7-cur_k+1]=='A' )) {
                                                break;
                                        }
                                }
                                if (cur_k==1) {
                                        if (temp_data[7-cur_k]=='n' || temp_data[7-cur_k]=='N' ) {
                                                break;
                                        }
                                }
                        }
                        if (cur_k==7) {
                        } else {
                                if (cur_k>0)
                                        printf("dfjk");
                        }
                }
        }
return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090917-1.c<|end_filename|>
typedef int *loop_p;
typedef struct VEC_loop_p_base
{
  unsigned num;
  loop_p vec[1];
}
VEC_loop_p_base;

__inline__ int
VEC_loop_p_base_iterate (const VEC_loop_p_base * vec_, unsigned ix_,
			 loop_p * ptr)
{
  if (vec_ && ix_ < vec_->num)
    {
      *ptr = vec_->vec[ix_];
      return 1;
    }
  else
    {
      return 0;
    }
}

typedef struct VEC_loop_p_heap
{
  VEC_loop_p_base base;
}
VEC_loop_p_heap;


static __inline__ int
am_vector_index_for_loop (VEC_loop_p_heap * loop_nest, int loop_num)
{
  int i;
  loop_p l;

  for (i = 0;
       VEC_loop_p_base_iterate ((loop_nest) ? &(loop_nest)->base : 0, i,
				&(l)); i++)
    if (l == loop_num)
      return i;

  __builtin_unreachable ();
}

unsigned char
build_access_matrix (unsigned max)
{
  unsigned i;
  for (i = 0; i < max; i++)
    {
      if (am_vector_index_for_loop (foo (), 0))
	return 0;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr60071.c<|end_filename|>
int
foo (int cls, int sign)
{
  if (__builtin_expect (cls == 4, 0))
    return (sign
            ? (-((int) ((~(unsigned)0) >> 1)))-1
            : ((int) ((~(unsigned)0) >> 1)));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35171.c<|end_filename|>
int f(int a, int b, short c, int d, short e)
{
  int i;
  for (i = 1; i <= 2 ; i++) {
    c -= 4;
    a = c;
    d = d + (b?b:e);
  }
  return a + d;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21293.c<|end_filename|>
/* Testcase from <NAME> <<EMAIL>>. */
struct {
double x[1];
} g;
void k( double *, double*);
void h(int Tmp8)
{
  int i;
  for(i = 1;i <= Tmp8;i++)
    k(&g.x[ + -1],&g.x[ Tmp8 + -1]);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080613-1.c<|end_filename|>
/* PR middle-end/36520 */
/* Testcase by <NAME> <<EMAIL>> */

typedef __SIZE_TYPE__ size_t;
typedef unsigned short int sa_family_t;
struct cmsghdr   {
    size_t cmsg_len;
    __extension__ unsigned char __cmsg_data [];
};
typedef unsigned int uint32_t;
struct in6_addr   {
    union       {
        uint32_t u6_addr32[4];
    } in6_u;
};
struct sockaddr_in   {
    sa_family_t sin_family;
};
struct in6_pktinfo   {
    struct in6_addr ipi6_addr;
};
typedef union {
    struct sockaddr_in sin;
} sockaddr_any;
static sockaddr_any src_addr;

inline struct cmsghdr * cmsg_put(struct cmsghdr *cm, int type, void *data, size_t len)
{
    memcpy(((cm)->__cmsg_data), data, len);
}

int hop_sendmsg(int fd) {
    struct cmsghdr *cm;
    if (src_addr.sin.sin_family) {
        if (src_addr.sin.sin_family == 2) {
            struct in6_pktinfo info;
            cm = cmsg_put(cm, 50, &info, sizeof(info));
        }
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44941.c<|end_filename|>
struct S { };

extern void bar(struct S);

void foo (int i)
{
  bar (*(struct S *)&i);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46832.c<|end_filename|>
double pow(double x, double y);
void foo( double x ) {
   int j = (int) ((pow(x, 2)) < 0.0 ? (pow(x, 2))-0.5 : (pow(x, 2))+0.5);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/sra-1.c<|end_filename|>
/* Let gimple verifier check what SRA does to unions and single-field
   strucutres . */

struct sim_struct
{
  int x;
};

extern struct sim_struct get_x(void);

struct sim_struct foo (void)
{
  struct sim_struct simple;

  simple = get_x ();
  if (simple.x % 2)
    simple.x = 39;
  else
    simple.x -=8;

  return simple;
}

struct sim_cmplx
{
  _Complex double c;
};

extern struct sim_cmplx get_sc (void);

_Complex double foo_c (void)
{
  struct sim_cmplx simple;

  simple = get_sc ();
  if (__real__ simple.c > 200.3)
    __imag__ simple.c -= 2.4;

  return simple.c;
}


union sim_union
{
  int i;
  float d;
};

extern union sim_union get_y (void);

union sim_union bar (void)
{
  union sim_union simple;

  simple = get_y ();
  if (simple.d > 8.2)
    simple.i = 300;

  return simple;
}

extern int get_int (void);

int bar_i (void)
{
  union sim_union simple;

  simple = get_y ();
  if (simple.d > 8.2)
    simple.i = get_int ();

  return simple.i;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39394.c<|end_filename|>
/* PR tree-optimization/39394 */

char *p;
int x;

static inline void
f1 (int n)
{
  asm volatile ("" : "=m" (*(struct { char x[n]; } *) p));
}

static inline void
f2 (void)
{
  x ? f1 (1) : f1 (2);
}

static inline void
f3 (void)
{
  f2 ();
}

void
f4 (void)
{
  f3 ();
}


<|start_filename|>testdata/issue8.h<|end_filename|>
#define __signed signed

typedef __signed char __int8_t;

// for future tests
// (on the real code this producting another error)
// #if 5 > 1
// // ok?
// #endif

// remove this block -> works!
#if !defined(A) && (!defined(B) || defined(C))
// ok?
#endif

#define FOO (4)

// remove this block -> works!
#if (FOO) > 4
// ok?
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46461.c<|end_filename|>
/* PR tree-optimization/46461 */

void
foo (char *c)
{
  c[7] = 0xff;
  __builtin_memset (c + 8, 0xff, 8);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65680.c<|end_filename|>
/* PR middle-end/65680 */
/* { dg-do compile { target lp64 } } */

struct S
{
  int f : 1;
} a[100000000000000001][3];

void
foo (void)
{
  struct S b = { 0 };
  a[100000000000000000][0] = b;
}

void
bar (void)
{
  a[100000000000000000][0].f = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34138.c<|end_filename|>
extern void free (void *__ptr);
struct shparam
{
  char **p;
  int foo;
};
static struct shparam shellparam;
inline void freeparam (volatile struct shparam *param, char **ap)
{
  free ((void *) (*ap));
  free ((void *) (param->p));
}
void dotcmd (char **p)
{
  freeparam (&shellparam, p);
}
void evaltree (void)
{
  void (*evalfn) (char **);
  evalfn = dotcmd;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr61042.c<|end_filename|>
/* PR tree-optimization/61042 */

int a, b, c[1], d, f;

void
foo ()
{
  for (; b; b++)
    c[0] = c[f] && (d = a);
}


<|start_filename|>v2/testdata/bug/10.c<|end_filename|>
#include <assert.h>

#define __mingw_choose_expr __builtin_choose_expr

int main() {
	int i = __mingw_choose_expr(0, 2, 3);
	int j = __mingw_choose_expr(1, 2, 3);
	assert(i == 3);
	assert(j == 2);
}


<|start_filename|>v2/testdata/cpp-expand/006.c<|end_filename|>
#define foo2(a, b...) bar2(a, b)
foo2(1, 2, 3);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42703.c<|end_filename|>
__extension__ typedef unsigned long long int uint64_t;
typedef uint64_t ScmUInt64;
void swapb64(ScmUInt64 *loc) 
{
    union {
        ScmUInt64 l;
        unsigned char c[4];
    } dd;
    unsigned char t;
    dd.l = *loc;
    (t = dd.c[3], dd.c[3] = dd.c[4], dd.c[4] = t);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/strcpy-2.c<|end_filename|>
char wrkstr_un[270];
extern void
LoadUserAlph (char *s)
{
  s = &wrkstr_un[0];
  __builtin_strcpy (s, "");
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42730.c<|end_filename|>
union bzz
{
  unsigned *pa;
  void *pv;
};

void foo (void)
{
  union bzz u;
  void **x;
  void *y = 0;
  x = &u.pv;
  *x = y;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040303-2.c<|end_filename|>
void abort(void);
int x, y;
void init_xy(void);
void
test4(void)
{
  init_xy();
  _Bool iftemp0;
  int x1 = x;
  _Bool iftemp1;
  x1++;
  if (x1 != 3)
    {
      iftemp1 = 1;
      goto endfirstif;
    }
  iftemp1 = 0;
  endfirstif:
  iftemp0 = iftemp1;
  if (iftemp0)
    abort();
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr29201.c<|end_filename|>
/* { dg-do assemble { target ia64-*-* } } */
typedef int gint;
typedef gint gboolean;
typedef unsigned int guint;
typedef struct _MetaRectangle MetaRectangle;
struct _MetaRectangle
{
  int x;
  int y;
};
typedef struct _MetaDisplay MetaDisplay;
typedef struct _MetaFrame MetaFrame;
typedef struct _MetaWindow MetaWindow;
typedef struct
{
  int win_gravity;
}
XSizeHints;
typedef enum
{
  META_DEBUG_FOCUS = 1 << 0, META_DEBUG_WORKAREA = 1 << 1, META_DEBUG_STACK =
    1 << 6, META_DEBUG_WINDOW_OPS = 1 << 7, META_DEBUG_GEOMETRY =
    1 << 20, META_DEBUG_EDGE_RESISTANCE = 1 << 21
}
MetaStackLayer;
struct _MetaWindow
{
  MetaDisplay *display;
  MetaFrame *frame;
  guint user_has_move_resized:1;
  MetaRectangle user_rect;
  XSizeHints size_hints;
};
void meta_window_get_position (MetaWindow * window, int *x, int *y);
typedef struct _MetaFrameGeometry MetaFrameGeometry;
struct _MetaFrameGeometry
{
};
struct _MetaFrame
{
  MetaWindow *window;
  MetaRectangle rect;
  int child_x;
  int child_y;
};
typedef enum
{
  META_IS_CONFIGURE_REQUEST = 1 << 0, META_DO_GRAVITY_ADJUST =
    1 << 3, META_IS_RESIZE_ACTION = 1 << 4
}
MetaMoveResizeFlags;
adjust_for_gravity (MetaWindow * window, MetaFrameGeometry * fgeom,
		    gboolean coords_assume_border, int gravity,
		    MetaRectangle * rect)
{
  int ref_x, ref_y;
  int child_x, child_y;
  int frame_width, frame_height;
  switch (gravity)
    {
    case 1:
      ref_x = rect->x;
    }
  switch (gravity)
    {
    case 1:
      rect->y = ref_y + child_y;
    case 2:
      rect->x = ref_x - frame_width / 2 + child_x;
      break;
    case 3:
    case 5:
    case 6:
      rect->x = ref_x - frame_width + child_x;
    }
}
meta_window_move_resize_internal (MetaWindow * window,
				  MetaMoveResizeFlags flags,
				  int resize_gravity, int root_x_nw,
				  int root_y_nw, int w, int h)
{
  unsigned int mask;
  MetaFrameGeometry fgeom;
  gboolean need_resize_client = (0);
  gboolean is_configure_request;
  MetaRectangle new_rect;
  MetaRectangle old_rect;
  {
    adjust_for_gravity (window, window->frame ? &fgeom : ((void *) 0),
			is_configure_request, window->size_hints.win_gravity,
			&new_rect);
  }
  meta_window_constrain (window, window->frame ? &fgeom : ((void *) 0), flags,
			 resize_gravity, &old_rect, &new_rect);
  if (mask != 0)
    {
      {
	meta_topic_real (META_DEBUG_GEOMETRY,
			 need_resize_client ? "true" : "false");
      }
    }
  {
    window->user_has_move_resized = (!(0));
    meta_window_get_position (window, &window->user_rect.x,
			      &window->user_rect.y);
  }
}
void
meta_window_get_position (MetaWindow * window, int *x, int *y)
{
  if (window->frame)
    {
      *x = window->frame->rect.x + window->frame->child_x;
      *y = window->frame->rect.y + window->frame->child_y;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51077.c<|end_filename|>
/* PR middle-end/51077 */

struct S { unsigned char s, t[256]; };

void
foo (const struct S *x, struct S *y, int z)
{
  int i;
  for (i = 0; i < 8; i++)
    {
      const struct S *a = &x[i];
      __builtin___memcpy_chk (y->t, a->t, z, __builtin_object_size (y->t, 0));
      y = (struct S *) &y->t[z];
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr61848.c<|end_filename|>
/* { dg-do compile } */
/* { dg-require-effective-target named_sections } */
/* { dg-final { scan-assembler "mysection" } } */
extern char foo;
char foo __attribute__ ((__section__(".mysection")));


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23233-1.c<|end_filename|>
void foo (volatile long long *x)
{
  while (*x)
    {
      *x = 0;
      *((volatile char *) 0) = 0;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/struct-non-lval-2.c<|end_filename|>
/* Bug c/17855, using conditional expression for non-lvalue.  */
struct foo {char x, y, z[2];};
struct foo p, q; int r;
void bar(int baz)
{
  (r ? p : q).z[baz] = 1;
}


<|start_filename|>testdata/issue67.c<|end_filename|>
int foo; // bar1
char /*
baz3
*/
qux;

// abc7
// def8
int ghi;

/* abc11 */
/* def12
 */
int ghi;

/* abc16
 */
/* def18 */
int ghi;

/* abc21 */
// def22
int ghi;

// def25
/* abc26 */
int ghi;

// abc29

// def31
int ghi;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920428-4.c<|end_filename|>
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
x(a){struct{int p[a],i;}l;l.i;}


<|start_filename|>v2/testdata/cpp-expand/example-6.10.3.5-3.h<|end_filename|>
#define TABSIZE 100
int table[TABSIZE];


<|start_filename|>v2/headers/linux_386/usr/include/i386-linux-gnu/sys/sysmacros.h<|end_filename|>
/* Definitions of macros to access `dev_t' values.
   Copyright (C) 1996-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _SYS_SYSMACROS_H_OUTER

#ifndef __SYSMACROS_DEPRECATED_INCLUSION
# define _SYS_SYSMACROS_H_OUTER 1
#endif

/* If <sys/sysmacros.h> is included after <sys/types.h>, these macros
   will already be defined, and we need to redefine them without the
   deprecation warnings.  (If they are included in the opposite order,
   the outer #ifndef will suppress this entire file and the macros
   will be usable without warnings.)  */
#undef major
#undef minor
#undef makedev

/* This is the macro that must be defined to satisfy the misuse check
   in bits/sysmacros.h. */
#ifndef _SYS_SYSMACROS_H
#define _SYS_SYSMACROS_H 1

#include <features.h>
#include <bits/types.h>
#include <bits/sysmacros.h>

/* Caution: The text of this deprecation message is unquoted, so that
   #symbol can be substituted.  (It is converted to a string by
   __SYSMACROS_DM1.)  This means the message must be a sequence of
   complete pp-tokens; in particular, English contractions (it's,
   can't) cannot be used.

   The message has been manually word-wrapped to fit in 80 columns
   when output by GCC 5 and 6.  The first line is shorter to leave
   some room for the "foo.c:23: warning:" annotation.  */
#define __SYSMACROS_DM(symbol) __SYSMACROS_DM1 \
 (In the GNU C Library, #symbol is defined\n\
  by <sys/sysmacros.h>. For historical compatibility, it is\n\
  currently defined by <sys/types.h> as well, but we plan to\n\
  remove this soon.  To use #symbol, include <sys/sysmacros.h>\n\
  directly.  If you did not intend to use a system-defined macro\n\
  #symbol, you should undefine it after including <sys/types.h>.)

/* This macro is variadic because the deprecation message above
   contains commas.  */
#define __SYSMACROS_DM1(...) __glibc_macro_warning (#__VA_ARGS__)

#define __SYSMACROS_DECL_TEMPL(rtype, name, proto)			     \
  extern rtype gnu_dev_##name proto __THROW __attribute_const__;

#define __SYSMACROS_IMPL_TEMPL(rtype, name, proto)			     \
  __extension__ __extern_inline __attribute_const__ rtype		     \
  __NTH (gnu_dev_##name proto)

__BEGIN_DECLS __SYSMACROS_DECLARE_MAJOR(__SYSMACROS_DECL_TEMPL) __SYSMACROS_DECLARE_MINOR(__SYSMACROS_DECL_TEMPL) __SYSMACROS_DECLARE_MAKEDEV(__SYSMACROS_DECL_TEMPL)
#ifdef __USE_EXTERN_INLINES
__SYSMACROS_DEFINE_MAJOR(__SYSMACROS_IMPL_TEMPL) __SYSMACROS_DEFINE_MINOR(__SYSMACROS_IMPL_TEMPL) __SYSMACROS_DEFINE_MAKEDEV(__SYSMACROS_IMPL_TEMPL)
#endif
    __END_DECLS
#endif				/* _SYS_SYSMACROS_H */
#ifndef __SYSMACROS_NEED_IMPLEMENTATION
# undef __SYSMACROS_DECL_TEMPL
# undef __SYSMACROS_IMPL_TEMPL
# undef __SYSMACROS_DECLARE_MAJOR
# undef __SYSMACROS_DECLARE_MINOR
# undef __SYSMACROS_DECLARE_MAKEDEV
# undef __SYSMACROS_DEFINE_MAJOR
# undef __SYSMACROS_DEFINE_MINOR
# undef __SYSMACROS_DEFINE_MAKEDEV
#endif
#ifdef __SYSMACROS_DEPRECATED_INCLUSION
# define major(dev) __SYSMACROS_DM (major) gnu_dev_major (dev)
# define minor(dev) __SYSMACROS_DM (minor) gnu_dev_minor (dev)
# define makedev(maj, min) __SYSMACROS_DM (makedev) gnu_dev_makedev (maj, min)
#else
# define major(dev) gnu_dev_major (dev)
# define minor(dev) gnu_dev_minor (dev)
# define makedev(maj, min) gnu_dev_makedev (maj, min)
#endif
#endif				/* sys/sysmacros.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060419-1.c<|end_filename|>
/* This failed because if conversion didn't handle insv patterns properly.  */

union y
{
  int a;
  unsigned short b;
};

extern void bar (unsigned short u, union y v);

void
foo (int check)
{
  union y x;

  if (check != 0)
    x.b = 1;
  else
    x.b = 2;
  bar (x.b, x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52891-2.c<|end_filename|>
/* PR tree-optimizations/52891 */

#if __SIZEOF_INT__ > 2
struct __attribute__((packed)) S { unsigned s : 22; };
#else
struct __attribute__((packed)) S { unsigned s : 12; };
#endif
struct __attribute__((packed)) T { struct S t; } c;
int a, b, d;

void
foo (void)
{
  if (1 ? (!c.t.s & (d < 0)) < a : 0)
    b = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20121107-1.c<|end_filename|>
/* PR middle-end/55219 */
/* Testcase by <NAME> <<EMAIL>> */

int x, c, d, e, f, g, h, i;
double j;
const int k;
const enum { B } a;
void
fn1 (void)
{
  h = (g ? c : g ? f : g ? e : g ? i : g ? f : g ? e : g ? d : x)
      + (a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a ? : a
         ? j : a ? : 0 ? : a ? : a ? : a ? : a ? : a ? : a ? k : a ? : x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031203-2.c<|end_filename|>
/* Don't ICE on stupid user tricks.  */

int foo(int bar)
{
  return (&bar)[-1];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20001205-1.c<|end_filename|>
/* { dg-do assemble } */

static inline unsigned long rdfpcr(void)
{
        unsigned long tmp, ret;
        __asm__ ("" : "=r"(tmp), "=r"(ret));
        return ret;
}

static inline unsigned long
swcr_update_status(unsigned long swcr, unsigned long fpcr)
{
	swcr &= ~0x7e0000ul;
        swcr |= (fpcr >> 3) & 0x7e0000ul;
        return swcr;
}

unsigned long osf_getsysinfo(unsigned long flags)
{
        unsigned long w;
	w = swcr_update_status(flags, rdfpcr());
	return w;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21030.c<|end_filename|>
/* PR tree-optimization/21030
   VRP used to create invalid ranges where VR->MIN is greater than
   VR->MAX.  */

void
foo (int unit)
{
  int i;

  for (i = 0; unit; i++, unit--)
    {
      if (i >= 0)
	{
	  int j = i;
	  while (j)
	    j--;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20041005-1.c<|end_filename|>
/* This wrongly caused duplicate definitions of x in the assembler
   output.  */
/* Origin: <NAME> <<EMAIL>> */

static int x = 1;
void f (void) { extern int x; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071027-1.c<|end_filename|>
/* PR tree-optimization/33856 */
/* Testcase by <NAME> <<EMAIL>> */

typedef struct z_key
{
  int key;
  int mask;
} z_key;
typedef struct picture_size
{
  z_key key;
} picture_size;

void picture_size_new (picture_size *ps)
{
  z_key key;
  ps->key = key;
}

void picture_sizes_load_default (picture_size *ps)
{
  int i;
  for (i = 0; i < 5; ++i)
    picture_size_new (ps);
}


<|start_filename|>v2/testdata/cpp-expand/005.c<|end_filename|>
#define foo(a, ...) bar(a, __VA_ARGS__)
foo(1, 2, 3);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39999.c<|end_filename|>
void foo(void *);
void
MMAPGCD (int *A1, int *A2)
{
  int *t;

  do
    {
      t = A1;
      A1 = A2;
      A2 = t;
    }
  while (A2[-1]);

  foo (A1-1);
  foo (A2-1);
}



<|start_filename|>v2/testdata/bug/17.c<|end_filename|>
#include <assert.h>

int main() {
	int i = 42;
	switch (i) {
		int j = 314;
	case 41:
		assert(0);
		break;
	case 42:
		assert(i == 42);
		assert(j == 0); // Not guaranteed in C, only in the Go translation.
		break;
	case 43:
		assert(0);
		break;
	default:
		assert(0);
		break;
	}
	assert(i == 42);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920521-1.c<|end_filename|>
/* { dg-do compile } */

f(){asm("f":::"cc");}g(x,y){asm("g"::"%r"(x), "r"(y));}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr24930.c<|end_filename|>
/* PR 24930 */
extern int foo(int u) __attribute__((noinline));
int foo(int u) {return 0;}
int
main(int argc, char** argv)
{
  const char *buf = argv[1];
  
  unsigned int data = (((unsigned int) buf[0]) << 8) + (unsigned int) buf[1];
  if (data & 0x8000) {
    data &= 0x7fff ;
    data ^= 0x7fff ;
    data += 1 ;
    data *= -1 ;
  }
  return foo((int)data);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59102.c<|end_filename|>

int a, b, c, f;

struct S
{
  int f0;
} d, *e;

struct S
foo ()
{
  b = c = b || a == 0 || f % 11;
  return d;
}

int
main ()
{
  foo ();
  if (b);
  else
    {
      struct S **g = &e;
      *g = 0;
      *e = foo ();
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52773.c<|end_filename|>
/* pr52773.c */

struct s {
    short x;
    short _pad[2];
};

static short mat_a_x;

void transform(const struct s *src, struct s *dst, int n)
{
    int i;

    for (i = 0; i < n; ++i)
	dst[i].x = (src[i].x * mat_a_x) >> 6;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44030.c<|end_filename|>
typedef int int32_t;
typedef unsigned int uint32_t;
static uint32_t
safe_sub_func_uint32_t_u_u (uint32_t ui1, uint32_t ui2)
{
  return ui1 - ui2;
}

int32_t l_105[7];

int32_t g_4;
int32_t *g_54 = &g_4;
int32_t *
func (int32_t p_73, int32_t * p_74, int32_t p_75, int32_t * *p_76,
      int32_t * *p_77)
{
lbl_110:for (g_4 = 0; g_4; g_4 = 1)
    {
    }
  for (p_75 = -28; p_75; p_75 = safe_sub_func_uint32_t_u_u (p_75, 1))
    {
      if (g_4)
        goto lbl_110;
      *g_54 = 0;
    }
  return &l_105[5];
}



<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/20011008-3.c<|end_filename|>
extern void exit (int);
extern void abort (void);

typedef unsigned int u_int32_t;
typedef unsigned char u_int8_t;
typedef int int32_t;

typedef enum {
        TXNLIST_DELETE,
        TXNLIST_LSN,
        TXNLIST_TXNID,
        TXNLIST_PGNO
} db_txnlist_type;

struct __db_lsn; typedef struct __db_lsn DB_LSN;
struct __db_lsn {
        u_int32_t file;
        u_int32_t offset;
};
struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;

struct __db_txnlist {
        db_txnlist_type type;
        struct { struct __db_txnlist *le_next; struct __db_txnlist **le_prev; } links;
        union {
                struct {
                        u_int32_t txnid;
                        int32_t generation;
                        int32_t aborted;
                } t;
                struct {


                        u_int32_t flags;
                        int32_t fileid;
                        u_int32_t count;
                        char *fname;
                } d;
                struct {
                        int32_t ntxns;
                        int32_t maxn;
                        DB_LSN *lsn_array;
                } l;
                struct {
                        int32_t nentries;
                        int32_t maxentry;
                        char *fname;
                        int32_t fileid;
                        void *pgno_array;
                        u_int8_t uid[20];
                } p;
        } u;
};

int log_compare (const DB_LSN *a, const DB_LSN *b)
{
  return 1;
}


int
__db_txnlist_lsnadd(int val, DB_TXNLIST *elp, DB_LSN *lsnp, u_int32_t flags)
{
   int i;
 
   for (i = 0; i < (!(flags & (0x1)) ? 1 : elp->u.l.ntxns); i++)
     {
	int __j;
	DB_LSN __tmp;
	val++; 
	for (__j = 0; __j < elp->u.l.ntxns - 1; __j++)
	  if (log_compare(&elp->u.l.lsn_array[__j], &elp->u.l.lsn_array[__j + 1]) < 0)
	  {
	     __tmp = elp->u.l.lsn_array[__j];
	     elp->u.l.lsn_array[__j] = elp->u.l.lsn_array[__j + 1];
	     elp->u.l.lsn_array[__j + 1] = __tmp;
	  }
     }

   *lsnp = elp->u.l.lsn_array[0];
   return val;
}

#if defined (STACK_SIZE) && STACK_SIZE < 12350
#define VLEN (STACK_SIZE/10)
#else
#define VLEN 1235
#endif

int main (void)
{
  DB_TXNLIST el;
  DB_LSN lsn, lsn_a[VLEN];
  
  el.u.l.ntxns = VLEN-1;
  el.u.l.lsn_array = lsn_a;
  
  if (__db_txnlist_lsnadd (0, &el, &lsn, 0) != 1)
    abort ();
  
  if (__db_txnlist_lsnadd (0, &el, &lsn, 1) != VLEN-1)
    abort ();
  
  exit (0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23435.c<|end_filename|>
/* PR target/23435.

   On m68k-none-elf, this used to cause an unrecognized insn because
   zero_extendsidi2 accepted operands that are both memory even though
   such a pattern did not exist.  */

void
foo (unsigned long *a, unsigned long long *p)
{
  *p = *a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050721-1.c<|end_filename|>
/* Test for PR target/20191.  */

struct S1;

struct S1 {
  struct S1 *next;
  float x;
};

struct S2 {
  float y;
};

extern int func_ex1 (float);

extern int f;
extern float n;
extern struct S1 *bp1;
extern struct S2 *bp2;

inline float
func1 (int f, struct S2 *p2)
{
  float a;

  if (f)
    a = n >= p2->y ? n : p2->y;
  else
    a = n;
  return a;
}

inline float
func2 (struct S1 *p1, struct S2 *p2)
{
  float a, b;

  if(n <= 1.0)
    b = func1 (f, p2);
  else
    {
       a = n <= p1->x ? 0.0 : p1->x;
       b = a >= p2->y ? a : p2->y;
    }
  return(b);
}

void
func3 (struct S1 *p)
{
  float a = 0.0;

  if (f)
    a = func2 (bp1, bp2);
  if (func_ex1 (a))
    bp1 = p;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56745.c<|end_filename|>
/* PR rtl-optimization/56745 */

unsigned char a[6];

void
foo ()
{
  int i;
  for (i = 5; i >= 0; i++)
    {
      if (++a[i] != 0)
	break;
      ++a[i];
    }
}


<|start_filename|>v2/stringer.go<|end_filename|>
// Code generated by "stringer -output stringer.go -type=cond,Linkage,StorageDuration enum.go"; DO NOT EDIT.

package cc

import "strconv"

const _cond_name = "condZerocondIfOffcondIfOncondIfSkipmaxCond"

var _cond_index = [...]uint8{0, 8, 17, 25, 35, 42}

func (i cond) String() string {
	if i < 0 || i >= cond(len(_cond_index)-1) {
		return "cond(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _cond_name[_cond_index[i]:_cond_index[i+1]]
}

const _Linkage_name = "LinkageNoneLinkageExternalLinkageInternal"

var _Linkage_index = [...]uint8{0, 11, 26, 41}

func (i Linkage) String() string {
	if i < 0 || i >= Linkage(len(_Linkage_index)-1) {
		return "Linkage(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _Linkage_name[_Linkage_index[i]:_Linkage_index[i+1]]
}

const _StorageDuration_name = "StorageDurationAutomaticStorageDurationStatic"

var _StorageDuration_index = [...]uint8{0, 24, 45}

func (i StorageDuration) String() string {
	if i < 0 || i >= StorageDuration(len(_StorageDuration_index)-1) {
		return "StorageDuration(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _StorageDuration_name[_StorageDuration_index[i]:_StorageDuration_index[i+1]]
}


<|start_filename|>v2/headers/linux_arm/usr/include/netinet/in.h<|end_filename|>
/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef	_NETINET_IN_H
#define	_NETINET_IN_H	1

#include <features.h>
#include <stdint.h>
#include <sys/socket.h>
#include <bits/types.h>

__BEGIN_DECLS
/* Internet address.  */
typedef uint32_t in_addr_t;
struct in_addr {
	in_addr_t s_addr;
};

/* Get system-specific definitions.  */
#include <bits/in.h>

/* Standard well-defined IP protocols.  */
enum {
	IPPROTO_IP = 0,		/* Dummy protocol for TCP.  */
#define IPPROTO_IP		IPPROTO_IP
	IPPROTO_ICMP = 1,	/* Internet Control Message Protocol.  */
#define IPPROTO_ICMP		IPPROTO_ICMP
	IPPROTO_IGMP = 2,	/* Internet Group Management Protocol. */
#define IPPROTO_IGMP		IPPROTO_IGMP
	IPPROTO_IPIP = 4,	/* IPIP tunnels (older KA9Q tunnels use 94).  */
#define IPPROTO_IPIP		IPPROTO_IPIP
	IPPROTO_TCP = 6,	/* Transmission Control Protocol.  */
#define IPPROTO_TCP		IPPROTO_TCP
	IPPROTO_EGP = 8,	/* Exterior Gateway Protocol.  */
#define IPPROTO_EGP		IPPROTO_EGP
	IPPROTO_PUP = 12,	/* PUP protocol.  */
#define IPPROTO_PUP		IPPROTO_PUP
	IPPROTO_UDP = 17,	/* User Datagram Protocol.  */
#define IPPROTO_UDP		IPPROTO_UDP
	IPPROTO_IDP = 22,	/* XNS IDP protocol.  */
#define IPPROTO_IDP		IPPROTO_IDP
	IPPROTO_TP = 29,	/* SO Transport Protocol Class 4.  */
#define IPPROTO_TP		IPPROTO_TP
	IPPROTO_DCCP = 33,	/* Datagram Congestion Control Protocol.  */
#define IPPROTO_DCCP		IPPROTO_DCCP
	IPPROTO_IPV6 = 41,	/* IPv6 header.  */
#define IPPROTO_IPV6		IPPROTO_IPV6
	IPPROTO_RSVP = 46,	/* Reservation Protocol.  */
#define IPPROTO_RSVP		IPPROTO_RSVP
	IPPROTO_GRE = 47,	/* General Routing Encapsulation.  */
#define IPPROTO_GRE		IPPROTO_GRE
	IPPROTO_ESP = 50,	/* encapsulating security payload.  */
#define IPPROTO_ESP		IPPROTO_ESP
	IPPROTO_AH = 51,	/* authentication header.  */
#define IPPROTO_AH		IPPROTO_AH
	IPPROTO_MTP = 92,	/* Multicast Transport Protocol.  */
#define IPPROTO_MTP		IPPROTO_MTP
	IPPROTO_BEETPH = 94,	/* IP option pseudo header for BEET.  */
#define IPPROTO_BEETPH		IPPROTO_BEETPH
	IPPROTO_ENCAP = 98,	/* Encapsulation Header.  */
#define IPPROTO_ENCAP		IPPROTO_ENCAP
	IPPROTO_PIM = 103,	/* Protocol Independent Multicast.  */
#define IPPROTO_PIM		IPPROTO_PIM
	IPPROTO_COMP = 108,	/* Compression Header Protocol.  */
#define IPPROTO_COMP		IPPROTO_COMP
	IPPROTO_SCTP = 132,	/* Stream Control Transmission Protocol.  */
#define IPPROTO_SCTP		IPPROTO_SCTP
	IPPROTO_UDPLITE = 136,	/* UDP-Lite protocol.  */
#define IPPROTO_UDPLITE		IPPROTO_UDPLITE
	IPPROTO_MPLS = 137,	/* MPLS in IP.  */
#define IPPROTO_MPLS		IPPROTO_MPLS
	IPPROTO_RAW = 255,	/* Raw IP packets.  */
#define IPPROTO_RAW		IPPROTO_RAW
	IPPROTO_MAX
};

/* If __USE_KERNEL_IPV6_DEFS is 1 then the user has included the kernel
   network headers first and we should use those ABI-identical definitions
   instead of our own, otherwise 0.  */
#if !__USE_KERNEL_IPV6_DEFS
enum {
	IPPROTO_HOPOPTS = 0,	/* IPv6 Hop-by-Hop options.  */
#define IPPROTO_HOPOPTS		IPPROTO_HOPOPTS
	IPPROTO_ROUTING = 43,	/* IPv6 routing header.  */
#define IPPROTO_ROUTING		IPPROTO_ROUTING
	IPPROTO_FRAGMENT = 44,	/* IPv6 fragmentation header.  */
#define IPPROTO_FRAGMENT	IPPROTO_FRAGMENT
	IPPROTO_ICMPV6 = 58,	/* ICMPv6.  */
#define IPPROTO_ICMPV6		IPPROTO_ICMPV6
	IPPROTO_NONE = 59,	/* IPv6 no next header.  */
#define IPPROTO_NONE		IPPROTO_NONE
	IPPROTO_DSTOPTS = 60,	/* IPv6 destination options.  */
#define IPPROTO_DSTOPTS		IPPROTO_DSTOPTS
	IPPROTO_MH = 135	/* IPv6 mobility header.  */
#define IPPROTO_MH		IPPROTO_MH
};
#endif				/* !__USE_KERNEL_IPV6_DEFS */

/* Type to represent a port.  */
typedef uint16_t in_port_t;

/* Standard well-known ports.  */
enum {
	IPPORT_ECHO = 7,	/* Echo service.  */
	IPPORT_DISCARD = 9,	/* Discard transmissions service.  */
	IPPORT_SYSTAT = 11,	/* System status service.  */
	IPPORT_DAYTIME = 13,	/* Time of day service.  */
	IPPORT_NETSTAT = 15,	/* Network status service.  */
	IPPORT_FTP = 21,	/* File Transfer Protocol.  */
	IPPORT_TELNET = 23,	/* Telnet protocol.  */
	IPPORT_SMTP = 25,	/* Simple Mail Transfer Protocol.  */
	IPPORT_TIMESERVER = 37,	/* Timeserver service.  */
	IPPORT_NAMESERVER = 42,	/* Domain Name Service.  */
	IPPORT_WHOIS = 43,	/* Internet Whois service.  */
	IPPORT_MTP = 57,

	IPPORT_TFTP = 69,	/* Trivial File Transfer Protocol.  */
	IPPORT_RJE = 77,
	IPPORT_FINGER = 79,	/* Finger service.  */
	IPPORT_TTYLINK = 87,
	IPPORT_SUPDUP = 95,	/* SUPDUP protocol.  */

	IPPORT_EXECSERVER = 512,	/* execd service.  */
	IPPORT_LOGINSERVER = 513,	/* rlogind service.  */
	IPPORT_CMDSERVER = 514,
	IPPORT_EFSSERVER = 520,

	/* UDP ports.  */
	IPPORT_BIFFUDP = 512,
	IPPORT_WHOSERVER = 513,
	IPPORT_ROUTESERVER = 520,

	/* Ports less than this value are reserved for privileged processes.  */
	IPPORT_RESERVED = 1024,

	/* Ports greater this value are reserved for (non-privileged) servers.  */
	IPPORT_USERRESERVED = 5000
};

/* Definitions of the bits in an Internet address integer.

   On subnets, host and network parts are found according to
   the subnet mask, not these masks.  */

#define	IN_CLASSA(a)		((((in_addr_t)(a)) & 0x80000000) == 0)
#define	IN_CLASSA_NET		0xff000000
#define	IN_CLASSA_NSHIFT	24
#define	IN_CLASSA_HOST		(0xffffffff & ~IN_CLASSA_NET)
#define	IN_CLASSA_MAX		128

#define	IN_CLASSB(a)		((((in_addr_t)(a)) & 0xc0000000) == 0x80000000)
#define	IN_CLASSB_NET		0xffff0000
#define	IN_CLASSB_NSHIFT	16
#define	IN_CLASSB_HOST		(0xffffffff & ~IN_CLASSB_NET)
#define	IN_CLASSB_MAX		65536

#define	IN_CLASSC(a)		((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000)
#define	IN_CLASSC_NET		0xffffff00
#define	IN_CLASSC_NSHIFT	8
#define	IN_CLASSC_HOST		(0xffffffff & ~IN_CLASSC_NET)

#define	IN_CLASSD(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
#define	IN_MULTICAST(a)		IN_CLASSD(a)

#define	IN_EXPERIMENTAL(a)	((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
#define	IN_BADCLASS(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)

/* Address to accept any incoming messages.  */
#define	INADDR_ANY		((in_addr_t) 0x00000000)
/* Address to send to all hosts.  */
#define	INADDR_BROADCAST	((in_addr_t) 0xffffffff)
/* Address indicating an error return.  */
#define	INADDR_NONE		((in_addr_t) 0xffffffff)

/* Network number for local host loopback.  */
#define	IN_LOOPBACKNET		127
/* Address to loopback in software to local host.  */
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK	((in_addr_t) 0x7f000001)	/* Inet 127.0.0.1.  */
#endif

/* Defines for Multicast INADDR.  */
#define INADDR_UNSPEC_GROUP	((in_addr_t) 0xe0000000)	/* 192.168.127.12 */
#define INADDR_ALLHOSTS_GROUP	((in_addr_t) 0xe0000001)	/* 172.16.17.32 */
#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002)	/* 172.16.17.32 */
#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff)	/* 192.168.3.11 */

#if !__USE_KERNEL_IPV6_DEFS
/* IPv6 address */
struct in6_addr {
	union {
		uint8_t __u6_addr8[16];
#ifdef __USE_MISC
		uint16_t __u6_addr16[8];
		uint32_t __u6_addr32[4];
#endif
	} __in6_u;
#define s6_addr			__in6_u.__u6_addr8
#ifdef __USE_MISC
#define s6_addr16		__in6_u.__u6_addr16
#define s6_addr32		__in6_u.__u6_addr32
#endif
};
#endif				/* !__USE_KERNEL_IPV6_DEFS */

extern const struct in6_addr in6addr_any;	/* :: */
extern const struct in6_addr in6addr_loopback;	/* ::1 */
#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }

#define INET_ADDRSTRLEN 16
#define INET6_ADDRSTRLEN 46

/* Structure describing an Internet socket address.  */
struct sockaddr_in {
	__SOCKADDR_COMMON(sin_);
	in_port_t sin_port;	/* Port number.  */
	struct in_addr sin_addr;	/* Internet address.  */

	/* Pad to size of `struct sockaddr'.  */
	unsigned char sin_zero[sizeof(struct sockaddr) - __SOCKADDR_COMMON_SIZE - sizeof(in_port_t) - sizeof(struct in_addr)];
};

#if !__USE_KERNEL_IPV6_DEFS
/* Ditto, for IPv6.  */
struct sockaddr_in6 {
	__SOCKADDR_COMMON(sin6_);
	in_port_t sin6_port;	/* Transport layer port # */
	uint32_t sin6_flowinfo;	/* IPv6 flow information */
	struct in6_addr sin6_addr;	/* IPv6 address */
	uint32_t sin6_scope_id;	/* IPv6 scope-id */
};
#endif				/* !__USE_KERNEL_IPV6_DEFS */

#ifdef __USE_MISC
/* IPv4 multicast request.  */
struct ip_mreq {
	/* IP multicast address of group.  */
	struct in_addr imr_multiaddr;

	/* Local IP address of interface.  */
	struct in_addr imr_interface;
};

struct ip_mreq_source {
	/* IP multicast address of group.  */
	struct in_addr imr_multiaddr;

	/* IP address of source.  */
	struct in_addr imr_interface;

	/* IP address of interface.  */
	struct in_addr imr_sourceaddr;
};
#endif

#if !__USE_KERNEL_IPV6_DEFS
/* Likewise, for IPv6.  */
struct ipv6_mreq {
	/* IPv6 multicast address of group */
	struct in6_addr ipv6mr_multiaddr;

	/* local interface */
	unsigned int ipv6mr_interface;
};
#endif				/* !__USE_KERNEL_IPV6_DEFS */

#ifdef __USE_MISC
/* Multicast group request.  */
struct group_req {
	/* Interface index.  */
	uint32_t gr_interface;

	/* Group address.  */
	struct sockaddr_storage gr_group;
};

struct group_source_req {
	/* Interface index.  */
	uint32_t gsr_interface;

	/* Group address.  */
	struct sockaddr_storage gsr_group;

	/* Source address.  */
	struct sockaddr_storage gsr_source;
};

/* Full-state filter operations.  */
struct ip_msfilter {
	/* IP multicast address of group.  */
	struct in_addr imsf_multiaddr;

	/* Local IP address of interface.  */
	struct in_addr imsf_interface;

	/* Filter mode.  */
	uint32_t imsf_fmode;

	/* Number of source addresses.  */
	uint32_t imsf_numsrc;
	/* Source addresses.  */
	struct in_addr imsf_slist[1];
};

#define IP_MSFILTER_SIZE(numsrc) (sizeof (struct ip_msfilter) \
				  - sizeof (struct in_addr)		      \
				  + (numsrc) * sizeof (struct in_addr))

struct group_filter {
	/* Interface index.  */
	uint32_t gf_interface;

	/* Group address.  */
	struct sockaddr_storage gf_group;

	/* Filter mode.  */
	uint32_t gf_fmode;

	/* Number of source addresses.  */
	uint32_t gf_numsrc;
	/* Source addresses.  */
	struct sockaddr_storage gf_slist[1];
};

#define GROUP_FILTER_SIZE(numsrc) (sizeof (struct group_filter) \
				   - sizeof (struct sockaddr_storage)	      \
				   + ((numsrc)				      \
				      * sizeof (struct sockaddr_storage)))
#endif

/* Functions to convert between host and network byte order.

   Please note that these functions normally take `unsigned long int' or
   `unsigned short int' values as arguments and also return them.  But
   this was a short-sighted decision since on different systems the types
   may have different representations but the values are always the same.  */

extern uint32_t ntohl(uint32_t __netlong)
__THROW __attribute__ ((__const__));
extern uint16_t ntohs(uint16_t __netshort)
__THROW __attribute__ ((__const__));
extern uint32_t htonl(uint32_t __hostlong)
__THROW __attribute__ ((__const__));
extern uint16_t htons(uint16_t __hostshort)
__THROW __attribute__ ((__const__));

#include <endian.h>

/* Get machine dependent optimized versions of byte swapping functions.  */
#include <bits/byteswap.h>

#ifdef __OPTIMIZE__
/* We can optimize calls to the conversion functions.  Either nothing has
   to be done or we are using directly the byte-swapping functions which
   often can be inlined.  */
#if __BYTE_ORDER == __BIG_ENDIAN
/* The host byte order is the same as network byte order,
   so these functions are all just identity.  */
#define ntohl(x)	(x)
#define ntohs(x)	(x)
#define htonl(x)	(x)
#define htons(x)	(x)
#else
#if __BYTE_ORDER == __LITTLE_ENDIAN
#define ntohl(x)	__bswap_32 (x)
#define ntohs(x)	__bswap_16 (x)
#define htonl(x)	__bswap_32 (x)
#define htons(x)	__bswap_16 (x)
#endif
#endif
#endif

#ifdef __GNUC__
#define IN6_IS_ADDR_UNSPECIFIED(a) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      __a->s6_addr32[0] == 0						      \
      && __a->s6_addr32[1] == 0						      \
      && __a->s6_addr32[2] == 0						      \
      && __a->s6_addr32[3] == 0; }))

#define IN6_IS_ADDR_LOOPBACK(a) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      __a->s6_addr32[0] == 0						      \
      && __a->s6_addr32[1] == 0						      \
      && __a->s6_addr32[2] == 0						      \
      && __a->s6_addr32[3] == htonl (1); }))

#define IN6_IS_ADDR_LINKLOCAL(a) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      (__a->s6_addr32[0] & htonl (0xffc00000)) == htonl (0xfe800000); }))

#define IN6_IS_ADDR_SITELOCAL(a) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      (__a->s6_addr32[0] & htonl (0xffc00000)) == htonl (0xfec00000); }))

#define IN6_IS_ADDR_V4MAPPED(a) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      __a->s6_addr32[0] == 0						      \
      && __a->s6_addr32[1] == 0						      \
      && __a->s6_addr32[2] == htonl (0xffff); }))

#define IN6_IS_ADDR_V4COMPAT(a) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      __a->s6_addr32[0] == 0						      \
      && __a->s6_addr32[1] == 0						      \
      && __a->s6_addr32[2] == 0						      \
      && ntohl (__a->s6_addr32[3]) > 1; }))

#define IN6_ARE_ADDR_EQUAL(a,b) \
  (__extension__							      \
   ({ const struct in6_addr *__a = (const struct in6_addr *) (a);	      \
      const struct in6_addr *__b = (const struct in6_addr *) (b);	      \
      __a->s6_addr32[0] == __b->s6_addr32[0]				      \
      && __a->s6_addr32[1] == __b->s6_addr32[1]				      \
      && __a->s6_addr32[2] == __b->s6_addr32[2]				      \
      && __a->s6_addr32[3] == __b->s6_addr32[3]; }))
#else
#define IN6_IS_ADDR_UNSPECIFIED(a) \
	(((const uint32_t *) (a))[0] == 0				      \
	 && ((const uint32_t *) (a))[1] == 0				      \
	 && ((const uint32_t *) (a))[2] == 0				      \
	 && ((const uint32_t *) (a))[3] == 0)

#define IN6_IS_ADDR_LOOPBACK(a) \
	(((const uint32_t *) (a))[0] == 0				      \
	 && ((const uint32_t *) (a))[1] == 0				      \
	 && ((const uint32_t *) (a))[2] == 0				      \
	 && ((const uint32_t *) (a))[3] == htonl (1))

#define IN6_IS_ADDR_LINKLOCAL(a) \
	((((const uint32_t *) (a))[0] & htonl (0xffc00000))		      \
	 == htonl (0xfe800000))

#define IN6_IS_ADDR_SITELOCAL(a) \
	((((const uint32_t *) (a))[0] & htonl (0xffc00000))		      \
	 == htonl (0xfec00000))

#define IN6_IS_ADDR_V4MAPPED(a) \
	((((const uint32_t *) (a))[0] == 0)				      \
	 && (((const uint32_t *) (a))[1] == 0)				      \
	 && (((const uint32_t *) (a))[2] == htonl (0xffff)))

#define IN6_IS_ADDR_V4COMPAT(a) \
	((((const uint32_t *) (a))[0] == 0)				      \
	 && (((const uint32_t *) (a))[1] == 0)				      \
	 && (((const uint32_t *) (a))[2] == 0)				      \
	 && (ntohl (((const uint32_t *) (a))[3]) > 1))

#define IN6_ARE_ADDR_EQUAL(a,b) \
	((((const uint32_t *) (a))[0] == ((const uint32_t *) (b))[0])	      \
	 && (((const uint32_t *) (a))[1] == ((const uint32_t *) (b))[1])      \
	 && (((const uint32_t *) (a))[2] == ((const uint32_t *) (b))[2])      \
	 && (((const uint32_t *) (a))[3] == ((const uint32_t *) (b))[3]))
#endif

#define IN6_IS_ADDR_MULTICAST(a) (((const uint8_t *) (a))[0] == 0xff)

#ifdef __USE_MISC
/* Bind socket to a privileged IP port.  */
extern int bindresvport(int __sockfd, struct sockaddr_in *__sock_in) __THROW;

/* The IPv6 version of this function.  */
extern int bindresvport6(int __sockfd, struct sockaddr_in6 *__sock_in) __THROW;
#endif

#define IN6_IS_ADDR_MC_NODELOCAL(a) \
	(IN6_IS_ADDR_MULTICAST(a)					      \
	 && ((((const uint8_t *) (a))[1] & 0xf) == 0x1))

#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
	(IN6_IS_ADDR_MULTICAST(a)					      \
	 && ((((const uint8_t *) (a))[1] & 0xf) == 0x2))

#define IN6_IS_ADDR_MC_SITELOCAL(a) \
	(IN6_IS_ADDR_MULTICAST(a)					      \
	 && ((((const uint8_t *) (a))[1] & 0xf) == 0x5))

#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
	(IN6_IS_ADDR_MULTICAST(a)					      \
	 && ((((const uint8_t *) (a))[1] & 0xf) == 0x8))

#define IN6_IS_ADDR_MC_GLOBAL(a) \
	(IN6_IS_ADDR_MULTICAST(a)					      \
	 && ((((const uint8_t *) (a))[1] & 0xf) == 0xe))

#ifdef __USE_GNU
struct cmsghdr;			/* Forward declaration.  */

#if !__USE_KERNEL_IPV6_DEFS
/* IPv6 packet information.  */
struct in6_pktinfo {
	struct in6_addr ipi6_addr;	/* src/dst IPv6 address */
	unsigned int ipi6_ifindex;	/* send/recv interface index */
};

/* IPv6 MTU information.  */
struct ip6_mtuinfo {
	struct sockaddr_in6 ip6m_addr;	/* dst address including zone ID */
	uint32_t ip6m_mtu;	/* path MTU in host byte order */
};
#endif				/* !__USE_KERNEL_IPV6_DEFS */

/* Obsolete hop-by-hop and Destination Options Processing (RFC 2292).  */
extern int inet6_option_space(int __nbytes)
__THROW __attribute_deprecated__;
extern int inet6_option_init(void *__bp, struct cmsghdr **__cmsgp, int __type)
__THROW __attribute_deprecated__;
extern int inet6_option_append(struct cmsghdr *__cmsg, const uint8_t * __typep, int __multx, int __plusy)
__THROW __attribute_deprecated__;
extern uint8_t *inet6_option_alloc(struct cmsghdr *__cmsg, int __datalen, int __multx, int __plusy)
__THROW __attribute_deprecated__;
extern int inet6_option_next(const struct cmsghdr *__cmsg, uint8_t ** __tptrp)
__THROW __attribute_deprecated__;
extern int inet6_option_find(const struct cmsghdr *__cmsg, uint8_t ** __tptrp, int __type)
__THROW __attribute_deprecated__;

/* Hop-by-Hop and Destination Options Processing (RFC 3542).  */
extern int inet6_opt_init(void *__extbuf, socklen_t __extlen) __THROW;
extern int inet6_opt_append(void *__extbuf, socklen_t __extlen, int __offset, uint8_t __type, socklen_t __len, uint8_t __align, void **__databufp) __THROW;
extern int inet6_opt_finish(void *__extbuf, socklen_t __extlen, int __offset) __THROW;
extern int inet6_opt_set_val(void *__databuf, int __offset, void *__val, socklen_t __vallen) __THROW;
extern int inet6_opt_next(void *__extbuf, socklen_t __extlen, int __offset, uint8_t * __typep, socklen_t * __lenp, void **__databufp) __THROW;
extern int inet6_opt_find(void *__extbuf, socklen_t __extlen, int __offset, uint8_t __type, socklen_t * __lenp, void **__databufp) __THROW;
extern int inet6_opt_get_val(void *__databuf, int __offset, void *__val, socklen_t __vallen) __THROW;

/* Routing Header Option (RFC 3542).  */
extern socklen_t inet6_rth_space(int __type, int __segments) __THROW;
extern void *inet6_rth_init(void *__bp, socklen_t __bp_len, int __type, int __segments) __THROW;
extern int inet6_rth_add(void *__bp, const struct in6_addr *__addr) __THROW;
extern int inet6_rth_reverse(const void *__in, void *__out) __THROW;
extern int inet6_rth_segments(const void *__bp) __THROW;
extern struct in6_addr *inet6_rth_getaddr(const void *__bp, int __index) __THROW;

/* Multicast source filter support.  */

/* Get IPv4 source filter.  */
extern int getipv4sourcefilter(int __s, struct in_addr __interface_addr, struct in_addr __group, uint32_t * __fmode, uint32_t * __numsrc, struct in_addr *__slist) __THROW;

/* Set IPv4 source filter.  */
extern int setipv4sourcefilter(int __s, struct in_addr __interface_addr, struct in_addr __group, uint32_t __fmode, uint32_t __numsrc, const struct in_addr *__slist) __THROW;

/* Get source filter.  */
extern int getsourcefilter(int __s, uint32_t __interface_addr, const struct sockaddr *__group, socklen_t __grouplen, uint32_t * __fmode, uint32_t * __numsrc, struct sockaddr_storage *__slist) __THROW;

/* Set source filter.  */
extern int setsourcefilter(int __s, uint32_t __interface_addr, const struct sockaddr *__group, socklen_t __grouplen, uint32_t __fmode, uint32_t __numsrc, const struct sockaddr_storage *__slist) __THROW;
#endif				/* use GNU */

__END_DECLS
#endif				/* netinet/in.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33617.c<|end_filename|>
/* { dg-options "-w -Wno-psabi" { target { i?86-*-* x86_64-*-* } } } */

typedef float V8SF __attribute__ ((vector_size (32)));
void bar (V8SF);
void
foo (float x)
{
  bar ((V8SF) { x, x, x, x, x, x, x, x });
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070522-1.c<|end_filename|>
/* { dg-options "-Wno-psabi" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */

/* This was PR 31606, we were trying to use TImode to expand the
   struct copy in SRA but TImode is not support on ia32. */

struct Collision {
   int edge;
   int triangle;
  float _M_instance[3] __attribute__((__aligned__));
};
void  get_collisions(struct Collision a) {
  struct Collision b = a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040202-1.c<|end_filename|>
/* PR target/13789 */
/* Failed on SPARC due to a bug in store_expr.  */

void *foo (void *c)
{
  void *a = __builtin_extract_return_addr (c);
  return a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38359.c<|end_filename|>
unsigned _ov_64_seek_lap (_Bool x1, _Bool x2, _Bool x3)
{
  unsigned ltmp_3978_7__PHI_TEMPORARY;
  signed ltmp_4011_7;

  if (!x1 || !x2)
    while (1) ;

  if (x3)
    ltmp_3978_7__PHI_TEMPORARY = 0xffffff7e;
  else
    ltmp_3978_7__PHI_TEMPORARY = 1;

  ltmp_4011_7 = -1;
  return ltmp_4011_7 >> ltmp_3978_7__PHI_TEMPORARY;
}



<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/921208-2.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
#define STACK_REQUIREMENT (100000 * 4 + 1024)
#if defined (STACK_SIZE) && STACK_SIZE < STACK_REQUIREMENT
main () { exit (0); }
#else

g(){}

f()
{
  int i;
  float a[100000];

  for (i = 0; i < 1; i++)
    {
      g(1.0, 1.0 + i / 2.0 * 3.0);
      g(2.0, 1.0 + i / 2.0 * 3.0);
    }
}

main ()
{
  f();
  exit(0);
}

#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26255.c<|end_filename|>
typedef short int16_t;

int round_sample(int *sum);

#define MULS(ra, rb) ((ra) * (rb))

#define SUM8(sum, op, w, p) \
{ \
  sum op MULS((w)[0 * 64], p[0 * 64]); \
  sum op MULS((w)[1 * 64], p[1 * 64]); \
  sum op MULS((w)[2 * 64], p[2 * 64]); \
  sum op MULS((w)[3 * 64], p[3 * 64]); \
  sum op MULS((w)[4 * 64], p[4 * 64]); \
  sum op MULS((w)[5 * 64], p[5 * 64]); \
  sum op MULS((w)[6 * 64], p[6 * 64]); \
  sum op MULS((w)[7 * 64], p[7 * 64]); \
}

void foo(int *dither_state, int *samples)
{
  int16_t *synth_buf;
  const int16_t *w, *p;
  int sum;

  sum = *dither_state;
  p = synth_buf + 16;
  SUM8(sum, +=, w, p);
  p = synth_buf + 48;
  SUM8(sum, -=, w + 32, p);
  *samples = round_sample(&sum);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/fix-trunc-mem-1.c<|end_filename|>
/* PR target/14201  */
/* Excercise float -> integer in memory patterns.  */
/* { dg-add-options ieee } */

void f1 (float v,  int *p)			{ *p = v; }
void f2 (float v,  unsigned int*p)		{ *p = v; }
void f3 (float v,  long long *p)		{ *p = v; }
void f4 (float v,  unsigned long long *p)	{ *p = v; }
void f5 (double v, int *p)			{ *p = v; }
void f6 (double v, unsigned int *p)		{ *p = v; }
void f7 (double v, long long *p)		{ *p = v; }
void f8 (double v, unsigned long long *p)	{ *p = v; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20011106-2.c<|end_filename|>
/* Test the type of a component of a conditional expression between
   two structures is correct.  */
/* Origin: <NAME> <<EMAIL>>.  */

struct s { char c; } a, b;
int c;
char x[sizeof ((c ? a : b).c) == 1 ? 1 : -1];


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070529-1.c<|end_filename|>
/* ICE in chrec_fold_plus_poly_poly. */

typedef unsigned short __u16;
typedef unsigned int u32;
typedef __u16 __be16;
struct hfs_extent {
 __be16 count;
};
int hfs_free_fork( int type)
{
 u32 total_blocks, blocks, start;
 struct hfs_extent *extent;
 int res, i;
 for (i = 0; i < 3; extent++, i++)
  blocks += __fswab16((( __u16)(__be16)(extent[i].count)));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920415-1.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

extern void abort (void);
extern void exit (int);

f ()
{
  __label__ l;
  void *x()
    {
      return &&l;
    }
  goto *x ();
  abort ();
  return;
 l:
  exit (0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031208-1.c<|end_filename|>
extern int foo(int, ...);
int bar(void) {
  long double l = 1.2345E6;
  foo(0, l);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70916.c<|end_filename|>
/* PR tree-optimization/70916 */

int a, b, c, d, i, k;
int static *e = &b, *j;
int **f;
int static ***g = &f;
int *h;
void
fn1 ()
{
  for (;;)
    {
      int l[1] = { };
      int m = (__UINTPTR_TYPE__) l;
      for (; d; d--)
	{
	  int ****n;
	  int *****o = &n;
	  i = a & 7 ? : a;
	  *e = (((*o = &g) != (int ****) g) < h[c], 0) || k;
	  if (*e)
	    {
	      **n = &j;
	      *e = (__UINTPTR_TYPE__) h;
	    }
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23476.c<|end_filename|>
int h(int);
int t;
static inline int f(const int i)
{
  int tt = i;
  _Bool a = i < t;
  if (a)
    return h(t);
  return 9;
}
int g(void)
{
  return f(0x7FFFFFFF);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031023-4.c<|end_filename|>
#define ASIZE 0x80000000UL
#include "20031023-1.c"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44988.c<|end_filename|>
struct S
{
  int i;
};

extern void bar (struct S);

void
foo (void)
{
  int i = 0;
  bar (*(struct S *) &i);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43164.c<|end_filename|>
struct S0
{
  unsigned char f0;
  int:0;
};

struct S1
{
  struct S0 f0;
};

struct S1 func_34 (void)
{
  struct S1 l_221 = { { 1 } };
  return l_221;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/strncpy-chk.c<|end_filename|>
/* Copyright (C) 2004, 2005  Free Software Foundation.

   Ensure builtin __strncpy_chk performs correctly.  */

extern void abort (void);
typedef __SIZE_TYPE__ size_t;
extern size_t strlen(const char *);
extern void *memcpy (void *, const void *, size_t);
extern char *strncpy (char *, const char *, size_t);
extern int memcmp (const void *, const void *, size_t);
extern int strcmp (const char *, const char *);
extern int strncmp (const char *, const char *, size_t);
extern void *memset (void *, int, size_t);

#include "chk.h"

const char s1[] = "123";
char p[32] = "";
char * volatile s2 = "defg";  /* prevent constant propagation to happen when whole program assumptions are made.  */
char * volatile s3 = "FGH";  /* prevent constant propagation to happen when whole program assumptions are made.  */
char *s4;
volatile size_t l1 = 1;  /* prevent constant propagation to happen when whole program assumptions are made.  */
int i;

void
__attribute__((noinline))
test1 (void)
{
  const char *const src = "hello world";
  const char *src2;
  char dst[64], *dst2;

  strncpy_disallowed = 1;
  chk_calls = 0;

  memset (dst, 0, sizeof (dst));
  if (strncpy (dst, src, 4) != dst || strncmp (dst, src, 4))
    abort();

  memset (dst, 0, sizeof (dst));
  if (strncpy (dst+16, src, 4) != dst+16 || strncmp (dst+16, src, 4))
    abort();

  memset (dst, 0, sizeof (dst));
  if (strncpy (dst+32, src+5, 4) != dst+32 || strncmp (dst+32, src+5, 4))
    abort();

  memset (dst, 0, sizeof (dst));
  dst2 = dst;
  if (strncpy (++dst2, src+5, 4) != dst+1 || strncmp (dst2, src+5, 4)
      || dst2 != dst+1)
    abort();

  memset (dst, 0, sizeof (dst));
  if (strncpy (dst, src, 0) != dst || strcmp (dst, ""))
    abort();
  
  memset (dst, 0, sizeof (dst));
  dst2 = dst; src2 = src;
  if (strncpy (++dst2, ++src2, 0) != dst+1 || strcmp (dst2, "")
      || dst2 != dst+1 || src2 != src+1)
    abort();

  memset (dst, 0, sizeof (dst));
  dst2 = dst; src2 = src;
  if (strncpy (++dst2+5, ++src2+5, 0) != dst+6 || strcmp (dst2+5, "")
      || dst2 != dst+1 || src2 != src+1)
    abort();

  memset (dst, 0, sizeof (dst));
  if (strncpy (dst, src, 12) != dst || strcmp (dst, src))
    abort();

  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
  memset (dst, 0, sizeof (dst));
  if (__builtin_strncpy (dst, src, 4) != dst || strncmp (dst, src, 4))
    abort();

  memset (dst, 0, sizeof (dst));
  if (strncpy (dst, i++ ? "xfoo" + 1 : "bar", 4) != dst
      || strcmp (dst, "bar")
      || i != 1)
    abort ();

  if (chk_calls)
    abort ();
  strncpy_disallowed = 0;
}

void
__attribute__((noinline))
test2 (void)
{
  chk_calls = 0;
  /* No runtime checking should be done here, both destination
     and length are unknown.  */
  strncpy (s4, "abcd", l1 + 1);
  if (chk_calls)
    abort ();
}

/* Test whether compile time checking is done where it should
   and so is runtime object size checking.  */
void
__attribute__((noinline))
test3 (void)
{
  struct A { char buf1[10]; char buf2[10]; } a;
  char *r = l1 == 1 ? &a.buf1[5] : &a.buf2[4];
  char buf3[20];
  int i;
  const char *l;
  size_t l2;

  /* The following calls should do runtime checking
     - source length is not known, but destination is.  */
  chk_calls = 0;
  strncpy (a.buf1 + 2, s3 + 3, l1);
  strncpy (r, s3 + 2, l1 + 2);
  r = l1 == 1 ? __builtin_alloca (4) : &a.buf2[7];
  strncpy (r, s2 + 2, l1 + 2);
  strncpy (r + 2, s3 + 3, l1);
  r = buf3;
  for (i = 0; i < 4; ++i)
    {
      if (i == l1 - 1)
	r = &a.buf1[1];
      else if (i == l1)
	r = &a.buf2[7];
      else if (i == l1 + 1)
	r = &buf3[5];
      else if (i == l1 + 2)
	r = &a.buf1[9];
    }
  strncpy (r, s2 + 4, l1);
  if (chk_calls != 5)
    abort ();

  /* Following have known destination and known length,
     so if optimizing certainly shouldn't result in the checking
     variants.  */
  chk_calls = 0;
  strncpy (a.buf1 + 2, "", 3);
  strncpy (a.buf1 + 2, "", 0);
  strncpy (r, "a", 1);
  strncpy (r, "a", 3);
  r = l1 == 1 ? __builtin_alloca (4) : &a.buf2[7];
  strncpy (r, s1 + 1, 3);
  strncpy (r, s1 + 1, 2);
  r = buf3;
  l = "abc";
  l2 = 4;
  for (i = 0; i < 4; ++i)
    {
      if (i == l1 - 1)
	r = &a.buf1[1], l = "e", l2 = 2;
      else if (i == l1)
	r = &a.buf2[7], l = "gh", l2 = 3;
      else if (i == l1 + 1)
	r = &buf3[5], l = "jkl", l2 = 4;
      else if (i == l1 + 2)
	r = &a.buf1[9], l = "", l2 = 1;
    }
  strncpy (r, "", 1);
  /* Here, strlen (l) + 1 is known to be at most 4 and
     __builtin_object_size (&buf3[16], 0) is 4, so this doesn't need
     runtime checking.  */
  strncpy (&buf3[16], l, l2);
  strncpy (&buf3[15], "abc", l2);
  strncpy (&buf3[10], "fghij", l2);
  if (chk_calls)
    abort ();
  chk_calls = 0;
}

/* Test whether runtime and/or compile time checking catches
   buffer overflows.  */
void
__attribute__((noinline))
test4 (void)
{
  struct A { char buf1[10]; char buf2[10]; } a;
  char buf3[20];

  chk_fail_allowed = 1;
  /* Runtime checks.  */
  if (__builtin_setjmp (chk_fail_buf) == 0)
    {
      strncpy (&a.buf2[9], s2 + 4, l1 + 1);
      abort ();
    }
  if (__builtin_setjmp (chk_fail_buf) == 0)
    {
      strncpy (&a.buf2[7], s3, l1 + 4);
      abort ();
    }
  /* This should be detectable at compile time already.  */
  if (__builtin_setjmp (chk_fail_buf) == 0)
    {
      strncpy (&buf3[19], "abc", 2);
      abort ();
    }
  if (__builtin_setjmp (chk_fail_buf) == 0)
    {
      strncpy (&buf3[18], "", 3);
      abort ();
    }
  chk_fail_allowed = 0;
}

void
main_test (void)
{
#ifndef __OPTIMIZE__
  /* Object size checking is only intended for -O[s123].  */
  return;
#endif
  __asm ("" : "=r" (s2) : "0" (s2));
  __asm ("" : "=r" (s3) : "0" (s3));
  __asm ("" : "=r" (l1) : "0" (l1));
  test1 ();
  s4 = p;
  test2 ();
  test3 ();
  test4 ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42164.c<|end_filename|>
typedef struct
{
  unsigned long long pte;
} pte_t;
pte_t mk_swap_pte (unsigned long offset)
{
  pte_t pte;
  pte.pte = (offset << 40);
  return pte;
}
int pte_file (pte_t pte)
{
  return pte.pte & (1 << 4);
}
typedef struct
{
  unsigned long val;
} swp_entry_t;
pte_t swp_entry_to_pte (swp_entry_t entry)
{
  swp_entry_t arch_entry;
  arch_entry = (swp_entry_t){mk_swap_pte (swp_offset (entry)).pte};
  __BUG_ON ((unsigned long) pte_file ((pte_t) {arch_entry.val}));
  return (pte_t) {arch_entry.val};
}


<|start_filename|>v2/headers/linux_arm/usr/include/arm-linux-gnueabihf/bits/byteswap.h<|end_filename|>
/* Macros to swap the order of bytes in integer values.
   Copyright (C) 1997-2016 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
#error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
#endif

#ifndef _BITS_BYTESWAP_H
#define _BITS_BYTESWAP_H 1

#include <features.h>
#include <bits/types.h>

/* Swap bytes in 16 bit value.  */
#define __bswap_constant_16(x) \
	((unsigned short int)((((x) >> 8) & 0xffu) | (((x) & 0xffu) << 8)))

/* Get __bswap_16.  */
#include <bits/byteswap-16.h>

/* Swap bytes in 32 bit value.  */
#define __bswap_constant_32(x) \
     ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >>  8) |	      \
      (((x) & 0x0000ff00u) <<  8) | (((x) & 0x000000ffu) << 24))

#ifdef __GNUC__
#if __GNUC_PREREQ (4, 3)
static __inline unsigned int __bswap_32(unsigned int __bsx)
{
	return __builtin_bswap32(__bsx);
}
#else
#define __bswap_32(x) \
  (__extension__							      \
   ({ unsigned int __bsx = (x); __bswap_constant_32 (__bsx); }))
#endif
#else
static __inline unsigned int __bswap_32(unsigned int __bsx)
{
	return __bswap_constant_32(__bsx);
}
#endif

/* Swap bytes in 64 bit value.  */
#if __GNUC_PREREQ (2, 0)
#define __bswap_constant_64(x) \
     (__extension__ ((((x) & 0xff00000000000000ull) >> 56)		      \
		     | (((x) & 0x00ff000000000000ull) >> 40)		      \
		     | (((x) & 0x0000ff0000000000ull) >> 24)		      \
		     | (((x) & 0x000000ff00000000ull) >> 8)		      \
		     | (((x) & 0x00000000ff000000ull) << 8)		      \
		     | (((x) & 0x0000000000ff0000ull) << 24)		      \
		     | (((x) & 0x000000000000ff00ull) << 40)		      \
		     | (((x) & 0x00000000000000ffull) << 56)))

#if __GNUC_PREREQ (4, 3)
static __inline __uint64_t __bswap_64(__uint64_t __bsx)
{
	return __builtin_bswap64(__bsx);
}
#else
#define __bswap_64(x) \
     (__extension__							      \
      ({ union { __extension__ __uint64_t __ll;				      \
		 unsigned int __l[2]; } __w, __r;			      \
	 if (__builtin_constant_p (x))					      \
	   __r.__ll = __bswap_constant_64 (x);				      \
	 else								      \
	   {								      \
	     __w.__ll = (x);						      \
	     __r.__l[0] = __bswap_32 (__w.__l[1]);			      \
	     __r.__l[1] = __bswap_32 (__w.__l[0]);			      \
	   }								      \
	 __r.__ll; }))
#endif
#else
#define __bswap_constant_64(x) \
     ((((x) & 0xff00000000000000ull) >> 56)				      \
      | (((x) & 0x00ff000000000000ull) >> 40)				      \
      | (((x) & 0x0000ff0000000000ull) >> 24)				      \
      | (((x) & 0x000000ff00000000ull) >> 8)				      \
      | (((x) & 0x00000000ff000000ull) << 8)				      \
      | (((x) & 0x0000000000ff0000ull) << 24)				      \
      | (((x) & 0x000000000000ff00ull) << 40)				      \
      | (((x) & 0x00000000000000ffull) << 56))

static __inline __uint64_t __bswap_64(__uint64_t __bsx)
{
	return __bswap_constant_64(__bsx);
}
#endif

#endif				/* _BITS_BYTESWAP_H */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr18299-1.c<|end_filename|>
/* We used to ICE in gimple-lower because we
   would produce __t (VAR_DECL) as a statement in the
   instruction stream which is not valid. */

static inline int f(int i)
{
  const int __t = (__t);
}
int g(void)
{
  return f(0);
}


<|start_filename|>v2/testdata/bug/12.c<|end_filename|>
#include <assert.h>

void foo(int *v[]) {
	assert(*v[0] == 42 || *v[0] == 314);
}

void bar(int v[]) {
	assert(v[0] == 42 || v[0] == 314);
}

int a[] = {42};

int main() {
	int *p = a;
	foo(&p);
	bar(a);
	int b[] = {314};
	p = b;
	foo(&p);
	bar(b);
}


<|start_filename|>v2/headers/linux_arm/usr/include/fts.h<|end_filename|>
/* File tree traversal functions declarations.
   Copyright (C) 1994-2016 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 * Copyright (c) 1989, 1993
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)fts.h	8.3 (Berkeley) 8/14/94
 */

#ifndef	_FTS_H
#define	_FTS_H 1

#include <features.h>
#include <sys/types.h>

typedef struct {
	struct _ftsent *fts_cur;	/* current node */
	struct _ftsent *fts_child;	/* linked list of children */
	struct _ftsent **fts_array;	/* sort array */
	dev_t fts_dev;		/* starting device # */
	char *fts_path;		/* path for this descent */
	int fts_rfd;		/* fd for root */
	int fts_pathlen;	/* sizeof(path) */
	int fts_nitems;		/* elements in the sort array */
	int (*fts_compar) (const void *, const void *);	/* compare fn */

#define	FTS_COMFOLLOW	0x0001	/* follow command line symlinks */
#define	FTS_LOGICAL	0x0002	/* logical walk */
#define	FTS_NOCHDIR	0x0004	/* don't change directories */
#define	FTS_NOSTAT	0x0008	/* don't get stat info */
#define	FTS_PHYSICAL	0x0010	/* physical walk */
#define	FTS_SEEDOT	0x0020	/* return dot and dot-dot */
#define	FTS_XDEV	0x0040	/* don't cross devices */
#define FTS_WHITEOUT	0x0080	/* return whiteout information */
#define	FTS_OPTIONMASK	0x00ff	/* valid user option mask */

#define	FTS_NAMEONLY	0x0100	/* (private) child names only */
#define	FTS_STOP	0x0200	/* (private) unrecoverable error */
	int fts_options;	/* fts_open options, global flags */
} FTS;

#ifdef __USE_LARGEFILE64
typedef struct {
	struct _ftsent64 *fts_cur;	/* current node */
	struct _ftsent64 *fts_child;	/* linked list of children */
	struct _ftsent64 **fts_array;	/* sort array */
	dev_t fts_dev;		/* starting device # */
	char *fts_path;		/* path for this descent */
	int fts_rfd;		/* fd for root */
	int fts_pathlen;	/* sizeof(path) */
	int fts_nitems;		/* elements in the sort array */
	int (*fts_compar) (const void *, const void *);	/* compare fn */
	int fts_options;	/* fts_open options, global flags */
} FTS64;
#endif

typedef struct _ftsent {
	struct _ftsent *fts_cycle;	/* cycle node */
	struct _ftsent *fts_parent;	/* parent directory */
	struct _ftsent *fts_link;	/* next file in directory */
	long fts_number;	/* local numeric value */
	void *fts_pointer;	/* local address value */
	char *fts_accpath;	/* access path */
	char *fts_path;		/* root path */
	int fts_errno;		/* errno for this node */
	int fts_symfd;		/* fd for symlink */
	u_short fts_pathlen;	/* strlen(fts_path) */
	u_short fts_namelen;	/* strlen(fts_name) */

	ino_t fts_ino;		/* inode */
	dev_t fts_dev;		/* device */
	nlink_t fts_nlink;	/* link count */

#define	FTS_ROOTPARENTLEVEL	-1
#define	FTS_ROOTLEVEL		 0
	short fts_level;	/* depth (-1 to N) */

#define	FTS_D		 1	/* preorder directory */
#define	FTS_DC		 2	/* directory that causes cycles */
#define	FTS_DEFAULT	 3	/* none of the above */
#define	FTS_DNR		 4	/* unreadable directory */
#define	FTS_DOT		 5	/* dot or dot-dot */
#define	FTS_DP		 6	/* postorder directory */
#define	FTS_ERR		 7	/* error; errno is set */
#define	FTS_F		 8	/* regular file */
#define	FTS_INIT	 9	/* initialized only */
#define	FTS_NS		10	/* stat(2) failed */
#define	FTS_NSOK	11	/* no stat(2) requested */
#define	FTS_SL		12	/* symbolic link */
#define	FTS_SLNONE	13	/* symbolic link without target */
#define FTS_W		14	/* whiteout object */
	u_short fts_info;	/* user flags for FTSENT structure */

#define	FTS_DONTCHDIR	 0x01	/* don't chdir .. to the parent */
#define	FTS_SYMFOLLOW	 0x02	/* followed a symlink to get here */
	u_short fts_flags;	/* private flags for FTSENT structure */

#define	FTS_AGAIN	 1	/* read node again */
#define	FTS_FOLLOW	 2	/* follow symbolic link */
#define	FTS_NOINSTR	 3	/* no instructions */
#define	FTS_SKIP	 4	/* discard node */
	u_short fts_instr;	/* fts_set() instructions */

	struct stat *fts_statp;	/* stat(2) information */
	char fts_name[1];	/* file name */
} FTSENT;

#ifdef __USE_LARGEFILE64
typedef struct _ftsent64 {
	struct _ftsent64 *fts_cycle;	/* cycle node */
	struct _ftsent64 *fts_parent;	/* parent directory */
	struct _ftsent64 *fts_link;	/* next file in directory */
	long fts_number;	/* local numeric value */
	void *fts_pointer;	/* local address value */
	char *fts_accpath;	/* access path */
	char *fts_path;		/* root path */
	int fts_errno;		/* errno for this node */
	int fts_symfd;		/* fd for symlink */
	u_short fts_pathlen;	/* strlen(fts_path) */
	u_short fts_namelen;	/* strlen(fts_name) */

	ino64_t fts_ino;	/* inode */
	dev_t fts_dev;		/* device */
	nlink_t fts_nlink;	/* link count */

	short fts_level;	/* depth (-1 to N) */

	u_short fts_info;	/* user flags for FTSENT structure */

	u_short fts_flags;	/* private flags for FTSENT structure */

	u_short fts_instr;	/* fts_set() instructions */

	struct stat64 *fts_statp;	/* stat(2) information */
	char fts_name[1];	/* file name */
} FTSENT64;
#endif

__BEGIN_DECLS
#ifndef __USE_FILE_OFFSET64
    FTSENT * fts_children(FTS *, int);
int fts_close(FTS *);
FTS *fts_open(char *const *, int, int (*)(const FTSENT **, const FTSENT **));
FTSENT *fts_read(FTS *);
int fts_set(FTS *, FTSENT *, int) __THROW;
#else
#ifdef __REDIRECT
    FTSENT * __REDIRECT(fts_children, (FTS *, int), fts64_children);
int __REDIRECT(fts_close, (FTS *), fts64_close);
FTS *__REDIRECT(fts_open, (char *const *, int, int (*)(const FTSENT **, const FTSENT **)), fts64_open);
FTSENT *__REDIRECT(fts_read, (FTS *), fts64_read);
int __REDIRECT_NTH(fts_set, (FTS *, FTSENT *, int), fts64_set);
#else
#define fts_children fts64_children
#define fts_close fts64_close
#define fts_open fts64_open
#define fts_read fts64_read
#define fts_set fts64_set
#endif
#endif
#ifdef __USE_LARGEFILE64
    FTSENT64 * fts64_children(FTS64 *, int);
int fts64_close(FTS64 *);
FTS64 *fts64_open(char *const *, int, int (*)(const FTSENT64 **, const FTSENT64 **));
FTSENT64 *fts64_read(FTS64 *);
int fts64_set(FTS64 *, FTSENT64 *, int) __THROW;
#endif
__END_DECLS
#endif				/* fts.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58343.c<|end_filename|>
int a;

int main ()
{
  int b = a; 

  for (a = 1; a > 0; a--)
    ;

 lbl:
  if (b && a)
    goto lbl; 

  return 0;
}


<|start_filename|>v2/testdata/cpp-expand/mustfail/example-6.10.3.5-9a.h<|end_filename|>
#define OBJ_LIKE (1-1)
#define OBJ_LIKE (0) // different token sequence


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41282.c<|end_filename|>
struct S
{
  unsigned int iu;
};

union U
{
  struct S s;
  signed int is;
};

extern signed int bar ();

struct S foo (void)
{
  union U u;

  u.is = bar ();
  return u.s;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37664.c<|end_filename|>
/* PR tree-optimization/37664 */

int v;

int
foo ()
{
  int a = 0x8899A862;
  int b = 0x8E * a;
  int c = (b % b);
  if (v > (4294967295U >> c))
    return v;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090328-1.c<|end_filename|>
union loc {  unsigned reg; signed offset; };
void __frame_state_for (volatile char *state_in, int x)
{
  /* We should move all the loads out of this loop. Right now, we only
     move one.  It takes two insertions because we insert a cast.  */
    union loc fs;
    int reg;
    for (;;)     {
        switch (x)  {
	    case 0:
		*state_in = fs.reg;
	    case 1:
		*state_in = fs.offset;
	}
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40797.c<|end_filename|>
typedef struct str { short x, y;} S;

static short
bar (short ch, short sl, short sr, short tl, short tr)
{
  return 0;
}

void
foo (short ch, S *pi, short nc, S *po)
{
  short clo, chi, lo, hi;

  po->x = bar (ch, clo, chi, pi[lo].x, pi[hi].x);
  po->y = bar (ch, clo, chi, pi[lo].y, pi[hi].y);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58164.c<|end_filename|>
/* PR tree-optimization/58164 */
/* { dg-require-effective-target indirect_jumps } */

int
foo (void)
{
  int x = 0;
  goto *&x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26725.c<|end_filename|>
struct { unsigned int num; } *numptr;
void notice (int);
void doit (unsigned int *);

void
rewrite_finalize_block (int x)
{
  unsigned int *tmp;
  while (tmp = (numptr ? &numptr->num : 0), (tmp ? *tmp : 0) > 0)
    {
      tmp = (numptr ? &numptr->num : 0);
      (void) (*tmp ? 0 : notice (x));
      doit (tmp);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr62312.c<|end_filename|>
/* PR target/62312  */

typedef struct { unsigned int arg[100]; } *FunctionCallInfo;
typedef struct { int day; int month; } Interval;
void* palloc (unsigned int);
int bar (void);
void baz (void);

void
interval_pl (FunctionCallInfo fcinfo)
{
  Interval *span1 = ((Interval *) ((char *) ((fcinfo->arg[0]))));
  Interval *span2 = ((Interval *) ((char *) ((fcinfo->arg[1]))));
  Interval *result = (Interval *) palloc (sizeof (Interval));

  if ((((span1->month) < 0) == ((span2->month) < 0))
      && !(((result->month) < 0) == ((span1->month) < 0)))
    do {
      if (bar ())
	baz ();
    } while(0);
  result->day = span1->day + span2->day;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20021108-1.c<|end_filename|>
/* { dg-require-effective-target label_values } */

int
main()
{
l1:
  return &&l1-&&l2;
l2:;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39983.c<|end_filename|>
typedef struct {
    int *p;
} *A;

extern const int a[1];
extern const int b[1];

void foo()
{
  A x;
  A y;
  static const int * const c[] = { b };

  x->p = (int*)c[0];
  y->p = (int*)a;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20010525-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
static int kind_varread(char *str)
{
  if (0 == memcmp("%_#",               str, 3))  return 2;
  /* NOTREACHED */
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44891.c<|end_filename|>
struct S
{
  float f;
  long l;
};

extern int gi;
extern float gf;

long foo (long p)
{
  struct S s;
  float *pf;

  s.l = p;

  pf = &s.f;

  pf++;
  pf--;

  gf = *pf + 3.3;
  gi = *((int *)pf) + 2;

  return s.l + 6;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120913-1.c<|end_filename|>
struct list_head {
  struct list_head *next, *prev;
};
struct dm_exception {
  struct list_head hash_list;
  unsigned long long old_chunk;
  unsigned long long new_chunk;
};
struct dm_exception *dm_lookup_exception(struct list_head *table, unsigned long long chunk) {
  struct list_head *slot;
  struct dm_exception *e;
  slot = &table[0];
  e = (struct dm_exception *)slot->next;
  for (; &e->hash_list != (slot);)
    if (chunk <= (e->new_chunk>>56))
      return e;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20081203-1.c<|end_filename|>
/* PR rtl-optimization/38281 */
/* Reporter: <NAME> <<EMAIL>> */
/* Testcase by <NAME> <<EMAIL>> */

inline unsigned short
foo (unsigned short x, unsigned short y)
{
  if (y == 0)
    return x;
  return x / y;
}

unsigned short a, b, c;

extern int baz (int, int);

void
bar (void)
{
  int d = 0x3D75D162;
  a = foo (b > d, baz (0, 1));
  for (c = 0; c; c = 1)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040709-1.c<|end_filename|>
/* PR target/16364 */
union foo {
  long double ld;
} bar;

double
sub (union foo baz)
{
  return baz.ld / 2;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070531-2.c<|end_filename|>
int f(void)
{
  int *a = 0;
  for(a = 0; a < (int*)32767;a++)
   ;
}


<|start_filename|>v2/headers/linux_arm/usr/include/_G_config.h<|end_filename|>
/* This file is needed by libio to define various configuration parameters.
   These are always the same in the GNU C library.  */

#ifndef _G_config_h
#define _G_config_h 1

/* Define types for libio in terms of the standard internal type names.  */

#include <bits/types.h>
#define __need_size_t
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
#define __need_wchar_t
#endif
#define __need_NULL
#include <stddef.h>
#define __need_mbstate_t
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
#define __need_wint_t
#endif
#include <wchar.h>
typedef struct {
	__off_t __pos;
	__mbstate_t __state;
} _G_fpos_t;
typedef struct {
	__off64_t __pos;
	__mbstate_t __state;
} _G_fpos64_t;
#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
#include <gconv.h>
typedef union {
	struct __gconv_info __cd;
	struct {
		struct __gconv_info __cd;
		struct __gconv_step_data __data;
	} __combined;
} _G_iconv_t;
#endif

/* These library features are always available in the GNU C library.  */
#define _G_va_list __gnuc_va_list

#define _G_HAVE_MMAP 1
#define _G_HAVE_MREMAP 1

#define _G_IO_IO_FILE_VERSION 0x20001

/* This is defined by <bits/stat.h> if `st_blksize' exists.  */
#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)

#define _G_BUFSIZ 8192

#endif				/* _G_config.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040824-1.c<|end_filename|>
/* This caused an out-of-range address on the MIPS port.  */
void foo (char *x) { __builtin_prefetch (x + 0x8000); }


<|start_filename|>v2/testdata/bug/1.c<|end_filename|>
#include <assert.h>
extern void abort (void);

void f1(int *ip) {
	*ip = 24;
}

void t1() {
  	int i = 42;
	assert(i == 42);
	f1(&i);
	assert(i == 24);
}

void t2() {
	int i = 42;
	int *ip = &i;
	assert(i == 42);
	assert(*ip == 42);
	assert(ip == &i);
	f1(ip);
	assert(i == 24);
}

void f3(int **ipp) {
	**ipp = 24;
}

void t3() {
	int i = 42;
	int *ip = &i;
	assert(i == 42);
	assert(*ip == 42);
	assert(ip == &i);
	f3(&ip);
	assert(i == 24);
}

void f4(int **ipp) {
}

void t4() {
	int i = 42;
	int *ip = &i;
	assert(i == 42);
	assert(*ip == 42);
	assert(ip == &i);
	f4(&ip);
}

int main (void) {
	t1();
	t2();
	t3();
	t4();
	return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53409.c<|end_filename|>
/* PR tree-optimization/53409 */

int a, c, d, e, f;
int b[0];

int
main ()
{
  if (f)
    e = 0;
  int g = d;
  for (c = 0; c <= 1; c++)
    {
      for (a = 0; a <= 1; a = (char) a + 1)
	b[c] = g;
      a = 0;
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37976.c<|end_filename|>
void percent_x(int ch, char *p, char* ok_chars)
{
  char *cp = ch == 'a' ? p : "";
  for (;*(cp += __builtin_strspn (cp, ok_chars));)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48929.c<|end_filename|>
/*{ dg-options "-findirect-inlining" }*/
void bar ();

static void
f4 (double di, double d, double *dd)
{
  if (d == 0 && di == 0)
    *dd = 0;
  bar ();
}

static inline void
f3 (int i, double d)
{
  double di = i;
  double dd;
  f4 (di, d, &dd);
}

static inline void
f2 (int i, double d)
{
  if (d < 0)
    f3 (i, d);
}

void
f1 ()
{
  f2 (0, 1);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37913.c<|end_filename|>
/* PR middle-end/37913 */

void foo (void) __attribute__ ((noreturn));

static int __attribute__ ((noreturn))
bar (void)
{
  foo ();
}

void
baz (void)
{
  int i = bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050202-1.c<|end_filename|>
/* From PR 19578.  */
extern void foo (void) __attribute__((noreturn));

void
g (void)
{
  void (*f) (void) = foo;
  f ();
  f ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr30338.c<|end_filename|>
/* We used to do folding with mismatched types which caused us to
   infinitely loop in comparison foldings.  */

extern char *grub_scratch_mem;
int testload_func (char *arg, int flags)
{
  int i;
  for (i = 0; i < 0x10ac0; i++)
    if (*((unsigned char *) ((0x200000 + i + (int) grub_scratch_mem)))
        != *((unsigned char *) ((0x300000 + i + (int) grub_scratch_mem))))
      return 0;
  return 1;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070520-1.c<|end_filename|>
typedef unsigned char uint8_t;
extern uint8_t ff_cropTbl[256 + 2 * 1024];

void ff_pred8x8_plane_c(uint8_t *src, int stride){
  int j, k;
  int a;
  uint8_t *cm = ff_cropTbl + 1024;
  const uint8_t * const src0 = src+3-stride;
  const uint8_t *src1 = src+4*stride-1;
  const uint8_t *src2 = src1-2*stride;
  int H = src0[1] - src0[-1];
  int V = src1[0] - src2[ 0];
  for(k=2; k<=4; ++k) {
    src1 += stride; src2 -= stride;
    H += k*(src0[k] - src0[-k]);
    V += k*(src1[0] - src2[ 0]);
  }
  H = ( 17*H+16 ) >> 5;
  V = ( 17*V+16 ) >> 5;

  a = 16*(src1[0] + src2[8]+1) - 3*(V+H);
  for(j=8; j>0; --j) {
    int b = a;
    a += V;
    src[0] = cm[ (b ) >> 5 ];
    src[1] = cm[ (b+ H) >> 5 ];
    src[2] = cm[ (b+2*H) >> 5 ];
    src[3] = cm[ (b+3*H) >> 5 ];
    src[4] = cm[ (b+4*H) >> 5 ];
    src[5] = cm[ (b+5*H) >> 5 ];
    src[6] = cm[ (b+6*H) >> 5 ];
    src[7] = cm[ (b+7*H) >> 5 ];
    src += stride;
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/vector-4.c<|end_filename|>
/* { dg-do compile } */
/* { dg-options "-mavx" { target { i?86-*-* x86_64-*-* } } } */

/* Make sure that vector of size 8 of signed char works. This used to crash with AVX on x86
   as we would produce try to extract the chars inside the vector mode using the vector mode of V8SI
   which was wrong. */
__attribute__ ((vector_size (8))) signed char v4, v5, v6;
void
two (void)
{
 v4 = v5 + v6;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34113.c<|end_filename|>
struct sockaddr_in { int sin_addr; };
static void ConvertAddr (struct sockaddr_in *saddr, void **addr)
{
  *addr = (void *) &saddr->sin_addr;
}
unsigned char EnableLocalHost (struct sockaddr_in *ifa_addr)
{
  unsigned char * addr;
  ConvertAddr(ifa_addr, (void **)&addr);
  return addr[0];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030530-3.c<|end_filename|>
struct tree_decl
{
  unsigned in_system_header_flag:1;
};
union tree_node
{
  struct tree_decl decl;
};
typedef union tree_node *tree;
static int
redeclaration_error_message (olddecl)
     tree olddecl;
{
  if (({olddecl;})->decl.in_system_header_flag)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr28776-2.c<|end_filename|>
typedef struct RangeCoder
{
    unsigned char one_state[256];
} RangeCoder;
static inline void put_rac(RangeCoder *c, unsigned char* const state)
{
  *state= c->one_state[*state];
}
typedef struct PlaneContext{
    unsigned (*state)[32];
} PlaneContext;
static inline void put_symbol(RangeCoder *c, unsigned char *state)
{
    int i;
    const int e;
    put_rac(c, state);
    for(i=e-1; i>=0; i--)
      put_rac(c, state+22+i);
}
int encode_line(void)
{
    PlaneContext * const p;
    RangeCoder * const c;
    int a;
    put_symbol(c, p->state[a]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39673-1.c<|end_filename|>
unsigned long f1();
int f2();

int store_aff_word(int x) {
  return (int) (x ? f1() : f2());
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/switch-1.c<|end_filename|>
/* PR middle-end/26557.  */
const int struct_test[1] = {1};
void g();
void f() {
  switch(struct_test[0]) {
    case 1: g();
  }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32780.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
extern void dont_optimize_away(size_t);

void crashGcc(char*a)
{
        size_t b=(size_t)a - ((size_t)a & 1);
        size_t c=(size_t)a - (b & (size_t)a);
        dont_optimize_away(b+c);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43679.c<|end_filename|>
unsigned g_5;
int g_7;
int g_23[2];
int *g_29 = &g_23[0];
int **g_59;
unsigned long g_186;

int foo (int, int);
int bar (int);

void func_37 (long p_38)
{
  int *l_39 = &g_7;
  *l_39 = (*l_39
             ||
             (foo
              (((*g_29 != *l_39, ((bar (g_59 != &l_39), 0), 0))),
               0)));
  foo (*l_39, 0);
  int **l_256 = &l_39;
  {
    for (0; g_186; 0)
      {
        *l_256 = *l_256;
        if (g_5)
          goto lbl_270;
        *l_39 &= 0;
      }
  }
lbl_270:
  ;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070605-1.c<|end_filename|>
quantize_fs_dither (unsigned width, short *errorptr, int dir)
{
  short bpreverr;
  unsigned col;
  for (col = width; col > 0; col--) 
    errorptr += dir;
  errorptr[0] = (short) bpreverr;
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060609-1.c<|end_filename|>
/* This test used to ICE on IA64.  */
int __strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
  register long unsigned int __result = 0;
  while (__s[__result] == __accept1 || __s[__result] == __accept2)
  return __result;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70190.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */


int
fn1 ()
{
  static char a[] = "foo";
  static void *b[] = { &&l1, &&l2 };
  goto *(b[1]);
 l1: goto *(a[0]);
 l2: return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030305-1.c<|end_filename|>
/* PR c/9799 */
/* Verify that GCC doesn't crash on excess elements
   in initializer for a flexible array member.  */

typedef struct {
    int aaa;
} s1_t;

typedef struct {
    int bbb;
    s1_t s1_array[];
} s2_t;

static s2_t s2_array[]= {
    { 1, 4 },	/* { dg-error "(initialization of flexible array member|near)" } */
    { 2, 5 },	/* { dg-error "(initialization of flexible array member|near)" } */
    { 3, 6 }	/* { dg-error "(initialization of flexible array member|near)" } */
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54925.c<|end_filename|>
/* PR target/54925  */
extern int bar;
extern void foo (int *);
static unsigned char *
nr_memcpy (unsigned char *, unsigned char *, unsigned short);

void 
baz (char *buf, unsigned short len)
{
  unsigned char data[10];
  if (len == 0)
    return;
  nr_memcpy (data, (unsigned char *) buf, len);
  foo (&bar);
}

static unsigned char *
nr_memcpy (unsigned char * to, unsigned char * from, unsigned short len)
{
  unsigned char *p = to;
  while (len > 0)
    {
      len--;
      *to++ = *from++;
    }
  return p;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55851.c<|end_filename|>
/* PR middle-end/55851 */
/* { dg-require-effective-target alloca } */

enum { A = 1UL, B = -1UL } var = A;
void foo (char *);

void
test (void)
{
  char vla[1][var];
  vla[0][0] = 1;
  foo (&vla[0][0]);
}


<|start_filename|>testdata/issue82.c<|end_filename|>
#define a(b, c, ...) d(c)
a(1, 2, 3)
#undef a
#define a(b, c...) d(c)
a(1, 2, 3)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/simd-4.c<|end_filename|>
typedef float floatvect2 __attribute__((vector_size (16)));

typedef union
{
    floatvect2 vector;
    float f[2];
}resfloatvect2;

void tempf(floatvect2 *x, floatvect2 *y)
{
        floatvect2 temp= *x;
        floatvect2 temp1=*y;
        resfloatvect2 temp2;
        *x=temp+temp1;
}


<|start_filename|>v2/testdata/bug/14.c<|end_filename|>
#include <assert.h>

typedef struct _SYSTEM_INFO {
	union {
		int dwOemId;
		struct {
			int wProcessorArchitecture;
			int wReserved;
		};
	};
	int dwPageSize;
	int lpMinimumApplicationAddress;
	int lpMaximumApplicationAddress;
	int dwActiveProcessorMask;
	int dwNumberOfProcessors;
	int dwProcessorType;
	int dwAllocationGranularity;
	int wProcessorLevel;
	int wProcessorRevision;
} SYSTEM_INFO;

int main() {
	SYSTEM_INFO sysinfo;
	sysinfo.dwPageSize = 1;
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/complex-6.c<|end_filename|>
/* { dg-skip-if "requires io" { freestanding } { "*" } { "" } }  */

/* This test tests complex conjugate and passing/returning of
   complex parameter.  */

#include <stdlib.h>
#include <stdio.h>

int err;

#define TEST(TYPE, FUNC)					\
__complex__ TYPE						\
ctest_ ## FUNC (__complex__ TYPE x)				\
{								\
  __complex__ TYPE res;						\
								\
  res = ~x;							\
								\
  return res;							\
}								\
								\
void								\
test_ ## FUNC (void)						\
{								\
  __complex__ TYPE res, x;					\
								\
  x = 1.0 + 2.0i;						\
								\
  res = ctest_ ## FUNC (x);					\
								\
  if (res != 1.0 - 2.0i)					\
    {								\
      printf ("test_" #FUNC " failed\n");			\
      ++err;							\
    }								\
}


TEST(float, float)
TEST(double, double)
TEST(long double, long_double)
TEST(int, int)
TEST(long int, long_int)

int
main (void)
{

  err = 0;

  test_float ();
  test_double ();
  test_long_double ();
  test_int ();
  test_long_int ();

  if (err != 0)
    abort ();

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050217-1.c<|end_filename|>
/* PR c++/20023 */

void f (void);
typedef __SIZE_TYPE__ size_t;
void g (void *a)
{
  size_t b = (size_t) a;
  switch (b)
  {
    case 1:
    f ();
    break;
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr19080.c<|end_filename|>
typedef union { int ioport; volatile char *maddr; } bus_space_handle_t;
struct scb { unsigned short *hscb; };
struct ahd_softc
{
  int tags[2];
  bus_space_handle_t bshs[2];
  int dst_mode;
  int src_mode;
  int flags;
};
void outb(int, int);

int foo_inb(struct ahd_softc*);
int foo_int_int (int, int);
int ahd_inb(struct ahd_softc*);
int ahd_scb_active_in_fifo (void);

void ahd_flush_qoutfifo (struct ahd_softc *ahd, struct scb *scb)
{
  int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;
  int bb, p;

  if (ahd->src_mode == 1)
    { int src, dst, *a = &src, *b = &dst; *a = 1, *b = 1;}
  foo_int_int (ahd->src_mode, ahd->dst_mode);
  p = 1;
  if (ahd->src_mode == 2 && ahd->dst_mode == p)
    {
      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
        outb (1, ahd->bshs[0].ioport );
      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
        outb (1, ahd->bshs[0].ioport );
    }
  ahd->src_mode = 1;
  ahd->dst_mode = 2;
  while ((ahd_inb (ahd) & 0x01) != 0)
  {
    p = 1;
    if (ahd->src_mode == 2 && ahd->dst_mode == p)
      {
        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
          outb (1, ahd->bshs[0].ioport );
        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
          outb (1, ahd->bshs[0].ioport );
      }
    ahd->src_mode = 1;
    ahd->dst_mode = 2;
    if (ahd_scb_active_in_fifo () == 0)
      continue;
    p = 1;
    if (ahd->src_mode == 2 && ahd->dst_mode == p)
      {
        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
          outb (1, ahd->bshs[0].ioport );
        if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
          outb (1, ahd->bshs[0].ioport );
      }
    ahd->src_mode = 1;
    ahd->dst_mode = 2;
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if ((ahd->flags & 1) != 0)
      foo_inb (ahd);
    if ((ahd->flags & 1) != 0)
      foo_inb (ahd);
    if ((ahd->flags & 1) != 0)
      foo_inb (ahd);
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if ((ahd->flags & 1) != 0)
      foo_inb (ahd);
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    bb = (*(scb->hscb));
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    bb = (*(scb->hscb));
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
    if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
      outb (1, ahd->bshs[0].ioport );
  }
  if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
    outb (1, ahd->bshs[0].ioport );
  if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
    outb (1, ahd->bshs[0].ioport );
  p = 1;
  if (ahd->src_mode == 2 && ahd->dst_mode == p)
    {
      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
        outb (1, ahd->bshs[0].ioport );
      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
        outb (1, ahd->bshs[0].ioport );
    }
  ahd->src_mode = 1;
  ahd->dst_mode = 2;
  if (ahd->src_mode == 2 && ahd->dst_mode == dst)
    {
      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
        outb (1, ahd->bshs[0].ioport );
      if (ahd->tags[0] == 1) *(ahd->bshs[0].maddr);
        outb (1, ahd->bshs[0].ioport );
    }
  ahd->src_mode = 1;
  ahd->dst_mode = 2;
  ahd->flags |= 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031112-1.c<|end_filename|>
extern __inline int __finite (double __value) { return 0; }
extern __typeof (__finite) __finite __asm__ ("" "__GI___finite");


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51247.c<|end_filename|>
/* PR tree-optimization/51247 */

struct S { int s : 1; };
int a;

void
foo (int x, int y)
{
  struct S s;
  s.s = !!y;
  while (1)
    {
      unsigned l = 94967295;
      a = x || (s.s &= l);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20110131-1.c<|end_filename|>
/* PR rtl-optimization/44031 */
/* Testcase by <NAME> <<EMAIL>> */

typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;

static uint32_t
safe_add_func_uint32_t_u_u (uint32_t ui1, uint32_t ui2)
{
  return ui1 + ui2;
}

static uint64_t
safe_div_func_uint64_t_u_u (uint64_t ui1, uint32_t ui2)
{
  return ui2 ? : (ui1 / ui2);
}

uint8_t g_55;
uint8_t *g_73 = &g_55;
uint8_t **g_332 = &g_73;

int func_38(uint8_t *,int);
int func_8(int);

int int321 (void)
{
  uint8_t l_26[4];
  uint8_t *l_238 = &l_26[2];
  uint8_t l_400;
  l_400 &=
    func_38 (&l_26[3],
         safe_add_func_uint32_t_u_u (safe_div_func_uint64_t_u_u
                     (1, **g_332),
                     *l_238) >= *l_238 < func_8 (0)), 1;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42196-3.c<|end_filename|>
union U
{
  __complex__ int ci;
  __complex__ float cf;
};

float gd;
extern float bar (float, float);

float foo (int b, union U u)
{
  float f1, f2, r;

  if (b)
    {
      f1 = __real__ u.cf;
      f1 = __imag__ u.cf;
    }
  else
    {
      f1 = __real__ u.ci;
      f1 = __imag__ u.ci;
    }

  r = bar (f1, f2);
  return r;
}


<|start_filename|>testdata/func.c<|end_filename|>
void f(char *) {
	f(__func__);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr30564-1.c<|end_filename|>
static int spready[] = {0, 1, 2, 3};
void explosion_map (int y)
{
  int i;
  for (i = 0; i < 4; i++)
    if (y * spready[i] < 0)
      break;
}
void explosion (void)
{
  int i;
  explosion_map (0);
  for (i = 0; i < 2; i++)
    continue;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pass.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
int
foo (a, b, c)
{
  return a + b + c;
}

int
bar ()
{
  int q, w, e, r, t, y;

  return foo ((int) & q, q, w, e, q, (int) &w);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/991213-3.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */

int jump () { goto * (int (*) ()) 0xbabebec0; }



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22531.c<|end_filename|>
typedef struct dw_cfi_oprnd_struct {
      unsigned long reg;
} dw_cfa_location;
void def_cfa_1 (void) {
      dw_cfa_location loc;
        loc.reg = loc.reg;
}


<|start_filename|>testdata/issue90.c<|end_filename|>
struct {
	unsigned a:1;
	unsigned b:1;
} x;

void f() {
	x.a + x.b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49735.c<|end_filename|>
/* { dg-require-alias "" } */
void bar (void);
static void foo (void) { bar (); }
void bar (void) __attribute__((alias("foo")));


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050622-1.c<|end_filename|>
#if __SCHAR_MAX__ == 127 && __INT_MAX__ >= 2147483647
struct S { char buf[72*1024*1024]; };
#else
struct S { char buf[64]; };
#endif

extern void bar (struct S);

struct S s;

int
foo (void)
{
  bar (s);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr29250.c<|end_filename|>
/* We used to ICE because EXPAND_SUM was being used for all recursive calls
   to expand_expr.  */
struct TSparseEntry
{
  int feat_index;
  double entry;
};

struct TSparse
{
  int vec_index;
  int num_feat_entries;
  struct TSparseEntry *features;
};

void
get_full_feature_matrix (struct TSparse* sparse_feature_matrix, int num_vec)
{
  double *fm;
  int v, f;

  for (v=0; v < num_vec; v++)
  {
    for (f=0; f < sparse_feature_matrix[v].num_feat_entries; f++)
    {
      long long offs = sparse_feature_matrix[v].vec_index
	+ sparse_feature_matrix[v].features[f].feat_index;
      fm[offs] = sparse_feature_matrix[v].features[f].entry;
    }
  }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35431.c<|end_filename|>
void bar();

void foo(int i)
{
  __complex__ int k = 0;

  if (i)
    k = 1;

  for (i = 0; i < 1; ++i)
    ;

  if (k)
    bar();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20100915-1.c<|end_filename|>
/* PR rtl-optimization/45593 */
/* Testcase by <NAME> <<EMAIL>> */

typedef unsigned int __u32;
typedef __u32 __be32;
static inline __attribute__((always_inline)) int __attribute__((__cold__)) printk(const char *s, ...) { return 0; }
typedef struct journal_s journal_t;
typedef struct journal_header_s
{
 __be32 h_magic;
 __be32 h_blocktype;
 __be32 h_sequence;
} journal_header_t;
typedef struct journal_superblock_s
{
 journal_header_t s_header;
 __be32 s_blocksize;
 __be32 s_maxlen;
} journal_superblock_t;
struct journal_s
{
 struct buffer_head *j_sb_buffer;
 journal_superblock_t *j_superblock;
 int j_format_version;
 int j_blocksize;
 unsigned int j_maxlen;
};
static void journal_fail_superblock (journal_t *journal)
{
 journal->j_sb_buffer = ((void *)0);
}
static int journal_get_superblock(journal_t *journal)
{
 struct buffer_head *bh;
 journal_superblock_t *sb;
 int err = -100;
 bh = journal->j_sb_buffer;
 if (!buffer_uptodate(bh)) {
  if (!buffer_uptodate(bh)) {
   printk ("JBD: IO error reading journal superblock\n");
   goto out;
  }
 }
 err = -101;
 if (sb->s_header.h_magic != (( __be32)(__u32)(0)) ||
     sb->s_blocksize != (( __be32)(__u32)(journal->j_blocksize))) {
  printk("JBD: no valid journal superblock found\n");
  goto out;
 }
 switch((( __u32)(__be32)(sb->s_header.h_blocktype))) {
 case 0:
 case 1:
  break;
 default:
  goto out;
 }
 if ((( __u32)(__be32)(sb->s_maxlen)) < journal->j_maxlen)
  journal->j_maxlen = (( __u32)(__be32)(sb->s_maxlen));
 else if ((( __u32)(__be32)(sb->s_maxlen)) > journal->j_maxlen) {
  printk ("JBD: journal file too short\n");
  goto out;
 }
 return 0;
out:
 journal_fail_superblock(journal);
 return err;
}
static int load_superblock(journal_t *journal)
{
 journal_get_superblock(journal);
 return 0;
}
int jbd2_journal_update_format (journal_t *journal)
{
 journal_get_superblock(journal);
 return 0;
}
int jbd2_journal_wipe(journal_t *journal, int write)
{
 load_superblock(journal);
 return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36666.c<|end_filename|>
struct Foo {
    int *p;
    struct X {
	int a,b,c,d,e,*f;
    } x;
} *init, *init2;

struct X __attribute__((const)) foo(struct X);
struct Foo __attribute__((const)) foo2(struct Foo);

void bar1 (void)
{
  init->x = foo (init2->x);
}
void bar2 (void)
{
  init->x = foo (init->x);
}
void bar3 (void)
{
  *init = foo2 (*init2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040907-1.c<|end_filename|>
void ProdWord_bla ( gtL, gtRes, lnL )
    int *gtL, *gtRes;
    int lnL;
{
    while ( 1 < lnL )
    {
        *gtRes++ = *gtL++;
        --lnL;
    }
    if ( 0 < lnL )
        if ( gtL[0] == gtL[1] )
            *gtRes++ = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20061005-1.c<|end_filename|>
/* PR target/28924 */

char c;

void
testc (void)
{
  (void) __sync_fetch_and_add (&c, -1);
}

short s;

void
tests (void)
{
  (void) __sync_fetch_and_add (&s, -1);
}

void
testc2 (void)
{
  (void) __sync_val_compare_and_swap (&c, -1, -3);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr28905.c<|end_filename|>
/* We used to ICE here because after VRP we ended up with
   non-compatible ranges in a value-range equivalences set.  */
void code_comment (int size)
{
  int i;
  for (i = 0; i < size; i++)
    if (i)
      if (i < 0)
        if (i < 0)
          return;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32453.c<|end_filename|>
void ucs2reverse_internal_loop_single (long *irreversible, int foo)
{
    unsigned char bytebuf[2];
    const unsigned char *inptr = bytebuf;
    if (irreversible == (void *)0)
	;
    else 
	inptr += 2;
    if (inptr != bytebuf)
	((inptr - bytebuf > foo) ? (void) (0) : __assert_fail ());
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42998.c<|end_filename|>
void foo(void *);
void bar(void *);
void ndisc_fill_addr_option(unsigned char *opt, int data_len,
			    unsigned short addr_type) 
{
  int pad;
  if (addr_type == 32)
    pad = 2;
  else
    pad = 0;
  __builtin_memset(opt + 2, 0, pad);
  opt += pad;
  __builtin_constant_p(data_len) ? foo (opt+2) : bar (opt+2);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/strncmp.c<|end_filename|>
/* Copyright (C) 2000, 2001, 2003  Free Software Foundation.

   Ensure all expected transformations of builtin strncmp occur and
   perform correctly.

   Written by <NAME>, 11/26/2000.  */

extern void abort (void);
typedef __SIZE_TYPE__ size_t;
extern int strncmp (const char *, const char *, size_t);

void
main_test (void)
{
  const char *const s1 = "hello world";
  const char *s2, *s3;
  
  if (strncmp (s1, "hello world", 12) != 0)
    abort();
  if (strncmp ("hello world", s1, 12) != 0)
    abort();
  if (strncmp ("hello", "hello", 6) != 0)
    abort();
  if (strncmp ("hello", "hello", 2) != 0)
    abort();
  if (strncmp ("hello", "hello", 100) != 0)
    abort();
  if (strncmp (s1+10, "d", 100) != 0)
    abort();
  if (strncmp (10+s1, "d", 100) != 0)
    abort();
  if (strncmp ("d", s1+10, 1) != 0)
    abort();
  if (strncmp ("d", 10+s1, 1) != 0)
    abort();
  if (strncmp ("hello", "aaaaa", 100) <= 0)
    abort();
  if (strncmp ("aaaaa", "hello", 100) >= 0)
    abort();
  if (strncmp ("hello", "aaaaa", 1) <= 0)
    abort();
  if (strncmp ("aaaaa", "hello", 1) >= 0)
    abort();

  s2 = s1; s3 = s1+4;
  if (strncmp (++s2, ++s3, 0) != 0 || s2 != s1+1 || s3 != s1+5)
    abort();
  s2 = s1;
  if (strncmp (++s2, "", 1) <= 0 || s2 != s1+1)
    abort();
  if (strncmp ("", ++s2, 1) >= 0 || s2 != s1+2)
    abort();
  if (strncmp (++s2, "", 100) <= 0 || s2 != s1+3)
    abort();
  if (strncmp ("", ++s2, 100) >= 0 || s2 != s1+4)
    abort();
  if (strncmp (++s2+6, "", 100) != 0 || s2 != s1+5)
    abort();
  if (strncmp ("", ++s2+5, 100) != 0 || s2 != s1+6)
    abort();
  if (strncmp ("ozz", ++s2, 1) != 0 || s2 != s1+7)
    abort();
  if (strncmp (++s2, "rzz", 1) != 0 || s2 != s1+8)
    abort();
  s2 = s1; s3 = s1+4;
  if (strncmp (++s2, ++s3+2, 1) >= 0 || s2 != s1+1 || s3 != s1+5)
    abort();
  
  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
  if (__builtin_strncmp ("hello", "a", 100) <= 0)
    abort();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52073.c<|end_filename|>
/* PR tree-optimization/52073 */

int a, b, c, d, e, f;

void
foo (int x)
{
  e = 1;
  for (;;)
    {
      int g = c;
      if (x)
	{
	  if (e)
	    continue;
	  while (a)
	    --f;
	}
      else
	for (b = 5; b; b--)
	  {
	    d = g;
	    g = 0 == d;
	  }
      if (!g)
	x = 0;
    }
}


<|start_filename|>v2/testdata/bug/6.c<|end_filename|>
#include <assert.h>

char *tld_p;
char *esc_tld_p;

int main() {
	assert(!tld_p);
	assert(!esc_tld_p);
	char **pp = &esc_tld_p;
	assert(pp);

	static char *static_p;
	static char *esc_static_p;

	assert(!static_p);
	assert(!esc_static_p);
	pp = &esc_static_p;
	assert(pp);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38564.c<|end_filename|>
struct S
{
  struct S *n, *p;
} *s;

void bar (void *);

int
foo (int x)
{
  struct S p = { &p, &p };
  int i;
  for (i = 0; i < x; i++)
    bar (s);
  return p.n == &p;
}

int dialog_calendar(int state)
{
  int *obj = (state == 1 ? &state : 0);
  return (obj == &state);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47150.c<|end_filename|>
/* PR c/47150 */

float _Complex foo (float, float);

void
bar ()
{
  float w = 2;
  float _Complex b;
  b = 0.5 * (foo (0, w) + foo (1, w) / w);
}


<|start_filename|>v2/testdata/cpp-expand/000.h<|end_filename|>
#define a b
a
#define a2  b2
a2
#define a3 b3//
a3
#define a4 b4 //
a4
#define a5 b5 c5
a5
#define a6 b6  c6
a6
#define a7 b7/**/c7
a7
#define a8 b8 /**/c8
a8
#define a9 b9/**/ c9
a9
#define a10 b10 /**/ c10
a10


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20010518-1.c<|end_filename|>
/* This was cut down from reload1.c in May 2001, was observed to cause
   a bootstrap failure for powerpc-apple-darwin1.3.

   Copyright (C) 2001  Free Software Foundation.  */

enum insn_code
{
  CODE_FOR_extendqidi2 = 3,
  CODE_FOR_nothing = 870
};

struct rtx_def;

enum machine_mode
{
  VOIDmode,
  MAX_MACHINE_MODE
};

typedef unsigned long long HARD_REG_ELT_TYPE;
typedef HARD_REG_ELT_TYPE HARD_REG_SET[((77 + (8 * 8) - 1) / (8 * 8))];

enum rtx_code
{
  UNKNOWN,
  NIL,
  REG,
  LAST_AND_UNUSED_RTX_CODE = 256
};

typedef struct
{
  unsigned min_align:8;
  unsigned base_after_vec:1;
  unsigned min_after_vec:1;
  unsigned max_after_vec:1;
  unsigned min_after_base:1;
  unsigned max_after_base:1;
  unsigned offset_unsigned:1;
  unsigned:2;
  unsigned scale:8;
}
addr_diff_vec_flags;
typedef union rtunion_def
{
  long long rtwint;
  int rtint;
  unsigned int rtuint;
  const char *rtstr;
  struct rtx_def *rtx;
  struct rtvec_def *rtvec;
  enum machine_mode rttype;
  addr_diff_vec_flags rt_addr_diff_vec_flags;
  struct cselib_val_struct *rt_cselib;
  struct bitmap_head_def *rtbit;
  union tree_node *rttree;
  struct basic_block_def *bb;
}
rtunion;
typedef struct rtx_def
{
  enum rtx_code code:16;
  enum machine_mode mode:8;
  unsigned int jump:1;
  unsigned int call:1;
  unsigned int unchanging:1;
  unsigned int volatil:1;
  unsigned int in_struct:1;
  unsigned int used:1;
  unsigned integrated:1;
  unsigned frame_related:1;
  rtunion fld[1];
}
 *rtx;

enum reload_type
{
  RELOAD_FOR_INPUT, RELOAD_FOR_OUTPUT, RELOAD_FOR_INSN,
  RELOAD_FOR_INPUT_ADDRESS, RELOAD_FOR_INPADDR_ADDRESS,
  RELOAD_FOR_OUTPUT_ADDRESS, RELOAD_FOR_OUTADDR_ADDRESS,
  RELOAD_FOR_OPERAND_ADDRESS, RELOAD_FOR_OPADDR_ADDR,
  RELOAD_OTHER, RELOAD_FOR_OTHER_ADDRESS
};

struct reload
{
  rtx in;
  rtx out;
  //  enum reg_class class;
  enum machine_mode inmode;
  enum machine_mode outmode;
  enum machine_mode mode;
  unsigned int nregs;
  int inc;
  rtx in_reg;
  rtx out_reg;
  int regno;
  rtx reg_rtx;
  int opnum;
  int secondary_in_reload;
  int secondary_out_reload;
  enum insn_code secondary_in_icode;
  enum insn_code secondary_out_icode;
  enum reload_type when_needed;
  unsigned int optional:1;
  unsigned int nocombine:1;
  unsigned int secondary_p:1;
  unsigned int nongroup:1;
};

struct insn_chain
{
  rtx insn;
};

extern int n_reloads;
static short reload_order[(2 * 10 * (2 + 1))];
int reload_spill_index[(2 * 10 * (2 + 1))];
extern struct reload rld[(2 * 10 * (2 + 1))];
static rtx *reg_last_reload_reg;
static HARD_REG_SET reg_reloaded_valid;
static HARD_REG_SET reg_reloaded_dead;
static HARD_REG_SET reg_reloaded_died;
static HARD_REG_SET reg_is_output_reload;
extern const unsigned int mode_size[];
extern int target_flags;

static void
emit_reload_insns (chain)
     struct insn_chain *chain;
{
  rtx insn = chain->insn;
  register int j;
  rtx following_insn = (((insn)->fld[2]).rtx);
  rtx before_insn = (((insn)->fld[1]).rtx);

  for (j = 0; j < n_reloads; j++)
    {
      register int r = reload_order[j];
      register int i = reload_spill_index[r];

	{
	  rtx out = (((enum rtx_code) (rld[r].out)->code) == REG ? rld[r].out : rld[r].out_reg);
	  register int nregno = (((out)->fld[0]).rtuint);

	  if (nregno >= 77)
	    {
	      rtx src_reg, store_insn = (rtx) 0;

	      reg_last_reload_reg[nregno] = 0;
	      if (src_reg && ((enum rtx_code) (src_reg)->code) == REG && (((src_reg)->fld[0]).rtuint) < 77)
		{
		  int src_regno = (((src_reg)->fld[0]).rtuint);
		  int nr =
		    (((src_regno) >= 32
		      && (src_regno) <=
		      63) ? (((mode_size[(int) (rld[r].mode)]) + 8 -
			      1) / 8) : (((mode_size[(int) (rld[r].mode)]) +
					  (!(target_flags & 0x00000020) ? 4 :
					   8) - 1) / (!(target_flags & 0x00000020) ? 4 : 8)));
		  rtx note = 0;

		  while (nr-- > 0)
		    {
		      ((reg_reloaded_dead)
		       [(src_regno + nr) / ((unsigned) (8 * 8))] &=
		       ~(((HARD_REG_ELT_TYPE) (1)) << ((src_regno + nr) % ((unsigned) (8 * 8)))));
		      ((reg_reloaded_valid)
		       [(src_regno + nr) / ((unsigned) (8 * 8))] |=
		       ((HARD_REG_ELT_TYPE) (1)) << ((src_regno + nr) % ((unsigned) (8 * 8))));
		      ((reg_is_output_reload)
		       [(src_regno + nr) / ((unsigned) (8 * 8))] |=
		       ((HARD_REG_ELT_TYPE) (1)) << ((src_regno + nr) % ((unsigned) (8 * 8))));
		      if (note)
			((reg_reloaded_died)
			 [(src_regno) / ((unsigned) (8 * 8))] |=
			 ((HARD_REG_ELT_TYPE) (1)) << ((src_regno) % ((unsigned) (8 * 8))));
		      else
			((reg_reloaded_died)
			 [(src_regno) / ((unsigned) (8 * 8))] &=
			 ~(((HARD_REG_ELT_TYPE) (1)) << ((src_regno) % ((unsigned) (8 * 8)))));
		    }
		  reg_last_reload_reg[nregno] = src_reg;
		}
	    }
	  else
	    {
	      int num_regs =
		(((nregno) >= 32
		  && (nregno) <=
		  63)
		 ? (((mode_size
		      [(int) (((enum machine_mode) (rld[r].out)->mode))]) +
		     8 -
		     1) /
		    8)
		 : (((mode_size
		      [(int) (((enum machine_mode) (rld[r].out)->mode))]) +
		     (!(target_flags & 0x00000020) ? 4 : 8) - 1) / (!(target_flags & 0x00000020) ? 4 : 8)));
	      while (num_regs-- > 0)
		reg_last_reload_reg[nregno + num_regs] = 0;
	    }
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20021230-1.c<|end_filename|>
/* SH has special handling for combined and/shift sequences.  Make
   sure that it behaves properly when one input is in the MACL register.  */
int r, t;

static void initRGB()
{
  t = ((r*255/3) & 0xff) << 16;
}


<|start_filename|>v2/testdata/tcc-0.9.26/tests/tests2/Makefile<|end_filename|>
TOP = ../..
include $(TOP)/Makefile
VPATH = $(top_srcdir)/tests/tests2

TCCFLAGS = -B$(TOP)
ifdef CONFIG_WIN32
 TCCFLAGS = -B$(top_srcdir)/win32 -I$(top_srcdir)/include -L$(TOP)
endif

ifeq ($(TARGETOS),Darwin)
 CFLAGS += -Wl,-flat_namespace,-undefined,warning
 TCCFLAGS += -D_ANSI_SOURCE
 export MACOSX_DEPLOYMENT_TARGET:=10.2
endif

TCC_RUN = $(TOP)/tcc $(TCCFLAGS) -run

TESTS =	\
 00_assignment.test \
 01_comment.test \
 02_printf.test \
 03_struct.test \
 04_for.test \
 05_array.test \
 06_case.test \
 07_function.test \
 08_while.test \
 09_do_while.test \
 10_pointer.test \
 11_precedence.test \
 12_hashdefine.test \
 13_integer_literals.test \
 14_if.test \
 15_recursion.test \
 16_nesting.test \
 17_enum.test \
 18_include.test \
 19_pointer_arithmetic.test \
 20_pointer_comparison.test \
 21_char_array.test \
 22_floating_point.test \
 23_type_coercion.test \
 24_math_library.test \
 25_quicksort.test \
 26_character_constants.test \
 27_sizeof.test \
 28_strings.test \
 29_array_address.test \
 31_args.test \
 32_led.test \
 33_ternary_op.test \
 35_sizeof.test \
 36_array_initialisers.test \
 37_sprintf.test \
 38_multiple_array_index.test \
 39_typedef.test \
 40_stdio.test \
 41_hashif.test \
 42_function_pointer.test \
 43_void_param.test \
 44_scoped_declarations.test \
 45_empty_for.test \
 47_switch_return.test \
 48_nested_break.test \
 49_bracket_evaluation.test \
 50_logical_second_arg.test \
 51_static.test \
 52_unnamed_enum.test \
 54_goto.test \
 55_lshift_type.test

# 30_hanoi.test -- seg fault in the code, gcc as well
# 34_array_assignment.test -- array assignment is not in C standard
# 46_grep.test -- does not compile even with gcc

# some tests do not pass on all platforms, remove them for now
ifeq ($(TARGETOS),Darwin)
  TESTS := $(filter-out 40_stdio.test,$(TESTS))
endif
ifdef CONFIG_WIN32
  TESTS := $(filter-out 24_math_library.test 28_strings.test,$(TESTS))
endif

%.test: %.c %.expect
	@echo Test: $*...
	@if [ "x`echo $* | grep args`" != "x" ]; \
	then $(TCC_RUN) $< - arg1 arg2 arg3 arg4 >$*.output; \
	else $(TCC_RUN) $< >$*.output; \
	fi
	@if diff -bu $(<:.c=.expect) $*.output ; \
	then rm -f $*.output; \
	else exit 1; \
	fi

all test: $(TESTS)

clean:
	rm -vf fred.txt *.output


<|start_filename|>v2/parser.go<|end_filename|>
// Code generated by goyacc - DO NOT EDIT.

// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Based on [0], 6.5-6.10. Substantial portions of expression AST size
// optimizations are from [1], license of which follows.
//
// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
// [1]: https://github.com/rsc/c2go/blob/fc8cbfad5a47373828c81c7a56cccab8b221d310/cc/cc.y

// ----------------------------------------------------------------------------

// Copyright 2013 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This grammar is derived from the C grammar in the 'ansitize'
// program, which carried this notice:
//
// Copyright (c) 2006 <NAME>,
// 	Massachusetts Institute of Technology
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated
// documentation files (the "Software"), to deal in the
// Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute,
// sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall
// be included in all copies or substantial portions of the
// Software.
//
// The software is provided "as is", without warranty of any
// kind, express or implied, including but not limited to the
// warranties of merchantability, fitness for a particular
// purpose and noninfringement.  In no event shall the authors
// or copyright holders be liable for any claim, damages or
// other liability, whether in an action of contract, tort or
// otherwise, arising from, out of or in connection with the
// software or the use or other dealings in the software.

package cc

import __yyfmt__ "fmt"
import __sync__ "sync"

import (
	"github.com/cznic/xc"
)

var yyPool = __sync__.Pool{New: func() interface{} { s := make([]yySymType, 200); return &s }}

type yySymType struct {
	yys   int
	Token xc.Token
	node  Node
}

type yyXError struct {
	state, xsym int
}

const (
	yyDefault           = 57432
	yyEofCode           = 57344
	ADDASSIGN           = 57346
	ALIGNOF             = 57347
	ANDAND              = 57348
	ANDASSIGN           = 57349
	ARROW               = 57350
	AUTO                = 57351
	BOOL                = 57352
	BREAK               = 57353
	CASE                = 57354
	CAST                = 57355
	CHAR                = 57356
	CHARCONST           = 57357
	COMPLEX             = 57358
	CONST               = 57359
	CONSTANT_EXPRESSION = 1048576
	CONTINUE            = 57360
	DDD                 = 57361
	DEC                 = 57362
	DEFAULT             = 57363
	DIRECTIVE           = 57364
	DIVASSIGN           = 57365
	DO                  = 57366
	DOUBLE              = 57367
	ELSE                = 57368
	ENUM                = 57369
	EQ                  = 57370
	EXTERN              = 57371
	FLOAT               = 57372
	FLOATCONST          = 57373
	FOR                 = 57374
	GEQ                 = 57375
	GOTO                = 57376
	IDENTIFIER          = 57377
	IF                  = 57378
	INC                 = 57379
	INLINE              = 57380
	INT                 = 57381
	INTCONST            = 57382
	LEQ                 = 57383
	LONG                = 57384
	LONGCHARCONST       = 57385
	LONGSTRINGLITERAL   = 57386
	LSH                 = 57387
	LSHASSIGN           = 57388
	MODASSIGN           = 57389
	MULASSIGN           = 57390
	NEQ                 = 57391
	NOELSE              = 57392
	NON_REPL            = 57393
	NOSEMI              = 57394
	ORASSIGN            = 57395
	OROR                = 57396
	PPNUMBER            = 57397
	PPPASTE             = 57398
	REGISTER            = 57399
	RESTRICT            = 57400
	RETURN              = 57401
	RSH                 = 57402
	RSHASSIGN           = 57403
	SHORT               = 57404
	SIGNED              = 57405
	SIZEOF              = 57406
	STATIC              = 57407
	STRINGLITERAL       = 57408
	STRUCT              = 57409
	SUBASSIGN           = 57410
	SWITCH              = 57411
	TRANSLATION_UNIT    = 1048577
	TYPEDEF             = 57412
	TYPEDEF_NAME        = 57413
	TYPEOF              = 57414
	UNARY               = 57415
	UNION               = 57416
	UNSIGNED            = 57417
	VOID                = 57418
	VOLATILE            = 57419
	WHILE               = 57420
	XORASSIGN           = 57421
	yyErrCode           = 57345

	yyMaxDepth = 200
	yyTabOfs   = -247
)

var (
	yyPrec = map[int]int{
		NOSEMI:    0,
		';':       1,
		NOELSE:    2,
		ELSE:      3,
		'=':       4,
		ADDASSIGN: 4,
		ANDASSIGN: 4,
		DIVASSIGN: 4,
		LSHASSIGN: 4,
		MODASSIGN: 4,
		MULASSIGN: 4,
		ORASSIGN:  4,
		RSHASSIGN: 4,
		SUBASSIGN: 4,
		XORASSIGN: 4,
		':':       5,
		'?':       5,
		OROR:      6,
		ANDAND:    7,
		'|':       8,
		'^':       9,
		'&':       10,
		EQ:        11,
		NEQ:       11,
		'<':       12,
		'>':       12,
		GEQ:       12,
		LEQ:       12,
		LSH:       13,
		RSH:       13,
		'+':       14,
		'-':       14,
		'%':       15,
		'*':       15,
		'/':       15,
		CAST:      16,
		'!':       17,
		'~':       17,
		ALIGNOF:   17,
		SIZEOF:    17,
		UNARY:     17,
		'(':       18,
		'.':       18,
		'[':       18,
		ARROW:     18,
		DEC:       18,
		INC:       18,
	}

	yyFollow = [][]int{
		{1048576, 57490, 1048577}, // state 0
		{57344},                   // state 1
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57442, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                                                                // state 2
		{40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57443, 57446, 57448, 57369, 57371, 57456, 57465, 57466, 57372, 57468, 57469, 57377, 57380, 57381, 57384, 57485, 57486, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 3
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57443, 57446, 57448, 57369, 57371, 57456, 57465, 57372, 57468, 57469, 57377, 57380, 57381, 57384, 57485, 57486, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 4
		{40, 42, 59, 57448, 57377, 57473, 57474, 57475, 57485, 57486}, // state 5
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57446, 57447, 57369, 57371, 57456, 57372, 57469, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 6
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57446, 57447, 57369, 57371, 57456, 57372, 57469, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 7
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57446, 57447, 57369, 57371, 57456, 57372, 57469, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 8
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57446, 57447, 57369, 57371, 57456, 57372, 57469, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 9
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 10
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 11
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 12
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 13
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 14
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 15
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 16
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 17
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 18
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 19
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 20
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 21
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 22
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 23
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 24
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 25
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 26
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 27
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                            // state 28
		{40},                // state 29
		{123, 57377, 57472}, // state 30
		{123, 57377},        // state 31
		{123, 57377},        // state 32
		{123, 57377, 57472}, // state 33
		{33, 38, 40, 41, 42, 43, 44, 45, 58, 59, 91, 93, 126, 57347, 57351, 57352, 57356, 57357, 57358, 57359, 57362, 57367, 57369, 57371, 57372, 57373, 57377, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57404, 57405, 57406, 57407, 57408, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 34
		{33, 38, 40, 41, 42, 43, 44, 45, 58, 59, 91, 93, 126, 57347, 57351, 57352, 57356, 57357, 57358, 57359, 57362, 57367, 57369, 57371, 57372, 57373, 57377, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57404, 57405, 57406, 57407, 57408, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 35
		{33, 38, 40, 41, 42, 43, 44, 45, 58, 59, 91, 93, 126, 57347, 57351, 57352, 57356, 57357, 57358, 57359, 57362, 57367, 57369, 57371, 57372, 57373, 57377, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57404, 57405, 57406, 57407, 57408, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 36
		{40, 41, 42, 44, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                                    // state 37
		{40, 57455, 57377}, // state 38
		{40, 41, 42, 44, 91, 57359, 57377, 57400, 57500, 57501, 57502, 57419}, // state 39
		{40, 57377}, // state 40
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                             // state 41
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                             // state 42
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                             // state 43
		{57431, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                       // state 44
		{123, 57351, 57352, 57356, 57358, 57359, 57367, 57443, 57444, 57445, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 45
		{40, 42, 59, 57448, 57377, 57473, 57474, 57475, 57485, 57486}, // state 46
		{57423, 123, 57467}, // state 47
		{123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 48
		{123, 57351, 57352, 57356, 57358, 57359, 57367, 57443, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 49
		{123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                // state 50
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                               // state 51
		{123, 57441}, // state 52
		{57429, 33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},                                                                                                                                                    // state 53
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                                                                                                                                                                                                                                                                          // state 54
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57437, 57438, 57439, 57354, 57356, 57357, 57358, 57359, 57360, 57441, 57362, 57363, 57366, 57367, 57443, 57446, 57369, 57371, 57456, 57460, 57461, 57462, 57464, 57372, 57373, 57374, 57469, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57478, 57479, 57384, 57385, 57386, 57480, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57487, 57491, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419, 57420}, // state 55
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 56
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 57
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 58
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 59
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 60
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 61
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57352, 57356, 57357, 57358, 57359, 57441, 57362, 57367, 57369, 57456, 57460, 57461, 57372, 57373, 57377, 57379, 57381, 57382, 57384, 57385, 57386, 57400, 57404, 57405, 57406, 57408, 57409, 57488, 57497, 57498, 57413, 57414, 57499, 57500, 57503, 57416, 57417, 57418, 57419}, // state 62
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 63
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 64
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 65
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 66
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 67
		{37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},             // state 68
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 69
		{37, 38, 40, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                     // state 70
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 71
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 72
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 73
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 74
		{41, 44, 59}, // state 75
		{40, 42, 58, 59, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                                                                                                                      // state 76
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 77
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 78
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 79
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 80
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 81
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 82
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57442, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 83
		{58},  // state 84
		{125}, // state 85
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},                                                                                                                                             // state 86
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57437, 57354, 57356, 57357, 57358, 57359, 57360, 57441, 57362, 57363, 57366, 57367, 57443, 57446, 57369, 57371, 57456, 57460, 57461, 57462, 57464, 57372, 57373, 57374, 57469, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57478, 57479, 57384, 57385, 57386, 57480, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57487, 57491, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419, 57420}, // state 87
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},                                                                                                                                             // state 88
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},                                                                                                                                             // state 89
		{59}, // state 90
		{40}, // state 91
		{40}, // state 92
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420}, // state 93
		{40},    // state 94
		{40},    // state 95
		{59},    // state 96
		{59},    // state 97
		{57377}, // state 98
		{33, 38, 40, 42, 43, 45, 59, 126, 57347, 57357, 57362, 57460, 57461, 57462, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                              // state 99
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 100
		{59}, // state 101
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 102
		{59}, // state 103
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 104
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 105
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 106
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 107
		{41, 44}, // state 108
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                                             // state 109
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420}, // state 110
		{58}, // state 111
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 112
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                               // state 113
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 114
		{37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                                        // state 115
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 116
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 117
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 118
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 119
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 120
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 121
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 122
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 123
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 124
		{57377}, // state 125
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 126
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 127
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 128
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 129
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 130
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 131
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 132
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 133
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 134
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 135
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 136
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 137
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 138
		{33, 38, 40, 41, 42, 43, 45, 126, 57347, 57435, 57436, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 139
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 140
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 141
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                   // state 142
		{57377}, // state 143
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 144
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 145
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 146
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 147
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                         // state 148
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                         // state 149
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 150
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 151
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 152
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 153
		{44, 93}, // state 154
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 155
		{44, 58}, // state 156
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                // state 157
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 158
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 159
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 160
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 161
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 162
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 163
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 164
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 165
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 166
		{37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 60, 61, 62, 63, 91, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                         // state 167
		{41, 44}, // state 168
		{41},     // state 169
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 170
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                                                                                                                                                 // state 171
		{37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 60, 61, 62, 63, 91, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                                          // state 172
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 173
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 174
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 175
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 176
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 177
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 178
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 179
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 180
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 181
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 182
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 183
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 184
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 185
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 186
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 187
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 188
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 189
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 190
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 191
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 192
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                  // state 193
		{33, 38, 40, 42, 43, 45, 59, 126, 57347, 57351, 57352, 57356, 57357, 57358, 57359, 57362, 57367, 57443, 57446, 57369, 57371, 57456, 57460, 57461, 57462, 57372, 57373, 57469, 57377, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57404, 57405, 57406, 57407, 57408, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 194
		{33, 38, 40, 42, 43, 45, 59, 126, 57347, 57357, 57362, 57460, 57461, 57462, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                                                                                                                                               // state 195
		{59}, // state 196
		{33, 38, 40, 42, 43, 45, 59, 126, 57347, 57357, 57362, 57460, 57461, 57462, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 197
		{59}, // state 198
		{33, 38, 40, 41, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57462, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 199
		{41}, // state 200
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                               // state 201
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 202
		{59}, // state 203
		{33, 38, 40, 41, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57462, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 204
		{41}, // state 205
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                               // state 206
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 207
		{57420}, // state 208
		{40},    // state 209
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 210
		{41, 44}, // state 211
		{59},     // state 212
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 213
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 214
		{41, 44}, // state 215
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                               // state 216
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 217
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57461, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 218
		{41, 44}, // state 219
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                                          // state 220
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},            // state 221
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                                          // state 222
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},            // state 223
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},            // state 224
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},                   // state 225
		{57344, 33, 38, 40, 41, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 226
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                                          // state 227
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420},            // state 228
		{57344, 37, 38, 40, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                                           // state 229
		{58}, // state 230
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                               // state 231
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 232
		{33, 38, 40, 42, 43, 45, 59, 123, 126, 57347, 57353, 57354, 57357, 57360, 57441, 57362, 57363, 57366, 57460, 57461, 57462, 57464, 57373, 57374, 57376, 57377, 57378, 57379, 57382, 57478, 57479, 57385, 57386, 57480, 57401, 57406, 57408, 57411, 57487, 57491, 57413, 57420},                                                                                                               // state 233
		{33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57368, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 234
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                            // state 235
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                            // state 236
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                            // state 237
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                                                                            // state 238
		{41},     // state 239
		{41, 44}, // state 240
		{41},     // state 241
		{40, 41, 42, 58, 59, 91, 57352, 57356, 57358, 57359, 57367, 57369, 57456, 57372, 57377, 57381, 57384, 57400, 57404, 57405, 57409, 57488, 57489, 57497, 57498, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 242
		{40, 41, 42, 58, 59, 91, 57352, 57356, 57358, 57359, 57367, 57369, 57456, 57372, 57377, 57381, 57384, 57400, 57404, 57405, 57409, 57488, 57489, 57497, 57498, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 243
		{40, 41, 42, 91, 57433, 57434, 57485, 57486}, // state 244
		{40, 41, 44, 91, 57377},                      // state 245
		{41},                                         // state 246
		{40, 91, 57453, 57454},                       // state 247
		{41, 44},                                     // state 248
		{40, 41, 44, 91},                             // state 249
		{40, 41, 42, 91, 57351, 57433, 57352, 57356, 57358, 57359, 57367, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57481, 57482, 57483, 57484, 57485, 57486, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 250
		{91}, // state 251
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57359, 57362, 57460, 57463, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57407, 57408, 57500, 57501, 57419},                                               // state 252
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                // state 253
		{37, 38, 40, 42, 43, 45, 46, 47, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 254
		{33, 38, 40, 41, 42, 43, 44, 45, 91, 93, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57407, 57408, 57419},                                                               // state 255
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57359, 57362, 57460, 57463, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57407, 57408, 57500, 57419},                                                      // state 256
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57408, 57500, 57501, 57502, 57419},                                                                 // state 257
		{93},             // state 258
		{40, 41, 44, 91}, // state 259
		{33, 38, 40, 41, 42, 43, 44, 45, 91, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57408, 57500, 57419},                                                                   // state 260
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                    // state 261
		{37, 38, 40, 42, 43, 45, 46, 47, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 262
		{40, 41, 44, 91}, // state 263
		{33, 38, 40, 41, 42, 43, 44, 45, 91, 93, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57407, 57408, 57419}, // state 264
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                      // state 265
		{93},             // state 266
		{40, 41, 44, 91}, // state 267
		{37, 38, 40, 42, 43, 45, 46, 47, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 268
		{40, 41, 44, 91}, // state 269
		{40, 41, 44, 91}, // state 270
		{41, 44},         // state 271
		{41},             // state 272
		{41, 44},         // state 273
		{40, 41, 42, 44, 91, 57433, 57434, 57448, 57377, 57485, 57486}, // state 274
		{41},                                 // state 275
		{41},                                 // state 276
		{40, 41, 44, 91},                     // state 277
		{40, 41, 44, 91},                     // state 278
		{40, 91, 57453, 57454, 57455, 57377}, // state 279
		{41, 44},                             // state 280
		{41, 44},                             // state 281
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                                       // state 282
		{40, 41, 42, 91, 57351, 57433, 57352, 57356, 57358, 57359, 57367, 57446, 57448, 57369, 57371, 57456, 57372, 57469, 57377, 57380, 57381, 57384, 57481, 57482, 57483, 57484, 57485, 57486, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 283
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                                       // state 284
		{41}, // state 285
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 286
		{57427, 57428, 41, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},         // state 287
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57407, 57408, 57500, 57501, 57502, 57419},                                                  // state 288
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57408, 57500, 57501, 57502, 57419},                                                             // state 289
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57359, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57400, 57406, 57407, 57408, 57500, 57419},                                                                // state 290
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57362, 57460, 57463, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                     // state 291
		{33, 38, 40, 42, 43, 45, 93, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                            // state 292
		{93}, // state 293
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},     // state 294
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},     // state 295
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                    // state 296
		{37, 38, 40, 42, 43, 45, 46, 47, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 297
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},     // state 298
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                    // state 299
		{37, 38, 40, 42, 43, 45, 46, 47, 60, 61, 62, 63, 91, 93, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 300
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},     // state 301
		{41, 57377, 57470, 57471}, // state 302
		{57351, 57352, 57356, 57358, 57359, 57367, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57481, 57482, 57483, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 303
		{41}, // state 304
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 305
		{41},     // state 306
		{41, 44}, // state 307
		{41, 44}, // state 308
		{57377},  // state 309
		{41, 44}, // state 310
		{40, 41, 44, 58, 59, 61, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                      // state 311
		{57351, 57352, 57356, 57358, 57359, 57361, 57367, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57481, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 312
		{41},     // state 313
		{41, 44}, // state 314
		{41, 57351, 57352, 57356, 57358, 57359, 57367, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57481, 57482, 57483, 57484, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 315
		{41},                            // state 316
		{40, 41, 44, 91},                // state 317
		{40, 41, 42, 58, 59, 91, 57377}, // state 318
		{40, 41, 42, 58, 59, 91, 57377}, // state 319
		{40, 41, 42, 58, 59, 91, 57377}, // state 320
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408},                                                                                                                           // state 321
		{33, 38, 40, 42, 43, 44, 45, 46, 91, 123, 125, 126, 57347, 57357, 57362, 57450, 57451, 57452, 57460, 57373, 57377, 57379, 57382, 57476, 57477, 57385, 57386, 57406, 57408},                                                                       // state 322
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 323
		{44, 125, 57440}, // state 324
		{37, 38, 40, 42, 43, 44, 45, 46, 47, 59, 60, 61, 62, 63, 91, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421}, // state 325
		{33, 38, 40, 42, 43, 44, 45, 46, 91, 123, 125, 126, 57347, 57357, 57362, 57450, 57451, 57452, 57460, 57373, 57377, 57379, 57382, 57476, 57477, 57385, 57386, 57406, 57408},                                                    // state 326
		{44, 125}, // state 327
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57476, 57385, 57386, 57406, 57408}, // state 328
		{46, 61, 91, 57451}, // state 329
		{46, 61, 91},        // state 330
		{57377},             // state 331
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57442, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 332
		{93},         // state 333
		{46, 61, 91}, // state 334
		{46, 61, 91}, // state 335
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57357, 57362, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 336
		{46, 61, 91},     // state 337
		{44, 125},        // state 338
		{44, 125, 57440}, // state 339
		{33, 38, 40, 42, 43, 45, 46, 91, 123, 125, 126, 57347, 57357, 57362, 57450, 57451, 57452, 57460, 57373, 57377, 57379, 57382, 57476, 57385, 57386, 57406, 57408}, // state 340
		{125},         // state 341
		{44, 59, 125}, // state 342
		{44, 125},     // state 343
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57476, 57385, 57386, 57406, 57408}, // state 344
		{44, 125}, // state 345
		{125},     // state 346
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                           // state 347
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                           // state 348
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                           // state 349
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                           // state 350
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                           // state 351
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57352, 57356, 57357, 57358, 57359, 57441, 57362, 57367, 57369, 57456, 57460, 57461, 57372, 57373, 57377, 57379, 57381, 57382, 57384, 57385, 57386, 57400, 57404, 57405, 57406, 57408, 57409, 57488, 57497, 57498, 57413, 57414, 57499, 57500, 57503, 57416, 57417, 57418, 57419}, // state 352
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                           // state 353
		{41}, // state 354
		{57344, 33, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 123, 124, 125, 126, 57346, 57347, 57348, 57349, 57350, 57357, 57362, 57365, 57370, 57460, 57373, 57375, 57377, 57379, 57382, 57383, 57385, 57386, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57406, 57408, 57410, 57421}, // state 355
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57352, 57356, 57357, 57358, 57359, 57441, 57362, 57367, 57369, 57456, 57460, 57461, 57372, 57373, 57377, 57379, 57381, 57382, 57384, 57385, 57386, 57400, 57404, 57405, 57406, 57408, 57409, 57488, 57497, 57498, 57413, 57414, 57499, 57500, 57503, 57416, 57417, 57418, 57419},           // state 356
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                     // state 357
		{41}, // state 358
		{57344, 33, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 123, 124, 125, 126, 57346, 57347, 57348, 57349, 57350, 57357, 57362, 57365, 57370, 57460, 57373, 57375, 57377, 57379, 57382, 57383, 57385, 57386, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57406, 57408, 57410, 57421}, // state 359
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                     // state 360
		{57344, 37, 38, 40, 41, 42, 43, 44, 45, 46, 47, 58, 59, 60, 61, 62, 63, 91, 93, 94, 124, 125, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                     // state 361
		{57422, 59},  // state 362
		{44, 59},     // state 363
		{44, 59},     // state 364
		{44, 59, 61}, // state 365
		{33, 38, 40, 42, 43, 45, 123, 126, 57347, 57357, 57362, 57460, 57373, 57377, 57379, 57382, 57476, 57385, 57386, 57406, 57408}, // state 366
		{44, 59}, // state 367
		{40, 42, 57448, 57377, 57473, 57485, 57486}, // state 368
		{44, 59}, // state 369
		{59},     // state 370
		{57344, 33, 38, 40, 42, 43, 45, 59, 123, 125, 126, 57347, 57351, 57352, 57353, 57354, 57356, 57357, 57358, 57359, 57360, 57362, 57363, 57366, 57367, 57369, 57371, 57372, 57373, 57374, 57376, 57377, 57378, 57379, 57380, 57381, 57382, 57384, 57385, 57386, 57399, 57400, 57401, 57404, 57405, 57406, 57407, 57408, 57409, 57411, 57412, 57413, 57414, 57416, 57417, 57418, 57419, 57420}, // state 371
		{40, 41, 42, 44, 91, 57377, 57485},   // state 372
		{40, 41, 44, 91, 57377},              // state 373
		{40, 42, 57448, 57377, 57485, 57486}, // state 374
		{40, 41, 42, 44, 58, 59, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 375
		{123},                        // state 376
		{57457, 57458, 57459, 57377}, // state 377
		{44, 61, 125},                // state 378
		{44, 125, 57440},             // state 379
		{44, 125},                    // state 380
		{44, 61, 125},                // state 381
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57442, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 382
		{44, 125},                  // state 383
		{125, 57457, 57458, 57377}, // state 384
		{125},                      // state 385
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 386
		{44, 125}, // state 387
		{40, 41, 42, 44, 58, 59, 91, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 388
		{123}, // state 389
		{57424, 57425, 125, 57352, 57356, 57358, 57359, 57367, 57369, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57413, 57414, 57416, 57417, 57418, 57419}, // state 390
		{125}, // state 391
		{57352, 57356, 57358, 57359, 57367, 57369, 57456, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57488, 57493, 57494, 57497, 57498, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419},      // state 392
		{57426, 125, 57352, 57356, 57358, 57359, 57367, 57369, 57456, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57488, 57493, 57497, 57498, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 393
		{125, 57352, 57356, 57358, 57359, 57367, 57369, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57413, 57414, 57416, 57417, 57418, 57419},                                                         // state 394
		{40, 42, 58, 59, 57448, 57449, 57377, 57485, 57486, 57495, 57496}, // state 395
		{44, 59}, // state 396
		{125, 57352, 57356, 57358, 57359, 57367, 57369, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57413, 57414, 57416, 57417, 57418, 57419}, // state 397
		{44, 59},     // state 398
		{44, 58, 59}, // state 399
		{58},         // state 400
		{33, 38, 40, 42, 43, 45, 126, 57347, 57357, 57442, 57362, 57460, 57373, 57377, 57379, 57382, 57385, 57386, 57406, 57408}, // state 401
		{44, 59}, // state 402
		{125, 57352, 57356, 57358, 57359, 57367, 57369, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57413, 57414, 57416, 57417, 57418, 57419}, // state 403
		{40, 42, 58, 57448, 57449, 57377, 57485, 57486, 57495}, // state 404
		{44, 59}, // state 405
		{125},    // state 406
		{125, 57352, 57356, 57358, 57359, 57367, 57369, 57372, 57381, 57384, 57400, 57404, 57405, 57409, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                                                                                              // state 407
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                      // state 408
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                                                      // state 409
		{33, 38, 40, 42, 43, 45, 126, 57347, 57352, 57356, 57357, 57358, 57359, 57362, 57367, 57369, 57456, 57460, 57372, 57373, 57377, 57379, 57381, 57382, 57384, 57385, 57386, 57400, 57404, 57405, 57406, 57408, 57409, 57488, 57497, 57498, 57413, 57414, 57499, 57500, 57503, 57416, 57417, 57418, 57419}, // state 410
		{37, 38, 40, 41, 42, 43, 45, 46, 47, 60, 61, 62, 63, 91, 94, 124, 57346, 57348, 57349, 57350, 57362, 57365, 57370, 57375, 57379, 57383, 57387, 57388, 57389, 57390, 57391, 57395, 57396, 57402, 57403, 57410, 57421},                                                                                    // state 411
		{41}, // state 412
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 413
		{40, 41, 42, 44, 58, 59, 91, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 414
		{40, 41, 42, 44, 59, 91, 57377}, // state 415
		{40, 41, 42, 44, 59, 91, 57377}, // state 416
		{40, 41, 42, 44, 59, 91, 57377}, // state 417
		{40, 41, 42, 44, 59, 91, 57377}, // state 418
		{40, 41, 42, 44, 59, 91, 57377}, // state 419
		{57430, 44, 59, 61, 123, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419},                                                           // state 420
		{123, 57351, 57352, 57356, 57358, 57359, 57367, 57443, 57444, 57445, 57446, 57369, 57371, 57456, 57372, 57469, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57492, 57497, 57498, 57412, 57413, 57414, 57500, 57503, 57416, 57417, 57418, 57419}, // state 421
		{57423, 123, 57467}, // state 422
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 423
		{57344, 40, 42, 57351, 57352, 57356, 57358, 57359, 57367, 57369, 57371, 57372, 57377, 57380, 57381, 57384, 57399, 57400, 57404, 57405, 57407, 57409, 57412, 57413, 57414, 57416, 57417, 57418, 57419}, // state 424
		{57344}, // state 425
	}

	yyXLAT = map[int]int{
		40:      0,   // '(' (298x)
		42:      1,   // '*' (268x)
		57377:   2,   // IDENTIFIER (214x)
		38:      3,   // '&' (205x)
		43:      4,   // '+' (205x)
		45:      5,   // '-' (205x)
		57362:   6,   // DEC (205x)
		57379:   7,   // INC (205x)
		59:      8,   // ';' (191x)
		41:      9,   // ')' (177x)
		44:      10,  // ',' (175x)
		91:      11,  // '[' (156x)
		33:      12,  // '!' (135x)
		126:     13,  // '~' (135x)
		57347:   14,  // ALIGNOF (135x)
		57357:   15,  // CHARCONST (135x)
		57373:   16,  // FLOATCONST (135x)
		57382:   17,  // INTCONST (135x)
		57385:   18,  // LONGCHARCONST (135x)
		57386:   19,  // LONGSTRINGLITERAL (135x)
		57406:   20,  // SIZEOF (135x)
		57408:   21,  // STRINGLITERAL (135x)
		57413:   22,  // TYPEDEF_NAME (122x)
		125:     23,  // '}' (121x)
		57359:   24,  // CONST (121x)
		57400:   25,  // RESTRICT (121x)
		57419:   26,  // VOLATILE (121x)
		57352:   27,  // BOOL (111x)
		57356:   28,  // CHAR (111x)
		57358:   29,  // COMPLEX (111x)
		57367:   30,  // DOUBLE (111x)
		57369:   31,  // ENUM (111x)
		57372:   32,  // FLOAT (111x)
		57381:   33,  // INT (111x)
		57384:   34,  // LONG (111x)
		57404:   35,  // SHORT (111x)
		57405:   36,  // SIGNED (111x)
		57409:   37,  // STRUCT (111x)
		57414:   38,  // TYPEOF (111x)
		57416:   39,  // UNION (111x)
		57417:   40,  // UNSIGNED (111x)
		57418:   41,  // VOID (111x)
		58:      42,  // ':' (110x)
		57407:   43,  // STATIC (104x)
		57351:   44,  // AUTO (98x)
		57371:   45,  // EXTERN (98x)
		57380:   46,  // INLINE (98x)
		57399:   47,  // REGISTER (98x)
		57412:   48,  // TYPEDEF (98x)
		57460:   49,  // Expr (95x)
		61:      50,  // '=' (90x)
		93:      51,  // ']' (84x)
		123:     52,  // '{' (82x)
		46:      53,  // '.' (80x)
		57344:   54,  // $end (72x)
		37:      55,  // '%' (72x)
		47:      56,  // '/' (72x)
		60:      57,  // '<' (72x)
		62:      58,  // '>' (72x)
		63:      59,  // '?' (72x)
		94:      60,  // '^' (72x)
		124:     61,  // '|' (72x)
		57346:   62,  // ADDASSIGN (72x)
		57348:   63,  // ANDAND (72x)
		57349:   64,  // ANDASSIGN (72x)
		57350:   65,  // ARROW (72x)
		57365:   66,  // DIVASSIGN (72x)
		57370:   67,  // EQ (72x)
		57375:   68,  // GEQ (72x)
		57383:   69,  // LEQ (72x)
		57387:   70,  // LSH (72x)
		57388:   71,  // LSHASSIGN (72x)
		57389:   72,  // MODASSIGN (72x)
		57390:   73,  // MULASSIGN (72x)
		57391:   74,  // NEQ (72x)
		57395:   75,  // ORASSIGN (72x)
		57396:   76,  // OROR (72x)
		57402:   77,  // RSH (72x)
		57403:   78,  // RSHASSIGN (72x)
		57410:   79,  // SUBASSIGN (72x)
		57421:   80,  // XORASSIGN (72x)
		57420:   81,  // WHILE (43x)
		57353:   82,  // BREAK (42x)
		57354:   83,  // CASE (42x)
		57360:   84,  // CONTINUE (42x)
		57363:   85,  // DEFAULT (42x)
		57366:   86,  // DO (42x)
		57374:   87,  // FOR (42x)
		57376:   88,  // GOTO (42x)
		57378:   89,  // IF (42x)
		57401:   90,  // RETURN (42x)
		57411:   91,  // SWITCH (42x)
		57500:   92,  // TypeQualifier (33x)
		57461:   93,  // ExprList (28x)
		57456:   94,  // EnumSpecifier (25x)
		57497:   95,  // StructOrUnion (25x)
		57498:   96,  // StructOrUnionSpecifier (25x)
		57503:   97,  // TypeSpecifier (25x)
		57368:   98,  // ELSE (23x)
		57462:   99,  // ExprListOpt (19x)
		57441:   100, // CompoundStmt (17x)
		57446:   101, // DeclarationSpecifiers (17x)
		57469:   102, // FunctionSpecifier (17x)
		57492:   103, // StorageClassSpecifier (17x)
		57464:   104, // ExprStmt (13x)
		57478:   105, // IterationStmt (13x)
		57479:   106, // JumpStmt (13x)
		57480:   107, // LabeledStmt (13x)
		57485:   108, // Pointer (13x)
		57487:   109, // SelectionStmt (13x)
		57491:   110, // Stmt (13x)
		57486:   111, // PointerOpt (12x)
		57448:   112, // Declarator (10x)
		57443:   113, // Declaration (8x)
		57488:   114, // SpecifierQualifierList (8x)
		57476:   115, // Initializer (6x)
		57442:   116, // ConstExpr (5x)
		57481:   117, // ParameterDeclaration (5x)
		57501:   118, // TypeQualifierList (5x)
		57433:   119, // AbstractDeclarator (4x)
		57447:   120, // DeclarationSpecifiersOpt (4x)
		57451:   121, // Designator (4x)
		57482:   122, // ParameterList (4x)
		57483:   123, // ParameterTypeList (4x)
		57499:   124, // TypeName (4x)
		57502:   125, // TypeQualifierListOpt (4x)
		57440:   126, // CommaOpt (3x)
		57450:   127, // Designation (3x)
		57452:   128, // DesignatorList (3x)
		57463:   129, // ExprOpt (3x)
		57473:   130, // InitDeclarator (3x)
		57484:   131, // ParameterTypeListOpt (3x)
		57423:   132, // $@10 (2x)
		57434:   133, // AbstractDeclaratorOpt (2x)
		57437:   134, // BlockItem (2x)
		57444:   135, // DeclarationList (2x)
		57445:   136, // DeclarationListOpt (2x)
		57449:   137, // DeclaratorOpt (2x)
		57453:   138, // DirectAbstractDeclarator (2x)
		57454:   139, // DirectAbstractDeclaratorOpt (2x)
		57455:   140, // DirectDeclarator (2x)
		57457:   141, // EnumerationConstant (2x)
		57458:   142, // Enumerator (2x)
		57465:   143, // ExternalDeclaration (2x)
		57467:   144, // FunctionBody (2x)
		57468:   145, // FunctionDefinition (2x)
		57472:   146, // IdentifierOpt (2x)
		57474:   147, // InitDeclaratorList (2x)
		57475:   148, // InitDeclaratorListOpt (2x)
		57477:   149, // InitializerList (2x)
		57489:   150, // SpecifierQualifierListOpt (2x)
		57493:   151, // StructDeclaration (2x)
		57495:   152, // StructDeclarator (2x)
		57422:   153, // $@1 (1x)
		57424:   154, // $@2 (1x)
		57425:   155, // $@3 (1x)
		57426:   156, // $@4 (1x)
		57427:   157, // $@5 (1x)
		57428:   158, // $@6 (1x)
		57429:   159, // $@7 (1x)
		57430:   160, // $@8 (1x)
		57431:   161, // $@9 (1x)
		57435:   162, // ArgumentExprList (1x)
		57436:   163, // ArgumentExprListOpt (1x)
		57438:   164, // BlockItemList (1x)
		57439:   165, // BlockItemListOpt (1x)
		1048576: 166, // CONSTANT_EXPRESSION (1x)
		57361:   167, // DDD (1x)
		57459:   168, // EnumeratorList (1x)
		57466:   169, // ExternalDeclarationList (1x)
		57470:   170, // IdentifierList (1x)
		57471:   171, // IdentifierListOpt (1x)
		57490:   172, // Start (1x)
		57494:   173, // StructDeclarationList (1x)
		57496:   174, // StructDeclaratorList (1x)
		1048577: 175, // TRANSLATION_UNIT (1x)
		57432:   176, // $default (0x)
		57355:   177, // CAST (0x)
		57364:   178, // DIRECTIVE (0x)
		57345:   179, // error (0x)
		57392:   180, // NOELSE (0x)
		57393:   181, // NON_REPL (0x)
		57394:   182, // NOSEMI (0x)
		57397:   183, // PPNUMBER (0x)
		57398:   184, // PPPASTE (0x)
		57415:   185, // UNARY (0x)
		57504:   186, // VolatileOpt (0x)
	}

	yySymNames = []string{
		"'('",
		"'*'",
		"IDENTIFIER",
		"'&'",
		"'+'",
		"'-'",
		"DEC",
		"INC",
		"';'",
		"')'",
		"','",
		"'['",
		"'!'",
		"'~'",
		"ALIGNOF",
		"CHARCONST",
		"FLOATCONST",
		"INTCONST",
		"LONGCHARCONST",
		"LONGSTRINGLITERAL",
		"SIZEOF",
		"STRINGLITERAL",
		"TYPEDEF_NAME",
		"'}'",
		"CONST",
		"RESTRICT",
		"VOLATILE",
		"BOOL",
		"CHAR",
		"COMPLEX",
		"DOUBLE",
		"ENUM",
		"FLOAT",
		"INT",
		"LONG",
		"SHORT",
		"SIGNED",
		"STRUCT",
		"TYPEOF",
		"UNION",
		"UNSIGNED",
		"VOID",
		"':'",
		"STATIC",
		"AUTO",
		"EXTERN",
		"INLINE",
		"REGISTER",
		"TYPEDEF",
		"Expr",
		"'='",
		"']'",
		"'{'",
		"'.'",
		"$end",
		"'%'",
		"'/'",
		"'<'",
		"'>'",
		"'?'",
		"'^'",
		"'|'",
		"ADDASSIGN",
		"ANDAND",
		"ANDASSIGN",
		"ARROW",
		"DIVASSIGN",
		"EQ",
		"GEQ",
		"LEQ",
		"LSH",
		"LSHASSIGN",
		"MODASSIGN",
		"MULASSIGN",
		"NEQ",
		"ORASSIGN",
		"OROR",
		"RSH",
		"RSHASSIGN",
		"SUBASSIGN",
		"XORASSIGN",
		"WHILE",
		"BREAK",
		"CASE",
		"CONTINUE",
		"DEFAULT",
		"DO",
		"FOR",
		"GOTO",
		"IF",
		"RETURN",
		"SWITCH",
		"TypeQualifier",
		"ExprList",
		"EnumSpecifier",
		"StructOrUnion",
		"StructOrUnionSpecifier",
		"TypeSpecifier",
		"ELSE",
		"ExprListOpt",
		"CompoundStmt",
		"DeclarationSpecifiers",
		"FunctionSpecifier",
		"StorageClassSpecifier",
		"ExprStmt",
		"IterationStmt",
		"JumpStmt",
		"LabeledStmt",
		"Pointer",
		"SelectionStmt",
		"Stmt",
		"PointerOpt",
		"Declarator",
		"Declaration",
		"SpecifierQualifierList",
		"Initializer",
		"ConstExpr",
		"ParameterDeclaration",
		"TypeQualifierList",
		"AbstractDeclarator",
		"DeclarationSpecifiersOpt",
		"Designator",
		"ParameterList",
		"ParameterTypeList",
		"TypeName",
		"TypeQualifierListOpt",
		"CommaOpt",
		"Designation",
		"DesignatorList",
		"ExprOpt",
		"InitDeclarator",
		"ParameterTypeListOpt",
		"$@10",
		"AbstractDeclaratorOpt",
		"BlockItem",
		"DeclarationList",
		"DeclarationListOpt",
		"DeclaratorOpt",
		"DirectAbstractDeclarator",
		"DirectAbstractDeclaratorOpt",
		"DirectDeclarator",
		"EnumerationConstant",
		"Enumerator",
		"ExternalDeclaration",
		"FunctionBody",
		"FunctionDefinition",
		"IdentifierOpt",
		"InitDeclaratorList",
		"InitDeclaratorListOpt",
		"InitializerList",
		"SpecifierQualifierListOpt",
		"StructDeclaration",
		"StructDeclarator",
		"$@1",
		"$@2",
		"$@3",
		"$@4",
		"$@5",
		"$@6",
		"$@7",
		"$@8",
		"$@9",
		"ArgumentExprList",
		"ArgumentExprListOpt",
		"BlockItemList",
		"BlockItemListOpt",
		"CONSTANT_EXPRESSION",
		"DDD",
		"EnumeratorList",
		"ExternalDeclarationList",
		"IdentifierList",
		"IdentifierListOpt",
		"Start",
		"StructDeclarationList",
		"StructDeclaratorList",
		"TRANSLATION_UNIT",
		"$default",
		"CAST",
		"DIRECTIVE",
		"error",
		"NOELSE",
		"NON_REPL",
		"NOSEMI",
		"PPNUMBER",
		"PPPASTE",
		"UNARY",
		"VolatileOpt",
	}

	yyTokenLiteralStrings = map[int]string{
		57377:   "identifier",
		57362:   "--",
		57379:   "++",
		57347:   "__alignof__",
		57357:   "character constant",
		57373:   "floating-point constant",
		57382:   "integer constant",
		57385:   "long character constant",
		57386:   "long string constant",
		57406:   "sizeof",
		57408:   "string literal",
		57413:   "typedef name",
		57359:   "const",
		57400:   "restrict",
		57419:   "volatile",
		57352:   "_Bool",
		57356:   "char",
		57358:   "_Complex",
		57367:   "double",
		57369:   "enum",
		57372:   "float",
		57381:   "int",
		57384:   "long",
		57404:   "short",
		57405:   "signed",
		57409:   "struct",
		57414:   "typeof",
		57416:   "union",
		57417:   "unsigned",
		57418:   "void",
		57407:   "static",
		57351:   "auto",
		57371:   "extern",
		57380:   "inline",
		57399:   "register",
		57412:   "typedef",
		57346:   "+=",
		57348:   "&&",
		57349:   "&=",
		57350:   "->",
		57365:   "/=",
		57370:   "==",
		57375:   ">=",
		57383:   "<=",
		57387:   "<<",
		57388:   "<<=",
		57389:   "%=",
		57390:   "*=",
		57391:   "!=",
		57395:   "|=",
		57396:   "||",
		57402:   ">>",
		57403:   ">>=",
		57410:   "-=",
		57421:   "^=",
		57420:   "while",
		57353:   "break",
		57354:   "case",
		57360:   "continue",
		57363:   "default",
		57366:   "do",
		57374:   "for",
		57376:   "goto",
		57378:   "if",
		57401:   "return",
		57411:   "switch",
		57368:   "else",
		1048576: "constant expression prefix",
		57361:   "...",
		1048577: "translation unit prefix",
		57397:   "preprocessing number",
		57398:   "##",
	}

	yyReductions = map[int]struct{ xsym, components int }{
		0:   {0, 1},
		1:   {172, 2},
		2:   {172, 2},
		3:   {141, 1},
		4:   {162, 1},
		5:   {162, 3},
		6:   {163, 0},
		7:   {163, 1},
		8:   {49, 2},
		9:   {49, 2},
		10:  {49, 4},
		11:  {49, 2},
		12:  {49, 4},
		13:  {49, 2},
		14:  {49, 2},
		15:  {49, 2},
		16:  {49, 3},
		17:  {49, 3},
		18:  {49, 7},
		19:  {49, 4},
		20:  {49, 2},
		21:  {49, 2},
		22:  {49, 2},
		23:  {49, 2},
		24:  {49, 1},
		25:  {49, 3},
		26:  {49, 3},
		27:  {49, 3},
		28:  {49, 3},
		29:  {49, 3},
		30:  {49, 2},
		31:  {49, 3},
		32:  {49, 2},
		33:  {49, 3},
		34:  {49, 3},
		35:  {49, 3},
		36:  {49, 3},
		37:  {49, 3},
		38:  {49, 3},
		39:  {49, 3},
		40:  {49, 3},
		41:  {49, 3},
		42:  {49, 3},
		43:  {49, 3},
		44:  {49, 3},
		45:  {49, 3},
		46:  {49, 3},
		47:  {49, 3},
		48:  {49, 4},
		49:  {49, 3},
		50:  {49, 3},
		51:  {49, 3},
		52:  {49, 3},
		53:  {49, 3},
		54:  {49, 3},
		55:  {49, 3},
		56:  {49, 3},
		57:  {49, 5},
		58:  {49, 4},
		59:  {49, 3},
		60:  {49, 3},
		61:  {49, 1},
		62:  {49, 1},
		63:  {49, 1},
		64:  {49, 1},
		65:  {49, 1},
		66:  {49, 1},
		67:  {129, 0},
		68:  {129, 1},
		69:  {93, 1},
		70:  {93, 3},
		71:  {99, 0},
		72:  {99, 1},
		73:  {116, 1},
		74:  {153, 0},
		75:  {113, 4},
		76:  {101, 2},
		77:  {101, 2},
		78:  {101, 2},
		79:  {101, 2},
		80:  {120, 0},
		81:  {120, 1},
		82:  {147, 1},
		83:  {147, 3},
		84:  {148, 0},
		85:  {148, 1},
		86:  {130, 1},
		87:  {130, 3},
		88:  {103, 1},
		89:  {103, 1},
		90:  {103, 1},
		91:  {103, 1},
		92:  {103, 1},
		93:  {97, 1},
		94:  {97, 1},
		95:  {97, 1},
		96:  {97, 1},
		97:  {97, 1},
		98:  {97, 1},
		99:  {97, 1},
		100: {97, 1},
		101: {97, 1},
		102: {97, 1},
		103: {97, 1},
		104: {97, 1},
		105: {97, 1},
		106: {97, 1},
		107: {97, 4},
		108: {97, 4},
		109: {96, 2},
		110: {154, 0},
		111: {96, 5},
		112: {155, 0},
		113: {156, 0},
		114: {96, 7},
		115: {95, 1},
		116: {95, 1},
		117: {173, 1},
		118: {173, 2},
		119: {151, 3},
		120: {151, 2},
		121: {114, 2},
		122: {114, 2},
		123: {150, 0},
		124: {150, 1},
		125: {174, 1},
		126: {174, 3},
		127: {152, 1},
		128: {152, 3},
		129: {126, 0},
		130: {126, 1},
		131: {94, 2},
		132: {94, 6},
		133: {168, 1},
		134: {168, 3},
		135: {142, 1},
		136: {142, 3},
		137: {92, 1},
		138: {92, 1},
		139: {92, 1},
		140: {102, 1},
		141: {112, 2},
		142: {137, 0},
		143: {137, 1},
		144: {140, 3},
		145: {157, 0},
		146: {140, 5},
		147: {158, 0},
		148: {140, 5},
		149: {140, 6},
		150: {140, 6},
		151: {140, 5},
		152: {140, 5},
		153: {140, 1},
		154: {108, 2},
		155: {108, 3},
		156: {111, 0},
		157: {111, 1},
		158: {118, 1},
		159: {118, 2},
		160: {125, 0},
		161: {125, 1},
		162: {123, 1},
		163: {123, 3},
		164: {131, 0},
		165: {131, 1},
		166: {122, 1},
		167: {122, 3},
		168: {117, 2},
		169: {117, 2},
		170: {170, 1},
		171: {170, 3},
		172: {171, 0},
		173: {171, 1},
		174: {146, 0},
		175: {146, 1},
		176: {124, 2},
		177: {119, 1},
		178: {119, 2},
		179: {133, 0},
		180: {133, 1},
		181: {138, 3},
		182: {138, 3},
		183: {138, 4},
		184: {138, 6},
		185: {138, 4},
		186: {138, 4},
		187: {138, 6},
		188: {138, 5},
		189: {139, 0},
		190: {139, 1},
		191: {115, 4},
		192: {115, 1},
		193: {149, 0},
		194: {149, 1},
		195: {149, 2},
		196: {149, 3},
		197: {149, 4},
		198: {127, 2},
		199: {128, 1},
		200: {128, 2},
		201: {121, 2},
		202: {121, 3},
		203: {110, 1},
		204: {110, 1},
		205: {110, 1},
		206: {110, 1},
		207: {110, 1},
		208: {110, 1},
		209: {107, 4},
		210: {107, 3},
		211: {107, 3},
		212: {107, 3},
		213: {159, 0},
		214: {100, 4},
		215: {164, 1},
		216: {164, 2},
		217: {165, 0},
		218: {165, 1},
		219: {134, 1},
		220: {134, 1},
		221: {104, 2},
		222: {109, 7},
		223: {109, 5},
		224: {109, 5},
		225: {105, 7},
		226: {105, 8},
		227: {105, 9},
		228: {105, 5},
		229: {106, 2},
		230: {106, 2},
		231: {106, 3},
		232: {106, 3},
		233: {169, 1},
		234: {169, 2},
		235: {143, 1},
		236: {143, 1},
		237: {160, 0},
		238: {145, 5},
		239: {161, 0},
		240: {145, 4},
		241: {132, 0},
		242: {144, 2},
		243: {135, 1},
		244: {135, 2},
		245: {136, 0},
		246: {136, 1},
		247: {186, 0},
		248: {186, 1},
	}

	yyXErrors = map[yyXError]string{
		{0, 54}:   "invalid empty input",
		{1, -1}:   "expected $end",
		{425, -1}: "expected $end",
		{29, -1}:  "expected '('",
		{91, -1}:  "expected '('",
		{92, -1}:  "expected '('",
		{94, -1}:  "expected '('",
		{95, -1}:  "expected '('",
		{209, -1}: "expected '('",
		{169, -1}: "expected ')'",
		{200, -1}: "expected ')'",
		{205, -1}: "expected ')'",
		{239, -1}: "expected ')'",
		{241, -1}: "expected ')'",
		{246, -1}: "expected ')'",
		{272, -1}: "expected ')'",
		{275, -1}: "expected ')'",
		{276, -1}: "expected ')'",
		{285, -1}: "expected ')'",
		{304, -1}: "expected ')'",
		{306, -1}: "expected ')'",
		{313, -1}: "expected ')'",
		{316, -1}: "expected ')'",
		{354, -1}: "expected ')'",
		{358, -1}: "expected ')'",
		{412, -1}: "expected ')'",
		{84, -1}:  "expected ':'",
		{111, -1}: "expected ':'",
		{230, -1}: "expected ':'",
		{400, -1}: "expected ':'",
		{90, -1}:  "expected ';'",
		{96, -1}:  "expected ';'",
		{97, -1}:  "expected ';'",
		{101, -1}: "expected ';'",
		{103, -1}: "expected ';'",
		{196, -1}: "expected ';'",
		{198, -1}: "expected ';'",
		{203, -1}: "expected ';'",
		{212, -1}: "expected ';'",
		{362, -1}: "expected ';'",
		{370, -1}: "expected ';'",
		{251, -1}: "expected '['",
		{258, -1}: "expected ']'",
		{266, -1}: "expected ']'",
		{293, -1}: "expected ']'",
		{333, -1}: "expected ']'",
		{376, -1}: "expected '{'",
		{389, -1}: "expected '{'",
		{85, -1}:  "expected '}'",
		{341, -1}: "expected '}'",
		{346, -1}: "expected '}'",
		{385, -1}: "expected '}'",
		{391, -1}: "expected '}'",
		{406, -1}: "expected '}'",
		{0, -1}:   "expected Start or one of [constant expression prefix, translation unit prefix]",
		{283, -1}: "expected abstract declarator or declarator or optional parameter type list or one of ['(', ')', '*', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{250, -1}: "expected abstract declarator or optional parameter type list or one of ['(', ')', '*', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{87, -1}:  "expected block item or one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{52, -1}:  "expected compound statement or '{'",
		{62, -1}:  "expected compound statement or expression list or type name or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Bool, _Complex, __alignof__, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{352, -1}: "expected compound statement or expression list or type name or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Bool, _Complex, __alignof__, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{356, -1}: "expected compound statement or expression list or type name or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, _Bool, _Complex, __alignof__, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{2, -1}:   "expected constant expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{83, -1}:  "expected constant expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{332, -1}: "expected constant expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{382, -1}: "expected constant expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{401, -1}: "expected constant expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{49, -1}:  "expected declaration or one of ['{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{194, -1}: "expected declaration or optional expression list or one of ['!', '&', '(', '*', '+', '-', ';', '~', ++, --, _Bool, _Complex, __alignof__, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{374, -1}: "expected declarator or one of ['(', '*', identifier]",
		{274, -1}: "expected declarator or optional abstract declarator or one of ['(', ')', '*', ',', '[', identifier]",
		{5, -1}:   "expected declarator or optional init declarator list or one of ['(', '*', ';', identifier]",
		{340, -1}: "expected designation or initializer or one of ['!', '&', '(', '*', '+', '-', '.', '[', '{', '}', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{329, -1}: "expected designator or one of ['.', '=', '[']",
		{279, -1}: "expected direct abstract declarator or direct declarator or one of ['(', '[', identifier]",
		{247, -1}: "expected direct abstract declarator or one of ['(', '[']",
		{38, -1}:  "expected direct declarator or one of ['(', identifier]",
		{377, -1}: "expected enumerator list or identifier",
		{384, -1}: "expected enumerator or one of ['}', identifier]",
		{107, -1}: "expected expression list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{148, -1}: "expected expression list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{149, -1}: "expected expression list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{210, -1}: "expected expression list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{214, -1}: "expected expression list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{218, -1}: "expected expression list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{355, -1}: "expected expression or one of [!=, $end, %=, &&, &=, '!', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '{', '|', '}', '~', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal, |=, ||]",
		{359, -1}: "expected expression or one of [!=, $end, %=, &&, &=, '!', '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '{', '|', '}', '~', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal, |=, ||]",
		{253, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{292, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{321, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{56, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{57, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{58, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{59, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{60, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{61, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{63, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{64, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{65, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{66, -1}:  "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{109, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{116, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{117, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{118, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{119, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{120, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{122, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{124, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{126, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{127, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{128, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{129, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{130, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{131, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{132, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{133, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{134, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{135, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{136, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{137, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{138, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{140, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{141, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{142, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{144, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{145, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{146, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{147, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{150, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{151, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{157, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{171, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{261, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{265, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{296, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{299, -1}: "expected expression or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{257, -1}: "expected expression or optional type qualifier list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, string literal, volatile]",
		{289, -1}: "expected expression or optional type qualifier list or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, string literal, volatile]",
		{410, -1}: "expected expression or type name or one of ['!', '&', '(', '*', '+', '-', '~', ++, --, _Bool, _Complex, __alignof__, char, character constant, const, double, enum, float, floating-point constant, identifier, int, integer constant, long, long character constant, long string constant, restrict, short, signed, sizeof, string literal, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{3, -1}:   "expected external declaration list or one of ['(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{4, -1}:   "expected external declaration or one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{47, -1}:  "expected function body or '{'",
		{422, -1}: "expected function body or '{'",
		{420, -1}: "expected function body or optional declaration list or one of [',', ';', '=', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{44, -1}:  "expected function body or optional declaration list or one of ['{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{45, -1}:  "expected function body or optional declaration list or one of ['{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{421, -1}: "expected function body or optional declaration list or one of ['{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{98, -1}:  "expected identifier",
		{125, -1}: "expected identifier",
		{143, -1}: "expected identifier",
		{309, -1}: "expected identifier",
		{331, -1}: "expected identifier",
		{368, -1}: "expected init declarator or one of ['(', '*', identifier]",
		{322, -1}: "expected initializer list or optional comma or one of ['!', '&', '(', '*', '+', ',', '-', '.', '[', '{', '}', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{326, -1}: "expected initializer list or optional comma or one of ['!', '&', '(', '*', '+', ',', '-', '.', '[', '{', '}', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{328, -1}: "expected initializer or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{344, -1}: "expected initializer or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{366, -1}: "expected initializer or one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{67, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{69, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{71, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{72, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{73, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{74, -1}:  "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{100, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{121, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{123, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{152, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{153, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{155, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{158, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{159, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{160, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{161, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{162, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{163, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{164, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{165, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{166, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{170, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{173, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{174, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{175, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{176, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{177, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{178, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{179, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{180, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{181, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{182, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{183, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{184, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{185, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{186, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{187, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{188, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{189, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{190, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{191, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{192, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{193, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{235, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{236, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{237, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{238, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{323, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{347, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{348, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{349, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{350, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{351, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{353, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{357, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{360, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{361, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{229, -1}: "expected one of [!=, $end, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{68, -1}:  "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{115, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{167, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{172, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', ',', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{411, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', ')', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{70, -1}:  "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '[', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{325, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', ',', '-', '.', '/', ';', '<', '=', '>', '?', '[', '^', '|', '}', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{254, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{262, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{268, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{297, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{300, -1}: "expected one of [!=, %=, &&, &=, '%', '&', '(', '*', '+', '-', '.', '/', '<', '=', '>', '?', '[', ']', '^', '|', *=, ++, +=, --, -=, ->, /=, <<, <<=, <=, ==, >=, >>, >>=, ^=, |=, ||]",
		{226, -1}: "expected one of [$end, '!', '&', '(', ')', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{371, -1}: "expected one of [$end, '!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{41, -1}:  "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{42, -1}:  "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{43, -1}:  "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{51, -1}:  "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{54, -1}:  "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{423, -1}: "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{424, -1}: "expected one of [$end, '(', '*', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{34, -1}:  "expected one of ['!', '&', '(', ')', '*', '+', ',', '-', ':', ';', '[', ']', '~', ++, --, _Bool, _Complex, __alignof__, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{35, -1}:  "expected one of ['!', '&', '(', ')', '*', '+', ',', '-', ':', ';', '[', ']', '~', ++, --, _Bool, _Complex, __alignof__, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{36, -1}:  "expected one of ['!', '&', '(', ')', '*', '+', ',', '-', ':', ';', '[', ']', '~', ++, --, _Bool, _Complex, __alignof__, auto, char, character constant, const, double, enum, extern, float, floating-point constant, identifier, inline, int, integer constant, long, long character constant, long string constant, register, restrict, short, signed, sizeof, static, string literal, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{255, -1}: "expected one of ['!', '&', '(', ')', '*', '+', ',', '-', '[', ']', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{264, -1}: "expected one of ['!', '&', '(', ')', '*', '+', ',', '-', '[', ']', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{77, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{78, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{79, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{80, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{81, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{82, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{102, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{104, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{105, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{106, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{112, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{114, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{202, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{207, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{213, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{217, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{221, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{223, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{224, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{228, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{232, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{234, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, else, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{86, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{88, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{89, -1}:  "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{225, -1}: "expected one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{336, -1}: "expected one of ['!', '&', '(', '*', '+', '-', '{', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{375, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{388, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{15, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{16, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{17, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{18, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{19, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{20, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{21, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{22, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{23, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{24, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{25, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{26, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{27, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{28, -1}:  "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{386, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{408, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{409, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{413, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{414, -1}: "expected one of ['(', ')', '*', ',', ':', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{10, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{11, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{12, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{13, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{14, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{37, -1}:  "expected one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{415, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{416, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{417, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{418, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{419, -1}: "expected one of ['(', ')', '*', ',', ';', '[', identifier]",
		{318, -1}: "expected one of ['(', ')', '*', ':', ';', '[', identifier]",
		{319, -1}: "expected one of ['(', ')', '*', ':', ';', '[', identifier]",
		{320, -1}: "expected one of ['(', ')', '*', ':', ';', '[', identifier]",
		{282, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{284, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{286, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{294, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{295, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{298, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{301, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{305, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{311, -1}: "expected one of ['(', ')', ',', ':', ';', '=', '[', '{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{245, -1}: "expected one of ['(', ')', ',', '[', identifier]",
		{373, -1}: "expected one of ['(', ')', ',', '[', identifier]",
		{249, -1}: "expected one of ['(', ')', ',', '[']",
		{259, -1}: "expected one of ['(', ')', ',', '[']",
		{263, -1}: "expected one of ['(', ')', ',', '[']",
		{267, -1}: "expected one of ['(', ')', ',', '[']",
		{269, -1}: "expected one of ['(', ')', ',', '[']",
		{270, -1}: "expected one of ['(', ')', ',', '[']",
		{277, -1}: "expected one of ['(', ')', ',', '[']",
		{278, -1}: "expected one of ['(', ')', ',', '[']",
		{317, -1}: "expected one of ['(', ')', ',', '[']",
		{76, -1}:  "expected one of ['(', '*', ':', ';', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{40, -1}:  "expected one of ['(', identifier]",
		{75, -1}:  "expected one of [')', ',', ';']",
		{108, -1}: "expected one of [')', ',']",
		{168, -1}: "expected one of [')', ',']",
		{211, -1}: "expected one of [')', ',']",
		{215, -1}: "expected one of [')', ',']",
		{219, -1}: "expected one of [')', ',']",
		{240, -1}: "expected one of [')', ',']",
		{248, -1}: "expected one of [')', ',']",
		{271, -1}: "expected one of [')', ',']",
		{273, -1}: "expected one of [')', ',']",
		{280, -1}: "expected one of [')', ',']",
		{281, -1}: "expected one of [')', ',']",
		{307, -1}: "expected one of [')', ',']",
		{308, -1}: "expected one of [')', ',']",
		{310, -1}: "expected one of [')', ',']",
		{314, -1}: "expected one of [')', ',']",
		{399, -1}: "expected one of [',', ':', ';']",
		{156, -1}: "expected one of [',', ':']",
		{365, -1}: "expected one of [',', ';', '=']",
		{342, -1}: "expected one of [',', ';', '}']",
		{363, -1}: "expected one of [',', ';']",
		{364, -1}: "expected one of [',', ';']",
		{367, -1}: "expected one of [',', ';']",
		{369, -1}: "expected one of [',', ';']",
		{396, -1}: "expected one of [',', ';']",
		{398, -1}: "expected one of [',', ';']",
		{402, -1}: "expected one of [',', ';']",
		{405, -1}: "expected one of [',', ';']",
		{378, -1}: "expected one of [',', '=', '}']",
		{381, -1}: "expected one of [',', '=', '}']",
		{154, -1}: "expected one of [',', ']']",
		{327, -1}: "expected one of [',', '}']",
		{338, -1}: "expected one of [',', '}']",
		{343, -1}: "expected one of [',', '}']",
		{345, -1}: "expected one of [',', '}']",
		{380, -1}: "expected one of [',', '}']",
		{383, -1}: "expected one of [',', '}']",
		{387, -1}: "expected one of [',', '}']",
		{330, -1}: "expected one of ['.', '=', '[']",
		{334, -1}: "expected one of ['.', '=', '[']",
		{335, -1}: "expected one of ['.', '=', '[']",
		{337, -1}: "expected one of ['.', '=', '[']",
		{48, -1}:  "expected one of ['{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{50, -1}:  "expected one of ['{', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{31, -1}:  "expected one of ['{', identifier]",
		{32, -1}:  "expected one of ['{', identifier]",
		{394, -1}: "expected one of ['}', _Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{397, -1}: "expected one of ['}', _Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{403, -1}: "expected one of ['}', _Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{407, -1}: "expected one of ['}', _Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{244, -1}: "expected optional abstract declarator or one of ['(', ')', '*', '[']",
		{139, -1}: "expected optional argument expression list or one of ['!', '&', '(', ')', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{53, -1}:  "expected optional block item list or one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{55, -1}:  "expected optional block item list or one of ['!', '&', '(', '*', '+', '-', ';', '{', '}', '~', ++, --, _Bool, _Complex, __alignof__, auto, break, case, char, character constant, const, continue, default, do, double, enum, extern, float, floating-point constant, for, goto, identifier, if, inline, int, integer constant, long, long character constant, long string constant, register, restrict, return, short, signed, sizeof, static, string literal, struct, switch, typedef, typedef name, typeof, union, unsigned, void, volatile, while]",
		{324, -1}: "expected optional comma or one of [',', '}']",
		{339, -1}: "expected optional comma or one of [',', '}']",
		{379, -1}: "expected optional comma or one of [',', '}']",
		{6, -1}:   "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{7, -1}:   "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{8, -1}:   "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{9, -1}:   "expected optional declaration specifiers or one of ['(', ')', '*', ',', ';', '[', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{199, -1}: "expected optional expression list or one of ['!', '&', '(', ')', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{204, -1}: "expected optional expression list or one of ['!', '&', '(', ')', '*', '+', '-', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{99, -1}:  "expected optional expression list or one of ['!', '&', '(', '*', '+', '-', ';', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{195, -1}: "expected optional expression list or one of ['!', '&', '(', '*', '+', '-', ';', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{197, -1}: "expected optional expression list or one of ['!', '&', '(', '*', '+', '-', ';', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{291, -1}: "expected optional expression or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, floating-point constant, identifier, integer constant, long character constant, long string constant, sizeof, string literal]",
		{288, -1}: "expected optional expression or optional type qualifier list or type qualifier list or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{252, -1}: "expected optional expression or type qualifier list or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{256, -1}: "expected optional expression or type qualifier or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{302, -1}: "expected optional identifier list or one of [')', identifier]",
		{287, -1}: "expected optional identifier list or parameter type list or one of [')', _Bool, _Complex, auto, char, const, double, enum, extern, float, identifier, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{30, -1}:  "expected optional identifier or one of ['{', identifier]",
		{33, -1}:  "expected optional identifier or one of ['{', identifier]",
		{46, -1}:  "expected optional init declarator list or one of ['(', '*', ';', identifier]",
		{315, -1}: "expected optional parameter type list or one of [')', _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{242, -1}: "expected optional specifier qualifier list or one of ['(', ')', '*', ':', ';', '[', _Bool, _Complex, char, const, double, enum, float, identifier, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{243, -1}: "expected optional specifier qualifier list or one of ['(', ')', '*', ':', ';', '[', _Bool, _Complex, char, const, double, enum, float, identifier, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{39, -1}:  "expected optional type qualifier list or pointer or one of ['(', ')', '*', ',', '[', const, identifier, restrict, volatile]",
		{312, -1}: "expected parameter declaration or one of [..., _Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{303, -1}: "expected parameter type list or one of [_Bool, _Complex, auto, char, const, double, enum, extern, float, inline, int, long, register, restrict, short, signed, static, struct, typedef, typedef name, typeof, union, unsigned, void, volatile]",
		{372, -1}: "expected pointer or one of ['(', ')', '*', ',', '[', identifier]",
		{93, -1}:  "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{110, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{113, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{201, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{206, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{216, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{220, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{222, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{227, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{231, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{233, -1}: "expected statement or one of ['!', '&', '(', '*', '+', '-', ';', '{', '~', ++, --, __alignof__, break, case, character constant, continue, default, do, floating-point constant, for, goto, identifier, if, integer constant, long character constant, long string constant, return, sizeof, string literal, switch, typedef name, while]",
		{390, -1}: "expected struct declaration list or one of ['}', _Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{392, -1}: "expected struct declaration list or one of [_Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{393, -1}: "expected struct declaration or one of ['}', _Bool, _Complex, char, const, double, enum, float, int, long, restrict, short, signed, struct, typedef name, typeof, union, unsigned, void, volatile]",
		{395, -1}: "expected struct declarator list or one of ['(', '*', ':', ';', identifier]",
		{404, -1}: "expected struct declarator or one of ['(', '*', ':', identifier]",
		{260, -1}: "expected type qualifier or one of ['!', '&', '(', ')', '*', '+', ',', '-', '[', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, string literal, volatile]",
		{290, -1}: "expected type qualifier or one of ['!', '&', '(', '*', '+', '-', ']', '~', ++, --, __alignof__, character constant, const, floating-point constant, identifier, integer constant, long character constant, long string constant, restrict, sizeof, static, string literal, volatile]",
		{208, -1}: "expected while",
	}

	yyParseTab = [426][]uint16{
		// 0
		{166: 249, 172: 248, 175: 250},
		{54: 247},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 476, 116: 672},
		{91, 286, 91, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 252, 253, 254, 108: 287, 111: 285, 291, 289, 143: 288, 145: 290, 169: 251},
		{91, 286, 91, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 54: 245, 92: 255, 94: 273, 277, 274, 256, 101: 252, 253, 254, 108: 287, 111: 285, 291, 289, 143: 671, 145: 290},
		// 5
		{91, 286, 91, 8: 163, 108: 287, 111: 285, 667, 130: 610, 147: 611, 609},
		{167, 167, 167, 8: 167, 167, 167, 167, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 663, 253, 254, 120: 666},
		{167, 167, 167, 8: 167, 167, 167, 167, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 663, 253, 254, 120: 665},
		{167, 167, 167, 8: 167, 167, 167, 167, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 663, 253, 254, 120: 664},
		{167, 167, 167, 8: 167, 167, 167, 167, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 663, 253, 254, 120: 662},
		// 10
		{159, 159, 159, 8: 159, 159, 159, 159, 22: 159, 24: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 43: 159, 159, 159, 159, 159, 159},
		{158, 158, 158, 8: 158, 158, 158, 158, 22: 158, 24: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 43: 158, 158, 158, 158, 158, 158},
		{157, 157, 157, 8: 157, 157, 157, 157, 22: 157, 24: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 43: 157, 157, 157, 157, 157, 157},
		{156, 156, 156, 8: 156, 156, 156, 156, 22: 156, 24: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 43: 156, 156, 156, 156, 156, 156},
		{155, 155, 155, 8: 155, 155, 155, 155, 22: 155, 24: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 43: 155, 155, 155, 155, 155, 155},
		// 15
		{154, 154, 154, 8: 154, 154, 154, 154, 22: 154, 24: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154},
		{153, 153, 153, 8: 153, 153, 153, 153, 22: 153, 24: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153},
		{152, 152, 152, 8: 152, 152, 152, 152, 22: 152, 24: 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152},
		{151, 151, 151, 8: 151, 151, 151, 151, 22: 151, 24: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151},
		{150, 150, 150, 8: 150, 150, 150, 150, 22: 150, 24: 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150},
		// 20
		{149, 149, 149, 8: 149, 149, 149, 149, 22: 149, 24: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149},
		{148, 148, 148, 8: 148, 148, 148, 148, 22: 148, 24: 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148},
		{147, 147, 147, 8: 147, 147, 147, 147, 22: 147, 24: 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147},
		{146, 146, 146, 8: 146, 146, 146, 146, 22: 146, 24: 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146},
		{145, 145, 145, 8: 145, 145, 145, 145, 22: 145, 24: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145},
		// 25
		{144, 144, 144, 8: 144, 144, 144, 144, 22: 144, 24: 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144},
		{143, 143, 143, 8: 143, 143, 143, 143, 22: 143, 24: 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143},
		{142, 142, 142, 8: 142, 142, 142, 142, 22: 142, 24: 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142},
		{141, 141, 141, 8: 141, 141, 141, 141, 22: 141, 24: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141},
		{657},
		// 30
		{2: 635, 52: 73, 146: 636},
		{2: 132, 52: 132},
		{2: 131, 52: 131},
		{2: 622, 52: 73, 146: 623},
		{110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 24: 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 51: 110},
		// 35
		{109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 24: 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 51: 109},
		{108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 24: 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 51: 108},
		{107, 107, 107, 8: 107, 107, 107, 107, 22: 107, 24: 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 43: 107, 107, 107, 107, 107, 107},
		{621, 2: 531, 140: 529},
		{87, 87, 87, 9: 87, 87, 87, 24: 281, 282, 283, 92: 502, 118: 507, 125: 619},
		// 40
		{90, 2: 90},
		{14, 14, 14, 22: 14, 24: 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 43: 14, 14, 14, 14, 14, 14, 54: 14},
		{12, 12, 12, 22: 12, 24: 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 43: 12, 12, 12, 12, 12, 12, 54: 12},
		{11, 11, 11, 22: 11, 24: 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 43: 11, 11, 11, 11, 11, 11, 54: 11},
		{22: 8, 24: 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 43: 8, 8, 8, 8, 8, 8, 52: 8, 161: 292},
		// 45
		{22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 52: 2, 92: 255, 94: 273, 277, 274, 256, 101: 293, 253, 254, 113: 295, 135: 296, 294},
		{91, 286, 91, 8: 163, 108: 287, 111: 285, 612, 130: 610, 147: 611, 609},
		{52: 6, 132: 299, 144: 298},
		{22: 4, 24: 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 43: 4, 4, 4, 4, 4, 4, 52: 4},
		{22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 52: 1, 92: 255, 94: 273, 277, 274, 256, 101: 293, 253, 254, 113: 297},
		// 50
		{22: 3, 24: 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 43: 3, 3, 3, 3, 3, 3, 52: 3},
		{7, 7, 7, 22: 7, 24: 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 43: 7, 7, 7, 7, 7, 7, 54: 7},
		{52: 300, 100: 301},
		{34, 34, 34, 34, 34, 34, 34, 34, 34, 12: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 43: 34, 34, 34, 34, 34, 34, 52: 34, 81: 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 159: 302},
		{5, 5, 5, 22: 5, 24: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 43: 5, 5, 5, 5, 5, 5, 54: 5},
		// 55
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 323, 30, 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 255, 322, 273, 277, 274, 256, 99: 337, 324, 293, 253, 254, 325, 326, 327, 328, 109: 329, 336, 113: 335, 134: 333, 164: 334, 332},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 608},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 607},
		{603, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 604},
		{599, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 600},
		// 60
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 598},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 597},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 49: 315, 52: 300, 92: 489, 487, 273, 277, 274, 490, 100: 486, 114: 491, 124: 488},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 485},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 484},
		// 65
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 483},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 482},
		{223, 223, 3: 223, 223, 223, 223, 223, 223, 223, 223, 223, 23: 223, 42: 223, 50: 223, 223, 53: 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223},
		{386, 387, 3: 385, 388, 389, 370, 368, 178, 178, 178, 396, 42: 178, 50: 393, 178, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{186, 186, 3: 186, 186, 186, 186, 186, 186, 186, 186, 186, 23: 186, 42: 186, 50: 186, 186, 53: 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186},
		// 70
		{185, 185, 3: 185, 185, 185, 185, 185, 185, 10: 185, 185, 42: 480, 50: 185, 53: 185, 55: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185},
		{184, 184, 3: 184, 184, 184, 184, 184, 184, 184, 184, 184, 23: 184, 42: 184, 50: 184, 184, 53: 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184},
		{183, 183, 3: 183, 183, 183, 183, 183, 183, 183, 183, 183, 23: 183, 42: 183, 50: 183, 183, 53: 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183},
		{182, 182, 3: 182, 182, 182, 182, 182, 182, 182, 182, 182, 23: 182, 42: 182, 50: 182, 182, 53: 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182},
		{181, 181, 3: 181, 181, 181, 181, 181, 181, 181, 181, 181, 23: 181, 42: 181, 50: 181, 181, 53: 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181},
		// 75
		{8: 175, 175, 356},
		{141, 141, 141, 8: 141, 22: 141, 24: 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 360, 141, 141, 141, 141, 141, 141},
		{44, 44, 44, 44, 44, 44, 44, 44, 44, 12: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 43: 44, 44, 44, 44, 44, 44, 52: 44, 81: 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 98: 44},
		{43, 43, 43, 43, 43, 43, 43, 43, 43, 12: 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43: 43, 43, 43, 43, 43, 43, 52: 43, 81: 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 98: 43},
		{42, 42, 42, 42, 42, 42, 42, 42, 42, 12: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43: 42, 42, 42, 42, 42, 42, 52: 42, 81: 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 98: 42},
		// 80
		{41, 41, 41, 41, 41, 41, 41, 41, 41, 12: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 43: 41, 41, 41, 41, 41, 41, 52: 41, 81: 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 98: 41},
		{40, 40, 40, 40, 40, 40, 40, 40, 40, 12: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 43: 40, 40, 40, 40, 40, 40, 52: 40, 81: 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 98: 40},
		{39, 39, 39, 39, 39, 39, 39, 39, 39, 12: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 43: 39, 39, 39, 39, 39, 39, 52: 39, 81: 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 98: 39},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 476, 116: 477},
		{42: 474},
		// 85
		{23: 473},
		{32, 32, 32, 32, 32, 32, 32, 32, 32, 12: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 43: 32, 32, 32, 32, 32, 32, 52: 32, 81: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 323, 29, 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 255, 322, 273, 277, 274, 256, 99: 337, 324, 293, 253, 254, 325, 326, 327, 328, 109: 329, 336, 113: 335, 134: 472},
		{28, 28, 28, 28, 28, 28, 28, 28, 28, 12: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 43: 28, 28, 28, 28, 28, 28, 52: 28, 81: 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28},
		{27, 27, 27, 27, 27, 27, 27, 27, 27, 12: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 43: 27, 27, 27, 27, 27, 27, 52: 27, 81: 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27},
		// 90
		{8: 471},
		{465},
		{461},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 455},
		{441},
		// 95
		{354},
		{8: 353},
		{8: 352},
		{2: 350},
		{309, 310, 347, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 322, 99: 348},
		// 100
		{185, 185, 3: 185, 185, 185, 185, 185, 185, 185, 185, 185, 23: 185, 42: 185, 50: 185, 185, 53: 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185},
		{8: 349},
		{15, 15, 15, 15, 15, 15, 15, 15, 15, 12: 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 43: 15, 15, 15, 15, 15, 15, 52: 15, 81: 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 98: 15},
		{8: 351},
		{16, 16, 16, 16, 16, 16, 16, 16, 16, 12: 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 43: 16, 16, 16, 16, 16, 16, 52: 16, 81: 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 98: 16},
		// 105
		{17, 17, 17, 17, 17, 17, 17, 17, 17, 12: 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 43: 17, 17, 17, 17, 17, 17, 52: 17, 81: 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 98: 17},
		{18, 18, 18, 18, 18, 18, 18, 18, 18, 12: 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 43: 18, 18, 18, 18, 18, 18, 52: 18, 81: 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 98: 18},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 355},
		{9: 357, 356},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 362},
		// 110
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 359},
		{42: 360},
		{19, 19, 19, 19, 19, 19, 19, 19, 19, 12: 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 43: 19, 19, 19, 19, 19, 19, 52: 19, 81: 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 98: 19},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 361},
		{35, 35, 35, 35, 35, 35, 35, 35, 35, 12: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 43: 35, 35, 35, 35, 35, 35, 52: 35, 81: 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 98: 35},
		// 115
		{386, 387, 3: 385, 388, 389, 370, 368, 177, 177, 177, 396, 42: 177, 50: 393, 177, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 440},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 439},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 438},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 437},
		// 120
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 436},
		{217, 217, 3: 217, 217, 217, 217, 217, 217, 217, 217, 217, 23: 217, 42: 217, 50: 217, 217, 53: 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 435},
		{215, 215, 3: 215, 215, 215, 215, 215, 215, 215, 215, 215, 23: 215, 42: 215, 50: 215, 215, 53: 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 434},
		// 125
		{2: 433},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 432},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 431},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 430},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 429},
		// 130
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 428},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 427},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 426},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 425},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 424},
		// 135
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 423},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 422},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 421},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 420},
		{309, 310, 347, 308, 311, 312, 304, 303, 9: 241, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 414, 162: 415, 416},
		// 140
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 413},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 412},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 411},
		{2: 410},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 409},
		// 145
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 408},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 407},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 406},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 403},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 401},
		// 150
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 400},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 399},
		{386, 387, 3: 385, 388, 389, 370, 368, 187, 187, 187, 396, 23: 187, 42: 187, 50: 187, 187, 53: 390, 187, 384, 391, 392, 394, 187, 397, 187, 187, 187, 187, 372, 187, 377, 378, 376, 374, 187, 187, 187, 363, 187, 187, 379, 187, 187, 187},
		{386, 387, 3: 385, 388, 389, 370, 368, 188, 188, 188, 396, 23: 188, 42: 188, 50: 188, 188, 53: 390, 188, 384, 391, 392, 394, 188, 188, 188, 188, 188, 188, 372, 188, 377, 378, 376, 374, 188, 188, 188, 363, 188, 188, 379, 188, 188, 188},
		{10: 356, 51: 402},
		// 155
		{189, 189, 3: 189, 189, 189, 189, 189, 189, 189, 189, 189, 23: 189, 42: 189, 50: 189, 189, 53: 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189},
		{10: 356, 42: 404},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 405},
		{386, 387, 3: 385, 388, 389, 370, 368, 190, 190, 190, 396, 23: 190, 42: 190, 50: 190, 190, 53: 390, 190, 384, 391, 392, 394, 395, 397, 398, 190, 365, 190, 372, 190, 377, 378, 376, 374, 190, 190, 190, 363, 190, 383, 379, 190, 190, 190},
		{386, 387, 3: 191, 388, 389, 370, 368, 191, 191, 191, 396, 23: 191, 42: 191, 50: 191, 191, 53: 390, 191, 384, 391, 191, 191, 191, 191, 191, 191, 191, 191, 372, 191, 191, 191, 191, 374, 191, 191, 191, 191, 191, 191, 379, 191, 191, 191},
		// 160
		{386, 387, 3: 385, 388, 389, 370, 368, 192, 192, 192, 396, 23: 192, 42: 192, 50: 393, 192, 53: 390, 192, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 193, 388, 389, 370, 368, 193, 193, 193, 396, 23: 193, 42: 193, 50: 193, 193, 53: 390, 193, 384, 391, 193, 193, 193, 193, 193, 193, 193, 193, 372, 193, 193, 193, 193, 374, 193, 193, 193, 193, 193, 193, 379, 193, 193, 193},
		{386, 194, 3: 194, 194, 194, 370, 368, 194, 194, 194, 396, 23: 194, 42: 194, 50: 194, 194, 53: 390, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 372, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194},
		{195, 195, 3: 195, 195, 195, 195, 195, 195, 195, 195, 195, 23: 195, 42: 195, 50: 195, 195, 53: 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195},
		{386, 387, 3: 196, 196, 196, 370, 368, 196, 196, 196, 396, 23: 196, 42: 196, 50: 196, 196, 53: 390, 196, 384, 391, 196, 196, 196, 196, 196, 196, 196, 196, 372, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196},
		// 165
		{386, 387, 3: 197, 197, 197, 370, 368, 197, 197, 197, 396, 23: 197, 42: 197, 50: 197, 197, 53: 390, 197, 384, 391, 197, 197, 197, 197, 197, 197, 197, 197, 372, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197},
		{386, 198, 3: 198, 198, 198, 370, 368, 198, 198, 198, 396, 23: 198, 42: 198, 50: 198, 198, 53: 390, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 372, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198},
		{386, 387, 3: 385, 388, 389, 370, 368, 9: 243, 243, 396, 50: 393, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{9: 240, 418},
		{9: 417},
		// 170
		{199, 199, 3: 199, 199, 199, 199, 199, 199, 199, 199, 199, 23: 199, 42: 199, 50: 199, 199, 53: 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 419},
		{386, 387, 3: 385, 388, 389, 370, 368, 9: 242, 242, 396, 50: 393, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 200, 388, 389, 370, 368, 200, 200, 200, 396, 23: 200, 42: 200, 50: 200, 200, 53: 390, 200, 384, 391, 392, 394, 200, 200, 200, 200, 200, 200, 372, 200, 377, 378, 376, 374, 200, 200, 200, 363, 200, 200, 379, 200, 200, 200},
		{386, 201, 3: 201, 201, 201, 370, 368, 201, 201, 201, 396, 23: 201, 42: 201, 50: 201, 201, 53: 390, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 372, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201},
		// 175
		{386, 387, 3: 385, 388, 389, 370, 368, 202, 202, 202, 396, 23: 202, 42: 202, 50: 202, 202, 53: 390, 202, 384, 391, 392, 394, 202, 397, 398, 202, 365, 202, 372, 202, 377, 378, 376, 374, 202, 202, 202, 363, 202, 202, 379, 202, 202, 202},
		{386, 387, 3: 385, 388, 389, 370, 368, 203, 203, 203, 396, 23: 203, 42: 203, 50: 393, 203, 53: 390, 203, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 385, 388, 389, 370, 368, 204, 204, 204, 396, 23: 204, 42: 204, 50: 393, 204, 53: 390, 204, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 385, 388, 389, 370, 368, 205, 205, 205, 396, 23: 205, 42: 205, 50: 393, 205, 53: 390, 205, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 206, 388, 389, 370, 368, 206, 206, 206, 396, 23: 206, 42: 206, 50: 206, 206, 53: 390, 206, 384, 391, 206, 206, 206, 206, 206, 206, 206, 206, 372, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206},
		// 180
		{386, 387, 3: 207, 388, 389, 370, 368, 207, 207, 207, 396, 23: 207, 42: 207, 50: 207, 207, 53: 390, 207, 384, 391, 207, 207, 207, 207, 207, 207, 207, 207, 372, 207, 207, 207, 207, 374, 207, 207, 207, 207, 207, 207, 379, 207, 207, 207},
		{386, 387, 3: 208, 388, 389, 370, 368, 208, 208, 208, 396, 23: 208, 42: 208, 50: 208, 208, 53: 390, 208, 384, 391, 392, 394, 208, 208, 208, 208, 208, 208, 372, 208, 208, 378, 376, 374, 208, 208, 208, 208, 208, 208, 379, 208, 208, 208},
		{386, 387, 3: 209, 388, 389, 370, 368, 209, 209, 209, 396, 23: 209, 42: 209, 50: 209, 209, 53: 390, 209, 384, 391, 209, 209, 209, 209, 209, 209, 209, 209, 372, 209, 209, 209, 209, 374, 209, 209, 209, 209, 209, 209, 379, 209, 209, 209},
		{386, 387, 3: 385, 388, 389, 370, 368, 210, 210, 210, 396, 23: 210, 42: 210, 50: 393, 210, 53: 390, 210, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 211, 388, 389, 370, 368, 211, 211, 211, 396, 23: 211, 42: 211, 50: 211, 211, 53: 390, 211, 384, 391, 211, 211, 211, 211, 211, 211, 211, 211, 372, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211},
		// 185
		{386, 387, 3: 385, 388, 389, 370, 368, 212, 212, 212, 396, 23: 212, 42: 212, 50: 393, 212, 53: 390, 212, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{213, 213, 3: 213, 213, 213, 213, 213, 213, 213, 213, 213, 23: 213, 42: 213, 50: 213, 213, 53: 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213},
		{386, 387, 3: 385, 388, 389, 370, 368, 214, 214, 214, 396, 23: 214, 42: 214, 50: 393, 214, 53: 390, 214, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 385, 388, 389, 370, 368, 216, 216, 216, 396, 23: 216, 42: 216, 50: 393, 216, 53: 390, 216, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 385, 388, 389, 370, 368, 218, 218, 218, 396, 23: 218, 42: 218, 50: 393, 218, 53: 390, 218, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		// 190
		{386, 387, 3: 385, 388, 389, 370, 368, 219, 219, 219, 396, 23: 219, 42: 219, 50: 393, 219, 53: 390, 219, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 385, 388, 389, 370, 368, 220, 220, 220, 396, 23: 220, 42: 220, 50: 220, 220, 53: 390, 220, 384, 391, 392, 394, 220, 397, 398, 220, 220, 220, 372, 220, 377, 378, 376, 374, 220, 220, 220, 363, 220, 220, 379, 220, 220, 220},
		{386, 387, 3: 385, 388, 389, 370, 368, 221, 221, 221, 396, 23: 221, 42: 221, 50: 393, 221, 53: 390, 221, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{386, 387, 3: 222, 388, 389, 370, 368, 222, 222, 222, 396, 23: 222, 42: 222, 50: 222, 222, 53: 390, 222, 384, 391, 392, 394, 222, 222, 222, 222, 222, 222, 372, 222, 222, 378, 376, 374, 222, 222, 222, 222, 222, 222, 379, 222, 222, 222},
		{309, 310, 347, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 315, 92: 255, 322, 273, 277, 274, 256, 99: 443, 101: 293, 253, 254, 113: 442},
		// 195
		{309, 310, 347, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 322, 99: 450},
		{8: 444},
		{309, 310, 347, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 322, 99: 445},
		{8: 446},
		{309, 310, 347, 308, 311, 312, 304, 303, 9: 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 322, 99: 447},
		// 200
		{9: 448},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 449},
		{20, 20, 20, 20, 20, 20, 20, 20, 20, 12: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 43: 20, 20, 20, 20, 20, 20, 52: 20, 81: 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 98: 20},
		{8: 451},
		{309, 310, 347, 308, 311, 312, 304, 303, 9: 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 322, 99: 452},
		// 205
		{9: 453},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 454},
		{21, 21, 21, 21, 21, 21, 21, 21, 21, 12: 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 43: 21, 21, 21, 21, 21, 21, 52: 21, 81: 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 98: 21},
		{81: 456},
		{457},
		// 210
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 458},
		{9: 459, 356},
		{8: 460},
		{22, 22, 22, 22, 22, 22, 22, 22, 22, 12: 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 43: 22, 22, 22, 22, 22, 22, 52: 22, 81: 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 98: 22},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 462},
		// 215
		{9: 463, 356},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 464},
		{23, 23, 23, 23, 23, 23, 23, 23, 23, 12: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 43: 23, 23, 23, 23, 23, 23, 52: 23, 81: 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 98: 23},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 315, 93: 466},
		{9: 467, 356},
		// 220
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 468},
		{24, 24, 24, 24, 24, 24, 24, 24, 24, 12: 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 43: 24, 24, 24, 24, 24, 24, 52: 24, 81: 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 98: 469},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 470},
		{25, 25, 25, 25, 25, 25, 25, 25, 25, 12: 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 43: 25, 25, 25, 25, 25, 25, 52: 25, 81: 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 98: 25},
		{26, 26, 26, 26, 26, 26, 26, 26, 26, 12: 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 43: 26, 26, 26, 26, 26, 26, 52: 26, 81: 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 98: 26},
		// 225
		{31, 31, 31, 31, 31, 31, 31, 31, 31, 12: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 43: 31, 31, 31, 31, 31, 31, 52: 31, 81: 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31},
		{33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 12: 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 43: 33, 33, 33, 33, 33, 33, 52: 33, 54: 33, 81: 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 98: 33},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 475},
		{37, 37, 37, 37, 37, 37, 37, 37, 37, 12: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 43: 37, 37, 37, 37, 37, 37, 52: 37, 81: 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 98: 37},
		{386, 387, 3: 385, 388, 389, 370, 368, 174, 10: 174, 396, 23: 174, 42: 174, 50: 393, 174, 53: 390, 174, 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		// 230
		{42: 478},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 479},
		{38, 38, 38, 38, 38, 38, 38, 38, 38, 12: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 43: 38, 38, 38, 38, 38, 38, 52: 38, 81: 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 98: 38},
		{309, 310, 317, 308, 311, 312, 304, 303, 176, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 358, 49: 315, 52: 300, 81: 342, 343, 330, 344, 331, 340, 341, 345, 338, 346, 339, 93: 322, 99: 337, 324, 104: 325, 326, 327, 328, 109: 329, 481},
		{36, 36, 36, 36, 36, 36, 36, 36, 36, 12: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 43: 36, 36, 36, 36, 36, 36, 52: 36, 81: 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 98: 36},
		// 235
		{386, 224, 3: 224, 224, 224, 370, 368, 224, 224, 224, 396, 23: 224, 42: 224, 50: 224, 224, 53: 390, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 372, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224},
		{386, 225, 3: 225, 225, 225, 370, 368, 225, 225, 225, 396, 23: 225, 42: 225, 50: 225, 225, 53: 390, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 372, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225},
		{386, 226, 3: 226, 226, 226, 370, 368, 226, 226, 226, 396, 23: 226, 42: 226, 50: 226, 226, 53: 390, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 372, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226},
		{386, 227, 3: 227, 227, 227, 370, 368, 227, 227, 227, 396, 23: 227, 42: 227, 50: 227, 227, 53: 390, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 372, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227},
		{9: 596},
		// 240
		{9: 595, 356},
		{9: 568},
		{124, 124, 124, 8: 124, 124, 11: 124, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 124, 92: 489, 94: 273, 277, 274, 490, 114: 566, 150: 567},
		{124, 124, 124, 8: 124, 124, 11: 124, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 124, 92: 489, 94: 273, 277, 274, 490, 114: 566, 150: 565},
		{91, 286, 9: 68, 11: 91, 108: 492, 111: 494, 119: 495, 133: 493},
		// 245
		{90, 2: 90, 9: 70, 70, 90},
		{9: 71},
		{497, 11: 58, 138: 496, 498},
		{9: 67, 67},
		{562, 9: 69, 69, 57},
		// 250
		{91, 286, 9: 83, 11: 91, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 521, 253, 254, 108: 492, 111: 494, 117: 520, 119: 522, 122: 518, 519, 131: 523},
		{11: 499},
		{309, 500, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 24: 281, 282, 283, 43: 504, 49: 501, 51: 180, 92: 502, 118: 503, 129: 505},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 485, 51: 517},
		{386, 387, 3: 385, 388, 389, 370, 368, 11: 396, 50: 393, 179, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		// 255
		{89, 89, 89, 89, 89, 89, 89, 89, 9: 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 24: 89, 89, 89, 43: 89, 51: 89},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 24: 281, 282, 283, 43: 512, 49: 501, 51: 180, 92: 511, 129: 513},
		{87, 87, 87, 87, 87, 87, 87, 87, 12: 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 24: 281, 282, 283, 92: 502, 118: 507, 125: 508},
		{51: 506},
		{61, 9: 61, 61, 61},
		// 260
		{86, 86, 86, 86, 86, 86, 86, 86, 9: 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 24: 281, 282, 283, 92: 511},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 509},
		{386, 387, 3: 385, 388, 389, 370, 368, 11: 396, 50: 393, 510, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{63, 9: 63, 63, 63},
		{88, 88, 88, 88, 88, 88, 88, 88, 9: 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 24: 88, 88, 88, 43: 88, 51: 88},
		// 265
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 515},
		{51: 514},
		{59, 9: 59, 59, 59},
		{386, 387, 3: 385, 388, 389, 370, 368, 11: 396, 50: 393, 516, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{60, 9: 60, 60, 60},
		// 270
		{62, 9: 62, 62, 62},
		{9: 85, 559},
		{9: 82},
		{9: 81, 81},
		{91, 286, 91, 9: 68, 68, 91, 108: 492, 111: 526, 528, 119: 495, 133: 527},
		// 275
		{9: 525},
		{9: 524},
		{65, 9: 65, 65, 65},
		{66, 9: 66, 66, 66},
		{530, 2: 531, 11: 58, 138: 496, 498, 529},
		// 280
		{9: 79, 79},
		{9: 78, 78},
		{534, 8: 106, 106, 106, 535, 22: 106, 24: 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 50: 106, 52: 106},
		{91, 286, 91, 9: 83, 11: 91, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 521, 253, 254, 108: 492, 111: 526, 532, 117: 520, 119: 522, 122: 518, 519, 131: 523},
		{94, 8: 94, 94, 94, 94, 22: 94, 24: 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 50: 94, 52: 94},
		// 285
		{9: 533},
		{103, 8: 103, 103, 103, 103, 22: 103, 24: 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 50: 103, 52: 103},
		{2: 102, 9: 102, 22: 100, 24: 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 43: 100, 100, 100, 100, 100, 100, 157: 549, 550},
		{87, 87, 87, 87, 87, 87, 87, 87, 12: 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 24: 281, 282, 283, 43: 536, 51: 87, 92: 502, 118: 537, 125: 538},
		{87, 87, 87, 87, 87, 87, 87, 87, 12: 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 24: 281, 282, 283, 92: 502, 118: 507, 125: 546},
		// 290
		{86, 86, 86, 86, 86, 86, 86, 86, 12: 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 24: 281, 282, 283, 43: 543, 51: 86, 92: 511},
		{309, 539, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 501, 51: 180, 129: 540},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 485, 51: 542},
		{51: 541},
		{95, 8: 95, 95, 95, 95, 22: 95, 24: 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 50: 95, 52: 95},
		// 295
		{96, 8: 96, 96, 96, 96, 22: 96, 24: 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 50: 96, 52: 96},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 544},
		{386, 387, 3: 385, 388, 389, 370, 368, 11: 396, 50: 393, 545, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{97, 8: 97, 97, 97, 97, 22: 97, 24: 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 50: 97, 52: 97},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 547},
		// 300
		{386, 387, 3: 385, 388, 389, 370, 368, 11: 396, 50: 393, 548, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{98, 8: 98, 98, 98, 98, 22: 98, 24: 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 50: 98, 52: 98},
		{2: 554, 9: 75, 170: 555, 553},
		{22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 521, 253, 254, 117: 520, 122: 518, 551},
		{9: 552},
		// 305
		{99, 8: 99, 99, 99, 99, 22: 99, 24: 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 50: 99, 52: 99},
		{9: 558},
		{9: 77, 77},
		{9: 74, 556},
		{2: 557},
		// 310
		{9: 76, 76},
		{101, 8: 101, 101, 101, 101, 22: 101, 24: 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 50: 101, 52: 101},
		{22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 521, 253, 254, 117: 561, 167: 560},
		{9: 84},
		{9: 80, 80},
		// 315
		{9: 83, 22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 92: 255, 94: 273, 277, 274, 256, 101: 521, 253, 254, 117: 520, 122: 518, 519, 131: 563},
		{9: 564},
		{64, 9: 64, 64, 64},
		{125, 125, 125, 8: 125, 125, 11: 125, 42: 125},
		{123, 123, 123, 8: 123, 123, 11: 123, 42: 123},
		// 320
		{126, 126, 126, 8: 126, 126, 11: 126, 42: 126},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 570, 52: 569},
		{309, 310, 347, 308, 311, 312, 304, 303, 10: 54, 579, 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 23: 54, 49: 572, 52: 573, 578, 115: 574, 121: 577, 127: 575, 576, 149: 571},
		{386, 228, 3: 228, 228, 228, 370, 368, 228, 228, 228, 396, 23: 228, 42: 228, 50: 228, 228, 53: 390, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 372, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228},
		{10: 587, 23: 118, 126: 593},
		// 325
		{386, 387, 3: 385, 388, 389, 370, 368, 55, 10: 55, 396, 23: 55, 50: 393, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{309, 310, 347, 308, 311, 312, 304, 303, 10: 54, 579, 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 23: 54, 49: 572, 52: 573, 578, 115: 574, 121: 577, 127: 575, 576, 149: 586},
		{10: 53, 23: 53},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 572, 52: 573, 115: 585},
		{11: 579, 50: 583, 53: 578, 121: 584},
		// 330
		{11: 48, 50: 48, 53: 48},
		{2: 582},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 476, 116: 580},
		{51: 581},
		{11: 45, 50: 45, 53: 45},
		// 335
		{11: 46, 50: 46, 53: 46},
		{49, 49, 49, 49, 49, 49, 49, 49, 12: 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52: 49},
		{11: 47, 50: 47, 53: 47},
		{10: 52, 23: 52},
		{10: 587, 23: 118, 126: 588},
		// 340
		{309, 310, 347, 308, 311, 312, 304, 303, 11: 579, 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 23: 117, 49: 572, 52: 573, 578, 115: 590, 121: 577, 127: 591, 576},
		{23: 589},
		{8: 56, 10: 56, 23: 56},
		{10: 51, 23: 51},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 572, 52: 573, 115: 592},
		// 345
		{10: 50, 23: 50},
		{23: 594},
		{229, 229, 3: 229, 229, 229, 229, 229, 229, 229, 229, 229, 23: 229, 42: 229, 50: 229, 229, 53: 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229},
		{230, 230, 3: 230, 230, 230, 230, 230, 230, 230, 230, 230, 23: 230, 42: 230, 50: 230, 230, 53: 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230},
		{231, 231, 3: 231, 231, 231, 231, 231, 231, 231, 231, 231, 23: 231, 42: 231, 50: 231, 231, 53: 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231},
		// 350
		{386, 232, 3: 232, 232, 232, 370, 368, 232, 232, 232, 396, 23: 232, 42: 232, 50: 232, 232, 53: 390, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 372, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232},
		{386, 233, 3: 233, 233, 233, 370, 368, 233, 233, 233, 396, 23: 233, 42: 233, 50: 233, 233, 53: 390, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 372, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 49: 315, 52: 300, 92: 489, 487, 273, 277, 274, 490, 100: 486, 114: 491, 124: 601},
		{386, 234, 3: 234, 234, 234, 370, 368, 234, 234, 234, 396, 23: 234, 42: 234, 50: 234, 234, 53: 390, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 372, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234},
		{9: 602},
		// 355
		{309, 235, 347, 235, 235, 235, 304, 303, 235, 235, 235, 235, 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 23: 235, 42: 235, 49: 570, 235, 235, 569, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 49: 315, 52: 300, 92: 489, 487, 273, 277, 274, 490, 100: 486, 114: 491, 124: 605},
		{386, 236, 3: 236, 236, 236, 370, 368, 236, 236, 236, 396, 23: 236, 42: 236, 50: 236, 236, 53: 390, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 372, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236},
		{9: 606},
		{309, 237, 347, 237, 237, 237, 304, 303, 237, 237, 237, 237, 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 23: 237, 42: 237, 49: 570, 237, 237, 569, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237},
		// 360
		{386, 238, 3: 238, 238, 238, 370, 368, 238, 238, 238, 396, 23: 238, 42: 238, 50: 238, 238, 53: 390, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 372, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238},
		{386, 239, 3: 239, 239, 239, 370, 368, 239, 239, 239, 396, 23: 239, 42: 239, 50: 239, 239, 53: 390, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 372, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239},
		{8: 173, 153: 617},
		{8: 165, 10: 165},
		{8: 162, 10: 615},
		// 365
		{8: 161, 10: 161, 50: 613},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 572, 52: 573, 115: 614},
		{8: 160, 10: 160},
		{91, 286, 91, 108: 287, 111: 285, 612, 130: 616},
		{8: 164, 10: 164},
		// 370
		{8: 618},
		{172, 172, 172, 172, 172, 172, 172, 172, 172, 12: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 43: 172, 172, 172, 172, 172, 172, 52: 172, 54: 172, 81: 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172},
		{93, 286, 93, 9: 93, 93, 93, 108: 620},
		{92, 2: 92, 9: 92, 92, 92},
		{91, 286, 91, 108: 287, 111: 285, 532},
		// 375
		{116, 116, 116, 8: 116, 116, 116, 116, 22: 116, 24: 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 52: 72},
		{52: 624},
		{2: 625, 141: 628, 627, 168: 626},
		{10: 244, 23: 244, 50: 244},
		{10: 631, 23: 118, 126: 632},
		// 380
		{10: 114, 23: 114},
		{10: 112, 23: 112, 50: 629},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 476, 116: 630},
		{10: 111, 23: 111},
		{2: 625, 23: 117, 141: 628, 634},
		// 385
		{23: 633},
		{115, 115, 115, 8: 115, 115, 115, 115, 22: 115, 24: 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115},
		{10: 113, 23: 113},
		{138, 138, 138, 8: 138, 138, 138, 138, 22: 138, 24: 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 52: 72},
		{52: 637},
		// 390
		{22: 135, 137, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 154: 638, 639},
		{23: 656},
		{22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 92: 489, 94: 273, 277, 274, 490, 114: 642, 151: 641, 173: 640},
		{22: 275, 134, 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 92: 489, 94: 273, 277, 274, 490, 114: 642, 151: 654, 156: 653},
		{22: 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130},
		// 395
		{91, 286, 91, 8: 644, 42: 105, 108: 287, 111: 285, 646, 137: 647, 152: 645, 174: 643},
		{8: 650, 10: 651},
		{22: 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127},
		{8: 122, 10: 122},
		{8: 120, 10: 120, 42: 104},
		// 400
		{42: 648},
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 49: 476, 116: 649},
		{8: 119, 10: 119},
		{22: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128},
		{91, 286, 91, 42: 105, 108: 287, 111: 285, 646, 137: 647, 152: 652},
		// 405
		{8: 121, 10: 121},
		{23: 655},
		{22: 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129},
		{133, 133, 133, 8: 133, 133, 133, 133, 22: 133, 24: 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133},
		{136, 136, 136, 8: 136, 136, 136, 136, 22: 136, 24: 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136},
		// 410
		{309, 310, 347, 308, 311, 312, 304, 303, 12: 307, 313, 305, 314, 316, 318, 319, 320, 306, 321, 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 49: 658, 92: 489, 94: 273, 277, 274, 490, 114: 491, 124: 659},
		{386, 387, 3: 385, 388, 389, 370, 368, 9: 661, 11: 396, 50: 393, 53: 390, 55: 384, 391, 392, 394, 395, 397, 398, 369, 365, 366, 372, 373, 377, 378, 376, 374, 375, 364, 367, 363, 382, 383, 379, 380, 371, 381},
		{9: 660},
		{139, 139, 139, 8: 139, 139, 139, 139, 22: 139, 24: 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139},
		{140, 140, 140, 8: 140, 140, 140, 140, 22: 140, 24: 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140},
		// 415
		{168, 168, 168, 8: 168, 168, 168, 168},
		{166, 166, 166, 8: 166, 166, 166, 166},
		{169, 169, 169, 8: 169, 169, 169, 169},
		{170, 170, 170, 8: 170, 170, 170, 170},
		{171, 171, 171, 8: 171, 171, 171, 171},
		// 420
		{8: 161, 10: 161, 22: 10, 24: 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 43: 10, 10, 10, 10, 10, 10, 50: 613, 52: 10, 160: 668},
		{22: 275, 24: 281, 282, 283, 262, 264, 263, 265, 280, 266, 267, 268, 269, 270, 278, 276, 279, 271, 272, 43: 260, 257, 258, 284, 259, 261, 52: 2, 92: 255, 94: 273, 277, 274, 256, 101: 293, 253, 254, 113: 295, 135: 296, 669},
		{52: 6, 132: 299, 144: 670},
		{9, 9, 9, 22: 9, 24: 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 43: 9, 9, 9, 9, 9, 9, 54: 9},
		{13, 13, 13, 22: 13, 24: 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 43: 13, 13, 13, 13, 13, 13, 54: 13},
		// 425
		{54: 246},
	}
)

var yyDebug = 0

type yyLexer interface {
	Lex(lval *yySymType) int
	Error(s string)
}

type yyLexerEx interface {
	yyLexer
	Reduced(rule, state int, lval *yySymType) bool
}

func yySymName(c int) (s string) {
	x, ok := yyXLAT[c]
	if ok {
		return yySymNames[x]
	}

	if c < 0x7f {
		return __yyfmt__.Sprintf("%q", c)
	}

	return __yyfmt__.Sprintf("%d", c)
}

func yylex1(yylex yyLexer, lval *yySymType) (n int) {
	n = yylex.Lex(lval)
	if n <= 0 {
		n = yyEofCode
	}
	if yyDebug >= 3 {
		__yyfmt__.Printf("\nlex %s(%#x %d), PrettyString(lval.Token): %v\n", yySymName(n), n, n, PrettyString(lval.Token))
	}
	return n
}

func yyParse(yylex yyLexer) int {
	const yyError = 179

	yyEx, _ := yylex.(yyLexerEx)
	var yyn int
	var yylval yySymType
	var yyVAL yySymType
	p := yyPool.Get().(*[]yySymType)
	yyS := *p

	defer func() {
		var v yySymType
		for i := range yyS {
			yyS[i] = v
		}
		yyPool.Put(p)
	}()

	Nerrs := 0   /* number of errors */
	Errflag := 0 /* error recovery flag */
	yyerrok := func() {
		if yyDebug >= 2 {
			__yyfmt__.Printf("yyerrok()\n")
		}
		Errflag = 0
	}
	_ = yyerrok
	yystate := 0
	yychar := -1
	var yyxchar int
	var yyshift int
	yyp := -1
	goto yystack

ret0:
	return 0

ret1:
	return 1

yystack:
	/* put a state and value onto the stack */
	yyp++
	if yyp >= len(yyS) {
		nyys := make([]yySymType, len(yyS)*2)
		copy(nyys, yyS)
		yyS = nyys
	}
	yyS[yyp] = yyVAL
	yyS[yyp].yys = yystate

yynewstate:
	if yychar < 0 {
		yylval.yys = yystate
		yychar = yylex1(yylex, &yylval)
		var ok bool
		if yyxchar, ok = yyXLAT[yychar]; !ok {
			yyxchar = len(yySymNames) // > tab width
		}
	}
	if yyDebug >= 4 {
		var a []int
		for _, v := range yyS[:yyp+1] {
			a = append(a, v.yys)
		}
		__yyfmt__.Printf("state stack %v\n", a)
	}
	row := yyParseTab[yystate]
	yyn = 0
	if yyxchar < len(row) {
		if yyn = int(row[yyxchar]); yyn != 0 {
			yyn += yyTabOfs
		}
	}
	switch {
	case yyn > 0: // shift
		yychar = -1
		yyVAL = yylval
		yystate = yyn
		yyshift = yyn
		if yyDebug >= 2 {
			__yyfmt__.Printf("shift, and goto state %d\n", yystate)
		}
		if Errflag > 0 {
			Errflag--
		}
		goto yystack
	case yyn < 0: // reduce
	case yystate == 1: // accept
		if yyDebug >= 2 {
			__yyfmt__.Println("accept")
		}
		goto ret0
	}

	if yyn == 0 {
		/* error ... attempt to resume parsing */
		switch Errflag {
		case 0: /* brand new error */
			if yyDebug >= 1 {
				__yyfmt__.Printf("no action for %s in state %d\n", yySymName(yychar), yystate)
			}
			msg, ok := yyXErrors[yyXError{yystate, yyxchar}]
			if !ok {
				msg, ok = yyXErrors[yyXError{yystate, -1}]
			}
			if !ok && yyshift != 0 {
				msg, ok = yyXErrors[yyXError{yyshift, yyxchar}]
			}
			if !ok {
				msg, ok = yyXErrors[yyXError{yyshift, -1}]
			}
			if yychar > 0 {
				ls := yyTokenLiteralStrings[yychar]
				if ls == "" {
					ls = yySymName(yychar)
				}
				if ls != "" {
					switch {
					case msg == "":
						msg = __yyfmt__.Sprintf("unexpected %s", ls)
					default:
						msg = __yyfmt__.Sprintf("unexpected %s, %s", ls, msg)
					}
				}
			}
			if msg == "" {
				msg = "syntax error"
			}
			yylex.Error(msg)
			Nerrs++
			fallthrough

		case 1, 2: /* incompletely recovered error ... try again */
			Errflag = 3

			/* find a state where "error" is a legal shift action */
			for yyp >= 0 {
				row := yyParseTab[yyS[yyp].yys]
				if yyError < len(row) {
					yyn = int(row[yyError]) + yyTabOfs
					if yyn > 0 { // hit
						if yyDebug >= 2 {
							__yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
						}
						yystate = yyn /* simulate a shift of "error" */
						goto yystack
					}
				}

				/* the current p has no shift on "error", pop stack */
				if yyDebug >= 2 {
					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
				}
				yyp--
			}
			/* there is no state on the stack with an error shift ... abort */
			if yyDebug >= 2 {
				__yyfmt__.Printf("error recovery failed\n")
			}
			goto ret1

		case 3: /* no shift yet; clobber input char */
			if yyDebug >= 2 {
				__yyfmt__.Printf("error recovery discards %s\n", yySymName(yychar))
			}
			if yychar == yyEofCode {
				goto ret1
			}

			yychar = -1
			goto yynewstate /* try again in the same state */
		}
	}

	r := -yyn
	x0 := yyReductions[r]
	x, n := x0.xsym, x0.components
	yypt := yyp
	_ = yypt // guard against "declared and not used"

	yyp -= n
	if yyp+1 >= len(yyS) {
		nyys := make([]yySymType, len(yyS)*2)
		copy(nyys, yyS)
		yyS = nyys
	}
	yyVAL = yyS[yyp+1]

	/* consult goto table to find next state */
	exState := yystate
	yystate = int(yyParseTab[yyS[yyp].yys][x]) + yyTabOfs
	/* reduction by production r */
	if yyDebug >= 2 {
		__yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yySymNames[x], yystate)
	}

	switch r {
	case 1:
		{
			lx := yylex.(*lexer)
			lx.ast = yyS[yypt-0].node
		}
	case 2:
		{
			lx := yylex.(*lexer)
			lx.ast = &TranslationUnit{
				ExternalDeclarationList: yyS[yypt-0].node.(*ExternalDeclarationList).reverse(),
				FileScope:               lx.scope,
				FileSet:                 fset,
				Model:                   lx.model,
			}
		}
	case 3:
		{
			yyVAL.node = &EnumerationConstant{
				Token: yyS[yypt-0].Token,
			}
		}
	case 4:
		{
			yyVAL.node = &ArgumentExprList{
				Expr: yyS[yypt-0].node.(*Expr),
			}
		}
	case 5:
		{
			yyVAL.node = &ArgumentExprList{
				Case:             1,
				ArgumentExprList: yyS[yypt-2].node.(*ArgumentExprList),
				Token:            yyS[yypt-1].Token,
				Expr:             yyS[yypt-0].node.(*Expr),
			}
		}
	case 6:
		{
			yyVAL.node = (*ArgumentExprListOpt)(nil)
		}
	case 7:
		{
			yyVAL.node = &ArgumentExprListOpt{
				ArgumentExprList: yyS[yypt-0].node.(*ArgumentExprList).reverse(),
			}
		}
	case 8:
		{
			yyVAL.node = &Expr{
				Case:  ExprPreInc,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 9:
		{
			yyVAL.node = &Expr{
				Case:  ExprPreDec,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 10:
		{
			yyVAL.node = &Expr{
				Case:     ExprAlignofType,
				Token:    yyS[yypt-3].Token,
				Token2:   yyS[yypt-2].Token,
				TypeName: yyS[yypt-1].node.(*TypeName),
				Token3:   yyS[yypt-0].Token,
			}
		}
	case 11:
		{
			yyVAL.node = &Expr{
				Case:  ExprAlignofExpr,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 12:
		{
			yyVAL.node = &Expr{
				Case:     ExprSizeofType,
				Token:    yyS[yypt-3].Token,
				Token2:   yyS[yypt-2].Token,
				TypeName: yyS[yypt-1].node.(*TypeName),
				Token3:   yyS[yypt-0].Token,
			}
		}
	case 13:
		{
			yyVAL.node = &Expr{
				Case:  ExprSizeofExpr,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 14:
		{
			yyVAL.node = &Expr{
				Case:  ExprNot,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 15:
		{
			yyVAL.node = &Expr{
				Case:  ExprAddrof,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 16:
		{
			yyVAL.node = &Expr{
				Case:         ExprStatement,
				Token:        yyS[yypt-2].Token,
				CompoundStmt: yyS[yypt-1].node.(*CompoundStmt),
				Token2:       yyS[yypt-0].Token,
			}
		}
	case 17:
		{
			yyVAL.node = &Expr{
				Case:     ExprPExprList,
				Token:    yyS[yypt-2].Token,
				ExprList: yyS[yypt-1].node.(*ExprList).reverse(),
				Token2:   yyS[yypt-0].Token,
			}
		}
	case 18:
		{
			lx := yylex.(*lexer)
			lhs := &Expr{
				Case:            ExprCompLit,
				Token:           yyS[yypt-6].Token,
				TypeName:        yyS[yypt-5].node.(*TypeName),
				Token2:          yyS[yypt-4].Token,
				Token3:          yyS[yypt-3].Token,
				InitializerList: yyS[yypt-2].node.(*InitializerList).reverse(),
				CommaOpt:        yyS[yypt-1].node.(*CommaOpt),
				Token4:          yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Scope = lx.scope
		}
	case 19:
		{
			yyVAL.node = &Expr{
				Case:     ExprCast,
				Token:    yyS[yypt-3].Token,
				TypeName: yyS[yypt-2].node.(*TypeName),
				Token2:   yyS[yypt-1].Token,
				Expr:     yyS[yypt-0].node.(*Expr),
			}
		}
	case 20:
		{
			yyVAL.node = &Expr{
				Case:  ExprDeref,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 21:
		{
			yyVAL.node = &Expr{
				Case:  ExprUnaryPlus,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 22:
		{
			yyVAL.node = &Expr{
				Case:  ExprUnaryMinus,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 23:
		{
			yyVAL.node = &Expr{
				Case:  ExprCpl,
				Token: yyS[yypt-1].Token,
				Expr:  yyS[yypt-0].node.(*Expr),
			}
		}
	case 24:
		{
			yyVAL.node = &Expr{
				Case:  ExprChar,
				Token: yyS[yypt-0].Token,
			}
		}
	case 25:
		{
			yyVAL.node = &Expr{
				Case:  ExprNe,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 26:
		{
			yyVAL.node = &Expr{
				Case:  ExprModAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 27:
		{
			yyVAL.node = &Expr{
				Case:  ExprLAnd,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 28:
		{
			yyVAL.node = &Expr{
				Case:  ExprAndAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 29:
		{
			yyVAL.node = &Expr{
				Case:  ExprMulAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 30:
		{
			yyVAL.node = &Expr{
				Case:  ExprPostInc,
				Expr:  yyS[yypt-1].node.(*Expr),
				Token: yyS[yypt-0].Token,
			}
		}
	case 31:
		{
			yyVAL.node = &Expr{
				Case:  ExprAddAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 32:
		{
			yyVAL.node = &Expr{
				Case:  ExprPostDec,
				Expr:  yyS[yypt-1].node.(*Expr),
				Token: yyS[yypt-0].Token,
			}
		}
	case 33:
		{
			yyVAL.node = &Expr{
				Case:  ExprSubAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 34:
		{
			yyVAL.node = &Expr{
				Case:   ExprPSelect,
				Expr:   yyS[yypt-2].node.(*Expr),
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 35:
		{
			yyVAL.node = &Expr{
				Case:  ExprDivAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 36:
		{
			yyVAL.node = &Expr{
				Case:  ExprLsh,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 37:
		{
			yyVAL.node = &Expr{
				Case:  ExprLshAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 38:
		{
			yyVAL.node = &Expr{
				Case:  ExprLe,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 39:
		{
			yyVAL.node = &Expr{
				Case:  ExprEq,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 40:
		{
			yyVAL.node = &Expr{
				Case:  ExprGe,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 41:
		{
			yyVAL.node = &Expr{
				Case:  ExprRsh,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 42:
		{
			yyVAL.node = &Expr{
				Case:  ExprRshAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 43:
		{
			yyVAL.node = &Expr{
				Case:  ExprXorAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 44:
		{
			yyVAL.node = &Expr{
				Case:  ExprOrAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 45:
		{
			yyVAL.node = &Expr{
				Case:  ExprLOr,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 46:
		{
			yyVAL.node = &Expr{
				Case:  ExprMod,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 47:
		{
			yyVAL.node = &Expr{
				Case:  ExprAnd,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 48:
		{
			yyVAL.node = &Expr{
				Case:                ExprCall,
				Expr:                yyS[yypt-3].node.(*Expr),
				Token:               yyS[yypt-2].Token,
				ArgumentExprListOpt: yyS[yypt-1].node.(*ArgumentExprListOpt),
				Token2:              yyS[yypt-0].Token,
			}
		}
	case 49:
		{
			yyVAL.node = &Expr{
				Case:  ExprMul,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 50:
		{
			yyVAL.node = &Expr{
				Case:  ExprAdd,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 51:
		{
			yyVAL.node = &Expr{
				Case:  ExprSub,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 52:
		{
			yyVAL.node = &Expr{
				Case:   ExprSelect,
				Expr:   yyS[yypt-2].node.(*Expr),
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 53:
		{
			yyVAL.node = &Expr{
				Case:  ExprDiv,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 54:
		{
			yyVAL.node = &Expr{
				Case:  ExprLt,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 55:
		{
			yyVAL.node = &Expr{
				Case:  ExprAssign,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 56:
		{
			yyVAL.node = &Expr{
				Case:  ExprGt,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 57:
		{
			yyVAL.node = &Expr{
				Case:     ExprCond,
				Expr:     yyS[yypt-4].node.(*Expr),
				Token:    yyS[yypt-3].Token,
				ExprList: yyS[yypt-2].node.(*ExprList).reverse(),
				Token2:   yyS[yypt-1].Token,
				Expr2:    yyS[yypt-0].node.(*Expr),
			}
		}
	case 58:
		{
			yyVAL.node = &Expr{
				Case:     ExprIndex,
				Expr:     yyS[yypt-3].node.(*Expr),
				Token:    yyS[yypt-2].Token,
				ExprList: yyS[yypt-1].node.(*ExprList).reverse(),
				Token2:   yyS[yypt-0].Token,
			}
		}
	case 59:
		{
			yyVAL.node = &Expr{
				Case:  ExprXor,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 60:
		{
			yyVAL.node = &Expr{
				Case:  ExprOr,
				Expr:  yyS[yypt-2].node.(*Expr),
				Token: yyS[yypt-1].Token,
				Expr2: yyS[yypt-0].node.(*Expr),
			}
		}
	case 61:
		{
			yyVAL.node = &Expr{
				Case:  ExprFloat,
				Token: yyS[yypt-0].Token,
			}
		}
	case 62:
		{
			lx := yylex.(*lexer)
			lhs := &Expr{
				Case:  ExprIdent,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Scope = lx.scope
		}
	case 63:
		{
			yyVAL.node = &Expr{
				Case:  ExprInt,
				Token: yyS[yypt-0].Token,
			}
		}
	case 64:
		{
			yyVAL.node = &Expr{
				Case:  ExprLChar,
				Token: yyS[yypt-0].Token,
			}
		}
	case 65:
		{
			yyVAL.node = &Expr{
				Case:  ExprLString,
				Token: yyS[yypt-0].Token,
			}
		}
	case 66:
		{
			yyVAL.node = &Expr{
				Case:  ExprString,
				Token: yyS[yypt-0].Token,
			}
		}
	case 67:
		{
			yyVAL.node = (*ExprOpt)(nil)
		}
	case 68:
		{
			yyVAL.node = &ExprOpt{
				Expr: yyS[yypt-0].node.(*Expr),
			}
		}
	case 69:
		{
			yyVAL.node = &ExprList{
				Expr: yyS[yypt-0].node.(*Expr),
			}
		}
	case 70:
		{
			yyVAL.node = &ExprList{
				Case:     1,
				ExprList: yyS[yypt-2].node.(*ExprList),
				Token:    yyS[yypt-1].Token,
				Expr:     yyS[yypt-0].node.(*Expr),
			}
		}
	case 71:
		{
			yyVAL.node = (*ExprListOpt)(nil)
		}
	case 72:
		{
			yyVAL.node = &ExprListOpt{
				ExprList: yyS[yypt-0].node.(*ExprList).reverse(),
			}
		}
	case 73:
		{
			yyVAL.node = &ConstExpr{
				Expr: yyS[yypt-0].node.(*Expr),
			}
		}
	case 74:
		{
			lx := yylex.(*lexer)
			lx.attr2 = lx.attr
		}
	case 75:
		{
			lx := yylex.(*lexer)
			lhs := &Declaration{
				DeclarationSpecifiers: yyS[yypt-3].node.(*DeclarationSpecifiers),
				InitDeclaratorListOpt: yyS[yypt-2].node.(*InitDeclaratorListOpt),
				Token:                 yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Scope = lx.scope
			if len(lx.attr2) != 0 {
				lhs.Attributes = lx.attrs()
			}
			lx.scope.typedef = false
		}
	case 76:
		{
			yyVAL.node = &DeclarationSpecifiers{
				Case:                     DeclarationSpecifiersFunc,
				FunctionSpecifier:        yyS[yypt-1].node.(*FunctionSpecifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
		}
	case 77:
		{
			yyVAL.node = &DeclarationSpecifiers{
				Case:                     DeclarationSpecifiersStorage,
				StorageClassSpecifier:    yyS[yypt-1].node.(*StorageClassSpecifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
		}
	case 78:
		{
			yyVAL.node = &DeclarationSpecifiers{
				Case:                     DeclarationSpecifiersQualifier,
				TypeQualifier:            yyS[yypt-1].node.(*TypeQualifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
		}
	case 79:
		{
			yyVAL.node = &DeclarationSpecifiers{
				Case:                     DeclarationSpecifiersSpecifier,
				TypeSpecifier:            yyS[yypt-1].node.(*TypeSpecifier),
				DeclarationSpecifiersOpt: yyS[yypt-0].node.(*DeclarationSpecifiersOpt),
			}
		}
	case 80:
		{
			yyVAL.node = (*DeclarationSpecifiersOpt)(nil)
		}
	case 81:
		{
			yyVAL.node = &DeclarationSpecifiersOpt{
				DeclarationSpecifiers: yyS[yypt-0].node.(*DeclarationSpecifiers),
			}
		}
	case 82:
		{
			yyVAL.node = &InitDeclaratorList{
				InitDeclarator: yyS[yypt-0].node.(*InitDeclarator),
			}
		}
	case 83:
		{
			yyVAL.node = &InitDeclaratorList{
				Case:               1,
				InitDeclaratorList: yyS[yypt-2].node.(*InitDeclaratorList),
				Token:              yyS[yypt-1].Token,
				InitDeclarator:     yyS[yypt-0].node.(*InitDeclarator),
			}
		}
	case 84:
		{
			yyVAL.node = (*InitDeclaratorListOpt)(nil)
		}
	case 85:
		{
			yyVAL.node = &InitDeclaratorListOpt{
				InitDeclaratorList: yyS[yypt-0].node.(*InitDeclaratorList).reverse(),
			}
		}
	case 86:
		{
			yyVAL.node = &InitDeclarator{
				Case:       InitDeclaratorBase,
				Declarator: yyS[yypt-0].node.(*Declarator),
			}
		}
	case 87:
		{
			yyVAL.node = &InitDeclarator{
				Case:        InitDeclaratorInit,
				Declarator:  yyS[yypt-2].node.(*Declarator),
				Token:       yyS[yypt-1].Token,
				Initializer: yyS[yypt-0].node.(*Initializer),
			}
		}
	case 88:
		{
			yyVAL.node = &StorageClassSpecifier{
				Case:  StorageClassSpecifierAuto,
				Token: yyS[yypt-0].Token,
			}
		}
	case 89:
		{
			yyVAL.node = &StorageClassSpecifier{
				Case:  StorageClassSpecifierExtern,
				Token: yyS[yypt-0].Token,
			}
		}
	case 90:
		{
			yyVAL.node = &StorageClassSpecifier{
				Case:  StorageClassSpecifierRegister,
				Token: yyS[yypt-0].Token,
			}
		}
	case 91:
		{
			yyVAL.node = &StorageClassSpecifier{
				Case:  StorageClassSpecifierStatic,
				Token: yyS[yypt-0].Token,
			}
		}
	case 92:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &StorageClassSpecifier{
				Case:  StorageClassSpecifierTypedef,
				Token: yyS[yypt-0].Token,
			}
			lx.scope.typedef = true
		}
	case 93:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierBool,
				Token: yyS[yypt-0].Token,
			}
		}
	case 94:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierComplex,
				Token: yyS[yypt-0].Token,
			}
		}
	case 95:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierChar,
				Token: yyS[yypt-0].Token,
			}
		}
	case 96:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierDouble,
				Token: yyS[yypt-0].Token,
			}
		}
	case 97:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierFloat,
				Token: yyS[yypt-0].Token,
			}
		}
	case 98:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierInt,
				Token: yyS[yypt-0].Token,
			}
		}
	case 99:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierLong,
				Token: yyS[yypt-0].Token,
			}
		}
	case 100:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierShort,
				Token: yyS[yypt-0].Token,
			}
		}
	case 101:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierSigned,
				Token: yyS[yypt-0].Token,
			}
		}
	case 102:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierUnsigned,
				Token: yyS[yypt-0].Token,
			}
		}
	case 103:
		{
			yyVAL.node = &TypeSpecifier{
				Case:  TypeSpecifierVoid,
				Token: yyS[yypt-0].Token,
			}
		}
	case 104:
		{
			yyVAL.node = &TypeSpecifier{
				Case:          TypeSpecifierEnum,
				EnumSpecifier: yyS[yypt-0].node.(*EnumSpecifier),
			}
		}
	case 105:
		{
			yyVAL.node = &TypeSpecifier{
				Case:                   TypeSpecifierStruct,
				StructOrUnionSpecifier: yyS[yypt-0].node.(*StructOrUnionSpecifier),
			}
		}
	case 106:
		{
			lx := yylex.(*lexer)
			lhs := &TypeSpecifier{
				Case:  TypeSpecifierName,
				Token: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
		}
	case 107:
		{
			yyVAL.node = &TypeSpecifier{
				Case:   TypeSpecifierTypeofExpr,
				Token:  yyS[yypt-3].Token,
				Token2: yyS[yypt-2].Token,
				Expr:   yyS[yypt-1].node.(*Expr),
				Token3: yyS[yypt-0].Token,
			}
		}
	case 108:
		{
			yyVAL.node = &TypeSpecifier{
				Case:     TypeSpecifierTypeof,
				Token:    yyS[yypt-3].Token,
				Token2:   yyS[yypt-2].Token,
				TypeName: yyS[yypt-1].node.(*TypeName),
				Token3:   yyS[yypt-0].Token,
			}
		}
	case 109:
		{
			lx := yylex.(*lexer)
			lhs := &StructOrUnionSpecifier{
				Case:          StructOrUnionSpecifierTag,
				StructOrUnion: yyS[yypt-1].node.(*StructOrUnion),
				Token:         yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
		}
	case 110:
		{
			lx := yylex.(*lexer)
			lx.noTypedefName = true // https://github.com/cznic/sqlite2go/issues/9
		}
	case 111:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &StructOrUnionSpecifier{
				Case:          StructOrUnionSpecifierEmpty,
				StructOrUnion: yyS[yypt-4].node.(*StructOrUnion),
				IdentifierOpt: yyS[yypt-3].node.(*IdentifierOpt),
				Token:         yyS[yypt-2].Token,
				Token2:        yyS[yypt-0].Token,
			}
			if !lx.tweaks.EnableEmptyStructs {
				lx.err(yyS[yypt-4].node, "empty structs/unions not allowed")
			}
		}
	case 112:
		{
			lx := yylex.(*lexer)
			lx.newStructScope()
		}
	case 113:
		{
			lx := yylex.(*lexer)
			lx.noTypedefName = true // https://github.com/cznic/sqlite2go/issues/9
		}
	case 114:
		{
			lx := yylex.(*lexer)
			lhs := &StructOrUnionSpecifier{
				Case:                  StructOrUnionSpecifierDefine,
				StructOrUnion:         yyS[yypt-6].node.(*StructOrUnion),
				IdentifierOpt:         yyS[yypt-5].node.(*IdentifierOpt),
				Token:                 yyS[yypt-4].Token,
				StructDeclarationList: yyS[yypt-2].node.(*StructDeclarationList).reverse(),
				Token2:                yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope, _ = lx.popScope()
		}
	case 115:
		{
			yyVAL.node = &StructOrUnion{
				Case:  StructOrUnionStruct,
				Token: yyS[yypt-0].Token,
			}
		}
	case 116:
		{
			yyVAL.node = &StructOrUnion{
				Case:  StructOrUnionUnion,
				Token: yyS[yypt-0].Token,
			}
		}
	case 117:
		{
			yyVAL.node = &StructDeclarationList{
				StructDeclaration: yyS[yypt-0].node.(*StructDeclaration),
			}
		}
	case 118:
		{
			yyVAL.node = &StructDeclarationList{
				Case:                  1,
				StructDeclarationList: yyS[yypt-1].node.(*StructDeclarationList),
				StructDeclaration:     yyS[yypt-0].node.(*StructDeclaration),
			}
		}
	case 119:
		{
			yyVAL.node = &StructDeclaration{
				Case:                   StructDeclarationBase,
				SpecifierQualifierList: yyS[yypt-2].node.(*SpecifierQualifierList),
				StructDeclaratorList:   yyS[yypt-1].node.(*StructDeclaratorList).reverse(),
				Token:                  yyS[yypt-0].Token,
			}
		}
	case 120:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &StructDeclaration{
				Case:                   StructDeclarationAnon,
				SpecifierQualifierList: yyS[yypt-1].node.(*SpecifierQualifierList),
				Token:                  yyS[yypt-0].Token,
			}
			if !lx.tweaks.EnableAnonymousStructFields {
				lx.err(yyS[yypt-1].node, "anonymous structs/unions members not allowed")
			}
		}
	case 121:
		{
			yyVAL.node = &SpecifierQualifierList{
				Case:                      SpecifierQualifierListQualifier,
				TypeQualifier:             yyS[yypt-1].node.(*TypeQualifier),
				SpecifierQualifierListOpt: yyS[yypt-0].node.(*SpecifierQualifierListOpt),
			}
		}
	case 122:
		{
			yyVAL.node = &SpecifierQualifierList{
				Case:                      SpecifierQualifierListSpecifier,
				TypeSpecifier:             yyS[yypt-1].node.(*TypeSpecifier),
				SpecifierQualifierListOpt: yyS[yypt-0].node.(*SpecifierQualifierListOpt),
			}
		}
	case 123:
		{
			yyVAL.node = (*SpecifierQualifierListOpt)(nil)
		}
	case 124:
		{
			yyVAL.node = &SpecifierQualifierListOpt{
				SpecifierQualifierList: yyS[yypt-0].node.(*SpecifierQualifierList),
			}
		}
	case 125:
		{
			yyVAL.node = &StructDeclaratorList{
				StructDeclarator: yyS[yypt-0].node.(*StructDeclarator),
			}
		}
	case 126:
		{
			yyVAL.node = &StructDeclaratorList{
				Case:                 1,
				StructDeclaratorList: yyS[yypt-2].node.(*StructDeclaratorList),
				Token:                yyS[yypt-1].Token,
				StructDeclarator:     yyS[yypt-0].node.(*StructDeclarator),
			}
		}
	case 127:
		{
			yyVAL.node = &StructDeclarator{
				Case:       StructDeclaratorBase,
				Declarator: yyS[yypt-0].node.(*Declarator),
			}
		}
	case 128:
		{
			yyVAL.node = &StructDeclarator{
				Case:          StructDeclaratorBits,
				DeclaratorOpt: yyS[yypt-2].node.(*DeclaratorOpt),
				Token:         yyS[yypt-1].Token,
				ConstExpr:     yyS[yypt-0].node.(*ConstExpr),
			}
		}
	case 129:
		{
			yyVAL.node = (*CommaOpt)(nil)
		}
	case 130:
		{
			yyVAL.node = &CommaOpt{
				Token: yyS[yypt-0].Token,
			}
		}
	case 131:
		{
			lx := yylex.(*lexer)
			lhs := &EnumSpecifier{
				Case:   EnumSpecifierTag,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
		}
	case 132:
		{
			lx := yylex.(*lexer)
			lhs := &EnumSpecifier{
				Case:           EnumSpecifierDefine,
				Token:          yyS[yypt-5].Token,
				IdentifierOpt:  yyS[yypt-4].node.(*IdentifierOpt),
				Token2:         yyS[yypt-3].Token,
				EnumeratorList: yyS[yypt-2].node.(*EnumeratorList).reverse(),
				CommaOpt:       yyS[yypt-1].node.(*CommaOpt),
				Token3:         yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
		}
	case 133:
		{
			yyVAL.node = &EnumeratorList{
				Enumerator: yyS[yypt-0].node.(*Enumerator),
			}
		}
	case 134:
		{
			yyVAL.node = &EnumeratorList{
				Case:           1,
				EnumeratorList: yyS[yypt-2].node.(*EnumeratorList),
				Token:          yyS[yypt-1].Token,
				Enumerator:     yyS[yypt-0].node.(*Enumerator),
			}
		}
	case 135:
		{
			yyVAL.node = &Enumerator{
				Case:                EnumeratorBase,
				EnumerationConstant: yyS[yypt-0].node.(*EnumerationConstant),
			}
		}
	case 136:
		{
			yyVAL.node = &Enumerator{
				Case:                EnumeratorInit,
				EnumerationConstant: yyS[yypt-2].node.(*EnumerationConstant),
				Token:               yyS[yypt-1].Token,
				ConstExpr:           yyS[yypt-0].node.(*ConstExpr),
			}
		}
	case 137:
		{
			yyVAL.node = &TypeQualifier{
				Case:  TypeQualifierConst,
				Token: yyS[yypt-0].Token,
			}
		}
	case 138:
		{
			yyVAL.node = &TypeQualifier{
				Case:  TypeQualifierRestrict,
				Token: yyS[yypt-0].Token,
			}
		}
	case 139:
		{
			yyVAL.node = &TypeQualifier{
				Case:  TypeQualifierVolatile,
				Token: yyS[yypt-0].Token,
			}
		}
	case 140:
		{
			yyVAL.node = &FunctionSpecifier{
				Token: yyS[yypt-0].Token,
			}
		}
	case 141:
		{
			lx := yylex.(*lexer)
			lhs := &Declarator{
				PointerOpt:       yyS[yypt-1].node.(*PointerOpt),
				DirectDeclarator: yyS[yypt-0].node.(*DirectDeclarator),
			}
			yyVAL.node = lhs
			lhs.Attributes = lx.attrs()
			lhs.Scope = lx.scope
			if lx.scope.typedef {
				delete(lx.scope.Idents, lhs.DirectDeclarator.nm())
				lx.scope.insertTypedef(lx.context, lhs)
			}
		}
	case 142:
		{
			yyVAL.node = (*DeclaratorOpt)(nil)
		}
	case 143:
		{
			yyVAL.node = &DeclaratorOpt{
				Declarator: yyS[yypt-0].node.(*Declarator),
			}
		}
	case 144:
		{
			lhs := &DirectDeclarator{
				Case:       DirectDeclaratorParen,
				Token:      yyS[yypt-2].Token,
				Declarator: yyS[yypt-1].node.(*Declarator),
				Token2:     yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.Declarator.Embedded = true
		}
	case 145:
		{
			lx := yylex.(*lexer)
			lx.newScope()
		}
	case 146:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Case:              DirectDeclaratorIdentList,
				DirectDeclarator:  yyS[yypt-4].node.(*DirectDeclarator),
				Token:             yyS[yypt-3].Token,
				IdentifierListOpt: yyS[yypt-1].node.(*IdentifierListOpt),
				Token2:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.paramScope, _ = lx.popScope()
		}
	case 147:
		{
			lx := yylex.(*lexer)
			lx.newScope()
		}
	case 148:
		{
			lx := yylex.(*lexer)
			lhs := &DirectDeclarator{
				Case:              DirectDeclaratorParamList,
				DirectDeclarator:  yyS[yypt-4].node.(*DirectDeclarator),
				Token:             yyS[yypt-3].Token,
				ParameterTypeList: yyS[yypt-1].node.(*ParameterTypeList),
				Token2:            yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.paramScope, _ = lx.popScope()
		}
	case 149:
		{
			yyVAL.node = &DirectDeclarator{
				Case:                 DirectDeclaratorArraySize,
				DirectDeclarator:     yyS[yypt-5].node.(*DirectDeclarator),
				Token:                yyS[yypt-4].Token,
				Token2:               yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				Expr:                 yyS[yypt-1].node.(*Expr),
				Token3:               yyS[yypt-0].Token,
			}
		}
	case 150:
		{
			yyVAL.node = &DirectDeclarator{
				Case:              DirectDeclaratorArraySize2,
				DirectDeclarator:  yyS[yypt-5].node.(*DirectDeclarator),
				Token:             yyS[yypt-4].Token,
				TypeQualifierList: yyS[yypt-3].node.(*TypeQualifierList).reverse(),
				Token2:            yyS[yypt-2].Token,
				Expr:              yyS[yypt-1].node.(*Expr),
				Token3:            yyS[yypt-0].Token,
			}
		}
	case 151:
		{
			yyVAL.node = &DirectDeclarator{
				Case:                 DirectDeclaratorArrayVar,
				DirectDeclarator:     yyS[yypt-4].node.(*DirectDeclarator),
				Token:                yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				Token2:               yyS[yypt-1].Token,
				Token3:               yyS[yypt-0].Token,
			}
		}
	case 152:
		{
			yyVAL.node = &DirectDeclarator{
				Case:                 DirectDeclaratorArray,
				DirectDeclarator:     yyS[yypt-4].node.(*DirectDeclarator),
				Token:                yyS[yypt-3].Token,
				TypeQualifierListOpt: yyS[yypt-2].node.(*TypeQualifierListOpt),
				ExprOpt:              yyS[yypt-1].node.(*ExprOpt),
				Token2:               yyS[yypt-0].Token,
			}
		}
	case 153:
		{
			yyVAL.node = &DirectDeclarator{
				Case:  DirectDeclaratorIdent,
				Token: yyS[yypt-0].Token,
			}
		}
	case 154:
		{
			yyVAL.node = &Pointer{
				Case:                 PointerBase,
				Token:                yyS[yypt-1].Token,
				TypeQualifierListOpt: yyS[yypt-0].node.(*TypeQualifierListOpt),
			}
		}
	case 155:
		{
			yyVAL.node = &Pointer{
				Case:                 PointerPtr,
				Token:                yyS[yypt-2].Token,
				TypeQualifierListOpt: yyS[yypt-1].node.(*TypeQualifierListOpt),
				Pointer:              yyS[yypt-0].node.(*Pointer),
			}
		}
	case 156:
		{
			yyVAL.node = (*PointerOpt)(nil)
		}
	case 157:
		{
			yyVAL.node = &PointerOpt{
				Pointer: yyS[yypt-0].node.(*Pointer),
			}
		}
	case 158:
		{
			yyVAL.node = &TypeQualifierList{
				TypeQualifier: yyS[yypt-0].node.(*TypeQualifier),
			}
		}
	case 159:
		{
			yyVAL.node = &TypeQualifierList{
				Case:              1,
				TypeQualifierList: yyS[yypt-1].node.(*TypeQualifierList),
				TypeQualifier:     yyS[yypt-0].node.(*TypeQualifier),
			}
		}
	case 160:
		{
			yyVAL.node = (*TypeQualifierListOpt)(nil)
		}
	case 161:
		{
			yyVAL.node = &TypeQualifierListOpt{
				TypeQualifierList: yyS[yypt-0].node.(*TypeQualifierList).reverse(),
			}
		}
	case 162:
		{
			yyVAL.node = &ParameterTypeList{
				Case:          ParameterTypeListBase,
				ParameterList: yyS[yypt-0].node.(*ParameterList).reverse(),
			}
		}
	case 163:
		{
			yyVAL.node = &ParameterTypeList{
				Case:          ParameterTypeListDots,
				ParameterList: yyS[yypt-2].node.(*ParameterList).reverse(),
				Token:         yyS[yypt-1].Token,
				Token2:        yyS[yypt-0].Token,
			}
		}
	case 164:
		{
			yyVAL.node = (*ParameterTypeListOpt)(nil)
		}
	case 165:
		{
			yyVAL.node = &ParameterTypeListOpt{
				ParameterTypeList: yyS[yypt-0].node.(*ParameterTypeList),
			}
		}
	case 166:
		{
			yyVAL.node = &ParameterList{
				ParameterDeclaration: yyS[yypt-0].node.(*ParameterDeclaration),
			}
		}
	case 167:
		{
			yyVAL.node = &ParameterList{
				Case:                 1,
				ParameterList:        yyS[yypt-2].node.(*ParameterList),
				Token:                yyS[yypt-1].Token,
				ParameterDeclaration: yyS[yypt-0].node.(*ParameterDeclaration),
			}
		}
	case 168:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &ParameterDeclaration{
				Case:                  ParameterDeclarationAbstract,
				DeclarationSpecifiers: yyS[yypt-1].node.(*DeclarationSpecifiers),
				AbstractDeclaratorOpt: yyS[yypt-0].node.(*AbstractDeclaratorOpt),
			}
			lx.scope.typedef = false
		}
	case 169:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &ParameterDeclaration{
				Case:                  ParameterDeclarationDeclarator,
				DeclarationSpecifiers: yyS[yypt-1].node.(*DeclarationSpecifiers),
				Declarator:            yyS[yypt-0].node.(*Declarator),
			}
			lx.scope.typedef = false
		}
	case 170:
		{
			yyVAL.node = &IdentifierList{
				Token: yyS[yypt-0].Token,
			}
		}
	case 171:
		{
			yyVAL.node = &IdentifierList{
				Case:           1,
				IdentifierList: yyS[yypt-2].node.(*IdentifierList),
				Token:          yyS[yypt-1].Token,
				Token2:         yyS[yypt-0].Token,
			}
		}
	case 172:
		{
			yyVAL.node = (*IdentifierListOpt)(nil)
		}
	case 173:
		{
			yyVAL.node = &IdentifierListOpt{
				IdentifierList: yyS[yypt-0].node.(*IdentifierList).reverse(),
			}
		}
	case 174:
		{
			yyVAL.node = (*IdentifierOpt)(nil)
		}
	case 175:
		{
			yyVAL.node = &IdentifierOpt{
				Token: yyS[yypt-0].Token,
			}
		}
	case 176:
		{
			yyVAL.node = &TypeName{
				SpecifierQualifierList: yyS[yypt-1].node.(*SpecifierQualifierList),
				AbstractDeclaratorOpt:  yyS[yypt-0].node.(*AbstractDeclaratorOpt),
			}
		}
	case 177:
		{
			yyVAL.node = &AbstractDeclarator{
				Case:    AbstractDeclaratorPointer,
				Pointer: yyS[yypt-0].node.(*Pointer),
			}
		}
	case 178:
		{
			yyVAL.node = &AbstractDeclarator{
				Case:                     AbstractDeclaratorAbstract,
				PointerOpt:               yyS[yypt-1].node.(*PointerOpt),
				DirectAbstractDeclarator: yyS[yypt-0].node.(*DirectAbstractDeclarator),
			}
		}
	case 179:
		{
			yyVAL.node = (*AbstractDeclaratorOpt)(nil)
		}
	case 180:
		{
			yyVAL.node = &AbstractDeclaratorOpt{
				AbstractDeclarator: yyS[yypt-0].node.(*AbstractDeclarator),
			}
		}
	case 181:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:               DirectAbstractDeclaratorAbstract,
				Token:              yyS[yypt-2].Token,
				AbstractDeclarator: yyS[yypt-1].node.(*AbstractDeclarator),
				Token2:             yyS[yypt-0].Token,
			}
		}
	case 182:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                 DirectAbstractDeclaratorParamList,
				Token:                yyS[yypt-2].Token,
				ParameterTypeListOpt: yyS[yypt-1].node.(*ParameterTypeListOpt),
				Token2:               yyS[yypt-0].Token,
			}
		}
	case 183:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                     DirectAbstractDeclaratorDFn,
				DirectAbstractDeclarator: yyS[yypt-3].node.(*DirectAbstractDeclarator),
				Token:                    yyS[yypt-2].Token,
				ParameterTypeListOpt:     yyS[yypt-1].node.(*ParameterTypeListOpt),
				Token2:                   yyS[yypt-0].Token,
			}
		}
	case 184:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                        DirectAbstractDeclaratorDArrSize,
				DirectAbstractDeclaratorOpt: yyS[yypt-5].node.(*DirectAbstractDeclaratorOpt),
				Token:                       yyS[yypt-4].Token,
				Token2:                      yyS[yypt-3].Token,
				TypeQualifierListOpt:        yyS[yypt-2].node.(*TypeQualifierListOpt),
				Expr:                        yyS[yypt-1].node.(*Expr),
				Token3:                      yyS[yypt-0].Token,
			}
		}
	case 185:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                        DirectAbstractDeclaratorDArrVL,
				DirectAbstractDeclaratorOpt: yyS[yypt-3].node.(*DirectAbstractDeclaratorOpt),
				Token:                       yyS[yypt-2].Token,
				Token2:                      yyS[yypt-1].Token,
				Token3:                      yyS[yypt-0].Token,
			}
		}
	case 186:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                        DirectAbstractDeclaratorDArr,
				DirectAbstractDeclaratorOpt: yyS[yypt-3].node.(*DirectAbstractDeclaratorOpt),
				Token:                       yyS[yypt-2].Token,
				ExprOpt:                     yyS[yypt-1].node.(*ExprOpt),
				Token2:                      yyS[yypt-0].Token,
			}
		}
	case 187:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                        DirectAbstractDeclaratorDArrSize2,
				DirectAbstractDeclaratorOpt: yyS[yypt-5].node.(*DirectAbstractDeclaratorOpt),
				Token:                       yyS[yypt-4].Token,
				TypeQualifierList:           yyS[yypt-3].node.(*TypeQualifierList).reverse(),
				Token2:                      yyS[yypt-2].Token,
				Expr:                        yyS[yypt-1].node.(*Expr),
				Token3:                      yyS[yypt-0].Token,
			}
		}
	case 188:
		{
			yyVAL.node = &DirectAbstractDeclarator{
				Case:                        DirectAbstractDeclaratorDArr2,
				DirectAbstractDeclaratorOpt: yyS[yypt-4].node.(*DirectAbstractDeclaratorOpt),
				Token:                       yyS[yypt-3].Token,
				TypeQualifierList:           yyS[yypt-2].node.(*TypeQualifierList).reverse(),
				ExprOpt:                     yyS[yypt-1].node.(*ExprOpt),
				Token2:                      yyS[yypt-0].Token,
			}
		}
	case 189:
		{
			yyVAL.node = (*DirectAbstractDeclaratorOpt)(nil)
		}
	case 190:
		{
			yyVAL.node = &DirectAbstractDeclaratorOpt{
				DirectAbstractDeclarator: yyS[yypt-0].node.(*DirectAbstractDeclarator),
			}
		}
	case 191:
		{
			yyVAL.node = &Initializer{
				Case:            InitializerCompLit,
				Token:           yyS[yypt-3].Token,
				InitializerList: yyS[yypt-2].node.(*InitializerList).reverse(),
				CommaOpt:        yyS[yypt-1].node.(*CommaOpt),
				Token2:          yyS[yypt-0].Token,
			}
		}
	case 192:
		{
			yyVAL.node = &Initializer{
				Case: InitializerExpr,
				Expr: yyS[yypt-0].node.(*Expr),
			}
		}
	case 193:
		{
			yyVAL.node = (*InitializerList)(nil)
		}
	case 194:
		{
			yyVAL.node = &InitializerList{
				Case:        1,
				Initializer: yyS[yypt-0].node.(*Initializer),
			}
		}
	case 195:
		{
			yyVAL.node = &InitializerList{
				Case:        2,
				Designation: yyS[yypt-1].node.(*Designation),
				Initializer: yyS[yypt-0].node.(*Initializer),
			}
		}
	case 196:
		{
			yyVAL.node = &InitializerList{
				Case:            3,
				InitializerList: yyS[yypt-2].node.(*InitializerList),
				Token:           yyS[yypt-1].Token,
				Initializer:     yyS[yypt-0].node.(*Initializer),
			}
		}
	case 197:
		{
			yyVAL.node = &InitializerList{
				Case:            4,
				InitializerList: yyS[yypt-3].node.(*InitializerList),
				Token:           yyS[yypt-2].Token,
				Designation:     yyS[yypt-1].node.(*Designation),
				Initializer:     yyS[yypt-0].node.(*Initializer),
			}
		}
	case 198:
		{
			yyVAL.node = &Designation{
				DesignatorList: yyS[yypt-1].node.(*DesignatorList).reverse(),
				Token:          yyS[yypt-0].Token,
			}
		}
	case 199:
		{
			yyVAL.node = &DesignatorList{
				Designator: yyS[yypt-0].node.(*Designator),
			}
		}
	case 200:
		{
			yyVAL.node = &DesignatorList{
				Case:           1,
				DesignatorList: yyS[yypt-1].node.(*DesignatorList),
				Designator:     yyS[yypt-0].node.(*Designator),
			}
		}
	case 201:
		{
			yyVAL.node = &Designator{
				Case:   DesignatorField,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 202:
		{
			yyVAL.node = &Designator{
				Case:      DesignatorIndex,
				Token:     yyS[yypt-2].Token,
				ConstExpr: yyS[yypt-1].node.(*ConstExpr),
				Token2:    yyS[yypt-0].Token,
			}
		}
	case 203:
		{
			yyVAL.node = &Stmt{
				Case:         StmtBlock,
				CompoundStmt: yyS[yypt-0].node.(*CompoundStmt),
			}
		}
	case 204:
		{
			yyVAL.node = &Stmt{
				Case:     StmtExpr,
				ExprStmt: yyS[yypt-0].node.(*ExprStmt),
			}
		}
	case 205:
		{
			yyVAL.node = &Stmt{
				Case:          StmtIter,
				IterationStmt: yyS[yypt-0].node.(*IterationStmt),
			}
		}
	case 206:
		{
			yyVAL.node = &Stmt{
				Case:     StmtJump,
				JumpStmt: yyS[yypt-0].node.(*JumpStmt),
			}
		}
	case 207:
		{
			yyVAL.node = &Stmt{
				Case:        StmtLabeled,
				LabeledStmt: yyS[yypt-0].node.(*LabeledStmt),
			}
		}
	case 208:
		{
			yyVAL.node = &Stmt{
				Case:          StmtSelect,
				SelectionStmt: yyS[yypt-0].node.(*SelectionStmt),
			}
		}
	case 209:
		{
			yyVAL.node = &LabeledStmt{
				Case:      LabeledStmtSwitchCase,
				Token:     yyS[yypt-3].Token,
				ConstExpr: yyS[yypt-2].node.(*ConstExpr),
				Token2:    yyS[yypt-1].Token,
				Stmt:      yyS[yypt-0].node.(*Stmt),
			}
		}
	case 210:
		{
			yyVAL.node = &LabeledStmt{
				Case:   LabeledStmtDefault,
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Stmt:   yyS[yypt-0].node.(*Stmt),
			}
		}
	case 211:
		{
			lx := yylex.(*lexer)
			lhs := &LabeledStmt{
				Case:   LabeledStmtLabel,
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Stmt:   yyS[yypt-0].node.(*Stmt),
			}
			yyVAL.node = lhs
			lx.scope.insertLabel(lx.context, lhs)
		}
	case 212:
		{
			lx := yylex.(*lexer)
			lhs := &LabeledStmt{
				Case:   LabeledStmtLabel2,
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Stmt:   yyS[yypt-0].node.(*Stmt),
			}
			yyVAL.node = lhs
			lx.scope.insertLabel(lx.context, lhs)
		}
	case 213:
		{
			lx := yylex.(*lexer)
			lx.newScope()
		}
	case 214:
		{
			lx := yylex.(*lexer)
			lhs := &CompoundStmt{
				Token:            yyS[yypt-3].Token,
				BlockItemListOpt: yyS[yypt-1].node.(*BlockItemListOpt),
				Token2:           yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope, _ = lx.popScope()
		}
	case 215:
		{
			yyVAL.node = &BlockItemList{
				BlockItem: yyS[yypt-0].node.(*BlockItem),
			}
		}
	case 216:
		{
			yyVAL.node = &BlockItemList{
				Case:          1,
				BlockItemList: yyS[yypt-1].node.(*BlockItemList),
				BlockItem:     yyS[yypt-0].node.(*BlockItem),
			}
		}
	case 217:
		{
			yyVAL.node = (*BlockItemListOpt)(nil)
		}
	case 218:
		{
			yyVAL.node = &BlockItemListOpt{
				BlockItemList: yyS[yypt-0].node.(*BlockItemList).reverse(),
			}
		}
	case 219:
		{
			yyVAL.node = &BlockItem{
				Case:        BlockItemDecl,
				Declaration: yyS[yypt-0].node.(*Declaration),
			}
		}
	case 220:
		{
			yyVAL.node = &BlockItem{
				Case: BlockItemStmt,
				Stmt: yyS[yypt-0].node.(*Stmt),
			}
		}
	case 221:
		{
			yyVAL.node = &ExprStmt{
				ExprListOpt: yyS[yypt-1].node.(*ExprListOpt),
				Token:       yyS[yypt-0].Token,
			}
		}
	case 222:
		{
			yyVAL.node = &SelectionStmt{
				Case:     SelectionStmtIfElse,
				Token:    yyS[yypt-6].Token,
				Token2:   yyS[yypt-5].Token,
				ExprList: yyS[yypt-4].node.(*ExprList).reverse(),
				Token3:   yyS[yypt-3].Token,
				Stmt:     yyS[yypt-2].node.(*Stmt),
				Token4:   yyS[yypt-1].Token,
				Stmt2:    yyS[yypt-0].node.(*Stmt),
			}
		}
	case 223:
		{
			yyVAL.node = &SelectionStmt{
				Case:     SelectionStmtIf,
				Token:    yyS[yypt-4].Token,
				Token2:   yyS[yypt-3].Token,
				ExprList: yyS[yypt-2].node.(*ExprList).reverse(),
				Token3:   yyS[yypt-1].Token,
				Stmt:     yyS[yypt-0].node.(*Stmt),
			}
		}
	case 224:
		{
			yyVAL.node = &SelectionStmt{
				Case:     SelectionStmtSwitch,
				Token:    yyS[yypt-4].Token,
				Token2:   yyS[yypt-3].Token,
				ExprList: yyS[yypt-2].node.(*ExprList).reverse(),
				Token3:   yyS[yypt-1].Token,
				Stmt:     yyS[yypt-0].node.(*Stmt),
			}
		}
	case 225:
		{
			yyVAL.node = &IterationStmt{
				Case:     IterationStmtDo,
				Token:    yyS[yypt-6].Token,
				Stmt:     yyS[yypt-5].node.(*Stmt),
				Token2:   yyS[yypt-4].Token,
				Token3:   yyS[yypt-3].Token,
				ExprList: yyS[yypt-2].node.(*ExprList).reverse(),
				Token4:   yyS[yypt-1].Token,
				Token5:   yyS[yypt-0].Token,
			}
		}
	case 226:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &IterationStmt{
				Case:         IterationStmtForDecl,
				Token:        yyS[yypt-7].Token,
				Token2:       yyS[yypt-6].Token,
				Declaration:  yyS[yypt-5].node.(*Declaration),
				ExprListOpt:  yyS[yypt-4].node.(*ExprListOpt),
				Token3:       yyS[yypt-3].Token,
				ExprListOpt2: yyS[yypt-2].node.(*ExprListOpt),
				Token4:       yyS[yypt-1].Token,
				Stmt:         yyS[yypt-0].node.(*Stmt),
			}
			lx.popScope()
		}
	case 227:
		{
			lx := yylex.(*lexer)
			yyVAL.node = &IterationStmt{
				Case:         IterationStmtFor,
				Token:        yyS[yypt-8].Token,
				Token2:       yyS[yypt-7].Token,
				ExprListOpt:  yyS[yypt-6].node.(*ExprListOpt),
				Token3:       yyS[yypt-5].Token,
				ExprListOpt2: yyS[yypt-4].node.(*ExprListOpt),
				Token4:       yyS[yypt-3].Token,
				ExprListOpt3: yyS[yypt-2].node.(*ExprListOpt),
				Token5:       yyS[yypt-1].Token,
				Stmt:         yyS[yypt-0].node.(*Stmt),
			}
			lx.popScope()
		}
	case 228:
		{
			yyVAL.node = &IterationStmt{
				Case:     IterationStmtWhile,
				Token:    yyS[yypt-4].Token,
				Token2:   yyS[yypt-3].Token,
				ExprList: yyS[yypt-2].node.(*ExprList).reverse(),
				Token3:   yyS[yypt-1].Token,
				Stmt:     yyS[yypt-0].node.(*Stmt),
			}
		}
	case 229:
		{
			yyVAL.node = &JumpStmt{
				Case:   JumpStmtBreak,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 230:
		{
			yyVAL.node = &JumpStmt{
				Case:   JumpStmtContinue,
				Token:  yyS[yypt-1].Token,
				Token2: yyS[yypt-0].Token,
			}
		}
	case 231:
		{
			lx := yylex.(*lexer)
			lhs := &JumpStmt{
				Case:   JumpStmtGoto,
				Token:  yyS[yypt-2].Token,
				Token2: yyS[yypt-1].Token,
				Token3: yyS[yypt-0].Token,
			}
			yyVAL.node = lhs
			lhs.scope = lx.scope
		}
	case 232:
		{
			yyVAL.node = &JumpStmt{
				Case:        JumpStmtReturn,
				Token:       yyS[yypt-2].Token,
				ExprListOpt: yyS[yypt-1].node.(*ExprListOpt),
				Token2:      yyS[yypt-0].Token,
			}
		}
	case 233:
		{
			yyVAL.node = &ExternalDeclarationList{
				ExternalDeclaration: yyS[yypt-0].node.(*ExternalDeclaration),
			}
		}
	case 234:
		{
			yyVAL.node = &ExternalDeclarationList{
				Case:                    1,
				ExternalDeclarationList: yyS[yypt-1].node.(*ExternalDeclarationList),
				ExternalDeclaration:     yyS[yypt-0].node.(*ExternalDeclaration),
			}
		}
	case 235:
		{
			yyVAL.node = &ExternalDeclaration{
				Case:        ExternalDeclarationDecl,
				Declaration: yyS[yypt-0].node.(*Declaration),
			}
		}
	case 236:
		{
			yyVAL.node = &ExternalDeclaration{
				Case:               ExternalDeclarationFunc,
				FunctionDefinition: yyS[yypt-0].node.(*FunctionDefinition),
			}
		}
	case 237:
		{
			lx := yylex.(*lexer)
			lx.scope.typedef = false
			lx.currFn = yyS[yypt-0].node.(*Declarator).Name()
		}
	case 238:
		{
			lx := yylex.(*lexer)
			lhs := &FunctionDefinition{
				Case:                  FunctionDefinitionSpec,
				DeclarationSpecifiers: yyS[yypt-4].node.(*DeclarationSpecifiers),
				Declarator:            yyS[yypt-3].node.(*Declarator),
				DeclarationListOpt:    yyS[yypt-1].node.(*DeclarationListOpt),
				FunctionBody:          yyS[yypt-0].node.(*FunctionBody),
			}
			yyVAL.node = lhs
			lhs.Declarator.FunctionDefinition = lhs
			if lx.scope.Parent != nil {
				panic("internal error")
			}
		}
	case 239:
		{
			lx := yylex.(*lexer)
			if !lx.tweaks.EnableOmitFuncDeclSpec {
				lx.err(yyS[yypt-0].node, "omitting function declaration specifiers not allowed")
			}
			lx.scope.typedef = false
			lx.currFn = yyS[yypt-0].node.(*Declarator).Name()
		}
	case 240:
		{
			lx := yylex.(*lexer)
			lhs := &FunctionDefinition{
				Case:               FunctionDefinitionInt,
				Declarator:         yyS[yypt-3].node.(*Declarator),
				DeclarationListOpt: yyS[yypt-1].node.(*DeclarationListOpt),
				FunctionBody:       yyS[yypt-0].node.(*FunctionBody),
			}
			yyVAL.node = lhs
			lhs.Declarator.FunctionDefinition = lhs
			if lx.scope.Parent != nil {
				panic("internal error")
			}
		}
	case 241:
		{
			lx := yylex.(*lexer)
			lx.declareFuncName() // [0], 6.4.2.2.
		}
	case 242:
		{
			yyVAL.node = &FunctionBody{
				CompoundStmt: yyS[yypt-0].node.(*CompoundStmt),
			}
		}
	case 243:
		{
			yyVAL.node = &DeclarationList{
				Declaration: yyS[yypt-0].node.(*Declaration),
			}
		}
	case 244:
		{
			yyVAL.node = &DeclarationList{
				Case:            1,
				DeclarationList: yyS[yypt-1].node.(*DeclarationList),
				Declaration:     yyS[yypt-0].node.(*Declaration),
			}
		}
	case 245:
		{
			yyVAL.node = (*DeclarationListOpt)(nil)
		}
	case 246:
		{
			yyVAL.node = &DeclarationListOpt{
				DeclarationList: yyS[yypt-0].node.(*DeclarationList).reverse(),
			}
		}
	case 247:
		{
			yyVAL.node = (*VolatileOpt)(nil)
		}
	case 248:
		{
			yyVAL.node = &VolatileOpt{
				Token: yyS[yypt-0].Token,
			}
		}

	}

	if yyEx != nil && yyEx.Reduced(r, exState, &yyVAL) {
		return -1
	}
	goto yystack /* stack new state and value */
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38505.c<|end_filename|>
/* PR middle-end/38505 */
/* { dg-do compile } */

struct S
{
  unsigned short a[50];
  unsigned short b[20];
};
extern void bar (struct S *);
extern void baz (unsigned short *);
extern unsigned short d[];

void
foo (void)
{
  struct S s;
  unsigned short g[50];

  baz (g);
  __builtin_memcpy (&s, g, sizeof (g));
  __builtin_memcpy (s.b, d, sizeof (s.b));
  bar (&s);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37433-1.c<|end_filename|>
void regex_subst(void)
{
  const void *subst = "";
  (*(void (*)(int))subst) (0);
}

void foobar (void)
{
  int x;
  (*(void (*)(void))&x) ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34993.c<|end_filename|>
/* PR c/34993 */

/* { dg-do compile } */

typedef int x[] __attribute((may_alias));


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42234.c<|end_filename|>
/* { dg-options "-g" } */

void
foo (int x)
{
  struct S { int s; } d = { 1 };
  unsigned int e = 1;
  if (x)
    e = x && d.s;
  else
    for (e = 0; e <= 3; e--)
      ;
  e++;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39928-2.c<|end_filename|>
typedef _Complex float __m128;
extern __m128 _mm_sub_ps (__m128 __A, __m128 __B);
extern __m128 _mm_mul_ps (__m128 __A, __m128 __B);
__m128
vq_nbest(const __m128 *codebook, __m128 d, __m128 in)
{
  return _mm_sub_ps(d, _mm_mul_ps(in, *codebook++));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59119.c<|end_filename|>
extern void *memmove (void *, const void *, __SIZE_TYPE__);
extern void *memset (void *, int, __SIZE_TYPE__);

typedef struct {
    long n_prefix;
    long n_spadding;
} NumberFieldWidths;

void
fill_number(char *buf, const NumberFieldWidths *spec)
{
    if (spec->n_prefix) {
        memmove(buf,
                (char *) 0,
                spec->n_prefix * sizeof(char));
        buf += spec->n_prefix;
    }
    if (spec->n_spadding) {
        memset(buf, 0, spec->n_spadding);
        buf += spec->n_spadding;
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040130-1.c<|end_filename|>
/* PR target/11475 */
/* Origin: <<EMAIL>> */

/* This used to fail on SPARC because of a broken pattern.  */

#pragma pack(2)

struct
{
  unsigned char G936:7;
  unsigned short G937:6;
  unsigned int :4;
  unsigned short :14;
  unsigned int G938:8;
#if __INT_MAX__ >= 2147483647L
  unsigned int :30;
#endif
  unsigned short :16;
#if __INT_MAX__ >= 2147483647L
  unsigned int :18;
#endif
  unsigned short G939:9;
} G928b;

void TestG928(void)
{
  G928b.G936 |= G928b.G939;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr29128.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

typedef unsigned long Eterm;
process_main (void)
{
  register Eterm x0;
  register Eterm *reg = ((void *) 0);
  register Eterm *I = ((void *) 0);
  static void *opcodes[] = {
      &&lb_allocate_heap_zero_III,
      &&lb_allocate_init_tIy, &&lb_allocate_zero_tt
  };
lb_allocate_heap_III:{
    Eterm *next;
    goto *(next);
  }
lb_allocate_heap_zero_III:{
  }
lb_allocate_init_tIy:{
  }
lb_allocate_zero_tt:{
    Eterm *next;
    {
      Eterm *tmp_ptr = ((Eterm *) (((x0)) - 0x1));
      (*(Eterm *) (((unsigned char *) reg) + (I[(0) + 1]))) = ((tmp_ptr)[0]);
      x0 = ((tmp_ptr)[1]);
    }
    goto *(next);
  }
}


<|start_filename|>v2/headers/linux_amd64/usr/include/sys/ioctl.h<|end_filename|>
/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef	_SYS_IOCTL_H
#define	_SYS_IOCTL_H	1

#include <features.h>

__BEGIN_DECLS
/* Get the list of `ioctl' requests and related constants.  */
#include <bits/ioctls.h>
/* Define some types used by `ioctl' requests.  */
#include <bits/ioctl-types.h>
/* On a Unix system, the system <sys/ioctl.h> probably defines some of
   the symbols we define in <sys/ttydefaults.h> (usually with the same
   values).  The code to generate <bits/ioctls.h> has omitted these
   symbols to avoid the conflict, but a Unix program expects <sys/ioctl.h>
   to define them, so we must include <sys/ttydefaults.h> here.  */
#include <sys/ttydefaults.h>
/* Perform the I/O control operation specified by REQUEST on FD.
   One argument may follow; its presence and type depend on REQUEST.
   Return value depends on REQUEST.  Usually -1 indicates error.  */
extern int ioctl(int __fd, unsigned long int __request, ...) __THROW;

__END_DECLS
#endif				/* sys/ioctl.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/strcpy.c<|end_filename|>
/* Copyright (C) 2000  Free Software Foundation.

   Ensure builtin memcpy and strcpy perform correctly.

   Written by <NAME>, 11/24/2000.  */

extern void abort (void);
extern char *strcpy (char *, const char *);
typedef __SIZE_TYPE__ size_t;
extern void *memcpy (void *, const void *, size_t);
extern int memcmp (const void *, const void *, size_t);

char p[32] = "";

void
main_test (void)
{
  if (strcpy (p, "abcde") != p || memcmp (p, "abcde", 6))
    abort ();
  if (strcpy (p + 16, "vwxyz" + 1) != p + 16 || memcmp (p + 16, "wxyz", 5))
    abort ();
  if (strcpy (p + 1, "") != p + 1 || memcmp (p, "a\0cde", 6))
    abort ();  
  if (strcpy (p + 3, "fghij") != p + 3 || memcmp (p, "a\0cfghij", 9))
    abort ();
  if (memcpy (p, "ABCDE", 6) != p || memcmp (p, "ABCDE", 6))
    abort ();
  if (memcpy (p + 16, "VWX" + 1, 2) != p + 16 || memcmp (p + 16, "WXyz", 5))
    abort ();
  if (memcpy (p + 1, "", 1) != p + 1 || memcmp (p, "A\0CDE", 6))
    abort ();  
  if (memcpy (p + 3, "FGHI", 4) != p + 3 || memcmp (p, "A\0CFGHIj", 9))
    abort ();

  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
  if (__builtin_strcpy (p, "abcde") != p || memcmp (p, "abcde", 6))
    abort ();
  if (__builtin_memcpy (p, "ABCDE", 6) != p || memcmp (p, "ABCDE", 6))
    abort ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37483.c<|end_filename|>
/* PR target/37483 */

unsigned long long
foo (unsigned count, int i)
{
  unsigned long long value;
  if (i == 0)
    value = (value & 0xFFFFFFFF) >> count;
  return value;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030716-1.c<|end_filename|>
void baz(int i);

void foo(int i, int A[i+1])
{
    int j=A[i];
    void bar() { baz(A[i]); }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49238.c<|end_filename|>
/* PR target/49238 */
extern int bar (void);

void
foo (unsigned long long a, int b)
{
  int i;

  if (b)
    for (a = -12; a >= 10; a = bar ())
      break;
  else
    return;

  for (i = 0; i < 10; i += 10)
    if ((i == bar ()) | (bar () >= a))
      bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41679.c<|end_filename|>
/* { dg-options "-g" } */

extern int a;
extern char b;
extern int foo (void);

void
test (void)
{
  int c;
  b = foo () ? '~' : '\0';
  while ((c = foo ()))
    if (c == '7')
      a = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37258.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
__extension__ typedef long long int int64_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
static inline unsigned int
lshift_u_s (unsigned int left, int right)
{
  if ((right) || (right >= sizeof (unsigned int) * 8)
      || (left > (4294967295U >> right)))
    return left;
}
static inline unsigned long int
div_rhs (long int rhs)
{
  if (rhs == 0)
    return 1;
  return rhs;
}

uint32_t g_230;
int8_t g_294;
uint16_t g_316;
uint32_t g_334;
int32_t g_375;
int64_t g_380;
int32_t func_99 (int16_t p_100, int32_t p_101, int32_t p_102, int32_t p_103,
                 int64_t p_105, int32_t p_106, int32_t p_107, int16_t p_108,
                 int16_t p_109);
int32_t
func_77 (int64_t p_79)
{
  int16_t l_397;
  if (mod_rhs (p_79))
    p_79 = 1;
  else
    for (p_79 = 0; 0; p_79 += 1)
      {
      }
  if (lshift_s_s (1, func_112 (2L, (lshift_u_s (g_334, p_79)))))
    {
      int8_t l_384;
      int64_t l_414;
      if (lshift_u_s (g_375, 1))
        {
          func_23 (func_99 (1, 1, 1, 1, g_230, p_79, 1, g_334, 1), 1);
          for (p_79 = 0; 0; ++p_79)
            {
            }
        }
      if (div_rhs (func_82 (1, 1, g_380, 1, l_397, 1, 1)))
        func_99 ((func_82
                  (1, g_334, g_294, func_112 (1, (p_79 & 1)), g_316, 1, 1)),
                 1, (0xFBA25CA382A8CA74LL), l_384, l_414, 0L, 1, 1, 1);
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/complex-1.c<|end_filename|>
extern void u (int, int);
extern void v (float, float);

void f (__complex__ int x)
{
  u (0, x);
}

void g (__complex__ float x)
{
  v (0, x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120727-1.c<|end_filename|>
/* { dg-options "-mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */

union {
  char *p;
  float f;
} u;

void
f (void)
{
  u.p = "";
  u.f += 1.1f;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54103-6.c<|end_filename|>
void
f (void)
{
  0 || 65536*65536 ? : 0;
}


<|start_filename|>testdata/issue86.c<|end_filename|>
int i = 42;
extern int j = 24;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31541.c<|end_filename|>
typedef unsigned char Uchar;
struct scsi_mode_header {
 unsigned char sense_data_len : 8;
};
int f(void)
{
 struct scsi_mode_header md;
return *(Uchar*)&md;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030416-1.c<|end_filename|>
void foo(int x)
{
  if (x > 3)
    {;}
  else
    bar();
  x = 9;
}

main()
{
  int j;

  foo(j);
  return j;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37387.c<|end_filename|>
typedef long int Int;
void FuncMakeConsequencesPres (long *objDefs1)
{
  long a = (long)objDefs1;
  int c = a & 0x01;
  int b = 0;
  if (!  ( 13 <= ( c ? 0 : (((int) objDefs1 & 0x02) ? 0 : *objDefs1  ))
           && b <= 0))
    ErrorQuit ();
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45535.c<|end_filename|>
typedef struct {
    unsigned long pmd0;
    unsigned long pmd1;
} pmd_t;
typedef unsigned int pgd_t;
struct mm_struct {
    pgd_t * pgd;
};
extern inline int pmd_bad(pmd_t pmd)
{
}
extern inline void pmd_clear(pmd_t * pmdp)
{
  ((*pmdp).pmd0) = 0x20 | 0x00;
  ((*pmdp).pmd1) = 0x20 | 0x00;
}
static inline void free_one_pmd(pmd_t * dir)
{
  if (pmd_bad(*dir)) {
      pmd_clear(dir);
  }
}
static inline void free_one_pgd(pgd_t * dir)
{
  int j;
  pmd_t * pmd;
  pmd = ((pmd_t *) ((unsigned long) (void *)(__pgd_val(dir) & (~((1UL << 12)-1)))) + (((0) >> 21) & (512 - 1)));
  for (j = 0; j < 512 ; j++) {
      free_one_pmd(pmd+j);
  }
}
void clear_page_tables(struct mm_struct *mm, unsigned long first, int nr)
{
  pgd_t * page_dir = mm->pgd;
  do {
      free_one_pgd(page_dir);
  } while (--nr);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040124-1.c<|end_filename|>
int
f1 (int a, int b)
{
  int i, j, k;

  switch (b)
    {
    case (-9):
      j = 4;
      break;
    case (-10):
      j = 10;
      break;
    case (-8):
      j = 15;
      break;
    }

  i = f2 (f3 (b == (-9) ? k : a), j);

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20100907.c<|end_filename|>
struct a {int a,b;};
const static struct a a[1]={{1,2}};
struct a b,c;
t()
{
  int idx = 0;
  b=a[idx];
  c=a[idx];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43614.c<|end_filename|>
volatile int g_2[7];

void foo (unsigned);

int main (void)
{
  int i_459 = 0;
  int t2818;
  int t2819;
  volatile char *t2820;
  int t2821;
  volatile char *t2822;
  int *t2823;
  unsigned t2824;
LL655:
  t2822 = (volatile char *)g_2;
  t2821 = i_459;
  t2820 = t2822 + t2821;
  t2823 = (int *)t2820;
  t2824 = *t2823;
  foo (t2824);
  t2818 = i_459;
  t2819 = t2818 + 1;
  i_459 = t2819;
  goto LL655;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071108-1.c<|end_filename|>
/* PR tree-optimization/33680 */
/* { dg-require-effective-target alloca } */

int
f (int dim, int *b, int *c)
{
  int newcentroid[3][dim];
  int *a = newcentroid[2];
  int i, dist = 0;
  __builtin_memcpy (newcentroid, c, sizeof (newcentroid));
  for (i = 0; i < dim; i++)
    dist += (a[i] - b[i]) * (a[i] - b[i]);
  return dist;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030503-1.c<|end_filename|>
void foo ()
{
  if (1)
    goto foo;
  else
    for (;;)
      {
      foo:
	bar ();
	return;
      }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040602-1.c<|end_filename|>
/* Test type qualifiers.  These should as equal types.  */
extern volatile unsigned long foo;
typedef unsigned long ulong;
extern volatile ulong foo;
volatile ulong foo;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120822-1.c<|end_filename|>
int a;
int c;
int b;
void shr_long(int d, unsigned char s)
{
 long long dvd, div, mod;
 dvd = b;
 mod = dvd % s;
 if (((c >> ((mod & 0xff) % 32)) & 1) == 0)
  a = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030902-1.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
typedef unsigned long int reg_syntax_t;
struct re_pattern_buffer
{
  unsigned char *buffer;
};
typedef enum
{
  jump,
  jump_n,
} re_opcode_t;
static int
foo (bufp)
     struct re_pattern_buffer *bufp;
{
  int mcnt;
  unsigned char *p = bufp->buffer;
  switch (((re_opcode_t) * p++))
    {
    unconditional_jump:
      ;
      /* This test case caused an ICE because the statement insertion
	 routines were failing to update basic block boundaries.  */
    case jump:
      do
        {
          (mcnt) = *(p) & 0377;
        }
      while (0);
      (p) += 2;
      p += mcnt;
    case jump_n:
      (mcnt) = *(p + 2) & 0377;
      if (mcnt)
        goto unconditional_jump;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030109-1.c<|end_filename|>
void foo ()
{
  int x1, x2, x3;

  bar (&x2 - &x1, &x3 - &x2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37078.c<|end_filename|>
int foo (int b)
{
  if (b == (int)0x80000000)
    return __builtin_abs (b);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070603-2.c<|end_filename|>
typedef _Complex double ar[];
int f(ar *a, unsigned int n)
{
  unsigned int i;
  for(i = 0; i< n; i++)
    {
      (*a)[i*4] = __real__ (*a)[(i+1)*4] + __real__ (*a)[i*4];
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr25513.c<|end_filename|>
int f(void)
{
  static _Complex double t;
  int i, j;
  for(i = 0;i<2;i++)
    for(j = 0;j<2;j++)
      t = .5 * 1.0;
  return t;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr50009.c<|end_filename|>
/* PR target/50009 */

struct S {
  short a;
  short b[];
} __attribute__((packed));


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030415-1.c<|end_filename|>
float g(float f)
{
  return fabs(f);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37713.c<|end_filename|>
void add_opush(void)
{
    unsigned char formats[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0xff };
    void *dtds[sizeof(formats)];
    unsigned int i;
    unsigned char dtd = 0x08;
    for (i = 0; i < sizeof(formats); i++)
	dtds[i] = &dtd;
    sdp_seq_alloc(dtds);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37056.c<|end_filename|>
/* { dg-skip-if "ptxas times out" { nvptx-*-* } { "-O2" "-Os" } { "" } } */
extern void abort (void);

static union {
    char buf[12 * sizeof (long long)];
} u;

int main ()
{
  int off, len, i;
  char *p, *q;

  for (off = 0; off < (sizeof (long long)); off++)
    for (len = 1; len < (10 * sizeof (long long)); len++)
      {
	for (i = 0; i < (12 * sizeof (long long)); i++)
	  u.buf[i] = 'a';
	p = (__extension__ (__builtin_constant_p ('\0') && ('\0') == '\0'
			    ? ({void *__s = (u.buf + off); __s;})
			    : __builtin_memset (u.buf + off, '\0', len)));
	if (p != u.buf + off)
	  abort ();
	for (i = 0; i < off; i++, q++)
	  if (*q != 'a')
	    abort ();
      }
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120524-1.c<|end_filename|>
  char CJPAT_Packet[1508] = {};
void build_packet(int port, char *packet) {
            memcpy(packet, CJPAT_Packet, sizeof(CJPAT_Packet)); 
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030804-1.c<|end_filename|>
/* Extracted from PR middle-end/11771.  */
/* The following testcase used to ICE without -ffast-math from unbounded
   recursion in fold.  This was due to the logic in negate_expr_p not
   matching that in negate_expr.  */

double f(double x) {
    return -(1 - x) + (x ? -(1 - x) : 0);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040914-1.c<|end_filename|>
extern int clobber_k (int *); 
extern int barrier (void); 
int t, u; 

int
process_second_stream(void) 
{ 
  int k; 
  int i = 0, j = 0, result; 
 
  clobber_k (&k); 
 
  while(t)
    ;
 
  while(!j) 
    {
      while(!j) 
	{ 
	  barrier (); 
	  if (t == 0) 
	    break; 
	  else if(t == 1) 
	    t = 2; 
	  else 
	    {
	      if(t < 0) 
		j=1; 
	      if(u < 0) 
		k = i++; 
	    }
	} 
 
      if(!j && u) 
	j=1; 
    } 
 
  return 0; 
} 


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr14692.c<|end_filename|>
/* PR rtl-optimization/14692  */

void assert_failed (void);           
void eidecpos_1 (unsigned char *pos, long n)
{
  int i;
  for (i = 0; i < n; i++)
    {
      const unsigned char *dc_ptr1 = pos;
      pos--;
      if (dc_ptr1 - pos == 1)
	assert_failed ();
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17906.c<|end_filename|>
struct usc_bigstack_t {};

void
usc_recressive_func(int cnt, int max, struct usc_bigstack_t bstack)
{
  usc_recressive_func(cnt+1, max, bstack);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-caselabels.c<|end_filename|>
#define LIM1(x) x##0: x##1: x##2: x##3: x##4: x##5: x##6: x##7: x##8: x##9: 
#define LIM2(x) LIM1(x##0) LIM1(x##1) LIM1(x##2) LIM1(x##3) LIM1(x##4) \
		LIM1(x##5) LIM1(x##6) LIM1(x##7) LIM1(x##8) LIM1(x##9)
#define LIM3(x) LIM2(x##0) LIM2(x##1) LIM2(x##2) LIM2(x##3) LIM2(x##4) \
		LIM2(x##5) LIM2(x##6) LIM2(x##7) LIM2(x##8) LIM2(x##9)
#define LIM4(x) LIM3(x##0) LIM3(x##1) LIM3(x##2) LIM3(x##3) LIM3(x##4) \
		LIM3(x##5) LIM3(x##6) LIM3(x##7) LIM3(x##8) LIM3(x##9)
#define LIM5(x) LIM4(x##0) LIM4(x##1) LIM4(x##2) LIM4(x##3) LIM4(x##4) \
		LIM4(x##5) LIM4(x##6) LIM4(x##7) LIM4(x##8) LIM4(x##9)
#define LIM6(x) LIM5(x##0) LIM5(x##1) LIM5(x##2) LIM5(x##3) LIM5(x##4) \
		LIM5(x##5) LIM5(x##6) LIM5(x##7) LIM5(x##8) LIM5(x##9)
#define LIM7(x) LIM6(x##0) LIM6(x##1) LIM6(x##2) LIM6(x##3) LIM6(x##4) \
		LIM6(x##5) LIM6(x##6) LIM6(x##7) LIM6(x##8) LIM6(x##9)

void q19_func (long i)
{
  switch (i) {
    LIM5 (case 1)
      break;
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49029.c<|end_filename|>
/* PR middle-end/49029 */
/* { dg-require-effective-target int32plus } */
struct S { volatile unsigned f : 11; signed g : 30; } __attribute__((packed));
struct T { volatile struct S h; } __attribute__((packed)) a;
void foo (int);

void
bar ()
{
  foo (a.h.g);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65595.c<|end_filename|>
extern void *memcpy(void *, const void *, unsigned long);
struct in6_addr {
  struct {
    int u6_addr32[4];
  };
};
struct foo {
  struct in6_addr daddr;
  struct in6_addr saddr;
} a;
extern void ip6_route_output(struct foo, int);
int b;
static void find_route_ipv6(struct in6_addr *p1) {
  if (p1)
    memcpy(0, p1, sizeof(struct in6_addr));
  ip6_route_output(a, b);
}
void cxgbi_ep_connect() { find_route_ipv6(0); }



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69740-1.c<|end_filename|>
char a;
short b;
void fn1() {
  if (b)
    ;
  else {
    int c[1] = {0};
  l1:;
  }
  if (a)
    goto l1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45876.c<|end_filename|>
/* PR middle-end/45876 */

unsigned
foo (unsigned x)
{
  short i = 0;
  i = ((short) (((((unsigned) i) >> 1) & 16383) + x)) & 16383;
  return i;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20021008-1.c<|end_filename|>
/* Origin: PR target/7434 <NAME> <<EMAIL>> */

int main(void)
{
  static const int align_g[] = { 1, 2, 4, 8, 16 };
  char * buf;
  int i = 0;
  volatile long double val = 0;
  val = *((long double *)(buf + align_g[i]));
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37742.c<|end_filename|>
void foo(int* __restrict__ p, int* q, int* p1, int *q1)
{
  int i;

  p = p1;
  q = q1;

  for (i = 0; i < 4; ++i)
    *++q = *++p + 1;
}

void bar(int* p, int* __restrict__ q, int* p1, int *q1)
{
  int i;

  p = p1;
  q = q1;

  for (i = 0; i < 4; ++i)
    *++q = *++p + 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41006-1.c<|end_filename|>
typedef int (*FARPROC)();

typedef int (*LPFN_ACCEPTEX)(void*);
static LPFN_ACCEPTEX acceptex_fn;

int xWSAIoctl(void*);
static void get_fn(FARPROC* fn)
{
    FARPROC func;
    if (!xWSAIoctl( &func))
        *fn = func;
}

void get_fn_pointers()
{
    get_fn((FARPROC*)&acceptex_fn);
}


<|start_filename|>ucn32.go<|end_filename|>
// Copyright 2016 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build 386 arm armbe mips mipsle sparc

package cc

var ucnDigits = [...]uint32{
	0x33: 0x3ff,
	0x37: 0x3ff0000,
	0x4b: 0xffc0,
	0x4f: 0xffc0,
	0x53: 0xffc0,
	0x57: 0xffc0,
	0x5b: 0xffc0,
	0x5f: 0xff80,
	0x63: 0xffc0,
	0x67: 0xffc0,
	0x6b: 0xffc0,
	0x72: 0x3ff0000,
	0x76: 0x3ff0000,
	0x79: 0xfffff,
}

var ucnNonDigits = [...]uint32{
	0x5: 0x4a00400, 0xff7fffff, 0xff7fffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xfc3fffff,
	0xffffff, 0x12: 0xffff0000, 0xffffffff,
	0xffffffff, 0xe9ff01ff, 0x30003, 0x1f,
	0x1b: 0x4000000,
	0xffffd740, 0xfffffffb, 0x547f7fff, 0xffffd,
	0xffffdffe, 0xffffffff, 0xdffeffff, 0xffffffff,
	0xffff0003, 0xffffffff, 0xffff199f, 0x33fcfff,
	0x29: 0xfffe0000, 0x27fffff, 0xfffffffe,
	0xff, 0x3ff0000, 0x2f: 0x70000,
	0x31: 0x7fffffe, 0x7ffff, 0xffff0000,
	0xffffffff, 0x7cffffff, 0x1fff7fff, 0x3de0,
	0x48: 0xffffffee, 0xe3ffffff, 0xff073fff, 0xf,
	0xfff99fee, 0xc3c5fdff, 0xb000399f, 0x3000f,
	0xfff987e4, 0xc36dfdff, 0x5e003987, 0x100000,
	0xfffbafee, 0xe3edfdff, 0x13bbf, 0x1,
	0xfff99fee, 0xe3cdfdff, 0xb000398f, 0x3,
	0xd63dc7ec, 0xc3bfc718, 0x3dc7,
	0x60: 0xfffddfee, 0xc3effdff, 0x3ddf, 0x3,
	0xfffddfec, 0xc3effdff, 0x40003ddf, 0x3,
	0xfffddfec, 0xc3fffdff, 0x3dcf, 0x3,
	0x70: 0xfffffffe, 0x7ffffff, 0xc00ffff,
	0x74: 0xfef02596, 0x3bff6cae, 0x30003f5f,
	0x78: 0x3000001, 0xc2a00000, 0xfffffeff, 0xfffe03ff,
	0xfebf0fdf, 0x2fe3fff,
	0x85: 0xffffffff, 0xffff003f, 0x7fffff,
	0xf0: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xfffffff, 0xffffffff, 0xffffffff, 0x3ffffff,
	0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff,
	0xffffffff, 0x5fdfffff, 0xfcf1fdc, 0x1fdc1fff,
	0x101: 0x80000000, 0x1, 0x80000000,
	0x108: 0x3f2ffc84, 0x1fbfd50, 0x10b: 0xffffffff,
	0x7,
	0x180: 0xe0, 0x3fe, 0xfffffffe, 0xffffffff,
	0x180fffff, 0xfffffffe, 0xffffffff, 0x187fffff,
	0xffffffe0, 0x1fff,
	0x270: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0x3f,
	0x560: 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
	0xffffffff, 0xf,
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52891-1.c<|end_filename|>
/* PR tree-optimizations/52891 */

struct S
{
  int a;
  struct T { unsigned c : 10; } b;
} s;

void
bar (short x, short y, int **p)
{
  if ((x && y) + **p)
    while (1);
}

void
foo (int **p)
{
  bar (s.a, s.b.c, p);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37669-2.c<|end_filename|>
/* PR middle-end/37669 */

#define FMT10 "%d%d%d%d%d%d%d%d%d%d"
#define FMT100 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10 FMT10
#define FMT1000 FMT100 FMT100 FMT100 FMT100 FMT100 \
		FMT100 FMT100 FMT100 FMT100 FMT100
#define ARG10 , i, i, i, i, i, i, i, i, i, i
#define ARG100 ARG10 ARG10 ARG10 ARG10 ARG10 ARG10 ARG10 ARG10 ARG10 ARG10
#define ARG1000 ARG100 ARG100 ARG100 ARG100 ARG100 \
		ARG100 ARG100 ARG100 ARG100 ARG100
void foo (char *s, int i, int j)
{
  __builtin___snprintf_chk (s, i, 1, j, FMT1000 ARG1000);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44063.c<|end_filename|>
typedef signed char int8_t;
typedef short int16_t;
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;

union unaligned_32 {uint32_t l;} __attribute__((packed)) __attribute__((may_alias));
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){return a << (32 - s);}
typedef struct GetBitContext { const uint8_t *buffer, *buffer_end; int index;}GetBitContext;
typedef struct VLC {int16_t (*table)[2];} VLC;
static __attribute__((always_inline)) inline int get_vlc2(GetBitContext *s, int16_t (*table)[2], int bits, int max_depth) {
    unsigned int re_index= (s)->index;
    int re_cache= 0;
    {
        int n, nb_bits;
        unsigned int index;
        index= NEG_USR32(re_cache, bits);
        n = table[index][1];
        if(max_depth > 1 && n < 0){
            re_cache= bswap_32((((const union unaligned_32 *) (((const uint8_t *)(s)->buffer)+(re_index>>3)))->l)) << (re_index&0x07);
        }
    }
}
typedef struct HYuvContext{GetBitContext gb; int decorrelate; int bitstream_bpp; uint8_t *temp[3]; VLC vlc[6];} HYuvContext;
static __attribute__((always_inline)) inline void decode_bgr_1(HYuvContext *s, int count, int decorrelate, int alpha){
    int i;
        int code = get_vlc2(&s->gb, s->vlc[3].table, 11, 1);
        if(code != -1){
            s->temp[0][4*i+0] = get_vlc2(&s->gb, s->vlc[0].table, 11, 3);
            s->temp[0][4*i+1] = get_vlc2(&s->gb, s->vlc[1].table, 11, 3);
            s->temp[0][4*i+2] = get_vlc2(&s->gb, s->vlc[2].table, 11, 3);
        }
}
void decode_bgr_bitstream(HYuvContext *s, int count){
    if(s->decorrelate){
        if(s->bitstream_bpp==24) decode_bgr_1(s, count, 1, 0);
        else             decode_bgr_1(s, count, 1, 1);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr25860.c<|end_filename|>
/* We used to ICE because PRE would try to PRE the load of *Note from the
   loop. */

struct g
{
  int i;
};
struct f
{
  struct g i;
};
int GSM_RingNoteGetFullDuration(struct g)__attribute__((const));
void savewav(struct f *gg)
{
  struct g *Note;
  long i = 0,j,length=0;
  Note = &gg->i;
  for (j=0;j<GSM_RingNoteGetFullDuration(*Note);j++)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51761.c<|end_filename|>
/* PR middle-end/51761 */

struct S { unsigned int len; };
struct S foo (struct S);

struct S
bar (struct S x)
{
  return ({ struct S a = x; foo (a); });
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031227-1.c<|end_filename|>
/* PR opt/13159 -- test unswitching a loop multiple times.  */

void
foo (void)
{
  long j, k, p, g;

  while (p)
    {
      while (k < 0 && j < 0)
	;
      if (g)
	;
      else if (g)
	;      
    }
}


<|start_filename|>v2/headers/generator.go<|end_filename|>
// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build ignore

package main

import (
	"bytes"
	"flag"
	"fmt"
	"go/format"
	"go/token"
	"io/ioutil"
	"os"
	"path/filepath"
	"runtime"
	"sort"
	"strings"

	"github.com/cznic/cc/v2"
	"github.com/cznic/ir"
	"github.com/cznic/sortutil"
	"github.com/cznic/strutil"
	"github.com/cznic/xc"
)

var (
	goOS   = runtime.GOOS
	goArch = runtime.GOARCH
	osArch = fmt.Sprintf("%s_%s", goOS, goArch)

	crt  string
	dict = xc.Dict

	need = map[string][]string{ // "goos_goarch" or "goos" or "all": list of headers
		"all": {
			"alloca.h",
			"assert.h",
			"ctype.h",
			"errno.h",
			"fcntl.h",
			"float.h",
			"inttypes.h",
			"limits.h",
			"locale.h",
			"malloc.h",
			"math.h",
			"setjmp.h",
			"stdarg.h",
			"stdbool.h",
			"stddef.h",
			"stdint.h",
			"stdio.h",
			"stdlib.h",
			"string.h",
			"strings.h",
			"sys/stat.h",
			"sys/time.h",
			"sys/wait.h",
			"time.h",
			"unistd.h",
			"wchar.h",
			"zlib.h",
		},
		"linux": {
			"arpa/inet.h",
			"dirent.h",
			"dlfcn.h",
			"execinfo.h",
			"fts.h",
			"getopt.h",
			"grp.h",
			"memory.h",
			"netdb.h",
			"pthread.h",
			"pwd.h",
			"sched.h",
			"signal.h",
			"signal.h",
			"sys/file.h",
			"sys/ioctl.h",
			"sys/mman.h",
			"sys/param.h",
			"sys/resource.h",
			"sys/select.h",
			"sys/socket.h",
			"sys/statfs.h",
			"sys/times.h",
			"sys/types.h",
			"sys/uio.h",
			"sys/un.h",
			"sys/utsname.h",
			"termios.h",
			"utime.h",
		},
		"windows": {
			"io.h",
			"process.h",
			"windows.h",
		},
	}
)

func main() {
	oCRT := flag.String("crt", "", "CRT import path to update")
	flag.Parse()
	if s := *oCRT; s != "" {
		var err error
		if crt, err = findRepo(s); err != nil {
			panic(err)
		}
	}
	sys := predefined()
	var want []string
	for k, v := range need {
		switch {
		case
			k == "all",
			k == goOS,
			k == osArch:

			want = append(want, v...)
		}
	}
	want = want[:sortutil.Dedupe(sort.StringSlice(want))]
	var got []string
	tweaks := &cc.Tweaks{
		EnableAnonymousStructFields: true,
		EnableEmptyStructs:          true,
		TrackIncludes: func(s string) {
			if strings.HasSuffix(s, "builtin.h") || strings.HasSuffix(s, "predefined.h") {
				return
			}

			got = append(got, s)
		},
	}
	for _, v := range want {
		tu, err := cc.Translate(
			tweaks,
			append([]string{"@"}, sys...),
			sys,
			cc.NewStringSource("main.c", fmt.Sprintf(`
#include "./%s/builtin.h"

// Output of gcc features.c && ./a.out in github.com/cznic/cc/v2/headers on linux_amd64.
#define _POSIX_SOURCE 1
#define _POSIX_C_SOURCE 200809
#define _DEFAULT_SOURCE 1


#include "%v"
`, osArch, v)),
		)
		if err != nil {
			panic(cc.ErrString(err))
		}

		if crt != "" {
			defs(v, tu)
		}
	}
	got = got[:sortutil.Dedupe(sort.StringSlice(got))]
	for _, v := range got {
		b, err := ioutil.ReadFile(v)
		if err != nil {
			panic(cc.ErrString(err))
		}

		f := filepath.Join(osArch, v)
		mkdir(filepath.Dir(f))
		if err := ioutil.WriteFile(f, b, 0644); err != nil {
			panic(cc.ErrString(err))
		}
	}
}

func predefined() []string {
	predefined, inc, sys, err := cc.HostConfig("-std=c99")
	if err != nil {
		panic(cc.ErrString(err))
	}

	if len(inc) != 0 {
		panic(inc)
	}

	a := strings.Split(predefined, "\n")
	w := 0
	for _, v := range a {
		v = strings.TrimSpace(v)
		if s := strings.ToLower(v); strings.Contains(s, "gcc") || strings.Contains(s, "gnu") {
			continue
		}

		a[w] = v
		w++
	}
	a = a[:w]
	osArch = fmt.Sprintf("%s_%s", goOS, goArch)
	mkdir(osArch)
	b := bytes.NewBufferString(`// Code generated by $ go generate - DO NOT EDIT.

// +build ignore
	
`)
	for _, v := range a {
		fmt.Fprintln(b, v)
	}

	if err := ioutil.WriteFile(filepath.Join(osArch, "predefined.h"), b.Bytes(), 0644); err != nil {
		panic(cc.ErrString(err))
	}

	b.Reset()
	m := map[string]struct{}{}
	w = 0
	for _, v := range sys {
		v := filepath.Clean(v)
		if _, ok := m[v]; !ok {
			fmt.Fprintf(b, "%s\n", v)
			sys[w] = v
			w++
		}
		m[v] = struct{}{}
	}
	sys = sys[:w]
	if err := ioutil.WriteFile(filepath.Join(osArch, "paths"), b.Bytes(), 0664); err != nil {
		panic(cc.ErrString(err))
	}

	return sys
}

func mkdir(p string) {
	if _, err := os.Stat(p); err != nil {
		if !os.IsNotExist(err) {
			panic(cc.ErrString(err))
		}

		if err := os.MkdirAll(p, 0775); err != nil {
			panic(fmt.Errorf("%q: %v", p, err))
		}
	}
}

func findRepo(s string) (string, error) {
	s = filepath.FromSlash(s)
	for _, v := range strings.Split(strutil.Gopath(), string(os.PathListSeparator)) {
		p := filepath.Join(v, "src", s)
		fi, err := os.Lstat(p)
		if err != nil {
			continue
		}

		if fi.IsDir() {
			wd, err := os.Getwd()
			if err != nil {
				return "", err
			}

			if p, err = filepath.Rel(wd, p); err != nil {
				return "", err
			}

			if p, err = filepath.Abs(p); err != nil {
				return "", err
			}

			return p, nil
		}
	}
	return "", fmt.Errorf("%q: cannot find repository", s)
}

func defs(include string, tu *cc.TranslationUnit) {
	model, err := cc.NewModel()
	if err != nil {
		panic(err)
	}

	var a []string
	for _, v := range tu.Macros {
		if v.IsFnLike {
			continue
		}

		from := tu.FileSet.Position(v.DefTok.Pos()).Filename
		if from == "" || strings.Contains(from, "predefined.h") || strings.Contains(from, "builtin.h") {
			continue
		}

		nm := string(dict.S(v.DefTok.Val))
		if strings.HasPrefix(nm, "__") {
			continue
		}

		if strings.HasPrefix(nm, "_") && len(nm) > 1 {
			if c := nm[1]; c >= 'A' && c <= 'Z' {
				continue
			}
		}

		a = append(a, nm)
	}
	sort.Strings(a)
	fn := include[:len(include)-2] // sans .h
	dir := filepath.Join(crt, filepath.FromSlash(fn))
	fn = filepath.Join(dir, fmt.Sprintf("const_%s_%s.go", runtime.GOOS, runtime.GOARCH))
	pn := filepath.Base(dir)
	if token.Lookup(pn).IsKeyword() {
		pn += "_"
	}
	buf := bytes.NewBufferString(fmt.Sprintf(`// Code generated by $ go generate - DO NOT EDIT.

package %s

const (`, pn))
	for _, nm := range a {
		v := tu.Macros[dict.SID(nm)]
		op, err := v.Eval(model, tu.Macros)
		if err != nil {
			continue
		}

		buf.WriteByte('\n')
		switch x := op.Value.(type) {
		case *ir.Float32Value:
			fmt.Fprintf(buf, "X%s = %v", nm, x.Value)
		case *ir.Float64Value:
			fmt.Fprintf(buf, "X%s = %v", nm, x.Value)
		case *ir.Int64Value:
			switch {
			case op.Type.IsUnsigned():
				fmt.Fprintf(buf, "X%s = %v", nm, uint64(cc.ConvertInt64(x.Value, op.Type, model)))
			default:
				fmt.Fprintf(buf, "X%s = %v", nm, x.Value)
			}
		case *ir.StringValue:
			fmt.Fprintf(buf, "X%s = %q", nm, dict.S(int(x.StringID)))
		default:
			panic(fmt.Errorf("%T", x))
		}
	}
	a = a[:0]
	for _, v := range tu.FileScope.Idents {
		switch x := v.(type) {
		case *cc.EnumerationConstant:
			nm := string(dict.S(x.Token.Val))
			if strings.HasPrefix(nm, "__") {
				continue
			}

			a = append(a, string(dict.S(x.Token.Val)))
		}
	}
	sort.Strings(a)
	if len(a) != 0 {
		buf.WriteByte('\n')
	}
	for _, nm := range a {
		op := tu.FileScope.Idents[dict.SID(nm)].(*cc.EnumerationConstant).Operand
		x := op.Value.(*ir.Int64Value)
		buf.WriteByte('\n')
		switch {
		case op.Type.IsUnsigned():
			fmt.Fprintf(buf, "C%s = %v", nm, uint64(cc.ConvertInt64(x.Value, op.Type, model)))
		default:
			fmt.Fprintf(buf, "C%s = %v", nm, x.Value)
		}
	}
	buf.WriteString("\n)\n")
	b, err := format.Source(buf.Bytes())
	if err != nil {
		fmt.Printf("%s\n", buf.Bytes())
		panic(err)
	}
	mkdir(dir)
	if err := ioutil.WriteFile(fn, b, 0644); err != nil {
		panic(err)
	}
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/nestfunc-5.c<|end_filename|>
extern void abort (void);
extern void exit (int);

#ifndef NO_TRAMPOLINES
static void recursive (int n, void (*proc) (void))
{
  __label__ l1;

  void do_goto (void)
  {
    goto l1;
  }

  if (n == 3)
      recursive (n - 1, do_goto);
  else if (n > 0)
    recursive (n - 1, proc);
  else
    (*proc) ();
  return;

l1:
  if (n == 3)
    exit (0);
  else
    abort ();
}

int main ()
{
  recursive (10, abort);
  abort ();
}
#else
int main () { return 0; }
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39423-2.c<|end_filename|>
/* PR target/39423 */

typedef unsigned short uint16_t;

typedef struct
{
  short x, y;
} P;

typedef struct
{
  uint16_t w, h;
} D;

typedef struct
{
  P p;
  D s;
} A;

typedef struct
{
  uint16_t f;
} W;

typedef struct
{
  void* w;
  D s;
} T;

extern void* foo00 (void*, void*);

void foo01 (W* w)
{
  void* it;
  uint16_t c, i;
  T* cl;
  T* rs;
  T* t;
  uint16_t rh = 0;
  uint16_t v = !(w->f & 0x8000);
  A a = { };

  for (c = 0, it = foo00 (w, 0); it; it = foo00 (w, it), c++);

  for (it = foo00 (w, 0), i = 0; i <= c; it = foo00 (w, it), i++, cl++)
    {
      if (i)
 	for (t = rs; t < cl; t++)
	  *((uint16_t*)&t->s + ((!v) ? 1 : 0)) = rh;

      rh = (rh > ((*((uint16_t*)&a.s + ((!v) ? 1 : 0)))))
	   ? rh
	   : ((*((uint16_t*)&a.s + ((!v) ? 1 : 0)))); 
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070906-1.c<|end_filename|>
struct Bar {
  int i[8];
};
struct Bar foo(struct Bar **p)
{
  return foo((struct Bar**)*p);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39614-1.c<|end_filename|>
typedef struct page {
 unsigned long flags;
} mem_map_t;
static inline void set_page_zone(struct page *page, unsigned long zone_num)
{
 page->flags &= ~(~0UL << (64 - 8));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39779.c<|end_filename|>
int test (char v1)
{
  v1 >>= 0xdebecced;
  return v1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040916-1.c<|end_filename|>
/* PR tree-optimization/17512

   We used to try to fold "(char) (X ^ Y)", where '^' is
   TRUTH_XOR_EXPR into ((char) X ^ (char) Y), creating TRUTH_XOR_EXPR
   with its operands being of type char, which is invalid.  */

char
foo (int p)
{
  int q = p;
  return (p != 0) == (p == q);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040323-1.c<|end_filename|>
/* PR middle-end/14694 */
/* { dg-require-alias "" } */

unsigned int _rtld_global = 1;
extern unsigned int _rtld_local __attribute__ ((alias ("_rtld_global")));

unsigned int
_dl_start (void *arg)
{
  unsigned int elf_machine_rel () { return _rtld_local; }
  return elf_machine_rel ();
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr47237.c<|end_filename|>
/* { dg-xfail-if "can cause stack underflow" { nios2-*-* } "*" "" } */
/* { dg-require-effective-target untyped_assembly } */
#define INTEGER_ARG  5

extern void abort(void);

static void foo(int arg)
{
  if (arg != INTEGER_ARG)
    abort();
}

static void bar(int arg)
{
  foo(arg);
  __builtin_apply(foo, __builtin_apply_args(), 16);
}

int main(void)
{
  bar(INTEGER_ARG);

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43415.c<|end_filename|>
int main()                                                                      
{                                                                               
  unsigned long long table[256];                                          
  unsigned int i;
  for (i=0; i<256; ++i) {
      unsigned long long j;
      unsigned char x=i;
      for (j=0; j<5; ++j) {
	  x += x<<1;
	  x ^= x>>1;
      }
      for (j=0; j<5; ++j) {
	  x += x<<1;
	  x ^= x>>1;
      }
      for (j=0; j<5; ++j) {
	  x += x<<1;
	  x ^= x>>1;
      }
      for (j=0; j<5; ++j) {
	  x += x<<1;
	  x ^= x>>1;
      }
      for (j=0; j<5; ++j) {
	  x += x<<1;
	  x ^= x>>1;
      }
      table[i] ^= (((unsigned long long)x)<<16);
  }
  for (i=0; i<256; ++i) {
      if ((table[i]&0xff)==i)
	return 1;
  }
  return 0;
}



<|start_filename|>v2/testdata/cpp-expand/004.h<|end_filename|>
#define __str(x) # x
#define ____header(name, os, arch) __str(name ## _ ## os ## _ ## arch.h)
#define ___header(name, os, arch) ____header(name, os, arch)
#define __header(name) ___header(name, __os__, __arch__)

#define bug1(name) __str(name ## _ ## os)
bug1(a);

#define __os__ linux
#define __arch__ amd64

____header(a, b, c);
___header(a, b, c);
__header(a);

#define __str2(x) #x
#define ____header2(name, os, arch) __str2(name##_##os##_##arch.h)
#define ___header2(name, os, arch) ____header2(name, os, arch)
#define __header2(name) ___header2(name, __os__, __arch__)

#define bug2(name) __str2(name##_##os)
bug2(a);

____header2(a, b, c);
___header2(a, b, c);
__header2(a);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070419-1.c<|end_filename|>
/* PR tree-optimization/31632 */

struct S
{
  long int l;
  void *m;
};

int
foo (struct S *x)
{
  unsigned long a;
  a = x->l;
  if (a <= ((void *) 0))
    x->m = 0;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/980329-1.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
struct re_pattern_buffer
  {
    unsigned char *buffer;
    unsigned long int used;
  };
struct re_registers
  {
    int *start;
  };

static const char **regstart, **regend;
static const char **old_regend;

static int
re_match_2_internal (struct re_pattern_buffer *bufp,
		     struct re_registers *regs)
{
  unsigned char *p = bufp->buffer;
  unsigned char *pend = p + bufp->used;

  for (;;)
    {
      int highest_active_reg = 1;
      if (bufp)
	{
	  int i;
	  for (i = 1;; i++)
	    regs->start[i] = 0;
	}

      switch ((unsigned int) *p++)
	{
	case 1:
	  {
	    unsigned char r = *p;
	    if (r)
	      highest_active_reg = r;
	  }
	  if (p + 2 == pend)
	    {
	      char is_a_jump_n = 0;
	      int mcnt = 0;
	      unsigned char *p1;

	      p1 = p + 2;
	      switch (*p1++)
		{
		case 2:
		  is_a_jump_n = 1;
		case 1:
		  do { do { mcnt = *p1; } while (0); p1 += 2; } while (0);
		  if (is_a_jump_n)
		    p1 = 0;
		}

	      if (mcnt && *p1 == 0)
		{
		  unsigned r;
		  for (r = 0; r < (unsigned) *p + (unsigned) *(p + 1); r++)
		    {
		      if (regend[0] >= regstart[r])
			regend[r] = old_regend[r];
		    }
		  do { while (0 < highest_active_reg + 1) { } } while (0);
		}
	    }
	}
    }

  return -1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51767.c<|end_filename|>
/* PR rtl-optimization/51767 */

extern void fn1 (void), fn2 (void);

static inline __attribute__((always_inline)) int
foo (int *x, long y)
{
  asm goto ("" : : "r" (x), "r" (y) : "memory" : lab);
  return 0;
lab:
  return 1;
}

void
bar (int *x)
{
  if (foo (x, 23))
    fn1 ();
  else
    fn2 ();

  foo (x, 2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38360.c<|end_filename|>
/* PR middle-end/38360 */
/* { dg-require-effective-target untyped_assembly } */

int
main ()
{
  fputs ("");
  fputs_unlocked ("");
  return 0;
}


<|start_filename|>testdata/issue89.c<|end_filename|>
struct a
{
  unsigned f : 3;
};

void h()
{
  struct a a;
  g(a.f);
}

int g(unsigned);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52175.c<|end_filename|>
void bad (void);
char *foo (char *src, char **last)
{
  char *dst;
  int ch;
  dst = src = (src ? src : *last);

  if (*src == 0)
    return 0;

  while (src[0])
    {
      if (!src[1])
	{
	  bad ();
	  break;
	}
      *dst = *src;
      dst += 1;
      src += 2;
    }
  *last = src;
  *dst = 0;
  return *last;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69989-2.c<|end_filename|>
int a, b, d;
short c[] = {4073709551611, 1, 4, 4};

void fn1() {
  if (a)
    goto LABEL_vhvhP;
  for (;;) {
    for (; b; b++)
      d = c[b + 3] | c[b];
  LABEL_vhvhP:
    if (d)
      break;
  }
}

int main() { return 0; }


<|start_filename|>ast.go<|end_filename|>
// Code generated by yy. DO NOT EDIT.

// Copyright 2016 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

import (
	"go/token"

	"github.com/cznic/xc"
)

// AbstractDeclarator represents data reduced by productions:
//
//	AbstractDeclarator:
//	        Pointer
//	|       PointerOpt DirectAbstractDeclarator  // Case 1
type AbstractDeclarator struct {
	declarator               *Declarator
	Case                     int
	DirectAbstractDeclarator *DirectAbstractDeclarator
	Pointer                  *Pointer
	PointerOpt               *PointerOpt
}

func (n *AbstractDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AbstractDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AbstractDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Pointer.Pos()
	case 1:
		if p := n.PointerOpt.Pos(); p != 0 {
			return p
		}

		return n.DirectAbstractDeclarator.Pos()
	default:
		panic("internal error")
	}
}

// AbstractDeclaratorOpt represents data reduced by productions:
//
//	AbstractDeclaratorOpt:
//	        /* empty */
//	|       AbstractDeclarator  // Case 1
type AbstractDeclaratorOpt struct {
	AbstractDeclarator *AbstractDeclarator
}

func (n *AbstractDeclaratorOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AbstractDeclaratorOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AbstractDeclaratorOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.AbstractDeclarator.Pos()
}

// ArgumentExpressionList represents data reduced by productions:
//
//	ArgumentExpressionList:
//	        Expression
//	|       ArgumentExpressionList ',' Expression  // Case 1
type ArgumentExpressionList struct {
	ArgumentExpressionList *ArgumentExpressionList
	Case                   int
	Expression             *Expression
	Token                  xc.Token
}

func (n *ArgumentExpressionList) reverse() *ArgumentExpressionList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ArgumentExpressionList
	for nb != nil {
		nc := nb.ArgumentExpressionList
		nb.ArgumentExpressionList = na
		na = nb
		nb = nc
	}
	n.ArgumentExpressionList = nil
	return na
}

func (n *ArgumentExpressionList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ArgumentExpressionList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ArgumentExpressionList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.ArgumentExpressionList.Pos()
	case 0:
		return n.Expression.Pos()
	default:
		panic("internal error")
	}
}

// ArgumentExpressionListOpt represents data reduced by productions:
//
//	ArgumentExpressionListOpt:
//	        /* empty */
//	|       ArgumentExpressionList  // Case 1
type ArgumentExpressionListOpt struct {
	ArgumentExpressionList *ArgumentExpressionList
}

func (n *ArgumentExpressionListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ArgumentExpressionListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ArgumentExpressionListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ArgumentExpressionList.Pos()
}

// AssemblerInstructions represents data reduced by productions:
//
//	AssemblerInstructions:
//	        STRINGLITERAL
//	|       AssemblerInstructions STRINGLITERAL  // Case 1
type AssemblerInstructions struct {
	AssemblerInstructions *AssemblerInstructions
	Case                  int
	Token                 xc.Token
}

func (n *AssemblerInstructions) reverse() *AssemblerInstructions {
	if n == nil {
		return nil
	}

	na := n
	nb := na.AssemblerInstructions
	for nb != nil {
		nc := nb.AssemblerInstructions
		nb.AssemblerInstructions = na
		na = nb
		nb = nc
	}
	n.AssemblerInstructions = nil
	return na
}

func (n *AssemblerInstructions) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *AssemblerInstructions) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AssemblerInstructions) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.AssemblerInstructions.Pos()
	case 0:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// AssemblerOperand represents data reduced by production:
//
//	AssemblerOperand:
//	        AssemblerSymbolicNameOpt STRINGLITERAL '(' Expression ')'
type AssemblerOperand struct {
	AssemblerSymbolicNameOpt *AssemblerSymbolicNameOpt
	Expression               *Expression
	Token                    xc.Token
	Token2                   xc.Token
	Token3                   xc.Token
}

func (n *AssemblerOperand) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AssemblerOperand) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AssemblerOperand) Pos() token.Pos {
	if n == nil {
		return 0
	}

	if p := n.AssemblerSymbolicNameOpt.Pos(); p != 0 {
		return p
	}

	return n.Token.Pos()
}

// AssemblerOperands represents data reduced by productions:
//
//	AssemblerOperands:
//	        AssemblerOperand
//	|       AssemblerOperands ',' AssemblerOperand  // Case 1
type AssemblerOperands struct {
	AssemblerOperand  *AssemblerOperand
	AssemblerOperands *AssemblerOperands
	Case              int
	Token             xc.Token
}

func (n *AssemblerOperands) reverse() *AssemblerOperands {
	if n == nil {
		return nil
	}

	na := n
	nb := na.AssemblerOperands
	for nb != nil {
		nc := nb.AssemblerOperands
		nb.AssemblerOperands = na
		na = nb
		nb = nc
	}
	n.AssemblerOperands = nil
	return na
}

func (n *AssemblerOperands) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *AssemblerOperands) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AssemblerOperands) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.AssemblerOperand.Pos()
	case 1:
		return n.AssemblerOperands.Pos()
	default:
		panic("internal error")
	}
}

// AssemblerStatement represents data reduced by productions:
//
//	AssemblerStatement:
//	        BasicAssemblerStatement
//	|       "asm" VolatileOpt '(' AssemblerInstructions ':' AssemblerOperands ')'                                             // Case 1
//	|       "asm" VolatileOpt '(' AssemblerInstructions ':' AssemblerOperands ':' AssemblerOperands ')'                       // Case 2
//	|       "asm" VolatileOpt '(' AssemblerInstructions ':' AssemblerOperands ':' AssemblerOperands ':' Clobbers ')'          // Case 3
//	|       "asm" VolatileOpt "goto" '(' AssemblerInstructions ':' ':' AssemblerOperands ':' Clobbers ':' IdentifierList ')'  // Case 4
//	|       "asm" VolatileOpt '(' AssemblerInstructions ':' ')'                                                               // Case 5
//	|       "asm" VolatileOpt '(' AssemblerInstructions ':' ':' AssemblerOperands ')'                                         // Case 6
type AssemblerStatement struct {
	AssemblerInstructions   *AssemblerInstructions
	AssemblerOperands       *AssemblerOperands
	AssemblerOperands2      *AssemblerOperands
	BasicAssemblerStatement *BasicAssemblerStatement
	Case                    int
	Clobbers                *Clobbers
	IdentifierList          *IdentifierList
	Token                   xc.Token
	Token2                  xc.Token
	Token3                  xc.Token
	Token4                  xc.Token
	Token5                  xc.Token
	Token6                  xc.Token
	Token7                  xc.Token
	Token8                  xc.Token
	VolatileOpt             *VolatileOpt
}

func (n *AssemblerStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AssemblerStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AssemblerStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.BasicAssemblerStatement.Pos()
	case 1, 2, 3, 4, 5, 6:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// AssemblerSymbolicNameOpt represents data reduced by productions:
//
//	AssemblerSymbolicNameOpt:
//	        /* empty */
//	|       '[' IDENTIFIER ']'  // Case 1
type AssemblerSymbolicNameOpt struct {
	Token  xc.Token
	Token2 xc.Token
	Token3 xc.Token
}

func (n *AssemblerSymbolicNameOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AssemblerSymbolicNameOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AssemblerSymbolicNameOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// BasicAssemblerStatement represents data reduced by production:
//
//	BasicAssemblerStatement:
//	        "asm" VolatileOpt '(' AssemblerInstructions ')'
type BasicAssemblerStatement struct {
	AssemblerInstructions *AssemblerInstructions
	Token                 xc.Token
	Token2                xc.Token
	Token3                xc.Token
	VolatileOpt           *VolatileOpt
}

func (n *BasicAssemblerStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *BasicAssemblerStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BasicAssemblerStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// BlockItem represents data reduced by productions:
//
//	BlockItem:
//	        Declaration
//	|       Statement    // Case 1
type BlockItem struct {
	Case        int
	Declaration *Declaration
	Statement   *Statement
}

func (n *BlockItem) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *BlockItem) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BlockItem) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declaration.Pos()
	case 1:
		return n.Statement.Pos()
	default:
		panic("internal error")
	}
}

// BlockItemList represents data reduced by productions:
//
//	BlockItemList:
//	        BlockItem
//	|       BlockItemList BlockItem  // Case 1
type BlockItemList struct {
	BlockItem     *BlockItem
	BlockItemList *BlockItemList
	Case          int
}

func (n *BlockItemList) reverse() *BlockItemList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.BlockItemList
	for nb != nil {
		nc := nb.BlockItemList
		nb.BlockItemList = na
		na = nb
		nb = nc
	}
	n.BlockItemList = nil
	return na
}

func (n *BlockItemList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *BlockItemList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BlockItemList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.BlockItem.Pos()
	case 1:
		return n.BlockItemList.Pos()
	default:
		panic("internal error")
	}
}

// BlockItemListOpt represents data reduced by productions:
//
//	BlockItemListOpt:
//	        /* empty */
//	|       BlockItemList  // Case 1
type BlockItemListOpt struct {
	BlockItemList *BlockItemList
}

func (n *BlockItemListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *BlockItemListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BlockItemListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.BlockItemList.Pos()
}

// Clobbers represents data reduced by productions:
//
//	Clobbers:
//	        STRINGLITERAL
//	|       Clobbers ',' STRINGLITERAL  // Case 1
type Clobbers struct {
	Case     int
	Clobbers *Clobbers
	Token    xc.Token
	Token2   xc.Token
}

func (n *Clobbers) reverse() *Clobbers {
	if n == nil {
		return nil
	}

	na := n
	nb := na.Clobbers
	for nb != nil {
		nc := nb.Clobbers
		nb.Clobbers = na
		na = nb
		nb = nc
	}
	n.Clobbers = nil
	return na
}

func (n *Clobbers) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *Clobbers) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Clobbers) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.Clobbers.Pos()
	case 0:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// CommaOpt represents data reduced by productions:
//
//	CommaOpt:
//	        /* empty */
//	|       ','          // Case 1
type CommaOpt struct {
	Token xc.Token
}

func (n *CommaOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *CommaOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *CommaOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// CompoundStatement represents data reduced by production:
//
//	CompoundStatement:
//	        '{' BlockItemListOpt '}'
type CompoundStatement struct {
	scope            *Bindings // Scope of the CompoundStatement.
	BlockItemListOpt *BlockItemListOpt
	Token            xc.Token
	Token2           xc.Token
}

func (n *CompoundStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *CompoundStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *CompoundStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// ConstantExpression represents data reduced by production:
//
//	ConstantExpression:
//	        Expression
type ConstantExpression struct {
	Type       Type        // Type of expression.
	Value      interface{} // Non nil for certain constant expressions.
	toks       []xc.Token  //
	Expression *Expression
}

func (n *ConstantExpression) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ConstantExpression) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ConstantExpression) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Expression.Pos()
}

// ControlLine represents data reduced by productions:
//
//	ControlLine:
//	        PPDEFINE IDENTIFIER ReplacementList
//	|       PPDEFINE IDENTIFIER_LPAREN "..." ')' ReplacementList                     // Case 1
//	|       PPDEFINE IDENTIFIER_LPAREN IdentifierList ',' "..." ')' ReplacementList  // Case 2
//	|       PPDEFINE IDENTIFIER_LPAREN IdentifierListOpt ')' ReplacementList         // Case 3
//	|       PPERROR PPTokenListOpt                                                   // Case 4
//	|       PPHASH_NL                                                                // Case 5
//	|       PPINCLUDE PPTokenList '\n'                                               // Case 6
//	|       PPLINE PPTokenList '\n'                                                  // Case 7
//	|       PPPRAGMA PPTokenListOpt                                                  // Case 8
//	|       PPUNDEF IDENTIFIER '\n'                                                  // Case 9
//	|       PPDEFINE IDENTIFIER_LPAREN IdentifierList "..." ')' ReplacementList      // Case 10
//	|       PPDEFINE '\n'                                                            // Case 11
//	|       PPUNDEF IDENTIFIER PPTokenList '\n'                                      // Case 12
//	|       PPINCLUDE_NEXT PPTokenList '\n'                                          // Case 13
type ControlLine struct {
	Case              int
	IdentifierList    *IdentifierList
	IdentifierListOpt *IdentifierListOpt
	PPTokenList       PPTokenList
	PPTokenListOpt    PPTokenList
	ReplacementList   PPTokenList
	Token             xc.Token
	Token2            xc.Token
	Token3            xc.Token
	Token4            xc.Token
	Token5            xc.Token
}

func (n *ControlLine) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ControlLine) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ControlLine) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// Declaration represents data reduced by productions:
//
//	Declaration:
//	        DeclarationSpecifiers InitDeclaratorListOpt ';'
//	|       StaticAssertDeclaration                          // Case 1
type Declaration struct {
	declarator              *Declarator // Synthetic declarator when InitDeclaratorListOpt is nil.
	Case                    int
	DeclarationSpecifiers   *DeclarationSpecifiers
	InitDeclaratorListOpt   *InitDeclaratorListOpt
	StaticAssertDeclaration *StaticAssertDeclaration
	Token                   xc.Token
}

func (n *Declaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Declaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Declaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.DeclarationSpecifiers.Pos()
	case 1:
		return n.StaticAssertDeclaration.Pos()
	default:
		panic("internal error")
	}
}

// DeclarationList represents data reduced by productions:
//
//	DeclarationList:
//	        Declaration
//	|       DeclarationList Declaration  // Case 1
type DeclarationList struct {
	Case            int
	Declaration     *Declaration
	DeclarationList *DeclarationList
}

func (n *DeclarationList) reverse() *DeclarationList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.DeclarationList
	for nb != nil {
		nc := nb.DeclarationList
		nb.DeclarationList = na
		na = nb
		nb = nc
	}
	n.DeclarationList = nil
	return na
}

func (n *DeclarationList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *DeclarationList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declaration.Pos()
	case 1:
		return n.DeclarationList.Pos()
	default:
		panic("internal error")
	}
}

// DeclarationListOpt represents data reduced by productions:
//
//	DeclarationListOpt:
//	        /* empty */
//	|       DeclarationList  // Case 1
type DeclarationListOpt struct {
	paramsScope     *Bindings
	DeclarationList *DeclarationList
}

func (n *DeclarationListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclarationListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationList.Pos()
}

// DeclarationSpecifiers represents data reduced by productions:
//
//	DeclarationSpecifiers:
//	        StorageClassSpecifier DeclarationSpecifiersOpt
//	|       TypeSpecifier DeclarationSpecifiersOpt          // Case 1
//	|       TypeQualifier DeclarationSpecifiersOpt          // Case 2
//	|       FunctionSpecifier DeclarationSpecifiersOpt      // Case 3
type DeclarationSpecifiers struct {
	attr                     int // tsInline, tsTypedefName, ...
	typeSpecifier            int // Encoded combination of tsVoid, tsInt, ...
	Case                     int
	DeclarationSpecifiersOpt *DeclarationSpecifiersOpt
	FunctionSpecifier        *FunctionSpecifier
	StorageClassSpecifier    *StorageClassSpecifier
	TypeQualifier            *TypeQualifier
	TypeSpecifier            *TypeSpecifier
}

func (n *DeclarationSpecifiers) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclarationSpecifiers) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationSpecifiers) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 3:
		return n.FunctionSpecifier.Pos()
	case 0:
		return n.StorageClassSpecifier.Pos()
	case 2:
		return n.TypeQualifier.Pos()
	case 1:
		return n.TypeSpecifier.Pos()
	default:
		panic("internal error")
	}
}

// DeclarationSpecifiersOpt represents data reduced by productions:
//
//	DeclarationSpecifiersOpt:
//	        /* empty */
//	|       DeclarationSpecifiers  // Case 1
type DeclarationSpecifiersOpt struct {
	attr                  int // tsInline, tsTypedefName, ...
	typeSpecifier         int // Encoded combination of tsVoid, tsInt, ...
	DeclarationSpecifiers *DeclarationSpecifiers
}

func (n *DeclarationSpecifiersOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclarationSpecifiersOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationSpecifiersOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationSpecifiers.Pos()
}

// Declarator represents data reduced by production:
//
//	Declarator:
//	        PointerOpt DirectDeclarator
type Declarator struct {
	Linkage          Linkage
	Type             Type
	bitFieldType     Type
	bitFieldGroup    int
	bitOffset        int
	bits             int
	offsetOf         int
	padding          int
	specifier        Specifier
	DirectDeclarator *DirectDeclarator
	PointerOpt       *PointerOpt
}

func (n *Declarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Declarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Declarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	if p := n.PointerOpt.Pos(); p != 0 {
		return p
	}

	return n.DirectDeclarator.Pos()
}

// DeclaratorOpt represents data reduced by productions:
//
//	DeclaratorOpt:
//	        /* empty */
//	|       Declarator   // Case 1
type DeclaratorOpt struct {
	Declarator *Declarator
}

func (n *DeclaratorOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclaratorOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclaratorOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Declarator.Pos()
}

// Designation represents data reduced by production:
//
//	Designation:
//	        DesignatorList '='
type Designation struct {
	DesignatorList *DesignatorList
	Token          xc.Token
}

func (n *Designation) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Designation) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Designation) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DesignatorList.Pos()
}

// DesignationOpt represents data reduced by productions:
//
//	DesignationOpt:
//	        /* empty */
//	|       Designation  // Case 1
type DesignationOpt struct {
	Designation *Designation
}

func (n *DesignationOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DesignationOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DesignationOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Designation.Pos()
}

// Designator represents data reduced by productions:
//
//	Designator:
//	        '[' ConstantExpression ']'
//	|       '.' IDENTIFIER              // Case 1
type Designator struct {
	Case               int
	ConstantExpression *ConstantExpression
	Token              xc.Token
	Token2             xc.Token
}

func (n *Designator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Designator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Designator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// DesignatorList represents data reduced by productions:
//
//	DesignatorList:
//	        Designator
//	|       DesignatorList Designator  // Case 1
type DesignatorList struct {
	Case           int
	Designator     *Designator
	DesignatorList *DesignatorList
}

func (n *DesignatorList) reverse() *DesignatorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.DesignatorList
	for nb != nil {
		nc := nb.DesignatorList
		nb.DesignatorList = na
		na = nb
		nb = nc
	}
	n.DesignatorList = nil
	return na
}

func (n *DesignatorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *DesignatorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DesignatorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Designator.Pos()
	case 1:
		return n.DesignatorList.Pos()
	default:
		panic("internal error")
	}
}

// DirectAbstractDeclarator represents data reduced by productions:
//
//	DirectAbstractDeclarator:
//	        '(' AbstractDeclarator ')'
//	|       DirectAbstractDeclaratorOpt '[' ExpressionOpt ']'                             // Case 1
//	|       DirectAbstractDeclaratorOpt '[' TypeQualifierList ExpressionOpt ']'           // Case 2
//	|       DirectAbstractDeclaratorOpt '[' "static" TypeQualifierListOpt Expression ']'  // Case 3
//	|       DirectAbstractDeclaratorOpt '[' TypeQualifierList "static" Expression ']'     // Case 4
//	|       DirectAbstractDeclaratorOpt '[' '*' ']'                                       // Case 5
//	|       '(' ParameterTypeListOpt ')'                                                  // Case 6
//	|       DirectAbstractDeclarator '(' ParameterTypeListOpt ')'                         // Case 7
type DirectAbstractDeclarator struct {
	directDeclarator            *DirectDeclarator
	paramsScope                 *Bindings
	AbstractDeclarator          *AbstractDeclarator
	Case                        int
	DirectAbstractDeclarator    *DirectAbstractDeclarator
	DirectAbstractDeclaratorOpt *DirectAbstractDeclaratorOpt
	Expression                  *Expression
	ExpressionOpt               *ExpressionOpt
	ParameterTypeListOpt        *ParameterTypeListOpt
	Token                       xc.Token
	Token2                      xc.Token
	Token3                      xc.Token
	TypeQualifierList           *TypeQualifierList
	TypeQualifierListOpt        *TypeQualifierListOpt
}

func (n *DirectAbstractDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DirectAbstractDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DirectAbstractDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 7:
		return n.DirectAbstractDeclarator.Pos()
	case 1, 2, 3, 4, 5:
		if p := n.DirectAbstractDeclaratorOpt.Pos(); p != 0 {
			return p
		}

		return n.Token.Pos()
	case 0, 6:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// DirectAbstractDeclaratorOpt represents data reduced by productions:
//
//	DirectAbstractDeclaratorOpt:
//	        /* empty */
//	|       DirectAbstractDeclarator  // Case 1
type DirectAbstractDeclaratorOpt struct {
	DirectAbstractDeclarator *DirectAbstractDeclarator
}

func (n *DirectAbstractDeclaratorOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DirectAbstractDeclaratorOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DirectAbstractDeclaratorOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DirectAbstractDeclarator.Pos()
}

// DirectDeclarator represents data reduced by productions:
//
//	DirectDeclarator:
//	        IDENTIFIER
//	|       '(' Declarator ')'                                                 // Case 1
//	|       DirectDeclarator '[' TypeQualifierListOpt ExpressionOpt ']'        // Case 2
//	|       DirectDeclarator '[' "static" TypeQualifierListOpt Expression ']'  // Case 3
//	|       DirectDeclarator '[' TypeQualifierList "static" Expression ']'     // Case 4
//	|       DirectDeclarator '[' TypeQualifierListOpt '*' ']'                  // Case 5
//	|       DirectDeclarator '(' ParameterTypeList ')'                         // Case 6
//	|       DirectDeclarator '(' IdentifierListOpt ')'                         // Case 7
type DirectDeclarator struct {
	EnumVal              interface{} // Non nil if DD declares an enumeration constant.
	declarator           *Declarator
	elements             int
	idScope              *Bindings // Of case 0: IDENTIFIER.
	paramsScope          *Bindings
	parent               *DirectDeclarator
	prev                 *Binding // Existing declaration in same scope, if any.
	specifier            Specifier
	visible              *Binding // Existing declaration of same ident visible in same scope, if any and this DD has storage class extrn.
	Case                 int
	Declarator           *Declarator
	DirectDeclarator     *DirectDeclarator
	Expression           *Expression
	ExpressionOpt        *ExpressionOpt
	IdentifierListOpt    *IdentifierListOpt
	ParameterTypeList    *ParameterTypeList
	Token                xc.Token
	Token2               xc.Token
	Token3               xc.Token
	TypeQualifierList    *TypeQualifierList
	TypeQualifierListOpt *TypeQualifierListOpt
}

func (n *DirectDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DirectDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DirectDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 2, 3, 4, 5, 6, 7:
		return n.DirectDeclarator.Pos()
	case 0, 1:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// ElifGroup represents data reduced by production:
//
//	ElifGroup:
//	        PPELIF PPTokenList '\n' GroupListOpt
type ElifGroup struct {
	GroupListOpt *GroupListOpt
	PPTokenList  PPTokenList
	Token        xc.Token
	Token2       xc.Token
}

func (n *ElifGroup) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ElifGroup) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ElifGroup) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// ElifGroupList represents data reduced by productions:
//
//	ElifGroupList:
//	        ElifGroup
//	|       ElifGroupList ElifGroup  // Case 1
type ElifGroupList struct {
	Case          int
	ElifGroup     *ElifGroup
	ElifGroupList *ElifGroupList
}

func (n *ElifGroupList) reverse() *ElifGroupList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ElifGroupList
	for nb != nil {
		nc := nb.ElifGroupList
		nb.ElifGroupList = na
		na = nb
		nb = nc
	}
	n.ElifGroupList = nil
	return na
}

func (n *ElifGroupList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ElifGroupList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ElifGroupList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.ElifGroup.Pos()
	case 1:
		return n.ElifGroupList.Pos()
	default:
		panic("internal error")
	}
}

// ElifGroupListOpt represents data reduced by productions:
//
//	ElifGroupListOpt:
//	        /* empty */
//	|       ElifGroupList  // Case 1
type ElifGroupListOpt struct {
	ElifGroupList *ElifGroupList
}

func (n *ElifGroupListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ElifGroupListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ElifGroupListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ElifGroupList.Pos()
}

// ElseGroup represents data reduced by production:
//
//	ElseGroup:
//	        PPELSE '\n' GroupListOpt
type ElseGroup struct {
	GroupListOpt *GroupListOpt
	Token        xc.Token
	Token2       xc.Token
}

func (n *ElseGroup) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ElseGroup) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ElseGroup) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// ElseGroupOpt represents data reduced by productions:
//
//	ElseGroupOpt:
//	        /* empty */
//	|       ElseGroup    // Case 1
type ElseGroupOpt struct {
	ElseGroup *ElseGroup
}

func (n *ElseGroupOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ElseGroupOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ElseGroupOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ElseGroup.Pos()
}

// EndifLine represents data reduced by production:
//
//	EndifLine:
//	        PPENDIF
type EndifLine struct {
	Token xc.Token
}

func (n *EndifLine) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *EndifLine) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EndifLine) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// EnumSpecifier represents data reduced by productions:
//
//	EnumSpecifier:
//	        "enum" IdentifierOpt '{' EnumeratorList CommaOpt '}'
//	|       "enum" IDENTIFIER                                     // Case 1
type EnumSpecifier struct {
	unsigned       bool
	Case           int
	CommaOpt       *CommaOpt
	EnumeratorList *EnumeratorList
	IdentifierOpt  *IdentifierOpt
	Token          xc.Token
	Token2         xc.Token
	Token3         xc.Token
}

func (n *EnumSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *EnumSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EnumSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// EnumerationConstant represents data reduced by production:
//
//	EnumerationConstant:
//	        IDENTIFIER
type EnumerationConstant struct {
	Token xc.Token
}

func (n *EnumerationConstant) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *EnumerationConstant) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EnumerationConstant) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// Enumerator represents data reduced by productions:
//
//	Enumerator:
//	        EnumerationConstant
//	|       EnumerationConstant '=' ConstantExpression  // Case 1
type Enumerator struct {
	Value               interface{} // Enumerator's value.
	Case                int
	ConstantExpression  *ConstantExpression
	EnumerationConstant *EnumerationConstant
	Token               xc.Token
}

func (n *Enumerator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Enumerator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Enumerator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.EnumerationConstant.Pos()
}

// EnumeratorList represents data reduced by productions:
//
//	EnumeratorList:
//	        Enumerator
//	|       EnumeratorList ',' Enumerator  // Case 1
type EnumeratorList struct {
	Case           int
	Enumerator     *Enumerator
	EnumeratorList *EnumeratorList
	Token          xc.Token
}

func (n *EnumeratorList) reverse() *EnumeratorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.EnumeratorList
	for nb != nil {
		nc := nb.EnumeratorList
		nb.EnumeratorList = na
		na = nb
		nb = nc
	}
	n.EnumeratorList = nil
	return na
}

func (n *EnumeratorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *EnumeratorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EnumeratorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Enumerator.Pos()
	case 1:
		return n.EnumeratorList.Pos()
	default:
		panic("internal error")
	}
}

// Expression represents data reduced by productions:
//
//	Expression:
//	        IDENTIFIER
//	|       CHARCONST                                          // Case 1
//	|       FLOATCONST                                         // Case 2
//	|       INTCONST                                           // Case 3
//	|       LONGCHARCONST                                      // Case 4
//	|       LONGSTRINGLITERAL                                  // Case 5
//	|       STRINGLITERAL                                      // Case 6
//	|       '(' ExpressionList ')'                             // Case 7
//	|       Expression '[' ExpressionList ']'                  // Case 8
//	|       Expression '(' ArgumentExpressionListOpt ')'       // Case 9
//	|       Expression '.' IDENTIFIER                          // Case 10
//	|       Expression "->" IDENTIFIER                         // Case 11
//	|       Expression "++"                                    // Case 12
//	|       Expression "--"                                    // Case 13
//	|       '(' TypeName ')' '{' InitializerList CommaOpt '}'  // Case 14
//	|       "++" Expression                                    // Case 15
//	|       "--" Expression                                    // Case 16
//	|       '&' Expression                                     // Case 17
//	|       '*' Expression                                     // Case 18
//	|       '+' Expression                                     // Case 19
//	|       '-' Expression                                     // Case 20
//	|       '~' Expression                                     // Case 21
//	|       '!' Expression                                     // Case 22
//	|       "sizeof" Expression                                // Case 23
//	|       "sizeof" '(' TypeName ')'                          // Case 24
//	|       '(' TypeName ')' Expression                        // Case 25
//	|       Expression '*' Expression                          // Case 26
//	|       Expression '/' Expression                          // Case 27
//	|       Expression '%' Expression                          // Case 28
//	|       Expression '+' Expression                          // Case 29
//	|       Expression '-' Expression                          // Case 30
//	|       Expression "<<" Expression                         // Case 31
//	|       Expression ">>" Expression                         // Case 32
//	|       Expression '<' Expression                          // Case 33
//	|       Expression '>' Expression                          // Case 34
//	|       Expression "<=" Expression                         // Case 35
//	|       Expression ">=" Expression                         // Case 36
//	|       Expression "==" Expression                         // Case 37
//	|       Expression "!=" Expression                         // Case 38
//	|       Expression '&' Expression                          // Case 39
//	|       Expression '^' Expression                          // Case 40
//	|       Expression '|' Expression                          // Case 41
//	|       Expression "&&" Expression                         // Case 42
//	|       Expression "||" Expression                         // Case 43
//	|       Expression '?' ExpressionList ':' Expression       // Case 44
//	|       Expression '=' Expression                          // Case 45
//	|       Expression "*=" Expression                         // Case 46
//	|       Expression "/=" Expression                         // Case 47
//	|       Expression "%=" Expression                         // Case 48
//	|       Expression "+=" Expression                         // Case 49
//	|       Expression "-=" Expression                         // Case 50
//	|       Expression "<<=" Expression                        // Case 51
//	|       Expression ">>=" Expression                        // Case 52
//	|       Expression "&=" Expression                         // Case 53
//	|       Expression "^=" Expression                         // Case 54
//	|       Expression "|=" Expression                         // Case 55
//	|       "_Alignof" '(' TypeName ')'                        // Case 56
//	|       '(' CompoundStatement ')'                          // Case 57
//	|       "&&" IDENTIFIER                                    // Case 58
//	|       Expression '?' ':' Expression                      // Case 59
type Expression struct {
	BinOpType                 Type        // The type operands of binary expression are coerced into, if different from Type.
	Type                      Type        // Type of expression.
	Value                     interface{} // Non nil for certain constant expressions.
	scope                     *Bindings   // Case 0: IDENTIFIER resolution scope.
	ArgumentExpressionListOpt *ArgumentExpressionListOpt
	Case                      int
	CommaOpt                  *CommaOpt
	CompoundStatement         *CompoundStatement
	Expression                *Expression
	Expression2               *Expression
	ExpressionList            *ExpressionList
	InitializerList           *InitializerList
	Token                     xc.Token
	Token2                    xc.Token
	Token3                    xc.Token
	Token4                    xc.Token
	TypeName                  *TypeName
}

func (n *Expression) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Expression) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Expression) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 8, 9, 10, 11, 12, 13, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 59:
		return n.Expression.Pos()
	case 0, 1, 2, 3, 4, 5, 6, 7, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 56, 57, 58:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// ExpressionList represents data reduced by productions:
//
//	ExpressionList:
//	        Expression
//	|       ExpressionList ',' Expression  // Case 1
type ExpressionList struct {
	Type           Type        // Type of expression.
	Value          interface{} // Non nil for certain constant expressions.
	Case           int
	Expression     *Expression
	ExpressionList *ExpressionList
	Token          xc.Token
}

func (n *ExpressionList) reverse() *ExpressionList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ExpressionList
	for nb != nil {
		nc := nb.ExpressionList
		nb.ExpressionList = na
		na = nb
		nb = nc
	}
	n.ExpressionList = nil
	return na
}

func (n *ExpressionList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ExpressionList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExpressionList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Expression.Pos()
	case 1:
		return n.ExpressionList.Pos()
	default:
		panic("internal error")
	}
}

// ExpressionListOpt represents data reduced by productions:
//
//	ExpressionListOpt:
//	        /* empty */
//	|       ExpressionList  // Case 1
type ExpressionListOpt struct {
	ExpressionList *ExpressionList
}

func (n *ExpressionListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExpressionListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExpressionListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ExpressionList.Pos()
}

// ExpressionOpt represents data reduced by productions:
//
//	ExpressionOpt:
//	        /* empty */
//	|       Expression   // Case 1
type ExpressionOpt struct {
	Expression *Expression
}

func (n *ExpressionOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExpressionOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExpressionOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Expression.Pos()
}

// ExpressionStatement represents data reduced by production:
//
//	ExpressionStatement:
//	        ExpressionListOpt ';'
type ExpressionStatement struct {
	ExpressionListOpt *ExpressionListOpt
	Token             xc.Token
}

func (n *ExpressionStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExpressionStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExpressionStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	if p := n.ExpressionListOpt.Pos(); p != 0 {
		return p
	}

	return n.Token.Pos()
}

// ExternalDeclaration represents data reduced by productions:
//
//	ExternalDeclaration:
//	        FunctionDefinition
//	|       Declaration                  // Case 1
//	|       BasicAssemblerStatement ';'  // Case 2
//	|       ';'                          // Case 3
type ExternalDeclaration struct {
	BasicAssemblerStatement *BasicAssemblerStatement
	Case                    int
	Declaration             *Declaration
	FunctionDefinition      *FunctionDefinition
	Token                   xc.Token
}

func (n *ExternalDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExternalDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExternalDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 2:
		return n.BasicAssemblerStatement.Pos()
	case 1:
		return n.Declaration.Pos()
	case 0:
		return n.FunctionDefinition.Pos()
	case 3:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// FunctionBody represents data reduced by productions:
//
//	FunctionBody:
//	        CompoundStatement
//	|       AssemblerStatement ';'  // Case 1
type FunctionBody struct {
	scope              *Bindings // Scope of the FunctionBody.
	AssemblerStatement *AssemblerStatement
	Case               int
	CompoundStatement  *CompoundStatement
	Token              xc.Token
}

func (n *FunctionBody) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *FunctionBody) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *FunctionBody) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.AssemblerStatement.Pos()
	case 0:
		return n.CompoundStatement.Pos()
	default:
		panic("internal error")
	}
}

// FunctionDefinition represents data reduced by productions:
//
//	FunctionDefinition:
//	        DeclarationSpecifiers Declarator DeclarationListOpt FunctionBody
//	|       Declarator DeclarationListOpt FunctionBody                        // Case 1
type FunctionDefinition struct {
	Case                  int
	DeclarationListOpt    *DeclarationListOpt
	DeclarationSpecifiers *DeclarationSpecifiers
	Declarator            *Declarator
	FunctionBody          *FunctionBody
}

func (n *FunctionDefinition) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *FunctionDefinition) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *FunctionDefinition) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.DeclarationSpecifiers.Pos()
	case 1:
		return n.Declarator.Pos()
	default:
		panic("internal error")
	}
}

// FunctionSpecifier represents data reduced by productions:
//
//	FunctionSpecifier:
//	        "inline"
//	|       "_Noreturn"  // Case 1
type FunctionSpecifier struct {
	attr  int // tsInline, tsTypedefName, ...
	Case  int
	Token xc.Token
}

func (n *FunctionSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *FunctionSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *FunctionSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// GroupList represents data reduced by productions:
//
//	GroupList:
//	        GroupPart
//	|       GroupList GroupPart  // Case 1
type GroupList struct {
	Case      int
	GroupList *GroupList
	GroupPart Node
}

func (n *GroupList) reverse() *GroupList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.GroupList
	for nb != nil {
		nc := nb.GroupList
		nb.GroupList = na
		na = nb
		nb = nc
	}
	n.GroupList = nil
	return na
}

func (n *GroupList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *GroupList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *GroupList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.GroupList.Pos()
	case 0:
		return n.GroupPart.Pos()
	default:
		panic("internal error")
	}
}

// GroupListOpt represents data reduced by productions:
//
//	GroupListOpt:
//	        /* empty */
//	|       GroupList    // Case 1
type GroupListOpt struct {
	GroupList *GroupList
}

func (n *GroupListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *GroupListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *GroupListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.GroupList.Pos()
}

// IdentifierList represents data reduced by productions:
//
//	IdentifierList:
//	        IDENTIFIER
//	|       IdentifierList ',' IDENTIFIER  // Case 1
type IdentifierList struct {
	Case           int
	IdentifierList *IdentifierList
	Token          xc.Token
	Token2         xc.Token
}

func (n *IdentifierList) reverse() *IdentifierList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.IdentifierList
	for nb != nil {
		nc := nb.IdentifierList
		nb.IdentifierList = na
		na = nb
		nb = nc
	}
	n.IdentifierList = nil
	return na
}

func (n *IdentifierList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *IdentifierList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IdentifierList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.IdentifierList.Pos()
	case 0:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// IdentifierListOpt represents data reduced by productions:
//
//	IdentifierListOpt:
//	        /* empty */
//	|       IdentifierList  // Case 1
type IdentifierListOpt struct {
	params         []Parameter
	IdentifierList *IdentifierList
}

func (n *IdentifierListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IdentifierListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IdentifierListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.IdentifierList.Pos()
}

// IdentifierOpt represents data reduced by productions:
//
//	IdentifierOpt:
//	        /* empty */
//	|       IDENTIFIER   // Case 1
type IdentifierOpt struct {
	Token xc.Token
}

func (n *IdentifierOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IdentifierOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IdentifierOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// IfGroup represents data reduced by productions:
//
//	IfGroup:
//	        PPIF PPTokenList '\n' GroupListOpt
//	|       PPIFDEF IDENTIFIER '\n' GroupListOpt   // Case 1
//	|       PPIFNDEF IDENTIFIER '\n' GroupListOpt  // Case 2
type IfGroup struct {
	Case         int
	GroupListOpt *GroupListOpt
	PPTokenList  PPTokenList
	Token        xc.Token
	Token2       xc.Token
	Token3       xc.Token
}

func (n *IfGroup) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IfGroup) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IfGroup) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// IfSection represents data reduced by production:
//
//	IfSection:
//	        IfGroup ElifGroupListOpt ElseGroupOpt EndifLine
type IfSection struct {
	ElifGroupListOpt *ElifGroupListOpt
	ElseGroupOpt     *ElseGroupOpt
	EndifLine        *EndifLine
	IfGroup          *IfGroup
}

func (n *IfSection) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IfSection) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IfSection) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.IfGroup.Pos()
}

// InitDeclarator represents data reduced by productions:
//
//	InitDeclarator:
//	        Declarator
//	|       Declarator '=' Initializer  // Case 1
type InitDeclarator struct {
	Case        int
	Declarator  *Declarator
	Initializer *Initializer
	Token       xc.Token
}

func (n *InitDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *InitDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Declarator.Pos()
}

// InitDeclaratorList represents data reduced by productions:
//
//	InitDeclaratorList:
//	        InitDeclarator
//	|       InitDeclaratorList ',' InitDeclarator  // Case 1
type InitDeclaratorList struct {
	Case               int
	InitDeclarator     *InitDeclarator
	InitDeclaratorList *InitDeclaratorList
	Token              xc.Token
}

func (n *InitDeclaratorList) reverse() *InitDeclaratorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.InitDeclaratorList
	for nb != nil {
		nc := nb.InitDeclaratorList
		nb.InitDeclaratorList = na
		na = nb
		nb = nc
	}
	n.InitDeclaratorList = nil
	return na
}

func (n *InitDeclaratorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *InitDeclaratorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitDeclaratorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.InitDeclarator.Pos()
	case 1:
		return n.InitDeclaratorList.Pos()
	default:
		panic("internal error")
	}
}

// InitDeclaratorListOpt represents data reduced by productions:
//
//	InitDeclaratorListOpt:
//	        /* empty */
//	|       InitDeclaratorList  // Case 1
type InitDeclaratorListOpt struct {
	InitDeclaratorList *InitDeclaratorList
}

func (n *InitDeclaratorListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *InitDeclaratorListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitDeclaratorListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.InitDeclaratorList.Pos()
}

// Initializer represents data reduced by productions:
//
//	Initializer:
//	        Expression
//	|       '{' InitializerList CommaOpt '}'  // Case 1
//	|       IDENTIFIER ':' Initializer        // Case 2
type Initializer struct {
	Case            int
	CommaOpt        *CommaOpt
	Expression      *Expression
	Initializer     *Initializer
	InitializerList *InitializerList
	Token           xc.Token
	Token2          xc.Token
}

func (n *Initializer) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Initializer) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Initializer) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Expression.Pos()
	case 1, 2:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// InitializerList represents data reduced by productions:
//
//	InitializerList:
//	        DesignationOpt Initializer
//	|       InitializerList ',' DesignationOpt Initializer  // Case 1
//	|       /* empty */                                     // Case 2
type InitializerList struct {
	Case            int
	DesignationOpt  *DesignationOpt
	Initializer     *Initializer
	InitializerList *InitializerList
	Token           xc.Token
}

func (n *InitializerList) reverse() *InitializerList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.InitializerList
	for nb != nil {
		nc := nb.InitializerList
		nb.InitializerList = na
		na = nb
		nb = nc
	}
	n.InitializerList = nil
	return na
}

func (n *InitializerList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *InitializerList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitializerList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 2:
		return 0
	case 0:
		if p := n.DesignationOpt.Pos(); p != 0 {
			return p
		}

		return n.Initializer.Pos()
	case 1:
		if p := n.InitializerList.Pos(); p != 0 {
			return p
		}

		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// IterationStatement represents data reduced by productions:
//
//	IterationStatement:
//	        "while" '(' ExpressionList ')' Statement
//	|       "do" Statement "while" '(' ExpressionList ')' ';'                                      // Case 1
//	|       "for" '(' ExpressionListOpt ';' ExpressionListOpt ';' ExpressionListOpt ')' Statement  // Case 2
//	|       "for" '(' Declaration ExpressionListOpt ';' ExpressionListOpt ')' Statement            // Case 3
type IterationStatement struct {
	Case               int
	Declaration        *Declaration
	ExpressionList     *ExpressionList
	ExpressionListOpt  *ExpressionListOpt
	ExpressionListOpt2 *ExpressionListOpt
	ExpressionListOpt3 *ExpressionListOpt
	Statement          *Statement
	Token              xc.Token
	Token2             xc.Token
	Token3             xc.Token
	Token4             xc.Token
	Token5             xc.Token
}

func (n *IterationStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IterationStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IterationStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// JumpStatement represents data reduced by productions:
//
//	JumpStatement:
//	        "goto" IDENTIFIER ';'
//	|       "continue" ';'                  // Case 1
//	|       "break" ';'                     // Case 2
//	|       "return" ExpressionListOpt ';'  // Case 3
//	|       "goto" Expression ';'           // Case 4
type JumpStatement struct {
	Case              int
	Expression        *Expression
	ExpressionListOpt *ExpressionListOpt
	Token             xc.Token
	Token2            xc.Token
	Token3            xc.Token
}

func (n *JumpStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *JumpStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *JumpStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// LabeledStatement represents data reduced by productions:
//
//	LabeledStatement:
//	        IDENTIFIER ':' Statement
//	|       "case" ConstantExpression ':' Statement  // Case 1
//	|       "default" ':' Statement                  // Case 2
type LabeledStatement struct {
	Case               int
	ConstantExpression *ConstantExpression
	Statement          *Statement
	Token              xc.Token
	Token2             xc.Token
}

func (n *LabeledStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *LabeledStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *LabeledStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// ParameterDeclaration represents data reduced by productions:
//
//	ParameterDeclaration:
//	        DeclarationSpecifiers Declarator
//	|       DeclarationSpecifiers AbstractDeclaratorOpt  // Case 1
type ParameterDeclaration struct {
	declarator            *Declarator
	AbstractDeclaratorOpt *AbstractDeclaratorOpt
	Case                  int
	DeclarationSpecifiers *DeclarationSpecifiers
	Declarator            *Declarator
}

func (n *ParameterDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ParameterDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationSpecifiers.Pos()
}

// ParameterList represents data reduced by productions:
//
//	ParameterList:
//	        ParameterDeclaration
//	|       ParameterList ',' ParameterDeclaration  // Case 1
type ParameterList struct {
	Case                 int
	ParameterDeclaration *ParameterDeclaration
	ParameterList        *ParameterList
	Token                xc.Token
}

func (n *ParameterList) reverse() *ParameterList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ParameterList
	for nb != nil {
		nc := nb.ParameterList
		nb.ParameterList = na
		na = nb
		nb = nc
	}
	n.ParameterList = nil
	return na
}

func (n *ParameterList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ParameterList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.ParameterDeclaration.Pos()
	case 1:
		return n.ParameterList.Pos()
	default:
		panic("internal error")
	}
}

// ParameterTypeList represents data reduced by productions:
//
//	ParameterTypeList:
//	        ParameterList
//	|       ParameterList ',' "..."  // Case 1
type ParameterTypeList struct {
	params        []Parameter
	Case          int
	ParameterList *ParameterList
	Token         xc.Token
	Token2        xc.Token
}

func (n *ParameterTypeList) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ParameterTypeList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterTypeList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ParameterList.Pos()
}

// ParameterTypeListOpt represents data reduced by productions:
//
//	ParameterTypeListOpt:
//	        /* empty */
//	|       ParameterTypeList  // Case 1
type ParameterTypeListOpt struct {
	ParameterTypeList *ParameterTypeList
}

func (n *ParameterTypeListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ParameterTypeListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterTypeListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ParameterTypeList.Pos()
}

// Pointer represents data reduced by productions:
//
//	Pointer:
//	        '*' TypeQualifierListOpt
//	|       '*' TypeQualifierListOpt Pointer  // Case 1
type Pointer struct {
	Case                 int
	Pointer              *Pointer
	Token                xc.Token
	TypeQualifierListOpt *TypeQualifierListOpt
}

func (n *Pointer) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Pointer) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Pointer) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// PointerOpt represents data reduced by productions:
//
//	PointerOpt:
//	        /* empty */
//	|       Pointer      // Case 1
type PointerOpt struct {
	Pointer *Pointer
}

func (n *PointerOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *PointerOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *PointerOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Pointer.Pos()
}

// PreprocessingFile represents data reduced by production:
//
//	PreprocessingFile:
//	        GroupList
type PreprocessingFile struct {
	path      string
	GroupList *GroupList
}

func (n *PreprocessingFile) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *PreprocessingFile) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *PreprocessingFile) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.GroupList.Pos()
}

// SelectionStatement represents data reduced by productions:
//
//	SelectionStatement:
//	        "if" '(' ExpressionList ')' Statement
//	|       "if" '(' ExpressionList ')' Statement "else" Statement  // Case 1
//	|       "switch" '(' ExpressionList ')' Statement               // Case 2
type SelectionStatement struct {
	Case           int
	ExpressionList *ExpressionList
	Statement      *Statement
	Statement2     *Statement
	Token          xc.Token
	Token2         xc.Token
	Token3         xc.Token
	Token4         xc.Token
}

func (n *SelectionStatement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *SelectionStatement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *SelectionStatement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// SpecifierQualifierList represents data reduced by productions:
//
//	SpecifierQualifierList:
//	        TypeSpecifier SpecifierQualifierListOpt
//	|       TypeQualifier SpecifierQualifierListOpt  // Case 1
type SpecifierQualifierList struct {
	attr                      int // tsInline, tsTypedefName, ...
	typeSpecifier             int // Encoded combination of tsVoid, tsInt, ...
	Case                      int
	SpecifierQualifierListOpt *SpecifierQualifierListOpt
	TypeQualifier             *TypeQualifier
	TypeSpecifier             *TypeSpecifier
}

func (n *SpecifierQualifierList) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *SpecifierQualifierList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *SpecifierQualifierList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.TypeQualifier.Pos()
	case 0:
		return n.TypeSpecifier.Pos()
	default:
		panic("internal error")
	}
}

// SpecifierQualifierListOpt represents data reduced by productions:
//
//	SpecifierQualifierListOpt:
//	        /* empty */
//	|       SpecifierQualifierList  // Case 1
type SpecifierQualifierListOpt struct {
	attr                   int // tsInline, tsTypedefName, ...
	typeSpecifier          int // Encoded combination of tsVoid, tsInt, ...
	SpecifierQualifierList *SpecifierQualifierList
}

func (n *SpecifierQualifierListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *SpecifierQualifierListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *SpecifierQualifierListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.SpecifierQualifierList.Pos()
}

// Statement represents data reduced by productions:
//
//	Statement:
//	        LabeledStatement
//	|       CompoundStatement    // Case 1
//	|       ExpressionStatement  // Case 2
//	|       SelectionStatement   // Case 3
//	|       IterationStatement   // Case 4
//	|       JumpStatement        // Case 5
//	|       AssemblerStatement   // Case 6
type Statement struct {
	AssemblerStatement  *AssemblerStatement
	Case                int
	CompoundStatement   *CompoundStatement
	ExpressionStatement *ExpressionStatement
	IterationStatement  *IterationStatement
	JumpStatement       *JumpStatement
	LabeledStatement    *LabeledStatement
	SelectionStatement  *SelectionStatement
}

func (n *Statement) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Statement) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Statement) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 6:
		return n.AssemblerStatement.Pos()
	case 1:
		return n.CompoundStatement.Pos()
	case 2:
		return n.ExpressionStatement.Pos()
	case 4:
		return n.IterationStatement.Pos()
	case 5:
		return n.JumpStatement.Pos()
	case 0:
		return n.LabeledStatement.Pos()
	case 3:
		return n.SelectionStatement.Pos()
	default:
		panic("internal error")
	}
}

// StaticAssertDeclaration represents data reduced by production:
//
//	StaticAssertDeclaration:
//	        "_Static_assert" '(' ConstantExpression ',' STRINGLITERAL ')' ';'
type StaticAssertDeclaration struct {
	ConstantExpression *ConstantExpression
	Token              xc.Token
	Token2             xc.Token
	Token3             xc.Token
	Token4             xc.Token
	Token5             xc.Token
	Token6             xc.Token
}

func (n *StaticAssertDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StaticAssertDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StaticAssertDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// StorageClassSpecifier represents data reduced by productions:
//
//	StorageClassSpecifier:
//	        "typedef"
//	|       "extern"    // Case 1
//	|       "static"    // Case 2
//	|       "auto"      // Case 3
//	|       "register"  // Case 4
type StorageClassSpecifier struct {
	attr  int
	Case  int
	Token xc.Token
}

func (n *StorageClassSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StorageClassSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StorageClassSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// StructDeclaration represents data reduced by productions:
//
//	StructDeclaration:
//	        SpecifierQualifierList StructDeclaratorList ';'
//	|       SpecifierQualifierList ';'                       // Case 1
//	|       StaticAssertDeclaration                          // Case 2
type StructDeclaration struct {
	Case                    int
	SpecifierQualifierList  *SpecifierQualifierList
	StaticAssertDeclaration *StaticAssertDeclaration
	StructDeclaratorList    *StructDeclaratorList
	Token                   xc.Token
}

func (n *StructDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0, 1:
		return n.SpecifierQualifierList.Pos()
	case 2:
		return n.StaticAssertDeclaration.Pos()
	default:
		panic("internal error")
	}
}

// StructDeclarationList represents data reduced by productions:
//
//	StructDeclarationList:
//	        StructDeclaration
//	|       StructDeclarationList StructDeclaration  // Case 1
type StructDeclarationList struct {
	Case                  int
	StructDeclaration     *StructDeclaration
	StructDeclarationList *StructDeclarationList
}

func (n *StructDeclarationList) reverse() *StructDeclarationList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.StructDeclarationList
	for nb != nil {
		nc := nb.StructDeclarationList
		nb.StructDeclarationList = na
		na = nb
		nb = nc
	}
	n.StructDeclarationList = nil
	return na
}

func (n *StructDeclarationList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *StructDeclarationList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclarationList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.StructDeclaration.Pos()
	case 1:
		return n.StructDeclarationList.Pos()
	default:
		panic("internal error")
	}
}

// StructDeclarator represents data reduced by productions:
//
//	StructDeclarator:
//	        Declarator
//	|       DeclaratorOpt ':' ConstantExpression  // Case 1
type StructDeclarator struct {
	Case               int
	ConstantExpression *ConstantExpression
	Declarator         *Declarator
	DeclaratorOpt      *DeclaratorOpt
	Token              xc.Token
}

func (n *StructDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declarator.Pos()
	case 1:
		if p := n.DeclaratorOpt.Pos(); p != 0 {
			return p
		}

		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// StructDeclaratorList represents data reduced by productions:
//
//	StructDeclaratorList:
//	        StructDeclarator
//	|       StructDeclaratorList ',' StructDeclarator  // Case 1
type StructDeclaratorList struct {
	Case                 int
	StructDeclarator     *StructDeclarator
	StructDeclaratorList *StructDeclaratorList
	Token                xc.Token
}

func (n *StructDeclaratorList) reverse() *StructDeclaratorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.StructDeclaratorList
	for nb != nil {
		nc := nb.StructDeclaratorList
		nb.StructDeclaratorList = na
		na = nb
		nb = nc
	}
	n.StructDeclaratorList = nil
	return na
}

func (n *StructDeclaratorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *StructDeclaratorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclaratorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.StructDeclarator.Pos()
	case 1:
		return n.StructDeclaratorList.Pos()
	default:
		panic("internal error")
	}
}

// StructOrUnion represents data reduced by productions:
//
//	StructOrUnion:
//	        "struct"
//	|       "union"   // Case 1
type StructOrUnion struct {
	Case  int
	Token xc.Token
}

func (n *StructOrUnion) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructOrUnion) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructOrUnion) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// StructOrUnionSpecifier represents data reduced by productions:
//
//	StructOrUnionSpecifier:
//	        StructOrUnion IdentifierOpt '{' StructDeclarationList '}'
//	|       StructOrUnion IDENTIFIER                                   // Case 1
//	|       StructOrUnion IdentifierOpt '{' '}'                        // Case 2
type StructOrUnionSpecifier struct {
	alignOf               int
	declarator            *Declarator // Synthetic declarator when tagged struct/union defined inline.
	scope                 *Bindings
	sizeOf                int
	Case                  int
	IdentifierOpt         *IdentifierOpt
	StructDeclarationList *StructDeclarationList
	StructOrUnion         *StructOrUnion
	Token                 xc.Token
	Token2                xc.Token
}

func (n *StructOrUnionSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructOrUnionSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructOrUnionSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.StructOrUnion.Pos()
}

// TranslationUnit represents data reduced by productions:
//
//	TranslationUnit:
//	        ExternalDeclaration
//	|       TranslationUnit ExternalDeclaration  // Case 1
type TranslationUnit struct {
	Comments            map[token.Pos]int // Position -> comment ID. Enable using the KeepComments option.
	Declarations        *Bindings
	Macros              map[int]*Macro // Ident ID -> preprocessor macro defined by ident.
	Model               *Model         // Model used to parse the TranslationUnit.
	Case                int
	ExternalDeclaration *ExternalDeclaration
	TranslationUnit     *TranslationUnit
}

func (n *TranslationUnit) reverse() *TranslationUnit {
	if n == nil {
		return nil
	}

	na := n
	nb := na.TranslationUnit
	for nb != nil {
		nc := nb.TranslationUnit
		nb.TranslationUnit = na
		na = nb
		nb = nc
	}
	n.TranslationUnit = nil
	return na
}

func (n *TranslationUnit) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *TranslationUnit) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TranslationUnit) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.ExternalDeclaration.Pos()
	case 1:
		return n.TranslationUnit.Pos()
	default:
		panic("internal error")
	}
}

// TypeName represents data reduced by production:
//
//	TypeName:
//	        SpecifierQualifierList AbstractDeclaratorOpt
type TypeName struct {
	Type                   Type
	declarator             *Declarator
	scope                  *Bindings
	AbstractDeclaratorOpt  *AbstractDeclaratorOpt
	SpecifierQualifierList *SpecifierQualifierList
}

func (n *TypeName) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeName) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeName) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.SpecifierQualifierList.Pos()
}

// TypeQualifier represents data reduced by productions:
//
//	TypeQualifier:
//	        "const"
//	|       "restrict"  // Case 1
//	|       "volatile"  // Case 2
type TypeQualifier struct {
	attr  int // tsInline, tsTypedefName, ...
	Case  int
	Token xc.Token
}

func (n *TypeQualifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeQualifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeQualifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// TypeQualifierList represents data reduced by productions:
//
//	TypeQualifierList:
//	        TypeQualifier
//	|       TypeQualifierList TypeQualifier  // Case 1
type TypeQualifierList struct {
	attr              int // tsInline, tsTypedefName, ...
	Case              int
	TypeQualifier     *TypeQualifier
	TypeQualifierList *TypeQualifierList
}

func (n *TypeQualifierList) reverse() *TypeQualifierList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.TypeQualifierList
	for nb != nil {
		nc := nb.TypeQualifierList
		nb.TypeQualifierList = na
		na = nb
		nb = nc
	}
	n.TypeQualifierList = nil
	return na
}

func (n *TypeQualifierList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *TypeQualifierList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeQualifierList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.TypeQualifier.Pos()
	case 1:
		return n.TypeQualifierList.Pos()
	default:
		panic("internal error")
	}
}

// TypeQualifierListOpt represents data reduced by productions:
//
//	TypeQualifierListOpt:
//	        /* empty */
//	|       TypeQualifierList  // Case 1
type TypeQualifierListOpt struct {
	TypeQualifierList *TypeQualifierList
}

func (n *TypeQualifierListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeQualifierListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeQualifierListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.TypeQualifierList.Pos()
}

// TypeSpecifier represents data reduced by productions:
//
//	TypeSpecifier:
//	        "void"
//	|       "char"                       // Case 1
//	|       "short"                      // Case 2
//	|       "int"                        // Case 3
//	|       "long"                       // Case 4
//	|       "float"                      // Case 5
//	|       "double"                     // Case 6
//	|       "signed"                     // Case 7
//	|       "unsigned"                   // Case 8
//	|       "_Bool"                      // Case 9
//	|       "_Complex"                   // Case 10
//	|       StructOrUnionSpecifier       // Case 11
//	|       EnumSpecifier                // Case 12
//	|       TYPEDEFNAME                  // Case 13
//	|       "typeof" '(' Expression ')'  // Case 14
//	|       "typeof" '(' TypeName ')'    // Case 15
type TypeSpecifier struct {
	scope                  *Bindings // If case TYPEDEFNAME.
	typeSpecifier          int       // Encoded combination of tsVoid, tsInt, ...
	Type                   Type      // Type of typeof.
	Case                   int
	EnumSpecifier          *EnumSpecifier
	Expression             *Expression
	StructOrUnionSpecifier *StructOrUnionSpecifier
	Token                  xc.Token
	Token2                 xc.Token
	Token3                 xc.Token
	TypeName               *TypeName
}

func (n *TypeSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 12:
		return n.EnumSpecifier.Pos()
	case 11:
		return n.StructOrUnionSpecifier.Pos()
	case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// VolatileOpt represents data reduced by productions:
//
//	VolatileOpt:
//	        /* empty */
//	|       "volatile"   // Case 1
type VolatileOpt struct {
	Token xc.Token
}

func (n *VolatileOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *VolatileOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *VolatileOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr19736.c<|end_filename|>
/* We used to ICE because we had forgot to update the immediate_uses
   information after foldding the last strcpy in Reduce PHI.
   This was PR tree-opt/19763. */

extern char *strcpy (char *, const char *);
void sdbout_one_type (char *p)
{
  int i, t = 1;
  char *q;
  for (i = 0; i < 2; i++)
    {
      strcpy (p, "1");
      p += sizeof ("1");
    }
  if (t)
    q = "2";
  else
    q = "3";
  strcpy (p, q);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031220-2.c<|end_filename|>
/*  PR target/12749
  Orgin: <NAME> <<EMAIL>>
  This used to cause GCC to write out an instruction for i386 when using a L64 host
  which gas could not handle because GCC would write a full 64bit hex string out. */


float fabsf (float);
typedef int __int32_t;
typedef unsigned int __uint32_t;
typedef union
{
  float value;
  __uint32_t word;
} ieee_float_shape_type;
extern float __ieee754_expf (float);
extern float __ieee754_sinhf (float);
static const float one = 1.0, shuge = 1.0e37;
float
__ieee754_sinhf(float x)
{
        float t,w,h;
        __int32_t ix,jx;
        do { ieee_float_shape_type gf_u; gf_u.value = (x); (jx) = gf_u.word; } while (0);
        ix = jx&0x7fffffff;
        if(ix>=0x7f800000) return x+x;
        h = 0.5;
        if (jx<0) h = -h;
        if (ix < 0x41b00000) {
            if (ix<0x31800000)
                if(shuge+x>one) return x;
            t = expm1f(fabsf(x));
            if(ix<0x3f800000) return h*((float)2.0*t-t*t/(t+one));
            return h*(t+t/(t+one));
        }
        if (ix < 0x42b17180) return h*__ieee754_expf(fabsf(x));
        if (ix<=0x42b2d4fc) {
            w = __ieee754_expf((float)0.5*fabsf(x));
            t = h*w;
            return t*w;
        }
        return x*shuge;
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22422.c<|end_filename|>
/* We should not crash trying to figure out the points-to sets for the below.  We used to because we
   ended up adding pointers to the points-to set of the ANYTHING variable.  */
struct D
{
  int n;
  int c [8];
};

struct A
{
  int i;
  char *p;
};

struct B
{
  struct A *a;
  struct D *d;
};

int dtInsert1 (struct B *b)
{
  struct A a = { 0, 0 };
  struct D *d;
  b->a = &a;
  d = b->d;
  &d->c [d->n];
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040219-1.c<|end_filename|>
double foo() { return __builtin_isgreater(0.,0.); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060309-1.c<|end_filename|>
/* Test to make sure that indirect jumps compile.  */
extern void bar(void);
void foo() { bar(); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20110401-1.c<|end_filename|>
void asn1_length_der (unsigned long int len, unsigned char *ans, int *ans_len)
{
    int k;
    unsigned char temp[4];
    if (len < 128) {
	if (ans != ((void *) 0))
	    ans[0] = (unsigned char) len;
	*ans_len = 1;
    } else {
	k = 0;
	while (len) {
	    temp[k++] = len & 0xFF;
	    len = len >> 8;
	}
	*ans_len = k + 1;
	if (ans != ((void *) 0)) {
	    ans[0] = ((unsigned char) k & 0x7F) + 128;
	    while (k--)
		ans[*ans_len - 1 - k] = temp[k];
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/compound-literal-1.c<|end_filename|>
/* ICE incrementing compound literal: bug 28418 from <NAME>
   <<EMAIL>>.  */

struct A { int i; };

void foo()
{
    ((struct A) { 0 }).i += 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/icfmatch.c<|end_filename|>
typedef char __attribute__ ((vector_size (4))) v4qi;
void retv (int a,int b,int c,int d, v4qi *ret)
{
  v4qi v = { a, b , c, d };
  *ret = v;
}
void retv2 (int a,int b,int c,int d, v4qi *ret)
{
  v4qi v = { a, b , c, d };
  *ret = v;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr12899.c<|end_filename|>
/*  PR tree-optimization/12899  */

void
bb_getopt_ulflags (char *s)
{
  for (;;)
    if (s[1])
      do
	s++;
      while (*s);
}


<|start_filename|>testdata/issue65.c<|end_filename|>
struct {
	int i;
	int j:1;
	int k:2;
	int l:3;
	int m;
} foo;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr66168.c<|end_filename|>
int a, b;

void
fn1 ()
{
  for (;;)
    {
      for (b = 0; b < 3; b++)
	{
	  char e[2];
	  char f = e[1];
	  a ^= f ? 1 / f : 0;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38428.c<|end_filename|>
/* PR middle-end/38428 */

struct S
{
  volatile struct
  {
    unsigned int t : 1;
  } s;
};

int
foo (struct S *x)
{
  int ret;
  if (x->s.t)
    ret = 0;
  else
    ret = 10;
  return ret;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040309-1.c<|end_filename|>
static const char default_tupleseps[] = ", \t";


fubar (tupleseps)
     const char *tupleseps;
{
  char *kp, *sp;
  const char *septmp;
  const char *tseplist;
  tseplist = (tupleseps) ? tupleseps : default_tupleseps;
  while (kp)
    {
      if (*tseplist)
        septmp = tseplist;
      bar (*septmp);
      if (*tseplist)
        if (*kp)
          ;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17119.c<|end_filename|>
void
_mesa_DrawPixels (int width, int height, unsigned format,
		  unsigned type, const void * pixels)
{
  switch (format)
    {
    case 0x1900:
      func1 ();
      break;
    case 0x1907:
    case 0x80E0:
    case 0x1908:
    case 0x80E1:
    case 0x8000:
      func2 ();
      break;
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040901-1.c<|end_filename|>
typedef enum {a, b} __attribute__((__mode__(__QI__))) x;
x foo;


<|start_filename|>linkage_string.go<|end_filename|>
// Code generated by "stringer -type Linkage"; DO NOT EDIT.

package cc

import "fmt"

const _Linkage_name = "NoneInternalExternal"

var _Linkage_index = [...]uint8{0, 4, 12, 20}

func (i Linkage) String() string {
	if i < 0 || i >= Linkage(len(_Linkage_index)-1) {
		return fmt.Sprintf("Linkage(%d)", i)
	}
	return _Linkage_name[_Linkage_index[i]:_Linkage_index[i+1]]
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52074.c<|end_filename|>
/* PR middle-end/52074 */

struct S { const char *d, *e; } __attribute__((packed));

void
foo (const char **p, struct S *q)
{
  *p = "abcdef";
  q->d = "ghijk";
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/sizeof-macros-1.c<|end_filename|>
/* This checks the gcc builtin macros defined to the byte
   sizes of C standard types.  */

int a[sizeof(int) == __SIZEOF_INT__ ? 1 : -1];
int b[sizeof(long) == __SIZEOF_LONG__ ? 1 : -1];
int c[sizeof(long long) == __SIZEOF_LONG_LONG__ ? 1 : -1];
int d[sizeof(short) == __SIZEOF_SHORT__ ? 1 : -1];
int e[sizeof(void *) == __SIZEOF_POINTER__ ? 1 : -1];
int f[sizeof(float) == __SIZEOF_FLOAT__ ? 1 : -1];
int g[sizeof(double) == __SIZEOF_DOUBLE__ ? 1 : -1];
int h[sizeof(long double) == __SIZEOF_LONG_DOUBLE__ ? 1 : -1];
int i[sizeof(__SIZE_TYPE__) == __SIZEOF_SIZE_T__ ? 1 : -1];
int j[sizeof(__WCHAR_TYPE__) == __SIZEOF_WCHAR_T__ ? 1 : -1];
int k[sizeof(__WINT_TYPE__) == __SIZEOF_WINT_T__ ? 1 : -1];
int l[sizeof(__PTRDIFF_TYPE__) == __SIZEOF_PTRDIFF_T__ ? 1 : -1];


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34029-2.c<|end_filename|>
static const char s[] = "ab.cd.efghijk";
static const char t[] = "abcde";

long
foo (const char *x)
{
  const char *a;
  long b = 0;

  a = __builtin_strchr (s, '.');
  return ((long) a) + (1 - (long) t);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45182.c<|end_filename|>
typedef struct TypHeader {
  struct TypHeader ** ptr;
} *TypHandle;
void PlainRange (TypHandle hdList, long lenList, long low, long inc)
{
  long i;
  for (i = 1; i <= lenList; i++ )
    (((TypHandle*)((hdList)->ptr))[i] = (((TypHandle) (((long)(low + (i-1) *
inc) << 2) + 1))));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/complex-5.c<|end_filename|>
int foo(__complex__ int z0, __complex__ int z1)
{
  return z0 != 0 || z1 != 0;
}

int foo1(__complex__ int z0, __complex__ int z1)
{
  return z0 == 0 && z1 == 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030725-1.c<|end_filename|>
/* This testcase caused ICE on any 64-bit arch at -O2/-O3 due to
   fold/extract_muldiv/convert destroying its argument.  */
int x, *y, z, *p;

void
foo (void)
{
  p = y + (8 * (x == 1 || x == 3) + z);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr63282.c<|end_filename|>
/* PR inline-asm/63282 */

void bar (void);

void
foo (void)
{
  asm volatile goto ("" : : : : a, b);
a:
  bar ();
b:
  return;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/vector-3.c<|end_filename|>
#define vector __attribute__((vector_size(16) ))
vector float g(void)
{
  float t = 1.0f;
  return (vector float){0.0, 0.0, t, 0.0};
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37382.c<|end_filename|>
/* PR target/37382 */

void baz (char *);
int c;

void
bar (void)
{
  char a[2];
  int *ip = &c;
  char *p = a, *q = (char *) &ip;
  const char *r = q + 2;
  for (; q != r; p++, q++)
    *p = *q;
  baz (a);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20140528-1.c<|end_filename|>
unsigned f(unsigned flags, unsigned capabilities)
{
  unsigned gfp_mask;
  unsigned gfp_notmask = 0;
  gfp_mask = flags & ((1 << 25) - 1);
  if (!(capabilities & 0x00000001))
    gfp_mask |= 0x1000000u;
  return (gfp_mask & ~gfp_notmask);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38771.c<|end_filename|>
/* PR middle-end/38771 */

unsigned long long
foo (long long x)
{
  return -(unsigned long long) (x ? : x);
}


<|start_filename|>v2/testdata/tcc-0.9.26/tests/Makefile<|end_filename|>
#
# Tiny C Compiler Makefile - tests
#

TOP = ..
include $(TOP)/Makefile
VPATH = $(top_srcdir)/tests

# what tests to run
TESTS = \
 hello-exe \
 hello-run \
 libtest \
 test3 \
 moretests

# test4 -- problem with -static
# asmtest -- minor differences with gcc
# btest -- works on i386 (including win32)
# test3 -- win32 does not know how to printf long doubles

# bounds-checking is supported only on i386
ifneq ($(ARCH),i386)
 TESTS := $(filter-out btest,$(TESTS))
endif
ifdef CONFIG_WIN32
 TESTS := $(filter-out test3,$(TESTS))
endif
ifeq ($(TARGETOS),Darwin)
 TESTS := $(filter-out hello-exe test3 btest,$(TESTS))
endif

ifdef DISABLE_STATIC
 export LD_LIBRARY_PATH:=$(CURDIR)/..
endif

ifeq ($(TARGETOS),Darwin)
 CFLAGS+=-Wl,-flat_namespace,-undefined,warning
 export MACOSX_DEPLOYMENT_TARGET:=10.2
 NATIVE_DEFINES+=-D_ANSI_SOURCE
endif

# run local version of tcc with local libraries and includes
TCCFLAGS = -B$(TOP)
ifdef CONFIG_WIN32
 TCCFLAGS = -B$(top_srcdir)/win32 -I$(top_srcdir)/include -L$(TOP)
endif

TCC = $(TOP)/tcc $(TCCFLAGS)
RUN_TCC = $(NATIVE_DEFINES) -DONE_SOURCE -run $(TOP)/tcc.c $(TCCFLAGS)

DISAS = objdump -d

# libtcc test
ifdef LIBTCC1
 LIBTCC1:=$(TOP)/$(LIBTCC1)
endif

all test : $(TESTS)

hello-exe: ../examples/ex1.c
	@echo ------------ $@ ------------
	$(TCC) $< -o hello$(EXESUF) || ($(TOP)/tcc -vv; exit 1) && ./hello$(EXESUF)

hello-run: ../examples/ex1.c
	@echo ------------ $@ ------------
	$(TCC) -run $<

libtest: libtcc_test$(EXESUF) $(LIBTCC1)
	@echo ------------ $@ ------------
	./libtcc_test$(EXESUF) lib_path=..

libtcc_test$(EXESUF): libtcc_test.c $(top_builddir)/$(LIBTCC)
	$(CC) -o $@ $^ $(CPPFLAGS) $(CFLAGS) $(NATIVE_DEFINES) $(LIBS) $(LINK_LIBTCC) $(LDFLAGS)

moretests:
	@echo ------------ $@ ------------
	$(MAKE) -C tests2

# test.ref - generate using gcc
# copy only tcclib.h so GCC's stddef and stdarg will be used
test.ref: tcctest.c
	cp ../include/tcclib.h .
	gcc -o tcctest.gcc $< -I. $(CPPFLAGS) -w $(CFLAGS) $(NATIVE_DEFINES) -std=gnu99 -O0 -fno-omit-frame-pointer $(LDFLAGS)
	./tcctest.gcc > $@

# auto test
test1: test.ref
	@echo ------------ $@ ------------
	$(TCC) -run tcctest.c > test.out1
	@if diff -u test.ref test.out1 ; then echo "Auto Test OK"; fi

# iterated test2 (compile tcc then compile tcctest.c !)
test2: test.ref
	@echo ------------ $@ ------------
	$(TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out2
	@if diff -u test.ref test.out2 ; then echo "Auto Test2 OK"; fi

# iterated test3 (compile tcc then compile tcc then compile tcctest.c !)
test3: test.ref
	@echo ------------ $@ ------------
	$(TCC) $(RUN_TCC) $(RUN_TCC) $(RUN_TCC) -run tcctest.c > test.out3
	@if diff -u test.ref test.out3 ; then echo "Auto Test3 OK"; fi

# binary output test
test4: test.ref
	@echo ------------ $@ ------------
# object + link output
	$(TCC) -c -o tcctest3.o tcctest.c
	$(TCC) -o tcctest3 tcctest3.o
	./tcctest3 > test3.out
	@if diff -u test.ref test3.out ; then echo "Object Auto Test OK"; fi
# dynamic output
	$(TCC) -o tcctest1 tcctest.c
	./tcctest1 > test1.out
	@if diff -u test.ref test1.out ; then echo "Dynamic Auto Test OK"; fi
# dynamic output + bound check
	$(TCC) -b -o tcctest4 tcctest.c
	./tcctest4 > test4.out
	@if diff -u test.ref test4.out ; then echo "BCheck Auto Test OK"; fi
# static output
	$(TCC) -static -o tcctest2 tcctest.c
	./tcctest2 > test2.out
	@if diff -u test.ref test2.out ; then echo "Static Auto Test OK"; fi

# memory and bound check auto test
BOUNDS_OK  = 1 4 8 10 14
BOUNDS_FAIL= 2 5 7 9 11 12 13 15

btest: boundtest.c
	@echo ------------ $@ ------------
	@for i in $(BOUNDS_OK); do \
	   echo ; echo --- boundtest $$i ---; \
	   if $(TCC) -b -run boundtest.c $$i ; then \
	       echo succeded as expected; \
	   else\
	       echo Failed positive test $$i ; exit 1 ; \
	   fi ;\
	done ;\
	for i in $(BOUNDS_FAIL); do \
	   echo ; echo --- boundtest $$i ---; \
	   if $(TCC) -b -run boundtest.c $$i ; then \
	       echo Failed negative test $$i ; exit 1 ;\
	   else\
	       echo failed as expected; \
	   fi ;\
	done ;\
	echo; echo Bound test OK

# speed test
speedtest: ex2 ex3
	@echo ------------ $@ ------------
	time ./ex2 1238 2 3 4 10 13 4
	time $(TCC) -run $(top_srcdir)/examples/ex2.c 1238 2 3 4 10 13 4
	time ./ex3 35
	time $(TCC) -run $(top_srcdir)/examples/ex3.c 35

weaktest: test.ref
	$(TCC) -c tcctest.c -o weaktest.tcc.o $(CPPFLAGS) $(CFLAGS)
	 $(CC) -c tcctest.c -o weaktest.gcc.o -I. $(CPPFLAGS) -w $(CFLAGS)
	objdump -t weaktest.tcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.tcc.o.txt
	objdump -t weaktest.gcc.o | grep ' w ' | sed -e 's/.* \([a-zA-Z0-9_]*\)$$/\1/' | LC_ALL=C sort > weaktest.gcc.o.txt
	diff weaktest.gcc.o.txt weaktest.tcc.o.txt && echo "Weak Auto Test OK"

ex%: $(top_srcdir)/examples/ex%.c
	$(CC) -o $@ $< $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)

# tiny assembler testing
asmtest.ref: asmtest.S
	$(CC) -Wa,-W -o asmtest.ref.o -c asmtest.S
	objdump -D asmtest.ref.o > asmtest.ref

asmtest: asmtest.ref
	@echo ------------ $@ ------------
	$(TCC) -c asmtest.S
	objdump -D asmtest.o > asmtest.out
	@if diff -u --ignore-matching-lines="file format" asmtest.ref asmtest.out ; then echo "ASM Auto Test OK"; fi

# targets for development
%.bin: %.c tcc
	$(TCC) -g -o $@ $<
	$(DISAS) $@

instr: instr.o
	objdump -d instr.o

instr.o: instr.S
	$(CC) -o $@ -c $< -O2 -Wall -g

cache: tcc_g
	cachegrind ./tcc_g -o /tmp/linpack -lm bench/linpack.c
	vg_annotate tcc.c > /tmp/linpack.cache.log

# clean
clean:
	$(MAKE) -C tests2 $@
	rm -vf *~ *.o *.a *.bin *.i *.ref *.out *.out? *.out?b *.gcc *.exe \
	   hello libtcc_test tcctest[1234] ex? tcc_g tcclib.h



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65803.c<|end_filename|>
/* { dg-options "-fno-strict-overflow" } */
typedef unsigned char __uint8_t;
typedef __uint8_t uint8_t;
typedef uint8_t u8_t;
typedef struct ip_addr ip_addr_t;
char *
ipaddr_ntoa_r (const ip_addr_t * addr, char *buf, int buflen)
{
  char inv[3];
  char *rp;
  u8_t *ap;
  u8_t n;
  u8_t i;
  int len = 0;
  for (n = 0; n < 4; n++)
    {
      while (*ap);
      while (i--)
	{
	  if (len++ >= buflen)
	    return ((void *) 0);
	  *rp++ = inv[i];
	} ap++;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36125.c<|end_filename|>
/* PR middle-end/36125 */

extern void bar (long double *);

int
foo (long double x)
{
  bar (&x);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr28675.c<|end_filename|>
struct fb_cmap {
 unsigned int start;
 unsigned int len;
 unsigned short *red;
 unsigned short *green;
 unsigned short *blue;
 unsigned short *transp;
};

typedef struct {
    int r;
    int g;
    int b;
    int a;
} rgba_t;

static unsigned int cmap_len;

extern unsigned int red_len, green_len, blue_len, alpha_len;
extern struct fb_cmap fb_cmap;
extern rgba_t *clut;
extern int fb_set_cmap(void);

void directcolor_update_cmap(void)
{
    unsigned int i;

    for (i = 0; i < cmap_len; i++) {
      if (i < red_len)
	fb_cmap.red[i] = clut[i].r;
      if (i < green_len)
	fb_cmap.green[i] = clut[i].g;
      if (i < blue_len)
	fb_cmap.blue[i] = clut[i].b;
      if (fb_cmap.transp && i < alpha_len)
	fb_cmap.transp[i] = clut[i].a;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040214-1.c<|end_filename|>
void foo(void)
{
  char c;

  for (c = -75; c <= 75; c++)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/ptr-conv-1.c<|end_filename|>
/* The intermediate conversion to __PTRDIFF_TYPE__ could be lost,
   resulting in an "invalid types in nop conversion" ICE.  */
long long a;
void
f (void)
{
  int c = 1;
  volatile int *p = &c;
  a = (long long) (__PTRDIFF_TYPE__) p;
  *p;
}


<|start_filename|>testdata/issue69.h<|end_filename|>
int i;
#ifndef a
// Next line DOES NOT end with newline.
#endif /* a */

<|start_filename|>v2/testdata/cpp-expand/010.c<|end_filename|>
#define TEST42 0x0502
#define TESTBASE 1
#define TEST3 (TEST42 >= 0x0502 || !defined (TESTBASE))
#define TEST4

#if TEST3 && defined (TEST4)
	int test = 4;
#endif


int main (void) {
	return test;
}


<|start_filename|>testdata/enum.c<|end_filename|>
#define K 278

enum {
	c = 42 - 24,
	d = 314 + K,
} foo;



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48517.c<|end_filename|>
/* PR c/48517 */
/* { dg-do compile } */
/* { dg-options "-std=gnu89" } */

void bar (const unsigned short *);

void
foo (void)
{
  static const unsigned short array[] = (const unsigned short []) { 0x0D2B };
  const unsigned short *ptr = array;
  bar (ptr);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69214.c<|end_filename|>
/* PR tree-optimization/69214 */

extern void bar (void);
extern int __setjmp (char *);

void
foo (char *p)
{
  int d = 0;
  bar ();
  if (__setjmp (p))
    return;
  long a = d;
  d = 8;
  if (!a)
    bar ();
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr35456.c<|end_filename|>
/* { dg-skip-if "signed zero not supported" { "vax-*-*" } { "*" } { "" } } */
extern void abort (void);

double
__attribute__ ((noinline))
not_fabs (double x)
{
  return x >= 0.0 ? x : -x;
}

int main()
{
  double x = -0.0;
  double y;

  y = not_fabs (x);

  if (!__builtin_signbit (y))
    abort();

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32920.c<|end_filename|>
int a;
void
foo(void)
{
  char buf[10];
  a = a < sizeof(buf) ? a : sizeof (buf);
}


<|start_filename|>testdata/array.c<|end_filename|>
char a[];

void f() {
	a;
}

char a[] = "foo";


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34648.c<|end_filename|>
/* PR tree-optimization/34648 */

/* { dg-options "-fexceptions" } */

extern const unsigned short int **bar (void) __attribute__ ((const));
const char *a;
int b;
char c;

char
foo (int *x)
{
  char r;

  c = '\0';
  if (!b)
    {
      while (((*bar ())[a[*x]] & 0x2000) != 0)
        (*x)++;
      if (a[++(*x)] == '-')
        {
          (*x)++;
          if (a[*x] && !((*bar ())[a[*x]] & 0x2000))
            return '?';
        }
      if (!a[*x] || ((*bar ())[a[*x]] & 0x2000))
        {
          while (((*bar ())[a[*x]] & 0x2000))
            ++(*x);
          return '\0';
        }
    }

  r = a[*x];
  b = a[*x] && !((*bar ())[a[*x]] & 0x2000);
  return r;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31345-1.c<|end_filename|>
/* PR tree-optimization/31345
   This caused a crash in VRP when dealing with overflow infinities.  */

void
dpsnaffle (const char *kbuf)
{
  int hash, thash, head[2], off;
    {
      int _DP_i;
      (hash) = 19780211;
        {
          (hash) = (hash) + (kbuf)[_DP_i];
        }
      (hash) = ((hash) * 43321879) & 0x7FFFFFFF;
    }
  while (off != 0)
    {
      if (hash > thash) {}
      else if (hash < thash)
        {
          off = head[2];
        }
    }
}


<|start_filename|>testdata/issue50.h<|end_filename|>
#ifdef __cplusplus
extern "C";



<|start_filename|>v2/ast.go<|end_filename|>
// Code generated by yy. DO NOT EDIT.

// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

import (
	"fmt"
	"github.com/cznic/xc"
	"go/token"
)

// AbstractDeclaratorCase represents case numbers of production AbstractDeclarator
type AbstractDeclaratorCase int

// Values of type AbstractDeclaratorCase
const (
	AbstractDeclaratorPointer AbstractDeclaratorCase = iota
	AbstractDeclaratorAbstract
)

// String implements fmt.Stringer
func (n AbstractDeclaratorCase) String() string {
	switch n {
	case AbstractDeclaratorPointer:
		return "AbstractDeclaratorPointer"
	case AbstractDeclaratorAbstract:
		return "AbstractDeclaratorAbstract"
	default:
		return fmt.Sprintf("AbstractDeclaratorCase(%v)", int(n))
	}
}

// AbstractDeclarator represents data reduced by productions:
//
//	AbstractDeclarator:
//	        Pointer                              // Case AbstractDeclaratorPointer
//	|       PointerOpt DirectAbstractDeclarator  // Case AbstractDeclaratorAbstract
type AbstractDeclarator struct {
	DeclarationSpecifier     *DeclarationSpecifier
	Type                     Type
	TypeQualifiers           []*TypeQualifier // From the PointerOpt production, if any.
	Case                     AbstractDeclaratorCase
	DirectAbstractDeclarator *DirectAbstractDeclarator
	Pointer                  *Pointer
	PointerOpt               *PointerOpt
}

func (n *AbstractDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AbstractDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AbstractDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Pointer.Pos()
	case 1:
		if p := n.PointerOpt.Pos(); p != 0 {
			return p
		}

		return n.DirectAbstractDeclarator.Pos()
	default:
		panic("internal error")
	}
}

// AbstractDeclaratorOpt represents data reduced by productions:
//
//	AbstractDeclaratorOpt:
//	        /* empty */         // Case 0
//	|       AbstractDeclarator  // Case 1
type AbstractDeclaratorOpt struct {
	AbstractDeclarator *AbstractDeclarator
}

func (n *AbstractDeclaratorOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *AbstractDeclaratorOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *AbstractDeclaratorOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.AbstractDeclarator.Pos()
}

// ArgumentExprList represents data reduced by productions:
//
//	ArgumentExprList:
//	        Expr                       // Case 0
//	|       ArgumentExprList ',' Expr  // Case 1
type ArgumentExprList struct {
	ArgumentExprList *ArgumentExprList
	Case             int
	Expr             *Expr
	Token            xc.Token
}

func (n *ArgumentExprList) reverse() *ArgumentExprList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ArgumentExprList
	for nb != nil {
		nc := nb.ArgumentExprList
		nb.ArgumentExprList = na
		na = nb
		nb = nc
	}
	n.ArgumentExprList = nil
	return na
}

func (n *ArgumentExprList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ArgumentExprList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ArgumentExprList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.ArgumentExprList.Pos()
	case 0:
		return n.Expr.Pos()
	default:
		panic("internal error")
	}
}

// ArgumentExprListOpt represents data reduced by productions:
//
//	ArgumentExprListOpt:
//	        /* empty */       // Case 0
//	|       ArgumentExprList  // Case 1
type ArgumentExprListOpt struct {
	ArgumentExprList *ArgumentExprList
}

func (n *ArgumentExprListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ArgumentExprListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ArgumentExprListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ArgumentExprList.Pos()
}

// BlockItemCase represents case numbers of production BlockItem
type BlockItemCase int

// Values of type BlockItemCase
const (
	BlockItemDecl BlockItemCase = iota
	BlockItemStmt
)

// String implements fmt.Stringer
func (n BlockItemCase) String() string {
	switch n {
	case BlockItemDecl:
		return "BlockItemDecl"
	case BlockItemStmt:
		return "BlockItemStmt"
	default:
		return fmt.Sprintf("BlockItemCase(%v)", int(n))
	}
}

// BlockItem represents data reduced by productions:
//
//	BlockItem:
//	        Declaration  // Case BlockItemDecl
//	|       Stmt         // Case BlockItemStmt
type BlockItem struct {
	Case        BlockItemCase
	Declaration *Declaration
	Stmt        *Stmt
}

func (n *BlockItem) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *BlockItem) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BlockItem) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declaration.Pos()
	case 1:
		return n.Stmt.Pos()
	default:
		panic("internal error")
	}
}

// BlockItemList represents data reduced by productions:
//
//	BlockItemList:
//	        BlockItem                // Case 0
//	|       BlockItemList BlockItem  // Case 1
type BlockItemList struct {
	BlockItem     *BlockItem
	BlockItemList *BlockItemList
	Case          int
}

func (n *BlockItemList) reverse() *BlockItemList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.BlockItemList
	for nb != nil {
		nc := nb.BlockItemList
		nb.BlockItemList = na
		na = nb
		nb = nc
	}
	n.BlockItemList = nil
	return na
}

func (n *BlockItemList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *BlockItemList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BlockItemList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.BlockItem.Pos()
	case 1:
		return n.BlockItemList.Pos()
	default:
		panic("internal error")
	}
}

// BlockItemListOpt represents data reduced by productions:
//
//	BlockItemListOpt:
//	        /* empty */    // Case 0
//	|       BlockItemList  // Case 1
type BlockItemListOpt struct {
	BlockItemList *BlockItemList
}

func (n *BlockItemListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *BlockItemListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *BlockItemListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.BlockItemList.Pos()
}

// CommaOpt represents data reduced by productions:
//
//	CommaOpt:
//	        /* empty */  // Case 0
//	|       ','          // Case 1
type CommaOpt struct {
	Token xc.Token
}

func (n *CommaOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *CommaOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *CommaOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// CompoundStmt represents data reduced by production:
//
//	CompoundStmt:
//	        '{' BlockItemListOpt '}'  // Case 0
type CompoundStmt struct {
	scope            *Scope
	BlockItemListOpt *BlockItemListOpt
	Token            xc.Token
	Token2           xc.Token
}

func (n *CompoundStmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *CompoundStmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *CompoundStmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// ConstExpr represents data reduced by production:
//
//	ConstExpr:
//	        Expr  // Case 0
type ConstExpr struct {
	Operand Operand
	Expr    *Expr
}

func (n *ConstExpr) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ConstExpr) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ConstExpr) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Expr.Pos()
}

// Declaration represents data reduced by production:
//
//	Declaration:
//	        DeclarationSpecifiers InitDeclaratorListOpt ';'  // Case 0
type Declaration struct {
	Attributes            [][]xc.Token
	Scope                 *Scope
	DeclarationSpecifiers *DeclarationSpecifiers
	InitDeclaratorListOpt *InitDeclaratorListOpt
	Token                 xc.Token
}

func (n *Declaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Declaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Declaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationSpecifiers.Pos()
}

// DeclarationList represents data reduced by productions:
//
//	DeclarationList:
//	        Declaration                  // Case 0
//	|       DeclarationList Declaration  // Case 1
type DeclarationList struct {
	Case            int
	Declaration     *Declaration
	DeclarationList *DeclarationList
}

func (n *DeclarationList) reverse() *DeclarationList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.DeclarationList
	for nb != nil {
		nc := nb.DeclarationList
		nb.DeclarationList = na
		na = nb
		nb = nc
	}
	n.DeclarationList = nil
	return na
}

func (n *DeclarationList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *DeclarationList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declaration.Pos()
	case 1:
		return n.DeclarationList.Pos()
	default:
		panic("internal error")
	}
}

// DeclarationListOpt represents data reduced by productions:
//
//	DeclarationListOpt:
//	        /* empty */      // Case 0
//	|       DeclarationList  // Case 1
type DeclarationListOpt struct {
	DeclarationList *DeclarationList
}

func (n *DeclarationListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclarationListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationList.Pos()
}

// DeclarationSpecifiersCase represents case numbers of production DeclarationSpecifiers
type DeclarationSpecifiersCase int

// Values of type DeclarationSpecifiersCase
const (
	DeclarationSpecifiersFunc DeclarationSpecifiersCase = iota
	DeclarationSpecifiersStorage
	DeclarationSpecifiersQualifier
	DeclarationSpecifiersSpecifier
)

// String implements fmt.Stringer
func (n DeclarationSpecifiersCase) String() string {
	switch n {
	case DeclarationSpecifiersFunc:
		return "DeclarationSpecifiersFunc"
	case DeclarationSpecifiersStorage:
		return "DeclarationSpecifiersStorage"
	case DeclarationSpecifiersQualifier:
		return "DeclarationSpecifiersQualifier"
	case DeclarationSpecifiersSpecifier:
		return "DeclarationSpecifiersSpecifier"
	default:
		return fmt.Sprintf("DeclarationSpecifiersCase(%v)", int(n))
	}
}

// DeclarationSpecifiers represents data reduced by productions:
//
//	DeclarationSpecifiers:
//	        FunctionSpecifier DeclarationSpecifiersOpt      // Case DeclarationSpecifiersFunc
//	|       StorageClassSpecifier DeclarationSpecifiersOpt  // Case DeclarationSpecifiersStorage
//	|       TypeQualifier DeclarationSpecifiersOpt          // Case DeclarationSpecifiersQualifier
//	|       TypeSpecifier DeclarationSpecifiersOpt          // Case DeclarationSpecifiersSpecifier
type DeclarationSpecifiers struct {
	Case                     DeclarationSpecifiersCase
	DeclarationSpecifiersOpt *DeclarationSpecifiersOpt
	FunctionSpecifier        *FunctionSpecifier
	StorageClassSpecifier    *StorageClassSpecifier
	TypeQualifier            *TypeQualifier
	TypeSpecifier            *TypeSpecifier
}

func (n *DeclarationSpecifiers) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclarationSpecifiers) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationSpecifiers) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.FunctionSpecifier.Pos()
	case 1:
		return n.StorageClassSpecifier.Pos()
	case 2:
		return n.TypeQualifier.Pos()
	case 3:
		return n.TypeSpecifier.Pos()
	default:
		panic("internal error")
	}
}

// DeclarationSpecifiersOpt represents data reduced by productions:
//
//	DeclarationSpecifiersOpt:
//	        /* empty */            // Case 0
//	|       DeclarationSpecifiers  // Case 1
type DeclarationSpecifiersOpt struct {
	DeclarationSpecifiers *DeclarationSpecifiers
}

func (n *DeclarationSpecifiersOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclarationSpecifiersOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclarationSpecifiersOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationSpecifiers.Pos()
}

// Declarator represents data reduced by production:
//
//	Declarator:
//	        PointerOpt DirectDeclarator  // Case 0
type Declarator struct {
	AssignedTo           int // Declarator appears at the left side of assignment.
	Attributes           [][]xc.Token
	Bits                 int                   // StructDeclarator: bit width when a bit field.
	DeclarationSpecifier *DeclarationSpecifier // Nil for embedded declarators.
	Definition           *Declarator           // Declaration -> definition.
	Field                int                   // Declaration order# if struct field declarator.
	FunctionDefinition   *FunctionDefinition   // When the declarator defines a function.
	Initializer          *Initializer          // Only when part of an InitDeclarator.
	Linkage              Linkage               // Linkage of the declared name, [0]6.2.2.
	Parameters           []*Declarator         // Of the function declarator.
	Referenced           int
	Scope                *Scope           // Declaration scope.
	ScopeNum             int              // Sequential scope number within function body.
	StorageDuration      StorageDuration  // Storage duration of the declared name, [0]6.2.4.
	Type                 Type             // Declared type.
	TypeQualifiers       []*TypeQualifier // From the PointerOpt production, if any.
	unnamed              int
	vars                 []*Declarator // Function declarator only.
	AddressTaken         bool
	Alloca               bool // Function declarator: Body calls __builtin_alloca
	Embedded             bool // [0]6.7.5-3: Not a full declarator.
	IsField              bool
	IsFunctionParameter  bool
	IsBuiltin            bool
	DirectDeclarator     *DirectDeclarator
	PointerOpt           *PointerOpt
}

func (n *Declarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Declarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Declarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	if p := n.PointerOpt.Pos(); p != 0 {
		return p
	}

	return n.DirectDeclarator.Pos()
}

// DeclaratorOpt represents data reduced by productions:
//
//	DeclaratorOpt:
//	        /* empty */  // Case 0
//	|       Declarator   // Case 1
type DeclaratorOpt struct {
	Declarator *Declarator
}

func (n *DeclaratorOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DeclaratorOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DeclaratorOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Declarator.Pos()
}

// Designation represents data reduced by production:
//
//	Designation:
//	        DesignatorList '='  // Case 0
type Designation struct {
	List           []int64
	DesignatorList *DesignatorList
	Token          xc.Token
}

func (n *Designation) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Designation) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Designation) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DesignatorList.Pos()
}

// DesignatorCase represents case numbers of production Designator
type DesignatorCase int

// Values of type DesignatorCase
const (
	DesignatorField DesignatorCase = iota
	DesignatorIndex
)

// String implements fmt.Stringer
func (n DesignatorCase) String() string {
	switch n {
	case DesignatorField:
		return "DesignatorField"
	case DesignatorIndex:
		return "DesignatorIndex"
	default:
		return fmt.Sprintf("DesignatorCase(%v)", int(n))
	}
}

// Designator represents data reduced by productions:
//
//	Designator:
//	        '.' IDENTIFIER     // Case DesignatorField
//	|       '[' ConstExpr ']'  // Case DesignatorIndex
type Designator struct {
	Case      DesignatorCase
	ConstExpr *ConstExpr
	Token     xc.Token
	Token2    xc.Token
}

func (n *Designator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Designator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Designator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// DesignatorList represents data reduced by productions:
//
//	DesignatorList:
//	        Designator                 // Case 0
//	|       DesignatorList Designator  // Case 1
type DesignatorList struct {
	Case           int
	Designator     *Designator
	DesignatorList *DesignatorList
}

func (n *DesignatorList) reverse() *DesignatorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.DesignatorList
	for nb != nil {
		nc := nb.DesignatorList
		nb.DesignatorList = na
		na = nb
		nb = nc
	}
	n.DesignatorList = nil
	return na
}

func (n *DesignatorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *DesignatorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DesignatorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Designator.Pos()
	case 1:
		return n.DesignatorList.Pos()
	default:
		panic("internal error")
	}
}

// DirectAbstractDeclaratorCase represents case numbers of production DirectAbstractDeclarator
type DirectAbstractDeclaratorCase int

// Values of type DirectAbstractDeclaratorCase
const (
	DirectAbstractDeclaratorAbstract DirectAbstractDeclaratorCase = iota
	DirectAbstractDeclaratorParamList
	DirectAbstractDeclaratorDFn
	DirectAbstractDeclaratorDArrSize
	DirectAbstractDeclaratorDArrVL
	DirectAbstractDeclaratorDArr
	DirectAbstractDeclaratorDArrSize2
	DirectAbstractDeclaratorDArr2
)

// String implements fmt.Stringer
func (n DirectAbstractDeclaratorCase) String() string {
	switch n {
	case DirectAbstractDeclaratorAbstract:
		return "DirectAbstractDeclaratorAbstract"
	case DirectAbstractDeclaratorParamList:
		return "DirectAbstractDeclaratorParamList"
	case DirectAbstractDeclaratorDFn:
		return "DirectAbstractDeclaratorDFn"
	case DirectAbstractDeclaratorDArrSize:
		return "DirectAbstractDeclaratorDArrSize"
	case DirectAbstractDeclaratorDArrVL:
		return "DirectAbstractDeclaratorDArrVL"
	case DirectAbstractDeclaratorDArr:
		return "DirectAbstractDeclaratorDArr"
	case DirectAbstractDeclaratorDArrSize2:
		return "DirectAbstractDeclaratorDArrSize2"
	case DirectAbstractDeclaratorDArr2:
		return "DirectAbstractDeclaratorDArr2"
	default:
		return fmt.Sprintf("DirectAbstractDeclaratorCase(%v)", int(n))
	}
}

// DirectAbstractDeclarator represents data reduced by productions:
//
//	DirectAbstractDeclarator:
//	        '(' AbstractDeclarator ')'                                              // Case DirectAbstractDeclaratorAbstract
//	|       '(' ParameterTypeListOpt ')'                                            // Case DirectAbstractDeclaratorParamList
//	|       DirectAbstractDeclarator '(' ParameterTypeListOpt ')'                   // Case DirectAbstractDeclaratorDFn
//	|       DirectAbstractDeclaratorOpt '[' "static" TypeQualifierListOpt Expr ']'  // Case DirectAbstractDeclaratorDArrSize
//	|       DirectAbstractDeclaratorOpt '[' '*' ']'                                 // Case DirectAbstractDeclaratorDArrVL
//	|       DirectAbstractDeclaratorOpt '[' ExprOpt ']'                             // Case DirectAbstractDeclaratorDArr
//	|       DirectAbstractDeclaratorOpt '[' TypeQualifierList "static" Expr ']'     // Case DirectAbstractDeclaratorDArrSize2
//	|       DirectAbstractDeclaratorOpt '[' TypeQualifierList ExprOpt ']'           // Case DirectAbstractDeclaratorDArr2
type DirectAbstractDeclarator struct {
	AbstractDeclarator          *AbstractDeclarator
	Case                        DirectAbstractDeclaratorCase
	DirectAbstractDeclarator    *DirectAbstractDeclarator
	DirectAbstractDeclaratorOpt *DirectAbstractDeclaratorOpt
	Expr                        *Expr
	ExprOpt                     *ExprOpt
	ParameterTypeListOpt        *ParameterTypeListOpt
	Token                       xc.Token
	Token2                      xc.Token
	Token3                      xc.Token
	TypeQualifierList           *TypeQualifierList
	TypeQualifierListOpt        *TypeQualifierListOpt
}

func (n *DirectAbstractDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DirectAbstractDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DirectAbstractDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 2:
		return n.DirectAbstractDeclarator.Pos()
	case 3, 4, 5, 6, 7:
		if p := n.DirectAbstractDeclaratorOpt.Pos(); p != 0 {
			return p
		}

		return n.Token.Pos()
	case 0, 1:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// DirectAbstractDeclaratorOpt represents data reduced by productions:
//
//	DirectAbstractDeclaratorOpt:
//	        /* empty */               // Case 0
//	|       DirectAbstractDeclarator  // Case 1
type DirectAbstractDeclaratorOpt struct {
	DirectAbstractDeclarator *DirectAbstractDeclarator
}

func (n *DirectAbstractDeclaratorOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DirectAbstractDeclaratorOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DirectAbstractDeclaratorOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DirectAbstractDeclarator.Pos()
}

// DirectDeclaratorCase represents case numbers of production DirectDeclarator
type DirectDeclaratorCase int

// Values of type DirectDeclaratorCase
const (
	DirectDeclaratorParen DirectDeclaratorCase = iota
	DirectDeclaratorIdentList
	DirectDeclaratorParamList
	DirectDeclaratorArraySize
	DirectDeclaratorArraySize2
	DirectDeclaratorArrayVar
	DirectDeclaratorArray
	DirectDeclaratorIdent
)

// String implements fmt.Stringer
func (n DirectDeclaratorCase) String() string {
	switch n {
	case DirectDeclaratorParen:
		return "DirectDeclaratorParen"
	case DirectDeclaratorIdentList:
		return "DirectDeclaratorIdentList"
	case DirectDeclaratorParamList:
		return "DirectDeclaratorParamList"
	case DirectDeclaratorArraySize:
		return "DirectDeclaratorArraySize"
	case DirectDeclaratorArraySize2:
		return "DirectDeclaratorArraySize2"
	case DirectDeclaratorArrayVar:
		return "DirectDeclaratorArrayVar"
	case DirectDeclaratorArray:
		return "DirectDeclaratorArray"
	case DirectDeclaratorIdent:
		return "DirectDeclaratorIdent"
	default:
		return fmt.Sprintf("DirectDeclaratorCase(%v)", int(n))
	}
}

// DirectDeclarator represents data reduced by productions:
//
//	DirectDeclarator:
//	        '(' Declarator ')'                                           // Case DirectDeclaratorParen
//	|       DirectDeclarator '(' IdentifierListOpt ')'                   // Case DirectDeclaratorIdentList
//	|       DirectDeclarator '(' ParameterTypeList ')'                   // Case DirectDeclaratorParamList
//	|       DirectDeclarator '[' "static" TypeQualifierListOpt Expr ']'  // Case DirectDeclaratorArraySize
//	|       DirectDeclarator '[' TypeQualifierList "static" Expr ']'     // Case DirectDeclaratorArraySize2
//	|       DirectDeclarator '[' TypeQualifierListOpt '*' ']'            // Case DirectDeclaratorArrayVar
//	|       DirectDeclarator '[' TypeQualifierListOpt ExprOpt ']'        // Case DirectDeclaratorArray
//	|       IDENTIFIER                                                   // Case DirectDeclaratorIdent
type DirectDeclarator struct {
	paramScope           *Scope
	Case                 DirectDeclaratorCase
	Declarator           *Declarator
	DirectDeclarator     *DirectDeclarator
	Expr                 *Expr
	ExprOpt              *ExprOpt
	IdentifierListOpt    *IdentifierListOpt
	ParameterTypeList    *ParameterTypeList
	Token                xc.Token
	Token2               xc.Token
	Token3               xc.Token
	TypeQualifierList    *TypeQualifierList
	TypeQualifierListOpt *TypeQualifierListOpt
}

func (n *DirectDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *DirectDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *DirectDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1, 2, 3, 4, 5, 6:
		return n.DirectDeclarator.Pos()
	case 0, 7:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// EnumSpecifierCase represents case numbers of production EnumSpecifier
type EnumSpecifierCase int

// Values of type EnumSpecifierCase
const (
	EnumSpecifierTag EnumSpecifierCase = iota
	EnumSpecifierDefine
)

// String implements fmt.Stringer
func (n EnumSpecifierCase) String() string {
	switch n {
	case EnumSpecifierTag:
		return "EnumSpecifierTag"
	case EnumSpecifierDefine:
		return "EnumSpecifierDefine"
	default:
		return fmt.Sprintf("EnumSpecifierCase(%v)", int(n))
	}
}

// EnumSpecifier represents data reduced by productions:
//
//	EnumSpecifier:
//	        "enum" IDENTIFIER                                     // Case EnumSpecifierTag
//	|       "enum" IdentifierOpt '{' EnumeratorList CommaOpt '}'  // Case EnumSpecifierDefine
type EnumSpecifier struct {
	Tag            int
	scope          *Scope // Where to declare enumeration constants.
	typ            Type
	Case           EnumSpecifierCase
	CommaOpt       *CommaOpt
	EnumeratorList *EnumeratorList
	IdentifierOpt  *IdentifierOpt
	Token          xc.Token
	Token2         xc.Token
	Token3         xc.Token
}

func (n *EnumSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *EnumSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EnumSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// EnumerationConstant represents data reduced by production:
//
//	EnumerationConstant:
//	        IDENTIFIER  // Case 0
type EnumerationConstant struct {
	Operand Operand
	Token   xc.Token
}

func (n *EnumerationConstant) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *EnumerationConstant) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EnumerationConstant) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// EnumeratorCase represents case numbers of production Enumerator
type EnumeratorCase int

// Values of type EnumeratorCase
const (
	EnumeratorBase EnumeratorCase = iota
	EnumeratorInit
)

// String implements fmt.Stringer
func (n EnumeratorCase) String() string {
	switch n {
	case EnumeratorBase:
		return "EnumeratorBase"
	case EnumeratorInit:
		return "EnumeratorInit"
	default:
		return fmt.Sprintf("EnumeratorCase(%v)", int(n))
	}
}

// Enumerator represents data reduced by productions:
//
//	Enumerator:
//	        EnumerationConstant                // Case EnumeratorBase
//	|       EnumerationConstant '=' ConstExpr  // Case EnumeratorInit
type Enumerator struct {
	Case                EnumeratorCase
	ConstExpr           *ConstExpr
	EnumerationConstant *EnumerationConstant
	Token               xc.Token
}

func (n *Enumerator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Enumerator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Enumerator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.EnumerationConstant.Pos()
}

// EnumeratorList represents data reduced by productions:
//
//	EnumeratorList:
//	        Enumerator                     // Case 0
//	|       EnumeratorList ',' Enumerator  // Case 1
type EnumeratorList struct {
	Case           int
	Enumerator     *Enumerator
	EnumeratorList *EnumeratorList
	Token          xc.Token
}

func (n *EnumeratorList) reverse() *EnumeratorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.EnumeratorList
	for nb != nil {
		nc := nb.EnumeratorList
		nb.EnumeratorList = na
		na = nb
		nb = nc
	}
	n.EnumeratorList = nil
	return na
}

func (n *EnumeratorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *EnumeratorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *EnumeratorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Enumerator.Pos()
	case 1:
		return n.EnumeratorList.Pos()
	default:
		panic("internal error")
	}
}

// ExprCase represents case numbers of production Expr
type ExprCase int

// Values of type ExprCase
const (
	ExprPreInc ExprCase = iota
	ExprPreDec
	ExprAlignofType
	ExprAlignofExpr
	ExprSizeofType
	ExprSizeofExpr
	ExprNot
	ExprAddrof
	ExprStatement
	ExprPExprList
	ExprCompLit
	ExprCast
	ExprDeref
	ExprUnaryPlus
	ExprUnaryMinus
	ExprCpl
	ExprChar
	ExprNe
	ExprModAssign
	ExprLAnd
	ExprAndAssign
	ExprMulAssign
	ExprPostInc
	ExprAddAssign
	ExprPostDec
	ExprSubAssign
	ExprPSelect
	ExprDivAssign
	ExprLsh
	ExprLshAssign
	ExprLe
	ExprEq
	ExprGe
	ExprRsh
	ExprRshAssign
	ExprXorAssign
	ExprOrAssign
	ExprLOr
	ExprMod
	ExprAnd
	ExprCall
	ExprMul
	ExprAdd
	ExprSub
	ExprSelect
	ExprDiv
	ExprLt
	ExprAssign
	ExprGt
	ExprCond
	ExprIndex
	ExprXor
	ExprOr
	ExprFloat
	ExprIdent
	ExprInt
	ExprLChar
	ExprLString
	ExprString
)

// String implements fmt.Stringer
func (n ExprCase) String() string {
	switch n {
	case ExprPreInc:
		return "ExprPreInc"
	case ExprPreDec:
		return "ExprPreDec"
	case ExprAlignofType:
		return "ExprAlignofType"
	case ExprAlignofExpr:
		return "ExprAlignofExpr"
	case ExprSizeofType:
		return "ExprSizeofType"
	case ExprSizeofExpr:
		return "ExprSizeofExpr"
	case ExprNot:
		return "ExprNot"
	case ExprAddrof:
		return "ExprAddrof"
	case ExprStatement:
		return "ExprStatement"
	case ExprPExprList:
		return "ExprPExprList"
	case ExprCompLit:
		return "ExprCompLit"
	case ExprCast:
		return "ExprCast"
	case ExprDeref:
		return "ExprDeref"
	case ExprUnaryPlus:
		return "ExprUnaryPlus"
	case ExprUnaryMinus:
		return "ExprUnaryMinus"
	case ExprCpl:
		return "ExprCpl"
	case ExprChar:
		return "ExprChar"
	case ExprNe:
		return "ExprNe"
	case ExprModAssign:
		return "ExprModAssign"
	case ExprLAnd:
		return "ExprLAnd"
	case ExprAndAssign:
		return "ExprAndAssign"
	case ExprMulAssign:
		return "ExprMulAssign"
	case ExprPostInc:
		return "ExprPostInc"
	case ExprAddAssign:
		return "ExprAddAssign"
	case ExprPostDec:
		return "ExprPostDec"
	case ExprSubAssign:
		return "ExprSubAssign"
	case ExprPSelect:
		return "ExprPSelect"
	case ExprDivAssign:
		return "ExprDivAssign"
	case ExprLsh:
		return "ExprLsh"
	case ExprLshAssign:
		return "ExprLshAssign"
	case ExprLe:
		return "ExprLe"
	case ExprEq:
		return "ExprEq"
	case ExprGe:
		return "ExprGe"
	case ExprRsh:
		return "ExprRsh"
	case ExprRshAssign:
		return "ExprRshAssign"
	case ExprXorAssign:
		return "ExprXorAssign"
	case ExprOrAssign:
		return "ExprOrAssign"
	case ExprLOr:
		return "ExprLOr"
	case ExprMod:
		return "ExprMod"
	case ExprAnd:
		return "ExprAnd"
	case ExprCall:
		return "ExprCall"
	case ExprMul:
		return "ExprMul"
	case ExprAdd:
		return "ExprAdd"
	case ExprSub:
		return "ExprSub"
	case ExprSelect:
		return "ExprSelect"
	case ExprDiv:
		return "ExprDiv"
	case ExprLt:
		return "ExprLt"
	case ExprAssign:
		return "ExprAssign"
	case ExprGt:
		return "ExprGt"
	case ExprCond:
		return "ExprCond"
	case ExprIndex:
		return "ExprIndex"
	case ExprXor:
		return "ExprXor"
	case ExprOr:
		return "ExprOr"
	case ExprFloat:
		return "ExprFloat"
	case ExprIdent:
		return "ExprIdent"
	case ExprInt:
		return "ExprInt"
	case ExprLChar:
		return "ExprLChar"
	case ExprLString:
		return "ExprLString"
	case ExprString:
		return "ExprString"
	default:
		return fmt.Sprintf("ExprCase(%v)", int(n))
	}
}

// Expr represents data reduced by productions:
//
//	Expr:
//	        "++" Expr                                          // Case ExprPreInc
//	|       "--" Expr                                          // Case ExprPreDec
//	|       "__alignof__" '(' TypeName ')'                     // Case ExprAlignofType
//	|       "__alignof__" Expr                                 // Case ExprAlignofExpr
//	|       "sizeof" '(' TypeName ')'                          // Case ExprSizeofType
//	|       "sizeof" Expr                                      // Case ExprSizeofExpr
//	|       '!' Expr                                           // Case ExprNot
//	|       '&' Expr                                           // Case ExprAddrof
//	|       '(' CompoundStmt ')'                               // Case ExprStatement
//	|       '(' ExprList ')'                                   // Case ExprPExprList
//	|       '(' TypeName ')' '{' InitializerList CommaOpt '}'  // Case ExprCompLit
//	|       '(' TypeName ')' Expr                              // Case ExprCast
//	|       '*' Expr                                           // Case ExprDeref
//	|       '+' Expr                                           // Case ExprUnaryPlus
//	|       '-' Expr                                           // Case ExprUnaryMinus
//	|       '~' Expr                                           // Case ExprCpl
//	|       CHARCONST                                          // Case ExprChar
//	|       Expr "!=" Expr                                     // Case ExprNe
//	|       Expr "%=" Expr                                     // Case ExprModAssign
//	|       Expr "&&" Expr                                     // Case ExprLAnd
//	|       Expr "&=" Expr                                     // Case ExprAndAssign
//	|       Expr "*=" Expr                                     // Case ExprMulAssign
//	|       Expr "++"                                          // Case ExprPostInc
//	|       Expr "+=" Expr                                     // Case ExprAddAssign
//	|       Expr "--"                                          // Case ExprPostDec
//	|       Expr "-=" Expr                                     // Case ExprSubAssign
//	|       Expr "->" IDENTIFIER                               // Case ExprPSelect
//	|       Expr "/=" Expr                                     // Case ExprDivAssign
//	|       Expr "<<" Expr                                     // Case ExprLsh
//	|       Expr "<<=" Expr                                    // Case ExprLshAssign
//	|       Expr "<=" Expr                                     // Case ExprLe
//	|       Expr "==" Expr                                     // Case ExprEq
//	|       Expr ">=" Expr                                     // Case ExprGe
//	|       Expr ">>" Expr                                     // Case ExprRsh
//	|       Expr ">>=" Expr                                    // Case ExprRshAssign
//	|       Expr "^=" Expr                                     // Case ExprXorAssign
//	|       Expr "|=" Expr                                     // Case ExprOrAssign
//	|       Expr "||" Expr                                     // Case ExprLOr
//	|       Expr '%' Expr                                      // Case ExprMod
//	|       Expr '&' Expr                                      // Case ExprAnd
//	|       Expr '(' ArgumentExprListOpt ')'                   // Case ExprCall
//	|       Expr '*' Expr                                      // Case ExprMul
//	|       Expr '+' Expr                                      // Case ExprAdd
//	|       Expr '-' Expr                                      // Case ExprSub
//	|       Expr '.' IDENTIFIER                                // Case ExprSelect
//	|       Expr '/' Expr                                      // Case ExprDiv
//	|       Expr '<' Expr                                      // Case ExprLt
//	|       Expr '=' Expr                                      // Case ExprAssign
//	|       Expr '>' Expr                                      // Case ExprGt
//	|       Expr '?' ExprList ':' Expr                         // Case ExprCond
//	|       Expr '[' ExprList ']'                              // Case ExprIndex
//	|       Expr '^' Expr                                      // Case ExprXor
//	|       Expr '|' Expr                                      // Case ExprOr
//	|       FLOATCONST                                         // Case ExprFloat
//	|       IDENTIFIER                                         // Case ExprIdent
//	|       INTCONST                                           // Case ExprInt
//	|       LONGCHARCONST                                      // Case ExprLChar
//	|       LONGSTRINGLITERAL                                  // Case ExprLString
//	|       STRINGLITERAL                                      // Case ExprString
type Expr struct {
	CallArgs            []Operand   // Promoted arguments of Call.
	Declarator          *Declarator // Case Ident.
	Operand             Operand
	Scope               *Scope // Case Ident, CompLit.
	enum                *EnumType
	AssignedTo          bool // Expression appears at the left side of assignment.
	ArgumentExprListOpt *ArgumentExprListOpt
	Case                ExprCase
	CommaOpt            *CommaOpt
	CompoundStmt        *CompoundStmt
	Expr                *Expr
	Expr2               *Expr
	ExprList            *ExprList
	InitializerList     *InitializerList
	Token               xc.Token
	Token2              xc.Token
	Token3              xc.Token
	Token4              xc.Token
	TypeName            *TypeName
}

func (n *Expr) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Expr) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Expr) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52:
		return n.Expr.Pos()
	case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 53, 54, 55, 56, 57, 58:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// ExprList represents data reduced by productions:
//
//	ExprList:
//	        Expr               // Case 0
//	|       ExprList ',' Expr  // Case 1
type ExprList struct {
	Operand  Operand
	Case     int
	Expr     *Expr
	ExprList *ExprList
	Token    xc.Token
}

func (n *ExprList) reverse() *ExprList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ExprList
	for nb != nil {
		nc := nb.ExprList
		nb.ExprList = na
		na = nb
		nb = nc
	}
	n.ExprList = nil
	return na
}

func (n *ExprList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ExprList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExprList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Expr.Pos()
	case 1:
		return n.ExprList.Pos()
	default:
		panic("internal error")
	}
}

// ExprListOpt represents data reduced by productions:
//
//	ExprListOpt:
//	        /* empty */  // Case 0
//	|       ExprList     // Case 1
type ExprListOpt struct {
	ExprList *ExprList
}

func (n *ExprListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExprListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExprListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ExprList.Pos()
}

// ExprOpt represents data reduced by productions:
//
//	ExprOpt:
//	        /* empty */  // Case 0
//	|       Expr         // Case 1
type ExprOpt struct {
	Expr *Expr
}

func (n *ExprOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExprOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExprOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Expr.Pos()
}

// ExprStmt represents data reduced by production:
//
//	ExprStmt:
//	        ExprListOpt ';'  // Case 0
type ExprStmt struct {
	ExprListOpt *ExprListOpt
	Token       xc.Token
}

func (n *ExprStmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExprStmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExprStmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	if p := n.ExprListOpt.Pos(); p != 0 {
		return p
	}

	return n.Token.Pos()
}

// ExternalDeclarationCase represents case numbers of production ExternalDeclaration
type ExternalDeclarationCase int

// Values of type ExternalDeclarationCase
const (
	ExternalDeclarationDecl ExternalDeclarationCase = iota
	ExternalDeclarationFunc
)

// String implements fmt.Stringer
func (n ExternalDeclarationCase) String() string {
	switch n {
	case ExternalDeclarationDecl:
		return "ExternalDeclarationDecl"
	case ExternalDeclarationFunc:
		return "ExternalDeclarationFunc"
	default:
		return fmt.Sprintf("ExternalDeclarationCase(%v)", int(n))
	}
}

// ExternalDeclaration represents data reduced by productions:
//
//	ExternalDeclaration:
//	        Declaration         // Case ExternalDeclarationDecl
//	|       FunctionDefinition  // Case ExternalDeclarationFunc
type ExternalDeclaration struct {
	Case               ExternalDeclarationCase
	Declaration        *Declaration
	FunctionDefinition *FunctionDefinition
}

func (n *ExternalDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ExternalDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExternalDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declaration.Pos()
	case 1:
		return n.FunctionDefinition.Pos()
	default:
		panic("internal error")
	}
}

// ExternalDeclarationList represents data reduced by productions:
//
//	ExternalDeclarationList:
//	        ExternalDeclaration                          // Case 0
//	|       ExternalDeclarationList ExternalDeclaration  // Case 1
type ExternalDeclarationList struct {
	Case                    int
	ExternalDeclaration     *ExternalDeclaration
	ExternalDeclarationList *ExternalDeclarationList
}

func (n *ExternalDeclarationList) reverse() *ExternalDeclarationList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ExternalDeclarationList
	for nb != nil {
		nc := nb.ExternalDeclarationList
		nb.ExternalDeclarationList = na
		na = nb
		nb = nc
	}
	n.ExternalDeclarationList = nil
	return na
}

func (n *ExternalDeclarationList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ExternalDeclarationList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ExternalDeclarationList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.ExternalDeclaration.Pos()
	case 1:
		return n.ExternalDeclarationList.Pos()
	default:
		panic("internal error")
	}
}

// FunctionBody represents data reduced by production:
//
//	FunctionBody:
//	        CompoundStmt  // Case 0
type FunctionBody struct {
	CompoundStmt *CompoundStmt
}

func (n *FunctionBody) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *FunctionBody) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *FunctionBody) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.CompoundStmt.Pos()
}

// FunctionDefinitionCase represents case numbers of production FunctionDefinition
type FunctionDefinitionCase int

// Values of type FunctionDefinitionCase
const (
	FunctionDefinitionSpec FunctionDefinitionCase = iota
	FunctionDefinitionInt
)

// String implements fmt.Stringer
func (n FunctionDefinitionCase) String() string {
	switch n {
	case FunctionDefinitionSpec:
		return "FunctionDefinitionSpec"
	case FunctionDefinitionInt:
		return "FunctionDefinitionInt"
	default:
		return fmt.Sprintf("FunctionDefinitionCase(%v)", int(n))
	}
}

// FunctionDefinition represents data reduced by productions:
//
//	FunctionDefinition:
//	        DeclarationSpecifiers Declarator DeclarationListOpt FunctionBody  // Case FunctionDefinitionSpec
//	|       Declarator DeclarationListOpt FunctionBody                        // Case FunctionDefinitionInt
type FunctionDefinition struct {
	Case                  FunctionDefinitionCase
	DeclarationListOpt    *DeclarationListOpt
	DeclarationSpecifiers *DeclarationSpecifiers
	Declarator            *Declarator
	FunctionBody          *FunctionBody
}

func (n *FunctionDefinition) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *FunctionDefinition) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *FunctionDefinition) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.DeclarationSpecifiers.Pos()
	case 1:
		return n.Declarator.Pos()
	default:
		panic("internal error")
	}
}

// FunctionSpecifier represents data reduced by production:
//
//	FunctionSpecifier:
//	        "inline"  // Case 0
type FunctionSpecifier struct {
	Token xc.Token
}

func (n *FunctionSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *FunctionSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *FunctionSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// IdentifierList represents data reduced by productions:
//
//	IdentifierList:
//	        IDENTIFIER                     // Case 0
//	|       IdentifierList ',' IDENTIFIER  // Case 1
type IdentifierList struct {
	Case           int
	IdentifierList *IdentifierList
	Token          xc.Token
	Token2         xc.Token
}

func (n *IdentifierList) reverse() *IdentifierList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.IdentifierList
	for nb != nil {
		nc := nb.IdentifierList
		nb.IdentifierList = na
		na = nb
		nb = nc
	}
	n.IdentifierList = nil
	return na
}

func (n *IdentifierList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *IdentifierList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IdentifierList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.IdentifierList.Pos()
	case 0:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// IdentifierListOpt represents data reduced by productions:
//
//	IdentifierListOpt:
//	        /* empty */     // Case 0
//	|       IdentifierList  // Case 1
type IdentifierListOpt struct {
	IdentifierList *IdentifierList
}

func (n *IdentifierListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IdentifierListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IdentifierListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.IdentifierList.Pos()
}

// IdentifierOpt represents data reduced by productions:
//
//	IdentifierOpt:
//	        /* empty */  // Case 0
//	|       IDENTIFIER   // Case 1
type IdentifierOpt struct {
	Token xc.Token
}

func (n *IdentifierOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IdentifierOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IdentifierOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// InitDeclaratorCase represents case numbers of production InitDeclarator
type InitDeclaratorCase int

// Values of type InitDeclaratorCase
const (
	InitDeclaratorBase InitDeclaratorCase = iota
	InitDeclaratorInit
)

// String implements fmt.Stringer
func (n InitDeclaratorCase) String() string {
	switch n {
	case InitDeclaratorBase:
		return "InitDeclaratorBase"
	case InitDeclaratorInit:
		return "InitDeclaratorInit"
	default:
		return fmt.Sprintf("InitDeclaratorCase(%v)", int(n))
	}
}

// InitDeclarator represents data reduced by productions:
//
//	InitDeclarator:
//	        Declarator                  // Case InitDeclaratorBase
//	|       Declarator '=' Initializer  // Case InitDeclaratorInit
type InitDeclarator struct {
	Case        InitDeclaratorCase
	Declarator  *Declarator
	Initializer *Initializer
	Token       xc.Token
}

func (n *InitDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *InitDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Declarator.Pos()
}

// InitDeclaratorList represents data reduced by productions:
//
//	InitDeclaratorList:
//	        InitDeclarator                         // Case 0
//	|       InitDeclaratorList ',' InitDeclarator  // Case 1
type InitDeclaratorList struct {
	Case               int
	InitDeclarator     *InitDeclarator
	InitDeclaratorList *InitDeclaratorList
	Token              xc.Token
}

func (n *InitDeclaratorList) reverse() *InitDeclaratorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.InitDeclaratorList
	for nb != nil {
		nc := nb.InitDeclaratorList
		nb.InitDeclaratorList = na
		na = nb
		nb = nc
	}
	n.InitDeclaratorList = nil
	return na
}

func (n *InitDeclaratorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *InitDeclaratorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitDeclaratorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.InitDeclarator.Pos()
	case 1:
		return n.InitDeclaratorList.Pos()
	default:
		panic("internal error")
	}
}

// InitDeclaratorListOpt represents data reduced by productions:
//
//	InitDeclaratorListOpt:
//	        /* empty */         // Case 0
//	|       InitDeclaratorList  // Case 1
type InitDeclaratorListOpt struct {
	InitDeclaratorList *InitDeclaratorList
}

func (n *InitDeclaratorListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *InitDeclaratorListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitDeclaratorListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.InitDeclaratorList.Pos()
}

// InitializerCase represents case numbers of production Initializer
type InitializerCase int

// Values of type InitializerCase
const (
	InitializerCompLit InitializerCase = iota
	InitializerExpr
)

// String implements fmt.Stringer
func (n InitializerCase) String() string {
	switch n {
	case InitializerCompLit:
		return "InitializerCompLit"
	case InitializerExpr:
		return "InitializerExpr"
	default:
		return fmt.Sprintf("InitializerCase(%v)", int(n))
	}
}

// Initializer represents data reduced by productions:
//
//	Initializer:
//	        '{' InitializerList CommaOpt '}'  // Case InitializerCompLit
//	|       Expr                              // Case InitializerExpr
type Initializer struct {
	Case            InitializerCase
	CommaOpt        *CommaOpt
	Expr            *Expr
	InitializerList *InitializerList
	Token           xc.Token
	Token2          xc.Token
}

func (n *Initializer) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Initializer) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Initializer) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 1:
		return n.Expr.Pos()
	case 0:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// InitializerList represents data reduced by productions:
//
//	InitializerList:
//	        /* empty */                                  // Case 0
//	|       Initializer                                  // Case 1
//	|       Designation Initializer                      // Case 2
//	|       InitializerList ',' Initializer              // Case 3
//	|       InitializerList ',' Designation Initializer  // Case 4
type InitializerList struct {
	Operand         Operand //TODO-
	Len             int
	Case            int
	Designation     *Designation
	Initializer     *Initializer
	InitializerList *InitializerList
	Token           xc.Token
}

func (n *InitializerList) reverse() *InitializerList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.InitializerList
	for nb != nil {
		nc := nb.InitializerList
		nb.InitializerList = na
		na = nb
		nb = nc
	}
	n.InitializerList = nil
	return na
}

func (n *InitializerList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *InitializerList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *InitializerList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return 0
	case 2:
		return n.Designation.Pos()
	case 1:
		return n.Initializer.Pos()
	case 3, 4:
		if p := n.InitializerList.Pos(); p != 0 {
			return p
		}

		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// IterationStmtCase represents case numbers of production IterationStmt
type IterationStmtCase int

// Values of type IterationStmtCase
const (
	IterationStmtDo IterationStmtCase = iota
	IterationStmtForDecl
	IterationStmtFor
	IterationStmtWhile
)

// String implements fmt.Stringer
func (n IterationStmtCase) String() string {
	switch n {
	case IterationStmtDo:
		return "IterationStmtDo"
	case IterationStmtForDecl:
		return "IterationStmtForDecl"
	case IterationStmtFor:
		return "IterationStmtFor"
	case IterationStmtWhile:
		return "IterationStmtWhile"
	default:
		return fmt.Sprintf("IterationStmtCase(%v)", int(n))
	}
}

// IterationStmt represents data reduced by productions:
//
//	IterationStmt:
//	        "do" Stmt "while" '(' ExprList ')' ';'                          // Case IterationStmtDo
//	|       "for" '(' Declaration ExprListOpt ';' ExprListOpt ')' Stmt      // Case IterationStmtForDecl
//	|       "for" '(' ExprListOpt ';' ExprListOpt ';' ExprListOpt ')' Stmt  // Case IterationStmtFor
//	|       "while" '(' ExprList ')' Stmt                                   // Case IterationStmtWhile
type IterationStmt struct {
	Case         IterationStmtCase
	Declaration  *Declaration
	ExprList     *ExprList
	ExprListOpt  *ExprListOpt
	ExprListOpt2 *ExprListOpt
	ExprListOpt3 *ExprListOpt
	Stmt         *Stmt
	Token        xc.Token
	Token2       xc.Token
	Token3       xc.Token
	Token4       xc.Token
	Token5       xc.Token
}

func (n *IterationStmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *IterationStmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *IterationStmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// JumpStmtCase represents case numbers of production JumpStmt
type JumpStmtCase int

// Values of type JumpStmtCase
const (
	JumpStmtBreak JumpStmtCase = iota
	JumpStmtContinue
	JumpStmtGoto
	JumpStmtReturn
)

// String implements fmt.Stringer
func (n JumpStmtCase) String() string {
	switch n {
	case JumpStmtBreak:
		return "JumpStmtBreak"
	case JumpStmtContinue:
		return "JumpStmtContinue"
	case JumpStmtGoto:
		return "JumpStmtGoto"
	case JumpStmtReturn:
		return "JumpStmtReturn"
	default:
		return fmt.Sprintf("JumpStmtCase(%v)", int(n))
	}
}

// JumpStmt represents data reduced by productions:
//
//	JumpStmt:
//	        "break" ';'               // Case JumpStmtBreak
//	|       "continue" ';'            // Case JumpStmtContinue
//	|       "goto" IDENTIFIER ';'     // Case JumpStmtGoto
//	|       "return" ExprListOpt ';'  // Case JumpStmtReturn
type JumpStmt struct {
	ReturnOperand Operand
	scope         *Scope
	Case          JumpStmtCase
	ExprListOpt   *ExprListOpt
	Token         xc.Token
	Token2        xc.Token
	Token3        xc.Token
}

func (n *JumpStmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *JumpStmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *JumpStmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// LabeledStmtCase represents case numbers of production LabeledStmt
type LabeledStmtCase int

// Values of type LabeledStmtCase
const (
	LabeledStmtSwitchCase LabeledStmtCase = iota
	LabeledStmtDefault
	LabeledStmtLabel
	LabeledStmtLabel2
)

// String implements fmt.Stringer
func (n LabeledStmtCase) String() string {
	switch n {
	case LabeledStmtSwitchCase:
		return "LabeledStmtSwitchCase"
	case LabeledStmtDefault:
		return "LabeledStmtDefault"
	case LabeledStmtLabel:
		return "LabeledStmtLabel"
	case LabeledStmtLabel2:
		return "LabeledStmtLabel2"
	default:
		return fmt.Sprintf("LabeledStmtCase(%v)", int(n))
	}
}

// LabeledStmt represents data reduced by productions:
//
//	LabeledStmt:
//	        "case" ConstExpr ':' Stmt  // Case LabeledStmtSwitchCase
//	|       "default" ':' Stmt         // Case LabeledStmtDefault
//	|       IDENTIFIER ':' Stmt        // Case LabeledStmtLabel
//	|       TYPEDEF_NAME ':' Stmt      // Case LabeledStmtLabel2
type LabeledStmt struct {
	Case      LabeledStmtCase
	ConstExpr *ConstExpr
	Stmt      *Stmt
	Token     xc.Token
	Token2    xc.Token
}

func (n *LabeledStmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *LabeledStmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *LabeledStmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// ParameterDeclarationCase represents case numbers of production ParameterDeclaration
type ParameterDeclarationCase int

// Values of type ParameterDeclarationCase
const (
	ParameterDeclarationAbstract ParameterDeclarationCase = iota
	ParameterDeclarationDeclarator
)

// String implements fmt.Stringer
func (n ParameterDeclarationCase) String() string {
	switch n {
	case ParameterDeclarationAbstract:
		return "ParameterDeclarationAbstract"
	case ParameterDeclarationDeclarator:
		return "ParameterDeclarationDeclarator"
	default:
		return fmt.Sprintf("ParameterDeclarationCase(%v)", int(n))
	}
}

// ParameterDeclaration represents data reduced by productions:
//
//	ParameterDeclaration:
//	        DeclarationSpecifiers AbstractDeclaratorOpt  // Case ParameterDeclarationAbstract
//	|       DeclarationSpecifiers Declarator             // Case ParameterDeclarationDeclarator
type ParameterDeclaration struct {
	AbstractDeclaratorOpt *AbstractDeclaratorOpt
	Case                  ParameterDeclarationCase
	DeclarationSpecifiers *DeclarationSpecifiers
	Declarator            *Declarator
}

func (n *ParameterDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ParameterDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.DeclarationSpecifiers.Pos()
}

// ParameterList represents data reduced by productions:
//
//	ParameterList:
//	        ParameterDeclaration                    // Case 0
//	|       ParameterList ',' ParameterDeclaration  // Case 1
type ParameterList struct {
	Case                 int
	ParameterDeclaration *ParameterDeclaration
	ParameterList        *ParameterList
	Token                xc.Token
}

func (n *ParameterList) reverse() *ParameterList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.ParameterList
	for nb != nil {
		nc := nb.ParameterList
		nb.ParameterList = na
		na = nb
		nb = nc
	}
	n.ParameterList = nil
	return na
}

func (n *ParameterList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *ParameterList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.ParameterDeclaration.Pos()
	case 1:
		return n.ParameterList.Pos()
	default:
		panic("internal error")
	}
}

// ParameterTypeListCase represents case numbers of production ParameterTypeList
type ParameterTypeListCase int

// Values of type ParameterTypeListCase
const (
	ParameterTypeListBase ParameterTypeListCase = iota
	ParameterTypeListDots
)

// String implements fmt.Stringer
func (n ParameterTypeListCase) String() string {
	switch n {
	case ParameterTypeListBase:
		return "ParameterTypeListBase"
	case ParameterTypeListDots:
		return "ParameterTypeListDots"
	default:
		return fmt.Sprintf("ParameterTypeListCase(%v)", int(n))
	}
}

// ParameterTypeList represents data reduced by productions:
//
//	ParameterTypeList:
//	        ParameterList            // Case ParameterTypeListBase
//	|       ParameterList ',' "..."  // Case ParameterTypeListDots
type ParameterTypeList struct {
	Case          ParameterTypeListCase
	ParameterList *ParameterList
	Token         xc.Token
	Token2        xc.Token
}

func (n *ParameterTypeList) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ParameterTypeList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterTypeList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ParameterList.Pos()
}

// ParameterTypeListOpt represents data reduced by productions:
//
//	ParameterTypeListOpt:
//	        /* empty */        // Case 0
//	|       ParameterTypeList  // Case 1
type ParameterTypeListOpt struct {
	ParameterTypeList *ParameterTypeList
}

func (n *ParameterTypeListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *ParameterTypeListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *ParameterTypeListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.ParameterTypeList.Pos()
}

// PointerCase represents case numbers of production Pointer
type PointerCase int

// Values of type PointerCase
const (
	PointerBase PointerCase = iota
	PointerPtr
)

// String implements fmt.Stringer
func (n PointerCase) String() string {
	switch n {
	case PointerBase:
		return "PointerBase"
	case PointerPtr:
		return "PointerPtr"
	default:
		return fmt.Sprintf("PointerCase(%v)", int(n))
	}
}

// Pointer represents data reduced by productions:
//
//	Pointer:
//	        '*' TypeQualifierListOpt          // Case PointerBase
//	|       '*' TypeQualifierListOpt Pointer  // Case PointerPtr
type Pointer struct {
	Case                 PointerCase
	Pointer              *Pointer
	Token                xc.Token
	TypeQualifierListOpt *TypeQualifierListOpt
}

func (n *Pointer) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Pointer) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Pointer) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// PointerOpt represents data reduced by productions:
//
//	PointerOpt:
//	        /* empty */  // Case 0
//	|       Pointer      // Case 1
type PointerOpt struct {
	Pointer *Pointer
}

func (n *PointerOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *PointerOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *PointerOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Pointer.Pos()
}

// SelectionStmtCase represents case numbers of production SelectionStmt
type SelectionStmtCase int

// Values of type SelectionStmtCase
const (
	SelectionStmtIfElse SelectionStmtCase = iota
	SelectionStmtIf
	SelectionStmtSwitch
)

// String implements fmt.Stringer
func (n SelectionStmtCase) String() string {
	switch n {
	case SelectionStmtIfElse:
		return "SelectionStmtIfElse"
	case SelectionStmtIf:
		return "SelectionStmtIf"
	case SelectionStmtSwitch:
		return "SelectionStmtSwitch"
	default:
		return fmt.Sprintf("SelectionStmtCase(%v)", int(n))
	}
}

// SelectionStmt represents data reduced by productions:
//
//	SelectionStmt:
//	        "if" '(' ExprList ')' Stmt "else" Stmt  // Case SelectionStmtIfElse
//	|       "if" '(' ExprList ')' Stmt              // Case SelectionStmtIf
//	|       "switch" '(' ExprList ')' Stmt          // Case SelectionStmtSwitch
type SelectionStmt struct {
	Cases    []*LabeledStmt
	SwitchOp Operand // Promoted switch operand
	Case     SelectionStmtCase
	ExprList *ExprList
	Stmt     *Stmt
	Stmt2    *Stmt
	Token    xc.Token
	Token2   xc.Token
	Token3   xc.Token
	Token4   xc.Token
}

func (n *SelectionStmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *SelectionStmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *SelectionStmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// SpecifierQualifierListCase represents case numbers of production SpecifierQualifierList
type SpecifierQualifierListCase int

// Values of type SpecifierQualifierListCase
const (
	SpecifierQualifierListQualifier SpecifierQualifierListCase = iota
	SpecifierQualifierListSpecifier
)

// String implements fmt.Stringer
func (n SpecifierQualifierListCase) String() string {
	switch n {
	case SpecifierQualifierListQualifier:
		return "SpecifierQualifierListQualifier"
	case SpecifierQualifierListSpecifier:
		return "SpecifierQualifierListSpecifier"
	default:
		return fmt.Sprintf("SpecifierQualifierListCase(%v)", int(n))
	}
}

// SpecifierQualifierList represents data reduced by productions:
//
//	SpecifierQualifierList:
//	        TypeQualifier SpecifierQualifierListOpt  // Case SpecifierQualifierListQualifier
//	|       TypeSpecifier SpecifierQualifierListOpt  // Case SpecifierQualifierListSpecifier
type SpecifierQualifierList struct {
	Case                      SpecifierQualifierListCase
	SpecifierQualifierListOpt *SpecifierQualifierListOpt
	TypeQualifier             *TypeQualifier
	TypeSpecifier             *TypeSpecifier
}

func (n *SpecifierQualifierList) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *SpecifierQualifierList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *SpecifierQualifierList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.TypeQualifier.Pos()
	case 1:
		return n.TypeSpecifier.Pos()
	default:
		panic("internal error")
	}
}

// SpecifierQualifierListOpt represents data reduced by productions:
//
//	SpecifierQualifierListOpt:
//	        /* empty */             // Case 0
//	|       SpecifierQualifierList  // Case 1
type SpecifierQualifierListOpt struct {
	SpecifierQualifierList *SpecifierQualifierList
}

func (n *SpecifierQualifierListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *SpecifierQualifierListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *SpecifierQualifierListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.SpecifierQualifierList.Pos()
}

// StmtCase represents case numbers of production Stmt
type StmtCase int

// Values of type StmtCase
const (
	StmtBlock StmtCase = iota
	StmtExpr
	StmtIter
	StmtJump
	StmtLabeled
	StmtSelect
)

// String implements fmt.Stringer
func (n StmtCase) String() string {
	switch n {
	case StmtBlock:
		return "StmtBlock"
	case StmtExpr:
		return "StmtExpr"
	case StmtIter:
		return "StmtIter"
	case StmtJump:
		return "StmtJump"
	case StmtLabeled:
		return "StmtLabeled"
	case StmtSelect:
		return "StmtSelect"
	default:
		return fmt.Sprintf("StmtCase(%v)", int(n))
	}
}

// Stmt represents data reduced by productions:
//
//	Stmt:
//	        CompoundStmt   // Case StmtBlock
//	|       ExprStmt       // Case StmtExpr
//	|       IterationStmt  // Case StmtIter
//	|       JumpStmt       // Case StmtJump
//	|       LabeledStmt    // Case StmtLabeled
//	|       SelectionStmt  // Case StmtSelect
type Stmt struct {
	Case          StmtCase
	CompoundStmt  *CompoundStmt
	ExprStmt      *ExprStmt
	IterationStmt *IterationStmt
	JumpStmt      *JumpStmt
	LabeledStmt   *LabeledStmt
	SelectionStmt *SelectionStmt
}

func (n *Stmt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *Stmt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *Stmt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.CompoundStmt.Pos()
	case 1:
		return n.ExprStmt.Pos()
	case 2:
		return n.IterationStmt.Pos()
	case 3:
		return n.JumpStmt.Pos()
	case 4:
		return n.LabeledStmt.Pos()
	case 5:
		return n.SelectionStmt.Pos()
	default:
		panic("internal error")
	}
}

// StorageClassSpecifierCase represents case numbers of production StorageClassSpecifier
type StorageClassSpecifierCase int

// Values of type StorageClassSpecifierCase
const (
	StorageClassSpecifierAuto StorageClassSpecifierCase = iota
	StorageClassSpecifierExtern
	StorageClassSpecifierRegister
	StorageClassSpecifierStatic
	StorageClassSpecifierTypedef
)

// String implements fmt.Stringer
func (n StorageClassSpecifierCase) String() string {
	switch n {
	case StorageClassSpecifierAuto:
		return "StorageClassSpecifierAuto"
	case StorageClassSpecifierExtern:
		return "StorageClassSpecifierExtern"
	case StorageClassSpecifierRegister:
		return "StorageClassSpecifierRegister"
	case StorageClassSpecifierStatic:
		return "StorageClassSpecifierStatic"
	case StorageClassSpecifierTypedef:
		return "StorageClassSpecifierTypedef"
	default:
		return fmt.Sprintf("StorageClassSpecifierCase(%v)", int(n))
	}
}

// StorageClassSpecifier represents data reduced by productions:
//
//	StorageClassSpecifier:
//	        "auto"      // Case StorageClassSpecifierAuto
//	|       "extern"    // Case StorageClassSpecifierExtern
//	|       "register"  // Case StorageClassSpecifierRegister
//	|       "static"    // Case StorageClassSpecifierStatic
//	|       "typedef"   // Case StorageClassSpecifierTypedef
type StorageClassSpecifier struct {
	Case  StorageClassSpecifierCase
	Token xc.Token
}

func (n *StorageClassSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StorageClassSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StorageClassSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// StructDeclarationCase represents case numbers of production StructDeclaration
type StructDeclarationCase int

// Values of type StructDeclarationCase
const (
	StructDeclarationBase StructDeclarationCase = iota
	StructDeclarationAnon
)

// String implements fmt.Stringer
func (n StructDeclarationCase) String() string {
	switch n {
	case StructDeclarationBase:
		return "StructDeclarationBase"
	case StructDeclarationAnon:
		return "StructDeclarationAnon"
	default:
		return fmt.Sprintf("StructDeclarationCase(%v)", int(n))
	}
}

// StructDeclaration represents data reduced by productions:
//
//	StructDeclaration:
//	        SpecifierQualifierList StructDeclaratorList ';'  // Case StructDeclarationBase
//	|       SpecifierQualifierList ';'                       // Case StructDeclarationAnon
type StructDeclaration struct {
	Case                   StructDeclarationCase
	SpecifierQualifierList *SpecifierQualifierList
	StructDeclaratorList   *StructDeclaratorList
	Token                  xc.Token
}

func (n *StructDeclaration) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructDeclaration) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclaration) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.SpecifierQualifierList.Pos()
}

// StructDeclarationList represents data reduced by productions:
//
//	StructDeclarationList:
//	        StructDeclaration                        // Case 0
//	|       StructDeclarationList StructDeclaration  // Case 1
type StructDeclarationList struct {
	Case                  int
	StructDeclaration     *StructDeclaration
	StructDeclarationList *StructDeclarationList
}

func (n *StructDeclarationList) reverse() *StructDeclarationList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.StructDeclarationList
	for nb != nil {
		nc := nb.StructDeclarationList
		nb.StructDeclarationList = na
		na = nb
		nb = nc
	}
	n.StructDeclarationList = nil
	return na
}

func (n *StructDeclarationList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *StructDeclarationList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclarationList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.StructDeclaration.Pos()
	case 1:
		return n.StructDeclarationList.Pos()
	default:
		panic("internal error")
	}
}

// StructDeclaratorCase represents case numbers of production StructDeclarator
type StructDeclaratorCase int

// Values of type StructDeclaratorCase
const (
	StructDeclaratorBase StructDeclaratorCase = iota
	StructDeclaratorBits
)

// String implements fmt.Stringer
func (n StructDeclaratorCase) String() string {
	switch n {
	case StructDeclaratorBase:
		return "StructDeclaratorBase"
	case StructDeclaratorBits:
		return "StructDeclaratorBits"
	default:
		return fmt.Sprintf("StructDeclaratorCase(%v)", int(n))
	}
}

// StructDeclarator represents data reduced by productions:
//
//	StructDeclarator:
//	        Declarator                   // Case StructDeclaratorBase
//	|       DeclaratorOpt ':' ConstExpr  // Case StructDeclaratorBits
type StructDeclarator struct {
	Bits          int
	Case          StructDeclaratorCase
	ConstExpr     *ConstExpr
	Declarator    *Declarator
	DeclaratorOpt *DeclaratorOpt
	Token         xc.Token
}

func (n *StructDeclarator) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructDeclarator) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclarator) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.Declarator.Pos()
	case 1:
		if p := n.DeclaratorOpt.Pos(); p != 0 {
			return p
		}

		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// StructDeclaratorList represents data reduced by productions:
//
//	StructDeclaratorList:
//	        StructDeclarator                           // Case 0
//	|       StructDeclaratorList ',' StructDeclarator  // Case 1
type StructDeclaratorList struct {
	Case                 int
	StructDeclarator     *StructDeclarator
	StructDeclaratorList *StructDeclaratorList
	Token                xc.Token
}

func (n *StructDeclaratorList) reverse() *StructDeclaratorList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.StructDeclaratorList
	for nb != nil {
		nc := nb.StructDeclaratorList
		nb.StructDeclaratorList = na
		na = nb
		nb = nc
	}
	n.StructDeclaratorList = nil
	return na
}

func (n *StructDeclaratorList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *StructDeclaratorList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructDeclaratorList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.StructDeclarator.Pos()
	case 1:
		return n.StructDeclaratorList.Pos()
	default:
		panic("internal error")
	}
}

// StructOrUnionCase represents case numbers of production StructOrUnion
type StructOrUnionCase int

// Values of type StructOrUnionCase
const (
	StructOrUnionStruct StructOrUnionCase = iota
	StructOrUnionUnion
)

// String implements fmt.Stringer
func (n StructOrUnionCase) String() string {
	switch n {
	case StructOrUnionStruct:
		return "StructOrUnionStruct"
	case StructOrUnionUnion:
		return "StructOrUnionUnion"
	default:
		return fmt.Sprintf("StructOrUnionCase(%v)", int(n))
	}
}

// StructOrUnion represents data reduced by productions:
//
//	StructOrUnion:
//	        "struct"  // Case StructOrUnionStruct
//	|       "union"   // Case StructOrUnionUnion
type StructOrUnion struct {
	Case  StructOrUnionCase
	Token xc.Token
}

func (n *StructOrUnion) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructOrUnion) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructOrUnion) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// StructOrUnionSpecifierCase represents case numbers of production StructOrUnionSpecifier
type StructOrUnionSpecifierCase int

// Values of type StructOrUnionSpecifierCase
const (
	StructOrUnionSpecifierTag StructOrUnionSpecifierCase = iota
	StructOrUnionSpecifierEmpty
	StructOrUnionSpecifierDefine
)

// String implements fmt.Stringer
func (n StructOrUnionSpecifierCase) String() string {
	switch n {
	case StructOrUnionSpecifierTag:
		return "StructOrUnionSpecifierTag"
	case StructOrUnionSpecifierEmpty:
		return "StructOrUnionSpecifierEmpty"
	case StructOrUnionSpecifierDefine:
		return "StructOrUnionSpecifierDefine"
	default:
		return fmt.Sprintf("StructOrUnionSpecifierCase(%v)", int(n))
	}
}

// StructOrUnionSpecifier represents data reduced by productions:
//
//	StructOrUnionSpecifier:
//	        StructOrUnion IDENTIFIER                                   // Case StructOrUnionSpecifierTag
//	|       StructOrUnion IdentifierOpt '{' '}'                        // Case StructOrUnionSpecifierEmpty
//	|       StructOrUnion IdentifierOpt '{' StructDeclarationList '}'  // Case StructOrUnionSpecifierDefine
type StructOrUnionSpecifier struct {
	scope                 *Scope // Declare the struct tag in scope.parent.
	typ                   Type
	Case                  StructOrUnionSpecifierCase
	IdentifierOpt         *IdentifierOpt
	StructDeclarationList *StructDeclarationList
	StructOrUnion         *StructOrUnion
	Token                 xc.Token
	Token2                xc.Token
}

func (n *StructOrUnionSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *StructOrUnionSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *StructOrUnionSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.StructOrUnion.Pos()
}

// TypeName represents data reduced by production:
//
//	TypeName:
//	        SpecifierQualifierList AbstractDeclaratorOpt  // Case 0
type TypeName struct {
	Type                   Type
	AbstractDeclaratorOpt  *AbstractDeclaratorOpt
	SpecifierQualifierList *SpecifierQualifierList
}

func (n *TypeName) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeName) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeName) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.SpecifierQualifierList.Pos()
}

// TypeQualifierCase represents case numbers of production TypeQualifier
type TypeQualifierCase int

// Values of type TypeQualifierCase
const (
	TypeQualifierConst TypeQualifierCase = iota
	TypeQualifierRestrict
	TypeQualifierVolatile
)

// String implements fmt.Stringer
func (n TypeQualifierCase) String() string {
	switch n {
	case TypeQualifierConst:
		return "TypeQualifierConst"
	case TypeQualifierRestrict:
		return "TypeQualifierRestrict"
	case TypeQualifierVolatile:
		return "TypeQualifierVolatile"
	default:
		return fmt.Sprintf("TypeQualifierCase(%v)", int(n))
	}
}

// TypeQualifier represents data reduced by productions:
//
//	TypeQualifier:
//	        "const"     // Case TypeQualifierConst
//	|       "restrict"  // Case TypeQualifierRestrict
//	|       "volatile"  // Case TypeQualifierVolatile
type TypeQualifier struct {
	Case  TypeQualifierCase
	Token xc.Token
}

func (n *TypeQualifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeQualifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeQualifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}

// TypeQualifierList represents data reduced by productions:
//
//	TypeQualifierList:
//	        TypeQualifier                    // Case 0
//	|       TypeQualifierList TypeQualifier  // Case 1
type TypeQualifierList struct {
	Case              int
	TypeQualifier     *TypeQualifier
	TypeQualifierList *TypeQualifierList
}

func (n *TypeQualifierList) reverse() *TypeQualifierList {
	if n == nil {
		return nil
	}

	na := n
	nb := na.TypeQualifierList
	for nb != nil {
		nc := nb.TypeQualifierList
		nb.TypeQualifierList = na
		na = nb
		nb = nc
	}
	n.TypeQualifierList = nil
	return na
}

func (n *TypeQualifierList) fragment() interface{} { return n.reverse() }

// String implements fmt.Stringer.
func (n *TypeQualifierList) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeQualifierList) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 0:
		return n.TypeQualifier.Pos()
	case 1:
		return n.TypeQualifierList.Pos()
	default:
		panic("internal error")
	}
}

// TypeQualifierListOpt represents data reduced by productions:
//
//	TypeQualifierListOpt:
//	        /* empty */        // Case 0
//	|       TypeQualifierList  // Case 1
type TypeQualifierListOpt struct {
	TypeQualifierList *TypeQualifierList
}

func (n *TypeQualifierListOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeQualifierListOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeQualifierListOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.TypeQualifierList.Pos()
}

// TypeSpecifierCase represents case numbers of production TypeSpecifier
type TypeSpecifierCase int

// Values of type TypeSpecifierCase
const (
	TypeSpecifierBool TypeSpecifierCase = iota
	TypeSpecifierComplex
	TypeSpecifierChar
	TypeSpecifierDouble
	TypeSpecifierFloat
	TypeSpecifierInt
	TypeSpecifierLong
	TypeSpecifierShort
	TypeSpecifierSigned
	TypeSpecifierUnsigned
	TypeSpecifierVoid
	TypeSpecifierEnum
	TypeSpecifierStruct
	TypeSpecifierName
	TypeSpecifierTypeofExpr
	TypeSpecifierTypeof
)

// String implements fmt.Stringer
func (n TypeSpecifierCase) String() string {
	switch n {
	case TypeSpecifierBool:
		return "TypeSpecifierBool"
	case TypeSpecifierComplex:
		return "TypeSpecifierComplex"
	case TypeSpecifierChar:
		return "TypeSpecifierChar"
	case TypeSpecifierDouble:
		return "TypeSpecifierDouble"
	case TypeSpecifierFloat:
		return "TypeSpecifierFloat"
	case TypeSpecifierInt:
		return "TypeSpecifierInt"
	case TypeSpecifierLong:
		return "TypeSpecifierLong"
	case TypeSpecifierShort:
		return "TypeSpecifierShort"
	case TypeSpecifierSigned:
		return "TypeSpecifierSigned"
	case TypeSpecifierUnsigned:
		return "TypeSpecifierUnsigned"
	case TypeSpecifierVoid:
		return "TypeSpecifierVoid"
	case TypeSpecifierEnum:
		return "TypeSpecifierEnum"
	case TypeSpecifierStruct:
		return "TypeSpecifierStruct"
	case TypeSpecifierName:
		return "TypeSpecifierName"
	case TypeSpecifierTypeofExpr:
		return "TypeSpecifierTypeofExpr"
	case TypeSpecifierTypeof:
		return "TypeSpecifierTypeof"
	default:
		return fmt.Sprintf("TypeSpecifierCase(%v)", int(n))
	}
}

// TypeSpecifier represents data reduced by productions:
//
//	TypeSpecifier:
//	        "_Bool"                    // Case TypeSpecifierBool
//	|       "_Complex"                 // Case TypeSpecifierComplex
//	|       "char"                     // Case TypeSpecifierChar
//	|       "double"                   // Case TypeSpecifierDouble
//	|       "float"                    // Case TypeSpecifierFloat
//	|       "int"                      // Case TypeSpecifierInt
//	|       "long"                     // Case TypeSpecifierLong
//	|       "short"                    // Case TypeSpecifierShort
//	|       "signed"                   // Case TypeSpecifierSigned
//	|       "unsigned"                 // Case TypeSpecifierUnsigned
//	|       "void"                     // Case TypeSpecifierVoid
//	|       EnumSpecifier              // Case TypeSpecifierEnum
//	|       StructOrUnionSpecifier     // Case TypeSpecifierStruct
//	|       TYPEDEF_NAME               // Case TypeSpecifierName
//	|       "typeof" '(' Expr ')'      // Case TypeSpecifierTypeofExpr
//	|       "typeof" '(' TypeName ')'  // Case TypeSpecifierTypeof
type TypeSpecifier struct {
	scope                  *Scope
	typ                    Type // typeof
	Case                   TypeSpecifierCase
	EnumSpecifier          *EnumSpecifier
	Expr                   *Expr
	StructOrUnionSpecifier *StructOrUnionSpecifier
	Token                  xc.Token
	Token2                 xc.Token
	Token3                 xc.Token
	TypeName               *TypeName
}

func (n *TypeSpecifier) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *TypeSpecifier) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *TypeSpecifier) Pos() token.Pos {
	if n == nil {
		return 0
	}

	switch n.Case {
	case 11:
		return n.EnumSpecifier.Pos()
	case 12:
		return n.StructOrUnionSpecifier.Pos()
	case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15:
		return n.Token.Pos()
	default:
		panic("internal error")
	}
}

// VolatileOpt represents data reduced by productions:
//
//	VolatileOpt:
//	        /* empty */  // Case 0
//	|       "volatile"   // Case 1
type VolatileOpt struct {
	Token xc.Token
}

func (n *VolatileOpt) fragment() interface{} { return n }

// String implements fmt.Stringer.
func (n *VolatileOpt) String() string {
	return PrettyString(n)
}

// Pos reports the position of the first component of n or zero if it's empty.
func (n *VolatileOpt) Pos() token.Pos {
	if n == nil {
		return 0
	}

	return n.Token.Pos()
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48381.c<|end_filename|>
/* PR rtl-optimization/48381 */

struct S { int s; } t;

int baz (void);
void fn (int, unsigned, int, unsigned, char);

static char
foo (signed x, unsigned y)
{
  return x < 0 || y >= 32 ? 1 : x >> y;
}

long long
bar (long long x, long y)
{
  return y < 0 ? 1LL : x - y;
}

void
test (int x, unsigned y, unsigned z, char w)
{
  unsigned v[2];
  fn (w || baz (), y, t.s, y, foo (bar (z, w) <= v[0], x));
}


<|start_filename|>v2/headers/linux_amd64/usr/include/bits/sigcontext.h<|end_filename|>
/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _BITS_SIGCONTEXT_H
#define _BITS_SIGCONTEXT_H  1

#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
#endif

#define FP_XSTATE_MAGIC1	0x46505853U
#define FP_XSTATE_MAGIC2	0x46505845U
#define FP_XSTATE_MAGIC2_SIZE	sizeof(FP_XSTATE_MAGIC2)

struct _fpx_sw_bytes {
	__uint32_t magic1;
	__uint32_t extended_size;
	__uint64_t xstate_bv;
	__uint32_t xstate_size;
	__uint32_t padding[7];
};

struct _fpreg {
	unsigned short significand[4];
	unsigned short exponent;
};

struct _fpxreg {
	unsigned short significand[4];
	unsigned short exponent;
	unsigned short padding[3];
};

struct _xmmreg {
	__uint32_t element[4];
};

#ifndef __x86_64__

struct _fpstate {
	/* Regular FPU environment.  */
	__uint32_t cw;
	__uint32_t sw;
	__uint32_t tag;
	__uint32_t ipoff;
	__uint32_t cssel;
	__uint32_t dataoff;
	__uint32_t datasel;
	struct _fpreg _st[8];
	unsigned short status;
	unsigned short magic;

	/* FXSR FPU environment.  */
	__uint32_t _fxsr_env[6];
	__uint32_t mxcsr;
	__uint32_t reserved;
	struct _fpxreg _fxsr_st[8];
	struct _xmmreg _xmm[8];
	__uint32_t padding[56];
};

#ifndef sigcontext_struct
/* Kernel headers before 2.1.1 define a struct sigcontext_struct, but
   we need sigcontext.  Some packages have come to rely on
   sigcontext_struct being defined on 32-bit x86, so define this for
   their benefit.  */
# define sigcontext_struct sigcontext
#endif

#define X86_FXSR_MAGIC		0x0000

struct sigcontext {
	unsigned short gs, __gsh;
	unsigned short fs, __fsh;
	unsigned short es, __esh;
	unsigned short ds, __dsh;
	unsigned long edi;
	unsigned long esi;
	unsigned long ebp;
	unsigned long esp;
	unsigned long ebx;
	unsigned long edx;
	unsigned long ecx;
	unsigned long eax;
	unsigned long trapno;
	unsigned long err;
	unsigned long eip;
	unsigned short cs, __csh;
	unsigned long eflags;
	unsigned long esp_at_signal;
	unsigned short ss, __ssh;
	struct _fpstate *fpstate;
	unsigned long oldmask;
	unsigned long cr2;
};

#else				/* __x86_64__ */

struct _fpstate {
	/* FPU environment matching the 64-bit FXSAVE layout.  */
	__uint16_t cwd;
	__uint16_t swd;
	__uint16_t ftw;
	__uint16_t fop;
	__uint64_t rip;
	__uint64_t rdp;
	__uint32_t mxcsr;
	__uint32_t mxcr_mask;
	struct _fpxreg _st[8];
	struct _xmmreg _xmm[16];
	__uint32_t padding[24];
};

struct sigcontext {
	__uint64_t r8;
	__uint64_t r9;
	__uint64_t r10;
	__uint64_t r11;
	__uint64_t r12;
	__uint64_t r13;
	__uint64_t r14;
	__uint64_t r15;
	__uint64_t rdi;
	__uint64_t rsi;
	__uint64_t rbp;
	__uint64_t rbx;
	__uint64_t rdx;
	__uint64_t rax;
	__uint64_t rcx;
	__uint64_t rsp;
	__uint64_t rip;
	__uint64_t eflags;
	unsigned short cs;
	unsigned short gs;
	unsigned short fs;
	unsigned short __pad0;
	__uint64_t err;
	__uint64_t trapno;
	__uint64_t oldmask;
	__uint64_t cr2;
	__extension__ union {
		struct _fpstate *fpstate;
		__uint64_t __fpstate_word;
	};
	__uint64_t __reserved1[8];
};

#endif				/* __x86_64__ */

struct _xsave_hdr {
	__uint64_t xstate_bv;
	__uint64_t reserved1[2];
	__uint64_t reserved2[5];
};

struct _ymmh_state {
	__uint32_t ymmh_space[64];
};

struct _xstate {
	struct _fpstate fpstate;
	struct _xsave_hdr xstate_hdr;
	struct _ymmh_state ymmh;
};

#endif				/* _BITS_SIGCONTEXT_H */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58946.c<|end_filename|>
/* PR tree-optimization/58946 */

int
foo (unsigned int c)
{
  unsigned int d, e, f;
  if ((int) c < 0)
    d = 0;
  else
    d = c;
  if (d == 0)
    e = __INT_MAX__ + 1U;
  else
    e = d;
  if ((int) e < 0)
    f = 0;
  else
    f = e;
  return f;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39614-5.c<|end_filename|>
/* { dg-do compile } */
/* { dg-options "-w -std=c99" } */
int i;
void
f (void)
{
  i = (1 / 0, 1 / 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr60502.c<|end_filename|>
/* PR tree-optimization/60502 */

typedef signed char v16i8 __attribute__ ((vector_size (16)));
typedef unsigned char v16u8 __attribute__ ((vector_size (16)));

void
foo (v16i8 *x)
{
  v16i8 m1 = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
  *x |= *x ^ m1;
}

void
bar (v16u8 *x)
{
  v16u8 m1 = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
  *x |= *x ^ m1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42299.c<|end_filename|>
/* { dg-options "-g" } */

void bar (void);

static int
foo (int x, int y)
{
  if (y)
    goto lab;
  if (x)
    y = 0;
  if (y)
    goto lab;
  y = 0;
lab:
  return y;
}

void
baz (int x, int y)
{
  y = foo (x, y);
  if (y != 0)
    bar ();
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr78622.c<|end_filename|>
/* PR middle-end/78622 - [7 Regression] -Wformat-overflow/-fprintf-return-value
   incorrect with overflow/wrapping
   { dg-skip-if "Requires %hhd format" { hppa*-*-hpux* } { "*" } { "" } }
   { dg-additional-options "-Wformat-overflow=2" } */

__attribute__((noinline, noclone)) int
foo (int x)
{
  if (x < 4096 + 8 || x >= 4096 + 256 + 8)
    return -1;

  char buf[5];
  int n = __builtin_snprintf (buf, sizeof buf, "%hhd", x + 1);
  __builtin_printf ("\"%hhd\" => %i\n", x + 1, n);
  return n;
}

int
main (void)
{
  if (__SCHAR_MAX__ != 127 || __CHAR_BIT__ != 8 || __SIZEOF_INT__ != 4)
    return 0;

  if (foo (4095 + 9) != 1
      || foo (4095 + 32) != 2
      || foo (4095 + 127) != 3
      || foo (4095 + 128) != 4
      || foo (4095 + 240) != 3
      || foo (4095 + 248) != 2
      || foo (4095 + 255) != 2
      || foo (4095 + 256) != 1)
    __builtin_abort ();

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38621.c<|end_filename|>
/* PR target/38621  */
struct s
{
  char a[512];
  int b;
  int c;
};

long long
foo (struct s *p, int m, int r)
{
  if (r == m)
    p->b = 3;
  p->c = 1;
  return m;
}


<|start_filename|>v2/testdata/bug/5.c<|end_filename|>
#include <assert.h>
#include <stdint.h>

#if defined(__PTRDIFF_TYPE__)
#define SQLITE_INT_TO_PTR1(X)  ((void*)(__PTRDIFF_TYPE__)(X))
#define SQLITE_PTR_TO_INT1(X)  ((int)(__PTRDIFF_TYPE__)(X))
#endif

#define SQLITE_INT_TO_PTR2(X)  ((void*)&((char*)0)[X])
#define SQLITE_PTR_TO_INT2(X)  ((int)(((char*)X)-(char*)0))

#define SQLITE_INT_TO_PTR3(X)  ((void*)(intptr_t)(X))
#define SQLITE_PTR_TO_INT3(X)  ((int)(intptr_t)(X))

#define SQLITE_INT_TO_PTR4(X)  ((void*)(X))
#define SQLITE_PTR_TO_INT4(X)  ((int)(X))

void foo(char *p, char *q) {
	int i, j = 42;
	char **z = &q;

	assert(p);
	assert(q);
	assert(z);
	p = 0;
	q = 0;
	z = 0;
	assert(!p);
	assert(!q);
	assert(!z);

#if defined(SQLITE_INT_TO_PTR1)
	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR1(314);
	i = SQLITE_PTR_TO_INT1(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR1(j);
	i = SQLITE_PTR_TO_INT1(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR1(314);
	i = SQLITE_PTR_TO_INT1(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR1(j);
	i = SQLITE_PTR_TO_INT1(q);
	assert(i == 42);
#endif

	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR2(314);
	i = SQLITE_PTR_TO_INT2(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR2(j);
	i = SQLITE_PTR_TO_INT2(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR2(314);
	i = SQLITE_PTR_TO_INT2(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR2(j);
	i = SQLITE_PTR_TO_INT2(q);
	assert(i == 42);

	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR3(314);
	i = SQLITE_PTR_TO_INT3(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR3(j);
	i = SQLITE_PTR_TO_INT3(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR3(314);
	i = SQLITE_PTR_TO_INT3(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR3(j);
	i = SQLITE_PTR_TO_INT3(q);
	assert(i == 42);

	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR4(314);
	i = SQLITE_PTR_TO_INT4(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR4(j);
	i = SQLITE_PTR_TO_INT4(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR4(314);
	i = SQLITE_PTR_TO_INT4(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR4(j);
	i = SQLITE_PTR_TO_INT4(q);
	assert(i == 42);
}

int main() {
	int i, j = 42;
	char c;
	char *p = &c, *q = &c;
	char **z = &q;

	foo(p, q);

	assert(p);
	assert(q);
	assert(z);
	p = 0;
	q = 0;
	z = 0;
	assert(!p);
	assert(!q);
	assert(!z);

#if defined(SQLITE_INT_TO_PTR1)
	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR1(314);
	i = SQLITE_PTR_TO_INT1(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR1(j);
	i = SQLITE_PTR_TO_INT1(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR1(314);
	i = SQLITE_PTR_TO_INT1(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR1(j);
	i = SQLITE_PTR_TO_INT1(q);
	assert(i == 42);
#endif

	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR2(314);
	i = SQLITE_PTR_TO_INT2(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR2(j);
	i = SQLITE_PTR_TO_INT2(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR2(314);
	i = SQLITE_PTR_TO_INT2(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR2(j);
	i = SQLITE_PTR_TO_INT2(q);
	assert(i == 42);

	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR3(314);
	i = SQLITE_PTR_TO_INT3(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR3(j);
	i = SQLITE_PTR_TO_INT3(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR3(314);
	i = SQLITE_PTR_TO_INT3(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR3(j);
	i = SQLITE_PTR_TO_INT3(q);
	assert(i == 42);

	p = 0;
	i = 0;
	p = SQLITE_INT_TO_PTR4(314);
	i = SQLITE_PTR_TO_INT4(p);
	assert(i == 314);
	p = SQLITE_INT_TO_PTR4(j);
	i = SQLITE_PTR_TO_INT4(p);
	assert(i == 42);
	q = 0;
	i = 0;
	q = SQLITE_INT_TO_PTR4(314);
	i = SQLITE_PTR_TO_INT4(q);
	assert(i == 314);
	q = SQLITE_INT_TO_PTR4(j);
	i = SQLITE_PTR_TO_INT4(q);
	assert(i == 42);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53748.c<|end_filename|>
/* PR tree-optimization/53748 */

typedef unsigned int V __attribute__ ((__vector_size__ (sizeof (int) * 4)));

void
foo (int x, V *y)
{
  *y = x ? ((V) { ~0U, ~0U, ~0U, ~0U }) : ((V) { 0, 0, 0, 0 });
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36988.c<|end_filename|>
typedef struct {
    unsigned char mbxCommand;
} MAILBOX_t;
void lpfc_sli_brdrestart(void)
{
  volatile unsigned int word0;
  MAILBOX_t *mb;
  mb = (MAILBOX_t *) &word0;
  mb->mbxCommand = 0x1A;
  __writel((*(unsigned int *) mb));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr51856.c<|end_filename|>
struct B { int b1; long long b2, b3; int b4; };
struct C { char c1[40], c2, c3[96]; long long c4[5], c5; char c6[596]; };
void fn1 (long long), fn2 (char *, int), fn4 (void);
int r, fn3 (int, const char *, int, char *, int, int);

void
foo (int t, int u, int v, int w, int x, int y, struct B *z)
{
  char c[512], d[512], e;
  struct C g;
  long long f, h[255];
  struct B j;
  __builtin_bzero (&j, sizeof j);
  if (y > w)
    fn4 ();
  __builtin_bzero (&g, sizeof g);
  g.c5 = h[0];
  fn1 (z ? z->b3 : f);
  g.c2 = y;
  fn2 (d, 256);
  if (fn3 (r, "", e, c, 0, 16))
    fn4 ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33133.c<|end_filename|>
static char newshuffle[256 + 16] = {
  0x0f, 0x08, 0x05, 0x07, 0x0c, 0x02, 0x0e, 0x09, 0x00, 0x01, 0x06, 0x0d,
    0x03, 0x04, 0x0b, 0x0a, 0x02, 0x0c, 0x0e, 0x06, 0x0f, 0x00, 0x01, 0x08,
    0x0d, 0x03, 0x0a, 0x04, 0x09, 0x0b, 0x05, 0x07, 0x05, 0x02, 0x09, 0x0f,
    0x0c, 0x04, 0x0d, 0x00, 0x0e, 0x0a, 0x06, 0x08, 0x0b, 0x01, 0x03, 0x07,
    0x0f, 0x0d, 0x02, 0x06, 0x07, 0x08, 0x05, 0x09, 0x00, 0x04, 0x0c, 0x03,
    0x01, 0x0a, 0x0b, 0x0e, 0x05, 0x0e, 0x02, 0x0b, 0x0d, 0x0a, 0x07, 0x00,
    0x08, 0x06, 0x04, 0x01, 0x0f, 0x0c, 0x03, 0x09, 0x08, 0x02, 0x0f, 0x0a,
    0x05, 0x09, 0x06, 0x0c, 0x00, 0x0b, 0x01, 0x0d, 0x07, 0x03, 0x04, 0x0e,
    0x0e, 0x08, 0x00, 0x09, 0x04, 0x0b, 0x02, 0x07, 0x0c, 0x03, 0x0a, 0x05,
    0x0d, 0x01, 0x06, 0x0f, 0x01, 0x04, 0x08, 0x0a, 0x0d, 0x0b, 0x07, 0x0e,
    0x05, 0x0f, 0x03, 0x09, 0x00, 0x02, 0x06, 0x0c, 0x05, 0x03, 0x0c, 0x08,
    0x0b, 0x02, 0x0e, 0x0a, 0x04, 0x01, 0x0d, 0x00, 0x06, 0x07, 0x0f, 0x09,
    0x06, 0x00, 0x0b, 0x0e, 0x0d, 0x04, 0x0c, 0x0f, 0x07, 0x02, 0x08, 0x0a,
    0x01, 0x05, 0x03, 0x09, 0x0b, 0x05, 0x0a, 0x0e, 0x0f, 0x01, 0x0c, 0x00,
    0x06, 0x04, 0x02, 0x09, 0x03, 0x0d, 0x07, 0x08, 0x07, 0x02, 0x0a, 0x00,
    0x0e, 0x08, 0x0f, 0x04, 0x0c, 0x0b, 0x09, 0x01, 0x05, 0x0d, 0x03, 0x06,
    0x07, 0x04, 0x0f, 0x09, 0x05, 0x01, 0x0c, 0x0b, 0x00, 0x03, 0x08, 0x0e,
    0x02, 0x0a, 0x06, 0x0d, 0x09, 0x04, 0x08, 0x00, 0x0a, 0x03, 0x01, 0x0c,
    0x05, 0x0f, 0x07, 0x02, 0x0b, 0x0e, 0x06, 0x0d, 0x09, 0x05, 0x04, 0x07,
    0x0e, 0x08, 0x03, 0x01, 0x0d, 0x0b, 0x0c, 0x02, 0x00, 0x0f, 0x06, 0x0a,
    0x09, 0x0a, 0x0b, 0x0d, 0x05, 0x03, 0x0f, 0x00, 0x01, 0x0c, 0x08, 0x07,
    0x06, 0x04, 0x0e, 0x02, 0x03, 0x0e, 0x0f, 0x02, 0x0d, 0x0c, 0x04, 0x05,
    0x09, 0x06, 0x00, 0x01, 0x0b, 0x07, 0x0a, 0x08,
};
void newpassencrypt (char *, char *, char *);
void
newpassencrypt (char *old, char *new, char *out)
{
  char *p, *bx;
  char copy[8];
  int i, di, ax;
  char cl, dl, ch;
  for (i = 0; i < 16; i++)
    {
      for (bx = old + 7; bx > old; bx--)
        {
          *bx = ((bx[-1] >> 4) & 0x0f) | ((*bx) << 4);
        }
      for (di = 0; di < 16; di++)
        {
          if (newshuffle[di + 0x100] & 1)
            ch = ((copy[newshuffle[di + 0x100] / 2] >> 4) & 0x0f);
          else
            ch = copy[newshuffle[di + 0x100] / 2] & 0x0f;
          out[di / 2] |= ((di & 1) ? ch << 4 : ch);
        }
      memcpy (copy, out, 8);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21840.c<|end_filename|>
void fn_show_state(void);
typedef void (*fn_handler_fn)(void);
static fn_handler_fn fn_handler[1];

void k_spec(unsigned char value)
{
  void *func = fn_handler[value];
  if (func == fn_show_state )
    return;
  fn_handler[value]();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050206-1.c<|end_filename|>
unsigned short foo (void)
{
  unsigned short u[1] = { 1 };
  u[0] = 0;
  u[1] = 1;
  u[2] = 2;
  return u[0] + u[1] + u[2];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36141.c<|end_filename|>
extern void ffi_closure_unix (void);
ffi_prep_closure_loc (void)
{
  struct ia64_fd
  {
    unsigned long long code_pointer;
    unsigned long long gp;
  };
  struct ffi_ia64_trampoline_struct
  {
    unsigned long long code_pointer;
  };
  struct ffi_ia64_trampoline_struct *tramp;
  struct ia64_fd *fd;
  fd = (struct ia64_fd *)(void *)ffi_closure_unix;
  tramp->code_pointer = fd->code_pointer;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42632.c<|end_filename|>
static inline __attribute__((always_inline)) int
__pskb_trim(void)
{
  return ___pskb_trim();
}
static inline __attribute__((always_inline))
int pskb_trim(void)
{
  return __pskb_trim();
}
int ___pskb_trim(void)
{
  pskb_trim();
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr28776-1.c<|end_filename|>
typedef struct dw_fde_struct
{
  int decl;
} *dw_fde_ref;
dw_fde_ref fde_table;
unsigned fde_table_in_use;
void output_call_frame_info (void)
{
  unsigned int i;
  dw_fde_ref fde;
  for (i = 0; i < fde_table_in_use; i++)
    {
      fde = &fde_table[i];
      tree_contains_struct_check_failed (fde_table[i].decl);
    }
}


<|start_filename|>v2/testdata/cpp-expand/example-6.10.3.5-5.h<|end_filename|>
#define x      3
#define f(a)   f(x * (a))
#undef  x      
#define x      2
#define g      f
#define z      z[0]
#define h      g(~
#define m(a)   a(w)
#define w      0,1
#define t(a)   a
#define p()    int
#define q(x)   x
#define r(x,y) x ## y
#define str(x) # x

f(y+1) + f(f(z)) % t(t(g)(0) + t)(1);
g(x+(3,4)-w) | h 5) & m
	(f)^m(m);
p() i[q()] = { q(1), r(2,3), r(4,), r(,5), r(,) };
char c[2][6] = { str(hello), str() };


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69209.c<|end_filename|>
/* PR tree-optimization/69209 */

int a, c, *d, e;

void foo (void) __attribute__ ((__noreturn__));

int
bar (void)
{
  int f;
  if (a)
    {
      if (e)
	foo ();
      foo ();
    }
  if (d != &f)
    foo ();
  if (!c)
    foo ();
  return f;
}

void
baz ()
{
  bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45969-1.c<|end_filename|>
/* { dg-options "-std=c89" } */
void crash() {
    double l[4];
    if((l[0]+l[2]) && (l[1]+l[3])){
    }
}


<|start_filename|>v2/headers/linux_arm/usr/include/arm-linux-gnueabihf/sys/file.h<|end_filename|>
/* Copyright (C) 1991-2016 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef	_SYS_FILE_H
#define	_SYS_FILE_H	1

#include <features.h>

#ifndef	_FCNTL_H
#include <fcntl.h>
#endif

__BEGIN_DECLS
/* Alternate names for values for the WHENCE argument to `lseek'.
   These are the same as SEEK_SET, SEEK_CUR, and SEEK_END, respectively.  */
#ifndef L_SET
#define L_SET	0		/* Seek from beginning of file.  */
#define L_INCR	1		/* Seek from current position.  */
#define L_XTND	2		/* Seek from end of file.  */
#endif
/* Operations for the `flock' call.  */
#define	LOCK_SH	1		/* Shared lock.  */
#define	LOCK_EX	2		/* Exclusive lock.  */
#define	LOCK_UN	8		/* Unlock.  */
#define	__LOCK_ATOMIC	16	/* Atomic update.  */
/* Can be OR'd in to one of the above.  */
#define	LOCK_NB	4		/* Don't block when locking.  */
/* Apply or remove an advisory lock, according to OPERATION,
   on the file FD refers to.  */
extern int flock(int __fd, int __operation) __THROW;

__END_DECLS
#endif				/* sys/file.h  */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr36245.c<|end_filename|>
extern char buf1[10];
extern char buf2[10];
extern void b(int i, int j, int w);

void a() {
    int i,j;
    char *p;
    int w;

    p = buf1;
    for(j = 0;j < 10; j++) {
        for(i = 0;i < 10; i++) {
            w = *p;
            if(w != 1) {
                w = buf2[p - buf1];
                b(i*2+1, j, w);
            }
            p++;
        }
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53410-2.c<|end_filename|>
/* PR tree-optimization/53410 */

typedef int V __attribute__((vector_size (4 * sizeof (int))));
typedef unsigned int W __attribute__((vector_size (4 * sizeof (int))));

void
f1 (V *p)
{
  *p = (*p & ((V) { 1, 1, 1, 1 })) ^ ((V) { 1, 1, 1, 1});
}

void
f2 (V *p)
{
  *p = (*p ^ ((V) { 1, 1, 1, 1 })) & ((V) { 1, 1, 1, 1});
}

void
f3 (V *p)
{
  *p = (~*p) & ((V) { 1, 1, 1, 1 });
}

void
f4 (V *p, V *q)
{
  *p = (*p ^ *q) == *q;
}

void
f5 (V *p, V *q)
{
  *p = (*p ^ *q) == *p;
}

void
f6 (V *p, V *q, V *r)
{
  *p = (*p & *r) == (*q & *r);
}

void
f7 (V *p, V *q, V *r)
{
  *p = (*p & *r) == (*r & *q);
}

void
f8 (V *p, V *q, V *r)
{
  *p = (*r & *p) == (*q & *r);
}

void
f9 (V *p, V *q, V *r)
{
  *p = (*r & *p) == (*r & *q);
}

void
f10 (W *p, W *q)
{
  *p = *p < (((const W) { 1U, 1U, 1U, 1U }) << *q);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr20203.c<|end_filename|>
void *memset (void *, int, unsigned long);

typedef struct bfd_section
{
  unsigned long size;
  unsigned char *contents;
} asection;

int
_bfd_mips_elf_finish_dynamic_sections (asection *s)
{
  long long dummy_offset;
  dummy_offset = s->size - 16;
  memset (s->contents + dummy_offset, 0, 16);
  return 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/statement-expression-1.c<|end_filename|>
/* PR middle-end/30253, We would ICE with statement expressions
   in a conditional expression because we forgot to update the wrapper
   function for the gimple modify statement.  */

#define f(x) ({ unsigned tmp=x; tmp; })

unsigned foo(unsigned x) {
  return __builtin_constant_p(x) ? 0 : f(x);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56539.c<|end_filename|>
/* PR tree-optimization/56539 */

short
foo (const char *x, unsigned y)
{
  return y > 1 ? (x[y - 1] - '0') + 10 * foo (x, y - 1) : (*x - '0');
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr16808.c<|end_filename|>
/* We used to ICE as we did not mark a Vop for rename as
   we changed a function call to a normal modify statement
   while folding exp(0.0); */

double exp(double);
void f0(void);
void f(double);
typedef struct Parser {
    int x;
    char *s;
} Parser;
static double pop(Parser *p) {
    if (p->s[0] <= 0) {
	f0();
	return 0;
    }
    --p->x;
    return 0;
}
static void evalFactor(Parser *p) {
    while (p->x)
	f(exp(pop(p)));
}
static void evalTerm(Parser *p) {
    while (p->s[0])
	evalFactor(p);
}
static void evalExpression(Parser *p) {
    evalTerm(p);
    while (p->s[0])
	evalTerm(p);
}
void evalPrimary(Parser *p) {
    if (p->s)
	return;
    evalExpression(p);
}



<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr81588.c<|end_filename|>
/* PR tree-optimization/81588 */

__attribute__((noinline, noclone)) int
bar (int x)
{
  __asm volatile ("" : : "g" (x) : "memory");
}

__attribute__((noinline, noclone)) int
foo (unsigned x, long long y)
{
  if (y < 0)
    return 0;
  if (y < (long long) (4 * x))
    {
      bar (y);
      return 1;
    }
  return 0;
}     

int
main ()
{
  volatile unsigned x = 10;
  volatile long long y = -10000;
  if (foo (x, y) != 0)
    __builtin_abort ();
  y = -1;
  if (foo (x, y) != 0)
    __builtin_abort ();
  y = 0;
  if (foo (x, y) != 1)
    __builtin_abort ();
  y = 39;
  if (foo (x, y) != 1)
    __builtin_abort ();
  y = 40;
  if (foo (x, y) != 0)
    __builtin_abort ();
  y = 10000;
  if (foo (x, y) != 0)
    __builtin_abort ();
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39928-1.c<|end_filename|>
/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
extern __m128 _mm_sub_ps (__m128 __A, __m128 __B);
extern __m128 _mm_mul_ps (__m128 __A, __m128 __B);
__m128
vq_nbest(const __m128 *codebook, __m128 d, __m128 in)
{
  return _mm_sub_ps(d, _mm_mul_ps(in, *codebook++));
}


<|start_filename|>v2/testdata/cpp-expand/mustfail/example-6.10.3.5-9b.h<|end_filename|>
#define OBJ_LIKE (1-1)
#define OBJ_LIKE (1 - 1) // different white space


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40291.c<|end_filename|>
/* PR middle-end/40291 */

int
foo (void *x, char *y, unsigned long long z)
{
  return memcmp (x, y, z);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr17558.c<|end_filename|>
struct xobject {
       char type;
};
extern struct xobject *t1_Xform ( struct xobject *obj);
struct xobject *
t1_Xform(struct xobject *obj)
{
  register struct font *F = (struct font *) obj;
  return((struct xobject*)F);
}


<|start_filename|>v2/headers/linux_386/usr/include/i386-linux-gnu/bits/ioctl-types.h<|end_filename|>
/* Structure types for pre-termios terminal ioctls.  Linux version.
   Copyright (C) 1996-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _SYS_IOCTL_H
# error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
#endif

/* Get definition of constants for use with `ioctl'.  */
#include <asm/ioctls.h>

struct winsize {
	unsigned short int ws_row;
	unsigned short int ws_col;
	unsigned short int ws_xpixel;
	unsigned short int ws_ypixel;
};

#define NCC 8
struct termio {
	unsigned short int c_iflag;	/* input mode flags */
	unsigned short int c_oflag;	/* output mode flags */
	unsigned short int c_cflag;	/* control mode flags */
	unsigned short int c_lflag;	/* local mode flags */
	unsigned char c_line;	/* line discipline */
	unsigned char c_cc[NCC];	/* control characters */
};

/* modem lines */
#define TIOCM_LE	0x001
#define TIOCM_DTR	0x002
#define TIOCM_RTS	0x004
#define TIOCM_ST	0x008
#define TIOCM_SR	0x010
#define TIOCM_CTS	0x020
#define TIOCM_CAR	0x040
#define TIOCM_RNG	0x080
#define TIOCM_DSR	0x100
#define TIOCM_CD	TIOCM_CAR
#define TIOCM_RI	TIOCM_RNG

/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */

/* line disciplines */
#define N_TTY		0
#define N_SLIP		1
#define N_MOUSE		2
#define N_PPP		3
#define N_STRIP		4
#define N_AX25		5
#define N_X25		6	/* X.25 async  */
#define N_6PACK		7
#define N_MASC		8	/* Mobitex module  */
#define N_R3964		9	/* Simatic R3964 module  */
#define N_PROFIBUS_FDL	10	/* Profibus  */
#define N_IRDA		11	/* Linux IR  */
#define N_SMSBLOCK	12	/* SMS block mode  */
#define N_HDLC		13	/* synchronous HDLC  */
#define N_SYNC_PPP	14	/* synchronous PPP  */
#define	N_HCI		15	/* Bluetooth HCI UART  */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/simd-6.c<|end_filename|>
/* { dg-options "-std=gnu89" } */

typedef int __attribute__((vector_size (8))) vec;

vec a[] = {(vec) {1, 2}, {3, 4}};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41634.c<|end_filename|>
extern int _xgetw();
extern int foo(char*);

void test_readmode( int ascii_mode )
{
  static const char outbuffer[]
    = "0,1,2,3,4,5,6,7,8,9\r\n\r\nA,B,C,D,E\r\nX,Y,Z";
  char buffer[2*512 +256];
  int i, j, ao;
  unsigned int fp;

  foo(buffer);

  for (i=0, j=0; i<6; i++) {
      if (ao==0 || outbuffer[fp-3+i] != '\r')
	buffer[j++] = outbuffer[fp-3+i];
  }
  _xgetw();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22379.c<|end_filename|>
void __add_entropy_words(void);
void __wake_up(void);
void SHATransform(void);
static inline __attribute__((always_inline)) void add_entropy_words(void){}
void extract_entropy(void);
static inline __attribute__((always_inline)) void xfer_secondary_pool(void)
{
extract_entropy();
add_entropy_words();
}
void extract_entropy(void)
{
xfer_secondary_pool();
__wake_up();
}
void init_std_data(void)
{
add_entropy_words();
}
void rand_initialize(void)
{
init_std_data();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/complex-4.c<|end_filename|>
/* This used to ICE because gimplify_modify_expr_complex_part was not
   updated for the GIMPLE_MODIFY_EXPR changes in that calling
   tree_to_gimple_tuple was needed.  */

void f(void)
{
  double _Complex Res;
  __real__ Res = __imag__ Res = 0.0;
}


<|start_filename|>v2/headers/linux_386/usr/include/string.h<|end_filename|>
/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 *	ISO C99 Standard: 7.21 String handling	<string.h>
 */

#ifndef	_STRING_H
#define	_STRING_H	1

#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#include <bits/libc-header-start.h>

__BEGIN_DECLS
/* Get size_t and NULL from <stddef.h>.  */
#define	__need_size_t
#define	__need_NULL
#include <stddef.h>
/* Tell the caller that we provide correct C++ prototypes.  */
#if defined __cplusplus && __GNUC_PREREQ (4, 4)
# define __CORRECT_ISO_CPP_STRING_H_PROTO
#endif
/* Copy N bytes of SRC to DEST.  */
extern void *memcpy(void *__restrict __dest, const void *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));
/* Copy N bytes of SRC to DEST, guaranteeing
   correct behavior for overlapping strings.  */
extern void *memmove(void *__dest, const void *__src, size_t __n)
__THROW __nonnull((1, 2));

/* Copy no more than N bytes of SRC to DEST, stopping when C is found.
   Return the position in DEST one byte past where C was copied,
   or NULL if C was not found in the first N bytes of SRC.  */
#if defined __USE_MISC || defined __USE_XOPEN
extern void *memccpy(void *__restrict __dest, const void *__restrict __src, int __c, size_t __n)
__THROW __nonnull((1, 2));
#endif				/* Misc || X/Open.  */

/* Set N bytes of S to C.  */
extern void *memset(void *__s, int __c, size_t __n)
__THROW __nonnull((1));

/* Compare N bytes of S1 and S2.  */
extern int memcmp(const void *__s1, const void *__s2, size_t __n)
__THROW __attribute_pure__ __nonnull((1, 2));

/* Search N bytes of S for C.  */
#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" {
	extern void *memchr(void *__s, int __c, size_t __n)
	__THROW __asm("memchr") __attribute_pure__ __nonnull((1));
	extern const void *memchr(const void *__s, int __c, size_t __n)
	__THROW __asm("memchr") __attribute_pure__ __nonnull((1));

# ifdef __OPTIMIZE__
	__extern_always_inline void *memchr(void *__s, int __c, size_t __n) __THROW
{
	return __builtin_memchr(__s, __c, __n);
} __extern_always_inline const void *memchr(const void *__s, int __c, size_t __n) __THROW {
		return __builtin_memchr(__s, __c, __n);
}
# endif
}
#else
extern void *memchr(const void *__s, int __c, size_t __n)
__THROW __attribute_pure__ __nonnull((1));
#endif

#ifdef __USE_GNU
/* Search in S for C.  This is similar to `memchr' but there is no
   length limit.  */
# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" void *rawmemchr(void *__s, int __c)
__THROW __asm("rawmemchr")
__attribute_pure__ __nonnull((1));
extern "C++" const void *rawmemchr(const void *__s, int __c)
__THROW __asm("rawmemchr")
__attribute_pure__ __nonnull((1));
# else
extern void *rawmemchr(const void *__s, int __c)
__THROW __attribute_pure__ __nonnull((1));
# endif

/* Search N bytes of S for the final occurrence of C.  */
# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" void *memrchr(void *__s, int __c, size_t __n)
__THROW __asm("memrchr")
__attribute_pure__ __nonnull((1));
extern "C++" const void *memrchr(const void *__s, int __c, size_t __n)
__THROW __asm("memrchr")
__attribute_pure__ __nonnull((1));
# else
extern void *memrchr(const void *__s, int __c, size_t __n)
__THROW __attribute_pure__ __nonnull((1));
# endif
#endif

/* Copy SRC to DEST.  */
extern char *strcpy(char *__restrict __dest, const char *__restrict __src)
__THROW __nonnull((1, 2));
/* Copy no more than N characters of SRC to DEST.  */
extern char *strncpy(char *__restrict __dest, const char *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));

/* Append SRC onto DEST.  */
extern char *strcat(char *__restrict __dest, const char *__restrict __src)
__THROW __nonnull((1, 2));
/* Append no more than N characters from SRC onto DEST.  */
extern char *strncat(char *__restrict __dest, const char *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));

/* Compare S1 and S2.  */
extern int strcmp(const char *__s1, const char *__s2)
__THROW __attribute_pure__ __nonnull((1, 2));
/* Compare N characters of S1 and S2.  */
extern int strncmp(const char *__s1, const char *__s2, size_t __n)
__THROW __attribute_pure__ __nonnull((1, 2));

/* Compare the collated forms of S1 and S2.  */
extern int strcoll(const char *__s1, const char *__s2)
__THROW __attribute_pure__ __nonnull((1, 2));
/* Put a transformation of SRC into no more than N bytes of DEST.  */
extern size_t strxfrm(char *__restrict __dest, const char *__restrict __src, size_t __n)
__THROW __nonnull((2));

#ifdef __USE_XOPEN2K8
/* POSIX.1-2008 extended locale interface (see locale.h).  */
# include <bits/types/locale_t.h>

/* Compare the collated forms of S1 and S2, using sorting rules from L.  */
extern int strcoll_l(const char *__s1, const char *__s2, locale_t __l)
__THROW __attribute_pure__ __nonnull((1, 2, 3));
/* Put a transformation of SRC into no more than N bytes of DEST,
   using sorting rules from L.  */
extern size_t strxfrm_l(char *__dest, const char *__src, size_t __n, locale_t __l)
__THROW __nonnull((2, 4));
#endif

#if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8	\
     || __GLIBC_USE (LIB_EXT2))
/* Duplicate S, returning an identical malloc'd string.  */
extern char *strdup(const char *__s)
__THROW __attribute_malloc__ __nonnull((1));
#endif

/* Return a malloc'd copy of at most N bytes of STRING.  The
   resultant string is terminated even if no null terminator
   appears before STRING[N].  */
#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2)
extern char *strndup(const char *__string, size_t __n)
__THROW __attribute_malloc__ __nonnull((1));
#endif

#if defined __USE_GNU && defined __GNUC__
/* Duplicate S, returning an identical alloca'd string.  */
# define strdupa(s)							      \
  (__extension__							      \
    ({									      \
      const char *__old = (s);						      \
      size_t __len = strlen (__old) + 1;				      \
      char *__new = (char *) __builtin_alloca (__len);			      \
      (char *) memcpy (__new, __old, __len);				      \
    }))

/* Return an alloca'd copy of at most N bytes of string.  */
# define strndupa(s, n)							      \
  (__extension__							      \
    ({									      \
      const char *__old = (s);						      \
      size_t __len = strnlen (__old, (n));				      \
      char *__new = (char *) __builtin_alloca (__len + 1);		      \
      __new[__len] = '\0';						      \
      (char *) memcpy (__new, __old, __len);				      \
    }))
#endif

/* Find the first occurrence of C in S.  */
#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" {
	extern char *strchr(char *__s, int __c)
	__THROW __asm("strchr") __attribute_pure__ __nonnull((1));
	extern const char *strchr(const char *__s, int __c)
	__THROW __asm("strchr") __attribute_pure__ __nonnull((1));

# ifdef __OPTIMIZE__
	__extern_always_inline char *strchr(char *__s, int __c) __THROW
{
	return __builtin_strchr(__s, __c);
} __extern_always_inline const char *strchr(const char *__s, int __c) __THROW {
		return __builtin_strchr(__s, __c);
}
# endif
}
#else
extern char *strchr(const char *__s, int __c)
__THROW __attribute_pure__ __nonnull((1));
#endif
/* Find the last occurrence of C in S.  */
#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" {
	extern char *strrchr(char *__s, int __c)
	__THROW __asm("strrchr") __attribute_pure__ __nonnull((1));
	extern const char *strrchr(const char *__s, int __c)
	__THROW __asm("strrchr") __attribute_pure__ __nonnull((1));

# ifdef __OPTIMIZE__
	__extern_always_inline char *strrchr(char *__s, int __c) __THROW
{
	return __builtin_strrchr(__s, __c);
} __extern_always_inline const char *strrchr(const char *__s, int __c) __THROW {
		return __builtin_strrchr(__s, __c);
}
# endif
}
#else
extern char *strrchr(const char *__s, int __c)
__THROW __attribute_pure__ __nonnull((1));
#endif

#ifdef __USE_GNU
/* This function is similar to `strchr'.  But it returns a pointer to
   the closing NUL byte in case C is not found in S.  */
# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" char *strchrnul(char *__s, int __c)
__THROW __asm("strchrnul")
__attribute_pure__ __nonnull((1));
extern "C++" const char *strchrnul(const char *__s, int __c)
__THROW __asm("strchrnul")
__attribute_pure__ __nonnull((1));
# else
extern char *strchrnul(const char *__s, int __c)
__THROW __attribute_pure__ __nonnull((1));
# endif
#endif

/* Return the length of the initial segment of S which
   consists entirely of characters not in REJECT.  */
extern size_t strcspn(const char *__s, const char *__reject)
__THROW __attribute_pure__ __nonnull((1, 2));
/* Return the length of the initial segment of S which
   consists entirely of characters in ACCEPT.  */
extern size_t strspn(const char *__s, const char *__accept)
__THROW __attribute_pure__ __nonnull((1, 2));
/* Find the first occurrence in S of any character in ACCEPT.  */
#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" {
	extern char *strpbrk(char *__s, const char *__accept)
	__THROW __asm("strpbrk") __attribute_pure__ __nonnull((1, 2));
	extern const char *strpbrk(const char *__s, const char *__accept)
	__THROW __asm("strpbrk") __attribute_pure__ __nonnull((1, 2));

# ifdef __OPTIMIZE__
	__extern_always_inline char *strpbrk(char *__s, const char *__accept) __THROW
{
	return __builtin_strpbrk(__s, __accept);
} __extern_always_inline const char *strpbrk(const char *__s, const char *__accept) __THROW {
		return __builtin_strpbrk(__s, __accept);
}
# endif
}
#else
extern char *strpbrk(const char *__s, const char *__accept)
__THROW __attribute_pure__ __nonnull((1, 2));
#endif
/* Find the first occurrence of NEEDLE in HAYSTACK.  */
#ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" {
	extern char *strstr(char *__haystack, const char *__needle)
	__THROW __asm("strstr") __attribute_pure__ __nonnull((1, 2));
	extern const char *strstr(const char *__haystack, const char *__needle)
	__THROW __asm("strstr") __attribute_pure__ __nonnull((1, 2));

# ifdef __OPTIMIZE__
	__extern_always_inline char *strstr(char *__haystack, const char *__needle) __THROW
{
	return __builtin_strstr(__haystack, __needle);
} __extern_always_inline const char *strstr(const char *__haystack, const char *__needle) __THROW {
		return __builtin_strstr(__haystack, __needle);
}
# endif
}
#else
extern char *strstr(const char *__haystack, const char *__needle)
__THROW __attribute_pure__ __nonnull((1, 2));
#endif

/* Divide S into tokens separated by characters in DELIM.  */
extern char *strtok(char *__restrict __s, const char *__restrict __delim)
__THROW __nonnull((2));

/* Divide S into tokens separated by characters in DELIM.  Information
   passed between calls are stored in SAVE_PTR.  */
extern char *__strtok_r(char *__restrict __s, const char *__restrict __delim, char **__restrict __save_ptr)
__THROW __nonnull((2, 3));
#ifdef __USE_POSIX
extern char *strtok_r(char *__restrict __s, const char *__restrict __delim, char **__restrict __save_ptr)
__THROW __nonnull((2, 3));
#endif

#ifdef __USE_GNU
/* Similar to `strstr' but this function ignores the case of both strings.  */
# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" char *strcasestr(char *__haystack, const char *__needle)
__THROW __asm("strcasestr")
__attribute_pure__ __nonnull((1, 2));
extern "C++" const char *strcasestr(const char *__haystack, const char *__needle)
__THROW __asm("strcasestr")
__attribute_pure__ __nonnull((1, 2));
# else
extern char *strcasestr(const char *__haystack, const char *__needle)
__THROW __attribute_pure__ __nonnull((1, 2));
# endif
#endif

#ifdef __USE_GNU
/* Find the first occurrence of NEEDLE in HAYSTACK.
   NEEDLE is NEEDLELEN bytes long;
   HAYSTACK is HAYSTACKLEN bytes long.  */
extern void *memmem(const void *__haystack, size_t __haystacklen, const void *__needle, size_t __needlelen)
__THROW __attribute_pure__ __nonnull((1, 3));

/* Copy N bytes of SRC to DEST, return pointer to bytes after the
   last written byte.  */
extern void *__mempcpy(void *__restrict __dest, const void *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));
extern void *mempcpy(void *__restrict __dest, const void *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));
#endif

/* Return the length of S.  */
extern size_t strlen(const char *__s)
__THROW __attribute_pure__ __nonnull((1));

#ifdef	__USE_XOPEN2K8
/* Find the length of STRING, but scan at most MAXLEN characters.
   If no '\0' terminator is found in that many characters, return MAXLEN.  */
extern size_t strnlen(const char *__string, size_t __maxlen)
__THROW __attribute_pure__ __nonnull((1));
#endif

/* Return a string describing the meaning of the `errno' code in ERRNUM.  */
extern char *strerror(int __errnum) __THROW;
#ifdef __USE_XOPEN2K
/* Reentrant version of `strerror'.
   There are 2 flavors of `strerror_r', GNU which returns the string
   and may or may not use the supplied temporary buffer and POSIX one
   which fills the string into the buffer.
   To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L
   without -D_GNU_SOURCE is needed, otherwise the GNU version is
   preferred.  */
# if defined __USE_XOPEN2K && !defined __USE_GNU
/* Fill BUF with a string describing the meaning of the `errno' code in
   ERRNUM.  */
#  ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH(strerror_r, (int __errnum, char *__buf, size_t __buflen), __xpg_strerror_r) __nonnull((2));
#  else
extern int __xpg_strerror_r(int __errnum, char *__buf, size_t __buflen)
__THROW __nonnull((2));
#   define strerror_r __xpg_strerror_r
#  endif
# else
/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be
   used.  */
extern char *strerror_r(int __errnum, char *__buf, size_t __buflen)
__THROW __nonnull((2)) __wur;
# endif
#endif

#ifdef __USE_XOPEN2K8
/* Translate error number to string according to the locale L.  */
extern char *strerror_l(int __errnum, locale_t __l) __THROW;
#endif

#ifdef __USE_MISC
# include <strings.h>

/* Set N bytes of S to 0.  The compiler will not delete a call to this
   function, even if S is dead after the call.  */
extern void explicit_bzero(void *__s, size_t __n)
__THROW __nonnull((1));

/* Return the next DELIM-delimited token from *STRINGP,
   terminating it with a '\0', and update *STRINGP to point past it.  */
extern char *strsep(char **__restrict __stringp, const char *__restrict __delim)
__THROW __nonnull((1, 2));
#endif

#ifdef	__USE_XOPEN2K8
/* Return a string describing the meaning of the signal number in SIG.  */
extern char *strsignal(int __sig) __THROW;

/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST.  */
extern char *__stpcpy(char *__restrict __dest, const char *__restrict __src)
__THROW __nonnull((1, 2));
extern char *stpcpy(char *__restrict __dest, const char *__restrict __src)
__THROW __nonnull((1, 2));

/* Copy no more than N characters of SRC to DEST, returning the address of
   the last character written into DEST.  */
extern char *__stpncpy(char *__restrict __dest, const char *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));
extern char *stpncpy(char *__restrict __dest, const char *__restrict __src, size_t __n)
__THROW __nonnull((1, 2));
#endif

#ifdef	__USE_GNU
/* Compare S1 and S2 as strings holding name & indices/version numbers.  */
extern int strverscmp(const char *__s1, const char *__s2)
__THROW __attribute_pure__ __nonnull((1, 2));

/* Sautee STRING briskly.  */
extern char *strfry(char *__string)
__THROW __nonnull((1));

/* Frobnicate N bytes of S.  */
extern void *memfrob(void *__s, size_t __n)
__THROW __nonnull((1));

# ifndef basename
/* Return the file name within directory of FILENAME.  We don't
   declare the function if the `basename' macro is available (defined
   in <libgen.h>) which makes the XPG version of this function
   available.  */
#  ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
extern "C++" char *basename(char *__filename)
__THROW __asm("basename") __nonnull((1));
extern "C++" const char *basename(const char *__filename)
__THROW __asm("basename") __nonnull((1));
#  else
extern char *basename(const char *__filename)
__THROW __nonnull((1));
#  endif
# endif
#endif

#if __GNUC_PREREQ (3,4)
# if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
/* Functions with security checks.  */
#  include <bits/string_fortified.h>
# endif
#endif

__END_DECLS
#endif				/* string.h  */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/920501-7.c<|end_filename|>
/* { dg-require-effective-target label_values } */

x(){if(&&e-&&b<0)x();b:goto*&&b;e:;}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37207.c<|end_filename|>
void
func_18 ( int t )
{
  unsigned l_889;
  int l_895 = 1;
  for (0; 1; ++l_889)
    {
      int t1 = 0;
      if (func_81 (1))
        {
          int rhs = l_895;
          if (rhs == 0)
            rhs = 1;
          if (1 & (t % rhs))
            t1 = 1;
        }
      func_98 (t1);
      l_895 = 0;
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040610-1.c<|end_filename|>
int foo (float x)
{
        float i = __builtin_inff ();
        return x != i;
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/strncmp-1.c<|end_filename|>
/* { dg-xfail-if "kernel strncmp does not perform unsigned comparisons" { vxworks_kernel } "*" "" } */
/* Copyright (C) 2002  Free Software Foundation.

   Test strncmp with various combinations of pointer alignments and lengths to
   make sure any optimizations in the library are correct.

   Written by <NAME>, March 9, 2002.  */

#include <string.h>
#include <stddef.h>

#ifndef MAX_OFFSET
#define MAX_OFFSET (sizeof (long long))
#endif

#ifndef MAX_TEST
#define MAX_TEST (8 * sizeof (long long))
#endif

#ifndef MAX_EXTRA
#define MAX_EXTRA (sizeof (long long))
#endif

#define MAX_LENGTH (MAX_OFFSET + MAX_TEST + MAX_EXTRA)

static union {
  unsigned char buf[MAX_LENGTH];
  long long align_int;
  long double align_fp;
} u1, u2;

void
test (const unsigned char *s1, const unsigned char *s2, size_t len, int expected)
{
  int value = strncmp ((char *) s1, (char *) s2, len);

  if (expected < 0 && value >= 0)
    abort ();
  else if (expected == 0 && value != 0)
    abort ();
  else if (expected > 0 && value <= 0)
    abort ();
}

main ()
{
  size_t off1, off2, len, i;
  unsigned char *buf1, *buf2;
  unsigned char *mod1, *mod2;
  unsigned char *p1, *p2;

  for (off1 = 0; off1 < MAX_OFFSET; off1++)
    for (off2 = 0; off2 < MAX_OFFSET; off2++)
      for (len = 0; len < MAX_TEST; len++)
	{
	  p1 = u1.buf;
	  for (i = 0; i < off1; i++)
	    *p1++ = '\0';

	  buf1 = p1;
	  for (i = 0; i < len; i++)
	    *p1++ = 'a';

	  mod1 = p1;
	  for (i = 0; i < MAX_EXTRA; i++)
	    *p1++ = 'x';

	  p2 = u2.buf;
	  for (i = 0; i < off2; i++)
	    *p2++ = '\0';

	  buf2 = p2;
	  for (i = 0; i < len; i++)
	    *p2++ = 'a';

	  mod2 = p2;
	  for (i = 0; i < MAX_EXTRA; i++)
	    *p2++ = 'x';

	  mod1[0] = '\0';
	  mod2[0] = '\0';
	  test (buf1, buf2, MAX_LENGTH, 0);
	  test (buf1, buf2, len, 0);

	  mod1[0] = 'a';
	  mod1[1] = '\0';
	  mod2[0] = '\0';
	  test (buf1, buf2, MAX_LENGTH, +1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = '\0';
	  mod2[0] = 'a';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, -1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = 'b';
	  mod1[1] = '\0';
	  mod2[0] = 'c';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, -1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = 'c';
	  mod1[1] = '\0';
	  mod2[0] = 'b';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, +1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = 'b';
	  mod1[1] = '\0';
	  mod2[0] = (unsigned char)'\251';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, -1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = (unsigned char)'\251';
	  mod1[1] = '\0';
	  mod2[0] = 'b';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, +1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = (unsigned char)'\251';
	  mod1[1] = '\0';
	  mod2[0] = (unsigned char)'\252';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, -1);
	  test (buf1, buf2, len, 0);

	  mod1[0] = (unsigned char)'\252';
	  mod1[1] = '\0';
	  mod2[0] = (unsigned char)'\251';
	  mod2[1] = '\0';
	  test (buf1, buf2, MAX_LENGTH, +1);
	  test (buf1, buf2, len, 0);
	}

  exit (0);
}


<|start_filename|>v2/testdata/bug/7.c<|end_filename|>
#include <assert.h>

int i;
int *pi = &i;
int **ppi = &pi;

int main() {
	assert(pi == &i);
	assert(ppi == &pi);
	assert((void*)pi != (void*)ppi);
	assert(&pi);
	assert(&ppi);

	int *spi = pi;
	int **sppi = ppi;

	assert(!i);
	assert(!*pi);
	assert(!**ppi);

	i = 42;
	assert(i == 42);
	assert(*pi == 42);
	assert(**ppi == 42);

	*pi = 24;
	assert(i == 24);
	assert(*pi == 24);
	assert(**ppi == 24);
	assert(pi == spi);
	assert(ppi == sppi);

	**ppi = 314;
	assert(i == 314);
	assert(*pi == 314);
	assert(**ppi == 314);
	assert(pi == spi);
	assert(ppi == sppi);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42347.c<|end_filename|>
/* PR bootstrap/42347 */

long
foo (long x, long y)
{
  x = x & y;
  switch (y)
    {
    case 63L: x >>= 0; break;
    case 4032L: x >>= 6; break;
    case 258048L: x >>= 12; break;
    case 16515072L: x >>= 18; break;
    default: __builtin_unreachable ();
    }
  return x;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070529-2.c<|end_filename|>
void xfs_dir2_grow_inode(void)
{
 int map;
 int *mapp;
 int nmap;
 mapp = &map;
 if (nmap == 0 )
  mapp = ((void *)0);
 if (mapp != &map)
  kmem_free(mapp);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040908-1.c<|end_filename|>
/* PR 17186 */

double foo()
{
    int i;
    double d;

    if (i)
        bar();
    else
        if (d) return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr60268.c<|end_filename|>
/* { dg-options "-flive-range-shrinkage" } */
void f()
{
  int i = 0;
  void *p = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37305.c<|end_filename|>
typedef int int32_t;
typedef unsigned int uint32_t;
static inline int
safe_add_s_s (int si1, int si2)
{
  if ((si1 > 0) && (si2 > 0) && (si1 > (si2)) || (si1 < 0) && (si2 < 0)
      && (si1 < ((-__INT_MAX__ - 1) - si2)))
    return si1;
}

uint32_t g_8;
uint32_t
func_24 (int32_t p_25)
{
  uint32_t l_30 = -1L;
  if ((safe_mod_u_u (1, 1)) | (safe_add_s_s (g_8, l_30)))
    return 1;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40582.c<|end_filename|>
struct A
{
  void* q;
  short i;
};

union U
{
  char* p;
  struct A a;
};

struct A foo(union U u)
{
  struct A a = { 0, 0 };
  a = u.a;
  return a;
}


<|start_filename|>testdata/anon.c<|end_filename|>
// Invalid anonymous field should raise an error but not panic.

struct {
	_Bool;
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20021120-1.c<|end_filename|>
/* PR c/8518 */
/* Contributed by <NAME>. */

/* Verify that GCC doesn't get confused by the
   redefinition of an extern inline function. */

/* { dg-options "-fgnu89-inline" } */

extern int inline foo () { return 0; }
extern int inline bar () { return 0; }
static int inline bar () { return foo(); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27907.c<|end_filename|>
typedef double fann_type;
typedef struct { } _G_fpos64_t;
struct fann_neuron
{
    fann_type value;
}
__attribute__ ((packed));
struct fann_layer
{
    struct fann_neuron *last_neuron;
};
struct fann
{
    struct fann_layer *first_layer;
};
fann_run (struct fann *ann, fann_type * input)
{
  struct fann_layer *layer_it, *layer_it2, *last_layer;
  for (layer_it = ann->first_layer + 1; layer_it != last_layer; layer_it++)
    {
      ((layer_it - 1)->last_neuron - 1)->value = 1;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27341-1.c<|end_filename|>
extern double R_NaReal;
void z_atan2 (double _Complex * r, double _Complex * ccs)
{
    if (*ccs == 0)
        __imag__ *r = R_NaReal;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48734.c<|end_filename|>
/* PR tree-optimization/48734 */

unsigned int
foo (int x, unsigned int y, unsigned int z)
{
  z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
  z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
  z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
  z &= (x == -__INT_MAX__ - 1 ? x : -x) > y;
  return z;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-pointer.c<|end_filename|>
#define PTR1 * * * * * * * * * *
#define PTR2 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1
#define PTR3 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2
#define PTR4 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3
#define PTR5 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4
#define PTR6 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5

int PTR4 q3_var = 0;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030904-1.c<|end_filename|>
struct A
{
  long a1;
  double *a2;
};

struct B
{
  void *b1;
  double b2, b3;
  struct
  {
    int d1;
    double d2;
  } b4;
};

struct C
{
  struct A *c1;
  void *c2;
};

long fn1 (struct A *, double);
void fn2 (void *, const char *);
double fn3 (double);
double fn4 (double);
int fn5 (void *, double, double);

int
foo (struct B *x)
{
  struct C *e = x->b1;
  struct A *f = e->c1;
  long g, h, i;
  double *j, k;
  g = fn1 (f, 0.5 * (x->b2 + x->b3)), h = g + 1, i = f->a1;
  j = f->a2, k = x->b4.d2;
  fn2 (x, "something");
  if (g <= 0)
    {
      double l = j[2] - j[1];
      if (l > 0.0 && l <= 0.02)
        k = (x->b4.d1 == 1
             ? ((1.0 / l) < 25 ? 25 : (1.0 / l))
             : fn3 ((1.0 / l) < 25 ? 25 : (1.0 / l)));
    }
  else
    {
      double m = j[h] - j[g], n = 0.0, l = 0.0;
      if (g > 1)
        n = j[g] - j[g - 1];
      if (h < i)
        l = j[h + 1] - j[h];
      if (n > 0.02)
        n = 0;
      if (m > 0.02)
        m = 0;
      if (l > 0.02)
        l = 0;
      if (m < n)
        {
          double o = m;
          m = n;
          n = o;
        }
      if (l < n)
        {
          double o = l;
          l = n;
          n = o;
        }
      if (l < m)
        {
          double o = l;
          l = m;
          m = o;
        }
      if (n != 0.0)
        k = (x->b4.d1 == 1
             ? ((1 / m) < 25 ? 25 : (1 / m))
             : fn3 ((1 / m) < 25 ? 25 : (1 / m)));
      else if (m != 0.0)
        k = (x->b4.d1 == 1
             ? ((2 / (m + l)) < 25 ? 25 : (2 / (m + l)))
             : fn3 ((2 / (m + l)) < 25 ? 25 : (2 / (m + l))));
      else if (l != 0.0)
        k = (x->b4.d1 == 1
             ? ((1 / l) < 25 ? 25 : (1 / l))
             : fn3 ((1 / l) < 25 ? 25 : (1 / l)));
    }
  fn5 (e->c2, 0.5 * (x->b2 + x->b3), (x->b4.d1 == 1 ? k : fn4 (k)));
  return 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40252.c<|end_filename|>
typedef unsigned int uint32_t;
static void IP(uint32_t v[2])
{
    v[0] = ((v[0] << 1) | ((v[0] >> 31) & 1L)) & 0xffffffffL;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37955.c<|end_filename|>
typedef struct
{
  enum { NotConnected = 0 } conn_state;
  unsigned int conn_hndl;
} AEP_CONNECTION_ENTRY;

static AEP_CONNECTION_ENTRY aep_app_conn_table[256];

void aep_mod_exp (void)
{
  int count;

  for (count = 0; count < 256; count++)
    {
      aep_app_conn_table[count].conn_state = NotConnected;
      aep_app_conn_table[count].conn_hndl = 0;
    }
}



<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr34456.c<|end_filename|>
/* { dg-skip-if "requires qsort" { freestanding } { "*" } { "" } }  */

#include <stdlib.h>

int __attribute__ ((noinline)) debug (void) { return 1; }
int errors;

struct s { int elt; int (*compare) (int); };

static int
compare (const void *x, const void *y)
{
  const struct s *s1 = x, *s2 = y;
  int (*compare1) (int);
  int elt2;

  compare1 = s1->compare;
  elt2 = s2->elt;
  if (elt2 != 0 && debug () && compare1 (s1->elt) != 0)
    errors++;
  return compare1 (elt2);
}

int bad_compare (int x) { return -x; }
struct s array[2] = { { 1, bad_compare }, { -1, bad_compare } };

int
main (void)
{
  qsort (array, 2, sizeof (struct s), compare);
  return errors == 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41006-2.c<|end_filename|>
typedef int *FARPROC;
static int * __restrict__ acceptex_fn;

int xWSAIoctl(void*);
static void get_fn(FARPROC* fn)
{
  FARPROC func;
  if (!xWSAIoctl( &func))
    *fn = func;
}

void get_fn_pointers()
{
  get_fn((FARPROC*)&acceptex_fn);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/200031109-1.c<|end_filename|>
/* For a short time on the tree-ssa branch this would warn that
   value was not initialized as it was optimizing !(value = (m?1:2))
   to 0 and not setting value before.  */

int t(int m)
{
  int value;
  if (!(value = (m?1:2)))
    value = 0;
  return value;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080114-1.c<|end_filename|>
/* PR rtl-optimization/31944 */
/* Origin: <NAME> <<EMAIL>> */

int type;

void stuck(int res)
{
  if (type == 1) {
    if (res == 0) asm volatile("");
  }
  else if (type == 0) {
    if (res == 0) asm volatile("" : : "i" (0));
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060625-1.c<|end_filename|>
/* PR middle-end/28151 */
/* Testcase by <NAME> <<EMAIL>> */

_Complex float b;

void foo (void)
{
  _Complex float a = __FLT_MAX__;
  b = __FLT_MAX__ + a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41661.c<|end_filename|>
/* PR tree-optimization/41661 */
/* { dg-do compile } */
/* { dg-options "-fno-early-inlining" } */

int g;

void foo (int x)
{
  g = x;
}

void bar (double d)
{
  foo (d == 1);
}

void baz (int a)
{
  bar (1);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20110906-1.c<|end_filename|>
/* PR middle-end/50266 */
/* Testcase by <<EMAIL>> */

struct a {
 unsigned int a;
 unsigned int b;
};

struct a *const p = (struct a *)0x4A004100;

void foo(void)
{
 unsigned int i = 0;
 unsigned int *const x[] = {
  &p->a,
  &p->b,
  0
 };

 (*(volatile unsigned int *)((x[i]))
   = (unsigned int)((unsigned int)((*(volatile unsigned int *)(x[i])))));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46034.c<|end_filename|>
/* PR rtl-optimization/46034 */

void bar (int);

void
foo (int x, int y)
{
  int i;
  for (i = 0; i < x; i++)
    {
      y = __builtin_abs (y);
      bar (y / 2);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43845.c<|end_filename|>
typedef int __attribute__ ((const)) (*x264_pixel_cmp_t)(void);

typedef struct {
    x264_pixel_cmp_t ssd;
} x264_pixel_function_t;

int x264_pixel_ssd_wxh (x264_pixel_function_t *pf, int i_width) {
    int i_ssd = 0, x;
    for (x = 0; x < i_width; x++)
      i_ssd += pf->ssd();
    return i_ssd;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20091215-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */

void bar ();

void
foo (void *x, short y)
{
  bar (x, y + 1);
}

void
bar (x, y)
  void *x;
  char *y;
{
  baz (y);
}


<|start_filename|>v2/testdata/bug/18.c<|end_filename|>
#include <assert.h>

int f1() { return 1; }

int f2() { return 2; }

struct api {
	int(*a)();
	int(*b)();
} api, api2;

struct api *api3, *api4;

int main() {
	void *p = &api2;
	p = &api4;

	api.b = f1;
	assert(api.b() == 1);
	api2.b = f1;
	assert(api2.b() == 1);
	api3 = &api2;
	api3->b = f2;
	assert(api3->b() == 2);
	api4 = &api2;
	api4->b = f2;
	assert(api4->b() == 2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37380.c<|end_filename|>
typedef struct basic_block_def *basic_block;
typedef struct gimple_seq_node_d *gimple_seq_node;
typedef struct gimple_seq_d *gimple_seq;
typedef struct
{
  gimple_seq_node ptr;
  gimple_seq seq;
  basic_block bb;
} gimple_stmt_iterator;
typedef void *gimple;
extern void exit(int);
struct gimple_seq_node_d
{
  gimple stmt;
  struct gimple_seq_node_d *next;
};
struct gimple_seq_d
{
};
static __inline__ gimple_stmt_iterator
gsi_start (gimple_seq seq)
{
  gimple_stmt_iterator i;
  i.seq = seq;
  return i;
}
static __inline__ unsigned char
gsi_end_p (gimple_stmt_iterator i)
{
  return i.ptr == ((void *)0);
}
static __inline__ void
gsi_next (gimple_stmt_iterator *i)
{
  i->ptr = i->ptr->next;
}
static __inline__ gimple
gsi_stmt (gimple_stmt_iterator i)
{
  return i.ptr->stmt;
}
void
c_warn_unused_result (gimple_seq seq)
{
  gimple_stmt_iterator i;
  for (i = gsi_start (seq); !gsi_end_p (i); gsi_next (&i))
    {
      gimple g = gsi_stmt (i);
      if (!g) exit(0);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20011029-1.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */

void foo (void *) __attribute__ ((noreturn));

void
bar (void *x)
{
  if (__builtin_setjmp (x))
    return;
  foo (x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49474.c<|end_filename|>
typedef struct gfc_formal_arglist
{
  int next;
}
gfc_actual_arglist;
update_arglist_pass (gfc_actual_arglist* lst, int po, unsigned argpos,
       const char *name)
{
  ((void)(__builtin_expect(!(argpos > 0), 0) ? __builtin_unreachable(), 0 : 0));
  if (argpos == 1)
      return 0;
  if (lst)
    lst->next = update_arglist_pass (lst->next, po, argpos - 1, name);
  else
    lst = update_arglist_pass (((void *)0), po, argpos - 1, name);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr23944.c<|end_filename|>
float f(float src[][4])
{
 return *(src[3]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031102-1.c<|end_filename|>
/* PR optimization/10817.
   Check that the following code doesn't cause any problems
   for GCC's if-conversion passes.  */

int foo(int t)
{
  int result = 0;
  if (t != 0)
    result = t;
  return result;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49206.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
struct S1
{
  short f0;
};
extern volatile struct S1 g_5;
extern int g_120, i;
extern short g_339;

int
func_72 (int x, int y, struct S1 z)
{
  for (z.f0 = -3; z.f0 > 16; z.f0 += 1)
    foo ();
  return g_120;
}

int
main ()
{
  while (g_339 % 0x200003)
    continue;
  if (i)
    func_72 (0, 0, g_5);
  foo (&g_339);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/981223-1.c<|end_filename|>
/* The problem on IA-64 is that the assembler emits

   Warning: Additional NOP may be necessary to workaround Itanium
   processor A/B step errata  */

/* { dg-prune-output "Assembler messages" } */
/* { dg-prune-output "Additional NOP may be necessary" } */


__complex__ float
func (__complex__ float x)
{
    if (__real__ x == 0.0)
	return 1.0;
    else
	return 0.0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43255.c<|end_filename|>
int safe (int);

static unsigned foo (unsigned ui1, unsigned ui2)
{
  return ui1 + ui2;
}

int g_22;
int *volatile g_23 = &g_22;
int **g_282[8][10][1];
int *g_330 = &g_22;
volatile unsigned g_348;
int g_397;

void int32func (const unsigned char p_10)
{
  if (foo
      (~
       (p_10 |
	(*g_282[(unsigned long) g_397 % 8][(unsigned) g_22 % 10][g_348 % 1]) ==
	(*g_282[(unsigned long) g_397 % 8][(unsigned) g_22 % 10][g_348 % 1])),
       1))
    {
    }
  else if (*g_330 >=
	   safe (*g_23 ^
		 (**g_282[(unsigned long) g_397 % 8][(unsigned) g_22 % 10]
		  [g_348 % 1])) & **g_282[8][10][1], 1)
    {
    }
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20021015-2.c<|end_filename|>
/* PR target/8232.  */
/* { dg-require-effective-target untyped_assembly } */

int f (char *p, char *q, int i)
{
  return bcmp (p, q, i);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/strstr.c<|end_filename|>
/* Copyright (C) 2000  Free Software Foundation.

   Ensure all expected transformations of builtin strstr occur and
   perform correctly.

   Written by <NAME>, 11/6/2000.  */

extern void abort(void);
extern char *strstr (const char *, const char *);

void
main_test (void)
{
  const char *const foo = "hello world";
  
  if (strstr (foo, "") != foo)
    abort();
  if (strstr (foo + 4, "") != foo + 4)
    abort();
  if (strstr (foo, "h") != foo)
    abort();
  if (strstr (foo, "w") != foo + 6)
    abort();
  if (strstr (foo + 6, "o") != foo + 7)
    abort();
  if (strstr (foo + 1, "world") != foo + 6)
    abort();

  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
  if (__builtin_strstr (foo + 1, "world") != foo + 6)
    abort();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43367.c<|end_filename|>
unsigned char g_17;

const unsigned char func_39 (unsigned char p_40, unsigned char * p_41)
{
  return 0;
}

void int327 (const unsigned char p_48, unsigned char p_49)
{
  unsigned l_52;
  unsigned char l_58[2];
  int i, j;
  if (func_39 (l_52, &p_49), p_48) {
      unsigned char *l_60;
      unsigned char *l = &l_58[1];
      for (j; j; j++) {
lbl_59:
	  break;
      }
      for (l = 0; 1; l += 1) {
	  for (p_49 = 1; p_49; p_49 += 0) {
	      unsigned char **l_61[1][6];
	      for (j = 0; j < 1; j++)
		l_61[i][j] = &l_60;
	      goto lbl_59;
	  }
      }
  }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031023-2.c<|end_filename|>
/* Declaration of the frame size doesn't work on ptx.  */
/* { dg-require-effective-target untyped_assembly } */
#define ASIZE 0x1000000000UL
#include "20031023-1.c"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47157.c<|end_filename|>
/* PR rtl-optimization/47157 */

struct S { unsigned a; unsigned b; } c = { 1, 0 };
unsigned long int e;
void bar (int);
int baz (void);

static int
foo (int x, short y)
{
  return ((x ^ y) & ((x ^ (x ^ y) & ~__INT_MAX__) - y ^ y)) < 0 ? x : x - y;
}

void
test (void)
{
  bar (foo (baz () != (c.a | c.b), -1L));
  for (e = 0; e; e = 1)
    ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071118-1.c<|end_filename|>
/* PR rtl-optimization/34132 */
/* Testcase by <NAME> <<EMAIL>> */

static char *m = "%s%u.msg";
extern void bar (int, const char *);
void foo (short x, int y, int z)
{
  if (x == 0)
    {
      bar (y, m);
      z = 1;
    }
  else if (x == 1)
    z = 0;
  bar (y, m);
  bar (z, "%d");
}


<|start_filename|>v2/cpp.go<|end_filename|>
// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
// [1]: https://www.spinellis.gr/blog/20060626/cpp.algo.pdf

package cc

import (
	"bytes"
	"encoding/binary"
	"fmt"
	"go/token"
	"io"
	"math"
	"os"
	"path/filepath"
	"strconv"
	"strings"

	"github.com/cznic/golex/lex"
	"github.com/cznic/ir"
	"github.com/cznic/mathutil"
	"github.com/cznic/xc"
)

const (
	maxIncludeLevel = 200 // gcc, std is at least 15.
)

var (
	_ tokenReader = (*cppReader)(nil)
	_ tokenReader = (*tokenBuffer)(nil)
	_ tokenReader = (*tokenPipe)(nil)
	_ tokenWriter = (*tokenBuffer)(nil)
	_ tokenWriter = (*tokenPipe)(nil)
)

type cppToken struct {
	xc.Token
	hs map[int]struct{}
}

func (t *cppToken) has(nm int) bool { _, ok := t.hs[nm]; return ok }

func (t *cppToken) cloneAdd(nm int) map[int]struct{} {
	nhs := map[int]struct{}{nm: {}}
	for k, v := range t.hs {
		nhs[k] = v
	}
	return nhs
}

func (t *cppToken) hsAdd(hs map[int]struct{}) {
	if len(hs) == 0 {
		return
	}

	if len(t.hs) == 0 {
		t.hs = map[int]struct{}{}
	}
	for k := range hs {
		t.hs[k] = struct{}{}
	}
}

type tokenWriter interface {
	write(...cppToken)
}

type tokenReader interface {
	read() cppToken
	unget(cppToken)
	ungets(...cppToken)
}

type tokenPipe struct {
	b  []byte
	ch chan cppToken
	s  []cppToken

	emitWhiteSpace bool
}

func newTokenPipe(n int) *tokenPipe { return &tokenPipe{ch: make(chan cppToken, n)} }

func (*tokenPipe) unget(cppToken)     { panic("internal error") }
func (*tokenPipe) ungets(...cppToken) { panic("internal error") }

func (p *tokenPipe) close() {
	if len(p.s) != 0 {
		p.flush()
	}
	close(p.ch)
}

func (p *tokenPipe) flush() {
	p.b = p.b[:0]
	p.b = append(p.b, '"')
	for _, t := range p.s {
		s := dict.S(t.Val)
		p.b = append(p.b, s[1:len(s)-1]...)
	}
	p.b = append(p.b, '"')
	p.s[0].Val = dict.ID(p.b)
	p.ch <- p.s[0]
	p.s = p.s[:0]
}

func (p *tokenPipe) read() cppToken {
	t, ok := <-p.ch
	if !ok {
		t.Rune = ccEOF
	}
	return t
}

func (p *tokenPipe) write(toks ...cppToken) {
	for _, t := range toks {
		switch t.Rune {
		case '\n', ' ':
			if p.emitWhiteSpace {
				p.ch <- t
			}
		case STRINGLITERAL, LONGSTRINGLITERAL:
			p.s = append(p.s, t)
		default:
			if len(p.s) != 0 {
				p.flush()
			}
			p.ch <- t
		}
	}
}

type tokenBuffer struct {
	toks0 []cppToken
	toks  []cppToken
	ungetBuffer

	last rune
}

func (b *tokenBuffer) write(t ...cppToken) {
	b.toks = append(b.toks, t...)
	if b.toks0 == nil || &b.toks0[0] != &b.toks[0] {
		b.toks0 = b.toks
	}
}

func (b *tokenBuffer) read() (t cppToken) {
	if len(b.ungetBuffer) != 0 {
		return b.ungetBuffer.read()
	}

	if len(b.toks) == 0 {
		t.Rune = ccEOF
		return
	}

	t = b.toks[0]
	b.toks = b.toks[1:]
	if len(b.toks) == 0 {
		b.toks = b.toks0[:0]
	}
	if t.Rune == '#' && (b.last == '\n' || b.last == 0) {
		t.Rune = DIRECTIVE
	}
	b.last = t.Rune
	return t
}

type cppReader struct {
	decBuf []byte
	decPos token.Pos
	tu     [][]uint32
	ungetBuffer

	last rune
}

func (c *cppReader) unget(t cppToken) { c.ungetBuffer = append(c.ungetBuffer, t) }

func (c *cppReader) read() (t cppToken) {
	if len(c.ungetBuffer) != 0 {
		return c.ungetBuffer.read()
	}

more:
	if len(c.decBuf) == 0 {
		if len(c.tu) == 0 {
			t.Rune = ccEOF
			return t
		}

		if len(c.tu[0]) == 0 {
			c.tu = c.tu[1:]
			goto more
		}

		c.decBuf = dict.S(int(c.tu[0][0]))
		c.tu[0] = c.tu[0][1:]
		c.decPos = 0
	}

	c.decBuf, c.decPos, t.Token = decodeToken(c.decBuf, c.decPos)
	if t.Rune == '#' && (c.last == '\n' || c.last == 0) {
		t.Rune = DIRECTIVE
	}
	c.last = t.Rune
	return t
}

type conds []cond

func (c conds) on() bool          { return condOn[c.tos()] }
func (c conds) pop() conds        { return c[:len(c)-1] }
func (c conds) push(n cond) conds { return append(c, n) }
func (c conds) tos() cond         { return c[len(c)-1] }

// Macro represents a preprocessor Macro.
type Macro struct {
	Args            []int      // Numeric IDs of argument identifiers.
	DefTok          xc.Token   // Macro name definition token.
	ReplacementToks []xc.Token // The tokens that replace the macro. R/O

	IsFnLike   bool // Whether the macro is function like.
	IsVariadic bool // Whether the macro is variadic.
	ident      bool
}

func newMacro(def xc.Token, repl []xc.Token) *Macro {
	return &Macro{DefTok: def, ReplacementToks: append([]xc.Token(nil), repl...)}
}

// Eval attempts to evaluate m, which must be a simple macro, like `#define foo numeric-literal`.
func (m *Macro) Eval(model Model, macros map[int]*Macro) (op Operand, err error) {
	returned := false

	defer func() {
		e := recover()
		if !returned && err == nil {
			err = fmt.Errorf("PANIC: %v\n%s", e, debugStack())
		}
	}()

	if m.IsFnLike {
		return op, fmt.Errorf("cannot evaluate function-like macro")
	}

	ctx, err := newContext(&Tweaks{})
	if err != nil {
		return op, err
	}

	ctx.model = model
	c := newCPP(ctx)
	c.macros = macros
	if op, _ = c.constExpr(cppToks(m.ReplacementToks), false); op.Type == nil {
		return op, fmt.Errorf("cannot evaluate macro")
	}

	returned = true
	return op, nil
}

func (m *Macro) param(ap [][]cppToken, nm int, out *[]cppToken) bool {
	*out = nil
	if nm == idVaArgs {
		if !m.IsVariadic {
			return false
		}

		if i := len(m.Args); i < len(ap) {
			o := *out
			for i, v := range ap[i:] {
				if i != 0 {
					switch lo := len(o); lo {
					case 0:
						var t cppToken
						t.Rune = ','
						t.Val = 0
						o = append(o, t)
					default:
						t := o[len(o)-1]
						t.Rune = ','
						t.Val = 0
						o = append(o, t)
						t.Rune = ' '
						o = append(o, t)
					}
				}
				o = append(o, v...)
			}
			*out = o
		}
		return true
	}

	if len(m.Args) != 0 && nm == m.Args[len(m.Args)-1] && m.IsVariadic && !m.ident {
		if i := len(m.Args) - 1; i < len(ap) {
			o := *out
			for i, v := range ap[i:] {
				if i != 0 {
					switch lo := len(o); lo {
					case 0:
						var t cppToken
						t.Rune = ','
						t.Val = 0
						o = append(o, t)
					default:
						t := o[len(o)-1]
						t.Rune = ','
						t.Val = 0
						o = append(o, t)
						t.Rune = ' '
						o = append(o, t)
					}
				}
				o = append(o, v...)
			}
			*out = o
		}
		return true
	}

	for i, v := range m.Args {
		if v == nm {
			*out = ap[i]
			return true
		}
	}
	return false
}

type nullReader struct{}

func (nullReader) Read([]byte) (int, error) { return 0, io.EOF }

type cpp struct {
	*context
	includeLevel int
	lx           *lexer
	macroStack   map[int][]*Macro
	macros       map[int]*Macro // name ID: macro
	toks         []cppToken
}

func newCPP(ctx *context) *cpp {
	lx, err := newLexer(ctx, "", 0, nullReader{})
	if err != nil {
		panic(err)
	}

	lx.context = ctx
	r := &cpp{
		context:    ctx,
		lx:         lx,
		macroStack: map[int][]*Macro{},
		macros:     map[int]*Macro{},
	}
	return r
}

func (c *cpp) parse(src ...Source) (tokenReader, error) {
	var (
		encBuf  []byte
		encBuf1 [30]byte // Rune, position, optional value ID.
		tokBuf  []cppToken
		tu      [][]uint32
	)
	for _, v := range src {
		if pf := v.Cached(); pf != nil {
			tu = append(tu, pf)
			continue
		}

		sz, err := v.Size()
		if err != nil {
			return nil, err
		}

		if sz > mathutil.MaxInt {
			return nil, fmt.Errorf("%v: file too big: %v", v.Name(), sz)
		}

		r, err := v.ReadCloser()
		if err != nil {
			return nil, err
		}

		lx, err := newLexer(c.context, v.Name(), int(sz), r)
		if err != nil {
			return nil, err
		}

		if err := func() (err error) {
			returned := false

			defer func() {
				e := recover()
				if !returned && err == nil {
					err = fmt.Errorf("PANIC: %v\n%s", e, debugStack())
					c.err(nopos, "%v", err)
				}
				if e := r.Close(); e != nil && err == nil {
					err = e
				}
			}()

			var pf []uint32
			var t cppToken
			var toks []cppToken
			for {
				ch := lx.cppScan()
				if ch.Rune == ccEOF {
					break
				}

				tokBuf = tokBuf[:0]
				for {
					t.Char = ch
					t.Val = 0
					if ch.Rune == '\n' {
						toks = append(cppTrimSpace(tokBuf), t)
						break
					}

					if _, ok := tokHasVal[ch.Rune]; ok {
						t.Val = dict.ID(lx.TokenBytes(nil))
					}
					tokBuf = append(tokBuf, t)

					if ch = lx.cppScan(); ch.Rune == ccEOF {
						if !c.tweaks.InjectFinalNL {
							c.errPos(lx.last.Pos(), "file is missing final newline")
						}
						ch.Rune = '\n'
					}
				}

				var encPos token.Pos
				encBuf = encBuf[:0]
				for _, t := range toks {
					n := binary.PutUvarint(encBuf1[:], uint64(t.Rune))
					pos := t.Pos()
					n += binary.PutUvarint(encBuf1[n:], uint64(pos-encPos))
					encPos = pos
					if t.Val != 0 {
						n += binary.PutUvarint(encBuf1[n:], uint64(t.Val))
					}
					encBuf = append(encBuf, encBuf1[:n]...)
				}
				id := dict.ID(encBuf)
				if int64(id) > math.MaxUint32 {
					panic("internal error 4")
				}

				pf = append(pf, uint32(id))
			}
			v.Cache(pf)
			tu = append(tu, pf)
			returned = true
			return nil
		}(); err != nil {
			return nil, err
		}
	}
	return &cppReader{tu: tu}, nil
}
func (c *cpp) eval(r tokenReader, w tokenWriter) (err error) {
	c.macros[idFile] = &Macro{ReplacementToks: []xc.Token{{Char: lex.NewChar(0, STRINGLITERAL)}}}
	c.macros[idLineMacro] = &Macro{ReplacementToks: []xc.Token{{Char: lex.NewChar(0, INTCONST)}}}
	if cs := c.expand(r, w, conds(nil).push(condZero), 0, false); len(cs) != 1 || cs.tos() != condZero {
		return fmt.Errorf("unexpected top of condition stack value: %v", cs)
	}

	return nil
}

// [1]pg 1.
//
// expand(TS ) /* recur, substitute, pushback, rescan */
// {
// 	if TS is {} then
//		// ---------------------------------------------------------- A
// 		return {};
//
// 	else if TS is T^HS • TS’ and T is in HS then
//		//----------------------------------------------------------- B
// 		return T^HS • expand(TS’);
//
// 	else if TS is T^HS • TS’ and T is a "()-less macro" then
//		// ---------------------------------------------------------- C
// 		return expand(subst(ts(T), {}, {}, HS \cup {T}, {}) • TS’ );
//
// 	else if TS is T^HS •(•TS’ and T is a "()’d macro" then
//		// ---------------------------------------------------------- D
// 		check TS’ is actuals • )^HS’ • TS’’ and actuals are "correct for T"
// 		return expand(subst(ts(T), fp(T), actuals,(HS \cap HS’) \cup {T }, {}) • TS’’);
//
//	// ------------------------------------------------------------------ E
// 	note TS must be T^HS • TS’
// 	return T^HS • expand(TS’);
// }
func (c *cpp) expand(r tokenReader, w tokenWriter, cs conds, lvl int, expandDefined bool) conds {
	for {
		t := r.read()
		switch t.Rune {
		// First, if TS is the empty set, the result is the
		// empty set.
		case ccEOF:
			// -------------------------------------------------- A
			// 		return {};
			return cs
		case DIRECTIVE:
			cs = c.directive(r, w, cs)
			t.Rune = '\n'
			t.Val = 0
			w.write(t)
		case IDENTIFIER:
			if !cs.on() {
				break
			}

			nm := t.Val
			if nm == idDefined && expandDefined {
			more:
				switch t = r.read(); t.Rune {
				case ccEOF:
					panic("TODO")
				case IDENTIFIER:
					nm := t.Val
					t.Rune = INTCONST
					t.Val = idZero
					if _, ok := c.macros[nm]; ok {
						t.Val = idOne
					}
					w.write(t)
					continue
				case ' ':
					goto more
				case '(': // defined(name)
					var u cppToken
					switch t = r.read(); t.Rune {
					case ccEOF:
						panic("TODO")
					case IDENTIFIER:
						nm := t.Val
						u = t
						u.Rune = INTCONST
						u.Val = idZero
						if _, ok := c.macros[nm]; ok {
							u.Val = idOne
						}
					more2:
						switch t = r.read(); t.Rune {
						case ccEOF:
							panic("TODO")
						case ' ':
							goto more2
						case ')':
							// ok done
							w.write(u)
							continue
						default:
							panic(t.String())
						}
					default:
						panic(t.String())
					}
				default:
					panic(t.String())
				}
			}

			// Otherwise, if the token sequence begins with a token
			// whose hide set contains that token, then the result
			// is the token sequence beginning with that token
			// (including its hide set) followed by the result of
			// expand on the rest of the token sequence.
			if t.has(nm) {
				// ------------------------------------------ B
				// 		return T^HS • expand(TS’);
				w.write(t)
				continue
			}

			m := c.macros[nm]
			if m != nil && !m.IsFnLike {
				// Otherwise, if the token sequence begins with
				// an object-like macro, the result is the
				// expansion of the rest of the token sequence
				// beginning with the sequence returned by
				// subst invoked with the replacement token
				// sequence for the macro, two empty sets, the
				// union of the macro’s hide set and the macro
				// itself, and an empty set.
				switch nm {
				case idFile:
					m.ReplacementToks[0].Val = dict.SID(fmt.Sprintf("%q", c.position(t).Filename))
				case idLineMacro:
					m.ReplacementToks[0].Val = dict.SID(fmt.Sprint(c.position(t).Line))
				}
				// ------------------------------------------ C
				// 		return expand(subst(ts(T), {}, {}, HS \cup {T}, {}) • TS’ );
				toks := c.subst(m, nil, t.cloneAdd(nm), expandDefined)
				for i, v := range toks {
					toks[i].Char = lex.NewChar(t.Pos(), v.Rune)
				}
				r.ungets(toks...)
				continue
			}

			if m != nil && m.IsFnLike {
				// ------------------------------------------ D
				// 		check TS’ is actuals • )^HS’ • TS’’ and actuals are "correct for T"
				// 		return expand(subst(ts(T), fp(T), actuals,(HS \cap HS’) \cup {T }, {}) • TS’’);
				hs := t.hs
			again:
				switch t2 := r.read(); t2.Rune {
				case '\n', ' ':
					goto again
				case '(':
					// ok
				case ccEOF:
					w.write(t)
					continue
				default:
					w.write(t)
					w.write(t2)
					continue
				}

				ap, hs2 := c.actuals(m, r)
				switch {
				case len(hs2) == 0:
					hs2 = map[int]struct{}{nm: {}}
				default:
					nhs := map[int]struct{}{}
					for k := range hs {
						if _, ok := hs2[k]; ok {
							nhs[k] = struct{}{}
						}
					}
					nhs[nm] = struct{}{}
					hs2 = nhs
				}
				toks := c.subst(m, ap, hs2, expandDefined)
				for i, v := range toks {
					toks[i].Char = lex.NewChar(t.Pos(), v.Rune)
				}
				r.ungets(toks...)
				continue
			}

			w.write(t)
		default:
			// -------------------------------------------------- E
			if !cs.on() {
				break
			}

			w.write(t)
		}
	}
}

func (c *cpp) pragmaActuals(nd Node, line []cppToken) (out []cppToken) {
	first := true
	for {
		if len(line) == 0 {
			c.err(nd, "unexpected EOF")
			return nil
		}

		t := line[0]
		line = line[1:]
		switch t.Rune {
		case '(':
			if !first {
				panic(fmt.Errorf("%v", t))
			}

			first = false
		case STRINGLITERAL:
			out = append(out, t)
		case ')':
			return out
		default:
			panic(fmt.Errorf("%v: %v (%v)", c.position(t), t, yySymName(int(t.Rune))))
		}
	}
}

func (c *cpp) actuals(m *Macro, r tokenReader) (out [][]cppToken, hs map[int]struct{}) {
	var lvl, n int
	for {
		t := r.read()
		if t.Rune < 0 {
			c.err(t, "unexpected EOF")
			return nil, nil
		}

		switch t.Rune {
		case ',':
			if lvl == 0 {
				n++
				continue
			}
		case ')':
			if lvl == 0 {
				for i, v := range out {
					out[i] = cppTrimSpace(v)
				}
				for len(out) < len(m.Args) {
					out = append(out, nil)
				}
				return out, t.hs
			}

			lvl--
		case '(':
			lvl++
		}

		for len(out) <= n {
			out = append(out, []cppToken{})
		}
		if t.Rune == '\n' {
			t.Rune = ' '
		}
		out[n] = append(out[n], t)
	}
}

func (c *cpp) expands(toks []cppToken, expandDefined bool) (out []cppToken) {
	var r, w tokenBuffer
	r.toks = toks
	c.expand(&r, &w, conds(nil).push(condZero), 1, expandDefined)
	return w.toks
}

// [1]pg 2.
//
// subst(IS, FP, AP, HS, OS) /* substitute args, handle stringize and paste */
// {
// 	if IS is {} then
//		// ---------------------------------------------------------- A
// 		return hsadd(HS, OS);
//
// 	else if IS is # • T • IS’ and T is FP[i] then
//		// ---------------------------------------------------------- B
// 		return subst(IS’, FP, AP, HS, OS • stringize(select(i, AP)));
//
// 	else if IS is ## • T • IS’ and T is FP[i] then
//	{
//		// ---------------------------------------------------------- C
// 		if select(i, AP) is {} then /* only if actuals can be empty */
//			// -------------------------------------------------- D
// 			return subst(IS’, FP, AP, HS, OS);
// 		else
//			// -------------------------------------------------- E
// 			return subst(IS’, FP, AP, HS, glue(OS, select(i, AP)));
// 	}
//
// 	else if IS is ## • T^HS’ • IS’ then
//		// ---------------------------------------------------------- F
// 		return subst(IS’, FP, AP, HS, glue(OS, T^HS’));
//
// 	else if IS is T • ##^HS’ • IS’ and T is FP[i] then
//	{
//		// ---------------------------------------------------------- G
// 		if select(i, AP) is {} then /* only if actuals can be empty */
//		{
//			// -------------------------------------------------- H
// 			if IS’ is T’ • IS’’ and T’ is FP[j] then
//				// ------------------------------------------ I
// 				return subst(IS’’, FP, AP, HS, OS • select(j, AP));
// 			else
//				// ------------------------------------------ J
// 				return subst(IS’, FP, AP, HS, OS);
// 		}
//		else
//			// -------------------------------------------------- K
// 			return subst(##^HS’ • IS’, FP, AP, HS, OS • select(i, AP));
//
//	}
//
// 	else if IS is T • IS’ and T is FP[i] then
//		// ---------------------------------------------------------- L
// 		return subst(IS’, FP, AP, HS, OS • expand(select(i, AP)));
//
//	// ------------------------------------------------------------------ M
// 	note IS must be T^HS’ • IS’
// 	return subst(IS’, FP, AP, HS, OS • T^HS’);
// }
//
// A quick overview of subst is that it walks through the input sequence, IS,
// building up an output sequence, OS, by handling each token from left to
// right. (The order that this operation takes is left to the implementation
// also, walking from left to right is more natural since the rest of the
// algorithm is constrained to this ordering.) Stringizing is easy, pasting
// requires trickier handling because the operation has a bunch of
// combinations. After the entire input sequence is finished, the updated hide
// set is applied to the output sequence, and that is the result of subst.
func (c *cpp) subst(m *Macro, ap [][]cppToken, hs map[int]struct{}, expandDefined bool) (out []cppToken) {
	// dbg("%s %v %v", m.def.S(), m.variadic, ap)
	repl := cppToks(m.ReplacementToks)
	var arg []cppToken
	for {
		if len(repl) == 0 {
			// -------------------------------------------------- A
			// 		return hsadd(HS, OS);
			out := cppTrimSpace(out)
			for i := range out {
				out[i].hsAdd(hs)
			}
			return out
		}

		if repl[0].Rune == '#' && len(repl) > 1 && repl[1].Rune == IDENTIFIER && m.param(ap, repl[1].Val, &arg) {
			// -------------------------------------------------- B
			// 		return subst(IS’, FP, AP, HS, OS • stringize(select(i, AP)));
			out = append(out, c.stringize(arg))
			repl = repl[2:]
			continue
		}

		if repl[0].Rune == '#' && len(repl) > 2 && repl[1].Rune == ' ' && repl[2].Rune == IDENTIFIER && m.param(ap, repl[2].Val, &arg) {
			// -------------------------------------------------- B
			// 		return subst(IS’, FP, AP, HS, OS • stringize(select(i, AP)));
			out = append(out, c.stringize(arg))
			repl = repl[3:]
			continue
		}

		if repl[0].Rune == PPPASTE && len(repl) > 1 && repl[1].Rune == IDENTIFIER && m.param(ap, repl[1].Val, &arg) {
			// -------------------------------------------------- C
			if len(arg) == 0 {
				// ------------------------------------------ D
				// 			return subst(IS’, FP, AP, HS, OS);
				repl = repl[2:]
				continue
			}

			// -------------------------------------------------- E
			// 			return subst(IS’, FP, AP, HS, glue(OS, select(i, AP)));
			_, out = c.glue(out, arg)
			repl = repl[2:]
			continue
		}

		if repl[0].Rune == PPPASTE && len(repl) > 2 && repl[1].Rune == ' ' && repl[2].Rune == IDENTIFIER && m.param(ap, repl[2].Val, &arg) {
			// -------------------------------------------------- C
			if len(arg) == 0 {
				// ------------------------------------------ D
				// 			return subst(IS’, FP, AP, HS, OS);
				repl = repl[3:]
				continue
			}

			// -------------------------------------------------- E
			// 			return subst(IS’, FP, AP, HS, glue(OS, select(i, AP)));
			_, out = c.glue(out, arg)
			repl = repl[3:]
			continue
		}

		if repl[0].Rune == PPPASTE && len(repl) > 1 && repl[1].Rune != ' ' {
			// -------------------------------------------------- F
			// 		return subst(IS’, FP, AP, HS, glue(OS, T^HS’));
			_, out = c.glue(out, repl[1:2])
			repl = repl[2:]
			continue
		}

		if repl[0].Rune == PPPASTE && len(repl) > 2 && repl[1].Rune == ' ' {
			// -------------------------------------------------- F
			// 		return subst(IS’, FP, AP, HS, glue(OS, T^HS’));
			_, out = c.glue(out, repl[2:3])
			repl = repl[3:]
			continue
		}

		if len(repl) > 1 && repl[0].Rune == IDENTIFIER && m.param(ap, repl[0].Val, &arg) && repl[1].Rune == PPPASTE {
			// -------------------------------------------------- G
			if len(arg) == 0 {
				// ------------------------------------------ H
				panic(c.position(repl[0]))
			}

			// -------------------------------------------------- K
			// 			return subst(##^HS’ • IS’, FP, AP, HS, OS • select(i, AP));
			out = append(out, arg...)
			repl = repl[1:]
			continue
		}

		if len(repl) > 2 && repl[0].Rune == IDENTIFIER && m.param(ap, repl[0].Val, &arg) && repl[1].Rune == ' ' && repl[2].Rune == PPPASTE {
			// -------------------------------------------------- G
			if len(arg) == 0 {
				// ------------------------------------------ H
				if len(repl) > 3 && repl[3].Rune == IDENTIFIER && m.param(ap, repl[3].Val, &arg) {
					// ---------------------------------- I
					panic(c.position(repl[0]))
				}

				// ------------------------------------------ J
				// 				return subst(IS’, FP, AP, HS, OS);
				repl = repl[3:]
				continue
			}

			// -------------------------------------------------- K
			// 			return subst(##^HS’ • IS’, FP, AP, HS, OS • select(i, AP));
			out = append(out, arg...)
			repl = repl[2:]
			continue
		}

		if repl[0].Rune == IDENTIFIER && m.param(ap, repl[0].Val, &arg) {
			// -------------------------------------------------- L
			// 		return subst(IS’, FP, AP, HS, OS • expand(select(i, AP)));
			out = append(out, c.expands(arg, expandDefined)...)
			repl = repl[1:]
			continue
		}

		// ---------------------------------------------------------- M
		// 	note IS must be T^HS’ • IS’
		// 	return subst(IS’, FP, AP, HS, OS • T^HS’);
		out = append(out, repl[0])
		repl = repl[1:]
	}
}

// paste last of left side with first of right side
//
// [1] pg. 3
func (c *cpp) glue(ls, rs []cppToken) (n int, out []cppToken) {
	for len(ls) != 0 && ls[len(ls)-1].Rune == ' ' {
		ls = ls[:len(ls)-1]
	}

	for len(rs) != 0 && rs[0].Rune == ' ' {
		rs = rs[1:]
		n++
	}
	if len(rs) == 0 {
		panic("TODO")
	}

	if len(ls) == 0 {
		return n, rs
	}

	l := ls[len(ls)-1]
	ls = ls[:len(ls)-1]
	r := rs[0]
	rs = rs[1:]
	n++

	switch l.Rune {
	case '#':
		switch r.Rune {
		case '#':
			l.Rune = PPPASTE
		default:
			panic(PrettyString([]cppToken{l, r}))
		}
	default:
		switch l.Rune {
		case STRINGLITERAL:
			s := TokSrc(l.Token)
			if len(s) > 2 && s[0] == '"' && s[len(s)-1] == '"' {
				s = s[1 : len(s)-1]
			}
			l.Val = dict.SID(s + TokSrc(r.Token))
		default:
			l.Val = dict.SID(TokSrc(l.Token) + TokSrc(r.Token))
		}
	}
	return n, append(append(ls, l), rs...)
}

// Given a token sequence, stringize returns a single string literal token
// containing the concatenated spellings of the tokens.
//
// [1] pg. 3
func (c *cpp) stringize(s []cppToken) cppToken {
	var a []string
	for _, v := range s {
		switch v.Rune {
		case CHARCONST, LONGCHARCONST, LONGSTRINGLITERAL, STRINGLITERAL:
			s := fmt.Sprintf("%q", TokSrc(v.Token))
			a = append(a, s[1:len(s)-1])
		default:
			a = append(a, TokSrc(v.Token))
		}
	}
	if v := dict.SID(fmt.Sprintf(`"%s"`, strings.Join(a, ""))); v != 0 {
		var t cppToken
		if len(s) != 0 {
			t = s[0]
		}
		t.Rune = STRINGLITERAL
		t.Val = v
		return t
	}

	return cppToken{}
}

func (c *cpp) directive(r tokenReader, w tokenWriter, cs conds) (y conds) {
	line := c.line(r)
	if len(line) == 0 {
		return cs
	}

	if cs.on() {
		if f := c.tweaks.TrackExpand; f != nil && c.tweaks.DefinesOnly {
			if s := cppToksDump(line, ""); strings.HasPrefix(s, "define") {
				f(fmt.Sprintf("#%s", cppToksDump(line, "")))
			}
		}
	}

outer:
	switch t := line[0]; t.Rune {
	case ccEOF:
		// nop
	case IDENTIFIER:
		switch t.Val {
		case idDefine:
			if !cs.on() {
				break
			}

			if len(line) == 1 {
				c.err(t, "empty define not allowed")
				break
			}

			c.define(line[1:])
		case idElif:
			switch cs.tos() {
			case condIfOff:
				if _, ok := c.constExpr(line[1:], true); ok {
					return cs.pop().push(condIfOn)
				}
			case condIfOn:
				return cs.pop().push(condIfSkip)
			case condIfSkip:
				// nop
			default:
				panic(fmt.Errorf("%v: %v", c.position(t), cs.tos()))
			}
		case idElse:
			switch cs.tos() {
			case condIfOff:
				return cs.pop().push(condIfOn)
			case condIfOn:
				return cs.pop().push(condIfOff)
			case condIfSkip:
				// nop
			default:
				panic(fmt.Errorf("%v: %v", c.position(t), cs.tos()))
			}
		case idError:
			if !cs.on() {
				break
			}

			c.err(t, "%s", cppToksDump(line, ""))
		case idIf:
			if !cs.on() {
				return cs.push(condIfSkip)
			}

			switch _, ok := c.constExpr(line[1:], true); {
			case ok:
				return cs.push(condIfOn)
			default:
				return cs.push(condIfOff)
			}
		case idIfdef:
			if !cs.on() {
				return cs.push(condIfSkip)
			}

			line = cppTrimAllSpace(line[1:])
			if len(line) == 0 {
				c.err(t, "empty #ifdef not allowed")
				break
			}

			if len(line) > 1 {
				c.err(t, "extra tokens after #ifdef not allowed")
				break
			}

			if line[0].Rune != IDENTIFIER {
				c.err(line[0], "expected identifier")
				break
			}

			if _, ok := c.macros[line[0].Val]; ok {
				return cs.push(condIfOn)
			}

			return cs.push(condIfOff)
		case idIfndef:
			if !cs.on() {
				return cs.push(condIfSkip)
			}

			line = cppTrimAllSpace(line[1:])
			if len(line) == 0 {
				c.err(t, "empty #ifndef not allowed")
				break
			}

			if len(line) > 1 {
				c.err(t, "extra tokens after #ifndef not allowed")
				break
			}

			if line[0].Rune != IDENTIFIER {
				c.err(line[0], "expected identifier")
				break
			}

			if _, ok := c.macros[line[0].Val]; ok {
				return cs.push(condIfOff)
			}

			return cs.push(condIfOn)
		case
			idIncludeNext,
			idInclude:

			if !cs.on() {
				break
			}

			line = cppTrimAllSpace(line[1:])
			if len(line) == 0 {
				c.err(t, "empty include not allowed")
				break
			}

			expanded := false
		again:
			switch line[0].Rune {
			case '<':
				if c.tweaks.cppExpandTest {
					w.write(line...)
					return cs
				}

				var nm string
				for _, v := range line[1:] {
					if v.Rune == '>' {
						c.include(t, nm, c.sysIncludePaths, w)
						return cs
					}

					nm += TokSrc(v.Token)
				}
				c.err(t, "invalid include file name specification")
			case STRINGLITERAL:
				if c.tweaks.cppExpandTest {
					w.write(line...)
					return cs
				}

				b := dict.S(line[0].Val)      // `"foo.h"`
				nm := string(b[1 : len(b)-1]) // `foo.h`
				c.include(t, nm, c.includePaths, w)
				return cs
			default:
				if expanded {
					panic(PrettyString(line))
				}

				line = c.expands(cppTrimAllSpace(line), false)
				expanded = true
				if c.tweaks.cppExpandTest {
					w.write(line...)
					return cs
				}

				goto again
			}
		case idEndif:
			switch cs.tos() {
			case condIfOn, condIfOff, condIfSkip:
				return cs.pop()
			default:
				panic(fmt.Errorf("%v: %v", c.position(t), cs.tos()))
			}
		case idLine:
			if !cs.on() {
				break
			}

			f := fset.File(line[0].Pos())
			off := f.Offset(line[0].Pos())
			pos := c.position(line[0])
			line = c.expands(cppTrimAllSpace(line[1:]), false)
			switch len(line) {
			case 1: // #line linenum
				n, err := strconv.ParseUint(string(line[0].S()), 10, 31)
				if err != nil {
					break
				}

				f.AddLineInfo(off, pos.Filename, int(n-1))
				//TODO
			case 2: // #line linenum filename
				//TODO
			default:
				// ignore
			}

			// ignored
		case idPragma:
			if !cs.on() {
				break
			}

			for {
				line = line[1:]
				if len(line) == 0 {
					panic(fmt.Errorf("%v", c.position(t)))
				}

				switch t = line[0]; {
				case t.Rune == ' ':
					// nop
				case t.Val == idPushMacro:
					actuals := c.pragmaActuals(t, line[1:])
					if len(actuals) != 1 {
						panic(fmt.Errorf("%v", c.position(t)))
					}

					t := actuals[0]
					switch t.Rune {
					case STRINGLITERAL:
						nm := int(c.strConst(t.Token).Value.(*ir.StringValue).StringID)
						m := c.macros[nm]
						if m != nil {
							c.macroStack[nm] = append(c.macroStack[nm], m)
						}
						break outer
					default:
						panic(fmt.Errorf("%v: %v", c.position(t), yySymName(int(actuals[0].Rune))))
					}
				case t.Val == idPopMacro:
					actuals := c.pragmaActuals(t, line[1:])
					if len(actuals) != 1 {
						panic(fmt.Errorf("%v", c.position(t)))
					}

					t := actuals[0]
					switch t.Rune {
					case STRINGLITERAL:
						nm := int(c.strConst(t.Token).Value.(*ir.StringValue).StringID)
						s := c.macroStack[nm]
						if n := len(s); n != 0 {
							m := s[n-1]
							s = s[:n-1]
							c.macroStack[nm] = s
							c.macros[nm] = m
						}
						break outer
					default:
						panic(fmt.Errorf("%v: %v", c.position(t), yySymName(int(actuals[0].Rune))))
					}
				default:
					if c.tweaks.IgnoreUnknownPragmas {
						break outer
					}

					panic(fmt.Errorf("%v: %#x, %v", c.position(t), t.Rune, t))
				}
			}
		case idUndef:
			if !cs.on() {
				break
			}

			line = cppTrimSpace(line[1:])
			if len(line) == 0 {
				panic("TODO")
			}

			if len(line) > 1 {
				panic("TODO")
			}

			if line[0].Rune != IDENTIFIER {
				panic("TODO")
			}

			delete(c.macros, line[0].Val)
		case idWarning:
			if !cs.on() {
				break
			}

			panic(fmt.Errorf("%v", c.position(t)))
		default:
			panic(fmt.Errorf("%v %v", c.position(t), PrettyString(t)))
		}
	default:
		panic(PrettyString(t))
	}
	return cs
}

func (c *cpp) include(n Node, nm string, paths []string, w tokenWriter) {
	if c.includeLevel == maxIncludeLevel {
		c.err(n, "too many include levels")
	}

	c.includeLevel++

	defer func() { c.includeLevel-- }()

	dir := filepath.Dir(c.position(n).Filename)
	if d, err := filepath.Abs(dir); err == nil {
		dir = d
	}
	var path string
	if n.(cppToken).Val == idIncludeNext {
		nmDir, _ := filepath.Split(nm)
		for i, v := range paths {
			if w, err := filepath.Abs(v); err == nil {
				v = w
			}
			v = filepath.Join(v, nmDir)
			if v == dir {
				paths = paths[i+1:]
				break
			}
		}
	}
	for _, v := range paths {
		if v == "@" {
			v = dir
		}

		var p string
		switch {
		case strings.HasPrefix(nm, "./"):
			p = nm
		default:
			p = filepath.Join(v, nm)
		}
		fi, err := os.Stat(p)
		if err != nil || fi.IsDir() {
			continue
		}

		path = p
		break
	}

	if path == "" {
		wd, _ := os.Getwd()
		c.err(n, "include file not found: %s\nworking dir: %s\nsearch paths:\n\t%s", nm, wd, strings.Join(paths, "\n\t"))
		return
	}

	s, err := NewFileSource2(path, true)
	if err != nil {
		c.err(n, "%s", err.Error())
		return
	}

	if n, _ := s.Size(); n == 0 {
		return
	}

	if f := c.tweaks.TrackIncludes; f != nil {
		f(path)
	}
	r, err := c.parse(s)
	if err != nil {
		c.err(n, "%s", err.Error())
	}

	c.expand(r, w, conds(nil).push(condZero), 0, false)
}

func (c *cpp) constExpr(toks []cppToken, expandDefined bool) (op Operand, y bool) {
	toks = cppTrimAllSpace(c.expands(cppTrimAllSpace(toks), expandDefined))
	for i, v := range toks {
		if v.Rune == IDENTIFIER {
			toks[i].Rune = INTCONST
			toks[i].Val = idZero
		}
	}
	c.lx.ungetBuffer = c.lx.ungetBuffer[:0]
	c.lx.ungets(toks...)
	if !c.lx.parseExpr() {
		return Operand{}, false
	}

	e := c.lx.ast.(*ConstExpr)
	v := e.eval(c.context)
	if v.Type != Int {
		return v, false
	}

	switch x := v.Value.(type) {
	case *ir.Int64Value:
		return v, x.Value != 0
	default:
		return v, false
	}
}

func (c *cpp) define(line []cppToken) {
	switch line[0].Rune {
	case ' ':
		c.defineMacro(xcToks(line[1:]))
	default:
		panic(PrettyString(line))
	}
}

func (c *cpp) defineMacro(line []xc.Token) {
	if len(line) == 0 {
		panic("internal error")
	}

	if line[0].Rune == ' ' {
		line = line[1:]
	}

	switch t := line[0]; t.Rune {
	case IDENTIFIER:
		nm := t.Val
		if protectedMacro[nm] {
			panic("TODO")
		}
		line := line[1:]
		var repl []xc.Token
		if len(line) != 0 {
			switch line[0].Rune {
			case '\n', ccEOF:
				// nop
			case ' ':
				repl = line[1:]
			case '(':
				c.defineFnMacro(t, line[1:])
				return
			default:
				panic(fmt.Errorf(PrettyString(line[0])))
			}
		}

		if ex := c.macros[nm]; ex != nil {
			if c.identicalReplacementLists(repl, ex.ReplacementToks) {
				return
			}

			c.err(t, "%q replacement lists differ: %q, %q", dict.S(nm), toksDump(ex.ReplacementToks, ""), toksDump(repl, ""))
			return
		}

		if traceMacroDefs {
			fmt.Fprintf(os.Stderr, "#define %s %s\n", dict.S(nm), toksDump(repl, ""))
		}
		c.macros[nm] = newMacro(t, repl)
	default:
		panic(PrettyString(t))
	}
}

func (c *cpp) identicalReplacementLists(a, b []xc.Token) bool {
	if len(a) != len(b) {
		return false
	}

	for i, v := range a {
		w := b[i]
		if v.Rune != w.Rune || v.Val != w.Val {
			return false
		}
	}

	return true
}

func (c *cpp) defineFnMacro(nmTok xc.Token, line []xc.Token) {
	ident := true
	var params []int
	variadic := false
	for i, v := range line {
		switch v.Rune {
		case IDENTIFIER:
			if !ident {
				panic("TODO")
			}

			params = append(params, v.Val)
			ident = false
		case ')':
			m := newMacro(nmTok, trimSpace(line[i+1:]))
			m.IsFnLike = true
			m.ident = ident
			m.IsVariadic = variadic
			m.Args = params
			if ex := c.macros[nmTok.Val]; ex != nil {
				if c.identicalParamLists(params, ex.Args) && c.identicalReplacementLists(m.ReplacementToks, ex.ReplacementToks) && m.IsVariadic == ex.IsVariadic {
					return
				}

				c.err(nmTok, "parameter and/or replacement lists differ")
				return
			}

			if traceMacroDefs {
				var a [][]byte
				for _, v := range m.Args {
					a = append(a, dict.S(v))
				}
				fmt.Fprintf(os.Stderr, "#define %s(%s) %s\n", dict.S(nmTok.Val), bytes.Join(a, []byte(", ")), toksDump(m.ReplacementToks, ""))
			}
			c.macros[nmTok.Val] = m
			return
		case ',':
			if ident {
				panic("TODO")
			}

			ident = true
		case ' ':
			// nop
		case DDD:
			variadic = true
		default:
			panic(PrettyString(v))
		}
	}
}

func (c *cpp) identicalParamLists(a, b []int) bool {
	if len(a) != len(b) {
		return false
	}

	for i, v := range a {
		if v != b[i] {
			return false
		}
	}

	return true
}

func (c *cpp) line(r tokenReader) []cppToken {
	c.toks = c.toks[:0]
	for {
		switch t := r.read(); t.Rune {
		case '\n', ccEOF:
			if len(c.toks) == 0 || c.toks[0].Rune != ' ' {
				return c.toks
			}

			for i, v := range c.toks {
				if v.Rune != ' ' {
					n := copy(c.toks, c.toks[i:])
					c.toks = c.toks[:n]
					return c.toks
				}
			}

			c.toks = c.toks[:0]
			return c.toks
		default:
			c.toks = append(c.toks, t)
		}
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31034.c<|end_filename|>
static inline int
mod (int a, int n)
{
  return a >= n ? a % n : a;
}
void dpara(int);
void opticurve (int m)
{
  int i;
  for (i = 0; i < m; i++)
    {
        dpara(mod (i - 1, m));
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr12578.c<|end_filename|>
/*  PR tree-optimization/12517  */

void trivial_regexp_p(int *s, int len)
{
    while (--len) {
	switch (*s++) {
	    case '\\':
		switch (*s++) {
		    case '|':
			;
		}
	}
    }
}



<|start_filename|>v2/testdata/cpp-expand/001.h<|end_filename|>
#define f(x) f(2*x)
#define m(a) a(24)
f(f(42))
m(f)


<|start_filename|>v2/testdata/bug/8.c<|end_filename|>
#include  <stdint.h>

int main() {
	int y;
	int8_t i8;
	uint8_t u8;
	int16_t i16;
	uint16_t u16;
	int32_t i32;
	uint32_t u32;
	int64_t i64;
	uint64_t u64;

	for (i8 = -4; i8 <= 4; i8++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) << %i(%x) = %i(%x)\n", i8, (uint8_t)i8, y, (unsigned)y, i8 << y, (uint8_t)(i8 << y));
		}
	}
	for (u8 = 0; u8 <= 4; u8++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) << %i(%x) = %u(%x)\n", u8, u8, y, (unsigned)y, u8 << y, u8 << y);
		}
	}
	for (i8 = -4; i8 <= 4; i8++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) >> %i(%x) = %i(%x)\n", i8, (uint8_t)i8, y, (unsigned)y, i8 >> y, (uint8_t)(i8 >> y));
		}
	}
	for (u8 = 0; u8 <= 4; u8++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) >> %i(%x) = %u(%x)\n", u8, u8, y, (unsigned)y, u8 >> y, u8 >> y);
		}
	}

	for (i16 = -4; i16 <= 4; i16++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) << %i(%x) = %i(%x)\n", i16, (uint16_t)i16, y, (unsigned)y, i16 << y, (uint16_t)(i16 << y));
		}
	}
	for (u16 = 0; u16 <= 4; u16++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) << %i(%x) = %u(%x)\n", u16, u16, y, (unsigned)y, u16 << y, u16 << y);
		}
	}
	for (i16 = -4; i16 <= 4; i16++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) >> %i(%x) = %i(%x)\n", i16, (uint16_t)i16, y, (unsigned)y, i16 >> y, (uint16_t)(i16 >> y));
		}
	}
	for (u16 = 0; u16 <= 4; u16++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) >> %i(%x) = %u(%x)\n", u16, u16, y, (unsigned)y, u16 >> y, u16 >> y);
		}
	}

	for (i32 = -4; i32 <= 4; i32++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) << %i(%x) = %i(%x)\n", i32, (uint32_t)i32, y, (unsigned)y, i32 << y, (uint32_t)(i32 << y));
		}
	}
	for (u32 = 0; u32 <= 4; u32++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) << %i(%x) = %u(%x)\n", u32, u32, y, (unsigned)y, u32 << y, u32 << y);
		}
	}
	for (i32 = -4; i32 <= 4; i32++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) >> %i(%x) = %i(%x)\n", i16, (uint32_t)i16, y, (unsigned)y, i16 >> y, (uint32_t)(i16 >> y));
		}
	}
	for (u32 = 0; u32 <= 4; u32++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) >> %i(%x) = %u(%x)\n", u32, u32, y, (unsigned)y, u32 >> y, u32 >> y);
		}
	}

	for (i64 = -4; i64 <= 4; i64++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) << %i(%x) = %i(%x)\n", i64, (uint64_t)i64, y, (unsigned)y, i64 << y, (uint64_t)(i64 << y));
		}
	}
	for (u64 = 0; u64 <= 4; u64++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) << %i(%x) = %u(%x)\n", u64, u64, y, (unsigned)y, u64 << y, u64 << y);
		}
	}
	for (i64 = -4; i64 <= 4; i64++) {
		for (y = -128; y <= 127; y++) {
			printf("  signed 8 %i(%x) >> %i(%x) = %i(%x)\n", i16, (uint64_t)i16, y, (unsigned)y, i16 >> y, (uint64_t)(i16 >> y));
		}
	}
	for (u64 = 0; u64 <= 4; u64++) {
		for (y = -128; y <= 127; y++) {
			printf("unsigned 8 %u(%x) >> %i(%x) = %u(%x)\n", u64, u64, y, (unsigned)y, u64 >> y, u64 >> y);
		}
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20061214-1.c<|end_filename|>
typedef unsigned long long ull;
ull bar (void);
void foo (ull *x)
{
  ull y = bar ();
  *x += y >> 32;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41163.c<|end_filename|>
struct option {
    void *value;
};
void parse_options (struct option *);
void cmd_grep(void)
{
  struct option options[] = { { &options } };
  parse_options(options);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/debugvlafunction-1.c<|end_filename|>
/* { dg-skip-if "requires alloca" { ! alloca } { "-O0" } { "" } } */
extern void dynreplace_trampoline(void);
extern void dynreplace_trampoline_endlabel(void);
int dynreplace_add_trampoline(void)
{
  unsigned long trampoline_code[(((unsigned long)
(&(dynreplace_trampoline_endlabel))
-(unsigned long) (&dynreplace_trampoline)))
];
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39648.c<|end_filename|>
void
yysyntax_error (char *yyp)
{
        char const *yyf;
        char yyformat[5];

        yyf = yyformat;
        while ((*yyp = *yyf) != '\0') {
                if (yyf[1] == 's')
                        yyf += 2;
        }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44937.c<|end_filename|>
int g_19;
int *g_42;
int **volatile g = &g_42;
int g_67[5][9][2][1] = {
};

int
func_4 (int p_5, unsigned char p_6, unsigned char p_7)
{
  unsigned char l_8[1];
  if (p_6)
    goto lbl_13;
  for (p_6 = 0; p_6; p_6 = (p_6, 0))
    if (0)
      {
      }
    else
      lbl_13:for (p_6 = 0; p_6 < 1; p_6 += 1)
	  l_8[p_6] = 0;
  return 0;
}

int *
func_45 (unsigned long p_46, unsigned char p_47)
{
  int *l_56 = &g_19;
  (void *)&l_56 != (void *)&g | !1 == func_4 (0, g_67[2][6][1][0], 0) ^ func_4 (1, 0, 0);
  return 0;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32919.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */
/* { dg-require-effective-target label_values } */

void _IO_vfprintf_internal ( char *f )
{
  static const void *const step0_jumps[] = { &&do_form_unknown, &&do_flag_plus, &&do_form_float };
  const void * ptr = step0_jumps[0];
  do {
    char spec;
    spec = (*++f);
    goto *ptr;
do_flag_plus:
     read_int (&f);
do_number:
    _itoa_word (spec);
do_form_float:
    if (ptr != ((void *)0))
    {
      spec = 'x';
      goto do_number;
    }
    if (spec != 'S')
      __strnlen ();
    return;
    do_form_unknown:;
  }
  while (*f != '\0');
}



<|start_filename|>v2/headers/linux_amd64/usr/include/bits/mathcalls.h<|end_filename|>
/* Prototype declarations for math functions; helper file for <math.h>.
   Copyright (C) 1996-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/* NOTE: Because of the special way this file is used by <math.h>, this
   file must NOT be protected from multiple inclusion as header files
   usually are.

   This file provides prototype declarations for the math functions.
   Most functions are declared using the macro:

   __MATHCALL (NAME,[_r], (ARGS...));

   This means there is a function `NAME' returning `double' and a function
   `NAMEf' returning `float'.  Each place `_Mdouble_' appears in the
   prototype, that is actually `double' in the prototype for `NAME' and
   `float' in the prototype for `NAMEf'.  Reentrant variant functions are
   called `NAME_r' and `NAMEf_r'.

   Functions returning other types like `int' are declared using the macro:

   __MATHDECL (TYPE, NAME,[_r], (ARGS...));

   This is just like __MATHCALL but for a function returning `TYPE'
   instead of `_Mdouble_'.  In all of these cases, there is still
   both a `NAME' and a `NAMEf' that takes `float' arguments.

   Note that there must be no whitespace before the argument passed for
   NAME, to make token pasting work with -traditional.  */

#ifndef _MATH_H
# error "Never include <bits/mathcalls.h> directly; include <math.h> instead."
#endif

/* Trigonometric functions.  */

_Mdouble_BEGIN_NAMESPACE
/* Arc cosine of X.  */
__MATHCALL(acos,, (_Mdouble_ __x));
/* Arc sine of X.  */
__MATHCALL(asin,, (_Mdouble_ __x));
/* Arc tangent of X.  */
__MATHCALL(atan,, (_Mdouble_ __x));
/* Arc tangent of Y/X.  */
__MATHCALL(atan2,, (_Mdouble_ __y, _Mdouble_ __x));

/* Cosine of X.  */
__MATHCALL_VEC(cos,, (_Mdouble_ __x));
/* Sine of X.  */
__MATHCALL_VEC(sin,, (_Mdouble_ __x));
/* Tangent of X.  */
__MATHCALL(tan,, (_Mdouble_ __x));

/* Hyperbolic functions.  */

/* Hyperbolic cosine of X.  */
__MATHCALL(cosh,, (_Mdouble_ __x));
/* Hyperbolic sine of X.  */
__MATHCALL(sinh,, (_Mdouble_ __x));
/* Hyperbolic tangent of X.  */
__MATHCALL(tanh,, (_Mdouble_ __x));
_Mdouble_END_NAMESPACE
#ifdef __USE_GNU
/* Cosine and sine of X.  */
__MATHDECL_VEC(void, sincos,, (_Mdouble_ __x, _Mdouble_ * __sinx, _Mdouble_ * __cosx));
#endif

#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Hyperbolic arc cosine of X.  */
 __MATHCALL(acosh,, (_Mdouble_ __x));
/* Hyperbolic arc sine of X.  */
__MATHCALL(asinh,, (_Mdouble_ __x));
/* Hyperbolic arc tangent of X.  */
__MATHCALL(atanh,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif
/* Exponential and logarithmic functions.  */
    _Mdouble_BEGIN_NAMESPACE
/* Exponential function of X.  */
 __MATHCALL_VEC(exp,, (_Mdouble_ __x));

/* Break VALUE into a normalized fraction and an integral power of 2.  */
__MATHCALL(frexp,, (_Mdouble_ __x, int *__exponent));

/* X times (two to the EXP power).  */
__MATHCALL(ldexp,, (_Mdouble_ __x, int __exponent));

/* Natural logarithm of X.  */
__MATHCALL_VEC(log,, (_Mdouble_ __x));

/* Base-ten logarithm of X.  */
__MATHCALL(log10,, (_Mdouble_ __x));

/* Break VALUE into integral and fractional parts.  */
__MATHCALL(modf,, (_Mdouble_ __x, _Mdouble_ * __iptr)) __nonnull((2));
_Mdouble_END_NAMESPACE
#ifdef __USE_GNU
/* A function missing in all standards: compute exponent to base ten.  */
__MATHCALL(exp10,, (_Mdouble_ __x));
/* Another name occasionally used.  */
__MATHCALL(pow10,, (_Mdouble_ __x));
#endif

#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return exp(X) - 1.  */
__MATHCALL(expm1,, (_Mdouble_ __x));

/* Return log(1 + X).  */
__MATHCALL(log1p,, (_Mdouble_ __x));

/* Return the base 2 signed integral exponent of X.  */
__MATHCALL(logb,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif
#ifdef __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Compute base-2 exponential of X.  */
__MATHCALL(exp2,, (_Mdouble_ __x));

/* Compute base-2 logarithm of X.  */
__MATHCALL(log2,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif
/* Power functions.  */
    _Mdouble_BEGIN_NAMESPACE
/* Return X to the Y power.  */
__MATHCALL_VEC(pow,, (_Mdouble_ __x, _Mdouble_ __y));

/* Return the square root of X.  */
__MATHCALL(sqrt,, (_Mdouble_ __x));
_Mdouble_END_NAMESPACE
#if defined __USE_XOPEN || defined __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Return `sqrt(X*X + Y*Y)'.  */
__MATHCALL(hypot,, (_Mdouble_ __x, _Mdouble_ __y));
__END_NAMESPACE_C99
#endif
#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Return the cube root of X.  */
__MATHCALL(cbrt,, (_Mdouble_ __x));
__END_NAMESPACE_C99
#endif
/* Nearest integer, absolute value, and remainder functions.  */
    _Mdouble_BEGIN_NAMESPACE
/* Smallest integral value not less than X.  */
__MATHCALLX(ceil,, (_Mdouble_ __x), (__const__));

/* Absolute value of X.  */
__MATHCALLX(fabs,, (_Mdouble_ __x), (__const__));

/* Largest integer not greater than X.  */
__MATHCALLX(floor,, (_Mdouble_ __x), (__const__));

/* Floating-point modulo remainder of X/Y.  */
__MATHCALL(fmod,, (_Mdouble_ __x, _Mdouble_ __y));

/* Return 0 if VALUE is finite or NaN, +1 if it
   is +Infinity, -1 if it is -Infinity.  */
__MATHDECL_1(int, __isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));

/* Return nonzero if VALUE is finite and not NaN.  */
__MATHDECL_1(int, __finite,, (_Mdouble_ __value)) __attribute__ ((__const__));
_Mdouble_END_NAMESPACE
#ifdef __USE_MISC
# if (!defined __cplusplus \
      || __cplusplus < 201103L /* isinf conflicts with C++11.  */ \
      || __MATH_DECLARING_DOUBLE == 0)	/* isinff or isinfl don't.  */
/* Return 0 if VALUE is finite or NaN, +1 if it
   is +Infinity, -1 if it is -Infinity.  */
__MATHDECL_1(int, isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));
# endif

/* Return nonzero if VALUE is finite and not NaN.  */
__MATHDECL_1(int, finite,, (_Mdouble_ __value)) __attribute__ ((__const__));

/* Return the remainder of X/Y.  */
__MATHCALL(drem,, (_Mdouble_ __x, _Mdouble_ __y));

/* Return the fractional part of X after dividing out `ilogb (X)'.  */
__MATHCALL(significand,, (_Mdouble_ __x));
#endif				/* Use misc.  */

#ifdef __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return X with its signed changed to Y's.  */
__MATHCALLX(copysign,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
__END_NAMESPACE_C99
#endif
#ifdef __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Return representation of qNaN for double type.  */
__MATHCALLX(nan,, (const char *__tagb), (__const__));
__END_NAMESPACE_C99
#endif
/* Return nonzero if VALUE is not a number.  */
__MATHDECL_1(int, __isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));

#if defined __USE_MISC || defined __USE_XOPEN
# if (!defined __cplusplus \
      || __cplusplus < 201103L /* isnan conflicts with C++11.  */ \
      || __MATH_DECLARING_DOUBLE == 0)	/* isnanf or isnanl don't.  */
/* Return nonzero if VALUE is not a number.  */
__MATHDECL_1(int, isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));
# endif

/* Bessel functions.  */
__MATHCALL(j0,, (_Mdouble_));
__MATHCALL(j1,, (_Mdouble_));
__MATHCALL(jn,, (int, _Mdouble_));
__MATHCALL(y0,, (_Mdouble_));
__MATHCALL(y1,, (_Mdouble_));
__MATHCALL(yn,, (int, _Mdouble_));
#endif

#if defined __USE_XOPEN || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Error and gamma functions.  */
__MATHCALL(erf,, (_Mdouble_));
__MATHCALL(erfc,, (_Mdouble_));
__MATHCALL(lgamma,, (_Mdouble_));
__END_NAMESPACE_C99
#endif
#ifdef __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* True gamma function.  */
__MATHCALL(tgamma,, (_Mdouble_));
__END_NAMESPACE_C99
#endif
#if defined __USE_MISC || defined __USE_XOPEN
/* Obsolete alias for `lgamma'.  */
__MATHCALL(gamma,, (_Mdouble_));
#endif

#ifdef __USE_MISC
/* Reentrant version of lgamma.  This function uses the global variable
   `signgam'.  The reentrant version instead takes a pointer and stores
   the value through it.  */
__MATHCALL(lgamma, _r, (_Mdouble_, int *__signgamp));
#endif

#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__BEGIN_NAMESPACE_C99
/* Return the integer nearest X in the direction of the
   prevailing rounding mode.  */
__MATHCALL(rint,, (_Mdouble_ __x));

/* Return X + epsilon if X < Y, X - epsilon if X > Y.  */
__MATHCALLX(nextafter,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));
# if defined __USE_ISOC99 && !defined __LDBL_COMPAT
__MATHCALLX(nexttoward,, (_Mdouble_ __x, long double __y), (__const__));
# endif

/* Return the remainder of integer divison X / Y with infinite precision.  */
__MATHCALL(remainder,, (_Mdouble_ __x, _Mdouble_ __y));

# ifdef __USE_ISOC99
/* Return X times (2 to the Nth power).  */
__MATHCALL(scalbn,, (_Mdouble_ __x, int __n));
# endif

/* Return the binary exponent of X, which must be nonzero.  */
__MATHDECL(int, ilogb,, (_Mdouble_ __x));
#endif

#ifdef __USE_ISOC99
/* Return X times (2 to the Nth power).  */
__MATHCALL(scalbln,, (_Mdouble_ __x, long int __n));

/* Round X to integral value in floating-point format using current
   rounding direction, but do not raise inexact exception.  */
__MATHCALL(nearbyint,, (_Mdouble_ __x));

/* Round X to nearest integral value, rounding halfway cases away from
   zero.  */
__MATHCALLX(round,, (_Mdouble_ __x), (__const__));

/* Round X to the integral value in floating-point format nearest but
   not larger in magnitude.  */
__MATHCALLX(trunc,, (_Mdouble_ __x), (__const__));

/* Compute remainder of X and Y and put in *QUO a value with sign of x/y
   and magnitude congruent `mod 2^n' to the magnitude of the integral
   quotient x/y, with n >= 3.  */
__MATHCALL(remquo,, (_Mdouble_ __x, _Mdouble_ __y, int *__quo));

/* Conversion functions.  */

/* Round X to nearest integral value according to current rounding
   direction.  */
__MATHDECL(long int, lrint,, (_Mdouble_ __x));
__extension__ __MATHDECL(long long int, llrint,, (_Mdouble_ __x));

/* Round X to nearest integral value, rounding halfway cases away from
   zero.  */
__MATHDECL(long int, lround,, (_Mdouble_ __x));
__extension__ __MATHDECL(long long int, llround,, (_Mdouble_ __x));

/* Return positive difference between X and Y.  */
__MATHCALL(fdim,, (_Mdouble_ __x, _Mdouble_ __y));

/* Return maximum numeric value from X and Y.  */
__MATHCALLX(fmax,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));

/* Return minimum numeric value from X and Y.  */
__MATHCALLX(fmin,, (_Mdouble_ __x, _Mdouble_ __y), (__const__));

/* Classify given number.  */
__MATHDECL_1(int, __fpclassify,, (_Mdouble_ __value))
    __attribute__ ((__const__));

/* Test for negative number.  */
__MATHDECL_1(int, __signbit,, (_Mdouble_ __value))
    __attribute__ ((__const__));

/* Multiply-add function computed as a ternary operation.  */
__MATHCALL(fma,, (_Mdouble_ __x, _Mdouble_ __y, _Mdouble_ __z));
#endif				/* Use ISO C99.  */

#if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99
__END_NAMESPACE_C99
#endif
#ifdef __USE_GNU
/* Test for signaling NaN.  */
__MATHDECL_1(int, __issignaling,, (_Mdouble_ __value))
    __attribute__ ((__const__));
#endif

#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
/* Return X times (2 to the Nth power).  */
__MATHCALL(scalb,, (_Mdouble_ __x, _Mdouble_ __n));
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26833.c<|end_filename|>
void yasm_lc3b__parse_insn( int num_info, int *num_operands
 , int *operands, int op)
{
  int found = 0;
  int i;
  for (; num_info>0 && !found; num_info--)
   {
    int mismatch = 0;
     for(i = 0;op && (i<*num_operands)&& !mismatch; i++)
     {
       if (!(int)(operands[i] & 0x1))
         mismatch = 1;
       if (mismatch)
         break;
     }
    if (!mismatch)
      found = 1;
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040209-1.c<|end_filename|>
/* The following code used to ICE in fold_convert.  */

float ceilf(float);

int foo(float x)
{
  return (double)ceilf(x);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040726-2.c<|end_filename|>
/* { dg-do compile } */
/* From a failure after the global ccp pass.  */
typedef struct
{
  char n[129];
} A;

const A C = {
  0,
  0
};

extern const A *const B;

void bar(const char *);

void foo ()
{
  bar (B->n);
}

const A *const B = &C;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20110126-1.c<|end_filename|>
/* PR rtl-optimization/44469 */
/* Testcase by <NAME> <<EMAIL>> */

int a (int *t, const char *p)
{
  if (*t == 0)
    {
    }
  else if (*t == 1)
    {
      p = (const char *)t;
    }
  else
    __builtin_unreachable();
  if (p[0])
    return 0;
  return 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45412.c<|end_filename|>
extern void baz (int, int, int);

int j;

int
bar (void)
{
  int n = 0, *np = &n;
  if (j)
    baz (0, 0, 0);
  if (j)
    baz (0, 0, 0);
  return n;
}

void
foo (void)
{
  bar ();
  bar ();
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27341-2.c<|end_filename|>
void zgemm_ (const int*, const double*);
extern void matmul_c8 (_Complex double * dest)
{
  const int  ldc = 0;
  const double zero = 0;
  zgemm_ ( &zero, &ldc);
  dest[1] += 1 ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr24883.c<|end_filename|>
typedef struct _rec_stl rec_stl;
struct _rec_stl {
   unsigned char **strs;
};
orec_str_list(int count) {
   rec_stl *stl;
   int i, j;
   int li, lj;
   unsigned char ci, cj;
   for (i = 0; i < count; i++) {
      for (j = i + 1; j < count; j++) {
         cj = lj > 2 ? stl->strs[j][0] : (long)stl->strs[j] & 0xff;
         if ((count >= 16 && cj < ci) || (cj == ci && lj > li)) {
            stl->strs[j] = stl->strs[i];
            ci ^= cj;
            cj ^= ci;
            ci ^= cj;
         }
      }
   }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070915-1.c<|end_filename|>
/* PR middle-end/33423 */

static struct
{
  char buf[15];
} u2;

void
test6 (void)
{
  int len;
  char *p;

  for (len = 0; len < 2; len++)
    {
      p = __builtin___memset_chk (u2.buf, '\0', len, 15);
      if (p != u2.buf)
	return;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030921-1.c<|end_filename|>
/* PR 12281  The darwin back-end was causing the function 
   f is not being emitted. TREE_SYMBOL_REFERENCED was being set
   instead of calling mark_referenced.  */


static void f(void);
void g(void (*x) (void)){x();}
static inline void f(void){}
void h(){g(f);}
int main(){h();return 0;}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39824.c<|end_filename|>
static const double internalEndianMagic = 7.949928895127363e-275;
static const unsigned char ieee_754_mantissa_mask[] = { 0x00, 0x0F, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF };
static inline int 
trio_isnan (double number)
{
  int has_mantissa = 0;
  unsigned int i;
  unsigned char current;
  for (i = 0; i < (unsigned int)sizeof(double); i++)
    {
      current = ((unsigned char *)&number)[(((unsigned char
					      *)&internalEndianMagic)[7-(i)])];
      has_mantissa |= (current & ieee_754_mantissa_mask[i]);
    }
  return has_mantissa;
}
void
xmlXPathEqualNodeSetFloat(int nodeNr, double v)
{
  int i;
  for (i=0; i<nodeNr; i++)
    if (!trio_isnan(v))
      break;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54428.c<|end_filename|>
/* PR c/54428 */

typedef double _Complex C;

C
foo (C x, C y, double z, C w)
{
  return y - z * __builtin_cpow (x, 75) * w;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20140816-1.c<|end_filename|>
/* This used to ICE with the ccmp patches on aarch64. */
int f(char);
int init_emit_regs (int mode) {
  f(mode == 4 || mode == 13);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44784.c<|end_filename|>
typedef struct rtx_def *rtx;
enum rtx_code { SUBREG };
typedef union rtunion_def {
    long rtint;
    unsigned long rtuint;
    rtx rtx;
} rtunion;
struct rtx_def {
    enum rtx_code code: 8;
    rtunion fld[1];
};
typedef struct simple_bitmap_def {
    unsigned long long elms[1];
} *sbitmap;
struct df_link {
    struct df_link *next;
    rtx reg;
};
typedef enum { UNDEFINED,   CONSTANT,   VARYING } latticevalue;
typedef struct {
    latticevalue lattice_val;
} value;
static value *values;
static sbitmap ssa_edges;
void defs_to_varying (struct df_link *start)
{
  struct df_link *currdef;
  for (currdef = start;
       currdef;
       currdef = currdef->next)
    {
      rtx reg = currdef->reg;
      if (values[(reg->code == SUBREG
		  ? reg->fld[0].rtx
		  : reg)->fld[0].rtuint].lattice_val != VARYING)
	ssa_edges->elms [(reg->code == SUBREG
			  ? reg->fld[0].rtx
			  : reg)->fld[0].rtuint / 64]
	    |= ((unsigned long long) 1
		<< (reg->code == SUBREG
		    ? reg->fld[0].rtx
		    : reg)->fld[0].rtuint % 64);
      values[(reg->code == SUBREG
	      ? reg->fld[0].rtx
	      : reg)->fld[0].rtuint].lattice_val = VARYING;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-idexternal.c<|end_filename|>
#define LIM1 0123456789
#define LIM2 LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1##LIM1
#define LIM3 LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2##LIM2
#define LIM4 LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3##LIM3
#define LIM5 LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4##LIM4
#define LIM6 LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5##LIM5

#define V(x) v##LIM5##x

int V(a);
int V(b);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42927.c<|end_filename|>
typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
typedef enum { READ_SHARED = 0, WRITE_EXCLUSIVE = 1,
    READ_EXCLUSIVE = 2, EXCLUSIVE_ACCESS = 3 } scsires_access_mode;
struct scsires_extent_elem {
    scsires_access_mode mode;
    unsigned relative_address;
    u_int32_t first_block;
    u_int32_t length;
};
typedef struct scsires_extent_elem scsires_extent_elem_t;
struct scsires_extent {
    u_int8_t num_elements;
    scsires_extent_elem_t *elements;
};
typedef struct scsires_extent scsires_extent_t;
unsigned char buf[512];
void scsires_issue_reservation(scsires_extent_t * new_extent)
{
  int i;
  for (i = 0; i < new_extent->num_elements; i++)
    {
      buf[(i * 8)] = new_extent->elements[i].mode;
      buf[(i * 8) + 1] = ((new_extent->elements[i].length >> 16) & 0xff); 
      buf[(i * 8) + 2] = ((new_extent->elements[i].length >> 8) & 0xff);
      buf[(i * 8) + 3] = (new_extent->elements[i].length & 0xff);
      buf[(i * 8) + 4] = ((new_extent->elements[i].first_block >> 24) & 0xff); 
      buf[(i * 8) + 5] = ((new_extent->elements[i].first_block >> 16) & 0xff);
      buf[(i * 8) + 6] = ((new_extent->elements[i].first_block >> 8) & 0xff);
      buf[(i * 8) + 7] = (new_extent->elements[i].first_block & 0xff);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22013-1.c<|end_filename|>
typedef unsigned short W;
typedef const W *P;

extern void g(P);

void
f ()
{
  const P s = (const W []){ 'R' };
  g (s);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37285.c<|end_filename|>
_bfd_xcoff_canonicalize_dynamic_reloc (unsigned long long l_symndx)
{
  if (l_symndx < 3)
    {
      switch (l_symndx)
      {
        case 0:
        case 1:
         break;
        case 2:
         _bfd_abort ("HI");
    }
  }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050520-1.c<|end_filename|>
struct s { int x[4]; };
struct s gs;

void
bar (void)
{
  struct s *s;
  int i;

  s = &gs;
  for (i = 0; i < 4; i++)
    ((char*) (&s->x[i]))[0] = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/uuarg.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
foo (a, b, c, d, e, f, g, h, i)
{
  return foo () + i;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/vector-2.c<|end_filename|>
/* { dg-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
#define vector __attribute__((vector_size(16) ))
struct ss
{
 vector float mVec;
};
vector float getCapsule(vector int t)
{
 vector float t1 = (vector float)t;
 struct ss y = {t1};
 *((float*)&y.mVec) = 1.0;
 return y.mVec;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090519-1.c<|end_filename|>
typedef struct { int licensed;  } __pmPDUInfo;
void __pmDecodeXtendError (int *);
void do_handshake(void)
{
  __pmPDUInfo *pduinfo;
  int challenge;
  __pmDecodeXtendError(&challenge);
  pduinfo = (__pmPDUInfo *)&challenge;
  *pduinfo = *pduinfo;
}



<|start_filename|>v2/enum.go<|end_filename|>
// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

import (
	"github.com/cznic/ir"
)

// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

type cond int

const (
	condZero cond = iota

	condIfOff
	condIfOn
	condIfSkip

	maxCond
)

var (
	condOn = [maxCond]bool{
		condIfOn: true,
		condZero: true,
	}
)

// Linkage describes linkage of identifiers, [0]6.2.2.
type Linkage int

// Values of Linkage
const (
	LinkageNone     Linkage = iota
	LinkageInternal Linkage = Linkage(ir.InternalLinkage)
	LinkageExternal Linkage = Linkage(ir.ExternalLinkage)
)

// StorageDuration describes lifetime of an object, [0]6.2.4.
type StorageDuration int

// Values of StorageDuration
const (
	StorageDurationAutomatic StorageDuration = iota
	StorageDurationStatic
)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42398.c<|end_filename|>
int ptrace_setregs(void)
{
  union { unsigned int l; int t; } __gu_tmp;
  __asm__ __volatile__("" : "=r" (__gu_tmp.l));
  return __gu_tmp.t;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030704-1.c<|end_filename|>
/* PR c/11428.  */

/* fold_single_bit_test() failed to return a tree of the type that the
   outer expression was looking for.  Specifically, it returned a tree
   whose type corresponded to QImode for !p->m, but the desired result
   type was int, which corresponded to SImode.  emit_move_insn() later
   tried to copy a reg:QI to reg:SI, causing an ICE.  */

struct s {
  int m : 1;
};

int
foo (struct s *p)
{
  return !p->m;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38857.c<|end_filename|>
static const int vs_total_ac_bits = 2680;
typedef struct EncBlockInfo {
      short mb[64];
      unsigned char next[64];
} EncBlockInfo;
inline void dv_guess_qnos(EncBlockInfo* blks, int* qnos) {
      int size[5];
      int j, k, a, prev;
      EncBlockInfo* b;
      for(a=2; a==2 || vs_total_ac_bits < size[0]; a+=a){
	 for (j=0; j<6*5; j++, b++) {
	     for (k= b->next[prev]; k<64; k= b->next[k]) {
		 if(b->mb[k] < a && b->mb[k] > -a){
		     b->next[prev] = b->next[k];
		 }
		 else{
		     prev = k;
		 }
	     }
	 }
     }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080124-1.c<|end_filename|>
/* PR middle-end/34934 */

#include <stdarg.h>

typedef struct
{
  int e[1024];
  int f;
} S;

void foo (long *, va_list);

void
bar (long *x, S *y, int z, ...)
{
  int i, j;
  va_list ap;
  va_start (ap, z);
  for (j = y->e[i = 1]; i <= y->f; j = y->e[++i])
    {
      switch (z)
	{
	case 1:
	  if (!(*x & 0x00000020))
	    continue;
	case 3:
	  if (!(*x & 0x00000080))
	    continue;
	case 9:
	  if (!(*x & 0x04000000))
	    continue;
	case 4:
	  if (!(*x & 0x00000200))
	    continue;
	case 8:
	  if (!(*x & 0x00100000))
	    continue;
	case 6:
	  if (!(*x & 0x00000100))
	    continue;
	case 7:
	  if (!(*x & 0x00040000))
	    continue;
	case 10:
	  if (!(*x & 0x00000020)
	      && ((*x & 0x00008000) || (*x & 0x08000000)))
	    continue;
	}
      foo (x, ap);
    }
  va_end (ap);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr12517.c<|end_filename|>
/*  PR tree-optimization/12517  */

int f(void);
void g(int);
void h(int a, int b, int c)
{
    int i = f();

    if (b && (i & 4))
	g(i & 8 ? 0 : 1);
    if (a) {
	do {
	    if (i & 8)
		g(0);
	    if (i & 4)
		g(i ? 0 : 1);
	} while (--c);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/930217-1.c<|end_filename|>
/* The bit-field below would have a problem if __INT_MAX__ is too
   small.  */
#if __INT_MAX__ < 2147483647
int a;
#else
double g ();
typedef union {
  struct {
    unsigned s:1, e:8, f:23;
  } u;
  float f;
} s;

f(x, n)
     float x;
{
  ((s *)&x)->u.e -= n;
  x = g((double)x, -n);
}
#endif


<|start_filename|>testdata/redecl.c<|end_filename|>
// [0]6.7.7, 7, p.124

typedef void fv(int), (*pfv)(int);

void (*signal(int, void (*)(int)))(int);
fv *signal(int, fv *);
pfv signal(int, pfv);

// Denormalized forms.

void ((*signal(int, void (*)(int)))(int));
void (((*signal(int, void (*)(int)))(int)));

void (*signal(int, void ((*))(int)))(int);
void (*signal(int, void (((*)))(int)))(int);

fv (*signal(int, fv *));
fv ((*signal(int, fv *)));
fv *signal(int, fv (*));
fv *signal(int, fv ((*)));

pfv (signal(int, pfv));
pfv ((signal(int, pfv)));

// ----------------------------------------------------------------------------

typedef int t;

int f29();
t f29();

int *f32();
t *f32();

int (*f35)();
t (*f35)();

int (*f38())();
t (*f38())();

typedef int *t2;

int *f43();
t2 f43();

int *(*f46)();
t2 (*f46)();

int *(*f49());
t2 (*f49());

int **f52();
t2 *f52();

int a55[4];
t a55[4];

int *a58[4];
t *a58[4];

int *a61[4];
t2 a61[4];

int **a64[4];
t2 *a64[4];

int *(*a67[4]);
t2 *(a67[4]);

int (**a67[4]);
t2 (*a67[4]);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/386.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
foo (a, p)
     int *p;
{
  p[0] = a;
  a = (short) a;
  return a;
}

main ()
{
  int i;
  foobar (i, &i);
}


foobar (a, b)
{
  int c;

  c = a % b;
  a = a / b;
  return a + b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090331-1.c<|end_filename|>
struct re_pattern_buffer {
    unsigned char *buffer;
    unsigned long int allocated;
};
void byte_regex_compile (struct re_pattern_buffer *bufp,
			 unsigned char *begalt, unsigned char *b)
{
  unsigned char *pfrom;
  unsigned char *pto;

  while ((unsigned long) (b - bufp->buffer + 3) > bufp->allocated)
    {
      unsigned char *old_buffer = bufp->buffer;
      bufp->allocated <<= 1;
      if (old_buffer != bufp->buffer)
	{
	  int incr = bufp->buffer - old_buffer;
	  b += incr;
	}
    }
  pfrom = b;
  pto = b + 3;
  while (pfrom != begalt)
    *--pto = *--pfrom;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40023.c<|end_filename|>
typedef __builtin_va_list va_list;
typedef struct {
    va_list ap;
} ScanfState;
void
GetInt(ScanfState *state, long llval)
{
  *__builtin_va_arg(state->ap,long *) = llval;
  __builtin_va_end(state->ap);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071114-1.c<|end_filename|>
/* PR tree-optimization/34046 */
/* Origin: dcb <<EMAIL>> */

typedef unsigned char bool8;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef uint8_t uint8;
typedef uint16_t uint16;
typedef uint32_t uint32;

struct SIAPU
{
    uint8 *PC;
    uint8 *RAM;
    uint8 Bit;
    uint32 Address;
    uint8 *WaitAddress1;
    uint8 *WaitAddress2;
    uint8 _Carry;
};

struct SAPU
{
    bool8 ShowROM;
    uint8 OutPorts [4];
    uint8 ExtraRAM [64];
    uint16 TimerTarget [3];
};

struct SAPU APU;
struct SIAPU IAPU;

void S9xSetAPUControl (uint8 byte);
void S9xSetAPUDSP (uint8 byte);
uint8 S9xGetAPUDSP ();

uint8 S9xAPUGetByte (uint32 Address)
{
  Address &= 0xffff;

  if (Address <= 0xff && Address >= 0xf0)
    {
      if (Address >= 0xf4 && Address <= 0xf7)
	{
	  IAPU.WaitAddress2 = IAPU.WaitAddress1;
	  IAPU.WaitAddress1 = IAPU.PC;
	  return (IAPU.RAM [Address]);
	}
      else if (Address == 0xf3)
	return (S9xGetAPUDSP ());

      if (Address >= 0xfd)
	{
	  IAPU.WaitAddress2 = IAPU.WaitAddress1;
	  IAPU.WaitAddress1 = IAPU.PC;
	  uint8 t = IAPU.RAM [Address];
	  IAPU.RAM [Address] = 0;
	  return (t);
	}

      return (IAPU.RAM [Address]);
    }
 else
   return (IAPU.RAM [Address]);
}

void S9xAPUSetByte (uint8 byte, uint32 Address)
{
  Address &= 0xffff;

  if (Address <= 0xff && Address >= 0xf0)
    {
      if (Address == 0xf3)
	S9xSetAPUDSP (byte);
      else if (Address >= 0xf4 && Address <= 0xf7)
	APU.OutPorts [Address - 0xf4] = byte;
      else if (Address == 0xf1)
	S9xSetAPUControl (byte);
      else if (Address < 0xfd)
	{
	  IAPU.RAM [Address] = byte;
	  if (Address >= 0xfa)
	    {
	      if (byte == 0)
		APU.TimerTarget [Address - 0xfa] = 0x100;
	      else
		APU.TimerTarget [Address - 0xfa] = byte;
	    }
	}
    }
  else
    {
      if (Address < 0xffc0)
	IAPU.RAM [Address] = byte;
      else
	{
	  APU.ExtraRAM [Address - 0xffc0] = byte;
	  if (!APU.ShowROM)
	    IAPU.RAM [Address] = byte;
	}
    }
}

void ApuCA ()
{
  IAPU.Address = *(uint16 *) (IAPU.PC + 1);
  IAPU.Bit = (uint8)(IAPU.Address >> 13);
  if ((IAPU._Carry))
    S9xAPUSetByte (S9xAPUGetByte (IAPU.Address) | (1 << IAPU.Bit), IAPU.Address);
  else
    S9xAPUSetByte (S9xAPUGetByte (IAPU.Address) & ~(1 << IAPU.Bit), IAPU.Address);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr25861.c<|end_filename|>
int f(void *a)
{
  return !(&a);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31797.c<|end_filename|>
struct GTeth_desc
{
  unsigned ed_cmdsts;
};
struct GTeth_softc
{
  struct GTeth_desc txq_desc[32];
  unsigned int txq_fi;
  unsigned int txq_nactive;
};

void
GTeth_txq_free (struct GTeth_softc *sc)
{
  struct GTeth_desc *txd = &sc->txq_desc[0];
  txd->ed_cmdsts &= ~(1U << (31));
}
void
GTeth_txq_done (struct GTeth_softc *sc)
{
  while (sc->txq_nactive > 0)
    {
      volatile struct GTeth_desc *txd = &sc->txq_desc[sc->txq_fi];
      if (txd->ed_cmdsts)
	{
	  if (sc->txq_nactive == 1)
	    return;
	}
      GTeth_txq_free (sc);
    }
}


<|start_filename|>testdata/issue85.c<|end_filename|>
int i;
extern int j;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42708-1.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
void *malloc(size_t);
typedef union YYSTYPE {
    char *id;
}  YYSTYPE;
extern YYSTYPE yylval;
void yylex (int b)
{
  yylval = (YYSTYPE) (b ? 0 : (char *) malloc (4));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr20583.c<|end_filename|>
/* PR target/20583
   On m68k-none-elf, CSE used to generate

     (set (reg:HI ...)
          (const:HI (truncate:HI (minus:SI (label_ref ...)
                                           (label_ref ...)))))

   which output functions do not know how to handle.  Make sure that
   such a constant will be rejected.  */

void bar (unsigned int);

void
foo (void)
{
  char buf[1] = { 3 };
  const char *p = buf;
  const char **q = &p;
  unsigned int ch;
  switch (**q)
    {
    case 1:  ch = 5; break;
    case 2:  ch = 4; break;
    case 3:  ch = 3; break;
    case 4:  ch = 2; break;
    case 5:  ch = 1; break;
    default: ch = 0; break;
    }
  bar (ch);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr18712.c<|end_filename|>
void *eintr_source (void *arg)
{
  int ts = 0;
  
  if (arg)
    foo ();
  
  while (1)
    {
      if (arg)
	foo ();
      
      foo1 (&ts);
    }
  
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35760.c<|end_filename|>
/* PR target/35760 */

void
foo (void)
{
  __complex__ float i = 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54713-3.c<|end_filename|>
/* PR tree-optimization/54713 */

#define N 32
#define ONE 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
	    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1    
#define ONEU 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, \
	     1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U

#include "pr54713-1.c"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031113-1.c<|end_filename|>
/* On Darwin, the stub for simple_cst_equal was not being emitted at all 
   causing the as to die and not create an object file.  */

int
attribute_list_contained ()
{
  return (simple_cst_equal ());
}
int
simple_cst_list_equal ()
{
  return (simple_cst_equal ());
}


int __attribute__((noinline))
simple_cst_equal ()
{
  return simple_cst_list_equal ();
}



<|start_filename|>v2/headers/linux_amd64/usr/include/sys/ucontext.h<|end_filename|>
/* Copyright (C) 2001-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#ifndef _SYS_UCONTEXT_H
#define _SYS_UCONTEXT_H	1

#include <features.h>
#include <signal.h>

/* We need the signal context definitions even if they are not used
   included in <signal.h>.  */
#include <bits/sigcontext.h>

#ifdef __x86_64__

/* Type for general register.  */
__extension__ typedef long long int greg_t;

/* Number of general registers.  */
#define NGREG	23

/* Container for all general registers.  */
typedef greg_t gregset_t[NGREG];

#ifdef __USE_GNU
/* Number of each register in the `gregset_t' array.  */
enum {
	REG_R8 = 0,
# define REG_R8		REG_R8
	REG_R9,
# define REG_R9		REG_R9
	REG_R10,
# define REG_R10	REG_R10
	REG_R11,
# define REG_R11	REG_R11
	REG_R12,
# define REG_R12	REG_R12
	REG_R13,
# define REG_R13	REG_R13
	REG_R14,
# define REG_R14	REG_R14
	REG_R15,
# define REG_R15	REG_R15
	REG_RDI,
# define REG_RDI	REG_RDI
	REG_RSI,
# define REG_RSI	REG_RSI
	REG_RBP,
# define REG_RBP	REG_RBP
	REG_RBX,
# define REG_RBX	REG_RBX
	REG_RDX,
# define REG_RDX	REG_RDX
	REG_RAX,
# define REG_RAX	REG_RAX
	REG_RCX,
# define REG_RCX	REG_RCX
	REG_RSP,
# define REG_RSP	REG_RSP
	REG_RIP,
# define REG_RIP	REG_RIP
	REG_EFL,
# define REG_EFL	REG_EFL
	REG_CSGSFS,		/* Actually short cs, gs, fs, __pad0.  */
# define REG_CSGSFS	REG_CSGSFS
	REG_ERR,
# define REG_ERR	REG_ERR
	REG_TRAPNO,
# define REG_TRAPNO	REG_TRAPNO
	REG_OLDMASK,
# define REG_OLDMASK	REG_OLDMASK
	REG_CR2
# define REG_CR2	REG_CR2
};
#endif

struct _libc_fpxreg {
	unsigned short int significand[4];
	unsigned short int exponent;
	unsigned short int padding[3];
};

struct _libc_xmmreg {
	__uint32_t element[4];
};

struct _libc_fpstate {
	/* 64-bit FXSAVE format.  */
	__uint16_t cwd;
	__uint16_t swd;
	__uint16_t ftw;
	__uint16_t fop;
	__uint64_t rip;
	__uint64_t rdp;
	__uint32_t mxcsr;
	__uint32_t mxcr_mask;
	struct _libc_fpxreg _st[8];
	struct _libc_xmmreg _xmm[16];
	__uint32_t padding[24];
};

/* Structure to describe FPU registers.  */
typedef struct _libc_fpstate *fpregset_t;

/* Context to describe whole processor state.  */
typedef struct {
	gregset_t gregs;
	/* Note that fpregs is a pointer.  */
	fpregset_t fpregs;
	__extension__ unsigned long long __reserved1[8];
} mcontext_t;

/* Userlevel context.  */
typedef struct ucontext {
	unsigned long int uc_flags;
	struct ucontext *uc_link;
	stack_t uc_stack;
	mcontext_t uc_mcontext;
	__sigset_t uc_sigmask;
	struct _libc_fpstate __fpregs_mem;
} ucontext_t;

#else				/* !__x86_64__ */

/* Type for general register.  */
typedef int greg_t;

/* Number of general registers.  */
#define NGREG	19

/* Container for all general registers.  */
typedef greg_t gregset_t[NGREG];

#ifdef __USE_GNU
/* Number of each register is the `gregset_t' array.  */
enum {
	REG_GS = 0,
# define REG_GS		REG_GS
	REG_FS,
# define REG_FS		REG_FS
	REG_ES,
# define REG_ES		REG_ES
	REG_DS,
# define REG_DS		REG_DS
	REG_EDI,
# define REG_EDI	REG_EDI
	REG_ESI,
# define REG_ESI	REG_ESI
	REG_EBP,
# define REG_EBP	REG_EBP
	REG_ESP,
# define REG_ESP	REG_ESP
	REG_EBX,
# define REG_EBX	REG_EBX
	REG_EDX,
# define REG_EDX	REG_EDX
	REG_ECX,
# define REG_ECX	REG_ECX
	REG_EAX,
# define REG_EAX	REG_EAX
	REG_TRAPNO,
# define REG_TRAPNO	REG_TRAPNO
	REG_ERR,
# define REG_ERR	REG_ERR
	REG_EIP,
# define REG_EIP	REG_EIP
	REG_CS,
# define REG_CS		REG_CS
	REG_EFL,
# define REG_EFL	REG_EFL
	REG_UESP,
# define REG_UESP	REG_UESP
	REG_SS
# define REG_SS	REG_SS
};
#endif

/* Definitions taken from the kernel headers.  */
struct _libc_fpreg {
	unsigned short int significand[4];
	unsigned short int exponent;
};

struct _libc_fpstate {
	unsigned long int cw;
	unsigned long int sw;
	unsigned long int tag;
	unsigned long int ipoff;
	unsigned long int cssel;
	unsigned long int dataoff;
	unsigned long int datasel;
	struct _libc_fpreg _st[8];
	unsigned long int status;
};

/* Structure to describe FPU registers.  */
typedef struct _libc_fpstate *fpregset_t;

/* Context to describe whole processor state.  */
typedef struct {
	gregset_t gregs;
	/* Due to Linux's history we have to use a pointer here.  The SysV/i386
	   ABI requires a struct with the values.  */
	fpregset_t fpregs;
	unsigned long int oldmask;
	unsigned long int cr2;
} mcontext_t;

/* Userlevel context.  */
typedef struct ucontext {
	unsigned long int uc_flags;
	struct ucontext *uc_link;
	stack_t uc_stack;
	mcontext_t uc_mcontext;
	__sigset_t uc_sigmask;
	struct _libc_fpstate __fpregs_mem;
} ucontext_t;

#endif				/* !__x86_64__ */

#endif				/* sys/ucontext.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49710.c<|end_filename|>
int a, b, c, d;

static void
foo (int *x)
{
  c = 0;
  while (1)
    {
      if (*x)
break;
      while (b)
for (; c; c = 0);
      for (d = 18; d != 18; d++)
if (c)
  {
    foo (x);
    return;
  }
    }
}

static void
bar ()
{
  foo (0);
  foo (0);
  for (;;)
    ;
}

baz ()
{
  for (; a;)
    bar ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39886.c<|end_filename|>
/* PR middle-end/39886 */

int foo (int);

volatile unsigned char g;

void bar (int p)
{
  char l = 0xE1;
  func ((foo ((p & g) <= l), 1));
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/HIset.c<|end_filename|>
#define E0 ((type *)10000000)
#define reg0 r0
#define indreg0 (*p0)
#define imm0 22
#define limm0 ((type)(int)&glob0)
#define adr0 (*E0)
#define adrreg0 (p0[10000000])
#define adrx0 (E0[x0])
#define regx0 (p0[x0])

#define E1 ((type *)(11111111 & ~(__alignof__ (type) - 1)))
#define reg1 r1
#define indreg1 (*p1)
#define imm1 33
#define limm1 ((type)(int)&glob1)
#define adr1 (*E1)
#define adrreg1 (p1[1111111/4])
#define adrx1 (E1[x1])
#define regx1 (p1[x1])

int glob0, glob1;

#define type short

reg0reg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = reg1;  }

reg0indreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = indreg1;  }

reg0imm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = imm1;  }

reg0limm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = limm1;  }

reg0adr1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = adr1;  }

reg0adrreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = adrreg1;  }

reg0adrx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = adrx1;  }

reg0regx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{reg0 = regx1;  }

indreg0reg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = reg1;  }

indreg0indreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = indreg1;  }

indreg0imm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = imm1;  }

indreg0limm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = limm1;  }

indreg0adr1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = adr1;  }

indreg0adrreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = adrreg1;  }

indreg0adrx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = adrx1;  }

indreg0regx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{indreg0 = regx1;  }

adr0reg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = reg1;  }

adr0indreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = indreg1;  }

adr0imm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = imm1;  }

adr0limm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = limm1;  }

adr0adr1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = adr1;  }

adr0adrreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = adrreg1;  }

adr0adrx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = adrx1;  }

adr0regx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adr0 = regx1;  }

adrreg0reg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = reg1;  }

adrreg0indreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = indreg1;  }

adrreg0imm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = imm1;  }

adrreg0limm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = limm1;  }

adrreg0adr1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = adr1;  }

adrreg0adrreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = adrreg1;  }

adrreg0adrx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = adrx1;  }

adrreg0regx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrreg0 = regx1;  }

adrx0reg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = reg1;  }

adrx0indreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = indreg1;  }

adrx0imm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = imm1;  }

adrx0limm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = limm1;  }

adrx0adr1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = adr1;  }

adrx0adrreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = adrreg1;  }

adrx0adrx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = adrx1;  }

adrx0regx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{adrx0 = regx1;  }

regx0reg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = reg1;  }

regx0indreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = indreg1;  }

regx0imm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = imm1;  }

regx0limm1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = limm1;  }

regx0adr1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = adr1;  }

regx0adrreg1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = adrreg1;  }

regx0adrx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = adrx1;  }

regx0regx1_set (r0, r1, x0, x1, p0, p1)
type r0, r1;  type *p0, *p1;
{regx0 = regx1;  }



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39360.c<|end_filename|>
/* PR middle-end/39360 */

static int a[] = { 1 };

static inline void
bar (int **x)
{
  static int *c[2] = { 0, a };
  *x = c[1];
}

int
foo (int **x)
{
  bar (x);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr22589-1.c<|end_filename|>
int bar (char *foo)
{
  return (long long) ((int) foo + 0) < 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040401-1.c<|end_filename|>
int __atomic_readv_replacement(unsigned char iov_len, int count, int i) {
    unsigned char bytes = 0;
    if ((unsigned char)((char)127 - bytes) < iov_len)
      return 22;
    return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/memcpy-1.c<|end_filename|>
static const char OggFLAC__MAPPING_VERSION_MAJOR = 1;
void f(void)
{
  char synthetic_first_packet_body[10];
  char *b = &synthetic_first_packet_body[4];
  __builtin_memcpy (b, &OggFLAC__MAPPING_VERSION_MAJOR, (1u));
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080820-1.c<|end_filename|>
extern unsigned long volatile jiffies;
void do_timer(void)
{
  (*(unsigned long *)&jiffies)++;
}


<|start_filename|>testdata/paste2.c<|end_filename|>
# define __intN_t(N) typedef int int##N##_t
__intN_t (8);


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/bcopy-1.c<|end_filename|>
/* PR middle-end/31095, expand_builtin_memmove_args forgot to take into
   account that tree folding of builtins can add an extra NOP_EXPR.   */

struct timeval
{
  int tv_sec;
  int tv_usec;
};
void
capture_next_packet (void)
{
  struct timeval past, now, then;
  __builtin_bcopy (&then, &past, sizeof (then));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070603-1.c<|end_filename|>

int f(_Complex double *a, unsigned int n)
{
  unsigned int i;
  for(i = 0; i< n; i++)
    {
      a[i] = __real__ a[i+1] + __real__ a[i];
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070531-1.c<|end_filename|>
/* MIN_EXPR/MAX_EXPR caused an ICE in VRP. */
int *f(int *a, int *b)
{
 *a = 1;
 *b = 2;
 int *c = a < b ? a : b;
 if (c)
   return c;
 else
   return a;
}


<|start_filename|>testdata/issue64.c<|end_filename|>
typedef struct foo foo;

foo bar = {0};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/950329-1.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
f ()
{
  int i;
  for (i = 1;; i = 0)
    {
      if (h ())
	{
	  if (i)
	    g ();
	  g (h ());
	  g (h ());
	}
      else
	{
	  g ();
	  break;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59803.c<|end_filename|>
/* PR target/59803 */

extern void baz (void) __attribute__ ((__noreturn__));
struct A { int g, h; };
extern struct A a;
struct B { unsigned char i, j, k, l, m; };
int c, d, e;
static int f;

void
foo (void)
{
  f = 1;
}

void
bar (struct B *x)
{
  x->i = e;
  x->k = c;
  x->l = d;
  x->j = a.h;
  x->m = f;
  if (x->i != e) baz ();
  if (x->k != c) baz ();
  if (x->j != a.h) baz ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20110902.c<|end_filename|>
static inline __attribute__((always_inline)) int f (unsigned int n, unsigned int size)
{
 return (__builtin_constant_p (size != 0 && n > ~0 / size)
         ? !!(size != 0 && n > ~0 / size)
         : ({ static unsigned int count[2] = { 0, 0 };
              int r = !!(size != 0 && n > ~0 / size);
              count[r]++;
              r; }));
}

int g (unsigned int size)
{
 return f (size / 4096, 4);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030530-1.c<|end_filename|>
union tree_node;
typedef union tree_node *tree;
struct tree_common
{
  tree type;
  unsigned lang_flag_0 : 1;
};
union tree_node
{
  struct tree_common common;
};
static void
java_check_regular_methods (tree class_decl)
{
  int saw_constructor = class_decl->common.type->common.lang_flag_0;
  tree class = class_decl->common.type;
  for (;;)
    {
      if (class)
        if (class_decl->common.type)
          bar (class);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/call.c<|end_filename|>
/* { dg-skip-if "requires untyped assembly" { ! untyped_assembly } { "-O0" } { "" } } */

int foo () {}

main (a, b)
{
  foo (foo (a, b), foo (b, a));
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33173.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
typedef struct
{
}
_G_fpos_t;
extern int printf (__const char *__restrict __format, ...);
extern size_t strlen (__const char *__s) __attribute__ ((__nothrow__))
  __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
typedef struct rend_service_descriptor_t
{
  int patchlevel;
  char status_tag[32];
}
tor_version_t;
test_dir_format (void)
{
  tor_version_t ver1;
  {
    long v2 = (long) (ver1.patchlevel);
  }
  {
    const char *v1 = (""), *v2 = (ver1.status_tag);
    if (!__extension__ (
			 {
			 size_t __s1_len, __s2_len;
			 (__builtin_constant_p (v1)
			  && (__s1_len = strlen (v1), __s2_len =
			      (!((size_t) (const void *) ((v1) + 1) -
				 (size_t) (const void *) (v1) == 1)
			       || __s1_len >= 4)
			      &&
			      (!((size_t) (const void *) ((v2) + 1) -
				 (size_t) (const void *) (v2) == 1)
			       || __s2_len >= 4)) ? __builtin_strcmp (v1,
								      v2)
			  : (__builtin_constant_p (v1)
			     && ((size_t) (const void *) ((v1) + 1) -
				 __s1_len < 4) ? (__builtin_constant_p (v2)
						  &&
						  ((size_t) (const void *)
						   (size_t) (const void
							     *) (v2) ==
						   1) ? __builtin_strcmp (v1,
									  v2)
						  : (__extension__ (
											 {
											 __const
											 char
											 *__s2
											 =
											 (__const
											  char
											  *)
											 (v2);
											 register
											 __result
											 =
											 (((__const unsigned char *) (__const char *) (v1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0)
											 {
											 }
											 __result;}
    ))):					     
			     (__builtin_constant_p (v2)
			      && ((size_t) (const void *) ((v2) + 1) -
				  __s2_len < 4) ? (__builtin_constant_p (v1)
						   && ((size_t) (const void *)
						       1) ?
						   __builtin_strcmp (v1,
								     v2)
						   : (__extension__ (
									      {
									      __const
									      char
									      *__s1
									      =
									      (__const
									       char
									       *)
									      (__const
									       *)
									      (v1);
									      register
									      __result
									      =
									      ((__const unsigned char *) (__const char *) (v2))[0]; if (__s2_len > 0 && __result == 0)
									      {
									      if
									      (__s2_len
									       ==
									       0)
									      {
									      }
									      }
									      __result;}
  ))):						      __builtin_strcmp (v1,
									v2))));}
	))
      {
	printf (".");
      }
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52714.c<|end_filename|>
/* { dg-require-effective-target alloca } */

int __re_compile_fastmap(unsigned char *p)
{
    unsigned char **stack;
    unsigned size;
    unsigned avail;

    stack = __builtin_alloca(5 * sizeof(unsigned char*));
    if (stack == 0)
	return -2;
    size = 5;
    avail = 0;

    for (;;) {
	switch (*p++) {
	case 0:
	    if (avail == size)
		return -2;
	    stack[avail++] = p;
	}
    }

    return 0;
}



<|start_filename|>v2/trigraphs.go<|end_filename|>
// Code generated by golex. DO NOT EDIT.

// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Based on [0], 6.4.

// Implements translation phases 1 and 2 of [0], 5.1.1.2.
//
// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

package cc

import (
	"fmt"
)

const (
	_ = iota
	scTRIGRAPHS
)

func (t *trigraphs) scan() (r int) {
	c := t.Enter()

yystate0:
	yyrule := -1
	_ = yyrule
	c = t.Rule0()

	switch yyt := t.sc; yyt {
	default:
		panic(fmt.Errorf(`invalid start condition %d`, yyt))
	case 0: // start condition: INITIAL
		goto yystart1
	case 1: // start condition: TRIGRAPHS
		goto yystart5
	}

	goto yystate0 // silence unused label error
	goto yyAction // silence unused label error
yyAction:
	switch yyrule {
	case 1:
		goto yyrule1
	case 2:
		goto yyrule2
	case 3:
		goto yyrule3
	case 4:
		goto yyrule4
	case 5:
		goto yyrule5
	case 6:
		goto yyrule6
	case 7:
		goto yyrule7
	case 8:
		goto yyrule8
	case 9:
		goto yyrule9
	case 10:
		goto yyrule10
	case 11:
		goto yyrule11
	}
	goto yystate1 // silence unused label error
yystate1:
	c = t.Next()
yystart1:
	switch {
	default:
		goto yyabort
	case c == '\\':
		goto yystate3
	case c == '\r':
		goto yystate2
	}

yystate2:
	c = t.Next()
	yyrule = 10
	t.Mark()
	goto yyrule10

yystate3:
	c = t.Next()
	switch {
	default:
		goto yyabort
	case c == '\n':
		goto yystate2
	case c == '\r':
		goto yystate4
	}

yystate4:
	c = t.Next()
	switch {
	default:
		goto yyabort
	case c == '\n':
		goto yystate2
	}

	goto yystate5 // silence unused label error
yystate5:
	c = t.Next()
yystart5:
	switch {
	default:
		goto yyabort
	case c == '?':
		goto yystate6
	case c == '\\':
		goto yystate3
	case c == '\r':
		goto yystate2
	}

yystate6:
	c = t.Next()
	switch {
	default:
		goto yyabort
	case c == '?':
		goto yystate7
	}

yystate7:
	c = t.Next()
	switch {
	default:
		goto yyabort
	case c == '!':
		goto yystate8
	case c == '(':
		goto yystate10
	case c == ')':
		goto yystate11
	case c == '-':
		goto yystate12
	case c == '/':
		goto yystate13
	case c == '<':
		goto yystate16
	case c == '=':
		goto yystate17
	case c == '>':
		goto yystate18
	case c == '\'':
		goto yystate9
	}

yystate8:
	c = t.Next()
	yyrule = 1
	t.Mark()
	goto yyrule1

yystate9:
	c = t.Next()
	yyrule = 2
	t.Mark()
	goto yyrule2

yystate10:
	c = t.Next()
	yyrule = 3
	t.Mark()
	goto yyrule3

yystate11:
	c = t.Next()
	yyrule = 4
	t.Mark()
	goto yyrule4

yystate12:
	c = t.Next()
	yyrule = 5
	t.Mark()
	goto yyrule5

yystate13:
	c = t.Next()
	yyrule = 6
	t.Mark()
	switch {
	default:
		goto yyrule6
	case c == '\n':
		goto yystate14
	case c == '\r':
		goto yystate15
	}

yystate14:
	c = t.Next()
	yyrule = 11
	t.Mark()
	goto yyrule11

yystate15:
	c = t.Next()
	switch {
	default:
		goto yyabort
	case c == '\n':
		goto yystate14
	}

yystate16:
	c = t.Next()
	yyrule = 7
	t.Mark()
	goto yyrule7

yystate17:
	c = t.Next()
	yyrule = 8
	t.Mark()
	goto yyrule8

yystate18:
	c = t.Next()
	yyrule = 9
	t.Mark()
	goto yyrule9

yyrule1: // "??!"
	{
		return '|'
	}
yyrule2: // "??'"
	{
		return '^'
	}
yyrule3: // "??("
	{
		return '['
	}
yyrule4: // "??)"
	{
		return ']'
	}
yyrule5: // "??-"
	{
		return '~'
	}
yyrule6: // "??/"
	{
		return '\\'
	}
yyrule7: // "??<"
	{
		return '{'
	}
yyrule8: // "??="
	{
		return '#'
	}
yyrule9: // "??>"
	{
		return '}'
	}
yyrule10: // \\\r?\n|\r
yyrule11: // "??/"\r?\n

	goto yystate0
	panic("unreachable")

	goto yyabort // silence unused label error

yyabort: // no lexem recognized
	if c, ok := t.Abort(); ok {
		return c
	}

	goto yyAction
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr71693.c<|end_filename|>
/* PR middle-end/71693 */

unsigned short v;

void
foo (int x)
{
  v = ((((unsigned short) (0x0001 | (x & 0x0070) | 0x0100) & 0x00ffU) << 8)
       | (((unsigned short) (0x0001 | (x & 0x0070) | 0x0100) >> 8) & 0x00ffU));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c<|end_filename|>
#include <limits.h>

#if MASK & 1
#define t11(x) x x x x x x x x x x x
#define t16(x) x x x x x x x x x x x x x x x x
#if INT_MAX < 2147483647
#define M (sizeof (t11(t11(t16(t16(" "))))) - 1)
#else
#define M (sizeof (t16(t16(t16(t16(t16(" ")))))) - 1)
#endif
#endif
#if MASK & 2
#if INT_MAX < 2147483647
#define M 30976
#else
#define M 1048576
#endif
#endif

typedef struct s {
  int c;
  void *vp;
  struct s *s;
}s;

typedef int (*fpt) (const char *, void *, int *);

int M_var = M;

extern void exit (int);

int
f (int start, int end, int *a, int *b, int c, s *sp)
{
  int count = 0;
  int i;

  for (i = start; i <= end; i++)
    {
      a[i] = b[i] + c;
      count ++;
    }
  (*(fpt)sp->s->vp) ("Hello World!\n", &exit, &M_var);
  return count;
}

int
g (int i)
{
  switch (i)
    {
    case 1: return 42;
    case 2: return 60;
    case 3: return 7;
    case 4: return 3;
    case 5: return M;
    default: return 0;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr67816.c<|end_filename|>
int a, c, d, e;
int b[10];
void fn1() {
  int i, f = 0;
  for (;;) {
    i = 0;
    for (; i < a; i++)
      if (c) {
        if (b[i])
          f = 1;
      } else if (b[i])
        f = 0;
    if (f)
      d++;
    while (e)
      ;
  }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/iftrap-3.c<|end_filename|>
/* Check that the conditional_trap pattern handles floating-point
   comparisons correctly.  */
void f1 (float x, float y) { if (x == y) __builtin_trap (); }
void f2 (double x, double y) { if (x == y) __builtin_trap (); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21021.c<|end_filename|>
/* PR tree-optimization/21021

   The front end produces a comparison of mismatched types, namely an
   integer and a pointer, causing VRP to compute TYPE_MAX_VALUE for a
   pointer, which we cannot.  */

extern void *bar (void);

int
foo (unsigned int *p, unsigned int *q)
{
  const void *r = bar ();

  if (r >= (const void *) *p
      && r < (const void *) *q)
    return 1;

  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44686.c<|end_filename|>
/* { dg-require-profiling "-fprofile-generate" } */
/* { dg-options "-fipa-pta -fprofile-generate" } */
void *
memcpy (void *a, const void *b, __SIZE_TYPE__ len)
{
  if (a == b)
    __builtin_abort ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr69999.c<|end_filename|>
int uh;

void
ha(void)
{
  while (uh) {
    for (uh = 0; uh < 1; ++uh) {
      uh = 0;
      if (uh != 0)
 ts:
        uh %= uh;
    }
    ++uh;
  }
  goto ts;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20041026-1.c<|end_filename|>
int
foo (double x, long double y)
{
  return __builtin_isgreater (x, y);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr64269.c<|end_filename|>
/* PR tree-optimization/64269 */

void
foo (char *p)
{
  __SIZE_TYPE__ s = ~(__SIZE_TYPE__)0;
  *p = 0;
  __builtin_memset (p + 1, 0, s);
}


<|start_filename|>testdata/issue87.c<|end_filename|>
typedef int foo;
typedef int foo;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52533.c<|end_filename|>
/* PR tree-optimization/52533 */

int
foo (unsigned char x)
{
  if (x <= 9)
    return '0' + x;
  else if (x <= 15)
    return 'a' + (x - 10);
  else
    return 0;
}

void
bar (unsigned char x, unsigned char *y)
{
  y[0] = foo ((unsigned char) (x >> 4));
  y[1] = foo ((unsigned char) (x & 0x0f));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120927-1.c<|end_filename|>
void ff(int);
int isc_fsaccess_set(unsigned int access) {
 unsigned int mode;
 unsigned int bits;
 mode = 0;
 bits = 0x00000021;
 if ((access & bits) != 0) 
  {
   mode |= 0400;
   access &= ~bits;
  }
 access &= ~bits; 
 bits <<= (10);
 if ((access & bits) != 0)
   access &= ~bits; 
 bits = 0x00000012;
 if ((access & bits) != 0)
 {
   mode |= 0200; 
   access &= ~bits; 
 }
 mode |= (0200 >> 3);
 access &= ~bits; 
 bits <<= (10);
 if ((access & bits) != 0)
   mode |= ((0200 >> 3) >> 3);
 bits = 0x00000044;
 if ((access & bits) != 0)
 { 
    mode |= 0100;
    access &= ~bits;
 }
 if ((access & bits) != 0)
 {
   mode |= (0100 >> 3);
   access &= ~bits; 
 }; 
 bits <<= (10);
 if ((access & bits) != 0)
   mode |= ((0100 >> 3) >> 3);
 ff(mode) ;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040705-1.c<|end_filename|>
extern char foo[], bar[];
void f (void) { memcpy (foo, bar, 7); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040415-1.c<|end_filename|>
int isdigit (int);
int f (const char *type)
{
  return isdigit ((unsigned char) *type++);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37327.c<|end_filename|>
/* { dg-require-effective-target untyped_assembly } */
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
static inline uint32_t
safe_add_int8_t_s_s (int8_t si1, int16_t si2)
{
  if ((si1) && (si2) && (si1 > (1 - si2)) || (si1) && (si2 < 0)
      && (si1 < (-128 - si2)))
    return si1;
  return si1 + si2;
}

uint32_t g_2;
uint32_t g_113;
uint32_t g_145;
int32_t
func_17 (int32_t p_18, uint32_t p_19, uint32_t p_21)
{
  uint32_t l_23 = -1L;
  return l_23;
}

uint32_t
func_26 (uint16_t p_27)
{
  uint32_t l_424;
  if (func_93 (func_59 (safe_add_int8_t_s_s (p_27, 1))),
      func_124 (l_424, -7L, 1, g_145, 1, (safe_add_int8_t_s_s (1, 1)), 1), 1,
      1, 1)
    func_117 (1, 1,
              (safe_add_uint64_t_u_u
               (1, (safe_add_int8_t_s_s (1, 0xCDF4BE7A1B7E4629LL)))), 1);
  uint32_t l_210;
  if (func_17
      ((safe_add_int8_t_s_s (g_2, (0x6C79A83AL | func_17 (1, 1, 1)))),
       0x4C9FL, 1))
    {
      uint32_t l_212;
      if (safe_mul_int32_t_s_s
          ((1, 1, l_212, (1, (safe_add_int8_t_s_s (l_210, 1)), 1, 1)), 1))
        if (func_59 (1, (safe_add_int8_t_s_s (g_113, 1))))
          {
          }
    }
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031023-3.c<|end_filename|>
/* Declaration of the frame size doesn't work on ptx.  */
/* { dg-require-effective-target untyped_assembly } */
#define ASIZE 0x100000000UL
#include "20031023-1.c"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060215-1.c<|end_filename|>
/* PR middle-end/26300 */

struct S
{
  char c;
  struct S *d;
  struct S *e;
};
extern struct S *u, *v;
extern void fn1 (struct S *) __attribute__ ((noreturn));
void fn2 (struct S *);

static inline struct S *
fn3 (struct S *x)
{
  if (x->c != 6)
    fn1 (0);
  return (struct S *) x;
}

static inline int
fn4 (struct S *x)
{
  if (x != u)
    return 3;
  fn2 (x);
  return 0;
}

int
test (struct S *x)
{
  struct S *r;
  int m = 0;

  for (r = x; r != v; r = (fn3 (r)->d))
    if (r->c != 6)
      fn1 (x);
    else
      m |= 1 << (fn4 (fn3 (r)->e) - 1);
  return m;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050215-3.c<|end_filename|>
/* PR tree-optimization/18947 */
/* { dg-options "-fgnu89-inline" } */
int v;
extern __inline void f0 (void) { v++; }
extern __inline void f1 (void) { f0 (); }
void f4 (void) { f1 (); }
extern __inline void f2 (void) { f1 (); }
void f3 (void) { f2 (); }
void f2 (void) { f1 (); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031203-3.c<|end_filename|>
/* Don't ICE on user silliness.  GCC 3.4 and before accepts this without
   comment; 3.5 warns.  Perhaps eventually we'll declare this an error.  */

void bar (void)
{
        ({});
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20070827-1.c<|end_filename|>
/* PR rtl-optimization/33148 */

int
foo (unsigned int *p, int *q, unsigned int w, unsigned int b)
{
  unsigned int i;
  int mask;

  if (q[0] < q[1])
    mask = 0xff;
  else
    mask = 0;

  for (i = 0; 8 * i < w; i++)
    {
      b ^= mask;
      *p++ = b;
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37878.c<|end_filename|>
/* PR target/37878 */

double y, z;
void foo (long x)
{
  y = *(double *) ((long *) (x - 1) + 1);
  z = *(double *) ((long *) (x - 1) + 1);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20000326-1.c<|end_filename|>
long sys_reboot(int magic1, int magic2, int cmd, void * arg)
{
  switch (cmd) {
  case 0x89ABCDEF:
    return 1;

  case 0x00000000:
    return 2;

  case 0xCDEF0123:
    return 3;

  case 0x4321FEDC:
    return 4;

  case 0xA1B2C3D4:
    return 5;

  default:
    return 0;
  };
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr50650.c<|end_filename|>
/* PR tree-optimization/50650 */

unsigned int
foo (unsigned int x, unsigned int y)
{
  int i;
  for (i = 8; i--; x <<= 1)
    y ^= (x ^ y) & 0x80 ? 79U : 0U;
  return y;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26425.c<|end_filename|>
struct keyring_list {
 struct key *keys[0];
};
void keyring_destroy(struct keyring_list *keyring, unsigned short a)
{
 int loop;
  for (loop = a - 1; loop >= 0; loop--)
   key_put(keyring->keys[loop]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42749.c<|end_filename|>
struct pdf_object { int val; };
int pdf_count_size_object (struct pdf_object * p_obj)
{
    return pdf_count_size_object(p_obj) + 2 * sizeof(struct pdf_object);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37617.c<|end_filename|>
typedef union
{
  char *string;
  double dval;
  float fval;
} yystype;
char *f(void)
{
  yystype tok;
  tok.dval = 0;
  return (tok.string);
}
char *f1(void)
{
  yystype tok;
  tok.fval = 0;
  return (tok.string);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr57698.c<|end_filename|>
typedef int (*IsAcceptableThis) (const int );
inline int
fn1 (IsAcceptableThis p1)
{
    p1 (0);
    return 0;
}

__attribute__ ((always_inline))
inline int fn2 (const int a)
{
    return 0;
}

void
fn3 ()
{
    fn1 (fn2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060823-1.c<|end_filename|>
/* PR middle-end/28683 */

extern void foo (int *);

struct A
{
  int f;
};

struct A *
test (struct A *r)
{
  int *f = &r->f;
  static int i = 0;
  if (!i && !((void *) f == (void *) r))
    foo (&i);
  return r;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr61222-1.c<|end_filename|>
int a, b, d, e;
char c;

void
foo ()
{
  for (; a; a++)
    {
      d = ((b == 0) ^ (129 + a));
      c = d * 9;
      e = c < 1;
      if (e)
	for (;;)
	  ;
    }
}

int
main ()
{
  foo ();
  return 0;
}


<|start_filename|>testdata/issue74.h<|end_filename|>
struct foobar {
	unsigned long long baz : 36;
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32139.c<|end_filename|>
/* PR tree-optimization/32139 */
int foo (void);
int bar (void) __attribute__ ((const));

int
test (int x)
{
  int a = (x == 10000 ? foo : bar) ();
  int b = (x == 10000 ? foo : bar) ();
  return a + b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32169.c<|end_filename|>
void f(char);
static inline
void * __memset_generic(char c)
{
  f(c);
}
int prepare_startup_playback_urb(
     int b,
     int c
)
{
  char d;
  if (b)
    __memset_generic(c == ( 1) ? 0x80 : 0);
  else
    __memset_generic (c == ( 1) ? 0x80 : 0);
}


<|start_filename|>v2/testdata/bug/4.c<|end_filename|>
struct s {
	int i;
} x;

int foo(struct s *p) {
	return p->i;
}

int foo2(struct s *p) {
	return (*p).i;
}

int main() {
	x.i = 42;
	if (foo(&x) != 42) {
		abort();
	}
	if (foo2(&x) != 42) {
		abort();
	}
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/zero-strct-3.c<|end_filename|>
typedef struct {} spinlock_t;
struct sk_buff_head {
  int i;
  spinlock_t lock;
};
struct sk_buff_head audit_skb_queue;
void audit_init(void)
{
  struct sk_buff_head *list = &audit_skb_queue;
  spinlock_t a = {};
  audit_skb_queue.lock = a;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr31710.c<|end_filename|>
typedef short SHORT;
struct v { SHORT i; };
void f(struct v *pin, struct v *pout) {
        if (pin->i == (-0x7fff)-1)
            pout->i = -pin->i;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050328-1.c<|end_filename|>
void fn1 (void *);
void fn2 (void *);
void foo (void);
void bar (void);

extern inline void *
baz (void)
{
  return 0;
}

void
foo (void)
{
  fn1 (baz ());
  fn2 (baz ());
}

void
bar (void)
{
  fn1 (baz ());
  fn2 (baz);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65875.c<|end_filename|>
/* PR tree-optimization/65875 */

int a, b, c, d, e, f, g;

void
foo (void)
{
  long h = 0, i;
  if (g < 0)
    i = -g;
  for (; b;)
    for (; c;)
      if (e)
	h = 1;
  for (; f;)
    if (a)
      break;
  if (h > i)
    while (h > i)
      {
	d = 0;
	h--;
      }
}


<|start_filename|>v2/testdata/cpp-expand/example-6.10.2-7.h<|end_filename|>
#include <stdio.h>
#include "myprog.h"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/pr30778.c<|end_filename|>
extern void *memset (void *, int, unsigned long);
extern void abort (void);

struct reg_stat {
  void *last_death;
  void *last_set;
  void *last_set_value;
  int   last_set_label;
  char  last_set_sign_bit_copies;
  int   last_set_mode : 8;
  char  last_set_invalid;
  char sign_bit_copies;
  long nonzero_bits;
};

static struct reg_stat *reg_stat;

void __attribute__((noinline))
init_reg_last (void)
{
  memset (reg_stat, 0, __builtin_offsetof (struct reg_stat, sign_bit_copies));
}

int main (void)
{
  struct reg_stat r;

  reg_stat = &r;
  r.nonzero_bits = -1;
  init_reg_last ();
  if (r.nonzero_bits != -1)
    abort ();
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54713-1.c<|end_filename|>
/* PR tree-optimization/54713 */

#ifndef N
#define N 8
#define ONE 1, 1, 1, 1, 1, 1, 1, 1
#define ONEU 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U
#endif

typedef int V __attribute__((vector_size (N * sizeof (int))));
typedef unsigned int W __attribute__((vector_size (N * sizeof (int))));

void
f1 (V *p)
{
  *p = (*p & ((V) { ONE })) ^ ((V) { ONE});
}

void
f2 (V *p)
{
  *p = (*p ^ ((V) { ONE })) & ((V) { ONE});
}

void
f3 (V *p)
{
  *p = (~*p) & ((V) { ONE });
}

void
f4 (V *p, V *q)
{
  *p = (*p ^ *q) == *q;
}

void
f5 (V *p, V *q)
{
  *p = (*p ^ *q) == *p;
}

void
f6 (V *p, V *q, V *r)
{
  *p = (*p & *r) == (*q & *r);
}

void
f7 (V *p, V *q, V *r)
{
  *p = (*p & *r) == (*r & *q);
}

void
f8 (V *p, V *q, V *r)
{
  *p = (*r & *p) == (*q & *r);
}

void
f9 (V *p, V *q, V *r)
{
  *p = (*r & *p) == (*r & *q);
}

void
f10 (W *p, W *q)
{
  *p = *p < (((const W) { ONEU }) << *q);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr50565-2.c<|end_filename|>
struct s { char p[2]; };
static struct s v;
const int o0 = (int) ((void *) &v.p[0] - (void *) &v) + 0;
const int o1 = (int) ((void *) &v.p[0] - (void *) &v) + 1;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/vla-const-2.c<|end_filename|>
/* Test TREE_CONSTANT VLA size: bug 27893.  */
/* Origin: <NAME> <<EMAIL>> */
/* { dg-require-effective-target alloca } */
void g(void *);
void f(void) { int b[1/0]; g(b); }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071203-1.c<|end_filename|>
/* Testcase by <NAME> <<EMAIL>> */

struct User { char username[10]; };

void
auth_set_username (struct User *user)
{
  char *d;
  char ch;
  d = user->username + (user->username[0] == '~');
  while ((ch = *d++) != '\0') /* do nothing */ ;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45059.c<|end_filename|>
/* PR tree-optimization/45059 */

typedef unsigned int T;
extern void foo (signed char *, int);

static signed char a;
static T b[1] = { -1 };
static unsigned char c;

static inline short int
bar (short v)
{
  c |= a < b[0];
  return 0;
}

int
main ()
{
  signed char *e = &a;
  foo (e, bar (bar (c)));
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55350.c<|end_filename|>
void
foo (__INTPTR_TYPE__ x, __INTPTR_TYPE__ y)
{
  int i;
  void **a = (void *)  (8UL * (x / 8UL));
  for (i = 0; i < x; i++)
    a[i] = (void *) y;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65735.c<|end_filename|>
/* PR tree-optimization/65735 */

int foo (void);

void
bar (int a, int b, int c)
{
  while (!a)
    {
      c = foo ();
      if (c == 7)
	c = b;
      switch (c)
	{
	case 1:
	  a = b++;
	  if (b)
	    b = 1;
	}
    }
}


<|start_filename|>testdata/issue62.c<|end_filename|>
struct global {
	int i;
};

extern struct global2 {
	int j;
};

static struct local {
	int k;
};


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr64067.c<|end_filename|>
/* PR middle-end/64067 */

struct S { int s; };
int *const v[1] = { &((struct S) { .s = 42 }).s };

int *
foo (void)
{
  return v[0];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56405.c<|end_filename|>
/* PR inline-asm/56405 */

void
foo (void)
{
  asm volatile ("" : "+m" (*(volatile unsigned short *) 0x1001UL));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35492.c<|end_filename|>
void prepare_to_wait (void *, void *, int);
void finish_wait (void *, void *);
extern signed long schedule_timeout (signed long);
struct sock
{
  unsigned char skc_state;
  void *sk_sleep;
  int sk_err;
};

void
sk_stream_wait_connect (struct sock *sk, long *timeo_p)
{
  int done;
  int wait;
  do
    {
      if ((1 << sk->skc_state) & ~12)
        return;
      prepare_to_wait (sk->sk_sleep, &wait, 1);
      *(timeo_p) = schedule_timeout (0);
      done = !sk->sk_err;
      finish_wait (sk->sk_sleep, &wait);
    }
  while (!done);
}


<|start_filename|>v2/headers/linux_amd64/usr/include/wchar.h<|end_filename|>
/* Copyright (C) 1995-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 *      ISO C99 Standard: 7.24
 *	Extended multibyte and wide character utilities	<wchar.h>
 */

#ifndef _WCHAR_H

#if !defined __need_mbstate_t && !defined __need_wint_t
# define _WCHAR_H 1
# include <features.h>
#endif

#ifdef _WCHAR_H
/* Get FILE definition.  */
# define __need___FILE
# if defined __USE_UNIX98 || defined __USE_XOPEN2K
#  define __need_FILE
# endif
# include <stdio.h>
/* Get va_list definition.  */
# define __need___va_list
# include <stdarg.h>

# include <bits/wchar.h>

/* Get size_t, wchar_t, wint_t and NULL from <stddef.h>.  */
# define __need_size_t
# define __need_wchar_t
# define __need_NULL
#endif
#if defined _WCHAR_H || defined __need_wint_t || !defined __WINT_TYPE__
# undef __need_wint_t
# define __need_wint_t
# include <stddef.h>

/* We try to get wint_t from <stddef.h>, but not all GCC versions define it
   there.  So define it ourselves if it remains undefined.  */
# ifndef _WINT_T
/* Integral type unchanged by default argument promotions that can
   hold any value corresponding to members of the extended character
   set, as well as at least one value that does not correspond to any
   member of the extended character set.  */
#  define _WINT_T
typedef unsigned int wint_t;
# else
/* Work around problems with the <stddef.h> file which doesn't put
   wint_t in the std namespace.  */
#  if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES \
      && defined __WINT_TYPE__
__BEGIN_NAMESPACE_STD typedef __WINT_TYPE__ wint_t;
__END_NAMESPACE_STD
#  endif
# endif
/* Tell the caller that we provide correct C++ prototypes.  */
# if defined __cplusplus && __GNUC_PREREQ (4, 4)
#  define __CORRECT_ISO_CPP_WCHAR_H_PROTO
# endif
#endif
#if (defined _WCHAR_H || defined __need_mbstate_t) && !defined ____mbstate_t_defined
# define ____mbstate_t_defined	1
/* Conversion state information.  */
    typedef struct {
	int __count;
	union {
# ifdef __WINT_TYPE__
		__WINT_TYPE__ __wch;
# else
		wint_t __wch;
# endif
		char __wchb[4];
	} __value;		/* Value so far.  */
} __mbstate_t;
#endif
#undef __need_mbstate_t

/* The rest of the file is only used if used if __need_mbstate_t is not
   defined.  */
#ifdef _WCHAR_H

# ifndef __mbstate_t_defined
__BEGIN_NAMESPACE_C99
/* Public type.  */
typedef __mbstate_t mbstate_t;
__END_NAMESPACE_C99
#  define __mbstate_t_defined 1
# endif
#ifdef __USE_GNU
__USING_NAMESPACE_C99(mbstate_t)
#endif
#ifndef WCHAR_MIN
/* These constants might also be defined in <inttypes.h>.  */
# define WCHAR_MIN __WCHAR_MIN
# define WCHAR_MAX __WCHAR_MAX
#endif
#ifndef WEOF
# define WEOF (0xffffffffu)
#endif
/* For XPG4 compliance we have to define the stuff from <wctype.h> here
   as well.  */
#if defined __USE_XOPEN && !defined __USE_UNIX98
# include <wctype.h>
#endif
 __BEGIN_DECLS __BEGIN_NAMESPACE_STD
/* This incomplete type is defined in <time.h> but needed here because
   of `wcsftime'.  */
struct tm;
__END_NAMESPACE_STD
/* XXX We have to clean this up at some point.  Since tm is in the std
   namespace but wcsftime is in __c99 the type wouldn't be found
   without inserting it in the global namespace.  */
__USING_NAMESPACE_STD(tm)

__BEGIN_NAMESPACE_STD
/* Copy SRC to DEST.  */
extern wchar_t *wcscpy(wchar_t * __restrict __dest, const wchar_t * __restrict __src)
__THROW __nonnull((1, 2));

/* Copy no more than N wide-characters of SRC to DEST.  */
extern wchar_t *wcsncpy(wchar_t * __restrict __dest, const wchar_t * __restrict __src, size_t __n)
__THROW __nonnull((1, 2));

/* Append SRC onto DEST.  */
extern wchar_t *wcscat(wchar_t * __restrict __dest, const wchar_t * __restrict __src) __THROW;
/* Append no more than N wide-characters of SRC onto DEST.  */
extern wchar_t *wcsncat(wchar_t * __restrict __dest, const wchar_t * __restrict __src, size_t __n) __THROW;

/* Compare S1 and S2.  */
extern int wcscmp(const wchar_t * __s1, const wchar_t * __s2)
__THROW __attribute_pure__;
/* Compare N wide-characters of S1 and S2.  */
extern int wcsncmp(const wchar_t * __s1, const wchar_t * __s2, size_t __n)
__THROW __attribute_pure__;
__END_NAMESPACE_STD
#ifdef __USE_XOPEN2K8
/* Compare S1 and S2, ignoring case.  */
extern int wcscasecmp(const wchar_t * __s1, const wchar_t * __s2) __THROW;

/* Compare no more than N chars of S1 and S2, ignoring case.  */
extern int wcsncasecmp(const wchar_t * __s1, const wchar_t * __s2, size_t __n) __THROW;

/* Similar to the two functions above but take the information from
   the provided locale and not the global locale.  */
# include <xlocale.h>

extern int wcscasecmp_l(const wchar_t * __s1, const wchar_t * __s2, __locale_t __loc) __THROW;

extern int wcsncasecmp_l(const wchar_t * __s1, const wchar_t * __s2, size_t __n, __locale_t __loc) __THROW;
#endif

__BEGIN_NAMESPACE_STD
/* Compare S1 and S2, both interpreted as appropriate to the
   LC_COLLATE category of the current locale.  */
extern int wcscoll(const wchar_t * __s1, const wchar_t * __s2) __THROW;
/* Transform S2 into array pointed to by S1 such that if wcscmp is
   applied to two transformed strings the result is the as applying
   `wcscoll' to the original strings.  */
extern size_t wcsxfrm(wchar_t * __restrict __s1, const wchar_t * __restrict __s2, size_t __n) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_XOPEN2K8
/* Similar to the two functions above but take the information from
   the provided locale and not the global locale.  */
/* Compare S1 and S2, both interpreted as appropriate to the
   LC_COLLATE category of the given locale.  */
extern int wcscoll_l(const wchar_t * __s1, const wchar_t * __s2, __locale_t __loc) __THROW;

/* Transform S2 into array pointed to by S1 such that if wcscmp is
   applied to two transformed strings the result is the as applying
   `wcscoll' to the original strings.  */
extern size_t wcsxfrm_l(wchar_t * __s1, const wchar_t * __s2, size_t __n, __locale_t __loc) __THROW;

/* Duplicate S, returning an identical malloc'd string.  */
extern wchar_t *wcsdup(const wchar_t * __s)
__THROW __attribute_malloc__;
#endif

__BEGIN_NAMESPACE_STD
/* Find the first occurrence of WC in WCS.  */
#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
extern "C++" wchar_t * wcschr(wchar_t * __wcs, wchar_t __wc)
__THROW __asm("wcschr") __attribute_pure__;
extern "C++" const wchar_t *wcschr(const wchar_t * __wcs, wchar_t __wc)
__THROW __asm("wcschr") __attribute_pure__;
#else
extern wchar_t *wcschr(const wchar_t * __wcs, wchar_t __wc)
__THROW __attribute_pure__;
#endif
/* Find the last occurrence of WC in WCS.  */
#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
extern "C++" wchar_t * wcsrchr(wchar_t * __wcs, wchar_t __wc)
__THROW __asm("wcsrchr") __attribute_pure__;
extern "C++" const wchar_t *wcsrchr(const wchar_t * __wcs, wchar_t __wc)
__THROW __asm("wcsrchr") __attribute_pure__;
#else
extern wchar_t *wcsrchr(const wchar_t * __wcs, wchar_t __wc)
__THROW __attribute_pure__;
#endif
__END_NAMESPACE_STD
#ifdef __USE_GNU
/* This function is similar to `wcschr'.  But it returns a pointer to
   the closing NUL wide character in case C is not found in S.  */
extern wchar_t *wcschrnul(const wchar_t * __s, wchar_t __wc)
__THROW __attribute_pure__;
#endif

__BEGIN_NAMESPACE_STD
/* Return the length of the initial segmet of WCS which
   consists entirely of wide characters not in REJECT.  */
extern size_t wcscspn(const wchar_t * __wcs, const wchar_t * __reject)
__THROW __attribute_pure__;
/* Return the length of the initial segmet of WCS which
   consists entirely of wide characters in  ACCEPT.  */
extern size_t wcsspn(const wchar_t * __wcs, const wchar_t * __accept)
__THROW __attribute_pure__;
/* Find the first occurrence in WCS of any character in ACCEPT.  */
#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
extern "C++" wchar_t * wcspbrk(wchar_t * __wcs, const wchar_t * __accept)
__THROW __asm("wcspbrk") __attribute_pure__;
extern "C++" const wchar_t *wcspbrk(const wchar_t * __wcs, const wchar_t * __accept)
__THROW __asm("wcspbrk") __attribute_pure__;
#else
extern wchar_t *wcspbrk(const wchar_t * __wcs, const wchar_t * __accept)
__THROW __attribute_pure__;
#endif
/* Find the first occurrence of NEEDLE in HAYSTACK.  */
#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
extern "C++" wchar_t * wcsstr(wchar_t * __haystack, const wchar_t * __needle)
__THROW __asm("wcsstr") __attribute_pure__;
extern "C++" const wchar_t *wcsstr(const wchar_t * __haystack, const wchar_t * __needle)
__THROW __asm("wcsstr") __attribute_pure__;
#else
extern wchar_t *wcsstr(const wchar_t * __haystack, const wchar_t * __needle)
__THROW __attribute_pure__;
#endif

/* Divide WCS into tokens separated by characters in DELIM.  */
extern wchar_t *wcstok(wchar_t * __restrict __s, const wchar_t * __restrict __delim, wchar_t ** __restrict __ptr) __THROW;

/* Return the number of wide characters in S.  */
extern size_t wcslen(const wchar_t * __s)
__THROW __attribute_pure__;
__END_NAMESPACE_STD
#ifdef __USE_XOPEN
/* Another name for `wcsstr' from XPG4.  */
# ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
extern "C++" wchar_t * wcswcs(wchar_t * __haystack, const wchar_t * __needle)
__THROW __asm("wcswcs") __attribute_pure__;
extern "C++" const wchar_t *wcswcs(const wchar_t * __haystack, const wchar_t * __needle)
__THROW __asm("wcswcs") __attribute_pure__;
# else
extern wchar_t *wcswcs(const wchar_t * __haystack, const wchar_t * __needle)
__THROW __attribute_pure__;
# endif
#endif

#ifdef __USE_XOPEN2K8
/* Return the number of wide characters in S, but at most MAXLEN.  */
extern size_t wcsnlen(const wchar_t * __s, size_t __maxlen)
__THROW __attribute_pure__;
#endif

__BEGIN_NAMESPACE_STD
/* Search N wide characters of S for C.  */
#ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO
extern "C++" wchar_t * wmemchr(wchar_t * __s, wchar_t __c, size_t __n)
__THROW __asm("wmemchr") __attribute_pure__;
extern "C++" const wchar_t *wmemchr(const wchar_t * __s, wchar_t __c, size_t __n)
__THROW __asm("wmemchr") __attribute_pure__;
#else
extern wchar_t *wmemchr(const wchar_t * __s, wchar_t __c, size_t __n)
__THROW __attribute_pure__;
#endif

/* Compare N wide characters of S1 and S2.  */
extern int wmemcmp(const wchar_t * __s1, const wchar_t * __s2, size_t __n)
__THROW __attribute_pure__;

/* Copy N wide characters of SRC to DEST.  */
extern wchar_t *wmemcpy(wchar_t * __restrict __s1, const wchar_t * __restrict __s2, size_t __n) __THROW;

/* Copy N wide characters of SRC to DEST, guaranteeing
   correct behavior for overlapping strings.  */
extern wchar_t *wmemmove(wchar_t * __s1, const wchar_t * __s2, size_t __n) __THROW;

/* Set N wide characters of S to C.  */
extern wchar_t *wmemset(wchar_t * __s, wchar_t __c, size_t __n) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_GNU
/* Copy N wide characters of SRC to DEST and return pointer to following
   wide character.  */
extern wchar_t *wmempcpy(wchar_t * __restrict __s1, const wchar_t * __restrict __s2, size_t __n) __THROW;
#endif

__BEGIN_NAMESPACE_STD
/* Determine whether C constitutes a valid (one-byte) multibyte
   character.  */
extern wint_t btowc(int __c) __THROW;

/* Determine whether C corresponds to a member of the extended
   character set whose multibyte representation is a single byte.  */
extern int wctob(wint_t __c) __THROW;

/* Determine whether PS points to an object representing the initial
   state.  */
extern int mbsinit(const mbstate_t * __ps)
__THROW __attribute_pure__;

/* Write wide character representation of multibyte character pointed
   to by S to PWC.  */
extern size_t mbrtowc(wchar_t * __restrict __pwc, const char *__restrict __s, size_t __n, mbstate_t * __restrict __p) __THROW;

/* Write multibyte representation of wide character WC to S.  */
extern size_t wcrtomb(char *__restrict __s, wchar_t __wc, mbstate_t * __restrict __ps) __THROW;

/* Return number of bytes in multibyte character pointed to by S.  */
extern size_t __mbrlen(const char *__restrict __s, size_t __n, mbstate_t * __restrict __ps) __THROW;
extern size_t mbrlen(const char *__restrict __s, size_t __n, mbstate_t * __restrict __ps) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_EXTERN_INLINES
/* Define inline function as optimization.  */
/* We can use the BTOWC and WCTOB optimizations since we know that all
   locales must use ASCII encoding for the values in the ASCII range
   and because the wchar_t encoding is always ISO 10646.  */
extern wint_t __btowc_alias(int __c) __asm("btowc");
__extern_inline wint_t __NTH(btowc(int __c))
{
	return (__builtin_constant_p(__c) && __c >= '\0' && __c <= '\x7f' ? (wint_t) __c : __btowc_alias(__c));
}

extern int __wctob_alias(wint_t __c) __asm("wctob");
__extern_inline int __NTH(wctob(wint_t __wc))
{
	return (__builtin_constant_p(__wc) && __wc >= L'\0' && __wc <= L'\x7f' ? (int)__wc : __wctob_alias(__wc));
}

__extern_inline size_t __NTH(mbrlen(const char *__restrict __s, size_t __n, mbstate_t * __restrict __ps))
{
	return (__ps != NULL ? mbrtowc(NULL, __s, __n, __ps) : __mbrlen(__s, __n, NULL));
}
#endif

__BEGIN_NAMESPACE_STD
/* Write wide character representation of multibyte character string
   SRC to DST.  */
extern size_t mbsrtowcs(wchar_t * __restrict __dst, const char **__restrict __src, size_t __len, mbstate_t * __restrict __ps) __THROW;

/* Write multibyte character representation of wide character string
   SRC to DST.  */
extern size_t wcsrtombs(char *__restrict __dst, const wchar_t ** __restrict __src, size_t __len, mbstate_t * __restrict __ps) __THROW;
__END_NAMESPACE_STD
#ifdef	__USE_XOPEN2K8
/* Write wide character representation of at most NMC bytes of the
   multibyte character string SRC to DST.  */
extern size_t mbsnrtowcs(wchar_t * __restrict __dst, const char **__restrict __src, size_t __nmc, size_t __len, mbstate_t * __restrict __ps) __THROW;

/* Write multibyte character representation of at most NWC characters
   from the wide character string SRC to DST.  */
extern size_t wcsnrtombs(char *__restrict __dst, const wchar_t ** __restrict __src, size_t __nwc, size_t __len, mbstate_t * __restrict __ps) __THROW;
#endif				/* use POSIX 2008 */

/* The following functions are extensions found in X/Open CAE.  */
#ifdef __USE_XOPEN
/* Determine number of column positions required for C.  */
extern int wcwidth(wchar_t __c) __THROW;

/* Determine number of column positions required for first N wide
   characters (or fewer if S ends before this) in S.  */
extern int wcswidth(const wchar_t * __s, size_t __n) __THROW;
#endif				/* Use X/Open.  */

__BEGIN_NAMESPACE_STD
/* Convert initial portion of the wide string NPTR to `double'
   representation.  */
extern double wcstod(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Likewise for `float' and `long double' sizes of floating-point numbers.  */
extern float wcstof(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr) __THROW;
extern long double wcstold(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr) __THROW;
__END_NAMESPACE_C99
#endif				/* C99 */
    __BEGIN_NAMESPACE_STD
/* Convert initial portion of wide string NPTR to `long int'
   representation.  */
extern long int wcstol(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base) __THROW;

/* Convert initial portion of wide string NPTR to `unsigned long int'
   representation.  */
extern unsigned long int wcstoul(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Convert initial portion of wide string NPTR to `long long int'
   representation.  */
__extension__ extern long long int wcstoll(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base) __THROW;

/* Convert initial portion of wide string NPTR to `unsigned long long int'
   representation.  */
__extension__ extern unsigned long long int wcstoull(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base) __THROW;
__END_NAMESPACE_C99
#endif				/* ISO C99.  */
#ifdef __USE_GNU
/* Convert initial portion of wide string NPTR to `long long int'
   representation.  */
__extension__ extern long long int wcstoq(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base) __THROW;

/* Convert initial portion of wide string NPTR to `unsigned long long int'
   representation.  */
__extension__ extern unsigned long long int wcstouq(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base) __THROW;
#endif				/* Use GNU.  */

#ifdef __USE_GNU
/* The concept of one static locale per category is not very well
   thought out.  Many applications will need to process its data using
   information from several different locales.  Another application is
   the implementation of the internationalization handling in the
   upcoming ISO C++ standard library.  To support this another set of
   the functions using locale data exist which have an additional
   argument.

   Attention: all these functions are *not* standardized in any form.
   This is a proof-of-concept implementation.  */

/* Structure for reentrant locale using functions.  This is an
   (almost) opaque type for the user level programs.  */
# include <xlocale.h>

/* Special versions of the functions above which take the locale to
   use as an additional parameter.  */
extern long int wcstol_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, __locale_t __loc) __THROW;

extern unsigned long int wcstoul_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, __locale_t __loc) __THROW;

__extension__ extern long long int wcstoll_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, __locale_t __loc) __THROW;

__extension__ extern unsigned long long int wcstoull_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, int __base, __locale_t __loc) __THROW;

extern double wcstod_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, __locale_t __loc) __THROW;

extern float wcstof_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, __locale_t __loc) __THROW;

extern long double wcstold_l(const wchar_t * __restrict __nptr, wchar_t ** __restrict __endptr, __locale_t __loc) __THROW;
#endif				/* use GNU */

#ifdef __USE_XOPEN2K8
/* Copy SRC to DEST, returning the address of the terminating L'\0' in
   DEST.  */
extern wchar_t *wcpcpy(wchar_t * __restrict __dest, const wchar_t * __restrict __src) __THROW;

/* Copy no more than N characters of SRC to DEST, returning the address of
   the last character written into DEST.  */
extern wchar_t *wcpncpy(wchar_t * __restrict __dest, const wchar_t * __restrict __src, size_t __n) __THROW;

/* Wide character I/O functions.  */

/* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces
   a wide character string.  */
extern __FILE *open_wmemstream(wchar_t ** __bufloc, size_t * __sizeloc) __THROW;
#endif

#if defined __USE_ISOC95 || defined __USE_UNIX98
__BEGIN_NAMESPACE_STD
/* Select orientation for stream.  */
extern int fwide(__FILE * __fp, int __mode) __THROW;

/* Write formatted output to STREAM.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int fwprintf(__FILE * __restrict __stream, const wchar_t * __restrict __format, ...)
     /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */ ;
/* Write formatted output to stdout.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int wprintf(const wchar_t * __restrict __format, ...)
     /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */ ;
/* Write formatted output of at most N characters to S.  */
extern int swprintf(wchar_t * __restrict __s, size_t __n, const wchar_t * __restrict __format, ...) __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */ ;

/* Write formatted output to S from argument list ARG.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int vfwprintf(__FILE * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg)
     /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */ ;
/* Write formatted output to stdout from argument list ARG.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int vwprintf(const wchar_t * __restrict __format, __gnuc_va_list __arg)
     /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */ ;
/* Write formatted output of at most N character to S from argument
   list ARG.  */
extern int vswprintf(wchar_t * __restrict __s, size_t __n, const wchar_t * __restrict __format, __gnuc_va_list __arg) __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */ ;

/* Read formatted input from STREAM.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int fwscanf(__FILE * __restrict __stream, const wchar_t * __restrict __format, ...)
     /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */ ;
/* Read formatted input from stdin.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int wscanf(const wchar_t * __restrict __format, ...)
     /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */ ;
/* Read formatted input from S.  */
extern int swscanf(const wchar_t * __restrict __s, const wchar_t * __restrict __format, ...) __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */ ;

# if defined __USE_ISOC99 && !defined __USE_GNU \
     && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
     && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
#  ifdef __REDIRECT
/* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[
   GNU extension which conflicts with valid %a followed by letter
   s, S or [.  */
extern int __REDIRECT(fwscanf, (__FILE * __restrict __stream, const wchar_t * __restrict __format, ...), __isoc99_fwscanf)
     /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */ ;
extern int __REDIRECT(wscanf, (const wchar_t * __restrict __format, ...), __isoc99_wscanf)
     /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */ ;
extern int __REDIRECT_NTH(swscanf, (const wchar_t * __restrict __s, const wchar_t * __restrict __format, ...), __isoc99_swscanf)
     /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */ ;
#  else
extern int __isoc99_fwscanf(__FILE * __restrict __stream, const wchar_t * __restrict __format, ...);
extern int __isoc99_wscanf(const wchar_t * __restrict __format, ...);
extern int __isoc99_swscanf(const wchar_t * __restrict __s, const wchar_t * __restrict __format, ...) __THROW;
#   define fwscanf __isoc99_fwscanf
#   define wscanf __isoc99_wscanf
#   define swscanf __isoc99_swscanf
#  endif
# endif

__END_NAMESPACE_STD
#endif				/* Use ISO C95, C99 and Unix98. */
#ifdef __USE_ISOC99
    __BEGIN_NAMESPACE_C99
/* Read formatted input from S into argument list ARG.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int vfwscanf(__FILE * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg)
     /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */ ;
/* Read formatted input from stdin into argument list ARG.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int vwscanf(const wchar_t * __restrict __format, __gnuc_va_list __arg)
     /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */ ;
/* Read formatted input from S into argument list ARG.  */
extern int vswscanf(const wchar_t * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg) __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */ ;

# if !defined __USE_GNU \
     && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
     && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)
#  ifdef __REDIRECT
extern int __REDIRECT(vfwscanf, (__FILE * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg), __isoc99_vfwscanf)
     /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */ ;
extern int __REDIRECT(vwscanf, (const wchar_t * __restrict __format, __gnuc_va_list __arg), __isoc99_vwscanf)
     /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */ ;
extern int __REDIRECT_NTH(vswscanf, (const wchar_t * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg), __isoc99_vswscanf)
     /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */ ;
#  else
extern int __isoc99_vfwscanf(__FILE * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg);
extern int __isoc99_vwscanf(const wchar_t * __restrict __format, __gnuc_va_list __arg);
extern int __isoc99_vswscanf(const wchar_t * __restrict __s, const wchar_t * __restrict __format, __gnuc_va_list __arg) __THROW;
#   define vfwscanf __isoc99_vfwscanf
#   define vwscanf __isoc99_vwscanf
#   define vswscanf __isoc99_vswscanf
#  endif
# endif

__END_NAMESPACE_C99
#endif				/* Use ISO C99. */
    __BEGIN_NAMESPACE_STD
/* Read a character from STREAM.

   These functions are possible cancellation points and therefore not
   marked with __THROW.  */
extern wint_t fgetwc(__FILE * __stream);
extern wint_t getwc(__FILE * __stream);

/* Read a character from stdin.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern wint_t getwchar(void);

/* Write a character to STREAM.

   These functions are possible cancellation points and therefore not
   marked with __THROW.  */
extern wint_t fputwc(wchar_t __wc, __FILE * __stream);
extern wint_t putwc(wchar_t __wc, __FILE * __stream);

/* Write a character to stdout.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern wint_t putwchar(wchar_t __wc);

/* Get a newline-terminated wide character string of finite length
   from STREAM.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern wchar_t *fgetws(wchar_t * __restrict __ws, int __n, __FILE * __restrict __stream);

/* Write a string to STREAM.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern int fputws(const wchar_t * __restrict __ws, __FILE * __restrict __stream);

/* Push a character back onto the input buffer of STREAM.

   This function is a possible cancellation point and therefore not
   marked with __THROW.  */
extern wint_t ungetwc(wint_t __wc, __FILE * __stream);
__END_NAMESPACE_STD
#ifdef __USE_GNU
/* These are defined to be equivalent to the `char' functions defined
   in POSIX.1:1996.

   These functions are not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation they are cancellation points and
   therefore not marked with __THROW.  */
extern wint_t getwc_unlocked(__FILE * __stream);
extern wint_t getwchar_unlocked(void);

/* This is the wide character version of a GNU extension.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern wint_t fgetwc_unlocked(__FILE * __stream);

/* Faster version when locking is not necessary.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern wint_t fputwc_unlocked(wchar_t __wc, __FILE * __stream);

/* These are defined to be equivalent to the `char' functions defined
   in POSIX.1:1996.

   These functions are not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation they are cancellation points and
   therefore not marked with __THROW.  */
extern wint_t putwc_unlocked(wchar_t __wc, __FILE * __stream);
extern wint_t putwchar_unlocked(wchar_t __wc);

/* This function does the same as `fgetws' but does not lock the stream.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern wchar_t *fgetws_unlocked(wchar_t * __restrict __ws, int __n, __FILE * __restrict __stream);

/* This function does the same as `fputws' but does not lock the stream.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern int fputws_unlocked(const wchar_t * __restrict __ws, __FILE * __restrict __stream);
#endif

__BEGIN_NAMESPACE_C99
/* Format TP into S according to FORMAT.
   Write no more than MAXSIZE wide characters and return the number
   of wide characters written, or 0 if it would exceed MAXSIZE.  */
extern size_t wcsftime(wchar_t * __restrict __s, size_t __maxsize, const wchar_t * __restrict __format, const struct tm *__restrict __tp) __THROW;
__END_NAMESPACE_C99
# ifdef __USE_GNU
# include <xlocale.h>
/* Similar to `wcsftime' but takes the information from
   the provided locale and not the global locale.  */
extern size_t wcsftime_l(wchar_t * __restrict __s, size_t __maxsize, const wchar_t * __restrict __format, const struct tm *__restrict __tp, __locale_t __loc) __THROW;
# endif

/* The X/Open standard demands that most of the functions defined in
   the <wctype.h> header must also appear here.  This is probably
   because some X/Open members wrote their implementation before the
   ISO C standard was published and introduced the better solution.
   We have to provide these definitions for compliance reasons but we
   do this nonsense only if really necessary.  */
#if defined __USE_UNIX98 && !defined __USE_GNU
# define __need_iswxxx
# include <wctype.h>
#endif

/* Define some macros helping to catch buffer overflows.  */
#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
# include <bits/wchar2.h>
#endif

#ifdef __LDBL_COMPAT
# include <bits/wchar-ldbl.h>
#endif

__END_DECLS
#endif				/* _WCHAR_H defined */
#endif				/* wchar.h  */
/* Undefine all __need_* constants in case we are included to get those
   constants but the whole file was already read.  */
#undef __need_mbstate_t
#undef __need_wint_t


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44197.c<|end_filename|>
/* { dg-require-alias "" } */
/* { dg-require-visibility "" } */

#ifndef __USER_LABEL_PREFIX__
#define PREFIX ""
#else
#define xstr(s) str(s)
#define str(s)  #s
#define PREFIX  xstr(__USER_LABEL_PREFIX__)
#endif

typedef unsigned short int __uint16_t;
enum
{
  _ISupper = (1 << (0)), _ISlower = (1 << (1)), _ISalpha =
    (1 << (2)), _ISdigit = (1 << (3)), _ISxdigit = (1 << (4)), _ISspace =
    (1 << (5)), _ISprint = (1 << (6)), _ISgraph = (1 << (7)), _ISblank =
    (1 << (8)), _IScntrl = (1 << (9)), _ISpunct = (1 << (10)), _ISalnum =
    (1 << (11))
};
typedef __uint16_t __ctype_mask_t;
extern const __ctype_mask_t *__C_ctype_b;
extern
__typeof (__C_ctype_b)
   __C_ctype_b __asm__ (PREFIX "__GI___C_ctype_b")
  __attribute__ ((visibility ("hidden")));
     static const __ctype_mask_t __C_ctype_b_data[] = {
     };

const __ctype_mask_t *__C_ctype_b = __C_ctype_b_data + 128;
extern
__typeof (__C_ctype_b)
     __EI___C_ctype_b __attribute__ ((alias ("" "__GI___C_ctype_b")));


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34808.c<|end_filename|>
/* PR 34808 */
/* { dg-do compile }
/* { dg-options "-fno-tree-dominator-opts" } */

extern int flags;

struct r { int code; int val;};

void bar (void);
void baz (void);

int
foo (struct r *home)
{
  int n = 0;
  int regno = -1;

  if (home->code == 0)
    regno = home->val;

  if (home->code == 1)
      bar ();
  else if (regno >= 0)
    n = (regno == 16
	 ? 16
	 : (regno - (unsigned long long) (flags != 0 ? 63 : 15)
	    ? regno - 128
	    : -1));

  baz ();
  return n;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27571.c<|end_filename|>
/* PR target/27571
   alpha_does_function_need_gp did not properly skip jump table insns  */

int r3isseparator(int);
void r3isdigit(int);
void r3decimalvalue(int);

void r7todouble(int *storage, int *count) {
    int i = 0;
    int state = 0;
    int cc = 0;
    while (i > *count) {
	cc = *storage;
	switch (state) {
	case 0:
	    if (r3isseparator(cc))
		state = 1;
	case 1:
	    r3isdigit(cc);
	case 2:
	case 5:
	case 6:
	    r3decimalvalue(cc);
	}
	i++;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr34688.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
         typedef struct {
        }
         HashTable;
         typedef struct _zval_struct zval;
         typedef struct _zend_guard {
         HashTable *ht;
        }
         zvalue_value;
         struct _zval_struct {
         zvalue_value value;
        }
         php_output_globals;
         typedef struct _php_stream php_stream;
         typedef struct _php_stream_filter php_stream_filter;
         typedef struct _php_stream_bucket_brigade php_stream_bucket_brigade;
         typedef enum {
         PSFS_ERR_FATAL,  PSFS_FEED_ME,  PSFS_PASS_ON, }
         php_stream_filter_status_t;
         typedef struct _php_stream_filter_ops {
         php_stream_filter_status_t (*filter)(    php_stream *stream,    php_stream_filter *thisfilter,    php_stream_bucket_brigade *buckets_in,    php_stream_bucket_brigade *buckets_out,    size_t *bytes_consumed,    int flags    );
         void (*dtor)(php_stream_filter *thisfilter );
         const char *label;
        }
         php_stream_filter_ops;
         struct _php_stream_filter {
        };
         typedef struct _php_stream_filter_factory {
         php_stream_filter *(*create_filter)(const char *filtername, zval *filterparams, int persistent );
        }
         php_stream_filter_factory;
         typedef enum _php_conv_err_t {
         PHP_CONV_ERR_SUCCESS = 0,  PHP_CONV_ERR_UNKNOWN,  PHP_CONV_ERR_TOO_BIG,  PHP_CONV_ERR_INVALID_SEQ,  PHP_CONV_ERR_UNEXPECTED_EOS,  PHP_CONV_ERR_EXISTS,  PHP_CONV_ERR_MORE,  PHP_CONV_ERR_ALLOC,  PHP_CONV_ERR_NOT_FOUND }
         php_conv_err_t;
         typedef struct _php_conv php_conv;
         typedef php_conv_err_t (*php_conv_convert_func)(php_conv *, const char **, size_t *, char **, size_t *);
         struct _php_conv {
         php_conv_convert_func convert_op;
        }
         php_conv_base64_decode;
         typedef struct _php_conv_qprint_decode {
         php_conv _super;
         const char *lbchars;
        }
         php_conv_qprint_decode;
         static php_conv_err_t php_conv_qprint_decode_convert(php_conv_qprint_decode *inst, const char **in_pp, size_t *in_left_p, char **out_pp, size_t *out_left_p) {
         size_t icnt, ocnt;
         unsigned char *ps, *pd;
         unsigned int scan_stat;
         unsigned int lb_ptr, lb_cnt;
         for (;
       ;
       ) {
         switch (scan_stat) {
         case 0: {
         if (*ps == '=') {
         scan_stat = 1;
        }
     else {
         if (ocnt < 1) {
         goto out;
        }
         *(pd++) = *ps;
         ocnt--;
        }
        }
      break;
         case 1: {
         if (*ps == ' ' || *ps == '\t') {
        }
     else if (!inst->lbchars && lb_cnt == 0 && *ps == '\r') {
         lb_cnt++;
         scan_stat = 5;
         break;
        }
     else if (!inst->lbchars && lb_cnt == 0 && *ps == '\n') {
         scan_stat = 0;
         break;
        }
        }
         case 2: {
         if (icnt <= 0) {
         goto out;
        }
        }
         case 3: {
        }
         case 4: {
         ps++, icnt--;
        }
        }
        }
        out:  *in_pp = (const char *)ps;
        }
         static php_conv_err_t php_conv_qprint_decode_ctor(php_conv_qprint_decode *inst, const char *lbchars, size_t lbchars_len, int lbchars_dup, int persistent) {
         inst->_super.convert_op = (php_conv_convert_func) php_conv_qprint_decode_convert;
        }
         typedef struct _php_convert_filter {
         php_conv *cd;
        }
         php_convert_filter;
         static php_conv *php_conv_open(int conv_mode, const HashTable *options, int persistent) {
         php_conv *retval = ((void *)0);
         switch (conv_mode) {
         case 4: {
         char *lbchars = ((void *)0);
         size_t lbchars_len;
         if (lbchars != ((void *)0)) {
         if (php_conv_qprint_decode_ctor((php_conv_qprint_decode *)retval, lbchars, lbchars_len, 1, persistent)) {
        }
        }
        }
        }
        }
         static int php_convert_filter_ctor(php_convert_filter *inst,  int conv_mode, HashTable *conv_opts,  const char *filtername, int persistent) {
         if ((inst->cd = php_conv_open(conv_mode, conv_opts, persistent)) == ((void *)0)) {
        }
        }
         static php_stream_filter_status_t strfilter_convert_filter(  php_stream *stream,  php_stream_filter *thisfilter,  php_stream_bucket_brigade *buckets_in,  php_stream_bucket_brigade *buckets_out,  size_t *bytes_consumed,  int flags  ) {
        }
         static void strfilter_convert_dtor(php_stream_filter *thisfilter ) {
        }
         static php_stream_filter_ops strfilter_convert_ops = {
         strfilter_convert_filter,  strfilter_convert_dtor,  "convert.*" };
         static php_stream_filter *strfilter_convert_create(const char *filtername, zval *filterparams, int persistent ) {
         php_convert_filter *inst;
         int conv_mode = 0;
         if (php_convert_filter_ctor(inst, conv_mode,   (filterparams != ((void *)0) ? (*filterparams).value.ht : ((void *)0)),   filtername, persistent) != 0) {
        }
        }
         static php_stream_filter_factory strfilter_convert_factory = {
         strfilter_convert_create };
         static const struct {
         php_stream_filter_ops *ops;
         php_stream_filter_factory *factory;
        }
         standard_filters[] = {
         {
       &strfilter_convert_ops, &strfilter_convert_factory }
        };
         int zm_startup_standard_filters(int type, int module_number ) {
         int i;
         for (i = 0;
        standard_filters[i].ops;
        i++) {
        }
        }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33641.c<|end_filename|>
/* This failed with type checking enabled.  */

typedef enum { one, two } exp;
extern exp pe;
extern char pt[256];
void psd (void (*f) (void *), void *p);
static void rle (void *e) { }
void
foo (void)
{
  psd ((void (*)(void *)) (rle), (void *) (pt + pe));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43186.c<|end_filename|>
int n;

void foo (int i)
{
  int a, b;

  if (!i)
    for (a = 1; a < 4; a++)
      if (a)
	for (b = 1; b < 3; b++)
	  foo (b);

  n++;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr67506.c<|end_filename|>
extern struct _IO_FILE *stderr;
typedef long integer;
typedef unsigned char byte;
short nl;
byte * tfmfilearray;
integer charbase, ligkernbase;
unsigned char charsonline;
short c;
unsigned short r;
struct {
  short cc;
  integer rr;
} labeltable[259];
short sortptr;
unsigned char activity[(32510) + 1];
integer ai, acti;
extern void _IO_putc (char, struct _IO_FILE *);

void
mainbody (void)
{
  register integer for_end;
  if (c <= for_end)
    do {
      if (((tfmfilearray + 1001)[4 * (charbase + c) + 2] % 4) == 1)
	{
	  if ( r < nl )
	    ;
	  else
	    {
	      while (labeltable[sortptr ].rr > r)
		labeltable[sortptr + 1 ]= labeltable[sortptr];
	    }
	}
    } while (c++ < for_end);

  if (ai <= for_end)
    do {
      if (activity[ai]== 2)
	{
	  r = (tfmfilearray + 1001)[4 * (ligkernbase + (ai))];
	  if (r < 128)
	    {
	      r = r + ai + 1 ;
	      if (r >= nl)
		{
		  if (charsonline > 0)
		    _IO_putc ('\n', stderr);
		}
	    }
	}
    } while (ai++ < for_end);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr67143.c<|end_filename|>
long a, c;
int b;
int d;
void ut_dbg_assertion_failed() __attribute__((noreturn));
long dict_index_is_spatial(int *);
void btr_block_get_func(char *);
long btr_page_get_level_low(unsigned char *);
void btr_validate_level(long p1) {
  unsigned char *e;
  while (p1 != btr_page_get_level_low(e)) {
    if (__builtin_expect(b, 0))
      ut_dbg_assertion_failed();
    if (dict_index_is_spatial(&d))
      while (c != 5535) {
        __sync_add_and_fetch(&a, 536870912);
        btr_block_get_func("");
      }
  }
  for (long i; i; ++i)
    btr_validate_level(-i);
}


<|start_filename|>v2/testdata/cpp-expand/007.c<|end_filename|>
#define a(b) b
#define c a
c(42)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030910-1.c<|end_filename|>
/* The gimplifier was getting confused when taking the real or
   imaginary component of a complex rvalue.  */

void test()
{
  __complex double dc;
  double d;

  d = __real (dc * dc);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080903-1.c<|end_filename|>
struct bar { unsigned short length; };

int
dummy(void)
{
  char c[4096];
  struct bar *a;
  struct bar *b;

  a->length = ((char *) b - c);
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030708-1.c<|end_filename|>
/* PR 10795.  */

/* ix86_expand_carry_flag_compare() in i386.c swapped the comparison
   operands without checking that the compare instruction, cmpl, would
   accept the swapped operands.  */

extern const char a[];

int
foo (const char *p)
{
  return (p > a) ? 0 : 2;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46002.c<|end_filename|>
/* { dg-options "-fira-algorithm=priority" } */
char **
foo (char **p, char *cmp, unsigned i)
{
  for (; *p; p++)
    if (__builtin_strncmp (*p, cmp, i))
      if (i == __builtin_strlen (*p))
	break;
  return p;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr56571.c<|end_filename|>
/* { dg-options "-funroll-loops -ftracer" } */
int a, b;

int f(void)
{
    (a % b) && f();
    a = (0 || a | (a ? : 1));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr43791.c<|end_filename|>
int owner();
int clear();

static void fixup() {
   clear();
}

inline __attribute__ ((always_inline))
void slowtrylock(void) {
     if (owner())
         fixup();
}

void fasttrylock(void (*slowfn)()) {
     slowfn();
}

void trylock(void) {
     fasttrylock(slowtrylock);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr27087.c<|end_filename|>
extern int ptbl[4];
extern int ctbl[4];

void doViews(void) {
    int  *c = ctbl, *p = ptbl;
    while (1)
  {
        p++;
        c++;
        if (*p)
        {
            if (c == p)
            {
                if (*c)
                    return;
            }
            else
              return;
        }
    }

    g();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr55955.c<|end_filename|>
/* { dg-require-effective-target int32plus } */
/* PR tree-optimization/55955 */

int b;

void
foo (int x)
{
  int a;
  for (a = x; a < 2; a++)
    for (b = 0; b < 2; b++)
      *(unsigned short *) 0x100000UL %= 46;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53495.c<|end_filename|>
/* PR rtl-optimization/53495 */

int a, b, c, d, e, g;
static char
fn1 (char p1, int p2)
{
  return p1 || p2 < 0 || p2 >= 1 || 1 >> p2 ? p1 : 0;
}

static long long fn2 (int *, int);
static int fn3 ();
void
fn4 ()
{
  fn3 ();
  fn2 (&a, d);
}

long long
fn2 (int *p1, int p2)
{
  int f = -1L;
  for (; c <= 1; c++)
    {
      *p1 = 0;
      *p1 = fn1 (c, p2 ^ f);
    }
  a = 0;
  e = p2;
  return 0;
}

int
fn3 ()
{
  b = 3;
  for (; b; b--)
    c++;
  g = 0 >= c;
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050801-1.c<|end_filename|>
__inline void libc_name_p (void)
{
  enum { A = 1 };
}
void nothrow_libfn_p (void)
{
  libc_name_p ();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59322.c<|end_filename|>

int a, b, d;
short c;

int
foo ()
{
  for (b = 0; b; b = a)
    for (c = 18; c < 10; c++)
      {
	d = c;
	if (d)
	  return 0;
      }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32482.c<|end_filename|>
typedef struct { unsigned long bits[((((1 << 0))+32 -1)/32)]; } nodemask_t;
static inline __attribute__((always_inline))
int bitmap_empty(const unsigned long *src, int nbits)
{
  return ! (*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
}
static inline __attribute__((always_inline))
int __nodes_empty(const nodemask_t *srcp, int nbits)
{
 return bitmap_empty(srcp->bits, nbits);
}
extern nodemask_t node_online_map;
void drain_array(void);
void drain_cpu_caches(void)
{
 int node;
 if (!__nodes_empty(&(node_online_map), (1 << 0)))
     for (((node)) = 0; ((node)) < 1; ((node))++)
     {
     }
 if (!__nodes_empty(&(node_online_map), (1 << 0)))
     drain_array();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20050215-1.c<|end_filename|>
/* PR tree-optimization/18947 */
/* { dg-options "-fgnu89-inline" } */
extern __inline void f1 (void) { }
extern __inline void f2 (void) { f1 (); }
void f2 (void) {}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52437.c<|end_filename|>
/* PR target/52437 */

int f, g, i, j;

void
fn1 ()
{
  for (;;)
    {
      fn2 ();
      j = 1;
      for (i = 0; i <= 3; i++)
	{
	  for (g = 1; g >= 0; g--)
	    f = 0, j &= 11;
	}
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr46883.c<|end_filename|>
void bar (unsigned char *q, unsigned short *data16s, int len)
{
  int i;

  for (i = 0; i < len; i++)
    {
      q[2 * i] =
        (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF)) & 0xFF;
      q[2 * i + 1] =
        ((unsigned short)
         (((data16s[i] & 0xFF) << 8) | ((data16s[i] >> 8) & 0xFF))) >> 8;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040817-1.c<|end_filename|>
/* PR 17051: SRA failed to rename the VOPS properly.  */

struct A
{
    char c, d;
};

void foo(struct A *p)
{
    struct A a = *p;

    if (p->c)
        bar1(a);
    else
    {
        if (p) bar2(a,a.c);
        bar3(a.c);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41101.c<|end_filename|>
int func(int);

void
bug(int* x, int* y, unsigned long int N)
{
  unsigned long int i;
  int* t;

  while (1)
    {
      for (i=1; i<=N; i++)
	{
	  y[i] = func(x[i] - x[1]);
	  if (y[i])
	    return;
	}
      t=x; x=y; y=t;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080812-1.c<|end_filename|>
/* PR middle-end/37014 */

void bar (signed char *);

void
foo (int x, int y)
{
  int i;
  signed char a[123], b[123], c;
  for (i = 0; i < 123; i++)
    {
      int e = y - x;
      int d = e < 0 ? -e : e;
      c = d < 75;
      a[y] = c;
      b[y] = c;
      y--;
    }
  bar (b);
  bar (a);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20121220-1.c<|end_filename|>
typedef unsigned char uint8_t;
typedef unsigned int uint32_t;
static __attribute__ (( always_inline )) __inline__
void rop_8_notsrc_or_dst(uint8_t *dst, uint8_t src)
{
  *dst = (~(src)) | (*dst);
}
void cirrus_colorexpand_notsrc_or_dst_8 (uint8_t * dst, int bits)
{
  uint8_t src;
  uint32_t colors[2];
  src = colors[bits];
  rop_8_notsrc_or_dst(dst, src);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-exprparen.c<|end_filename|>
#define LBR1 ( ( ( ( ( ( ( ( ( (
#define LBR2 LBR1 LBR1 LBR1 LBR1 LBR1 LBR1 LBR1 LBR1 LBR1 LBR1
#define LBR3 LBR2 LBR2 LBR2 LBR2 LBR2 LBR2 LBR2 LBR2 LBR2 LBR2
#define LBR4 LBR3 LBR3 LBR3 LBR3 LBR3 LBR3 LBR3 LBR3 LBR3 LBR3
#define LBR5 LBR4 LBR4 LBR4 LBR4 LBR4 LBR4 LBR4 LBR4 LBR4 LBR4
#define LBR6 LBR5 LBR5 LBR5 LBR5 LBR5 LBR5 LBR5 LBR5 LBR5 LBR5

#define RBR1 ) ) ) ) ) ) ) ) ) )
#define RBR2 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1
#define RBR3 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2
#define RBR4 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3
#define RBR5 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4
#define RBR6 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5

int q5_var = LBR4 0 RBR4;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr26213.c<|end_filename|>
void
xnanosleep (_Bool overflow)
{
  struct { int tv_nsec; } ts_sleep;
  if (0 <= ts_sleep.tv_nsec)
    overflow |= 1;

  for (;;)
    {
      if (overflow)
        ts_sleep.tv_nsec = 0;
      if (foo (ts_sleep))
        break;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/ieee/20000320-1.c<|end_filename|>
#if __INT_MAX__ != 2147483647 || (__LONG_LONG_MAX__ != 9223372036854775807ll && __LONG_MAX__ != 9223372036854775807ll)
int main(void) { exit (0); }
#else
#if __LONG_MAX__ != 9223372036854775807ll
typedef unsigned long long ull;
#else
typedef unsigned long ull;
#endif
typedef unsigned ul;

union fl {
  float	f;
  ul l;
} uf;
union dl {
  double d;
  ull ll;
} ud;

int failed = 0;

void c(ull d, ul f)
{
  ud.ll = d;
  uf.f = (float) ud.d;
  if (uf.l != f)
    {
      failed++;
    }
}

int main()
{
  if (sizeof (float) != sizeof (ul)
      || sizeof (double) != sizeof (ull))
    exit (0);
  
#if (defined __arm__ || defined __thumb__) && ! (defined __ARMEB__ || defined __VFP_FP__)
  /* The ARM always stores FP numbers in big-wordian format,
     even when running in little-byteian mode.  */
  c(0x0000000036900000ULL, 0x00000000U);
  c(0x0000000136900000ULL, 0x00000001U);
  c(0xffffffff369fffffULL, 0x00000001U);
  c(0x0000000036A00000ULL, 0x00000001U);
  c(0xffffffff36A7ffffULL, 0x00000001U);
  c(0x0000000036A80000ULL, 0x00000002U);
  c(0xffffffff36AfffffULL, 0x00000002U);
  c(0x0000000036b00000ULL, 0x00000002U);
  c(0x0000000136b00000ULL, 0x00000002U);
  
  c(0xdfffffff380fffffULL, 0x007fffffU);
  c(0xe0000000380fffffULL, 0x00800000U);
  c(0xe0000001380fffffULL, 0x00800000U);
  c(0xffffffff380fffffULL, 0x00800000U);
  c(0x0000000038100000ULL, 0x00800000U);
  c(0x0000000138100000ULL, 0x00800000U);
  c(0x1000000038100000ULL, 0x00800000U);
  c(0x1000000138100000ULL, 0x00800001U);
  c(0x2fffffff38100000ULL, 0x00800001U);
  c(0x3000000038100000ULL, 0x00800002U);
  c(0x5000000038100000ULL, 0x00800002U);
  c(0x5000000138100000ULL, 0x00800003U);
#else
  c(0x3690000000000000ULL, 0x00000000U);
  c(0x3690000000000001ULL, 0x00000001U);
  c(0x369fffffffffffffULL, 0x00000001U);
  c(0x36A0000000000000ULL, 0x00000001U);
  c(0x36A7ffffffffffffULL, 0x00000001U);
  c(0x36A8000000000000ULL, 0x00000002U);
  c(0x36AfffffffffffffULL, 0x00000002U);
  c(0x36b0000000000000ULL, 0x00000002U);
  c(0x36b0000000000001ULL, 0x00000002U);
  
  c(0x380fffffdfffffffULL, 0x007fffffU);
  c(0x380fffffe0000000ULL, 0x00800000U);
  c(0x380fffffe0000001ULL, 0x00800000U);
  c(0x380fffffffffffffULL, 0x00800000U);
  c(0x3810000000000000ULL, 0x00800000U);
  c(0x3810000000000001ULL, 0x00800000U);
  c(0x3810000010000000ULL, 0x00800000U);
  c(0x3810000010000001ULL, 0x00800001U);
  c(0x381000002fffffffULL, 0x00800001U);
  c(0x3810000030000000ULL, 0x00800002U);
  c(0x3810000050000000ULL, 0x00800002U);
  c(0x3810000050000001ULL, 0x00800003U);
#endif

  if (failed)
    abort ();
  else
    exit (0);
}
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40556.c<|end_filename|>
struct A {};

struct A foo()
{
  return foo();
}

void bar()
{
  foo();
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071117-1.c<|end_filename|>
/* PR middle-end/34134 */
/* { dg-require-effective-target alloca } */

extern void bar (void *, int);

int foo (int i)
{
  char *p = __builtin_stack_save ();
  void *q = __builtin_alloca (i);
  bar (q, i);
  __builtin_stack_restore (p);
  bar ("", 0);
  return 6;
}


<|start_filename|>v2/headers/linux_386/usr/include/i386-linux-gnu/bits/locale.h<|end_filename|>
/* Definition of locale category symbol values.
   Copyright (C) 2001-2018 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

#if !defined _LOCALE_H && !defined _LANGINFO_H
# error "Never use <bits/locale.h> directly; include <locale.h> instead."
#endif

#ifndef _BITS_LOCALE_H
#define _BITS_LOCALE_H	1

#define __LC_CTYPE		 0
#define __LC_NUMERIC		 1
#define __LC_TIME		 2
#define __LC_COLLATE		 3
#define __LC_MONETARY		 4
#define __LC_MESSAGES		 5
#define __LC_ALL		 6
#define __LC_PAPER		 7
#define __LC_NAME		 8
#define __LC_ADDRESS		 9
#define __LC_TELEPHONE		10
#define __LC_MEASUREMENT	11
#define __LC_IDENTIFICATION	12

#endif				/* bits/locale.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/limits-declparen.c<|end_filename|>
#define PTR1 (* (* (* (* (* (* (* (* (* (*
#define PTR2 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1 PTR1
#define PTR3 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2 PTR2
#define PTR4 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3 PTR3
#define PTR5 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4 PTR4
#define PTR6 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5 PTR5

#define RBR1 ) ) ) ) ) ) ) ) ) )
#define RBR2 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1 RBR1
#define RBR3 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2 RBR2
#define RBR4 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3 RBR3
#define RBR5 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4 RBR4
#define RBR6 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5 RBR5

int PTR4 q4_var RBR4 = 0;


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060421-1.c<|end_filename|>
/* This test used to ICE on ARM with -mcpu=iwmmxt.  */
void
foo (void)
{
  long long int a;
  unsigned long b[249]; /* >= 249 causes failure */
  register unsigned int c;
  b[c] = (a & (1ULL << c)) ? 1 : 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040317-1.c<|end_filename|>
int String2Array(int len, char strarr[][len])
{
  strarr[0];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr58344.c<|end_filename|>
/* PR middle-end/58344 */
/* { dg-do compile } */

struct U {};
static struct U a[1];
extern void bar (struct U);

void
foo (void)
{
  bar (a[0]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20090518-1.c<|end_filename|>
float
foo(int i)
{
  int j = i == 42;
  return *(float *)&j;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54321.c<|end_filename|>
/* PR tree-optimization/54321 */
struct S { char s[0]; } *a;

void
foo (void)
{
  char *b = a->s;
  int c = 0;
  b[0] = 0;
  while (++c < 9)
    b[c] = 255;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39614-3.c<|end_filename|>
int i;
void
f (void)
{
  i = (1 ? 1 / 0 : 1 / 0);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41987.c<|end_filename|>
/* PR tree-optimization/41987 */

#define TESTIT(TYPE) do { \
  _Complex TYPE ylm; \
  TYPE nbond; \
  ylm = 0; \
  nbond = 0; \
  ylm = ylm / nbond; \
} while (0)

void qparm_colvar(void)
{
  TESTIT (float);
  TESTIT (double);
  TESTIT (long double);

  TESTIT (char);
  TESTIT (short);
  TESTIT (int);
  TESTIT (long);
  TESTIT (long long);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030903-1.c<|end_filename|>
/* Derived from PR optimization/11700.  */
/* The compiler used to ICE during reload for m68k targets.  */

void check_complex (__complex__ double, __complex__ double,
                    __complex__ double, __complex__ int);
void check_float (double, double, double, int);
extern double _Complex conj (double _Complex);
extern double carg (double _Complex __z);

static double minus_zero;

void
conj_test (void)
{
  check_complex (conj (({ __complex__ double __retval;
			  __real__ __retval = (0.0);
			  __imag__ __retval = (0.0);
			  __retval; })),
		 ({ __complex__ double __retval;
		    __real__ __retval = (0.0);
		    __imag__ __retval = (minus_zero);
		    __retval; }), 0, 0);
}

void
carg_test (void)
{
  check_float (carg (({ __complex__ double __retval;
			__real__ __retval = (2.0);
			__imag__ __retval = (0);
			__retval; })), 0, 0, 0);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr33382.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;
typedef struct {
    int disable;
    char *searchconfig[];
} config_t;
typedef struct {
    void *lng;
} arglist_t;
config_t config = {
    .searchconfig = {
		     ((void *) 0)}
};

arglist_t arglist[] = {
    {
     &config.searchconfig[0]}
};
const int arglistsize = ((int) (sizeof(arglist) / sizeof(arglist_t)));
void show_configuration(char *arg)
{
    int i;

    if (!__extension__( {
		       size_t
		       __s1_len,
		       __s2_len; (__builtin_constant_p(arglist[i].lng)
				  && (__s1_len = (!((size_t)
						    (const void *)
						    1)
						  || __s2_len >= 4))
				  ? : (__builtin_constant_p(arglist[i].lng)
				       && ((size_t)
					   (const void *)
					   4)
				       ? (__builtin_constant_p(arg)
					  && ((size_t) (const void *) 1) ?
					  : (__extension__( {
							   __const * __s2 =
							   (__const *)
							   (arg);
							   register
							   __result =
							   (((__const
							      *) (arglist
								  [i].
								  lng))[0]
							    - __s2[0]);
							   if (__s1_len ==
							       0) {
							   if (__s1_len ==
							       0) {
							   __result =
							   (((__const
							      unsigned char
							      *) (__const
								  char
								  *)
							     (arglist[i].
							      lng))[3] -
							    __s2[3]);}
							   }
							   __result;}
      ))):
				       (__builtin_constant_p(arg)
					?
					(__builtin_constant_p
					 (arglist[i].lng)
					 ? : (__extension__( {
							    char
							    __result
							    =
							    ((__const
							      unsigned *)
							     (arg))[0];
							    if
							    (__s2_len
							     > 0
							     && __result ==
							     0) {
							    if (__s2_len >
								1
								&& __result
								== 0) {
							    }
							    }
							    __result;}
      ))):



					__builtin_strcmp(arglist[i].lng,
							 arg))));}
	))
	return;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20000120-2.c<|end_filename|>
/* { dg-options "-fgnu89-inline" } */

extern __inline__ int
odd(int i)
{
  return i & 0x1;
}

int
foo(int i, int j)
{
  return odd(i + j);
}

int
odd(int i)
{
  return i & 0x1;
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr40964.c<|end_filename|>
struct alloc2 {
    int bla;
    char * __restrict data;
    char * __restrict data2;
};
struct alloc2 b;
void * f (void)
{
  return b.data;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr53058.c<|end_filename|>
/* PR tree-optimization/53058 */

int a, b, c;

void
foo ()
{
  c = b >> 16;
  if (c > 32767)
    c = 0;
  a = b;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37341.c<|end_filename|>
/* PR rtl-optimization/37341 */

short int a;
int b;

static inline int
f1 (int x, int y)
{
  if (x < 0 || y < 0 || y >= sizeof (int) * 8 || x > (1 >> y))
    return x;
}

static inline unsigned int
f2 (int x, int y)
{
  if (y <= 0 && x && y < __INT_MAX__ / x)
    return x;
  return x * y;
}

int
f3 (void)
{
  return (signed char) 0xb6;
}

unsigned int
f4 (unsigned int x)
{
  while (1)
    {
      if ((f2 (f3 (), (f1 (a, b)))) < x)
	return 1;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/simd-3.c<|end_filename|>
#include <float.h>

/* If double is not wider than float, we probably don't have DFmode,
   or at least it's not as wide as double.  */
#if DBL_MANT_DIG > FLT_MANT_DIG
typedef double floatvect2 __attribute__((vector_size (16)));

typedef union
{
    floatvect2 vector;
    double f[2];
}resfloatvect2;

void tempf(double *x, double *y)
{
        floatvect2 temp={x[0],x[1]};
        floatvect2 temp1={y[0],y[1]};
        resfloatvect2 temp2;
        temp2.vector=temp+temp1;
        x[0]=temp2.f[0];
        x[1]=temp2.f[1];
}
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr49049.c<|end_filename|>
/* { dg-skip-if "ptxas times out" { nvptx-*-* } { "-Os" } { "" } } */

__extension__ typedef unsigned long long int uint64_t;

static int
sub (int a, int b)
{
  return a - b;
}

static uint64_t
add (uint64_t a, uint64_t b)
{
  return a + b;
}

int *ptr;

int
foo (uint64_t arg1, int *arg2)
{
  int j;
  for (; j < 1; j++)
    {
      *arg2 |= sub ( sub (sub (j || 1 ^ 0x1, 1), arg1 < 0x1 <=
						   sub (1, *ptr & j)),
		     (sub ( j != 1 || sub (j && j, 1) >= 0,
		       add (!j > arg1, 0x35DLL))));
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120830-1.c<|end_filename|>
int keyring_search(void);
int keydb_search2 (int *hdfound, int *hdcurrent, int *a)
{
    int rc = -1;
    while (rc == -1) {
        if (*a == 1)
            rc = keyring_search ();
        if (rc == -1)
            *hdcurrent++;
	if (!rc)
            *hdfound = *hdcurrent;
    }
    return rc;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44246.c<|end_filename|>
int main(int argc, char *argv[])
{
  strcat(argv[0], "X");
  return strlen(argv[0]);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/memcpy-2.c<|end_filename|>
static const char OggFLAC__MAPPING_VERSION_MAJOR = 1;
void f(void)
{
  char synthetic_first_packet_body[10];
  char *b = synthetic_first_packet_body;
  b+=4u;
  __builtin_memcpy (b, &OggFLAC__MAPPING_VERSION_MAJOR, (1u));
}




<|start_filename|>v2/testdata/cpp-expand/003.h<|end_filename|>
#define str(s) # s

str(: @\n)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/mangle-1.c<|end_filename|>

#if __nvptx__
/* Doesn't like . in labels.  */
#define SEP "$"
#else
#define SEP "."
#endif

int foo(void)
{
  static int x asm ("x") = 3;
  return x++;
}

int X2 asm ("x" SEP "0") = 4;
int X3 asm ("_x" SEP "0") = 5;



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20071207-1.c<|end_filename|>
/* PR tree-optimization/34371 */
/* Testcase by <NAME> <<EMAIL>> */

void centerln (int width, int ch, char *s)
{
  unsigned int sidebar;
  int i;
  char linet1[1000];
  char linet2[100];
  sidebar = (width - __builtin_strlen (s)) / 2;
  for (i = 0; i < sidebar; i++)
    linet2[i] = ch;
  __builtin_strcpy (linet1, linet2);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120917-1.c<|end_filename|>
typedef long long curl_off_t;
int tool_seek_cb(void *userdata, curl_off_t offset, int whence)
{
  if(offset > 0x7FFFFFFFLL - 0x1LL) 
{
    curl_off_t left = offset;
    while(left) 
{
      long step = (left > 0x7FFFFFFFLL - 0x1LL) ? 2147483647L - 1L : (long)left;
      left -= step;
    }
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr47967.c<|end_filename|>
/* PR tree-optimization/47967 */
/* { dg-require-effective-target untyped_assembly } */

extern void abort (void);
static void bar ();

void
foo ()
{
  bar (1);
}

static void
bar (double i)
{
  if (i)
    abort ();
}


<|start_filename|>v2/operand.go<|end_filename|>
// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

// [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

import (
	"fmt"
	"math"
	"math/bits"

	"github.com/cznic/ir"
)

var (
	// [0]6.3.1.1-1
	//
	// Every integer type has an integer conversion rank defined as
	// follows:
	intConvRank = [maxTypeKind]int{
		Bool:      1,
		Char:      2,
		SChar:     2,
		UChar:     2,
		Short:     3,
		UShort:    3,
		Int:       4,
		UInt:      4,
		Long:      5,
		ULong:     5,
		LongLong:  6,
		ULongLong: 6,
	}

	isSigned = [maxTypeKind]bool{
		Bool:     true,
		Char:     true,
		SChar:    true,
		Short:    true,
		Int:      true,
		Long:     true,
		LongLong: true,
	}

	isArithmeticType = [maxTypeKind]bool{
		Bool:      true,
		Char:      true,
		Enum:      true,
		Int:       true,
		Long:      true,
		LongLong:  true,
		SChar:     true,
		Short:     true,
		UChar:     true,
		UInt:      true,
		ULong:     true,
		ULongLong: true,
		UShort:    true,

		Float:      true,
		Double:     true,
		LongDouble: true,

		FloatComplex:      true,
		DoubleComplex:     true,
		LongDoubleComplex: true,
	}
)

// Address represents the address of a variable.
type Address struct { //TODO-
	Declarator *Declarator
	Offset     uintptr
}

func (a *Address) String() string {
	return fmt.Sprintf("(%s+%d, %s)", dict.S(a.Declarator.Name()), a.Offset, a.Declarator.Linkage)
}

// UsualArithmeticConversions performs transformations of operands of a binary
// operation. The function panics if either of the operands is not an
// artithmetic type.
//
// [0]6.3.1.8
//
// Many operators that expect operands of arithmetic type cause conversions and
// yield result types in a similar way. The purpose is to determine a common
// real type for the operands and result. For the specified operands, each
// operand is converted, without change of type domain, to a type whose
// corresponding real type is the common real type. Unless explicitly stated
// otherwise, the common real type is also the corresponding real type of the
// result, whose type domain is the type domain of the operands if they are the
// same, and complex otherwise. This pattern is called the usual arithmetic
// conversions:
func UsualArithmeticConversions(m Model, a, b Operand) (Operand, Operand) {
	if !a.isArithmeticType() || !b.isArithmeticType() {
		panic(fmt.Sprint(a, b))
	}

	a = a.normalize(m)
	b = b.normalize(m)
	// First, if the corresponding real type of either operand is long
	// double, the other operand is converted, without change of type
	// domain, to a type whose corresponding real type is long double.
	if a.Type.Kind() == LongDoubleComplex || b.Type.Kind() == LongDoubleComplex {
		return a.ConvertTo(m, LongDoubleComplex), b.ConvertTo(m, LongDoubleComplex)
	}

	if a.Type.Kind() == LongDouble || b.Type.Kind() == LongDouble {
		return a.ConvertTo(m, LongDouble), b.ConvertTo(m, LongDouble)
	}

	// Otherwise, if the corresponding real type of either operand is
	// double, the other operand is converted, without change of type
	// domain, to a type whose corresponding real type is double.
	if a.Type.Kind() == DoubleComplex || b.Type.Kind() == DoubleComplex {
		return a.ConvertTo(m, DoubleComplex), b.ConvertTo(m, DoubleComplex)
	}

	if a.Type.Kind() == Double || b.Type.Kind() == Double {
		return a.ConvertTo(m, Double), b.ConvertTo(m, Double)
	}

	// Otherwise, if the corresponding real type of either operand is
	// float, the other operand is converted, without change of type
	// domain, to a type whose corresponding real type is float.)
	if a.Type.Kind() == FloatComplex || b.Type.Kind() == FloatComplex {
		return a.ConvertTo(m, FloatComplex), b.ConvertTo(m, FloatComplex)
	}

	if a.Type.Kind() == Float || b.Type.Kind() == Float {
		return a.ConvertTo(m, Float), b.ConvertTo(m, Float)
	}

	// Otherwise, the integer promotions are performed on both operands.
	// Then the following rules are applied to the promoted operands:
	if !a.isIntegerType() || !b.isIntegerType() {
		//dbg("", a)
		//dbg("", b)
		panic("TODO")
	}

	a = a.integerPromotion(m)
	b = b.integerPromotion(m)

	// If both operands have the same type, then no further conversion is
	// needed.
	if a.Type.Equal(b.Type) {
		return a, b
	}

	// Otherwise, if both operands have signed integer types or both have
	// unsigned integer types, the operand with the type of lesser integer
	// conversion rank is converted to the type of the operand with greater
	// rank.
	if a.isSigned() == b.isSigned() {
		t := a.Type
		if intConvRank[b.Type.Kind()] > intConvRank[a.Type.Kind()] {
			t = b.Type
		}
		return a.ConvertTo(m, t), b.ConvertTo(m, t)
	}

	// Otherwise, if the operand that has unsigned integer type has rank
	// greater or equal to the rank of the type of the other operand, then
	// the operand with signed integer type is converted to the type of the
	// operand with unsigned integer type.
	switch {
	case a.isSigned(): // b is unsigned
		if intConvRank[b.Type.Kind()] >= intConvRank[a.Type.Kind()] {
			return a.ConvertTo(m, b.Type), b
		}
	case b.isSigned(): // a is unsigned
		if intConvRank[a.Type.Kind()] >= intConvRank[b.Type.Kind()] {
			return a, b.ConvertTo(m, a.Type)
		}
	default:
		panic(fmt.Errorf("TODO %v %v", a, b))
	}

	var signed Type
	// Otherwise, if the type of the operand with signed integer type can
	// represent all of the values of the type of the operand with unsigned
	// integer type, then the operand with unsigned integer type is
	// converted to the type of the operand with signed integer type.
	switch {
	case a.isSigned(): // b is unsigned
		signed = a.Type
		if m.Sizeof(a.Type) > m.Sizeof(b.Type) {
			return a, b.ConvertTo(m, a.Type)
		}
	case b.isSigned(): // a is unsigned
		signed = b.Type
		if m.Sizeof(b.Type) > m.Sizeof(a.Type) {
			return a.ConvertTo(m, b.Type), b
		}
	default:
		panic(fmt.Errorf("TODO %v %v", a, b))
	}

	// Otherwise, both operands are converted to the unsigned integer type
	// corresponding to the type of the operand with signed integer type.
	switch signed.Kind() {
	case Int:
		if a.IsEnumConst || b.IsEnumConst {
			return a, b
		}

		return a.ConvertTo(m, UInt), b.ConvertTo(m, UInt)
	case Long:
		return a.ConvertTo(m, ULong), b.ConvertTo(m, ULong)
	case LongLong:
		return a.ConvertTo(m, ULongLong), b.ConvertTo(m, ULongLong)
	default:
		panic(signed)
	}
}

// Operand represents the type and optionally the value of an expression.
type Operand struct {
	Type Type
	ir.Value
	FieldProperties *FieldProperties

	IsEnumConst bool // Blocks int -> unsigned int promotions. See [0]6.4.4.3/2
}

// Bits return the width of a bit field operand or zero othewise
func (o *Operand) Bits() int {
	if fp := o.FieldProperties; fp != nil {
		return fp.Bits
	}

	return 0
}

func newIntConst(ctx *context, n Node, v uint64, t ...TypeKind) (r Operand) {
	b := bits.Len64(v)
	for _, t := range t {
		sign := 1
		if t.IsUnsigned() {
			sign = 0
		}
		if ctx.model[t].Size*8 >= b+sign {
			return Operand{Type: t, Value: &ir.Int64Value{Value: int64(v)}}.normalize(ctx.model)
		}
	}

	last := t[len(t)-1]
	if ctx.model[last].Size*8 == b {
		return Operand{Type: last, Value: &ir.Int64Value{Value: int64(v)}}.normalize(ctx.model)
	}

	ctx.err(n, "invalid integer constant")
	return Operand{Type: Int}.normalize(ctx.model)
}

func (o Operand) String() string {
	return fmt.Sprintf("(type %v, value %v, fieldProps %+v)", o.Type, o.Value, o.FieldProperties)
}

func (o Operand) isArithmeticType() bool { return o.Type.IsArithmeticType() }
func (o Operand) isIntegerType() bool    { return o.Type.IsIntegerType() }
func (o Operand) isPointerType() bool    { return o.Type.IsPointerType() }
func (o Operand) isScalarType() bool     { return o.Type.IsScalarType() } // [0]6.2.5-21
func (o Operand) isSigned() bool         { return isSigned[o.Type.Kind()] }

func (o Operand) add(ctx *context, p Operand) (r Operand) {
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if p.IsZero() {
		return o.normalize(ctx.model)
	}

	if o.Value == nil || p.Value == nil {
		o.Value = nil
		return o.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value + p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	case *ir.Float64Value:
		return Operand{Type: o.Type, Value: &ir.Float64Value{Value: x.Value + p.Value.(*ir.Float64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T %v %v", x, o, p))
	}
}

func (o Operand) and(ctx *context, p Operand) (r Operand) {
	if !o.isIntegerType() || !p.isIntegerType() {
		panic(fmt.Errorf("TODO %v & %v", o.Type, p.Type))
	}

	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if o.IsZero() || p.IsZero() {
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: 0}}.normalize(ctx.model)
	}

	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value & p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

// ConvertTo converts o to type t.
func (o Operand) ConvertTo(m Model, t Type) (r Operand) {
	if o.Type.Equal(t) {
		return o.normalize(m)
	}

	switch x := t.(type) {
	case
		*EnumType,
		*PointerType,
		*TaggedEnumType,
		*TaggedUnionType:

		// ok
	case TypeKind:
		switch x {
		case
			Bool,
			Char,
			Double,
			DoubleComplex,
			Float,
			FloatComplex,
			Int,
			Long,
			LongDouble,
			LongDoubleComplex,
			LongLong,
			SChar,
			Short,
			UChar,
			UInt,
			ULong,
			ULongLong,
			UShort:

			// ok
		default:
			panic(x)
		}
	case *NamedType:
		return o.ConvertTo(m, x.Type)
	default:
		panic(fmt.Errorf("%T", x))
	}

	if o.Value == nil {
		o.Type = t
		return o.normalize(m)
	}

	if o.isIntegerType() {
		v := *o.Value.(*ir.Int64Value)
		if t.IsIntegerType() {
			return Operand{Type: t, Value: &v}.normalize(m)
		}

		if t.IsPointerType() {
			// [0]6.3.2.3
			if o.IsZero() {
				// 3. An integer constant expression with the
				// value 0, or such an expression cast to type
				// void *, is called a null pointer constant.
				// If a null pointer constant is converted to a
				// pointer type, the resulting pointer, called
				// a null pointer, is guaranteed to compare
				// unequal to a pointer to any object or
				// function.
				return Operand{Type: t, Value: Null}
			}

			return Operand{Type: t, Value: &v}.normalize(m)
		}

		if t.Kind() == Union {
			if v.Value != 0 {
				panic("TODO")
			}

			return Operand{Type: t}
		}

		switch {
		case o.Type.IsUnsigned():
			val := uint64(v.Value)
			switch t.Kind() {
			case Double, LongDouble:
				return Operand{Type: t, Value: &ir.Float64Value{Value: float64(val)}}.normalize(m)
			case DoubleComplex:
				return Operand{Type: t, Value: &ir.Complex128Value{Value: complex(float64(val), 0)}}.normalize(m)
			case Float:
				return Operand{Type: t, Value: &ir.Float32Value{Value: float32(val)}}.normalize(m)
			case FloatComplex:
				return Operand{Type: t, Value: &ir.Complex64Value{Value: complex(float32(val), 0)}}.normalize(m)
			default:
				panic(t)
			}
		default:
			val := v.Value
			switch t.Kind() {
			case Double, LongDouble:
				return Operand{Type: t, Value: &ir.Float64Value{Value: float64(val)}}.normalize(m)
			case DoubleComplex:
				return Operand{Type: t, Value: &ir.Complex128Value{Value: complex(float64(val), 0)}}.normalize(m)
			case Float:
				return Operand{Type: t, Value: &ir.Float32Value{Value: float32(val)}}.normalize(m)
			case FloatComplex:
				return Operand{Type: t, Value: &ir.Complex64Value{Value: complex(float32(val), 0)}}.normalize(m)
			default:
				panic(t)
			}
		}
	}

	if o.Type.Kind() == Double {
		v := o.Value.(*ir.Float64Value).Value
		if t.IsIntegerType() {
			return Operand{Type: t, Value: &ir.Int64Value{Value: ConvertFloat64(v, t, m)}}.normalize(m)
		}

		switch x := t.(type) {
		case TypeKind:
			switch x {
			case Float:
				return Operand{Type: t, Value: &ir.Float32Value{Value: float32(o.Value.(*ir.Float64Value).Value)}}.normalize(m)
			case LongDouble:
				v := *o.Value.(*ir.Float64Value)
				return Operand{Type: t, Value: &v}.normalize(m)
			default:
				panic(x)
			}
		default:
			panic(x)
		}
	}

	if o.Type.Kind() == Float {
		v := o.Value.(*ir.Float32Value).Value
		if t.IsIntegerType() {
			return Operand{Type: t, Value: &ir.Int64Value{Value: ConvertFloat64(float64(v), t, m)}}.normalize(m)
		}

		switch x := t.(type) {
		case TypeKind:
			switch x {
			case
				Double,
				LongDouble:

				return Operand{Type: t, Value: &ir.Float64Value{Value: float64(v)}}.normalize(m)
			default:
				panic(x)
			}
		default:
			panic(x)
		}
	}

	if o.isPointerType() && t.IsPointerType() {
		o.Type = t
		return o.normalize(m)
	}

	if o.isPointerType() && t.IsIntegerType() {
		o.Type = t
		switch x := o.Value.(type) {
		case *ir.AddressValue:
			if x.NameID != 0 {
				o.Value = nil
				break
			}

			o.Value = &ir.Int64Value{Value: int64(x.Offset)}
		case *ir.Int64Value:
			// nop
		default:
			//fmt.Printf("TODO405 %T %v -> %v\n", x, o, t) //TODO-
			panic(fmt.Errorf("%T %v -> %v", x, o, t))
		}
		return o.normalize(m)
	}

	panic(fmt.Errorf("%T(%v) -> %T(%v)", o.Type, o, t, t))
}

func (o Operand) cpl(ctx *context) Operand {
	if o.isIntegerType() {
		o = o.integerPromotion(ctx.model)
	}

	switch x := o.Value.(type) {
	case nil:
		return o
	case *ir.Int64Value:
		o.Value = &ir.Int64Value{Value: ^o.Value.(*ir.Int64Value).Value}
		return o.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) div(ctx *context, n Node, p Operand) (r Operand) {
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if o.Value == nil || p.Value == nil {
		o.Value = nil
		return o.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		if p.IsZero() {
			ctx.err(n, "division by zero")
			return Operand{Type: o.Type}.normalize(ctx.model)
		}

		switch {
		case o.Type.IsUnsigned():
			return Operand{Type: o.Type, Value: &ir.Int64Value{Value: int64(uint64(x.Value) / uint64(p.Value.(*ir.Int64Value).Value))}}.normalize(ctx.model)
		default:
			return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value / p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
		}
	case *ir.Float32Value:
		return Operand{Type: o.Type, Value: &ir.Float32Value{Value: x.Value / p.Value.(*ir.Float32Value).Value}}.normalize(ctx.model)
	case *ir.Float64Value:
		return Operand{Type: o.Type, Value: &ir.Float64Value{Value: x.Value / p.Value.(*ir.Float64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) eq(ctx *context, p Operand) (r Operand) {
	r = Operand{Type: Int}
	if o.isArithmeticType() && p.isArithmeticType() {
		o, p = UsualArithmeticConversions(ctx.model, o, p)
	}
	if o.Value == nil || p.Value == nil {
		return r.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		var val int64
		if x.Value == p.Value.(*ir.Int64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float64Value:
		var val int64
		if x.Value == p.Value.(*ir.Float64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return r.normalize(ctx.model)
}

func (o Operand) ge(ctx *context, p Operand) (r Operand) {
	r = Operand{Type: Int}
	if o.isArithmeticType() && p.isArithmeticType() {
		o, p = UsualArithmeticConversions(ctx.model, o, p)
	}
	if o.Value == nil || p.Value == nil {
		return r.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		var val int64
		switch {
		case o.isSigned():
			if x.Value >= p.Value.(*ir.Int64Value).Value {
				val = 1
			}
		default:
			if uint64(x.Value) >= uint64(p.Value.(*ir.Int64Value).Value) {
				val = 1
			}
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float64Value:
		var val int64
		if x.Value >= p.Value.(*ir.Float64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return r.normalize(ctx.model)
}

func (o Operand) gt(ctx *context, p Operand) (r Operand) {
	r = Operand{Type: Int}
	if o.isArithmeticType() && p.isArithmeticType() {
		o, p = UsualArithmeticConversions(ctx.model, o, p)
	}
	if o.Value == nil || p.Value == nil {
		return r.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		var val int64
		switch {
		case o.isSigned():
			if x.Value > p.Value.(*ir.Int64Value).Value {
				val = 1
			}
		default:
			if uint64(x.Value) > uint64(p.Value.(*ir.Int64Value).Value) {
				val = 1
			}
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float64Value:
		var val int64
		if x.Value > p.Value.(*ir.Float64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return r.normalize(ctx.model)
}

// integerPromotion computes the integer promotion of o.
//
// [0]6.3.1.1-2
//
// If an int can represent all values of the original type, the value is
// converted to an int; otherwise, it is converted to an unsigned int. These
// are called the integer promotions. All other types are unchanged by the
// integer promotions.
func (o Operand) integerPromotion(m Model) Operand {
	t := o.Type
	for {
		switch x := t.(type) {
		case *EnumType:
			t = x.Enums[0].Operand.Type
		case *NamedType:
			t = x.Type
		case *TaggedEnumType:
			t = x.getType().(*EnumType).Enums[0].Operand.Type
		case TypeKind:
			// github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/bf-sign-2.c
			//
			// This test checks promotion of bitfields.  Bitfields
			// should be promoted very much like chars and shorts:
			//
			// Bitfields (signed or unsigned) should be promoted to
			// signed int if their value will fit in a signed int,
			// otherwise to an unsigned int if their value will fit
			// in an unsigned int, otherwise we don't promote them
			// (ANSI/ISO does not specify the behavior of bitfields
			// larger than an unsigned int).
			if x.IsIntegerType() && o.Bits() != 0 {
				bits := m[Int].Size * 8
				switch {
				case x.IsUnsigned():
					if o.Bits() < bits {
						return o.ConvertTo(m, Int)
					}
				default:
					if o.Bits() < bits-1 {
						return o.ConvertTo(m, Int)
					}
				}
			}

			switch x {
			case
				Double,
				Float,
				Int,
				Long,
				LongDouble,
				LongLong,
				UInt,
				ULong,
				ULongLong:

				return o
			case
				Char,
				SChar,
				Short,
				UChar,
				UShort:

				return o.ConvertTo(m, Int)
			default:
				panic(x)
			}
		default:
			panic(x)
		}
	}
}

// IsNonZero returns true when the value of o is known to be non-zero.
func (o Operand) IsNonZero() bool {
	switch x := o.Value.(type) {
	case nil:
		return false
	case *ir.Float32Value:
		return x.Value != 0
	case *ir.Float64Value:
		return x.Value != 0
	case *ir.Int64Value:
		return x.Value != 0
	case *ir.StringValue:
		return true
	case *ir.AddressValue:
		return x != Null
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

// IsZero returns true when the value of o is known to be zero.
func (o Operand) IsZero() bool {
	switch x := o.Value.(type) {
	case nil:
		return false
	case *ir.Complex128Value:
		return x.Value == 0
	case *ir.Float32Value:
		return x.Value == 0
	case *ir.Float64Value:
		return x.Value == 0
	case *ir.Int64Value:
		return x.Value == 0
	case
		*ir.StringValue,
		*ir.WideStringValue:

		return false
	case *ir.AddressValue:
		return x == Null
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) isNullPtrConst() bool {
	return o.isIntegerType() && o.IsZero() || o.Value == Null
}

func (o Operand) le(ctx *context, p Operand) (r Operand) {
	r = Operand{Type: Int}
	if o.isArithmeticType() && p.isArithmeticType() {
		o, p = UsualArithmeticConversions(ctx.model, o, p)
	}
	if o.Value == nil || p.Value == nil {
		return r.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		var val int64
		switch {
		case o.isSigned():
			if x.Value <= p.Value.(*ir.Int64Value).Value {
				val = 1
			}
		default:
			if uint64(x.Value) <= uint64(p.Value.(*ir.Int64Value).Value) {
				val = 1
			}
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float64Value:
		var val int64
		if x.Value <= p.Value.(*ir.Float64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return r.normalize(ctx.model)
}

func (o Operand) lsh(ctx *context, p Operand) (r Operand) { // [0]6.5.7
	// 2. Each of the operands shall have integer type.
	if !o.isIntegerType() || !p.isIntegerType() {
		panic("TODO")
	}

	// 3. The integer promotions are performed on each of the operands. The
	// type of the result is that of the promoted left operand. If the
	// value of the right operand is negative or is greater than or equal
	// to the width of the promoted left operand, the behavior is
	// undefined.
	o = o.integerPromotion(ctx.model)
	p = p.integerPromotion(ctx.model)
	if o.IsZero() {
		return o.normalize(ctx.model)
	}

	m := uint64(32)
	if ctx.model.Sizeof(o.Type) > 4 {
		m = 64
	}
	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value << (uint64(p.Value.(*ir.Int64Value).Value) % m)}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) lt(ctx *context, p Operand) (r Operand) {
	r = Operand{Type: Int}
	if o.isArithmeticType() && p.isArithmeticType() {
		o, p = UsualArithmeticConversions(ctx.model, o, p)
	}
	if o.Value == nil || p.Value == nil {
		return r.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		var val int64
		switch {
		case o.isSigned():
			if x.Value < p.Value.(*ir.Int64Value).Value {
				val = 1
			}
		default:
			if uint64(x.Value) < uint64(p.Value.(*ir.Int64Value).Value) {
				val = 1
			}
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float64Value:
		var val int64
		if x.Value < p.Value.(*ir.Float64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return r.normalize(ctx.model)
}

func (o Operand) mod(ctx *context, n Node, p Operand) (r Operand) {
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if p.IsZero() {
		ctx.err(n, "division by zero")
		return p.normalize(ctx.model)
	}

	if o.IsZero() { // 0 % x == 0
		return o.normalize(ctx.model)
	}

	if y, ok := p.Value.(*ir.Int64Value); ok && (y.Value == 1 || y.Value == -1) {
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: 0}}.normalize(ctx.model) //  y % {1,-1} == 0
	}

	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value % p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) mul(ctx *context, p Operand) (r Operand) {
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if o.IsZero() || p.IsZero() {
		switch x := UnderlyingType(o.Type).(type) {
		case TypeKind:
			if x.IsIntegerType() {
				return Operand{Type: o.Type, Value: &ir.Int64Value{Value: 0}}.normalize(ctx.model)
			}
		default:
			panic(fmt.Errorf("TODO %T", x))
		}
	}

	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value * p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	case *ir.Float32Value:
		return Operand{Type: o.Type, Value: &ir.Float32Value{Value: x.Value * p.Value.(*ir.Float32Value).Value}}
	case *ir.Float64Value:
		return Operand{Type: o.Type, Value: &ir.Float64Value{Value: x.Value * p.Value.(*ir.Float64Value).Value}}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) ne(ctx *context, p Operand) (r Operand) {
	r = Operand{Type: Int}
	if o.isArithmeticType() && p.isArithmeticType() {
		o, p = UsualArithmeticConversions(ctx.model, o, p)
	}
	if o.Value == nil || p.Value == nil {
		return r.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		var val int64
		if x.Value != p.Value.(*ir.Int64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float32Value:
		var val int64
		if x.Value != p.Value.(*ir.Float32Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	case *ir.Float64Value:
		var val int64
		if x.Value != p.Value.(*ir.Float64Value).Value {
			val = 1
		}
		r.Value = &ir.Int64Value{Value: val}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return r.normalize(ctx.model)
}

// ConvertFloat64 converts v to t, which must be an integer type.
func ConvertFloat64(v float64, t Type, m Model) int64 {
	if !t.IsIntegerType() {
		panic(fmt.Errorf("ConvertFloat64: %T", t))
	}

	switch sz := m.Sizeof(t); {
	case t.IsUnsigned():
		switch sz {
		case 1:
			if v > math.Nextafter(math.MaxUint8, 0) {
				return math.MaxUint8
			}

			if v <= 0 {
				return 0
			}
		case 2:
			if v > math.Nextafter(math.MaxUint16, 0) {
				return math.MaxUint16
			}

			if v <= 0 {
				return 0
			}
		case 4:
			if v > math.Nextafter(math.MaxUint32, 0) {
				return math.MaxUint32
			}

			if v <= 0 {
				return 0
			}
		case 8:
			if v > math.Nextafter(math.MaxUint64, 0) {
				return -1 // int64(math,MaxUint64)
			}

			if v <= 0 {
				return 0
			}
		default:
			panic(sz)
		}
	default:
		switch sz {
		case 1:
			if v > math.Nextafter(math.MaxInt8, 0) {
				return math.MaxInt8
			}

			if v < math.Nextafter(math.MinInt8, 0) {
				return math.MinInt8
			}
		case 2:
			if v > math.Nextafter(math.MaxInt16, 0) {
				return math.MaxInt16
			}

			if v < math.Nextafter(math.MinInt16, 0) {
				return math.MinInt16
			}
		case 4:
			if v > math.Nextafter(math.MaxInt32, 0) {
				return math.MaxInt32
			}

			if v < math.Nextafter(math.MinInt32, 0) {
				return math.MinInt32
			}
		case 8:
			if v > math.Nextafter(math.MaxInt64, 0) {
				return math.MaxInt64
			}

			if v < math.Nextafter(math.MinInt64, 0) {
				return math.MinInt64
			}
		default:
			panic(sz)
		}
	}
	return int64(v)
}

// ConvertInt64 converts n to t, which must be an integer or enum type, doing
// masking and/or sign extending as appropriate.
func ConvertInt64(n int64, t Type, m Model) int64 {
	switch x := UnderlyingType(t).(type) {
	case *EnumType:
		t = x.Enums[0].Operand.Type
	}
	signed := !t.IsUnsigned()
	switch sz := m[UnderlyingType(t).Kind()].Size; sz {
	case 1:
		switch {
		case signed:
			switch {
			case int8(n) < 0:
				return n | ^math.MaxUint8
			default:
				return n & math.MaxUint8
			}
		default:
			return n & math.MaxUint8
		}
	case 2:
		switch {
		case signed:
			switch {
			case int16(n) < 0:
				return n | ^math.MaxUint16
			default:
				return n & math.MaxUint16
			}
		default:
			return n & math.MaxUint16
		}
	case 4:
		switch {
		case signed:
			switch {
			case int32(n) < 0:
				return n | ^math.MaxUint32
			default:
				return n & math.MaxUint32
			}
		default:
			return n & math.MaxUint32
		}
	case 8:
		return n
	default:
		panic(fmt.Errorf("TODO %v %T %v", sz, t, t))
	}
}
func (o Operand) normalize(m Model) (r Operand) {
	switch x := o.Value.(type) {
	case *ir.Int64Value:
		if v := ConvertInt64(x.Value, o.Type, m); v != x.Value {
			n := *x
			n.Value = v
			x = &n
			o.Value = x
		}
	case nil:
		// nop
	case
		*ir.AddressValue,
		*ir.Complex128Value,
		*ir.Complex64Value,
		*ir.Float32Value,
		*ir.Float64Value,
		*ir.StringValue,
		*ir.WideStringValue:

		// nop
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
	return o
}

func (o Operand) or(ctx *context, p Operand) (r Operand) {
	if !o.isIntegerType() || !p.isIntegerType() {
		panic("TODO")
	}
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	r.Type = o.Type
	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value | p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) rsh(ctx *context, p Operand) (r Operand) { // [0]6.5.7
	// 2. Each of the operands shall have integer type.
	if !o.isIntegerType() || !p.isIntegerType() {
		panic("TODO")
	}

	// 3. The integer promotions are performed on each of the operands. The
	// type of the result is that of the promoted left operand. If the
	// value of the right operand is negative or is greater than or equal
	// to the width of the promoted left operand, the behavior is
	// undefined.
	o = o.integerPromotion(ctx.model)
	p = p.integerPromotion(ctx.model)
	r.Type = o.Type
	m := uint64(32)
	if ctx.model.Sizeof(o.Type) > 4 {
		m = 64
	}
	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		switch {
		case o.isSigned():
			return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value >> (uint64(p.Value.(*ir.Int64Value).Value) % m)}}.normalize(ctx.model)
		default:
			return Operand{Type: o.Type, Value: &ir.Int64Value{Value: int64(uint64(x.Value) >> (uint64(p.Value.(*ir.Int64Value).Value) % m))}}.normalize(ctx.model)
		}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) sub(ctx *context, p Operand) (r Operand) {
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if p.IsZero() {
		return o.normalize(ctx.model)
	}

	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}.normalize(ctx.model)
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value - p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	case *ir.Float32Value:
		return Operand{Type: o.Type, Value: &ir.Float32Value{Value: x.Value - p.Value.(*ir.Float32Value).Value}}.normalize(ctx.model)
	case *ir.Float64Value:
		return Operand{Type: o.Type, Value: &ir.Float64Value{Value: x.Value - p.Value.(*ir.Float64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) unaryMinus(ctx *context) Operand {
	if o.isIntegerType() {
		o = o.integerPromotion(ctx.model)
	}

	switch x := o.Value.(type) {
	case nil:
		return o
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: -x.Value}}.normalize(ctx.model)
	case *ir.Float32Value:
		return Operand{Type: o.Type, Value: &ir.Float32Value{Value: -x.Value}}
	case *ir.Float64Value:
		return Operand{Type: o.Type, Value: &ir.Float64Value{Value: -x.Value}}
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}

func (o Operand) xor(ctx *context, p Operand) (r Operand) {
	if !o.isIntegerType() || !p.isIntegerType() {
		panic("TODO")
	}
	o, p = UsualArithmeticConversions(ctx.model, o, p)
	if o.Value == nil || p.Value == nil {
		return Operand{Type: o.Type}
	}

	switch x := o.Value.(type) {
	case *ir.Int64Value:
		return Operand{Type: o.Type, Value: &ir.Int64Value{Value: x.Value ^ p.Value.(*ir.Int64Value).Value}}.normalize(ctx.model)
	default:
		panic(fmt.Errorf("TODO %T", x))
	}
}


<|start_filename|>v2/testdata/github.com/gcc-mirror/gcc/gcc/testsuite/gcc.c-torture/execute/pr24135.c<|end_filename|>
#ifndef NO_TRAMPOLINES
extern void abort (void);

int x(int a, int b)
{
  __label__ xlab;
  __label__ xlab2;

  void y(int b)
    {
       switch (b)
        {
          case 1: goto xlab;
          case 2: goto xlab;
        }
    }

  a = a + 2;
  y (b);

 xlab:
  return a;

 xlab2:
  a++;
  return a;

}

int main ()
{
  int i, j;

  for (j = 1; j <= 2; ++j)
    for (i = 1; i <= 2; ++i)
      {
	int a = x (j, i);
	if (a != 2 + j)
	  abort ();
      }

  return 0;
}
#else
int main() { return 0; }
#endif


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr18291.c<|end_filename|>
int baz(int k2)
{
  int i, j, *p, k = 1, k1 = 0;
  if (k2)
    p = &j;
  else
    p = &i;
  if (k1)
    *p = 0 , p = &k;
  *p = 1;
  return k;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48305.c<|end_filename|>
/* PR c/48305 */

int
foo (int x)
{
  return (x ^ 1) == (x ^ 1U);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59919.c<|end_filename|>
typedef int jmp_buf[10];
struct S
{
  int i;
  jmp_buf buf;
};

void setjmp (jmp_buf);
void foo (int *);
__attribute__ ((__noreturn__, __nonnull__)) void bar (struct S *);

void
baz (struct S *p)
{
  bar (p);
  setjmp (p->buf);
  foo (&p->i);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr45728.c<|end_filename|>
/* PR rtl-optimization/45728 */

union U
{
  int *m;
  double d;
};

int i;
union U u;

int
foo (void)
{
  union U v = { &i };
  return u.d == v.d;
}


<|start_filename|>testdata/funcfunc.c<|end_filename|>
// Declare f as function (char) returning pointer to function (int) returning long.
//
// http://cdecl.ridiculousfish.com/?q=long+%28*f%28char%29%29+%28int%29%3B
//
long (*f(char c))(int i) { char d = c; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20060217-1.c<|end_filename|>
/* PR middle-end/26334 */

struct U
{
  unsigned int u[256];
};

struct S
{
  int u, v, w, x;
  int s[255];
};

int
foo (struct U *x, struct S *y)
{
  register int i;
  for (i = 0; i < 255; i++)
    {
      unsigned int v;
      __asm__ ("" : "=r" (v) : "0" (x->u[i + 1]) : "cc");
      y->s[i] = v;
    }
  return 0;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65873.c<|end_filename|>
typedef __SIZE_TYPE__ size_t;

extern inline __attribute__ ((__always_inline__, __gnu_inline__, __artificial__, __nothrow__, __leaf__)) void *
memcpy (void *__restrict __dest, const void *__restrict __src, size_t __len)
{
  return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
}

__attribute__((optimize ("Ofast"))) void
bar (void *d, void *s, size_t l)
{
  memcpy (d, s, l);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20080704-1.c<|end_filename|>
/* This code used to crash fold_convert due to PRE
   wanting to fold_convert from a REAL_TYPE to an INTEGER_TYPE.  */
typedef unsigned int uint32_t;
union double_union
{
  double d;
  uint32_t i[2];
};
struct _Jv_reent
{
  int _errno;
};
_Jv_strtod_r (struct _Jv_reent *ptr, char **se)
{
  int bb2, sign;
  double aadj, aadj1, adj;
  unsigned long y, z;
  union double_union rv, *bs = ((void *) 0), *delta = ((void *) 0);
  {
  ovfl:ptr->_errno = 34;
    {
      (((uint32_t) 0xfffffL) | ((uint32_t) 0x100000L) * (1024 + 1023 - 1));
    }
    if ((aadj = _Jv_ratio (delta, bs)) <= 2.)
      {
	{
	  if (aadj < 2. / 2)
	    aadj = 1. / 2;
	  aadj1 = -aadj;
	}
      }
    {
      (rv.i[1]) -= 53 * ((uint32_t) 0x100000L);
      adj = aadj1 * _Jv_ulp (rv.d);
      rv.d += adj;
      if (((rv.i[1]) & ((uint32_t) 0x7ff00000L)) >=
	  ((uint32_t) 0x100000L) * (1024 + 1023 - 53))
	{
	  goto ovfl;
	}
    }
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/struct-non-lval-1.c<|end_filename|>
/* Bug c/17855.  */
struct foo {char x, y, z[2];};
struct foo f();
void bar(int baz)
{
  f().z[baz] = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr19121.c<|end_filename|>
typedef struct interpreter {
  char Itokenbuf[256];
} PerlInterpreter;
static inline void S_missingterm(char *s)
{
  char tmpbuf[3] = "";
  char q;
  if (!s)
    s = tmpbuf;
  q = strchr(s,'"') ? '\'' : '"';
}
void S_scan_heredoc(PerlInterpreter *my_perl, char *s, int i)
{
  char term;
  term = *my_perl->Itokenbuf;
  if (i)
  {
    *s = term;
    S_missingterm(my_perl->Itokenbuf);
  }
  else
    S_missingterm(my_perl->Itokenbuf);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr60556.c<|end_filename|>
/* PR middle-end/60556 */

int g (int);

unsigned long long f (void)
{
 return (unsigned long long)(long)&g;
}


<|start_filename|>v2/headers/linux_amd64/usr/include/locale.h<|end_filename|>
/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 *	ISO C99 Standard: 7.11 Localization	<locale.h>
 */

#ifndef	_LOCALE_H
#define	_LOCALE_H	1

#include <features.h>

#define __need_NULL
#include <stddef.h>
#include <bits/locale.h>

__BEGIN_DECLS
/* These are the possibilities for the first argument to setlocale.
   The code assumes that the lowest LC_* symbol has the value zero.  */
#define LC_CTYPE          __LC_CTYPE
#define LC_NUMERIC        __LC_NUMERIC
#define LC_TIME           __LC_TIME
#define LC_COLLATE        __LC_COLLATE
#define LC_MONETARY       __LC_MONETARY
#define LC_MESSAGES       __LC_MESSAGES
#define	LC_ALL		  __LC_ALL
#define LC_PAPER	  __LC_PAPER
#define LC_NAME		  __LC_NAME
#define LC_ADDRESS	  __LC_ADDRESS
#define LC_TELEPHONE	  __LC_TELEPHONE
#define LC_MEASUREMENT	  __LC_MEASUREMENT
#define LC_IDENTIFICATION __LC_IDENTIFICATION
    __BEGIN_NAMESPACE_STD
/* Structure giving information about numeric and monetary notation.  */
    struct lconv {
	/* Numeric (non-monetary) information.  */

	char *decimal_point;	/* Decimal point character.  */
	char *thousands_sep;	/* Thousands separator.  */
	/* Each element is the number of digits in each group;
	   elements with higher indices are farther left.
	   An element with value CHAR_MAX means that no further grouping is done.
	   An element with value 0 means that the previous element is used
	   for all groups farther left.  */
	char *grouping;

	/* Monetary information.  */

	/* First three chars are a currency symbol from ISO 4217.
	   Fourth char is the separator.  Fifth char is '\0'.  */
	char *int_curr_symbol;
	char *currency_symbol;	/* Local currency symbol.  */
	char *mon_decimal_point;	/* Decimal point character.  */
	char *mon_thousands_sep;	/* Thousands separator.  */
	char *mon_grouping;	/* Like `grouping' element (above).  */
	char *positive_sign;	/* Sign for positive values.  */
	char *negative_sign;	/* Sign for negative values.  */
	char int_frac_digits;	/* Int'l fractional digits.  */
	char frac_digits;	/* Local fractional digits.  */
	/* 1 if currency_symbol precedes a positive value, 0 if succeeds.  */
	char p_cs_precedes;
	/* 1 iff a space separates currency_symbol from a positive value.  */
	char p_sep_by_space;
	/* 1 if currency_symbol precedes a negative value, 0 if succeeds.  */
	char n_cs_precedes;
	/* 1 iff a space separates currency_symbol from a negative value.  */
	char n_sep_by_space;
	/* Positive and negative sign positions:
	   0 Parentheses surround the quantity and currency_symbol.
	   1 The sign string precedes the quantity and currency_symbol.
	   2 The sign string follows the quantity and currency_symbol.
	   3 The sign string immediately precedes the currency_symbol.
	   4 The sign string immediately follows the currency_symbol.  */
	char p_sign_posn;
	char n_sign_posn;
#ifdef __USE_ISOC99
	/* 1 if int_curr_symbol precedes a positive value, 0 if succeeds.  */
	char int_p_cs_precedes;
	/* 1 iff a space separates int_curr_symbol from a positive value.  */
	char int_p_sep_by_space;
	/* 1 if int_curr_symbol precedes a negative value, 0 if succeeds.  */
	char int_n_cs_precedes;
	/* 1 iff a space separates int_curr_symbol from a negative value.  */
	char int_n_sep_by_space;
	/* Positive and negative sign positions:
	   0 Parentheses surround the quantity and int_curr_symbol.
	   1 The sign string precedes the quantity and int_curr_symbol.
	   2 The sign string follows the quantity and int_curr_symbol.
	   3 The sign string immediately precedes the int_curr_symbol.
	   4 The sign string immediately follows the int_curr_symbol.  */
	char int_p_sign_posn;
	char int_n_sign_posn;
#else
	char __int_p_cs_precedes;
	char __int_p_sep_by_space;
	char __int_n_cs_precedes;
	char __int_n_sep_by_space;
	char __int_p_sign_posn;
	char __int_n_sign_posn;
#endif
};

/* Set and/or return the current locale.  */
extern char *setlocale(int __category, const char *__locale) __THROW;

/* Return the numeric/monetary information for the current locale.  */
extern struct lconv *localeconv(void) __THROW;

__END_NAMESPACE_STD
#ifdef	__USE_XOPEN2K8
/* The concept of one static locale per category is not very well
   thought out.  Many applications will need to process its data using
   information from several different locales.  Another application is
   the implementation of the internationalization handling in the
   upcoming ISO C++ standard library.  To support this another set of
   the functions using locale data exist which have an additional
   argument.

   Attention: all these functions are *not* standardized in any form.
   This is a proof-of-concept implementation.  */
/* Get locale datatype definition.  */
# include <xlocale.h>
/* Return a reference to a data structure representing a set of locale
   datasets.  Unlike for the CATEGORY parameter for `setlocale' the
   CATEGORY_MASK parameter here uses a single bit for each category,
   made by OR'ing together LC_*_MASK bits above.  */
extern __locale_t newlocale(int __category_mask, const char *__locale, __locale_t __base) __THROW;

/* These are the bits that can be set in the CATEGORY_MASK argument to
   `newlocale'.  In the GNU implementation, LC_FOO_MASK has the value
   of (1 << LC_FOO), but this is not a part of the interface that
   callers can assume will be true.  */
# define LC_CTYPE_MASK		(1 << __LC_CTYPE)
# define LC_NUMERIC_MASK	(1 << __LC_NUMERIC)
# define LC_TIME_MASK		(1 << __LC_TIME)
# define LC_COLLATE_MASK	(1 << __LC_COLLATE)
# define LC_MONETARY_MASK	(1 << __LC_MONETARY)
# define LC_MESSAGES_MASK	(1 << __LC_MESSAGES)
# define LC_PAPER_MASK		(1 << __LC_PAPER)
# define LC_NAME_MASK		(1 << __LC_NAME)
# define LC_ADDRESS_MASK	(1 << __LC_ADDRESS)
# define LC_TELEPHONE_MASK	(1 << __LC_TELEPHONE)
# define LC_MEASUREMENT_MASK	(1 << __LC_MEASUREMENT)
# define LC_IDENTIFICATION_MASK	(1 << __LC_IDENTIFICATION)
# define LC_ALL_MASK		(LC_CTYPE_MASK \
				 | LC_NUMERIC_MASK \
				 | LC_TIME_MASK \
				 | LC_COLLATE_MASK \
				 | LC_MONETARY_MASK \
				 | LC_MESSAGES_MASK \
				 | LC_PAPER_MASK \
				 | LC_NAME_MASK \
				 | LC_ADDRESS_MASK \
				 | LC_TELEPHONE_MASK \
				 | LC_MEASUREMENT_MASK \
				 | LC_IDENTIFICATION_MASK \
				 )

/* Return a duplicate of the set of locale in DATASET.  All usage
   counters are increased if necessary.  */
extern __locale_t duplocale(__locale_t __dataset) __THROW;

/* Free the data associated with a locale dataset previously returned
   by a call to `setlocale_r'.  */
extern void freelocale(__locale_t __dataset) __THROW;

/* Switch the current thread's locale to DATASET.
   If DATASET is null, instead just return the current setting.
   The special value LC_GLOBAL_LOCALE is the initial setting
   for all threads and can also be installed any time, meaning
   the thread uses the global settings controlled by `setlocale'.  */
extern __locale_t uselocale(__locale_t __dataset) __THROW;

/* This value can be passed to `uselocale' and may be returned by it.
   Passing this value to any other function has undefined behavior.  */
# define LC_GLOBAL_LOCALE	((__locale_t) -1L)

#endif

__END_DECLS
#endif				/* locale.h  */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/printf.c<|end_filename|>
/* Copyright (C) 2000  Free Software Foundation.

   Ensure all expected transformations of builtin printf occur and
   that we honor side effects in the arguments.

   Written by <NAME>, 12/4/2000.  */

extern int printf (const char *, ...);
extern int printf_unlocked (const char *, ...);
extern void abort(void);

void
main_test (void)
{
  const char *const s1 = "hello world";
  const char *const s2[] = { s1, 0 }, *const*s3;
  
  printf ("%s\n", "hello");
  printf ("%s\n", *s2);
  s3 = s2;
  printf ("%s\n", *s3++);
  if (s3 != s2+1 || *s3 != 0)
    abort();
  
  printf ("%c", '\n');
  printf ("%c", **s2);
  s3 = s2;
  printf ("%c", **s3++);
  if (s3 != s2+1 || *s3 != 0)
    abort();
  
  printf ("");
  printf ("%s", "");
  printf ("\n");
  printf ("%s", "\n");
  printf ("hello world\n");
  printf ("%s", "hello world\n");
  
  /* Test at least one instance of the __builtin_ style.  We do this
     to ensure that it works and that the prototype is correct.  */
  __builtin_printf ("%s\n", "hello");
  /* These builtin stubs are called by __builtin_printf, ensure their
     prototypes are set correctly too.  */
  __builtin_putchar ('\n');
  __builtin_puts ("hello");
  /* Check the unlocked style, these evaluate to nothing to avoid
     problems on systems without the unlocked functions.  */
  printf_unlocked ("");
  __builtin_printf_unlocked ("");
  printf_unlocked ("%s", "");
  __builtin_printf_unlocked ("%s", "");
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040317-2.c<|end_filename|>
typedef struct _ScaleRec *ScaleWidget;
typedef struct
{
  short *x;
  unsigned short *width;
} Table;
typedef struct
{
  Table table;
} ScalePart;
typedef struct _ScaleRec
{
  ScalePart scale;
} ScaleRec;
static int
FindPixel (ScaleWidget sw, short x, short y,
       short * img_x, short * img_y, unsigned long * img_pixel)
{
  if (sw->scale.table.x[(int) *img_x] + 
      (short) sw->scale.table.width[(int) *img_x] < x)
    {
      ++*img_x;
      return FindPixel (sw, x, y, img_x, img_y, img_pixel);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20021205-1.c<|end_filename|>
typedef struct x x;
extern void *baz(char *);
struct x { char * (*bar) (int); };
static x **foo() { return ((x**)baz(0)); }
int xyzzy()
{
    baz((*foo())->bar(0));
    return 3;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr39943.c<|end_filename|>
void gl_fog_index_pixels(float f, unsigned int n, unsigned int index[])
{ 
  unsigned int i;
  for (i=0; i<n; i++) 
    index[i] = (unsigned int) ((float) index[i] + (1.0F-f));
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr21728.c<|end_filename|>
/* { dg-require-effective-target indirect_jumps } */

int main (void)
{
  __label__ l1;
  void __attribute__((used)) q(void)
  {
    goto l1;
  }

  l1:;
}


<|start_filename|>lexer.go<|end_filename|>
// Copyright 2016 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

import (
	"bytes"
	"fmt"
	"go/token"
	"io"
	"strings"

	"github.com/cznic/golex/lex"
	"github.com/cznic/xc"
)

// Lexer state
const (
	lsZero             = iota
	lsBOL              // Preprocessor: Beginning of line.
	lsDefine           // Preprocessor: Seen ^#define.
	lsSeekRParen       // Preprocessor: Seen ^#define identifier(
	lsTokens           // Preprocessor: Convert anything to PPOTHER until EOL.
	lsUndef            // Preprocessor: Seen ^#undef.
	lsConstExpr0       // Preprocessor: Parsing constant expression.
	lsConstExpr        // Preprocessor: Parsing constant expression.
	lsTranslationUnit0 //
	lsTranslationUnit  //
)

type trigraphsReader struct {
	*lex.Lexer           //
	pos0       token.Pos //
	sc         int       // Start condition.
}

func (t *trigraphsReader) ReadRune() (rune, int, error) { return lex.RuneEOF, 0, io.EOF }

func (t *trigraphsReader) ReadChar() (c lex.Char, size int, err error) {
	r := rune(t.scan())
	pos0 := t.pos0
	pos := t.Lookahead().Pos()
	t.pos0 = pos
	c = lex.NewChar(t.First.Pos(), r)
	return c, int(pos - pos0), nil
}

type byteReader struct {
	io.Reader
	b [1]byte
}

func (b *byteReader) ReadRune() (r rune, size int, err error) {
	if _, err = b.Read(b.b[:]); err != nil {
		return -1, 0, err
	}

	return rune(b.b[0]), 1, nil
}

type lexer struct {
	*lex.Lexer                             //
	ch                 chan []xc.Token     //
	commentPos0        token.Pos           //
	constExprToks      []xc.Token          //
	constantExpression *ConstantExpression //
	cpp                func([]xc.Token)    //
	encBuf             []byte              // PPTokens
	encBuf1            [30]byte            // Rune, position, optional value ID.
	encPos             token.Pos           // For delta pos encoding
	eof                lex.Char            //
	example            interface{}         //
	exampleRule        int                 //
	externs            map[int]*Declarator //
	file               *token.File         //
	finalNLInjected    bool                //
	fnDeclarator       *Declarator         //
	includePaths       []string            //
	injectFunc         []xc.Token          // [0], 6.4.2.2.
	iota               int64               //
	isPreprocessing    bool                //
	last               xc.Token            //
	model              *Model              //
	preprocessingFile  *PreprocessingFile  //
	report             *xc.Report          //
	sc                 int                 // Start condition.
	scope              *Bindings           //
	scs                int                 // Start condition stack.
	state              int                 // Lexer state.
	sysIncludePaths    []string            //
	t                  *trigraphsReader    //
	textLine           []xc.Token          //
	toC                bool                // Whether to translate preprocessor identifiers to reserved C words.
	tokLast            xc.Token            //
	tokPrev            xc.Token            //
	toks               []xc.Token          // Parsing preprocessor constant expression.
	translationUnit    *TranslationUnit    //
	tweaks             *tweaks             //

	fsm struct {
		comment int
		pos     token.Pos
		state   int
	}
}

func newLexer(nm string, sz int, r io.RuneReader, report *xc.Report, tweaks *tweaks, opts ...lex.Option) (*lexer, error) {
	file := fset.AddFile(nm, -1, sz)
	t := &trigraphsReader{}
	lx, err := lex.New(
		file,
		&byteReader{Reader: r.(io.Reader)},
		lex.ErrorFunc(func(pos token.Pos, msg string) {
			report.Err(pos, msg)
		}),
		lex.RuneClass(func(r rune) int { return int(r) }),
	)
	if err != nil {
		return nil, err
	}

	t.Lexer = lx
	t.pos0 = lx.Lookahead().Pos()
	if tweaks.enableTrigraphs {
		t.sc = scTRIGRAPHS
	}
	r = t

	scope := newBindings(nil, ScopeFile)
	lexer := &lexer{
		externs: map[int]*Declarator{},
		file:    file,
		report:  report,
		scope:   scope,
		scs:     -1, // Stack empty
		t:       t,
		tweaks:  tweaks,
	}
	if lexer.Lexer, err = lex.New(
		file,
		r,
		append(opts, lex.RuneClass(rune2class))...,
	); err != nil {
		return nil, err
	}

	return lexer, nil
}

func newSimpleLexer(cpp func([]xc.Token), report *xc.Report, tweaks *tweaks) *lexer {
	return &lexer{
		cpp:     cpp,
		externs: map[int]*Declarator{},
		report:  report,
		scope:   newBindings(nil, ScopeFile),
		tweaks:  tweaks,
	}
}

func (l *lexer) push(sc int) {
	if l.scs >= 0 { // Stack overflow.
		if l.sc != scDIRECTIVE || sc != scCOMMENT {
			panic("internal error")
		}

		// /*-style comment in a line starting with #
		l.pop()
	}

	l.scs = l.sc
	l.sc = sc
}

func (l *lexer) pop() {
	if l.scs < 0 { // Stack underflow
		panic("internal error")
	}
	l.sc = l.scs
	l.scs = -1 // Stack empty.
}

func (l *lexer) pushScope(kind Scope) (old *Bindings) {
	old = l.scope
	l.scope = newBindings(old, kind)
	l.scope.maxAlign = 1
	return old
}

func (l *lexer) popScope(tok xc.Token) (old, new *Bindings) {
	return l.popScopePos(tok.Pos())
}

func (l *lexer) popScopePos(pos token.Pos) (old, new *Bindings) {
	old = l.scope
	new = l.scope.Parent
	if new == nil {
		l.report.Err(pos, "cannot pop scope")
		return nil, old
	}

	l.scope = new
	return old, new
}

const (
	fsmZero = iota
	fsmHasComment
)

var genCommentLeader = []byte("/*")

func (l *lexer) comment(general bool) {
	if l.tweaks.comments != nil {
		b := l.TokenBytes(nil)
		pos := l.First.Pos()
		if general {
			pos = l.commentPos0
			b = append(genCommentLeader, b...)
		}
		if l.Lookahead().Rune == '\n' {
			b = append(b, '\n')
		}

		switch fsm := &l.fsm; fsm.state {
		case fsmHasComment:
			if pos == fsm.pos+token.Pos(len(dict.S(l.fsm.comment))) {
				fsm.comment = dict.ID(append(dict.S(fsm.comment), b...))
				break
			}

			fallthrough
		case fsmZero:
			fsm.state = fsmHasComment
			fsm.comment = dict.ID(b)
			fsm.pos = pos
		}
	}
}

func (l *lexer) scanChar() (c lex.Char) {
again:
	r := rune(l.scan())
	switch r {
	case ' ':
		if l.state != lsTokens || l.tokLast.Rune == ' ' {
			goto again
		}
	case '\n':
		if l.state == lsTokens {
			l.encodeToken(xc.Token{Char: lex.NewChar(l.First.Pos(), ' '), Val: idSpace})
		}
		l.state = lsBOL
		l.sc = scINITIAL
		l.scs = -1 // Stack empty
	case PREPROCESSING_FILE:
		l.state = lsBOL
		l.isPreprocessing = true
	case CONSTANT_EXPRESSION, TRANSLATION_UNIT: //TODO- CONSTANT_EXPRESSION, then must add some manual yy:examples.
		l.toC = true
	}

	fp := l.First.Pos()
	if l.fsm.state == fsmHasComment {
		switch {
		case r == '\n' && fp == l.fsm.pos+token.Pos(len(dict.S(l.fsm.comment)))-1:
			// keep going
		case r != '\n' && fp == l.fsm.pos+token.Pos(len(dict.S(l.fsm.comment))):
			l.tweaks.comments[fp] = dict.ID(bytes.TrimSpace(dict.S(l.fsm.comment)))
			l.fsm.state = fsmZero
		default:
			l.fsm.state = fsmZero
		}
	}

	return lex.NewChar(l.First.Pos(), r)
}

func (l *lexer) scanToken() (tok xc.Token) {
	switch l.state {
	case lsConstExpr0:
		tok = xc.Token{Char: lex.NewChar(0, CONSTANT_EXPRESSION)}
		l.state = lsConstExpr
	case lsConstExpr:
		if len(l.toks) == 0 {
			tok = xc.Token{Char: lex.NewChar(l.tokLast.Pos(), lex.RuneEOF)}
			break
		}

		tok = l.toks[0]
		l.toks = l.toks[1:]
	case lsTranslationUnit0:
		tok = xc.Token{Char: lex.NewChar(0, TRANSLATION_UNIT)}
		l.state = lsTranslationUnit
		l.toC = true
	case lsTranslationUnit:
	again:
		for len(l.textLine) == 0 {
			var ok bool
			if l.textLine, ok = <-l.ch; !ok {
				return xc.Token{Char: lex.NewChar(l.tokLast.Pos(), lex.RuneEOF)}
			}

			if l.cpp != nil {
				l.cpp(l.textLine)
			}
		}
		tok = l.textLine[0]
		l.textLine = l.textLine[1:]
		if tok.Rune == ' ' {
			goto again
		}

		tok = l.scope.lexerHack(tok, l.tokLast)
	default:
		c := l.scanChar()
		if c.Rune == ccEOF {
			c = lex.NewChar(c.Pos(), lex.RuneEOF)
			if l.isPreprocessing && l.last.Rune != '\n' && !l.finalNLInjected {
				l.finalNLInjected = true
				l.eof = c
				c.Rune = '\n'
				l.state = lsBOL
				return xc.Token{Char: c}
			}

			return xc.Token{Char: c}
		}

		val := 0
		if tokHasVal[c.Rune] {
			b := l.TokenBytes(nil)
			val = dict.ID(b)
			//TODO handle ID UCNs
			//TODO- chars := l.Token()
			//TODO- switch c.Rune {
			//TODO- case IDENTIFIER, IDENTIFIER_LPAREN:
			//TODO- 	b := l.TokenBytes(func(buf *bytes.Buffer) {
			//TODO- 		for i := 0; i < len(chars); {
			//TODO- 			switch c := chars[i]; {
			//TODO- 			case c.Rune == '$' && !l.tweaks.enableDlrInIdentifiers:
			//TODO- 				l.report.Err(c.Pos(), "identifier character set extension '$' not enabled")
			//TODO- 				i++
			//TODO- 			case c.Rune == '\\':
			//TODO- 				r, n := decodeUCN(chars[i:])
			//TODO- 				buf.WriteRune(r)
			//TODO- 				i += n
			//TODO- 			case c.Rune < 0x80: // ASCII
			//TODO- 				buf.WriteByte(byte(c.Rune))
			//TODO- 				i++
			//TODO- 			default:
			//TODO- 				panic("internal error")
			//TODO- 			}
			//TODO- 		}
			//TODO- 	})
			//TODO- 	val = dict.ID(b)
			//TODO- default:
			//TODO- 	panic("internal error: " + yySymName(int(c.Rune)))
			//TODO- }
		}
		tok = xc.Token{Char: c, Val: val}
		if !l.isPreprocessing {
			tok = l.scope.lexerHack(tok, l.tokLast)
		}
	}
	if l.toC {
		tok = toC(tok, l.tweaks)
	}
	l.tokPrev = l.tokLast
	l.tokLast = tok
	return tok
}

// Lex implements yyLexer
func (l *lexer) Lex(lval *yySymType) int {
	var tok xc.Token
	if x := l.injectFunc; l.exampleRule == 0 && len(x) != 0 {
		tok = x[0]
		l.injectFunc = x[1:]
	} else {
		tok = l.scanToken()
	}
	//dbg("Lex %s", PrettyString(tok))
	if l.constExprToks != nil {
		l.constExprToks = append(l.constExprToks, tok)
	}
	l.last = tok
	if tok.Rune == lex.RuneEOF {
		lval.Token = tok
		return 0
	}

	switch l.state {
	case lsBOL:
		switch tok.Rune {
		case PREPROCESSING_FILE, '\n':
			// nop
		case '#':
			l.push(scDIRECTIVE)
			tok = l.scanToken()
			switch tok.Rune {
			case '\n':
				tok.Char = lex.NewChar(tok.Pos(), PPHASH_NL)
			case PPDEFINE:
				l.push(scDEFINE)
				l.state = lsDefine
			case PPELIF, PPENDIF, PPERROR, PPIF, PPLINE, PPPRAGMA:
				l.sc = scINITIAL
				l.state = lsTokens
			case PPELSE, PPIFDEF, PPIFNDEF:
				l.state = lsZero
			case PPUNDEF:
				l.state = lsUndef
			case PPINCLUDE:
				l.sc = scHEADER
				l.state = lsTokens
			case PPINCLUDE_NEXT:
				if l.tweaks.enableIncludeNext {
					l.sc = scHEADER
					l.state = lsTokens
					break
				}

				l.state = lsTokens
				tok.Char = lex.NewChar(tok.Pos(), PPNONDIRECTIVE)
				tok.Val = xc.Dict.SID("include_next")
			default:
				l.state = lsTokens
				tok.Char = lex.NewChar(tok.Pos(), PPNONDIRECTIVE)
				l.pop()
			}
		default:
			l.encodeToken(tok)
			tok.Char = lex.NewChar(tok.Pos(), PPOTHER)
			l.state = lsTokens
		}
	case lsDefine:
		l.pop()
		switch tok.Rune {
		case IDENTIFIER:
			l.state = lsTokens
		case IDENTIFIER_LPAREN:
			l.state = lsSeekRParen
		default:
			l.state = lsZero
		}
	case lsSeekRParen:
		if tok.Rune == ')' {
			l.state = lsTokens
		}
	case lsTokens:
		l.encodeToken(tok)
		tok.Char = lex.NewChar(tok.Pos(), PPOTHER)
	case lsUndef:
		l.state = lsTokens
	}

	lval.Token = tok
	return int(tok.Char.Rune)
}

// Error Implements yyLexer.
func (l *lexer) Error(msg string) {
	msg = strings.Replace(msg, "$end", "EOF", -1)
	t := l.last
	parts := strings.Split(msg, ", expected ")
	if len(parts) == 2 && strings.HasPrefix(parts[0], "unexpected ") && tokHasVal[t.Rune] {
		msg = fmt.Sprintf("%s %s, expected %s", parts[0], t.S(), parts[1])
	}
	l.report.ErrTok(t, "%s", msg)
}

// Reduced implements yyLexerEx
func (l *lexer) Reduced(rule, state int, lval *yySymType) (stop bool) {
	if n := l.exampleRule; n >= 0 && rule != n {
		return false
	}

	switch x := lval.node.(type) {
	case interface {
		fragment() interface{}
	}:
		l.example = x.fragment()
	default:
		l.example = x
	}
	return true
}

func (l *lexer) parsePPConstExpr0(list PPTokenList, p *pp) (interface{}, Type) {
	l.toks = l.toks[:0]
	p.expand(&tokenBuf{decodeTokens(list, nil, true)}, true, func(toks []xc.Token) {
		l.toks = append(l.toks, toks...)
	})
	w := 0
	for _, tok := range l.toks {
		switch tok.Rune {
		case ' ':
			// nop
		case IDENTIFIER:
			if p.macros.m[tok.Val] != nil {
				l.report.ErrTok(tok, "expected constant expression")
				return nil, nil
			}

			tok.Rune = INTCONST
			tok.Val = id0
			fallthrough
		default:
			l.toks[w] = tok
			w++
		}
	}
	l.toks = l.toks[:w]
	l.state = lsConstExpr0
	if yyParse(l) == 0 {
		e := l.constantExpression
		return e.Value, e.Type
	}

	return nil, nil
}

func (l *lexer) parsePPConstExpr(list PPTokenList, p *pp) bool {
	if v, _ := l.parsePPConstExpr0(list, p); v != nil {
		return isNonZero(v)
	}

	return false
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr65593.c<|end_filename|>
/* PR target/65593 */
/* { dg-additional-options "-fpie" { target pie } } */

#include "pr20928.c"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr59569-2.c<|end_filename|>
/* PR middle-end/59569 */
void foo (int *a, int b)
{
  for (; b; b--)
    a[b] = 1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44788.c<|end_filename|>
void joint_decode(float* mlt_buffer1, int t) {
    int i;
    float decode_buffer[1060];
    foo(decode_buffer);
    for (i=0; i<10 ; i++) {
        mlt_buffer1[i] = i * decode_buffer[t];
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/950613-1.c<|end_filename|>
/* { dg-require-effective-target label_values } */
/* { dg-require-effective-target indirect_jumps } */

f ()
{
  long *sp;
  long *pc;

  static void *dummy[] =
    {
      &&L1,
      &&L2,
    };

 L1:
  {
    float val;
    val = *(float *) sp;
    val = -val;
    *(float *) sp = val;
    goto *pc++;
  }

 L2:
  {
    float from;
    *(long long *) sp = from;
    goto *pc++;
  }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/execute/builtins/20010124-1.c<|end_filename|>
/* Verify that structure return doesn't invoke memcpy on 
   overlapping objects.  */

extern void abort (void);

struct S {
  char stuff[1024];
};

union U {
  struct {
    int space;
    struct S s;
  } a;
  struct {
    struct S s;
    int space;
  } b;
};

struct S f(struct S *);
void g(union U *);

void main_test(void)
{
  union U u;
  u.b.s = f(&u.a.s);
  u.a.s = f(&u.b.s);
  g(&u);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr70355.c<|end_filename|>
/* { dg-require-effective-target int128 } */
/* { dg-additional-options "-g" } */

typedef unsigned __int128 v2ti __attribute__ ((vector_size (32)));

unsigned
foo (unsigned i, v2ti v)
{
  do {
    i--;
    v %= ~v;
  } while (i);
  return v[0] + v[1];
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/acc1.c<|end_filename|>
/* { dg-options "-ffast-math" } */

/* Fast maths allows tail recursion to be turned into iteration.  */

double
foo (int n, double f)
{
  if (n == 0)
    return f;
  else
    return f + foo (n - 1, f);
}

double
bar (int n, double f)
{
  if (n == 0)
    return f;
  else
    return f * bar (n - 1, f);
}


<|start_filename|>v2/testdata/bug/11.c<|end_filename|>
int __isnan(double) {}
int __isnanf(float) {}
int __isnanl(long double) {}

#define __typeof__ typeof
#define __dfp_expansion(__call, __fin, x) __fin
#define __mingw_choose_expr __builtin_choose_expr
#define __mingw_types_compatible_p(type1, type2) __builtin_types_compatible_p ( type1 , type2 )
#define isnan(x) __mingw_choose_expr ( __mingw_types_compatible_p ( __typeof__ ( x ) , double ) , __isnan ( x ) , __mingw_choose_expr ( __mingw_types_compatible_p ( __typeof__ ( x ) , float ) , __isnanf ( x ) , __mingw_choose_expr ( __mingw_types_compatible_p ( __typeof__ ( x ) , long double ) , __isnanl ( x ) , __dfp_expansion ( __isnan , ( __builtin_trap ( ) , x ) , x ) ) ) )

int main() {
	float f;
	double d;
	long double l;
	isnan(f);
	isnan(d);
	isnan(l);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr32355.c<|end_filename|>
typedef struct
{
}
__sigset_t;
typedef struct
{
    char coredump;
}
EMode;
extern EMode Mode;
struct sigaction
{
  __sigset_t sa_mask;
  int sa_flags;
};
doSignalsSetup (void)
{
  static const int signals[] = {
    1, 2 , 3, 4, 6, 8, 11, 13, 14, 15, 10, 12, 17, 7
  };
  unsigned int i, sig;
  struct sigaction sa;
  for (i = 0; i < sizeof (signals) / sizeof (int); i++)
    {
      sig = signals[i];
      if (Mode.coredump && (sig == 4 || sig == 8))
        continue;
      sa.sa_flags = (sig == 17);
      sigemptyset (&sa.sa_mask);
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20030707-1.c<|end_filename|>
/* PR c/11449.  */

/* sign_bit_p() in fold-const.c failed to notice that (int) 0x80000000
   was the sign bit of m.  As a result, fold_single_bit_test()
   returned ((unsigned int) m >> 31), and that was eventually passed
   to invert_truthvalue(), which did not know how to handle
   RROTATE_EXPR, causing an ICE.  */

int
foo (int m)
{
  return !(m & ((int) 0x80000000));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41016.c<|end_filename|>
typedef struct _IO_FILE FILE;
void
CompareRNAStructures (FILE * ofp, int start, int L, char *ss_true, char *ss)
{
  int i;
  float agree = 0.;
  float pairs = 0.;
  float pairs_true = 0.;
  for (i = 0; i < L; i++)
    {
      pairs_true += 1.;
      agree += 1.;
    }
  if (((int) pairs % 2 != 0) || ((int) pairs_true % 2 != 0)
      || ((int) agree % 2 != 0))
    Die ("Error in CompareRNAStrutures(); odd number of paired nucleotides\n");
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031011-2.c<|end_filename|>
/* PR optimization/12260.  */

extern int f(void);
extern int g(int);

static char buf[512];
void h(int l) {
    while (l) {
        char *op = buf;
        if (f() == 0)
            break;
        if (g(op - buf + 1))
            break;
    }
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35318.c<|end_filename|>
/* { dg-skip-if "" { pdp11-*-* } { "*" } { "" } } */
/* PR target/35318 */

void
foo ()
{
  double x = 4, y;
  __asm__ volatile ("" : "=r,r" (x), "=r,r" (y) : "%0,0" (x), "m,r" (8));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20120727-2.c<|end_filename|>
/* { dg-options "-mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */

union {
  char *p;
  double d;
} u;

void
f (void)
{
  u.p = "";
  u.d += 1.1;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37418-2.c<|end_filename|>
typedef void ft(int);
volatile ft f;
void f2(ft *p __attribute__((noreturn)))
{
  p = f;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr19853.c<|end_filename|>
struct test { int *x; } global_test;
int global_int;

int flag;

void test (char *dummy)
{
  static const struct test const_test = { &global_int };
  struct test local_test;

  int i;
  for (i = 0; i < 1; i++)
    *dummy = 0;
  if (flag)
    __builtin_memset (dummy, 0, 16);

  local_test = const_test;
  global_test = local_test;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr41182-1.c<|end_filename|>
typedef long unsigned int size_t;
int _lae_process_opts(char *pr, char *pe)
{ 
  return (strlen ("on") < ((size_t) ((pe-&pr[2])>(strlen("on"))                
                                     ? (pe-&pr[2]) : (strlen("on")))));
}


<|start_filename|>v2/encoding.go<|end_filename|>
// Copyright 2017 The CC Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package cc

import (
	"encoding/binary"
	"go/token"
	"reflect"
	"strconv"

	"github.com/cznic/golex/lex"
	"github.com/cznic/ir"
	"github.com/cznic/strutil"
	"github.com/cznic/xc"
)

var (
	dict       = xc.Dict
	printHooks = strutil.PrettyPrintHooks{}
)

func init() {
	for k, v := range xc.PrintHooks {
		printHooks[k] = v
	}
	delete(printHooks, reflect.TypeOf(token.Pos(0)))
	lcRT := reflect.TypeOf(lex.Char{})
	lcH := func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		c := v.(lex.Char)
		r := c.Rune
		s := yySymName(int(r))
		if x := s[0]; x >= '0' && x <= '9' {
			s = strconv.QuoteRune(r)
		}
		f.Format(prefix)
		f.Format("%s", s)
		f.Format(suffix)
	}

	printHooks[lcRT] = lcH
	printHooks[reflect.TypeOf(xc.Token{})] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
		t := v.(xc.Token)
		if (t == xc.Token{}) {
			return
		}

		lcH(f, t.Char, prefix, "")
		if s := t.S(); len(s) != 0 {
			f.Format(" %q", s)
		}
		f.Format(suffix)
	}
	for _, v := range []interface{}{
		(*ir.Float32Value)(nil),
		(*ir.Float64Value)(nil),
		(*ir.Int32Value)(nil),
		(*ir.Int64Value)(nil),
		(*ir.StringValue)(nil),
		DirectDeclaratorCase(0),
		ExprCase(0),
		Linkage(0),
		StorageDuration(0),
		TypeKind(0),
		ir.Linkage(0),
	} {
		printHooks[reflect.TypeOf(v)] = func(f strutil.Formatter, v interface{}, prefix, suffix string) {
			f.Format(prefix)
			f.Format("%v", v)
			f.Format(suffix)
		}
	}
}

var (
	nopos xc.Token

	// Null pointer, [0]6.3.2.3-3.
	Null = &ir.AddressValue{}

	idAsm                    = dict.SID("asm")
	idAttribute              = dict.SID("__attribute__")
	idBuiltinAlloca          = dict.SID("__builtin_alloca")
	idBuiltinClasifyType     = dict.SID("__builtin_classify_type")
	idBuiltinTypesCompatible = dict.SID("__builtin_types_compatible__") // Implements __builtin_types_compatible_p
	idBuiltinVaList          = dict.SID("__builtin_va_list")
	idChar                   = dict.SID("char")
	idConst                  = dict.SID("const")
	idDefine                 = dict.SID("define")
	idDefined                = dict.SID("defined")
	idElif                   = dict.SID("elif")
	idElse                   = dict.SID("else")
	idEndif                  = dict.SID("endif")
	idError                  = dict.SID("error")
	idFile                   = dict.SID("__FILE__")
	idFuncName               = dict.SID("__func__")
	idIf                     = dict.SID("if")
	idIfdef                  = dict.SID("ifdef")
	idIfndef                 = dict.SID("ifndef")
	idInclude                = dict.SID("include")
	idIncludeNext            = dict.SID("include_next")
	idLine                   = dict.SID("line")
	idLineMacro              = dict.SID("__LINE__")
	idMain                   = dict.SID("main")
	idOne                    = dict.SID("1")
	idPopMacro               = dict.SID("pop_macro")
	idPragma                 = dict.SID("pragma")
	idPtrdiffT               = dict.SID("ptrdiff_t")
	idPushMacro              = dict.SID("push_macro")
	idSizeT                  = dict.SID("size_t")
	idStatic                 = dict.SID("static")
	idUndef                  = dict.SID("undef")
	idVaArgs                 = dict.SID("__VA_ARGS__")
	idVaList                 = dict.SID("va_list")
	idWarning                = dict.SID("warning")
	idWcharT                 = dict.SID("wchar_t")
	idZero                   = dict.SID("0")

	protectedMacro = map[int]bool{
		idFile:      true,
		idLineMacro: true,
	}

	keywords = map[int]rune{
		dict.SID("_Bool"):       BOOL,
		dict.SID("_Complex"):    COMPLEX,
		dict.SID("__alignof__"): ALIGNOF,
		dict.SID("auto"):        AUTO,
		dict.SID("break"):       BREAK,
		dict.SID("case"):        CASE,
		dict.SID("char"):        CHAR,
		dict.SID("const"):       CONST,
		dict.SID("continue"):    CONTINUE,
		dict.SID("default"):     DEFAULT,
		dict.SID("do"):          DO,
		dict.SID("double"):      DOUBLE,
		dict.SID("else"):        ELSE,
		dict.SID("enum"):        ENUM,
		dict.SID("extern"):      EXTERN,
		dict.SID("float"):       FLOAT,
		dict.SID("for"):         FOR,
		dict.SID("goto"):        GOTO,
		dict.SID("if"):          IF,
		dict.SID("inline"):      INLINE,
		dict.SID("int"):         INT,
		dict.SID("long"):        LONG,
		dict.SID("register"):    REGISTER,
		dict.SID("restrict"):    RESTRICT,
		dict.SID("return"):      RETURN,
		dict.SID("short"):       SHORT,
		dict.SID("signed"):      SIGNED,
		dict.SID("sizeof"):      SIZEOF,
		dict.SID("static"):      STATIC,
		dict.SID("struct"):      STRUCT,
		dict.SID("switch"):      SWITCH,
		dict.SID("typedef"):     TYPEDEF,
		dict.SID("typeof"):      TYPEOF,
		dict.SID("union"):       UNION,
		dict.SID("unsigned"):    UNSIGNED,
		dict.SID("void"):        VOID,
		dict.SID("volatile"):    VOLATILE,
		dict.SID("while"):       WHILE,
	}

	tokConstVals = map[rune]int{
		ADDASSIGN: dict.SID("+="),
		ANDAND:    dict.SID("&&"),
		ANDASSIGN: dict.SID("&="),
		ARROW:     dict.SID("->"),
		AUTO:      dict.SID("auto"),
		BOOL:      dict.SID("_Bool"),
		BREAK:     dict.SID("break"),
		CASE:      dict.SID("case"),
		CHAR:      dict.SID("char"),
		COMPLEX:   dict.SID("_Complex"),
		CONST:     dict.SID("const"),
		CONTINUE:  dict.SID("continue"),
		DDD:       dict.SID("..."),
		DEC:       dict.SID("--"),
		DEFAULT:   dict.SID("default"),
		DIVASSIGN: dict.SID("/="),
		DO:        dict.SID("do"),
		DOUBLE:    dict.SID("double"),
		ELSE:      dict.SID("else"),
		ENUM:      dict.SID("enum"),
		EQ:        dict.SID("=="),
		EXTERN:    dict.SID("extern"),
		FLOAT:     dict.SID("float"),
		FOR:       dict.SID("for"),
		GEQ:       dict.SID(">="),
		GOTO:      dict.SID("goto"),
		IF:        dict.SID("if"),
		INC:       dict.SID("++"),
		INLINE:    dict.SID("inline"),
		INT:       dict.SID("int"),
		LEQ:       dict.SID("<="),
		LONG:      dict.SID("long"),
		LSH:       dict.SID("<<"),
		LSHASSIGN: dict.SID("<<="),
		MODASSIGN: dict.SID("%="),
		MULASSIGN: dict.SID("*="),
		NEQ:       dict.SID("!="),
		ORASSIGN:  dict.SID("|="),
		OROR:      dict.SID("||"),
		PPPASTE:   dict.SID("##"),
		REGISTER:  dict.SID("register"),
		RESTRICT:  dict.SID("restrict"),
		RETURN:    dict.SID("return"),
		RSH:       dict.SID(">>"),
		RSHASSIGN: dict.SID(">>="),
		SHORT:     dict.SID("short"),
		SIGNED:    dict.SID("signed"),
		SIZEOF:    dict.SID("sizeof"),
		STATIC:    dict.SID("static"),
		STRUCT:    dict.SID("struct"),
		SUBASSIGN: dict.SID("-="),
		SWITCH:    dict.SID("switch"),
		TYPEDEF:   dict.SID("typedef"),
		TYPEOF:    dict.SID("typeof"),
		UNION:     dict.SID("union"),
		UNSIGNED:  dict.SID("unsigned"),
		VOID:      dict.SID("void"),
		VOLATILE:  dict.SID("volatile"),
		WHILE:     dict.SID("while"),
		XORASSIGN: dict.SID("^="),
	}

	tokHasVal = map[rune]struct{}{
		CHARCONST:         {},
		FLOATCONST:        {},
		IDENTIFIER:        {},
		INTCONST:          {},
		LONGCHARCONST:     {},
		LONGSTRINGLITERAL: {},
		NON_REPL:          {},
		PPNUMBER:          {},
		STRINGLITERAL:     {},
		TYPEDEF_NAME:      {},
	}

	followSetHasTypedefName = [len(yyParseTab)]bool{}

	classifyType = map[TypeKind]int{
		0:                 noTypeClass,
		Void:              voidTypeClass,
		Ptr:               pointerTypeClass,
		Char:              charTypeClass,
		SChar:             charTypeClass,
		UChar:             charTypeClass,
		Short:             integerTypeClass,
		UShort:            integerTypeClass,
		Int:               integerTypeClass,
		UInt:              integerTypeClass,
		Long:              integerTypeClass,
		ULong:             integerTypeClass,
		LongLong:          integerTypeClass,
		ULongLong:         integerTypeClass,
		Float:             realTypeClass,
		Double:            realTypeClass,
		LongDouble:        realTypeClass,
		Bool:              booleanTypeClass,
		FloatComplex:      complexTypeClass,
		DoubleComplex:     complexTypeClass,
		LongDoubleComplex: complexTypeClass,
		Struct:            recordTypeClass,
		Union:             unionTypeClass,
		Enum:              enumeralTypeClass,
		TypedefName:       noTypeClass,
		Function:          functionTypeClass,
		Array:             arrayTypeClass,
	}
)

func init() {
	for i, v := range yyFollow {
		for _, v := range v {
			if v == TYPEDEF_NAME {
				followSetHasTypedefName[i] = true
			}
		}
	}
}

func isUCNDigit(r rune) bool {
	return int(r) < len(ucnDigits)<<bitShift && ucnDigits[uint(r)>>bitShift]&(1<<uint(r&bitMask)) != 0
}

func isUCNNonDigit(r rune) bool {
	return int(r) < len(ucnNonDigits)<<bitShift && ucnNonDigits[uint(r)>>bitShift]&(1<<uint(r&bitMask)) != 0
}

func rune2class(r rune) (c int) {
	switch {
	case r == lex.RuneEOF:
		return ccEOF
	case r < 128:
		return int(r)
	case isUCNDigit(r):
		return ccUCNDigit
	case isUCNNonDigit(r):
		return ccUCNNonDigit
	default:
		return ccOther
	}
}

func decodeToken(b []byte, pos token.Pos) ([]byte, token.Pos, xc.Token) {
	r, n := binary.Uvarint(b)
	b = b[n:]
	d, n := binary.Uvarint(b)
	b = b[n:]
	np := pos + token.Pos(d)
	c := lex.NewChar(np, rune(r))
	var v uint64
	if _, ok := tokHasVal[c.Rune]; ok {
		v, n = binary.Uvarint(b)
		b = b[n:]
	}
	return b, np, xc.Token{Char: c, Val: int(v)}
}

// TokSrc returns t in its source form.
func TokSrc(t xc.Token) string {
	if x, ok := tokConstVals[t.Rune]; ok {
		return string(dict.S(x))
	}

	if _, ok := tokHasVal[t.Rune]; ok {
		return string(t.S())
	}

	return string(t.Rune)
}

// escape-sequence		{simple-sequence}|{octal-escape-sequence}|{hexadecimal-escape-sequence}|{universal-character-name}
// simple-sequence		\\['\x22?\\abfnrtv]
// octal-escape-sequence	\\{octal-digit}{octal-digit}?{octal-digit}?
// hexadecimal-escape-sequence	\\x{hexadecimal-digit}+
func decodeEscapeSequence(runes []rune) (rune, int) {
	if runes[0] != '\\' {
		panic("internal error")
	}

	r := runes[1]
	switch r {
	case '\'', '"', '?', '\\':
		return r, 2
	case 'a':
		return 7, 2
	case 'b':
		return 8, 2
	case 'f':
		return 12, 2
	case 'n':
		return 10, 2
	case 'r':
		return 13, 2
	case 't':
		return 9, 2
	case 'v':
		return 11, 2
	case 'x':
		v, n := 0, 2
	loop2:
		for _, r := range runes[2:] {
			switch {
			case r >= '0' && r <= '9', r >= 'a' && r <= 'f', r >= 'A' && r <= 'F':
				v = v<<4 | decodeHex(r)
				n++
			default:
				break loop2
			}
		}
		return -rune(v & 0xff), n
	case 'u', 'U':
		return decodeUCN(runes)
	}

	if r < '0' || r > '7' {
		panic("internal error")
	}

	v, n := 0, 1
loop:
	for _, r := range runes[1:] {
		switch {
		case r >= '0' && r <= '7':
			v = v<<3 | (int(r) - '0')
			n++
		default:
			break loop
		}
	}
	return -rune(v), n
}

func decodeHex(r rune) int {
	switch {
	case r >= '0' && r <= '9':
		return int(r) - '0'
	default:
		x := int(r) &^ 0x20
		return x - 'A' + 10
	}
}

// universal-character-name	\\u{hex-quad}|\\U{hex-quad}{hex-quad}
func decodeUCN(runes []rune) (rune, int) {
	if runes[0] != '\\' {
		panic("internal error")
	}

	runes = runes[1:]
	switch runes[0] {
	case 'u':
		return rune(decodeHexQuad(runes[1:])), 6
	case 'U':
		return rune(decodeHexQuad(runes[1:])<<16 | decodeHexQuad(runes[5:])), 10
	default:
		panic("internal error")
	}
}

// hex-quad	{hexadecimal-digit}{hexadecimal-digit}{hexadecimal-digit}{hexadecimal-digit}
func decodeHexQuad(runes []rune) int {
	n := 0
	for _, r := range runes[:4] {
		n = n<<4 | decodeHex(r)
	}
	return n
}

// Values from GCC's typeclass.h
const (
	noTypeClass = iota - 1
	voidTypeClass
	integerTypeClass
	charTypeClass
	enumeralTypeClass
	booleanTypeClass
	pointerTypeClass
	referenceTypeClass
	offsetTypeClass
	realTypeClass
	complexTypeClass
	functionTypeClass
	methodTypeClass
	recordTypeClass
	unionTypeClass
	arrayTypeClass
	stringTypeClass
	langTypeClass
)


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44707.c<|end_filename|>
/* { dg-do compile { target powerpc-ibm-aix* } } */

extern struct { int a, b, c, d; } v;
extern int w;

void
foo (void)
{
  int e1 = v.a;
  int e2 = w;
  int e3 = v.b;
  int e4 = v.c;
  int e5 = v.d;
  __asm__ volatile ("" : : "nro" (e1), "nro" (e2), "nro" (e3), "nro" (e4), "nro" (e5));
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040415-2.c<|end_filename|>
int isascii (int);

int f1 (const char *type)
{
  return isascii ((unsigned char) *type++);
}



<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20040419-1.c<|end_filename|>
/* This used to ICE because PHI-OPT would produce non-gimple code. */

int f(double d0, double d1) { return d0 > 0 == d1 > 0; }


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54103-4.c<|end_filename|>
void
f (void)
{
  0 / 0 && 1 ? : 0;
}


<|start_filename|>v2/headers/linux_arm/usr/include/stdint.h<|end_filename|>
/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   <http://www.gnu.org/licenses/>.  */

/*
 *	ISO C99: 7.18 Integer types <stdint.h>
 */

#ifndef _STDINT_H
#define _STDINT_H	1

#include <features.h>
#include <bits/wchar.h>
#include <bits/wordsize.h>

/* Exact integral types.  */

/* Signed.  */

/* There is some amount of overlap with <sys/types.h> as known by inet code */
#ifndef __int8_t_defined
#define __int8_t_defined
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
#if __WORDSIZE == 64
typedef long int int64_t;
#else
__extension__ typedef long long int int64_t;
#endif
#endif

/* Unsigned.  */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int uint32_t;
#define __uint32_t_defined
#endif
#if __WORDSIZE == 64
typedef unsigned long int uint64_t;
#else
__extension__ typedef unsigned long long int uint64_t;
#endif

/* Small types.  */

/* Signed.  */
typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;
#if __WORDSIZE == 64
typedef long int int_least64_t;
#else
__extension__ typedef long long int int_least64_t;
#endif

/* Unsigned.  */
typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;
#if __WORDSIZE == 64
typedef unsigned long int uint_least64_t;
#else
__extension__ typedef unsigned long long int uint_least64_t;
#endif

/* Fast types.  */

/* Signed.  */
typedef signed char int_fast8_t;
#if __WORDSIZE == 64
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
#else
typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__ typedef long long int int_fast64_t;
#endif

/* Unsigned.  */
typedef unsigned char uint_fast8_t;
#if __WORDSIZE == 64
typedef unsigned long int uint_fast16_t;
typedef unsigned long int uint_fast32_t;
typedef unsigned long int uint_fast64_t;
#else
typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
__extension__ typedef unsigned long long int uint_fast64_t;
#endif

/* Types for `void *' pointers.  */
#if __WORDSIZE == 64
#ifndef __intptr_t_defined
typedef long int intptr_t;
#define __intptr_t_defined
#endif
typedef unsigned long int uintptr_t;
#else
#ifndef __intptr_t_defined
typedef int intptr_t;
#define __intptr_t_defined
#endif
typedef unsigned int uintptr_t;
#endif

/* Largest integral types.  */
#if __WORDSIZE == 64
typedef long int intmax_t;
typedef unsigned long int uintmax_t;
#else
__extension__ typedef long long int intmax_t;
__extension__ typedef unsigned long long int uintmax_t;
#endif

#if __WORDSIZE == 64
#define __INT64_C(c)	c ## L
#define __UINT64_C(c)	c ## UL
#else
#define __INT64_C(c)	c ## LL
#define __UINT64_C(c)	c ## ULL
#endif

/* Limits of integral types.  */

/* Minimum of signed integral types.  */
#define INT8_MIN		(-128)
#define INT16_MIN		(-32767-1)
#define INT32_MIN		(-2147483647-1)
#define INT64_MIN		(-__INT64_C(9223372036854775807)-1)
/* Maximum of signed integral types.  */
#define INT8_MAX		(127)
#define INT16_MAX		(32767)
#define INT32_MAX		(2147483647)
#define INT64_MAX		(__INT64_C(9223372036854775807))

/* Maximum of unsigned integral types.  */
#define UINT8_MAX		(255)
#define UINT16_MAX		(65535)
#define UINT32_MAX		(4294967295U)
#define UINT64_MAX		(__UINT64_C(18446744073709551615))

/* Minimum of signed integral types having a minimum size.  */
#define INT_LEAST8_MIN		(-128)
#define INT_LEAST16_MIN	(-32767-1)
#define INT_LEAST32_MIN	(-2147483647-1)
#define INT_LEAST64_MIN	(-__INT64_C(9223372036854775807)-1)
/* Maximum of signed integral types having a minimum size.  */
#define INT_LEAST8_MAX		(127)
#define INT_LEAST16_MAX	(32767)
#define INT_LEAST32_MAX	(2147483647)
#define INT_LEAST64_MAX	(__INT64_C(9223372036854775807))

/* Maximum of unsigned integral types having a minimum size.  */
#define UINT_LEAST8_MAX	(255)
#define UINT_LEAST16_MAX	(65535)
#define UINT_LEAST32_MAX	(4294967295U)
#define UINT_LEAST64_MAX	(__UINT64_C(18446744073709551615))

/* Minimum of fast signed integral types having a minimum size.  */
#define INT_FAST8_MIN		(-128)
#if __WORDSIZE == 64
#define INT_FAST16_MIN	(-9223372036854775807L-1)
#define INT_FAST32_MIN	(-9223372036854775807L-1)
#else
#define INT_FAST16_MIN	(-2147483647-1)
#define INT_FAST32_MIN	(-2147483647-1)
#endif
#define INT_FAST64_MIN		(-__INT64_C(9223372036854775807)-1)
/* Maximum of fast signed integral types having a minimum size.  */
#define INT_FAST8_MAX		(127)
#if __WORDSIZE == 64
#define INT_FAST16_MAX	(9223372036854775807L)
#define INT_FAST32_MAX	(9223372036854775807L)
#else
#define INT_FAST16_MAX	(2147483647)
#define INT_FAST32_MAX	(2147483647)
#endif
#define INT_FAST64_MAX		(__INT64_C(9223372036854775807))

/* Maximum of fast unsigned integral types having a minimum size.  */
#define UINT_FAST8_MAX		(255)
#if __WORDSIZE == 64
#define UINT_FAST16_MAX	(18446744073709551615UL)
#define UINT_FAST32_MAX	(18446744073709551615UL)
#else
#define UINT_FAST16_MAX	(4294967295U)
#define UINT_FAST32_MAX	(4294967295U)
#endif
#define UINT_FAST64_MAX	(__UINT64_C(18446744073709551615))

/* Values to test for integral types holding `void *' pointer.  */
#if __WORDSIZE == 64
#define INTPTR_MIN		(-9223372036854775807L-1)
#define INTPTR_MAX		(9223372036854775807L)
#define UINTPTR_MAX		(18446744073709551615UL)
#else
#define INTPTR_MIN		(-2147483647-1)
#define INTPTR_MAX		(2147483647)
#define UINTPTR_MAX		(4294967295U)
#endif

/* Minimum for largest signed integral type.  */
#define INTMAX_MIN		(-__INT64_C(9223372036854775807)-1)
/* Maximum for largest signed integral type.  */
#define INTMAX_MAX		(__INT64_C(9223372036854775807))

/* Maximum for largest unsigned integral type.  */
#define UINTMAX_MAX		(__UINT64_C(18446744073709551615))

/* Limits of other integer types.  */

/* Limits of `ptrdiff_t' type.  */
#if __WORDSIZE == 64
#define PTRDIFF_MIN		(-9223372036854775807L-1)
#define PTRDIFF_MAX		(9223372036854775807L)
#else
#define PTRDIFF_MIN		(-2147483647-1)
#define PTRDIFF_MAX		(2147483647)
#endif

/* Limits of `sig_atomic_t'.  */
#define SIG_ATOMIC_MIN		(-2147483647-1)
#define SIG_ATOMIC_MAX		(2147483647)

/* Limit of `size_t' type.  */
#if __WORDSIZE == 64
#define SIZE_MAX		(18446744073709551615UL)
#else
#ifdef __WORDSIZE32_SIZE_ULONG
#define SIZE_MAX		(4294967295UL)
#else
#define SIZE_MAX		(4294967295U)
#endif
#endif

/* Limits of `wchar_t'.  */
#ifndef WCHAR_MIN
/* These constants might also be defined in <wchar.h>.  */
#define WCHAR_MIN		__WCHAR_MIN
#define WCHAR_MAX		__WCHAR_MAX
#endif

/* Limits of `wint_t'.  */
#define WINT_MIN		(0u)
#define WINT_MAX		(4294967295u)

/* Signed.  */
#define INT8_C(c)	c
#define INT16_C(c)	c
#define INT32_C(c)	c
#if __WORDSIZE == 64
#define INT64_C(c)	c ## L
#else
#define INT64_C(c)	c ## LL
#endif

/* Unsigned.  */
#define UINT8_C(c)	c
#define UINT16_C(c)	c
#define UINT32_C(c)	c ## U
#if __WORDSIZE == 64
#define UINT64_C(c)	c ## UL
#else
#define UINT64_C(c)	c ## ULL
#endif

/* Maximal type.  */
#if __WORDSIZE == 64
#define INTMAX_C(c)	c ## L
#define UINTMAX_C(c)	c ## UL
#else
#define INTMAX_C(c)	c ## LL
#define UINTMAX_C(c)	c ## ULL
#endif

#endif				/* stdint.h */


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr37395.c<|end_filename|>
/* PR target/37395 */

int
f (int j)
{
  int i;
  asm volatile ("" : "=r"(i));
  if (i >= 0)
    j = 0;
  return j;
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr48742.c<|end_filename|>
/* PR c/48742 */

void baz (int);

int
foo (void)
{
  return 1 / 0 > 0;
}

void
bar (void)
{
  baz (1 <= 2 % (3 >> 1 > 5 / 6 == 3));
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr42025-1.c<|end_filename|>
typedef void* Ptr;

struct A
{
  int i;
  union
  {
    Ptr p;
    char *q;
  } u;
};

static void foo(struct A *p, char *q)
{
  if (p->i)
    p->u.p = 0;
  else
    p->u.q = q;
}

void bar(struct A *p, char *q)
{
  foo(p, q);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr44043.c<|end_filename|>
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned int __u32;
typedef unsigned long __kernel_size_t;
typedef __kernel_size_t size_t;
typedef __u8 uint8_t;
typedef __u16 __be16;
typedef __u32 __be32;
struct msghdr {
    struct iovec * msg_iov;
    unsigned msg_flags;
};
enum { IPPROTO_ICMP = 1 };
struct sk_buff { };
static inline __attribute__((always_inline)) struct dst_entry *
skb_dst(const struct sk_buff *skb)
{
};
enum nf_inet_hooks { NF_INET_LOCAL_OUT };
struct net_device {
    unsigned mtu;
};
static inline __attribute__((always_inline)) int
NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sk_buff *skb,
	       struct net_device *in, struct net_device *out,
	       int (*okfn)(struct sk_buff *), int thresh)
{
  int ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, thresh);
  if (ret == 1)
    ret = okfn(skb);
  return ret;
}
static inline __attribute__((always_inline)) int
NF_HOOK(uint8_t pf, unsigned int hook, struct sk_buff *skb,
	struct net_device *in, struct net_device *out,
	int (*okfn)(struct sk_buff *))
{
  return NF_HOOK_THRESH(pf, hook, skb, in, out, okfn, (-((int)(~0U>>1)) - 1));
}
struct dst_entry {
    struct net_device *dev;
    int (*output)(struct sk_buff*);
};
static inline __attribute__((always_inline)) int dst_output(struct sk_buff *skb) {
    return skb_dst(skb)->output(skb);
};
struct iphdr {
    __u8 protocol;
};
struct inet_sock {
    __be16 inet_dport;
    __u8 recverr: 1,     hdrincl: 1;
    struct { } cork;
};
struct icmphdr {
    __u8 type;
};
struct rtable {
    union { struct dst_entry dst; } u;
    __be32 rt_dst;
};
struct sock;
struct inet_sock *inet_sk (struct sock *);
struct net *sock_net (struct sock *);
void *skb_transport_header (struct sk_buff *);
static int raw_send_hdrinc(struct sock *sk, void *from, size_t length,
			   struct rtable *rt,    unsigned int flags)
{
  struct inet_sock *inet = inet_sk(sk);
  struct net *net = sock_net(sk);
  struct iphdr *iph;
  struct sk_buff *skb;
  if (length > rt->u.dst.dev->mtu) 
    ip_local_error(sk, 90, rt->rt_dst, inet->inet_dport, rt->u.dst.dev->mtu);
  if (flags&0x10)
    goto out;
  if (iph->protocol == IPPROTO_ICMP)
    icmp_out_count(net, ((struct icmphdr *)skb_transport_header(skb))->type);
  NF_HOOK(2, NF_INET_LOCAL_OUT, skb, ((void *)0), rt->u.dst.dev,
	  dst_output);
out:
  while (0);
}
int raw_sendmsg(struct sock *sk, struct msghdr *msg, size_t len)
{
  raw_send_hdrinc(sk, msg->msg_iov, len, (void *)0, msg->msg_flags);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr54713-2.c<|end_filename|>
/* PR tree-optimization/54713 */

#define N 16
#define ONE 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
#define ONEU 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U, 1U

#include "pr54713-1.c"


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr52750.c<|end_filename|>
/* PR middle-end/52750 */

typedef signed char V __attribute__((vector_size (32)));

void
foo (V *x)
{
  V m = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
	  16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
  *x = __builtin_shuffle (*x, m);
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/20031125-1.c<|end_filename|>
short *_offsetTable;
/* This tests to make sure PRE splits the entry block ->block 0 edge
   when there are multiple block 0 predecessors.
   This is done so that we don't end up with an insertion on the 
   entry block -> block 0 edge which would require a split at insertion
   time.  
   PR 13163.  */
void proc4WithoutFDFE(char *dst, const char *src, int next_offs, int bw,
		int bh, int pitch)
{
	do {
		int i = bw;
		int code = *src++;
		int x, l;
		int length = *src++ + 1;

		for (l = 0; l < length; l++) {
			int x;

			for (x = 0; x < 4; x++) ;
			if (i == 0)
				dst += pitch * 3;
		}
		char *dst2 = dst + _offsetTable[code] + next_offs;

		for (x = 0; x < 4; x++) {
			int j = 0;
			(dst + pitch * x)[j] = (dst2 + pitch * x)[j];
		}
		dst += pitch * 3;
	} while (--bh);
}




<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr38343-2.c<|end_filename|>
/* PR middle-end/38343 */

static struct S
{
  char f[6];
} s[] = { {"01000"} };

char *
foo (void)
{
  return __builtin_stpcpy (s[0].f, "S0022");
}


<|start_filename|>testdata/gcc-6.3.0/gcc/testsuite/gcc.c-torture/compile/pr35869.c<|end_filename|>
struct texture_stage_op
{
    unsigned int carg1, carg2, carg0;
    unsigned int aarg1, aarg2, aarg0;
    unsigned int dst;
};

static const char *debug_register(unsigned int reg) {
    switch(reg) {
        case 0x8921: return "GL_REG_0_ATI";
        case 0x8923: return "GL_REG_2_ATI";
        case 0x0: return "GL_ZERO";
        case 0x1: return "GL_ONE";
        default: return "Unknown register\n";
    }
}

static unsigned int find_tmpreg(struct texture_stage_op op[8]) {
    int i;
    int tex_used[8];

    for(i = 0; i < 8; i++) {
        if(op[i].carg1 == 0x00000002 ) {
            tex_used[i] = 1;
        }
    }

    for(i = 1; i < 6; i++) {
        if(!tex_used[i]) {
                return 0x8921 + i;
        }
    }
    return 0;
}

extern f(const char*);

void g() {
    struct texture_stage_op op[8];
    unsigned int tmparg = find_tmpreg(op);
    unsigned int dstreg;

    if(tmparg == 0x0) return;
    dstreg = tmparg;
    f(debug_register(dstreg));
    return;
}
