| /* { dg-do compile } */ |
| /* { dg-options "-O2" } */ |
| |
| typedef union tree_node *tree; |
| |
| struct tree_base |
| { |
| int code; |
| }; |
| |
| struct tree_typed |
| { |
| struct tree_base base; |
| tree type; |
| }; |
| |
| struct tree_common |
| { |
| struct tree_typed typed; |
| }; |
| |
| struct tree_type_common |
| { |
| tree main_variant; |
| }; |
| |
| union tree_node |
| { |
| struct tree_base base; |
| struct tree_typed typed; |
| struct tree_type_common type_common; |
| }; |
| |
| int std_canonical_va_list_type (tree type) |
| { |
| if (type->base.code) |
| type = type->typed.type; |
| else |
| if (type->typed.type->base.code) |
| type = type->typed.type; |
| |
| if (type->type_common.main_variant) |
| return 1; |
| |
| return 0; |
| } |