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/>).

Attachment: signature.asc
Description: PGP signature

Reply via email to