From: Richard Stallman Date: Sun, 10 Oct 1993 05:20:15 +0000 (+0000) Subject: (initdcl, notype_initdcl, init): Undo previous change. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6126f4db33f3719830daeff889aa8591326ca3e7;p=gcc.git (initdcl, notype_initdcl, init): Undo previous change. (init): Use pop_momentary_nofree if the initializer has real data. From-SVN: r5702 --- diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 87b7951f28e..1add87f24bc 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -1019,16 +1019,12 @@ maybeasm: initdcl: declarator maybeasm maybe_attribute '=' { $$ = start_decl ($1, current_declspecs, 1); - start_init ($$, $2, global_bindings_p ()); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); } + start_init ($$, $2, global_bindings_p ()); } init /* Note how the declaration of the variable is in effect while its init is parsed! */ { finish_init (); decl_attributes ($5, $3); - finish_decl ($5, $6, $2); - pop_momentary (); } + finish_decl ($5, $6, $2); } | declarator maybeasm maybe_attribute { tree d = start_decl ($1, current_declspecs, 0); decl_attributes (d, $3); @@ -1038,17 +1034,12 @@ initdcl: notype_initdcl: notype_declarator maybeasm maybe_attribute '=' { $$ = start_decl ($1, current_declspecs, 1); - start_init ($$, $2, global_bindings_p ()); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); } + start_init ($$, $2, global_bindings_p ()); } init /* Note how the declaration of the variable is in effect while its init is parsed! */ { finish_init (); decl_attributes ($5, $3); - finish_decl ($5, $6, $2); - pop_momentary (); } - + finish_decl ($5, $6, $2); } | notype_declarator maybeasm maybe_attribute { tree d = start_decl ($1, current_declspecs, 0); decl_attributes (d, $3); @@ -1122,11 +1113,20 @@ attrib init: expr_no_commas | '{' - { really_start_incremental_init (NULL_TREE); } + { really_start_incremental_init (NULL_TREE); + /* Note that the call to clear_momentary + is in process_init_element. */ + push_momentary (); } initlist_maybe_comma '}' - { $$ = pop_init_level (0); } + { $$ = pop_init_level (0); + if ($$ == error_mark_node) + pop_momentary (); + else + pop_momentary_nofree (); } + | error - { $$ = error_mark_node; } + { $$ = error_mark_node; + pop_momentary (); } ; /* `initlist_maybe_comma' is the guts of an initializer in braces. */