diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-01-01 20:40:03 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-01-01 20:40:03 +0100 |
commit | b295aee2b10db8517f186af1bea7071bc95d5fcd (patch) | |
tree | 53fbcd06f068c1f286ce731e58bc68cc5c3d092f /gcc/c-parser.c | |
parent | 91a96b33a9b71785d7372b87824a40da43e5384b (diff) | |
download | gcc-b295aee2b10db8517f186af1bea7071bc95d5fcd.zip gcc-b295aee2b10db8517f186af1bea7071bc95d5fcd.tar.gz gcc-b295aee2b10db8517f186af1bea7071bc95d5fcd.tar.bz2 |
re PR c/36489 (Warning "initialized field overwritten" wrongly triggers with multidimensional arrays)
PR c/36489
* c-typeck.c (add_pending_init): Add IMPLICIT argument. Only
warn about overwriting initializer with side-effects or
-Woverride-init if !IMPLICIT.
(output_init_element): Likewise. Pass IMPLICIT down to
add_pending_init.
(process_init_element): Add IMPLICIT argument. Pass it down
to output_init_element.
(push_init_element, pop_init_level, set_designator): Adjust
process_init_element callers.
(set_nonincremental_init, set_nonincremental_init_from_string):
Adjust add_pending_init callers.
(output_pending_init_elements): Adjust output_init_element callers.
* c-tree.h (process_init_element): Adjust prototype.
* c-parser.c (c_parser_initelt, c_parser_initval): Adjust
process_init_element callers.
* gcc.dg/pr36489.c: New test.
From-SVN: r142998
Diffstat (limited to 'gcc/c-parser.c')
-rw-r--r-- | gcc/c-parser.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 8c4a96f..99c6c18 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -1,6 +1,6 @@ /* Parser for C and Objective-C. Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. Parser actions based on the old Bison parser; structure somewhat @@ -3090,7 +3090,7 @@ c_parser_initelt (c_parser *parser) init.original_code = ERROR_MARK; c_parser_error (parser, "expected identifier"); c_parser_skip_until_found (parser, CPP_COMMA, NULL); - process_init_element (init); + process_init_element (init, false); return; } } @@ -3213,7 +3213,7 @@ c_parser_initelt (c_parser *parser) init.original_code = ERROR_MARK; c_parser_error (parser, "expected %<=%>"); c_parser_skip_until_found (parser, CPP_COMMA, NULL); - process_init_element (init); + process_init_element (init, false); return; } } @@ -3243,7 +3243,7 @@ c_parser_initval (c_parser *parser, struct c_expr *after) && TREE_CODE (init.value) != COMPOUND_LITERAL_EXPR) init = default_function_array_conversion (init); } - process_init_element (init); + process_init_element (init, false); } /* Parse a compound statement (possibly a function body) (C90 6.6.2, |