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  }