1 /* { dg-require-effective-target vect_int } */ 2 3 #include <stdarg.h> 4 #include "tree-vect.h" 5 6 #define N 16 7 8 __attribute__ ((noinline)) main1()9void main1 () 10 { 11 int i, j; 12 int ia[8][5][N+2]; 13 14 /* Multidimensional array. Aligned. */ 15 for (i = 0; i < 16; i++) 16 { 17 for (j = 0; j < N; j++) 18 { 19 ia[2][6][j] = 5; 20 } 21 } 22 23 /* check results: */ 24 for (i = 0; i < 16; i++) 25 { 26 for (j = 0; j < N; j++) 27 { 28 if (ia[2][6][j] != 5) 29 abort(); 30 } 31 } 32 } 33 34 __attribute__ ((noinline)) main2()35void main2 () 36 { 37 int i, j; 38 int ia[8][5][N+2]; 39 40 /* Multidimensional array. Aligned. */ 41 for (i = 0; i < 16; i++) 42 { 43 for (j = 0; j < N; j++) 44 ia[3][6][j+2] = 5; 45 } 46 47 /* check results: */ 48 for (i = 0; i < 16; i++) 49 { 50 for (j = 2; j < N+2; j++) 51 { 52 if (ia[3][6][j] != 5) 53 abort(); 54 } 55 } 56 } 57 58 __attribute__ ((noinline)) main3()59void main3 () 60 { 61 int i, j; 62 int ic[16][16][5][N+2]; 63 64 /* Multidimensional array. Not aligned. */ 65 for (i = 0; i < 16; i++) 66 { 67 for (j = 0; j < N; j++) 68 { 69 ic[2][1][6][j+1] = 5; 70 } 71 } 72 73 /* check results: */ 74 for (i = 0; i < 16; i++) 75 { 76 for (j = 0; j < N; j++) 77 { 78 if (ic[2][1][6][j+1] != 5) 79 abort(); 80 } 81 } 82 } 83 main(void)84int main (void) 85 { 86 check_vect (); 87 88 main1 (); 89 main2 (); 90 main3 (); 91 92 return 0; 93 } 94 95 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */ 96