1/* { dg-do compile } */
2/* { dg-options "-O2" } */
3
4typedef union tree_node *tree;
5
6struct tree_base
7{
8  int code;
9};
10
11struct tree_typed
12{
13  struct tree_base base;
14  tree type;
15};
16
17struct tree_common
18{
19  struct tree_typed typed;
20};
21
22struct tree_type_common
23{
24  tree main_variant;
25};
26
27union tree_node
28{
29  struct tree_base base;
30  struct tree_typed typed;
31  struct tree_type_common type_common;
32};
33
34int 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}
47