1 /* { dg-require-effective-target vect_int } */ 2 3 #include <stdarg.h> 4 #include "tree-vect.h" 5 6 #define N 40 7 8 int a[N]; 9 int b[N]; 10 11 __attribute__ ((noinline)) int foo(int n)12foo (int n){ 13 int i,j; 14 int sum,x,y; 15 16 if (n<=0) 17 return 0; 18 19 for (i = 0; i < N/2; i++) { 20 sum = 0; 21 x = b[2*i]; 22 y = b[2*i+1]; 23 j = 0; 24 do { 25 sum += j; 26 } while (++j < n); 27 a[2*i] = sum + x; 28 a[2*i+1] = sum + y; 29 } 30 } 31 main(void)32int main (void) 33 { 34 int i,j; 35 int sum; 36 37 check_vect (); 38 39 for (i=0; i<N; i++) 40 b[i] = i; 41 42 foo (N-1); 43 44 /* check results: */ 45 for (i=0; i<N/2; i++) 46 { 47 sum = 0; 48 for (j = 0; j < N-1; j++) 49 sum += j; 50 if (a[2*i] != sum + b[2*i] || a[2*i+1] != sum + b[2*i+1]) 51 abort(); 52 } 53 54 return 0; 55 } 56 57 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */ 58