modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20010915-1.c (about)

     1  /* Bug in reorg.c, deleting the "++" in the last loop in main.
     2     Origin: <hp@axis.com>.  */
     3  
     4  extern void f (void);
     5  extern int x (int, char **);
     6  extern int r (const char *);
     7  extern char *s (char *, char **);
     8  extern char *m (char *);
     9  char *u;
    10  char *h;
    11  int check = 0;
    12  int o = 0;
    13  
    14  int main (int argc, char **argv)
    15  {
    16    char *args[] = {"a", "b", "c", "d", "e"};
    17    if (x (5, args) != 0 || check != 2 || o != 5)
    18      abort ();
    19    exit (0);
    20  }
    21  
    22  int x (int argc, char **argv)
    23  {
    24    int opt = 0;
    25    char *g = 0;
    26    char *p = 0;
    27  
    28    if (argc > o && argc > 2 && argv[o])
    29      {
    30        g = s (argv[o], &p);
    31        if (g)
    32  	{
    33  	  *g++ = '\0';
    34  	  h = s (g, &p);
    35  	  if (g == p)
    36  	    h = m (g);
    37  	}
    38        u = s (argv[o], &p);
    39        if (argv[o] == p)
    40  	u = m (argv[o]);
    41      }
    42    else
    43      abort ();
    44  
    45    while (++o < argc)
    46      if (r (argv[o]) == 0)
    47        return 1;
    48  
    49    return 0;
    50  }
    51  
    52  char *m (char *x) { abort (); }
    53  char *s (char *v, char **pp)
    54  {
    55    if (strcmp (v, "a") != 0 || check++ > 1)
    56      abort ();
    57    *pp = v+1;
    58    return 0;
    59  }
    60  
    61  int r (const char *f)
    62  {
    63    static char c[2] = "b";
    64    static int cnt = 0;
    65  
    66    if (*f != *c || f[1] != c[1] || cnt > 3)
    67      abort ();
    68    c[0]++;
    69    cnt++;
    70    return 1;
    71  }