Lines Matching refs:parser
0 /* Parser for GIMPLE.
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");
385 c_parser_gimple_compound_statement (gimple_parser &parser, gimple_seq *seq)
389 if (! c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>"))
393 while (c_parser_next_tokens_start_declaration (parser))
395 c_parser_gimple_declaration (parser);
396 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
400 while (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE))
402 if (c_parser_error (parser))
404 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL);
407 else if (c_parser_next_token_is (parser, CPP_EOF))
409 c_parser_error (parser, "expected declaration or statement");
413 switch (c_parser_peek_token (parser)->type)
416 switch (c_parser_peek_token (parser)->keyword)
419 c_parser_gimple_try_stmt (parser, seq);
422 c_parser_gimple_if_stmt (parser, seq);
425 c_parser_gimple_switch_stmt (parser, seq);
429 location_t loc = c_parser_peek_token (parser)->location;
430 c_parser_consume_token (parser);
431 if (c_parser_next_token_is (parser, CPP_NAME))
433 tree label = c_parser_peek_token (parser)->value;
434 c_parser_consume_token (parser);
435 c_parser_gimple_goto_stmt (parser, loc, label, seq);
436 if (! c_parser_require (parser, CPP_SEMICOLON,
444 c_parser_gimple_return_stmt (parser, seq);
445 if (! c_parser_require (parser, CPP_SEMICOLON,
449 parser.push_edge (parser.current_bb->index, EXIT_BLOCK, 0,
457 if (c_parser_peek_2nd_token (parser)->type == CPP_COLON)
459 c_parser_gimple_label (parser, seq);
462 if (c_parser_next_token_is (parser, CPP_NAME)
463 && c_parser_peek_token (parser)->id_kind == C_ID_ID
464 && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
467 c_parser_gimple_try_stmt (parser, seq);
474 (c_parser_peek_token (parser)->value), "__BB"))
476 c_parser_consume_token (parser);
477 if (! c_parser_require (parser, CPP_OPEN_PAREN,
480 if (c_parser_next_token_is_not (parser, CPP_NUMBER))
482 c_parser_error (parser, "expected block index");
485 tree tnum = c_parser_peek_token (parser)->value;
488 c_parser_error (parser, "expected block index");
496 c_parser_error (parser, "invalid block index");
501 c_parser_consume_token (parser);
502 while (c_parser_next_token_is (parser, CPP_COMMA))
504 c_parser_consume_token (parser);
505 if (! c_parser_next_token_is (parser, CPP_NAME))
507 c_parser_error (parser, "expected block specifier");
512 (c_parser_peek_token (parser)->value),
515 c_parser_consume_token (parser);
516 if (! c_parser_require (parser, CPP_OPEN_PAREN,
520 if (! c_parser_next_token_is (parser, CPP_NUMBER)
522 = c_parser_peek_token (parser)->value)
525 c_parser_error (parser, "expected loop number");
528 c_parser_consume_token (parser);
530 if (! c_parser_require (parser, CPP_CLOSE_PAREN,
539 tree v = c_parser_peek_token (parser)->value;
543 c_parser_error (parser, "unknown block specifier");
547 c_parser_consume_token (parser);
548 if (!c_parser_require (parser, CPP_OPEN_PAREN,
552 if (!c_parser_next_token_is (parser, CPP_NUMBER)
553 || (TREE_CODE (q = c_parser_peek_token (parser)->value)
556 c_parser_error (parser, "expected count value");
563 c_parser_consume_token (parser);
564 if (! c_parser_require (parser, CPP_CLOSE_PAREN,
569 if (! c_parser_require (parser, CPP_CLOSE_PAREN,
571 || ! c_parser_require (parser, CPP_COLON,
578 if (!parser.current_bb)
579 c_parser_error (parser, "stmts without block");
583 = gsi_start_bb (parser.current_bb);
593 link_block (bb, (parser.current_bb ? parser.current_bb
602 if (parser.current_bb->index == ENTRY_BLOCK)
603 parser.push_edge (ENTRY_BLOCK, bb->index, EDGE_FALLTHRU,
616 c_parser_error (parser, "duplicate loop header");
636 parser.current_bb = bb;
644 location_t loc = c_parser_peek_token (parser)->location;
645 c_parser_consume_token (parser);
654 c_parser_gimple_statement (parser, seq);
655 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
656 c_parser_skip_until_found (parser, CPP_SEMICOLON, NULL);
659 c_parser_consume_token (parser);
665 if (!parser.current_bb)
666 c_parser_error (parser, "stmts without block");
669 gimple_stmt_iterator gsi = gsi_start_bb (parser.current_bb);
706 c_parser_gimple_statement (gimple_parser &parser, gimple_seq *seq)
714 lhs = c_parser_gimple_unary_expression (parser);
719 if (c_parser_next_token_is (parser, CPP_SEMICOLON)
730 if (! c_parser_require (parser, CPP_EQ, "expected %<=%>"))
734 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
735 && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
737 c_parser_consume_token (parser);
738 struct c_type_name *type_name = c_parser_type_name (parser);
739 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
744 rhs = c_parser_gimple_postfix_expression (parser);
763 switch (c_parser_peek_token (parser)->type)
767 tree id = c_parser_peek_token (parser)->value;
778 if (c_parser_peek_token (parser)->keyword != RID_REALPART
779 && c_parser_peek_token (parser)->keyword != RID_IMAGPART)
789 rhs = c_parser_gimple_unary_expression (parser);
802 if (c_parser_next_token_is_keyword (parser, RID_PHI))
804 c_parser_consume_token (parser);
806 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
809 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
810 c_parser_consume_token (parser);
812 while (c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN))
814 if (c_parser_next_token_is (parser, CPP_NAME)
815 && c_parser_peek_2nd_token (parser)->type == CPP_COLON)
817 arg = c_parser_peek_token (parser)->value;
818 c_parser_consume_token (parser);
819 if (c_parser_next_token_is (parser, CPP_COLON))
820 c_parser_consume_token (parser);
823 c_parser_error (parser, "invalid source block specification");
826 else if (c_parser_next_token_is (parser, CPP_COMMA))
827 c_parser_consume_token (parser);
830 arg = c_parser_gimple_unary_expression (parser).value;
835 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
847 if (c_parser_next_token_is (parser, CPP_DOT)
848 || (c_parser_next_token_is (parser, CPP_NAME)
849 && c_parser_peek_2nd_token (parser)->type == CPP_OPEN_PAREN
850 && lookup_name (c_parser_peek_token (parser)->value)))
852 rhs = c_parser_gimple_unary_expression (parser);
863 rhs = c_parser_gimple_binary_expression (parser);
871 && c_parser_next_token_is (parser, CPP_QUERY))
874 c_parser_consume_token (parser);
875 trueval = c_parser_gimple_postfix_expression (parser);
877 if (c_parser_require (parser, CPP_COLON, "expected %<:%>"))
878 falseval = c_parser_gimple_postfix_expression (parser);
890 c_parser_error (parser, "unexpected RHS for assignment");
924 c_parser_gimple_binary_expression (gimple_parser &parser)
930 lhs = c_parser_gimple_postfix_expression (parser);
931 if (c_parser_error (parser))
934 switch (c_parser_peek_token (parser)->type)
994 c_parser_error (parser, "%<&&%> not valid in GIMPLE");
997 c_parser_error (parser, "%<||%> not valid in GIMPLE");
1001 tree id = c_parser_peek_token (parser)->value;
1013 location_t ret_loc = c_parser_peek_token (parser)->location;
1014 c_parser_consume_token (parser);
1015 rhs = c_parser_gimple_postfix_expression (parser);
1024 c_parser_gimple_parentized_binary_expression (gimple_parser &parser,
1031 c_parser_consume_token (parser);
1032 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1034 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1035 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>"))
1037 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1038 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
1050 c_parser_gimple_parentized_ternary_expression (gimple_parser &parser,
1057 c_parser_consume_token (parser);
1058 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1060 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1061 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>"))
1063 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1064 if (!c_parser_require (parser, CPP_COMMA, "expected %<)%>"))
1066 parser);
1067 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
1090 c_parser_gimple_unary_expression (gimple_parser &parser)
1093 location_t op_loc = c_parser_peek_token (parser)->location;
1096 switch (c_parser_peek_token (parser)->type)
1099 c_parser_consume_token (parser);
1100 op = c_parser_gimple_postfix_expression (parser);
1105 c_parser_consume_token (parser);
1106 op = c_parser_gimple_postfix_expression (parser);
1125 c_parser_consume_token (parser);
1126 op = c_parser_gimple_postfix_expression (parser);
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 c_parser_error (parser, "%<!%> not valid in GIMPLE");
1140 switch (c_parser_peek_token (parser)->keyword)
1143 c_parser_consume_token (parser);
1144 op = c_parser_gimple_postfix_expression (parser);
1147 c_parser_consume_token (parser);
1148 op = c_parser_gimple_postfix_expression (parser);
1151 return c_parser_gimple_postfix_expression (parser);
1155 tree id = c_parser_peek_token (parser)->value;
1158 c_parser_consume_token (parser);
1159 op = c_parser_gimple_postfix_expression (parser);
1164 c_parser_consume_token (parser);
1165 op = c_parser_gimple_postfix_expression (parser);
1169 return c_parser_gimple_parentized_binary_expression (parser,
1173 return c_parser_gimple_parentized_binary_expression (parser,
1178 (parser, op_loc, VEC_PERM_EXPR);
1183 location_t loc = c_parser_peek_token (parser)->location;
1184 c_parser_consume_token (parser);
1185 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1187 c_expr op0 = c_parser_gimple_postfix_expression (parser);
1188 c_parser_skip_until_found (parser, CPP_COMMA,
1190 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1191 c_parser_skip_until_found (parser, CPP_COMMA,
1193 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1196 c_parser_error (parser, "expected constant offset");
1197 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1211 return c_parser_gimple_postfix_expression (parser);
1214 return c_parser_gimple_postfix_expression (parser);
1241 c_parser_parse_ssa_name (gimple_parser &parser,
1257 c_parser_error (parser, "SSA name undeclared");
1279 c_parser_error (parser, "base variable or SSA name undeclared");
1303 c_parser_gimple_call_internal (gimple_parser &parser)
1308 gcc_assert (c_parser_next_token_is (parser, CPP_DOT));
1309 c_parser_consume_token (parser);
1310 location_t loc = c_parser_peek_token (parser)->location;
1311 if (!c_parser_next_token_is (parser, CPP_NAME)
1312 || c_parser_peek_token (parser)->id_kind != C_ID_ID)
1314 c_parser_error (parser, "expecting internal function name");
1317 tree id = c_parser_peek_token (parser)->value;
1319 c_parser_consume_token (parser);
1320 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1323 if (!c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
1324 c_parser_gimple_expr_list (parser, &exprlist);
1325 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
1344 c_parser_gimple_typespec (gimple_parser &parser)
1348 if (c_parser_require (parser, CPP_LESS, "expected %<<%>"))
1350 type_name = c_parser_type_name (parser);
1352 if (c_parser_next_token_is (parser, CPP_COMMA))
1354 c_parser_consume_token (parser);
1356 = c_parser_gimple_postfix_expression (parser).value;
1358 c_parser_skip_until_found (parser,
1393 c_parser_gimple_postfix_expression (gimple_parser &parser)
1395 location_t loc = c_parser_peek_token (parser)->location;
1396 source_range tok_range = c_parser_peek_token (parser)->get_range ();
1399 switch (c_parser_peek_token (parser)->type)
1402 expr.value = c_parser_peek_token (parser)->value;
1404 loc = c_parser_peek_token (parser)->location;
1405 c_parser_consume_token (parser);
1412 expr.value = c_parser_peek_token (parser)->value;
1414 c_parser_consume_token (parser);
1421 expr = c_parser_string_literal (parser, false, true);
1424 expr = c_parser_gimple_call_internal (parser);
1427 if (c_parser_peek_token (parser)->id_kind == C_ID_ID)
1429 tree id = c_parser_peek_token (parser)->value;
1435 location_t loc = c_parser_peek_token (parser)->location;
1436 c_parser_consume_token (parser);
1437 tree type = c_parser_gimple_typespec (parser);
1441 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1445 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
1447 c_parser_consume_token (parser);
1449 = c_parser_type_name (parser);
1450 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1459 ptr = c_parser_gimple_unary_expression (parser);
1466 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1473 if (c_parser_next_token_is (parser, CPP_PLUS))
1475 c_parser_consume_token (parser);
1477 = c_parser_gimple_postfix_expression (parser).value;
1482 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1485 if (! type || c_parser_error (parser))
1487 c_parser_set_error (parser, false);
1498 location_t loc = c_parser_peek_token (parser)->location;
1499 c_parser_consume_token (parser);
1500 tree type = c_parser_gimple_typespec (parser);
1501 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1503 c_expr op = c_parser_gimple_postfix_expression (parser);
1504 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1516 location_t loc = c_parser_peek_token (parser)->location;
1517 c_parser_consume_token (parser);
1518 tree type = c_parser_gimple_typespec (parser);
1519 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1521 c_expr op0 = c_parser_gimple_postfix_expression (parser);
1522 c_parser_skip_until_found (parser, CPP_COMMA,
1524 c_expr op1 = c_parser_gimple_postfix_expression (parser);
1527 c_parser_error (parser, "expected constant size");
1528 c_parser_skip_until_found (parser, CPP_COMMA,
1530 c_expr op2 = c_parser_gimple_postfix_expression (parser);
1533 c_parser_error (parser, "expected constant offset");
1534 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1552 c_parser_consume_token (parser);
1554 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1556 struct c_type_name *type_name = c_parser_type_name (parser);
1560 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1565 c_parser_error (parser, "invalid _Literal");
1568 if (c_parser_next_token_is (parser
1570 c_parser_consume_token (parser);
1574 c_parser_error (parser, "invalid type for _Literal with "
1576 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE,
1583 && !c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
1589 = c_parser_gimple_postfix_expression (parser).value;
1595 c_parser_error (parser, "invalid _Literal");
1601 if (c_parser_next_token_is (parser, CPP_COMMA))
1602 c_parser_consume_token (parser);
1608 if (c_parser_require (parser, CPP_CLOSE_BRACE,
1618 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE,
1626 if ((neg_p = c_parser_next_token_is (parser, CPP_MINUS)))
1627 c_parser_consume_token (parser);
1628 if ((addr_p = c_parser_next_token_is (parser, CPP_AND)))
1629 c_parser_consume_token (parser);
1630 tree val = c_parser_gimple_postfix_expression (parser).value;
1635 c_parser_error (parser, "invalid _Literal");
1643 c_parser_error (parser, "invalid _Literal");
1652 c_parser_error (parser, "invalid _Literal");
1666 c_parser_consume_token (parser);
1667 expr.value = c_parser_parse_ssa_name (parser, id, NULL_TREE,
1673 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
1674 && c_parser_peek_2nd_token (parser)->type == CPP_NAME
1677 (c_parser_peek_2nd_token (parser)->value)) == 0
1678 && c_parser_peek_nth_token (parser, 3)->type == CPP_CLOSE_PAREN)
1680 c_parser_consume_token (parser);
1681 c_parser_consume_token (parser);
1682 c_parser_consume_token (parser);
1700 c_parser_consume_token (parser);
1703 (c_parser_peek_token (parser)->type
1711 c_parser_error (parser, "expected expression");
1718 (parser, EXPR_LOC_OR_LOC (expr.value, loc), expr);
1725 c_parser_gimple_postfix_expression_after_primary (gimple_parser &parser,
1736 location_t op_loc = c_parser_peek_token (parser)->location;
1737 switch (c_parser_peek_token (parser)->type)
1741 c_parser_consume_token (parser);
1742 tree idx = c_parser_gimple_unary_expression (parser).value;
1744 if (! c_parser_require (parser, CPP_CLOSE_SQUARE, "expected %<]%>"))
1746 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, NULL);
1751 finish = c_parser_tokens_buf (parser, 0)->location;
1762 c_parser_consume_token (parser);
1764 if (! c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
1765 c_parser_gimple_expr_list (parser, &exprlist);
1766 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
1770 c_parser_error (parser, "invalid call to non-function");
1784 c_parser_consume_token (parser);
1785 if (c_parser_next_token_is (parser, CPP_NAME))
1787 c_token *comp_tok = c_parser_peek_token (parser);
1793 c_parser_error (parser, "expected identifier");
1800 finish = c_parser_peek_token (parser)->get_finish ();
1801 c_parser_consume_token (parser);
1824 c_parser_error (parser, "dereference of non-pointer");
1830 c_parser_consume_token (parser);
1831 if (c_parser_next_token_is (parser, CPP_NAME))
1833 c_token *comp_tok = c_parser_peek_token (parser);
1839 c_parser_error (parser, "expected identifier");
1846 finish = c_parser_peek_token (parser)->get_finish ();
1847 c_parser_consume_token (parser);
1882 c_parser_gimple_expr_list (gimple_parser &parser, vec<tree> *ret)
1886 expr = c_parser_gimple_unary_expression (parser);
1888 while (c_parser_next_token_is (parser, CPP_COMMA))
1890 c_parser_consume_token (parser);
1891 expr = c_parser_gimple_unary_expression (parser);
1906 c_parser_gimple_label (gimple_parser &parser, gimple_seq *seq)
1908 tree name = c_parser_peek_token (parser)->value;
1909 location_t loc1 = c_parser_peek_token (parser)->location;
1910 gcc_assert (c_parser_next_token_is (parser, CPP_NAME));
1911 c_parser_consume_token (parser);
1912 gcc_assert (c_parser_next_token_is (parser, CPP_COLON));
1913 c_parser_consume_token (parser);
1927 c_parser_gimple_or_rtl_pass_list (c_parser *parser, c_declspecs *specs)
1932 if (c_parser_next_token_is_not (parser, CPP_OPEN_PAREN))
1934 c_parser_consume_token (parser);
1937 while (c_parser_next_token_is (parser, CPP_NAME))
1940 const char *op = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
1941 c_parser_consume_token (parser);
1944 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1946 if (c_parser_next_token_is_not (parser, CPP_STRING))
1948 error_at (c_parser_peek_token (parser)->location,
1953 (c_parser_string_literal (parser, false,
1955 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<(%>"))
1961 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
1964 if (!c_parser_next_token_is (parser, CPP_NUMBER)
1965 || (TREE_CODE (q = c_parser_peek_token (parser)->value)
1968 c_parser_error (parser, "expected count value");
1974 c_parser_consume_token (parser);
1975 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
1987 error_at (c_parser_peek_token (parser)->location,
1991 if (c_parser_next_token_is (parser, CPP_COMMA))
1992 c_parser_consume_token (parser);
1995 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
2040 c_parser_gimple_declaration (gimple_parser &parser)
2044 c_parser_declspecs (parser, specs, true, true, true,
2050 if (c_parser_next_token_starts_declspecs (parser)
2051 && ! c_parser_next_token_is (parser, CPP_NAME))
2053 c_parser_error (parser, "expected %<;%>");
2054 c_parser_set_error (parser, false);
2059 declarator = c_parser_declarator (parser,
2063 if (c_parser_next_token_is (parser, CPP_SEMICOLON))
2093 c_parser_parse_ssa_name (parser, id_declarator->u.id.id, type,
2110 c_parser_error (parser, "expected %<;%>");
2118 c_parser_gimple_goto_stmt (gimple_parser &parser,
2125 if (c_parser_gimple_parse_bb_spec_edge_probability (label, parser,
2128 parser.push_edge (parser.current_bb->index, dest_index,
2142 c_parser_gimple_paren_condition (gimple_parser &parser)
2144 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
2146 tree cond = c_parser_gimple_binary_expression (parser).value;
2152 c_parser_error (parser
2155 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
2170 c_parser_gimple_try_stmt (gimple_parser &parser, gimple_seq *seq)
2173 c_parser_consume_token (parser);
2174 c_parser_gimple_compound_statement (parser, &tryseq);
2176 if ((c_parser_next_token_is (parser, CPP_KEYWORD)
2177 && c_parser_peek_token (parser)->keyword == RID_AT_FINALLY)
2178 || (c_parser_next_token_is (parser, CPP_NAME)
2179 && c_parser_peek_token (parser)->id_kind == C_ID_ID
2180 && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
2184 c_parser_consume_token (parser);
2185 c_parser_gimple_compound_statement (parser, &finseq);
2187 if (c_parser_next_token_is (parser, CPP_KEYWORD)
2188 && c_parser_peek_token (parser)->keyword == RID_ELSE)
2191 c_parser_consume_token (parser);
2192 c_parser_gimple_compound_statement (parser, &elsseq);
2202 else if (c_parser_next_token_is (parser, CPP_KEYWORD)
2203 && c_parser_peek_token (parser)->keyword == RID_AT_CATCH)
2204 c_parser_error (parser, "%<catch%> is not supported");
2206 c_parser_error (parser, "expected %<finally%> or %<catch%>");
2218 c_parser_gimple_if_stmt (gimple_parser &parser, gimple_seq *seq)
2222 c_parser_consume_token (parser);
2223 tree cond = c_parser_gimple_paren_condition (parser);
2225 if (c_parser_next_token_is_keyword (parser, RID_GOTO))
2227 loc = c_parser_peek_token (parser)->location;
2228 c_parser_consume_token (parser);
2229 if (! c_parser_next_token_is (parser, CPP_NAME))
2231 c_parser_error (parser, "expected label");
2234 label = c_parser_peek_token (parser)->value;
2235 c_parser_consume_token (parser);
2239 && c_parser_gimple_parse_bb_spec_edge_probability (label, parser,
2241 parser.push_edge (parser.current_bb->index, dest_index,
2245 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
2250 c_parser_error (parser, "expected goto expression");
2254 if (c_parser_next_token_is_keyword (parser, RID_ELSE))
2255 c_parser_consume_token (parser);
2258 c_parser_error (parser, "expected else statement");
2262 if (c_parser_next_token_is_keyword (parser, RID_GOTO))
2264 loc = c_parser_peek_token (parser)->location;
2265 c_parser_consume_token (parser);
2266 if (! c_parser_next_token_is (parser, CPP_NAME))
2268 c_parser_error (parser, "expected label");
2271 label = c_parser_peek_token (parser)->value;
2272 c_parser_consume_token (parser);
2276 && c_parser_gimple_parse_bb_spec_edge_probability (label, parser,
2278 parser.push_edge (parser.current_bb->index, dest_index,
2282 if (! c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>"))
2287 c_parser_error (parser, "expected goto expression");
2307 c_parser_gimple_switch_stmt (gimple_parser &parser, gimple_seq *seq)
2313 c_parser_consume_token (parser);
2315 if (! c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>"))
2317 cond_expr = c_parser_gimple_postfix_expression (parser);
2318 if (! c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
2321 if (! c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>"))
2324 while (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE))
2326 if (c_parser_next_token_is (parser, CPP_EOF))
2328 c_parser_error (parser, "expected statement");
2332 switch (c_parser_peek_token (parser)->keyword)
2337 location_t loc = c_parser_peek_token (parser)->location;
2338 c_parser_consume_token (parser);
2340 if (c_parser_next_token_is (parser, CPP_NAME)
2341 || c_parser_peek_token (parser)->type == CPP_NUMBER)
2342 exp1 = c_parser_gimple_postfix_expression (parser);
2345 c_parser_error (parser, "expected expression");
2349 if (c_parser_next_token_is (parser, CPP_COLON))
2351 c_parser_consume_token (parser);
2352 if (c_parser_next_token_is (parser, CPP_NAME))
2354 label = c_parser_peek_token (parser)->value;
2355 c_parser_consume_token (parser);
2360 if (! c_parser_require (parser, CPP_SEMICOLON,
2364 else if (! c_parser_require (parser, CPP_NAME,
2368 else if (! c_parser_require (parser, CPP_SEMICOLON,
2375 location_t loc = c_parser_peek_token (parser)->location;
2376 c_parser_consume_token (parser);
2377 if (c_parser_next_token_is (parser, CPP_COLON))
2379 c_parser_consume_token (parser);
2380 if (c_parser_next_token_is (parser, CPP_NAME))
2382 label = c_parser_peek_token (parser)->value;
2383 c_parser_consume_token (parser);
2387 if (! c_parser_require (parser, CPP_SEMICOLON,
2391 else if (! c_parser_require (parser, CPP_NAME,
2395 else if (! c_parser_require (parser, CPP_SEMICOLON,
2401 c_parser_error (parser, "expected case label");
2406 if (! c_parser_require (parser, CPP_CLOSE_BRACE, "expected %<}%>"))
2419 c_parser_gimple_return_stmt (gimple_parser &parser, gimple_seq *seq)
2421 location_t loc = c_parser_peek_token (parser)->location;
2423 c_parser_consume_token (parser);
2424 if (c_parser_next_token_is (parser, CPP_SEMICOLON))
2432 location_t xloc = c_parser_peek_token (parser)->location;
2433 c_expr expr = c_parser_gimple_unary_expression (parser);