view gcc/cp/ChangeLog-2001 @ 16:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
line wrap: on
line source

2001-12-29  Nathan Sidwell  <>

	* call.c (build_user_type_conversion_1): Use my_friendly_assert
	rather than if ... abort.
	* cvt.c (convert_to_reference): Likewise.
	* semantics.c (setup_vtbl_ptr): Likewise.
	* pt.c (lookup_template_class): Comment typo.

2001-12-29  Nathan Sidwell  <>

	PR c++/5125
	* pt.c (push_template_decl_real): Make sure DECL has

2001-12-29  Nathan Sidwell  <>

	PR c++/335
	* init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
	for non-reference fields.
	* typeck.c (require_complete_type): Use resolve_offset_ref).

2001-12-26  Nathan Sidwell  <>

	PR c++/196
	* parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.

2001-12-24  Nathan Sidwell  <>

	PR c++/160
	* typeck.c (build_modify_expr): Remove old unreachable code & tidy
	up. Don't stabilize_references when initializing a reference.

2001-12-23  Kaveh R. Ghazi  <>

	* decl2.c (lang_f_options): Const-ify.

2001-12-20  Joseph S. Myers  <>

	* (diff_excludes): Remove.

2001-12-19  Nathan Sidwell  <>

	PR c++/90
	* typeck.c (build_function_call_real): Use original function
	expression for errors.

2001-12-18  Jason Merrill  <>

	PR c++/3242
	* class.c (add_method): Do compare 'this' quals when trying to match a
	used function.  Don't defer to another used function.

2001-12-18  Nathan Sidwell  <>

	* pt.c (instantiate_clone): Remove, fold into ...
	(instantiate_template): ... here. Simplify by removing mutual
	* typeck2.c (build_m_component_ref): Don't cv qualify the function
	pointed to by a pointer to function.
	* class.c (delete_duplicate_fields_1): Typo.

2001-12-18  Jason Merrill  <>

	C++ ABI change: destroy value arguments in caller.
	* semantics.c (genrtl_start_function, genrtl_finish_function): Don't
	create an extra binding level for the parameters.
	* decl.c (store_parm_decls): Don't do parameter cleanups.

2001-12-18  Nathan Sidwell  <>

	* call.c (build_new_method_call): Use '%#V'.
	* error.c (cv_to_string): Use V parameter to determine padding.

2001-12-18  Joseph S. Myers  <>

	* call.c, decl2.c, init.c: Use "built-in" and "bit-field"
	spellings in messages.

2001-12-17  Zack Weinberg  <>

	* cp-tree.h: Delete #defines for cp_error, cp_warning,
	cp_pedwarn, and cp_compiler_error.
	* call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
	except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
	rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
	typeck2.c: Change calls to the above macros to use their
	language-independent equivalents: error, warning, pedwarn, and
	internal_error respectively.

2001-12-16  Neil Booth  <>

	* decl2.c (finish_file): Remove back_end_hook.

2001-12-16  Joseph S. Myers  <>

	* ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
	cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
	pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.

2001-12-15  Joseph S. Myers  <>

	* lang-options.h: Use American spelling in messages.

2001-12-13  Jason Merrill  <>

	* (parse.h): Separate rule, just depend on parse.c.

	Use cleanups to run base and member destructors.
	* init.c (push_base_cleanups): New function, split out from...
	(build_delete):  Lose !TYPE_HAS_DESTRUCTOR code.
	* decl.c (finish_destructor_body): Move vbase destruction code to
	(begin_function_body, finish_function_body): New fns.
	(finish_function): Move [cd]tor handling and call_poplevel to
	(pushdecl): Skip the new level.
	* semantics.c (genrtl_try_block): Don't call end_protect_partials.
	(setup_vtbl_ptr): Call push_base_cleanups.
	* method.c (synthesize_method): Call {begin,end}_function_body.
	* pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
	* cp-tree.h: Declare new fns.
	* parse.y (function_body, .begin_function_body): New nonterminals.
	(fndef, pending_inline, function_try_block): Use function_body.
	(ctor_initializer_opt, function_try_block): No longer has a value.
	(base_init): Remove .set_base_init token.
	(.set_base_init, compstmt_or_error): Remove.
	* (parse.c): Expect two fewer s/r conflicts.

	* optimize.c (maybe_clone_body): Fix parameter updating.

2001-12-12  Jason Merrill  <>

	* decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
	* semantics.c (genrtl_start_function): Don't pass
	parms_have_cleanups or push an extra binding level.
	(genrtl_finish_function): Lose cleanup_label cruft.

	* cp-tree.h (struct cp_language_function): Remove x_ctor_label.
	(ctor_label): Remove.
	* semantics.c (finish_return_stmt): Lose ctor_label support.
	* decl.c (finish_constructor_body, mark_lang_function): Likewise.
	* typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not

	* call.c (build_new_method_call): Let resolves_to_fixed_type_p
	check for [cd]tors.
	* class.c (fixed_type_or_null, case INDIRECT_REF): Fix.

	* decl.c (finish_function): Check VMS_TARGET, not VMS.

	* decl.c (start_cleanup_fn): Remove redundant pushlevel.
	(end_cleanup_fn): And poplevel.

	* semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
	if we're in a template.

2001-12-12  Jakub Jelinek  <>

	THIS_NAME_P): Delete.
	* spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
	THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
	with internal naming scheme.
	* error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.

2001-12-12  Nathan Sidwell  <>

	* decl.c (grokdeclarator): Deprecated implicit typename use.

2001-12-11  Nathan Sidwell  <>

	PR g++/51
	* parse.y (frob_specs): Indicate it is a language linkage which
	contained the extern.
	* decl.c (grokdeclarator): Allow extern language linkage with
	other specifiers.

2001-12-10  Nathan Sidwell  <>

	PR g++/72
	* decl.c (add_binding): Don't reject duplicate typedefs involving
	template parameters.

2001-12-10  Neil Booth  <>

	* parse.y, semantics.c: Similarly.

2001-12-09  Nathan Sidwell  <>

	PR g++/87
	* cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
	(copy_args_p): Rename to ...
	(copy_fn_p): ... here.
	(grok_special_member_properties): New function.
	(grok_op_properties): Lose VIRTUALP parameter.
	(copy_assignment_arg_p): Remove.
	* call.c (build_over_call): Use copy_fn_p.
	* decl.c (grokfndecl): Reformat. Adjust call to
	(copy_args_p): Rename to ...
	(copy_fn_p): ... here. Reject template functions. Check for pass
	by value.
	(grok_special_member_properties): Remember special functions.
	(grok_ctor_properties): Don't remember them here, just check.
	(grok_op_properties): Likewise.
	(start_method): Call grok_special_member_properties.
	* decl2.c (grokfield): Likewise.
	(copy_assignment_arg_p): Remove.
	(grok_function_init): Don't remember abstract assignment here.
	* pt.c (instantiate_class_template): Call
	(tsubst_decl): Adjust grok_op_properties call.

2001-12-08  Aldy Hernandez  <>

	* lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and

2001-12-08  John David Anglin  <>

	* semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
	call to build_aggr_init.
	* cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.

2001-12-08  Neil Booth  <>

	* parse.y: Replace uses of the string non-terminal with STRING.
	Don't perform string concatentaion here.
	(string): Remove non-terminal.
	* semantics.c (finish_asm_stmt): Don't concatenate strings here.

2001-12-05  Jason Merrill  <>

	* tree.c (cp_start_inlining, cp_end_inlining): New fns.
	* pt.c (push_tinst_level): No longer static.
	* cp-tree.h: Declare them.

	* init.c (resolve_offset_ref): Don't check access for the base
	conversion to access a FIELD_DECL.

	* cp-tree.h (TYPE_REFFN_P): New macro.
	* decl.c (bad_specifiers): Check it, too.

	* rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
	on the __*_type_info type if we haven't seen a definition.

2001-12-05  Neil Booth  <>

	* decl.c: Include c-common.h.
	(shadow_warning): Move to c-common.c.

2001-12-05  Richard Kenner  <>

	* decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.

2001-12-04  Nathan Sidwell  <>

	* pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.

2001-12-04  Nathan Sidwell  <>

	PR g++/164
	* init.c (sort_base_init): Allow binfos to be directly specified.
	* method.c (do_build_copy_constructor): Explicitly convert to the
	base instance.
	(do_build_assign_ref): Likewise.

2001-12-03  Hans-Peter Nilsson  <>

	* decl.c (xref_basetypes): Don't use C99 construct in tag_code
	declaration and initialization.

2001-12-03  Neil Booth  <>

	* typeck2.c: Remove leading capital from diagnostic messages, as
	per GNU coding standards.

2001-12-03  Mumit Khan  <>

	PR c++/3394
	* decl.c (xref_basetypes): Handle attributes between
	'class' and name.

2001-12-03  Nathan Sidwell  <>

	PR g++/3381
	* parse.y (named_complex_class_head_sans_basetype): Add new
	* (parse.c): Adjust expected conflict count.

2001-12-03  Jason Merrill  <>

	* class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
	immediate binfos for our virtual bases.

2001-12-02  Neil Booth  <>

	* call.c (build_java_interface_fn_ref): Similarly.
	* except.c (is_admissible_throw_operand): Similarly.
	* init.c (build_java_class_ref): Similarly.
	* xref.c (open_xref_file): Similarly.

2001-12-01  Neil Booth  <>

	* class.c (finish_struct): Remove trailing periods from messages.
	* decl.c (check_tag_decl): Similarly.
	* lex.c (cxx_set_yydebug): Similarly.
	* typeck2.c (friendly_abort): Similarly.

2001-11-29  Mark Mitchell  <>

	PR c++/3048
	* cp-tree.h (ovl_member): Remove.
	* decl2.c (merge_functions): Handle extern "C" functions
	* tree.c (ovl_member): Remove.

2001-11-29  Mark Mitchell  <>

	PR c++/4842
	* class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
	FUNCTION_DECL, as input.
	(mark_overriders): Remove.
	(warn_hidden): Rework for the new ABI.

2001-11-29  Mark Mitchell  <>

	PR c++/3471
	* call.c (convert_like_real): Do not build additional temporaries
	for rvalues of class type.

2001-11-28  Nathan Sidwell  <>

	* cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
	(DERIVED_FROM_P): Likewise.
	(enum base_access): Renumber, add ba_quiet bit mask.
	(get_binfo): Remove.
	(get_base_distance): Remove.
	(binfo_value): Remove.
	* call.c (standard_conversion): Use lookup_base.
	* class.c (strictly_overrides): Likewise.
	(layout_virtual_bases): Likewise.
	(warn_about_ambiguous_direct_bases): Likewise.
	(is_base_of_enclosing_class): Likewise.
	(add_vcall_offset_vtbl_entries_1): Likewise.
	* cvt.c (build_up_reference): Adjust comment.
	* init.c (build_member_call): Reformat.
	* search.c (get_binfo): Remove.
	(get_base_distance_recursive): Remove.
	(get_base_distance): Remove.
	(lookup_base_r): Tweak.
	(lookup_base): Add ba_quiet control. Complete the types here.
	(covariant_return_p): Use lookup_base.
	* tree.c (binfo_value): Remove.
	(maybe_dummy_object): Use lookup_base.
	* typeck.c (build_static_cast): Use lookup_base.
	(get_delta_difference): Likewise.
	* typeck2.c (binfo_or_else): Use lookup_base.
	(build_scoped_ref): Add back error_mark_check.
	(build_m_component_ref): Use lookup_base.

2001-11-29  Joseph S. Myers  <>

	* (c++.generated-manpages): New dummy target.

2001-11-27  Richard Kenner  <>

	* (cp-lang.o): Depends on c-common.h.
	* cp-lang.c (c-common.h): Include.
	* decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
	* expr.c (init_cplus_expand): Don't set lang_expand_constant.

2001-11-26  Neil Booth  <>

	* decl2.c (c_language): Move to c-common.c.
	* lex.c (cxx_post_options, cxx_init_options): Use c-common.c
	(cxx_init): Update.

2001-11-26  Jason Merrill  <>

	* call.c (joust): Remove COND_EXPR hack.

2001-11-25  Aldy Hernandez  <>

	* search.c (lookup_base_r): Declare bk in variable declaration

2001-11-25  Nathan Sidwell  <>

	PR g++/3145
	* class.c (build_vbase_pointer): Remove.
	(build_vbase_path): Remove.
	(build_base_path): New function.
	* cp-tree.h (base_access, base_kind): New enumerations.
	(build_base_path): Declare.
	(convert_pointer_to_real): Remove.
	(convert_pointer_to): Remove.
	(lookup_base): Declare.
	(convert_pointer_to_vbase): Remove.
	* call.c (build_scoped_method_call): Use lookup_base &
	build_base_path instead of convert_pointer_to_real,
	get_base_distance & get_binfo.
	(build_over_call): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_pointer_force): Likewise.
	(build_up_reference): Likewise.
	(convert_pointer_to_real): Remove.
	(convert_pointer_to): Remove.
	* init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
	instead of convert_pointer_to_vbase & build_vbase_path.
	(emit_base_init): Use build_base_path instead of
	(expand_virtual_init): Lose unrequired conversions.
	(resolve_offset_ref): Use lookup_base and build_base_path
	instead of convert_pointer_to.
	* rtti.c (build_dynamic_cast_1): Use lookup_base &
	build_base_path instead of get_base_distance & build_vbase_path.
	* search.c (get_vbase_1): Remove.
	(get_vbase): Remove.
	(convert_pointer_to_vbase): Remove.
	(lookup_base_r): New function.
	(lookup_base): New function.
	* typeck.c (require_complete_type): Use lookup_base &
	build_base_path instead of convert_pointer_to.
	(build_component_ref): Likewise.
	(build_x_function_call): Likewise.
	(get_member_function_from_ptrfunc): Likewise.
	(build_component_addr): Likewise.
	* typeck2.c (build_scoped_ref): Likewise.

2001-11-22  Bryce McKinlay  <>

	* cp-tree.h (CP_TYPE_QUALS): Removed.
	* decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
	* dump.c (cp_dump_tree): Use void* dump_info argument to match
	lang-hooks prototype.
	* call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
	rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
	CP_TYPE_QUALS changed to cp_type_quals.
	* References to c-dump.h changed to tree-dump.h.
	(CXX_C_OBJS): Remove c-dump.o.

2001-11-21  Mark Mitchell  <>

	PR c++/3637
	* pt.c (lookup_template_class): Ensure that all specializations
	are registered on the list corresponding to the most general

2001-11-20  Mark Mitchell  <>

	* call.c (non_reference): Add documentation.
	(convert_class_to_reference): Do not strip reference types
	from conversion operators.
	(maybe_handle_ref_bind): Simplify.
	(compare_ics): Correct handling of references.

2001-11-19  John Wilkinson <>

	* dump.c (dump_op): New function.
	dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.

2001-11-19  Mark Mitchell  <>

	* semantics.c (finish_sizeof): Make sure that expression created
	while processing a template do not have a type.
	(finish_alignof): Likewise.
	* typeck.c (c_sizeof): Likewise.
	(expr_sizeof): Likewise.

2001-11-18  Neil Booth  <>

	* lex.c (cxx_finish): Call c_common_finish.
	(finish_parse): Remove.

2001-11-17  Kriang Lerdsuwanakij  <>

	* decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
	when displaying error message about missing array bounds.

2001-11-17  Kriang Lerdsuwanakij  <>

	* mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,

2001-11-16  Neil Booth  <>

	* cp-tree.h (print_class_statistics): Restore.

2001-11-15  Jason Merrill  <>

	* method.c (use_thunk): Don't emit debugging information for thunks.

	* parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
	* decl.c (make_typename_type): Handle getting a class template.
	* search.c (lookup_field_r): A class template is good enough for

	* call.c (convert_like_real): Only use cp_convert for the bad part.
	(standard_conversion): Also allow bad int->enum.
	* typeck.c (ptr_reasonably_similar): Also allow functions to
	interconvert.  Pointers to same-size integers are reasonably

	* cvt.c (convert_to_void): If we build a new COND_EXPR, always
	give it void type.

2001-11-15  Nathan Sidwell  <>

	PR g++/3154
	* init.c (sort_base_init): Remove unreachable code.
	(expand_member_init): Adjust comment to reflect reality. Simplify
	and remove unreachable code.

2001-11-15  Neil Booth  <>

	* cp-tree.h (init_reswords, cxx_init_decl_processing): New.
	(cxx_init): Update prototype.
	* decl.c (init_decl_processing): Rename.  Move null node init
	to its creation time.
	* lex.c (cxx_init_options): Update.
	(cxx_init): Combine with old init_parse; also call

2001-11-14  Richard Sandiford  <>

	* decl.c (check_initializer): Try to complete the type of an
	array element before checking whether it's complete.  Don't
	complain about arrays with complete element types but an
	unknown size.
	(cp_finish_decl): Build the hierarchical constructor before
	calling maybe_deduce_size_from_array_init.

2001-11-14  Joseph S. Myers  <>

	* Change all uses of $(manext) to $(man1ext).

2001-11-13  Nathan Sidwell  <>

	PR g++/4206
	* parse.y (already_scoped_stmt): Remove.
	(simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.

2001-11-12  H.J. Lu <>

	* cvt.c (ocp_convert): Don't warn the address of a weak
	function is always `true'.

2001-11-09  Neil Booth  <>

	* cp-tree.h (print_class_statistics): Remove.
	(cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
	cxx_print_identifier, cxx_set_yydebug): New.
	* lex.c (set_yydebug): Rename c_set_yydebug.
	* ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
	lang_print_xnode): Rename.
	* tree.c (print_lang_statistics): Rename.

2001-11-09  Kaveh R. Ghazi  <>

	* class.c (dump_array): Fix format specifier warning.

2001-11-09  Neil Booth  <>

	* cp-lang.c (LANG_HOOKS_NAME): Override.
	(struct lang_hooks): Constify.
	* lex.c (cxx_init_options): Update.
	(lang_identify): Remove.
	* parse.y (language_string): Remove.

2001-11-08  Andreas Franck  <>

	DEMANGLER_CROSS_NAME): Handle program_transform_name the way
	suggested by autoconf.
	(c++.install-common): Use the transformed target alias names.

2001-11-06  Neil Booth  <>

	* Update.
	* cp-lang.c: Include langhooks-def.h.

2001-11-04  Kriang Lerdsuwanakij  <>

	* pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.

2001-11-03  Kaveh R. Ghazi  <>

	* lex.c (copy_lang_type): Add static prototype.

2001-11-02  Kriang Lerdsuwanakij  <>

	* pt.c (unify): Handle SCOPE_REF.

2001-11-01  Jakub Jelinek  <>

	* tree.c (cp_copy_res_decl_for_inlining): Adjust
	DECL_ABSTRACT_ORIGIN for the return variable.

2001-10-31  Zack Weinberg  <>

	* Replace $(INTL_TARGETS) with po-generated.

2001-10-28  Joseph S. Myers  <>

	* ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
	semantics.c, spew.c: Fix spelling errors.

2001-10-27  Kriang Lerdsuwanakij  <>

	* decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.

2001-10-25  Zack Weinberg  <>

	* cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to

2001-10-23  Richard Kenner  <>

	* cp-lang.c (cxx_get_alias_set): New function.

2001-10-23  Kriang Lerdsuwanakij  <>

	* cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
	* cp-tree.h (make_unbound_class_template): Prototype new function.
	* decl.c (make_unbound_class_template): New function.
	* decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
	* error.c (dump_type): Likewise.
	* mangle.c (write_type): Likewise.
	* parse.y (template_parm): Likewise.
	(template_argument): Use make_unbound_class_template.
	* pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(unify): Likewise.
	* tree.c (walk_tree): Likewise.
	* typeck.c (comptypes): Likewise.

2001-10-21  Kaveh R. Ghazi  <>

	* xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
	extra calls into fewer ones.

2001-10-18  Alexandre Oliva  <>

	* decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
	Warn when merging inline with attribute noinline.
	(start_decl, start_function): Warn if inline and attribute
	noinline appear in the same declaration.

2001-10-16  H.J. Lu <>

	for tree checking disabled.

2001-10-16  Hans-Peter Nilsson  <>

	NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.

2001-10-15  Richard Sandiford  <>

	(unify): Only handle MINUS_EXPR specially if the above flag is set
	and the subtracted constant is 1.  Clear the flag on recursive calls.
	Set it when unifying the maximum value in an INTEGER_TYPE's range.

2001-10-15  Richard Sandiford  <>

	* decl.c (bad_specifiers): Don't allow exception specifications
	on any typedefs.

2001-10-14  Neil Booth  <>

	* cp/lex.c (init_cp_pragma): Similarly.

2001-10-13  Kriang Lerdsuwanakij  <>

	* pt.c (lookup_template_class): Build complete template arguments

2001-10-12  Kriang Lerdsuwanakij  <>

	* cp-tree.h (TYPE_BINFO): Update comment.
	(copy_type): Prototype new function.
	* lex.c (copy_lang_decl): Gather tree node statistics.
	(copy_lang_type): New function.
	(copy_type): Likewise.
	(cp_make_lang_type): Create lang_type for
	* pt.c (tsubst): Use copy_type instead of copy_node.
	* search.c (lookup_field_1): Ignore TYPENAME_TYPE.

2001-10-12  Kriang Lerdsuwanakij  <>

	* pt.c (determine_specialization): Ignore functions without

2001-10-12  Nathan Sidwell  <>

	PR g++/4476
	* typeck2.c (abstract_virtuals_error): Ignore incomplete classes.

2001-10-11  Jason Merrill  <>

	* typeck2.c (store_init_value): Don't re-digest a bracketed

	* class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of

2001-10-11  Richard Henderson  <>

	* class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
	of an asm statement.
	(build_vtbl_ref_1): Split out from build_vtbl_ref.
	(build_vfn_ref): Use it to handle vtable descriptors before
	calling build_vtable_entry_ref.
	* decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.

2001-10-10  Richard Henderson  <>

	* parse.y (asm_operand): Allow named operands.
	* semantics.c (finish_asm_stmt): Tweek for changed location
	of the operand constraint.

2001-10-09  Jason Merrill  <>

	* call.c (standard_conversion): Add bad conversion between
	integers and pointers.
	(convert_like_real): Don't use convert_for_initialization for bad
	conversions; complain here and use cp_convert.
	(build_over_call): Don't handle bad conversions specially.
	(perform_implicit_conversion): Allow bad conversions.
	(can_convert_arg_bad): New fn.
	* cp-tree.h: Declare it.
	* typeck.c (convert_for_assignment): Use it.
	(ptr_reasonably_similar): Any target type is similar to void.

2001-10-08  Alexandre Oliva  <>

	* (CXX_OBJS): Added cp-lang.o.
	(cp/cp-lang.o): New rule.
	* cp-tree.h: Declare hooks.
	* tree.c: Make hooks non-static.
	(init_tree): Don't initialize hooks here.
	* lex.c: Likewise.  Move definition of lang_hooks to...
	* cp-lang.c: ... new file.

2001-10-08  Richard Henderson  <>

	* cp-tree.h (struct lang_decl_flags): Remove declared_inline.
	(DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.

2001-10-07  Kaveh R. Ghazi  <>

	* class.c (build_vtable_entry_ref): Const-ify.
	* decl.c (predefined_identifier,
	initialize_predefined_identifiers): Likewise.
	* init.c (build_new_1): Likewise.
	* lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):

2001-10-05  Alexandre Oliva  <>

	* optimize.c (struct inline_data): Moved to ../tree-inline.c.
	(INSNS_PER_STMT): Likewise.
	(remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
	(copy_body, initialize_inlined_parameters): Likewise.
	(declare_return_variable, inlinable_function_p): Likewise.
	(expand_call_inline, expand_calls_inline): Likewise.
	(optimize_inline_calls, clone_body): Likewise.
	* tree.c (walk_tree): Moved to ../tree-inline.c.
	(walk_tree_without_duplicates): Likewise.
	(copy_tree_r, remap_save_expr): Likewise.

2001-10-04  Alexandre Oliva  <>

	* (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
	(cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
	* cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
	(flag_inline_trees): Moved declaration to ../tree-inline.h.
	(walk_tree): Moved declaration to ../tree-inline.h.
	(walk_tree_without_duplicates, copy_tree_r): Likewise.
	(remap_save_expr): Likewise.
	* decl.c: Include tree-inline.h.
	(lang_mark_tree): Don't mark inlined_fns.
	* decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
	* optimize.c: Include tree-inline.h.
	(optimize_inline_calls): Move declaration to ../tree.h, as
	(remap_decl): Use language-independent constructs and hooks.
	(remap_block, copy_body_r, declare_return_variable): Likewise.
	(inlinable_function_p): Likewise.  Don't test for
	DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
	no longer language-specific.
	(optimize_inline_calls): Likewise.  Make it non-static.  Moved
	call of dump_function to...
	(optimize_function): Here...
	(clone_body): New function, extracted from...
	(maybe_clone_body): ... here.  Build decl_map locally and pass
	it on to clone_body.
	* pt.c, semantics.c: Include tree-inline.h.
	* tree.c: Likewise.
	(cp_walk_subtrees): New language-specific hook for tree inlining.
	(cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
	cp_is_overload_p, cp_auto_var_in_fn_p,
	cp_copy_res_decl_for_inlining): Likewise.
	(walk_tree): Move language-specific constructs into...
	(cp_walk_subtrees): this new function.
	(copy_tree_r): Use language-independent constructs and hooks.
	(init_tree): Initialize tree inlining hooks.
	(remap_save_expr): Adjust prototype so that the declaration
	does not require the definition of splay_tree.

2001-10-03  John David Anglin  <>

	* rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
	to build the declaration instead of the declaration itself.

2001-10-02  Jason Merrill  <>

	* decl2.c (cxx_decode_option): Add 'else'.

	* spew.c (end_input): No longer static.
	* cp-tree.h: Declare it.
	* parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.

2001-10-02  Joseph S. Myers  <>

	* call.c (build_over_call), typeck.c (build_function_call_real):
	Pass type attributes to check_function_format rather than name or
	assembler name.  Don't require there to be a name or assembler
	name to check formats.

2001-10-02  Joseph S. Myers  <>

	* decl.c (init_decl_processing): Don't call
	init_function_format_info.  Initialize lang_attribute_table
	(builtin_function): Call decl_attributes.
	(insert_default_attributes): New.

2001-10-01  Jason Merrill  <>

	* decl.c (grokdeclarator): Copy array typedef handling from C

	* decl.c (grokdeclarator): Copy too-large array handling from C

2001-09-29  Alexandre Oliva  <>

	* (target_libs): Added target-gperf, so that we
	don't try to build it if C++ is disabled.

2001-09-23  Zack Weinberg  <>

	* (CXX_OBJS): Take out cp/errfn.o.
	(cp/errfn.o): Delete rule.
	(cp/error.o): Depend on flags.h.
	* errfn.c: Delete file.
	* cp-tree.h: Declare warn_deprecated.  Remove definitions of
	and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
	cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
	internal_error respectively.  Make cp_deprecated into a macro.
	Don't define cp_printer typedef or declare cp_printers.
	* error.c: Include flags.h.
	Delete: struct tree_formatting_info, print_function_argument_list,
	print_declaration, print_expression, print_function_declaration,
	print_function_parameter, print_type_id, print_cv_qualifier_seq,
	print_type_specifier_seq, print_simple_type_specifier,
	print_elaborated_type_specifier, print_rest_of_abstract_declarator,
	print_parameter_declaration_clause, print_exception_specification,
	print_nested_name_specifier, and definition of cp_printers.
	(locate_error): New function.
	(cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
	rewritten in terms of locate_error and diagnostic.c.
	(cp_tree_printer): Rename cp_printer; wire up to *_to_string
	instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
	(init_error): Adjust to match.

2001-09-22  Richard Kenner  <>

	* (CXX_C_OBJS): Add attribs.o.

2001-09-21  Richard Henderson  <>

	* class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
	(build_vtbl_initializer): Likewise.
	(build_vfn_ref): New.
	* cp-tree.h: Declare it.
	* call.c (build_over_call): Use it.
	* decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
	* typeck.c (get_member_function_from_ptrfunc): Mind descriptors.

2001-09-21  J"orn Rennecke <>

	* decl.c (grokdeclarator): Use C syntax for attr_flags declaration.

2001-09-21  Joseph S. Myers  <>

	Table-driven attributes.
	* decl2.c (cplus_decl_attributes): Only take one attributes
	* cp-tree.c (cplus_decl_attributes): Update prototype.
	* class.c (finish_struct), decl.c (start_decl, start_function),
	decl2.c (grokfield), friend.c (do_friend), parse.y
	(parse_bitfield): Update calls to cplus_decl_attributes.
	* decl.c (grokdeclarator): Take a pointer to a single ordinary
	attribute list.
	* decl.h (grokdeclarator): Update prototype.
	* decl2.c (grokfield): Take a single ordinary attribute list.
	* friend.c (do_friend): Likewise.
	* decl.c (shadow_tag, groktypename, start_decl,
	start_handler_parms, grokdeclarator, grokparms, start_function,
	start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
	parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
	(process_template_parm, do_decl_instantiation): Pass single
	ordinary attribute lists around.
	* decl.c (grokdeclarator): Correct handling of nested attributes.
	Revert the patch
	1998-10-18  Jason Merrill  <>
		* decl.c (grokdeclarator): Embedded attrs bind to the right,
		not the left.
	* cp-tree.h (cp_valid_lang_attribute): Remove declaration
	(cp_attribute_table): Declare.
	* decl.c (valid_lang_attribute): Don't define.
	(lang_attribute_table): Define.
	(init_decl_processing): Initialize lang_attribute_table instead of
	* tree.c (cp_valid_lang_attribute): Remove.
	(handle_java_interface_attribute, handle_com_interface_attribute,
	handle_init_priority_attribute): New functions.
	(cp_attribute_table): New array.
	* decl2.c (import_export_class): Don't use

2001-09-15  Gabriel Dos Reis  <>

	* (cp/error.o): Depend on real.h
	* error.c: #include "real.h"

2001-09-15  Kaveh R. Ghazi  <>

	* mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of

2001-09-13  Kaveh R. Ghazi  <>

	* decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
	* pt.c (tsubst_decl): Likewise.

2001-09-12  Kaveh R. Ghazi  <>

	* decl2.c (lang_f_options): Const-ification.
	* lex.c (cplus_tree_code_name): Likewise.
	* spew.c (yyerror): Likewise.

2001-09-06  Nathan Sidwell  <>

	PR c++/3986
	* class.c (force_canonical_binfo_r): Check & move an indirect
	primary base first.
	(force_canonical_binfo): Check that it's not already
	(mark_primary_virtual_base): Remove BINFO parameter.
	(mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.

2001-09-06  Nathan Sidwell  <>

	* cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
	* class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
	(layout_class_type): Don't call fixup_inline_methods here ...
	(finish_struct_1): ... call it here.

2001-09-04  Mark Mitchell  <>

	* decl.c (duplicate_decls): Remove code deadling with
	* decl2.c (finish_file): Likewise.
	* pt.c (instantiate_decl): Likewise.
	* semantics.c (expand_body): Don't defer local functions if
	they wouldn't be deferred for some other reason.  Don't
	generate RTL for functions that will not be emitted.
	(genrtl_start_function): Remove code deadling with
	(genrtl_finish_function): Likewise.

2001-09-04  Nathan Sidwell  <>

	PR c++/4203
	* call.c (build_over_call): Do not optimize any empty base

2001-08-31  Kriang Lerdsuwanakij  <>

	* error.c (dump_template_decl): Output template parameters
	together with their specifiers.
	Output `class' prefix for template template parameter.
	(dump_decl): Fix formatting.

2001-08-30  Kurt Garloff  <>

	* optimize.c (inlinable_function_p): Allow only smaller single
	functions. Halve inline limit after reaching recursive limit.

2001-08-30  Joern Rennecke <>
	    Jason Merrill  <>

	* class.c (build_vtable_entry_ref): Subtract in char*, not

2001-08-23  Jason Merrill  <>

	* tree.c (cp_build_qualified_type_real): Use get_qualified_type.
	(build_cplus_array_type): Use cp_build_qualified_type, not
	TYPE_MAIN_VARIANT, to get an unqualified version.

	* decl2.c (grok_alignof): Lose.
	(build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
	* typeck.c (c_alignof): Lose.
	* semantics.c (finish_sizeof, finish_alignof): New.
	* parse.y: Use them.
	* cp-tree.h: Declare them.

2001-08-22  Jason Merrill  <>

	* pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
	* tree.c (cp_statement_code_p): A TAG_DEFN is a statement.

2001-08-19  Jakub Jelinek  <>

	* typeck2.c (add_exception_specifier): Only require complete type if
	not in processing template declaration.

2001-08-18  Kaveh R. Ghazi  <>

	* decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
	GNU_xref_start_scope and GNU_xref_end_scope.

	* tree.c (TYPE_HASH): Moved to ../tree.h.

2001-08-16  Mark Mitchell  <>

	* cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS

2001-08-14  Richard Henderson  <>

	* class.c, cp-tree.h (build_vfn_ref): Remove.
	* call.c, rtti.c: Replace all refernces with build_vtbl_ref.

2001-08-13  Mark Mitchell  <>

	* call.c (build_over_call): Mark COMPOUND_EXPRs generated for
	empty class assignment as having side-effects to avoid
	spurious warnings.

2001-08-13  Zack Weinberg  <>

	* (cp/except.o): Add libfuncs.h to dependencies.
	* except.c: Include libfuncs.h.

2001-08-11  Gabriel Dos Reis  <>

	* decl.c (grokdeclarator): Clarify diagnostic message.

2001-08-13  Kriang Lerdsuwanakij  <>

	* decl2.c (do_nonmember_using_decl): Replace using directive
	with using declaration in the error message.

2001-08-11  Kriang Lerdsuwanakij  <>

	* pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
	criterion to avoid rebuilding expression tree instead of

2001-08-07  Jason Merrill  <>

	Support named return value optimization for inlines, too.
	* decl.c (finish_function): Nullify returns here.
	* semantics.c (genrtl_start_function): Not here.
	(cp_expand_stmt): Don't mess with CLEANUP_STMTs.
	(nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
	Also nullify the CLEANUP_STMT for the nrv.
	* cp-tree.h: Declare it.
	* optimize.c (declare_return_variable): Replace the nrv with the
	return variable.
	* typeck.c (check_return_expr): Be more flexible on alignment check.
	Ignore cv-quals when checking for a matching type.

2001-08-09  Richard Henderson  <>

	* decl2.c (finish_objects): Use target hooks instead of
	assemble_constructor and assemble_destructor.

2001-08-08  John David Anglin  <>

	* g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.

2001-08-07  Nathan Sidwell  <>

	PR c++/3820
	* call.c (build_over_call): Be careful when copy constructing
	or assigning to an empty class.
	* class.c (check_bases_and_members): It has a
	COMPLEX_ASSIGN_REF if it has a vptr.
	(layout_class_type): Don't add empty class padding to
	(finish_struct_1): Don't add the VFIELD either.
	* cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_

2001-08-07  Jason Merrill  <>

	* tree.c (walk_tree): Walk siblings even if !walk_subtrees.

2001-08-06  Richard Henderson  <>

	* decl2.c (finish_objects): Pass a symbol_ref and priority to
	assemble_{constructor,destructor}.  Remove priority handling.

2001-08-05  Gabriel Dos Reis  <>

	Don't allow template-id in using-declaration.
	* decl2.c (validate_nonmember_using_decl): Handle template-ids.
	(do_class_using_decl): Likewise.

2001-08-04  Neil Booth  <>

	* cp/spew.c (read_token): No need to pop buffers.

2001-08-02  Stan Shebs  <>

	* cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
	(fnaddr_from_vtable_entry): Remove decl.
	* method.c (use_thunk): Update comment.

2001-08-01  Andrew Cagney  <>

	* repo.c (get_base_filename): Change return value to const char

2001-08-02  Nathan Sidwell  <>

	Kill -fhonor-std.
	* NEWS: Document.
	* cp-tree.h (flag_honor_std): Remove.
	(CPTI_FAKE_STD): Remove.
	(std_node): Remove comment about it being NULL.
	(fake_std_node): Remove.
	* decl.c (in_fake_std): Remove.
	(walk_namespaces_r): Remove fake_std_node check.
	(push_namespace): Remove in_fake_std code.
	(pop_namespace): Likewise.
	(lookup_name_real): Remove fake_std_node check.
	(init_decl_processing): Always create std_node. Always add
	std:: things there.
	(builtin_function): Always put non '_' fns in std.
	* decl2.c (flag_honor_std): Remove.
	(lang_f_options): Remove honor-std.
	(unsupported_options): Add honor-std.
	(set_decl_namespace): Remove fake_std_node check.
	(validate_nonmember_using_decl): Likewise.
	(do_using_directive): Likewise.
	(handle_class_head): Likewise.
	* dump.c (cp_dump_tree): Likewise.
	* except.c (init_exception_processing): Adjust.
	* init.c (build_member_call): Remove fake_std_node check.
	(build_offset_ref): Likewise.
	* lang-options.h: Remove -fhonor-std, -fno-honor-std.
	* rtti.c (init_rtti_processing): Adjust.

2001-07-31  Alexandre Petit-Bianco  <>

	* tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
	operand while calling cp_tree_equal.

2001-07-31  Nathan Sidwell  <>

	The 3.0 ABI no longer has vbase pointer fields.
	* method.c (do_build_copy_constructor): Adjust.
	(do_build_assign_ref): Adjust.
	* search.c (lookup_field_r): Adjust.
	* typeck.c (build_component_ref): Adjust.

	The 3.0 ABI always has a vtable pointer at the start of every
	polymorphic class.
	* rtti.c (build_headof_sub): Remove.
	(build_headof): Adjust.
	(get_tinfo_decl_dynamic): No need to check flag_rtti
	here. Adjust.
	(create_real_tinfo_var): Explain why we need a hidden name.

2001-07-31  Nathan Sidwell  <>

	PR c++/3631
	* class.c (update_vtable_entry_for_fn): The fixed adjustment
	of a virtual thunk should be from declaring base.

2001-07-31  Nathan Sidwell  <>

	* class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
	the shared virtual base, so preserving inheritance graph order.

2001-07-30  Andreas Jaeger  <>

	* decl2.c: Remove unused var global_temp_name_counter.

2001-07-28  Richard Henderson  <>

	* method.c (pending_inlines): Remove.

2001-07-27  Nathan Sidwell  <>

	* class.c (mark_primary_virtual_base): Don't adjust base
	offsets here.
	(dfs_unshared_virtual_bases): Adjust them here.
	(mark_primary_bases): Explain why we adjust at the end.

2001-07-27  Nathan Sidwell  <>

	* class.c (finish_struct_1): When copying the primary base's
	VFIELD, make sure we find it is at offset zero.

2001-07-26  Kriang Lerdsuwanakij  <>

	* pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
	tsubst_expr for default template arguments.

2001-07-26  Nathan Sidwell  <>

	PR c++/3621
	* spew.c (yylex): Only copy the token's lineno, if it is

2001-07-26  Nathan Sidwell  <>

	PR c++/3624
	* call.c (resolve_args): Simplify, call
	(build_new_op): Resolve and convert from reference ARG1
	earlier. Adjust ARG2 & ARG3 resolve and conversion.

2001-07-26  Nathan Sidwell  <>

	* decl.c (last_function_parm_tags): Remove.
	(current_function_parm_tags): Remove.
	(init_decl_processing): Adjust.
	(start_function): Adjust.
	(store_parm_decls): Adjust.

	PR c++/3152
	* decl.c (grokdeclarator): Detect when a function typedef is
	declaring a function, and create last_function_parms correctly.

2001-07-25  Jason Merrill  <>

	* call.c (joust): Only prefer a non-builtin candidate to a builtin
	one if they have the same signature.

	* cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
	it rather than toplevel_bindings_p.  Give it a mangled name if static.
	(convert_to_reference): Adjust.
	* decl2.c (get_temp_name): Lose.
	* mangle.c (mangle_ref_init_variable): New fn.
	(mangle_guard_variable): Strip the ref-init header.
	* cp-tree.h: Adjust.
	* decl.c (cp_finish_decl): Add the DECL_STMT after processing the
	(grok_reference_init): Always use DECL_INITIAL.

2001-07-25  Nathan Sidwell  <>

	PR c++/3416
	* call.c (build_conditional_expr): Recheck args after
	* cp-tree.h (build_conditional_expr): Move to correct file.
	* typeck.c (decay_conversion): Diagnose any unknown types
	reaching here.
	(build_binary_op): Don't do initial decay or default
	conversions on overloaded functions.
	(build_static_cast): Don't do a decay conversion here.

2001-07-25  Nathan Sidwell  <>

	PR c++/3543
	* typeck.c (condition_conversion): Resolve an OFFSET_REF.
	* expr.c (cplus_expand_expr): An OFFSET_REF should never get here.

2001-07-25  Nathan Sidwell  <>

	* class.c (build_vtbl_or_vbase_field): Remove, move into ...
	(create_vtbl_ptr): ... here.

2001-07-25  Nathan Sidwell  <>

	* class.c (build_vbase_offset_vbtl_entries): Look for
	non-primary base of which we are a sub vtable.

2001-07-24  Phil Edwards  <>

	* semantics.c (finish_this_expr):  Remove unused code.

2001-07-24  Nathan Sidwell  <>

	Simplify rtti, now we've only one ABI.
	* cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
	(tinfo_decl_id, tinfo_var_id): Remove.
	(get_typeid_1): Remove.
	* rtti.c
	(init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
	(typeid_ok_p): New function.
	(build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
	(get_tinfo_decl): Remove old abi documentation.
	(tinfo_from_decl): Remove.
	(get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
	(get_typeid_1): Remove.
	(get_base_offset): Remove.
	(synthesize_tinfo_var): Absorb get_base_offset.
	(create_real_tinfo_var): Don't use tinfo_decl_id.

2001-07-23  Graham Stott  <>

	* cp/class.c (type_requires_array_cookie): Fix use of uninitialized
	variable has_two_argument_delete_p.

2001-07-21  Nathan Sidwell  <>

	Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
	* cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
	(delta2_identifier): Remove.
	(index_identifier): Remove.
	(pfn_or_delta2_identifier): Remove.
	(flag_vtable_thunks): Remove.
	(vfunc_ptr_type_node): Adjust.
	(build_vfn_ref): Lose first parameter.
	(fixup_all_virtual_upcast_offsets): Remove.
	* decl.c (initialize_predefined_identifiers): Remove
	delta2_identifier, index_identifier, pfn_or_delta2_identifier.
	(init_decl_processing): Remove no-vtable-thunk code.
	* decl2.c (flag_vtable_thunks): Remove.
	(mark_vtable_entries): Remove no-vtable-thunk code.
	* error.c (dump_decl): Remove no-vtable-thunk code.
	(dump_expr): Adjust ptr to member function code.
	* init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
	* rtti.c (build_headof): Remove no-vtable-thunk code.
	(get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
	* search.c (get_base_distance): Remove expand_upcast_fixups case.
	(virtual_context) Remove.
	(expand_upcast_fixups): Remove.
	(fixup_virtual_upcast_offsets): Remove.
	(fixup_all_virtual_upcast_offsets): Remove.
	* typeck.c (get_member_function_from_ptrfunc): Remove
	no-vtable-thunk code.
	* call.c (build_over_call): Adjust call to build_vfn_ref.
	* class.c (build_vfn_ref): Lose first parameter. Remove
	no-vtable-thunk code.
	(build_rtti_vtbl_entries): Remove no-vtable-thunk code.
	(build_vtable_entry): Remove no-vtable-thunk code.

2001-07-20  Nathan Sidwell  <>

	Remove old-abi remnants. Remove comments about old abi
	behavior. Remove references to 'new-abi' in comments.
	* cp-tree.h: Adjust comments.
	(vbase_offsets_in_vtable_p): Delete.
	(vcall_offsets_in_vtable_p): Delete.
	(vptrs_present_everywhere_p): Delete.
	(all_overridden_vfuns_in_vtables_p): Delete.
	(merge_primary_and_secondary_vtables_p): Delete.
	(init_vbase_pointers): Remove.
	* class.c: Adjust coments.
	(build_vbase_pointer_fields): Delete.
	(build_vbase_pointer): Remove old-abi code.
	(build_secondary_vtable): Likewise.
	(modify_all_vtables): Likewise.
	(create_vtable_ptr): Likewise.
	(layout_class_type): Likewise.
	(finish_struct_1): Likewise.
	(finish_vtbls): Likewise.
	(dfs_finish_vtbls): Delete.
	(build_vbase_offset_vtbl_entries): Remove old-abi code.
	* cvt.c: Adjust comments.
	* decl.c: Adjust comments.
	* decl2.c: Adjust comments.
	* init.c: Adjust comments.
	(construct_virtual_bases): Remove old-abi code.
	* lang-specs.h: Remove -fno-new-abi.
	* mangle.c: Adjust comments.
	* rtti.c: Adjust comments.
	(get_base_offset): Remove old-abi-code.
	* search.c: Adjust comments.
	(dfs_init_vbase_pointers): Remove.
	(dfs_vtable_path_unmark): Remove.
	(init_vbase_pointers): Remove.
	* semantics.c: Adjust comments.
	(emit_associated_thunks): Remove old-abi code.
	* typeck.c: Adjust comments.

2001-07-20  Daniel Berlin  <>

	* (cp/optimize.o): Depend on $(PARAMS_H), not

2001-07-19  Mark Mitchell  <>

	* class.c (finish_struct_anon): Forbid nested classes.

2001-07-19  Neil Booth  <>

	* decl2.c: Don't include dwarfout.h and dwarf2out.h.
	* optimize.c: Include debug.h.
	(maybe_clone_body): Use debug hook.
	* semantics.c: Include debug.h.
	(expand_body): Use debug hook.

2001-07-19  Neil Booth  <>

	* spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.

2001-07-18  Mark Mitchell  <>

	* class.c (type_requires_array_cookie): New function.
	(check_methods): Don't try to figure out whether the type needs a
	cookie here.
	(check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
	* cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
	* pt.c (instantiate_class_template): Don't set
	* NEWS: Document ABI changes from GCC 3.0.

2001-07-18  Xavier Delacour <>,
	    Gerald Pfeifer  <>

	* NEWS (Changes in GCC 3.0): Fix typo.

2001-07-13  Joseph S. Myers  <>

	* decl2.c (cplus_decl_attributes): Take a pointer to the node to
	which attributes are to be attached, and a flags argument.  Update
	call to decl_attributes.
	(grokfield): Update call to decl_attributes.
	* class.c (finish_struct): Update call to cplus_decl_attributes.
	* cp-tree.h (cplus_decl_attributes): Update prototype.
	* decl.c (start_decl, grokdeclarator, start_function): Update
	calls to decl_attributes and cplus_decl_attributes.
	* friend.c (do_friend): Update call to cplus_decl_attributes.
	* parse.y (parse_bitfield): Update call to cplus_decl_attributes.

2001-07-12  Mark Mitchell  <>

	* decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
	for `register' variables with an asm-specification.

2001-07-11  Mark Mitchell  <>

	* semantics.c (finish_asm_stmt): Mark the output operands
	to an asm addressable, if necessary.

2001-07-11  Ben Elliston  <>

	* Revert this change -- there is a subtle bug.

	PR c++/80
	* decl.c (finish_enum): New "attributes" argument; pass it to
	cplus_decl_attributes.  Use a narrower type if the enum is packed.
	* cp-tree.h (finish_enum): Adjust prototype.
	* parse.y (enum_head): New non-terminal.
	(structsp): Use it. Enums now may be preceded or followed by
	optional attributes -- pass their chained tree to finish_enum().
	* pt.c (tsubst_enum): Pass NULL_TREE for the new argument.

2001-07-10  Mark Mitchell  <>

	* pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope

2001-07-10  Jason Merrill  <>

	* semantics.c (cp_expand_stmt): Fix for null

2001-07-10  Jan van Male  <>

	* call.c (build_op_delete_call): Initialize fn.
	(convert_like_real): Delete conditional.
	(joust): Initialize *w and *l.
	* class.c: Add prototype for binfo_ctor_vtable.
	(get_primary_binfo): Initialize result.
	* init.c (build_java_class_ref): Initialize name.

2001-07-09  Erik Rozendaal  <>

	* typeck.c (unary_complex_lvalue): Do not duplicate the
	argument to modify, pre-, or post-increment when used as an
	lvalue and when the argument has side-effects.

2001-07-08  Joseph S. Myers  <>

	* decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
	(start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
	cplus_decl_attributes even if attrs is NULL.
	* friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.

2001-07-08  Joseph S. Myers  <>

	* decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
	calls to decl_attributes.

2001-07-06  Ira Ruben   <>

	* cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should

2001-07-05  Kriang Lerdsuwanakij  <>

	* cp-tree.h (copy_template_template_parm): Rename to ...
	(bind_template_template_parm): ... here.
	* tree.c (copy_template_template_parm): Rename to ...
	(bind_template_template_parm): ... here.  Remove the case when
	(copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
	* pt.c (lookup_template_class): Adjust.

2001-07-05  Jason Merrill  <>

	* cvt.c (convert_lvalue): New fn.
	* cp-tree.h: Declare it.
	* method.c (do_build_assign_ref): Use it.
	(do_build_copy_constructor): Convert parm to base types
	before calling base constructors.

	* typeck.c (check_return_expr): Check DECL_ALIGN instead of
	DECL_USER_ALIGN.  Check flag_elide_constructors instead of
	* semantics.c (cp_expand_stmt): Don't destroy the named return value.

2001-07-02  Nathan Sidwell  <>

	* optimize.c (optimize_inline_calls): New function, broken out
	of ...
	(optimize_function): ... here. Call it. Don't inline if it is
	a thunk.
	(dump_function): Print name of dump flag causing this dump.
	* semantics.c (expand_body): Move thunk inline check to

2001-06-29  Joseph S. Myers  <>

	* typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
	(comptypes): Use target.comp_type_attributes.

2001-06-29  Nathan Sidwell  <>

	* cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.

2001-06-28  Gabriel Dos Reis  <>

	* error.c (lang_print_error_function): Add a `diagnostic_context *'
	parameter. Tweak.

2001-06-27  Neil Booth  <>

	* decl2.c (import_export_class): Update.

2001-06-26  Gabriel Dos Reis  <>

	* error.c (init_error): Adjust settings.

2001-06-26  Gabriel Dos Reis  <>

	* error.c (init_error): Adjust settings.

2001-06-19  Richard Sandiford  <>

	* except.c (initialize_handler_parm): Expect __cxa_begin_catch to
	return pointers to data members by reference rather than by value.

2001-06-18  Jason Merrill  <>

	Implement the Named Return Value optimization.
	* cp-tree.h (struct cp_language_function): Add x_return_value.
	(current_function_return_value): Now a macro.
	* decl.c: Don't define it.
	(define_label, finish_case_label): Don't clear it.
	(init_decl_processing): Don't register it with GC.
	* semantics.c (genrtl_finish_function): Don't check it for
	no_return_label.  Copy the RTL from the return value to
	current_function_return_value and walk, calling...
	(nullify_returns_r): ...this new fn.
	* typeck.c (check_return_expr): Set current_function_return_value.

2001-06-15  Jason Merrill  <>

	* class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
	sharing a ctor vtable with.  Merge code for cases 1 and 2.
	(binfo_ctor_vtable): New fn.
	(build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.

2001-06-14  Jason Merrill  <>

	* class.c (dfs_find_final_overrider): Fix logic.

	* class.c (update_vtable_entry_for_fn): Uncomment optimization to use
	virtual thunk instead of non-virtual.
	(get_matching_virtual): Uncomment.

	* pt.c (unify): Don't recurse between the POINTER_TYPE and the
	OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
	PARM, not ARG.

2001-06-14  Nathan Sidwell  <>

	* class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
	we've not emerged from the hierarchy of RTTI_BINFO on reaching
	a non-virtual base.

2001-06-13  Mark Mitchell  <>

	* NEWS: Update release number.

2001-06-12  Nathan Sidwell  <>

	PR c++/3130, c++/3131, c++/3132
	* cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
	* class.c (force_canonical_binfo_r): Move
	virtual bases unless they're primary and what they're primary
	too has been moved.
	(dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
	with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
	BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
	derived binfo.
	(mark_primary_bases): Use BINFO_UNSHARED_MARKED.
	(layout_nonempty_base_or_field): Add most derived type
	parameter. Adjust.
	(layout_empty_base): Likewise.
	(build_base_field): Likewise.
	(build_base_fields): Likewise.
	(propagate_binfo_offsets): Add most derived type
	parameter. Skip non canonical virtual bases too.
	(dfs_set_offset_for_unshared_vbases): Don't skip primary
	bases. Do skip canonical bases.
	(layout_virtual_bases): Adjust.
	(layout_class_type): Adjust.
	(dfs_get_primary_binfo): Build list of virtual primary base
	(get_primary_binfo): Check that the shared virtual primary
	base candidate was found first.
	(accumulate_vtbl_inits): Don't do anything for non-vptr
	containing binfos. For case 1 primary virtual bases, keep
	checking that we've not emerged from the hierarchy of RTTI_BINFO.

2001-06-12  Nathan Sidwell  <>

	PR c++/3089
	* class.c (dfs_accumulate_vtbl_inits): Always walk down the
	hierarchy looking for primary bases for a ctor
	vtable. Recursively call oneself, if we meet our primary via
	this route and haven't met it yet via inheritance graph order.

2001-06-11  Mark Mitchell  <>

	* lang-options.h: Emit documentation for -fno-honor-std, not

2001-06-10  Alexandre Oliva  <>

	* typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
	Don't clobber delta.
	(expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.

2001-06-10  Mark Mitchell <>
	    Gabriel Dos Reis  <>

	* (cp/call.o): Depend on diagnostic.h
	(cp/typeck.o): Depend on diagnostic.h
	(cp/typeck2.o): Depend on diagnostic.h
	(cp/repo.o): Depend on dignostic.h
	* typeck.c: #include diagnostic.h
	(convert_for_initialization): Remove extern declaration for
	warningcount and errorcount.

	* call.c: #include diagnostic.h
	(convert_like_real): Remove extern declaration for warnincount and

	* repo.c: #include diagnostic.h
	* typeck2.c: #include diagnostic.h

2001-06-08  Nathan Sidwell  <>

	* decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
	in previous change.

2001-06-08  Nathan Sidwell  <>

	PR c++/2929
	* friend.c (do_friend): Use push_decl_namespace for classes at
	namespace scope.

2001-06-08  Nathan Sidwell  <>
	    Jason Merrill <>

	PR c++/3061
	* class.c (build_secondary_vtable): Use assert, rather than an error
	(dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
	(dfs_accumulate_vtbl_inits): A lost primary virtual base may
	be between ORIG_BINFO and RTTI_BINFO, but neither of them.
	Don't set BINFO_VTABLE for a primary virtual base.

2001-06-07  Mark Mitchell  <>

	* decl.c (duplicate_decls): Update source position information
	when a template function is defined.

2001-06-07  Phil Edwards  <>

	* lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.

2001-06-07  Nathan Sidwell  <>

	PR c++/2914
	* decl.c (pushtag): Don't push into a complete type's scope.

2001-06-06  Jason Merrill  <>

	* cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
	(struct lang_decl_flags): Lose generate_with_vtable_p.
	* class.c (copy_virtuals): Adjust.
	* decl2.c (mark_vtable_entries): Adjust.
	* method.c (make_thunk, build_vtable_entry): Adjust.
	* class.c (update_vtable_entry_for_fn): Only look as far as the
	first defining class.
	(build_vtbl_initializer): Put nothing in the slot for a function only
	defined in a lost primary virtual base.
	(add_vcall_offset_vtbl_entries_1): Use the same code for
	the lost primary case and the normal case.
	(dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
	(get_vfield_offset, get_derived_offset): Lose.
	(dfs_find_final_overrider): Use look_for_overrides_here.
	(get_matching_virtual): New fn.
	* semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
	* search.c (look_for_overrides_here): Split out from...
	(look_for_overrides_r): Here.

	* class.c (find_final_overrider): Return error_mark_node on error.

	* decl2.c (key_method): #if 0 accidental change.

2001-06-06  John David Anglin  <>

	* call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
	(build_over_call): Likewise.
	* decl.c (grokparms): Likewise.
	* pt.c (tsubst_decl): Likewise.
	* typeck.c (convert_arguments): Likewise.

2001-06-05  Mark Mitchell  <>

	* semantics.c (begin_class_definition): Robustify.

	* pt.c (instantiate_decl): Tell the repository code about the
	clones, not the cloned functions.
	* repo.c (repo_template_used): Explicitly instantiate the cloned
	function, not the clones.

2001-06-05  Nathan Sidwell  <>

	* call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
	ICS_BAD_FLAG on created conversion.
	(compare_ics): Break out rank.

2001-06-05  Nathan Sidwell  <>

	* decl.c (xref_tag): Remove extraneous %s on dependent name
	lookup warning.

2001-06-05  Nathan Sidwell  <>

	* class.c (layout_vtable_decl): Fix off by one error on
	(build_vtt): Likewise.
	(build_ctor_vtbl_group): Likewise.

2001-06-05  Nathan Sidwell  <>

	* class.c (maybe_indent_hierarchy): New function.
	(dump_class_hierarchy_r): Add flags. Dump extra binfo
	information, if enabled. Use maybe_indent_hierarchy. Adjust
	output format.
	(dump_class_hierarchy): Adjust prototype. Adjust output format.
	(dump_array, dump_vtable, dump_vtt): New functions.
	(finish_struct_1): Adjust hierarchy dumping.
	(initialize_vtable): Call dump_vtable.
	(build_vtt): Call dump_vtt.
	(build_ctor_vtbl_group): Call dump_vtable.
	* decl2.c (flag_dump_class_layout): Remove.
	(cxx_decode_option): Remove dump translation unit
	and dump class hierarchy check. Call dump_switch_p.
	(finish_file): Adjust dumping.
	(dump.c): Only dump base classes if not TDF_SLIM.
	Only dump namespace members if not TDF_SLIM.
	* optimize.c (dump_function): New function.
	(optimize_function): Call dump_function.
	* semantics.c (expand_body): Use dump_enabled_p.

2001-06-01  Nathan Sidwell  <>

	PR g++/2936
	Part missed from first commit
	* decl2.c (finish_anon_union): Copy context.

2001-05-30  Nathan Sidwell  <>

	PR g++/2936
	* optimize.c (remap_decl): Remap anonymous aggregate members too.

2001-05-26  Nathan Sidwell  <>

	PR g++/2823
	* semantics.c (expand_body): Don't optimize thunks.

2001-05-25  Sam TH  <>

	* cp-tree.h lex.h: Fix header include guards.

2001-05-25  Mark Mitchell <>

	* decl.c (init_decl_processing): Tweak.

2001-05-24  Mark Mitchell  <>

	* decl.c (duplicate_decls): Tidy.
	(init_decl_processing): Always set flag_no_builtin.

2001-05-24  Nathan Sidwell  <>

	PR c++/2184
	* decl2.c (do_local_using_decl): Push the decls, even in a

2001-05-22  Mark Mitchell  <>

	* optimize.c (initialize_inlined_parameters): Don't set
	TREE_READONLY for a VAR_DECL taking the place of an inlined

2001-05-22  Jason Merrill  <>

	* class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
	* tree.c (cp_valid_lang_attribute): Warn about use of com_interface

2001-05-22  Joseph S. Myers  <>

	* parse.y: Refer to compound literals as such, not as

2001-05-21  Mark Mitchell  <>

	* call.c (build_op_delete_call): Ignore exception-specifications
	when looking for matching delete operators.
	* init.c (build_new_1): Compute whether or not the allocation
	function used is a placement allocation function or not, and
	communicate this information to build_op_delete_call.

2001-05-21  Jason Merrill  <>

	* class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
	(build_vtbl_ref): Adjust.
	(dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
	* decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
	Re-add vtable-gc.
	(unsupported_options): Correspondingly.

	* decl2.c (maybe_make_one_only): Check flag_weak, not

	* cp-tree.def (START_CATCH_STMT): Lose.
	* dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
	* tree.c (cp_statement_code_p): Don't case it.
	* semantics.c (cp_expand_stmt): Likewise.
	* cp-tree.h (START_CATCH_TYPE): Lose.
	* except.c (expand_start_catch_block): Don't start any blocks.
	Return the type.
	(expand_end_catch_block): Don't end any blocks.
	* parse.y (handler): Don't pass anything from finish_handler_parms
	to finish_handler.
	* pt.c (tsubst_expr): Likewise.
	* semantics.c (begin_handler): Call note_level_for_catch here.
	(finish_handler_parms): Don't return anything.
	(genrtl_catch_block, begin_catch_block): Lose.
	(genrtl_handler): Call expand_start_catch here.

2001-05-18  Jason Merrill  <>

	* class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
	(get_vtable_decl, build_vtt): Not here.

2001-05-20  Nathan Sidwell  <>

	PR c++/2781
	* optimize.c (update_cloned_parm): Copy addressability and other

2001-05-20  Kriang Lerdsuwanakij  <>

	* pt.c (determine_specialization): Ignore artificial functions.

2001-05-20  Neil Booth  <>

	* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
	(C_RID_CODE): Remove.
	* lex.c (cxx_init_options): Call set_identifier_size.  Update.
	(init_parse): Don't do it here.

2001-05-18  Diego Novillo  <>

	* decl2.c (finish_objects): Use the original SYMBOL_REF from the
	function declaration to avoid stripping the symbol's attributes.

2001-05-18  Nathan Sidwell  <>

	* decl.c (pushdecl): Adjust error string.
	(xref_tag): Adjust friend class injection warning. Remove the
	inherited name from the class shadowed scope.

2001-05-17  Mark Mitchell  <>

	* except.c (cp_protect_cleanup_actions): New function.
	(init_exception_processing): Don't set protect_cleanup_actions
	here.  Do set lang_protect_cleanup_actions.

2001-05-16  Nathan Sidwell  <>

	* spew.c (read_token): Call yyerror on all unexpected tokens.

2001-05-16  Nathan Sidwell  <>

	* init.c (member_init_ok_or_else): Take a tree rather than
	string for name.
	(expand_member_init): Adjust.

2001-05-14  Nick Clifton  <>

	* decl.c (duplicate_decls): Suppress warning about duplicate
	decls if the first decl is a friend.

2001-05-12  Zack Weinberg  <>

	* except.c (choose_personality_routine): Export.  Add
	explanatory comment.  Take an enum languages, not a boolean.
	(initialize_handler_parm): Adjust to match.
	* cp-tree.h: Prototype choose_personality_routine.
	* lex.c (handle_pragma_java_exceptions): New function.
	(init_cp_pragma): Register #pragma GCC java_exceptions.

2001-05-12  Neil Booth  <>

	* method.c (build_mangled_C99_name): Remove unused prototype.

2001-05-12  Alexandre Oliva  <>

	* cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
	* typeck.c (get_member_function_from_ptrfunc,
	build_ptrmemfunc, expand_ptrmemfunc_cst): Take

	Reverted Geoff Keating's 2001-05-03's patch.

2001-05-11  Ira Ruben	<>

	* cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.

2001-05-11  Neil Booth  <>

	* cp-tree.h (finish_label_expr, lookup_label): Delete.
	* parse.y: Update for '&&'; don't issue warning here.
	* semantics.c (finish_label_expr): Delete.

2001-05-07  Mark Mitchell  <>

	* splay-tree.h (splay_tree_max): New function.
	(splay_tree_min): Likewise.

2001-05-03  Geoffrey Keating  <>

	* cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
	(pfn_vflag_identifier): Define.
	Update comment about layout of pointer functions.
	(build_ptrmemfunc1): Update prototype.
	(expand_ptrmemfunc_cst): Update prototype.
	* decl.c (initialize_predefined_identifiers): Initialize
	(build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
	an extra field to the type.
	* expr.c (cplus_expand_constant): Pass 'flag' between
	expand_ptrmemfunc_cst and build_ptrmemfunc1.
	* typeck.c (get_member_function_from_ptrfunc): When
	FUNCTION_BOUNDARY < 16, look at additional field to determine
	if a pointer-to-member is a real pointer or a vtable offset.
	(build_ptrmemfunc1): Add new parameter to contain extra field.
	(build_ptrmemfunc): Pass the extra field around.
	(expand_ptrmemfunc_cst): Add new parameter to return extra field.
	(pfn_from_ptrmemfunc): Ignore the extra field.

2001-05-03  Mark Mitchell  <>

	* cp-tree.h (flag_inline_trees): Update documentation.
	* decl.c (init_decl_processing): Adjust handling of
	flag_inline_functions and flag_inline_trees to support -O3.
	(grokfndecl): Set DECL_INLINE on all functions if that's what
	the user requested.
	(save_function_data): Clear DECL_INLINE in
	current_function_cannot_inline is non-NULL.
	* decl2.c (flag_inline_trees): Update documentation.

2001-05-03  Nathan Sidwell  <>

	* dump.c (cp_dump_tree, USING_STMT case): New case.
	* tree.c (cp_statement_code_p): Add USING_STMT.
	* decl2.c (do_using_directive): Add the using directive statement.

	* tree.c (walk_tree): Reformat an if block.

2001-05-02  Mark Mitchell  <>

	* decl.c (compute_array_index_type): Don't try to do anything with
	the indices when processing a template.

2001-05-02  Kaveh R. Ghazi  <>

	* call.c: NULL_PTR -> NULL.
	* class.c: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* init.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

2001-05-02  Mark Mitchell  <>

	* decl2.c (do_using_directive): Revert previous patch.

2001-05-01  Nathan Sidwell  <>

	* cp-tree.def (USING_STMT): New statement node.
	* cp-tree.h (USING_STMT_NAMESPACE): New macro.
	* decl2.c (do_using_directive): Add USING_STMT to statement
	tree. Don't emit errors when processing template decl.
	* pt.c (tsubst_expr, USING_STMT case): New case.
	* semantics.c (cp_expand_stmt, USING_STMT case): New case.

2001-05-01  Nathan Sidwell  <>

	* call.c (build_new_op): Convert args from reference here.
	(build_conditional_expr): Don't convert here.

2001-05-01  Nathan Sidwell  <>

	* spew.c (last_token_id): New static variable.
	(read_token): Set it here.
	(yyerror): Use it here.

2001-04-30  Richard Henderson  <>

	* cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
	* decl.c: Likewise.

2001-04-30  Mark Mitchell  <>

	* gxxint.texi: Remove.
	* Remove all traces of gxxint.texi.

2001-04-30  Mark P Mitchell  <>

	* decl2.c (start_static_initialization_or_destruction): Correct
	logic to handle the -fno-use-cxa-atexit case.

2001-04-30  Mark Mitchell  <>

	* optimize.c (update_cloned_parm): New function.
	(maybe_clone_body): Use it.  Update the `this' parameter too.

2001-04-29  Joseph S. Myers  <>

	* decl2.c (unsupported_options): Add new-abi.
	* lang-options.h: Remove no longer supported options.

2001-04-27  Nathan Sidwell  <>

	* except.c (can_convert_eh): Don't check template parms,
	typename types etc.

2001-04-27  Nathan Sidwell  <>

	* optimize.c (maybe_clone_body): Copy parameter names and locations.

2001-04-27  Nathan Sidwell  <>

	* cp-tree.h (adjust_clone_args): Prototype new function.
	* class.c (adjust_clone_args): New function.
	* decl.c (start_function): Call it for in charge ctors.

2001-04-26  Mark Mitchell  <>

	* method.c (use_thunk): Make sure that thunks really are emitted
	when requested.

2001-04-26  Nathan Sidwell <>

	* mangle.c (write_chars): New macro.
	(hwint_to_ascii): New function
	(write_number): Use it.
	(write_integer_cst): Deal with really big numbers.

2001-04-25  Mark Mitchell  <>

	* optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
	the clone.

2001-04-25  Nathan Sidwell  <>

	* decl.c (grokdeclarator): Set context of namespace scope

2001-04-24  Zack Weinberg  <>

	* cp/optimize.c: Include hashtab.h.
	(struct inline_data): Add tree_pruner.
	(expand_call_inline, expand_calls_inline): Use it when calling
	(optimize_function): Initialize and free tree_pruner.

2001-04-24  Nathan Sidwell <>

	Lazy __FUNCTION__ generation.
	* cp-tree.def (FUNCTION_NAME): Remove.
	* cp-tree.h (function_name_declared_p): Remove.
	(cp_fname_init): Prototype.
	* decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
	don't call declare_function_name. Call start_fname_decls.
	(cp_make_fname_decl): Adjust parameters. Generate the name. Don't
	clobber the line number.
	(cp_fname_init): New function.
	(start_function): Call start_fname_decls.
	(finish_function): Call finish_fname_decls.
	* lex.c (reswords): Add slots for __FUNCTION__ et al.
	(rid_to_yy): Add mappings for __FUNCTION__ et al.
	* optimize.c (maybe_clone_body): Remove function_name_declared_p.
	* parse.y (VAR_FUNC_NAME): New token.
	(primary): Add VAR_FUNC_NAME.
	* pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
	(tsubst, FUNCTION_NAME case): Remove.
	(tsubst_copy, FUNCTION_NAME case): Remove.
	(tsubst_expr, DECL_STMT case): Be careful with a
	(instantiate_decl): Remove function_name_declared_p.
	* semantics.c (begin_compound_statement): Don't call
	declare_function_name here.
	(setup_vtbl_ptr). Don't save & restore function_name_declared_p.
	(finish_translation_unit): Call finish_fname_decls.
	(expand_body): Remove function_name_declared_p.
	* typeck2.c (digest_init): Allow any ERROR_MARK.

2001-04-24  Nathan Sidwell  <>

	* pt.c (tsubst_decl): Use VOID_TYPE_P.
	* semantics.c: Fix some typos.

2001-04-23  Phil Edwards  <>

	* cp/decl2.c (flag_honor_std):  Always initialize to 1.

2001-04-22  Kaveh R. Ghazi  <>

	* xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.

2001-04-23  Jason Merrill  <>

	* except.c (build_throw): Wrap the initialization of the exception
	object in a MUST_NOT_THROW_EXPR.
	(do_free_exception): #if 0.

2001-04-20  Mark Mitchell  <>

	* cp-tree.h (finish_enum): Change prototype.
	* decl.c (finish_enum): Reorganize.
	* parse.y (structsp): Adjust calls to finish_enum.

2001-04-20  Nathan Sidwell  <>

	* tree.c (cp_tree_equal): Adjust final switch formatting. Add
	't' case.

2001-04-20  Nathan Sidwell  <>

	* class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
	(layout_empty_base): Return at end flag.
	(build_base_field): Likewise.
	(build_base_fields): Likewise.
	(layout_virtual_bases): Don't add 1 to eoc value.
	(end_of_class): Use full size for empty bases.
	(layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
	empty bases. Don't add 1 to eoc value. Only add trailing padding
	if we're an empty class with no empty bases.
	(dump_class_hierarchy): Dump size and alignment.

2001-04-20  Jakub Jelinek  <>

	* call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and

2001-04-20  Jakub Jelinek  <>

	* search.c (lookup_field_r): If looking for type and non-TYPE_DECL
	is found, look first if name does not match the structure name.

2001-04-19  Mark Mitchell  <>

	* cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
	(SET_DECL_LANGUAGE): New macro.
	* decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
	(pushdecl): Likewise.
	(build_library_fn_1): Likewise.
	(build_cp_library_fn): Likewise.
	(grokfndecl): Likewise.
	(grokvardecl): Mark `extern "C"' variables as having C linkage.
	* decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
	* lex.c (retrofit_lang_decl): Likewise.
	* mangle.c (mangle_decl_string): Don't mangle the names of
	variables declared with C language linkage.
	* semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.

2001-04-18  John David Anglin  <>

	* semantics.c (simplify_aggr_init_exprs_r): Don't restore
	flag_access_control from uninitialized storage.

2001-04-15  Mark Mitchell  <>

	* cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
	* mangle.c (write_pointer_to_member_type): Fix mangling of
	pointers to cv-qualified member function types.

	* init.c (build_delete): Create a SAVE_EXPR for the address if
	we're going to use it more than once.

2001-04-13  Mark Mitchell  <>

	* cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
	(expand_ptremfunc_cst): Change prototype.
	(delta2_from_ptrmemfunc): Remove.
	* expr.c (cplus_expand_constant): Adjust call to
	* typeck.c (build_ptrmemfunc1): Simplify.
	(build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
	results in a constant.
	(expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
	(delta2_from_ptrmemfunc): Remove.
	(pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.

2001-04-12  Jason Merrill  <>

	* cp-tree.h (decl_namespace_list): New macro.
	(struct saved_scope): Add decl_ns_list.
	* decl.c (mark_saved_scope): Mark it.
	* decl2.c: Lose static decl_namespace_list.
	(init_decl2): Don't save it.

2001-04-12  Kaveh R. Ghazi  <>

	* cp-tree.h (warn_return_type, yylex): Delete redundant

	* decl.c (current_class_depth, global_namespace): Likewise.

	* decl2.c (current_class_depth, flag_gnu_xref): Likewise

	* repo.c (flag_use_repository): Likewise.

2001-04-12  Kaveh R. Ghazi  <>

	* cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
	set_block, pushdecl, getdecls, gettags, init_decl_processing,
	maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
	lvalue_or_else, print_lang_statistics, comp_target_types,
	unsigned_type, signed_type, signed_or_unsigned_type,
	build_function_call, mark_addressable, incomplete_type_error):
	Delete redundant declarations.

2001-04-11  Jason Merrill  <>

	* cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
	(TYPE_ANONYMOUS_P): New macro.
	(TAGGED_TYPE_P): New macro.
	* decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
	(grokfndecl, grokvardecl, grokdeclarator): Likewise.
	* tree.c (no_linkage_helper): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	* pt.c (convert_template_argument): Likewise.
	* lex.c (check_for_missing_semicolon): Likewise.

2001-04-12  Nathan Sidwell  <>

	* class.c (dfs_unshared_virtual_bases): New function.
	(mark_primary_bases): Call it.
	(check_bases): Ignore virtual bases when determining

2001-04-12  Nathan Sidwell  <>

	* method.c (make_thunk): Clear DECL_CLONED_FUNCTION.

2001-04-11  Mark Mitchell  <>

	* optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
	cloned function to the clone.

2001-04-11  Kaveh R. Ghazi  <>

	* (cp/semantics.o): Depend on $(EXPR_H).

	* semantics.c: Include expr.h.

2001-04-11  Nathan Sidwell  <>

	* method.c (implicitly_declare_fn): Commonize code for copy ctor
	and assignment op. Set TREE_USED for parameter.

2001-04-10  Mark Mitchell  <>

	* class.c (find_final_overrider_data): Add `candidates'.
	(dfs_find_final_overrider): Don't issue error messages
	(find_final_overrider): Issue error messages here.
	(build_base_field): Don't warn about amgibuous direct bases here.
	(warn_about_ambiguous_direct_bases): New function.
	(layout_class_type): Use it.

2001-04-10  Richard Henderson  <>

	* typeck.c (build_array_ref): Push the array reference inside

2001-04-05  Mark Mitchell  <>

	* decl.c (duplicate_decls): Adjust accordingly.
	(maybe_commonize_var): Likewise.
	(grokfndecl): Likewise.
	(start_function): Likewise.
	(start_method): Likewise.
	* decl2.c (key_method): Likewise.
	(import_export_decl): Likewise.
	* method.c (implicitly_declare_fn): Likewise.
	* optimize.c (maybe_clone_body): Likewise.

2001-04-05  Benjamin Kosnik  <>

	* lang-specs.h: Add __DEPRECATED.

2001-04-05  J"orn Rennecke <>

	* search.c (get_dynamic_cast_base_type): When building a new
	constant, set its type to ssizetype.

2001-04-04  Jakub Jelinek  <>

	* optimize.c (expand_call_inline): Only add newly inlined statements
	into inlined_stmts.

2001-04-03  Mark Mitchell  <>

	* cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
	* operators.def: Remove old name-mangling information.
	* decl.c (grok_op_properties): Adjust accordingly.
	* lex.c (init_operators): Likewise.
	* rtti.c (get_tinfo_decl): Issue error messages about types that
	have variable size.

2001-04-03  Mark Mitchell  <>

	* decl2.c (import_export_decl): Don't call import_export_class
	when processing an inline member function.
	* semantics.c (expand_body): Call import_export_decl before
	emitting inline functions.

2001-03-28  Richard Henderson  <>

	IA-64 ABI Exception Handling:
	* cp-tree.def (EH_SPEC_BLOCK): New.
	* cp-tree.h: Update changed function declarations.
	(struct cp_language_function): Rename x_eh_spec_try_block
	to x_eh_spec_block.
	* decl.c (current_binding_level): If no current function
	bindings, revert to scope_chain.
	(initialize_predefined_identifiers): Remove __cp_push_exception.
	(store_parm_decls): Use begin_eh_spec_block.
	(finish_function): Use finish_eh_spec_block.
	(mark_lang_function): Update for name changes.
	* decl2.c (finish_file): No mark_all_runtime_matches.
	* dump.c (cp_dump_tree): Handle new tree codes.
	* error.c (dump_expr) [BIND_EXPR]: Fix typo.
	* except.c (catch_language_init, catch_language): Remove.
	(init_exception_processing): Don't set language code.
	Initialize call_unexpected_node, protect_cleanup_actions,
	eh_personality_libfunc, lang_eh_runtime_type.
	(call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
	(get_eh_type, get_eh_caught, get_eh_handlers): Remove.
	(prepare_eh_type): Split out type canonicalizations ...
	(build_eh_type_type): ... from here.
	(build_eh_type_type_ref): Remove.
	(mark_all_runtime_matches): Remove.
	(build_exc_ptr): New.
	(do_begin_catch, do_end_catch): New.
	(do_pop_exception): Remove.
	(build_terminate_handler): Remove.
	(choose_personality_routine): Split out language choice from ...
	(initialize_handler_parm): ... here.
	(expand_start_catch_block): Use do_begin_catch.  Simplify Java
	exception object handling.
	(expand_start_eh_spec, expand_end_eh_spec): Remove.
	(expand_exception_blocks, alloc_eh_object): Remove.
	(begin_eh_spec_block, finish_eh_spec_block): New.
	(do_allocate_exception, do_free_exception): New.
	(expand_throw): Merge into ...
	(build_throw): ... here.  Update for abi.
	* expr.c (cplus_expand_expr): No expand_internal_throw.
	* pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
	* semantics.c (*) Update for except.h name changes.
	(genrtl_try_block): No protect_with_terminate.
	(genrtl_eh_spec_block): New.
	(genrtl_handler): Don't emit the goto here.
	(cp_expand_stmt): Handle EH_SPEC_BLOCK.
	(genrtl_finish_function): Don't expand_exception_blocks.
	* tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.

2001-03-28  Richard Henderson  <>

	* decl.c (struct named_label_list): Rename eh_region to
	in_try_scope, add in_catch_scope.
	(struct binding_level): Rename eh_region to is_try_scope,
	add is_catch_scope.
	(note_level_for_try): Rename from note_level_for_eh.
	(note_level_for_catch): New.
	(poplevel): Copy both is_try_scope and is_catch_scope to
	the named_label_list struct.
	(check_previous_goto_1): Don't check for catch block via
	DECL_ARTIFICIAL; use in_try_scope instead.
	(check_goto): Likewise.
	* cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
	* except.c (expand_start_catch_block): Call note_level_for_catch.
	* semantics.c (begin_compound_stmt): Update for note_level_for_try.

2001-03-27  Richard Henderson  <>

	* except.c: Use USING_SJLJ_EXCEPTIONS instead of

2001-03-27  Phil Edwards  <>

	* pt.c (check_default_tmpl_args):  Make error messages clearer.

2001-03-26  Phil Edwards  <>

	* error.c:  Also undefine 'A' macro used for cp_printers definition.

2001-03-27  Kaveh R. Ghazi  <>

	* Depend on $(SYSTEM_H), not system.h.

2001-03-26  Mike Yang <>
	    Mark Mitchell  <>

	* dump.c (dump_access): New function.
	(cp_dump_tree): Use it.  Dump basetype information for class

2001-03-26  Mark Mitchell  <>

	* (optimize.o): Depend on params.h.
	(duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
	(init_decl_processing): Set flag_no_inline when doing
	* optimize.c: Include params.h.
	(struct inline_data): Improve documentation of FNS.  Add
	(INSNS_PER_STMT): New macro.
	(remap_block): Use CLONING_P.
	(inlinable_function_p): Don't inline big functions.
	(expand_call_inline): Keep track of how much inlining we've done.
	(optimize_function): Set FIRST_INLINED_FN.
	(maybe_clone_body): Set CLONING_P.
	* semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
	tree nodes.
	(genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
	rest_of_compilation.  Clear DECL_RTL for local variables
	(clear_decl_rtl): New function.

2001-03-26  Nathan Sidwell  <>

	Implement DR 209
	* cp-tree.h (skip_type_access_control,
	reset_type_access_control): Prototype.
	* decl.c (grokdeclarator): Access of friends is not checked.
	* parse.y (component_decl_list): Reset type access control.
	* semantics.c (decl_type_access_control): Clear
	(save_type_access_control): Don't save if not deferring.
	(skip_type_access_control, reset_type_access_control): New
	(begin_class_definition): Do type access control for basetypes.
	Start deferred access control.
	(finish_class_definition): Resume immediate access control if
	this is a local class.

2001-03-25  Kaveh R. Ghazi  <>

	* class.c (add_method): Use memcpy/memmove, not bcopy.

	* decl.c (duplicate_decls): Likewise.

2001-03-23  Jakub Jelinek  <>

	* mangle.c (write_discriminator): Use `_0' for discriminator 1,
	not `_'.

2001-03-23  Jakub Jelinek  <>

	* decl.c (local_names): Define.
	(push_local_name): New.
	(grok_reference_init): Return init if initializing static reference
	variable with non-constant instead of emitting it.
	Move expand_static_init call to cp_finish_decl.
	(layout_var_decl): Call push_local_name.
	(maybe_commonize_var): Allow inlining functions even if they have
	static local variables, use comdat_linkage for them if flag_weak.
	(check_initializer): Call obscure_complex_init if
	grok_reference_init returned nonzero.
	(save_function_data): Clear x_local_names.
	(pop_cp_function_context): Free x_local_names.
	(mark_inlined_fns): Remove.
	(mark_lang_function): Mark x_local_names.
	(lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
	Mark inlined_fns as tree, remove call to mark_inlined_fns.
	* class.c (alter_access): Ensure DECL_ACCESS is never set if
	* cp-tree.h (cp_language_function): Add x_local_names.
	(lang_decl_flags): Add discriminator into u2.
	(lang_decl_inlined_fns): Remove.
	(lang_decl): inlined_fns is now a TREE_VEC.
	* optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
	TREE_VEC, not a custom structure.
	(optimize_function): Likewise.
	* mangle.c (discriminator_for_local_entity): Discriminate among
	VAR_DECL local entities.
	* search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
	is not valid.

2001-03-22  Bryce McKinlay  <>

	Add support for Java interface method calls.
	* cp-tree.h (struct lang_type): Add java_interface flag.
	* tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
	* call.c (java_iface_lookup_fn): New static.
	(build_over_call): If calling a method declared in a
	TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
	expression which resolves the function address.
	(build_java_interface_fn_ref): New function.

2001-03-22  Richard Henderson  <>

	* (cp/except.o): Don't depend on insn-flags.h.
	* except.c: Don't include it.

2001-03-22  Gerald Pfeifer  <>
	    based on an idea from Joe Buck <>

	* parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
	New nonterminals.
	(data_def, component_decl): Add reductions to bad_decl.

2001-03-22  Jakub Jelinek  <>

	* method.c (do_build_assign_ref): Don't use build_modify_expr for
	anonymous aggregates, since they don't have assignment operator
	* decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
	assignment operators for anonymous structure fields.

2001-03-21  Jason Merrill  <>

	* pt.c (instantiate_decl): Abort if we see a member constant
	instantiation that doesn't already have its initializer.
	Downgrade explicit instantiation without definition to pedwarn.

	* cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
	* class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
	(import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.

	(pending_vtables): Remove.
	* decl2.c (pending_vtables): Remove.
	(import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
	(import_export_class): Likewise.
	(init_decl2): Don't mark pending_vtables.
	* lex.c (handle_pragma_vtable): Just sorry.
	* pt.c (instantiate_class_template): Don't mess with
	(mark_class_instantiated): Likewise.
	* ptree.c (print_lang_type): Don't print it.
	* semantics.c (begin_class_definition): Don't set it.

	* pt.c (template_tail): Replace with last_pending_template.
	(maybe_templates, maybe_template_tail): Remove.
	(add_pending_template): Adjust.
	(instantiate_pending_templates): Adjust.

	* cp-tree.h (struct saved_scope): Remove lang_stack field.
	(current_lang_stack): Remove.
	* decl.c (maybe_push_to_top_level): Don't initialize it.
	(duplicate_decls): Use current_lang_depth.
	(xref_basetypes): Likewise.
	* class.c (current_lang_depth): New fn.
	(push_lang_context): Use more varray functionality.
	(pop_lang_context): Likewise.

	* error.c (GLOBAL_THING): Always use '__'.

2001-03-21  Mark Mitchell  <>

	* class.c (build_clone): Clear DECL_ASSEMBLER_NAME.

	* mangle.c (mangle_decl_string): Mangle the names of overloaded
	operators, even when they have `extern "C"' linkage.

2001-03-19  Mark Mitchell  <>

	* class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
	where it's not necessary.
	(add_method): Remove optimization involving comparison of
	(build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
	where it's not necessary.
	(check_methods): Likewise.
	(build_clone): Likewise.
	(built_vtt): Likewise.
	* cp-tree.h (DECL_NEEDED_P): Likewise.
	* decl.c (pushtag): Likewise.
	(duplicate_decls): Likewise.
	(pushdecl): Likewise.
	(builtin_function): Likewise.
	(build_library_fn_1): Set DECL_LANGUAGE for library functions.
	(build_cp_library_fn): Likewise.
	(maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
	where it's not necessary.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(grokfndecl): Likewise.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	(start_function): Likewise.
	(cp_missing_return_ok_p): Likewise.
	* decl2.c (grokclassfn): Likewise.
	(check_classfn): Likewise.
	(finish_static_data_member_decl): Likewise.
	(grokfield): Likewise.
	* error.c (GLOBAL_IORD_P): Remove.
	(dump_global_iord): Improve output.
	(dump_decl): Avoid using DECL_ASSEMBLER_NAME.
	* except.c (nothrow_libfn_p): Summarily reject any function not in
	* init.c (build_java_class_ref): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	* mangle.c (mangle_decl_string): Handle extern "C" functions.
	(mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
	* method.c (set_mangled_name_for_decl): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	(make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
	* pt.c (set_mangled_name_for_template_decl): Remove.
	(check_explicit_specialization): Don't use it.
	(looup_template_class): Don't set DECL_ASSEMBLER_NAME.
	(tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
	* rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
	where it's not necessary.
	(tinfo_base_init): Likewise.
	(create_real_tinfo_var): Likewise.
	* search.c (looup_field_1): Likewise.
	* semantics.c (finish_named_return_value): Likewise.
	* tree.c (init_tree): Set lang_set_decl_assembler_name.

2001-03-15  Gabriel Dos Reis  <>

	Correct semantics restrictions checking in throw-expression.
	* except.c (is_admissible_throw_operand): New function.
	(build_throw): Use it.

2001-03-14  Mark Mitchell  <>

	* decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
	and its ilk.

2001-03-14  Mark Mitchell  <>

	* class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* cp-tree.h (DECL_IN_MEMORY_P): Likewise.
	* decl.c (duplicate_decls): Likewise.
	(builtin_function): Likewise.
	(build_library_fn): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(cp_finish_decl): Likewise.
	* decl2.c (grokfield): Likewise.
	(grok_function_init): Remove #if 0'd code.
	(finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
	* friend.c (do_friend): Likewise.
	* init.c (get_temp_regvar): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Likewise.
	* semantics.c (genrtl_named_return_value): Likewise.
	(expand_body): Likewise.
	(genrtl_finish_function): Likewise.
	* tree.c (cp_tree_equal): Likewise.

2001-03-12  Nathan Sidwell  <>

	* call.c (convert_like_real): Add extra semantics to INNER
	parameter. Don't convert to temporary if a user conversion
	gives us an lvalue that we're about to bind to a reference.
	Set INNER to indicate pending reference binding on recursive

2001-03-10  Neil Booth  <>

	* cp/lex.c: Delete duplicate pending_lang_change.

2001-03-10  Neil Booth  <>

	* cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
	* cp/repo.c (get_base_filename, open_repo_file): Similarly.
	* cp/cp-tree.h: Remove file_name_nondirectory prototype.

2001-03-09  Zack Weinberg  <>

	* Add dependencies on $(TM_P_H) as appropriate.

2001-03-08  Stan Shebs  <>

	* cp-tree.h (set_identifier_local_value): Remove unused decl.

2001-03-06  Zack Weinberg  <>

	* spew.c: Remove references to CPP_OSTRING.

2001-03-06  Andrew Haley  <>

	* typeck.c (convert_arguments): Check that we have an fndecl.

2001-03-05  Andrew Haley  <>

	* typeck.c (convert_arguments): Don't do ellipsis conversion for

2001-03-02  Nathan Sidwell  <>

	* typeck.c (build_static_cast): Allow enum to enum conversions
	as per DR 128.

2001-03-02  Nathan Sidwell  <>

	* class.c (check_field_decls): Pointers to member do not a
	non-pod struct make, as per DR 148.

2001-03-02  Nathan Sidwell  <>

	* call.c (joust): cp_pedwarn when using gnu extension concerning
	worst conversion sequences.

2001-03-01  Zack Weinberg  <>

	* decl.c: Replace all uses of 'boolean' with 'bool'.

2001-03-01  Zack Weinberg  <>

	* lang-specs.h: Add zero initializer for cpp_spec field to
	all array elements that need one.  Don't put an #ifdef inside
	the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
	use it.

2001-03-01  Nathan Sidwell  <>

	Implement using decls inside template functions.
	* decl2.c (validate_nonmember_using_decl): Don't special case
	fake_std_node in the global namespace. Don't reject early when
	processing a template.
	(do_local_using_decl): Add to statement tree. Don't do further
	processing when building a template.
	* pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.

2001-03-01  Nathan Sidwell  <>

	* decl2.c (do_nonmember_using_decl): Don't complain if we find
	same function. Do complain about ambiguating extern "C"

2001-02-28  Nathan Sidwell  <>

	Remove floating point and complex type template constant parms.
	* pt.c (convert_nontype_argument): Remove REAL_TYPE and
	COMPLEX_TYPE extensions.
	(invalid_nontype_parm_type_p): Likewise.

2001-02-27  Jeffrey Oldham  <>

	* except.c (call_eh_info): Revert "match_function"'s type.

2001-02-27  Nathan Sidwell  <>

	Fix ctor vtable vcall offsets.
	* class.c (struct vtbl_init_data_s): Add rtti_binfo member.
	(build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
	(get_matching_base): Remove.
	(get_original_base): New function.
	(build_vtbl_initializer): Initialize vid.rtti_binfo.
	Use a virtual thunk for a ctor vtable with an index
	(add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
	primary base within a constructor vtable. Only set
	BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
	when primary base has been lost.
	* cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.

2001-02-26  Jeffrey Oldham  <>

	* call.c (joust): Ensure more_specialized()'s argument length
	parameter has correct value for constructors.

2001-02-26  Nathan Sidwell  <>

	* except.c (call_eh_info): Cleanup generation of cp_eh_info struct.

	* decl.c (mark_inlined_fns): Prototype.

2001-02-22  Mark Mitchell  <>

	* spew.c (yylex): Correct handling of friends.

2001-02-22  Mark Mitchell  <>

	* mangle.c (write_encoding): Pass write_function_type the
	FUNCTION_DECL for the function being encoded.
	(write_function_type): Pass it along to write_bare_function_type.
	(write_bare_function_type): Pass it along to write_method_parms.
	(write_method_parms): Don't mangle the compiler-generated
	parameters to a constructor or destructor.

2001-02-22  Andreas Jaeger  <>

	* optimize.c: Include toplev.h for
	note_deferral_of_defined_inline_function prototype.

2001-02-22  Jakub Jelinek  <>

	* cp-tree.h (struct lang_decl_inlined_fns): New.
	(struct lang_decls): Add inlined_fns.
	(DECL_INLINED_FNS): New macro.
	* optimize.c (struct inline_data): Add inlined_fns.
	(declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
	(inlinable_function_p): Likewise, fix typo in comment,
	function is not inlinable if it already inlined function currently
	being optimized.
	(expand_call_inline): Add fn to inlined_fns if necessary.
	(optimize_function): Initialize inlined_fns.
	Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
	* decl.c (mark_inlined_fns): New function.
	(lang_mark_tree): Call it.

2001-02-21  Jason Merrill  <>

	* cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
	(DECL_UNINLINABLE): Move to middle-end.

	* class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
	* decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
	* class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
	* optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
	parms and outer BLOCK.  note_deferral_of_defined_inline_function.

	* method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
	second parm of op=.

2001-02-19  Mark Mitchell  <>

	* decl2.c (set_decl_namespace): Allow explicit instantiations in
	any namespace.

2001-02-18  Kriang Lerdsuwanakij  <>

	* optimize.c (expand_call_inline): Don't walk subtrees of type

2001-02-18  Mark Mitchell  <>

	* class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
	for a destructor.

2001-02-18  Jason Merrill  <>

	Do put the VTT parameter in DECL_ARGUMENTS.
	* cp-tree.h (struct cp_language_function): Add x_vtt_parm.
	(current_vtt_parm): New macro.
	(struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
	(DECL_HAS_VTT_PARM_P): New macro.
	(DECL_VTT_PARM): Remove.
	* decl.c (duplicate_decls): Only copy the operator code if
	(start_function): Set current_vtt_parm.
	(lang_mark_tree): Don't mark vtt_parm.
	* decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
	* class.c (build_clone): Maybe remove the VTT parm.
	* optimize.c (maybe_clone_body): Set up the VTT parm.
	* pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
	* call.c (build_over_call): Just allow the VTT arg.
	* method.c (make_thunk): Don't set DECL_VTT_PARM.
	(do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
	(synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
	* decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
	* error.c (dump_function_decl): Likewise.
	* call.c (build_user_type_conversion_1,	convert_like_real): Abort
	if we try to call a constructor with in-charge or VTT parms.
	* method.c (skip_artificial_parms_for): New fn.
	* call.c (add_function_candidate, build_over_call): Call it.
	* call.c (build_new_method_call): Use current_vtt_parm.
	* init.c (expand_virtual_init): Likewise.
	* class.c (same_signature_p): No longer static.
	* cp-tree.h: Declare it.
	* search.c (look_for_overrides_r): Use it.

2001-02-17  Mark Mitchell  <>

	* cp-tree.h (new_abi_rtti_p): Remove.
	(name_mangling_version): Likewise.
	(flag_do_squangling): Likewise.
	* class.c (build_rtti_vtbl_entries): Remove old ABI support.
	* decl.c (grokfndecl): Likewise.
	* decl2.c (name_mangling_version): Remove.
	(flag_do_squangling): Likewise.
	(lang_f_options): Remove `squangle'.
	(unsupported_options): Add `squangle'.
	(cxx_decode_option): Issue a warning about uses of
	(finish_file): Remove old ABI support.
	* pt.c (check_explicit_specialization): Likewise.
	(tsubst_decl): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	(build_headof): Likewise.
	(get_tinfo_decl_dynamic): Likewise.
	(tinfo_from_decl): Likewise.
	(build_dynamic_cast_1): Likewise.
	(synthesize_tinfo_var): Likewise.
	* init.c (build_new): Allow enumeration types for the array-bounds
	in a direct-new-declarator.

	* semantics.c (finish_typeof): Resolve OFFSET_REFs.

	* pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
	TREE_PROTECTED from the template being specialized.

2001-02-17  Jason Merrill  <>

	* decl2.c (build_artificial_parm): Set TREE_READONLY.

	* decl.c (bad_specifiers): Allow throw specs on things with
	pointer-to-function or -member-function type.
	* init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
	a pmf.

2001-02-17  Mark Mitchell  <>

	* call.c (check_dtor_name): Handle template names correctly.

2001-02-16  Jason Merrill  <>

	* cp-tree.h (DECL_USE_VTT_PARM): Remove.
	* decl2.c (maybe_retrofit_in_chrg): Don't create it.
	* optimize.c (maybe_clone_body): Don't substitute it.
	* call.c (build_new_method_call): Check in_chrg instead.
	* init.c (expand_virtual_init): Likewise.

2001-02-16  Gabriel Dos Reis  <>

	* decl.c (check_tag_decl): Make sure a typedef for an anonymous
	class-type introduces at least a type-name.

2001-02-16  Jakub Jelinek  <>

	* call.c (convert_like_real): Create a temporary for non-lvalue.

2001-02-16  Jeffrey Oldham  <>

	* cp-tree.h: Fix typos in comments.

2001-02-16  Jason Merrill  <>

	* optimize.c (remap_block): If we're compiling a clone, pass the
	new block to insert_block.

2001-02-16  Mark Mitchell  <>

	* semantics.c (finish_asm_stmt): Robustify.

2001-02-15  Mark Mitchell  <>

	* pt.c (push_template_decl_real): Don't remangle the name of a
	class template.

2001-02-15  Jim Meyering  <>

	* (c++.install-common): Depend on installdirs.
	(c++.install-info): Likewise.
	(c++.install-man): Likewise.

2001-02-15  Mark Mitchell  <>

	* typeck2.c (build_m_component_ref): Robustify.

2001-02-15  Alexandre Oliva  <>

	* friend.c (do_friend): Don't take the nested [template] class
	into account when deciding whether to warn about the friend
	function not referring to a template function.

2001-02-14  Jakub Jelinek  <>

	* typeck.c (build_unary_op): Clarify error message.

2001-02-08  Aldy Hernandez  <>

	* parse.y (component_constructor_declarator): allow optional
	parentheses around constructor class name.

2001-02-14  Nathan Sidwell  <>

	* cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
	* init.c (emit_base_init): Remove incorrect comment about
	virtual bases.
	* method.c (make_thunk): Fix comment alignment.

2001-02-14  Nathan Sidwell  <>

	Kill remnants of this is variable.
	* cp-tree.h (flag_this_is_variable): Remove.
	* decl2.c (flag_this_is_variable): Remove.
	* class.c (fixed_type_or_null): Add cdtor parm. Adjust.
	(build_vbase_path): The path is non-static, even in a cdtor.
	(resolves_to_fixed_type_p): Add additional return value.
	* search.c (init_vbase_pointers): Adjust.
	* tree.c (lvalue_p_1): Adjust.
	* typeck.c (mark_addressable): Adjust.

2001-02-14  Nathan Sidwell  <>

	* pt.c (unify): Don't check cv quals of array types.

2001-02-14  Nathan Sidwell  <>

	* tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
	check whether we already have the type.

2001-02-13  Mark Mitchell  <>

	* cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
	* call.c (build_op_delete_call): Simplify to remove duplicate
	* class.c (clone_function_decl): Don't build the deleting variant
	of a non-virtual destructor.
	* decl.c (finish_destructor_body): Don't call delete if this is a
	non-virtual destructor.
	* init.c (build_delete): Explicitly call `operator delete' when
	deleting an object with a non-virtual destructor.

2001-02-13  Jason Merrill  <>

	* lang-specs.h: Add more __EXCEPTIONS.

2001-02-12  Nathan Sidwell  <>

	* typeck2.c (process_init_constructor): Check
	TREE_HAS_CONSTRUCTOR before issuing missing init warning.

2001-02-12  Nathan Sidwell  <>

	* pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
	Remove spurious information in comment. Allow further
	adjustments of REFERENCE_TYPE args.

2001-02-12  Nathan Sidwell  <>

	* errfn.c (cp_deprecated): Tweak diagnostic text.
	* parse.y (new_initializer): Deprecate initializer lists

2001-02-12  Mark Mitchell  <>

	Remove old ABI support.

2001-02-11  Mark Mitchell  <>

	* decl2.c (flag_vtable_thunks): Always set it to 1.
	(flag_new_abi): Likewise.
	* lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.

	* (g++spec.o): Fix typo.

2001-02-09  Jason Merrill  <>

	* lang-specs.h: Restore definition of __EXCEPTIONS.

2001-02-08  Jason Merrill  <>

	* search.c (shared_member_p): New function.
	(lookup_field_r): Use it.
	* cp-tree.h (SHARED_MEMBER_P): Remove.

	* method.c (process_overload_item): Handle template-dependent array
	* pt.c (type_unification_real): If we end up with undeduced nontype
	parms, try again.

	* decl.c (lookup_name_real): Tweak warning to refer to decls, not

	* typeck2.c (friendly_abort): Don't say anything if we have
	earlier errors or sorries.

	* decl.c (check_tag_decl): Notice attempts to redefine bool and
	wchar_t.  Ignore if in_system_header.

	* decl.c (maybe_push_cleanup_level): New fn...
	(start_decl_1): ...split out from here.
	* cvt.c (build_up_reference): Use it.
	* cp-tree.h: Declare it.

2001-02-07  Mark Mitchell  <>

	* lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor

2001-02-06  Nathan Sidwell  <>

	* pt.c (lookup_template_class): Make sure it's a primary
	template or template_template_parm when called from the parser.
	(instantiate_template_class): Add assertion.

2001-02-05  Alexandre Oliva  <>

	* method.c (build_mangled_name) [old abi]: Protect flush_repeats()
	from error_mark_node.

2001-02-05  Nathan Sidwell  <>

	Fix specification and implementation bugs in V3 ABI
	construction vtables.
	* cp-tree.h (flag_dump_class_layout): New flag.
	(BINFO_PRIMARY_MARKED_P): Rename to ...
	(BINFO_PRIMARY_P): ... here.
	(binfo_via_virtual): New prototype.
	* decl2.c (flag_dump_class_layout): New flag.
	(cxx_decode_option): Set it. Adjust -fdump-translation-unit to
	use `=' as a file name separator.
	* init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
	(build_vtbl_address): If this is a virtual primary base, then
	get the vtbl of what it is ultimately primary for.
	* search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
	(dfs_skip_nonprimary_vbases_markedp): Likewise.
	(get_shared_vbase_if_not_primary): Likewise.
	(dfs_get_pure_virtuals): Likewise.
	(expand_upcast_fixups): Likewise.
	(fixup_virtual_upcast_offsets): Likewise.
	(dfs_find_vbase_instance): Likewise.
	(find_vbase_instance): Likewise.
	(binfo_from_vbase): Adjust comment to reflect reality.
	(binfo_via_virtual): New function.
	* class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
	for binfo walking during VTT construction.
	(dfs_mark_primary_bases): Remove.
	(force_canonical_binfo_r): New function.
	(force_canonical_binfo): New function.
	(mark_primary_virtual_base): New function.
	(mark_primary_bases): Walk in inheritance graph order, use
	(determine_primary_base): Use some more intermediate variables.
	(dfs_find_final_overrider): Don't check for overriding along a
	virtual path.
	(dfs_modify_vtables): Walk into primary virtual bases too.
	(walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
	(build_base_fields): Likewise.
	(dfs_set_offset_for_unshared_vbases): Likewise.
	(layout_virtual_bases): Likewise.
	(end_of_class): Likewise.
	(finish_struct_1): Call dump_class_hierarchy, if requested.
	(dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
	(dump_class_hierarchy_r): Add stream parameter. Emit more information.
	(dump_class_hierarchy): Add file parameter. Append to file, if
	(finish_vtbls): Adjust accumulate_vtbl_inits call.
	Use canonical base for virtual bases.
	(build_vtt): Add more comments. Adjust build_vtt_inits call.
	(build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
	Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
	VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
	virtual VTTs.
	(dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
	from DATA.  We want virtual primary bases and all bases via virtual.
	Only set BINFO_VPTR_INDEX for top level. Look up from a primary
	virtual base when not a construction vtable.
	(dfs_ctor_vtable_bases_queue_p): New DFS predicate.
	(build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
	Use canonical bases when processing virtual bases.
	(accumulate_vtbl_inits): We're interested in any base via a
	virtual path.
	(dfs_accumulate_vtbl_inits): If this is a primary virtual base
	within a construction vtable, determine what is being overridden.
	(build_vtbl_initializer): Add more comments
	(add_vcall_offset_vtbl_entries_1): Adjust comment.
	(build_rtti_vtbl_entries): Check if the base has lost its

2001-02-05  Mark Mitchell  <>

	* (g++spec.o): Adjust use of DRIVER_DEFINES.

2001-02-04  Richard Kenner  <>

	* decl.c (pushdecl): Call abort instead of fatal.
	* except.c (decl_is_java_type): Call fatal_error instead of fatal.
	* init.c (build_new_1): Likewise.
	(build_java_class_ref): Call internal_error and fatal_error, not fatal.
	* decl.c (build_typename_type): hash_table_init now returns void.
	decl.c (init_decl_processing): Make an error non-fatal.

2001-02-04  Mark Mitchell  <>

	* cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
	* decl.c (maybe_commonize_var): Use the new name-mangling where
	* decl2.c (comdat_linkage): Enhance comments.  Make all
	compiler-generated things static, if COMDAT is not available.
	(get_tinfo_decl): Do not make typeinfo objects that belong in the
	library COMDAT.
	(tinfo_base_init): Use the correct mangled name for typeinfo
	strings, and push them into the global scope.
	(typeinfo_in_lib_p): New function.
	(synthesize_tinfo_var): Use it.
	(create_real_tinfo_var): Likewise.

2001-02-03  Jakub Jelinek  <>

	* decl.c (push_class_binding): Use context_for_name_lookup instead
	* search.c (context_for_name_lookup): Remove static.  Check for NULL
	context in the loop.
	* cp-tree.h (context_for_name_lookup): Add prototype.

2001-02-02  Jakub Jelinek  <>

	* cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
	* tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
	* call.c (convert_class_to_reference, build_user_type_conversion_1,
	add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.

2001-02-02  Mark Mitchell  <>

	* (g++spec.o): Add DRIVER_DEFINES to the list
	of macros used when compiling g++spec.c.
	* g++spec.c (lang_specific_driver): Link with the shared
	libgcc by default.

2001-01-29  Joseph S. Myers  <>

	* decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
	make_reference_declarator, make_call_declarator), method.c
	(implicitly_declare_fn), parse.y (namespace_using_decl,
	notype_unqualified_id, expr_or_declarator, new_type_id,
	after_type_declarator, direct_after_type_declarator,
	notype_declarator, complex_notype_declarator,
	complex_direct_notype_declarator, qualified_id,
	notype_qualified_id, overqualified_id, direct_new_declarator,
	absdcl, direct_abstract_declarator, conversion_declarator), pt.c
	(tsubst), semantics.c (begin_constructor_declarator): Use build_nt
	instead of build_parse_node.

2001-01-28  Kaveh R. Ghazi  <>

	* cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
	(minus_one_node): Moved to top level gcc directory.  Renamed
	to integer_minus_one_node.

	* init.c (init_init_processing): Don't set minus_one_node.
	(build_vec_init): Use integer_minus_one_node.

	* rtti.c (get_tinfo_decl_dynamic): Likewise.

2001-01-28  Jakub Jelinek  <>

	* optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
	identical and they would be replaced with constant, remove
	MODIFY_EXPR from the tree.

2001-01-27  Kaveh R. Ghazi  <>

	* Remove all dependencies on defaults.h.
	* call.c: Don't include defaults.h.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

2001-01-25  Jakub Jelinek  <>

	* mangle.c (write_mangled_name, write_encoding): Mangle overloaded
	operators even in "C" linkage.
	* method.c (set_mangled_name_for_decl): Likewise.
	* decl.c (grokfndecl): Call set_mangled_name_for_decl even for
	overloaded operators in "C" linkage.

2001-01-24  Nathan Sidwell  <>

	* pt.c (tsubst_decl): Remove IN_DECL parameter.
	(tsubst_arg_types): Check parameter is not void.
	(tsubst): Adjust tsubst_decl call.

2001-01-24  Nathan Sidwell  <>

	* call.c (add_builtin_candidate): Quote std properly, from
	previous change.

2001-01-23  Kriang Lerdsuwanakij  <>

	* pt.c (check_explicit_specialization): Clone constructors and

2001-01-23  Nathan Sidwell  <>

	* decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
	indicates anything special about template depth. Make sure we
	only count the user visible template classes.

2001-01-23  Nathan Sidwell  <>

	* call.c (build_conv): Typo in comment.
	(add_builtin_candidate): Add more explanation.
	Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
	when we have enumeral types.
	(add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
	candidates for relops and eqops.
	(joust): Simplify control flow. Allow a non-template user
	function to hide a builtin.

2001-01-22  Nathan Sidwell  <>

	* cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
	(more_specialized): Add deduction parameter.
	* call.c (joust): Adjust more_specialized call.
	(get_bindings_order): Remove.
	(get_bindings_real): Add DEDUCE parameter.
	(maybe_adjust_types_for_deduction): Return extra unify flags. Do
	(type_unification_real): Deal with DEDUCE_ORDER. Use result of
	(more_specialized): Add DEDUCE parameter. Call get_bindings_real
	(try_one_overload): Use result of maybe_adjust_types_for_deduction.
	(check_cv_quals_for_unify): Use new unify qualifier flags.
	(unify): Clear new unify qualifier flags.
	(get_bindings_real): Add DEDUCE parameter.
	(get_bindings): Adjust call to get_bindings_real.
	(get_bindings_overload): Likewise.
	(most_specialized_instantiation): Adjust call to

2001-01-19  Jason Merrill  <>

	* decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.

	* decl.c (init_decl_processing): Just force -fvtable-thunks on if

2001-01-19  Ute Pelkmann  <>

	* decl2.c (arg_assoc_class): Fix double iteration logic.

2001-01-19  Jason Merrill  <>

	* init.c (build_delete): Always call convert_force to strip cv-quals.

	* decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
	* lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
	* g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.

2001-01-19  Nathan Sidwell  <>

	* search.c (get_vbase_1): Count only virtual bases.

2001-01-19  Nathan Sidwell  <>

	* class.c (duplicate_tag_error): Robustify flag clearing.

2001-01-19  Nathan Sidwell  <>

	* cp-tree.h (lookup_template_class): Add complain parm.
	* decl.c (lookup_namespace_name): Adjust call to
	(make_typename_type): Likewise.
	* semantics.c (finish_template_type): Likewise.
	* pt.c (lookup_template_class): Add complain parm. Adjust.
	(tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
	(tsubst): Likewise.

2001-01-19  Nathan Sidwell  <>

	* pt.c (copy_default_args_to_explicit_spec): Preserve
	object's CV quals. Reorganize.

2001-01-18  Nathan Sidwell  <>

	* typeck.c (build_modify_expr): Say `initialization' for
	* init.c (build_default_init): Convert to enumeral type, if

2001-01-18  Jakub Jelinek  <>

	* parse.y (nomods_initdcl0): Properly set things up for

2001-01-18  Nathan Sidwell  <>

	* pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
	(type_unification_real): Set it.
	(unify): Use it.

2001-01-18  Nathan Sidwell  <>

	* decl.c (finish_destructor_body): Convert to vbase pointer here.

2001-01-18  Nathan Sidwell  <>

	* semantics.c (begin_class_definition): Check we're not inside a
	template parm list.

2001-01-18  Nathan Sidwell  <>

	* tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of

2001-01-16  Kriang Lerdsuwanakij  <>

	* typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
	* call.c (build_over_call): Add comment.

2001-01-16 Daniel Berlin <>

	* cvt.c (ocp_convert): Handle vector type conversion
	* typeck2.c (digest_init): Handle vector type initializations

2001-01-16  Phil Edwards  <>

	* g++spec.c:  Don't add libraries needlessly if -fsyntax-only
	  was given.

2001-01-15  Nathan Sidwell  <>

	* pt.c (check_nontype_parm): Rename to ...
	(invalid_nontype_parm_type_p): ... here.
	(process_template_parm): Adjust.
	(convert_template_argument): Adjust.

2001-01-15  Nathan Sidwell  <>

	* pt.c (check_nontype_parm): New function.
	(process_template_parm): Use it.
	(convert_template_argument): Use it.
	(convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to

2001-01-14  Jeffrey Oldham  <>

	* tree.c: Add defaults.h
	(cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
	* (cp/tree.o): Add defaults.h.

2001-01-13  Joseph S. Myers  <>

	* (CXX_C_OBJS): Add c-format.o.

2001-01-13  Joseph S. Myers  <>

	* g++.1: Change to be ".so man1/gcc.1".

2001-01-13  Joseph S. Myers  <>

	* (, c++.install-info): Build and install g++
	internals info.
	(c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
	($(srcdir)/cp/ New target.
	* gxxint.texi: Add info directory entry.  Use @@ in email address.
	* .cvsignore: Update.

2001-01-12  Nathan Sidwell  <>

	* typeck.c (build_c_cast): Do template processing earlier.
	Always pedwarn on array casts.

2001-01-12  Nathan Sidwell  <>

	* friend.c (make_friend_class): Make sure a templated class is
	actually a template.

2001-01-11  Nathan Sidwell  <>

	* decl2.c (get_guard): Set linkage from guarded decl.

2001-01-11  Nathan Sidwell  <>

	* call.c (convert_default_arg): Check for unprocessed
	* cp-tree.h (replace_defarg): Move to spew.c.
	(maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
	spew.c, which is where they really are.
	(done_pending_defargs): Declare.
	(unprocessed_defarg_fn): Declare.
	* decl.c (replace_defarg): Move to spew.c
	* parse.y (structsp): Call done_pending_defargs.
	* spew.c (defarg_fns): Rearrange list structure.
	(defarg_fnsdone): New static variable.
	(defarg_depfns): New static variable.
	(init_spew): Adjust.
	(add_defarg_fn): Store the type in TREE_TYPE.
	(do_pending_defargs): Detect and deal with ordering constraints
	and circularity.
	(done_pending_defargs): New function.
	(unprocessed_defarg_fn): New function.
	(replace_defarg): Moved from decl.c. Robustify. Don't save
	if circularity detected.

2001-01-11  Nathan Sidwell  <>

	* pt.c (unify): Check array has a domain, before checking
	whether it is variable sized.

2001-01-11  Nathan Sidwell  <>

	* decl.c (grokparms): Unobfuscate and get correct diagnostic for
	parameters with pointers to arrays of unknown bound.

2001-01-11  Nathan Sidwell  <>

	* parse.y (template_parm_header, template_spec_header): New
	reductions. Split out from ...
	(template_header): ... here. Use them.
	(template_template_parm): Use template_parm_header.
	* semantics.c (finish_template_template_parm): Add assert.

2001-01-10  Mark Mitchell  <>

	* mangle.c (write_builtin_type): Fix thinko.

	* pt.c (copy_default_args_to_explicit_spec_1): New function.
	(copy_default_args_to_explicit_spec): Likewise.
	(check_explicit_specialization): Use it.

	* class.c (finish_struct_1):  Remove last argument in call to
	make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
	* decl.c (builtin_function): Likewise.
	(build_cp_library_fn): Likewise.
	(check_initializer): Likewise.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(start_function): Likewise.
	* decl2.c (finish_anon_union): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_java_class_ref): Likewise.
	* method.c (make_thunk): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	* semantics.c (expand_body): Likewise.

2001-01-10  Mark Mitchell  <>

	* cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
	looking at DECL_CLONED_FUNCTION for non-functions.

2001-01-10  Nathan Sidwell  <>

	* error.c (dump_template_parameter): Use parm to determine how
	to print default value.

2001-01-10  Nathan Sidwell  <>

	* class.c (duplicate_tag_error): Clear more flags.

2001-01-10  Nathan Sidwell  <>

	* call.c (build_new_method_call): Use binfo_for_vbase.

2001-01-10  Joseph S. Myers  <>

	* cp-tree.h (flag_cond_mismatch): Don't declare.
	* decl2.c (flag_cond_mismatch): Don't define.
	(lang_f_options): Remove cond-mismatch.
	(unsupported_options): Add cond-mismatch.

2001-01-09  Nathan Sidwell  <>

	* class.c (handle_using_decl): Reject using of constructor name
	of sourcing class. Allow injecting of a method with same name as
	nested class. Fixup error messages.

2001-01-09  Joseph S. Myers  <>

	* decl2.c (lang_decode_option): Handle -Wformat=2.

2001-01-08  Nathan Sidwell  <>

	* cp-tree.h (lang_decl_flags): Rename defined_in_class to
	(DECL_DEFINED_IN_CLASS_P): Rename to ...
	(DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
	* decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
	(cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
	* pt.c (check_default_tmpl_args): Adjust for
	(instantiate_class_template): Likewise.
	(instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.

	* class.c (finish_struct): Constify saved_filename.

2001-01-08  Nathan Sidwell  <>

	* class.c (duplicate_tag_error): Adjust diagnostic.
	(finish_struct): Locally set location to start of struct.
	* decl.c (fixup_anonymous_aggr): Use cp_error_at.

2001-01-08  Nathan Sidwell  <>

	* decl.c (struct binding_level): Adjust class_shadowed comments
	to reflect reality.
	(push_class_level_binding): Adjust comments to reflect reality.
	Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
	Don't set TREE_VALUE on the class_shadowed list.

2001-01-07  Alexandre Petit-Bianco  <>

	* decl2.c (acceptable_java_type): Allow references too.
	* init.c (build_java_class_ref): When using the new ABI, search
	`class$' and have it mangled with `mangle_decl.'
	* mangle.c (write_java_integer_type_codes): New function.
	(write_builtin_type): Detect and mangle Java integer and real

2001-01-07  Mark Mitchell  <>

	* decl2.c (grokfield): Don't accept `asm' specifiers for
	non-static data members.

2001-01-07  Kaveh R. Ghazi  <>

	* expr.c (cplus_expand_expr): Don't reset `target'.

2001-01-07  Neil Booth  <>

	* cp/decl2.c (cxx_post_options): Call cpp_post_options.

2001-01-05  Nathan Sidwell  <>

	* parse.y (template_datadef): Check for error_mark_node.

2001-01-05  Nathan Sidwell  <>

	* cp-tree.def (DEFAULT_ARG): Make `x' class.

2001-01-04  Joseph S. Myers  <>

	* decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
	(record_builtin_type): Make non-static.
	(flag_short_double): Don't declare.
	(init_decl_processing): Remove the creation of many tree nodes now
	in c_common_nodes_and_builtins.
	(build_void_list_node): New function.
	* decl2.c (flag_short_double, flag_short_wchar): Don't define.
	* cp-tree.h (flag_short_wchar): Don't declare.

2001-01-04  Mark Mitchell  <>

	* call.c (build_conv): Don't use build1 for USER_CONV.
	* pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.

2001-01-03  Joseph S. Myers  <>

	* lex.c (lang_init): Call c_common_lang_init.

2001-01-03  Nathan Sidwell  <>

	* search.c (lookup_fnfields_here): Remove.
	(look_for_overrides_r): Use lookup_fnfields_1.
	Ignore functions from using declarations.

2001-01-03  Nathan Sidwell  <>

	Implement exceptions specifiers for implicit member functions.
	* cp-tree.h (merge_exceptions_specifiers): Declare new function.
	* method.c (synthesize_exception_spec): New function.
	(locate_dtor, locate_ctor, locate_copy): New functions.
	(implicitly_declare_fn): Generate the exception spec too.
	* search.c (check_final_overrider): Check artificial functions
	* typeck2.c (merge_exception_specifiers): New function.

2001-01-03  Jason Merrill  <>

	* init.c (build_default_init): New fn.
	(perform_member_init): Split out from here.
	(build_new_1): Use it.  Simplify initialization logic.
	(build_vec_init): Take an array, rather than a pointer and maxindex.
	Speed up simple initializations.  Don't clean up if we're assigning.
	* cp-tree.h: Adjust.
	* decl2.c (do_static_initialization): Remove TREE_VEC case.
	* parse.y (new_initializer): Return void_zero_node for ().
	* typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
	* typeck2.c (digest_init): Only complain about user-written

2000-12-22  Mike Stump  <>

	* decl2.c: (max_tinst_depth): Increase to 50.

2001-01-02  Mark Mitchell  <>

	* class.c (invalidate_class_lookup_cache): Zero the
	* cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
	* decl.c (free_bindings): New variable.
	(push_binding): Don't create a new binding if we have one on the
	free list.
	(pop_binding): Put old bindings on the free list.
	(init_decl_processing): Use size_int, not build_int_2.
	Register free_bindings as a GC root.
	(cp_make_fname_decl): Use size_int, not build_int_2.
	(push_inline_template_parms_recursive): Likewise.
	(end_template_parm_list): Likewise.
	(for_each_template_parm): Do not use walk_tree_without_duplicates.
	(tsubst_template_parms): Use size_int, not build_int_2.
	(tsubst): Likewise.
	* rtti.c (get_vmi_pseudo_type_info): Likewise.

2001-01-02  Richard Henderson  <>

	* parse.y (asm): Set ASM_INPUT_P.

2001-01-02  Jason Merrill  <>

	* tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
	for v3 ABI.

	* typeck.c (cp_truthvalue_conversion): New fn.
	* cvt.c (ocp_convert): Use it.

	* cp-tree.h: Lose c-common.c decls.

	* typeck.c (build_unary_op): Restore old &a.f diagnostic code.
	* cvt.c (convert_to_void): Use type_unknown_p.

	* typeck.c (strip_all_pointer_quals): Also strip quals from
	pointer-to-member types.

	* (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
	parse.y as C.

	* call.c (build_new_method_call): Do evaluate the object parameter
	when accessing a static member.
	* typeck.c (build_component_ref): Likewise.

2001-01-02  Andreas Jaeger  <>

	* decl.c (cp_missing_noreturn_ok_p): New.
	(init_decl_processing): Set lang_missing_noreturn_ok_p.

Copyright (C) 2001 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.