| /* { dg-do compile } */ |
| /* { dg-additional-options "-march=skylake" { target x86_64-*-* i?86-*-* } } */ |
| |
| typedef struct { |
| unsigned num; |
| } VEC_tree_base; |
| |
| enum { |
| LTO_DECL_STREAM_NAMESPACE_DECL, |
| LTO_DECL_STREAM_LABEL_DECL, |
| LTO_N_DECL_STREAMS |
| }; |
| |
| struct lto_tree_ref_encoder { |
| VEC_tree_base *trees; |
| } typedef *lto_out_decl_state_ptr; |
| |
| typedef struct { |
| lto_out_decl_state_ptr vec[1]; |
| } VEC_lto_out_decl_state_ptr_base; |
| |
| VEC_lto_out_decl_state_ptr_base *a; |
| int f; |
| long g; |
| int |
| fn1(struct lto_tree_ref_encoder *p1) { |
| int i; |
| long b; |
| i = 0; |
| for (; i < LTO_N_DECL_STREAMS; i++) { |
| struct lto_tree_ref_encoder c = *p1; |
| int d; |
| VEC_tree_base *e = c.trees; |
| d = e ? e->num : 0; |
| b += d; |
| } |
| return b; |
| } |
| int |
| fn2() { |
| lto_out_decl_state_ptr h; |
| struct lto_tree_ref_encoder j; |
| unsigned k; |
| for (; k < f; k++) { |
| h = a->vec[k]; |
| j = *h; |
| g += fn1(&j); |
| } |
| } |