1 /* PR tree-optimization/66718 */
2 /* { dg-do compile } */
3
4 int *a[1024], b[1024];
5 struct S { int u, v, w, x; };
6 struct S c[1024];
7 int d[1024][10];
8
9 void
10 f0 (void)
11 {
12 for (int i = 0; i < 1024; i++)
13 a[i] = &b[0];
14 }
15
16 void
17 f1 (void)
18 {
19 for (int i = 0; i < 1024; i++)
20 {
21 int *p = &b[0];
22 a[i] = p + i;
23 }
24 }
25
26 void
27 f2 (int *p)
28 {
29 for (int i = 0; i < 1024; i++)
30 a[i] = &p[i];
31 }
32
33 void
34 f3 (void)
35 {
36 for (int i = 0; i < 1024; i++)
37 a[i] = &b[i];
38 }
39
40 void
41 f4 (void)
42 {
43 int *p = &c[0].v;
44 for (int i = 0; i < 1024; i++)
45 a[i] = &p[4 * i];
46 }
47
48 void
49 f5 (void)
50 {
51 for (int i = 0; i < 1024; i++)
52 a[i] = &c[i].v;
53 }
54
55 void
56 f6 (void)
57 {
58 for (int i = 0; i < 1024; i++)
59 for (unsigned int j = 0; j < 10; j++)
60 a[i] = &d[i][j];
61 }
62
63 /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 7 "vect" { target { i?86-*-* x86_64-*-* } } } } */