re PR c/79684 (Conditional jump or move depends on uninitialised value in GIMPLE FE)
authorRichard Biener <rguenther@suse.de>
Thu, 23 Feb 2017 12:38:39 +0000 (12:38 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 23 Feb 2017 12:38:39 +0000 (12:38 +0000)
2017-02-23  Richard Biener  <rguenther@suse.de>

PR c/79684
* gimple-parser.c (c_parser_gimple_statement): Use set_error
to initialize c_exprs to return.
(c_parser_gimple_binary_expression): Likewise.
(c_parser_gimple_unary_expression): Likewise.
(c_parser_gimple_postfix_expression): Likewise.

From-SVN: r245681

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

index 8283c827d8723038cd95e93f54a80761aa33401f..70cfdc2098051c94bf5ac057189f37e24498d1ad 100644 (file)
@@ -1,3 +1,12 @@
+2017-02-23  Richard Biener  <rguenther@suse.de>
+
+       PR c/79684
+       * gimple-parser.c (c_parser_gimple_statement): Use set_error
+       to initialize c_exprs to return.
+       (c_parser_gimple_binary_expression): Likewise.
+       (c_parser_gimple_unary_expression): Likewise.
+       (c_parser_gimple_postfix_expression): Likewise.
+
 2017-02-22  Marek Polacek  <polacek@redhat.com>
 
        PR c/79662
 2017-02-22  Marek Polacek  <polacek@redhat.com>
 
        PR c/79662
index cb2b6af0cb12f791b2da1f90652240fbdf3ec444..0d6384b55c23edf7b987e55521ef1d61963e6589 100644 (file)
@@ -270,7 +270,7 @@ c_parser_gimple_statement (c_parser *parser, gimple_seq *seq)
 
   lhs = c_parser_gimple_unary_expression (parser);
   loc = EXPR_LOCATION (lhs.value);
 
   lhs = c_parser_gimple_unary_expression (parser);
   loc = EXPR_LOCATION (lhs.value);
-  rhs.value = error_mark_node;
+  rhs.set_error ();
 
   /* GIMPLE call statement without LHS.  */
   if (c_parser_next_token_is (parser, CPP_SEMICOLON)
 
   /* GIMPLE call statement without LHS.  */
   if (c_parser_next_token_is (parser, CPP_SEMICOLON)
@@ -455,7 +455,7 @@ c_parser_gimple_binary_expression (c_parser *parser)
   /* Location of the binary operator.  */
   struct c_expr ret, lhs, rhs;
   enum tree_code code = ERROR_MARK;
   /* Location of the binary operator.  */
   struct c_expr ret, lhs, rhs;
   enum tree_code code = ERROR_MARK;
-  ret.value = error_mark_node;
+  ret.set_error ();
   lhs = c_parser_gimple_postfix_expression (parser);
   if (c_parser_error (parser))
     return ret;
   lhs = c_parser_gimple_postfix_expression (parser);
   if (c_parser_error (parser))
     return ret;
@@ -553,9 +553,7 @@ c_parser_gimple_unary_expression (c_parser *parser)
   struct c_expr ret, op;
   location_t op_loc = c_parser_peek_token (parser)->location;
   location_t finish;
   struct c_expr ret, op;
   location_t op_loc = c_parser_peek_token (parser)->location;
   location_t finish;
-  ret.original_code = ERROR_MARK;
-  ret.original_type = NULL;
-  ret.value = error_mark_node;
+  ret.set_error ();
   switch (c_parser_peek_token (parser)->type)
     {
     case CPP_AND:
   switch (c_parser_peek_token (parser)->type)
     {
     case CPP_AND:
@@ -723,11 +721,10 @@ c_parser_parse_ssa_name (c_parser *parser,
 static struct c_expr
 c_parser_gimple_postfix_expression (c_parser *parser)
 {
 static struct c_expr
 c_parser_gimple_postfix_expression (c_parser *parser)
 {
-  struct c_expr expr;
   location_t loc = c_parser_peek_token (parser)->location;
   source_range tok_range = c_parser_peek_token (parser)->get_range ();
   location_t loc = c_parser_peek_token (parser)->location;
   source_range tok_range = c_parser_peek_token (parser)->get_range ();
-  expr.original_code = ERROR_MARK;
-  expr.original_type = NULL;
+  struct c_expr expr;
+  expr.set_error ();
   switch (c_parser_peek_token (parser)->type)
     {
     case CPP_NUMBER:
   switch (c_parser_peek_token (parser)->type)
     {
     case CPP_NUMBER: