From f8b540f247106eeca99e2930c085c9bb2e3d93f6 Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 25 Jan 2000 17:13:14 +0000 Subject: [PATCH] * c-common.c, c-decl.c, c-lang.c, c-lex.c, c-parse.in, c-pragma.c, c-typeck.c, objc/objc-act.c: Remove all references to obstack functions obsoleted by GC, such as push_obstacks_nochange, end_temporary_allocation, savealloc, saveable_tree_cons, etc. and code which existed only to decide whether or not to call them. Remove now-unused NESTED argument from start_function; all callers changed. Do not change behavior based on ggc_p. The use of the ixp_obstack in c-iterate.c and the util_obstack in objc/objc-act.c remain; these are not obsoleted by garbage collection. * c-tree.h: Update prototype for start_function. * c-parse.y, c-parse.c, objc/objc-parse.c, objc/objc-parse.y: Rebuild. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31611 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 26 +- gcc/c-common.c | 6 +- gcc/c-decl.c | 313 ++----------- gcc/c-lang.c | 4 +- gcc/c-lex.c | 9 +- gcc/c-parse.c | 889 ++++++++++++++++++------------------- gcc/c-parse.in | 164 ++----- gcc/c-parse.y | 155 ++----- gcc/c-pragma.c | 26 +- gcc/c-tree.h | 2 +- gcc/c-typeck.c | 49 +-- gcc/objc/objc-act.c | 89 +--- gcc/objc/objc-parse.c | 1158 +++++++++++++++++++++++-------------------------- gcc/objc/objc-parse.y | 164 ++----- 14 files changed, 1171 insertions(+), 1883 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6b692bc..8a0c439 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2000-01-25 Zack Weinberg + + * c-common.c, c-decl.c, c-lang.c, c-lex.c, c-parse.in, c-pragma.c, + c-typeck.c, objc/objc-act.c: Remove all references to obstack + functions obsoleted by GC, such as push_obstacks_nochange, + end_temporary_allocation, savealloc, saveable_tree_cons, etc. + and code which existed only to decide whether or not to call + them. Remove now-unused NESTED argument from start_function; + all callers changed. Do not change behavior based on ggc_p. + The use of the ixp_obstack in c-iterate.c and the util_obstack + in objc/objc-act.c remain; these are not obsoleted by garbage + collection. + * c-tree.h: Update prototype for start_function. + + * c-parse.y, c-parse.c, objc/objc-parse.c, objc/objc-parse.y: Rebuild. + 2000-01-25 Clinton Popetz * config/mips/mips.md (zero_extendsidi2_internal): Disable for @@ -1030,7 +1046,7 @@ Thu Jan 13 23:44:03 2000 Richard Henderson Use emit_jump_insn for the return insn. Thu Jan 13 14:46:03 2000 Jason Eckhardt - Stan Cox + Stan Cox * predict.c: New file. Preliminary infrastructure work for static branch prediction and basic block reordering. @@ -3991,7 +4007,7 @@ Mon Nov 29 18:09:39 1999 J"orn Rennecke 1999-11-28 Robert Lipe * i386/sco5.h (FINI_SECTION_ASM_OP_COFF): Move destructor fn - table from .fini into .dtor. + table from .fini into .dtor. 1999-11-28 Anthony Green @@ -4849,7 +4865,7 @@ Wed Nov 10 10:52:42 1999 Tom Tromey * gcc.c (do_spec_1): Support text between `%u' and `%O'. Wed Nov 10 12:43:21 1999 Philippe De Muyter - Kaveh R. Ghazi + Kaveh R. Ghazi * cppinit.c: Test `GCC_VERSION', not `HAVE_GCC_VERSION'. @@ -7934,7 +7950,7 @@ Thu Oct 7 23:06:50 1999 Richard Henderson before the fctiwz insn. Thu Oct 7 22:53:00 1999 Franz Sirl - Mark Mitchell + Mark Mitchell * tree.c (make_lang_type_fn): New funtion pointer. (make_lang_type): Call it. @@ -8083,7 +8099,7 @@ Tue Oct 5 11:34:52 1999 Michael Meissner * ggc-simple.c (toplevel): Ditto. Mon Oct 4 16:48:16 1999 Diego Novillo - Jonathan Larmour + Jonathan Larmour * config/mips/mips.c (mips_move_2words): Split doubles if ISA >= 3, !TARGET_64BIT, and destination is not an FP register. diff --git a/gcc/c-common.c b/gcc/c-common.c index f7d670c..3d08120 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -24,7 +24,6 @@ Boston, MA 02111-1307, USA. */ #include "c-lex.h" #include "c-tree.h" #include "flags.h" -#include "obstack.h" #include "toplev.h" #include "output.h" #include "c-pragma.h" @@ -291,7 +290,6 @@ declare_hidden_char_array (name, value) || warn_larger_than) type = build_array_type (char_type_node, build_index_type (build_int_2 (vlen, 0))); - push_obstacks_nochange (); decl = build_decl (VAR_DECL, get_identifier (name), type); TREE_STATIC (decl) = 1; TREE_READONLY (decl) = 1; @@ -345,7 +343,7 @@ combine_strings (strings) if (wide_flag) length = length * wchar_bytes + wide_length; - p = ggc_p ? ggc_alloc_string (NULL, length) : savealloc (length); + p = ggc_alloc_string (NULL, length); /* Copy the individual strings into the new combined string. If the combined string is wide, convert the chars to ints @@ -3491,7 +3489,7 @@ c_get_alias_set (t) if (!TYPE_ALIAS_SET_KNOWN_P (type)) { - /* Types that are not allocated on the permanent obstack are not + /* Types that are not global ('permanent') are not placed in the type hash table. Thus, there can be multiple copies of identical types in local scopes. In the long run, all types should be permanent. */ diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 2e03edf..cc072a6 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1339,10 +1339,7 @@ pushtag (name, type) TYPE_NAME (type) = name; } - if (b == global_binding_level) - b->tags = perm_tree_cons (name, type, b->tags); - else - b->tags = saveable_tree_cons (name, type, b->tags); + b->tags = tree_cons (name, type, b->tags); /* Create a fake NULL-named TYPE_DECL node whose TREE_TYPE will be the tagged type we just added to the current binding level. This fake @@ -1469,17 +1466,6 @@ duplicate_decls (newdecl, olddecl, different_binding_level) tree oldreturntype = TREE_TYPE (oldtype); tree newreturntype = TREE_TYPE (newtype); - /* Make sure we put the new type in the same obstack as the old ones. - If the old types are not both in the same obstack, use the - permanent one. */ - if (TYPE_OBSTACK (oldtype) == TYPE_OBSTACK (newtype)) - push_obstacks (TYPE_OBSTACK (oldtype), TYPE_OBSTACK (oldtype)); - else - { - push_obstacks_nochange (); - end_temporary_allocation (); - } - if (TYPE_MODE (oldreturntype) == TYPE_MODE (newreturntype)) { /* Function types may be shared, so we can't just modify @@ -1515,8 +1501,6 @@ duplicate_decls (newdecl, olddecl, different_binding_level) } if (! different_binding_level) TREE_TYPE (olddecl) = oldtype; - - pop_obstacks (); } if (!types_match) { @@ -1779,17 +1763,6 @@ duplicate_decls (newdecl, olddecl, different_binding_level) different_binding_level is true. */ tree write_olddecl = different_binding_level ? newdecl : olddecl; - /* Make sure we put the new type in the same obstack as the old ones. - If the old types are not both in the same obstack, use the permanent - one. */ - if (TYPE_OBSTACK (oldtype) == TYPE_OBSTACK (newtype)) - push_obstacks (TYPE_OBSTACK (oldtype), TYPE_OBSTACK (oldtype)); - else - { - push_obstacks_nochange (); - end_temporary_allocation (); - } - /* Merge the data types specified in the two decls. */ if (TREE_CODE (newdecl) != FUNCTION_DECL || !DECL_BUILT_IN (olddecl)) { @@ -1887,8 +1860,6 @@ duplicate_decls (newdecl, olddecl, different_binding_level) DECL_NO_LIMIT_STACK (newdecl) |= DECL_NO_LIMIT_STACK (olddecl); } - - pop_obstacks (); } /* If cannot merge, then use the new type and qualifiers, and don't preserve the old rtl. */ @@ -2474,10 +2445,6 @@ implicitly_declare (functionid) /* Only one "implicit declaration" warning per identifier. */ int implicit_warning; - /* Save the decl permanently so we can warn if definition follows. */ - push_obstacks_nochange (); - end_temporary_allocation (); - /* We used to reuse an old implicit decl here, but this loses with inline functions because it can clobber the saved decl chains. */ @@ -2528,8 +2495,6 @@ implicitly_declare (functionid) gen_aux_info_record (decl, 0, 1, 0); - pop_obstacks (); - return decl; } @@ -3281,10 +3246,6 @@ groktypename_in_parm_context (typename) do go through here. Structure field declarations are done by grokfield and not through here. */ -/* Set this to zero to debug not using the temporary obstack - to parse initializers. */ -int debug_temp_inits = 1; - tree start_decl (declarator, declspecs, initialized, attributes, prefix_attributes) tree declarator, declspecs; @@ -3294,10 +3255,6 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes) register tree decl = grokdeclarator (declarator, declspecs, NORMAL, initialized); register tree tem; - int init_written = initialized; - - /* The corresponding pop_obstacks is in finish_decl. */ - push_obstacks_nochange (); if (warn_main > 0 && TREE_CODE (decl) != FUNCTION_DECL && !strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), "main")) @@ -3420,14 +3377,6 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes) expand_decl (tem); } - if (init_written) - { - /* When parsing and digesting the initializer, - use temporary storage. Do this even if we will ignore the value. */ - if (current_binding_level == global_binding_level && debug_temp_inits) - temporary_allocation (); - } - return tem; } @@ -3443,7 +3392,6 @@ finish_decl (decl, init, asmspec_tree) { register tree type = TREE_TYPE (decl); int was_incomplete = (DECL_SIZE (decl) == 0); - int temporary = allocation_temporary_p (); char *asmspec = 0; /* If a name was specified, get the string. */ @@ -3478,16 +3426,6 @@ finish_decl (decl, init, asmspec_tree) } } - /* Pop back to the obstack that is current for this binding level. - This is because MAXINDEX, rtl, etc. to be made below - must go in the permanent obstack. But don't discard the - temporary data yet. */ - pop_obstacks (); -#if 0 /* pop_obstacks was near the end; this is what was here. */ - if (current_binding_level == global_binding_level && temporary) - end_temporary_allocation (); -#endif - /* Deduce size of array from initialization, if not already known */ if (TREE_CODE (type) == ARRAY_TYPE @@ -3590,28 +3528,12 @@ finish_decl (decl, init, asmspec_tree) if (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL) { - if ((flag_traditional || TREE_PERMANENT (decl)) - && allocation_temporary_p ()) - { - push_obstacks_nochange (); - end_temporary_allocation (); - /* This is a no-op in c-lang.c or something real in objc-actions.c. */ - maybe_objc_check_decl (decl); - rest_of_decl_compilation (decl, asmspec, - (DECL_CONTEXT (decl) == 0 - || TREE_ASM_WRITTEN (decl)), - 0); - pop_obstacks (); - } - else - { - /* This is a no-op in c-lang.c or something real in objc-actions.c. */ - maybe_objc_check_decl (decl); - rest_of_decl_compilation (decl, asmspec, - (DECL_CONTEXT (decl) == 0 - || TREE_ASM_WRITTEN (decl)), - 0); - } + /* This is a no-op in c-lang.c or something real in objc-actions.c. */ + maybe_objc_check_decl (decl); + rest_of_decl_compilation (decl, asmspec, + (DECL_CONTEXT (decl) == 0 + || TREE_ASM_WRITTEN (decl)), 0); + if (DECL_CONTEXT (decl) != 0) { /* Recompute the RTL of a local array now @@ -3636,51 +3558,7 @@ finish_decl (decl, init, asmspec_tree) { /* This is a no-op in c-lang.c or something real in objc-actions.c. */ maybe_objc_check_decl (decl); - rest_of_decl_compilation (decl, NULL_PTR, DECL_CONTEXT (decl) == 0, - 0); - } - - /* ??? After 2.3, test (init != 0) instead of TREE_CODE. */ - /* This test used to include TREE_PERMANENT, however, we have the same - problem with initializers at the function level. Such initializers get - saved until the end of the function on the momentary_obstack. */ - if (!(TREE_CODE (decl) == FUNCTION_DECL && DECL_INLINE (decl)) - && temporary - /* DECL_INITIAL is not defined in PARM_DECLs, since it shares - space with DECL_ARG_TYPE. */ - && TREE_CODE (decl) != PARM_DECL) - { - /* We need to remember that this array HAD an initialization, - but discard the actual temporary nodes, - since we can't have a permanent node keep pointing to them. */ - /* We make an exception for inline functions, since it's - normal for a local extern redeclaration of an inline function - to have a copy of the top-level decl's DECL_INLINE. */ - if (DECL_INITIAL (decl) != 0 && DECL_INITIAL (decl) != error_mark_node) - { - /* If this is a const variable, then preserve the - initializer instead of discarding it so that we can optimize - references to it. */ - /* This test used to include TREE_STATIC, but this won't be set - for function level initializers. */ - if (TREE_READONLY (decl) || ITERATOR_P (decl)) - { - preserve_initializer (); - /* Hack? Set the permanent bit for something that is permanent, - but not on the permanent obstack, so as to convince - output_constant_def to make its rtl on the permanent - obstack. */ - TREE_PERMANENT (DECL_INITIAL (decl)) = 1; - - /* The initializer and DECL must have the same (or equivalent - types), but if the initializer is a STRING_CST, its type - might not be on the right obstack, so copy the type - of DECL. */ - TREE_TYPE (DECL_INITIAL (decl)) = type; - } - else - DECL_INITIAL (decl) = error_mark_node; - } + rest_of_decl_compilation (decl, NULL_PTR, DECL_CONTEXT (decl) == 0, 0); } /* If requested, warn about definitions of large data objects. */ @@ -3700,18 +3578,6 @@ finish_decl (decl, init, asmspec_tree) } } -#if 0 - /* Resume permanent allocation, if not within a function. */ - /* The corresponding push_obstacks_nochange is in start_decl, - and in push_parm_decl and in grokfield. */ - pop_obstacks (); -#endif - - /* If we have gone back from temporary to permanent allocation, - actually free the temporary space that we no longer need. */ - if (temporary && !allocation_temporary_p ()) - permanent_allocation (0); - /* At the end of a declaration, throw away any variable type sizes of types defined inside that declaration. There is no use computing them in the following function definition. */ @@ -3744,9 +3610,6 @@ push_parm_decl (parm) /* Don't try computing parm sizes now -- wait till fn is called. */ immediate_size_expand = 0; - /* The corresponding pop_obstacks is in finish_decl. */ - push_obstacks_nochange (); - decl = grokdeclarator (TREE_VALUE (TREE_PURPOSE (parm)), TREE_PURPOSE (TREE_PURPOSE (parm)), PARM, 0); decl_attributes (decl, TREE_VALUE (TREE_VALUE (parm)), @@ -3915,11 +3778,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) if (decl_context == FUNCDEF) funcdef_flag = 1, decl_context = NORMAL; - push_obstacks_nochange (); - - if (flag_traditional && allocation_temporary_p ()) - end_temporary_allocation (); - /* Look inside a declarator for the name being declared and get it as a string, for an error message. */ { @@ -4055,7 +3913,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) | (1 << (int) RID_UNSIGNED)))) /* Don't warn about typedef foo = bar. */ && ! (specbits & (1 << (int) RID_TYPEDEF) && initialized) - && ! (in_system_header && ! allocation_temporary_p ())) + && ! in_system_header) { /* Issue a warning if this is an ISO C 9x program or if -Wreturn-type and this is a function, or if -Wimplicit; prefer the former @@ -4339,8 +4197,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) { register tree itype = NULL_TREE; register tree size = TREE_OPERAND (declarator, 1); - /* An uninitialized decl with `extern' is a reference. */ - int extern_ref = !initialized && (specbits & (1 << (int) RID_EXTERN)); /* The index is a signed object `sizetype' bits wide. */ tree index_type = signed_type (sizetype); @@ -4366,12 +4222,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) if (type == error_mark_node) continue; - /* If this is a block level extern, it must live past the end - of the function so that we can check it against other extern - declarations (IDENTIFIER_LIMBO_VALUE). */ - if (extern_ref && allocation_temporary_p ()) - end_temporary_allocation (); - /* If size was specified, set ITYPE to a range-type for that size. Otherwise, ITYPE remains null. finish_decl may figure it out from an initial value. */ @@ -4476,8 +4326,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) } else if (TREE_CODE (declarator) == CALL_EXPR) { - int extern_ref = (!(specbits & (1 << (int) RID_AUTO)) - || current_binding_level == global_binding_level); tree arg_types; /* Declaring a function type. @@ -4507,12 +4355,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) type = double_type_node; #endif /* TRADITIONAL_RETURN_FLOAT */ - /* If this is a block level extern, it must live past the end - of the function so that we can check it against other extern - declarations (IDENTIFIER_LIMBO_VALUE). */ - if (extern_ref && allocation_temporary_p ()) - end_temporary_allocation (); - /* Construct the function type and go to the next inner layer of declarator. */ @@ -4522,17 +4364,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) only for the CALL_EXPR closest to the identifier. */ && TREE_CODE (TREE_OPERAND (declarator, 0)) == IDENTIFIER_NODE); -#if 0 /* This seems to be false. We turn off temporary allocation - above in this function if -traditional. - And this code caused inconsistent results with prototypes: - callers would ignore them, and pass arguments wrong. */ - - /* Omit the arg types if -traditional, since the arg types - and the list links might not be permanent. */ - type = build_function_type (type, - flag_traditional - ? NULL_TREE : arg_types); -#endif /* Type qualifiers before the return type of the function qualify the return type, not the function type. */ if (type_quals) @@ -4642,7 +4473,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) if ((specbits & (1 << (int) RID_SIGNED)) || (typedef_decl && C_TYPEDEF_EXPLICITLY_SIGNED (typedef_decl))) C_TYPEDEF_EXPLICITLY_SIGNED (decl) = 1; - pop_obstacks (); return decl; } @@ -4673,7 +4503,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) pedwarn ("ANSI C forbids const or volatile function types"); if (type_quals) type = c_build_qualified_type (type, type_quals); - pop_obstacks (); return type; } @@ -4800,12 +4629,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) && pedantic) pedwarn ("invalid storage class for function `%s'", name); - /* If this is a block level extern, it must live past the end - of the function so that we can check it against other - extern declarations (IDENTIFIER_LIMBO_VALUE). */ - if (extern_ref && allocation_temporary_p ()) - end_temporary_allocation (); - decl = build_decl (FUNCTION_DECL, declarator, type); decl = build_decl_attribute_variant (decl, decl_machine_attr); @@ -4860,12 +4683,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) #endif } - /* If this is a block level extern, it must live past the end - of the function so that we can check it against other - extern declarations (IDENTIFIER_LIMBO_VALUE). */ - if (extern_ref && allocation_temporary_p ()) - end_temporary_allocation (); - decl = build_decl (VAR_DECL, declarator, type); if (size_varies) C_DECL_VARIABLE_SIZE (decl) = 1; @@ -4911,8 +4728,6 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) if (C_TYPE_FIELDS_VOLATILE (TREE_TYPE (decl))) mark_addressable (decl); - pop_obstacks (); - return decl; } } @@ -5015,19 +4830,6 @@ grokparms (parms_info, funcdef_flag) typelt = TREE_CHAIN (typelt); } - /* Allocate the list of types the way we allocate a type. */ - if (first_parm && ! TREE_PERMANENT (first_parm)) - { - /* Construct a copy of the list of types - on the saveable obstack. */ - tree result = NULL; - for (typelt = first_parm; typelt; typelt = TREE_CHAIN (typelt)) - result = saveable_tree_cons (NULL_TREE, TREE_VALUE (typelt), - result); - return nreverse (result); - } - else - /* The list we have is permanent already. */ return first_parm; } } @@ -5062,8 +4864,8 @@ get_parm_info (void_at_end) { parms = NULL_TREE; storedecls (NULL_TREE); - return saveable_tree_cons (NULL_TREE, NULL_TREE, - saveable_tree_cons (NULL_TREE, void_type_node, NULL_TREE)); + return tree_cons (NULL_TREE, NULL_TREE, + tree_cons (NULL_TREE, void_type_node, NULL_TREE)); } /* Extract enumerator values and other non-parms declared with the parms. @@ -5117,7 +4919,7 @@ get_parm_info (void_at_end) && TYPE_PRECISION (type) < TYPE_PRECISION (integer_type_node)) DECL_ARG_TYPE (decl) = integer_type_node; - types = saveable_tree_cons (NULL_TREE, TREE_TYPE (decl), types); + types = tree_cons (NULL_TREE, TREE_TYPE (decl), types); if (TYPE_MAIN_VARIANT (TREE_VALUE (types)) == void_type_node && ! erred && DECL_NAME (decl) == 0) { @@ -5127,10 +4929,10 @@ get_parm_info (void_at_end) } if (void_at_end) - return saveable_tree_cons (new_parms, tags, - nreverse (saveable_tree_cons (NULL_TREE, void_type_node, types))); + return tree_cons (new_parms, tags, + nreverse (tree_cons (NULL_TREE, void_type_node, types))); - return saveable_tree_cons (new_parms, tags, nreverse (types)); + return tree_cons (new_parms, tags, nreverse (types)); } /* At end of parameter list, warn about any struct, union or enum tags @@ -5177,8 +4979,6 @@ xref_tag (code, name) enum tree_code code; tree name; { - int temporary = allocation_temporary_p (); - /* If a cross reference is requested, look up the type already defined for this tag and return it. */ @@ -5190,11 +4990,6 @@ xref_tag (code, name) if (ref) return ref; - push_obstacks_nochange (); - - if (current_binding_level == global_binding_level && temporary) - end_temporary_allocation (); - /* If no such tag is yet defined, create a forward-reference node and record it as the "definition". When a real declaration of this type is found, @@ -5218,17 +5013,12 @@ xref_tag (code, name) pushtag (name, ref); - pop_obstacks (); - return ref; } /* Make sure that the tag NAME is defined *in the current binding level* at least as a forward reference. - CODE says which kind of tag NAME ought to be. - - We also do a push_obstacks_nochange - whose matching pop is in finish_struct. */ + CODE says which kind of tag NAME ought to be. */ tree start_struct (code, name) @@ -5240,10 +5030,6 @@ start_struct (code, name) register tree ref = 0; - push_obstacks_nochange (); - if (current_binding_level == global_binding_level) - end_temporary_allocation (); - if (name != 0) ref = lookup_tag (code, name, current_binding_level, 1); if (ref && TREE_CODE (ref) == code) @@ -5283,9 +5069,6 @@ grokfield (filename, line, declarator, declspecs, width) { tree value; - /* The corresponding pop_obstacks is in finish_decl. */ - push_obstacks_nochange (); - value = grokdeclarator (declarator, declspecs, width ? BITFIELD : FIELD, 0); finish_decl (value, NULL_TREE, NULL_TREE); @@ -5297,9 +5080,7 @@ grokfield (filename, line, declarator, declspecs, width) /* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T. FIELDLIST is a chain of FIELD_DECL nodes for the fields. - ATTRIBUTES are attributes to be applied to the structure. - - We also do a pop_obstacks to match the push in start_struct. */ + ATTRIBUTES are attributes to be applied to the structure. */ tree finish_struct (t, fieldlist, attributes) @@ -5308,7 +5089,6 @@ finish_struct (t, fieldlist, attributes) tree attributes; { register tree x; - int old_momentary; int toplevel = global_binding_level == current_binding_level; /* If this type was previously laid out as a forward reference, @@ -5331,8 +5111,6 @@ finish_struct (t, fieldlist, attributes) TREE_CODE (t) == UNION_TYPE ? "union" : "structure"); } - old_momentary = suspend_momentary (); - if (pedantic) { for (x = fieldlist; x; x = TREE_CHAIN (x)) @@ -5576,14 +5354,9 @@ finish_struct (t, fieldlist, attributes) } } - resume_momentary (old_momentary); - /* Finish debugging output for this type. */ rest_of_type_compilation (t, toplevel); - /* The matching push is in start_struct. */ - pop_obstacks (); - return t; } @@ -5617,12 +5390,6 @@ start_enum (name) if (name != 0) enumtype = lookup_tag (ENUMERAL_TYPE, name, current_binding_level, 1); - /* The corresponding pop_obstacks is in finish_enum. */ - push_obstacks_nochange (); - /* If these symbols and types are global, make them permanent. */ - if (current_binding_level == global_binding_level) - end_temporary_allocation (); - if (enumtype == 0 || TREE_CODE (enumtype) != ENUMERAL_TYPE) { enumtype = make_node (ENUMERAL_TYPE); @@ -5756,9 +5523,6 @@ finish_enum (enumtype, values, attributes) /* Finish debugging output for this type. */ rest_of_type_compilation (enumtype, toplevel); - /* This matches a push in start_enum. */ - pop_obstacks (); - return enumtype; } @@ -5828,7 +5592,7 @@ build_enumerator (name, value) TREE_TYPE (value) = type; pushdecl (decl); - return saveable_tree_cons (decl, value, NULL_TREE); + return tree_cons (decl, value, NULL_TREE); } /* Create the FUNCTION_DECL for a function definition. @@ -5841,14 +5605,11 @@ build_enumerator (name, value) Returns 1 on success. If the DECLARATOR is not suitable for a function (it defines a datum instead), we return 0, which tells - yyparse to report a parse error. - - NESTED is nonzero for a function nested within another function. */ + yyparse to report a parse error. */ int -start_function (declspecs, declarator, prefix_attributes, attributes, nested) +start_function (declspecs, declarator, prefix_attributes, attributes) tree declarator, declspecs, prefix_attributes, attributes; - int nested; { tree decl1, old_decl; tree restype; @@ -6060,11 +5821,6 @@ start_function (declspecs, declarator, prefix_attributes, attributes, nested) DECL_RESULT (current_function_decl) = build_decl (RESULT_DECL, NULL_TREE, restype); - if (!nested) - /* Allocate further tree nodes temporarily during compilation - of this function only. */ - temporary_allocation (); - /* If this fcn was already referenced via a block-scope `extern' decl (or an implicit decl), propagate certain information about the usage. */ if (TREE_ADDRESSABLE (DECL_ASSEMBLER_NAME (current_function_decl))) @@ -6428,15 +6184,14 @@ store_parm_decls () for (parm = DECL_ARGUMENTS (fndecl); parm; parm = TREE_CHAIN (parm)) { - type = perm_tree_cons (NULL_TREE, DECL_ARG_TYPE (parm), - NULL_TREE); + type = tree_cons (NULL_TREE, DECL_ARG_TYPE (parm), NULL_TREE); if (last) TREE_CHAIN (last) = type; else actual = type; last = type; } - type = perm_tree_cons (NULL_TREE, void_type_node, NULL_TREE); + type = tree_cons (NULL_TREE, void_type_node, NULL_TREE); if (last) TREE_CHAIN (last) = type; else @@ -6639,17 +6394,15 @@ combine_parm_decls (specparms, parmlist, void_at_end) last = TREE_PURPOSE (parm); TREE_CHAIN (last) = 0; - types = saveable_tree_cons (NULL_TREE, TREE_TYPE (parm), types); + types = tree_cons (NULL_TREE, TREE_TYPE (parm), types); } } if (void_at_end) - return saveable_tree_cons (parmdecls, nonparms, - nreverse (saveable_tree_cons (NULL_TREE, - void_type_node, - types))); + return tree_cons (parmdecls, nonparms, + nreverse (tree_cons (NULL_TREE, void_type_node, types))); - return saveable_tree_cons (parmdecls, nonparms, nreverse (types)); + return tree_cons (parmdecls, nonparms, nreverse (types)); } /* Finish up a function declaration and compile that function @@ -6711,14 +6464,14 @@ finish_function (nested) /* If this is a nested function, protect the local variables in the stack above us from being collected while we're compiling this function. */ - if (ggc_p && nested) + if (nested) ggc_push_context (); /* Run the optimizers and output the assembler code for this function. */ rest_of_compilation (fndecl); /* Undo the GC context switch. */ - if (ggc_p && nested) + if (nested) ggc_pop_context (); current_function_returns_null |= can_reach_end; @@ -6767,12 +6520,6 @@ finish_function (nested) } } - /* Free all the tree nodes making up this function. */ - /* Switch back to allocating nodes permanently - until we start another function. */ - if (! nested) - permanent_allocation (1); - if (DECL_SAVED_INSNS (fndecl) == 0 && ! nested) { /* Stop pointing to the local nodes about to be freed. */ @@ -6789,7 +6536,7 @@ finish_function (nested) { #ifndef ASM_OUTPUT_CONSTRUCTOR if (! flag_gnu_linker) - static_ctors = perm_tree_cons (NULL_TREE, fndecl, static_ctors); + static_ctors = tree_cons (NULL_TREE, fndecl, static_ctors); else #endif assemble_constructor (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl))); @@ -6799,7 +6546,7 @@ finish_function (nested) { #ifndef ASM_OUTPUT_DESTRUCTOR if (! flag_gnu_linker) - static_dtors = perm_tree_cons (NULL_TREE, fndecl, static_dtors); + static_dtors = tree_cons (NULL_TREE, fndecl, static_dtors); else #endif assemble_destructor (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (fndecl))); diff --git a/gcc/c-lang.c b/gcc/c-lang.c index 6f90a59..be1acde 100644 --- a/gcc/c-lang.c +++ b/gcc/c-lang.c @@ -194,7 +194,7 @@ finish_file () tree_cons (NULL_TREE, NULL_TREE, void_list_node_1), NULL_TREE), - NULL_TREE, NULL_TREE, 0); + NULL_TREE, NULL_TREE); fnname = DECL_ASSEMBLER_NAME (current_function_decl); store_parm_decls (); @@ -216,7 +216,7 @@ finish_file () tree_cons (NULL_TREE, NULL_TREE, void_list_node_1), NULL_TREE), - NULL_TREE, NULL_TREE, 0); + NULL_TREE, NULL_TREE); fnname = DECL_ASSEMBLER_NAME (current_function_decl); store_parm_decls (); diff --git a/gcc/c-lex.c b/gcc/c-lex.c index b9d2793..a69aa07 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -759,14 +759,7 @@ linenum: goto skipline; } - if (! ggc_p && !TREE_PERMANENT (yylval.ttype)) - { - input_filename - = (char *) permalloc (TREE_STRING_LENGTH (yylval.ttype) + 1); - strcpy (input_filename, TREE_STRING_POINTER (yylval.ttype)); - } - else - input_filename = TREE_STRING_POINTER (yylval.ttype); + input_filename = TREE_STRING_POINTER (yylval.ttype); if (main_input_filename == 0) main_input_filename = input_filename; diff --git a/gcc/c-parse.c b/gcc/c-parse.c index e4b1f39..d1259ee 100644 --- a/gcc/c-parse.c +++ b/gcc/c-parse.c @@ -1,7 +1,6 @@ /* A Bison parser, made from c-parse.y - by GNU Bison version 1.27 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -382,46 +381,46 @@ static const short yyrhs[] = { -1, #if YYDEBUG != 0 static const short yyrline[] = { 0, 234, 239, 253, 255, 255, 256, 258, 260, 261, 269, - 273, 284, 289, 294, 296, 298, 299, 300, 305, 312, - 314, 319, 324, 330, 332, 337, 342, 348, 350, 355, - 362, 364, 367, 369, 371, 373, 375, 377, 379, 383, - 387, 390, 393, 396, 400, 402, 405, 408, 412, 440, - 446, 449, 452, 455, 457, 459, 463, 467, 471, 473, - 476, 480, 507, 509, 511, 513, 515, 517, 519, 521, - 523, 525, 527, 529, 531, 533, 537, 539, 543, 545, - 548, 552, 554, 561, 564, 572, 583, 682, 683, 685, - 691, 693, 716, 725, 727, 729, 733, 739, 741, 746, - 748, 756, 758, 759, 769, 774, 776, 777, 778, 785, - 791, 796, 799, 807, 812, 814, 815, 816, 823, 834, - 838, 844, 849, 854, 859, 861, 863, 872, 875, 879, - 881, 883, 888, 892, 895, 899, 902, 904, 916, 919, - 921, 923, 927, 931, 933, 936, 949, 952, 956, 958, - 966, 967, 968, 972, 974, 980, 981, 982, 985, 987, - 990, 992, 995, 998, 1004, 1011, 1013, 1020, 1027, 1030, - 1037, 1040, 1044, 1047, 1051, 1056, 1059, 1063, 1066, 1068, - 1070, 1072, 1079, 1081, 1082, 1083, 1088, 1090, 1095, 1103, - 1108, 1112, 1115, 1117, 1122, 1124, 1125, 1128, 1128, 1131, - 1134, 1136, 1138, 1141, 1143, 1146, 1152, 1154, 1158, 1172, - 1180, 1184, 1198, 1206, 1213, 1215, 1220, 1223, 1228, 1230, - 1232, 1239, 1241, 1249, 1255, 1260, 1262, 1264, 1271, 1273, - 1279, 1285, 1287, 1289, 1294, 1296, 1303, 1305, 1308, 1311, - 1315, 1318, 1322, 1325, 1329, 1334, 1336, 1340, 1342, 1344, - 1346, 1350, 1352, 1355, 1358, 1361, 1364, 1368, 1370, 1373, - 1375, 1380, 1383, 1388, 1390, 1392, 1406, 1413, 1427, 1433, - 1438, 1440, 1445, 1447, 1451, 1455, 1459, 1469, 1471, 1476, - 1481, 1484, 1488, 1491, 1495, 1498, 1501, 1504, 1508, 1511, - 1515, 1519, 1521, 1523, 1525, 1527, 1529, 1531, 1533, 1537, - 1545, 1553, 1555, 1557, 1561, 1563, 1566, 1569, 1580, 1582, - 1587, 1589, 1592, 1606, 1609, 1612, 1614, 1616, 1624, 1632, - 1642, 1660, 1665, 1670, 1673, 1687, 1696, 1700, 1704, 1708, - 1714, 1718, 1723, 1726, 1731, 1734, 1735, 1752, 1757, 1760, - 1772, 1774, 1784, 1794, 1795, 1803, 1806, 1818, 1822, 1839, - 1849, 1858, 1863, 1868, 1873, 1877, 1881, 1892, 1899, 1906, - 1913, 1924, 1930, 1933, 1938, 1961, 1995, 2026, 2057, 2072, - 2086, 2090, 2094, 2097, 2102, 2104, 2107, 2109, 2113, 2118, - 2121, 2127, 2132, 2137, 2139, 2148, 2149, 2155, 2157, 2167, - 2169, 2173, 2176, 2182, 2192, 2201, 2210, 2220, 2234, 2239, - 2244, 2246, 2255, 2258, 2263, 2266, 2270 + 273, 283, 287, 291, 293, 295, 296, 297, 302, 309, + 311, 315, 319, 325, 327, 331, 335, 341, 343, 347, + 353, 355, 358, 360, 362, 364, 366, 368, 370, 374, + 378, 381, 384, 387, 391, 393, 396, 399, 403, 431, + 437, 440, 443, 446, 448, 450, 454, 458, 462, 464, + 467, 471, 498, 500, 502, 504, 506, 508, 510, 512, + 514, 516, 518, 520, 522, 524, 528, 530, 534, 536, + 539, 543, 545, 552, 555, 563, 574, 673, 674, 676, + 682, 684, 707, 716, 718, 720, 724, 730, 732, 737, + 739, 747, 749, 750, 760, 765, 767, 768, 769, 776, + 781, 785, 788, 796, 801, 803, 804, 805, 812, 822, + 826, 831, 835, 839, 843, 845, 847, 856, 859, 863, + 865, 867, 872, 876, 879, 883, 886, 888, 900, 903, + 905, 907, 911, 915, 917, 920, 933, 936, 940, 942, + 950, 951, 952, 956, 958, 964, 965, 966, 969, 971, + 974, 976, 979, 982, 988, 995, 997, 1004, 1011, 1014, + 1021, 1024, 1028, 1031, 1035, 1040, 1043, 1047, 1050, 1052, + 1054, 1056, 1063, 1065, 1066, 1067, 1072, 1074, 1076, 1078, + 1083, 1087, 1090, 1092, 1097, 1099, 1100, 1103, 1103, 1106, + 1109, 1111, 1113, 1116, 1118, 1121, 1127, 1129, 1133, 1147, + 1155, 1159, 1173, 1181, 1188, 1190, 1195, 1198, 1203, 1205, + 1207, 1214, 1216, 1224, 1230, 1235, 1237, 1239, 1246, 1248, + 1254, 1260, 1262, 1264, 1269, 1271, 1278, 1280, 1283, 1286, + 1290, 1293, 1297, 1300, 1304, 1309, 1311, 1315, 1317, 1319, + 1321, 1325, 1327, 1329, 1332, 1334, 1337, 1341, 1343, 1346, + 1348, 1353, 1356, 1361, 1363, 1365, 1379, 1385, 1398, 1403, + 1408, 1410, 1415, 1417, 1421, 1425, 1429, 1439, 1441, 1446, + 1451, 1454, 1458, 1461, 1465, 1468, 1471, 1474, 1478, 1481, + 1485, 1489, 1491, 1493, 1495, 1497, 1499, 1501, 1503, 1507, + 1515, 1523, 1525, 1527, 1531, 1533, 1536, 1539, 1549, 1551, + 1556, 1558, 1561, 1575, 1578, 1581, 1583, 1585, 1589, 1593, + 1599, 1617, 1622, 1627, 1630, 1644, 1653, 1657, 1661, 1665, + 1671, 1675, 1680, 1683, 1688, 1691, 1692, 1708, 1713, 1716, + 1728, 1730, 1740, 1750, 1751, 1758, 1760, 1772, 1776, 1790, + 1796, 1802, 1803, 1808, 1813, 1817, 1821, 1832, 1839, 1846, + 1853, 1864, 1870, 1873, 1878, 1901, 1931, 1962, 1993, 2008, + 2022, 2026, 2030, 2033, 2038, 2040, 2043, 2045, 2049, 2054, + 2057, 2063, 2068, 2073, 2075, 2084, 2085, 2091, 2093, 2103, + 2105, 2109, 2112, 2118, 2127, 2135, 2143, 2152, 2165, 2170, + 2175, 2177, 2186, 2189, 2194, 2197, 2201 }; #endif @@ -1266,8 +1265,8 @@ static const short yycheck[] = { 38, 51, 52, 53, 54 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/bison.simple" -/* This file comes from bison-1.27. */ +#line 3 "/usr/share/misc/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -1480,7 +1479,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 216 "/usr/share/bison.simple" +#line 217 "/usr/share/misc/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -1856,174 +1855,165 @@ case 11: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 12: -#line 285 "c-parse.y" +#line 284 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 13: -#line 290 "c-parse.y" +#line 288 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 14: -#line 295 "c-parse.y" +#line 292 "c-parse.y" { pedwarn ("empty declaration"); ; break;} case 15: -#line 297 "c-parse.y" +#line 294 "c-parse.y" { shadow_tag (yyvsp[-1].ttype); ; break;} case 18: -#line 301 "c-parse.y" +#line 298 "c-parse.y" { if (pedantic) pedwarn ("ANSI C does not allow extra `;' outside of a function"); ; break;} case 19: -#line 307 "c-parse.y" +#line 304 "c-parse.y" { if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); ; break;} case 20: -#line 312 "c-parse.y" +#line 309 "c-parse.y" { store_parm_decls (); ; break;} case 21: -#line 314 "c-parse.y" +#line 311 "c-parse.y" { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-5].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 22: -#line 320 "c-parse.y" +#line 316 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 23: -#line 325 "c-parse.y" +#line 320 "c-parse.y" { if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); ; break;} case 24: -#line 330 "c-parse.y" +#line 325 "c-parse.y" { store_parm_decls (); ; break;} case 25: -#line 332 "c-parse.y" +#line 327 "c-parse.y" { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-5].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 26: -#line 338 "c-parse.y" +#line 332 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 27: -#line 343 "c-parse.y" +#line 336 "c-parse.y" { if (! start_function (NULL_TREE, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); ; break;} case 28: -#line 348 "c-parse.y" +#line 341 "c-parse.y" { store_parm_decls (); ; break;} case 29: -#line 350 "c-parse.y" +#line 343 "c-parse.y" { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-5].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 30: -#line 356 "c-parse.y" +#line 348 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 33: -#line 368 "c-parse.y" +#line 359 "c-parse.y" { yyval.code = ADDR_EXPR; ; break;} case 34: -#line 370 "c-parse.y" +#line 361 "c-parse.y" { yyval.code = NEGATE_EXPR; ; break;} case 35: -#line 372 "c-parse.y" +#line 363 "c-parse.y" { yyval.code = CONVERT_EXPR; ; break;} case 36: -#line 374 "c-parse.y" +#line 365 "c-parse.y" { yyval.code = PREINCREMENT_EXPR; ; break;} case 37: -#line 376 "c-parse.y" +#line 367 "c-parse.y" { yyval.code = PREDECREMENT_EXPR; ; break;} case 38: -#line 378 "c-parse.y" +#line 369 "c-parse.y" { yyval.code = BIT_NOT_EXPR; ; break;} case 39: -#line 380 "c-parse.y" +#line 371 "c-parse.y" { yyval.code = TRUTH_NOT_EXPR; ; break;} case 40: -#line 384 "c-parse.y" +#line 375 "c-parse.y" { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ; break;} case 41: -#line 389 "c-parse.y" +#line 380 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 43: -#line 395 "c-parse.y" +#line 386 "c-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 44: -#line 397 "c-parse.y" +#line 388 "c-parse.y" { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 46: -#line 403 "c-parse.y" +#line 394 "c-parse.y" { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ; break;} case 47: -#line 406 "c-parse.y" +#line 397 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 48: -#line 409 "c-parse.y" +#line 400 "c-parse.y" { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0); overflow_warning (yyval.ttype); ; break;} case 49: -#line 413 "c-parse.y" +#line 404 "c-parse.y" { tree label = lookup_label (yyvsp[0].ttype); if (pedantic) pedwarn ("ANSI C forbids `&&'"); @@ -2038,7 +2028,7 @@ case 49: ; break;} case 50: -#line 441 "c-parse.y" +#line 432 "c-parse.y" { skip_evaluation--; if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1))) @@ -2046,53 +2036,53 @@ case 50: yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ; break;} case 51: -#line 447 "c-parse.y" +#line 438 "c-parse.y" { skip_evaluation--; yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ; break;} case 52: -#line 450 "c-parse.y" +#line 441 "c-parse.y" { skip_evaluation--; yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ; break;} case 53: -#line 453 "c-parse.y" +#line 444 "c-parse.y" { skip_evaluation--; yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ; break;} case 54: -#line 456 "c-parse.y" +#line 447 "c-parse.y" { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ; break;} case 55: -#line 458 "c-parse.y" +#line 449 "c-parse.y" { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ; break;} case 56: -#line 460 "c-parse.y" +#line 451 "c-parse.y" { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ; break;} case 57: -#line 464 "c-parse.y" +#line 455 "c-parse.y" { skip_evaluation++; ; break;} case 58: -#line 468 "c-parse.y" +#line 459 "c-parse.y" { skip_evaluation++; ; break;} case 60: -#line 474 "c-parse.y" +#line 465 "c-parse.y" { tree type = groktypename (yyvsp[-2].ttype); yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ; break;} case 61: -#line 477 "c-parse.y" +#line 468 "c-parse.y" { start_init (NULL_TREE, NULL, 0); yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype); really_start_incremental_init (yyvsp[-2].ttype); ; break;} case 62: -#line 481 "c-parse.y" +#line 472 "c-parse.y" { const char *name; tree result = pop_init_level (0); tree type = yyvsp[-5].ttype; @@ -2119,90 +2109,90 @@ case 62: ; break;} case 64: -#line 510 "c-parse.y" +#line 501 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 65: -#line 512 "c-parse.y" +#line 503 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 66: -#line 514 "c-parse.y" +#line 505 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 67: -#line 516 "c-parse.y" +#line 507 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 68: -#line 518 "c-parse.y" +#line 509 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 69: -#line 520 "c-parse.y" +#line 511 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 70: -#line 522 "c-parse.y" +#line 513 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 71: -#line 524 "c-parse.y" +#line 515 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 72: -#line 526 "c-parse.y" +#line 517 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 73: -#line 528 "c-parse.y" +#line 519 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 74: -#line 530 "c-parse.y" +#line 521 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 75: -#line 532 "c-parse.y" +#line 523 "c-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 76: -#line 534 "c-parse.y" +#line 525 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} case 77: -#line 537 "c-parse.y" +#line 528 "c-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node; yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 78: -#line 540 "c-parse.y" +#line 531 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} case 79: -#line 543 "c-parse.y" +#line 534 "c-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node; yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 80: -#line 546 "c-parse.y" +#line 537 "c-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} case 81: -#line 549 "c-parse.y" +#line 540 "c-parse.y" { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node) - (yyvsp[-4].ttype == boolean_false_node)); ; break;} case 82: -#line 552 "c-parse.y" +#line 543 "c-parse.y" { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 83: -#line 555 "c-parse.y" +#line 546 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids omitting the middle term of a ?: expression"); /* Make sure first operand is calculated only once. */ @@ -2211,12 +2201,12 @@ case 83: skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} case 84: -#line 562 "c-parse.y" +#line 553 "c-parse.y" { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 85: -#line 565 "c-parse.y" +#line 556 "c-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype)); @@ -2226,7 +2216,7 @@ case 85: ; break;} case 86: -#line 573 "c-parse.y" +#line 564 "c-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); /* This inhibits warnings in truthvalue_conversion. */ @@ -2237,7 +2227,7 @@ case 86: ; break;} case 87: -#line 585 "c-parse.y" +#line 576 "c-parse.y" { yyval.ttype = lastiddecl; if (!yyval.ttype || yyval.ttype == error_mark_node) @@ -2337,11 +2327,11 @@ case 87: ; break;} case 89: -#line 684 "c-parse.y" +#line 675 "c-parse.y" { yyval.ttype = combine_strings (yyvsp[0].ttype); ; break;} case 90: -#line 686 "c-parse.y" +#line 677 "c-parse.y" { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)); if (class == 'e' || class == '1' || class == '2' || class == '<') @@ -2349,11 +2339,11 @@ case 90: yyval.ttype = yyvsp[-1].ttype; ; break;} case 91: -#line 692 "c-parse.y" +#line 683 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} case 92: -#line 694 "c-parse.y" +#line 685 "c-parse.y" { tree rtl_exp; if (pedantic) pedwarn ("ANSI C forbids braced-groups within expressions"); @@ -2378,7 +2368,7 @@ case 92: ; break;} case 93: -#line 717 "c-parse.y" +#line 708 "c-parse.y" { /* Make sure we call expand_end_stmt_expr. Otherwise we are likely to lose sequences and crash later. */ @@ -2389,21 +2379,21 @@ case 93: ; break;} case 94: -#line 726 "c-parse.y" +#line 717 "c-parse.y" { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 95: -#line 728 "c-parse.y" +#line 719 "c-parse.y" { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 96: -#line 730 "c-parse.y" +#line 721 "c-parse.y" { yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 97: -#line 734 "c-parse.y" +#line 725 "c-parse.y" { tree expr = build_indirect_ref (yyvsp[-2].ttype, "->"); @@ -2411,61 +2401,58 @@ case 97: ; break;} case 98: -#line 740 "c-parse.y" +#line 731 "c-parse.y" { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} case 99: -#line 742 "c-parse.y" +#line 733 "c-parse.y" { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} case 101: -#line 749 "c-parse.y" +#line 740 "c-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); if (warn_traditional && !in_system_header) warning ("Use of ANSI string concatenation"); ; break;} case 104: -#line 761 "c-parse.y" +#line 752 "c-parse.y" { c_mark_varargs (); if (pedantic) pedwarn ("ANSI C does not permit use of `varargs.h'"); ; break;} case 105: -#line 771 "c-parse.y" +#line 762 "c-parse.y" { ; break;} case 110: -#line 787 "c-parse.y" +#line 778 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 111: -#line 792 "c-parse.y" +#line 782 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 112: -#line 797 "c-parse.y" +#line 786 "c-parse.y" { shadow_tag_warned (yyvsp[-1].ttype, 1); pedwarn ("empty declaration"); ; break;} case 113: -#line 800 "c-parse.y" +#line 789 "c-parse.y" { pedwarn ("empty declaration"); ; break;} case 114: -#line 809 "c-parse.y" +#line 798 "c-parse.y" { ; break;} case 119: -#line 824 "c-parse.y" -{ yyval.itype = suspend_momentary (); - pending_xref_error (); +#line 813 "c-parse.y" +{ pending_xref_error (); declspec_stack = tree_cons (prefix_attributes, current_declspecs, declspec_stack); @@ -2473,131 +2460,127 @@ case 119: ¤t_declspecs, &prefix_attributes); ; break;} case 120: -#line 835 "c-parse.y" +#line 823 "c-parse.y" { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ; break;} case 121: -#line 840 "c-parse.y" +#line 828 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 122: -#line 845 "c-parse.y" +#line 832 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 123: -#line 850 "c-parse.y" +#line 836 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 124: -#line 855 "c-parse.y" +#line 840 "c-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 125: -#line 860 "c-parse.y" +#line 844 "c-parse.y" { shadow_tag (yyvsp[-1].ttype); ; break;} case 126: -#line 862 "c-parse.y" +#line 846 "c-parse.y" { pedwarn ("empty declaration"); ; break;} case 127: -#line 864 "c-parse.y" +#line 848 "c-parse.y" { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 128: -#line 874 "c-parse.y" +#line 858 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 129: -#line 876 "c-parse.y" +#line 860 "c-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; break;} case 130: -#line 880 "c-parse.y" +#line 864 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 131: -#line 882 "c-parse.y" +#line 866 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 132: -#line 884 "c-parse.y" +#line 868 "c-parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 133: -#line 889 "c-parse.y" +#line 873 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 134: -#line 894 "c-parse.y" +#line 878 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 135: -#line 896 "c-parse.y" +#line 880 "c-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; break;} case 136: -#line 901 "c-parse.y" +#line 885 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 137: -#line 903 "c-parse.y" +#line 887 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 138: -#line 905 "c-parse.y" +#line 889 "c-parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 139: -#line 918 "c-parse.y" +#line 902 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 140: -#line 920 "c-parse.y" +#line 904 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; break;} case 141: -#line 922 "c-parse.y" +#line 906 "c-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 142: -#line 924 "c-parse.y" +#line 908 "c-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 143: -#line 929 "c-parse.y" +#line 913 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 1; ; break;} case 144: -#line 932 "c-parse.y" +#line 916 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 145: -#line 934 "c-parse.y" +#line 918 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 146: -#line 937 "c-parse.y" +#line 921 "c-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); @@ -2605,190 +2588,182 @@ case 146: TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 147: -#line 951 "c-parse.y" +#line 935 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 148: -#line 953 "c-parse.y" +#line 937 "c-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; break;} case 149: -#line 957 "c-parse.y" +#line 941 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 150: -#line 959 "c-parse.y" +#line 943 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 153: -#line 969 "c-parse.y" +#line 953 "c-parse.y" { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ yyval.ttype = lookup_name (yyvsp[0].ttype); ; break;} case 154: -#line 973 "c-parse.y" +#line 957 "c-parse.y" { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ; break;} case 155: -#line 975 "c-parse.y" +#line 959 "c-parse.y" { yyval.ttype = groktypename (yyvsp[-1].ttype); ; break;} case 163: -#line 997 "c-parse.y" +#line 981 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 164: -#line 999 "c-parse.y" +#line 983 "c-parse.y" { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 165: -#line 1006 "c-parse.y" +#line 990 "c-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, yyvsp[-1].ttype, prefix_attributes); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} case 166: -#line 1011 "c-parse.y" +#line 995 "c-parse.y" { finish_init (); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} case 167: -#line 1014 "c-parse.y" +#line 998 "c-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, yyvsp[0].ttype, prefix_attributes); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} case 168: -#line 1022 "c-parse.y" +#line 1006 "c-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, yyvsp[-1].ttype, prefix_attributes); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} case 169: -#line 1027 "c-parse.y" +#line 1011 "c-parse.y" { finish_init (); decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} case 170: -#line 1031 "c-parse.y" +#line 1015 "c-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, yyvsp[0].ttype, prefix_attributes); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} case 171: -#line 1039 "c-parse.y" +#line 1023 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 172: -#line 1041 "c-parse.y" +#line 1025 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 173: -#line 1046 "c-parse.y" +#line 1030 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 174: -#line 1048 "c-parse.y" +#line 1032 "c-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 175: -#line 1053 "c-parse.y" +#line 1037 "c-parse.y" { yyval.ttype = yyvsp[-2].ttype; ; break;} case 176: -#line 1058 "c-parse.y" +#line 1042 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 177: -#line 1060 "c-parse.y" +#line 1044 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 178: -#line 1065 "c-parse.y" +#line 1049 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 179: -#line 1067 "c-parse.y" +#line 1051 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; break;} case 180: -#line 1069 "c-parse.y" +#line 1053 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; break;} case 181: -#line 1071 "c-parse.y" +#line 1055 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; break;} case 182: -#line 1073 "c-parse.y" +#line 1057 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 188: -#line 1091 "c-parse.y" -{ really_start_incremental_init (NULL_TREE); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); ; +#line 1075 "c-parse.y" +{ really_start_incremental_init (NULL_TREE); ; break;} case 189: -#line 1096 "c-parse.y" -{ yyval.ttype = pop_init_level (0); - if (yyval.ttype == error_mark_node - && ! (yychar == STRING || yychar == CONSTANT)) - pop_momentary (); - else - pop_momentary_nofree (); ; +#line 1077 "c-parse.y" +{ yyval.ttype = pop_init_level (0); ; break;} case 190: -#line 1104 "c-parse.y" +#line 1079 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} case 191: -#line 1110 "c-parse.y" +#line 1085 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids empty initializer braces"); ; break;} case 197: -#line 1126 "c-parse.y" +#line 1101 "c-parse.y" { set_init_label (yyvsp[-1].ttype); ; break;} case 200: -#line 1133 "c-parse.y" +#line 1108 "c-parse.y" { push_init_level (0); ; break;} case 201: -#line 1135 "c-parse.y" +#line 1110 "c-parse.y" { process_init_element (pop_init_level (0)); ; break;} case 202: -#line 1137 "c-parse.y" +#line 1112 "c-parse.y" { process_init_element (yyvsp[0].ttype); ; break;} case 206: -#line 1148 "c-parse.y" +#line 1123 "c-parse.y" { set_init_label (yyvsp[0].ttype); ; break;} case 207: -#line 1153 "c-parse.y" +#line 1128 "c-parse.y" { set_init_index (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 208: -#line 1155 "c-parse.y" +#line 1130 "c-parse.y" { set_init_index (yyvsp[-1].ttype, NULL_TREE); ; break;} case 209: -#line 1160 "c-parse.y" +#line 1135 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids nested functions"); push_function_context (); if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -2796,22 +2771,22 @@ case 209: reinit_parse_for_function (); ; break;} case 210: -#line 1172 "c-parse.y" +#line 1147 "c-parse.y" { store_parm_decls (); ; break;} case 211: -#line 1180 "c-parse.y" +#line 1155 "c-parse.y" { finish_function (1); pop_function_context (); ; break;} case 212: -#line 1186 "c-parse.y" +#line 1161 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids nested functions"); push_function_context (); if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -2819,219 +2794,216 @@ case 212: reinit_parse_for_function (); ; break;} case 213: -#line 1198 "c-parse.y" +#line 1173 "c-parse.y" { store_parm_decls (); ; break;} case 214: -#line 1206 "c-parse.y" +#line 1181 "c-parse.y" { finish_function (1); pop_function_context (); ; break;} case 217: -#line 1222 "c-parse.y" +#line 1197 "c-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 218: -#line 1224 "c-parse.y" +#line 1199 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 219: -#line 1229 "c-parse.y" +#line 1204 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 220: -#line 1231 "c-parse.y" +#line 1206 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 221: -#line 1233 "c-parse.y" +#line 1208 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 222: -#line 1240 "c-parse.y" +#line 1215 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 224: -#line 1251 "c-parse.y" +#line 1226 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 225: -#line 1256 "c-parse.y" +#line 1231 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE); if (! flag_isoc9x) error ("`[*]' in parameter declaration only allowed in ISO C 9x"); ; break;} case 226: -#line 1261 "c-parse.y" +#line 1236 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 227: -#line 1263 "c-parse.y" +#line 1238 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 228: -#line 1265 "c-parse.y" +#line 1240 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 229: -#line 1272 "c-parse.y" +#line 1247 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 231: -#line 1281 "c-parse.y" +#line 1256 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 232: -#line 1286 "c-parse.y" +#line 1261 "c-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 233: -#line 1288 "c-parse.y" +#line 1263 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 234: -#line 1290 "c-parse.y" +#line 1265 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, NULL_TREE); if (! flag_isoc9x) error ("`[*]' in parameter declaration only allowed in ISO C 9x"); ; break;} case 235: -#line 1295 "c-parse.y" +#line 1270 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 236: -#line 1297 "c-parse.y" +#line 1272 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 237: -#line 1304 "c-parse.y" +#line 1279 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 239: -#line 1310 "c-parse.y" +#line 1285 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 240: -#line 1312 "c-parse.y" +#line 1287 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 241: -#line 1317 "c-parse.y" +#line 1292 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 242: -#line 1319 "c-parse.y" +#line 1294 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 243: -#line 1324 "c-parse.y" +#line 1299 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 244: -#line 1326 "c-parse.y" +#line 1301 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 245: -#line 1331 "c-parse.y" +#line 1306 "c-parse.y" { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype); /* Start scope of tag before parsing components. */ ; break;} case 246: -#line 1335 "c-parse.y" +#line 1310 "c-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} case 247: -#line 1337 "c-parse.y" +#line 1312 "c-parse.y" { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} case 248: -#line 1341 "c-parse.y" +#line 1316 "c-parse.y" { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ; break;} case 249: -#line 1343 "c-parse.y" +#line 1318 "c-parse.y" { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ; break;} case 250: -#line 1345 "c-parse.y" +#line 1320 "c-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} case 251: -#line 1347 "c-parse.y" +#line 1322 "c-parse.y" { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} case 252: -#line 1351 "c-parse.y" +#line 1326 "c-parse.y" { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ; break;} case 253: -#line 1353 "c-parse.y" -{ yyvsp[0].itype = suspend_momentary (); - yyval.ttype = start_enum (yyvsp[-1].ttype); ; +#line 1328 "c-parse.y" +{ yyval.ttype = start_enum (yyvsp[-1].ttype); ; break;} case 254: -#line 1356 "c-parse.y" -{ yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); - resume_momentary (yyvsp[-5].itype); ; +#line 1330 "c-parse.y" +{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), + chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ; break;} case 255: -#line 1359 "c-parse.y" -{ yyvsp[0].itype = suspend_momentary (); - yyval.ttype = start_enum (NULL_TREE); ; +#line 1333 "c-parse.y" +{ yyval.ttype = start_enum (NULL_TREE); ; break;} case 256: -#line 1362 "c-parse.y" -{ yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); - resume_momentary (yyvsp[-5].itype); ; +#line 1335 "c-parse.y" +{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), + chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} case 257: -#line 1365 "c-parse.y" +#line 1338 "c-parse.y" { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ; break;} case 261: -#line 1376 "c-parse.y" +#line 1349 "c-parse.y" { if (pedantic && ! flag_isoc9x) pedwarn ("comma at end of enumerator list"); ; break;} case 262: -#line 1382 "c-parse.y" +#line 1355 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 263: -#line 1384 "c-parse.y" +#line 1357 "c-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); pedwarn ("no semicolon at end of struct or union"); ; break;} case 264: -#line 1389 "c-parse.y" +#line 1362 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 265: -#line 1391 "c-parse.y" +#line 1364 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 266: -#line 1393 "c-parse.y" +#line 1366 "c-parse.y" { if (pedantic) pedwarn ("extra semicolon in struct or union specified"); ; break;} case 267: -#line 1408 "c-parse.y" +#line 1381 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 268: -#line 1414 "c-parse.y" +#line 1386 "c-parse.y" { /* Support for unnamed structs or unions as members of structs or unions (which is [a] useful and [b] supports @@ -3043,170 +3015,167 @@ case 268: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-3].itype); ; break;} case 269: -#line 1428 "c-parse.y" +#line 1399 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 270: -#line 1434 "c-parse.y" +#line 1404 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids member declarations with no members"); shadow_tag(yyvsp[0].ttype); yyval.ttype = NULL_TREE; ; break;} case 271: -#line 1439 "c-parse.y" +#line 1409 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 272: -#line 1441 "c-parse.y" +#line 1411 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 274: -#line 1448 "c-parse.y" +#line 1418 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 275: -#line 1453 "c-parse.y" +#line 1423 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 276: -#line 1457 "c-parse.y" +#line 1427 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 277: -#line 1460 "c-parse.y" +#line 1430 "c-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 279: -#line 1472 "c-parse.y" +#line 1442 "c-parse.y" { if (yyvsp[-2].ttype == error_mark_node) yyval.ttype = yyvsp[-2].ttype; else yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ; break;} case 280: -#line 1477 "c-parse.y" +#line 1447 "c-parse.y" { yyval.ttype = error_mark_node; ; break;} case 281: -#line 1483 "c-parse.y" +#line 1453 "c-parse.y" { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ; break;} case 282: -#line 1485 "c-parse.y" +#line 1455 "c-parse.y" { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 283: -#line 1490 "c-parse.y" +#line 1460 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 284: -#line 1492 "c-parse.y" +#line 1462 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 285: -#line 1497 "c-parse.y" +#line 1467 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 287: -#line 1503 "c-parse.y" +#line 1473 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 288: -#line 1505 "c-parse.y" +#line 1475 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 289: -#line 1510 "c-parse.y" +#line 1480 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 290: -#line 1512 "c-parse.y" +#line 1482 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 291: -#line 1517 "c-parse.y" +#line 1487 "c-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 292: -#line 1520 "c-parse.y" +#line 1490 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 293: -#line 1522 "c-parse.y" +#line 1492 "c-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 294: -#line 1524 "c-parse.y" +#line 1494 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 295: -#line 1526 "c-parse.y" +#line 1496 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 296: -#line 1528 "c-parse.y" +#line 1498 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 297: -#line 1530 "c-parse.y" +#line 1500 "c-parse.y" { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 298: -#line 1532 "c-parse.y" +#line 1502 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} case 299: -#line 1534 "c-parse.y" +#line 1504 "c-parse.y" { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} case 300: -#line 1538 "c-parse.y" +#line 1508 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 301: -#line 1547 "c-parse.y" +#line 1517 "c-parse.y" { if (pedantic && yyvsp[0].ends_in_label) pedwarn ("ANSI C forbids label at end of compound statement"); ; break;} case 303: -#line 1556 "c-parse.y" +#line 1526 "c-parse.y" { yyval.ends_in_label = yyvsp[0].ends_in_label; ; break;} case 304: -#line 1558 "c-parse.y" +#line 1528 "c-parse.y" { yyval.ends_in_label = 0; ; break;} case 308: -#line 1570 "c-parse.y" +#line 1540 "c-parse.y" { emit_line_note (input_filename, lineno); pushlevel (0); clear_last_expr (); - push_momentary (); expand_start_bindings (0); ; break;} case 310: -#line 1583 "c-parse.y" +#line 1552 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids label declarations"); ; break;} case 313: -#line 1594 "c-parse.y" +#line 1563 "c-parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -3217,49 +3186,37 @@ case 313: ; break;} case 314: -#line 1608 "c-parse.y" +#line 1577 "c-parse.y" {; break;} case 316: -#line 1612 "c-parse.y" +#line 1581 "c-parse.y" { compstmt_count++; ; break;} case 317: -#line 1615 "c-parse.y" +#line 1584 "c-parse.y" { yyval.ttype = convert (void_type_node, integer_zero_node); ; break;} case 318: -#line 1617 "c-parse.y" +#line 1586 "c-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); - yyval.ttype = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; + yyval.ttype = poplevel (1, 1, 0); ; break;} case 319: -#line 1625 "c-parse.y" +#line 1590 "c-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - yyval.ttype = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; + yyval.ttype = poplevel (kept_level_p (), 0, 0); ; break;} case 320: -#line 1633 "c-parse.y" +#line 1594 "c-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - yyval.ttype = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; + yyval.ttype = poplevel (kept_level_p (), 0, 0); ; break;} case 321: -#line 1644 "c-parse.y" +#line 1601 "c-parse.y" { if (current_function_decl == 0) { error ("braced-group within expression allowed only inside a function"); @@ -3277,11 +3234,11 @@ case 321: ; break;} case 322: -#line 1661 "c-parse.y" +#line 1618 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 325: -#line 1675 "c-parse.y" +#line 1632 "c-parse.y" { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, compstmt_count); @@ -3291,7 +3248,7 @@ case 325: position_after_white_space (); ; break;} case 326: -#line 1689 "c-parse.y" +#line 1646 "c-parse.y" { stmt_count++; compstmt_count++; emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); @@ -3301,43 +3258,43 @@ case 326: position_after_white_space (); ; break;} case 327: -#line 1697 "c-parse.y" +#line 1654 "c-parse.y" { expand_loop_continue_here (); ; break;} case 328: -#line 1701 "c-parse.y" +#line 1658 "c-parse.y" { yyval.filename = input_filename; ; break;} case 329: -#line 1705 "c-parse.y" +#line 1662 "c-parse.y" { yyval.lineno = lineno; ; break;} case 330: -#line 1710 "c-parse.y" +#line 1667 "c-parse.y" { ; break;} case 331: -#line 1715 "c-parse.y" +#line 1672 "c-parse.y" { ; break;} case 332: -#line 1720 "c-parse.y" +#line 1677 "c-parse.y" { yyval.ends_in_label = yyvsp[0].ends_in_label; ; break;} case 333: -#line 1725 "c-parse.y" +#line 1682 "c-parse.y" { yyval.ends_in_label = 0; ; break;} case 334: -#line 1727 "c-parse.y" +#line 1684 "c-parse.y" { yyval.ends_in_label = 1; ; break;} case 335: -#line 1733 "c-parse.y" +#line 1690 "c-parse.y" { stmt_count++; ; break;} case 337: -#line 1736 "c-parse.y" +#line 1693 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); /* It appears that this should not be done--that a non-lvalue array @@ -3352,23 +3309,22 @@ case 337: || TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == FUNCTION_TYPE) yyvsp[-1].ttype = default_conversion (yyvsp[-1].ttype); #endif - iterator_expand (yyvsp[-1].ttype); - clear_momentary (); ; + iterator_expand (yyvsp[-1].ttype); ; break;} case 338: -#line 1753 "c-parse.y" +#line 1709 "c-parse.y" { c_expand_start_else (); yyvsp[-1].itype = stmt_count; position_after_white_space (); ; break;} case 339: -#line 1757 "c-parse.y" +#line 1713 "c-parse.y" { c_expand_end_cond (); if (extra_warnings && stmt_count == yyvsp[-3].itype) warning ("empty body in an else-statement"); ; break;} case 340: -#line 1761 "c-parse.y" +#line 1717 "c-parse.y" { c_expand_end_cond (); /* This warning is here instead of in simple_if, because we do not want a warning if an empty if is followed by an @@ -3379,11 +3335,11 @@ case 340: "empty body in an if-statement"); ; break;} case 341: -#line 1773 "c-parse.y" +#line 1729 "c-parse.y" { c_expand_end_cond (); ; break;} case 342: -#line 1775 "c-parse.y" +#line 1731 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); /* The emit_nop used to come before emit_line_note, @@ -3395,7 +3351,7 @@ case 342: emit_nop (); ; break;} case 343: -#line 1785 "c-parse.y" +#line 1741 "c-parse.y" { /* Don't start the loop till we have succeeded in parsing the end test. This is to make sure that we end every loop we start. */ @@ -3406,24 +3362,22 @@ case 343: position_after_white_space (); ; break;} case 344: -#line 1794 "c-parse.y" +#line 1750 "c-parse.y" { expand_end_loop (); ; break;} case 345: -#line 1797 "c-parse.y" +#line 1753 "c-parse.y" { emit_line_note (input_filename, lineno); expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion (yyvsp[-2].ttype)); - expand_end_loop (); - clear_momentary (); ; + expand_end_loop (); ; break;} case 346: -#line 1804 "c-parse.y" -{ expand_end_loop (); - clear_momentary (); ; +#line 1759 "c-parse.y" +{ expand_end_loop (); ; break;} case 347: -#line 1808 "c-parse.y" +#line 1762 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); /* See comment in `while' alternative, above. */ @@ -3436,12 +3390,12 @@ case 347: ; break;} case 348: -#line 1820 "c-parse.y" +#line 1774 "c-parse.y" { yyvsp[0].lineno = lineno; yyval.filename = input_filename; ; break;} case 349: -#line 1823 "c-parse.y" +#line 1777 "c-parse.y" { /* Start the loop. Doing this after parsing all the expressions ensures we will end the loop. */ @@ -3451,72 +3405,58 @@ case 349: if (yyvsp[-4].ttype) expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion (yyvsp[-4].ttype)); - /* Don't let the tree nodes for $9 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); yyvsp[-3].lineno = lineno; yyvsp[-2].filename = input_filename; position_after_white_space (); ; break;} case 350: -#line 1839 "c-parse.y" +#line 1790 "c-parse.y" { /* Emit the increment expression, with a line number. */ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno); expand_loop_continue_here (); if (yyvsp[-3].ttype) c_expand_expr_stmt (yyvsp[-3].ttype); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); expand_end_loop (); ; break;} case 351: -#line 1850 "c-parse.y" +#line 1797 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); c_expand_start_case (yyvsp[-1].ttype); - /* Don't let the tree nodes for $3 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); position_after_white_space (); ; break;} case 352: -#line 1858 "c-parse.y" -{ expand_end_case (yyvsp[-3].ttype); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; +#line 1802 "c-parse.y" +{ expand_end_case (yyvsp[-3].ttype); ; break;} case 353: -#line 1864 "c-parse.y" +#line 1804 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); if ( ! expand_exit_something ()) error ("break statement not within loop or switch"); ; break;} case 354: -#line 1869 "c-parse.y" +#line 1809 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); if (! expand_continue_loop (NULL_PTR)) error ("continue statement not within a loop"); ; break;} case 355: -#line 1874 "c-parse.y" +#line 1814 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); c_expand_return (NULL_TREE); ; break;} case 356: -#line 1878 "c-parse.y" +#line 1818 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); c_expand_return (yyvsp[-1].ttype); ; break;} case 357: -#line 1882 "c-parse.y" +#line 1822 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno); STRIP_NOPS (yyvsp[-2].ttype); @@ -3528,7 +3468,7 @@ case 357: error ("argument of `asm' is not a constant string"); ; break;} case 358: -#line 1893 "c-parse.y" +#line 1833 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno); c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, @@ -3536,7 +3476,7 @@ case 358: input_filename, lineno); ; break;} case 359: -#line 1900 "c-parse.y" +#line 1840 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno); c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, @@ -3544,7 +3484,7 @@ case 359: input_filename, lineno); ; break;} case 360: -#line 1908 "c-parse.y" +#line 1848 "c-parse.y" { stmt_count++; emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno); c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, @@ -3552,7 +3492,7 @@ case 360: input_filename, lineno); ; break;} case 361: -#line 1914 "c-parse.y" +#line 1854 "c-parse.y" { tree decl; stmt_count++; emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); @@ -3565,7 +3505,7 @@ case 361: ; break;} case 362: -#line 1925 "c-parse.y" +#line 1865 "c-parse.y" { if (pedantic) pedwarn ("ANSI C forbids `goto *expr;'"); stmt_count++; @@ -3573,7 +3513,7 @@ case 362: expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ; break;} case 365: -#line 1940 "c-parse.y" +#line 1880 "c-parse.y" { /* The value returned by this action is */ /* 1 if everything is OK */ @@ -3596,14 +3536,14 @@ case 365: ; break;} case 366: -#line 1961 "c-parse.y" +#line 1901 "c-parse.y" { if (yyvsp[-1].itype) iterator_for_loop_end (yyvsp[-3].ttype); ; break;} case 367: -#line 1996 "c-parse.y" +#line 1932 "c-parse.y" { register tree value = check_case_value (yyvsp[-1].ttype); register tree label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); @@ -3636,7 +3576,7 @@ case 367: position_after_white_space (); ; break;} case 368: -#line 2027 "c-parse.y" +#line 1963 "c-parse.y" { register tree value1 = check_case_value (yyvsp[-3].ttype); register tree value2 = check_case_value (yyvsp[-1].ttype); register tree label @@ -3669,7 +3609,7 @@ case 368: position_after_white_space (); ; break;} case 369: -#line 2058 "c-parse.y" +#line 1994 "c-parse.y" { tree duplicate; register tree label @@ -3686,7 +3626,7 @@ case 369: position_after_white_space (); ; break;} case 370: -#line 2073 "c-parse.y" +#line 2009 "c-parse.y" { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype); stmt_count++; emit_nop (); @@ -3698,52 +3638,52 @@ case 370: position_after_white_space (); ; break;} case 371: -#line 2088 "c-parse.y" +#line 2024 "c-parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 372: -#line 2091 "c-parse.y" +#line 2027 "c-parse.y" { emit_line_note (input_filename, lineno); ; break;} case 373: -#line 2096 "c-parse.y" +#line 2032 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 375: -#line 2103 "c-parse.y" +#line 2039 "c-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 378: -#line 2110 "c-parse.y" +#line 2046 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 379: -#line 2115 "c-parse.y" +#line 2051 "c-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 380: -#line 2120 "c-parse.y" +#line 2056 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ; break;} case 381: -#line 2122 "c-parse.y" +#line 2058 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ; break;} case 382: -#line 2128 "c-parse.y" +#line 2064 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (0); ; break;} case 383: -#line 2132 "c-parse.y" +#line 2068 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} case 385: -#line 2140 "c-parse.y" +#line 2076 "c-parse.y" { tree parm; if (pedantic) pedwarn ("ANSI C forbids forward parameter declarations"); @@ -3753,19 +3693,19 @@ case 385: clear_parm_order (); ; break;} case 386: -#line 2148 "c-parse.y" +#line 2084 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 387: -#line 2150 "c-parse.y" +#line 2086 "c-parse.y" { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ; break;} case 388: -#line 2156 "c-parse.y" +#line 2092 "c-parse.y" { yyval.ttype = get_parm_info (0); ; break;} case 389: -#line 2158 "c-parse.y" +#line 2094 "c-parse.y" { yyval.ttype = get_parm_info (0); /* Gcc used to allow this as an extension. However, it does not work for all targets, and thus has been disabled. @@ -3777,90 +3717,85 @@ case 389: ; break;} case 390: -#line 2168 "c-parse.y" +#line 2104 "c-parse.y" { yyval.ttype = get_parm_info (1); ; break;} case 391: -#line 2170 "c-parse.y" +#line 2106 "c-parse.y" { yyval.ttype = get_parm_info (0); ; break;} case 392: -#line 2175 "c-parse.y" +#line 2111 "c-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 393: -#line 2177 "c-parse.y" +#line 2113 "c-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 394: -#line 2184 "c-parse.y" +#line 2120 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 395: -#line 2193 "c-parse.y" +#line 2128 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 396: -#line 2202 "c-parse.y" +#line 2136 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 397: -#line 2211 "c-parse.y" +#line 2144 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 398: -#line 2221 "c-parse.y" +#line 2153 "c-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 399: -#line 2235 "c-parse.y" +#line 2166 "c-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (1); ; break;} case 400: -#line 2239 "c-parse.y" +#line 2170 "c-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} case 402: -#line 2247 "c-parse.y" +#line 2178 "c-parse.y" { tree t; for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t)) if (TREE_VALUE (t) == NULL_TREE) @@ -3868,30 +3803,30 @@ case 402: yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ; break;} case 403: -#line 2257 "c-parse.y" +#line 2188 "c-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 404: -#line 2259 "c-parse.y" +#line 2190 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 405: -#line 2265 "c-parse.y" +#line 2196 "c-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 406: -#line 2267 "c-parse.y" +#line 2198 "c-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 407: -#line 2272 "c-parse.y" +#line 2203 "c-parse.y" { yyval.ttype = SAVE_WARN_FLAGS(); pedantic = 0; warn_pointer_arith = 0; ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 542 "/usr/share/bison.simple" +#line 543 "/usr/share/misc/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -4111,5 +4046,5 @@ yyerrhandle: } return 1; } -#line 2277 "c-parse.y" +#line 2208 "c-parse.y" diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 80ed5c3..e5f876a 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -320,18 +320,15 @@ datadef: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods ';' { pedwarn ("empty declaration"); } | typed_declspecs ';' @@ -346,7 +343,7 @@ datadef: fndef: typed_declspecs setspecs declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -355,16 +352,14 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -373,16 +368,14 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator { if (! start_function (NULL_TREE, $2, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -391,13 +384,11 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } ; identifier: @@ -943,13 +934,11 @@ datadecl: typed_declspecs_no_prefix_attr setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods_no_prefix_attr setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs_no_prefix_attr ';' { shadow_tag_warned ($1, 1); pedwarn ("empty declaration"); } @@ -978,8 +967,7 @@ decls: Maintains a stack of outer-level values of current_declspecs, for the sake of parm declarations nested in function declarators. */ setspecs: /* empty */ - { $$ = suspend_momentary (); - pending_xref_error (); + { pending_xref_error (); declspec_stack = tree_cons (prefix_attributes, current_declspecs, declspec_stack); @@ -996,23 +984,19 @@ decl: typed_declspecs setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs nested_function { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_nested_function { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs ';' { shadow_tag ($1); } | declmods ';' @@ -1256,18 +1240,9 @@ any_word: init: expr_no_commas | '{' - { really_start_incremental_init (NULL_TREE); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); } + { really_start_incremental_init (NULL_TREE); } initlist_maybe_comma '}' - { $$ = pop_init_level (0); - if ($$ == error_mark_node - && ! (yychar == STRING || yychar == CONSTANT)) - pop_momentary (); - else - pop_momentary_nofree (); } - + { $$ = pop_init_level (0); } | error { $$ = error_mark_node; } ; @@ -1332,7 +1307,7 @@ nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -1358,7 +1333,7 @@ notype_nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -1527,17 +1502,15 @@ structsp: | union_head identifier { $$ = xref_tag (UNION_TYPE, $2); } | enum_head identifier '{' - { $3 = suspend_momentary (); - $$ = start_enum ($2); } + { $$ = start_enum ($2); } enumlist maybecomma_warn '}' maybe_attribute - { $$= finish_enum ($4, nreverse ($5), chainon ($1, $8)); - resume_momentary ($3); } + { $$ = finish_enum ($4, nreverse ($5), + chainon ($1, $8)); } | enum_head '{' - { $2 = suspend_momentary (); - $$ = start_enum (NULL_TREE); } + { $$ = start_enum (NULL_TREE); } enumlist maybecomma_warn '}' maybe_attribute - { $$= finish_enum ($3, nreverse ($4), chainon ($1, $7)); - resume_momentary ($2); } + { $$ = finish_enum ($3, nreverse ($4), + chainon ($1, $7)); } | enum_head identifier { $$ = xref_tag (ENUMERAL_TYPE, $2); } ; @@ -1601,8 +1574,7 @@ component_decl: { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_typespecs setspecs save_filename save_lineno maybe_attribute { /* Support for unnamed structs or unions as members of @@ -1615,14 +1587,12 @@ component_decl: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } | nonempty_type_quals setspecs components { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | nonempty_type_quals { if (pedantic) pedwarn ("ANSI C forbids member declarations with no members"); @@ -1763,7 +1733,6 @@ pushlevel: /* empty */ { emit_line_note (input_filename, lineno); pushlevel (0); clear_last_expr (); - push_momentary (); expand_start_bindings (0); ifobjc if (objc_method_context) @@ -1813,27 +1782,15 @@ compstmt_nostart: '}' | pushlevel maybe_label_decls decls xstmts '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); - $$ = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (1, 1, 0); } | pushlevel maybe_label_decls error '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - $$ = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (kept_level_p (), 0, 0); } | pushlevel maybe_label_decls stmts '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - $$ = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (kept_level_p (), 0, 0); } ; compstmt_primary_start: @@ -1944,8 +1901,7 @@ stmt: || TREE_CODE (TREE_TYPE ($1)) == FUNCTION_TYPE) $1 = default_conversion ($1); #endif - iterator_expand ($1); - clear_momentary (); } + iterator_expand ($1); } | simple_if ELSE { c_expand_start_else (); $1 = stmt_count; @@ -1994,12 +1950,10 @@ stmt: { emit_line_note (input_filename, lineno); expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion ($3)); - expand_end_loop (); - clear_momentary (); } + expand_end_loop (); } /* This rule is needed to make sure we end every loop we start. */ | do_stmt_start error - { expand_end_loop (); - clear_momentary (); } + { expand_end_loop (); } | FOR '(' xexpr ';' { stmt_count++; @@ -2026,9 +1980,6 @@ stmt: if ($6) expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion ($6)); - /* Don't let the tree nodes for $9 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); $7 = lineno; $8 = input_filename; position_after_white_space (); } @@ -2038,25 +1989,14 @@ stmt: expand_loop_continue_here (); if ($9) c_expand_expr_stmt ($9); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); expand_end_loop (); } | SWITCH '(' expr ')' { stmt_count++; emit_line_note ($-1, $0); c_expand_start_case ($3); - /* Don't let the tree nodes for $3 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); position_after_white_space (); } lineno_labeled_stmt - { expand_end_case ($3); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + { expand_end_case ($3); } | BREAK ';' { stmt_count++; emit_line_note ($-1, $0); @@ -2178,10 +2118,6 @@ all_iter_stmt_with_decl: emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); $$ = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } */ @@ -2384,8 +2320,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2393,8 +2328,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs absdcl maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2402,8 +2336,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2411,8 +2344,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs absdcl maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, @@ -2421,8 +2353,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } ; /* This is used in a function definition @@ -2708,14 +2639,12 @@ ivar_decl: { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | nonempty_type_quals setspecs ivars { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | error { $$ = NULL_TREE; } ; @@ -2902,8 +2831,7 @@ mydecl: typed_declspecs setspecs myparms ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs ';' { shadow_tag ($1); } | declmods ';' diff --git a/gcc/c-parse.y b/gcc/c-parse.y index 44fe723..11a8751 100644 --- a/gcc/c-parse.y +++ b/gcc/c-parse.y @@ -279,18 +279,15 @@ datadef: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods ';' { pedwarn ("empty declaration"); } | typed_declspecs ';' @@ -305,7 +302,7 @@ datadef: fndef: typed_declspecs setspecs declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -314,16 +311,14 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -332,16 +327,14 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator { if (! start_function (NULL_TREE, $2, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -350,13 +343,11 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } ; identifier: @@ -786,13 +777,11 @@ datadecl: typed_declspecs_no_prefix_attr setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods_no_prefix_attr setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs_no_prefix_attr ';' { shadow_tag_warned ($1, 1); pedwarn ("empty declaration"); } @@ -821,8 +810,7 @@ decls: Maintains a stack of outer-level values of current_declspecs, for the sake of parm declarations nested in function declarators. */ setspecs: /* empty */ - { $$ = suspend_momentary (); - pending_xref_error (); + { pending_xref_error (); declspec_stack = tree_cons (prefix_attributes, current_declspecs, declspec_stack); @@ -839,23 +827,19 @@ decl: typed_declspecs setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs nested_function { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_nested_function { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs ';' { shadow_tag ($1); } | declmods ';' @@ -1088,18 +1072,9 @@ any_word: init: expr_no_commas | '{' - { really_start_incremental_init (NULL_TREE); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); } + { really_start_incremental_init (NULL_TREE); } initlist_maybe_comma '}' - { $$ = pop_init_level (0); - if ($$ == error_mark_node - && ! (yychar == STRING || yychar == CONSTANT)) - pop_momentary (); - else - pop_momentary_nofree (); } - + { $$ = pop_init_level (0); } | error { $$ = error_mark_node; } ; @@ -1162,7 +1137,7 @@ nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -1188,7 +1163,7 @@ notype_nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -1350,17 +1325,15 @@ structsp: | union_head identifier { $$ = xref_tag (UNION_TYPE, $2); } | enum_head identifier '{' - { $3 = suspend_momentary (); - $$ = start_enum ($2); } + { $$ = start_enum ($2); } enumlist maybecomma_warn '}' maybe_attribute - { $$= finish_enum ($4, nreverse ($5), chainon ($1, $8)); - resume_momentary ($3); } + { $$ = finish_enum ($4, nreverse ($5), + chainon ($1, $8)); } | enum_head '{' - { $2 = suspend_momentary (); - $$ = start_enum (NULL_TREE); } + { $$ = start_enum (NULL_TREE); } enumlist maybecomma_warn '}' maybe_attribute - { $$= finish_enum ($3, nreverse ($4), chainon ($1, $7)); - resume_momentary ($2); } + { $$ = finish_enum ($3, nreverse ($4), + chainon ($1, $7)); } | enum_head identifier { $$ = xref_tag (ENUMERAL_TYPE, $2); } ; @@ -1408,8 +1381,7 @@ component_decl: { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_typespecs setspecs save_filename save_lineno maybe_attribute { /* Support for unnamed structs or unions as members of @@ -1422,14 +1394,12 @@ component_decl: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } | nonempty_type_quals setspecs components { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | nonempty_type_quals { if (pedantic) pedwarn ("ANSI C forbids member declarations with no members"); @@ -1570,7 +1540,6 @@ pushlevel: /* empty */ { emit_line_note (input_filename, lineno); pushlevel (0); clear_last_expr (); - push_momentary (); expand_start_bindings (0); } ; @@ -1616,27 +1585,15 @@ compstmt_nostart: '}' | pushlevel maybe_label_decls decls xstmts '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); - $$ = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (1, 1, 0); } | pushlevel maybe_label_decls error '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - $$ = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (kept_level_p (), 0, 0); } | pushlevel maybe_label_decls stmts '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - $$ = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (kept_level_p (), 0, 0); } ; compstmt_primary_start: @@ -1747,8 +1704,7 @@ stmt: || TREE_CODE (TREE_TYPE ($1)) == FUNCTION_TYPE) $1 = default_conversion ($1); #endif - iterator_expand ($1); - clear_momentary (); } + iterator_expand ($1); } | simple_if ELSE { c_expand_start_else (); $1 = stmt_count; @@ -1797,12 +1753,10 @@ stmt: { emit_line_note (input_filename, lineno); expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion ($3)); - expand_end_loop (); - clear_momentary (); } + expand_end_loop (); } /* This rule is needed to make sure we end every loop we start. */ | do_stmt_start error - { expand_end_loop (); - clear_momentary (); } + { expand_end_loop (); } | FOR '(' xexpr ';' { stmt_count++; @@ -1829,9 +1783,6 @@ stmt: if ($6) expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion ($6)); - /* Don't let the tree nodes for $9 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); $7 = lineno; $8 = input_filename; position_after_white_space (); } @@ -1841,25 +1792,14 @@ stmt: expand_loop_continue_here (); if ($9) c_expand_expr_stmt ($9); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); expand_end_loop (); } | SWITCH '(' expr ')' { stmt_count++; emit_line_note ($-1, $0); c_expand_start_case ($3); - /* Don't let the tree nodes for $3 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); position_after_white_space (); } lineno_labeled_stmt - { expand_end_case ($3); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + { expand_end_case ($3); } | BREAK ';' { stmt_count++; emit_line_note ($-1, $0); @@ -1981,10 +1921,6 @@ all_iter_stmt_with_decl: emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); $$ = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } */ @@ -2187,8 +2123,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2196,8 +2131,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs absdcl maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2205,8 +2139,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2214,8 +2147,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs absdcl maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, @@ -2224,8 +2156,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } ; /* This is used in a function definition diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index 5055b3f..2adfcc7 100644 --- a/gcc/c-pragma.c +++ b/gcc/c-pragma.c @@ -303,17 +303,8 @@ handle_pragma_token (string, token) #ifdef HANDLE_PRAGMA_WEAK case ps_weak: - name = permalloc (strlen (string) + 1); - if (name == NULL) - { - warning ("Out of memory parsing #pragma weak"); - state = ps_bad; - } - else - { - strcpy (name, string); - state = ps_name; - } + name = xstrdup (string); + state = ps_name; break; case ps_name: @@ -321,17 +312,8 @@ handle_pragma_token (string, token) break; case ps_equals: - value = permalloc (strlen (string) + 1); - if (value == NULL) - { - warning ("Out of memory parsing #pragma weak"); - state = ps_bad; - } - else - { - strcpy (value, string); - state = ps_value; - } + value = xstrdup (string); + state = ps_value; break; case ps_value: diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 5ffa65a..5744760 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -235,7 +235,7 @@ extern void shadow_tag PARAMS ((tree)); extern void shadow_tag_warned PARAMS ((tree, int)); extern tree start_enum PARAMS ((tree)); extern int start_function PARAMS ((tree, tree, tree, - tree, int)); + tree)); extern tree start_decl PARAMS ((tree, tree, int, tree, tree)); extern tree start_struct PARAMS ((enum tree_code, tree)); diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index f85931a..a424242 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA. */ #include "toplev.h" #include "intl.h" #include "defaults.h" +#include "ggc.h" /* Nonzero if we've already printed a "missing braces around initializer" message within this initializer. */ @@ -4825,7 +4826,8 @@ struct init_node /* Tree of pending elements at this constructor level. These are elements encountered out of order which belong at places we haven't reached yet in actually - writing the output. */ + writing the output. + Will never hold tree nodes across GC runs. */ static struct init_node *constructor_pending_elts; /* The SPELLING_DEPTH of this constructor. */ @@ -5099,19 +5101,10 @@ really_start_incremental_init (type) if (constructor_incremental) { - int momentary = suspend_momentary (); - push_obstacks_nochange (); - if (TREE_PERMANENT (constructor_decl)) - end_temporary_allocation (); make_decl_rtl (constructor_decl, constructor_asmspec, constructor_top_level); assemble_variable (constructor_decl, constructor_top_level, 0, 1); - pop_obstacks (); - resume_momentary (momentary); - } - if (constructor_incremental) - { defer_addressed_constants (); constructor_subconstants_deferred = 1; } @@ -5392,29 +5385,15 @@ pop_init_level (implicit) if (TREE_CODE (constructor_type) == ARRAY_TYPE && TYPE_DOMAIN (constructor_type) == 0) { - int failure; - int momentary_p; - - push_obstacks_nochange (); - if (TREE_PERMANENT (constructor_type)) - end_temporary_allocation (); - - momentary_p = suspend_momentary (); - /* We shouldn't have an incomplete array type within some other type. */ if (constructor_stack->next) abort (); - failure - = complete_array_type (constructor_type, - constructor, 0); - if (failure) + if (complete_array_type (constructor_type, constructor, 0)) abort (); size = int_size_in_bytes (constructor_type); - resume_momentary (momentary_p); - pop_obstacks (); } output_constant (constructor, size); @@ -5448,23 +5427,17 @@ pop_init_level (implicit) constructor = error_mark_node; else { - int momentary = suspend_momentary (); - constructor = build (CONSTRUCTOR, constructor_type, NULL_TREE, nreverse (constructor_elements)); if (constructor_constant) TREE_CONSTANT (constructor) = 1; if (constructor_constant && constructor_simple) TREE_STATIC (constructor) = 1; - - resume_momentary (momentary); } } else { tree filled; - int momentary = suspend_momentary (); - if (TREE_CODE (constructor_type) == RECORD_TYPE || TREE_CODE (constructor_type) == UNION_TYPE) { @@ -5485,9 +5458,6 @@ pop_init_level (implicit) constructor_unfilled_index, integer_one_node); - push_obstacks_nochange (); - if (TREE_PERMANENT (constructor_type)) - end_temporary_allocation (); maxindex = copy_node (maxindex); TYPE_DOMAIN (constructor_type) = build_index_type (maxindex); TREE_TYPE (maxindex) = TYPE_DOMAIN (constructor_type); @@ -5502,7 +5472,6 @@ pop_init_level (implicit) "zero or negative array size `%s'"); layout_type (constructor_type); size = int_size_in_bytes (constructor_type); - pop_obstacks (); } filled = size_binop (MULT_EXPR, constructor_unfilled_index, @@ -5513,8 +5482,6 @@ pop_init_level (implicit) if (filled != 0) assemble_zeros (size - TREE_INT_CST_LOW (filled)); - - resume_momentary (momentary); } @@ -5672,7 +5639,7 @@ add_pending_init (purpose, value) } } - r = (struct init_node *) oballoc (sizeof (struct init_node)); + r = (struct init_node *) ggc_alloc_obj (sizeof (struct init_node), 0); r->purpose = purpose; r->value = value; @@ -6550,12 +6517,6 @@ process_init_element (value) constructor_fields = 0; break; } - - /* If the (lexically) previous elments are not now saved, - we can discard the storage for them. */ - if (constructor_incremental && constructor_pending_elts == 0 && value != 0 - && constructor_stack == 0) - clear_momentary (); } /* Expand an ASM statement with operands, handling output operands diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 035cc2b..87ccf78 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -1022,11 +1022,8 @@ get_static_reference (interface, protocols) { tree t, m = TYPE_MAIN_VARIANT (type); - push_obstacks_nochange (); - end_temporary_allocation (); t = copy_node (type); TYPE_BINFO (t) = make_tree_vec (2); - pop_obstacks (); /* Add this type to the chain of variants of TYPE. */ TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (m); @@ -1072,11 +1069,8 @@ get_object_reference (protocols) { tree t, m = TYPE_MAIN_VARIANT (type); - push_obstacks_nochange (); - end_temporary_allocation (); t = copy_node (type); TYPE_BINFO (t) = make_tree_vec (2); - pop_obstacks (); /* Add this type to the chain of variants of TYPE. */ TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (m); @@ -1362,8 +1356,6 @@ build_objc_string_object (strings) if (! flag_next_runtime) { - push_obstacks_nochange (); - end_temporary_allocation (); if (! TREE_PERMANENT (strings)) string = my_build_string (length + 1, TREE_STRING_POINTER (string)); @@ -1382,7 +1374,6 @@ build_objc_string_object (strings) { constructor = objc_add_static_instance (constructor, constant_string_type); - pop_obstacks (); } return (build_unary_op (ADDR_EXPR, constructor, 1)); @@ -1398,9 +1389,6 @@ objc_add_static_instance (constructor, class_decl) tree *chain, decl; char buf[256]; - push_obstacks_nochange (); - end_temporary_allocation (); - /* Find the list of static instances for the CLASS_DECL. Create one if not found. */ for (chain = &objc_static_instances; @@ -1427,7 +1415,6 @@ objc_add_static_instance (constructor, class_decl) /* Add the DECL to the head of this CLASS' list. */ TREE_PURPOSE (*chain) = tree_cons (NULL_TREE, decl, TREE_PURPOSE (*chain)); - pop_obstacks (); return decl; } @@ -1805,7 +1792,7 @@ build_module_descriptor () tree_cons (NULL_TREE, NULL_TREE, void_list_node_1), NULL_TREE), - NULL_TREE, NULL_TREE, 0); + NULL_TREE, NULL_TREE); #if 0 /* This should be turned back on later for the systems where collect is not needed. */ /* Make these functions nonglobal @@ -1942,7 +1929,6 @@ generate_static_references () TREE_USED (static_instances_decl) = 1; DECL_CONTEXT (static_instances_decl) = 0; DECL_ARTIFICIAL (static_instances_decl) = 1; - end_temporary_allocation (); expr = build_constructor (TREE_TYPE (static_instances_decl), nreverse (decls)); finish_decl (static_instances_decl, expr, NULL_TREE); @@ -1966,7 +1952,6 @@ generate_strings () decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec); expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE); decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE); - end_temporary_allocation (); string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1, IDENTIFIER_POINTER (string)); finish_decl (decl, string_expr, NULL_TREE); @@ -2010,9 +1995,6 @@ build_selector_reference_decl () sprintf (buf, "_OBJC_SELECTOR_REFERENCES_%d", idx++); - push_obstacks_nochange (); - end_temporary_allocation (); - ident = get_identifier (buf); decl = build_decl (VAR_DECL, ident, selector_type); @@ -2026,8 +2008,6 @@ build_selector_reference_decl () make_decl_rtl (decl, 0, 1); pushdecl_top_level (decl); - pop_obstacks (); - return decl; } @@ -2085,11 +2065,6 @@ build_selector_translation_table () int offset = 0; tree decl = NULL_TREE, var_decl, name; - /* The corresponding pop_obstacks is in finish_decl, - called at the end of this function. */ - if (! flag_next_runtime) - push_obstacks_nochange (); - for (chain = sel_ref_chain; chain; chain = TREE_CHAIN (chain)) { tree expr; @@ -2193,7 +2168,7 @@ build_typed_selector_reference (ident, proto) chain = &TREE_CHAIN (*chain); } - *chain = perm_tree_cons (proto, ident, NULL_TREE); + *chain = tree_cons (proto, ident, NULL_TREE); return_at_index: expr = build_unary_op (ADDR_EXPR, @@ -2225,7 +2200,7 @@ build_selector_reference (ident) expr = build_selector_reference_decl (); - *chain = perm_tree_cons (expr, ident, NULL_TREE); + *chain = tree_cons (expr, ident, NULL_TREE); return (flag_next_runtime ? expr @@ -2242,9 +2217,6 @@ build_class_reference_decl () sprintf (buf, "_OBJC_CLASS_REFERENCES_%d", idx++); - push_obstacks_nochange (); - end_temporary_allocation (); - ident = get_identifier (buf); decl = build_decl (VAR_DECL, ident, objc_class_type); @@ -2258,8 +2230,6 @@ build_class_reference_decl () make_decl_rtl (decl, 0, 1); pushdecl_top_level (decl); - pop_obstacks (); - return decl; } @@ -2286,10 +2256,10 @@ add_class_reference (ident) while (chain); /* Append to the end of the list */ - TREE_CHAIN (tail) = perm_tree_cons (NULL_TREE, ident, NULL_TREE); + TREE_CHAIN (tail) = tree_cons (NULL_TREE, ident, NULL_TREE); } else - cls_ref_chain = perm_tree_cons (NULL_TREE, ident, NULL_TREE); + cls_ref_chain = tree_cons (NULL_TREE, ident, NULL_TREE); } /* Get a class reference, creating it if necessary. Also create the @@ -2314,7 +2284,7 @@ get_class_reference (ident) } decl = build_class_reference_decl (); - *chain = perm_tree_cons (decl, ident, NULL_TREE); + *chain = tree_cons (decl, ident, NULL_TREE); return decl; } else @@ -2367,7 +2337,7 @@ add_objc_string (ident, section) decl = build_objc_string_decl (section); - *chain = perm_tree_cons (decl, ident, NULL_TREE); + *chain = tree_cons (decl, ident, NULL_TREE); return build_unary_op (ADDR_EXPR, decl, 1); } @@ -2389,8 +2359,6 @@ build_objc_string_decl (section) else if (section == meth_var_types) sprintf (buf, "_OBJC_METH_VAR_TYPE_%d", meth_var_types_idx++); - push_obstacks_nochange (); - end_temporary_allocation (); ident = get_identifier (buf); decl = build_decl (VAR_DECL, ident, build_array_type (char_type_node, 0)); @@ -2405,8 +2373,6 @@ build_objc_string_decl (section) make_decl_rtl (decl, 0, 1); pushdecl_top_level (decl); - pop_obstacks (); - return decl; } @@ -5315,9 +5281,6 @@ build_protocol_reference (p) { tree decl, ident, ptype; - push_obstacks_nochange (); - end_temporary_allocation (); - /* extern struct objc_protocol _OBJC_PROTOCOL_; */ ident = synth_id_with_class_suffix ("_OBJC_PROTOCOL", p); @@ -5341,7 +5304,6 @@ build_protocol_reference (p) } PROTOCOL_FORWARD_DECL (p) = decl; - pop_obstacks (); } tree @@ -5676,10 +5638,6 @@ add_class_method (class, method) tree mth; hash hsh; - /* We will have allocated the method parameter declarations on the - maybepermanent_obstack. Need to make sure they stick around! */ - preserve_data (); - if (!(mth = lookup_method (CLASS_CLS_METHODS (class), method))) { /* put method on list in reverse order */ @@ -5722,10 +5680,6 @@ add_instance_method (class, method) tree mth; hash hsh; - /* We will have allocated the method parameter declarations on the - maybepermanent_obstack. Need to make sure they stick around! */ - preserve_data (); - if (!(mth = lookup_method (CLASS_NST_METHODS (class), method))) { /* Put method on list in reverse order. */ @@ -6129,10 +6083,7 @@ check_protocols (proto_list, type, name) /* Make sure that the class CLASS_NAME is defined CODE says which kind of thing CLASS_NAME ought to be. It can be CLASS_INTERFACE_TYPE, CLASS_IMPLEMENTATION_TYPE, - CATEGORY_INTERFACE_TYPE, or CATEGORY_IMPLEMENTATION_TYPE. - - If CODE is CLASS_INTERFACE_TYPE, we also do a push_obstacks_nochange - whose matching pop is in continue_class. */ + CATEGORY_INTERFACE_TYPE, or CATEGORY_IMPLEMENTATION_TYPE. */ tree start_class (code, class_name, super_name, protocol_list) @@ -6143,12 +6094,6 @@ start_class (code, class_name, super_name, protocol_list) { tree class, decl; - if (code == CLASS_INTERFACE_TYPE) - { - push_obstacks_nochange (); - end_temporary_allocation (); - } - if (!doing_objc_thang) objc_fatal (); @@ -6178,8 +6123,8 @@ start_class (code, class_name, super_name, protocol_list) IDENTIFIER_POINTER (class_name)); return error_mark_node; } - implemented_classes = perm_tree_cons (NULL_TREE, class_name, - implemented_classes); + implemented_classes = tree_cons (NULL_TREE, class_name, + implemented_classes); } /* Pre-build the following entities - for speed/convenience. */ @@ -7103,12 +7048,7 @@ comp_method_with_proto (method, proto) /* Create a function_type node once. */ if (!function_type) - { - push_obstacks_nochange (); - end_temporary_allocation (); - function_type = make_node (FUNCTION_TYPE); - pop_obstacks (); - } + function_type = make_node (FUNCTION_TYPE); /* Install argument types - normally set by build_function_type. */ TYPE_ARG_TYPES (function_type) = get_arg_type_list (proto, METHOD_DEF, 0); @@ -7130,11 +7070,8 @@ comp_proto_with_proto (proto1, proto2) /* Create a couple function_type node's once. */ if (!function_type1) { - push_obstacks_nochange (); - end_temporary_allocation (); function_type1 = make_node (FUNCTION_TYPE); function_type2 = make_node (FUNCTION_TYPE); - pop_obstacks (); } /* Install argument types; normally set by build_function_type. */ @@ -7198,7 +7135,7 @@ really_start_method (method, parmlist) method_decl = ret_decl; /* Fool the parser into thinking it is starting a function. */ - start_function (decl_specs, method_decl, NULL_TREE, NULL_TREE, 0); + start_function (decl_specs, method_decl, NULL_TREE, NULL_TREE); /* Unhook: this has the effect of restoring the abstract declarator. */ TREE_OPERAND (save_expr, 0) = NULL_TREE; @@ -7209,7 +7146,7 @@ really_start_method (method, parmlist) TREE_VALUE (TREE_TYPE (method)) = method_decl; /* Fool the parser into thinking it is starting a function. */ - start_function (decl_specs, method_decl, NULL_TREE, NULL_TREE, 0); + start_function (decl_specs, method_decl, NULL_TREE, NULL_TREE); /* Unhook: this has the effect of restoring the abstract declarator. */ TREE_VALUE (TREE_TYPE (method)) = NULL_TREE; diff --git a/gcc/objc/objc-parse.c b/gcc/objc/objc-parse.c index a2e0ff8..18db5a4 100644 --- a/gcc/objc/objc-parse.c +++ b/gcc/objc/objc-parse.c @@ -1,7 +1,6 @@ /* A Bison parser, made from objc-parse.y - by GNU Bison version 1.27 - */ + by GNU Bison version 1.28 */ #define YYBISON 1 /* Identify Bison output. */ @@ -456,62 +455,62 @@ static const short yyrhs[] = { -1, #if YYDEBUG != 0 static const short yyrline[] = { 0, 257, 262, 276, 278, 278, 279, 281, 283, 284, 285, - 293, 297, 308, 313, 318, 320, 322, 323, 324, 329, - 336, 338, 343, 348, 354, 356, 361, 366, 372, 374, - 379, 386, 388, 389, 390, 393, 395, 397, 399, 401, - 403, 405, 409, 413, 416, 419, 422, 426, 428, 431, - 434, 438, 466, 472, 475, 478, 481, 483, 485, 489, - 493, 497, 499, 502, 506, 533, 535, 537, 539, 541, - 543, 545, 547, 549, 551, 553, 555, 557, 559, 563, - 565, 569, 571, 574, 578, 580, 587, 590, 598, 609, - 769, 770, 772, 778, 780, 803, 812, 814, 816, 828, - 842, 844, 846, 848, 850, 852, 854, 859, 861, 868, - 870, 874, 876, 877, 887, 892, 894, 895, 896, 903, - 909, 914, 917, 925, 930, 932, 933, 934, 941, 952, - 956, 962, 967, 972, 977, 979, 981, 990, 993, 997, - 999, 1001, 1006, 1010, 1013, 1017, 1020, 1022, 1034, 1037, - 1039, 1041, 1045, 1049, 1051, 1054, 1067, 1070, 1074, 1076, - 1084, 1085, 1086, 1090, 1092, 1097, 1099, 1101, 1107, 1108, - 1109, 1112, 1114, 1117, 1119, 1122, 1125, 1131, 1138, 1140, - 1147, 1154, 1157, 1164, 1167, 1171, 1174, 1178, 1183, 1186, - 1190, 1193, 1195, 1197, 1199, 1206, 1208, 1209, 1210, 1215, - 1217, 1222, 1230, 1235, 1239, 1242, 1244, 1249, 1251, 1252, - 1255, 1255, 1258, 1261, 1263, 1265, 1268, 1270, 1273, 1281, - 1295, 1303, 1307, 1321, 1329, 1336, 1338, 1343, 1346, 1351, - 1353, 1355, 1362, 1364, 1365, 1373, 1379, 1381, 1383, 1390, - 1392, 1398, 1404, 1406, 1408, 1410, 1417, 1419, 1422, 1425, - 1429, 1432, 1436, 1439, 1443, 1448, 1450, 1454, 1456, 1458, - 1460, 1464, 1466, 1469, 1472, 1475, 1478, 1482, 1484, 1487, - 1489, 1494, 1497, 1502, 1504, 1506, 1510, 1534, 1541, 1555, - 1561, 1566, 1568, 1573, 1575, 1579, 1583, 1587, 1597, 1599, - 1604, 1609, 1612, 1616, 1619, 1623, 1626, 1629, 1632, 1636, - 1639, 1643, 1647, 1649, 1651, 1653, 1655, 1657, 1659, 1661, - 1665, 1673, 1681, 1683, 1685, 1689, 1691, 1694, 1697, 1710, - 1712, 1717, 1719, 1722, 1736, 1739, 1742, 1744, 1746, 1754, - 1762, 1772, 1790, 1795, 1800, 1803, 1817, 1826, 1830, 1834, - 1838, 1844, 1848, 1853, 1856, 1861, 1864, 1865, 1882, 1887, - 1890, 1902, 1904, 1914, 1924, 1925, 1933, 1936, 1948, 1952, - 1969, 1979, 1988, 1993, 1998, 2003, 2007, 2011, 2022, 2029, - 2036, 2043, 2054, 2060, 2063, 2068, 2091, 2125, 2156, 2187, - 2202, 2216, 2220, 2224, 2227, 2232, 2234, 2237, 2239, 2243, - 2248, 2251, 2257, 2262, 2267, 2269, 2278, 2279, 2285, 2287, - 2297, 2299, 2303, 2306, 2312, 2322, 2331, 2340, 2350, 2364, - 2369, 2374, 2376, 2385, 2388, 2393, 2396, 2400, 2409, 2411, - 2412, 2413, 2414, 2415, 2429, 2432, 2436, 2442, 2448, 2455, - 2460, 2466, 2473, 2479, 2485, 2490, 2496, 2503, 2509, 2515, - 2521, 2529, 2535, 2541, 2549, 2556, 2562, 2571, 2578, 2586, - 2591, 2594, 2604, 2606, 2609, 2611, 2612, 2615, 2620, 2621, - 2638, 2645, 2651, 2655, 2658, 2659, 2662, 2670, 2676, 2685, - 2695, 2702, 2706, 2711, 2720, 2727, 2731, 2741, 2743, 2744, - 2746, 2748, 2749, 2750, 2751, 2753, 2755, 2758, 2766, 2773, - 2773, 2780, 2786, 2788, 2794, 2799, 2804, 2813, 2815, 2821, - 2823, 2826, 2828, 2829, 2830, 2833, 2839, 2841, 2845, 2848, - 2855, 2861, 2866, 2873, 2878, 2883, 2888, 2895, 2899, 2902, - 2908, 2910, 2911, 2912, 2915, 2917, 2918, 2919, 2920, 2921, - 2922, 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, - 2932, 2933, 2934, 2935, 2935, 2938, 2944, 2949, 2954, 2960, - 2962, 2965, 2967, 2974, 2986, 2991, 2997, 2999, 3005, 3009, - 3010, 3016, 3018, 3021, 3023, 3029, 3034, 3040, 3047, 3056 + 293, 297, 307, 311, 315, 317, 319, 320, 321, 326, + 333, 335, 339, 343, 349, 351, 355, 359, 365, 367, + 371, 377, 379, 380, 381, 384, 386, 388, 390, 392, + 394, 396, 400, 404, 407, 410, 413, 417, 419, 422, + 425, 429, 457, 463, 466, 469, 472, 474, 476, 480, + 484, 488, 490, 493, 497, 524, 526, 528, 530, 532, + 534, 536, 538, 540, 542, 544, 546, 548, 550, 554, + 556, 560, 562, 565, 569, 571, 578, 581, 589, 600, + 760, 761, 763, 769, 771, 794, 803, 805, 807, 819, + 833, 835, 837, 839, 841, 843, 845, 850, 852, 859, + 861, 865, 867, 868, 878, 883, 885, 886, 887, 894, + 899, 903, 906, 914, 919, 921, 922, 923, 930, 940, + 944, 949, 953, 957, 961, 963, 965, 974, 977, 981, + 983, 985, 990, 994, 997, 1001, 1004, 1006, 1018, 1021, + 1023, 1025, 1029, 1033, 1035, 1038, 1051, 1054, 1058, 1060, + 1068, 1069, 1070, 1074, 1076, 1081, 1083, 1085, 1091, 1092, + 1093, 1096, 1098, 1101, 1103, 1106, 1109, 1115, 1122, 1124, + 1131, 1138, 1141, 1148, 1151, 1155, 1158, 1162, 1167, 1170, + 1174, 1177, 1179, 1181, 1183, 1190, 1192, 1193, 1194, 1199, + 1201, 1203, 1205, 1210, 1214, 1217, 1219, 1224, 1226, 1227, + 1230, 1230, 1233, 1236, 1238, 1240, 1243, 1245, 1248, 1256, + 1270, 1278, 1282, 1296, 1304, 1311, 1313, 1318, 1321, 1326, + 1328, 1330, 1337, 1339, 1340, 1348, 1354, 1356, 1358, 1365, + 1367, 1373, 1379, 1381, 1383, 1385, 1392, 1394, 1397, 1400, + 1404, 1407, 1411, 1414, 1418, 1423, 1425, 1429, 1431, 1433, + 1435, 1439, 1441, 1443, 1446, 1448, 1451, 1455, 1457, 1460, + 1462, 1467, 1470, 1475, 1477, 1479, 1483, 1507, 1513, 1526, + 1531, 1536, 1538, 1543, 1545, 1549, 1553, 1557, 1567, 1569, + 1574, 1579, 1582, 1586, 1589, 1593, 1596, 1599, 1602, 1606, + 1609, 1613, 1617, 1619, 1621, 1623, 1625, 1627, 1629, 1631, + 1635, 1643, 1651, 1653, 1655, 1659, 1661, 1664, 1667, 1679, + 1681, 1686, 1688, 1691, 1705, 1708, 1711, 1713, 1715, 1719, + 1723, 1729, 1747, 1752, 1757, 1760, 1774, 1783, 1787, 1791, + 1795, 1801, 1805, 1810, 1813, 1818, 1821, 1822, 1838, 1843, + 1846, 1858, 1860, 1870, 1880, 1881, 1888, 1890, 1902, 1906, + 1920, 1926, 1932, 1933, 1938, 1943, 1947, 1951, 1962, 1969, + 1976, 1983, 1994, 2000, 2003, 2008, 2031, 2061, 2092, 2123, + 2138, 2152, 2156, 2160, 2163, 2168, 2170, 2173, 2175, 2179, + 2184, 2187, 2193, 2198, 2203, 2205, 2214, 2215, 2221, 2223, + 2233, 2235, 2239, 2242, 2248, 2257, 2265, 2273, 2282, 2295, + 2300, 2305, 2307, 2316, 2319, 2324, 2327, 2331, 2340, 2342, + 2343, 2344, 2345, 2346, 2360, 2363, 2367, 2373, 2379, 2386, + 2391, 2397, 2404, 2410, 2416, 2421, 2427, 2434, 2440, 2446, + 2452, 2460, 2466, 2472, 2480, 2487, 2493, 2502, 2509, 2517, + 2522, 2525, 2535, 2537, 2540, 2542, 2543, 2546, 2551, 2552, + 2569, 2575, 2580, 2584, 2587, 2588, 2591, 2599, 2605, 2614, + 2624, 2631, 2635, 2640, 2649, 2656, 2660, 2670, 2672, 2673, + 2675, 2677, 2678, 2679, 2680, 2682, 2684, 2687, 2695, 2702, + 2702, 2709, 2715, 2717, 2723, 2728, 2733, 2742, 2744, 2750, + 2752, 2755, 2757, 2758, 2759, 2762, 2767, 2769, 2773, 2776, + 2783, 2789, 2794, 2801, 2806, 2811, 2816, 2823, 2827, 2830, + 2836, 2838, 2839, 2840, 2843, 2845, 2846, 2847, 2848, 2849, + 2850, 2851, 2852, 2853, 2854, 2855, 2856, 2857, 2858, 2859, + 2860, 2861, 2862, 2863, 2863, 2866, 2872, 2877, 2882, 2888, + 2890, 2893, 2895, 2902, 2914, 2919, 2925, 2927, 2933, 2937, + 2938, 2944, 2946, 2949, 2951, 2957, 2962, 2968, 2975, 2984 }; #endif @@ -1749,8 +1748,8 @@ static const short yycheck[] = { 56, 46, 47, 48, 49, 50, 51, 52, 53, 54 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/share/bison.simple" -/* This file comes from bison-1.27. */ +#line 3 "/usr/share/misc/bison.simple" +/* This file comes from bison-1.28. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -1963,7 +1962,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 216 "/usr/share/bison.simple" +#line 217 "/usr/share/misc/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -2339,174 +2338,165 @@ case 12: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 13: -#line 309 "objc-parse.y" +#line 308 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 14: -#line 314 "objc-parse.y" +#line 312 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 15: -#line 319 "objc-parse.y" +#line 316 "objc-parse.y" { pedwarn ("empty declaration"); ; break;} case 16: -#line 321 "objc-parse.y" +#line 318 "objc-parse.y" { shadow_tag (yyvsp[-1].ttype); ; break;} case 19: -#line 325 "objc-parse.y" +#line 322 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C does not allow extra `;' outside of a function"); ; break;} case 20: -#line 331 "objc-parse.y" +#line 328 "objc-parse.y" { if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); ; break;} case 21: -#line 336 "objc-parse.y" +#line 333 "objc-parse.y" { store_parm_decls (); ; break;} case 22: -#line 338 "objc-parse.y" +#line 335 "objc-parse.y" { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-5].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 23: -#line 344 "objc-parse.y" +#line 340 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 24: -#line 349 "objc-parse.y" +#line 344 "objc-parse.y" { if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); ; break;} case 25: -#line 354 "objc-parse.y" +#line 349 "objc-parse.y" { store_parm_decls (); ; break;} case 26: -#line 356 "objc-parse.y" +#line 351 "objc-parse.y" { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-5].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 27: -#line 362 "objc-parse.y" +#line 356 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 28: -#line 367 "objc-parse.y" +#line 360 "objc-parse.y" { if (! start_function (NULL_TREE, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); ; break;} case 29: -#line 372 "objc-parse.y" +#line 365 "objc-parse.y" { store_parm_decls (); ; break;} case 30: -#line 374 "objc-parse.y" +#line 367 "objc-parse.y" { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-5].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 31: -#line 380 "objc-parse.y" +#line 372 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 36: -#line 394 "objc-parse.y" +#line 385 "objc-parse.y" { yyval.code = ADDR_EXPR; ; break;} case 37: -#line 396 "objc-parse.y" +#line 387 "objc-parse.y" { yyval.code = NEGATE_EXPR; ; break;} case 38: -#line 398 "objc-parse.y" +#line 389 "objc-parse.y" { yyval.code = CONVERT_EXPR; ; break;} case 39: -#line 400 "objc-parse.y" +#line 391 "objc-parse.y" { yyval.code = PREINCREMENT_EXPR; ; break;} case 40: -#line 402 "objc-parse.y" +#line 393 "objc-parse.y" { yyval.code = PREDECREMENT_EXPR; ; break;} case 41: -#line 404 "objc-parse.y" +#line 395 "objc-parse.y" { yyval.code = BIT_NOT_EXPR; ; break;} case 42: -#line 406 "objc-parse.y" +#line 397 "objc-parse.y" { yyval.code = TRUTH_NOT_EXPR; ; break;} case 43: -#line 410 "objc-parse.y" +#line 401 "objc-parse.y" { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ; break;} case 44: -#line 415 "objc-parse.y" +#line 406 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 46: -#line 421 "objc-parse.y" +#line 412 "objc-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 47: -#line 423 "objc-parse.y" +#line 414 "objc-parse.y" { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 49: -#line 429 "objc-parse.y" +#line 420 "objc-parse.y" { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ; break;} case 50: -#line 432 "objc-parse.y" +#line 423 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 51: -#line 435 "objc-parse.y" +#line 426 "objc-parse.y" { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0); overflow_warning (yyval.ttype); ; break;} case 52: -#line 439 "objc-parse.y" +#line 430 "objc-parse.y" { tree label = lookup_label (yyvsp[0].ttype); if (pedantic) pedwarn ("ANSI C forbids `&&'"); @@ -2521,7 +2511,7 @@ case 52: ; break;} case 53: -#line 467 "objc-parse.y" +#line 458 "objc-parse.y" { skip_evaluation--; if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1))) @@ -2529,53 +2519,53 @@ case 53: yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ; break;} case 54: -#line 473 "objc-parse.y" +#line 464 "objc-parse.y" { skip_evaluation--; yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ; break;} case 55: -#line 476 "objc-parse.y" +#line 467 "objc-parse.y" { skip_evaluation--; yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ; break;} case 56: -#line 479 "objc-parse.y" +#line 470 "objc-parse.y" { skip_evaluation--; yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ; break;} case 57: -#line 482 "objc-parse.y" +#line 473 "objc-parse.y" { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ; break;} case 58: -#line 484 "objc-parse.y" +#line 475 "objc-parse.y" { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ; break;} case 59: -#line 486 "objc-parse.y" +#line 477 "objc-parse.y" { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ttype)); ; break;} case 60: -#line 490 "objc-parse.y" +#line 481 "objc-parse.y" { skip_evaluation++; ; break;} case 61: -#line 494 "objc-parse.y" +#line 485 "objc-parse.y" { skip_evaluation++; ; break;} case 63: -#line 500 "objc-parse.y" +#line 491 "objc-parse.y" { tree type = groktypename (yyvsp[-2].ttype); yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ; break;} case 64: -#line 503 "objc-parse.y" +#line 494 "objc-parse.y" { start_init (NULL_TREE, NULL, 0); yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype); really_start_incremental_init (yyvsp[-2].ttype); ; break;} case 65: -#line 507 "objc-parse.y" +#line 498 "objc-parse.y" { const char *name; tree result = pop_init_level (0); tree type = yyvsp[-5].ttype; @@ -2602,90 +2592,90 @@ case 65: ; break;} case 67: -#line 536 "objc-parse.y" +#line 527 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 68: -#line 538 "objc-parse.y" +#line 529 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 69: -#line 540 "objc-parse.y" +#line 531 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 70: -#line 542 "objc-parse.y" +#line 533 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 71: -#line 544 "objc-parse.y" +#line 535 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 72: -#line 546 "objc-parse.y" +#line 537 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 73: -#line 548 "objc-parse.y" +#line 539 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 74: -#line 550 "objc-parse.y" +#line 541 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 75: -#line 552 "objc-parse.y" +#line 543 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 76: -#line 554 "objc-parse.y" +#line 545 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 77: -#line 556 "objc-parse.y" +#line 547 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 78: -#line 558 "objc-parse.y" +#line 549 "objc-parse.y" { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 79: -#line 560 "objc-parse.y" +#line 551 "objc-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} case 80: -#line 563 "objc-parse.y" +#line 554 "objc-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node; yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 81: -#line 566 "objc-parse.y" +#line 557 "objc-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} case 82: -#line 569 "objc-parse.y" +#line 560 "objc-parse.y" { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node; yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 83: -#line 572 "objc-parse.y" +#line 563 "objc-parse.y" { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype)); skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ; break;} case 84: -#line 575 "objc-parse.y" +#line 566 "objc-parse.y" { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node) - (yyvsp[-4].ttype == boolean_false_node)); ; break;} case 85: -#line 578 "objc-parse.y" +#line 569 "objc-parse.y" { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 86: -#line 581 "objc-parse.y" +#line 572 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids omitting the middle term of a ?: expression"); /* Make sure first operand is calculated only once. */ @@ -2694,12 +2684,12 @@ case 86: skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ; break;} case 87: -#line 588 "objc-parse.y" +#line 579 "objc-parse.y" { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node; yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ; break;} case 88: -#line 591 "objc-parse.y" +#line 582 "objc-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype); class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype)); @@ -2709,7 +2699,7 @@ case 88: ; break;} case 89: -#line 599 "objc-parse.y" +#line 590 "objc-parse.y" { char class; yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype); /* This inhibits warnings in truthvalue_conversion. */ @@ -2720,7 +2710,7 @@ case 89: ; break;} case 90: -#line 611 "objc-parse.y" +#line 602 "objc-parse.y" { yyval.ttype = lastiddecl; if (!yyval.ttype || yyval.ttype == error_mark_node) @@ -2881,11 +2871,11 @@ case 90: ; break;} case 92: -#line 771 "objc-parse.y" +#line 762 "objc-parse.y" { yyval.ttype = combine_strings (yyvsp[0].ttype); ; break;} case 93: -#line 773 "objc-parse.y" +#line 764 "objc-parse.y" { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)); if (class == 'e' || class == '1' || class == '2' || class == '<') @@ -2893,11 +2883,11 @@ case 93: yyval.ttype = yyvsp[-1].ttype; ; break;} case 94: -#line 779 "objc-parse.y" +#line 770 "objc-parse.y" { yyval.ttype = error_mark_node; ; break;} case 95: -#line 781 "objc-parse.y" +#line 772 "objc-parse.y" { tree rtl_exp; if (pedantic) pedwarn ("ANSI C forbids braced-groups within expressions"); @@ -2922,7 +2912,7 @@ case 95: ; break;} case 96: -#line 804 "objc-parse.y" +#line 795 "objc-parse.y" { /* Make sure we call expand_end_stmt_expr. Otherwise we are likely to lose sequences and crash later. */ @@ -2933,15 +2923,15 @@ case 96: ; break;} case 97: -#line 813 "objc-parse.y" +#line 804 "objc-parse.y" { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 98: -#line 815 "objc-parse.y" +#line 806 "objc-parse.y" { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 99: -#line 817 "objc-parse.y" +#line 808 "objc-parse.y" { if (doing_objc_thang) { @@ -2955,7 +2945,7 @@ case 99: ; break;} case 100: -#line 829 "objc-parse.y" +#line 820 "objc-parse.y" { tree expr = build_indirect_ref (yyvsp[-2].ttype, "->"); @@ -2971,83 +2961,80 @@ case 100: ; break;} case 101: -#line 843 "objc-parse.y" +#line 834 "objc-parse.y" { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} case 102: -#line 845 "objc-parse.y" +#line 836 "objc-parse.y" { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ; break;} case 103: -#line 847 "objc-parse.y" +#line 838 "objc-parse.y" { yyval.ttype = build_message_expr (yyvsp[0].ttype); ; break;} case 104: -#line 849 "objc-parse.y" +#line 840 "objc-parse.y" { yyval.ttype = build_selector_expr (yyvsp[0].ttype); ; break;} case 105: -#line 851 "objc-parse.y" +#line 842 "objc-parse.y" { yyval.ttype = build_protocol_expr (yyvsp[0].ttype); ; break;} case 106: -#line 853 "objc-parse.y" +#line 844 "objc-parse.y" { yyval.ttype = build_encode_expr (yyvsp[0].ttype); ; break;} case 107: -#line 855 "objc-parse.y" +#line 846 "objc-parse.y" { yyval.ttype = build_objc_string_object (yyvsp[0].ttype); ; break;} case 109: -#line 862 "objc-parse.y" +#line 853 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 111: -#line 871 "objc-parse.y" +#line 862 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 114: -#line 879 "objc-parse.y" +#line 870 "objc-parse.y" { c_mark_varargs (); if (pedantic) pedwarn ("ANSI C does not permit use of `varargs.h'"); ; break;} case 115: -#line 889 "objc-parse.y" +#line 880 "objc-parse.y" { ; break;} case 120: -#line 905 "objc-parse.y" +#line 896 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 121: -#line 910 "objc-parse.y" +#line 900 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 122: -#line 915 "objc-parse.y" +#line 904 "objc-parse.y" { shadow_tag_warned (yyvsp[-1].ttype, 1); pedwarn ("empty declaration"); ; break;} case 123: -#line 918 "objc-parse.y" +#line 907 "objc-parse.y" { pedwarn ("empty declaration"); ; break;} case 124: -#line 927 "objc-parse.y" +#line 916 "objc-parse.y" { ; break;} case 129: -#line 942 "objc-parse.y" -{ yyval.itype = suspend_momentary (); - pending_xref_error (); +#line 931 "objc-parse.y" +{ pending_xref_error (); declspec_stack = tree_cons (prefix_attributes, current_declspecs, declspec_stack); @@ -3055,131 +3042,127 @@ case 129: ¤t_declspecs, &prefix_attributes); ; break;} case 130: -#line 953 "objc-parse.y" +#line 941 "objc-parse.y" { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ; break;} case 131: -#line 958 "objc-parse.y" +#line 946 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 132: -#line 963 "objc-parse.y" +#line 950 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 133: -#line 968 "objc-parse.y" +#line 954 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 134: -#line 973 "objc-parse.y" +#line 958 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 135: -#line 978 "objc-parse.y" +#line 962 "objc-parse.y" { shadow_tag (yyvsp[-1].ttype); ; break;} case 136: -#line 980 "objc-parse.y" +#line 964 "objc-parse.y" { pedwarn ("empty declaration"); ; break;} case 137: -#line 982 "objc-parse.y" +#line 966 "objc-parse.y" { RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 138: -#line 992 "objc-parse.y" +#line 976 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 139: -#line 994 "objc-parse.y" +#line 978 "objc-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; break;} case 140: -#line 998 "objc-parse.y" +#line 982 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 141: -#line 1000 "objc-parse.y" +#line 984 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 142: -#line 1002 "objc-parse.y" +#line 986 "objc-parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 143: -#line 1007 "objc-parse.y" +#line 991 "objc-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 144: -#line 1012 "objc-parse.y" +#line 996 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 145: -#line 1014 "objc-parse.y" +#line 998 "objc-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; break;} case 146: -#line 1019 "objc-parse.y" +#line 1003 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 147: -#line 1021 "objc-parse.y" +#line 1005 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 148: -#line 1023 "objc-parse.y" +#line 1007 "objc-parse.y" { if (extra_warnings) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 149: -#line 1036 "objc-parse.y" +#line 1020 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 150: -#line 1038 "objc-parse.y" +#line 1022 "objc-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; break;} case 151: -#line 1040 "objc-parse.y" +#line 1024 "objc-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 152: -#line 1042 "objc-parse.y" +#line 1026 "objc-parse.y" { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; break;} case 153: -#line 1047 "objc-parse.y" +#line 1031 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); TREE_STATIC (yyval.ttype) = 1; ; break;} case 154: -#line 1050 "objc-parse.y" +#line 1034 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 155: -#line 1052 "objc-parse.y" +#line 1036 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); TREE_STATIC (yyval.ttype) = 1; ; break;} case 156: -#line 1055 "objc-parse.y" +#line 1039 "objc-parse.y" { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype)) warning ("`%s' is not at beginning of declaration", IDENTIFIER_POINTER (yyvsp[0].ttype)); @@ -3187,194 +3170,186 @@ case 156: TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; break;} case 157: -#line 1069 "objc-parse.y" +#line 1053 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 158: -#line 1071 "objc-parse.y" +#line 1055 "objc-parse.y" { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ; break;} case 159: -#line 1075 "objc-parse.y" +#line 1059 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 160: -#line 1077 "objc-parse.y" +#line 1061 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 163: -#line 1087 "objc-parse.y" +#line 1071 "objc-parse.y" { /* For a typedef name, record the meaning, not the name. In case of `foo foo, bar;'. */ yyval.ttype = lookup_name (yyvsp[0].ttype); ; break;} case 164: -#line 1091 "objc-parse.y" +#line 1075 "objc-parse.y" { yyval.ttype = get_static_reference (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 165: -#line 1093 "objc-parse.y" +#line 1077 "objc-parse.y" { yyval.ttype = get_object_reference (yyvsp[0].ttype); ; break;} case 166: -#line 1098 "objc-parse.y" +#line 1082 "objc-parse.y" { yyval.ttype = get_object_reference (yyvsp[0].ttype); ; break;} case 167: -#line 1100 "objc-parse.y" +#line 1084 "objc-parse.y" { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ; break;} case 168: -#line 1102 "objc-parse.y" +#line 1086 "objc-parse.y" { yyval.ttype = groktypename (yyvsp[-1].ttype); ; break;} case 176: -#line 1124 "objc-parse.y" +#line 1108 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 177: -#line 1126 "objc-parse.y" +#line 1110 "objc-parse.y" { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; break;} case 178: -#line 1133 "objc-parse.y" +#line 1117 "objc-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, yyvsp[-1].ttype, prefix_attributes); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} case 179: -#line 1138 "objc-parse.y" +#line 1122 "objc-parse.y" { finish_init (); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} case 180: -#line 1141 "objc-parse.y" +#line 1125 "objc-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, yyvsp[0].ttype, prefix_attributes); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} case 181: -#line 1149 "objc-parse.y" +#line 1133 "objc-parse.y" { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, yyvsp[-1].ttype, prefix_attributes); start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ; break;} case 182: -#line 1154 "objc-parse.y" +#line 1138 "objc-parse.y" { finish_init (); decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes); finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ; break;} case 183: -#line 1158 "objc-parse.y" +#line 1142 "objc-parse.y" { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0, yyvsp[0].ttype, prefix_attributes); finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ; break;} case 184: -#line 1166 "objc-parse.y" +#line 1150 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 185: -#line 1168 "objc-parse.y" +#line 1152 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 186: -#line 1173 "objc-parse.y" +#line 1157 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 187: -#line 1175 "objc-parse.y" +#line 1159 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 188: -#line 1180 "objc-parse.y" +#line 1164 "objc-parse.y" { yyval.ttype = yyvsp[-2].ttype; ; break;} case 189: -#line 1185 "objc-parse.y" +#line 1169 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 190: -#line 1187 "objc-parse.y" +#line 1171 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 191: -#line 1192 "objc-parse.y" +#line 1176 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 192: -#line 1194 "objc-parse.y" +#line 1178 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; break;} case 193: -#line 1196 "objc-parse.y" +#line 1180 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; break;} case 194: -#line 1198 "objc-parse.y" +#line 1182 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; break;} case 195: -#line 1200 "objc-parse.y" +#line 1184 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 201: -#line 1218 "objc-parse.y" -{ really_start_incremental_init (NULL_TREE); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); ; +#line 1202 "objc-parse.y" +{ really_start_incremental_init (NULL_TREE); ; break;} case 202: -#line 1223 "objc-parse.y" -{ yyval.ttype = pop_init_level (0); - if (yyval.ttype == error_mark_node - && ! (yychar == STRING || yychar == CONSTANT)) - pop_momentary (); - else - pop_momentary_nofree (); ; +#line 1204 "objc-parse.y" +{ yyval.ttype = pop_init_level (0); ; break;} case 203: -#line 1231 "objc-parse.y" +#line 1206 "objc-parse.y" { yyval.ttype = error_mark_node; ; break;} case 204: -#line 1237 "objc-parse.y" +#line 1212 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids empty initializer braces"); ; break;} case 210: -#line 1253 "objc-parse.y" +#line 1228 "objc-parse.y" { set_init_label (yyvsp[-1].ttype); ; break;} case 213: -#line 1260 "objc-parse.y" +#line 1235 "objc-parse.y" { push_init_level (0); ; break;} case 214: -#line 1262 "objc-parse.y" +#line 1237 "objc-parse.y" { process_init_element (pop_init_level (0)); ; break;} case 215: -#line 1264 "objc-parse.y" +#line 1239 "objc-parse.y" { process_init_element (yyvsp[0].ttype); ; break;} case 219: -#line 1275 "objc-parse.y" +#line 1250 "objc-parse.y" { set_init_label (yyvsp[0].ttype); ; break;} case 220: -#line 1283 "objc-parse.y" +#line 1258 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids nested functions"); push_function_context (); if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -3382,22 +3357,22 @@ case 220: reinit_parse_for_function (); ; break;} case 221: -#line 1295 "objc-parse.y" +#line 1270 "objc-parse.y" { store_parm_decls (); ; break;} case 222: -#line 1303 "objc-parse.y" +#line 1278 "objc-parse.y" { finish_function (1); pop_function_context (); ; break;} case 223: -#line 1309 "objc-parse.y" +#line 1284 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids nested functions"); push_function_context (); if (! start_function (current_declspecs, yyvsp[0].ttype, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -3405,197 +3380,195 @@ case 223: reinit_parse_for_function (); ; break;} case 224: -#line 1321 "objc-parse.y" +#line 1296 "objc-parse.y" { store_parm_decls (); ; break;} case 225: -#line 1329 "objc-parse.y" +#line 1304 "objc-parse.y" { finish_function (1); pop_function_context (); ; break;} case 228: -#line 1345 "objc-parse.y" +#line 1320 "objc-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 229: -#line 1347 "objc-parse.y" +#line 1322 "objc-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 230: -#line 1352 "objc-parse.y" +#line 1327 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 231: -#line 1354 "objc-parse.y" +#line 1329 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 232: -#line 1356 "objc-parse.y" +#line 1331 "objc-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 233: -#line 1363 "objc-parse.y" +#line 1338 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 236: -#line 1375 "objc-parse.y" +#line 1350 "objc-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 237: -#line 1380 "objc-parse.y" +#line 1355 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 238: -#line 1382 "objc-parse.y" +#line 1357 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 239: -#line 1384 "objc-parse.y" +#line 1359 "objc-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 240: -#line 1391 "objc-parse.y" +#line 1366 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 242: -#line 1400 "objc-parse.y" +#line 1375 "objc-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 243: -#line 1405 "objc-parse.y" +#line 1380 "objc-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 244: -#line 1407 "objc-parse.y" +#line 1382 "objc-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 245: -#line 1409 "objc-parse.y" +#line 1384 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 246: -#line 1411 "objc-parse.y" +#line 1386 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 247: -#line 1418 "objc-parse.y" +#line 1393 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 249: -#line 1424 "objc-parse.y" +#line 1399 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 250: -#line 1426 "objc-parse.y" +#line 1401 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 251: -#line 1431 "objc-parse.y" +#line 1406 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 252: -#line 1433 "objc-parse.y" +#line 1408 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 253: -#line 1438 "objc-parse.y" +#line 1413 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 254: -#line 1440 "objc-parse.y" +#line 1415 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 255: -#line 1445 "objc-parse.y" +#line 1420 "objc-parse.y" { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype); /* Start scope of tag before parsing components. */ ; break;} case 256: -#line 1449 "objc-parse.y" +#line 1424 "objc-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} case 257: -#line 1451 "objc-parse.y" +#line 1426 "objc-parse.y" { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} case 258: -#line 1455 "objc-parse.y" +#line 1430 "objc-parse.y" { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ; break;} case 259: -#line 1457 "objc-parse.y" +#line 1432 "objc-parse.y" { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ; break;} case 260: -#line 1459 "objc-parse.y" +#line 1434 "objc-parse.y" { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} case 261: -#line 1461 "objc-parse.y" +#line 1436 "objc-parse.y" { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE), yyvsp[-2].ttype, chainon (yyvsp[-4].ttype, yyvsp[0].ttype)); ; break;} case 262: -#line 1465 "objc-parse.y" +#line 1440 "objc-parse.y" { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ; break;} case 263: -#line 1467 "objc-parse.y" -{ yyvsp[0].itype = suspend_momentary (); - yyval.ttype = start_enum (yyvsp[-1].ttype); ; +#line 1442 "objc-parse.y" +{ yyval.ttype = start_enum (yyvsp[-1].ttype); ; break;} case 264: -#line 1470 "objc-parse.y" -{ yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); - resume_momentary (yyvsp[-5].itype); ; +#line 1444 "objc-parse.y" +{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), + chainon (yyvsp[-7].ttype, yyvsp[0].ttype)); ; break;} case 265: -#line 1473 "objc-parse.y" -{ yyvsp[0].itype = suspend_momentary (); - yyval.ttype = start_enum (NULL_TREE); ; +#line 1447 "objc-parse.y" +{ yyval.ttype = start_enum (NULL_TREE); ; break;} case 266: -#line 1476 "objc-parse.y" -{ yyval.ttype= finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); - resume_momentary (yyvsp[-5].itype); ; +#line 1449 "objc-parse.y" +{ yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), + chainon (yyvsp[-6].ttype, yyvsp[0].ttype)); ; break;} case 267: -#line 1479 "objc-parse.y" +#line 1452 "objc-parse.y" { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ; break;} case 271: -#line 1490 "objc-parse.y" +#line 1463 "objc-parse.y" { if (pedantic && ! flag_isoc9x) pedwarn ("comma at end of enumerator list"); ; break;} case 272: -#line 1496 "objc-parse.y" +#line 1469 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 273: -#line 1498 "objc-parse.y" +#line 1471 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); pedwarn ("no semicolon at end of struct or union"); ; break;} case 274: -#line 1503 "objc-parse.y" +#line 1476 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 275: -#line 1505 "objc-parse.y" +#line 1478 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 276: -#line 1507 "objc-parse.y" +#line 1480 "objc-parse.y" { if (pedantic) pedwarn ("extra semicolon in struct or union specified"); ; break;} case 277: -#line 1511 "objc-parse.y" +#line 1484 "objc-parse.y" { tree interface = lookup_interface (yyvsp[-1].ttype); @@ -3610,15 +3583,14 @@ case 277: ; break;} case 278: -#line 1536 "objc-parse.y" +#line 1509 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 279: -#line 1542 "objc-parse.y" +#line 1514 "objc-parse.y" { /* Support for unnamed structs or unions as members of structs or unions (which is [a] useful and [b] supports @@ -3630,172 +3602,169 @@ case 279: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-3].itype); ; break;} case 280: -#line 1556 "objc-parse.y" +#line 1527 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 281: -#line 1562 "objc-parse.y" +#line 1532 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids member declarations with no members"); shadow_tag(yyvsp[0].ttype); yyval.ttype = NULL_TREE; ; break;} case 282: -#line 1567 "objc-parse.y" +#line 1537 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 283: -#line 1569 "objc-parse.y" +#line 1539 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; RESTORE_WARN_FLAGS (yyvsp[-1].ttype); ; break;} case 285: -#line 1576 "objc-parse.y" +#line 1546 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 286: -#line 1581 "objc-parse.y" +#line 1551 "objc-parse.y" { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 287: -#line 1585 "objc-parse.y" +#line 1555 "objc-parse.y" { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 288: -#line 1588 "objc-parse.y" +#line 1558 "objc-parse.y" { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype); decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} case 290: -#line 1600 "objc-parse.y" +#line 1570 "objc-parse.y" { if (yyvsp[-2].ttype == error_mark_node) yyval.ttype = yyvsp[-2].ttype; else yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ; break;} case 291: -#line 1605 "objc-parse.y" +#line 1575 "objc-parse.y" { yyval.ttype = error_mark_node; ; break;} case 292: -#line 1611 "objc-parse.y" +#line 1581 "objc-parse.y" { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ; break;} case 293: -#line 1613 "objc-parse.y" +#line 1583 "objc-parse.y" { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 294: -#line 1618 "objc-parse.y" +#line 1588 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 295: -#line 1620 "objc-parse.y" +#line 1590 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 296: -#line 1625 "objc-parse.y" +#line 1595 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 298: -#line 1631 "objc-parse.y" +#line 1601 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 299: -#line 1633 "objc-parse.y" +#line 1603 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 300: -#line 1638 "objc-parse.y" +#line 1608 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 301: -#line 1640 "objc-parse.y" +#line 1610 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} case 302: -#line 1645 "objc-parse.y" +#line 1615 "objc-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 303: -#line 1648 "objc-parse.y" +#line 1618 "objc-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 304: -#line 1650 "objc-parse.y" +#line 1620 "objc-parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} case 305: -#line 1652 "objc-parse.y" +#line 1622 "objc-parse.y" { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 306: -#line 1654 "objc-parse.y" +#line 1624 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 307: -#line 1656 "objc-parse.y" +#line 1626 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ; break;} case 308: -#line 1658 "objc-parse.y" +#line 1628 "objc-parse.y" { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 309: -#line 1660 "objc-parse.y" +#line 1630 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} case 310: -#line 1662 "objc-parse.y" +#line 1632 "objc-parse.y" { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} case 311: -#line 1666 "objc-parse.y" +#line 1636 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 312: -#line 1675 "objc-parse.y" +#line 1645 "objc-parse.y" { if (pedantic && yyvsp[0].ends_in_label) pedwarn ("ANSI C forbids label at end of compound statement"); ; break;} case 314: -#line 1684 "objc-parse.y" +#line 1654 "objc-parse.y" { yyval.ends_in_label = yyvsp[0].ends_in_label; ; break;} case 315: -#line 1686 "objc-parse.y" +#line 1656 "objc-parse.y" { yyval.ends_in_label = 0; ; break;} case 319: -#line 1698 "objc-parse.y" +#line 1668 "objc-parse.y" { emit_line_note (input_filename, lineno); pushlevel (0); clear_last_expr (); - push_momentary (); expand_start_bindings (0); if (objc_method_context) add_objc_decls (); ; break;} case 321: -#line 1713 "objc-parse.y" +#line 1682 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids label declarations"); ; break;} case 324: -#line 1724 "objc-parse.y" +#line 1693 "objc-parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -3806,49 +3775,37 @@ case 324: ; break;} case 325: -#line 1738 "objc-parse.y" +#line 1707 "objc-parse.y" {; break;} case 327: -#line 1742 "objc-parse.y" +#line 1711 "objc-parse.y" { compstmt_count++; ; break;} case 328: -#line 1745 "objc-parse.y" +#line 1714 "objc-parse.y" { yyval.ttype = convert (void_type_node, integer_zero_node); ; break;} case 329: -#line 1747 "objc-parse.y" +#line 1716 "objc-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); - yyval.ttype = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; + yyval.ttype = poplevel (1, 1, 0); ; break;} case 330: -#line 1755 "objc-parse.y" +#line 1720 "objc-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - yyval.ttype = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; + yyval.ttype = poplevel (kept_level_p (), 0, 0); ; break;} case 331: -#line 1763 "objc-parse.y" +#line 1724 "objc-parse.y" { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - yyval.ttype = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; + yyval.ttype = poplevel (kept_level_p (), 0, 0); ; break;} case 332: -#line 1774 "objc-parse.y" +#line 1731 "objc-parse.y" { if (current_function_decl == 0) { error ("braced-group within expression allowed only inside a function"); @@ -3866,11 +3823,11 @@ case 332: ; break;} case 333: -#line 1791 "objc-parse.y" +#line 1748 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 336: -#line 1805 "objc-parse.y" +#line 1762 "objc-parse.y" { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0, compstmt_count); @@ -3880,7 +3837,7 @@ case 336: position_after_white_space (); ; break;} case 337: -#line 1819 "objc-parse.y" +#line 1776 "objc-parse.y" { stmt_count++; compstmt_count++; emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); @@ -3890,43 +3847,43 @@ case 337: position_after_white_space (); ; break;} case 338: -#line 1827 "objc-parse.y" +#line 1784 "objc-parse.y" { expand_loop_continue_here (); ; break;} case 339: -#line 1831 "objc-parse.y" +#line 1788 "objc-parse.y" { yyval.filename = input_filename; ; break;} case 340: -#line 1835 "objc-parse.y" +#line 1792 "objc-parse.y" { yyval.lineno = lineno; ; break;} case 341: -#line 1840 "objc-parse.y" +#line 1797 "objc-parse.y" { ; break;} case 342: -#line 1845 "objc-parse.y" +#line 1802 "objc-parse.y" { ; break;} case 343: -#line 1850 "objc-parse.y" +#line 1807 "objc-parse.y" { yyval.ends_in_label = yyvsp[0].ends_in_label; ; break;} case 344: -#line 1855 "objc-parse.y" +#line 1812 "objc-parse.y" { yyval.ends_in_label = 0; ; break;} case 345: -#line 1857 "objc-parse.y" +#line 1814 "objc-parse.y" { yyval.ends_in_label = 1; ; break;} case 346: -#line 1863 "objc-parse.y" +#line 1820 "objc-parse.y" { stmt_count++; ; break;} case 348: -#line 1866 "objc-parse.y" +#line 1823 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); /* It appears that this should not be done--that a non-lvalue array @@ -3941,23 +3898,22 @@ case 348: || TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == FUNCTION_TYPE) yyvsp[-1].ttype = default_conversion (yyvsp[-1].ttype); #endif - iterator_expand (yyvsp[-1].ttype); - clear_momentary (); ; + iterator_expand (yyvsp[-1].ttype); ; break;} case 349: -#line 1883 "objc-parse.y" +#line 1839 "objc-parse.y" { c_expand_start_else (); yyvsp[-1].itype = stmt_count; position_after_white_space (); ; break;} case 350: -#line 1887 "objc-parse.y" +#line 1843 "objc-parse.y" { c_expand_end_cond (); if (extra_warnings && stmt_count == yyvsp[-3].itype) warning ("empty body in an else-statement"); ; break;} case 351: -#line 1891 "objc-parse.y" +#line 1847 "objc-parse.y" { c_expand_end_cond (); /* This warning is here instead of in simple_if, because we do not want a warning if an empty if is followed by an @@ -3968,11 +3924,11 @@ case 351: "empty body in an if-statement"); ; break;} case 352: -#line 1903 "objc-parse.y" +#line 1859 "objc-parse.y" { c_expand_end_cond (); ; break;} case 353: -#line 1905 "objc-parse.y" +#line 1861 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno); /* The emit_nop used to come before emit_line_note, @@ -3984,7 +3940,7 @@ case 353: emit_nop (); ; break;} case 354: -#line 1915 "objc-parse.y" +#line 1871 "objc-parse.y" { /* Don't start the loop till we have succeeded in parsing the end test. This is to make sure that we end every loop we start. */ @@ -3995,24 +3951,22 @@ case 354: position_after_white_space (); ; break;} case 355: -#line 1924 "objc-parse.y" +#line 1880 "objc-parse.y" { expand_end_loop (); ; break;} case 356: -#line 1927 "objc-parse.y" +#line 1883 "objc-parse.y" { emit_line_note (input_filename, lineno); expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion (yyvsp[-2].ttype)); - expand_end_loop (); - clear_momentary (); ; + expand_end_loop (); ; break;} case 357: -#line 1934 "objc-parse.y" -{ expand_end_loop (); - clear_momentary (); ; +#line 1889 "objc-parse.y" +{ expand_end_loop (); ; break;} case 358: -#line 1938 "objc-parse.y" +#line 1892 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); /* See comment in `while' alternative, above. */ @@ -4025,12 +3979,12 @@ case 358: ; break;} case 359: -#line 1950 "objc-parse.y" +#line 1904 "objc-parse.y" { yyvsp[0].lineno = lineno; yyval.filename = input_filename; ; break;} case 360: -#line 1953 "objc-parse.y" +#line 1907 "objc-parse.y" { /* Start the loop. Doing this after parsing all the expressions ensures we will end the loop. */ @@ -4040,72 +3994,58 @@ case 360: if (yyvsp[-4].ttype) expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion (yyvsp[-4].ttype)); - /* Don't let the tree nodes for $9 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); yyvsp[-3].lineno = lineno; yyvsp[-2].filename = input_filename; position_after_white_space (); ; break;} case 361: -#line 1969 "objc-parse.y" +#line 1920 "objc-parse.y" { /* Emit the increment expression, with a line number. */ emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno); expand_loop_continue_here (); if (yyvsp[-3].ttype) c_expand_expr_stmt (yyvsp[-3].ttype); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); expand_end_loop (); ; break;} case 362: -#line 1980 "objc-parse.y" +#line 1927 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno); c_expand_start_case (yyvsp[-1].ttype); - /* Don't let the tree nodes for $3 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); position_after_white_space (); ; break;} case 363: -#line 1988 "objc-parse.y" -{ expand_end_case (yyvsp[-3].ttype); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); ; +#line 1932 "objc-parse.y" +{ expand_end_case (yyvsp[-3].ttype); ; break;} case 364: -#line 1994 "objc-parse.y" +#line 1934 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); if ( ! expand_exit_something ()) error ("break statement not within loop or switch"); ; break;} case 365: -#line 1999 "objc-parse.y" +#line 1939 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); if (! expand_continue_loop (NULL_PTR)) error ("continue statement not within a loop"); ; break;} case 366: -#line 2004 "objc-parse.y" +#line 1944 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno); c_expand_return (NULL_TREE); ; break;} case 367: -#line 2008 "objc-parse.y" +#line 1948 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); c_expand_return (yyvsp[-1].ttype); ; break;} case 368: -#line 2012 "objc-parse.y" +#line 1952 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno); STRIP_NOPS (yyvsp[-2].ttype); @@ -4117,7 +4057,7 @@ case 368: error ("argument of `asm' is not a constant string"); ; break;} case 369: -#line 2023 "objc-parse.y" +#line 1963 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno); c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, @@ -4125,7 +4065,7 @@ case 369: input_filename, lineno); ; break;} case 370: -#line 2030 "objc-parse.y" +#line 1970 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno); c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, @@ -4133,7 +4073,7 @@ case 370: input_filename, lineno); ; break;} case 371: -#line 2038 "objc-parse.y" +#line 1978 "objc-parse.y" { stmt_count++; emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno); c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, @@ -4141,7 +4081,7 @@ case 371: input_filename, lineno); ; break;} case 372: -#line 2044 "objc-parse.y" +#line 1984 "objc-parse.y" { tree decl; stmt_count++; emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno); @@ -4154,7 +4094,7 @@ case 372: ; break;} case 373: -#line 2055 "objc-parse.y" +#line 1995 "objc-parse.y" { if (pedantic) pedwarn ("ANSI C forbids `goto *expr;'"); stmt_count++; @@ -4162,7 +4102,7 @@ case 373: expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ; break;} case 376: -#line 2070 "objc-parse.y" +#line 2010 "objc-parse.y" { /* The value returned by this action is */ /* 1 if everything is OK */ @@ -4185,14 +4125,14 @@ case 376: ; break;} case 377: -#line 2091 "objc-parse.y" +#line 2031 "objc-parse.y" { if (yyvsp[-1].itype) iterator_for_loop_end (yyvsp[-3].ttype); ; break;} case 378: -#line 2126 "objc-parse.y" +#line 2062 "objc-parse.y" { register tree value = check_case_value (yyvsp[-1].ttype); register tree label = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE); @@ -4225,7 +4165,7 @@ case 378: position_after_white_space (); ; break;} case 379: -#line 2157 "objc-parse.y" +#line 2093 "objc-parse.y" { register tree value1 = check_case_value (yyvsp[-3].ttype); register tree value2 = check_case_value (yyvsp[-1].ttype); register tree label @@ -4258,7 +4198,7 @@ case 379: position_after_white_space (); ; break;} case 380: -#line 2188 "objc-parse.y" +#line 2124 "objc-parse.y" { tree duplicate; register tree label @@ -4275,7 +4215,7 @@ case 380: position_after_white_space (); ; break;} case 381: -#line 2203 "objc-parse.y" +#line 2139 "objc-parse.y" { tree label = define_label (input_filename, lineno, yyvsp[-2].ttype); stmt_count++; emit_nop (); @@ -4287,52 +4227,52 @@ case 381: position_after_white_space (); ; break;} case 382: -#line 2218 "objc-parse.y" +#line 2154 "objc-parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} case 383: -#line 2221 "objc-parse.y" +#line 2157 "objc-parse.y" { emit_line_note (input_filename, lineno); ; break;} case 384: -#line 2226 "objc-parse.y" +#line 2162 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 386: -#line 2233 "objc-parse.y" +#line 2169 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 389: -#line 2240 "objc-parse.y" +#line 2176 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 390: -#line 2245 "objc-parse.y" +#line 2181 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 391: -#line 2250 "objc-parse.y" +#line 2186 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ; break;} case 392: -#line 2252 "objc-parse.y" +#line 2188 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ; break;} case 393: -#line 2258 "objc-parse.y" +#line 2194 "objc-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (0); ; break;} case 394: -#line 2262 "objc-parse.y" +#line 2198 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} case 396: -#line 2270 "objc-parse.y" +#line 2206 "objc-parse.y" { tree parm; if (pedantic) pedwarn ("ANSI C forbids forward parameter declarations"); @@ -4342,19 +4282,19 @@ case 396: clear_parm_order (); ; break;} case 397: -#line 2278 "objc-parse.y" +#line 2214 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} case 398: -#line 2280 "objc-parse.y" +#line 2216 "objc-parse.y" { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ; break;} case 399: -#line 2286 "objc-parse.y" +#line 2222 "objc-parse.y" { yyval.ttype = get_parm_info (0); ; break;} case 400: -#line 2288 "objc-parse.y" +#line 2224 "objc-parse.y" { yyval.ttype = get_parm_info (0); /* Gcc used to allow this as an extension. However, it does not work for all targets, and thus has been disabled. @@ -4366,90 +4306,85 @@ case 400: ; break;} case 401: -#line 2298 "objc-parse.y" +#line 2234 "objc-parse.y" { yyval.ttype = get_parm_info (1); ; break;} case 402: -#line 2300 "objc-parse.y" +#line 2236 "objc-parse.y" { yyval.ttype = get_parm_info (0); ; break;} case 403: -#line 2305 "objc-parse.y" +#line 2241 "objc-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 404: -#line 2307 "objc-parse.y" +#line 2243 "objc-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 405: -#line 2314 "objc-parse.y" +#line 2250 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 406: -#line 2323 "objc-parse.y" +#line 2258 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 407: -#line 2332 "objc-parse.y" +#line 2266 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 408: -#line 2341 "objc-parse.y" +#line 2274 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 409: -#line 2351 "objc-parse.y" +#line 2283 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 410: -#line 2365 "objc-parse.y" +#line 2296 "objc-parse.y" { pushlevel (0); clear_parm_order (); declare_parm_level (1); ; break;} case 411: -#line 2369 "objc-parse.y" +#line 2300 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; parmlist_tags_warning (); poplevel (0, 0, 0); ; break;} case 413: -#line 2377 "objc-parse.y" +#line 2308 "objc-parse.y" { tree t; for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t)) if (TREE_VALUE (t) == NULL_TREE) @@ -4457,29 +4392,29 @@ case 413: yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ; break;} case 414: -#line 2387 "objc-parse.y" +#line 2318 "objc-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 415: -#line 2389 "objc-parse.y" +#line 2320 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 416: -#line 2395 "objc-parse.y" +#line 2326 "objc-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 417: -#line 2397 "objc-parse.y" +#line 2328 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 418: -#line 2402 "objc-parse.y" +#line 2333 "objc-parse.y" { yyval.ttype = SAVE_WARN_FLAGS(); pedantic = 0; warn_pointer_arith = 0; ; break;} case 424: -#line 2416 "objc-parse.y" +#line 2347 "objc-parse.y" { if (objc_implementation_context) { @@ -4492,27 +4427,27 @@ case 424: ; break;} case 425: -#line 2431 "objc-parse.y" +#line 2362 "objc-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 426: -#line 2433 "objc-parse.y" +#line 2364 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} case 427: -#line 2438 "objc-parse.y" +#line 2369 "objc-parse.y" { objc_declare_class (yyvsp[-1].ttype); ; break;} case 428: -#line 2444 "objc-parse.y" +#line 2375 "objc-parse.y" { objc_declare_alias (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} case 429: -#line 2450 "objc-parse.y" +#line 2381 "objc-parse.y" { objc_interface_context = objc_ivar_context = start_class (CLASS_INTERFACE_TYPE, yyvsp[-2].ttype, NULL_TREE, yyvsp[-1].ttype); @@ -4520,20 +4455,20 @@ case 429: ; break;} case 430: -#line 2456 "objc-parse.y" +#line 2387 "objc-parse.y" { continue_class (objc_interface_context); ; break;} case 431: -#line 2461 "objc-parse.y" +#line 2392 "objc-parse.y" { finish_class (objc_interface_context); objc_interface_context = NULL_TREE; ; break;} case 432: -#line 2467 "objc-parse.y" +#line 2398 "objc-parse.y" { objc_interface_context = start_class (CLASS_INTERFACE_TYPE, yyvsp[-1].ttype, NULL_TREE, yyvsp[0].ttype); @@ -4541,14 +4476,14 @@ case 432: ; break;} case 433: -#line 2474 "objc-parse.y" +#line 2405 "objc-parse.y" { finish_class (objc_interface_context); objc_interface_context = NULL_TREE; ; break;} case 434: -#line 2480 "objc-parse.y" +#line 2411 "objc-parse.y" { objc_interface_context = objc_ivar_context = start_class (CLASS_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[-1].ttype); @@ -4556,20 +4491,20 @@ case 434: ; break;} case 435: -#line 2486 "objc-parse.y" +#line 2417 "objc-parse.y" { continue_class (objc_interface_context); ; break;} case 436: -#line 2491 "objc-parse.y" +#line 2422 "objc-parse.y" { finish_class (objc_interface_context); objc_interface_context = NULL_TREE; ; break;} case 437: -#line 2497 "objc-parse.y" +#line 2428 "objc-parse.y" { objc_interface_context = start_class (CLASS_INTERFACE_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); @@ -4577,14 +4512,14 @@ case 437: ; break;} case 438: -#line 2504 "objc-parse.y" +#line 2435 "objc-parse.y" { finish_class (objc_interface_context); objc_interface_context = NULL_TREE; ; break;} case 439: -#line 2510 "objc-parse.y" +#line 2441 "objc-parse.y" { objc_implementation_context = objc_ivar_context = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-1].ttype, NULL_TREE, NULL_TREE); @@ -4592,14 +4527,14 @@ case 439: ; break;} case 440: -#line 2516 "objc-parse.y" +#line 2447 "objc-parse.y" { objc_ivar_chain = continue_class (objc_implementation_context); ; break;} case 441: -#line 2522 "objc-parse.y" +#line 2453 "objc-parse.y" { objc_implementation_context = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[0].ttype, NULL_TREE, NULL_TREE); @@ -4608,7 +4543,7 @@ case 441: ; break;} case 442: -#line 2530 "objc-parse.y" +#line 2461 "objc-parse.y" { objc_implementation_context = objc_ivar_context = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); @@ -4616,14 +4551,14 @@ case 442: ; break;} case 443: -#line 2536 "objc-parse.y" +#line 2467 "objc-parse.y" { objc_ivar_chain = continue_class (objc_implementation_context); ; break;} case 444: -#line 2542 "objc-parse.y" +#line 2473 "objc-parse.y" { objc_implementation_context = start_class (CLASS_IMPLEMENTATION_TYPE, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); @@ -4632,7 +4567,7 @@ case 444: ; break;} case 445: -#line 2550 "objc-parse.y" +#line 2481 "objc-parse.y" { objc_interface_context = start_class (CATEGORY_INTERFACE_TYPE, yyvsp[-4].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); @@ -4640,14 +4575,14 @@ case 445: ; break;} case 446: -#line 2557 "objc-parse.y" +#line 2488 "objc-parse.y" { finish_class (objc_interface_context); objc_interface_context = NULL_TREE; ; break;} case 447: -#line 2563 "objc-parse.y" +#line 2494 "objc-parse.y" { objc_implementation_context = start_class (CATEGORY_IMPLEMENTATION_TYPE, yyvsp[-3].ttype, yyvsp[-1].ttype, NULL_TREE); @@ -4656,7 +4591,7 @@ case 447: ; break;} case 448: -#line 2573 "objc-parse.y" +#line 2504 "objc-parse.y" { remember_protocol_qualifiers (); objc_interface_context @@ -4664,7 +4599,7 @@ case 448: ; break;} case 449: -#line 2579 "objc-parse.y" +#line 2510 "objc-parse.y" { forget_protocol_qualifiers(); finish_protocol(objc_interface_context); @@ -4672,13 +4607,13 @@ case 449: ; break;} case 450: -#line 2588 "objc-parse.y" +#line 2519 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 452: -#line 2596 "objc-parse.y" +#line 2527 "objc-parse.y" { if (yyvsp[-2].code == LT_EXPR && yyvsp[0].code == GT_EXPR) yyval.ttype = yyvsp[-1].ttype; @@ -4687,56 +4622,54 @@ case 452: ; break;} case 455: -#line 2610 "objc-parse.y" +#line 2541 "objc-parse.y" { objc_public_flag = 2; ; break;} case 456: -#line 2611 "objc-parse.y" +#line 2542 "objc-parse.y" { objc_public_flag = 0; ; break;} case 457: -#line 2612 "objc-parse.y" +#line 2543 "objc-parse.y" { objc_public_flag = 1; ; break;} case 458: -#line 2617 "objc-parse.y" +#line 2548 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 460: -#line 2622 "objc-parse.y" +#line 2553 "objc-parse.y" { if (pedantic) pedwarn ("extra semicolon in struct or union specified"); ; break;} case 461: -#line 2640 "objc-parse.y" +#line 2571 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 462: -#line 2646 "objc-parse.y" +#line 2576 "objc-parse.y" { yyval.ttype = yyvsp[0].ttype; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-1].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 463: -#line 2652 "objc-parse.y" +#line 2581 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 464: -#line 2657 "objc-parse.y" +#line 2586 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 467: -#line 2664 "objc-parse.y" +#line 2593 "objc-parse.y" { yyval.ttype = add_instance_variable (objc_ivar_context, objc_public_flag, @@ -4745,7 +4678,7 @@ case 467: ; break;} case 468: -#line 2671 "objc-parse.y" +#line 2600 "objc-parse.y" { yyval.ttype = add_instance_variable (objc_ivar_context, objc_public_flag, @@ -4753,7 +4686,7 @@ case 468: ; break;} case 469: -#line 2677 "objc-parse.y" +#line 2606 "objc-parse.y" { yyval.ttype = add_instance_variable (objc_ivar_context, objc_public_flag, @@ -4762,7 +4695,7 @@ case 469: ; break;} case 470: -#line 2687 "objc-parse.y" +#line 2616 "objc-parse.y" { remember_protocol_qualifiers (); if (objc_implementation_context) @@ -4772,7 +4705,7 @@ case 470: ; break;} case 471: -#line 2695 "objc-parse.y" +#line 2624 "objc-parse.y" { forget_protocol_qualifiers (); add_class_method (objc_implementation_context, yyvsp[0].ttype); @@ -4781,20 +4714,20 @@ case 471: ; break;} case 472: -#line 2702 "objc-parse.y" +#line 2631 "objc-parse.y" { continue_method_def (); ; break;} case 473: -#line 2706 "objc-parse.y" +#line 2635 "objc-parse.y" { finish_method_def (); objc_method_context = NULL_TREE; ; break;} case 474: -#line 2712 "objc-parse.y" +#line 2641 "objc-parse.y" { remember_protocol_qualifiers (); if (objc_implementation_context) @@ -4804,7 +4737,7 @@ case 474: ; break;} case 475: -#line 2720 "objc-parse.y" +#line 2649 "objc-parse.y" { forget_protocol_qualifiers (); add_instance_method (objc_implementation_context, yyvsp[0].ttype); @@ -4813,28 +4746,28 @@ case 475: ; break;} case 476: -#line 2727 "objc-parse.y" +#line 2656 "objc-parse.y" { continue_method_def (); ; break;} case 477: -#line 2731 "objc-parse.y" +#line 2660 "objc-parse.y" { finish_method_def (); objc_method_context = NULL_TREE; ; break;} case 479: -#line 2743 "objc-parse.y" +#line 2672 "objc-parse.y" {yyval.ttype = NULL_TREE; ; break;} case 484: -#line 2750 "objc-parse.y" +#line 2679 "objc-parse.y" {yyval.ttype = NULL_TREE; ; break;} case 488: -#line 2760 "objc-parse.y" +#line 2689 "objc-parse.y" { /* Remember protocol qualifiers in prototypes. */ remember_protocol_qualifiers (); @@ -4842,7 +4775,7 @@ case 488: ; break;} case 489: -#line 2766 "objc-parse.y" +#line 2695 "objc-parse.y" { /* Forget protocol qualifiers here. */ forget_protocol_qualifiers (); @@ -4850,7 +4783,7 @@ case 489: ; break;} case 491: -#line 2774 "objc-parse.y" +#line 2703 "objc-parse.y" { /* Remember protocol qualifiers in prototypes. */ remember_protocol_qualifiers (); @@ -4858,7 +4791,7 @@ case 491: ; break;} case 492: -#line 2780 "objc-parse.y" +#line 2709 "objc-parse.y" { /* Forget protocol qualifiers here. */ forget_protocol_qualifiers (); @@ -4866,94 +4799,93 @@ case 492: ; break;} case 494: -#line 2790 "objc-parse.y" +#line 2719 "objc-parse.y" { yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} case 495: -#line 2795 "objc-parse.y" +#line 2724 "objc-parse.y" { yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ; break;} case 496: -#line 2800 "objc-parse.y" +#line 2729 "objc-parse.y" { yyval.ttype = build_method_decl (objc_inherit_code, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 497: -#line 2805 "objc-parse.y" +#line 2734 "objc-parse.y" { yyval.ttype = build_method_decl (objc_inherit_code, NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 506: -#line 2835 "objc-parse.y" +#line 2764 "objc-parse.y" { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary (yyvsp[-2].itype); ; + declspec_stack = TREE_CHAIN (declspec_stack); ; break;} case 507: -#line 2840 "objc-parse.y" +#line 2768 "objc-parse.y" { shadow_tag (yyvsp[-1].ttype); ; break;} case 508: -#line 2842 "objc-parse.y" +#line 2770 "objc-parse.y" { pedwarn ("empty declaration"); ; break;} case 509: -#line 2847 "objc-parse.y" +#line 2775 "objc-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 510: -#line 2849 "objc-parse.y" +#line 2777 "objc-parse.y" { push_parm_decl (yyvsp[0].ttype); ; break;} case 511: -#line 2857 "objc-parse.y" +#line 2785 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); ; break;} case 512: -#line 2862 "objc-parse.y" +#line 2790 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); ; break;} case 513: -#line 2867 "objc-parse.y" +#line 2795 "objc-parse.y" { yyval.ttype = build_tree_list (build_tree_list (current_declspecs, yyvsp[-1].ttype), build_tree_list (prefix_attributes, yyvsp[0].ttype)); ; break;} case 514: -#line 2875 "objc-parse.y" +#line 2803 "objc-parse.y" { yyval.ttype = NULL_TREE; ; break;} case 515: -#line 2879 "objc-parse.y" +#line 2807 "objc-parse.y" { /* oh what a kludge! */ yyval.ttype = (tree)1; ; break;} case 516: -#line 2884 "objc-parse.y" +#line 2812 "objc-parse.y" { pushlevel (0); ; break;} case 517: -#line 2888 "objc-parse.y" +#line 2816 "objc-parse.y" { /* returns a tree list node generated by get_parm_info */ yyval.ttype = yyvsp[0].ttype; @@ -4961,119 +4893,119 @@ case 517: ; break;} case 520: -#line 2903 "objc-parse.y" +#line 2831 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 525: -#line 2916 "objc-parse.y" +#line 2844 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 526: -#line 2917 "objc-parse.y" +#line 2845 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 527: -#line 2918 "objc-parse.y" +#line 2846 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 528: -#line 2919 "objc-parse.y" +#line 2847 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 529: -#line 2920 "objc-parse.y" +#line 2848 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 530: -#line 2921 "objc-parse.y" +#line 2849 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 531: -#line 2922 "objc-parse.y" +#line 2850 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 532: -#line 2923 "objc-parse.y" +#line 2851 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 533: -#line 2924 "objc-parse.y" +#line 2852 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 534: -#line 2925 "objc-parse.y" +#line 2853 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 535: -#line 2926 "objc-parse.y" +#line 2854 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 536: -#line 2927 "objc-parse.y" +#line 2855 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 537: -#line 2928 "objc-parse.y" +#line 2856 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 538: -#line 2929 "objc-parse.y" +#line 2857 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 539: -#line 2930 "objc-parse.y" +#line 2858 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 540: -#line 2931 "objc-parse.y" +#line 2859 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 541: -#line 2932 "objc-parse.y" +#line 2860 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 542: -#line 2933 "objc-parse.y" +#line 2861 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 543: -#line 2934 "objc-parse.y" +#line 2862 "objc-parse.y" { yyval.ttype = get_identifier (token_buffer); ; break;} case 546: -#line 2940 "objc-parse.y" +#line 2868 "objc-parse.y" { yyval.ttype = build_keyword_decl (yyvsp[-5].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 547: -#line 2945 "objc-parse.y" +#line 2873 "objc-parse.y" { yyval.ttype = build_keyword_decl (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype); ; break;} case 548: -#line 2950 "objc-parse.y" +#line 2878 "objc-parse.y" { yyval.ttype = build_keyword_decl (NULL_TREE, yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 549: -#line 2955 "objc-parse.y" +#line 2883 "objc-parse.y" { yyval.ttype = build_keyword_decl (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; break;} case 553: -#line 2968 "objc-parse.y" +#line 2896 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 554: -#line 2976 "objc-parse.y" +#line 2904 "objc-parse.y" { if (TREE_CHAIN (yyvsp[0].ttype) == NULL_TREE) /* just return the expr., remove a level of indirection */ @@ -5084,76 +5016,76 @@ case 554: ; break;} case 555: -#line 2988 "objc-parse.y" +#line 2916 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} case 556: -#line 2992 "objc-parse.y" +#line 2920 "objc-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; break;} case 558: -#line 3000 "objc-parse.y" +#line 2928 "objc-parse.y" { yyval.ttype = get_class_reference (yyvsp[0].ttype); ; break;} case 559: -#line 3007 "objc-parse.y" +#line 2935 "objc-parse.y" { objc_receiver_context = 1; ; break;} case 560: -#line 3009 "objc-parse.y" +#line 2937 "objc-parse.y" { objc_receiver_context = 0; ; break;} case 561: -#line 3011 "objc-parse.y" +#line 2939 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} case 565: -#line 3024 "objc-parse.y" +#line 2952 "objc-parse.y" { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} case 566: -#line 3031 "objc-parse.y" +#line 2959 "objc-parse.y" { yyval.ttype = build_tree_list (yyvsp[-1].ttype, NULL_TREE); ; break;} case 567: -#line 3035 "objc-parse.y" +#line 2963 "objc-parse.y" { yyval.ttype = build_tree_list (NULL_TREE, NULL_TREE); ; break;} case 568: -#line 3042 "objc-parse.y" +#line 2970 "objc-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 569: -#line 3049 "objc-parse.y" +#line 2977 "objc-parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} case 570: -#line 3058 "objc-parse.y" +#line 2986 "objc-parse.y" { yyval.ttype = groktypename (yyvsp[-1].ttype); ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 542 "/usr/share/bison.simple" +#line 543 "/usr/share/misc/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -5373,5 +5305,5 @@ yyerrhandle: } return 1; } -#line 3063 "objc-parse.y" +#line 2991 "objc-parse.y" diff --git a/gcc/objc/objc-parse.y b/gcc/objc/objc-parse.y index 1b03e8c..79361ef 100644 --- a/gcc/objc/objc-parse.y +++ b/gcc/objc/objc-parse.y @@ -303,18 +303,15 @@ datadef: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods ';' { pedwarn ("empty declaration"); } | typed_declspecs ';' @@ -329,7 +326,7 @@ datadef: fndef: typed_declspecs setspecs declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -338,16 +335,14 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator { if (! start_function (current_declspecs, $3, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -356,16 +351,14 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator { if (! start_function (NULL_TREE, $2, - prefix_attributes, NULL_TREE, 0)) + prefix_attributes, NULL_TREE)) YYERROR1; reinit_parse_for_function (); } old_style_parm_decls @@ -374,13 +367,11 @@ fndef: { finish_function (0); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } | setspecs notype_declarator error { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($1); } + declspec_stack = TREE_CHAIN (declspec_stack); } ; identifier: @@ -904,13 +895,11 @@ datadecl: typed_declspecs_no_prefix_attr setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods_no_prefix_attr setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs_no_prefix_attr ';' { shadow_tag_warned ($1, 1); pedwarn ("empty declaration"); } @@ -939,8 +928,7 @@ decls: Maintains a stack of outer-level values of current_declspecs, for the sake of parm declarations nested in function declarators. */ setspecs: /* empty */ - { $$ = suspend_momentary (); - pending_xref_error (); + { pending_xref_error (); declspec_stack = tree_cons (prefix_attributes, current_declspecs, declspec_stack); @@ -957,23 +945,19 @@ decl: typed_declspecs setspecs initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_initdecls ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs nested_function { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_nested_function { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs ';' { shadow_tag ($1); } | declmods ';' @@ -1215,18 +1199,9 @@ any_word: init: expr_no_commas | '{' - { really_start_incremental_init (NULL_TREE); - /* Note that the call to clear_momentary - is in process_init_element. */ - push_momentary (); } + { really_start_incremental_init (NULL_TREE); } initlist_maybe_comma '}' - { $$ = pop_init_level (0); - if ($$ == error_mark_node - && ! (yychar == STRING || yychar == CONSTANT)) - pop_momentary (); - else - pop_momentary_nofree (); } - + { $$ = pop_init_level (0); } | error { $$ = error_mark_node; } ; @@ -1285,7 +1260,7 @@ nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -1311,7 +1286,7 @@ notype_nested_function: push_function_context (); if (! start_function (current_declspecs, $1, - prefix_attributes, NULL_TREE, 1)) + prefix_attributes, NULL_TREE)) { pop_function_context (); YYERROR1; @@ -1464,17 +1439,15 @@ structsp: | union_head identifier { $$ = xref_tag (UNION_TYPE, $2); } | enum_head identifier '{' - { $3 = suspend_momentary (); - $$ = start_enum ($2); } + { $$ = start_enum ($2); } enumlist maybecomma_warn '}' maybe_attribute - { $$= finish_enum ($4, nreverse ($5), chainon ($1, $8)); - resume_momentary ($3); } + { $$ = finish_enum ($4, nreverse ($5), + chainon ($1, $8)); } | enum_head '{' - { $2 = suspend_momentary (); - $$ = start_enum (NULL_TREE); } + { $$ = start_enum (NULL_TREE); } enumlist maybecomma_warn '}' maybe_attribute - { $$= finish_enum ($3, nreverse ($4), chainon ($1, $7)); - resume_momentary ($2); } + { $$ = finish_enum ($3, nreverse ($4), + chainon ($1, $7)); } | enum_head identifier { $$ = xref_tag (ENUMERAL_TYPE, $2); } ; @@ -1536,8 +1509,7 @@ component_decl: { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_typespecs setspecs save_filename save_lineno maybe_attribute { /* Support for unnamed structs or unions as members of @@ -1550,14 +1522,12 @@ component_decl: current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } | nonempty_type_quals setspecs components { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | nonempty_type_quals { if (pedantic) pedwarn ("ANSI C forbids member declarations with no members"); @@ -1698,7 +1668,6 @@ pushlevel: /* empty */ { emit_line_note (input_filename, lineno); pushlevel (0); clear_last_expr (); - push_momentary (); expand_start_bindings (0); if (objc_method_context) add_objc_decls (); @@ -1746,27 +1715,15 @@ compstmt_nostart: '}' | pushlevel maybe_label_decls decls xstmts '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); - $$ = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (1, 1, 0); } | pushlevel maybe_label_decls error '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - $$ = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (kept_level_p (), 0, 0); } | pushlevel maybe_label_decls stmts '}' { emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), kept_level_p (), 0); - $$ = poplevel (kept_level_p (), 0, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + $$ = poplevel (kept_level_p (), 0, 0); } ; compstmt_primary_start: @@ -1877,8 +1834,7 @@ stmt: || TREE_CODE (TREE_TYPE ($1)) == FUNCTION_TYPE) $1 = default_conversion ($1); #endif - iterator_expand ($1); - clear_momentary (); } + iterator_expand ($1); } | simple_if ELSE { c_expand_start_else (); $1 = stmt_count; @@ -1927,12 +1883,10 @@ stmt: { emit_line_note (input_filename, lineno); expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion ($3)); - expand_end_loop (); - clear_momentary (); } + expand_end_loop (); } /* This rule is needed to make sure we end every loop we start. */ | do_stmt_start error - { expand_end_loop (); - clear_momentary (); } + { expand_end_loop (); } | FOR '(' xexpr ';' { stmt_count++; @@ -1959,9 +1913,6 @@ stmt: if ($6) expand_exit_loop_if_false (NULL_PTR, truthvalue_conversion ($6)); - /* Don't let the tree nodes for $9 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); $7 = lineno; $8 = input_filename; position_after_white_space (); } @@ -1971,25 +1922,14 @@ stmt: expand_loop_continue_here (); if ($9) c_expand_expr_stmt ($9); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); expand_end_loop (); } | SWITCH '(' expr ')' { stmt_count++; emit_line_note ($-1, $0); c_expand_start_case ($3); - /* Don't let the tree nodes for $3 be discarded by - clear_momentary during the parsing of the next stmt. */ - push_momentary (); position_after_white_space (); } lineno_labeled_stmt - { expand_end_case ($3); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } + { expand_end_case ($3); } | BREAK ';' { stmt_count++; emit_line_note ($-1, $0); @@ -2111,10 +2051,6 @@ all_iter_stmt_with_decl: emit_line_note (input_filename, lineno); expand_end_bindings (getdecls (), 1, 0); $$ = poplevel (1, 1, 0); - if (yychar == CONSTANT || yychar == STRING) - pop_momentary_nofree (); - else - pop_momentary (); } */ @@ -2317,8 +2253,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2326,8 +2261,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs setspecs absdcl maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2335,8 +2269,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs notype_declarator maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, $3), @@ -2344,8 +2277,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | declmods setspecs absdcl maybe_attribute { $$ = build_tree_list (build_tree_list (current_declspecs, @@ -2354,8 +2286,7 @@ parm: $4)); current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } ; /* This is used in a function definition @@ -2640,14 +2571,12 @@ ivar_decl: { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | nonempty_type_quals setspecs ivars { $$ = $3; current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | error { $$ = NULL_TREE; } ; @@ -2834,8 +2763,7 @@ mydecl: typed_declspecs setspecs myparms ';' { current_declspecs = TREE_VALUE (declspec_stack); prefix_attributes = TREE_PURPOSE (declspec_stack); - declspec_stack = TREE_CHAIN (declspec_stack); - resume_momentary ($2); } + declspec_stack = TREE_CHAIN (declspec_stack); } | typed_declspecs ';' { shadow_tag ($1); } | declmods ';' -- 2.7.4