Hi Joseph, A gentle ping, now that Sandra has merged patch 1/1.
Have a lovely night! Alex On Tue, Oct 14, 2025 at 04:41:32PM +0200, Alejandro Colomar wrote: > Store the 'rid' value in a local variable, and pass it to functions that > handle various keywords. This simplifies the code, and removes some > wrappers. > > No functional change intended. > > gcc/c/ChangeLog: > > * c-parser.cc (c_parser_sizeof_expression): Remove function. > (c_parser_countof_expression): Remove function. > (c_parser_unary_expression): Store the 'rid', and pass it > directly to the function calls, without calling wrappers. > > Suggested-by: Andrew Pinski <[email protected]> > Signed-off-by: Alejandro Colomar <[email protected]> > --- > gcc/c/c-parser.cc | 89 +++++++++++++++++++---------------------------- > 1 file changed, 36 insertions(+), 53 deletions(-) > > diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc > index ea0294f0738e..235b8339d815 100644 > --- a/gcc/c/c-parser.cc > +++ b/gcc/c/c-parser.cc > @@ -1782,8 +1782,6 @@ static struct c_expr c_parser_binary_expression > (c_parser *, struct c_expr *, > tree); > static struct c_expr c_parser_cast_expression (c_parser *, struct c_expr *); > static struct c_expr c_parser_unary_expression (c_parser *); > -static inline struct c_expr c_parser_sizeof_expression (c_parser *); > -static inline struct c_expr c_parser_countof_expression (c_parser *); > static struct c_expr c_parser_sizeof_or_countof_expression (c_parser *, > enum rid); > static struct c_expr c_parser_alignof_expression (c_parser *); > @@ -10647,62 +10645,47 @@ c_parser_unary_expression (c_parser *parser) > } > return ret; > case CPP_KEYWORD: > - switch (c_parser_peek_token (parser)->keyword) > - { > - case RID_COUNTOF: > - return c_parser_countof_expression (parser); > - case RID_SIZEOF: > - return c_parser_sizeof_expression (parser); > - case RID_ALIGNOF: > - return c_parser_alignof_expression (parser); > - case RID_BUILTIN_HAS_ATTRIBUTE: > - return c_parser_has_attribute_expression (parser); > - case RID_EXTENSION: > - c_parser_consume_token (parser); > - ext = disable_extension_diagnostics (); > - ret = c_parser_cast_expression (parser, NULL); > - restore_extension_diagnostics (ext); > - return ret; > - case RID_REALPART: > - c_parser_consume_token (parser); > - exp_loc = c_parser_peek_token (parser)->location; > - op = c_parser_cast_expression (parser, NULL); > - op = default_function_array_conversion (exp_loc, op); > - return parser_build_unary_op (op_loc, REALPART_EXPR, op); > - case RID_IMAGPART: > - c_parser_consume_token (parser); > - exp_loc = c_parser_peek_token (parser)->location; > - op = c_parser_cast_expression (parser, NULL); > - op = default_function_array_conversion (exp_loc, op); > - return parser_build_unary_op (op_loc, IMAGPART_EXPR, op); > - case RID_TRANSACTION_ATOMIC: > - case RID_TRANSACTION_RELAXED: > - return c_parser_transaction_expression (parser, > - c_parser_peek_token (parser)->keyword); > - default: > - return c_parser_postfix_expression (parser); > - } > + { > + enum rid rid = c_parser_peek_token (parser)->keyword; > + switch (rid) > + { > + case RID_COUNTOF: > + case RID_SIZEOF: > + return c_parser_sizeof_or_countof_expression (parser, rid); > + case RID_ALIGNOF: > + return c_parser_alignof_expression (parser); > + case RID_BUILTIN_HAS_ATTRIBUTE: > + return c_parser_has_attribute_expression (parser); > + case RID_EXTENSION: > + c_parser_consume_token (parser); > + ext = disable_extension_diagnostics (); > + ret = c_parser_cast_expression (parser, NULL); > + restore_extension_diagnostics (ext); > + return ret; > + case RID_REALPART: > + c_parser_consume_token (parser); > + exp_loc = c_parser_peek_token (parser)->location; > + op = c_parser_cast_expression (parser, NULL); > + op = default_function_array_conversion (exp_loc, op); > + return parser_build_unary_op (op_loc, REALPART_EXPR, op); > + case RID_IMAGPART: > + c_parser_consume_token (parser); > + exp_loc = c_parser_peek_token (parser)->location; > + op = c_parser_cast_expression (parser, NULL); > + op = default_function_array_conversion (exp_loc, op); > + return parser_build_unary_op (op_loc, IMAGPART_EXPR, op); > + case RID_TRANSACTION_ATOMIC: > + case RID_TRANSACTION_RELAXED: > + return c_parser_transaction_expression (parser, rid); > + default: > + return c_parser_postfix_expression (parser); > + } > + } > default: > return c_parser_postfix_expression (parser); > } > } > > -/* Parse a sizeof expression. */ > - > -static inline struct c_expr > -c_parser_sizeof_expression (c_parser *parser) > -{ > - return c_parser_sizeof_or_countof_expression (parser, RID_SIZEOF); > -} > - > -/* Parse a _Countof expression. */ > - > -static inline struct c_expr > -c_parser_countof_expression (c_parser *parser) > -{ > - return c_parser_sizeof_or_countof_expression (parser, RID_COUNTOF); > -} > - > /* Parse a sizeof or _Countof expression. */ > > static struct c_expr > -- > 2.51.0 > -- <https://www.alejandro-colomar.es> Use port 80 (that is, <...:80/>).
signature.asc
Description: PGP signature
