On Sat, Feb 22, 2014 at 11:44 PM, Marek Polacek <pola...@redhat.com> wrote: > On Sat, Feb 22, 2014 at 10:34:13PM +0530, Prathamesh Kulkarni wrote: >> Not sure if this a good idea, but it seemed to me that goto sizeof_expr; >> wasn't >> really required in c_parser_sizeof_expression. >> Bootstrapped and regression tested on x8_64-unknown-linux-gnu >> Ok for trunk ? >> >> * c-parser.c (c_parser_sizeof_expression): Remove goto sizeof_expr; >> >> Thanks and Regards, >> Prathamesh > > I'm not against it, but... > >> Index: gcc/c/c-parser.c >> =================================================================== >> --- gcc/c/c-parser.c (revision 207916) >> +++ gcc/c/c-parser.c (working copy) >> @@ -6518,26 +6518,27 @@ c_parser_sizeof_expression (c_parser *pa >> expr = c_parser_postfix_expression_after_paren_type (parser, >> type_name, >> expr_loc); >> - goto sizeof_expr; >> } > > Remove { } around expr = c_parser_... > >> + else >> + { >> /* sizeof ( type-name ). */ >> c_inhibit_evaluation_warnings--; >> in_sizeof--; >> return c_expr_sizeof_type (expr_loc, type_name); >> + } > > Tab before { and }. > >> + c_inhibit_evaluation_warnings--; >> + in_sizeof--; >> + mark_exp_read (expr.value); >> + if (TREE_CODE (expr.value) == COMPONENT_REF >> && DECL_C_BIT_FIELD (TREE_OPERAND (expr.value, 1))) >> error_at (expr_loc, "%<sizeof%> applied to a bit-field"); >> return c_expr_sizeof_expr (expr_loc, expr); > > This hunk of code is wrongly indented. > Is this fine ? * c-parser.c (c_parser_sizeof_expression): Remove goto sizeof_expr.
> Marek
Index: gcc/c/c-parser.c =================================================================== --- gcc/c/c-parser.c (revision 207916) +++ gcc/c/c-parser.c (working copy) @@ -6514,30 +6514,29 @@ c_parser_sizeof_expression (c_parser *pa return ret; } if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) - { - expr = c_parser_postfix_expression_after_paren_type (parser, - type_name, - expr_loc); - goto sizeof_expr; - } - /* sizeof ( type-name ). */ - c_inhibit_evaluation_warnings--; - in_sizeof--; - return c_expr_sizeof_type (expr_loc, type_name); + expr = c_parser_postfix_expression_after_paren_type (parser, + type_name, + expr_loc); + else + { + /* sizeof ( type-name ). */ + c_inhibit_evaluation_warnings--; + in_sizeof--; + return c_expr_sizeof_type (expr_loc, type_name); + } } else { expr_loc = c_parser_peek_token (parser)->location; expr = c_parser_unary_expression (parser); - sizeof_expr: - c_inhibit_evaluation_warnings--; - in_sizeof--; - mark_exp_read (expr.value); - if (TREE_CODE (expr.value) == COMPONENT_REF - && DECL_C_BIT_FIELD (TREE_OPERAND (expr.value, 1))) - error_at (expr_loc, "%<sizeof%> applied to a bit-field"); - return c_expr_sizeof_expr (expr_loc, expr); } + c_inhibit_evaluation_warnings--; + in_sizeof--; + mark_exp_read (expr.value); + if (TREE_CODE (expr.value) == COMPONENT_REF + && DECL_C_BIT_FIELD (TREE_OPERAND (expr.value, 1))) + error_at (expr_loc, "%<sizeof%> applied to a bit-field"); + return c_expr_sizeof_expr (expr_loc, expr); } /* Parse an alignof expression. */