1 /* { dg-do compile } */
2 /* { dg-require-effective-target ia32 } */
3 /* { dg-options "-O2 -mtune=k6" } */
4 
5 void
foo(unsigned char * x,const unsigned char * y)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 }
47