1 /* { dg-do compile } */
2 /* { dg-options "-O2 -fdump-tree-reassoc -w" } */
4 typedef union tree_node
*tree
;
5 enum cpp_ttype
{ CPP_COLON
, CPP_SEMICOLON
, CPP_CLOSE_BRACE
, CPP_COMMA
};
6 enum rid
{ RID_STATIC
= 0, RID_ATTRIBUTE
, };
12 typedef struct c_parser
18 int c_parser_next_token_is_keyword (c_parser
*, enum rid
);
19 tree
chainon (int, tree
);
20 int c_parser_attributes (c_parser
*);
22 c_parser_peek_token (c_parser
* parser
)
24 if (parser
->tokens_avail
== 0)
26 parser
->tokens_avail
= 1;
28 return &parser
->tokens
[0];
31 __inline__
unsigned char
32 c_parser_next_token_is (c_parser
* parser
, enum cpp_ttype type
)
34 return c_parser_peek_token (parser
)->type
== type
;
38 c_parser_translation_unit (c_parser
* parser
)
41 tree all_prefix_attrs
;
44 if (c_parser_next_token_is (parser
, CPP_COLON
)
45 || c_parser_next_token_is (parser
, CPP_COMMA
)
46 || c_parser_next_token_is (parser
, CPP_SEMICOLON
)
47 || c_parser_next_token_is (parser
, CPP_CLOSE_BRACE
)
48 || c_parser_next_token_is_keyword (parser
, RID_ATTRIBUTE
))
50 if (c_parser_next_token_is_keyword (parser
, RID_ATTRIBUTE
))
52 chainon (c_parser_attributes (parser
), prefix_attrs
);
56 /* { dg-final { scan-tree-dump-not "\[ (\]0 != 0" "reassoc2"} } */