cfgexpand: Expand comment on when non-var clobbers can show up
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / vect-66.c
blobf7a78ace7d0258ce0bc4216cd47b96cc5bc462b6
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-additional-options "-fdump-tree-optimized-details-blocks" } */
4 #include <stdarg.h>
5 #include "tree-vect.h"
7 #define N 16
9 __attribute__ ((noinline))
10 void main1 ()
12 int i, j;
13 int ia[8][5][N+2];
15 /* Multidimensional array. Aligned. */
16 for (i = 0; i < 16; i++)
18 for (j = 0; j < N; j++)
20 ia[2][6][j] = 5;
24 /* check results: */
25 for (i = 0; i < 16; i++)
27 #pragma GCC novector
28 for (j = 0; j < N; j++)
30 if (ia[2][6][j] != 5)
31 abort();
36 __attribute__ ((noinline))
37 void main2 ()
39 int i, j;
40 int ia[8][5][N+2];
42 /* Multidimensional array. Aligned. */
43 for (i = 0; i < 16; i++)
45 for (j = 0; j < N; j++)
46 ia[3][6][j+2] = 5;
49 /* check results: */
50 for (i = 0; i < 16; i++)
52 #pragma GCC novector
53 for (j = 2; j < N+2; j++)
55 if (ia[3][6][j] != 5)
56 abort();
61 __attribute__ ((noinline))
62 void main3 ()
64 int i, j;
65 int ic[16][16][5][N+2];
67 /* Multidimensional array. Not aligned. */
68 for (i = 0; i < 16; i++)
70 for (j = 0; j < N; j++)
72 ic[2][1][6][j+1] = 5;
76 /* check results: */
77 for (i = 0; i < 16; i++)
79 #pragma GCC novector
80 for (j = 0; j < N; j++)
82 if (ic[2][1][6][j+1] != 5)
83 abort();
88 int main (void)
90 check_vect ();
92 main1 ();
93 main2 ();
94 main3 ();
96 return 0;
99 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
100 /* { dg-final { scan-tree-dump-not "Invalid sum" "optimized" } } */