c-parser.c (c_parser_sizeof_expression): Reorganize slightly to avoid goto.
authorPrathamesh Kulkarni <bilbotheelffriend@gmail.com>
Thu, 24 Apr 2014 21:29:45 +0000 (21:29 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 24 Apr 2014 21:29:45 +0000 (15:29 -0600)
        * c-parser.c (c_parser_sizeof_expression): Reorganize slightly to
        avoid goto.

From-SVN: r209765

gcc/c/ChangeLog
gcc/c/c-parser.c

index 3ee2594..14e6169 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-24  Prathamesh Kulkarni  <bilbotheelffriend@gmail.com>
+
+       * c-parser.c (c_parser_sizeof_expression): Reorganize slightly to
+       avoid goto.
+
 2014-04-24  Jakub Jelinek  <jakub@redhat.com>
 
        * c-parser.c (c_parser_omp_atomic): Allow seq_cst before
index 6eb235c..c229bdb 100644 (file)
@@ -6514,30 +6514,29 @@ c_parser_sizeof_expression (c_parser *parser)
          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);
+      else
        {
-         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);
        }
-      /* 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.  */