1 /* Bombed with a segfault on powerpc-linux.  doloop.c generated wrong
2    loop count.  */
3 void
foo(unsigned long * start,unsigned long * end)4 foo (unsigned long *start, unsigned long *end)
5 {
6   unsigned long *temp = end - 1;
7 
8   while (end > start)
9     *end-- = *temp--;
10 }
11 
12 int
main(void)13 main (void)
14 {
15   unsigned long a[5];
16   int start, end, k;
17 
18   for (start = 0; start < 5; start++)
19     for (end = 0; end < 5; end++)
20       {
21 	for (k = 0; k < 5; k++)
22 	  a[k] = k;
23 
24 	foo (a + start, a + end);
25 
26 	for (k = 0; k <= start; k++)
27 	  if (a[k] != k)
28 	    abort ();
29 
30 	for (k = start + 1; k <= end; k++)
31 	  if (a[k] != k - 1)
32 	    abort ();
33 
34 	for (k = end + 1; k < 5; k++)
35 	  if (a[k] != k)
36 	    abort ();
37       }
38 
39   return 0;
40 }
41