2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20010915-1.c
blob5a04bf58f10caba75961d55d4892c21fdc7d81ef
1 /* Bug in reorg.c, deleting the "++" in the last loop in main.
2 Origin: <hp@axis.com>. */
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;
14 int main (int argc, char **argv)
16 char *args[] = {"a", "b", "c", "d", "e"};
17 if (x (5, args) != 0 || check != 2 || o != 5)
18 abort ();
19 exit (0);
22 int x (int argc, char **argv)
24 int opt = 0;
25 char *g = 0;
26 char *p = 0;
28 if (argc > o && argc > 2 && argv[o])
30 g = s (argv[o], &p);
31 if (g)
33 *g++ = '\0';
34 h = s (g, &p);
35 if (g == p)
36 h = m (g);
38 u = s (argv[o], &p);
39 if (argv[o] == p)
40 u = m (argv[o]);
42 else
43 abort ();
45 while (++o < argc)
46 if (r (argv[o]) == 0)
47 return 1;
49 return 0;
52 char *m (char *x) { abort (); }
53 char *s (char *v, char **pp)
55 if (strcmp (v, "a") != 0 || check++ > 1)
56 abort ();
57 *pp = v+1;
58 return 0;
61 int r (const char *f)
63 static char c[2] = "b";
64 static int cnt = 0;
66 if (*f != *c || f[1] != c[1] || cnt > 3)
67 abort ();
68 c[0]++;
69 cnt++;
70 return 1;