111
|
1 /* PR debug/65779 */
|
|
2 /* { dg-do assemble } */
|
|
3 /* { dg-options "-O2 -fcompare-debug" } */
|
|
4 /* { dg-xfail-if "" { powerpc-ibm-aix* } } */
|
|
5
|
|
6 unsigned long
|
|
7 foo (unsigned long x, unsigned char *y, unsigned int z)
|
|
8 {
|
|
9 unsigned long a = x & 0xffff;
|
|
10 unsigned long b = (x >> 16) & 0xffff;
|
|
11 int k;
|
|
12 if (y == 0) return 1L;
|
|
13 while (z > 0)
|
|
14 {
|
|
15 k = z < 5552 ? z : 5552;
|
|
16 z -= k;
|
|
17 while (k >= 16)
|
|
18 {
|
|
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 a += *y++; b += a;
|
|
35 k -= 16;
|
|
36 }
|
|
37 if (k != 0)
|
|
38 do { a += *y++; b += a; } while (--k);
|
|
39 a %= 65521L;
|
|
40 b %= 65521L;
|
|
41 }
|
|
42 return (b << 16) | a;
|
|
43 }
|