modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/loop-15.c (about)

     1  /* Bombed with a segfault on powerpc-linux.  doloop.c generated wrong
     2     loop count.  */
     3  void
     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
    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  }