OSDN Git Service

PR c/20740
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / 20011107-1.c
1 /* { dg-do compile { target i?86-*-* } } */
2 /* { dg-skip-if "" { i?86-*-* } { "-m64" } { "" } } */
3 /* { dg-options "-O2 -mtune=k6" } */
4
5 void
6 foo (unsigned char *x, const unsigned char *y)
7 {
8   int a = 6;
9   unsigned char *b;
10   for (;;)
11     {
12       unsigned char *c = x;
13
14       while (1)
15         {
16           if (c + 2 < y)
17             c += 3;
18           else
19             break;
20         }
21       b = x + a;
22       if (*c == 4 || *c == 5)
23         {
24           unsigned char d = c[2];
25
26           if (b[3] == 7 || b[3] == 8)
27             {
28               int e = b[3] == 8;
29               if (d < b[4] * 8 && b[5 + d / 8] & (1 << (d % 8)))
30                 e = !e;
31               if (!e)
32                 x[-3] = 26;
33             }
34         }
35       else if (*c == 7 && b[3] == 8)
36         {
37           int f;
38           for (f = 0; f < (int) c[1]; f++)
39             if (!(c[2 + f] == 0))
40               break;
41           if (f == c[1])
42             x[-3] = 26;
43         }
44       x -= 2;
45     }
46 }