1 /* { dg-require-effective-target vect_int } */
2 
3 #include <stdarg.h>
4 #include "tree-vect.h"
5 
6 #define N 16
7 
8 struct s{
9   int b[N];
10   int c[N];
11   int m;
12 };
13 
14 struct t{
15   struct s strc_s;
16   int m;
17 };
18 
19 struct test1{
20   struct t strc_t;
21   struct t *ptr_t;
22   int k;
23   int l;
24 };
25 
26 int a[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
27 
28 __attribute__ ((noinline))
main1()29 int main1 ()
30 {
31   int i;
32   struct test1 tmp1;
33   struct t tmp2;
34 
35   tmp1.ptr_t = &tmp2;
36 
37   /* DR bases comparison: record and array.  */
38   for (i = 0; i < N; i++)
39     {
40       tmp1.strc_t.strc_s.b[i] = a[i];
41     }
42 
43   /* Check results.  */
44   for (i = 0; i < N; i++)
45     {
46       if (tmp1.strc_t.strc_s.b[i] != a[i])
47 	abort();
48     }
49 
50   /* DR bases comparison: record containing ptr and array.  */
51   for (i = 0; i < N; i++)
52     {
53       tmp1.ptr_t->strc_s.c[i] = a[i];
54     }
55 
56   /* Check results.  */
57   for (i = 0; i < N; i++)
58     {
59       if (tmp1.ptr_t->strc_s.c[i] != a[i])
60 	abort();
61     }
62 
63 
64   return 0;
65 }
66 
main(void)67 int main (void)
68 {
69   check_vect ();
70 
71   return main1 ();
72 }
73 
74 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
75 
76 
77