1  /* { dg-do compile } */
       2  /* { dg-require-effective-target ia32 } */
       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  }