1/* { dg-do compile } */
2/* { dg-require-effective-target ilp32 } */
3/* { dg-options "-O2 -mtune=k6" } */
4
5void
6foo (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