1 /* { dg-do compile } */
2 /* { dg-additional-options "-march=skylake" { target x86_64-*-* i?86-*-* } } */
3 
4 typedef struct {
5   unsigned num;
6 } VEC_tree_base;
7 
8 enum {
9   LTO_DECL_STREAM_NAMESPACE_DECL,
10   LTO_DECL_STREAM_LABEL_DECL,
11   LTO_N_DECL_STREAMS
12 };
13 
14 struct lto_tree_ref_encoder {
15   VEC_tree_base *trees;
16 } typedef *lto_out_decl_state_ptr;
17 
18 typedef struct {
19   lto_out_decl_state_ptr vec[1];
20 } VEC_lto_out_decl_state_ptr_base;
21 
22 VEC_lto_out_decl_state_ptr_base *a;
23 int f;
24 long g;
25 int
fn1(struct lto_tree_ref_encoder * p1)26 fn1(struct lto_tree_ref_encoder *p1) {
27   int i;
28   long b;
29   i = 0;
30   for (; i < LTO_N_DECL_STREAMS; i++) {
31     struct lto_tree_ref_encoder c = *p1;
32     int d;
33     VEC_tree_base *e = c.trees;
34     d = e ? e->num : 0;
35     b += d;
36   }
37   return b;
38 }
39 int
fn2()40 fn2() {
41   lto_out_decl_state_ptr h;
42   struct lto_tree_ref_encoder j;
43   unsigned k;
44   for (; k < f; k++) {
45     h = a->vec[k];
46     j = *h;
47     g += fn1(&j);
48   }
49 }
50