1 #define N 100 2 3 void __attribute__ ((noipa)) foo(int * out,int * in,int step)4foo (int *out, int *in, int step) 5 { 6 for (int i = 0; i < N; ++i) 7 { 8 out[0] = in[i]; 9 out[1] = 2; 10 out += step; 11 } 12 } 13 14 int in[N]; 15 int out[N * 2]; 16 17 int main(void)18main (void) 19 { 20 for (int i = 0; i < N; ++i) 21 { 22 in[i] = i * (i + 1); 23 asm volatile ("" ::: "memory"); 24 } 25 26 foo (out, in, 1); 27 for (int i = 0; i < N; ++i) 28 if (out[i] != in[i]) 29 __builtin_abort (); 30 if (out[N] != 2) 31 __builtin_abort (); 32 33 foo (out + N - 1, in, -1); 34 if (out[0] != in[N - 1]) 35 __builtin_abort (); 36 for (int i = 1; i <= N; ++i) 37 if (out[i] != 2) 38 __builtin_abort (); 39 40 return 0; 41 } 42 43 /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" { target { { ! vect_no_align } && vect_int } } } } */ 44