PR middle-end/77357 - strlen of constant strings not folded
[official-gcc.git] / gcc / testsuite / gcc.c-torture / execute / 20010129-1.c
blobac83efe579df7a09dfd1d268bde10c3c32b36ad4
1 /* { dg-options "-mtune=i686" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
3 extern void abort (void);
4 extern void exit (int);
6 long baz1 (void *a)
8 static long l;
9 return l++;
12 int baz2 (const char *a)
14 return 0;
17 int baz3 (int i)
19 if (!i)
20 abort ();
21 return 1;
24 void **bar;
26 int foo (void *a, long b, int c)
28 int d = 0, e, f = 0, i;
29 char g[256];
30 void **h;
32 g[0] = '\n';
33 g[1] = 0;
35 while (baz1 (a) < b) {
36 if (g[0] != ' ' && g[0] != '\t') {
37 f = 1;
38 e = 0;
39 if (!d && baz2 (g) == 0) {
40 if ((c & 0x10) == 0)
41 continue;
42 e = d = 1;
44 if (!((c & 0x10) && (c & 0x4000) && e) && (c & 2))
45 continue;
46 if ((c & 0x2000) && baz2 (g) == 0)
47 continue;
48 if ((c & 0x1408) && baz2 (g) == 0)
49 continue;
50 if ((c & 0x200) && baz2 (g) == 0)
51 continue;
52 if (c & 0x80) {
53 for (h = bar, i = 0; h; h = (void **)*h, i++)
54 if (baz3 (i))
55 break;
57 f = 0;
60 return 0;
63 int main ()
65 void *n = 0;
66 bar = &n;
67 foo (&n, 1, 0xc811);
68 exit (0);