OSDN Git Service

2007-12-06 Zdenek Dvorak <ook@ucw.cz>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / vect-117.c
1 /* { dg-require-effective-target vect_int } */
2
3 #include <stdlib.h>
4 #include <stdarg.h>
5 #include "tree-vect.h"
6
7 #define N 5
8
9 static  int a[N][N] = {{ 1, 2, 3, 4, 5},
10                        { 6, 7, 8, 9,10},
11                        {11,12,13,14,15},
12                        {16,17,18,19,20},
13                        {21,22,23,24,25}};
14
15 static  int c[N][N] = {{ 1, 2, 3, 4, 5},
16                        { 7, 9,11, 13,15},
17                        {18,21,24,27,30},
18                        {34,38,42,46,50},
19                        {55,60,65,70,75}};
20
21 volatile int foo;
22
23 __attribute__ ((noinline))
24 int main1 (int A[N][N], int n) 
25 {
26
27   int i,j;
28
29   /* vectorizable */
30   for (i = 1; i < N; i++)
31   {
32     for (j = 0; j < n; j++)
33     {
34       A[i][j] = A[i-1][j] + A[i][j];
35     }
36   }
37
38   return 0;
39 }
40
41 int main (void)
42
43   int i,j;
44
45   foo = 0;
46   main1 (a, N);
47
48   /* check results: */
49
50   for (i = 0; i < N; i++)
51    {
52     for (j = 0; j < N; j++)
53      {
54        if (a[i][j] != c[i][j])
55          abort();
56      }
57   }
58   return 0;
59 }
60
61 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
62 /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 0 "vect" } } */
63 /* { dg-final { cleanup-tree-dump "vect" } } */
64