| /* PR target/84763 */ | |
| /* { dg-require-effective-target return_address } */ | |
| extern void abort (void); | |
| void *foo (unsigned int *data, unsigned int len) | |
| { | |
| unsigned int local_data[128]; | |
| if (len > 128) | |
| abort (); | |
| for (unsigned int i = 0; i < len; i++) | |
| local_data[i] = data[i] + data[len - 1 - i] * 2; | |
| void *ret = __builtin_frame_address (0); | |
| for (unsigned int i = 0; i < len; i++) | |
| ret = ret + local_data[i] % 8; | |
| return ret; | |
| } |