1 /* PR debug/65779 */
2 /* { dg-do assemble } */
3 /* { dg-options "-O2 -fcompare-debug" } */
4 
5 unsigned long
foo(unsigned long x,unsigned char * y,unsigned int z)6 foo (unsigned long x, unsigned char *y, unsigned int z)
7 {
8   unsigned long a = x & 0xffff;
9   unsigned long b = (x >> 16) & 0xffff;
10   int k;
11   if (y == 0) return 1L;
12   while (z > 0)
13     {
14       k = z < 5552 ? z : 5552;
15       z -= k;
16       while (k >= 16)
17 	{
18           a += *y++; b += a;
19 	  a += *y++; b += a;
20 	  a += *y++; b += a;
21 	  a += *y++; b += a;
22 	  a += *y++; b += a;
23 	  a += *y++; b += a;
24 	  a += *y++; b += a;
25 	  a += *y++; b += a;
26 	  a += *y++; b += a;
27 	  a += *y++; b += a;
28 	  a += *y++; b += a;
29 	  a += *y++; b += a;
30 	  a += *y++; b += a;
31 	  a += *y++; b += a;
32 	  a += *y++; b += a;
33 	  a += *y++; b += a;
34 	  k -= 16;
35         }
36       if (k != 0)
37 	do { a += *y++; b += a; } while (--k);
38       a %= 65521L;
39       b %= 65521L;
40     }
41   return (b << 16) | a;
42 }
43