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 }