1 /* PR target/84763 */
2 /* { dg-require-effective-target return_address } */
3 
4 extern void abort (void);
5 
foo(unsigned int * data,unsigned int len)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 }
23