OSDN Git Service

(initdcl, notype_initdcl, init): Undo previous change.
authorrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Oct 1993 05:20:15 +0000 (05:20 +0000)
committerrms <rms@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 10 Oct 1993 05:20:15 +0000 (05:20 +0000)
(init): Use pop_momentary_nofree if the initializer has real data.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@5702 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c-parse.in

index 87b7951..1add87f 100644 (file)
@@ -1019,16 +1019,12 @@ maybeasm:
 initdcl:
          declarator maybeasm maybe_attribute '='
                { $<ttype>$ = start_decl ($1, current_declspecs, 1);
-                 start_init ($<ttype>$, $2, global_bindings_p ());
-                 /* Note that the call to clear_momentary
-                    is in process_init_element.  */
-                 push_momentary (); }
+                 start_init ($<ttype>$, $2, global_bindings_p ()); }
          init
 /* Note how the declaration of the variable is in effect while its init is parsed! */
                { finish_init ();
                  decl_attributes ($<ttype>5, $3);
-                 finish_decl ($<ttype>5, $6, $2);
-                 pop_momentary (); }
+                 finish_decl ($<ttype>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 '='
                { $<ttype>$ = start_decl ($1, current_declspecs, 1);
-                 start_init ($<ttype>$, $2, global_bindings_p ());
-                 /* Note that the call to clear_momentary
-                    is in process_init_element.  */
-                 push_momentary (); }
+                 start_init ($<ttype>$, $2, global_bindings_p ()); }
          init
 /* Note how the declaration of the variable is in effect while its init is parsed! */
                { finish_init ();
                  decl_attributes ($<ttype>5, $3);
-                 finish_decl ($<ttype>5, $6, $2);
-                 pop_momentary (); }
-
+                 finish_decl ($<ttype>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.  */