Lines Matching refs:parser

43 #include "c-parser.h"
68 /* GIMPLE parser state. */
73 gimple_parser (c_parser *p) : parser (p), edges(), current_bb(NULL) {}
76 operator c_parser *() { return parser; }
77 c_parser *parser;
150 gimple_parser &parser,
160 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
163 c_parser_consume_token (parser);
164 if (!c_parser_next_token_is (parser, CPP_NAME))
166 c_parser_error (parser, "expected frequency quality");
172 = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
175 c_parser_error (parser, "unknown profile quality");
179 c_parser_consume_token (parser);
180 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
183 if (!c_parser_next_token_is (parser, CPP_NUMBER)
184 || (TREE_CODE (f = c_parser_peek_token (parser)->value)
187 c_parser_error (parser, "expected frequency value");
194 c_parser_consume_token (parser);
195 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
198 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
216 gimple_parser parser (cparser);
221 location_t loc1 = c_parser_peek_token (parser)->location;
230 have parser support for EH yet). But as we still have BINDs
238 parser.current_bb = ENTRY_BLOCK_PTR_FOR_FN (cfun);
253 if (! c_parser_gimple_compound_statement (parser, &seq)
285 for (unsigned i = 0; i < parser.edges.length (); ++i)
287 edge e = make_edge (BASIC_BLOCK_FOR_FN (cfun, parser.edges[i].src),
288 BASIC_BLOCK_FOR_FN (cfun, parser.edges[i].dest),
289 parser.edges[i].flags);
290 e->probability = parser.edges[i].probability;
326 c_parser_error (parser, "edge not found");
381 c_parser_gimple_compound_statement (gimple_parser &parser, gimple_seq *seq)
385 if (! c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>"))
389 while (c_parser_next_tokens_start_declaration (parser))
391 c_parser_gimple_declaration (parser);
392 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
396 while (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE))
398 if (c_parser_error (parser))
400 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL);
403 else if (c_parser_next_token_is (parser, CPP_EOF))
405 c_parser_error (parser, "expected declaration or statement");
409 switch (c_parser_peek_token (parser)->type)
412 switch (c_parser_peek_token (parser)->keyword)
415 c_parser_gimple_try_stmt (parser, seq);
418 c_parser_gimple_if_stmt (parser, seq);
421 c_parser_gimple_switch_stmt (parser, seq);
425 location_t loc = c_parser_peek_token (parser)->location;
426 c_parser_consume_token (parser);
427 if (c_parser_next_token_is (parser, CPP_NAME))
429 tree label = c_parser_peek_token (parser)->value;
430 c_parser_consume_token (parser);
431 c_parser_gimple_goto_stmt (parser, loc, label, seq);
432 if (! c_parser_require (parser, CPP_SEMICOLON,
440 c_parser_gimple_return_stmt (parser, seq);
441 if (! c_parser_require (parser, CPP_SEMICOLON,
445 parser.push_edge (parser.current_bb->index, EXIT_BLOCK, 0,
453 if (c_parser_peek_2nd_token (parser)->type == CPP_COLON)
455 c_parser_gimple_label (parser, seq);
458 if (c_parser_next_token_is (parser, CPP_NAME)
459 && c_parser_peek_token (parser)->id_kind == C_ID_ID
460 && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
463 c_parser_gimple_try_stmt (parser, seq);
470 (c_parser_peek_token (parser)->value), "__BB"))
472 c_parser_consume_token (parser);
473 if (! c_parser_require (parser, CPP_OPEN_PAREN,
476 if (c_parser_next_token_is_not (parser, CPP_NUMBER))
478 c_parser_error (parser, "expected block index");
481 tree tnum = c_parser_peek_token (parser)->value;
484 c_parser_error (parser, "expected block index");
492 c_parser_error (parser, "invalid block index");
497 c_parser_consume_token (parser);
498 while (c_parser_next_token_is (parser, CPP_COMMA))
500 c_parser_consume_token (parser);
501 if (! c_parser_next_token_is (parser, CPP_NAME))
503 c_parser_error (parser, "expected block specifier");
508 (c_parser_peek_token (parser)->value),
511 c_parser_consume_token (parser);
512 if (! c_parser_require (parser, CPP_OPEN_PAREN,
516 if (! c_parser_next_token_is (parser, CPP_NUMBER)
518 = c_parser_peek_token (parser)->value)
521 c_parser_error (parser, "expected loop number");
524 c_parser_consume_token (parser);
526 if (! c_parser_require (parser, CPP_CLOSE_PAREN,
535 tree v = c_parser_peek_token (parser)->value;
539 c_parser_error (parser, "unknown block specifier");
543 c_parser_consume_token (parser);
544 if (!c_parser_require (parser, CPP_OPEN_PAREN,
548 if (!c_parser_next_token_is (parser, CPP_NUMBER)
549 || (TREE_CODE (q = c_parser_peek_token (parser)->value)
552 c_parser_error (parser, "expected count value");
559 c_parser_consume_token (parser);
560 if (! c_parser_require (parser, CPP_CLOSE_PAREN,
565 if (! c_parser_require (parser, CPP_CLOSE_PAREN,
567 || ! c_parser_require (parser, CPP_COLON,
574 if (!parser.current_bb)
575 c_parser_error (parser, "stmts without block");
579 = gsi_start_bb (parser.current_bb);
589 link_block (bb, (parser.current_bb ? parser.current_bb
598 if (parser.current_bb->index == ENTRY_BLOCK)
599 parser.push_edge (ENTRY_BLOCK, bb->index, EDGE_FALLTHRU,
612 c_parser_error (parser, "duplicate loop header");
631 parser.current_bb = bb;
639 location_t loc = c_parser_peek_token (parser)->location;
640 c_parser_consume_token (parser);
649 c_parser_gimple_statement (parser, seq);
650 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
651 c_parser_skip_until_found (parser, CPP_SEMICOLON, NULL);
654 c_parser_consume_token (parser);
660 if (!parser.current_bb)
661 c_parser_error (parser, "stmts without block");
664 gimple_stmt_iterator gsi = gsi_start_bb (parser.current_bb);
701 c_parser_gimple_statement (gimple_parser &parser, gimple_seq *seq)
709 lhs = c_parser_gimple_unary_expression (parser);
714 if (c_parser_next_token_is (parser, CPP_SEMICOLON)
725 if (! c_parser_require (parser, CPP_EQ, "expected %<=%>"))
729 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
730 && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
732 c_parser_consume_token (parser);
733 struct c_type_name *type_name = c_parser_type_name (parser);
734 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
739 rhs = c_parser_gimple_postfix_expression (parser);
758 switch (c_parser_peek_token (parser)->type)
762 tree id = c_parser_peek_token (parser)->value;
773 if (c_parser_peek_token (parser)->keyword != RID_REALPART
774 && c_parser_peek_token (parser)->keyword != RID_IMAGPART)
784 rhs = c_parser_gimple_unary_expression (parser);
797 if (c_parser_next_token_is_keyword (parser, RID_PHI))
799 c_parser_consume_token (parser);
801 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
804 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
805 c_parser_consume_token (parser);
807 while (c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN))
809 if (c_parser_next_token_is (parser, CPP_NAME)
810 && c_parser_peek_2nd_token (parser)->type == CPP_COLON)
812 arg = c_parser_peek_token (parser)->value;
813 c_parser_consume_token (parser);
814 if (c_parser_next_token_is (parser, CPP_COLON))
815 c_parser_consume_token (parser);
818 c_parser_error (parser, "invalid source block specification");
821 else if (c_parser_next_token_is (parser, CPP_COMMA))
822 c_parser_consume_token (parser);
825 arg = c_parser_gimple_unary_expression (parser).value;
830 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
842 if (c_parser_next_token_is (parser, CPP_DOT)
843 || (c_parser_next_token_is (parser, CPP_NAME)
844 && c_parser_peek_2nd_token (parser)->type == CPP_OPEN_PAREN
845 && lookup_name (c_parser_peek_token (parser)->value)))
847 rhs = c_parser_gimple_unary_expression (parser);
858 rhs = c_parser_gimple_binary_expression (parser);
865 && c_parser_next_token_is (parser, CPP_QUERY))
868 c_parser_consume_token (parser);
869 trueval = c_parser_gimple_postfix_expression (parser);
871 if (c_parser_require (parser, CPP_COLON, "expected %<:%>"))
872 falseval = c_parser_gimple_postfix_expression (parser);
910 c_parser_gimple_binary_expression (gimple_parser &parser)
916 lhs = c_parser_gimple_postfix_expression (parser);
917 if (c_parser_error (parser))
920 switch (c_parser_peek_token (parser)->type)
980 c_parser_error (parser, "%<&&%> not valid in GIMPLE");
983 c_parser_error (parser, "%<||%> not valid in GIMPLE");
987 tree id = c_parser_peek_token (parser)->value;
999 location_t ret_loc = c_parser_peek_token (parser)->location;
1000 c_parser_consume_token (parser);
1001 rhs = c_parser_gimple_postfix_expression (parser);
1010 c_parser_gimple_parentized_binary_expression (gimple_parser &parser,
1017 c_parser_consume_token (parser);
1018 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1020 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1021 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>"))
1023 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1024 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
1036 c_parser_gimple_parentized_ternary_expression (gimple_parser &parser,
1043 c_parser_consume_token (parser);
1044 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1046 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1047 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>"))
1049 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1050 if (!c_parser_require (parser, CPP_COMMA, "expected %<)%>"))
1052 c_expr op3 = c_parser_gimple_postfix_expression (parser);
1053 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
1076 c_parser_gimple_unary_expression (gimple_parser &parser)
1079 location_t op_loc = c_parser_peek_token (parser)->location;
1082 switch (c_parser_peek_token (parser)->type)
1085 c_parser_consume_token (parser);
1086 op = c_parser_gimple_postfix_expression (parser);
1091 c_parser_consume_token (parser);
1092 op = c_parser_gimple_postfix_expression (parser);
1111 c_parser_consume_token (parser);
1112 op = c_parser_gimple_postfix_expression (parser);
1115 c_parser_consume_token (parser);
1116 op = c_parser_gimple_postfix_expression (parser);
1119 c_parser_consume_token (parser);
1120 op = c_parser_gimple_postfix_expression (parser);
1123 c_parser_error (parser, "%<!%> not valid in GIMPLE");
1126 switch (c_parser_peek_token (parser)->keyword)
1129 c_parser_consume_token (parser);
1130 op = c_parser_gimple_postfix_expression (parser);
1133 c_parser_consume_token (parser);
1134 op = c_parser_gimple_postfix_expression (parser);
1137 return c_parser_gimple_postfix_expression (parser);
1141 tree id = c_parser_peek_token (parser)->value;
1144 c_parser_consume_token (parser);
1145 op = c_parser_gimple_postfix_expression (parser);
1150 c_parser_consume_token (parser);
1151 op = c_parser_gimple_postfix_expression (parser);
1155 return c_parser_gimple_parentized_binary_expression (parser,
1159 return c_parser_gimple_parentized_binary_expression (parser,
1164 (parser, op_loc, VEC_PERM_EXPR);
1169 location_t loc = c_parser_peek_token (parser)->location;
1170 c_parser_consume_token (parser);
1171 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1173 c_expr op0 = c_parser_gimple_postfix_expression (parser);
1174 c_parser_skip_until_found (parser, CPP_COMMA,
1176 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1177 c_parser_skip_until_found (parser, CPP_COMMA,
1179 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1182 c_parser_error (parser, "expected constant offset");
1183 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1197 return c_parser_gimple_postfix_expression (parser);
1200 return c_parser_gimple_postfix_expression (parser);
1227 c_parser_parse_ssa_name (gimple_parser &parser,
1243 c_parser_error (parser, "SSA name undeclared");
1265 c_parser_error (parser, "base variable or SSA name undeclared");
1292 c_parser_gimple_call_internal (gimple_parser &parser)
1297 gcc_assert (c_parser_next_token_is (parser, CPP_DOT));
1298 c_parser_consume_token (parser);
1299 location_t loc = c_parser_peek_token (parser)->location;
1300 if (!c_parser_next_token_is (parser, CPP_NAME)
1301 || c_parser_peek_token (parser)->id_kind != C_ID_ID)
1303 c_parser_error (parser, "expecting internal function name");
1306 tree id = c_parser_peek_token (parser)->value;
1308 c_parser_consume_token (parser);
1309 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1312 if (!c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
1313 c_parser_gimple_expr_list (parser, &exprlist);
1314 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
1333 c_parser_gimple_typespec (gimple_parser &parser)
1337 if (c_parser_require (parser, CPP_LESS, "expected %<<%>"))
1339 type_name = c_parser_type_name (parser);
1341 if (c_parser_next_token_is (parser, CPP_COMMA))
1343 c_parser_consume_token (parser);
1345 = c_parser_gimple_postfix_expression (parser).value;
1347 c_parser_skip_until_found (parser,
1382 c_parser_gimple_postfix_expression (gimple_parser &parser)
1384 location_t loc = c_parser_peek_token (parser)->location;
1385 source_range tok_range = c_parser_peek_token (parser)->get_range ();
1388 switch (c_parser_peek_token (parser)->type)
1391 expr.value = c_parser_peek_token (parser)->value;
1393 loc = c_parser_peek_token (parser)->location;
1394 c_parser_consume_token (parser);
1401 expr.value = c_parser_peek_token (parser)->value;
1403 c_parser_consume_token (parser);
1410 expr = c_parser_string_literal (parser, false, true);
1413 expr = c_parser_gimple_call_internal (parser);
1416 if (c_parser_peek_token (parser)->id_kind == C_ID_ID)
1418 tree id = c_parser_peek_token (parser)->value;
1424 location_t loc = c_parser_peek_token (parser)->location;
1425 c_parser_consume_token (parser);
1426 tree type = c_parser_gimple_typespec (parser);
1430 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1434 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
1436 c_parser_consume_token (parser);
1438 = c_parser_type_name (parser);
1439 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1448 ptr = c_parser_gimple_unary_expression (parser);
1455 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1462 if (c_parser_next_token_is (parser, CPP_PLUS))
1464 c_parser_consume_token (parser);
1466 = c_parser_gimple_postfix_expression (parser).value;
1471 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1474 if (! type || c_parser_error (parser))
1476 c_parser_set_error (parser, false);
1487 location_t loc = c_parser_peek_token (parser)->location;
1488 c_parser_consume_token (parser);
1489 tree type = c_parser_gimple_typespec (parser);
1490 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1492 c_expr op = c_parser_gimple_postfix_expression (parser);
1493 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1505 location_t loc = c_parser_peek_token (parser)->location;
1506 c_parser_consume_token (parser);
1507 tree type = c_parser_gimple_typespec (parser);
1508 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1510 c_expr op0 = c_parser_gimple_postfix_expression (parser);
1511 c_parser_skip_until_found (parser, CPP_COMMA,
1513 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1516 c_parser_error (parser, "expected constant size");
1517 c_parser_skip_until_found (parser, CPP_COMMA,
1519 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1522 c_parser_error (parser, "expected constant offset");
1523 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1541 c_parser_consume_token (parser);
1543 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1545 struct c_type_name *type_name = c_parser_type_name (parser);
1549 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1554 c_parser_error (parser, "invalid _Literal");
1557 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
1559 c_parser_consume_token (parser);
1563 c_parser_error (parser, "invalid type for _Literal with "
1565 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE,
1572 && !c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
1578 = c_parser_gimple_postfix_expression (parser).value;
1584 c_parser_error (parser, "invalid _Literal");
1590 if (c_parser_next_token_is (parser, CPP_COMMA))
1591 c_parser_consume_token (parser);
1597 if (c_parser_require (parser, CPP_CLOSE_BRACE,
1607 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE,
1615 if ((neg_p = c_parser_next_token_is (parser, CPP_MINUS)))
1616 c_parser_consume_token (parser);
1617 if ((addr_p = c_parser_next_token_is (parser, CPP_AND)))
1618 c_parser_consume_token (parser);
1619 tree val = c_parser_gimple_postfix_expression (parser).value;
1627 c_parser_error (parser, "invalid _Literal");
1637 c_parser_error (parser, "invalid _Literal");
1651 c_parser_consume_token (parser);
1652 expr.value = c_parser_parse_ssa_name (parser, id, NULL_TREE,
1658 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
1659 && c_parser_peek_2nd_token (parser)->type == CPP_NAME
1662 (c_parser_peek_2nd_token (parser)->value)) == 0
1663 && c_parser_peek_nth_token (parser, 3)->type == CPP_CLOSE_PAREN)
1665 c_parser_consume_token (parser);
1666 c_parser_consume_token (parser);
1667 c_parser_consume_token (parser);
1685 c_parser_consume_token (parser);
1688 (c_parser_peek_token (parser)->type
1696 c_parser_error (parser, "expected expression");
1702 c_parser_error (parser, "expected expression");
1707 (parser, EXPR_LOC_OR_LOC (expr.value, loc), expr);
1714 c_parser_gimple_postfix_expression_after_primary (gimple_parser &parser,
1725 location_t op_loc = c_parser_peek_token (parser)->location;
1726 switch (c_parser_peek_token (parser)->type)
1730 c_parser_consume_token (parser);
1731 tree idx = c_parser_gimple_unary_expression (parser).value;
1733 if (! c_parser_require (parser, CPP_CLOSE_SQUARE, "expected %<]%>"))
1735 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, NULL);
1740 finish = c_parser_tokens_buf (parser, 0)->location;
1751 c_parser_consume_token (parser);
1753 if (! c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
1754 c_parser_gimple_expr_list (parser, &exprlist);
1755 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1767 c_parser_consume_token (parser);
1768 if (c_parser_next_token_is (parser, CPP_NAME))
1770 c_token *comp_tok = c_parser_peek_token (parser);
1776 c_parser_error (parser, "expected identifier");
1783 finish = c_parser_peek_token (parser)->get_finish ();
1784 c_parser_consume_token (parser);
1805 c_parser_consume_token (parser);
1806 if (c_parser_next_token_is (parser, CPP_NAME))
1808 c_token *comp_tok = c_parser_peek_token (parser);
1814 c_parser_error (parser, "expected identifier");
1821 finish = c_parser_peek_token (parser)->get_finish ();
1822 c_parser_consume_token (parser);
1857 c_parser_gimple_expr_list (gimple_parser &parser, vec<tree> *ret)
1861 expr = c_parser_gimple_unary_expression (parser);
1863 while (c_parser_next_token_is (parser, CPP_COMMA))
1865 c_parser_consume_token (parser);
1866 expr = c_parser_gimple_unary_expression (parser);
1881 c_parser_gimple_label (gimple_parser &parser, gimple_seq *seq)
1883 tree name = c_parser_peek_token (parser)->value;
1884 location_t loc1 = c_parser_peek_token (parser)->location;
1885 gcc_assert (c_parser_next_token_is (parser, CPP_NAME));
1886 c_parser_consume_token (parser);
1887 gcc_assert (c_parser_next_token_is (parser, CPP_COLON));
1888 c_parser_consume_token (parser);
1901 c_parser_gimple_or_rtl_pass_list (c_parser *parser, c_declspecs *specs)
1906 if (c_parser_next_token_is_not (parser, CPP_OPEN_PAREN))
1908 c_parser_consume_token (parser);
1911 while (c_parser_next_token_is (parser, CPP_NAME))
1914 const char *op = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
1915 c_parser_consume_token (parser);
1918 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1920 if (c_parser_next_token_is_not (parser, CPP_STRING))
1922 error_at (c_parser_peek_token (parser)->location,
1927 (c_parser_string_literal (parser, false,
1929 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<(%>"))
1935 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1938 if (!c_parser_next_token_is (parser, CPP_NUMBER)
1939 || (TREE_CODE (q = c_parser_peek_token (parser)->value)
1942 c_parser_error (parser, "expected count value");
1948 c_parser_consume_token (parser);
1949 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
1961 error_at (c_parser_peek_token (parser)->location,
1965 if (c_parser_next_token_is (parser, CPP_COMMA))
1966 c_parser_consume_token (parser);
1969 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
2014 c_parser_gimple_declaration (gimple_parser &parser)
2018 c_parser_declspecs (parser, specs, true, true, true,
2024 if (c_parser_next_token_starts_declspecs (parser)
2025 && ! c_parser_next_token_is (parser, CPP_NAME))
2027 c_parser_error (parser, "expected %<;%>");
2028 c_parser_set_error (parser, false);
2033 declarator = c_parser_declarator (parser,
2037 if (c_parser_next_token_is (parser, CPP_SEMICOLON))
2050 c_parser_parse_ssa_name (parser, declarator->u.id.id, specs->type,
2066 c_parser_error (parser, "expected %<;%>");
2074 c_parser_gimple_goto_stmt (gimple_parser &parser,
2081 if (c_parser_gimple_parse_bb_spec_edge_probability (label, parser,
2084 parser.push_edge (parser.current_bb->index, dest_index,
2098 c_parser_gimple_paren_condition (gimple_parser &parser)
2100 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
2102 tree cond = c_parser_gimple_binary_expression (parser).value;
2103 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
2118 c_parser_gimple_try_stmt (gimple_parser &parser, gimple_seq *seq)
2121 c_parser_consume_token (parser);
2122 c_parser_gimple_compound_statement (parser, &tryseq);
2124 if ((c_parser_next_token_is (parser, CPP_KEYWORD)
2125 && c_parser_peek_token (parser)->keyword == RID_AT_FINALLY)
2126 || (c_parser_next_token_is (parser, CPP_NAME)
2127 && c_parser_peek_token (parser)->id_kind == C_ID_ID
2128 && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
2132 c_parser_consume_token (parser);
2133 c_parser_gimple_compound_statement (parser, &finseq);
2135 if (c_parser_next_token_is (parser, CPP_KEYWORD)
2136 && c_parser_peek_token (parser)->keyword == RID_ELSE)
2139 c_parser_consume_token (parser);
2140 c_parser_gimple_compound_statement (parser, &elsseq);
2150 else if (c_parser_next_token_is (parser, CPP_KEYWORD)
2151 && c_parser_peek_token (parser)->keyword == RID_AT_CATCH)
2152 c_parser_error (parser, "%<catch%> is not supported");
2154 c_parser_error (parser, "expected %<finally%> or %<catch%>");
2166 c_parser_gimple_if_stmt (gimple_parser &parser, gimple_seq *seq)
2170 c_parser_consume_token (parser);
2171 tree cond = c_parser_gimple_paren_condition (parser);
2173 if (c_parser_next_token_is_keyword (parser, RID_GOTO))
2175 loc = c_parser_peek_token (parser)->location;
2176 c_parser_consume_token (parser);
2177 if (! c_parser_next_token_is (parser, CPP_NAME))
2179 c_parser_error (parser, "expected label");
2182 label = c_parser_peek_token (parser)->value;
2183 c_parser_consume_token (parser);
2187 && c_parser_gimple_parse_bb_spec_edge_probability (label, parser,
2189 parser.push_edge (parser.current_bb->index, dest_index,
2193 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
2198 c_parser_error (parser, "expected goto expression");
2202 if (c_parser_next_token_is_keyword (parser, RID_ELSE))
2203 c_parser_consume_token (parser);
2206 c_parser_error (parser, "expected else statement");
2210 if (c_parser_next_token_is_keyword (parser, RID_GOTO))
2212 loc = c_parser_peek_token (parser)->location;
2213 c_parser_consume_token (parser);
2214 if (! c_parser_next_token_is (parser, CPP_NAME))
2216 c_parser_error (parser, "expected label");
2219 label = c_parser_peek_token (parser)->value;
2220 c_parser_consume_token (parser);
2224 && c_parser_gimple_parse_bb_spec_edge_probability (label, parser,
2226 parser.push_edge (parser.current_bb->index, dest_index,
2230 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
2235 c_parser_error (parser, "expected goto expression");
2255 c_parser_gimple_switch_stmt (gimple_parser &parser, gimple_seq *seq)
2261 c_parser_consume_token (parser);
2263 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
2265 cond_expr = c_parser_gimple_postfix_expression (parser);
2266 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
2269 if (! c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>"))
2272 while (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE))
2274 if (c_parser_next_token_is (parser, CPP_EOF))
2276 c_parser_error (parser, "expected statement");
2280 switch (c_parser_peek_token (parser)->keyword)
2285 location_t loc = c_parser_peek_token (parser)->location;
2286 c_parser_consume_token (parser);
2288 if (c_parser_next_token_is (parser, CPP_NAME)
2289 || c_parser_peek_token (parser)->type == CPP_NUMBER)
2290 exp1 = c_parser_gimple_postfix_expression (parser);
2293 c_parser_error (parser, "expected expression");
2297 if (c_parser_next_token_is (parser, CPP_COLON))
2299 c_parser_consume_token (parser);
2300 if (c_parser_next_token_is (parser, CPP_NAME))
2302 label = c_parser_peek_token (parser)->value;
2303 c_parser_consume_token (parser);
2308 if (! c_parser_require (parser, CPP_SEMICOLON,
2312 else if (! c_parser_require (parser, CPP_NAME,
2316 else if (! c_parser_require (parser, CPP_SEMICOLON,
2323 location_t loc = c_parser_peek_token (parser)->location;
2324 c_parser_consume_token (parser);
2325 if (c_parser_next_token_is (parser, CPP_COLON))
2327 c_parser_consume_token (parser);
2328 if (c_parser_next_token_is (parser, CPP_NAME))
2330 label = c_parser_peek_token (parser)->value;
2331 c_parser_consume_token (parser);
2335 if (! c_parser_require (parser, CPP_SEMICOLON,
2339 else if (! c_parser_require (parser, CPP_NAME,
2343 else if (! c_parser_require (parser, CPP_SEMICOLON,
2349 c_parser_error (parser, "expected case label");
2354 if (! c_parser_require (parser, CPP_CLOSE_BRACE, "expected %<}%>"))
2367 c_parser_gimple_return_stmt (gimple_parser &parser, gimple_seq *seq)
2369 location_t loc = c_parser_peek_token (parser)->location;
2371 c_parser_consume_token (parser);
2372 if (c_parser_next_token_is (parser, CPP_SEMICOLON))
2380 location_t xloc = c_parser_peek_token (parser)->location;
2381 c_expr expr = c_parser_gimple_unary_expression (parser);