libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr93247-1.c
bloba3087b81d674aff9c6258953a0fdf72275e20122
1 /* { dg-do compile } */
2 /* { dg-additional-options "-march=skylake" { target x86_64-*-* i?86-*-* } } */
4 typedef struct {
5 unsigned num;
6 } VEC_tree_base;
8 enum {
9 LTO_DECL_STREAM_NAMESPACE_DECL,
10 LTO_DECL_STREAM_LABEL_DECL,
11 LTO_N_DECL_STREAMS
14 struct lto_tree_ref_encoder {
15 VEC_tree_base *trees;
16 } typedef *lto_out_decl_state_ptr;
18 typedef struct {
19 lto_out_decl_state_ptr vec[1];
20 } VEC_lto_out_decl_state_ptr_base;
22 VEC_lto_out_decl_state_ptr_base *a;
23 int f;
24 long g;
25 int
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;
37 return b;
39 int
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);