modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/20180309-1.c (about)

     1  /* PR target/84763 */
     2  /* { dg-require-effective-target return_address } */
     3  
     4  extern void abort (void);
     5  
     6  void *foo (unsigned int *data, unsigned int len)
     7  {
     8    unsigned int local_data[128];
     9  
    10    if (len > 128)
    11      abort ();
    12  
    13    for (unsigned int i = 0; i < len; i++)
    14      local_data[i] = data[i] + data[len - 1 - i] * 2;
    15  
    16    void *ret = __builtin_frame_address (0);
    17  
    18    for (unsigned int i = 0; i < len; i++)
    19      ret = ret + local_data[i] % 8;
    20  
    21    return ret;
    22  }