OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / vect / no-vfa-pr29145.c
1 /* { dg-require-effective-target vect_int } */
2 /* { dg-add-options quad_vectors } */
3
4 #include <stdarg.h>
5 #include "tree-vect.h"
6
7 __attribute__ ((noinline))
8 void with_restrict(int * __restrict p)
9 {
10   int i;
11   int *q = p - 2;
12
13   for (i = 0; i < 1000; ++i) {
14     p[i] = q[i];
15   }
16 }
17
18 __attribute__ ((noinline))
19 void without_restrict(int * p)
20 {
21   int i;
22   int *q = p - 2;
23
24   for (i = 0; i < 1000; ++i) {
25     p[i] = q[i];
26   }
27 }
28
29 int main(void)
30 {
31   int i;
32   int a[1002];
33   int b[1002];
34
35   check_vect ();
36
37   for (i = 0; i < 1002; ++i) {
38     a[i] = b[i] = i;
39   }
40
41   with_restrict(a + 2);
42   without_restrict(b + 2);
43
44   for (i = 0; i < 1002; ++i) {
45     if (a[i] != b[i])
46       abort();
47   }
48   return 0;
49 }
50
51 /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect"  { xfail vect_no_align } } } */
52 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail vect_no_align } } } */
53 /* { dg-final { cleanup-tree-dump "vect" } } */