/* 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; }