/* PR rtl-optimization/39794 */ | |
/* { dg-do run } */ | |
/* { dg-options "-O2 -funroll-loops" } */ | |
extern void abort (); | |
void | |
foo (int *a, int n) | |
{ | |
int i; | |
for (i = 0; i < n; i++) | |
{ | |
a[i] *= 2; | |
a[i + 1] = a[i - 1] + a[i - 2]; | |
} | |
} | |
int a[16]; | |
int ref[16] = { 0, 1, 4, 2, 10, 12, 24, 44, | |
72, 136, 232, 416, 736, 1296, 2304, 2032 }; | |
int | |
main () | |
{ | |
int i; | |
for (i = 0; i < 16; i++) | |
a[i] = i; | |
foo (a + 2, 16 - 3); | |
for (i = 0; i < 16; i++) | |
if (ref[i] != a[i]) | |
abort (); | |
return 0; | |
} |