1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
3
4 typedef union tree_node *tree;
5
6 struct tree_base
7 {
8 int code;
9 };
10
11 struct tree_typed
12 {
13 struct tree_base base;
14 tree type;
15 };
16
17 struct tree_common
18 {
19 struct tree_typed typed;
20 };
21
22 struct tree_type_common
23 {
24 tree main_variant;
25 };
26
27 union tree_node
28 {
29 struct tree_base base;
30 struct tree_typed typed;
31 struct tree_type_common type_common;
32 };
33
34 int std_canonical_va_list_type (tree type)
35 {
36 if (type->base.code)
37 type = type->typed.type;
38 else
39 if (type->typed.type->base.code)
40 type = type->typed.type;
41
42 if (type->type_common.main_variant)
43 return 1;
44
45 return 0;
46 }