Commit Graph

513 Commits

Author SHA1 Message Date
Jason Merrill
8251199e44 revert error reporting patch
From-SVN: r22310
1998-09-07 10:25:35 -04:00
Mark Mitchell
d41fbd2cb8 cp-error.def: New file.
* cp-error.def: New file.
	* Make-lang.in (cc1plus): Add dependency on it.
	* Makefile.in (CXX_TREE_H): Likewise.
	* cp-tree.h (error_code): New type.
	Include cp-error.def to get error codes.  Make it possible to
	include cp-tree.h in errfn.c.
	(enable_warning): New function.
	(flag_diag_codes): New variable.
	* errfn.c: Include cp-tree.h.
	(cp_err_msg): New type.  Include cp-error.def to define it.
	(err_msgs): New variable.
	(is_warning_enabled): New function.
	(cp_thing): Take an error_code, not a format string.  Output the
	diagnostic code if flag_diag_codes.
	(cp_error, cp_compiler_error, cp_sprintf, cp_error_at): Take
	error_codes, not format strings.
	(cp_warning, cp_pedwarn, cp_warning_at, cp_pedwarn_at): Likewise.
	Call is_warning_enabled.
	* decl2.c (flag_diag_codes): New variable.
	(lang_decode_option): Handle -fdiag-codes and -Wnumber.
	* lang-options.h: Add -fdiag-codes, -fno-diag-codes, and
	-W-number-, and -Wno-number.
	* class.c: Update all calls to error-functions.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* lex.c: Likewise.
	* parse.y: Likewise.
	* pt.c: Likewise.
	* repo.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* sig.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.
	* xref.c: Likewise.

From-SVN: r22304
1998-09-06 19:45:16 +00:00
Mark Mitchell
6c30752f09 cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
* cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
	* class.c (finish_struct): Remove hackery to deal with explicit
	specializations in class scope.
	* decl.c (grokfndecl): Improve error-recovery.
	* decl2.c (grokfield): Likewise.
	* pt.c (check_specialization_scope): New function.
	(begin_specialization): Call it.
	(process_partial_specialization): New function, split out from
	push_template_decl.  Check partial specializations more
	stringently.
	(push_template_decl): Call it.
	(check_explicit_specialization): Don't attempt to handle explicit
	specializations in class scope.
	(template_parm_data): Document.  Add current_arg and
	arg_uses_template_parms.
	(mark_template_parm): Set it.
	(tsubst_arg_types): Remove unused variable.
	* semantics.c (begin_class_definition): Tweak.

From-SVN: r22271
1998-09-05 20:14:21 +00:00
Jason Merrill
59fa060f42 decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
* decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
	* class.c (build_vtable_entry_ref): Likewise.

From-SVN: r22161
1998-09-01 09:17:36 -04:00
Jason Merrill
84663f74ca cp-tree.h, decl2.c: Remove support for -fall-virtual, -fenum-int-equivalence and -fno-nonnull-objects.
* cp-tree.h, decl2.c: Remove support for -fall-virtual,
	-fenum-int-equivalence and -fno-nonnull-objects.
	* class.c (check_for_override): Remove support for -fall-virtual.
	(finish_struct_1): Likewise.
	* call.c (build_new_op): Remove support for -fenum-int-equivalence.
	* typeck.c (build_binary_op_nodefault): Likewise.
	* cvt.c (ocp_convert): Likewise.
	* call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
	* class.c (build_vbase_path): Likewise.

From-SVN: r22131
1998-08-31 08:54:18 -04:00
Jason Merrill
a1dd0d36f4 Add support for discarding unused virtual functions.
* search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
	* decl2.c (output_vtable_inherit): Call binfo_for_vtable.
	* lang-options.h: Add -fvtable-gc.
	* cp-tree.h: Add flag_vtable_gc.
	* decl2.c (output_vtable_inherit): New fn.
	(finish_vtable_vardecl): Call it.
	* class.c (build_vtable_entry_ref): New fn.
	(build_vtbl_ref): Call it.

From-SVN: r22061
1998-08-28 12:11:35 -04:00
Jason Merrill
56ae6d7780 lex.c (handle_cp_pragma): Remove #pragma vtable.
* lex.c (handle_cp_pragma): Remove #pragma vtable.
	* lang-options.h: Remove +e options.
	* decl2.c (lang_decode_option): Likewise.
	(import_export_vtable): Don't check write_virtuals.
	(finish_vtable_vardecl, finish_file): Likewise.
	* search.c (dfs_debug_mark): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	* class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
	* call.c (build_over_call): Check flag_elide_constructors.
	* decl2.c: flag_elide_constructors defaults to 1.
	* typeck.c (convert_arguments): Remove return_loc parm.
	(build_function_call_real): Adjust.

From-SVN: r22027
1998-08-27 15:03:59 -04:00
Jason Merrill
e907984f30 search.c: Tear out all mi_matrix and memoize code.
* search.c: Tear out all mi_matrix and memoize code.
	(lookup_field, lookup_fnfields): Use scratch_tree_cons.
	* lang-options.h: Remove documentation for -fhandle-exceptions,
	-fmemoize-lookups and -fsave-memoized.
	* cp-tree.h: Lose mi_matrix and memoize support.
	* decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
	* class.c: Lose struct class_level.
	(pushclass, popclass): Lose memoize support.
	* init.c (build_offset_ref): Likewise.

From-SVN: r22025
1998-08-27 13:33:35 -04:00
Jason Merrill
dfbcd65a01 Never change BINFO_INHERITANCE_CHAIN.
* init.c (emit_base_init): Change modification of
	BINFO_INHERITANCE_CHAIN to an assert.
	* search.c (get_base_distance_recursive): Likewise.
	(get_base_distance): Likewise.
	(lookup_member): Likewise.
	(convert_pointer_to_single_level): Likewise.
	(lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
	(lookup_fnfields): Likewise.
	* tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
	(unshare_base_binfos): Don't call propagate_binfo_offsets.
	(layout_basetypes): Call propagate_binfo_offsets instead of
	unshare_base_binfos.
	* decl.c (xref_basetypes): Call unshare_base_binfos.
	* pt.c (instantiate_class_template): Likewise.
	* tree.c (reverse_path): Remove 'copy' parm; always make a
	temporary copy.
	* class.c (build_vbase_path): Just call it.
	* search.c (compute_access): Likewise.  Don't re-reverse.

From-SVN: r22024
1998-08-27 11:30:49 -04:00
Mark Mitchell
ca107dedc7 class.c (build_vbase_path): Use reverse_path.
* class.c (build_vbase_path): Use reverse_path.
	(finish_base_struct): Move warnings for inaccessible bases to
	layout_basetypes.
	(modify_one_vtable): Remove check of TREE_USED (binfo).
	(fixup_vtable_deltas1): Likewise.
	* cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
	(xref_tag): Remove binfos parameter.
	(make_binfo): Remove chain parameter.
	(reverse_path): Add copy parameter.
	* decl.c (init_decl_processing): Change calls to xref_tag.
	(xref_tag): Remove binfos parameter.
	(xref_basetypes): Change calls to make_binfo.
	* decl2.c (grok_x_components): Change calls to xref_tag.
	(handle_class_head): Likewise.
	* friend.c (do_friend): Likewise.
	* lex.c (make_lang_type): Change calls to make_binfo.
	* parse.y (structsp): Change calls to xref_tag.
	(named_complex_class_head_sans_basetype): Likewise.
	(named_class_head): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	* search.c (compute_access): Change calls to reverse_path.
	(dfs_get_vbase_types): Change calls to make_binfo.
	(get_vbase_types): Remove dead code.
	* tree.c (unshare_base_binfos): Change calls to make_binfo.
	(layout_basetypes): Warn here about inaccessible bases.
	(make_binfo): Remove chain parameter.
	(reverse_path): Add copy parameter.

From-SVN: r22021
1998-08-27 10:17:48 +00:00
Jason Merrill
8c1bd4f5dc class.c: #if 0 complete_type_p.
* class.c: #if 0 complete_type_p.
	* init.c (build_java_class_ref, build_new_1): Remove unused locals.
	* method.c (process_overload_item): Likewise.
	* typeck.c (comp_target_types): Likewise.

From-SVN: r22018
1998-08-26 22:04:34 -04:00
Jason Merrill
51ddb82e46 typeck.c (convert_for_assignment): Converting from pm of vbase to derived is an error, not a sorry.
* typeck.c (convert_for_assignment): Converting from pm of vbase
	to derived is an error, not a sorry.
	* call.c (build_over_call): Use convert_pointer_to_real for 'this'.
	* class.c (fixed_type_or_null): Rename from
	resolves_to_fixed_type_p.  Return the dynamic type of the
	expression, if fixed, or null.
	(resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
	does not match the static type.
	(build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
	resolves_to_fixed_type_p again.

From-SVN: r21958
1998-08-24 21:48:47 -04:00
Jason Merrill
509087ae2b * class.c (finish_struct_bits): Also set TYPE_SIZE_UNIT.
From-SVN: r21796
1998-08-17 13:23:38 -04:00
Jason Merrill
282a221c4e class.c (finish_struct_1): Convert integer_zero_node to ssizetype before passing it to set_rtti_entry.
* class.c (finish_struct_1): Convert integer_zero_node to
 	ssizetype before passing it to set_rtti_entry.
	* typeck2.c (initializer_constant_valid_p): Allow conversion of 0
	of any size to a pointer.

From-SVN: r21438
1998-07-28 10:00:46 -04:00
Mark Mitchell
36a117a5b3 cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
* cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
	(build_template_decl_overload): Remove.
	(set_mangled_name_for_decl): New function.
	(innermost_args): Remove is_spec parameter.
	(most_specialized, most_specialized_class): Remove declarations.
	(lookup_template_class): Add entering_scope parameter.
	(maybe_process_partial_specialization): New function.
	(finish_template_decl): Likewise.
	(finish_template_type): Likewise.
	* class.c (finish_struct): Clean up processing of member template
	specializations.
	* decl.c (pushtag): Fix	formatting.
	(lookup_tag): Improve handling of pseudo-global levels.
	(make_typename_type): Adjust call to lookup_template_class.
	(shadow_tag): Use maybe_process_partial_specialization.
	(xref_tag): Improve handling of member friends.
	(start_function): Call push_nested_class before
	push_template_decl.  Don't call push_template_decl for
	specializations.
	* decl2.c (grok_x_components): Don't call xref_tag for
	template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
	(grokclassfn): Use set_mangled_name_for_decl.
	(arg_assoc_class): Adjust call to innermost_args.
	(mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
	* error.c (dump_function_name): Improve printing of template
	function names.
	* friend.c (is_friend): Don't compare types of decls to determine
	friendship, unless flag_guiding_decls.
	(make_friend_class): Partial specializations cannot be friends.
	(do_friend): Use set_mangled_name_for_decl.  Call
	push_template_decl_real instead of push_template_decl.
	* method.c (build_decl_overload_real): Remove prototype.  Give it
	external linkage.
	(build_overload_identififer): Adjust call to innermost_args.
	(build_template_decl_overload): Remove.
	(set_mangled_name_for_decl): New function.
	* parse.y (.finish_template_type): New non-terminal.
	(template_def): Use finish_template_decl.  Use template_extdef
	instead of extdef.
	(template_extdef, template_datadef): New non-terminals, containing
	only those rules for things which can be templates.
	(datadef): Tidy.
	(template_type, self_template_type): Use .finish_template_type.
	(named_class_head): Use maybe_process_partial_specialization.
	* pt.c (mangle_class_name_for_template): Remove context parameter.
	(get_class_bindings): Remove outer_args parameter.
	(complete_template_args): Remove.
	(add_outermost_template_args): New function.
	(register_specialization): Return the specialization.
	(unregister_specialization): New function.
	(tsubst_template_parms): Likewise.
	(most_specialized, most_specialized_class): Prototype here as
	static.
	(original_template): Rename to most_general_template.
	(tsubst_template_parms): New function.
	(set_mangled_name_for_template_decl): Likewise.
	(TMPL_ARGS_DEPTH): New macro.
	(TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
	(TMPL_ARGS_LEVEL): New macro.
	(SET_TMPL_ARGS_LEVEL): Likewise.
	(TMPL_ARG): Likewise.
	(SET_TMPL_ARG): Likewise.
	(TMPL_ARGS_DEPTH): Likewise.
	(finish_member_template_decl): Use finish_template_decl.
	(maybe_process_partial_specialization): New function, split out
	from tsubst.
	(inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
	(maybe_begin_member_template_processing): Use new macros.
	(is_member_template): Likewise.
	(is_member_template_class): Likewise.
	(add_to_template_args): Likewise.  Deal with multiple levels of
	args.
	(maybe_process_partial_specialization): New function.
	(retrieve_specialization): Add consistency check.
	(determine_specialization): Return full argument list.
	(check_explicit_specialization): Tweak friend handling.  Use full
	argument lists.  Simplify.
	(current_template_args): Use new macros.
	(push_template_decl_real): Change ill-named mainargs to specargs.
	Check that a partial specialization actually specializes at least
	one parameter.   Improve friend handling.  Modify for full
	template arguments.
	(classtype_mangled_name): Don't mangle the names of
	specializations.
	(lookup_template_class): Add entering_scope parameter.  Use it to
	avoid finding a template type when an instantiation is required.
	Simplify.  Use full template arguments.
	(tsubst_friend_function): Use unregister_specialization.  Use new
	macros.  Use full template arguments.
	(tsubst_friend_class): Substitute, using tsubst_template_parms,
	into the template parameters before passing them to
	redeclare_class_template.
	(instantiate_class_template): Simplify.  Use full template
	arguments.  Adjust calls to get_class_bindings.  Use
	SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
	(innermost_args): Use new macros.
	(tsubst_aggr_type): New function, split out from tsubst.
	(tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
	conventions for lookup_tmeplate_class.  Refine handling of partial
	instantiations.   Remove calls to complete_template_args.
	Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
	and set_mangled_name_for_template_decl.
	(tsubst_copy): Use tsubst_aggr_type.
	(instantiate_template): Use full template arguments.
	(more_specialized): Improve formatting.
	(more_specialized_class): Adjust calls to get_class_bindings.
	(get_bindings_real): Don't call complete_template_args.
	(most_specialized): Don't overwrite input; create a new list.
	(most_specialized_class): Use most_general_template.
	(regenerate_decl_from_template): Use unregister_specialization.
	Use full template arguments.
	(instantiate_decl): Use full template arguments.
	(set_mangled_name_for_template_decl): New function.
	* semantics.c (begin_class_definition): Use
	maybe_process_partial_specialization.
	(finish_member_class_template): New function.
	(finish_template_decl): Likewise.
	(finish_template_type): Likewise.
	(typeck.c): Don't crash after issuing a compiler_error.
	* Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.

From-SVN: r21433
1998-07-28 01:03:16 +00:00
Jason Merrill
67f7c39181 class.c (build_vtable): Pass at_eof to import_export_vtable.
* class.c (build_vtable): Pass at_eof to import_export_vtable.
	(prepare_fresh_vtable): Likewise.
	* decl2.c (import_export_class): Split out...
	(finish_prevtable_vardecl): From here.
	* class.c (finish_struct_1): Call import_export_class if at_eof.
	* decl.c (start_function): #if 0 mysterious code I wrote and have
	forgotten why.
	* rtti.c (get_tinfo_fn): If this is for a class type, set
	DECL_CONTEXT.

From-SVN: r21345
1998-07-22 22:29:34 -04:00
Jason Merrill
1c35f5b6a0 init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
* init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
	* decl.c (select_decl): Extract a lone function from an OVERLOAD.
	(lookup_namespace_name): Likewise.
	* typeck.c (build_unary_op): Not here anymore.
	* decl2.c (do_class_using_decl): Make sure we get an identifier.
	* class.c (handle_using_decl): Ignore TYPE_DECLs.

From-SVN: r21219
1998-07-16 13:48:39 -04:00
Jason Merrill
9a68c51f56 call.c (joust): Don't warn about "confusing" conversions to the same type.
* call.c (joust): Don't warn about "confusing" conversions to the
	same type.
	* class.c (push_nested_class): Complain about namespaces.
	* decl.c (start_decl): Enter the object's namespace.
	(cp_finish_decl): Leave it.
	(grokdeclarator): Likewise.
	* decl2.c (check_decl_namespace): New function.
	(finish_file): Call it.
	* parse.y (complex_direct_notype_declarator): Set complexity
	of namespace-qualified ids to -1, enter the namespace.
	* method.c (build_template_decl_overload): Expect _DECL as first
	parameter. Put context temporarily into current_namespace.
	* pt.c (check_explicit_specialization): Change caller.
	(tsubst): Likewise.
	* init.c (build_offset_ref): Call mark_used and
	convert_from_reference for namespace members.

From-SVN: r21135
1998-07-14 08:09:17 -04:00
Jason Merrill
2b9dc906d0 friend.c (do_friend): Pull the identifier out of declarator.
* friend.c (do_friend): Pull the identifier out of declarator.
	Use cp_error and friends.
	* decl2.c (qualified_lookup_using_namespace): Fix call to
	purpose_member.
	* decl.c (lookup_name_real): Don't call complete_type on a namespace.
	(grokvardecl): Use DECL_CLASS_SCOPE_P.
	(xref_basetypes): Fix call to GNU_xref_hier.
	* cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
	* class.c (warn_hidden): Fix for OVERLOAD.
	From grahams@rcp.co.uk:
	* cp-tree.h (DEFARG_NODE_CHECK): New macro.
 	(DEFARG_LENGTH, DEFARG_POINTER): Use it.

From-SVN: r21068
1998-07-11 21:30:11 -04:00
Jason Merrill
dc8263bc05 decl.c (xref_tag): Handle attributes between 'class' and name.
* decl.c (xref_tag): Handle attributes between 'class' and name.
	* parse.y (aggr): Likewise.
	* semantics.c (finish_class_definition): Likewise.
	* Makefile.in (EXPECTED): Adjust.
	* cp-tree.h: Declare flag_optional_diags and warn_multichar.
	* decl2.c: Define them.
	(lang_decode_option): Handle them.
	* lang-options.h: Add -foptional-diags.
	* class.c (finish_struct): Don't complain about multiple meanings of
	name if -fno-optional-diags.
	* decl.c (pushdecl_class_level): Likewise.
	* lex.c (real_yylex): Check warn_multichar.

From-SVN: r20994
1998-07-07 07:25:01 -04:00
Jason Merrill
57f01f4575 class.c (finish_struct): Make conflicting use of id a pedwarn.
* class.c (finish_struct): Make conflicting use of id a pedwarn.
	* decl.c (pushdecl_class_level): Likewise.

From-SVN: r20552
1998-06-17 19:51:41 -04:00
Mark Mitchell
79ad62b257 class.c (alter_access): Accept a BINFO explaining how to get from the entity whose accessed is being...
* class.c (alter_access): Accept a BINFO explaining how to get
	from the entity whose accessed is being altered to the type doing
	the altering.
	(handle_using_decl): New function containing code split out from ...
	(finish_struct_1): Here.

From-SVN: r20500
1998-06-13 23:48:07 +00:00
Mark Mitchell
2a238a974b class.c (instantiate_type): Don't treat template-ids that don't specify any template arguments as...
* class.c (instantiate_type): Don't treat template-ids that don't
	specify any template arguments as equivalent to ordinary
	identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
	pointer-to-members for member templates.  Tidy slightly.
	* cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
	* init.c (build_offset_ref): Handle template-ids like ordinary
	identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
	offset part of the OFFSET_REF.
	* typeck.c (build_unary_op): Change check for unknown types to
	look for OFFSET_REFs, not SCOPE_REFs.

From-SVN: r20442
1998-06-12 09:47:04 +00:00
Jason Merrill
d23a1bb127 search.c (lookup_member): New fn.
* search.c (lookup_member): New fn.
	* class.c (finish_struct_1): Use it.
	* decl.c (lookup_name_real): Use it.

From-SVN: r20375
1998-06-09 08:10:57 -04:00
Mark Mitchell
874503bcad class.c (instantiate_type): Handle pointer-to-members where the member is a template.
* class.c (instantiate_type): Handle pointer-to-members where the
	member is a template.
	* init.c (build_offset_ref): Likewise.
	* typeck.c (build_unary_op): Likewise.

From-SVN: r20269
1998-06-07 12:13:54 +00:00
Per Bothner
eff71ab0ab cp-tree.h (TYPE_FOR_JAVA): New macro.
d
	* cp-tree.h (TYPE_FOR_JAVA):  New macro.
	* decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
	java_int_type_node, java_long_type_node, java_float_type_node,
	java_double_type_node, java_char_type_node, java_boolean_type_node):
	New "primitive" types, with predefined names __java_byte etc.
	(record_builtin_java_type):  New function.
	(init_decl_processing):  Make Java types with record_builtin_java_type.
	(pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
	(xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
	(grokfndecl):  Call check_java_method for Java classes.
	* method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
	(process_overload_item):  Match types against specific
	java_XX_type_node types, rather than using is_java_type.
	* class.c (finish_struct_1):  Don't add default copy constructor
	or operator= if TYPE_FOR_JAVA.
	(pop_lang_conext):  Restore strict_prototyp proper if Java.
	* decl2.c (acceptable_java_type, check_java_method):  New functions.
	* pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
	(tsubst):  Move common statement after if statement.
	* typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.

From-SVN: r20174
1998-06-01 11:25:34 -07:00
Jason Merrill
7fb4a8f7e6 decl.c (pushdecl): Don't copy the type_decl.
* decl.c (pushdecl): Don't copy the type_decl.
	* class.c (pushclass): Always store TYPE_MAIN_VARIANT in
	current_class_type.
	* decl.c (grokdeclarator): Put typedefs on the type's obstack.
	* parse.y (complex_direct_notype_declarator): Use $1 to access
	scope of notype_qualified_id.

From-SVN: r20061
1998-05-26 07:43:52 -04:00
Jason Merrill
329745f7c1 class.c (build_vtable_entry): Use int_fits_type_p.
* class.c (build_vtable_entry): Use int_fits_type_p.
	(build_vtable): Pass a signed offset to build_vtable_entry.
	(prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
	set_rtti_entry): Likewise.

From-SVN: r19964
1998-05-22 17:05:09 -04:00
Mark Mitchell
35acd3f282 class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P to look for type declarations.
* class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
	to look for type declarations.
	(finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
	* cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
	(finish_member_class_template): Declare.
	* decl.c (pushtag): Put member class templates on the
	CLASSTYPE_TAGS list, just as for ordinary member classes.
	(pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
	(lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
	IDENTIFIER_NAMESPACE_VALUEs.
	* parse.y (component_decl): Move code to ...
	* semantics.c (finish_member_class_template): New function.
	Don't put member class templates on the list of components for a
	class.
	* pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
	In fact, don't use DECL_CONTEXT at all here.

From-SVN: r19918
1998-05-20 23:28:21 +00:00
Brendan Kehoe
5a11e05b69 class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
* class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
	* error.c (dump_expr): Handle an ARROW_EXPR.

From-SVN: r19885
1998-05-19 14:16:49 -04:00
Kaveh R. Ghazi
77dc0938f7 Warning fixes:
* Makefile.in (parse.o): Depend on toplev.h.
        * class.c (typecode_p): Remove prototype and definition.
        * cp-tree.h (currently_open_class, is_empty_class, member_p):
        Add prototype.
        * decl.c (push_overloaded_decl_top_level): Remove prototype and
        definition.
        * errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
        in call to `cp_thing'.
        (cp_warning): Likewise for function pointer `warning'.
        * except.c (do_function_call): Remove prototype and definition.
        (call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
        * method.c (is_java_type): Add prototype and make it static.
        * parse.y: Include toplev.h.
        * pt.c (type_unification): Remove unused variable `arg'.
        (instantiate_decl): likewise for `save_ti'.
        * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.

From-SVN: r19866
1998-05-19 07:19:17 +00:00
Jason Merrill
e596622890 * class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
From-SVN: r19831
1998-05-17 23:03:44 -04:00
Martin v. Löwis
95480b77a2 * class.c (finish_struct_1): Use OVL_CURRENT in error message.
From-SVN: r19829
1998-05-17 21:52:15 -04:00
Jason Merrill
6bc39009e1 * class.c (finish_struct_1): Use BINFO_SIZE.
From-SVN: r19782
1998-05-15 16:03:17 -04:00
Jason Merrill
6eb3bb273d error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or DECL_NAMESPACE_SCOPE_P.
* error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
	DECL_NAMESPACE_SCOPE_P.
	(lang_decl_name): Likewise.
	* pt.c (tsubst_friend_function, tsubst): Likewise.
	* decl.c (pushdecl, redeclaration_error_message, start_decl,
	cp_finish_decl, start_function): Likewise.
	* class.c (finish_struct_1): Likewise.
	* call.c (build_over_call): Likewise.
	(compare_ics): Use DERIVED_FROM_P.

From-SVN: r19705
1998-05-12 17:42:34 -04:00
Mark Mitchell
830bfa74b0 call.c (add_template_candidate): Adjust for changes to fn_type_unification.
* call.c (add_template_candidate): Adjust for changes to
	fn_type_unification.
	(add_template_candidate_real): Likewise.
	(add_template_conv_candidate): Likewise.
	(build_user_type_conversion_1): Likewise.
	(build_new_function_call): Likewise.
	(build_object_call): Likewise.
	(build_new_op): Likewise.
	(build_new_method_call): Likewise.
	* class.c (instantiate_type): Likewise.
	* cp-tree.h (unification_kind_t): New type.
	(fn_type_unification): Adjust prototype.
	(type_unificaiton): Likewise.
	* pt.c (UNIFY_ALLOW_NONE): New macro.
	(UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
	(UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
	(UNIFY_ALLOW_DERIVED): Likewise.
	(unify): Change prototype.
	(maybe_adjust_types_for_deduction): New function.
	(check_cv_quals_for_unify): Likewise.
	(determine_specialization): Adjust.
	(fn_type_unification): Likewise.
	(type_unification): Likewise.
	(type_unification_real): Likewise.  Use
	maybe_adjust_types_for_deduction.  Fix mishandling of
	back-unification of template functions passed as arguments.  Pass
	appropriate combination of UNIFY_ALLOW_* to unify.
	(unify): Remove unused NTPARMS parameter.  Use
	check_cv_quals_for_unify.  Remove bogus code that allowed
	too-generous unification in order to adhere more closely to standard.
	(get_bindings_real): Adjust.
	(get_class_bindings): Likewise.
	* method.c (build_overload_identifier): Only use the innermost
	template arguments when mangling.
	* pt.c (tsubst_template_argument_vector): New function.
	(complete_template_args): Deal with the situation where the
	extra_args contain more than one level of arguments.
	(lookup_template_class): Deal with member template classes, which
	may have more than one level of arguments.
	(tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
	Improve handling of member template classes.  Use
	DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
	tsubst_template_argument_vector where appropriate.
	(regenerate_decl_from_template): Break out from ...
	(instantiate_decl): Here.

From-SVN: r19663
1998-05-11 07:25:25 +00:00
Jason Merrill
42c7b8075d class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
* class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
	* decl2.c (constructor_name_full): Likewise.
	* tree.c (mapcar): Add OVERLOAD support.
	* init.c (resolve_offset_ref): We must use basetype_path before we
	destroy it with a call to convert_pointer_to.

From-SVN: r19656
1998-05-10 18:53:45 -04:00
Jason Merrill
b9082e8adb class.c (currently_open_class): New fn.
* class.c (currently_open_class): New fn.
	* decl.c (lookup_name_real): Use it.
	* search.c (lookup_field): Likewise.

From-SVN: r19650
1998-05-09 14:10:28 -04:00
Martin v. Löwis
2c73f9f57a massive namespace patch
From-SVN: r19631
1998-05-07 22:06:26 -04:00
Jeff Law
38e012594e typo typo fixes fixes
From-SVN: r19601
1998-05-06 15:09:07 -06:00
Robert Lipe
54f92bfbb1 call.c, [...]: Add include of toplev.h.
Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
        * cp/call.c, cp/class.c, cp/decl.c, cp/decl2.c,
        cp/errfn.c, cp/error.c, cp/except.c, cp/expr.c,
        cp/friend.c, cp/init.c, cp/lex.c, cp/method.c,
        cp/pt.c, cp/repo.c, cp/rtti.c, cp/search.c,
        cp/semantics.c, cp/sig.c, cp/tree.c, cp/typeck.c,
        cp/typeck2.c, cp/xref.c: Add include of toplev.h.

From-SVN: r19565
1998-05-06 05:01:35 +00:00
Mark Mitchell
43ee49e8f3 class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for the DECL_RESULTs of a member...
* class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
	the DECL_RESULTs of a member TEMPLATE_DECL, not just the
	TEMPLATE_DECL.

From-SVN: r19376
1998-04-22 13:23:32 +00:00
Benjamin Kosnik
a177473334 cp-tree.h (start_decl): Update prototype.
d
Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
        * cp-tree.h (start_decl):  Update prototype.
        * decl.c (start_decl):  Like the C version, new parameters
        for the attributes.  Call cplus_decl_attributes here,
        (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
        (grokdeclarator):  Pass NULL for new start_decl arguments.
        * pt.c (tsubst_expr):  Likewise.
        * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
	* typeck.c (common_type): Check TYPE_MAIN_VARIANT.
	* lex.c (build_lang_decl): Add lang_name_java.
	* class.c (push_lang_context): Add lang_name_java.
	* method.c (build_mangled_name): Check for is_java_type.
Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
	* decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
	* call.c (build_scoped_method_call): Check for TREE_CODE for
	VOID_TYPE instead of type ==  void_type_node.
	(build_method_call): Ditto.
	* decl.c (lookup_name_real): Ditto.
	(grokdeclarator): Ditto.
	(start_decl): Ditto.
	(grokparms): Ditto.
	(start_function): Ditto.
	(finish_function): Ditto.
	(start_method): Ditto.
also fixes g++/15415

From-SVN: r19071
1998-04-09 20:36:47 +00:00
Jason Merrill
a59ca93678 call.c (build_call): Still evaluate the actual argument.
* call.c (build_call): Still evaluate the actual argument.
	* class.c (is_empty_class): Update for -fnew-abi.
	* decl2.c: -fnew-abi implies -fsquangle.
	* method.c (do_build_assign_ref): Don't do anything to copy
	an empty class.
	(do_build_copy_constructor): Likewise.
	* call.c (build_over_call): Likewise.

From-SVN: r19029
1998-04-06 23:48:22 -04:00
Jason Merrill
732dcb6f2a Implement empty base optimization.
* class.c (finish_struct_1): Add vbase fields earlier.  Set
	CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
	* search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
	(types_overlap_p): New fn.
	* tree.c (avoid_overlap): New fn.
	(build_base_fields): Use it to avoid overlapping empty bases.
	* cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.

From-SVN: r18978
1998-04-03 09:13:24 -05:00
Jason Merrill
9a71c18b28 Re-implement allocation of base class subobjects.
* tree.c (unshare_base_binfos): New fn.
	(layout_basetypes): Use it.  Now handles offsets of both virtual and
	non-virtual bases, after layout_type.
	(layout_vbasetypes): Remove.
	(build_base_fields): Generate FIELD_DECLs for each non-virtual base.
	(build_vbase_pointer_fields): Split out from old layout_basetypes.
	* class.c (finish_base_struct): Lose offset handling code.
	Move nonvdtor warning here.  Don't mess with t_binfo anymore.
	(finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
	* cp-tree.h: Adjust.

From-SVN: r18973
1998-04-02 22:41:20 -05:00
Jason Merrill
0b41abe668 cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
* cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
	* decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
	* class.c (duplicate_tag_error): Likewise.
	(finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
	* tree.c (layout_vbasetypes): Update from layout_record, remove
	var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
	(layout_basetypes): Likewise.

From-SVN: r18965
1998-04-02 12:05:40 -05:00
Jeffrey A Law
e7a587ef75 * class.c, Make sure system.h is included just after config.h.
Delete lingering stdio and errno references too.
        * decl.c, errfn.c, parse.y, ptree.c search.c, xrefc.: Likewwise.

From-SVN: r18936
1998-04-01 10:25:12 -07:00
Jason Merrill
570221c201 friend.c (is_friend): Fix access control for local classes.
* friend.c (is_friend): Fix access control for local classes.
	* class.c (is_empty_class): New fn.
	* call.c (build_call): Don't pass empty class objects to a function.

From-SVN: r18933
1998-04-01 12:05:25 -05:00
Jeffrey A Law
8d052bc70c call.c: Include system.h.
* call.c: Include system.h.  Remove includes, declarations and
        defines provided by system.h.
        * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
        * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
        * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
        * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
        * typeck2.c, xref.c: Likewise.
        * Makefile.in: Dependencies updated as appropriate.
        * Make-lang.in: Likewise.
system.h cutover from the cp subdir

From-SVN: r18917
1998-03-31 06:25:46 -07:00
Jeffrey A Law
430bb96baa class.c (alter_access): Remove unused label.
* class.c (alter_access): Remove unused label.  Add braces
        around empty else clause.
        * lex.c (yyprint): Fix argument to printf.

From-SVN: r18887
1998-03-28 16:49:35 -07:00
Jason Merrill
18922a6bca decl.c (grokdeclarator): Remove const and volatile from type after setting constp and volatilep.
* decl.c (grokdeclarator): Remove const and volatile from type after
	setting constp and volatilep.
	* class.c (finish_struct_1): Don't warn about bool bitfield larger
	than one bit.

From-SVN: r18843
1998-03-26 06:16:45 -05:00
Mark Mitchell
38afd588c5 cp-tree.h (enforce_access): Declare.
Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
	* cp-tree.h (enforce_access): Declare.
	* call.c (enforce_access): Make it extern, not static.
	* class.c (alter_access): Use enforce_access; modify code for ISO
	compliance, rather than ARM rules.

From-SVN: r18832
1998-03-25 16:14:49 +00:00
Mark Mitchell
050367a36d cplus-dem.c (optable): Add sizeof.
* cplus-dem.c (optable): Add sizeof.
	(demangle_template_value_parm): New function containing code
	previously found in demangle_template.
	(demangle_integral_value): New function which handles complicated
	integral expressions.
	(demangle_template): Use them.
	* error.c (dump_expr): Remove unused variable `l'.
	* pt.c (for_each_template_parm): New function, created by
	converting uses_template_parms.
	(tree_fn_t): New typedef.
	(uses_template_parms): Use it.
	(mark_template_parm): New function.
	(push_template_decl): Check that the argument list of a partial
	specialization uses all the template parameters.
	* Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
	with it; we might want it for debugging.
	* cp-tree.h (type_unification): Change interface.
	* class.c (finish_struct_1): Skip nested template types, just like
	ordinary nested types.
	(instantiate_type): Use new interface to type_unification.
	* lex.c (init_lex): Add __sz as opname for sizeof.
	* method.c (build_overload_scope_ref): New function.
	(build_overload_int): Handle complex expressions.  Set
	numeric_output_need_bar if necessary.
	(build_overload_value): Handle non-PARM_DECL nodes; this
	routine is now used by build_overload_int.  Remove some
	assignments to numeric_output_need_bar.  Use
	build_overload_scope_ref.
	(build_qualified_name): Note that some template mangled names end
	with digits, and set numeric_output_need_bar appropriately.  Use
	build_underscore_int.
	* pt.c (unify): Change interface.
	(type_unification_real): Likewise.
	(determine_specialization): Use new interfaces.
	(tsubst): Deal gracefully with situations in which the argument
	vector is not fully filled.
	(fn_type_unification): Use new interfaces.
	(type_unification): Likewise.  Remove NOP_EXPR hack.
	(type_unification_real): Likewise.
	(unify): Likewise.  Deal with unification of complex expresions.

From-SVN: r18795
1998-03-24 10:25:44 +00:00
Jason Merrill
22531e51c3 class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
* class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
	* search.c: Likewise.
	* lex.c (do_pending_defargs): Only call
	maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
	* parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.

From-SVN: r18637
1998-03-16 19:03:43 -05:00
Manfred Hollstein
4a67c9e985 cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
d
	* cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
	(DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
	* class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
	* decl.c (duplicate_decls): Propagate it.
	* typeck2.c (abstract_virtuals_error): Use two loops to emit
	abstract virtual functions and virtual functions which need a
	final overrider separately.

From-SVN: r18588
1998-03-15 03:28:07 +00:00
Jason Merrill
277294d73b call.c, [...]: Remove support for -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
* call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
	method.c, pt.c, ptree.c, typeck.c: Remove support for
	-fno-ansi-overloading and overloading METHOD_CALL_EXPR.
	* class.h: Remove.
	* Makefile.in: Adjust.

From-SVN: r18384
1998-03-02 22:24:44 -05:00
Jason Merrill
54e97afb94 oops
From-SVN: r18378
1998-03-02 20:44:37 -05:00
Jason Merrill
3b3ba9f0a6 call.c, [...]: Remove nsubsts parm from *type_unification* and unify.
* call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
	*type_unification* and unify.

From-SVN: r18377
1998-03-02 20:39:03 -05:00
Jason Merrill
8d019cef1a Support partial specialization of member class templates.
* pt.c (get_class_bindings): Add outer_args parm.
	(most_specialized_class): Likewise.
	(instantiate_class_template): Pass it.
	(more_specialized_class): Likewise.
	(lookup_template_class): Get context from template if none
	was specified.
	(finish_member_template_decl): Don't do anything with a
	partial specialization.
	* decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
	AGGREGATE_TYPE_P.
	* class.c (finish_struct): Member class templates have already been
	checked for name clashes.
	* decl.c (pushdecl_with_scope): Handle pushing at class level.

From-SVN: r18285
1998-02-27 07:15:17 -05:00
Jason Merrill
d8b55a76ef cp-tree.h: Add access_protected_virtual_node.
* cp-tree.h: Add access_protected_virtual_node.
	* class.c (init_class_processing): Initialize it.
	* decl.c (xref_basetypes): Use it.
	* parse.y (base_class_access_list): Likewise.
	* Make-lang.in (DEMANGLER_PROG): Add $(exeext).
	(c++.install-common): Install c++filt.

From-SVN: r17894
1998-02-12 19:30:37 -05:00
Kaveh R. Ghazi
a703fb388b Various fixes for -Wall problems from Kaveh. See ChangeLog for details.
From-SVN: r17586
1998-02-01 17:04:13 -07:00
J"orn Rennecke
f5426d1e9b decl.c (init_decl_processing): Use set_sizetype.
* decl.c (init_decl_processing): Use set_sizetype.
        * decl2.c (sizetype): Don't declare.
        * typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
        (c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
        (build_component_addr, unary_complex_lvalue): Likewise.
        * rtti.c (expand_class_desc): Likewise.
        * class.c (get_vfield_offset): Likewise.

From-SVN: r17576
1998-02-01 04:45:10 -07:00
Jason Merrill
abff8e0691 class.c (instantiate_type): Don't just return a known type if it's wrong.
* class.c (instantiate_type): Don't just return a known type if
 	it's wrong.
	* class.c (instantiate_type): Remove handling of FUNCTION_DECL
	since that code could never be reached.
	* error.c (dump_decl): Avoid aborting in the midst of printing an
	error message about an illegal template declaration.
	* parse.y (structsp): Print an error message, rather than crashing,
	when a class-head does not name a class.
	* pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
	template arguments as a g++ extension.
	* cp-tree.def (ALIGNOF_EXPR): New tree code.
	* decl2.c (grok_alignof): If processing_template_decl, just store
	the expression.
	* typeck.c (c_alignof): Likewise.
	* decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
	* error.c (dump_expr): Likewise.
	* pt.c (tsubst_copy): Likewise.
	* tree.c (cp_tree_equal): Likewise.
	* pt.c (uses_template_parms): Correctly determine whether or not a
	SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
	folding can be done.

From-SVN: r17545
1998-01-28 19:08:53 -05:00
Mark Mitchell
e1467ff26b call.c (add_template_candidate_real): New function.
* call.c (add_template_candidate_real): New function.
	(add_template_candidate): Use it.
	(add_template_conv_candidate): Likewise.
	(joust): Pass extra argument to more_specialized.
	* class.c (instantiate_type): Handle a single FUNCTION_DECL.
	(is_local_class): Remove.
	(finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
	* cp-tree.h (is_local_class): Remove.
	(perform_array_to_pointer_conversion): Likewise.
	(finish_member_template_decl): Add.
	(check_explicit_specialization): Return a tree, not an int.
	(more_specialized): Take additional argument.
	(get_bindings): Likewise.
	(TI_PENDING_SPECIALIZATION_FLAG): New macro.
	* cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
	(perform_array_to_pointer_conversion): Remove.
	* decl.c (saved_scope): Add processing_specialization,
	processing_explicit_instantiation fields.
	(maybe_push_to_top_level): Save them.
	(pop_from_top_level): Restore them.
	(grokfndecl): Use new return value from
	check_explicit_specialization.
	(start_decl): Don't check flag_guiding_decls before pushing
	decls.
	(cp_finish_decl): Remove previous (bogus) change.
	(grok_declarator): Use decl_function_context rather than
	is_local_class.
	* decl2.c (finish_file): Pass extra argument to get_bindings.
	(build_expr_from_tree): Let build_x_component_ref check
	validity of arguments rather than doing it here.
	* lex.c (cons_up_default_function): Remove code fooling with
	processing_specialization, processing_explicit_instantiation
	flags, as that is now done in {maybe_push_top,pop_from}_top_level.
	* method.c (build_overload_identifier): Mangle local classes in
	template functions correctly.
	* parse.y (finish_member_template_decl): Move to pt.c.
	* pt.c (finish_member_template_decl): Moved here from parse.y.
	(print_candidates): New function.
	(determine_specialization): Change interface.  Properly look for
	most specialized versions of template candidates.
	(check_explicit_specialization): Fully process explicit
	instantiations.
	(push_template_decl): Avoid looking at CLASSTYPE fields in
	FUNCTION_DECLS.
	(determine_overloaded_function): Remove.
	(convert_nontype_argument): Change name from
	convert_nontype_parameter.  Use determine_overloaded_function
	instead of instantiate_type.
	(mangle_class_name_for_template): Handle type contexts as well as
	function contexts.
	(classtype_mangled_name): Likewise.
	(lookup_template_class): Likewise.
	(tsubst): Likewise.
	(more_specialized): Take explict template arguments as a
	parameter.
	(most_specialized): Likewise.
	(get_bindings): Likewise.  Check that return types match before
	proclaiming a function a match.
	(do_decl_instantiation): Remove code searching for function to
	instantiate; that is now done in check_explicit_specialization.
	(add_maybe_template): Pass extra argument to get_bindings.
	* tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
	implementation.
	* typeck.c (build_component_ref): Check for invalid arguments.

From-SVN: r17512
1998-01-27 15:47:56 -05:00
Jason Merrill
b7a290122f tweak
From-SVN: r17469
1998-01-23 22:04:11 -05:00
Kriang Lerdsuwanakij
73b0fce8fd pt.c (coerce_template_parms): Don't access elements of ARGLIST that is not really present.
Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
	* pt.c (coerce_template_parms): Don't access elements of ARGLIST
	that is not really present.  Substitute default arguments in
	template template arguments.  Correctly convert TEMPLATE_DECL to
	TEMPLATE_TEMPLATE_PARM.
	(comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
	are no longer treated specially here.
	* parse.y (template_template_parm): Fix copy error.
	* decl.c (grokdeclarator): Warn about missing `typename' for nested
	type created from template template parameters.
	* parse.y (bad_parm): Likewise
	* class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
	(push_nested_class): Likewise.
	* cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
	* cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
	(copy_template_template_parm): Declare.
	* decl.c (arg_looking_for_template): New variable.
	(lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
	Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
	node if arg_looking_for_template is nonzero.
	(pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
	(grok_op_properties, xref_tag, xref_basetypes): Likewise.
	(grokdeclarator): Handle TEMPLATE_DECL.
	* decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
	* error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
	(dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM.
	(dump_decl): Handle unnamed template type parameters.
	Handle template template parameters.
	(dump_function_name): Handle template template parameters.
	* init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
	Handle TEMPLATE_TEMPLATE_PARM.
	* method.c (build_template_template_parm_names): New function.
	(build_template_parm_names): Handle TEMPLATE_DECL.
	(build_overload_nested_name, build_overload_name):
	Handle TEMPLATE_TEMPLATE_PARM.
	* parse.y (maybe_identifier): New nonterminal.
	(template_type_parm): Use it.
	(template_template_parm, template_arg1): New nonterminal.
	(template_parm): Add template_template_parm rules.
	(template_arg): Set processing_template_arg.
	(template_arg1): Rules moved from template_arg.
	(primary, nonnested_type): Set arg_looking_for_template if we are
	processing template arguments.
	* pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
	(process_template_parm): Handle template template parameters.
	(coerce_template_parms, comp_template_args): Likewise.
	(mangle_class_name_for_template, lookup_template_class): Likewise.
	(uses_template_parms): Handle TEMPLATE_DECL and
	TEMPLATE_TEMPLATE_PARM.
	(current_template_args): Handle TEMPLATE_DECL.
	(tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
	* search.c (dfs_walk, dfs_record_inheritance):
	Handle TEMPLATE_TEMPLATE_PARM.
	* tree.c (copy_template_template_parm): New function.
	(mapcar): Handle TEMPLATE_TEMPLATE_PARM.
	* typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.

From-SVN: r17441
1998-01-22 06:03:56 -05:00
Mark Mitchell
7565064686 decl.c (start_decl): Don't allow duplicate definitions of static data members.
* decl.c (start_decl): Don't allow duplicate definitions of static
	data members.
	* call.c (build_user_type_conversion_1): Handle user-defined
	template conversion operators correctly.
	* decl2.c (build_expr_from_tree): Issue an error message if the
	object in a COMPONENT_REF is a TEMPLATE_DECL.
	* typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
	* class.c (is_local_class): New function.
	* cp-tree.h (is_local_class): Declare it.
	(last_tree): Likewise.
	(begin_tree): Likewise.
	(end_tree): Likewise.
	(lookup_template_class): Change prototype.
	* decl.c (cp_finish_decl): Check for NULL where necesary.
	Consider FUNCTION_DECLS to declare objects with top-level binding,
	when calling make_decl_rtl.
	(grokdeclarator): Give members of local classes internal linkage.
	(start_function): Remove declaration of last_tree.
	(finish_function): Set flag_keep_inline_functions around call to
	rest_of_compilation if we are processing a member function in a
	local class.
	(start_method): Call push_template_decl for member functions of
	local classes in template functions.
	* decl2.c (import_export_decl): Don't give external linkage to
	instantiations of templates with internal linkage.
	* parse.y (last_tree): Remove declaration.
	(template_type): Pass extra parameter to lookup_template_class.
	(self_template_type): Likewise.
	(structsp): Move call to reset_specialization into left_curly.
	(left_curly): Call reset_specialization, and begin_tree.
	* pt.c (saved_trees): New variable.
	(mangle_class_name_for_template): Change prototype.  Use
	additional function context to name local classes in templates
	correctly.
	(classtype_mangled_name): Pass the context.
	(push_template_decl): Handle local classes and templates, and
	member functions for such classes.
	(convert_nontype_parameter): Fix handling of pointer-to-member
	constants.
	(lookup_template_class): Handle local classes in templates.
	(tsubst): Likewise.  Don't assume that template instantiations
	have external linkage; pay attention to the template declaration.
	(mark_decl_instantiated): Likewise.
	(begin_tree): New function.
	(end_tree): Likewise.
	* decl.c (xref_basetypes): Don't call complete_type for basetypes
	that involve template parameters; that can lead to infinite
	recursion unnecessarily.
	* pt.c (register_specialization): Do not register specializations
	that aren't ready to be registered yet.
	(check_explicit_specialization): Handle explicit specialization of
	constructors and destructors.
	(build_template_decl): New function.
	(push_template_delc): Handle out-of-class specializations of
	member templates.
        * pt.c (check_explicit_specialization): Set up the template
        information before registering the specialization.
        (coerce_template_parms): Fix thinko.
        (tsubst): Handle specializations of member templates correctly.
	* class.c (finish_struct_methods): Remove calls to
	check_explicit_specialization from here.
	(finish_struct): And insert them here.
	* cp-tree.h (perform_qualification_conversions): New function.
	(perform_array_to_pointer_conversion): Likewise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(determine_specialization): Renamed from
	determine_explicit_specialization.
	(comp_template_parms): New function.
	(processing_explicit_instantiation): New variable.
	* cvt.c (perform_qualification_conversions): New function.
	(perform_array_to_pointer_conversion): Likewise.
	* decl.c (duplicate_decls): Don't consider template functions
	alike unless they have the same parameters.  Refine handling of
	instantiation/specialization mismatches.
	(start_decl): Don't call pushdecl for template specializations,
	since they don't affect overloading.
	(start_function): Likewise
	(grokfndecl): Call check_explicit_specialization a little later.
	Don't call duplicate_decls for memberm template specializations.
	(grokdeclarator): Don't update template_count for classes that are
	themselves specializations.  Remove use of `2' as parameter to
	grokfndecl since that value isn't used.
	* lex.c (cons_up_default_function): Save and restore
	processing_explicit_instantiation around calls to grokfield.
	* parse.y (finish_member_template_decl): New function.
	(component_decl_1): Use it.
	(fn.def2): Likewise.
	(template_arg_list_opt): New nonterminal.
	(template_type): Use it.
	(self_template_type): Likewise.
	(template_id): Likewise.
	(object_template_id): Likewise.
	(notype_template_declarator): Likwise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(explicit_instantiation): Use them.
	* pt.c (coerce_template_parms): Add parameters.
	(processing_explicit_instantiation): New variable.
	(convert_nontype_parameter): New function.
	(determine_overloaded_function): Likewise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(retrieve_specialization): Likewise.
	(register_specialization): Likewise.
	(processing_explicit_specialization): Removed.
	(determine_specialization): Handle specializations of member
	functions of template class instantiations.
	(check_explicit_specialization): Refine to conform to standard.
	(comp_template_parms): New function.
	(coerce_template_parms): Call convert_nontype_parameter.
	(tsubst): Refine handling of member templates.  Use
	register_specialization.
	(instantiate_template): Use retrieve_specialization.
	(do_decl_instantiation): Likewise.
	(instantiate_decl): Likewise.
	(type_unification): Improve handling of explict template
	arguments.
	* tree.c (mapcar): Return error_mark_node, rather than aborting,
	on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
	* typeck.c (build_unary_op): Call determine_specialization, rather
	than determine_explicit_specialization.

From-SVN: r17426
1998-01-19 17:41:40 -05:00
Jason Merrill
a0d5fba7d2 init.c (build_new_1): Split out from build_new.
* init.c (build_new_1): Split out from build_new.
	(build_new): Just return a NEW_EXPR.
	* expr.c (cplus_expand_expr): Handle NEW_EXPR.
	* decl2.c (get_temp_regvar): Tweak.
	* cp-tree.h (TREE_CALLS_NEW): Comment out.
	* class.c (resolves_to_fixed_type_p): Remove use.
	* method.c (build_opfncall): Likewise.
	* call.c (build_new_op): Likewise.
Fix problem with 'new' in default argument.

From-SVN: r17319
1998-01-12 04:44:59 -05:00
Jeff Law
956d69504d Merge from gcc-2.8
From-SVN: r16987
1997-12-06 17:31:01 -07:00
Jason Merrill
de35891e21 [multiple changes]
Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>

	* class.c (prepare_fresh_vtable): Enable even more complex MI
	vtable names.

Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* exception.cc (__check_eh_spec): Optimize a bit.

	* exception.cc (__cp_pop_exception): Lose handler arg.
	* except.c (do_pop_exception): Likewise.
	(push_eh_cleanup): Let the cleanup mechanism supply the handler.
	(expand_end_catch_block): Likewise.

From-SVN: r16895
1997-12-02 22:37:17 -05:00
Jason Merrill
aa59881828 class.c: Remove static pending_hard_virtuals.
* class.c: Remove static pending_hard_virtuals.
 	(add_virtual_function): Take pointers to pending_virtuals
	and pending_hard_virtuals.
	(finish_struct_1): Pass them.  Declare pending_hard_virtuals.

From-SVN: r16787
1997-11-27 04:45:25 -05:00
Jason Merrill
b9ddcfac31 * class.c (build_vbase_path): Propagate the result type properly.
From-SVN: r16279
1997-11-02 18:07:03 -05:00
Mark Mitchell
92eca6404c decl.c (duplicate_decls): Handle template specializations correctly.
Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>

	* decl.c (duplicate_decls): Handle template specializations
	correctly.
	* error.c (dump_function_name): Fix printing of specializations of
	member functions that are not member templates.
	* cp-tree.h (processing_specialization): Make global.
	* pt.c (processing_specialization): Likewise.
	* lex.c (cons_up_default_function): Save and restore
	processing_specialization to avoid confusion.

From-SVN: r16101
1997-10-20 14:46:24 -04:00
Jason Merrill
2636fde4ba method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
* method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
	(build_overload_int): Not here.

Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>

	* class.c (build_type_pathname): Remove.
	(prepare_fresh_vtable): Fix problem with complex MI vtable names.

From-SVN: r15928
1997-10-16 03:20:46 -04:00
Jason Merrill
e66d884e7b cp-tree.h (scratchalloc, [...]): Define as macros for now.
* cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
	scratch_tree_cons): Define as macros for now.
	* call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
	lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
	typeck2.c: Use them and the expression_obstack variants.

From-SVN: r15900
1997-10-14 14:59:03 -04:00
Jason Merrill
386b8a85a6 [multiple changes]
Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* friend.c (do_friend): Disable injection for all template-derived
 	decls.
	* decl2.c (lang_decode_option): Handle -fguiding-decls.
	* parse.y (notype_template_declarator): New nonterminal.
	(direct_notype_declarator): Use it.
	(complex_direct_notype_declarator): Likewise.
	(object_template_id): Accept any kind of identifier after TEMPLATE.
	(notype_qualified_id): Don't add template declarators here.

Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>

        * call.c (add_template_candidate): Add explicit_targs parameter.
        (build_scoped_method_call): Use it.
        (build_overload_call_real): Likewise.
        (build_user_type_conversion_1): Likewise.
        (build_new_function_call): Likewise.
        (build_object_call): Likewise.
        (build_new_op): Likewise.
        (build_new_method_call): Likewise.
        (build_new_function_call): Handle TEMPLATE_ID_EXPR.
        (build_new_method_call): Likewise.

        * class.c (finish_struct_methods): Add specialization pass to
        determine which methods were specializing which other methods.
        (instantiate_type): Handle TEMPLATE_ID_EXPR.

        * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.

        * cp-tree.h (name_mangling_version): New variable.
	(flag_guiding_decls): Likewise.
        (build_template_decl_overload): New function.
        (begin_specialization): Likewise.
        (reset_specialization): Likewise.
        (end_specialization): Likewise.
        (determine_explicit_specialization): Likewise.
        (check_explicit_specialization): Likewise.
        (lookup_template_function): Likewise.
        (fn_type_unification): Add explicit_targs parameter.
        (type_unification): Likewise.

        * decl.c (duplicate_decls): Add smarts for explicit
        specializations.
        (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
        specializations.
        (grokfndecl): Call check_explicit_specialization.

        * decl2.c (lang_decode_option): Handle -fname-mangling-version.
        (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
        (check_classfn): Handle specializations.

        * error.c (dump_function_name): Print specialization arguments.

	* friend.c (do_friend): Don't call pushdecl for template
        instantiations.

        * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.

        * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
	and -fno-guiding-decls.

        * lex.c (identifier_type): Return PFUNCNAME for template function
        names.

        * method.c (build_decl_overload_real): New function.
        (build_template_parm_names): New function.
        (build_overload_identifier): Use it.
        (build_underscore_int): New function.
        (build_overload_int): Use it.  Add levels for template
        parameters.
        (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
        (build_overload_nested_names): Handle template type parameters.
        (build_template_decl_overload): New function.

        * parse.y (YYSTYPE): New ntype member.
        (nested_name_specifier): Use it.
        (nested_name_specifier_1): Likewise.
        (PFUNCNAME): New token.
        (template_id, object_template_id): New non-terminals.
        (template_parm_list): Note specializations.
        (template_def): Likewise.
        (structsp): Likewise.
        (fn.def2): Handle member template specializations.
        (component_decl_1): Likewise.
        (direct_notype_declarator): Handle template-ids.
        (component_decl_1): Likewise.
        (direct_notype_declarator): Handle template-ids.
        (primary): Handle TEMPLATE_ID_EXPR, and template-ids.

        * pt.c (processing_specializations): New variable.
        (template_header_count): Likewise.
        (type_unification_real): New function.
        (processing_explicit_specialization): Likewise.
        (note_template_header): Likewise.
        (is_member_template): Handle specializations.
        (end_template_decl): Call reset_specialization.
        (push_template_decl): Handle member template specializations.
        (tsubst): Likewise.
        (tsubst_copy): Handle TEMPLATE_ID_EXPR.
        (instantiate_template): Handle specializations.
        (instantiate_decl): Likewise.
        (fn_type_unification): Handle explicit_targs.
        (type_unification): Likewise.  Allow incomplete unification
        without an error message, if allow_incomplete.
        (get_bindings): Use new calling sequence for fn_type_unification.

        * spew.c (yylex): Handle PFUNCNAME.

        * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
        (really_overloaded_fn): Likewise.
        (get_first_fn): Handle function templates.

        * typeck.c (build_x_function_call): Use really_overloaded_fn.
        Handle TEMPLATE_ID_EXPR.
        (build_x_unary_op): Likewise.
        (build_unary_op): Likewise.
        (mark_addressable): Templates whose address is taken are marked
        as used.

From-SVN: r15774
1997-09-28 15:16:59 -04:00
Jason Merrill
98c1c66880 class.c (grow_method): Remove check for redeclaration.
* class.c (grow_method): Remove check for redeclaration.

Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
	(DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
	(PRIMARY_TEMPLATE_P): Use it.
	* call.c (build_overload_call_real): Use it.
	* class.c (instantiate_type): Likewise.
	* decl.c (decls_match): Likewise.
	* method.c (build_overload_identifier): Likewise.
	* pt.c (push_template_decl): Likewise.
	(classtype_mangled_name): Likewise.
	(lookup_template_class): Likewise.

	* cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
	DECL_NTPARMS to conform to usage elsewhere.
	* call.c (add_template_candidate): Likewise.
	* class.c (instantiate_type): Likewise.
	* pt.c (instantiate_template): Likewise.
	(get_bindings): Likewise.

	* class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
	is_member_template.

	* pt.c (unify): Undo changes to allow multiple levels of template
	parameters.
	(type_unification): Likewise.
	(fn_type_unification): Likewise.
	(get_class_bindings): Likewise.
	* cp-tree.h (Likewise).

	* decl.c (replace_defarg): Check that the type of the default
	parameter does not invlove a template type before complaining
	about the initialization.

	* error.c (dump_expr): Deal with template constant parameters in
	member templates correctly.

	* pt.c (is_member_template): Deal with class specializations
	correctly.
	(tsubst): Handle "partial instantiation" of member templates
	correctly.

Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (type_unification): Change calling squence to allow for
	multiple levels of template parameters.
	(tsubst_expr): Likewise.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(instantiate_template): Likewise.
	(unify): Likewise.
	* call.c (build_overload_call_real): Use it.
	(add_builtin_candidate): Use it.
	(build_new_method_call): Use it.
	* class.c (instantiate_type): Use it.
	* decl.c (grokdeclarator): Use it.
	* decl2.c (finish_file): Use it.
	* method.c (build_overload_identifier): Use it.

	* call.c (add_template_candidate):  Add additional parameter for
	the function return type.  Call fn_type_unification istead of
	type_unification.
	(build_user_type_conversion_1): Handle member templates.
	(build_new_function_call): Likewise.
	(build_new_op): Likewise.
	(build_new_method_call): Likewise.

	* class.c (grow_method): Don't give an error message indicating
 	that two member templates with the same name are ambiguous.
	(finish_struct): Treat member template functions just like member
 	functions.

	* cp-tree.h (check_member_template): Add declaration.
	(begin_member_template_processing): Likewise.
	(end_member_template_processing): Likewise.
	(fn_type_unification): Likewise.
	(is_member_template): Likewise.
	(tsubst): Change prototype.
	(tsubst_expr): Likewise.
	(tsubst_copy): Likewise.
	(instantiate_template): Likewise.
	(get_bindings): Likewise.

	* decl.c (decls_match): Handle multiple levels of template
	parameters.
	(pushdecl): Handle template type params just like other type
	declarations.
	(push_class_level_binding): Return immediately if the
	class_binding_level is NULL.
	(grokfndecl): If check_classfn() returns a member_template, use
	the result of the template, not the template itself.

	* decl2.c (check_member_template): New function.  Check to see
	that the entity declared to be a member template can be one.
	(check_classfn): Allow redeclaration of member template functions
	with different types; the new functions can be specializations or
	explicit instantiations.

	* error.c (dump_decl): Handle multiple levels of template
	parameters.
	(dump_function_decl): Update to handle function	templates.

	* lex.c (do_pending_inlines): Set up template parameter context
	for member templates.
	(process_next_inline): Likewise.

	* method. (build_overload_identifier): Adjust for multiple levels
	of template parameters.

	* parse.y (fn.def2): Add member templates.
	(component_decl_1): Likewise.

	* pt.c (begin_member_template_processing): New function.
	(end_member_template_processing): Likewise.
	(is_member_template): Likewise.
	(fn_type_unification): Likewise.
	(current_template_parms): Return a vector of all the template
	parms, not just the innermost level of parms.
	(push_template_decl): Deal with the possibility of member
	templates.
	(lookup_template_class): Likewise.
	(uses_template_parms): Likewise.
	(tsubst): Modify processing to TEMPLATE_TYPE_PARM and
	TEMPLATE_CONST_PARM to deal with multiple levels of template
	arguments.   Add processing of TEMPLATE_DECL to produce new
	TEMPLATE_DECLs from old ones.
	(do_decl_instantiation): Handle member templates.

	* search.c (lookup_fnfields_1): Handle member template conversion
	operators.

	* tree.c (cp_tree_equal): Check the levels, as well as the
	indices, of TEMPLATE_CONST_PARMs.

	* typeck.c (comptypes): Check the levels, as well as the indices,
	fo TEMPLATE_TYPE_PARMs.
	(build_x_function_call): Treat member templates like member
	functions.

Member templates.

From-SVN: r15130
1997-09-06 04:10:07 -04:00
Jeffrey A Law
5ddc28a51f class.c (get_basefndecls): Make definition match declaration.
* class.c (get_basefndecls): Make definition match declaration.
Something caught by the sunos compiler.

From-SVN: r14961
1997-08-27 02:03:41 -06:00
Jason Merrill
49c249e1c8 [multiple changes]
Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (is_subseq): Don't try to be clever.

Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* parse.y, pt.c: Include "except.h".
	* call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
 	error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
 	lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
 	sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
 	prototyping.

Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (mark_vtable_entries): Instead of replacing pure
	virtuals with a reference to __pure_virtual, copy the decl and
	change the RTL.

From-SVN: r14868
1997-08-20 20:50:39 -04:00
Jason Merrill
da20811c09 merge
From-SVN: r14852
1997-08-19 18:37:19 -04:00
Brendan Kehoe
42976354a6 92th Cygnus<->FSF quick merge
From-SVN: r14524
1997-07-24 17:09:25 -04:00
Mike Stump
7834ab3923 92th Cygnus<->FSF merge
From-SVN: r14401
1997-07-08 00:17:49 +00:00
Mike Stump
6633d6367f 91th Cygnus<->FSF quick merge
From-SVN: r14253
1997-06-18 02:25:37 +00:00
Mike Stump
37c46b43db 91th Cygnus<->FSF quick merge
From-SVN: r14134
1997-05-28 23:20:02 +00:00
Jason Merrill
beb53fb84a 91th Cygnus<->FSF quick merge
From-SVN: r14021
1997-05-06 20:14:14 +00:00
Mike Stump
eb4484594f 91th Cygnus<->FSF quick merge
From-SVN: r14007
1997-05-02 01:42:58 +00:00
Mike Stump
eb66be0e6c 91th Cygnus<->FSF merge
From-SVN: r13971
1997-04-23 22:39:53 +00:00
Mike Stump
bd6dd8453c 90th Cygnus<->FSF quick merge
From-SVN: r13831
1997-04-02 03:58:33 +00:00
Mike Stump
824b9a4c45 90th Cygnus<->FSF quick merge
From-SVN: r13604
1997-02-04 02:31:49 +00:00
Mike Stump
de22184bb2 90th Cygnus<->FSF quick merge
From-SVN: r13542
1997-01-21 21:32:30 +00:00
Mike Stump
d2e5ee5c70 90th Cygnus<->FSF quick merge
From-SVN: r13321
1996-12-18 02:46:25 +00:00
Mike Stump
faf5394a1b 90th Cygnus<->FSF quick merge
From-SVN: r13319
1996-12-18 01:44:21 +00:00
Mike Stump
9a3b49acbc 90th Cygnus<->FSF quick merge
From-SVN: r13141
1996-11-12 19:49:48 +00:00
Mike Stump
691c003dcc 90th Cygnus<->FSF quick merge
From-SVN: r13082
1996-10-31 17:08:58 +00:00
Mike Stump
f49422dada 89th Cygnus<->FSF quick merge
From-SVN: r12978
1996-10-18 18:33:44 +00:00
Mike Stump
3d4683cb70 89th Cygnus<->FSF quick merge
From-SVN: r12952
1996-10-11 20:08:01 +00:00
Mike Stump
5156628f9f 89th Cygnus<->FSF quick merge
From-SVN: r12883
1996-09-30 21:34:04 +00:00
Mike Stump
c73964b2fb 87th Cygnus<->FSF quick merge
From-SVN: r12606
1996-08-08 22:54:56 +00:00
Mike Stump
6467930b06 *** empty log message ***
From-SVN: r12602
1996-08-08 22:08:30 +00:00
Mike Stump
e92cc02916 87 Cygnus<->FSF merge
From-SVN: r12424
1996-07-11 01:13:25 +00:00
Mike Stump
e349ee739e 86th Cygnus<->FSF quick merge
From-SVN: r12126
1996-05-30 19:11:58 +00:00
Mike Stump
4ac1474483 86th Cygnus<->FSF quick merge
From-SVN: r11974
1996-05-16 18:43:00 +00:00
Mike Stump
4dabb3791d 86th Cygnus<->FSF quick merge
From-SVN: r11956
1996-05-08 18:18:35 +00:00
Mike Stump
46b02c6d61 86th Cygnus<->FSF quick merge
From-SVN: r11905
1996-04-30 18:29:47 +00:00
Mike Stump
a80e41955a 86th Cygnus<->FSF quick merge
From-SVN: r11850
1996-04-19 00:48:03 +00:00
Mike Stump
6b5fbb552b 86th Cygnus<->FSF quick merge
From-SVN: r11710
1996-04-12 23:55:07 +00:00
Mike Stump
c91a56d266 86th Cygnus<->FSF merge
From-SVN: r11654
1996-04-02 21:44:27 +00:00
Mike Stump
fc37869868 85th Cygnus<->FSF quick merge
From-SVN: r11587
1996-03-21 19:46:11 +00:00
Mike Stump
357a4089d9 85th Cygnus<->FSF quick merge
From-SVN: r11506
1996-03-09 20:23:30 +00:00
Mike Stump
e76a26469d 85th Cygnus<->FSF merge
From-SVN: r11497
1996-03-08 00:38:10 +00:00
Mike Stump
ec25526966 84th Cygnus<->FSF merge
From-SVN: r11399
1996-03-02 01:49:15 +00:00
Mike Stump
5566b478bd 83rd Cygnus<->FSF merge
From-SVN: r11362
1996-02-28 22:01:56 +00:00
Mike Stump
cffa872980 82nd Cygnus<->FSF merge
From-SVN: r11328
1996-02-20 20:35:10 +00:00
Mike Stump
2ee887f272 81st Cygnus<->FSF merge
From-SVN: r11187
1996-02-09 22:43:25 +00:00
Mike Stump
9e9ff70986 80th Cygnus<->FSF merge
From-SVN: r11150
1996-02-01 19:32:00 +00:00
Mike Stump
455376771f 79th Cygnus<->FSF merge
From-SVN: r11082
1996-01-22 19:49:02 +00:00
Mike Stump
be99da7733 78th Cygnus<->FSF merge
From-SVN: r11039
1996-01-17 18:57:55 +00:00
Mike Stump
72b7eeff72 76th Cygnus<->FSF merge
From-SVN: r10815
1995-12-19 06:51:14 +00:00
Mike Stump
f30432d726 75th Cygnus<->FSF merge
From-SVN: r10438
1995-10-12 02:33:51 +00:00
Richard Kenner
f714b8e580 (finish_struct): A data member with the same name as the class doesn't suppress constructors.
(finish_struct): A data member with the same name as the class doesn't
suppress constructors.
(dont_allow_type_definitions): New variable set when types cannot be defined.
(finish_struct): Use it.
(build_vfn_ref): Deleted signature specific code, we don't call this function
anymore from build_signature_method_call.

From-SVN: r10038
1995-06-22 22:28:23 -04:00
Richard Kenner
e9fa0c7c6f Update FSF address.
From-SVN: r9966
1995-06-15 08:29:51 -04:00
Richard Kenner
8bf4192989 Lose all references to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR.
Lose all references to current_vtable_decl, CLASSTYPE_INST_VAR and
CLASSTYPE_VTBL_PTR.
Don't mess with current_class_decl, current_vtable_decl, or C_C_D.

From-SVN: r9934
1995-06-13 18:19:15 -04:00
Mike Stump
b3417a0464 Change all callers of finish_decl to cp_finish_decl.
From-SVN: r9907
1995-06-08 19:06:37 -04:00
Jason Merrill
c19a80671b 72nd Cygnus<->FSF merge
From-SVN: r9737
1995-05-17 23:34:39 +00:00
Mike Stump
a9aedbc26d 71st Cygnus<->FSF merge
From-SVN: r9719
1995-05-16 21:10:32 +00:00
Richard Kenner
ddd5a7c180 Fix typos in comments.
From-SVN: r9711
1995-05-16 08:14:26 -04:00
Mike Stump
e8abc66f60 67th Cygnus<->FSF merge
From-SVN: r9433
1995-04-24 17:27:46 +00:00
Mike Stump
43f2999d1d 66th Cygnus<->FSF merge
From-SVN: r9418
1995-04-19 17:08:54 +00:00
Mike Stump
44a8d0b357 65th Cygnus<->FSF merge
From-SVN: r9412
1995-04-18 19:23:38 +00:00
Mike Stump
28cbf42c14 59th Cygnus<->FSF merge
From-SVN: r9225
1995-03-23 00:44:31 +00:00
Mike Stump
b7484fbe2b 58th Cygnus<->FSF merge
From-SVN: r9186
1995-03-15 23:03:59 +00:00
Mike Stump
e3417fcd0c 57 Cygnus<->FSF merge
From-SVN: r8971
1995-02-18 22:06:40 +00:00
Mike Stump
8ccc31eb61 56th Cygnus<->FSF merge
From-SVN: r8957
1995-02-16 15:24:37 +00:00
Jason Merrill
59be85d7bd Fix MI conversions
From-SVN: r8856
1995-02-03 03:45:07 +00:00
Mike Stump
d18c083e31 54th Cygnus<->FSF merge
From-SVN: r8844
1995-01-31 22:18:02 +00:00
David S. Miller
db6f8fbebe (instantiate_type): Change error message text.
From-SVN: r8816
1995-01-25 14:56:36 -05:00
Mike Stump
e1cd6e56ad 53rd Cygnus<->FSF merge
From-SVN: r8794
1995-01-24 08:19:58 +00:00
Mike Stump
8145f0828c 52th Cygnus<->FSF merge
From-SVN: r8714
1994-12-30 21:03:40 +00:00
Mike Stump
6060a79633 50th Cygnus<->FSF merge
From-SVN: r8657
1994-12-16 02:07:31 +00:00
Mike Stump
db5ae43ff2 49th Cygnus<->FSF merge
From-SVN: r8570
1994-11-29 00:59:16 +00:00
Mike Stump
13306d4f8f move a few important patches (this offset calculations for vtables).
From-SVN: r8280
1994-10-15 17:19:19 +00:00
Jason Merrill
1daa5dd836 Cast pointer arguments to bzero and bcopy to char *.
From-SVN: r8262
1994-10-12 16:44:14 +00:00
Mike Stump
f376e137d4 47th Cygnus<->FSF merge
From-SVN: r8129
1994-09-26 20:15:18 +00:00
Mike Stump
0059501924 46 Cygnus<->FSF merge
From-SVN: r7943
1994-08-18 20:50:43 +00:00
Mike Stump
a292b002ee 45th Cygnus<->FSF merge
From-SVN: r7862
1994-08-05 20:25:20 +00:00
Mike Stump
5b605f684e 44th Cygnus<->FSF merge
From-SVN: r7693
1994-07-09 07:13:10 +00:00
Jason Merrill
9a0e77ba13 43rd Cygnus<->FSF merge
From-SVN: r7660
1994-07-06 00:28:23 +00:00
Gerald Baumgartner
63718c49fd some changes from gb.
From-SVN: r7615
1994-06-30 05:35:06 +00:00
Mike Stump
214747148c 42nd Cygnus<->FSF merge
From-SVN: r7612
1994-06-30 01:51:05 +00:00
Mike Stump
a32034654e 41st Cygnus<->FSF merge
From-SVN: r7553
1994-06-24 00:54:38 +00:00
Mike Stump
f0e01782d7 40th Cygnus<->FSF merge
From-SVN: r7493
1994-06-15 18:30:58 +00:00
Mike Stump
a0a339271a 39th Cygnus<->FSF merge
From-SVN: r7439
1994-06-03 21:42:31 +00:00
Mike Stump
2986ae008b 38th Cygnus<->FSF merge
From-SVN: r7337
1994-05-19 20:19:03 +00:00
Mike Stump
a4443a0855 37th Cygnus<->FSF merge
From-SVN: r7290
1994-05-13 02:46:07 +00:00
Mike Stump
8d2733caec 36th Cygnus<->FSF merge
From-SVN: r7221
1994-05-06 09:27:46 +00:00
Mike Stump
700f8a8792 35th Cygnus<->FSF merge
From-SVN: r7217
1994-05-05 22:19:26 +00:00
Mike Stump
39211cd56b 34th Cygnus<->FSF merge
From-SVN: r7171
1994-04-28 22:48:45 +00:00
Mike Stump
7177d104dd 33rd Cygnus<->FSF merge
From-SVN: r7134
1994-04-21 23:30:18 +00:00
Mike Stump
a28e3c7f21 32nd Cygnus<->FSF merge
From-SVN: r7047
1994-04-15 01:44:15 +00:00
Mike Stump
8926095fe7 31th Cygnus<->FSF merge.
From-SVN: r6996
1994-04-08 06:08:43 +00:00
Mike Stump
51c184be09 30th Cygnus<->FSF merge.
From-SVN: r6859
1994-03-23 23:33:53 +00:00
Mike Stump
8d08fdba59 Initial revision
From-SVN: r6613
1994-02-24 01:02:37 +00:00