Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-outer-6.c
blob6c4fa1ecb08fc7ac83a1e2a924c940608f3b7cb0
1 /* { dg-require-effective-target vect_int } */
3 #include <stdarg.h>
4 #include <signal.h>
5 #include "tree-vect.h"
7 #define N 64
8 #define MAX 42
10 float A[N] __attribute__ ((__aligned__(16)));
11 float B[N] __attribute__ ((__aligned__(16)));
12 float C[N] __attribute__ ((__aligned__(16)));
13 float D[N] __attribute__ ((__aligned__(16)));
14 extern void abort(void);
16 __attribute__ ((noinline))
17 int main1 ()
19 float s;
21 int i, j;
23 for (i = 0; i < N; i++)
25 s = 0;
26 for (j = 0; j < N; j += 4)
27 s += C[j];
28 A[i] = s;
31 return 0;
34 int main ()
36 int i,j;
37 float s;
39 check_vect ();
41 for (i = 0; i < N; i++)
43 A[i] = i;
44 B[i] = i;
45 C[i] = i;
46 D[i] = i;
49 main1();
51 /* check results: */
52 for (i = 0; i < N; i++)
54 s = 0;
55 for (j = 0; j < N; j += 4)
56 s += C[j];
57 if (A[i] != s)
58 abort ();
61 return 0;
64 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
65 /* { dg-final { scan-tree-dump-times "zero step in outer loop." 1 "vect" } } */
66 /* { dg-final { cleanup-tree-dump "vect" } } */