void __attribute__((noinline,noclone)) | |
fn1 (int * __restrict f, int * __restrict d, unsigned short a, int c) | |
{ | |
unsigned short e; | |
for (e = 0; e < a; ++e) | |
f[e] = d[e * c]; | |
} | |
extern void abort (void); | |
int main () | |
{ | |
int a[32], b[3 * 32]; | |
int i, off; | |
for (i = 0; i < 3 * 32; ++i) | |
b[i] = i; | |
for (off = 0; off < 8; ++off) | |
{ | |
fn1 (&a[off], &b[off], 32 - off, 3); | |
for (i = 0; i < 32 - off; ++i) | |
if (a[off+i] != b[off+i*3]) | |
abort (); | |
} | |
return 0; | |
} | |
/* { dg-final { cleanup-tree-dump "vect" } } */ |