Commit 9e0781b5 by Jason Merrill Committed by Jason Merrill

cp-tree.h (IDENTIFIER_AS_DESC, [...]): Remove cruft.

	* cp-tree.h (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST,
	CLASSTYPE_BASELINK_VEC, CLASSTYPE_N_SUPERCLASSES,
	CLASSTYPE_N_BASECLASSES, CLASSTYPE_MAX_DEPTH,
	CLASSTYPE_BASE_INIT_LIST, CLASSTYPE_AS_LIST, CLASSTYPE_ID_AS_LIST,
	CLASSTYPE_BINFO_AS_LIST): Remove cruft.
	* class.c, lex.c, parse.y, ptree.c, search.c, semantics.c,
	tree.c: Adjust.

From-SVN: r26071
parent fa848ee0
1999-03-30 Jason Merrill <jason@yorick.cygnus.com>
* cp-tree.h (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST,
CLASSTYPE_BASELINK_VEC, CLASSTYPE_N_SUPERCLASSES,
CLASSTYPE_N_BASECLASSES, CLASSTYPE_MAX_DEPTH,
CLASSTYPE_BASE_INIT_LIST, CLASSTYPE_AS_LIST, CLASSTYPE_ID_AS_LIST,
CLASSTYPE_BINFO_AS_LIST): Remove cruft.
* class.c, lex.c, parse.y, ptree.c, search.c, semantics.c,
tree.c: Adjust.
1999-03-29 Jason Merrill <jason@yorick.cygnus.com> 1999-03-29 Jason Merrill <jason@yorick.cygnus.com>
* decl2.c (lang_decode_option): Remove -Wsign-promo from -Wall. * decl2.c (lang_decode_option): Remove -Wsign-promo from -Wall.
......
...@@ -1295,18 +1295,6 @@ add_method (type, fields, method) ...@@ -1295,18 +1295,6 @@ add_method (type, fields, method)
/* Actually insert the new method. */ /* Actually insert the new method. */
TREE_VEC_ELT (method_vec, slot) TREE_VEC_ELT (method_vec, slot)
= build_overload (method, TREE_VEC_ELT (method_vec, slot)); = build_overload (method, TREE_VEC_ELT (method_vec, slot));
if (TYPE_BINFO_BASETYPES (type) && CLASSTYPE_BASELINK_VEC (type))
{
/* ??? May be better to know whether these can be extended? */
tree baselink_vec = CLASSTYPE_BASELINK_VEC (type);
TREE_VEC_LENGTH (baselink_vec) += 1;
CLASSTYPE_BASELINK_VEC (type) = copy_node (baselink_vec);
TREE_VEC_LENGTH (baselink_vec) -= 1;
TREE_VEC_ELT (CLASSTYPE_BASELINK_VEC (type), len) = 0;
}
} }
pop_obstacks (); pop_obstacks ();
} }
...@@ -1641,10 +1629,6 @@ build_class_init_list (type) ...@@ -1641,10 +1629,6 @@ build_class_init_list (type)
continue; continue;
} }
if ((blist = CLASSTYPE_BASE_INIT_LIST (BINFO_TYPE (base_binfo))) == NULL_TREE)
/* Nothing to initialize. */
continue;
/* ...ditto... */ /* ...ditto... */
base_init_list = maybe_fixup_vptrs (type, base_binfo, base_init_list); base_init_list = maybe_fixup_vptrs (type, base_binfo, base_init_list);
...@@ -1687,30 +1671,15 @@ build_class_init_list (type) ...@@ -1687,30 +1671,15 @@ build_class_init_list (type)
/* The function expand_aggr_init knows how to do the /* The function expand_aggr_init knows how to do the
initialization of `basetype' without getting initialization of `basetype' without getting
an explicit `blist'. */ an explicit `blist'. */
if (base_init_list)
base_init_list = tree_cons (NULL_TREE, base_binfo, base_init_list); base_init_list = tree_cons (NULL_TREE, base_binfo, base_init_list);
else
base_init_list = CLASSTYPE_BINFO_AS_LIST (BINFO_TYPE (base_binfo));
} }
} }
if (base_init_list)
{
if (member_init_list)
CLASSTYPE_BASE_INIT_LIST (type) =
build_tree_list (base_init_list, member_init_list);
else
CLASSTYPE_BASE_INIT_LIST (type) = base_init_list;
}
else if (member_init_list)
CLASSTYPE_BASE_INIT_LIST (type) = member_init_list;
} }
struct base_info struct base_info
{ {
int has_virtual; int has_virtual;
int max_has_virtual; int max_has_virtual;
int n_ancestors;
tree vfield; tree vfield;
tree vfields; tree vfields;
tree rtti; tree rtti;
...@@ -1793,7 +1762,6 @@ finish_base_struct (t, b) ...@@ -1793,7 +1762,6 @@ finish_base_struct (t, b)
&& !TYPE_HAS_CONST_ASSIGN_REF (basetype)) && !TYPE_HAS_CONST_ASSIGN_REF (basetype))
b->no_const_asn_ref = 1; b->no_const_asn_ref = 1;
b->n_ancestors += CLASSTYPE_N_SUPERCLASSES (basetype);
TYPE_NEEDS_CONSTRUCTING (t) |= TYPE_NEEDS_CONSTRUCTING (basetype); TYPE_NEEDS_CONSTRUCTING (t) |= TYPE_NEEDS_CONSTRUCTING (basetype);
TYPE_NEEDS_DESTRUCTOR (t) |= TYPE_NEEDS_DESTRUCTOR (basetype); TYPE_NEEDS_DESTRUCTOR (t) |= TYPE_NEEDS_DESTRUCTOR (basetype);
TYPE_HAS_COMPLEX_ASSIGN_REF (t) |= TYPE_HAS_COMPLEX_ASSIGN_REF (basetype); TYPE_HAS_COMPLEX_ASSIGN_REF (t) |= TYPE_HAS_COMPLEX_ASSIGN_REF (basetype);
...@@ -1803,9 +1771,6 @@ finish_base_struct (t, b) ...@@ -1803,9 +1771,6 @@ finish_base_struct (t, b)
TYPE_OVERLOADS_ARRAY_REF (t) |= TYPE_OVERLOADS_ARRAY_REF (basetype); TYPE_OVERLOADS_ARRAY_REF (t) |= TYPE_OVERLOADS_ARRAY_REF (basetype);
TYPE_OVERLOADS_ARROW (t) |= TYPE_OVERLOADS_ARROW (basetype); TYPE_OVERLOADS_ARROW (t) |= TYPE_OVERLOADS_ARROW (basetype);
if (! TREE_VIA_VIRTUAL (base_binfo))
CLASSTYPE_N_SUPERCLASSES (t) += 1;
if (TYPE_VIRTUAL_P (basetype)) if (TYPE_VIRTUAL_P (basetype))
{ {
/* Ensure that this is set from at least a virtual base /* Ensure that this is set from at least a virtual base
...@@ -1960,14 +1925,14 @@ finish_struct_bits (t, max_has_virtual) ...@@ -1960,14 +1925,14 @@ finish_struct_bits (t, max_has_virtual)
if (n_baseclasses && max_has_virtual) if (n_baseclasses && max_has_virtual)
{ {
/* for a class w/o baseclasses, `finish_struct' has set /* For a class w/o baseclasses, `finish_struct' has set
* CLASS_TYPE_ABSTRACT_VIRTUALS correctly (by definition). Similarly CLASS_TYPE_ABSTRACT_VIRTUALS correctly (by definition). Similarly
* for a class who's base classes do not have vtables. When neither of for a class who's base classes do not have vtables. When neither
* these is true, we might have removed abstract virtuals (by of these is true, we might have removed abstract virtuals (by
* providing a definition), added some (by declaring new ones), or providing a definition), added some (by declaring new ones), or
* redeclared ones from a base class. We need to recalculate what's redeclared ones from a base class. We need to recalculate what's
* really an abstract virtual at this point (by looking in the vtables). really an abstract virtual at this point (by looking in the
*/ vtables). */
CLASSTYPE_ABSTRACT_VIRTUALS (t) = get_abstract_virtuals (t); CLASSTYPE_ABSTRACT_VIRTUALS (t) = get_abstract_virtuals (t);
} }
...@@ -1983,8 +1948,6 @@ finish_struct_bits (t, max_has_virtual) ...@@ -1983,8 +1948,6 @@ finish_struct_bits (t, max_has_virtual)
basetype = BINFO_TYPE (TREE_VEC_ELT (binfos, i)); basetype = BINFO_TYPE (TREE_VEC_ELT (binfos, i));
TYPE_HAS_CONVERSION (t) |= TYPE_HAS_CONVERSION (basetype); TYPE_HAS_CONVERSION (t) |= TYPE_HAS_CONVERSION (basetype);
if (CLASSTYPE_MAX_DEPTH (basetype) >= CLASSTYPE_MAX_DEPTH (t))
CLASSTYPE_MAX_DEPTH (t) = CLASSTYPE_MAX_DEPTH (basetype) + 1;
} }
} }
...@@ -2185,7 +2148,6 @@ finish_struct_methods (t) ...@@ -2185,7 +2148,6 @@ finish_struct_methods (t)
tree fn_fields; tree fn_fields;
tree method_vec = CLASSTYPE_METHOD_VEC (t); tree method_vec = CLASSTYPE_METHOD_VEC (t);
tree ctor_name = constructor_name (t); tree ctor_name = constructor_name (t);
int i, n_baseclasses = CLASSTYPE_N_BASECLASSES (t);
/* First fill in entry 0 with the constructors, entry 1 with destructors, /* First fill in entry 0 with the constructors, entry 1 with destructors,
and the next few with type conversion operators (if any). */ and the next few with type conversion operators (if any). */
...@@ -2244,34 +2206,6 @@ finish_struct_methods (t) ...@@ -2244,34 +2206,6 @@ finish_struct_methods (t)
/* Issue warnings about private constructors and such. If there are /* Issue warnings about private constructors and such. If there are
no methods, then some public defaults are generated. */ no methods, then some public defaults are generated. */
maybe_warn_about_overly_private_class (t); maybe_warn_about_overly_private_class (t);
/* Now for each member function (except for constructors and
destructors), compute where member functions of the same
name reside in base classes. */
if (n_baseclasses != 0
&& method_vec
&& TREE_VEC_LENGTH (method_vec) > 2)
{
int len = TREE_VEC_LENGTH (method_vec);
tree baselink_vec = make_tree_vec (len);
int any_links = 0;
tree baselink_binfo = build_tree_list (NULL_TREE, TYPE_BINFO (t));
for (i = 2; i < len && TREE_VEC_ELT (method_vec, i); i++)
{
tree ovl = TREE_VEC_ELT (method_vec, i);
TREE_VEC_ELT (baselink_vec, i)
= get_baselinks (baselink_binfo, t,
DECL_NAME (OVL_CURRENT (ovl)));
if (TREE_VEC_ELT (baselink_vec, i) != 0)
any_links = 1;
}
if (any_links != 0)
CLASSTYPE_BASELINK_VEC (t) = baselink_vec;
else
obstack_free (current_obstack, baselink_vec);
}
} }
/* Emit error when a duplicate definition of a type is seen. Patch up. */ /* Emit error when a duplicate definition of a type is seen. Patch up. */
...@@ -2310,18 +2244,14 @@ duplicate_tag_error (t) ...@@ -2310,18 +2244,14 @@ duplicate_tag_error (t)
if (TYPE_LANG_SPECIFIC (t)) if (TYPE_LANG_SPECIFIC (t))
{ {
tree as_list = CLASSTYPE_AS_LIST (t);
tree binfo = TYPE_BINFO (t); tree binfo = TYPE_BINFO (t);
tree binfo_as_list = CLASSTYPE_BINFO_AS_LIST (t);
int interface_only = CLASSTYPE_INTERFACE_ONLY (t); int interface_only = CLASSTYPE_INTERFACE_ONLY (t);
int interface_unknown = CLASSTYPE_INTERFACE_UNKNOWN (t); int interface_unknown = CLASSTYPE_INTERFACE_UNKNOWN (t);
bzero ((char *) TYPE_LANG_SPECIFIC (t), sizeof (struct lang_type)); bzero ((char *) TYPE_LANG_SPECIFIC (t), sizeof (struct lang_type));
BINFO_BASETYPES(binfo) = NULL_TREE; BINFO_BASETYPES(binfo) = NULL_TREE;
CLASSTYPE_AS_LIST (t) = as_list;
TYPE_BINFO (t) = binfo; TYPE_BINFO (t) = binfo;
CLASSTYPE_BINFO_AS_LIST (t) = binfo_as_list;
CLASSTYPE_INTERFACE_ONLY (t) = interface_only; CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, interface_unknown); SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, interface_unknown);
TYPE_REDEFINED (t) = 1; TYPE_REDEFINED (t) = 1;
...@@ -3370,7 +3300,6 @@ finish_struct_1 (t, warn_anon) ...@@ -3370,7 +3300,6 @@ finish_struct_1 (t, warn_anon)
CLASSTYPE_VFIELD_PARENT (t) = first_vfn_base_index; CLASSTYPE_VFIELD_PARENT (t) = first_vfn_base_index;
has_virtual = base_info.has_virtual; has_virtual = base_info.has_virtual;
max_has_virtual = base_info.max_has_virtual; max_has_virtual = base_info.max_has_virtual;
CLASSTYPE_N_SUPERCLASSES (t) += base_info.n_ancestors;
vfield = base_info.vfield; vfield = base_info.vfield;
vfields = base_info.vfields; vfields = base_info.vfields;
CLASSTYPE_RTTI (t) = base_info.rtti; CLASSTYPE_RTTI (t) = base_info.rtti;
...@@ -3899,7 +3828,7 @@ finish_struct_1 (t, warn_anon) ...@@ -3899,7 +3828,7 @@ finish_struct_1 (t, warn_anon)
fields = vfield; fields = vfield;
#endif #endif
empty = 0; empty = 0;
vfields = chainon (vfields, CLASSTYPE_AS_LIST (t)); vfields = chainon (vfields, build_tree_list (NULL_TREE, t));
} }
/* Now DECL_INITIAL is null on all members except for zero-width bit-fields. /* Now DECL_INITIAL is null on all members except for zero-width bit-fields.
...@@ -4014,7 +3943,6 @@ finish_struct_1 (t, warn_anon) ...@@ -4014,7 +3943,6 @@ finish_struct_1 (t, warn_anon)
tree vbases; tree vbases;
vbases = CLASSTYPE_VBASECLASSES (t); vbases = CLASSTYPE_VBASECLASSES (t);
CLASSTYPE_N_VBASECLASSES (t) = list_length (vbases);
{ {
/* Now fixup overrides of all functions in vtables from all /* Now fixup overrides of all functions in vtables from all
......
...@@ -104,7 +104,7 @@ struct lang_identifier ...@@ -104,7 +104,7 @@ struct lang_identifier
struct lang_id2 struct lang_id2
{ {
tree label_value, implicit_decl; tree label_value, implicit_decl;
tree type_desc, as_list, error_locus; tree error_locus;
}; };
typedef struct typedef struct
...@@ -278,14 +278,6 @@ struct tree_srcloc ...@@ -278,14 +278,6 @@ struct tree_srcloc
#define SET_IDENTIFIER_IMPLICIT_DECL(NODE,VALUE) \ #define SET_IDENTIFIER_IMPLICIT_DECL(NODE,VALUE) \
SET_LANG_ID(NODE, VALUE, implicit_decl) SET_LANG_ID(NODE, VALUE, implicit_decl)
#define IDENTIFIER_AS_DESC(NODE) LANG_ID_FIELD(type_desc, NODE)
#define SET_IDENTIFIER_AS_DESC(NODE,DESC) \
SET_LANG_ID(NODE, DESC, type_desc)
#define IDENTIFIER_AS_LIST(NODE) LANG_ID_FIELD(as_list, NODE)
#define SET_IDENTIFIER_AS_LIST(NODE,LIST) \
SET_LANG_ID(NODE, LIST, as_list)
#define IDENTIFIER_ERROR_LOCUS(NODE) LANG_ID_FIELD(error_locus, NODE) #define IDENTIFIER_ERROR_LOCUS(NODE) LANG_ID_FIELD(error_locus, NODE)
#define SET_IDENTIFIER_ERROR_LOCUS(NODE,VALUE) \ #define SET_IDENTIFIER_ERROR_LOCUS(NODE,VALUE) \
SET_LANG_ID(NODE, VALUE, error_locus) SET_LANG_ID(NODE, VALUE, error_locus)
...@@ -737,13 +729,9 @@ struct lang_type ...@@ -737,13 +729,9 @@ struct lang_type
unsigned dummy : 11; unsigned dummy : 11;
} type_flags; } type_flags;
int n_ancestors;
int n_vancestors;
int vsize; int vsize;
int max_depth;
int vfield_parent; int vfield_parent;
union tree_node *baselink_vec;
union tree_node *vfields; union tree_node *vfields;
union tree_node *vbases; union tree_node *vbases;
...@@ -756,11 +744,7 @@ struct lang_type ...@@ -756,11 +744,7 @@ struct lang_type
union tree_node *size; union tree_node *size;
union tree_node *base_init_list;
union tree_node *abstract_virtuals; union tree_node *abstract_virtuals;
union tree_node *as_list;
union tree_node *id_as_list;
union tree_node *binfo_as_list;
union tree_node *friend_classes; union tree_node *friend_classes;
union tree_node *rtti; union tree_node *rtti;
...@@ -862,7 +846,7 @@ struct lang_type ...@@ -862,7 +846,7 @@ struct lang_type
signature reference type. */ signature reference type. */
#define SIGNATURE_REFERENCE_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_reference_to) #define SIGNATURE_REFERENCE_TO(NODE) (TYPE_LANG_SPECIFIC(NODE)->signature_reference_to)
/* The is the VAR_DECL that contains NODE's rtti. */ /* The is the basetype that contains NODE's rtti. */
#define CLASSTYPE_RTTI(NODE) (TYPE_LANG_SPECIFIC(NODE)->rtti) #define CLASSTYPE_RTTI(NODE) (TYPE_LANG_SPECIFIC(NODE)->rtti)
/* Nonzero means that this _CLASSTYPE node overloads operator(). */ /* Nonzero means that this _CLASSTYPE node overloads operator(). */
...@@ -900,10 +884,6 @@ struct lang_type ...@@ -900,10 +884,6 @@ struct lang_type
? TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (NODE), 2) \ ? TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (NODE), 2) \
: NULL_TREE; : NULL_TREE;
/* Pointer from any member function to the head of the list of
member functions of the type that member function belongs to. */
#define CLASSTYPE_BASELINK_VEC(NODE) (TYPE_LANG_SPECIFIC(NODE)->baselink_vec)
/* Mark bits for depth-first and breath-first searches. */ /* Mark bits for depth-first and breath-first searches. */
/* Get the value of the Nth mark bit. */ /* Get the value of the Nth mark bit. */
...@@ -974,17 +954,6 @@ struct lang_type ...@@ -974,17 +954,6 @@ struct lang_type
#define CLASSTYPE_N_BASECLASSES(NODE) \ #define CLASSTYPE_N_BASECLASSES(NODE) \
(TYPE_BINFO_BASETYPES (NODE) ? TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES(NODE)) : 0) (TYPE_BINFO_BASETYPES (NODE) ? TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES(NODE)) : 0)
/* Memoize the number of super classes (base classes) that this node
has. That way we can know immediately (albeit conservatively how
large a multiple-inheritance matrix we need to build to find
derivation information. */
#define CLASSTYPE_N_SUPERCLASSES(NODE) (TYPE_LANG_SPECIFIC(NODE)->n_ancestors)
#define CLASSTYPE_N_VBASECLASSES(NODE) (TYPE_LANG_SPECIFIC(NODE)->n_vancestors)
/* Record how deep the inheritance is for this class so `void*' conversions
are less favorable than a conversion to the most base type. */
#define CLASSTYPE_MAX_DEPTH(NODE) (TYPE_LANG_SPECIFIC(NODE)->max_depth)
/* Used for keeping search-specific information. Any search routine /* Used for keeping search-specific information. Any search routine
which uses this must define what exactly this slot is used for. */ which uses this must define what exactly this slot is used for. */
#define CLASSTYPE_SEARCH_SLOT(NODE) (TYPE_LANG_SPECIFIC(NODE)->search_slot) #define CLASSTYPE_SEARCH_SLOT(NODE) (TYPE_LANG_SPECIFIC(NODE)->search_slot)
...@@ -994,17 +963,6 @@ struct lang_type ...@@ -994,17 +963,6 @@ struct lang_type
#define CLASSTYPE_SIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->size) #define CLASSTYPE_SIZE(NODE) (TYPE_LANG_SPECIFIC(NODE)->size)
#define CLASSTYPE_ALIGN(NODE) (TYPE_LANG_SPECIFIC(NODE)->align) #define CLASSTYPE_ALIGN(NODE) (TYPE_LANG_SPECIFIC(NODE)->align)
/* A cons list of structure elements which either have constructors
to be called, or virtual function table pointers which
need initializing. Depending on what is being initialized,
the TREE_PURPOSE and TREE_VALUE fields have different meanings:
Member initialization: <FIELD_DECL, TYPE>
Base class construction: <NULL_TREE, BASETYPE>
Base class initialization: <BASE_INITIALIZATION, THESE_INITIALIZATIONS>
Whole type: <MEMBER_INIT, BASE_INIT>. */
#define CLASSTYPE_BASE_INIT_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->base_init_list)
/* A cons list of virtual functions which cannot be inherited by /* A cons list of virtual functions which cannot be inherited by
derived classes. When deriving from this type, the derived derived classes. When deriving from this type, the derived
class must provide its own definition for each of these functions. */ class must provide its own definition for each of these functions. */
...@@ -1038,16 +996,6 @@ struct lang_type ...@@ -1038,16 +996,6 @@ struct lang_type
#define CLASSTYPE_HAS_MUTABLE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_mutable) #define CLASSTYPE_HAS_MUTABLE(NODE) (TYPE_LANG_SPECIFIC(NODE)->type_flags.has_mutable)
#define TYPE_HAS_MUTABLE_P(NODE) (cp_has_mutable_p (NODE)) #define TYPE_HAS_MUTABLE_P(NODE) (cp_has_mutable_p (NODE))
/* Many routines need to cons up a list of basetypes for access
checking. This field contains a TREE_LIST node whose TREE_VALUE
is the main variant of the type, and whose TREE_VIA_PUBLIC
and TREE_VIA_VIRTUAL bits are correctly set. */
#define CLASSTYPE_AS_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->as_list)
/* Same, but cache a list whose value is the name of this type. */
#define CLASSTYPE_ID_AS_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->id_as_list)
/* Same, but cache a list whose value is the binfo of this type. */
#define CLASSTYPE_BINFO_AS_LIST(NODE) (TYPE_LANG_SPECIFIC(NODE)->binfo_as_list)
/* A list of class types of which this type is a friend. The /* A list of class types of which this type is a friend. The
TREE_VALUE is normally a TYPE, but will be a TEMPLATE_DECL in the TREE_VALUE is normally a TYPE, but will be a TEMPLATE_DECL in the
case of a template friend. */ case of a template friend. */
...@@ -3221,8 +3169,6 @@ extern tree lookup_member PROTO((tree, tree, int, int)); ...@@ -3221,8 +3169,6 @@ extern tree lookup_member PROTO((tree, tree, int, int));
extern tree lookup_nested_tag PROTO((tree, tree)); extern tree lookup_nested_tag PROTO((tree, tree));
extern tree get_matching_virtual PROTO((tree, tree, int)); extern tree get_matching_virtual PROTO((tree, tree, int));
extern tree get_abstract_virtuals PROTO((tree)); extern tree get_abstract_virtuals PROTO((tree));
extern tree get_baselinks PROTO((tree, tree, tree));
extern tree next_baselink PROTO((tree));
extern tree init_vbase_pointers PROTO((tree, tree)); extern tree init_vbase_pointers PROTO((tree, tree));
extern void expand_indirect_vtbls_init PROTO((tree, tree, tree)); extern void expand_indirect_vtbls_init PROTO((tree, tree, tree));
extern void clear_search_slots PROTO((tree)); extern void clear_search_slots PROTO((tree));
...@@ -3352,7 +3298,6 @@ extern tree build_base_fields PROTO((tree)); ...@@ -3352,7 +3298,6 @@ extern tree build_base_fields PROTO((tree));
extern tree hash_tree_cons PROTO((int, int, int, tree, tree, tree)); extern tree hash_tree_cons PROTO((int, int, int, tree, tree, tree));
extern tree hash_tree_chain PROTO((tree, tree)); extern tree hash_tree_chain PROTO((tree, tree));
extern tree hash_chainon PROTO((tree, tree)); extern tree hash_chainon PROTO((tree, tree));
extern tree get_decl_list PROTO((tree));
extern tree make_binfo PROTO((tree, tree, tree, tree)); extern tree make_binfo PROTO((tree, tree, tree, tree));
extern tree binfo_value PROTO((tree, tree)); extern tree binfo_value PROTO((tree, tree));
extern tree reverse_path PROTO((tree)); extern tree reverse_path PROTO((tree));
......
...@@ -679,70 +679,28 @@ init_parse (filename) ...@@ -679,70 +679,28 @@ init_parse (filename)
token_buffer = (char *) xmalloc (maxtoken + 2); token_buffer = (char *) xmalloc (maxtoken + 2);
ridpointers[(int) RID_INT] = get_identifier ("int"); ridpointers[(int) RID_INT] = get_identifier ("int");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_INT],
build_tree_list (NULL_TREE, ridpointers[(int) RID_INT]));
ridpointers[(int) RID_BOOL] = get_identifier ("bool"); ridpointers[(int) RID_BOOL] = get_identifier ("bool");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_BOOL],
build_tree_list (NULL_TREE, ridpointers[(int) RID_BOOL]));
ridpointers[(int) RID_CHAR] = get_identifier ("char"); ridpointers[(int) RID_CHAR] = get_identifier ("char");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_CHAR],
build_tree_list (NULL_TREE, ridpointers[(int) RID_CHAR]));
ridpointers[(int) RID_VOID] = get_identifier ("void"); ridpointers[(int) RID_VOID] = get_identifier ("void");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VOID],
build_tree_list (NULL_TREE, ridpointers[(int) RID_VOID]));
ridpointers[(int) RID_FLOAT] = get_identifier ("float"); ridpointers[(int) RID_FLOAT] = get_identifier ("float");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_FLOAT],
build_tree_list (NULL_TREE, ridpointers[(int) RID_FLOAT]));
ridpointers[(int) RID_DOUBLE] = get_identifier ("double"); ridpointers[(int) RID_DOUBLE] = get_identifier ("double");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_DOUBLE],
build_tree_list (NULL_TREE, ridpointers[(int) RID_DOUBLE]));
ridpointers[(int) RID_SHORT] = get_identifier ("short"); ridpointers[(int) RID_SHORT] = get_identifier ("short");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_SHORT],
build_tree_list (NULL_TREE, ridpointers[(int) RID_SHORT]));
ridpointers[(int) RID_LONG] = get_identifier ("long"); ridpointers[(int) RID_LONG] = get_identifier ("long");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_LONG],
build_tree_list (NULL_TREE, ridpointers[(int) RID_LONG]));
ridpointers[(int) RID_UNSIGNED] = get_identifier ("unsigned"); ridpointers[(int) RID_UNSIGNED] = get_identifier ("unsigned");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_UNSIGNED],
build_tree_list (NULL_TREE, ridpointers[(int) RID_UNSIGNED]));
ridpointers[(int) RID_SIGNED] = get_identifier ("signed"); ridpointers[(int) RID_SIGNED] = get_identifier ("signed");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_SIGNED],
build_tree_list (NULL_TREE, ridpointers[(int) RID_SIGNED]));
ridpointers[(int) RID_INLINE] = get_identifier ("inline"); ridpointers[(int) RID_INLINE] = get_identifier ("inline");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_INLINE],
build_tree_list (NULL_TREE, ridpointers[(int) RID_INLINE]));
ridpointers[(int) RID_CONST] = get_identifier ("const"); ridpointers[(int) RID_CONST] = get_identifier ("const");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_CONST],
build_tree_list (NULL_TREE, ridpointers[(int) RID_CONST]));
ridpointers[(int) RID_VOLATILE] = get_identifier ("volatile"); ridpointers[(int) RID_VOLATILE] = get_identifier ("volatile");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VOLATILE],
build_tree_list (NULL_TREE, ridpointers[(int) RID_VOLATILE]));
ridpointers[(int) RID_RESTRICT] = get_identifier ("__restrict"); ridpointers[(int) RID_RESTRICT] = get_identifier ("__restrict");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_RESTRICT],
build_tree_list (NULL_TREE, ridpointers[(int) RID_RESTRICT]));
ridpointers[(int) RID_AUTO] = get_identifier ("auto"); ridpointers[(int) RID_AUTO] = get_identifier ("auto");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_AUTO],
build_tree_list (NULL_TREE, ridpointers[(int) RID_AUTO]));
ridpointers[(int) RID_STATIC] = get_identifier ("static"); ridpointers[(int) RID_STATIC] = get_identifier ("static");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_STATIC],
build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC]));
ridpointers[(int) RID_EXTERN] = get_identifier ("extern"); ridpointers[(int) RID_EXTERN] = get_identifier ("extern");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_EXTERN],
build_tree_list (NULL_TREE, ridpointers[(int) RID_EXTERN]));
ridpointers[(int) RID_TYPEDEF] = get_identifier ("typedef"); ridpointers[(int) RID_TYPEDEF] = get_identifier ("typedef");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_TYPEDEF],
build_tree_list (NULL_TREE, ridpointers[(int) RID_TYPEDEF]));
ridpointers[(int) RID_REGISTER] = get_identifier ("register"); ridpointers[(int) RID_REGISTER] = get_identifier ("register");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_REGISTER],
build_tree_list (NULL_TREE, ridpointers[(int) RID_REGISTER]));
ridpointers[(int) RID_COMPLEX] = get_identifier ("__complex"); ridpointers[(int) RID_COMPLEX] = get_identifier ("__complex");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_COMPLEX],
build_tree_list (NULL_TREE, ridpointers[(int) RID_COMPLEX]));
/* C++ extensions. These are probably not correctly named. */ /* C++ extensions. These are probably not correctly named. */
ridpointers[(int) RID_WCHAR] = get_identifier ("__wchar_t"); ridpointers[(int) RID_WCHAR] = get_identifier ("__wchar_t");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_WCHAR],
build_tree_list (NULL_TREE, ridpointers[(int) RID_WCHAR]));
class_type_node = build_int_2 (class_type, 0); class_type_node = build_int_2 (class_type, 0);
TREE_TYPE (class_type_node) = class_type_node; TREE_TYPE (class_type_node) = class_type_node;
ridpointers[(int) RID_CLASS] = class_type_node; ridpointers[(int) RID_CLASS] = class_type_node;
...@@ -760,34 +718,16 @@ init_parse (filename) ...@@ -760,34 +718,16 @@ init_parse (filename)
ridpointers[(int) RID_ENUM] = enum_type_node; ridpointers[(int) RID_ENUM] = enum_type_node;
ridpointers[(int) RID_VIRTUAL] = get_identifier ("virtual"); ridpointers[(int) RID_VIRTUAL] = get_identifier ("virtual");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_VIRTUAL],
build_tree_list (NULL_TREE, ridpointers[(int) RID_VIRTUAL]));
ridpointers[(int) RID_EXPLICIT] = get_identifier ("explicit"); ridpointers[(int) RID_EXPLICIT] = get_identifier ("explicit");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_EXPLICIT],
build_tree_list (NULL_TREE, ridpointers[(int) RID_EXPLICIT]));
ridpointers[(int) RID_EXPORT] = get_identifier ("export"); ridpointers[(int) RID_EXPORT] = get_identifier ("export");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_EXPORT],
build_tree_list (NULL_TREE, ridpointers[(int) RID_EXPORT]));
ridpointers[(int) RID_FRIEND] = get_identifier ("friend"); ridpointers[(int) RID_FRIEND] = get_identifier ("friend");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_FRIEND],
build_tree_list (NULL_TREE, ridpointers[(int) RID_FRIEND]));
ridpointers[(int) RID_PUBLIC] = get_identifier ("public"); ridpointers[(int) RID_PUBLIC] = get_identifier ("public");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_PUBLIC],
build_tree_list (NULL_TREE, ridpointers[(int) RID_PUBLIC]));
ridpointers[(int) RID_PRIVATE] = get_identifier ("private"); ridpointers[(int) RID_PRIVATE] = get_identifier ("private");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_PRIVATE],
build_tree_list (NULL_TREE, ridpointers[(int) RID_PRIVATE]));
ridpointers[(int) RID_PROTECTED] = get_identifier ("protected"); ridpointers[(int) RID_PROTECTED] = get_identifier ("protected");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_PROTECTED],
build_tree_list (NULL_TREE, ridpointers[(int) RID_PROTECTED]));
ridpointers[(int) RID_TEMPLATE] = get_identifier ("template"); ridpointers[(int) RID_TEMPLATE] = get_identifier ("template");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_TEMPLATE],
build_tree_list (NULL_TREE, ridpointers[(int) RID_TEMPLATE]));
/* This is for ANSI C++. */ /* This is for ANSI C++. */
ridpointers[(int) RID_MUTABLE] = get_identifier ("mutable"); ridpointers[(int) RID_MUTABLE] = get_identifier ("mutable");
SET_IDENTIFIER_AS_LIST (ridpointers[(int) RID_MUTABLE],
build_tree_list (NULL_TREE, ridpointers[(int) RID_MUTABLE]));
/* Signature handling extensions. */ /* Signature handling extensions. */
signature_type_node = build_int_2 (signature_type, 0); signature_type_node = build_int_2 (signature_type, 0);
...@@ -4724,12 +4664,9 @@ make_lang_type (code) ...@@ -4724,12 +4664,9 @@ make_lang_type (code)
bzero ((char *) pi, (int) sizeof (struct lang_type)); bzero ((char *) pi, (int) sizeof (struct lang_type));
TYPE_LANG_SPECIFIC (t) = pi; TYPE_LANG_SPECIFIC (t) = pi;
CLASSTYPE_AS_LIST (t) = build_expr_list (NULL_TREE, t);
SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, interface_unknown); SET_CLASSTYPE_INTERFACE_UNKNOWN_X (t, interface_unknown);
CLASSTYPE_INTERFACE_ONLY (t) = interface_only; CLASSTYPE_INTERFACE_ONLY (t) = interface_only;
TYPE_BINFO (t) = make_binfo (integer_zero_node, t, NULL_TREE, NULL_TREE); TYPE_BINFO (t) = make_binfo (integer_zero_node, t, NULL_TREE, NULL_TREE);
CLASSTYPE_BINFO_AS_LIST (t)
= build_tree_list (NULL_TREE, TYPE_BINFO (t));
/* Make sure this is laid out, for ease of use later. In the /* Make sure this is laid out, for ease of use later. In the
presence of parse errors, the normal was of assuring this presence of parse errors, the normal was of assuring this
......
...@@ -193,7 +193,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl) ...@@ -193,7 +193,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
split_specs_attrs (specs_attrs, &current_declspecs, &prefix_attributes); split_specs_attrs (specs_attrs, &current_declspecs, &prefix_attributes);
if (current_declspecs if (current_declspecs
&& TREE_CODE (current_declspecs) != TREE_LIST) && TREE_CODE (current_declspecs) != TREE_LIST)
current_declspecs = get_decl_list (current_declspecs); current_declspecs = build_decl_list (NULL_TREE, current_declspecs);
if (have_extern_spec && !used_extern_spec) if (have_extern_spec && !used_extern_spec)
{ {
current_declspecs = decl_tree_cons (NULL_TREE, current_declspecs = decl_tree_cons (NULL_TREE,
...@@ -681,57 +681,57 @@ static const short yyrline[] = { 0, ...@@ -681,57 +681,57 @@ static const short yyrline[] = { 0,
1529, 1531, 1533, 1535, 1538, 1540, 1542, 1586, 1589, 1593, 1529, 1531, 1533, 1535, 1538, 1540, 1542, 1586, 1589, 1593,
1596, 1600, 1603, 1608, 1610, 1614, 1627, 1630, 1637, 1644, 1596, 1600, 1603, 1608, 1610, 1614, 1627, 1630, 1637, 1644,
1649, 1651, 1656, 1658, 1665, 1667, 1671, 1675, 1681, 1685, 1649, 1651, 1656, 1658, 1665, 1667, 1671, 1675, 1681, 1685,
1688, 1691, 1694, 1704, 1706, 1709, 1713, 1716, 1719, 1722, 1688, 1692, 1695, 1705, 1707, 1710, 1714, 1717, 1720, 1723,
1725, 1731, 1737, 1739, 1744, 1746, 1755, 1758, 1760, 1763, 1726, 1732, 1738, 1740, 1745, 1747, 1756, 1759, 1761, 1764,
1769, 1771, 1781, 1785, 1788, 1791, 1796, 1799, 1807, 1809, 1770, 1772, 1782, 1786, 1789, 1792, 1797, 1800, 1808, 1810,
1811, 1813, 1816, 1819, 1834, 1853, 1856, 1858, 1861, 1863, 1812, 1814, 1817, 1820, 1835, 1854, 1857, 1859, 1862, 1864,
1867, 1869, 1873, 1875, 1879, 1882, 1886, 1892, 1893, 1905, 1868, 1870, 1874, 1876, 1880, 1883, 1887, 1893, 1894, 1906,
1912, 1915, 1921, 1925, 1930, 1936, 1937, 1945, 1948, 1952, 1913, 1916, 1922, 1926, 1931, 1937, 1938, 1946, 1949, 1953,
1955, 1959, 1964, 1967, 1971, 1974, 1976, 1978, 1980, 1987, 1956, 1960, 1965, 1968, 1972, 1975, 1977, 1979, 1981, 1988,
1989, 1990, 1991, 1995, 1998, 2002, 2005, 2011, 2013, 2016, 1990, 1991, 1992, 1996, 1999, 2003, 2006, 2012, 2014, 2017,
2019, 2022, 2028, 2031, 2034, 2036, 2038, 2042, 2048, 2056, 2020, 2023, 2029, 2032, 2035, 2037, 2039, 2043, 2049, 2057,
2063, 2067, 2069, 2074, 2077, 2080, 2082, 2084, 2088, 2093, 2064, 2068, 2070, 2075, 2078, 2081, 2083, 2085, 2089, 2094,
2100, 2104, 2108, 2115, 2119, 2122, 2125, 2131, 2143, 2145, 2101, 2105, 2109, 2116, 2120, 2123, 2126, 2132, 2144, 2146,
2148, 2168, 2170, 2173, 2175, 2180, 2182, 2184, 2186, 2188, 2149, 2169, 2171, 2174, 2176, 2181, 2183, 2185, 2187, 2189,
2190, 2194, 2202, 2205, 2207, 2211, 2217, 2222, 2227, 2229, 2191, 2195, 2203, 2206, 2208, 2212, 2218, 2223, 2228, 2230,
2233, 2236, 2240, 2246, 2252, 2277, 2283, 2285, 2288, 2291, 2234, 2237, 2241, 2247, 2253, 2278, 2284, 2286, 2289, 2292,
2293, 2297, 2299, 2303, 2308, 2314, 2317, 2318, 2339, 2362, 2294, 2298, 2300, 2304, 2309, 2315, 2318, 2319, 2340, 2363,
2364, 2368, 2379, 2393, 2398, 2399, 2400, 2401, 2404, 2419, 2365, 2369, 2380, 2394, 2399, 2400, 2401, 2402, 2405, 2420,
2424, 2430, 2432, 2437, 2439, 2441, 2443, 2445, 2447, 2450, 2425, 2431, 2433, 2438, 2440, 2442, 2444, 2446, 2448, 2451,
2460, 2467, 2492, 2498, 2501, 2504, 2506, 2517, 2522, 2525, 2461, 2468, 2493, 2499, 2502, 2505, 2507, 2518, 2523, 2526,
2530, 2533, 2540, 2550, 2553, 2560, 2570, 2572, 2575, 2577, 2531, 2534, 2541, 2551, 2554, 2561, 2571, 2573, 2576, 2578,
2580, 2587, 2595, 2602, 2608, 2614, 2622, 2626, 2631, 2635, 2581, 2588, 2596, 2603, 2609, 2615, 2623, 2627, 2632, 2636,
2638, 2647, 2649, 2653, 2656, 2661, 2665, 2671, 2682, 2685, 2639, 2648, 2650, 2654, 2657, 2662, 2666, 2672, 2683, 2686,
2689, 2693, 2701, 2706, 2712, 2715, 2717, 2719, 2725, 2728, 2690, 2694, 2702, 2707, 2713, 2716, 2718, 2720, 2726, 2729,
2730, 2732, 2734, 2738, 2741, 2759, 2769, 2771, 2772, 2776, 2731, 2733, 2735, 2739, 2742, 2760, 2770, 2772, 2773, 2777,
2781, 2784, 2786, 2788, 2790, 2794, 2800, 2802, 2810, 2813, 2782, 2785, 2787, 2789, 2791, 2795, 2801, 2803, 2811, 2814,
2815, 2817, 2819, 2823, 2826, 2829, 2831, 2833, 2835, 2839, 2816, 2818, 2820, 2824, 2827, 2830, 2832, 2834, 2836, 2840,
2842, 2845, 2847, 2849, 2851, 2853, 2860, 2864, 2869, 2873, 2843, 2846, 2848, 2850, 2852, 2854, 2861, 2865, 2870, 2874,
2878, 2880, 2884, 2887, 2889, 2892, 2894, 2895, 2898, 2900, 2879, 2881, 2885, 2888, 2890, 2893, 2895, 2896, 2899, 2901,
2902, 2908, 2923, 2929, 2935, 2949, 2951, 2955, 2969, 2971, 2903, 2909, 2924, 2930, 2936, 2950, 2952, 2956, 2970, 2972,
2973, 2977, 2983, 2996, 2998, 3002, 3015, 3021, 3023, 3024, 2974, 2978, 2984, 2997, 2999, 3003, 3016, 3022, 3024, 3025,
3025, 3033, 3038, 3047, 3048, 3052, 3055, 3061, 3067, 3070, 3026, 3034, 3039, 3048, 3049, 3053, 3056, 3062, 3068, 3071,
3072, 3074, 3076, 3080, 3084, 3088, 3091, 3096, 3099, 3101, 3073, 3075, 3077, 3081, 3085, 3089, 3092, 3097, 3100, 3102,
3103, 3105, 3107, 3109, 3111, 3113, 3117, 3121, 3125, 3129, 3104, 3106, 3108, 3110, 3112, 3114, 3118, 3122, 3126, 3130,
3130, 3132, 3134, 3136, 3138, 3140, 3142, 3144, 3146, 3154, 3131, 3133, 3135, 3137, 3139, 3141, 3143, 3145, 3147, 3155,
3156, 3157, 3158, 3161, 3167, 3169, 3174, 3176, 3179, 3193, 3157, 3158, 3159, 3162, 3168, 3170, 3175, 3177, 3180, 3194,
3196, 3199, 3203, 3206, 3213, 3215, 3218, 3220, 3222, 3225, 3197, 3200, 3204, 3207, 3214, 3216, 3219, 3221, 3223, 3226,
3228, 3231, 3234, 3236, 3239, 3243, 3245, 3251, 3253, 3254, 3229, 3232, 3235, 3237, 3240, 3244, 3246, 3252, 3254, 3255,
3256, 3261, 3263, 3265, 3267, 3269, 3272, 3273, 3275, 3278, 3257, 3262, 3264, 3266, 3268, 3270, 3273, 3274, 3276, 3279,
3279, 3282, 3282, 3285, 3285, 3288, 3288, 3290, 3292, 3294, 3280, 3283, 3283, 3286, 3286, 3289, 3289, 3291, 3293, 3295,
3296, 3302, 3308, 3311, 3314, 3320, 3322, 3324, 3328, 3330, 3297, 3303, 3309, 3312, 3315, 3321, 3323, 3325, 3329, 3331,
3331, 3332, 3334, 3337, 3344, 3349, 3355, 3359, 3361, 3364, 3332, 3333, 3335, 3338, 3345, 3350, 3356, 3360, 3362, 3365,
3366, 3369, 3373, 3375, 3378, 3380, 3383, 3400, 3406, 3414, 3367, 3370, 3374, 3376, 3379, 3381, 3384, 3401, 3407, 3415,
3416, 3418, 3422, 3425, 3426, 3434, 3438, 3442, 3445, 3446, 3417, 3419, 3423, 3426, 3427, 3435, 3439, 3443, 3446, 3447,
3452, 3455, 3458, 3460, 3464, 3469, 3472, 3482, 3487, 3488, 3453, 3456, 3459, 3461, 3465, 3470, 3473, 3483, 3488, 3489,
3495, 3498, 3501, 3503, 3506, 3508, 3518, 3532, 3536, 3539, 3496, 3499, 3502, 3504, 3507, 3509, 3519, 3533, 3537, 3540,
3541, 3545, 3549, 3552, 3555, 3557, 3561, 3563, 3570, 3577, 3542, 3546, 3550, 3553, 3556, 3558, 3562, 3564, 3571, 3578,
3580, 3583, 3587, 3591, 3597, 3601, 3606, 3608, 3611, 3616, 3581, 3585, 3589, 3593, 3599, 3603, 3608, 3610, 3613, 3618,
3622, 3633, 3636, 3638, 3642, 3647, 3649, 3656, 3659, 3661, 3624, 3635, 3638, 3640, 3644, 3649, 3651, 3658, 3661, 3663,
3663, 3669, 3674, 3677, 3679, 3681, 3683, 3685, 3687, 3689, 3665, 3671, 3676, 3679, 3681, 3683, 3685, 3687, 3689, 3691,
3691, 3693, 3695, 3697, 3699, 3701, 3703, 3705, 3707, 3709, 3693, 3695, 3697, 3699, 3701, 3703, 3705, 3707, 3709, 3711,
3711, 3713, 3715, 3717, 3719, 3721, 3723, 3725, 3727, 3729, 3713, 3715, 3717, 3719, 3721, 3723, 3725, 3727, 3729, 3731,
3731, 3733, 3735, 3737, 3739, 3742, 3744 3733, 3735, 3737, 3739, 3741, 3744, 3746
}; };
#endif #endif
...@@ -5629,91 +5629,92 @@ case 370: ...@@ -5629,91 +5629,92 @@ case 370:
break;} break;}
case 371: case 371:
#line 1689 "parse.y" #line 1689 "parse.y"
{ yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); { yyval.ftype.t = build_decl_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t),
yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 372: case 372:
#line 1692 "parse.y" #line 1693 "parse.y"
{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 373: case 373:
#line 1695 "parse.y" #line 1696 "parse.y"
{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 376: case 376:
#line 1711 "parse.y" #line 1712 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 377: case 377:
#line 1714 "parse.y" #line 1715 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 378: case 378:
#line 1717 "parse.y" #line 1718 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype));
yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
break;} break;}
case 379: case 379:
#line 1720 "parse.y" #line 1721 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype));
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 380: case 380:
#line 1723 "parse.y" #line 1724 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype));
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 381: case 381:
#line 1726 "parse.y" #line 1727 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t,
chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype))); chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype)));
yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
break;} break;}
case 382: case 382:
#line 1733 "parse.y" #line 1734 "parse.y"
{ if (extra_warnings) { if (extra_warnings)
warning ("`%s' is not at beginning of declaration", warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyval.ttype)); IDENTIFIER_POINTER (yyval.ttype));
yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ; yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
break;} break;}
case 383: case 383:
#line 1738 "parse.y" #line 1739 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ; { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;
break;} break;}
case 384: case 384:
#line 1740 "parse.y" #line 1741 "parse.y"
{ if (extra_warnings) { if (extra_warnings)
warning ("`%s' is not at beginning of declaration", warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype)); IDENTIFIER_POINTER (yyvsp[0].ttype));
yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;} break;}
case 385: case 385:
#line 1745 "parse.y" #line 1746 "parse.y"
{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
break;} break;}
case 386: case 386:
#line 1747 "parse.y" #line 1748 "parse.y"
{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
break;} break;}
case 387: case 387:
#line 1757 "parse.y" #line 1758 "parse.y"
{ yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ; { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ;
break;} break;}
case 388: case 388:
#line 1759 "parse.y" #line 1760 "parse.y"
{ yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ; { yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
break;} break;}
case 389: case 389:
#line 1761 "parse.y" #line 1762 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
TREE_STATIC (yyval.ttype) = 1; ; TREE_STATIC (yyval.ttype) = 1; ;
break;} break;}
case 390: case 390:
#line 1764 "parse.y" #line 1765 "parse.y"
{ if (extra_warnings && TREE_STATIC (yyval.ttype)) { if (extra_warnings && TREE_STATIC (yyval.ttype))
warning ("`%s' is not at beginning of declaration", warning ("`%s' is not at beginning of declaration",
IDENTIFIER_POINTER (yyvsp[0].ttype)); IDENTIFIER_POINTER (yyvsp[0].ttype));
...@@ -5721,61 +5722,61 @@ case 390: ...@@ -5721,61 +5722,61 @@ case 390:
TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ; TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
break;} break;}
case 391: case 391:
#line 1770 "parse.y" #line 1771 "parse.y"
{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ; { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
break;} break;}
case 392: case 392:
#line 1772 "parse.y" #line 1773 "parse.y"
{ yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ; { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
break;} break;}
case 393: case 393:
#line 1783 "parse.y" #line 1784 "parse.y"
{ yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t); { yyval.ftype.t = build_decl_list (NULL_TREE, yyvsp[0].ftype.t);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 394: case 394:
#line 1786 "parse.y" #line 1787 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 395: case 395:
#line 1789 "parse.y" #line 1790 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 396: case 396:
#line 1792 "parse.y" #line 1793 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t));
yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
break;} break;}
case 397: case 397:
#line 1798 "parse.y" #line 1799 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ; { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ;
break;} break;}
case 398: case 398:
#line 1800 "parse.y" #line 1801 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ; { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;
break;} break;}
case 400: case 400:
#line 1810 "parse.y" #line 1811 "parse.y"
{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 401: case 401:
#line 1812 "parse.y" #line 1813 "parse.y"
{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 402: case 402:
#line 1814 "parse.y" #line 1815 "parse.y"
{ yyval.ftype.t = finish_typeof (yyvsp[-1].ttype); { yyval.ftype.t = finish_typeof (yyvsp[-1].ttype);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 403: case 403:
#line 1817 "parse.y" #line 1818 "parse.y"
{ yyval.ftype.t = groktypename (yyvsp[-1].ftype.t); { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 404: case 404:
#line 1820 "parse.y" #line 1821 "parse.y"
{ tree type = TREE_TYPE (yyvsp[-1].ttype); { tree type = TREE_TYPE (yyvsp[-1].ttype);
yyval.ftype.new_type_flag = 0; yyval.ftype.new_type_flag = 0;
...@@ -5792,7 +5793,7 @@ case 404: ...@@ -5792,7 +5793,7 @@ case 404:
; ;
break;} break;}
case 405: case 405:
#line 1835 "parse.y" #line 1836 "parse.y"
{ tree type = groktypename (yyvsp[-1].ftype.t); { tree type = groktypename (yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = 0; yyval.ftype.new_type_flag = 0;
...@@ -5809,200 +5810,200 @@ case 405: ...@@ -5809,200 +5810,200 @@ case 405:
; ;
break;} break;}
case 406: case 406:
#line 1855 "parse.y" #line 1856 "parse.y"
{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 407: case 407:
#line 1857 "parse.y" #line 1858 "parse.y"
{ yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ; { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 410: case 410:
#line 1864 "parse.y" #line 1865 "parse.y"
{ check_multiple_declarators (); ; { check_multiple_declarators (); ;
break;} break;}
case 412: case 412:
#line 1870 "parse.y" #line 1871 "parse.y"
{ check_multiple_declarators (); ; { check_multiple_declarators (); ;
break;} break;}
case 414: case 414:
#line 1876 "parse.y" #line 1877 "parse.y"
{ check_multiple_declarators (); ; { check_multiple_declarators (); ;
break;} break;}
case 415: case 415:
#line 1881 "parse.y" #line 1882 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 416: case 416:
#line 1883 "parse.y" #line 1884 "parse.y"
{ if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ; { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 417: case 417:
#line 1888 "parse.y" #line 1889 "parse.y"
{ yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1, { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
yyvsp[-1].ttype, prefix_attributes); ; yyvsp[-1].ttype, prefix_attributes); ;
break;} break;}
case 418: case 418:
#line 1892 "parse.y" #line 1893 "parse.y"
{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ; { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ;
break;} break;}
case 419: case 419:
#line 1894 "parse.y" #line 1895 "parse.y"
{ yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0, { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
yyvsp[0].ttype, prefix_attributes); yyvsp[0].ttype, prefix_attributes);
cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
break;} break;}
case 420: case 420:
#line 1907 "parse.y" #line 1908 "parse.y"
{ yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype, { yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype,
yyvsp[-1].ttype, 1, &yyval.ttype); ; yyvsp[-1].ttype, 1, &yyval.ttype); ;
break;} break;}
case 421: case 421:
#line 1912 "parse.y" #line 1913 "parse.y"
{ cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1,
LOOKUP_ONLYCONVERTING); LOOKUP_ONLYCONVERTING);
yyval.itype = yyvsp[-2].itype; ; yyval.itype = yyvsp[-2].itype; ;
break;} break;}
case 422: case 422:
#line 1916 "parse.y" #line 1917 "parse.y"
{ tree d; { tree d;
yyval.itype = parse_decl (yyvsp[-2].ttype, yyvsp[-3].ttype, yyvsp[0].ttype, 0, &d); yyval.itype = parse_decl (yyvsp[-2].ttype, yyvsp[-3].ttype, yyvsp[0].ttype, 0, &d);
cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
break;} break;}
case 423: case 423:
#line 1923 "parse.y" #line 1924 "parse.y"
{ yyval.itype = yyvsp[0].itype; ; { yyval.itype = yyvsp[0].itype; ;
break;} break;}
case 424: case 424:
#line 1927 "parse.y" #line 1928 "parse.y"
{ yyval.itype = yyvsp[0].itype; ; { yyval.itype = yyvsp[0].itype; ;
break;} break;}
case 425: case 425:
#line 1932 "parse.y" #line 1933 "parse.y"
{ /* Set things up as initdcl0_innards expects. */ { /* Set things up as initdcl0_innards expects. */
yyvsp[0].ttype = yyvsp[-1].ttype; yyvsp[0].ttype = yyvsp[-1].ttype;
yyvsp[-1].ttype = NULL_TREE; ; yyvsp[-1].ttype = NULL_TREE; ;
break;} break;}
case 426: case 426:
#line 1936 "parse.y" #line 1937 "parse.y"
{; {;
break;} break;}
case 427: case 427:
#line 1938 "parse.y" #line 1939 "parse.y"
{ tree d; { tree d;
parse_decl(yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype, 0, &d); parse_decl(yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype, 0, &d);
cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ; cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
break;} break;}
case 428: case 428:
#line 1947 "parse.y" #line 1948 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 429: case 429:
#line 1949 "parse.y" #line 1950 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 430: case 430:
#line 1954 "parse.y" #line 1955 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 431: case 431:
#line 1956 "parse.y" #line 1957 "parse.y"
{ yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 432: case 432:
#line 1961 "parse.y" #line 1962 "parse.y"
{ yyval.ttype = yyvsp[-2].ttype; ; { yyval.ttype = yyvsp[-2].ttype; ;
break;} break;}
case 433: case 433:
#line 1966 "parse.y" #line 1967 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 434: case 434:
#line 1968 "parse.y" #line 1969 "parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ; { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;} break;}
case 435: case 435:
#line 1973 "parse.y" #line 1974 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 436: case 436:
#line 1975 "parse.y" #line 1976 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ; { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
break;} break;}
case 437: case 437:
#line 1977 "parse.y" #line 1978 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ; { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
break;} break;}
case 438: case 438:
#line 1979 "parse.y" #line 1980 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ; { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
break;} break;}
case 439: case 439:
#line 1981 "parse.y" #line 1982 "parse.y"
{ yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 444: case 444:
#line 1997 "parse.y" #line 1998 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 445: case 445:
#line 1999 "parse.y" #line 2000 "parse.y"
{ yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;} break;}
case 446: case 446:
#line 2004 "parse.y" #line 2005 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 447: case 447:
#line 2006 "parse.y" #line 2007 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 449: case 449:
#line 2014 "parse.y" #line 2015 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE); { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
break;} break;}
case 450: case 450:
#line 2017 "parse.y" #line 2018 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype)); { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
break;} break;}
case 451: case 451:
#line 2020 "parse.y" #line 2021 "parse.y"
{ yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype)); { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ; TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
break;} break;}
case 452: case 452:
#line 2023 "parse.y" #line 2024 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 453: case 453:
#line 2030 "parse.y" #line 2031 "parse.y"
{ yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ; { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
break;} break;}
case 454: case 454:
#line 2032 "parse.y" #line 2033 "parse.y"
{ yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;} break;}
case 455: case 455:
#line 2035 "parse.y" #line 2036 "parse.y"
{ yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ; { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;} break;}
case 456: case 456:
#line 2037 "parse.y" #line 2038 "parse.y"
{ yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ; { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ;
break;} break;}
case 457: case 457:
#line 2039 "parse.y" #line 2040 "parse.y"
{ yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ; { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
break;} break;}
case 458: case 458:
#line 2044 "parse.y" #line 2045 "parse.y"
{ start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype), { start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype),
NULL_TREE, 2); NULL_TREE, 2);
reinit_parse_for_function (); ; reinit_parse_for_function (); ;
break;} break;}
case 459: case 459:
#line 2050 "parse.y" #line 2051 "parse.y"
{ {
int nested = (hack_decl_function_context int nested = (hack_decl_function_context
(current_function_decl) != NULL_TREE); (current_function_decl) != NULL_TREE);
...@@ -6011,7 +6012,7 @@ case 459: ...@@ -6011,7 +6012,7 @@ case 459:
; ;
break;} break;}
case 460: case 460:
#line 2057 "parse.y" #line 2058 "parse.y"
{ {
int nested = (hack_decl_function_context int nested = (hack_decl_function_context
(current_function_decl) != NULL_TREE); (current_function_decl) != NULL_TREE);
...@@ -6020,33 +6021,33 @@ case 460: ...@@ -6020,33 +6021,33 @@ case 460:
; ;
break;} break;}
case 461: case 461:
#line 2064 "parse.y" #line 2065 "parse.y"
{ process_next_inline (yyvsp[-2].ttype); ; { process_next_inline (yyvsp[-2].ttype); ;
break;} break;}
case 464: case 464:
#line 2076 "parse.y" #line 2077 "parse.y"
{ replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ; { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 465: case 465:
#line 2078 "parse.y" #line 2079 "parse.y"
{ replace_defarg (yyvsp[-2].ttype, error_mark_node); ; { replace_defarg (yyvsp[-2].ttype, error_mark_node); ;
break;} break;}
case 467: case 467:
#line 2083 "parse.y" #line 2084 "parse.y"
{ do_pending_defargs (); ; { do_pending_defargs (); ;
break;} break;}
case 468: case 468:
#line 2085 "parse.y" #line 2086 "parse.y"
{ do_pending_defargs (); ; { do_pending_defargs (); ;
break;} break;}
case 469: case 469:
#line 2090 "parse.y" #line 2091 "parse.y"
{ yyvsp[0].itype = suspend_momentary (); { yyvsp[0].itype = suspend_momentary ();
yyval.ttype = current_enum_type; yyval.ttype = current_enum_type;
current_enum_type = start_enum (yyvsp[-1].ttype); ; current_enum_type = start_enum (yyvsp[-1].ttype); ;
break;} break;}
case 470: case 470:
#line 2094 "parse.y" #line 2095 "parse.y"
{ TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype; { TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype;
yyval.ftype.t = finish_enum (current_enum_type); yyval.ftype.t = finish_enum (current_enum_type);
yyval.ftype.new_type_flag = 1; yyval.ftype.new_type_flag = 1;
...@@ -6055,19 +6056,19 @@ case 470: ...@@ -6055,19 +6056,19 @@ case 470:
check_for_missing_semicolon (yyval.ftype.t); ; check_for_missing_semicolon (yyval.ftype.t); ;
break;} break;}
case 471: case 471:
#line 2101 "parse.y" #line 2102 "parse.y"
{ yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype)); { yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype));
yyval.ftype.new_type_flag = 1; yyval.ftype.new_type_flag = 1;
check_for_missing_semicolon (yyval.ftype.t); ; check_for_missing_semicolon (yyval.ftype.t); ;
break;} break;}
case 472: case 472:
#line 2105 "parse.y" #line 2106 "parse.y"
{ yyvsp[0].itype = suspend_momentary (); { yyvsp[0].itype = suspend_momentary ();
yyval.ttype = current_enum_type; yyval.ttype = current_enum_type;
current_enum_type = start_enum (make_anon_name ()); ; current_enum_type = start_enum (make_anon_name ()); ;
break;} break;}
case 473: case 473:
#line 2109 "parse.y" #line 2110 "parse.y"
{ TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype; { TYPE_VALUES (current_enum_type) = yyvsp[-2].ttype;
yyval.ftype.t = finish_enum (current_enum_type); yyval.ftype.t = finish_enum (current_enum_type);
yyval.ftype.new_type_flag = 1; yyval.ftype.new_type_flag = 1;
...@@ -6076,30 +6077,30 @@ case 473: ...@@ -6076,30 +6077,30 @@ case 473:
check_for_missing_semicolon (yyval.ftype.t); ; check_for_missing_semicolon (yyval.ftype.t); ;
break;} break;}
case 474: case 474:
#line 2116 "parse.y" #line 2117 "parse.y"
{ yyval.ftype.t = finish_enum (start_enum (make_anon_name())); { yyval.ftype.t = finish_enum (start_enum (make_anon_name()));
yyval.ftype.new_type_flag = 1; yyval.ftype.new_type_flag = 1;
check_for_missing_semicolon (yyval.ftype.t); ; check_for_missing_semicolon (yyval.ftype.t); ;
break;} break;}
case 475: case 475:
#line 2120 "parse.y" #line 2121 "parse.y"
{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 476: case 476:
#line 2123 "parse.y" #line 2124 "parse.y"
{ yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1); { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, 1);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 477: case 477:
#line 2126 "parse.y" #line 2127 "parse.y"
{ yyval.ftype.t = yyvsp[0].ttype; { yyval.ftype.t = yyvsp[0].ttype;
yyval.ftype.new_type_flag = 0; yyval.ftype.new_type_flag = 0;
if (!processing_template_decl) if (!processing_template_decl)
cp_pedwarn ("using `typename' outside of template"); ; cp_pedwarn ("using `typename' outside of template"); ;
break;} break;}
case 478: case 478:
#line 2133 "parse.y" #line 2134 "parse.y"
{ {
int semi; int semi;
...@@ -6111,17 +6112,17 @@ case 478: ...@@ -6111,17 +6112,17 @@ case 478:
; ;
break;} break;}
case 479: case 479:
#line 2143 "parse.y" #line 2144 "parse.y"
{ finish_default_args (); ; { finish_default_args (); ;
break;} break;}
case 480: case 480:
#line 2145 "parse.y" #line 2146 "parse.y"
{ yyval.ftype.t = yyvsp[-3].ttype; { yyval.ftype.t = yyvsp[-3].ttype;
yyval.ftype.new_type_flag = 1; yyval.ftype.new_type_flag = 1;
begin_inline_definitions (); ; begin_inline_definitions (); ;
break;} break;}
case 481: case 481:
#line 2149 "parse.y" #line 2150 "parse.y"
{ {
yyval.ftype.new_type_flag = 0; yyval.ftype.new_type_flag = 0;
if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE) if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE)
...@@ -6141,88 +6142,88 @@ case 481: ...@@ -6141,88 +6142,88 @@ case 481:
; ;
break;} break;}
case 485: case 485:
#line 2176 "parse.y" #line 2177 "parse.y"
{ if (pedantic && !in_system_header) { if (pedantic && !in_system_header)
pedwarn ("comma at end of enumerator list"); ; pedwarn ("comma at end of enumerator list"); ;
break;} break;}
case 487: case 487:
#line 2183 "parse.y" #line 2184 "parse.y"
{ error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
break;} break;}
case 488: case 488:
#line 2185 "parse.y" #line 2186 "parse.y"
{ error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
break;} break;}
case 489: case 489:
#line 2187 "parse.y" #line 2188 "parse.y"
{ error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ; { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
break;} break;}
case 490: case 490:
#line 2189 "parse.y" #line 2190 "parse.y"
{ error ("no body nor ';' separates two class, struct or union declarations"); ; { error ("no body nor ';' separates two class, struct or union declarations"); ;
break;} break;}
case 491: case 491:
#line 2191 "parse.y" #line 2192 "parse.y"
{ yyval.ttype = build_decl_list (yyvsp[0].ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_decl_list (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 492: case 492:
#line 2196 "parse.y" #line 2197 "parse.y"
{ {
current_aggr = yyvsp[-1].ttype; current_aggr = yyvsp[-1].ttype;
yyval.ttype = yyvsp[0].ttype; yyval.ttype = yyvsp[0].ttype;
; ;
break;} break;}
case 493: case 493:
#line 2204 "parse.y" #line 2205 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 494: case 494:
#line 2206 "parse.y" #line 2207 "parse.y"
{ yyungetc ('{', 1); ; { yyungetc ('{', 1); ;
break;} break;}
case 495: case 495:
#line 2208 "parse.y" #line 2209 "parse.y"
{ yyungetc (':', 1); ; { yyungetc (':', 1); ;
break;} break;}
case 496: case 496:
#line 2213 "parse.y" #line 2214 "parse.y"
{ {
current_aggr = yyvsp[-2].ttype; current_aggr = yyvsp[-2].ttype;
yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
; ;
break;} break;}
case 497: case 497:
#line 2218 "parse.y" #line 2219 "parse.y"
{ {
current_aggr = yyvsp[-3].ttype; current_aggr = yyvsp[-3].ttype;
yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
; ;
break;} break;}
case 498: case 498:
#line 2223 "parse.y" #line 2224 "parse.y"
{ {
current_aggr = yyvsp[-2].ttype; current_aggr = yyvsp[-2].ttype;
yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype); yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
; ;
break;} break;}
case 499: case 499:
#line 2228 "parse.y" #line 2229 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 500: case 500:
#line 2230 "parse.y" #line 2231 "parse.y"
{ current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 501: case 501:
#line 2235 "parse.y" #line 2236 "parse.y"
{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ; { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 1); ;
break;} break;}
case 502: case 502:
#line 2237 "parse.y" #line 2238 "parse.y"
{ yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ; { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, 0); ;
break;} break;}
case 503: case 503:
#line 2241 "parse.y" #line 2242 "parse.y"
{ {
yyval.ttype = yyvsp[-1].ttype; yyval.ttype = yyvsp[-1].ttype;
if (yyvsp[0].ttype) if (yyvsp[0].ttype)
...@@ -6230,14 +6231,14 @@ case 503: ...@@ -6230,14 +6231,14 @@ case 503:
; ;
break;} break;}
case 504: case 504:
#line 2247 "parse.y" #line 2248 "parse.y"
{ {
if (yyvsp[0].ttype != error_mark_node) if (yyvsp[0].ttype != error_mark_node)
push_scope (CP_DECL_CONTEXT (yyvsp[0].ttype)); push_scope (CP_DECL_CONTEXT (yyvsp[0].ttype));
; ;
break;} break;}
case 505: case 505:
#line 2252 "parse.y" #line 2253 "parse.y"
{ {
if (yyvsp[-2].ttype != error_mark_node) if (yyvsp[-2].ttype != error_mark_node)
{ {
...@@ -6263,44 +6264,44 @@ case 505: ...@@ -6263,44 +6264,44 @@ case 505:
; ;
break;} break;}
case 506: case 506:
#line 2279 "parse.y" #line 2280 "parse.y"
{ yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), 0); { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), 0);
yyungetc ('{', 1); ; yyungetc ('{', 1); ;
break;} break;}
case 509: case 509:
#line 2290 "parse.y" #line 2291 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 510: case 510:
#line 2292 "parse.y" #line 2293 "parse.y"
{ yyungetc(':', 1); yyval.ttype = NULL_TREE; ; { yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
break;} break;}
case 511: case 511:
#line 2294 "parse.y" #line 2295 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 513: case 513:
#line 2300 "parse.y" #line 2301 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
break;} break;}
case 514: case 514:
#line 2305 "parse.y" #line 2306 "parse.y"
{ yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype, { yyval.ttype = finish_base_specifier (access_default_node, yyvsp[0].ttype,
current_aggr current_aggr
== signature_type_node); ; == signature_type_node); ;
break;} break;}
case 515: case 515:
#line 2309 "parse.y" #line 2310 "parse.y"
{ yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype, { yyval.ttype = finish_base_specifier (yyvsp[-2].ttype, yyvsp[0].ttype,
current_aggr current_aggr
== signature_type_node); ; == signature_type_node); ;
break;} break;}
case 516: case 516:
#line 2316 "parse.y" #line 2317 "parse.y"
{ if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ; { if (yyval.ttype != error_mark_node) yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
break;} break;}
case 518: case 518:
#line 2319 "parse.y" #line 2320 "parse.y"
{ {
if (current_aggr == signature_type_node) if (current_aggr == signature_type_node)
{ {
...@@ -6323,7 +6324,7 @@ case 518: ...@@ -6323,7 +6324,7 @@ case 518:
; ;
break;} break;}
case 519: case 519:
#line 2340 "parse.y" #line 2341 "parse.y"
{ {
if (current_aggr == signature_type_node) if (current_aggr == signature_type_node)
{ {
...@@ -6346,13 +6347,13 @@ case 519: ...@@ -6346,13 +6347,13 @@ case 519:
; ;
break;} break;}
case 521: case 521:
#line 2365 "parse.y" #line 2366 "parse.y"
{ if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
cp_error ("`%D' access", yyvsp[-1].ttype); cp_error ("`%D' access", yyvsp[-1].ttype);
yyval.ttype = access_default_virtual_node; ; yyval.ttype = access_default_virtual_node; ;
break;} break;}
case 522: case 522:
#line 2369 "parse.y" #line 2370 "parse.y"
{ {
if (yyvsp[-2].ttype != access_default_virtual_node) if (yyvsp[-2].ttype != access_default_virtual_node)
error ("multiple access specifiers"); error ("multiple access specifiers");
...@@ -6365,7 +6366,7 @@ case 522: ...@@ -6365,7 +6366,7 @@ case 522:
; ;
break;} break;}
case 523: case 523:
#line 2380 "parse.y" #line 2381 "parse.y"
{ if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL]) { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
cp_error ("`%D' access", yyvsp[-1].ttype); cp_error ("`%D' access", yyvsp[-1].ttype);
else if (yyval.ttype == access_public_node) else if (yyval.ttype == access_public_node)
...@@ -6379,11 +6380,11 @@ case 523: ...@@ -6379,11 +6380,11 @@ case 523:
; ;
break;} break;}
case 524: case 524:
#line 2395 "parse.y" #line 2396 "parse.y"
{ yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ; { yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ;
break;} break;}
case 529: case 529:
#line 2406 "parse.y" #line 2407 "parse.y"
{ {
if (current_aggr == signature_type_node) if (current_aggr == signature_type_node)
{ {
...@@ -6395,49 +6396,49 @@ case 529: ...@@ -6395,49 +6396,49 @@ case 529:
; ;
break;} break;}
case 530: case 530:
#line 2421 "parse.y" #line 2422 "parse.y"
{ {
finish_member_declaration (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype);
; ;
break;} break;}
case 531: case 531:
#line 2425 "parse.y" #line 2426 "parse.y"
{ {
finish_member_declaration (yyvsp[0].ttype); finish_member_declaration (yyvsp[0].ttype);
; ;
break;} break;}
case 533: case 533:
#line 2433 "parse.y" #line 2434 "parse.y"
{ error ("missing ';' before right brace"); { error ("missing ';' before right brace");
yyungetc ('}', 0); ; yyungetc ('}', 0); ;
break;} break;}
case 534: case 534:
#line 2438 "parse.y" #line 2439 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ; { yyval.ttype = finish_method (yyval.ttype); ;
break;} break;}
case 535: case 535:
#line 2440 "parse.y" #line 2441 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ; { yyval.ttype = finish_method (yyval.ttype); ;
break;} break;}
case 536: case 536:
#line 2442 "parse.y" #line 2443 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ; { yyval.ttype = finish_method (yyval.ttype); ;
break;} break;}
case 537: case 537:
#line 2444 "parse.y" #line 2445 "parse.y"
{ yyval.ttype = finish_method (yyval.ttype); ; { yyval.ttype = finish_method (yyval.ttype); ;
break;} break;}
case 538: case 538:
#line 2446 "parse.y" #line 2447 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 539: case 539:
#line 2448 "parse.y" #line 2449 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; { yyval.ttype = yyvsp[0].ttype;
pedantic = yyvsp[-1].itype; ; pedantic = yyvsp[-1].itype; ;
break;} break;}
case 540: case 540:
#line 2451 "parse.y" #line 2452 "parse.y"
{ {
if (yyvsp[0].ttype) if (yyvsp[0].ttype)
yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); yyval.ttype = finish_member_template_decl (yyvsp[0].ttype);
...@@ -6449,14 +6450,14 @@ case 540: ...@@ -6449,14 +6450,14 @@ case 540:
; ;
break;} break;}
case 541: case 541:
#line 2461 "parse.y" #line 2462 "parse.y"
{ {
yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t);
finish_template_decl (yyvsp[-2].ttype); finish_template_decl (yyvsp[-2].ttype);
; ;
break;} break;}
case 542: case 542:
#line 2472 "parse.y" #line 2473 "parse.y"
{ {
/* Most of the productions for component_decl only /* Most of the productions for component_decl only
allow the creation of one new member, so we call allow the creation of one new member, so we call
...@@ -6479,7 +6480,7 @@ case 542: ...@@ -6479,7 +6480,7 @@ case 542:
; ;
break;} break;}
case 543: case 543:
#line 2493 "parse.y" #line 2494 "parse.y"
{ {
if (!yyvsp[0].itype) if (!yyvsp[0].itype)
grok_x_components (yyvsp[-1].ttype); grok_x_components (yyvsp[-1].ttype);
...@@ -6487,45 +6488,45 @@ case 543: ...@@ -6487,45 +6488,45 @@ case 543:
; ;
break;} break;}
case 544: case 544:
#line 2499 "parse.y" #line 2500 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
break;} break;}
case 545: case 545:
#line 2502 "parse.y" #line 2503 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
break;} break;}
case 546: case 546:
#line 2505 "parse.y" #line 2506 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 547: case 547:
#line 2507 "parse.y" #line 2508 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 548: case 548:
#line 2518 "parse.y" #line 2519 "parse.y"
{ tree specs, attrs; { tree specs, attrs;
split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs); split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype, yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, attrs)); ; build_tree_list (yyvsp[-1].ttype, attrs)); ;
break;} break;}
case 549: case 549:
#line 2523 "parse.y" #line 2524 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
break;} break;}
case 550: case 550:
#line 2526 "parse.y" #line 2527 "parse.y"
{ yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ; { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
break;} break;}
case 551: case 551:
#line 2532 "parse.y" #line 2533 "parse.y"
{ yyval.itype = 0; ; { yyval.itype = 0; ;
break;} break;}
case 552: case 552:
#line 2534 "parse.y" #line 2535 "parse.y"
{ {
if (PROCESSING_REAL_TEMPLATE_DECL_P ()) if (PROCESSING_REAL_TEMPLATE_DECL_P ())
yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
...@@ -6534,7 +6535,7 @@ case 552: ...@@ -6534,7 +6535,7 @@ case 552:
; ;
break;} break;}
case 553: case 553:
#line 2541 "parse.y" #line 2542 "parse.y"
{ {
check_multiple_declarators (); check_multiple_declarators ();
if (PROCESSING_REAL_TEMPLATE_DECL_P ()) if (PROCESSING_REAL_TEMPLATE_DECL_P ())
...@@ -6544,11 +6545,11 @@ case 553: ...@@ -6544,11 +6545,11 @@ case 553:
; ;
break;} break;}
case 554: case 554:
#line 2552 "parse.y" #line 2553 "parse.y"
{ yyval.itype = 0; ; { yyval.itype = 0; ;
break;} break;}
case 555: case 555:
#line 2554 "parse.y" #line 2555 "parse.y"
{ {
if (PROCESSING_REAL_TEMPLATE_DECL_P ()) if (PROCESSING_REAL_TEMPLATE_DECL_P ())
yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype);
...@@ -6557,7 +6558,7 @@ case 555: ...@@ -6557,7 +6558,7 @@ case 555:
; ;
break;} break;}
case 556: case 556:
#line 2561 "parse.y" #line 2562 "parse.y"
{ {
check_multiple_declarators (); check_multiple_declarators ();
if (PROCESSING_REAL_TEMPLATE_DECL_P ()) if (PROCESSING_REAL_TEMPLATE_DECL_P ())
...@@ -6567,7 +6568,7 @@ case 556: ...@@ -6567,7 +6568,7 @@ case 556:
; ;
break;} break;}
case 561: case 561:
#line 2582 "parse.y" #line 2583 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs, { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes); &prefix_attributes);
yyvsp[-4].ttype = current_declspecs; yyvsp[-4].ttype = current_declspecs;
...@@ -6575,7 +6576,7 @@ case 561: ...@@ -6575,7 +6576,7 @@ case 561:
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;} break;}
case 562: case 562:
#line 2588 "parse.y" #line 2589 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs, { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes); &prefix_attributes);
yyvsp[-4].ttype = current_declspecs; yyvsp[-4].ttype = current_declspecs;
...@@ -6583,7 +6584,7 @@ case 562: ...@@ -6583,7 +6584,7 @@ case 562:
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;} break;}
case 563: case 563:
#line 2597 "parse.y" #line 2598 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs, { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes); &prefix_attributes);
yyvsp[-4].ttype = current_declspecs; yyvsp[-4].ttype = current_declspecs;
...@@ -6591,7 +6592,7 @@ case 563: ...@@ -6591,7 +6592,7 @@ case 563:
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;} break;}
case 564: case 564:
#line 2603 "parse.y" #line 2604 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs, { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes); &prefix_attributes);
yyvsp[-4].ttype = current_declspecs; yyvsp[-4].ttype = current_declspecs;
...@@ -6599,7 +6600,7 @@ case 564: ...@@ -6599,7 +6600,7 @@ case 564:
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;} break;}
case 565: case 565:
#line 2609 "parse.y" #line 2610 "parse.y"
{ split_specs_attrs (yyvsp[-4].ttype, &current_declspecs, { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
&prefix_attributes); &prefix_attributes);
yyvsp[-4].ttype = current_declspecs; yyvsp[-4].ttype = current_declspecs;
...@@ -6607,7 +6608,7 @@ case 565: ...@@ -6607,7 +6608,7 @@ case 565:
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;} break;}
case 566: case 566:
#line 2615 "parse.y" #line 2616 "parse.y"
{ split_specs_attrs (yyvsp[-3].ttype, &current_declspecs, { split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
&prefix_attributes); &prefix_attributes);
yyvsp[-3].ttype = current_declspecs; yyvsp[-3].ttype = current_declspecs;
...@@ -6615,54 +6616,54 @@ case 566: ...@@ -6615,54 +6616,54 @@ case 566:
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;} break;}
case 567: case 567:
#line 2624 "parse.y" #line 2625 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;} break;}
case 568: case 568:
#line 2627 "parse.y" #line 2628 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;} break;}
case 569: case 569:
#line 2633 "parse.y" #line 2634 "parse.y"
{ yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
break;} break;}
case 570: case 570:
#line 2636 "parse.y" #line 2637 "parse.y"
{ yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;} break;}
case 571: case 571:
#line 2639 "parse.y" #line 2640 "parse.y"
{ yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
break;} break;}
case 573: case 573:
#line 2650 "parse.y" #line 2651 "parse.y"
{ TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 574: case 574:
#line 2655 "parse.y" #line 2656 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ; { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ;
break;} break;}
case 575: case 575:
#line 2657 "parse.y" #line 2658 "parse.y"
{ yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ; { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ;
break;} break;}
case 576: case 576:
#line 2663 "parse.y" #line 2664 "parse.y"
{ yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 577: case 577:
#line 2666 "parse.y" #line 2667 "parse.y"
{ yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 578: case 578:
#line 2673 "parse.y" #line 2674 "parse.y"
{ {
if (pedantic) if (pedantic)
pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new"); pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
...@@ -6672,71 +6673,71 @@ case 578: ...@@ -6672,71 +6673,71 @@ case 578:
; ;
break;} break;}
case 579: case 579:
#line 2684 "parse.y" #line 2685 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 580: case 580:
#line 2686 "parse.y" #line 2687 "parse.y"
{ yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;} break;}
case 581: case 581:
#line 2691 "parse.y" #line 2692 "parse.y"
{ yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); { yyval.ftype.t = build_decl_list (NULL_TREE, yyvsp[0].ttype);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 582: case 582:
#line 2694 "parse.y" #line 2695 "parse.y"
{ yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 583: case 583:
#line 2703 "parse.y" #line 2704 "parse.y"
{ yyval.itype = suspend_momentary (); ; { yyval.itype = suspend_momentary (); ;
break;} break;}
case 584: case 584:
#line 2708 "parse.y" #line 2709 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 585: case 585:
#line 2714 "parse.y" #line 2715 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 586: case 586:
#line 2716 "parse.y" #line 2717 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 587: case 587:
#line 2718 "parse.y" #line 2719 "parse.y"
{ resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
break;} break;}
case 588: case 588:
#line 2720 "parse.y" #line 2721 "parse.y"
{ resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
break;} break;}
case 589: case 589:
#line 2727 "parse.y" #line 2728 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 590: case 590:
#line 2729 "parse.y" #line 2730 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 591: case 591:
#line 2731 "parse.y" #line 2732 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 592: case 592:
#line 2733 "parse.y" #line 2734 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 593: case 593:
#line 2735 "parse.y" #line 2736 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 595: case 595:
#line 2743 "parse.y" #line 2744 "parse.y"
{ {
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
{ {
...@@ -6755,7 +6756,7 @@ case 595: ...@@ -6755,7 +6756,7 @@ case 595:
; ;
break;} break;}
case 596: case 596:
#line 2760 "parse.y" #line 2761 "parse.y"
{ {
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
...@@ -6765,37 +6766,37 @@ case 596: ...@@ -6765,37 +6766,37 @@ case 596:
; ;
break;} break;}
case 599: case 599:
#line 2773 "parse.y" #line 2774 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 600: case 600:
#line 2778 "parse.y" #line 2779 "parse.y"
{ yyval.ttype = get_type_decl (yyvsp[0].ttype); ; { yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
break;} break;}
case 601: case 601:
#line 2783 "parse.y" #line 2784 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 602: case 602:
#line 2785 "parse.y" #line 2786 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;} break;}
case 603: case 603:
#line 2787 "parse.y" #line 2788 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
break;} break;}
case 604: case 604:
#line 2789 "parse.y" #line 2790 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ; { yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 605: case 605:
#line 2791 "parse.y" #line 2792 "parse.y"
{ push_nested_class (yyvsp[-1].ttype, 3); { push_nested_class (yyvsp[-1].ttype, 3);
yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ; TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
break;} break;}
case 608: case 608:
#line 2803 "parse.y" #line 2804 "parse.y"
{ {
/* Provide support for '(' attributes '*' declarator ')' /* Provide support for '(' attributes '*' declarator ')'
etc */ etc */
...@@ -6803,122 +6804,122 @@ case 608: ...@@ -6803,122 +6804,122 @@ case 608:
; ;
break;} break;}
case 609: case 609:
#line 2812 "parse.y" #line 2813 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 610: case 610:
#line 2814 "parse.y" #line 2815 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 611: case 611:
#line 2816 "parse.y" #line 2817 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 612: case 612:
#line 2818 "parse.y" #line 2819 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 613: case 613:
#line 2820 "parse.y" #line 2821 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 615: case 615:
#line 2828 "parse.y" #line 2829 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 616: case 616:
#line 2830 "parse.y" #line 2831 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 617: case 617:
#line 2832 "parse.y" #line 2833 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 618: case 618:
#line 2834 "parse.y" #line 2835 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 619: case 619:
#line 2836 "parse.y" #line 2837 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 621: case 621:
#line 2844 "parse.y" #line 2845 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 622: case 622:
#line 2846 "parse.y" #line 2847 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ; { yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 623: case 623:
#line 2848 "parse.y" #line 2849 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;} break;}
case 624: case 624:
#line 2850 "parse.y" #line 2851 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
break;} break;}
case 625: case 625:
#line 2852 "parse.y" #line 2853 "parse.y"
{ enter_scope_of (yyvsp[0].ttype); ; { enter_scope_of (yyvsp[0].ttype); ;
break;} break;}
case 626: case 626:
#line 2854 "parse.y" #line 2855 "parse.y"
{ got_scope = NULL_TREE; { got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype);
enter_scope_of (yyval.ttype); enter_scope_of (yyval.ttype);
; ;
break;} break;}
case 627: case 627:
#line 2862 "parse.y" #line 2863 "parse.y"
{ got_scope = NULL_TREE; { got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
break;} break;}
case 628: case 628:
#line 2865 "parse.y" #line 2866 "parse.y"
{ got_scope = NULL_TREE; { got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 629: case 629:
#line 2871 "parse.y" #line 2872 "parse.y"
{ got_scope = NULL_TREE; { got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
break;} break;}
case 630: case 630:
#line 2874 "parse.y" #line 2875 "parse.y"
{ got_scope = NULL_TREE; { got_scope = NULL_TREE;
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 632: case 632:
#line 2881 "parse.y" #line 2882 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 633: case 633:
#line 2886 "parse.y" #line 2887 "parse.y"
{ yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
break;} break;}
case 634: case 634:
#line 2888 "parse.y" #line 2889 "parse.y"
{ yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
break;} break;}
case 635: case 635:
#line 2890 "parse.y" #line 2891 "parse.y"
{ yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 640: case 640:
#line 2901 "parse.y" #line 2902 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 641: case 641:
#line 2903 "parse.y" #line 2904 "parse.y"
{ got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 642: case 642:
#line 2910 "parse.y" #line 2911 "parse.y"
{ {
if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
{ {
...@@ -6934,7 +6935,7 @@ case 642: ...@@ -6934,7 +6935,7 @@ case 642:
; ;
break;} break;}
case 643: case 643:
#line 2924 "parse.y" #line 2925 "parse.y"
{ {
if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
yyval.ttype = lastiddecl; yyval.ttype = lastiddecl;
...@@ -6942,7 +6943,7 @@ case 643: ...@@ -6942,7 +6943,7 @@ case 643:
; ;
break;} break;}
case 644: case 644:
#line 2930 "parse.y" #line 2931 "parse.y"
{ {
if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
yyval.ttype = lastiddecl; yyval.ttype = lastiddecl;
...@@ -6950,15 +6951,15 @@ case 644: ...@@ -6950,15 +6951,15 @@ case 644:
; ;
break;} break;}
case 645: case 645:
#line 2936 "parse.y" #line 2937 "parse.y"
{ got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ; { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
break;} break;}
case 647: case 647:
#line 2952 "parse.y" #line 2953 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 648: case 648:
#line 2957 "parse.y" #line 2958 "parse.y"
{ {
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
...@@ -6973,26 +6974,26 @@ case 648: ...@@ -6973,26 +6974,26 @@ case 648:
; ;
break;} break;}
case 649: case 649:
#line 2970 "parse.y" #line 2971 "parse.y"
{ yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ; { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ;
break;} break;}
case 650: case 650:
#line 2972 "parse.y" #line 2973 "parse.y"
{ yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 651: case 651:
#line 2974 "parse.y" #line 2975 "parse.y"
{ yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ;
break;} break;}
case 652: case 652:
#line 2979 "parse.y" #line 2980 "parse.y"
{ {
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype); cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
; ;
break;} break;}
case 653: case 653:
#line 2984 "parse.y" #line 2985 "parse.y"
{ {
if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
...@@ -7007,15 +7008,15 @@ case 653: ...@@ -7007,15 +7008,15 @@ case 653:
; ;
break;} break;}
case 654: case 654:
#line 2997 "parse.y" #line 2998 "parse.y"
{ got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ; { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 655: case 655:
#line 2999 "parse.y" #line 3000 "parse.y"
{ got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 656: case 656:
#line 3004 "parse.y" #line 3005 "parse.y"
{ {
if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
yyvsp[-1].ttype = lastiddecl; yyvsp[-1].ttype = lastiddecl;
...@@ -7029,7 +7030,7 @@ case 656: ...@@ -7029,7 +7030,7 @@ case 656:
; ;
break;} break;}
case 657: case 657:
#line 3016 "parse.y" #line 3017 "parse.y"
{ {
if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
yyval.ttype = lastiddecl; yyval.ttype = lastiddecl;
...@@ -7037,11 +7038,11 @@ case 657: ...@@ -7037,11 +7038,11 @@ case 657:
; ;
break;} break;}
case 658: case 658:
#line 3022 "parse.y" #line 3023 "parse.y"
{ got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
break;} break;}
case 661: case 661:
#line 3026 "parse.y" #line 3027 "parse.y"
{ {
if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
yyval.ttype = lastiddecl; yyval.ttype = lastiddecl;
...@@ -7049,11 +7050,11 @@ case 661: ...@@ -7049,11 +7050,11 @@ case 661:
; ;
break;} break;}
case 662: case 662:
#line 3035 "parse.y" #line 3036 "parse.y"
{ yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 663: case 663:
#line 3040 "parse.y" #line 3041 "parse.y"
{ {
if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
...@@ -7063,148 +7064,148 @@ case 663: ...@@ -7063,148 +7064,148 @@ case 663:
; ;
break;} break;}
case 665: case 665:
#line 3049 "parse.y" #line 3050 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 666: case 666:
#line 3054 "parse.y" #line 3055 "parse.y"
{ got_scope = NULL_TREE; ; { got_scope = NULL_TREE; ;
break;} break;}
case 667: case 667:
#line 3056 "parse.y" #line 3057 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ; { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
break;} break;}
case 668: case 668:
#line 3063 "parse.y" #line 3064 "parse.y"
{ got_scope = void_type_node; ; { got_scope = void_type_node; ;
break;} break;}
case 669: case 669:
#line 3069 "parse.y" #line 3070 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 670: case 670:
#line 3071 "parse.y" #line 3072 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;} break;}
case 671: case 671:
#line 3073 "parse.y" #line 3074 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 672: case 672:
#line 3075 "parse.y" #line 3076 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ; { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
break;} break;}
case 673: case 673:
#line 3077 "parse.y" #line 3078 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
; ;
break;} break;}
case 674: case 674:
#line 3081 "parse.y" #line 3082 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 676: case 676:
#line 3090 "parse.y" #line 3091 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
break;} break;}
case 677: case 677:
#line 3092 "parse.y" #line 3093 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;} break;}
case 678: case 678:
#line 3098 "parse.y" #line 3099 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 679: case 679:
#line 3100 "parse.y" #line 3101 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 680: case 680:
#line 3102 "parse.y" #line 3103 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ; { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
break;} break;}
case 681: case 681:
#line 3104 "parse.y" #line 3105 "parse.y"
{ yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ; { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
break;} break;}
case 682: case 682:
#line 3106 "parse.y" #line 3107 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 683: case 683:
#line 3108 "parse.y" #line 3109 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
break;} break;}
case 684: case 684:
#line 3110 "parse.y" #line 3111 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ; { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
break;} break;}
case 685: case 685:
#line 3112 "parse.y" #line 3113 "parse.y"
{ yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ; { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
break;} break;}
case 686: case 686:
#line 3114 "parse.y" #line 3115 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
; ;
break;} break;}
case 687: case 687:
#line 3118 "parse.y" #line 3119 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 689: case 689:
#line 3127 "parse.y" #line 3128 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ; { yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 691: case 691:
#line 3131 "parse.y" #line 3132 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 692: case 692:
#line 3133 "parse.y" #line 3134 "parse.y"
{ yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 693: case 693:
#line 3135 "parse.y" #line 3136 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
break;} break;}
case 694: case 694:
#line 3137 "parse.y" #line 3138 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
break;} break;}
case 695: case 695:
#line 3139 "parse.y" #line 3140 "parse.y"
{ yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 696: case 696:
#line 3141 "parse.y" #line 3142 "parse.y"
{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 697: case 697:
#line 3143 "parse.y" #line 3144 "parse.y"
{ set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 698: case 698:
#line 3145 "parse.y" #line 3146 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
break;} break;}
case 699: case 699:
#line 3147 "parse.y" #line 3148 "parse.y"
{ yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ; { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
break;} break;}
case 706: case 706:
#line 3170 "parse.y" #line 3171 "parse.y"
{ if (pedantic) { if (pedantic)
pedwarn ("ANSI C++ forbids label declarations"); ; pedwarn ("ANSI C++ forbids label declarations"); ;
break;} break;}
case 709: case 709:
#line 3181 "parse.y" #line 3182 "parse.y"
{ tree link; { tree link;
for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
{ {
...@@ -7215,181 +7216,181 @@ case 709: ...@@ -7215,181 +7216,181 @@ case 709:
; ;
break;} break;}
case 710: case 710:
#line 3195 "parse.y" #line 3196 "parse.y"
{; {;
break;} break;}
case 712: case 712:
#line 3201 "parse.y" #line 3202 "parse.y"
{ yyval.ttype = begin_compound_stmt (0); ; { yyval.ttype = begin_compound_stmt (0); ;
break;} break;}
case 713: case 713:
#line 3203 "parse.y" #line 3204 "parse.y"
{ yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
break;} break;}
case 714: case 714:
#line 3208 "parse.y" #line 3209 "parse.y"
{ {
yyval.ttype = begin_if_stmt (); yyval.ttype = begin_if_stmt ();
cond_stmt_keyword = "if"; cond_stmt_keyword = "if";
; ;
break;} break;}
case 715: case 715:
#line 3213 "parse.y" #line 3214 "parse.y"
{ finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 716: case 716:
#line 3215 "parse.y" #line 3216 "parse.y"
{ yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ; { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ;
break;} break;}
case 718: case 718:
#line 3220 "parse.y" #line 3221 "parse.y"
{ yyval.ttype = begin_compound_stmt (0); ; { yyval.ttype = begin_compound_stmt (0); ;
break;} break;}
case 719: case 719:
#line 3222 "parse.y" #line 3223 "parse.y"
{ yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
break;} break;}
case 720: case 720:
#line 3227 "parse.y" #line 3228 "parse.y"
{; {;
break;} break;}
case 722: case 722:
#line 3233 "parse.y" #line 3234 "parse.y"
{ finish_stmt (); ; { finish_stmt (); ;
break;} break;}
case 723: case 723:
#line 3235 "parse.y" #line 3236 "parse.y"
{ finish_expr_stmt (yyvsp[-1].ttype); ; { finish_expr_stmt (yyvsp[-1].ttype); ;
break;} break;}
case 724: case 724:
#line 3237 "parse.y" #line 3238 "parse.y"
{ begin_else_clause (); ; { begin_else_clause (); ;
break;} break;}
case 725: case 725:
#line 3239 "parse.y" #line 3240 "parse.y"
{ {
finish_else_clause (yyvsp[-3].ttype); finish_else_clause (yyvsp[-3].ttype);
finish_if_stmt (); finish_if_stmt ();
; ;
break;} break;}
case 726: case 726:
#line 3244 "parse.y" #line 3245 "parse.y"
{ finish_if_stmt (); ; { finish_if_stmt (); ;
break;} break;}
case 727: case 727:
#line 3246 "parse.y" #line 3247 "parse.y"
{ {
yyval.ttype = begin_while_stmt (); yyval.ttype = begin_while_stmt ();
cond_stmt_keyword = "while"; cond_stmt_keyword = "while";
; ;
break;} break;}
case 728: case 728:
#line 3251 "parse.y" #line 3252 "parse.y"
{ finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 729: case 729:
#line 3253 "parse.y" #line 3254 "parse.y"
{ finish_while_stmt (yyvsp[-3].ttype); ; { finish_while_stmt (yyvsp[-3].ttype); ;
break;} break;}
case 730: case 730:
#line 3255 "parse.y" #line 3256 "parse.y"
{ yyval.ttype = begin_do_stmt (); ; { yyval.ttype = begin_do_stmt (); ;
break;} break;}
case 731: case 731:
#line 3257 "parse.y" #line 3258 "parse.y"
{ {
finish_do_body (yyvsp[-2].ttype); finish_do_body (yyvsp[-2].ttype);
cond_stmt_keyword = "do"; cond_stmt_keyword = "do";
; ;
break;} break;}
case 732: case 732:
#line 3262 "parse.y" #line 3263 "parse.y"
{ finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ; { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
break;} break;}
case 733: case 733:
#line 3264 "parse.y" #line 3265 "parse.y"
{ yyval.ttype = begin_for_stmt (); ; { yyval.ttype = begin_for_stmt (); ;
break;} break;}
case 734: case 734:
#line 3266 "parse.y" #line 3267 "parse.y"
{ finish_for_init_stmt (yyvsp[-2].ttype); ; { finish_for_init_stmt (yyvsp[-2].ttype); ;
break;} break;}
case 735: case 735:
#line 3268 "parse.y" #line 3269 "parse.y"
{ finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ; { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
break;} break;}
case 736: case 736:
#line 3270 "parse.y" #line 3271 "parse.y"
{ finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ; { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ;
break;} break;}
case 737: case 737:
#line 3272 "parse.y" #line 3273 "parse.y"
{ finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ; { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ;
break;} break;}
case 738: case 738:
#line 3274 "parse.y" #line 3275 "parse.y"
{ begin_switch_stmt (); ; { begin_switch_stmt (); ;
break;} break;}
case 739: case 739:
#line 3276 "parse.y" #line 3277 "parse.y"
{ yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ; { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ;
break;} break;}
case 740: case 740:
#line 3278 "parse.y" #line 3279 "parse.y"
{ finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ; { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 741: case 741:
#line 3280 "parse.y" #line 3281 "parse.y"
{ finish_case_label (yyvsp[-1].ttype, NULL_TREE); ; { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ;
break;} break;}
case 743: case 743:
#line 3283 "parse.y" #line 3284 "parse.y"
{ finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ; { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
break;} break;}
case 745: case 745:
#line 3286 "parse.y" #line 3287 "parse.y"
{ finish_case_label (NULL_TREE, NULL_TREE); ; { finish_case_label (NULL_TREE, NULL_TREE); ;
break;} break;}
case 747: case 747:
#line 3289 "parse.y" #line 3290 "parse.y"
{ finish_break_stmt (); ; { finish_break_stmt (); ;
break;} break;}
case 748: case 748:
#line 3291 "parse.y" #line 3292 "parse.y"
{ finish_continue_stmt (); ; { finish_continue_stmt (); ;
break;} break;}
case 749: case 749:
#line 3293 "parse.y" #line 3294 "parse.y"
{ finish_return_stmt (NULL_TREE); ; { finish_return_stmt (NULL_TREE); ;
break;} break;}
case 750: case 750:
#line 3295 "parse.y" #line 3296 "parse.y"
{ finish_return_stmt (yyvsp[-1].ttype); ; { finish_return_stmt (yyvsp[-1].ttype); ;
break;} break;}
case 751: case 751:
#line 3297 "parse.y" #line 3298 "parse.y"
{ {
finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
NULL_TREE); NULL_TREE);
; ;
break;} break;}
case 752: case 752:
#line 3303 "parse.y" #line 3304 "parse.y"
{ {
finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
NULL_TREE); NULL_TREE);
; ;
break;} break;}
case 753: case 753:
#line 3309 "parse.y" #line 3310 "parse.y"
{ finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
break;} break;}
case 754: case 754:
#line 3313 "parse.y" #line 3314 "parse.y"
{ finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
break;} break;}
case 755: case 755:
#line 3315 "parse.y" #line 3316 "parse.y"
{ {
if (pedantic) if (pedantic)
pedwarn ("ANSI C++ forbids computed gotos"); pedwarn ("ANSI C++ forbids computed gotos");
...@@ -7397,29 +7398,29 @@ case 755: ...@@ -7397,29 +7398,29 @@ case 755:
; ;
break;} break;}
case 756: case 756:
#line 3321 "parse.y" #line 3322 "parse.y"
{ finish_goto_stmt (yyvsp[-1].ttype); ; { finish_goto_stmt (yyvsp[-1].ttype); ;
break;} break;}
case 757: case 757:
#line 3323 "parse.y" #line 3324 "parse.y"
{ finish_stmt (); ; { finish_stmt (); ;
break;} break;}
case 758: case 758:
#line 3325 "parse.y" #line 3326 "parse.y"
{ error ("label must be followed by statement"); { error ("label must be followed by statement");
yyungetc ('}', 0); yyungetc ('}', 0);
finish_stmt (); ; finish_stmt (); ;
break;} break;}
case 759: case 759:
#line 3329 "parse.y" #line 3330 "parse.y"
{ finish_stmt (); ; { finish_stmt (); ;
break;} break;}
case 762: case 762:
#line 3333 "parse.y" #line 3334 "parse.y"
{ do_local_using_decl (yyvsp[0].ttype); ; { do_local_using_decl (yyvsp[0].ttype); ;
break;} break;}
case 764: case 764:
#line 3339 "parse.y" #line 3340 "parse.y"
{ {
if (! current_function_parms_stored) if (! current_function_parms_stored)
store_parm_decls (); store_parm_decls ();
...@@ -7427,54 +7428,54 @@ case 764: ...@@ -7427,54 +7428,54 @@ case 764:
; ;
break;} break;}
case 765: case 765:
#line 3345 "parse.y" #line 3346 "parse.y"
{ {
expand_start_all_catch (); expand_start_all_catch ();
; ;
break;} break;}
case 766: case 766:
#line 3349 "parse.y" #line 3350 "parse.y"
{ {
expand_end_all_catch (); expand_end_all_catch ();
yyval.itype = yyvsp[-3].itype; yyval.itype = yyvsp[-3].itype;
; ;
break;} break;}
case 767: case 767:
#line 3357 "parse.y" #line 3358 "parse.y"
{ yyval.ttype = begin_try_block (); ; { yyval.ttype = begin_try_block (); ;
break;} break;}
case 768: case 768:
#line 3359 "parse.y" #line 3360 "parse.y"
{ finish_try_block (yyvsp[-1].ttype); ; { finish_try_block (yyvsp[-1].ttype); ;
break;} break;}
case 769: case 769:
#line 3361 "parse.y" #line 3362 "parse.y"
{ finish_handler_sequence (yyvsp[-3].ttype); ; { finish_handler_sequence (yyvsp[-3].ttype); ;
break;} break;}
case 772: case 772:
#line 3371 "parse.y" #line 3372 "parse.y"
{ yyval.ttype = begin_handler(); ; { yyval.ttype = begin_handler(); ;
break;} break;}
case 773: case 773:
#line 3373 "parse.y" #line 3374 "parse.y"
{ finish_handler_parms (yyvsp[-1].ttype); ; { finish_handler_parms (yyvsp[-1].ttype); ;
break;} break;}
case 774: case 774:
#line 3375 "parse.y" #line 3376 "parse.y"
{ finish_handler (yyvsp[-3].ttype); ; { finish_handler (yyvsp[-3].ttype); ;
break;} break;}
case 777: case 777:
#line 3385 "parse.y" #line 3386 "parse.y"
{ expand_start_catch_block (NULL_TREE, NULL_TREE); ; { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
break;} break;}
case 778: case 778:
#line 3401 "parse.y" #line 3402 "parse.y"
{ check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t), expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
TREE_VALUE (yyvsp[-1].ftype.t)); ; TREE_VALUE (yyvsp[-1].ftype.t)); ;
break;} break;}
case 779: case 779:
#line 3408 "parse.y" #line 3409 "parse.y"
{ tree label; { tree label;
do_label: do_label:
label = define_label (input_filename, lineno, yyvsp[-1].ttype); label = define_label (input_filename, lineno, yyvsp[-1].ttype);
...@@ -7483,98 +7484,98 @@ case 779: ...@@ -7483,98 +7484,98 @@ case 779:
; ;
break;} break;}
case 780: case 780:
#line 3415 "parse.y" #line 3416 "parse.y"
{ goto do_label; ; { goto do_label; ;
break;} break;}
case 781: case 781:
#line 3417 "parse.y" #line 3418 "parse.y"
{ goto do_label; ; { goto do_label; ;
break;} break;}
case 782: case 782:
#line 3419 "parse.y" #line 3420 "parse.y"
{ goto do_label; ; { goto do_label; ;
break;} break;}
case 783: case 783:
#line 3424 "parse.y" #line 3425 "parse.y"
{ if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
break;} break;}
case 785: case 785:
#line 3427 "parse.y" #line 3428 "parse.y"
{ if (pedantic) { if (pedantic)
pedwarn ("ANSI C++ forbids compound statements inside for initializations"); pedwarn ("ANSI C++ forbids compound statements inside for initializations");
; ;
break;} break;}
case 786: case 786:
#line 3436 "parse.y" #line 3437 "parse.y"
{ emit_line_note (input_filename, lineno); { emit_line_note (input_filename, lineno);
yyval.ttype = NULL_TREE; ; yyval.ttype = NULL_TREE; ;
break;} break;}
case 787: case 787:
#line 3439 "parse.y" #line 3440 "parse.y"
{ emit_line_note (input_filename, lineno); ; { emit_line_note (input_filename, lineno); ;
break;} break;}
case 788: case 788:
#line 3444 "parse.y" #line 3445 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 790: case 790:
#line 3447 "parse.y" #line 3448 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 791: case 791:
#line 3454 "parse.y" #line 3455 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 794: case 794:
#line 3461 "parse.y" #line 3462 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
break;} break;}
case 795: case 795:
#line 3466 "parse.y" #line 3467 "parse.y"
{ yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
break;} break;}
case 796: case 796:
#line 3471 "parse.y" #line 3472 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
break;} break;}
case 797: case 797:
#line 3473 "parse.y" #line 3474 "parse.y"
{ yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
break;} break;}
case 798: case 798:
#line 3484 "parse.y" #line 3485 "parse.y"
{ {
yyval.ttype = empty_parms(); yyval.ttype = empty_parms();
; ;
break;} break;}
case 800: case 800:
#line 3489 "parse.y" #line 3490 "parse.y"
{ yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0); { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0);
check_for_new_type ("inside parameter list", yyvsp[0].ftype); ; check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
break;} break;}
case 801: case 801:
#line 3497 "parse.y" #line 3498 "parse.y"
{ yyval.ttype = finish_parmlist (yyval.ttype, 0); ; { yyval.ttype = finish_parmlist (yyval.ttype, 0); ;
break;} break;}
case 802: case 802:
#line 3499 "parse.y" #line 3500 "parse.y"
{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
break;} break;}
case 803: case 803:
#line 3502 "parse.y" #line 3503 "parse.y"
{ yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ;
break;} break;}
case 804: case 804:
#line 3504 "parse.y" #line 3505 "parse.y"
{ yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE,
yyvsp[-1].ftype.t), 1); ; yyvsp[-1].ftype.t), 1); ;
break;} break;}
case 805: case 805:
#line 3507 "parse.y" #line 3508 "parse.y"
{ yyval.ttype = finish_parmlist (NULL_TREE, 1); ; { yyval.ttype = finish_parmlist (NULL_TREE, 1); ;
break;} break;}
case 806: case 806:
#line 3509 "parse.y" #line 3510 "parse.y"
{ {
/* This helps us recover from really nasty /* This helps us recover from really nasty
parse errors, for example, a missing right parse errors, for example, a missing right
...@@ -7586,7 +7587,7 @@ case 806: ...@@ -7586,7 +7587,7 @@ case 806:
; ;
break;} break;}
case 807: case 807:
#line 3519 "parse.y" #line 3520 "parse.y"
{ {
/* This helps us recover from really nasty /* This helps us recover from really nasty
parse errors, for example, a missing right parse errors, for example, a missing right
...@@ -7599,98 +7600,99 @@ case 807: ...@@ -7599,98 +7600,99 @@ case 807:
; ;
break;} break;}
case 808: case 808:
#line 3534 "parse.y" #line 3535 "parse.y"
{ maybe_snarf_defarg (); ; { maybe_snarf_defarg (); ;
break;} break;}
case 809: case 809:
#line 3536 "parse.y" #line 3537 "parse.y"
{ yyval.ttype = yyvsp[0].ttype; ; { yyval.ttype = yyvsp[0].ttype; ;
break;} break;}
case 812: case 812:
#line 3547 "parse.y" #line 3548 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[0].ftype); { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ; yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
break;} break;}
case 813: case 813:
#line 3550 "parse.y" #line 3551 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[-1].ftype); { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ; yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
break;} break;}
case 814: case 814:
#line 3553 "parse.y" #line 3554 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[0].ftype); { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
break;} break;}
case 815: case 815:
#line 3556 "parse.y" #line 3557 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
break;} break;}
case 816: case 816:
#line 3558 "parse.y" #line 3559 "parse.y"
{ yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
break;} break;}
case 818: case 818:
#line 3564 "parse.y" #line 3565 "parse.y"
{ check_for_new_type ("in a parameter list", yyvsp[-1].ftype); { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ; yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
break;} break;}
case 819: case 819:
#line 3574 "parse.y" #line 3575 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ftype.t); { tree specs = strip_attrs (yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ; yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
break;} break;}
case 820: case 820:
#line 3578 "parse.y" #line 3579 "parse.y"
{ yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 821: case 821:
#line 3581 "parse.y" #line 3582 "parse.y"
{ yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); { yyval.ftype.t = build_tree_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t),
yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 822: case 822:
#line 3584 "parse.y" #line 3586 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ftype.t); { tree specs = strip_attrs (yyvsp[-1].ftype.t);
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 823: case 823:
#line 3588 "parse.y" #line 3590 "parse.y"
{ tree specs = strip_attrs (yyvsp[0].ftype.t); { tree specs = strip_attrs (yyvsp[0].ftype.t);
yyval.ftype.t = build_tree_list (specs, NULL_TREE); yyval.ftype.t = build_tree_list (specs, NULL_TREE);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 824: case 824:
#line 3592 "parse.y" #line 3594 "parse.y"
{ tree specs = strip_attrs (yyvsp[-1].ttype); { tree specs = strip_attrs (yyvsp[-1].ttype);
yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
yyval.ftype.new_type_flag = 0; ; yyval.ftype.new_type_flag = 0; ;
break;} break;}
case 825: case 825:
#line 3599 "parse.y" #line 3601 "parse.y"
{ yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
break;} break;}
case 826: case 826:
#line 3602 "parse.y" #line 3604 "parse.y"
{ yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
break;} break;}
case 829: case 829:
#line 3613 "parse.y" #line 3615 "parse.y"
{ see_typename (); ; { see_typename (); ;
break;} break;}
case 830: case 830:
#line 3618 "parse.y" #line 3620 "parse.y"
{ {
error ("type specifier omitted for parameter"); error ("type specifier omitted for parameter");
yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
; ;
break;} break;}
case 831: case 831:
#line 3623 "parse.y" #line 3625 "parse.y"
{ {
error ("type specifier omitted for parameter"); error ("type specifier omitted for parameter");
if (TREE_CODE (yyval.ttype) == SCOPE_REF if (TREE_CODE (yyval.ttype) == SCOPE_REF
...@@ -7701,188 +7703,188 @@ case 831: ...@@ -7701,188 +7703,188 @@ case 831:
; ;
break;} break;}
case 832: case 832:
#line 3635 "parse.y" #line 3637 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 833: case 833:
#line 3637 "parse.y" #line 3639 "parse.y"
{ yyval.ttype = yyvsp[-1].ttype; ; { yyval.ttype = yyvsp[-1].ttype; ;
break;} break;}
case 834: case 834:
#line 3639 "parse.y" #line 3641 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
break;} break;}
case 835: case 835:
#line 3644 "parse.y" #line 3646 "parse.y"
{ yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
break;} break;}
case 837: case 837:
#line 3650 "parse.y" #line 3652 "parse.y"
{ {
TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
yyval.ttype = yyvsp[0].ttype; yyval.ttype = yyvsp[0].ttype;
; ;
break;} break;}
case 838: case 838:
#line 3658 "parse.y" #line 3660 "parse.y"
{ yyval.ttype = NULL_TREE; ; { yyval.ttype = NULL_TREE; ;
break;} break;}
case 839: case 839:
#line 3660 "parse.y" #line 3662 "parse.y"
{ yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 840: case 840:
#line 3662 "parse.y" #line 3664 "parse.y"
{ yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
break;} break;}
case 841: case 841:
#line 3664 "parse.y" #line 3666 "parse.y"
{ tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
; ;
break;} break;}
case 842: case 842:
#line 3671 "parse.y" #line 3673 "parse.y"
{ got_scope = NULL_TREE; ; { got_scope = NULL_TREE; ;
break;} break;}
case 843: case 843:
#line 3676 "parse.y" #line 3678 "parse.y"
{ yyval.ttype = ansi_opname[MULT_EXPR]; ; { yyval.ttype = ansi_opname[MULT_EXPR]; ;
break;} break;}
case 844: case 844:
#line 3678 "parse.y" #line 3680 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
break;} break;}
case 845: case 845:
#line 3680 "parse.y" #line 3682 "parse.y"
{ yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
break;} break;}
case 846: case 846:
#line 3682 "parse.y" #line 3684 "parse.y"
{ yyval.ttype = ansi_opname[PLUS_EXPR]; ; { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
break;} break;}
case 847: case 847:
#line 3684 "parse.y" #line 3686 "parse.y"
{ yyval.ttype = ansi_opname[MINUS_EXPR]; ; { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
break;} break;}
case 848: case 848:
#line 3686 "parse.y" #line 3688 "parse.y"
{ yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
break;} break;}
case 849: case 849:
#line 3688 "parse.y" #line 3690 "parse.y"
{ yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
break;} break;}
case 850: case 850:
#line 3690 "parse.y" #line 3692 "parse.y"
{ yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
break;} break;}
case 851: case 851:
#line 3692 "parse.y" #line 3694 "parse.y"
{ yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
break;} break;}
case 852: case 852:
#line 3694 "parse.y" #line 3696 "parse.y"
{ yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
break;} break;}
case 853: case 853:
#line 3696 "parse.y" #line 3698 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 854: case 854:
#line 3698 "parse.y" #line 3700 "parse.y"
{ yyval.ttype = ansi_opname[LT_EXPR]; ; { yyval.ttype = ansi_opname[LT_EXPR]; ;
break;} break;}
case 855: case 855:
#line 3700 "parse.y" #line 3702 "parse.y"
{ yyval.ttype = ansi_opname[GT_EXPR]; ; { yyval.ttype = ansi_opname[GT_EXPR]; ;
break;} break;}
case 856: case 856:
#line 3702 "parse.y" #line 3704 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 857: case 857:
#line 3704 "parse.y" #line 3706 "parse.y"
{ yyval.ttype = ansi_assopname[yyvsp[0].code]; ; { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
break;} break;}
case 858: case 858:
#line 3706 "parse.y" #line 3708 "parse.y"
{ yyval.ttype = ansi_opname [MODIFY_EXPR]; ; { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
break;} break;}
case 859: case 859:
#line 3708 "parse.y" #line 3710 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 860: case 860:
#line 3710 "parse.y" #line 3712 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 861: case 861:
#line 3712 "parse.y" #line 3714 "parse.y"
{ yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
break;} break;}
case 862: case 862:
#line 3714 "parse.y" #line 3716 "parse.y"
{ yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
break;} break;}
case 863: case 863:
#line 3716 "parse.y" #line 3718 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
break;} break;}
case 864: case 864:
#line 3718 "parse.y" #line 3720 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
break;} break;}
case 865: case 865:
#line 3720 "parse.y" #line 3722 "parse.y"
{ yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
break;} break;}
case 866: case 866:
#line 3722 "parse.y" #line 3724 "parse.y"
{ yyval.ttype = ansi_opname[COND_EXPR]; ; { yyval.ttype = ansi_opname[COND_EXPR]; ;
break;} break;}
case 867: case 867:
#line 3724 "parse.y" #line 3726 "parse.y"
{ yyval.ttype = ansi_opname[yyvsp[0].code]; ; { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
break;} break;}
case 868: case 868:
#line 3726 "parse.y" #line 3728 "parse.y"
{ yyval.ttype = ansi_opname[COMPONENT_REF]; ; { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
break;} break;}
case 869: case 869:
#line 3728 "parse.y" #line 3730 "parse.y"
{ yyval.ttype = ansi_opname[MEMBER_REF]; ; { yyval.ttype = ansi_opname[MEMBER_REF]; ;
break;} break;}
case 870: case 870:
#line 3730 "parse.y" #line 3732 "parse.y"
{ yyval.ttype = ansi_opname[CALL_EXPR]; ; { yyval.ttype = ansi_opname[CALL_EXPR]; ;
break;} break;}
case 871: case 871:
#line 3732 "parse.y" #line 3734 "parse.y"
{ yyval.ttype = ansi_opname[ARRAY_REF]; ; { yyval.ttype = ansi_opname[ARRAY_REF]; ;
break;} break;}
case 872: case 872:
#line 3734 "parse.y" #line 3736 "parse.y"
{ yyval.ttype = ansi_opname[NEW_EXPR]; ; { yyval.ttype = ansi_opname[NEW_EXPR]; ;
break;} break;}
case 873: case 873:
#line 3736 "parse.y" #line 3738 "parse.y"
{ yyval.ttype = ansi_opname[DELETE_EXPR]; ; { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
break;} break;}
case 874: case 874:
#line 3738 "parse.y" #line 3740 "parse.y"
{ yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
break;} break;}
case 875: case 875:
#line 3740 "parse.y" #line 3742 "parse.y"
{ yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
break;} break;}
case 876: case 876:
#line 3743 "parse.y" #line 3745 "parse.y"
{ yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
break;} break;}
case 877: case 877:
#line 3745 "parse.y" #line 3747 "parse.y"
{ yyval.ttype = ansi_opname[ERROR_MARK]; ; { yyval.ttype = ansi_opname[ERROR_MARK]; ;
break;} break;}
} }
...@@ -8083,7 +8085,7 @@ yyerrhandle: ...@@ -8083,7 +8085,7 @@ yyerrhandle:
yystate = yyn; yystate = yyn;
goto yynewstate; goto yynewstate;
} }
#line 3748 "parse.y" #line 3750 "parse.y"
#ifdef SPEW_DEBUG #ifdef SPEW_DEBUG
......
...@@ -319,7 +319,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl) ...@@ -319,7 +319,7 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
split_specs_attrs (specs_attrs, &current_declspecs, &prefix_attributes); split_specs_attrs (specs_attrs, &current_declspecs, &prefix_attributes);
if (current_declspecs if (current_declspecs
&& TREE_CODE (current_declspecs) != TREE_LIST) && TREE_CODE (current_declspecs) != TREE_LIST)
current_declspecs = get_decl_list (current_declspecs); current_declspecs = build_decl_list (NULL_TREE, current_declspecs);
if (have_extern_spec && !used_extern_spec) if (have_extern_spec && !used_extern_spec)
{ {
current_declspecs = decl_tree_cons (NULL_TREE, current_declspecs = decl_tree_cons (NULL_TREE,
...@@ -1686,7 +1686,8 @@ type_id: ...@@ -1686,7 +1686,8 @@ type_id:
{ $$.t = build_decl_list ($1.t, $2); { $$.t = build_decl_list ($1.t, $2);
$$.new_type_flag = $1.new_type_flag; } $$.new_type_flag = $1.new_type_flag; }
| typespec absdcl | typespec absdcl
{ $$.t = build_decl_list (get_decl_list ($1.t), $2); { $$.t = build_decl_list (build_decl_list (NULL_TREE, $1.t),
$2);
$$.new_type_flag = $1.new_type_flag; } $$.new_type_flag = $1.new_type_flag; }
| typed_typespecs %prec EMPTY | typed_typespecs %prec EMPTY
{ $$.t = build_decl_list ($1.t, NULL_TREE); { $$.t = build_decl_list ($1.t, NULL_TREE);
...@@ -1756,7 +1757,7 @@ declmods: ...@@ -1756,7 +1757,7 @@ declmods:
nonempty_cv_qualifiers %prec EMPTY nonempty_cv_qualifiers %prec EMPTY
{ $$ = $1.t; TREE_STATIC ($$) = 1; } { $$ = $1.t; TREE_STATIC ($$) = 1; }
| SCSPEC | SCSPEC
{ $$ = IDENTIFIER_AS_LIST ($$); } { $$ = build_decl_list (NULL_TREE, $$); }
| declmods CV_QUALIFIER | declmods CV_QUALIFIER
{ $$ = decl_tree_cons (NULL_TREE, $2, $$); { $$ = decl_tree_cons (NULL_TREE, $2, $$);
TREE_STATIC ($$) = 1; } TREE_STATIC ($$) = 1; }
...@@ -1780,7 +1781,7 @@ declmods: ...@@ -1780,7 +1781,7 @@ declmods:
typed_typespecs: typed_typespecs:
typespec %prec EMPTY typespec %prec EMPTY
{ $$.t = get_decl_list ($1.t); { $$.t = build_decl_list (NULL_TREE, $1.t);
$$.new_type_flag = $1.new_type_flag; } $$.new_type_flag = $1.new_type_flag; }
| nonempty_cv_qualifiers typespec | nonempty_cv_qualifiers typespec
{ $$.t = decl_tree_cons (NULL_TREE, $2.t, $1.t); { $$.t = decl_tree_cons (NULL_TREE, $2.t, $1.t);
...@@ -2688,7 +2689,7 @@ cv_qualifiers: ...@@ -2688,7 +2689,7 @@ cv_qualifiers:
nonempty_cv_qualifiers: nonempty_cv_qualifiers:
CV_QUALIFIER CV_QUALIFIER
{ $$.t = IDENTIFIER_AS_LIST ($1); { $$.t = build_decl_list (NULL_TREE, $1);
$$.new_type_flag = 0; } $$.new_type_flag = 0; }
| nonempty_cv_qualifiers CV_QUALIFIER | nonempty_cv_qualifiers CV_QUALIFIER
{ $$.t = decl_tree_cons (NULL_TREE, $2, $1.t); { $$.t = decl_tree_cons (NULL_TREE, $2, $1.t);
...@@ -3578,7 +3579,8 @@ named_parm: ...@@ -3578,7 +3579,8 @@ named_parm:
{ $$.t = build_tree_list ($1.t, $2); { $$.t = build_tree_list ($1.t, $2);
$$.new_type_flag = $1.new_type_flag; } $$.new_type_flag = $1.new_type_flag; }
| typespec declarator | typespec declarator
{ $$.t = build_tree_list (get_decl_list ($1.t), $2); { $$.t = build_tree_list (build_decl_list (NULL_TREE, $1.t),
$2);
$$.new_type_flag = $1.new_type_flag; } $$.new_type_flag = $1.new_type_flag; }
| typed_declspecs1 absdcl | typed_declspecs1 absdcl
{ tree specs = strip_attrs ($1.t); { tree specs = strip_attrs ($1.t);
......
/* Prints out trees in human readable form. /* Prints out trees in human readable form.
Copyright (C) 1992, 93-96, 1998 Free Software Foundation, Inc. Copyright (C) 1992, 93-96, 1998, 1999 Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com) Hacked by Michael Tiemann (tiemann@cygnus.com)
This file is part of GNU CC. This file is part of GNU CC.
...@@ -126,9 +126,7 @@ print_lang_type (file, node, indent) ...@@ -126,9 +126,7 @@ print_lang_type (file, node, indent)
if (TREE_CODE (node) == RECORD_TYPE) if (TREE_CODE (node) == RECORD_TYPE)
{ {
fprintf (file, " n_parents %d n_ancestors %d", fprintf (file, " n_parents %d", CLASSTYPE_N_BASECLASSES (node));
CLASSTYPE_N_BASECLASSES (node),
CLASSTYPE_N_SUPERCLASSES (node));
fprintf (file, " use_template=%d", CLASSTYPE_USE_TEMPLATE (node)); fprintf (file, " use_template=%d", CLASSTYPE_USE_TEMPLATE (node));
if (CLASSTYPE_INTERFACE_ONLY (node)) if (CLASSTYPE_INTERFACE_ONLY (node))
fprintf (file, " interface-only"); fprintf (file, " interface-only");
...@@ -136,9 +134,6 @@ print_lang_type (file, node, indent) ...@@ -136,9 +134,6 @@ print_lang_type (file, node, indent)
fprintf (file, " interface-unknown"); fprintf (file, " interface-unknown");
print_node (file, "member-functions", CLASSTYPE_METHOD_VEC (node), print_node (file, "member-functions", CLASSTYPE_METHOD_VEC (node),
indent + 4); indent + 4);
print_node (file, "baselinks",
TYPE_BINFO_BASETYPES (node) ? CLASSTYPE_BASELINK_VEC (node) : NULL_TREE,
indent + 4);
} }
} }
......
...@@ -78,6 +78,7 @@ pop_stack_level (stack) ...@@ -78,6 +78,7 @@ pop_stack_level (stack)
static struct search_level *search_stack; static struct search_level *search_stack;
static tree get_abstract_virtuals_1 PROTO((tree, int, tree)); static tree get_abstract_virtuals_1 PROTO((tree, int, tree));
static tree next_baselink PROTO((tree));
static tree get_vbase_1 PROTO((tree, tree, unsigned int *)); static tree get_vbase_1 PROTO((tree, tree, unsigned int *));
static tree convert_pointer_to_vbase PROTO((tree, tree)); static tree convert_pointer_to_vbase PROTO((tree, tree));
static tree lookup_field_1 PROTO((tree, tree)); static tree lookup_field_1 PROTO((tree, tree));
...@@ -2041,77 +2042,7 @@ get_abstract_virtuals (type) ...@@ -2041,77 +2042,7 @@ get_abstract_virtuals (type)
return nreverse (abstract_virtuals); return nreverse (abstract_virtuals);
} }
/* For the type TYPE, return a list of member functions available from static tree
base classes with name NAME. The TREE_VALUE of the list is a chain of
member functions with name NAME. The TREE_PURPOSE of the list is a
basetype, or a list of base types (in reverse order) which were
traversed to reach the chain of member functions. If we reach a base
type which provides a member function of name NAME, and which has at
most one base type itself, then we can terminate the search. */
tree
get_baselinks (type_as_binfo_list, type, name)
tree type_as_binfo_list;
tree type, name;
{
int head = 0, tail = 0, idx;
tree rval = 0, nval = 0;
tree basetypes = type_as_binfo_list;
tree binfo = TYPE_BINFO (type);
search_stack = push_search_level (search_stack, &search_obstack);
while (1)
{
tree binfos = BINFO_BASETYPES (binfo);
int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0;
/* Process and/or queue base types. */
for (i = 0; i < n_baselinks; i++)
{
tree base_binfo = TREE_VEC_ELT (binfos, i);
tree btypes;
btypes = hash_tree_cons (TREE_VIA_PUBLIC (base_binfo),
TREE_VIA_VIRTUAL (base_binfo),
TREE_VIA_PROTECTED (base_binfo),
NULL_TREE, base_binfo,
basetypes);
obstack_ptr_grow (&search_obstack, btypes);
search_stack->first = (tree *)obstack_base (&search_obstack);
tail += 1;
}
dont_queue:
/* Process head of queue, if one exists. */
if (head >= tail)
break;
basetypes = search_stack->first[head++];
binfo = TREE_VALUE (basetypes);
type = BINFO_TYPE (binfo);
idx = lookup_fnfields_1 (type, name);
if (idx >= 0)
{
nval = TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (type), idx);
rval = hash_tree_cons (0, 0, 0, basetypes, nval, rval);
if (TYPE_BINFO_BASETYPES (type) == 0)
goto dont_queue;
else if (TREE_VEC_LENGTH (TYPE_BINFO_BASETYPES (type)) == 1)
{
if (CLASSTYPE_BASELINK_VEC (type))
TREE_TYPE (rval) = TREE_VEC_ELT (CLASSTYPE_BASELINK_VEC (type), idx);
goto dont_queue;
}
}
nval = NULL_TREE;
}
search_stack = pop_search_level (search_stack);
return rval;
}
tree
next_baselink (baselink) next_baselink (baselink)
tree baselink; tree baselink;
{ {
......
...@@ -1432,12 +1432,6 @@ finish_class_definition (t, attributes, semi) ...@@ -1432,12 +1432,6 @@ finish_class_definition (t, attributes, semi)
tree attributes; tree attributes;
int semi; int semi;
{ {
#if 0
/* Need to rework class nesting in the presence of nested classes,
etc. */
shadow_tag (CLASSTYPE_AS_LIST (t)); */
#endif
/* finish_struct nukes this anyway; if finish_exception does too, /* finish_struct nukes this anyway; if finish_exception does too,
then it can go. */ then it can go. */
if (semi) if (semi)
......
...@@ -28,7 +28,6 @@ Boston, MA 02111-1307, USA. */ ...@@ -28,7 +28,6 @@ Boston, MA 02111-1307, USA. */
#include "rtl.h" #include "rtl.h"
#include "toplev.h" #include "toplev.h"
static tree get_identifier_list PROTO((tree));
static tree bot_manip PROTO((tree)); static tree bot_manip PROTO((tree));
static tree perm_manip PROTO((tree)); static tree perm_manip PROTO((tree));
static tree build_cplus_array_type_1 PROTO((tree, tree)); static tree build_cplus_array_type_1 PROTO((tree, tree));
...@@ -1088,60 +1087,6 @@ hash_chainon (list1, list2) ...@@ -1088,60 +1087,6 @@ hash_chainon (list1, list2)
hash_chainon (TREE_CHAIN (list1), list2)); hash_chainon (TREE_CHAIN (list1), list2));
} }
static tree
get_identifier_list (value)
tree value;
{
tree list = IDENTIFIER_AS_LIST (value);
if (list != NULL_TREE
&& (TREE_CODE (list) != TREE_LIST
|| TREE_VALUE (list) != value))
list = NULL_TREE;
else if (IDENTIFIER_HAS_TYPE_VALUE (value)
&& TREE_CODE (IDENTIFIER_TYPE_VALUE (value)) == RECORD_TYPE
&& IDENTIFIER_TYPE_VALUE (value)
== TYPE_MAIN_VARIANT (IDENTIFIER_TYPE_VALUE (value)))
{
tree type = IDENTIFIER_TYPE_VALUE (value);
if (TYPE_PTRMEMFUNC_P (type))
list = NULL_TREE;
else if (type == current_class_type)
/* Don't mess up the constructor name. */
list = tree_cons (NULL_TREE, value, NULL_TREE);
else
{
if (! CLASSTYPE_ID_AS_LIST (type))
CLASSTYPE_ID_AS_LIST (type)
= perm_tree_cons (NULL_TREE, TYPE_IDENTIFIER (type), NULL_TREE);
list = CLASSTYPE_ID_AS_LIST (type);
}
}
return list;
}
tree
get_decl_list (value)
tree value;
{
tree list = NULL_TREE;
if (TREE_CODE (value) == IDENTIFIER_NODE)
list = get_identifier_list (value);
else if (TREE_CODE (value) == RECORD_TYPE
&& TYPE_LANG_SPECIFIC (value)
&& value == TYPE_MAIN_VARIANT (value))
list = CLASSTYPE_AS_LIST (value);
if (list != NULL_TREE)
{
my_friendly_assert (TREE_CHAIN (list) == NULL_TREE, 301);
return list;
}
return build_decl_list (NULL_TREE, value);
}
/* Build an association between TYPE and some parameters: /* Build an association between TYPE and some parameters:
OFFSET is the offset added to `this' to convert it to a pointer OFFSET is the offset added to `this' to convert it to a pointer
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment