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

Reply via email to