2004-12-31  Richard Henderson  <rth@redhat.com>

	PR middle-end/17799
	* call.c (make_temporary_var_for_ref_to_temp): Set DECL_IGNORED_P.
	* class.c (build_vtable): Don't conditionallize setting it
	based on DWARF2_DEBUG.
	(layout_class_type): Set DECL_IGNORED_P.
	* decl2.c (get_guard): Likewise.
	* rtti.c (get_tinfo_decl, build_lang_decl): Likewise.
	* tree.c (build_local_temp): Likewise.

2004-12-30  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (cp_declarator): Split "name" field into
	qualifying_scope and unqualified_name.
	* decl.c (get_scope_of_declarator): Adjust accordingly.
	(grokdeclarator): Likewise.
	* decl2.c (grokfield): Likewise, and adjust call to
	do_class_using_decl.
	* name-lookup.c (do_class_using_decl): Split "decl" into
	"scope" and "name".  Remove unnecessary code.
	* name-lookup.h (do_class_using_decl): Adjust declaration.
	* parser.c (make_id_declarator): Split "id" into qualifying_scope
	and unqualified_name.
	(cp_parser_using_declaration): Adjust call to do_class_using_decl.
	(cp_parser_direct_declarator): Adjust to handle the fact that
	cp_parser_declarator_id no longer returns a SCOPE_REF.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_declarator_id): Do not create a SCOPE_REF for qualified
	names.
	(cp_parser_member_declaration): Adjust call to make_id_declarator.
	(cp_parser_check_declarator_template_parameters): Do not expect a
	SCOPE_REF.

	* decl.c (duplicate_decls): Call ggc_free on declarations we will
	not be needing any longer.

	PR c++/19190
	* cvt.c (convert_to_void): Do not use STRIP_NOPs.

2004-12-28  Richard Henderson  <rth@redhat.com>

	PR inline-asm/15740
	* semantics.c (finish_asm_stmt): Resolve asm names.  Validate input
	constraints.  Mark memory inputs addressable.

2004-12-27  Jason Merrill  <jason@redhat.com>

	* decl.c (expand_static_init): Don't use shortcut if
	targetm.relaxed_ordering.

2004-12-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/19149
	* decl.c (check_tag_decl): Robustify.

2004-12-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17595
	* parser.c (cp_parser_error): Issue better messages about
	#pragma in locations where it is not permitted.

	PR c++/17413
	* pt.c (check_instantiated_args): Remove bogus SFINAE code.

	* cvt.c (convert_to_void): Fix typo in comment.

2004-12-23  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/18962
	* pt.c (check_explicit_specialization): Use the argument list from
	the definition in a template function specialization definition.

2004-12-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/18733
	* pt.c (check_explicit_specialization): Use special logic to validate
	befriended specializations.

2004-12-22  Mark Mitchell  <mark@codesourcery.com>

	* rtti.c (emit_support_tinfos): Avoid using C99 semantics.

	PR c++/18464
	* call.c (build_this): In templates, do not bother with
	build_unary_op.
	* typeck.c (unary_complex_lvalue): In a template, always refuse
	simplifications.

	PR c++/18492
	* cp-gimplify.c (cp_genericize): Relax assertion.

	PR c++/11224
	* cvt.c (convert_to_void): Warn about unused values.

	PR c++/18257
	* rtti.c (emit_support_tinfos): On systems without weak symbols,
	emit the runtime library type-info objects as non-COMDAT.

2004-12-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18378
	* call.c (convert_like_real): Do not permit the use of a copy
	constructor to copy a packed field.

	PR c++/19063
	* decl.c (grokdeclarator): Return error_mark_node, not
	void_type_node, to indicate errors.
	* parser.c (cp_parser_template_parameter_list): Robustify.
	(cp_parser_template_parameter): Likewise.

	PR c++/19034
	* tree.c (cp_tree_equal): Handle OVERLOAD.

2004-12-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* decl.c (define_label): Use POP_TIMEVAR_AND_RETURN.
	* name-lookup.c (pushdecl_class_level): Likewise.

2004-12-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* name-lookup.c (pushtag): Add missing POP_TIMEVAR_AND_RETURN.

2004-12-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/18984
	* cp-gimplify.c (cp_genericize_r): Don't insert first but instead
	check to see if contains the pointer.  Insert the statement before
	returning.

2004-12-21  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/14075
	* decl.c (check_initializer): Check string initializer of array is
	not parenthesized.
	* cp-tree.h (PAREN_STRING_LITERAL_P): New.
	* semantics.c (finish_parenthesized_expr): Mark a STRING_CST.
	* error.c (dump_expr): <STRING_CST case> Add parens, if needed.

	* cp-tree.def (TEMPLATE_TYPE_PARM,
	BOUND_TEMPLATE_TEMPLATE_PARM, TYPE_OF_TYPE, TYPENAME_TYPE): Reorder
	for better code efficiency.
	* cp-tree.h (CLASS_TYPE_P): Short circuit IS_AGGR_TYPE check.
	(CAN_HAVE_FULL_LANG_DECL_P): Reorder for better optimization.
	(INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P,
	INTEGRAL_OR_ENUMERATION_TYPE_P, SCALAR_TYPE_P,
	CP_AGGREGATE_TYPE_P, TYPE_PTROB_P, TYPE_REF_OBJ_P,
	TYPE_PTROBV_P): Likewise.

	PR c++/18975
	* method.c (do_build_copy_constructor): Refactor. Don't const
	qualify a mutable field.
	(do_build_assign_ref): Likewise.

2004-12-20  Matt Austern <austern@apple.com>

	PR c++/19044
	* decl.c (make_rtl_for_nonlocal_decl): Use
	set_builtin_user_assembler_name.

2004-12-19  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (note_decl_for_pch): New function.
	* class.c (build_clone): Call note_decl_for_pch.
	* semantics.c (finish_member_declaration): Likewise.
	(note_decl_for_pch): New function.

2004-12-17  Steven Bosscher  <stevenb@suse.de>

	* init.c (build_zero_init): max_index is the number of
	elements, minus 1.

2004-12-17  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18721
	* class.c (add_method): Do not push conversion operators into a
	binding level.

	* cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE_TYPE): Reformat.
	* error.c (dump_decl): <TYPE_DECL case> Remove extraneous braces.

2004-12-16  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18905
	* cp-tree.h (integral_constant_value): Declare.
	* call.c (null_ptr_cst_p): Use integral_constant_value, not
	decl_constant_value.
	(convert_like_real): Likewise.
	* class.c (check_bitfield_decl): Likewise.
	* cvt.c (ocp_convert): Likewise.
	(convert): Remove unnecessary decl_constant_value call.
	* decl.c (compute_array_index_type): Use integral_constant_value,
	not decl_constant_value.
	(build_enumerator): Likewise.
	* decl2.c (grokfield): Likewise.
	* init.c (decl_constant_value): Simplify.
	(integral_constant_value): New.
	* pt.c (fold_decl_constant_value): Use integral_constant_value,
	remove subsequent check.
	(tsubst): Use integral_constant_value, not decl_constant_value.
	(tsubst_copy, unify): Likewise.
	* typeck.c (decay_conversion): Likewise.
	(build_compound_expr): Remove unnecessary decl_constant_value
	calls.
	(build_static_cast_1, build_reinterpret_cast_1):
	(convert_for_assignment): Remove comment about not calling
	decl_constant_value.

2004-12-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/18825
	* pt.c (instantiate_class_template): Set input_location for
	friend function.
	(tsubst_friend_function): Don't set input_location here.
	Make sure the context is complete if necessary.

2004-12-15  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18981
	* parser.c (cp_parser_lookup_name): Remove unneeded TYPENAME_TYPE
	flag setting.

2004-12-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18738
	* decl.c (make_typename_type): Do not handle namespace-scoped
	names here.
	(tag_name): Handle typename_type.
	(check_elaborated_type_specifier): Handle typenames.
	* parser.c (cp_parser_diagnose_invalid_type_name): Improve
	comment.
	(cp_parser_elaborated_type_specifier): Use
	cp_parser_diagnose_invalid_type_name.

2004-12-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/18965
	* init.c (build_zero_init): If the max_index is 0, there is no
	need to create a RANGE_EXPR.

2004-12-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18793
	* cp-objcp-common.c (cp_expr_size): Loosen assertion.

2004-12-14  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18949
	* pt.c (tsubst_copy_and_build): <INDIRECT_REF case> Check that a
	REFERENCE_REF_P is dereferencing a reference type.
	* typeck.c (build_static_cast): Convert from reference even in a
	template.
	(build_reinterpret_cast, build_const_cast, build_c_cast): Likewise.

2004-12-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* parser.c (cp_parser_uncommitted_to_tentative_parse_p): New function.
	(cp_parser_name_lookup_error): Use it.
	(cp_parser_check_for_invalid_template_id): Likewise.
	(cp_parser_skip_to_closing_parenthesis): Likewise.
	(cp_parser_nested_name_specifier_opt): Likewise.
	(cp_parser_simple_declaration, cp_parser_template_id): Likewise.
	(cp_parser_parameter_declaration_list): Likewise.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_template_name): Let cp_parser_simulate_error perform
	the checking.
	(cp_parser_committed_to_tentative_parse): Remove.

2004-12-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/18968
	* class.c (build_base_path): Convert the zero constant to the correct
	type when comparing.

2004-12-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18925
	* class.c (layout_class_type): Determine the visibility of static
	data members.

2004-12-12  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/12454
	* cp-gimplify.c (gimplify_if_stmt): Optimize the case where the
	condition is a constant and the unexecuted clause is empty.

2004-12-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/18731
	* parser.c (cp_parser_class_head): Reject typedef-name in class head.

2004-12-09  Matt Austern  <austern@apple.com>

	PR c++/18514
	* name-lookup.c (do_nonmember_using_decl): A real function
	declaration takes precedence over an anticipated declaration.

2004-12-09  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* parser.c (cp_parser_member_declaration): Fix comment typo.

2004-12-09  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/18757
	* parser.c (cp_parser_template_id): Don't create a CPP_TEMPLATE_ID
	if parsing failed.

2004-12-09  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/18073
	* typeck.c (build_reinterpret_cast_1): Allow cast from vector type.

2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/16681
	* init.c (build_zero_init): Build a RANGE_EXPR for an array
	initializer.

2004-12-08  Kelley Cook  <kcook@gcc.gnu.org>

	* typeck.c: Remove DOS line endings.

2004-12-08  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/18100
	* decl.c (lookup_and_check_tag): Diagnose nested class with
	the same name as enclosing class.

2004-12-08  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18803
	* cp-tree.h (REFERENCE_REF_P): New.
	(CPTI_TYPE_INFO_TYPE): Rename to ...
	(CPTI_CONST_TYPE_INFO_TYPE): ... here.
	(CPTI_TYPE_INFO_REF_TYPE): Remove.
	(type_info_type_node): Rename to ...
	(const_type_info_type_node): ... here.
	(type_info_ref_type): Remove.
	* call.c (build_user_type_conversion): Reformat.
	(resolve_args): Do not convert_from_reference.
	(build_object_call): Call convert_from_reference.
	(prep_operand): Do not convert_from_reference.
	(build_new_method_call): Likewise.
	* class.c (build_vfield_ref): Likewise.
	* cvt.c (convert_to_reference): Likewise.
	(convert_from_reference): Build INDIRECT_REF here, not with
	build_indirect_ref.
	(convert_force): Do not convert_from_reference.
	(build_expr_type_conversion): Likewise.
	* decl.c (grok_reference_init): Likewise.
	* decl2.c (delete_sanity): Likewise.
	* except.c (initialize_handler_parm): Use POINTER_TYPE_P.
	* init.c (build_dtor_call): Do not convert_from_reference.
	* parser.c (cp_parser_template_argument): Unwrap indirected
	reference. Allow TEMPLATE_PARM_INDEX as an object parm.
	* pt.c (tsubst_copy_and_build) <case INDIRECT_REF>: Use
	convert_from_reference, if indicated.
	<case CALL_EXPR>: Do not convert_from_reference.
	<case PARM_DECL, VAR_DECL>: Convert_from_reference if needed.
	(tsubst_initializer_list): Do not convert_from_reference.
	* rtti.c (init_rtti_processing): Adjust node creation.
	(throw_bad_typeid): Use const_type_info_type_node.
	Do not convert_from_reference.
	(typeid_ok_p): Use const_type_info_type_node.
	(build_typeid, get_typeid): Always return type_info typed node.
	(build_dynamic_cast_1): Dont convert_from_reference. Refactor.
	* semantics.c (finish_stmt_expr_expr): Do not
	convert_from_reference.
	(finish_id_expression): Convert_from_reference as appropriate.
	* typeck.c (decay_conversion): Do not convert_from_reference.
	(finish_class_member_access_expr): Likewise.
	(build_indirect_ref): Use POINTER_TYPE_P.
	(convert_arguments): Do not convert_from_reference.
	(build_modify_expr): Likewise.
	(convert_for_initialization): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

2004-12-07  Ziemowit Laski  <zlaski@apple.com>

	* cp-tree.h (struct lang_type_class): Rename 'objc_protocols'
	field to 'objc_info'.

2004-12-07  Kazu Hirata  <kazu@cs.umass.edu>

	* pt.c: Replace a use of first_rtl_op with TREE_CODE_LENGTH.

2004-12-07  Roger Sayle  <roger@eyesopen.com>

	* name-lookup.c (leave_scope): We only need to update
	class_binding_level when leaving a class scope.

2004-12-06  Ziemowit Laski  <zlaski@apple.com>

	* cp-tree.h (struct lang_type_class): Add 'objc_protocols' field.

2004-12-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/17011, c++/17971
	* pt.c (tsubst_copy) <FIELD_DECL case>: Check and diagnose
	invalid field.
	(tsubst_copy_and_build) <COMPONENT_REF case>: Check
	error_mark_node after member substitution.
	* semantics.c (finish_id_expression): Call
	finish_non_static_data_member for non-dependent FIELD_DECL.

2004-12-03  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18782
	* decl.c (grokdeclarator): Make sure class in pointer to member is
	not a namespace.

2004-12-02  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18318
	* parser.c (cp_parser_new_type_id): Move array size expression
	checks from here ...
	* init.c (build_new): ... to here.

2004-12-02  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18758
	* parser.c (cp_parser_class_head): Return NULL_TREE when
	push_template_decl fails.  Update comment.

2004-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/15664, c++/18276
	* pt.c (tsubst_decl) <TEMPLATE_DECL case>: Reorganize.  Correctly
	tsubst TEMPLATE_DECL that is a TEMPLATE_TEMPLATE_PARM.

2004-12-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/18123
	* parser.c (cp_parser_type_specifier): Catch template declaration
	of enum.

2004-12-01  Matt Austern  <austern@apple.com>

	* name-lookup.c (namespace_binding): Omit alias check for global
	namespace.

2004-12-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18729
	* parser.c (cp_parser_class_name): Check decl's type is not
	error_mark_node.

	PR c++/17431
	* call.c (standard_conversion): Add FLAGS parameter. Do not allow
	derived to base conversion when checking constructor
	accessibility.
	(implicit_conversion): Pass FLAGS to standard_conversion.
	(check_constructir_callable): Disallow conversion functions.

2004-11-30  Kazu Hirata  <kazu@cs.umass.edu>

	* parser.c: Fix comment typos.

2004-11-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18368
	* parser.c (cp_parser_check_for_definition_in_return_type): Take
	the defined type as a parameter, and inform the user about the
	possibility of a missing semicolon.
	(cp_parser_explicit_instantiation): Adjust call to
	cp_parser_check_for_definition_in_return_type.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_member_declaration): Likewise.

	PR c++/18674
	* cp-tree.def (TYPENAME_TYPE): Remove discussion of implicit
	typename from comments.
	* cp-tree.h (TYPENAME_IS_ENUM_P): New macro.
	(TYPENAME_IS_CLASS_P): Likewise.
	(make_typename_type): Change prototype.
	* decl.c (struct_typename_info): New type.
	(typename_compare): Expect the second argument to be a
	typename_info, not a tree.
	(build_typename_type): Add tag_type parameter.  Do not create a
	new type until necessary.
	(make_typename_type): Add tag_type parameter.
	* error.c (TYPENAME_TYPE): Print tags other than "typename" if
	appropriate.
	* friend.c (make_friend_class): Adjust call to make_typename_type.
	* parser.c (cp_parser_make_typename_type): Likewise.
	(cp_parser_primary_expression): Adjust call to
	cp_parser_lookup_name.
	(cp_parser_unqualified_id): Adjust calls to cp_parser_class_name.
	(cp_parser_class_or_namespace_name): Likewise.
	(cp_parser_postfix_expression): Adjust calls to
	make_typename_type.
	(cp_parser_mem_initializer_id): Adjust calls to
	cp_parser_class_name.
	(cp_parser_type_parameter): Adjust calls to cp_parser_lookup_name.
	(cp_parser_template_name): Likewise.
	(cp_parser_template_argument): Likewise.
	(cp_parser_type_name): Adjust call to cp_parser_class_name.
	(cp_parser_elaborated_type_specifier): Adjust calls to
	make_typename_type and cp_parser_lookup_name.
	(cp_parser_namespace_name): Likewise.
	(cp_parser_class_name): Replace type_p parameter with tag_type.
	Adjust calls to make_typename_type and cp_parser_lookup_name.
	(cp_parser_class_head): Adjust calls to cp_parser_class_name.
	(cp_parser_base_specifier): Likewise.
	(cp_parser_lookup_name): Replace is_type parameter with tag_type.
	Adjust calls to make_typename_type and lookup_qualified_name.
	(cp_parser_lookup_name_simple): Adjust call to
	cp_parser_lookup_name.
	(cp_parser_constructor_declarator_p): Adjust call to
	cp_parser_class_name.
	* pt.c (convert_template_argument): Adjust all to
	make_typename_type.
	(tsubst_decl): Do not pre-substitute the type of the declaration.
	(tsubst): Hand off declarations more quickly.  Adjust call to
	make_typename_type.

	PR c++/18512
	* parser.c (cp_parser_postfix_dot_deref_expression): Robustify.

2004-11-29  Daniel Jacobowitz  <dan@codesourcery.com>

	PR c/7544
	* Make-lang.in (cp/decl2.o): Update dependencies.
	* decl2.c (finish_file): Call maybe_apply_pending_pragma_weaks.

2004-11-29  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/18652
	* name-lookup.c (pushtag): Change return type to tree.
	* cp-tree.h (pushtag): Adjust declaration.
	* decl.c (xref_tag, start_enum): Use return value of pushtag.
	* pt.c (push_template_decl_real): Return immediately if
	pushdecl_namespace_level returns error_mark_node.

2004-11-27  Kazu Hirata  <kazu@cs.umass.edu>

	* pt.c: Fix a comment typo.

2004-11-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	Friend class name lookup 4/n
	* class.c (pushclass): Don't call cxx_remember_type_decls.
	* cp-tree.h (clear_anon_tags): Remove declaration.
	* decl.c (grokdeclarator): Don't call lookup_tag_reverse.
	* name-lookup.c (binding_entry_free, binding_table_free): Comment
	out functions.
	(binding_table_find_anon_type, binding_table_reverse_maybe_remap,
	binding_table_remove_anonymous_types, cxx_remember_type_decls,
	bt_print_entry, clear_anon_tags, follow_tag_typedef, lookup_tag,
	lookup_tag_reverse): Remove
	(begin_scope, leave_scope, kept_level_p, print_binding_level):
	Don't use type_decls field in cp_binding_level.
	(maybe_process_template_type_declaration, pushtag): Set
	CLASSTYPE_NESTED_UTDS directly.
	* name-lookup.h (binding_table_remove_anonymous_types,
	cxx_remember_type_decls, lookup_tag, lookup_tag_reverse): Remove
	declaration.
	(cp_binding_level): Remove type_decls field.

2004-11-26  Kazu Hirata  <kazu@cs.umass.edu>

	* typeck.c: Fix a comment typo.

2004-11-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18445
	* class.c (instantiate_type): Treat NON_DEPENDENT_EXPRs with
	unknown_type as non matching.  Tidy up.
	* pt.c (build_non_dependent_expr): Do not build a
	NON_DEPENDENT_EXPR for a VAR_DECL.

	PR c++/18001
	* cp-tree.h (lvalue_or_else): Remove declaration.
	* tree.c (lvalue_or_else): Remove.
	* typeck.c (build_unary_op): Adjust call to lvalue_or_else.
	(build_modify_expr): Likewise.

	PR c++/18625
	* decl.c (duplicate_decls): Return error_mark_node on error, as
	specified.

	PR c++/18466
	* decl.c (grokvardecl): Keep track of whether or not a there was
	explicit qualification.
	* name-lookup.c (set_decl_namespace): Complain about explicit
	qualification of a name within its own namespace.

	PR c++/18545
	* typeck.c (check_return_expr): Robustify.

2004-11-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	Friend class name lookup 3/n, PR c++/3332
	* name-lookup.c (push_inner_scope, pop_inner_scope): New functions.
	(lookup_type_scope): Don't deal with name from user declaration
	specially.
	* name-lookup.h (push_inner_scope, pop_inner_scope): Add declarations.
	* parser.c (cp_parser_class_specifier): Use push_inner_scope and
	pop_inner_scope.

2004-11-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	Friend class name lookup 2/n, PR c++/14513, c++/15410
	* name-lookup.c (lookup_name_real): Simplify.
	(lookup_type_scope): Add SCOPE parameter.  Handle friend class
	lookup.
	* name-lookup.h (tag_scope): New enum type.
	(lookup_type_scope): Adjust declaration.
	* decl.c (lookup_and_check_tag, xref_tag, xref_tag_from_type):
	Change bool parameter GLOBALIZED to TAG_SCOPE parameter SCOPE.
	(start_enum): Likewise.  Add assertion test that NAME is
	IDENTIFIER_NODE.  Use anonymous name for dummy ENUMERAL_TYPE in
	case of error.
	* cp-tree.h (xref_tag, xref_tag_from_type): Adjust declarations.
	* parser.c (cp_parser_elaborated_type_specifier,
	cp_parser_class_head): Adjust call to xref_tag.
	* pt.c (lookup_template_class, instantiate_class_template):
	Likewise.
	* rtti.c (init_rtti_processing, build_dynamic_cast_1,
	tinfo_base_init, emit_support_tinfos): Likewise.

2004-11-25  Joseph S. Myers  <joseph@codesourcery.com>

	* g++spec.c, lex.c: Avoid ` as left quote in diagnostics.

2004-11-24  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17473
	* name-lookup.c (supplement_binding): Do not allow typedefs to be
	redefined in class scope.

	PR c++/18285
	* parser.c (cp_parser_set_decl_type_spec): Do not try to allow
	redefinitions of builtin types other that "bool" or "wchar_t".

2004-11-24  Steven Bosscher  <stevenb@suse.de>

	* decl.c (cxx_init_decl_processing): Don't clear
	flag_inline_functions.

2004-11-24  Mark Mitchell  <mark@codesourcery.com>

	* pt.c (tsubst_function_type): Do not permit function types which
	return arrays or functions.

	PR c++/18586
	* parser.c (cp_parser_init_declarator): Do not pop scope twice.

	PR c++/18530
	* cp-tree.h (CTOR_NAME): Remove.
	(DTOR_NAME): Remove.
	* decl.c (initialize_predefined_identifiers): Add spaces to the
	end of constructor and destructor names.

2004-11-24  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/8929
	* decl.c (start_decl): Check for invalid specialization headers.

2004-11-24  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/16882

	* call.c (standard_conversion): Move check for conversions between
	vector pointers...
	* typeck.c (ptr_reasonably_similar): ... here.

2004-11-23  Ben Elliston  <bje@au.ibm.com>

	* cp-tree.h (context_as_string): Remove extern.
	* error.c (context_as_string): Remove.

	* cp-tree.h (cp_type_qual_from_rid): Remove extern.
	* lex.c (cp_type_qual_from_rid): Remove.

	* cp-tree.h (do_poplevel): Remove extern.
	(check_multiple_declarators): Likewise.
	* semantics.c (do_poplevel): Make static.
	(check_multiple_declarators): Remove.

	* cp-tree.h (check_final_overrider): Remove extern.
	* search.c (check_final_overrider): Make static.

	* cp-tree.h (build_artificial_parm): Remove extern.
	* decl2.c (build_artificial_parm): Make static.

2004-11-22  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/18354
	* typeck.c (build_unary_op) <CONVERT_EXPR, NEGATE_EXPR>: Unify code.
	Make sure the result is always a rvalue.

2004-11-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* decl.c (start_preparsed_function): Call check_function_type even
	in templates.
	(require_complete_types_for_parms): Skip dependent types.
	(check_function_type): Likewise.

2004-11-16  Steven Bosscher  <stevenb@suse.de>

	* Make-lang.in (cp/decl.o, cp/search.o): Don't depend on stack.h.
	* search.c: Don't include it.

2004-11-15  Andrew Pinski  <pinskia@physics.uc.edu>

	* cp-gimplify.c: Include pointer-set.h
	(cp_genericize_r): Use pointer_sets instead of a hashtable.
	Also instert the new statement for CLEANUP_STMT.
	(cp_genericize): Use pointer_sets instead of a hashtable.
	* Make-lang.in (cp-gimplify.o): Depend on pointer-set.h.

2004-11-15  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	Friend class name lookup 1/n, PR c++/18471
	* decl.c (lookup_and_check_tag): New function.
	(xref_tag, start_enum): Use it.
	(check_elaborated_type_specifier): Move TEMPLATE_TYPE_PARM check
	before !DECL_IMPLICIT_TYPEDEF_P.  Also display previously declared
	location.
	* name-lookup.c (lookup_name_current_level): Rename to ...
	(lookup_name_innermost_nonclass_level): ... this.
	(lookup_type_scope): New function.
	* name-lookup.h (lookup_name_current_level): Rename to ...
	(lookup_name_innermost_nonclass_level): ... this.
	(lookup_type_scope): Add declaration.

2004-11-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/17344
	* pt.c (coerce_template_parms): Only emit error message about
	invalid template argument when TF_ERROR.

2004-11-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18389
	* decl.c (start_decl): Make sure to set *pop_scope_p.  Return
	error_mark_node to indicate errors.

	PR c++/18429
	* parser.c (cp_parser_direct_declarator): Disallow non-constant
	array bounds when not inside a function.

	PR c++/18436
	* pt.c (tsubst_copy_and_build): Do not do Koenig lookup when an
	unqualified name resolves to a member function.

	PR c++/18407
	* pt.c (tsubst_copy_and_build): Handle qualified names used from a
	derived class correctly.

	* decl2.c (import_export_decl): Fix typo in comment.
	* tree.c (pod_type_p): Likewise.

2004-11-10  Andrew Pinski  <pinskia@physics.uc.edu>

	* typeck.c (cxx_mark_addressable): Add braces around the first if.

2004-11-10  Adam Nemet  <anemet@lnxw.com>

	PR middle-end/18160
	* typeck.c (cxx_mark_addressable): Issue an error if address of an
	explicit register variable is requested.

2004-11-10  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18143
	* cp-tree.h (NON_THUNK_FUNCTION_CHECK, THUNK_FUNCTION_CHECK): New.
	(struct lang_decl_flags): Add thunk_p flag.
	(struct lang_decl): Remove separate fixed_offset. Place
	cloned_function and fixed_offset into union.
	(DECL_CLONED_FUNCTION_P, DECL_CLONED_FUNCTION): Adjust.
	(DECL_THUNK_P, SET_DECL_THUNK_P): Adjust.
	(THUNK_FIXED_OFFSET): Adjust.
	* method.c (make_thunk): Adjust.

2004-11-09  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18369
	* init.c (build_new_1): Handle parenthesized type-ids that name an
	array type.  Tidy.

2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>

	* call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
	pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
	quoting in diagnostics.
	* parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
	quoting in printf format.
	* decl.c (duplicate_decls, start_decl): Use %qD instead of
	unquoted %D.

2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c, decl.c, lex.c, name-lookup.c, parser.c, pt.c,
	search.c, typeck2.c: Fix comment formatting.

2004-11-04  Ulrich Weigand  <uweigand@de.ibm.com>

	PR tree-optimization/18184
	* cp-objcp-common.c (cxx_types_compatible_p): Do not treat pointers
	of different modes or alias-all flags as equivalent.
	* typeck.c (comptypes): Likewise.

2004-11-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	DR 49, 100
	* cp-tree.h (TYPE_REF_OBJ_P): New macro.
	(TYPE_PTR_P, TYPE_PTROB_P, TYPE_PTROBV_P, TYPE_PTRFN_P,
	TYPE_REFFN_P): Document.
	(fold_decl_constant_value): New prototype.
	* pt.c (convert_nontype_argument_function): Rewrite and extract
	parts into...
	(fold_decl_constant_value, convert_nontype_argument_function): New.
	(lookup_template_class): Add comment about useless double call.
	* mangle.c (write_expression): Strip conversions before lowering
	pointer to members.
	* cvt.c (ocp_convert): Check LOOKUP_COMPLAIN for a pedwarn. Disallow
	enum to enum conversion.

2004-11-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18124
	* parser.c (cp_parser_type_parameter): Robustify.

	PR c++/18155
	* parser.c (cp_parser_single_declaration): Disallow template
	typedefs.

	PR c++/18177
	* typeck.c (build_const_cast): Use error_operand_p.

2004-11-02  Ziemowit Laski  <zlaski@apple.com>

	* cp-lang.c (cxx_types_compatible_p): Remove prototype and definition.
	(LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h.
	* cp-objcp-common.c (cxx_types_compatible_p): Moved definition here
	from cp-lang.c.
	* cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here
	from cp-lang.c.
	(LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c.

2004-11-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18064
	* search.c (check_final_overrider): Deprecate gnu covariant extension.

2004-10-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 9/n
	* typeck.c (build_x_unary_op, convert_member_func_to_ptr,
	get_delta_difference):  Use new quotation style.
	* repo.c (reopen_repo_file_for_write): Likewise.
	* pt.c (do_type_instantiation): Likewise.
	* parser.c (cp_parser_diagnose_invalid_type_name):
	* name-lookup.c (push_overloaded_decl, set_decl_namespace):
	* error.c (cp_print_error_function,
	print_instantiation_full_context): Likewise.
	* decl.c (define_label, grok_reference_init,
	maybe_deduce_size_from_array_init, revert_static_member_fn):
	* decl2.c (check_classfn): Likewise.
	* class.c (add_method, check_field_decls, layout_class_type,
	resolve_address_of_overloaded_function): Likewise.
	* call.c (build_x_va_arg, build_over_call): Likewise.

2004-10-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 8/n
	* cvt.c (cp_convert_to_pointer, warn_ref_binding,
	convert_to_reference, ocp_convert, convert_to_void
	cp_convert_to_pointer): Use new quotation style.

2004-10-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15172
	* typeck2.c (store_init_value): Use split_nonconstant_init even
	for types that require construction.

1004-10-28  Matt Austern  <austern@apple.com>

	PR c++/17542
	* cp-tree.h (class_key_or_enum_as_string): Declare.
	* error.c (class_key_or_enum): Rename to class_key_or_enum_as_string
	and remove static qualifier.
	* decl.c (shadow_tag): Warn about ignored attributes in class/struct/
	union/enum declaration.

2004-10-29  Kazu Hirata  <kazu@cs.umass.edu>

	* pt.c: Fix a comment typo.

2004-10-28  Nathan Sidwell  <nathan@codesourcery.com>

	* typeck.c (composite_pointer_type): Remove comment about DR 195.
	(build_reinterpret_cast_1): Revert DR195 patch. Only emit a
	warning when being pedantic.
	(build_reinterpet_cast, build_c_cast): Adjust.

2004-10-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17695
	* decl.c (grokdeclarator): Mark TYPE_DECLs as abstract when they
	appear in a constructor/destructor that will be cloned.

1004-10-28  Matt Austern  <austern@apple.com>

	PR c++/14124
	* decl.c (finish_enum): Handle packed attribute.
	* parser.c (cp_parser_enum_specifier): Process trailing attributes.

2004-10-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17132
	* pt.c (instantiate_class_template): Increment
	processing_template_decl when substituting into a member class
	template.

2004-10-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17435
	* call.c (convert_like_real): Fix formatting.
	(initialize_reference): When binding a temporary to a base class,
	ensure that the nominal copy made is to the derived class, not the
	base class.

	PR c++/18140
	* parser.c (cp_parser_next_token_ends_template_argument_p): Do not
	include ">>".

2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>

	* decl.c (bad_specifiers): Move the q after the %.

2004-10-27  Andrew Pinski  <pinskia@physics.uc.edu>

	* parser.c (cp_parser_diagnose_invalid_type_name): Move the q after
	the %.

2004-10-26  Mark Mitchell  <mark@codesourcery.com>

	* name-lookup.c (do_namespace_alias): Use FROB_CONTEXT.
	* search.c (current_scope): Fix prototype.

	PR c++/18093
	* search.c (current_scope): Return the innermost non-block scope,
	not the innermost non-block, non-namespace scope.
	(at_namespace_scope_p): Adjust accordingly.
	(dfs_accessible_post): Do not pass namespaces to is_friend.
	(dfs_walk_once_accessible_r): Likewise.
	* decl.c (grokvardecl): Adjust call to current_scope.
	(build_enumerator): Likewise.
	* parser.c (cp_parser_using_declaration): Likewise.
	(cp_parser_direct_declarator): Use at_namespace_scope_p instead of
	current_scope.
	(cp_parser_class_head): Adjust call to current_scope.
	* name-lookup.c (do_namespace_alias): Set the DECL_CONTEXT for the
	alias.

	PR c++/18020
	* pt.c (tusbst_copy_and_build): Resolve enumeration constants to
	their underlying values.

	PR c++/18161
	* typeck.c (build_binary_op): Honor build_type, even when in a
	template.

2004-10-26  Nathan Sidwell  <nathan@codesourcery.com>

	* parser.c (cp_lexer_get_preprocessor_token): Remove unneeded
	padding token checking.

2004-10-25  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/18121
	* decl.c (grokdeclarator) <case cdk_array>: Remove the call
	layout_type as it is already done by create_array_type_for_decl.

2004-10-22  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/18095
	* parser.c (eof_token): Make const, correctly initialize rid and
	location fields.
	(struct cp_lexer): Replace buffer_end pointer with buffer_length
	count. Adjust.
	(cp_lexer_new_main): Directly grow lexer's buffer here.  Don't
	zero it out.
	(cp_lexer_new_from_tokens): Adjust.
	(cp_lexer_grow_buffer): Remove.
	(cp_lexer_peek_nth_token, cp_lexer_consume_token,
	cp_lexer_purge_token): Add const casts.

2004-10-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/18073
	PR c++/10841
	* cp-tree.h (convert_to_base): Change prototype.
	(build_ptrmemfunc): Likewise.
	(convert_ptrmem): New function.
	* call.c (struct conversion): Adjust documentation for base_p.
	(standard_conversion): Set base_p for ck_pmem conversions as
	appropriate.
	(convert_like_real): Use convert_to_base for ck_pmem and ck_ptr
	conversions.
	* class.c (convert_to_base): Handle both pointers and objects.
	Add nonnull parameter.
	(build_vfield_ref): Adjust call to convert_to_base.
	* cvt.c (cp_convert_to_pointer): Adjust call to build_ptrmemfunc.
	(convert_force): Likewise.
	* typeck.c (build_unary_op): Likewise.
	(convert_ptrmem): New function.
	(build_static_cast_1): Use it.
	(build_reinterpret_cast): Allow conversions to vector types.
	(get_delta_difference): Add c_cast_p parameter.
	(build_ptrmemfunc): Likewise.  Adjust calls to
	get_delta_difference.

2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/13560
	* error.c (cp_error_at): Output the context as it might be
	different file as the other location.

2004-10-21  Kazu Hirata  <kazu@cs.umass.edu>

	* typeck.c: Fix a comment typo.

2004-10-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13495
	* decl.c (make_unbound_class_template): Add PARM_LIST parameter.
	* cp-tree.h (make_unbound_class_template): Adjust prototype.
	* parser.c (cp_parser_lookup_name): Adjust call to
	make_unbound_class_template.
	(cp_parser_single_declaration): Handle member class of class
	template as template friend parsing correctly.
	* friend.c (is_friend): Call is_specialization_of_friend for
	template friend class.
	(make_friend_class): Handle member class of class template as
	template friend.
	* pt.c (is_specialization_of_friend): Likewise.
	(instantiate_class_template): Likewise.
	(tsubst): Adjust call to make_unbound_class_template.

2004-10-20  Nathan Sidwell  <nathan@codesourcery.com>

	* typeck.c (composite_pointer_type): Add comment about DR 195
	(build_reinterpret_cast_1): Add for_reinterpret_cast_p parameter.
	Allow function pointer conversions that DR195 suggests.
	(build_reinterpret_cast, build_c_cast): Update
	build_reinterpret_cast_1 calls.

2004-10-20  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c, typeck.c: Fix comment typos.

2004-10-20  Nathan Sidwell  <nathan@codesourcery.com>

	* parser.c (cp_token_position): New typedef. Define VEC thereof.
	(struct cp_lexer): Allow buffer and buffer_end to be NULL. Make
	next_token and last_token cp_token_position. Make saved_tokens a
	VEC(cp_token_position).
	(eof_token): New static variable.
	(CP_SAVED_TOKENS_SIZE): Rename to ...
	(CP_SAVED_TOKEN_STACK): ... here.
	(cp_lexer_new_main): Adjust main lexer creation and buffer
	filling.
	(cp_lexer_new_from_tokens): Do not copy the tokens, merely point
	to the parent buffer.  Do not append eof token.
	(cp_lexer_destroy): Only free buffer if non-NULL. Free token
	stack.
	(cp_lexer_next_token, cp_lexer_prev_token): Remove.
	(cp_lexer_token_position, cp_lexer_token_at): New.
	(cp_lexer_saving_tokens): Adjust. Make inline.
	(cp_lexer_advance_token, cp_lexer_token_difference): Remove.
	(cp_lexer_peek_token_emit_debug_info): Fold into ...
	(cp_lexer_peek_token): ... here.
	(cp_lexer_peek_nth_token): Don't peek past EOF.
	(cp_lexer_consume_token): Set next_token to eof_token, if reaching
	EOF.
	(cp_lexer_purge_token): Adjust eof setting.
	(cp_lexer_purge_tokens_after): Likewise.
	(cp_lexer_save_tokens): Push next_token directly.
	(cp_lexer_commit_tokens): Adjust.
	(cp_lexer_rollback_tokens): Pop next_token directly.
	(cp_parser_check_for_invalid_template_id): Adjust token purging.
	(cp_parser_translation_unit): Do not consume the EOF.
	(cp_parser_nested_name_specifier_opt): Adjust token purging.
	(cp_parser_template_id, cp_parser_template_name): Likewise.

2004-10-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14035
	* call.c (struct conversion): Add base_p.
	(convert_like): Add c_cast_p argument.
	(convert_like_with_conversion): Likewise.
	(build_conv): Clear base_p.
	(standard_conversion): Set it, for derived-to-base conversions.
	(convert_like_real): Add c_cast_p parameter.  Handle pointer
	conversions directly rather than relying on ocp_convert.
	(perform_direct_initialization_if_possible): Add c_cast_p
	parameter.
	* cp-tree.h (perform_direct_initialization_if_possible): Change
	prototype.
	(convert_member_func_to_ptr): New function.
	* typeck.c (check_for_casting_away_constness): Add diag_fn
	parameter.
	(build_static_cast_1): New function, split out from ...
	(build_static_cast): ... here.  Use build_static_cast_1.
	(build_reinterpret_cast_1): New function, split out from ...
	(build_reinterpret_cast): ... here.  Use build_reinterpret_cast_1.
	(build_const_cast_1): New function, split out from ...
	(build_const_cast): ... here.  Use build_const_cast_1.
	(build_c_cast): Rewrite to use build_const_cast_1,
	build_static_cast_1, and build_reinterpret_cast_1.
	(convert_member_func_to_ptr): New function.

2004-10-19  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/18047
	* parser.c (enum cp_parser_prec): Give relational expressions
	a higher precedence than equality expressions.

2004-10-15  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (UNIQUELY_DERIVED_FROM_P): Adjust lookup_base call.
	(ACCESSIBLY_UNIQUELY_DERIVED_P): Remove.
	(PUBLICLY_UNIQUELY_DERIVED_P): Adjust lookup_base call.
	(enum base_access): Reorganize.
	(accessible_base_p, accessible_p): Add consider_local_p parameter.
	* call.c (standard_conversion): Update comment about
	DERIVED_FROM_P.
	(enforce_access): Adjust accessible_p call.
	(build_over_call): Adjust accessible_base_p call.
	* class.c (convert_to_base): Adjust lookup_base call.
	(build_vtbl_ref_1): Likewise.
	(warn_about_ambiguous_bases): Likewise. Add early exit.
	* cvt.c (convert_to_pointer_force) Adjust lookup_base call.
	* search.c (accessible_base_p): Add consider_local_p parameter.
	(lookup_base): Pass consider_local_p to accessible_base_p call.
	(friend_accessible_p): Check whether scope is a class member.
	Remove unnecessary class template check.
	(accessible_p): Add consider_local_p parameter. Use it.
	(adjust_result_of_qualified_name_lookup): Adjust lookup_base call.
	* tree.c (maybe_dummy_object): Likewise.
	* typeck.c (comp_except_type): Use PUBLICLY_UNIQUELY_DERIVED_P.
	(build_class_member_access_expr): Adjust lookup_base call.
	* typeck2.c (binfo_or_else): Likewise.
	* rtti.c (build_dynamic_cast_1): Access can consider friendship
	and current scope.

2004-10-17  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/17743
	* decl2.c (grokfield): Apply attributes also to TYPE_DECLs.

2004-10-16  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/10479
	* parser.c (cp_parser_parenthesized_expression_list): Fold
	non-dependent expressions in attribute lists.

2004-10-15  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17042
	* decl.c (declare_global_var): Use the return value from pushdecl.

	PR c++/14667
	* parser.c (cp_parser_simple_declaration): Do not diagnose invalid
	type names if we have already found a valid type.
	(cp_parser_member_declaration): Likewise.

	PR c++/17916
	* parser.c (cp_parser_member_specification_opt): Handle
	CPP_PRAGMA.

2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>

	* dump.c, g++spec.c, repo.c: Update copyright.

2004-10-15  Kazu Hirata  <kazu@cs.umass.edu>

	* decl.c: Fix a comment typo.

2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/16301
	* name-lookup.c (parse_using_directive): If we have a
	error_mark_node, do not set the decl namespace associations
	on it.

2004-10-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17976
	* decl.c (cp_finish_decl): Do not call expand_static_init more
	than once for a single variable.

2004-10-14  Matt Austern  <austern@apple.com>

	* Make-lang.in (pt.o): depends on pointer-set.h
	* cp-tree.h (cp_walk_subtrees): Last argument is pointer_set_t* now.
	* pt.c (struct pair_fn_data): Use pointer_set_t, not htab_t
	(for_each_template_parm): Convert from htab_t to pointer_set_t.
	* tree.c (cp_walk_subtrees): Last argument is pointer_set_t* now.

2004-10-13  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/17661
	* semantics.c (finish_for_expr): Convert expression to void
	so that we don't create temporaries for a?b:c.

2004-10-13  Kazu Hirata  <kazu@cs.umass.edu>

	* search.c: Fix a comment typo.

2004-10-12  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (dfs_modify_vtables): Simplify condition. Return
	dfs_skip_bases as appropriate.
	(modify_all_vtables): Walk in pre-order.
	* search.c (dfs_walk_all, dfs_walk_once_r,
	dfs_walk_once_accessible_r): Assert post order function never
	returns dfs_skip_bases.

	* search.c (struct lookup_base_data_s): New.
	(lookup_base_r): Replace with ...
	(dfs_lookup_base): ... this.
	(lookup_base): Use dfs_walk_all.

2004-10-12  Kazu Hirata  <kazu@cs.umass.edu>

	* search.c: Fix comment typos.

2004-10-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15786
	* parser.c (cp_parser_declarator): Add member_p parameter.
	(cp_parser_condition): Adjust calls to cp_parser_declarator.
	(cp_parser_explicit_instantiation): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_direct_declarator): Add member_p parameter.  Do not
	parse tentatively when parsing the parameters to a member.
	(cp_parser_type_id): Adjust calls to cp_parser_declarator.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_exception_declaration): Likewise.

	PR c++/17936
	* cp-tree.h (CLASSTYPE_TEMPLATE_SPECIALIZATION): Add a comment.
	* pt.c (optimize_specialization_lookup_p): Do not optimize lookups
	for members of partial or explicit specializations.

	PR c++/17929
	* decl2.c (finish_anon_union): Robustify.

2004-10-11  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (get_dynamic_cast_base_type): Rename to ...
	(dcast_base_hint): ... here.
	* rtti.c (build_dynamic_cast_1): Use dcast_base_hint.
	* search.c (struct dcast_data_s): New.
	(dynamic_cast_base_recurse): Remove. Replace with ...
	(dfs_dcast_hint_pre, dfs_dcast_base_post): ... these. New.
	(get_dynamic_cast_base_type): Rename to ...
	(dcast_base_hint): ... here.  Use dfs_walk_once_accessible.
	(accessible_r): Remove.
	(dfs_accessible_post): New, broken out of accessible_r.
	(accessible_p): Use dfs_walk_once_accessible.
	(dfs_walk_once_accessible_r): New. From accessible_r.
	(dfs_walk_once_accessible): New. From acessible_p.

	* cp-tree.h (SAME_BINFO_TYPE_P): New.
	* class.c (build_base_path): Use SAME_BINFO_TYPE_P to compare
	binfo types.
	(convert_to_base_statically, determine_primary_bases,
	update_vtable_entry_for_fn, dfs_modify_vtables, build_vtt_inits,
	dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
	accumulate_vtbl_inits, dfs_accumulate_vtbl_inits,
	build_vtbl_initializer, add_vcall_offset_vtbl_entries_1): Likewise.
	* init.c (expand_member_init): Likewise.
	* search.c (lookup_base_r, dynamic_cast_base_recurse,
	binfo_via_virtual, copied_binfo, binfo_for_vbase,
	original_binfo): Likewise.
	* tree.c (copy_binfo): Likewise.

2004-10-11  Kazu Hirata  <kazu@cs.umass.edu>

	* semantics.c: Fix comment typos.

2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/17554
	part of c++/17657
	middle-end/17703
	* semantics.c (maybe_cleanup_point_expr): Call
	fold_build_cleanup_point_expr.
	(maybe_cleanup_point_expr_void): New function.
	(add_decl_expr): Call maybe_cleanup_point_expr_void.
	(finish_expr_stmt): Likewise.
	(finish_return_stmt): Likewise.
	(finish_for_expr): Likewise.
	(finish_asm_stmt): Likewise.
	* typeck.c (condition_conversion): Call
	fold_build_cleanup_point_expr.

2004-10-10  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/17907
	* semantics.c (add_decl_expr): If the decl has a size which
	has side effects then the decl expression needs a cleanup point.

2004-10-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17393
	* decl.c (grokdeclarator): Robustify error-recovery on invalid
	declarations.

2004-10-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 7/n
	* typeck.c (composite_pointer_type_r, composite_pointer_type,
	cxx_sizeof_or_alignof_type, cxx_sizeof_or_alignof_expr,
	string_conv_p, build_class_member_access_expr,
	build_class_member_access_expr, lookup_destructor,
	finish_class_member_access_expr, build_indirect_ref,
	get_member_function_from_ptrfunc, build_function_call,
	convert_arguments, build_binary_op, pointer_diff, build_unary_op,
	check_for_casting_away_constness, build_static_cast,
	build_reinterpret_cast, build_const_cast, build_c_cast,
	build_modify_expr, get_delta_difference, build_ptrmemfunc,
	dubious_conversion_warnings, convert_for_assignment,
	convert_for_initialization,
	maybe_warn_about_returning_address_of_local, check_return_expr):
	Use quoting marks.

	* typeck2.c (error_not_base_type, readonly_error,
	abstract_virtuals_error, cxx_incomplete_type_diagnostic,
	store_init_value, digest_init, build_x_arrow,
	build_m_component_ref, require_complete_eh_spec_types): Likewise.

	* tree.c (cp_build_qualified_type_real,
	handle_java_interface_attribute, handle_init_priority_attribute):
	Likewise.

	* semantics.c (finish_asm_stmt, finish_non_static_data_member,
	finish_pseudo_destructor_expr,
	check_template_template_default_arg, begin_class_definition,
	finish_base_specifier, qualified_name_lookup_error,
	finish_id_expression, finish_typeof): Likewise.

	* search.c (lookup_base, check_final_overrider,
	look_for_overrides_r): Likewise.

	* rtti.c (get_tinfo_decl, build_dynamic_cast_1): Likewise.

2004-10-09  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17867
	* error.c (dump_expr): Correct handling of AGGR_INIT_EXPRs using a
	constructor.

	PR c++/17670
	* init.c (build_new): Correct comments.
	* parser.c (cp_parser_new_expression): Use NULL_TREE for nelts in
	the non-array case.

	PR c++/17821
	* parser.c (cp_parser_postfix_dot_deref_expression): If the
	pseduo-destructor-name production does not work, fall back to the
	ordinary production.

	PR c++/17826
	* tree.c (cp_tree_equal): Handle a BASELINK.

	PR c++/17524
	* cp-tree.h (check_var_type): New function.
	* decl.c (check_var_type): New function, split out from ...
	(grokdeclarator): ... here.
	* pt.c (tsubst_decl): Use check_var_type.

	PR c++/17685
	* decl.c (grokdeclarator): Disallow declarations of operators as
	non-functions.

2004-10-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/17868
	* error.c (dump_expr): Add missing case for RDIV_EXPR.

2004-10-08  Kazu Hirata  <kazu@cs.umass.edu>

	* pt.c, search.c: Fix comment typos.

2004-10-08  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (dfs_walk, dfs_walk_real, dfs_unmark, markedp,
	unmarkedp): Remove.
	(dfs_skip_bases, dfs_walk_all, dfs_walk_once): New.
	* class.c (struct find_final_overrider_data): Remove most_derived,
	vpath_list and vpath fields.  Add path field.
	(dfs_find_final_ocerrider_1): Add DEPTH parameter. Adjust.
	(dfs_find_final_overrider): Rename to ...
	(dfs_find_final_overrider_pre): ... here. Adjust.
	(dfs_find_final_overrider_post): Adjust.
	(dfs_find_final_overrider_q): Fold into
	dfs_find_final_overrider_pre.
	(find_final_overrider): Adjust dfs searching.
	(dfs_modify_vtables): Don't mark binfo here.
	(modify_all_vtables): Use dfs_walk_once.
	(build_vtt_inits): Likwise. Use dfs_walk_all.
	(dfs_build_secondary_vptr_vtt_inits): Don't mark binfo here.
	Return dfs_skip_bases as appropriate.
	(dfs_fixup_binfo_vtbls): Return dfs_skip_bases as appropriate.
	* init.c (dfs_initialized_vtbl_ptrs): Return dfs_skip_bases as
	appropriate. Don't mark binfo here.
	(initialize_vtbl_ptrs): Use dfs_walk_once.
	* search.c (struct vbase_info): Remove unused struct.
	(access_in_type): Use dfs_walk_once.
	(dfs_access_in_type): Don't mark binfo here.
	(dfs_accessible_queue_p, dfs_accessible_p) Remove.
	Fold into ...
	(accessible_r): ... here. New. Specialize dfs_walk_once.
	(accessible_p): Use accessible_r.
	(lookup_field_queue_p): Remove. Fold into ...
	(lookup_field_r): ... here. Adjust.
	(lookup_member): Use dfs_walk_all.
	(dfs_walk_real, dfs_walk): Replace with ...
	(dfs_walk_all, dfs_walk_once): ... these.
	(dfs_walk_once_r, dfs_unmark_r): Workers for dfs_walk_once.
	(dfs_unmark, unmarkedp, markedp): Remove.
	(dfs_get_pure_virtuals): Don't mark binfo here.
	(get_pure_virtuals): Use dfs_walk_once.
	(dfs_debug_unmarked_p): Remove. Fold into ...
	(dfs_debug_mark): ... here.
	(note_debug_info_needed): Use dfs_walk_all.

2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>

	* pt.c (tsubst_expr) <case ASM_EXPR>: Look passed the
	CLEANUP_POINT_EXPR to get the asm expression.

2004-10-07  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (ICS_USER_FLAG): Remove comment about obsolete flag.
	(DECL_MEMBER_TEMPLATE_P): New macro.
	(is_member_template): Remove.
	(class_method_index_for_fn): New function.
	* pt.c (build_over_call): Use DECL_MEMBER_TEMPLATE_P.
	* class.c (finish_struct_methods): Remove out-of-date comment.
	* decl.c (copy_fn_p): Use DECL_MBMER_TEMPLATE_P.
	* decl2.c (check_classfn): Use DECL_MEMBER_TEMPLATE_P and
	class_method_index_for_fn.
	* pt.c (is_member_template): Remove.
	(is_member_template_class): Likewise.
	(optimize_specialization_lookup_p): New function.
	(retrieve_specialization): Optimize lookups for members that are
	not member templates.
	(register_specialization): Adjust accordingly.
	(build_template_decl): Add member_template_p parameter.  Set
	DECL_MEMBER_TEMPLATE_P.
	(process_partial_specialization): Adjust call to
	retrieve_specialization.
	(push_template_decl_real): Determine whether the template is a
	member template.
	(lookup_template_class): Use retrieve_specialization.
	(tsubst_decl): Adjust call to retrieve_specialization.
	(tsubst_exception_specification): New function.
	(tsubst): Use it.
	(tsubst_copy): Use DECL_MEMBER_TEMPLATE_P.
	(instantiate_template): Adjust call to retrieve_specialization.
	(regenerate_decl_from_template): Do not actually generate a new
	DECL.
	(instantiate_decl): Adjust call to retrieve_specialization.
	(class_method_index_for_fn): New method.

2004-10-07  Andrew Pinski  <pinskia@physics.uc.edu>

	* parser.c (cp_parser_asm_definition): Look passed the
	CLEANUP_POINT_EXPR to get the asm expression.

2004-10-06  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/17368
	* semantics.c (finish_asm_stmt): Asm expressions need cleanup
	also.

2004-10-05  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 6/n
	* pt.c (finish_member_template_decl, check_specialization_scope,
	maybe_process_partial_specialization, determine_specialization,
	check_explicit_specialization, maybe_check_template_type,
	process_partial_specialization, check_default_tmpl_args,
	push_template_decl_real, redeclare_class_template,
	convert_nontype_argument, coerce_template_parms,
	lookup_template_class, push_tinst_level,
	instantiate_class_template, tsubst_arg_types,
	tsubst_function_type, tsubst, tsubst_qualified_id,
	tsubst_copy_and_build, check_instantiated_args,
	do_decl_instantiation, do_type_instantiation,
	invalid_nontype_parm_type_p, check_specialization_namespace,
	convert_template_argument, determine_specialization,
	check_template_shadow, tsubst_decl
	instantiate_pending_templates): Use quoting marks.

2004-10-05  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/17829
	* parser.c (cp_parser_postfix_expression): Inhibit Koenig when
	unqualified lookup finds a member function.

2004-10-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 5/n
	* parser.c (cp_parser_name_lookup_error,
	cp_parser_diagnose_invalid_type_name,
	cp_parser_primary_expression, cp_parser_unqualified_id,
	cp_parser_nested_name_specifier_opt, cp_parser_labeled_statement,
	cp_parser_jump_statement, cp_parser_simple_declaration,
	cp_parser_decl_specifier_seq, cp_parser_mem_initializer_id,
	cp_parser_type_parameter, cp_parser_template_id,
	cp_parser_template_name, cp_parser_direct_declarator,
	cp_parser_parameter_declaration_list, cp_parser_class_head,
	cp_parser_base_specifier, cp_parser_lookup_name,
	cp_parser_late_parsing_default_args,
	cp_parser_optional_template_keyword
	cp_parser_elaborated_type_specifier, cp_parser_check_class_key,
	cp_parser_check_access_in_redeclaration): Use quoting marks.

	* name-lookup.c (supplement_binding, pushdecl,
	check_for_out_of_scope_variable, validate_nonmember_using_decl,
	do_nonmember_using_decl, lookup_tag, set_decl_namespace,
	push_namespace, do_namespace_alias, do_using_directive,
	ambiguous_decl, lookup_namespace_name, add_function): Likewise.

	* method.c (use_thunk): Likewise.

	* lex.c (unqualified_name_lookup_error,
	unqualified_fn_lookup_error): Likewise.

2004-10-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 4/n
	* except.c (decl_is_java_type, build_throw,
	is_admissible_throw_operand, check_handlers_1, check_handlers):
	Use quoting formats.
	* friend.c (add_friend, make_friend_class, do_friend): Likewise.
	* init.c (sort_mem_initializers, emit_mem_initializers,
	member_init_ok_or_else, expand_member_init, is_aggr_type,
	build_offset_ref, build_java_class_ref): Likewise.

2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 3/n
	* decl.c (pop_label, duplicate_decls, redeclaration_error_message,
	redeclaration_error_message, lookup_label, check_goto,
	make_typename_type, make_unbound_class_template,
	fixup_anonymous_aggr, check_tag_decl, start_decl, start_decl_1,
	grok_reference_init, layout_var_decl, maybe_commonize_var,
	check_for_uninitialized_const_var, reshape_init_array,
	reshape_init, check_initializer, cp_finish_decl,
	member_function_or_else, bad_specifiers, grokfndecl, grokvardecl,
	check_static_variable_definition, compute_array_index_type,
	create_array_type_for_decl, check_special_function_return_type,
	grokdeclarator, check_default_argument, grokparms,
	grok_ctor_properties, grok_op_properties,
	check_elaborated_type_specifier, xref_tag, finish_enum,
	build_enumerator, check_function_type, start_preparsed_function,
	store_parm_decls): Use quoting formats.
	* decl2.c (grok_array_decl, delete_sanity, check_member_template,
	check_java_method, check_classfn, finish_static_data_member_decl,
	grokfield, grokbitfield, grok_function_init,
	build_anon_union_vars, coerce_new_type, coerce_delete_type,
	check_default_args): Likewise.
	* parser.c (cp_parser_decl_specifier_seq): Likewise.

2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 2/n
	* class.c (build_base_path, add_method, alter_access,
	handle_using_decl, check_bases,
	maybe_warn_about_overly_private_class, find_final_overrider,
	warn_hidden, finish_struct_anon, add_implicitly_declared_members,
	check_bitfield_decl, check_field_decls, layout_empty_base,
	build_base_field, check_methods, layout_virtual_bases,
	warn_about_ambiguous_bases, layout_class_type, finish_struct_1,
	resolve_address_of_overloaded_function, instantiate_type,
	note_name_declared_in_class): Use format flag "q" for quoting.

2004-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	Convert diagnostics to use quoting flag q 1/n
	* error.c (locate_error): Ignore quoting flag q.
	* call.c (build_user_type_conversion_1, build_operator_new_call,
	build_object_call, op_error, build_conditional_expr,
	build_new_op, build_op_delete_call, enforce_access,
	convert_like_real, convert_arg_to_ellipsis, build_x_va_arg,
	convert_default_arg, build_over_call, build_new_method_call,
	joust, perform_implicit_conversion, initialize_reference): Use the
	quoting flag q.

2004-10-03  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/17797
	* typeck.c (build_reinterpret_cast): Return if the inner type
	is error_mark_node.

2004-10-01  Jan Hubicka  <jh@suse.cz>

	* semantics.c (expand_body): Update call of tree_rest_of_compilation.

2004-09-30  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (struct lang_decl): Shrink by reordering fields and
	turning operator_code and fixed_offset into bitfields.

2004-09-29  Joseph S. Myers  <jsm@polyomino.org.uk>

	* decl.c (duplicate_decls): Merge TREE_DEPRECATED.

2004-09-29  Jason Merrill  <jason@redhat.com>

	PR tree-optimization/17697
	* decl.c (duplicate_decls): Copy TREE_NOTHROW from newdecl to olddecl.

2004-09-28  Jason Merrill  <jason@redhat.com>

	PR middle-end/17525
	* class.c (build_base_field): Set TYPE_MODE.

2004-09-28  Roger Sayle  <roger@eyesopen.com>

	PR driver/17537
	* g++spec.c (lang_specific_driver): Unrecognized libraries, other
	than -lc and -lm, may require linking against libstc++.

2004-09-28  Kazu Hirata  <kazu@cs.umass.edu>

	* tree.c: Fix a comment typo.

2004-09-28  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): Remove.
	(struct secondary_vptr_vtt_init_data_s): New.
	(build_vtt_inits): Adjust dfs_walkers.
	(dfs_build_secondary_vptr_vtt_inits): Caller data is a
	secondary_vptr_vtt_init_data_s structure. Adjust.
	(dfs_ctor_vtable_bases_queue_p): Remove.
	(dfs_fixup_binfo_vtbls): No need to clear BINFO_MARKED. Simplify.

	* pt.c (struct get_template_base_data_s): Remove.
	(get_template_base_r): Fold into get_template_base.
	(get_template_base): Walk base binfos directly in inheritance
	graph order.

2004-09-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17642
	* cp-tree.h (fold_if_not_in_template): New function.
	* call.c (build_conditional_expr): Use fold_if_not_in_template.
	(build_cxx_call): Likewise.
	* cvt.c (convert_to_complex): Likewise.
	(ocp_convert): Likewise.
	(convert): Likewise.
	(convert_force): Likewise.
	* decl.c (compute_array_index_type): Clear
	processing_template_decl while folding array bounds.
	* pt.c (convert_nontype_argument): Clear
	processing_template_decl while processing non-type argument
	initialization.
	* tree.c (fold_if_not_in_template): New function.
	* typeck.c (build_class_member_access_expr): Use
	fold_if_not_in_template.
	(build_array_ref): Likewise.
	(build_binary_op): Likewise.  Do not try to optimize computations
	when processing templates.
	(cp_pointer_int_sum): Use fold_if_not_in_template.
	(pointer_diff): Likewise.
	(build_unary_op): Likewise.
	(build_reinterpret_cast): Likewise.
	(get_delta_difference): Likewise.
	(expand_ptrmemfunc_cst): Likewise.
	(dubious_conversion_warnings): Likewise.

2004-09-27  Matt Austern  <austern@apple.com>

	* cp/parser.c (struct cp_token): New one-bit field , implicit_extern_c
	(cp_lexer_get_preprocessor_token): Set implicit_extern_c for
	tokens that come from headers that are implicitly extern "C".
	(struct cp_parser): new one-bit field, implicit_extern_c.
	(cp_parser_new): Set parser's implicit_extern_c to false.
	(cp_parser_translation_unit): Pop lang context if we were in a
	header that was implicitly extern "C".
	(cp_parser_declaration_seq_opt): Push/pop lang context as
	required by the token's and parser's implicit_extern_c.

2004-09-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17585
	* cp-tree.h (shared_member_p): Declare.
	* search.c (shared_member_p): Give it external linkage.
	* semantics.c (finish_qualified_id_expr): Use it.
	(finish_id_expression): Likewise.

	PR c++/17585
	* semantics.c (finish_id_expression): Do not add "this->" to
	static member functions.

2004-09-27  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/17681
	* error.c (dump_type): Change TREE_VEC case into TREE_BINFO.

	* class.c (struct count_depth_data): Remove.
	(dfs_depth_post, dfs_depth_q): Remove.
	(find_final_overrider): Use number of vbase classes as depth
	bound.

	* cp-tree.h (types_overlap_p): Remove.
	* search.c (struct overlap_info): Remove.
	(dfs_check_overlap, dfs_no_overlap_yet, types_overlap_p): Remove.

	* pt.c (GTB_VIA_VIRTUAL, GTB_IGNORE_TYPE): Remove.
	(get_template_base_recursive): Remove. Replace with ...
	(get_template_base_r): ... this.
	(struct get_template_base_data_s): New.
	(get_template_base): Use get_template_base_r via dfs_walk.  Always
	return NULL on failure.
	(unify): Remove error_mark_node check from get_template_base result.

2004-09-24  Paolo Bonzini  <bonzini@gnu.org>

	* parser.c (cp_parser_expression_stack): Clarify why it is
	an array of NUM_PREC_VALUES elements.
	(cp_parser_binary_expression): Clarify why we do not need to
	handle stack overflow.

2004-09-24  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/16889
	* search.c (lookup_field_queue_p): Correct check for hidden base.

	* search.c (bfs_walk): Remove.
	(lookup_member): Use dfs_walk_real.
	(dfs_walk_real): Move and adjust documentation from bfs_walk.

2004-09-23  Zack Weinberg  <zack@codesourcery.com>

	* decl.c (grokfndecl): If ::main is found not to return int,
	correct it after issuing a diagnostic.
	(grokdeclarator): If the incoming type was error_mark_node, do
	not complain about declaring something with no type.
	(start_function): Change check for ::main not returning int to
	an assertion, as grokfndecl now catches this when the user did it.
	* init.c (perform_member_init, sort_mem_initializers)
	(emit_mem_initializers): Make most diagnostics be issued on
	the line of current_function_decl, not whatever the current
	input line is.
	* parser.c (cp_lexer_peek_token_emit_debug_info): Surround
	definition and declaration with #ifdef ENABLE_CHECKING.
	Avoid unnecessary use of fprintf.
	(cp_lexer_print_token, cp_lexer_debug_stream): Adjust stub
	definitions to avoid warnings.
	(cp_lexer_new_main): Add assertion that first token is not a
	padding token.
	(cp_lexer_new_from_token_array): Fold into ...
	(cp_lexer_new_from_tokens): ... here.  Add assertion that
	first token is not a padding token.
	(cp_lexer_set_source_position_from_token): Move nearer to callers.
	Remove unused lexer argument.
	(cp_lexer_peek_token): Just print debugging report (if enabled)
	and return lexer->next_token.
	(cp_lexer_skip_purged_tokens): Delete.
	(cp_lexer_next_token_is, cp_lexer_next_token_is_not): Make
	inline, simplify bodies.
	(cp_lexer_peek_nth_token): Add debugging report a la
	cp_lexer_peek_token.
	(cp_lexer_consume_token): Correct commentary.  Advance over
	purged tokens here.  Set current source position here, from
	token to be returned.  Avoid unnecessary use of fprintf.
	(cp_lexer_purge_token): Advance next_token pointer over this and
	subsequent purged tokens.
	(cp_parser_error): Adjust source position to that of the
	peeked token.
	(cp_parser_push_lexer_for_tokens, cp_parser_pop_lexer): New functions.
	(cp_parser_string_literal): Remove some excessive cleverness.
	(cp_parser_enum_specifier): Call start_enum before consuming
	the opening brace.
	(cp_parser_member_declaration): Make the "extra semicolon"
	diagnostic consistently-worded with the other place this is
	diagnosed.  Explicitly set the diagnostic location to the
	location of the offending semicolon.
	(cp_parser_enclosed_template_argument_list): Use %</%> quoting
	in diagnostics.  Do not use cp_parser_require.  Set location
	of diagnostics about improper use of '>>' to location of
	offending token.
	(cp_parser_late_parsing_for_member):
	Use cp_parser_push_lexer_for_tokens and cp_parser_pop_lexer.
	(cp_parser_late_parsing_default_args): Likewise.  Manually
	move some logic outside the loop.

2004-09-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/17618
	* cvt.c (cp_convert_to_pointer): Return early when the type is
	an error_mark_node.

2004-09-21 Fariborz Jahanian <fjahanian@apple.com>

	PR c++/13989
	PR c++/9844
	* decl.c (grokfndecl): Add new argument "attrlist", use it
	to call cplus_decl_attributes.
	(start_function): Remove call to cplus_decl_attributes.
	* cvt.c (ocp_convert): Add support to use type conversion
	function to vector type.
	* parser.c (cp_parser_conversion_type_id): Add attributes, if any,
	to the parsed type.

2004-09-23  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/17596

	* parser.c (cp_parser_token_tree_map_node,
	cp_parser_pm_expression, cp_parser_additive_expression,
	cp_parser_multiplicative_expression, cp_parser_shift_expression,
	cp_parser_relational_expression, cp_parser_equality_expression,
	cp_parser_and_expression, cp_parser_exclusive_or_expression,
	cp_parser_inclusive_or_expression,
	cp_parser_logical_and_expression,
	cp_parser_logical_or_expression): Removed.
	(enum cp_parser_prec, struct cp_parser_token_tree_map_node,
	binops, binops_by_token): New.
	(cp_parser_assignment_expression): Use cp_parser_binary_expression.
	(cp_parser_new): Initialize binops_by_token.
	(cp_parser_binary_expression): Rewritten.
	(N_CP_TTYPES): New.

2004-09-23  Kazu Hirata  <kazu@cs.umass.edu>

	* parser.c: Fix a comment typo.

2004-09-23  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/17620
	* decl.c (xref_basetypes): Look through typedefs before checking
	for duplicate base.

2004-09-22  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (unemitted_tinfo_decls): Make a VEC(tree).
	* decl2.c (cp_finish_file): Adjust tinfo decl emission loop.
	* rtti.c (unemitted_tinfo_decls): Make a VEC(tree).
	(init_rtti_processing): Initialize it to something realistic.
	(get_tinfo_decl): Adjust pushing the new decl.

	* cp-tree.h (struct lang_type_class): Remove marked flags, add
	diamond_shaped and repeated_base flags.  Reorder to keep 8-bit blocks.
	(TYPE_MARKED_P): New.
	(CLASSTYPE_DIAMOND_SHAPED_P, CLASSTYPE_REPEATED_BASE_P): New.
	(CLASSTYPE_MARKED_N, SET_CLASSTYPE_MARKED_N,
	CLEAR_CLASSTYPE_MARKED_N): Remove.
	(CLASSTYPE_MARKED_*, SET_CLASSTYPE_MARKED_*,
	CLEAR_CLASSTYPE_MARKED_*): Remove.
	* decl.c (xref_basetypes): Use TYPE_MARKED_P. Determine diamond
	shaped and repeated base properties.
	* lex.c (cxx_make_type): Don't clear TYPE_ALIAS_SET.
	* rtti.c (dfs_class_hint_mark, dfs_class_hint_unmark,
	class_hint_flags): Remove.
	(get_pseudo_ti_init): Use CLASSTYPE_REPEATED_BASE_P and
	CLASSTYPE_DIAMOND_SHAPED_P.

2004-09-21  Ziemowit Laski  <zlaski@apple.com>

	* cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved here from
	cp-objcp-common.h.
	(objcp_tsubst_copy_and_build): Reformat function signature.
	* cp-objcp-common.h (objcp_tsubst_copy_and_build): Likewise.
	(LANG_HOOKS_FOLD_OBJ_TYPE_REF): Moved to cp-lang.c.

2004-09-21  Zack Weinberg  <zack@codesourcery.com>

	* parser.c (cp_lexer_peek_token, cp_lexer_consume_token):
	Don't handle CPP_PRAGMA tokens specially.
	(cp_lexer_handle_pragma): Use cp_lexer_consume_token.  Don't
	purge the token; do clear token->value after processing.  Add
	assertion at beginning that token->value is nonzero.
	(cp_parser_statement, cp_parser_declaration_seq_opt): Handle
	CPP_PRAGMA as a full statement or declaration in its own right.

2004-09-21  Matt Austern  <austern@apple.com>

	PR c++/15049
	* decl.c (grokvardecl): Accept declarations of global variables
	using anonymous types.

2004-09-21  Roger Sayle  <roger@eyesopen.com>

	PR c++/7503
	* tree.c (lvalue_p_1):  Disallow MIN_EXPR and MAX_EXPR as lvalues
	if either operand has side-effects.
	* typeck.c (rationalize_conditional_expr): Assert that neither
	operand of MIN_EXPR or MAX_EXPR has side-effects.
	(build_modify_expr):  Add support for MIN_EXPR and MAX_EXPR.
	Check that the "lhs" is a valid lvalue, i.e. that neither operand
	of a MIN_EXPR or MAX_EXPR has a side-effect.

2004-09-21  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (struct lang_type_header): Remove
	uses_multiple_inheritance field.
	(TYPE_USES_MULTIPLE_INHERITANCE): Remove.
	(TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P): Remove.
	(TYPE_USES_VIRTUAL_BASECLASSES): Remove.
	(DECL_NEEDS_VTT_PARM_P): Use CLASSTYPE_VBASECLASSES.
	(TYPE_CONTAINS_VPTR_P): Likewise.
	* call.c (add_template_candidate_real): Use
	CLASSTYPE_VBASECLASSES.
	(build_special_member_call): Likewise.
	* class.c (finish_struct_bits): Remove
	TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P & TYPE_USES_VIRTUAL_BASECLASSES
	bookkeeping.
	(check_bases_and_members): Use TYPE_CONTAINS_VPTR_P.
	(create_vtable_ptr): Remove TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P
	bookkeeping.
	(build_vtt_inits): Use CLASSTYPE_VBASECLASSES.
	(accumulate_vtbl_inits, build_vbase_offset_vtbl_entries):
	Likewise.
	* decl.c (xref_basetypes): Remove TYPE_USES_MULTIPLE_INHERITANCE,
	TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
	bookkeeping.
	(cxx_maybe_build_cleanup): Use CLASSTYPE_VBASECLASSES.
	* decl2.c (maybe_retrofit_in_chrg): Likewise.
	* init.c (expand_member, push_base_cleanups): Likewise.
	* pt.c (instantiate_class_template): Remove
	TYPE_USES_MULTIPLE_INHERITANCE,
	TYPE_BASE_CONVS_MAY_REQUIRE_CODE_P, TYPE_USES_VIRTUAL_BASECLASSES
	bookkeeping.
	* ptree.c (cxx_print_type): Remove TYPE_USES_MULTIPLE_INHERITANCE
	check.
	* typeck2.c (process_init_constructor): Replace some sorrys with
	asserts.

2004-09-21  Andreas Tobler  <a.tobler@schweiz.ch>

	* decl.c (reshape_init_array): Initialize max_index_cst to fix
	bootstrap failure.

2004-09-20  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17530
	* pt.c (tsubst): Fix parentheses to accomodate emacs.
	(tsubst_baselink): If we get a single function, mark it as used.

2004-09-20  Matt Austern <austern@apple.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* decl.c (make_rtl_for_nonlocal_decl, start_preparsed_function):
	Apply lbasename to input_filename before passing to get_fileinfo.
	* semantics.c (begin_class_definition): Likewise.
	* lex.c (handle_pragma_interface): Apply get_fileinfo to the
	correct filename.  Rename variables to be less confusing.
	(handle_pragma_implementation): Likewise.  Disable "appears
	after file is included" diagnostic.

	* parser.c (struct cp_token): Add in_system_header fiag.
	(CP_TOKEN_BLOCK_NUM_TOKENS, struct cp_token_block)
	(CP_TOKEN_BUFFER_SIZE, cp_token_cache_push_token)
	(CPP_NONE, cp_lexer_read_token): Delete.
	(struct cp_lexer): Remove first_token, string_tokens,
	main_lexer_p fields.  Clarify comments.
	(struct cp_token_cache): Now just a pair of pointers.
	(CP_LEXER_BUFFER_SIZE): New #define.
	(CPP_PURGED): New fake token type.
	(cp_lexer_new_from_token_array, cp_lexer_destroy)
	(cp_lexer_peek_token_emit_debug_info, cp_lexer_skip_purged_tokens)
	(cp_lexer_handle_pragma, cp_token_cache_new, cp_parser_string_literal):
	New functions.
	(cp_lexer_new_from_tokens): Now a simple wrapper around
	cp_lexer_new_from_token_array.
	(cp_lexer_set_source_position_from_token): Also update
	in_system_header.
	(cp_lexer_next_token, cp_lexer_prev_token, cp_lexer_advance_token):
	Don't wrap round.
	(cp_lexer_token_difference): Dont handle wrapping round.
	(cp_lexer_new_main): Enable pragma deferral and raw strings,
	read the entire translation unit through c_lex_with_flags into
	this lexer's buffer, then turn raw strings back off again.
	(cp_lexer_grow_buffer): Adjust for buffer no longer being circular.
	(cp_lexer_get_preprocessor_token): No need to handle not being
	the main lexer.  Set token->in_system_header too.
	(cp_lexer_peek_token): Skip purged tokens.  Feed pragma tokens
	to cp_lexer_handle_pragma.  No need to call cp_lexer_read_token.
	(cp_lexer_peek_nth_token): Likewise.
	(cp_lexer_purge_token): Mark the token PURGED, don't shift all
	the other tokens down.
	(cp_lexer_purge_tokens_after): Likewise.
	(cp_lexer_save_tokens, cp_lexer_rollback_tokens): Don't worry
	about there being no tokens.
	(cp_lexer_print_token): Revise to give useful information on
	all tokens.
	(struct cp_parser): Add field translate_strings_p.
	(cp_parser_new): Initialize it.
	(cp_parser_translation_unit): Destroy the lexer when done.
	(cp_parser_parameter_declaration): Restructure saving of
	default arguments.
	(cp_parser_save_member_function_body): Likewise.
	(cp_parser_check_for_invalid_template_id)
	(cp_parser_nested_name_specifier_opt, cp_parser_template_id):
	Adjust calls to cp_lexer_advance_token.
	(cp_parser_skip_to_closing_parenthesis, cp_parser_declaration):
	No need to fiddle c_lex_string_translate.
	(cp_parser_primary_expression, cp_parser_linkage_specification)
	(cp_parser_asm_definition, cp_parser_asm_specification_opt)
	(cp_parser_asm_operand_list, cp_parser_asm_clobber_list)
	Use cp_parser_string_literal.
	(cp_parser_attribute_list): Save and restore
	parser->translate_strings_p, not c_lex_string_translate.
	(cp_parser_cache_group): Delete.
	(cp_parser_cache_group_1): Rename cp_parser_cache_group.  Do
	not take a cache argument.

2004-09-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14179
	* decl.c (reshape_init): Extract array handling into...
	(reshape_init_array): New function. Use integers instead of trees
	for indices. Handle out-of-range designated initializers.

2004-09-20  Steven Bosscher  <stevenb@suse.de>

	* lex.c (cxx_init): Don't set the ridpointer for RID_NULL
	to null_node.

2004-09-19  Mark Mitchell  <mark@codesourcery.com>

	* decl2.c (determine_visibility): Allow class visibility
	directives to override targetm.cxx.export_class_data.

2004-09-18  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c, semantics.c: Follow spelling conventions.
	* class.c: Fix a comment typo.

2004-09-16  Geoffrey Keating  <geoffk@apple.com>

	PR pch/13361
	* cp/lex.c (handle_pragma_interface): Duplicate string from tree.
	(handle_pragma_implementation): Likewise.

2004-09-17  Jeffrey D. Oldham  <oldham@codesourcery.com>
	    Zack Weinberg  <zack@codesourcery.com>

	* cp-tree.def: Use tree_code_class enumeration constants
	instead of code letters.
	* call.c, class.c, cp-gimplify.c, cp-lang.c, cxx-pretty-print.c
	* mangle.c, pt.c, semantics.c, tree.c, typeck.c:
	Update for new tree-class enumeration constants.

2004-09-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16002
	* parser.c (cp_parser_simple_declaration): Commit to tentative
	parses after seeing a decl-specifier.
	(cp_parser_simple_declaration): Eliminate spurious message.
	(cp_parser_init_declarator): Adjust error message.

	PR c++/16029
	* lex.c (unqualified_name_lookup_error): Mark the dummy
	declaration as used.

	PR c++/17501
	* parser.c (cp_parser_nested_name_specifier): Do not resolve
	typename types if the user explicitly said "typename".

2004-09-16  Andrew MacLeod  <amacleod@redhat.com>

	* error.c (dump_decl): Make sure there is lang_specific info before
	checking for DTOR and CTOR decls.

2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (copy_virtuals): Remove.
	(build_primary_vtable): Use copy_list directly.
	(build_secondary_vtable): Likewise.
	(update_vtable_entry_for_fn): Clear BV_CALL_INDEX here.
	(create_vtable_ptr): Likewise.

2004-09-16  Kazu Hirata  <kazu@cs.umass.edu>

	* search.c: Follow spelling conventions.

2004-09-16  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (struct lang_type_class): Make pure_virtuals a
	VEC(tree).
	(CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
	comments.
	* call.c (build_new_method_call): Don't confirm a pure virtual is
	in CLASSTYPE_PURE_VIRTUALS.  Reorder checks. Make it a warning.
	* class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
	(fixup_inline_methods, finish_struct): Likewise.
	* decl.c (finish_method): Likewise.
	* search.c (dfs_get_pure_virtuals, get_pure_virtuals):
	CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
	* typeck2.c (abstract_virtuals_error): Likewise. Truncate the
	vector to avoid repeating the list in error messages.

2004-09-15  Mark Mitchell  <mark@codesourcery.com>

	* cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Define.
	* cp-tree.h (cxx_comdat_group): Declare.
	* decl.c (cxx_comdat_group): New function.

2004-09-15  Nathan Sidwell  <nathan@codesourcery.com>

	* search.c (get_pure_virtuals): Remove unused variables.

	* cp-tree.h (struct lang_decl_flags): Remove
	needs_final_overrider.
	(DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
	* decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
	* class.c (finish_struct_bits): Correct comment about
	CLASSTYPE_PURE_VIRTUALS.
	* search.c (get_pure_virtuals): Remove useless loop.

2004-09-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17324
	* mangle.c (partially_mangled_name): New variable.
	(partially_mangled_name_len): Likewise.
	(save_partially_mangled_name): New function.
	(restore_partially_mangled_name): Likewise.
	(write_encoding): Save and restore partially mangled names around
	calls to get_mostly_instantiated_function_type.
	(write_unqualified_name): Likewise.

2004-09-14  Nathan Sidwell  <nathan@codesourcery.com>

	* pt.c (unify): Replace gcc_unreachable with gcc_assert.

2004-09-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16162
	* parser.c (cp_parser_id_expression): Correct value for
	is_declarator.
	(cp_parser_nested_name_specifier_opt): Look through typenames as
	necessary.
	(cp_parser_template_name): Honor check_dependency_p.

	PR c++/16716
	* parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
	Robustify.

	PR c++/17327
	* pt.c (unify): Add ENUMERAL_TYPE case.  Replace sorry with
	gcc_unreacable.

2004-09-12  Richard Henderson  <rth@redhat.com>

	PR c++/16254
	* semantics.c (maybe_cleanup_point_expr): Don't call fold.
	* typeck.c (condition_conversion): Likewise.

2004-09-11  Richard Henderson  <rth@redhat.com>

	PR c++/17404
	* pt.c (cur_stmt_expr): Move from tsubst_expr.
	(tsubst_expr) <case STMT_EXPR>: Move ...
	(tsubst_copy_and_build): ... here.

2004-09-10  Zack Weinberg  <zack@codesourcery.com>

	* cp-tree.h (interface_only, interface_unknown): Delete declarations;
	comment explaining them moved to c-common.h.
	* lex.c (interface_only, interface_unknown, extract_interface_info):
	Delete definitions.
	(cxx_finish): Don't reset interface_unknown.
	(handle_pragma_interface): Don't set interface_only and
	interface_unknown; just the like-named fields in finfo.
	(handle_pragma_implementation): Adjust comment.
	* decl2.c (cp_finish_file): Don't reset interface_only and
	interface_unknown.
	* method.c (synthesize_method): Don't reset interface_unknown or
	call extract_interface_info.
	* pt.c (pop_tinst_level): Don't call extract_interface_info.
	* decl.c (start_cleanup_fn): Don't save or restore interface_only
	and interface_unknown.
	(make_rtl_for_nonlocal_decl): Call get_fileinfo on input_filename
	and use the result instead of the interface_only/interface_unknown
	globals.
	(start_preparsed_function): Likewise.
	* lex.c (cxx_make_type): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	(expand_body): Don't call extract_interface_info.

2004-09-10  Ziemowit Laski  <zlaski@apple.com>

	* decl.c (objc_mark_locals_volatile): Make description of
	routine more descriptive; only mark VAR_DECLs at each
	binding level.

2004-09-10  Richard Henderson  <rth@redhat.com>

	PR c++/17386
	* call.c (build_vfield_ref): Move...
	* class.c (build_vfield_ref): ... here.  Convert datum to the
	primary base containing the vptr.
	(make_new_vtable): Simplify build_primary_vtable arguments.
	(finish_struct_1): Do not duplicate TYPE_VFIELD.
	* typeck.c (build_class_member_access_expr): Don't warn for
	null object access to base fields.

2004-09-10  Ziemowit Laski  <zlaski@apple.com>

	* decl.c (objc_get_current_scope, objc_mark_locals_volatile):
	New functions, to be called from ObjC++.

2004-09-10  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c, cp-tree.h, decl.c, decl2.c, mangle.c,
	name-lookup.h, parser.c, search.c, semantics.c, typeck2.c: Fix
	comment typos.

2004-09-09  Ziemowit Laski  <zlaski@apple.com>

	* typeck.c (build_c_cast): Preserve the cast if casting
	to and from an Objective-C type.

2004-09-09  Ziemowit Laski  <zlaski@apple.com>

	* Make-lang.in (cp/typeck.o): Depend on c-common.h.
	* typeck.c: Include c-common.h.
	(comptypes): For RECORD_TYPEs, call objc_comptypes() and
	return the result if nonnegative.

2004-09-09  Zack Weinberg  <zack@codesourcery.com>

	* decl2.c (import_export_class)
	* lex.c (handle_pragma_interface):
	Test MULTIPLE_SYMBOL_SPACES with if, not #ifdef.

2004-09-08  Ziemowit Laski  <zlaski@apple.com>

	* Make-lang.in (cp/semantics.o): Depend on c-common.h.
	* semantics.c: Include c-common.h.
	(finish_compound_stmt): Call objc_clear_super_receiver().

2004-09-08  Ziemowit Laski  <zlaski@apple.com>

	* cp-tree.h (do_poplevel): New prototype.
	* semantics.c (do_poplevel): Make externally visible.

2004-09-08  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (tree_pair_s): Define a GC'd vector.
	* name-lookup.h (cxx_saved_binding, cp_class_binding): Likewise.
	* semantics.c (deferred_access): Likewise.

2004-09-06  Daniel Jacobowitz  <dan@debian.org>

	* semantics.c (expand_body): Assert that we are not nested.

2004-09-06  Zack Weinberg  <zack@codesourcery.com>

	* decl.c (build_enumerator): Use add_double and int_fits_type_p
	instead of cp_build_binary_op, to avoid creating short-lived trees.
	* parser.c (cp_parse_type_specifier <RID_ENUM>): Use two-token
	lookahead instead of backtracking.  Move some code to avoid a
	conditional branch.
	(cp_parser_enum_specifier): Avoid duplication of effort with caller.
	Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.
	(cp_parser_enumerator_list, cp_parser_enumerator_definition):
	Use cp_lexer_next_token_is/cp_lexer_next_token_is_not as appropriate.

2004-09-04  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	* decl.c (grok_declarator): Remove a redundant semicolon.

	* parser.c (cp_parser_decl_specifier_seq, cp_parser_type_specifier):
	Correct comments describing function parameters.

2004-09-03  Matt Austern  <austern@apple.com>
	Compile speed improvement.
	* parser.c (cp_lexer_print_token): Only define if ENABLE_CHECKING set.
	Otherwise define a stub macro that expands to nothing.
	(cp_lexer_debugging_p): Only define if ENABLE_CHECKING set.  Otherwise
	define a stub macro that expands to 0.
	(cp_lexer_start_debugging): Only define if ENABLE_CHECKING set.
	(cp_lexer_stop_debugging): Likewise.
	(cp_lexer_debug_stream): Only define if ENABLE_CHECKING set.  Otherwise
	define a stub macro that expands to NULL.
	(cp_lexer_new_main): Only set debugging_p if ENABLE_CHECKING set.
	(cp_lexer_new_from_tokens): Likewise.

2004-09-03  Jan Hubicka  <jh@suse.cz>

	* decl.c (finish_function): Clean out pointers we no longer need.

2004-09-03  Jan Beulich  <jbeulich@novell.com>

	* g++spec.c (MATH_LIBRARY_PROFILE): Default to MATH_LIBRARY rather
	than "-lm".

2004-09-02  Paul Brook  <paul@codesourcery.com>

	* decl2.c (determine_visibility): Only check data visibility
	for VAR_DECLS.

2004-08-31  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): New macro.
	* class.c (build_ctor_vtbl_group): Set DECL_CONSTRUCTION_VTABLE_P.
	* decl2.c (determine_visibility): Honor
	TARGET_CXX_EXPORT_CLASS_DATA.

	* class.c (key_method): Rename to ...
	(determine_key_method): ... this.
	(finish_struct_1): Adjust accordingly.
	* cp-tree.h (key_method): Declare.
	* decl2.c (maybe_emit_vtables): Determine the key method here if
	it has not already been done.

2004-08-31  Ziemowit Laski  <zlaski@apple.com>

	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-objcp-common.o.
	(cp/cp-lang.o): Depend on debug.h, gtype-cp.h and cp/cp-objcp-common.h.
	(cp/cp-decl.c): Do not depend on gtype-cp.h.
	(cp/cp-objcp-common.o): New target.
	* cp-lang.c: Include debug.h, cp-objcp-common.h and gtype-cp.h.
	(cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size,
	cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics): Move
	prototypes and definitions to cp-objcp-common.h and cp-objcp-common.c,
	respectively.
	(LANG_HOOKS_TREE_SIZE, LANG_HOOKS_FINISH,
	LANG_HOOKS_CLEAR_BINDING_STACK, LANG_HOOKS_INIT_OPTIONS,
	LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
	LANG_HOOKS_HANDLE_FILENAME, LANG_HOOKS_MISSING_ARGUMENT,
	LANG_HOOKS_POST_OPTIONS, LANG_HOOKS_GET_ALIAS_SET,
	LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_EXPAND_EXPR,
	LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_PARSE_FILE,
	LANG_HOOKS_DUP_LANG_SPECIFIC_DECL, LANG_HOOKS_TRUTHVALUE_CONVERSION,
	LANG_HOOKS_SET_DECL_ASSEMBLER_NAME, LANG_HOOKS_MARK_ADDRESSABLE,
	LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
	LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
	LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_PRINT_ERROR_FUNCTION,
	LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL, LANG_HOOKS_WRITE_GLOBALS,
	LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
	LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
	LANG_HOOKS_ATTRIBUTE_TABLE, LANG_HOOKS_TREE_INLINING_WALK_SUBTREES,
	LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
	LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS,
	LANG_HOOKS_TREE_INLINING_AUTO_VAR_IN_FN_P,
	LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
	LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P,
	LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
	LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN, LANG_HOOKS_EXPR_SIZE,
	LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR,
	LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_MAKE_TYPE,
	LANG_HOOKS_TYPE_FOR_MODE, LANG_HOOKS_TYPE_FOR_SIZE,
	LANG_HOOKS_SIGNED_TYPE, LANG_HOOKS_UNSIGNED_TYPE,
	LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE, LANG_HOOKS_INCOMPLETE_TYPE_ERROR,
	LANG_HOOKS_TYPE_PROMOTES_TO, LANG_HOOKS_REGISTER_BUILTIN_TYPE,
	LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_FOLD_OBJ_TYPE_REF): Move
	hooks to cp-objcp-common.h.
	(finish_file): New function.
	* cp-objcp-common.c: New file.
	* cp-objcp-common.h: New file.
	* cp-tree.h (cp_finish_file): New prototype.
	* decl.c: Do not include gtype-cp.h.
	* decl2.c (finish_file): Rename to cp_finish_file.

2004-08-31  Richard Henderson  <rth@redhat.com>

	PR c++/17221
	* pt.c (tsubst_expr): Move OFFSETOF_EXPR handling ...
	(tsubst_copy_and_build): ... here.

2004-08-30  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (initialize_artificial_var): Declare.
	* decl.c (initialize_artifical_var): New function.
	* class.c (initialize_array): Remove.
	(initialize_vtable): Use initialize_artificial_var.
	(build_vtt): Likewise.
	(build_ctor_vtbl_group): Likewise.

2004-08-30  Richard Henderson  <rth@redhat.com>

	* class.c (build_base_path): Use build_address directly.
	* typeck.c (build_unary_op): Don't lower &a.b to pointer
	arithmetic directly.
	* typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
	means !initializer_constant_valid_p.

2004-08-30  Richard Henderson  <rth@redhat.com>

	* class.c (fixed_type_or_null): Use get_base_address before
	assuming an ADDR_EXPR is non-null.

2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>

	* name-lookup.c (pop_binding, pushdecl,
	set_identifier_type_value_with_scope, push_overloaded_decl,
	arg_assoc_type): Replace abort with gcc_assert or gcc_unreachable.
	* parser.c (cp_parser_diagnose_invalid_type_name,
	cp_parser_postfix_expression, cp_parser_unary_expression,
	cp_parser_check_declarator_template_para): Likewise.
	* pt.c (push_inline_template_parms_recursive,
	check_explicit_specialization, convert_nontype_argument,
	coerce_template_template_parms, uses_template_parms,
	instantiate_class_template, tsubst_decl, tsubst, tsubst_copy,
	tsubst_expr, instantiate_template,
	maybe_adjust_types_for_deduction, type_unification_real,
	resolve_overloaded_unification, template_decl_level,
	type_dependent_expression_p): Likewise.
	* search.c (lookup_base_r): Likewise.
	* semantics.c (finish_stmt_expr, simplify_aggr_init_expr): Likewise.
	* tree.c (lvalue_p_1, count_functions, cxx_printable_name,
	verify_stmt_tree_r, get_type_decl, stabilize_call): Likewise.
	* typeck.c (common_type, get_member_function_from_ptrfunc,
	build_binary_op, build_unary_op, expand_ptrmemfunc_cst): Likewise.
	* typeck2.c (cxx_incomplete_type_diagnostic,
	split_nonconstant_init_1, store_init_value,
	process_init_constructor): Likewise.

2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>

	* call.c (check_dtor_name): Replace abort with gcc_assert or
	gcc_unreachable.
	(build_call, add_builtin_candidate, build_new_op,
	convert_like_real, build_over_call, in_charge_arg_for_name,
	source_type, joust): Likewise.
	* class.c (build_simple_base_path, get_vcall_index,
	finish_struct_1, instantiate_type, get_enclosing_class,
	add_vcall_offset_vtbl_entries_1, cp_fold_obj_type_ref): Likewise.
	* cp-gimplify.c (cp_genericize): Likewise.
	* cp-lang.c (cp_expr_size, cp_tree_size): Likewise.
	* cvt.c (cp_convert_to_pointer, ocp_convert): Likewise.
	* decl.c (poplevel, make_unbound_class_template, reshape_init,
	check_special_function_return_type, grokdeclarator,
	grok_op_properties, tag_name, xref_tag, start_preparsed_function,
	finish_function): Likewise.
	* decl2.c (grokfield, maybe_emit_vtables):Likewise.
	* error.c (dump_global_iord, dump_decl, dump_template_decl,
	language_to_string): Likewise.
	* except.c (choose_personality_routine): Likewise.
	* friend.c (do_friend): Likewise.
	* g++spec.c (lang_specific_driver): Likewise.
	* init.c (build_zero_init, expand_default_init, build_new_1,
	build_vec_delete_1, build_vec_init, build_dtor_call): Likewise.
	* lex.c (retrofit_lang_decl, cp_type_qual_from_rid): Likewise.
	* mangle.c (add_substitution, write_unscoped_name,
	write_template_prefix, write_identifier,
	write_special_name_destructor, write_type, write_builtin_type,
	write_expression, write_template_param,
	write_java_integer_type_codes): Likewise.
	* method.c (implicitly_declare_fn): Likewise.

2004-08-30  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (BINFO_PRIMARY_P): Use a binfo flag.
	(BINFO_INDIRECT_PRIMARY_P): Remove.
	* class.c (determine_primary_base): Rename to ...
	(determine_primary_bases): ... here.  Set all primary bases.
	(set_primary_base): Remove.
	(mark_primary_bases): Remove.
	(build_simple_base_path, walk_subobject_offsets,
	propagate_binfo_offsets, end_of_class): Adjust.
	(layout_class_type): Rename determine_primary_base call.
	(dump_class_hierarchy_r, dump_vtable): Adjust. Don't pass a binfo
	to type_as_string.
	(dfs_build_secondary_vptr_vtt_inits, dfs_accumulate_vtbl_inits,
	build_rtti_vtbl_entries): Adjust.
	* init.c (build_vtbl_address): Adjust.

	* cp-tree.h (SET_BINFO_NEW_VTABLE_MARKED): Use gcc_assert.

2004-08-28  Ziemowit Laski  <zlaski@apple.com>

	* Make-lang.in (CXX_OBJS): Split up into CXX_OBJS and
	CXX_AND_OBJCXX_OBJS.
	(CXX_C_OBJS): Include in CXX_AND_OBJCXX_OBJS instead of listing
	separately on the link line.

2004-08-28  Jason Merrill  <jason@redhat.com>

	* decl.c (expand_static_init): Avoid bogus warnings.

2004-08-27  Jason Merrill  <jason@redhat.com>

	PR c++/16851
	* tree.c (stabilize_init): See through a COMPOUND_EXPR.

	PR c++/13684
	* decl.c (expand_static_init): Use thread-safety API.
	(register_dtor_fn): Return the call, don't expand it.
	* tree.c (add_stmt_to_compound): New fn.
	(stabilize_call): Use it.

2004-08-27  Richard Henderson  <rth@redhat.com>

	* cp-tree.def (OFFSETOF_EXPR): New.
	* parser.c (cp_parser_builtin_offsetof): Either built an
	OFFSETOF_EXPR, or call fold_offsetof immediately.
	* pt.c (tsubst_expr): Handle OFFSETOF_EXPR.

2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>

	* call.c (validate_conversion_obstack): Replace
	my_friendly_assert with gcc_assert or gcc_unreachable.
	(direct_reference_binding, merge_conversion_sequences,
	build_user_type_conversion_1, perform_overload_resolution,
	build_op_delete_call, enforce_access, call_builtin_trap,
	build_over_call, build_special_member_call, build_new_method_call,
	initialize_reference): Likewise.
	* class.c (build_base_path, build_primary_vtable, alter_access,
	check_bases, update_vtable_entry_for_fn, layout_empty_base,
	clone_function_decl, adjust_clone_args,
	type_requires_array_cookie, include_empty_classes,
	finish_struct_1, resolve_address_of_overloaded_function,
	instantiate_type, get_vtbl_decl_for_binfo, build_vtt_inits,
	dfs_build_secondary_vptr_vtt_inits, build_ctor_vtbl_group,
	accumulate_vtbl_inits, build_vtbl_initializer,
	build_vbase_offset_vtbl_entries, build_rtti_vtbl_entries): Likewise.
	* cvt.c (build_up_reference, convert_to_reference): Likewise.
	* decl.c (poplevel, duplicate_decls, make_typename_type,
	cxx_init_decl_processing, reshape_init, check_initializer,
	make_rtl_for_nonlocal_decl, initialize_local_var, cp_finish_decl,
	expand_static_init, grokfndecl, grokvardecl, build_ptrmem_type,
	grokdeclarator, copy_fn_p, grok_op_properties, xref_tag,
	xref_basetypes, start_preparsed_function, save_function_data,
	finish_function, finish_method, maybe_register_incomplete_var,
	complete_vars): Likewise.
	* decl2.c (grok_array_decl, check_member_template,
	check_classfn, finish_static_data_member_decl, coerce_new_type,
	coerce_delete_type, import_export_class, decl_needed_p,
	determine_visibility, import_export_decl, build_cleanup,
	start_static_initialization_or_destructi, do_static_destruction,
	prune_vars_needing_no_initialization,
	build_offset_ref_call_from_tree): Likewise.
	* error.c (dump_decl, dump_expr): Likewise.
	* init.c (finish_init_stmts, build_zero_init,
	expand_virtual_init, expand_default_init, expand_aggr_init_1,
	build_offset_ref, build_new_1, build_delete, build_vbase_delete):
	Likewise.
	* mangle.c (write_method_parms, write_template_args,
	write_expression, write_template_arg): Likewise.
	* method.c (make_thunk, finish_thunk, use_thunk): Likewise.
	* name-lookup.c (pop_binding, begin_scope, leave_scope,
	resume_scope, push_using_decl, validate_nonmember_using_decl,
	is_ancestor, poplevel_class, set_inherited_value_binding_p,
	push_class_level_binding, do_class_using_decl, push_namespace,
	pop_namespace, add_using_namespace, ambiguous_decl,
	lookup_namespace_name, lookup_type_current_level,
	maybe_process_template_type_declaration): Likewise.
	* parser.c (cp_lexer_peek_nth_token,
	cp_parser_parse_and_diagnose_invalid_typ,
	cp_parser_translation_unit, cp_parser_template_id,
	cp_parser_lookup_name, cp_parser_late_parsing_for_member): Likewise.
	* pt.c (push_access_scope, finish_member_template_decl,
	push_inline_template_parms_recursive, add_outermost_template_args,
	get_innermost_template_args, begin_explicit_instantiation,
	end_explicit_instantiation, retrieve_specialization,
	is_specialization_of, is_specialization_of_friend,
	register_specialization, check_explicit_specialization,
	comp_template_parms, process_template_parm,
	process_partial_specialization, convert_nontype_argument,
	coerce_template_template_parms, coerce_template_parms,
	mangle_class_name_for_template, lookup_template_function,
	lookup_template_class, instantiate_class_template, tsubst_decl,
	tsubst_function_type, tsubst, tsubst_qualified_id, tsubst_copy,
	instantiate_template, fn_type_unification, type_unification_real,
	get_template_base, regenerate_decl_from_template,
	template_for_substitution, instantiate_decl,
	get_mostly_instantiated_function_type, dependent_scope_ref_p,
	value_dependent_expression_p, resolve_typename_type): Likewise.
	* repo.c (repo_emit_p): Likewise.
	* rtti.c (build_headof, get_tinfo_decl, get_pseudo_ti_init,
	create_tinfo_types, emit_tinfo_decl): Likewise.
	* search.c (lookup_base_r, lookup_base, lookup_field_1,
	dfs_access_in_type, build_baselink, lookup_member,
	adjust_result_of_qualified_name_lookup, copied_binfo): Likewise.
	* semantics.c (perform_or_defer_access_check,
	finish_non_static_data_member, finish_stmt_expr_expr,
	finish_stmt_expr, finish_call_expr, finish_pseudo_destructor_expr,
	finish_template_template_parm, finish_member_declaration,
	emit_associated_thunks): Likewise.
	* tree.c (build_target_expr_with_type, force_target_expr,
	copy_binfo, get_first_fn, cp_tree_equal): Likewise.
	* typeck.c (type_after_usual_arithmetic_conversions, comptypes,
	cxx_sizeof_or_alignof_type, perform_integral_promotions,
	build_class_member_access_expr, finish_class_member_access_expr,
	build_ptrmemfunc_access_expr, build_unary_op,
	unary_complex_lvalue, cxx_mark_addressable, build_modify_expr,
	build_ptrmemfunc, expand_ptrmemfunc_cst, check_return_expr
	* typeck2.c (complete_type_check_abstract,
	abstract_virtuals_error, process_init_constructor,
	add_exception_specifier): Likewise.

2004-08-27  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (build_vtbl_initializer): Use ssize_int.
	* decl.c (complete_array_type): Likewise.
	* method.c (finish_thunk): Likewise.
	* search.c (get_dynamic_base_type): Likewise.

2004-08-26  Richard Henderson  <rth@redhat.com>

	* cp-tree.h (DECL_FIELD_IS_BASE): New.
	* class.c (build_base_field): Set it.
	(build_simple_base_path): Use it.
	(fixed_type_or_null): Don't consider base fields definitive.

2004-08-25  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/16693
	PR tree-optimization/16372
	* decl.c (finish_enum): Make the precision of the enumerated type
	the same width as the underlying integer type.

2004-08-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17155
	* lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
	functions.

	* mangle.c (get_identifier_nocopy): Add cast.

	* cp-tree.h (mangle_type): Remove.
	* mangle.c (globals): GTY it.
	(mangle_obstack): New variable.
	(name_obstack): Likewise.
	(name_base): Likewise.
	(write_char): Adjust accordingly.
	(write_chars): Likewise.
	(write_string): Likewise.
	(start_mangling): Initialize G.substitutions only one.  Add
	ident_p parameter.
	(finish_mangling): Use VARRAY_CLEAR to reclaim
	storage in G.substitutions.  Use obstack_finish.
	(init_mangle): Adjust for changes to variable names above.
	Initialize G.substitutions.
	(mangle_decl_string): Adjust call to start_mangling.
	(get_identifier_nocopy): New function.
	(mangle_decl): Use it.
	(mangle_type_string): Adjust call to start_mangling.
	(mangle_special_for_type): Likewise.
	(mangle_vtt_for_type): Likewise.
	(mangle_ctor_vtbl_for_type): Likewise.
	(mangle_thunk): Likewise.
	(mangle_guard_variable): Likewise.
	(mangle_ref_init_variable): Likewise.

2004-08-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/14428
	* pt.c (redeclare_class_template): Check the type of non-type and
	template template parameter.

2004-08-25  Nathan Sidwell  <nathan@codesourcery.com>

	* call.c (convert_class_to_reference): Adjust build_int_cst calls.
	(build_user_type_conversion_1, convert_like_real,
	build_java_interface_fn_ref, build_special_member_call): Likewise.
	* class.c (finish_struct_1, build_vtbl_initializer): Likewise.
	* cp-gimplify.c (cp_gimplify_expr): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	* decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
	* decl2.c (start_static_initialization_or_destruction,
	generate_ctor_or_dtor_function): Likewise.
	* except.c (build_throw): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* method.c (finish_thunk): Likewise.
	* rtti.c (build_headof, get_tinfo_decl_dynamic,
	build_dynamic_cast_1, ptr_initializer, ptm_initializer,
	get_pseudo_ti_init): Likewise.
	* search.c (get_dynamic_cast_base_type): Likewise.

2004-08-25  Zack Weinberg  <zack@codesourcery.com>

	* class.c, search.c: Remove references to DWARF_DEBUG.

2004-08-25  Adam Nemet  <anemet@lnxw.com>

	* repo.c (extract_string): Reset backquote after one character.
	(get_base_filename): Fix indentation.

2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (cxx_init_decl_processing): Adjust
	build_common_tree_nodes call.

2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/16889
	* (is_subobject_of_p): Resurrect & optimize.
	(lookup_field_r): Use it.

2004-08-24  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/16706
	* search.c (friend_accessible_p): Increment processing_template_decl
	when deal with TEMPLATE_DECL of SCOPE.

2004-08-24  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/17149
	* semantics.c (check_accessibility_of_qualified_id): Defer check
	if qualifying_type is a template parameter.

2004-08-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17163
	* pt.c (instantiate_decl): Do not try to apply
	DECL_DECLARED_INLINED_P to a VAR_DECL.

	* search.c (build_baselink): Fix typo in comment.

2004-08-22 Andrew Pinski  <apinski@apple.com>

	Revert:
	2004-08-22  Andrew Pinski  <apinski@apple.com>
	PR c++/14029
	* typeck.c (build_unary_op): Use &a.b if the folded lowered
	expression is not constant.

2004-08-23  Nathan Sidwell  <nathan@codesourcery.com>

	* name-lookup.c (pushdecl): Rename build_type_copy call.
	* tree.c (cp_build_qualified_type_real,
	build_exception_variant, handle_java_interface_attribute): Likewise.

2004-08-22  Andrew Pinski  <apinski@apple.com>

	PR c++/14029
	* typeck.c (build_unary_op): Use &a.b if the folded lowered
	expression is not constant.

2004-08-20  Mark Mitchell  <mark@codesourcery.com>

	PR c++/17121
	* decl.c (expand_static_init): Use DECL_FUNCTION_SCOPE_P.

2004-08-21  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c++/17120
	* pt.c (tsubst_copy_and_build): Avoid clearing TREE_NO_WARNING for
	MODOP_EXPR.

2004-08-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	* pt.c (register_specialization): Check DECL_TEMPLATE_SPECIALIZATION
	before calling comp_template_args.

2004-08-20  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (build_vtbl_initializer): Use build_int_cst for
	negative size types.
	* decl.c (complete_array_type): Likewise.
	* method.c (finish_thunk): Likewise.

2004-08-20  Andreas Tobler  <a.tobler@schweiz.ch>

	* tree.c: Remove unused mark_local_for_remap_r.

2004-08-19  Eric Christopher  <echristo@redhat.com>

	* cp-tree.h (cxx_unsave_expr_now): Delete prototype.
	* tree.c (cxx_unsave_expr_now): Delete.
	(cp_unsave_r): Ditto.

2004-08-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15890
	* pt.c (push_template_decl_real): Disallow template allocation
	functions with fewer than two parameters.

2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (build_shared_int_cst): Remove.
	* tree.c (shared_int_cache): Remove.
	(build_shared_int_cst): Remove.
	* class.c (finish_struct_1): Use build_int_cst.

2004-08-19  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (finish_enum): Do not copy value node early, copy
	later.
	* lex.c (cxx_init): Force null_node to be unique.

2004-08-19  Joseph S. Myers  <jsm@polyomino.org.uk>

	PR c++/17041
	* pt.c (tsubst_copy, tsubst_copy_and_build): Copy TREE_NO_WARNING
	from input for MODOP_EXPR.

2004-08-18  Mark Mitchell  <mark@codesourcery.com>

	* pt.c (dependent_template_p): Fix typo in commment.

	PR c++/17068
	* pt.c (dependent_template_p): Treat IDENTIFIER_NODEs as
	dependent.

2004-08-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16246
	* pt.c (unify): Tidy ARRAY_TYPE handling.  Make sure that non-type
	arguments have the same type as the corresponding parameter.

	PR c++/16215
	* parser.c (cp_parser_name_lookup_error): If parser->object_scope
	is set use it for diagnostic purposes.
	(cp_parser_pseudo_destructor_name): Remove special-case error
	message.

	PR c++/15871
	* semantics.c (expand_or_defer_fn): Honor -fkeep-inline-functions.

	PR c++/16965
	* cp-tree.h (qualified_name_lookup_error): Add parameter.
	* name-lookup.c (do_class_using_decl): Restrict set of entities
	passed to cp_emit_debug_info_for_using more carefully.
	(lookup_qualified_name): Allow lookup_member to return sets of
	ambiguous entries.
	* parser.c (cp_parser_lookup_name): Add ambiguous_p parameter.
	(cp_parser_primary_expression): Handle ambiguous lookups.
	(cp_parser_template_name): Adjust use of cp_parser_lookup_name.
	(cp_parser_template_argument): Likewise.
	(cp_parser_elaborate_type_specifier): Likewise.
	(cp_parser_namespace_name): Likewise.
	(cp_parser_class_name): Likewise.
	(cp_parser_lookup_name_simple): Likewise.
	* pt.c (tsubst_qualified_id): Handle ambiguous results.
	(tsubst_expr): Likewise.
	* semantics.c (qualified_name_lookup_error): Add decl paramter.
	For ambiguous lookups, print candidates.

2004-08-16  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/6749
	* pt.c (instantiate_pending_templates): Add int parameter.  Don't
	return anything.
	* cp-tree.h (instantiate_pending_templates): Adjust prototype.
	* decl2.c (finish_file): Adjust call to
	instantiate_pending_templates.

2004-08-15  Roger Sayle  <roger@eyesopen.com>

	* call.c (build_vfield_ref, build_call, build_conditional_expr,
	convert_arg_to_ellipsis, build_x_va_arg, build_over_call,
	build_java_interface_fn_ref, build_special_member_call,
	build_new_method_call, initialize_reference): Replace calls to
	build with calls to buildN.
	* class.c (build_base_path, convert_to_base_statically,
	build_vfn_ref, instantiate_type, dfs_accumulate_vtbl_inits,
	build_vtbl_initializer): Likewise.
	* cp-gimplify.c (genericize_try_block, genericize_catch_block,
	gimplify_if_stmt, cp_genericize_r): Likewise.
	* cvt.c (convert_to_void): Likewise.
	* decl.c (check_initializer, finish_constructor_body,
	finish_destructor_body): Likewise.
	* error.c (dump_expr): Likewise.
	* except.c (build_exc_ptr, expand_start_catch_block, build_throw):
	Likewise.
	* init.c (perform_member_init, expand_virtual_init,
	expand_cleanup_for_base, build_init, expand_default_init,
	build_offset_ref, decl_constant_value, build_new, build_new_1,
	build_vec_delete_1, build_vec_init, build_delete,
	push_base_cleanups, build_vec_delete): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* method.c (thunk_adjust, do_build_copy_constructor,
	do_build_assign_ref): Likewise.
	* pt.c (lookup_template_function, tsubst, tsubst_copy_and_build,
	unify, build_non_dependent_expr): Likewise.
	* rtti.c (build_headof, build_typeid, ifnonnull,
	build_dyanmic_cast_1, tinfo_base_init): Likewise.
	* semantics.c (begin_compound_stmt, finish_call_expr,
	finish_pseudo_destructor_expr, finish_id_expression,
	simplify_aggr_init_expr, finalize_nrv_r): Likewise.
	* tree.c (build_target_expr, build_cplus_new, array_type_nelts_top,
	array_type_nelts_total, stabilize_call): Likewise.
	* typeck.c (decay_conversion, build_class_member_access_expr,
	lookup_destructor, build_ptrmemfunc_access_expr, build_array_ref,
	get_member_function_from_ptrfunc, build_binary_op, pointer_diff,
	build_x_unary_op, build_unary_op, unary_complex_lvalue,
	build_compound_expr, build_modify_expr, expand_ptrmemfunc_cst,
	check_return_expr): Likewise.
	* typeck2.c (split_nonconstant_1, split_nonconstant_init_1,
	split_nonconstant_init, store_init_value, build_m_component_ref):
	Likewise.

2004-08-15  Nathan Sidwell  <nathan@codesourcery.com>

	* call.c (convert_class_to_reference,
	build_user_type_conversion_1, convert_like_real,
	build_java_interface_fn_ref, build_special_member_call): Use
	build_int_cst.
	* class.c (build_vtbl_initializer): Likewise.
	* cp-gimplify.c (cp_gimplify_expr): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	* decl.c (cxx_init_decl_processing, complete_array_type): Likewise.
	* decl2.c (start_static_initialization_or_destruction,
	generate_ctor_or_dtor_function): Likewise.
	* except.c (build_throw): Likewise.
	* lex.c (cxx_init): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* rtti.c (build_headof, get_tinfo_decl_dynamic,
	build_dynamic_cast_1, ptr_initializer, ptm_initializer,
	get_pseudo_ti_init): Likewise.
	* search.c (get_dynamic_cast_base_type): Likewise.
	* tree.c (build_shared_int_cst): Likewise.

2004-08-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16273
	* class.c (count_depth_data): New type.
	(dfs_depth_post): New function.
	(dfs_depth_q): Likewise.
	(find_final_overrider_data_s): Change type of vpath.
	Add vpath_list.
	(dfs_find_final_overrider_1): New function.
	(dfs_find_final_overrider): Use it.
	(dfs_find_final_overrider_q): Adjust use of vpath.
	(dfs_find_final_overrider_post): Likewise.
	(find_final_overrider): Use dfs_depth.  Allocate and deallocate
	vpath_list.

2004-08-12 Jan Beulich <jbeulich@novell.com>

	* parser.c (cp_parser_asm_definition): Properly consume scope operator
	tokens preceding the clobbers. Don't check for scope operator
	following inputs. Simplify inputs handling to match that now used for
	clobbers.

2004-08-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16698
	* except.c (build_throw): Allocate cleanup_type and the function
	for __cxa_throw separately.

	PR c++/16853
	* call.c (standard_conversion): Do not accept conversions between
	pointers to members if the class types are unrelated.

	PR c++/16618
	* parser.c (cp_parser_builtin_offsetof): Cast to "const volatile
	char &" instead of just "char &".

	PR c++/16870
	* pt.c (tsubst): Just return the unknown_type_node.

2004-08-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16964
	* parser.c (cp_parser_class_specifier): Robustify.

	PR c++/16904
	* pt.c (tsubst_copy_and_build): Complain about invalid
	qualification.

	PR c++/16929
	* pt.c (tsubst_default_argument): Clear out current_class_ptr and
	current_class_ref while tsubsting.

2004-08-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16971
	* parser.c (cp_parser_init_declarator): Robustify.

2004-08-06  Richard Sandiford  <rsandifo@redhat.com>

	* typeck2.c (process_init_constructor): Guard the missing field warning
	with warn_missing_field_initializers rather than extra_warnings.

2004-08-06  Paolo Bonzini  <bonzini@gnu.org>

	* class.c (instantiate_type) <ENTRY_VALUE_EXPR>: Do not handle.

2004-08-05  Mark Mitchell  <mark@codesourcery.com>

	* decl.c (start_preparsed_function): Move determine_visibility
	call.
	* decl2.c (determine_visibility): Incorporate dllexport testing.

2004-08-05  Geoffrey Keating  <geoffk@apple.com>

	* g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
	means that libstdc++ is needed.

2004-08-05  Nathan Sidwell  <nathan@codesourcery.com>

	* cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.

2004-08-04  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (make_rtl_for_nonlocal_decl): Set DECL_ASSEMBLER_NAME rather
	than passing it as a parameter to rest_of_decl_compilation.
	* decl2.c (grokfield): Use set_user_assembler_name.

2004-08-04  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (complete_array_type): Don't gratuitously copy
	maxindex. Its type is always set.

2004-08-04  Paul Brook  <paul@codesourcery.com>

	* Make-lang.in (cp/semantics.o, cp/optimize.o): Depend on TARGET_H.
	* cp-tree.h (struct language_function): Rename x_dtor_label to
	x_cdtor_label.
	(dtor_label): Rename ...
	(cdtor_label): ... to this.
	* decl.c (begin_constructor_body): Remove.
	(check_special_function_return_type): Maybe change the return type.
	(grokdeclarator): Pass the class type.
	(start_preparsed_function): Constructors may need a return label.
	(finish_constructor_body, finish_destructor_body): Set the return
	value.
	(begin_function_body): Don't call begin_constructor_body.
	(finish_function): Don't warn for constructors or destructors.
	(implicitly_declare_fn): Maybe change the return type.
	* optimize.c: Include target.h.
	(maybe_clone_body): Remap the function result.
	* semantics.c: Include target.h.
	(finish_return_stmt): Maybe jump to return label for constructors.

2004-08-03  Mark Mitchell  <mark@codesourcery.com>

	* class.c (build_vtable): Do not set DECL_VISIBILITY here.
	(check_field_decls): Or here.
	(check_methods): Or here.
	(initialize_array): Don't mess with DECL_CONTEXT.
	* cp-tree.h (start_decl): Adjust prototype.
	(determine_visibility): New function.
	* decl.c (duplicate_decls): Remove checks for hidden "operator
	new".
	(build_library_fn_1): Give all library functions default
	visibility.
	(start_decl): Add pop_scope_p parameter.  Tidy.
	(cp_finish_decl): Do not pop scopes here.  Call
	determine_visibility for variable definitions.
	(start_preparsed_function): Call determine_visibility.
	* decl2.c (determine_visibility): New function.
	* method.c (use_thunk): Fix formatting.
	* parser.c (cp_parser_condition): Adjust calls to start_decl.
	(cp_parser_init_declarator): Likewise.
	* pt.c (instantiate_decl): Always call pop_nested_class.
	* rtti.c (get_tinfo_decl): Do not set DECL_VISIBILITY.
	(tinfo_base_init): Likewise.

2004-08-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16707
	* name-lookup.c (validate_nonmember_using_decl): Robustify.

2004-08-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16224
	* name-lookup.c (decl_namespace): Remove.
	(current_decl_namespace): Use decl_namespace_context instead of
	decl_namespace.
	(push_decl_namespace): Likewise.
	(arg_assoc_class): Likewise.
	(arg_assoc_type): Likewise.
	* pt.c (check_specialization_namespace): New function.
	(maybe_process_partial_specialization): Use it.
	(register_specialization): Likewise.

	PR c++/16489
	* cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
	* call.c (null_ptr_cst_p): Handle variables with constant
	initializers.
	* pt.c (convert_nontype_argument): Use
	DECL_INTEGRAL_CONSTANT_VAR_P.
	* semantics.c (finish_id_expression): Likewise.

	PR c++/16529
	* decl.c (duplicate_decls): Reject duplicate namespace
	declarations.

	PR c++/16810
	* typeck.c (build_ptrmemfunc): Loosen assertion.

2004-08-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (z_candidate::template_decl): Rename from template.
	(add_template_candidate_real): Adjust member reference.
	(joust): Likewise.

2004-07-29  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
	(lang_decl_flags): Narrow the width of "languages".  Add
	repo_available_p.
	(DECL_NEEDED_P): Remove.
	(FOR_EACH_CLONE): New macro.
	(DECL_REPO_AVAILABLE_P): Likewise.
	(DECL_TINFO_P): Likewise.
	(set_linkage_according_to_type): Declare.
	(import_export_vtable): Remove.
	(import_export_tinfo): Likewise.
	(mark_needed): New function.
	(decl_needed_p): Likewise.
	(note_vauge_linkage_fn): Likewise.
	(init_repo): Change prototype.
	(repo_template_used): Remove.
	(repo_template_instantiated): Likewise.
	(repo_emit_p): New function.
	(repo_export_class_p): Likewise.
	(no_linkage_check): Change prototype.
	* class.c (set_linkage_according_to_type): New function.
	(build_vtable): Use it.  Do not call import_export_vtable.  Set
	DECL_IGNORED_P if appropriate.
	* decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
	(make_rtL_for_nonlocal_decls): Check for template instantiations
	explicitly.
	(grokfndecl): Adjust call to no_linkage_check.
	(set_linkage_for_static_data_member): New function.
	(grokvardecl): Use it.  Adjust call to no_linkage_check.
	(grokdeclarator): Use set_linkage_for_static_data_member.
	* decl2.c (note_vague_linkage_fn): New function.
	(note_vague_linkage_var): Likewise.
	(finish_static_data_member_decl): Use it.
	(import_export_vtable): Remove.
	(import_export_class): Use repo_export_class_p.
	(var_finalized_p): Simplify.
	(maybe_emit_vtables): Simplify.
	(mark_needed): New function.
	(decl_needed_p): Likewise.
	(import_export_decl): Add documentation and consistency checks.
	Use repo_emit_p.  Handle virtual tables and RTTI information
	here.
	(import_export_tinfo): Remove.
	(write_out_vars): Call import_export_decl.
	(cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
	whenever one is.
	(finish_file): Use decl_needed_p.  Do not call import_export_decl
	for undefined static data members.  Do not warn about undefined
	inlines when using a repository.
	(mark_used): Use note_vague_linkage_fn.  Always defer template
	instantiations.
	* lex.c (cxx_init): Adjust call to init_repo.  Always set
	flag_unit_at_a-time.
	* method.c (synthesize_method): Remove unncessary
	import_export_decl call.
	(implicitly_declare_fn): Use set_linkage_according_to_type.
	* optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
	* pt.c (instantiate_class_template): Don't redundantly add classes
	to keyed_classes.  Don't call repo_template_used.
	(tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
	templates with internal linkage.
	(check_instantiated_args): Adjust call to no_linkage_check.
	(instantiate_template): Use FOR_EACH_CLONE.
	(mark_definable): New function.
	(mark_decl_instantiated): Use it.
	(do_decl_instantiation): Adjust tests for explicit instantiation
	after "extern template".
	(instantiate_class_member): Do not use repo_template_instantiated.
	(do_type_instantiation): Simplify.
	(instantiate_decl): Use mark_definable.  Check repo_emit_p.
	Simplify.
	* repo.c (repo_get_id): Remove.
	(original_repo): Remove.
	(IDENTIFIER_REPO_USED): Remove.
	(IDENTIFIER_REPO_CHOSEN): Remove.
	Remove all #if 0'd code.
	(repo_template_used): Remove.
	(repo_template_instantiated): Remove.
	(temporary_obstack_initialized_p): New variable.
	(init_repo): Register with lang_post_pch_load.  Avoid creating
	identifiers unnecessarily.  Don't use original_repo.  Close the
	file here.
	(reopen_repo_file_for_write): Not here.
	(finish_repo): Always write out a new repository file.
	(repo_emit_p): New function.
	(repo_export_class_p): Likewise.
	* rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
	(involves_incomplete_p): New function.
	(tinfo_base_init): Use it.
	(ptr_initializer): Remove non_public_ptr parameter.
	(ptm_initializer): Likewise.
	(get_pseudo_ti_init): Likewise.
	(unemitted_tinfo_decl_p): Remove.
	(emit_tinfo_decl): Use import_export_decl.
	* semantics.c (expand_body): Move updates of static_ctors and
	static_dtors to ...
	(expand_or_defer_fn): ... here.
	* tree.c (no_linkage_check): Add relaxed_p parameter.

2004-07-28  Eric Christopher  <echristo@redhat.com>

	* cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.

2004-07-28  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (struct tree_pair_s): New.
	(typedef tree_pair_p): New.
	(DEF_VEC_O(tree_pair_s)): New.
	(struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
	(CLASSTYPE_VCALL_INDICES): Update documentation.
	* class.c (get_vcall_index): Adjust.
	(add_vcall_offset): Adjust.

2004-07-27  Kelley Cook  <kcook@gcc.gnu.org>

	* pt.c, typeck.c: Remove spurious carriage returns.

2004-07-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/14429
	* pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
	when the type of ARG is not dependent.

2004-07-26  Geoffrey Keating  <geoffk@apple.com>

	* g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
	(lang_specific_driver): If the C++ or math library options don't
	start with '-l', don't count them as added libraries.

2004-07-26  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (xref_basetypes): Adjust base access vector creation.
	* rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
	access accesses.
	* search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.

2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
	    Brian Ryner  <bryner@brianryner.com>

	PR c++/15000
	PR c++/9283
	* class.c (check_field_decls): Apply hidden visibility if
	-fvisibility-inlines-hidden and inlined unless otherwise specified
	(build_vtable): Set vtable visibility to class visibility.
	(check_field_decls): Default static member visibility to class
	visibility.
	(check_methods): Default method visibility to class visibility.
	* cp-tree.h: Added CLASSTYPE_VISIBILITY and
	CLASSTYPE_VISIBILITY_SPECIFIED macro.
	* decl.c (duplicate_decls): New logic for merging definition decls
	with declaration decls. Added ignore & warning when non default
	applied to global operator new or delete.
	* method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
	wherever VISIBILITY was changed
	* rtti.c (get_tinfo_decl): Set typeinfo visibility to class
	visibility.
	(tinfo_base_init): Set typeinfo name visibility to class visibility.

2004-07-25  Bernardo Innocenti  <bernie@develer.com>

	* decl.c: Rename all identifiers named `class' to `cl'.
	* cp-tree.h: Likewise.

2004-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
	* typeck2.c (abstract_virtuals_error): Use GGC_NEW.
	* name-lookup.c (binding_entry_make): Use GGC_NEW.
	(binding_table_construct): Use GGC_CNEWVEC.
	(binding_table_new): Use GGC_NEW.
	(cxx_binding_make): Likewise.
	(begin_scope): Likewise.
	(push_to_top_level): Use GCC_CNEW.
	* parser.c (cp_token_cache_new): Likewise.
	(cp_token_cache_push_token): Likewise.
	(cp_lexer_new_main): Likewise.
	(cp_lexer_new_from_tokens): Likewise.
	(cp_parser_context_new): Likewise.
	(cp_parser_new): Likewise.
	(cp_lexer_new_from_tokens): Use GGC_NEWVEC.
	* lex.c (cxx_make_type): Use GGC_CNEW.
	(retrofit_lang_decl): Use GGC_NEWVAR.
	(cxx_dup_lang_specific_decl): Likewise.
	(copy_lang_type): Likewise.
	* decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
	(save_function_data): Likewise.
	(lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
	(cxx_push_function_context): Likewise.

2004-07-25  Richard Henderson  <rth@redhat.com>

	* decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
	DECL_IGNORED_P on RESULT_DECL.
	* semantics.c (finalize_nrv): Copy them too.

2004-07-23  Nathan Sidwell  <nathan@codesourcery.com>

	* search.c (lookup_conversion_operator): Avoid two loops.
	(add_conversions): Remove.
	(check_hidden_convs, split_conversions,
	lookup_conversions_r):	New.
	(lookup_conversions): Use lookup_conversions_r.

2004-07-22  Nathan Sidwell  <nathan@codesourcery.com>

	* pt.c (get_template_base): Check type is completable.

2004-07-21  Eric Christopher  <echristo@redhat.com>

	* decl.c (poplevel): Inline unused variable checking.
	Change formatting.

2004-07-21  Paolo Bonzini  <bonzini@gnu.org>

	* typeck.c (build_binary_op): Do not use RDIV_EXPR for
	integer vectors.

2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14497
	* pt.c (check_explicit_specialization): Remove extension to accept
	specializations without template headers. Fall-through to normal
	processing.

2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/509
	* pt.c (determine_specialization): New parameter template_count.
	Disambiguate between member templates and member functions counting
	the template headers.
	(check_explicit_specialization): Update caller.
	(tsubst_friend_function): Likewise.

2004-07-20  Steven Bosscher  <stevenb@suse.de>

	* cp-tree.def (TINST_LEVEL): Make it an 'x' node.
	* cp-tree.h (tinst_level_t): New tree type.
	(union lang_tree_node): Handle it.
	(TINST_LOCATION): New accessor macro.
	(make_tinst_level): New prototype.
	* cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
	* decl.c (cp_tree_node_structure): Likewise.
	* error.c (print_instantiation_full_context): Use TINST_LOCATION.
	(print_instantiation_partial_context): Likewise.
	* pt.c (pop_tinst_level): Likewise.
	 (push_tinst_level): Use make_tinst_level.
	* tree.c (make_tinst_level): New function.
	(cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.

2004-07-20  Mark Mitchell  <mark@codesourcery.com>

	* parser.c (cp_parser_simple_type_specifier): Fix typo.

	PR c++/16637
	* parser.c (cp_parser_simple_type_specifier): Do not record usage
	of globally-qualified names.

2004-07-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/16175
	* error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
	cv qualifier.

2004-07-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16623
	* cp-tree.h (lang_type_class): Add lazy_assignment_op.
	(CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
	* class.c (add_implicitly_declared_members): Use
	CLASSTYPE_LAZY_ASSIGNMENT_OP.
	* method.c (lazily_declare_fn): Clear
	CLASSTYPE_LAZY_ASSIGNMENT_OP.
	* search.c (lookup_fnfields_1): Check it.

2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (vec_binfo_member): Remove.
	* tree.c (vec_binfo_member): Remove.

	* cp-tree.h (struct lang_type_class): Remove vfields field.
	(CLASSTYPE_VFIELDS): Remove.
	(SET_BINFO_NEW_VTABLE_MARKED): Adjust.
	* class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
	handling.
	(dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
	(finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
	* init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.

2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (DEF_VEC_P(tree)): Remove here.
	(BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
	Moved to common.
	(BINFO_LANG_SLOTS): Remove.
	* tree.c (copy_binfo): Adjust BINFO creation and accessors.
	* decl.c (xref_basetypes): Adjust BINFO creation and accessors.
	* class.c (check_bases): Adjust BINFO accessors.
	(determine_primary_base, finish_struct_bits,
	maybe_warn_about_overly_private_class, warn_hidden,
	walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
	warn_about_ambiguous_bases, get_vfield_name,
	dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
	add_vcall_offset_vtbl_entries_r): Likewise.
	* dump.c (cp_dump_tree): Likewise.
	* init.c (sort_mem_initializers, expand_member_init, build_delete,
	push_base_cleanups): Likewise.
	* method.c (do_build_copy_constructor, do_build_assign_ref,
	synthesize_exception_spec): Likewise.
	name-lookup.c (arg_assoc_class): Likewise.
	* pt.c (instantiate_class_template,
	get_template_base_recursive): Likewise.
	* rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
	* typeck2.c (process_init_constructor): Likewise.
	* search.c (lookup_base_r, dynamic_cast_base_recurse,
	dfs_access_in_type, dfs_walk_real, look_for_overrides,
	types_overlap_p, copied_binfo, original_binfo): Likewise.
	(binfo_for_vtable): Remove

2004-07-20  Steven Bosscher  <stevenb@suse.de>

	* cp-tree.h (struct lang_decl_flags): Unify the template_info and
	thunk_alias, and the access and virtual_offset fields.
	(THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
	* decl.c (finish_case_label): Update c_add_case_node call.

2004-07-19  Mark Mitchell  <mark@codesourcery.com>

	Revert patch for PR c++/16623.

2004-07-19  Kelley Cook  <kcook@gcc.gnu.org>

	* except.c: Remove two spurious carriage returns.

2004-07-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16623
	* cp-tree.h (lang_type_class): Add lazy_assignment_op.
	(CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
	* class.c (add_implicitly_declared_members): Use
	CLASSTYPE_LAZY_ASSIGNMENT_OP.
	* method.c (lazily_declare_fn): Clear
	CLASSTYPE_LAZY_ASSIGNMENT_OP.
	* search.c (lookup_fnfields_1): Check it.

2004-07-19  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (add_method): Delay adding the slot until the end.
	(determine_primary_base): Adjust VEC_iterate invokation.
	(resort_type_method_vec, finish_struct_methods, warn_hidden,
	walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
	build_vtbl_initializer): Likewise.
	* init.c (sort_mem_initializers, build_delete, push_base_cleanups,
	build_vbase_delete): Likewise.
	* method.c (do_build_copy_constructor): Likewise.
	* name-lookup.c (new_class_binding, print_binding_level,
	poplevel_class, store_class_bindings, push_to_top_level,
	pop_from_top_level): Likewise.
	* pt.c (check_explicit_specialization): Likewise.
	* search.c (lookup_conversion_operator, lookup_fnfields_1,
	get_pure_virtuals, add_conversions, dfs_check_overlap,
	binfo_for_vbase): Likewise.

2004-07-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/12170
	* pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
	innermost set of template arguments during deduction.  Simplify.

2004-07-19  Joseph S. Myers  <jsm@polyomino.org.uk>

	* typeck.c (build_modify_expr, build_x_modify_expr): Set
	TREE_NO_WARNING on assignments with an operator other than '='.

2004-07-10  Steven Bosscher  <stevenb@suse.de>
	    Joseph S. Myers  <jsm@polyomino.org.uk>

	* cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
	* decl2.c (grokfield): Don't check current_class_depth via
	unused TREE_COMPLEXITY.
	* semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
	to avoid the missing parentheses warning.
	Don't set C_SET_EXP_ORIGINAL_CODE.

2004-07-18  Mark Mitchell  <mark@codesourcery.com>

	* tree.c (no_linkage_helper): Remove.
	(no_linkage_check): Don't use walk_tree_without_duplicates.

	* mangle.c (write_expression): Issue a sorry for zero-operand
	functional casts.

2004-07-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13092
	* init.c (build_offset_ref): Build SCOPE_REF with non-null
	TREE_TYPE for non-dependent names.
	* typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
	* pt.c (type_dependent_expression_p): Handle SCOPE_REF with
	unknown_type_node as its TREE_TYPE.
	* cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
	* error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
	(dump_expr) <SCOPE_REF case>: Likewise.

2004-07-17  Jason Merrill  <jason@redhat.com>

	PR c++/16115
	* call.c (type_passed_as): Make the invisible reference type
	__restrict.
	* cp-gimplify.c (gimplify_cleanup_stmt): Rename to
	cp_genericize_r.  Handle invisible reference lowering.
	(is_invisiref_parm): New fn.
	(cp_genericize): Adjust the types of invisible reference parms.
	Don't repeat the walk for clones.
	* decl.c (store_parm_decls): Don't generate any code for clones.

2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>

	* cp-tree.h (builtin_function): Declare.

2004-07-16  Mark Mitchell  <mark@codesourcery.com>

	* class.c (finish_struct_methods): Remove unncessary code.
	(add_implicitly_declared_members): Create declarations for default
	constructors and copy constructors lazily.
	* cp-tree.h (lang_type_class): Remove lazy_default_ctor and
	lazy_copy_ctor.
	(CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
	(CLASSTYPE_LAZY_COPY_CTOR): Likewise.
	* decl2.c (check_classfn): Robustify.
	(locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
	(locate_ctor): Handle lazy default constructors.
	(locate_copy): Handle lazy copy constructors.
	(implicitly_declare_fn): Make sure we're looking at the
	TYPE_MAIN_VARIANT for a class before creating functions.  Don't
	set TYPE_HAS_CONSTRUCTOR.
	(lazily_declare_fn): New function.
	* name-lookup.c (constructor_name_full): Simplify.
	* search.c (lookup_fnfields_1): Lazily create methods, as
	necessary.
	(lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.

2004-07-16  Steven Bosscher  <stevenb@suse.de>

	* cp-tree.h (struct lang_type): Don't have three GTY options on a
	single bit GTY desc.

2004-07-16  Richard Henderson  <rth@redhat.com>

	* cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
	* cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
	* tree.c (cp_copy_res_decl_for_inlining): Remove.

2004-07-16  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (finish_struct_bits): Use for loop.
	(propagate_binfo_offsets): Do primary binfo outside of loop.

	PR c++/16583
	* dump.c (cp_dump_tree): Don't dump the bases if there's no
	binfo.

	* pt.c (tsubst) <TREE_BINFO case>: We should never get here.

2004-07-15  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (lang_type_class): Remove has_real_assign_ref and
	has_abstract_assign_ref.  Make methods a VEC(tree) *.
	(TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
	(CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
	(CLASSTYPE_DESTRUCTORS): Likewise.
	(TYPE_HAS_REAL_ASSIGN_REF): Remove.
	(TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
	(add_method): Change prototoype.
	* class.c (add_method): Remove error_p parameter.  Adjust for
	changes to CLASSTYPE_METHOD_VEC.
	(handle_using_decl): Adjust call to add_method.
	(maybe_warn_about_overly_private_class): Adjust for
	changes to CLASSTYPE_METHOD_VEC.
	(resort_type_method_vec): Likewise.
	(finish_struct_methods): Likewise.
	(check_for_override): Likewise.
	(warn_hidden): Likewise.
	(add_implicitly_declared_members): Defer creation of assignment
	operators.  Adjust call to add_method.
	(clone_function_decl): Adjust call to add_method.
	(check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
	(finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
	* decl.c (grok_special_member_properties): Don't set
	TYPE_HAS_ABSTRACT_ASSIGN_REF.
	* decl2.c (check_classfn): Adjust for
	changes to CLASSTYPE_METHOD_VEC.
	* method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
	(locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
	(locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
	(implicitly_declare_fn): Set DECL_SOURCE_LOCATION.  Do not call
	cp_finish_decl.
	* pt.c (check_explicit_specialization): Adjust for
	changes to CLASSTYPE_METHOD_VEC.
	(instantiate_class_template): Do not set
	TYPE_HAS_ABSTRACT_ASSIGN_REF.
	* ptree.c (cxx_print_type): Don't try to print
	CLASSTYPE_METHOD_VEC.
	* rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
	* search.c (lookup_field_r): Adjust for
	changes to CLASSTYPE_METHOD_VEC.
	(lookup_fnfields): Likewise.
	(lookup_conversion_operator): Likewise.
	(lookup_fnfields_1): Likewise.  Create assignment operators
	lazily.
	(look_for_overrides_here): Adjust for
	changes to CLASSTYPE_METHOD_VEC.
	(add_conversions): Likewise.
	* semantics.c (finish_member_declaration): Adjust call to add_method.

2004-07-15  Jason Merrill  <jason@redhat.com>

	* cp-lang.c (cxx_types_compatible_p): To the middle-end,
	references and pointers are compatible.

2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>

	* decl.c (xref_basetypes): Refactor.
	* tree.c (copy_base_binfos): Replace with ...
	(copy_binfo): ... this. Deep copy the given binfo, (not the just
	bases of the given base).
	* cp-tree.h (copy_base_binfo): Remove.
	(copy_binfo): Declare.

2004-07-15  Mark Mitchell  <mark@codesourcery.com>

	* name-lookup.c (set_inherited_value_binding_p): Add class_type
	parameter.
	(get_class_binding): Adjust.
	(push_class_level_binding): Don't use set_inherited_value_binding_p.

2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>

	* class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
	* decl.c (xref_basetypes): Set it here.

	* class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
	Don't check for incomplete base.
	(get_vfield_name): Simplify while loop.
	* decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.

2004-07-14  Mark Mitchell  <mark@codesourcery.com>

	* lex.c (cxx_make_type): Remove call to get_pointer_type.

	* cp-tree.h (IDENTIFIER_VALUE): Remove.
	(BINFO_PUSHDECLS_MARKED): Likewise.
	(maybe_inject_for_scope_var): Likewise.
	(push_class_decls): Likewise.
	* name-lookup.h (push_class_binding): Remove.
	(innermost_non_namespace_value): New function.
	(outer_binding): Likewise.
	* class.c (add_method): Push bindings before adding to
	TYPE_METHODS.
	(restore_class_cache): Do not restore class_shadowed.
	(pushclass): Do not add USING_DECLs.  Do not call
	push_class_decls.
	* config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
	* decl.c (pushdecl): Use outer_binding.
	(poplevel): Set the scope for an out-of-scope for-loop declaration
	appropriately.
	(cp_finish_decl): Don't call maybe_inject_for_scope_var.
	* name-lookup.c (new_class_binding): New function.
	(push_binding): Use it.
	(pushdecl): Use innermost_non_namespace_value.
	(maybe_inject_for_scope_var): Remove.
	(push_class_binding): Remove.
	(set_inherited_value_binding_p): New function.
	(get_class_binding): New function.
	(push_class_level_binding): Assert that the current_class_type is
	being defined.
	(outer_binding): New function.
	(innermost_non_namespace_value): Likewise.
	(lookup_name_real): Use outer_binding.
	(lookup_name_current_level): Ignore out-of-scope variables.
	* pt.c (check_template_shadow): Use innermost_non_namespace_value.
	(lookup_template_class): Likewise.
	* search.c (dfs_push_type_decls): Remove.
	(dfs_push_decls): Likewise.
	(setup_class_bindings): Likewise.
	(lookup_field_1): Handle USING_DECLs from dependent scopes.
	(marked_pushdecls_p): Remove.
	(unmarked_pushdecls_p): Remove.
	(marked_identifiers): Remove.
	(setup_class_bindings): Remove.
	(dfs_push_type_decls): Remove.
	(dfs_push_decls): Remove.
	(push_class_decls): Remove.

2004-07-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16518
	PR c++/16337
	* decl.c (grokvardecl): Make declspecs parameter const.
	(grokdeclarator): Likewise.  Adjust accordingly.
	* decl.h (grokdeclarator): Adjust declaration.
	* parser.c (cp_parser_init_declarator): Do not clear
	decl_specifiers->attributes.

	* cp-tree.h (lang_identifier): Remove class_value.
	(IDENTIFIER_CLASS_VALUE): Remove.
	(pop_class_decls): Likewise.
	(init_search_processing): Likewise.
	* class.c (handle_using_decl): Use lookup_member, not
	IDENTIFIER_CLASS_VALUE.
	(restore_class_cache): New function, split out from ...
	(pushclass): ... here.  Do not call clear_identifier_class_values.
	(invalidate_class_lookup_cache): Do not clear
	IDENTIFIER_CLASS_VALUE.
	(popclass): Do not call pop_class_decls.
	(maybe_note_name_used_in_class): Do not save names looked up after
	the class is complete.  Use lookup_member, not
	IDENTIFIER_CLASS_VALUE.
	* config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
	* decl.c (cxx_init_decl_processing): Do not call
	init_search_processing.
	* method.c (do_build_copy_constructor): Remove unnecessary code.
	(do_build_assign_ref): Likewise.
	* name-lookup.c (pushdecl): Use lookup_member, not
	IDENTIFIER_CLASS_VALUE.
	(set_identifier_type_value_with_scope): Set TREE_TYPE on the
	type_shadowed list.
	(poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
	(push_class_binding): Do not set it.
	(clear_identifier_class_values): Remove.
	(push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
	(store_binding): Do not save it.
	(pop_from_top_level): Do not restore it.
	* name-lookup.h (cxx_saved_binding): Remove class_value.
	(clear_identifier_class_values): Remove.
	* ptree.c (cxx_print_identifier): Do not print
	IDENTIFIER_CLASS_VALUE.
	* search.c (search_obstack): Remove.
	(push_stack_level): Remove.
	(pop_stack_level): Remove.
	(search_level): Remove.
	(search_stack): Remove.
	(lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
	(setup_class_bindings): Use IDENTIFIER_MARKED, not
	IDENTIFIER_CLASS_VALUE.
	(marked_identifiers): New variable.
	(push_class_decls): Clear IDENTIFIER_MARKED.
	(pop_class_decls): Don't call pop_search_level.
	(init_search_processing): Remove.

2004-07-12  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (get_aggr_typedef): Remove.
	* init.c (get_aggr_typedef): Likewise.

	* name-lookup.c (push_class_level_binding): Simplify.

2004-07-12  Andrew Pinski  <apinski@apple.com>

	PR c++/16475
	Revert:
	2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
		PR c++/16276
		* rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
		is not public.

2004-07-12  Eric Christopher  <echristo@redhat.com>

	* parser.c (cp_parser_class_head): Remove unused variable.

2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* decl.c (grok_op_properties): Reject [de-]allocation functions
	declared in a namespace, or declared as static.

2004-07-12  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (make_binfo): Remove.
	* decl.c (xref_basetypes): Use make_tree_binfo directly.
	* tree.h (copy_base_binfos): Likewise.
	(make_binfo): Remove.

	* call.c (build_user_type_conversion_1, build_new_op,
	check_constructor_callable, build_temp,
	perform_direct_initialization_of_possible): Pass type directly to
	lookup_fnfields & build_special_member_call.
	(build_special_member_call): Accept a type, and complete it.
	* class.c (finish_stuct_bits): Copy the BINFOs here.
	* cvt.c (ocp_convert): Pass type directly to
	build_special_member_call.
	* decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
	(xref_basetypes): Allocate the binfo here. Adjust.
	* init.c (build_init, build_new_1): Pass type directly to
	build_special_member_call.
	* lex.c (cxx_make_type): Do not allocate binfo here.
	* name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
	* parser.c (cp_parser_class_head): Always call xref_basetypes.
	* pt.c (instantiate_class_template): Likewise. Inhibit access
	checking for template friends.
	* ptree.c (cxx_print_type): Adjust record printing.
	* search.c (lookup_base): When taking a type, complete it before
	looking for a binfo.
	(lookup_member): Delay completing a type.
	(push_class_decls): Don't walk an incomplete type.
	(lookup_conversions): Likewise.
	* semantics.c (finish_stmt_expr_expr): Pass type directly to
	build_special_member_call.
	* tree.c (copy_base_binfos): Adjust.
	(make_binfo): Likewise.
	* typeck.c (build_modify_expr): Pass type directly to
	build_special_member_call.
	* typeck2.c (process_init_constructor): Check a binfo exists.
	(build_m_component_ref): Allow accessing an incomplete type.
	(build_functional_cast): Pass type directly to
	build_special_member_call.

2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/2204
	* config-lang.in (gtfiles): Add typeck2.c.
	* Make-lang.in: Tweak typeck2.c dependencies, and add rule for
	gt-cp-typeck2.h.
	* cp-tree.h: Declare complete_type_check_abstract.
	* typeck2.c (pat_calc_hash, pat_compare,
	complete_type_check_abstract): New functions.
	(abstract_virtuals_error): If the type is abstract, register the
	declaration within abstract_pending_vars for further checks.
	Inspect also dependent types. Handle IDENTIFIER_NODEs as decl.
	* decl.c (cp_finish_decl): Do not strip array types.
	(create_array_type_for_decl): Check for abstractness of the element
	type.
	(complete_vars): Call complete_type_check_abstract.
	* class.c (finish_struct): Prepare a list of virtual functions for
	template types, and call complete_vars on it to check for abstractness.

2004-07-12  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/14107
	* decl.c (finish_function): Remove temporary band-aid.

2004-07-11  Mark Mitchell  <mark@codesourcery.com>

	* call.c (build_operator_new_call): Avoid using push_to_top_level.
	(build_new_op): Adjust call to lookup_function_nonclass.
	* name-lookup.c (identifier_type_value): Adjust call to
	lookup_name_real.
	(lookup_name_real): Add block_p parameter.
	(lookup_name_nonclass): Adjust call to lookup_name_real.
	(lookup_function_nonclass): Likewise.
	(lookup_name): Likewise.
	* name-lookup.h (lookup_name_real): Change prototype.
	(lookup_name_nonclass): Likewise.
	* parser.c (cp_parser_lookup_name): Likewise.

	* cp-tree.h (saved_scope): Make old_bindings a vector.
	(unuse_fields): Remove.
	* name-lookup.h (cxx_saved_binding): Define it.
	* class.c (pushclass): Don't use unuse_fields.
	* name-lookup.c (cxx_saved_binding_make): Remove.
	(store_binding): Add new bindings to a vector, using an
	accumulator style, rather than adding them to a list.
	(store_bindings): Adjust accordingly.
	(store_class_bindings): Likewise.
	(push_to_top_level): Likewise.
	(pop_from_top_level): Likewise.
	* optimize.c (maybe_clone_body): Must push_to_top_level and
	pop_from_top_level calls outside of loop.
	* parser.c (cp_parser_class_specifier): Move push_scope/pop_scope
	calls here from cp_parser_late_parsing_default_args.
	(cp_parser_save_default_args): Record the class type in which the
	function is declared.
	(cp_parser_late_parsing_default_args): Do not call
	push_nested_class/pop_nested_class.
	* search.c (dfs_unuse_fields): Remove.
	(unuse_fields): Remove.

2004-07-11  Joseph S. Myers  <jsm@polyomino.org.uk>

	* cp-lang.c (LANG_HOOKS_MAYBE_BUILD_CLEANUP, LANG_HOOKS_PUSHLEVEL,
	LANG_HOOKS_POPLEVEL, LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Remove.
	* cp-tree.h (poplevel): Declare.
	(set_block): Remove.
	* decl.c (set_block): Remove.

2004-07-10  Mike Stump  <mrs@apple.com>

	* decl2.c (import_export_class): Never export/import vtables
	with inline key functions.

2004-07-09  Steven Bosscher  <stevenb@suse.de>

	* typeck.c (c_expand_asm_operands): Remove.

2004-07-09  Mike Stump  <mrs@apple.com>

	* typeck.c (build_class_member_access_expr): Skip null deref
	warning when we don't dereference it.

2004-07-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/8211
	PR c++/16165
	* class.c (check_field_decls): Improve -Weffc++ warning: do not
	warn for pointers to functions/members, or for classes without
	destructors.

2004-07-08  Mark Mitchell  <mark@codesourcery.com>

	* name-lookup.h (struct cp_binding_level): Update documentation
	for class_shadowed.

2004-07-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/16169
	* typeck.c (check_return_expr): Improve -Weffc++ warning: handle
	returning CALL_EXPR, and non-reference return type.

2004-07-08  Nathan Sidwell  <nathan@codesourcery.com>

	* name-lookup.c (push_binding): Use VEC_reserve.

2004-07-08  Richard Henderson  <rth@redhat.com>

	* cp-tree.h (expand_eh_spec_block): Remove.

2004-07-07  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (saved_scope): Remove x_previous_class_type and
	x_previous_class_values; add x_previous_class_level.
	(previous_class_type): Remove.
	(previous_class_values): Remove.
	(previous_class_level): New macro.
	* class.c (pushclass): Restore the identifier cache more
	expeditiously.
	(invalidate_class_lookup_cache): Use vector for class_shadowed and
	previous_class_values.
	* decl.c (poplevel): Likewise.
	* name-lookup.c (cxx_binding_init): New function.
	(cxx_binding_make): Use it.
	(push_binding): For a binding in a class level, use a vector of
	cp_class_binding nodes.
	(push_binding_level): New function.
	(begin_scope): Use it.
	(leave_scope): Do not put class binding levels on the free list.
	(print_binding_level): Adjust for the fact that class_shadowed is
	a vector.
	(poplevel_class): Likewise.
	(clear_identifier_class_values): Likewise.
	(push_class_level_binding): Likewise.
	(set_class_shadows): Remove.
	(store_binding): New function.
	(store_class_bindings): New function.
	(push_to_top_level): Use store_class_bindings as appropriate.
	(pop_from_top_level): Use previous_class_level, not
	previous_class_type.
	* name-lookup.h (cp_class_binding): New type.
	(cp_binding_level): Use a vector object for class_shadowed.
	(push_binding_level): Declare.
	(set_class_shadows): Remove.

2004-07-07  Andrew Pinski  <apinski@apple.com>

	* class.c (instantiate_type): BUFFER_REF is dead.
	* lex.c (init_operators): IN_EXPR is dead.

2004-07-07  Jason Merrill  <jason@redhat.com>

	PR c++/16334
	* call.c (build_new_op): Give overload warnings for built-in
	candidates.

2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/16276
	* rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
	is not public.

2004-07-07  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (CLASSTYPE_N_BASECLASSES): Remove.
	* class.c (build_primary_vtable, check_bases,
	determine_primary_base, finish_struct_bits,
	maybe_warn_about_overly_private_class, dfs_find_final_overrider_q,
	get_basefndecls, warn_hidden, walk_subobject_offsets,
	build_base_fields, create_vtable_ptr, propagate_binfo_offsets,
	layout_virtual_bases, end_of_class, warn_about_ambiguous_bases,
	finish_struct_1, get_vfield_name, contains_empty_class_p,
	dump_class_hierarchy_r, finish_vtbls, build_vtt_inits,
	dfs_ctor_vtable_bases_queue_p, accumulate_vtbl_inits,
	add_vcall_offset_vtbl_entries_r, cp_fold_obj_type_ref): Adjust
	BINFO macros.
	* decl.c (xref_basetypes): Likewise.
	* dump.c (cp_dump_tree): Likewise.
	* error.c (dump_expr): Likewise.
	* init.c (sort_mem_initializers, expand_member_init,
	push_base_cleanups): Likewise.
	* method.c (do_build_copy_constructor, do_build_assign_reg,
	synthesize_exception_spec): Likewise.
	* name-lookup.c (arg_assoc_class): Likewise.
	* pt.c (instantiate_class_template, tsubst,
	get_template_base_recursive): Likewise.
	* ptree.c (cxx_print_type): Likewise.
	* rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
	* search.c (lookup_base_r, dynamic_cast_base_recurse,
	dfs_access_in_type, access_in_type, lookup_field_queue_p,
	bfs_walk, dfs_walk_real, look_for_overrides, markedp, unmarkedp,
	marked_pushdecls_p, unmarked_pushdecls_p, dfs_debug_markedp,
	dfs_debug_unmarkedp, dfs_check_overlap, dfs_no_overlap_yet,
	binfo_for_vtable, copied_binfo, original_binfo): Likewise
	* tree.c (copy_base_binfos, make_binfo): Likewise.
	* typeck.c (commmon_base_type): Likewise
	* typeck2.c (process_init_constructor): Likewise

2004-07-06  Joseph S. Myers  <jsm@polyomino.org.uk>

	* decl.c (check_tag_decl): Name redeclared type in diagnostic.

2004-07-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/3671
	* pt.c (convert_nontype_argument): Disallow conversions between
	different enumeration types.

2004-07-06  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (BINFO_MARKED): Remove.
	(BINFO_VTABLE_PATH_MARKED, BINFO_NEW_VTABLE_MARKED,
	BINFO_DEPENDENT_BASE_P, BINFO_LOST_PRIMARY_P,
	BINFO_INDIRECT_PRIMARY_P): Use appropriate BINFO_FLAG_n.
	(SET_BINFO_NEW_VTABLE_MARKED): Use BINFO_VIRTUAL_P.
	* class.c (build_base_path): Use BINFO_VIRTUAL_P.
	(mark_primary_bases, determine_primary_base, base_derived_from,
	dfs_find_final_overrider, dfs_find_final_overrider_q,
	dfs_find_inal_overrider_post, update_vtable_entry_for_fn,
	dfs_modify_vtables, walk_subobject_offsets,
	layout_nonempty_base_or_field, build_base_field,
	build_base_fields, propagate_binfo_offsets, layout_virtual_bases,
	end_of_class, get_vfield_name, dump_class_hierarchy, dump_vtable,
	finish_vtbls, build_vtt_inits, dfs_build_secondary_vptr_vtt_inits,
	build_ctor_vtbl_group, accumulate_vtble_inits,
	dfs_accumulate_vtbls_inits, build_vbase_offset_vtbl_entries,
	build_vcall_offset_vtbl_entries, add_vcall_offset_vtbl_entries_r,
	add_vcall_offset_vtbl_entries_1): Likewise.
	* decl.c (xref_basetypes): Incomming virtual base indicated by
	TREE_TYPE. Adjust.
	* dump.c (cp_dump_tree): Use BINFO_VIRTUAL_P.
	* init.c (finish_init_stmts, sort_mem_initializers,
	emit_mem_initializers, build_vtble_address, expand_member_init,
	push_base_cleanups): Likewise.
	* method.c (do_build_copy_constructor): Likewise.
	* pt.c (instantiate_class_template,
	get_template_base_recursive): Likewise.
	* rtti.c (dfs_class_hint_mark, get_pseudo_ti_init,
	get_pseudo_ti_desc): Likewise.
	* search.c (lookup_base_r, dynamic_cast_base_recurse,
	binfo_from_vbase, binfo_via_virtual, copied_binfo,
	original_binfo): Likewise.
	* semantics.c (finish_base_specifier): Virtualness is indicated
	by TREE_TYPE.
	* tree.c (copy_base_binfos): Use BINFO_VIRTUAL_P.

2004-07-06  Mark Mitchell  <mark@codesourcery.com>

	Revert:
	2004-06-24  Jason Merrill  <jason@redhat.com>
	PR c++/16115
	* decl.c (grokparms): Give the PARM_DECL reference type if the
	parameter is passed by invisible reference.

2004-07-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cp-lang.c (cp_var_mod_type_p): Add extra arg.
	* decl.c (grokdeclarator): Extra arg to variably_modified_type_p.
	* pt.c (check_instantiated_args, unify): Likewise.

2004-07-05  Phil Edwards  <phil@codesourcery.com>

	* Make-lang.in (check-c++, lang_checks):  Add some comments.

2004-07-05  Zack Weinberg  <zack@codesourcery.com>

	* cp-mudflap.c: Delete file.
	* Makefile.in: Remove all references to cp-mudflap.o.

2004-07-05  Zack Weinberg  <zack@codesourcery.com>

	* decl.c (cxx_init_decl_processing): Call
	build_common_tree_nodes before creating the global NAMESPACE_DECL.

2004-07-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/2518
	* call.c (build_operator_new_call): Look only at global scope.

2004-07-05  Nathan Sidwell  <nathan@codesourcery.com>

	* call.c (enforce_access): Expect TREE_BINFO.
	* class.c (binfo_ctor_vtable): Check TREE_BINFO.
	* cp-tree.h (RECORD_OR_UNION_TYPE_CHECK): Remove.
	(BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
	Adjust.
	(BINFO_LANG_ELTS): Remove.
	(BINFO_LANG_SLOTS): New.
	(TYPE_RAISES_EXCEPTIONS, ENUM_TEMPLATE_INFO): Use TYPE_LANG_SLOT_1.
	(CLASSTYPE_TEMPLATE_INFO): Adjust.
	* pt.c (tsubst): Split TREE_BINFO case from TREE_VEC case.
	* search.c (lookup_member): Check TREE_BINFO.
	* semantics.c (perform_or_defer_access_check): Likewise.
	(check_accessibility_of_qualified_id): Check
	deferred_access_no_check.
	* tree.c (make_binfo): Use make_tree_binfo.

2004-07-04  Mark Mitchell  <mark@codesourcery.com>

	* method.c (implicitly_declare_fn): Set linkage of generated
	functions.

2004-07-04  Richard Henderson  <rth@redhat.com>

	* typeck.c (cxx_mark_addressable): Don't put_var_into_stack.

2004-07-03  Scott Brumbaugh  <scottb.lists@verizon.net>

	PR c++/3761
	* name-lookup.c (push_class_level_binding): Don't pass a
	TREE_LIST of ambiguous names to check_template_shadow as it
	only handles declarations. Instead, pull the declaration
	out and pass that.

2004-07-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14971
	* pt.c (check_explicit_specialization): Clarify error message.

2004-07-02  Richard Henderson  <rth@redhat.com>

	* tree.c (cp_unsave_r): Update remap_save_expr call.

2004-07-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16240
	* mangle.c (write_template_arg): Correct mangling.

	PR c++/16297
	* decl.c (grokdeclarator): Robustify.

2004-07-01  Richard Henderson  <rth@redhat.com>

	* class.c (fixed_type_or_null): Don't handle RTL_EXPR.
	* method.c (synthesize_method): Don't clear_last_expr.
	* name-lookup.c (maybe_push_cleanup_level): Likewise.

2004-07-01  Nick Clifton  <nickc@redhat.com>

	* decl2.c (import_export_class): Invoke the
	import_export_class field in the gcc_target structure if it is not
	empty.

2004-06-30  Richard Henderson  (rth@redhat.com>

	* decl.c (start_preparsed_function): Don't set immediate_size_expand.
	* method.c (use_thunk): Likewise.

2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* call.c (build_over_call), typeck.c (build_function_call): Call
	check_function_arguments instead of check_function_format.

2004-06-30  Joseph S. Myers  <jsm@polyomino.org.uk>

	* call.c (build_over_call), typeck.c (build_function_call): Update
	calls to check_function_format.

2004-06-30  Richard Henderson  <rth@redhat.com>

	* call.c (build_over_call): Use __builtin_memcpy for copying
	CLASS_AS_BASE rather than funny casting.

2004-06-30  Richard Henderson  <rth@redhat.com>

	* init.c (build_new_1): Fill in TYPE_DOMAIN, TYPE_SIZE and
	TYPE_SIZE_UNIT of full_type.

2004-06-30  Per Bothner  <per@bothner.com>

	Conditionally compile support for --enable-mapped_location.
	* decl.c (pop_label):  Handle (imperfectly) USE_MAPPED_LOCATION case.
	* decl2.c:  If USE_MAPPED_LOCATION, don't do some line number
	adjustments - which I don't understand.
	* error.c (dump_decl):  Rename "<interrnal>" to "<built-in>".
	* error.c:  Use LOCATION_FILE and EXPR_LOCATION macros.
	(print_instantiation_partial_context):  Use expand_location.
	* decl.c (duplicate_decl):  Use new DECL_IS_BUILTIN macro.
	* name-lookup.c:  Likewise.
	* lex.c (cxx_init):  Likewise.  Also use BUILTINS_LOCATION.
	* name-lookup.c:  Use input_line macro.
	* parser.c (cp_lexer_get_preprocessor_token):  Use UNKNOWN_LOCATION.
	(cp_parser_statement):  Rename locaal variable statement_locus to
	statement_location and use SET_EXPR_LOCATION macro.
	* pt.c:  Handle USE_MAPPED_LOCATION case.  Use new macros.
	* tree.c (cp_walk_subtrees):  Likewise.

2004-06-29  Per Bothner  <per@bothner.com>

	* tree.c (build_min_nt, build_min, build_min_non_dep):
	Don't set TREE_COMPLEXITY from input_line.

2004-06-29  Paul Brook  <paul@codesourcery.com>

	* init.c: Include target.h.
	(get_cookie_size): Remove and replace with target hook.
	Update callers.
	(build_new_1): Store the element size in the cookie.

2004-06-29  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/16260
	* parser.c (cp_parser_template_declaration_after_export): Disable
	access checks here ...
	(cp_parser_class_specifier): ... not here.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK,
	VAR_FUNCTION_OR_PARM_DECL_CHECK, RECORD_OR_UNION_TYPE_CHECK,
	BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Use appropriate
	TREE_CHECK macro.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* cp-tree.h (struct deferred_access): Move to ...
	* semantics.c (struct deferred_access): ... here. Adjust.
	(deferred_access_stack): Make a VEC(deferred_access),
	(deferred_access_free_list): Remove.
	(deferred_access_no_check): New.
	(push_deferring_access_checks, resume_deferring_access_checks,
	stop_deferring_access_checks, pop_deferring_access_checks,
	get_deferred_access_checks, pop_to_parent_deferring_access_checks,
	perform_deferred_access_checks, perform_or_defer_access_check): Adjust.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/16174
	* call.c (build_temp): Declare.
	(check_constructor_callable): New.
	(reference_binding): Only set CHECK_COPY_CONSTRUCTOR if not for
	CONSTRUCTOR_CALLABLE.
	(convert_like_real, initialize_reference): Use
	check_constructor_callable.
	* cp-tree.h (LOOKUP_CONSTRUCTOR_CALLABLE): New.
	(LOOKUP_*): Renumber.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	* friend.c (add_friend): Only perform access checks when context
	is a class.
	* lex.c (cxx_make_type): Only create a binfo for aggregate types.
	* parser.c (cp_parser_class_specifier): Disable access checks here
	when parsing the body of a templated class.
	* semantics.c (perform_or_defer_access_checks): Reorder to allow
	NULL binfos when not checking access.

2004-06-28  Nathan Sidwell  <nathan@codesourcery.com>

	Use vector API for vbase list.
	* cp-tree.h: Include vec.h
	(DEF_VEC_P (tree)): New type.
	(struct lang_type_class): Change vbase's member type.
	(binfo_for_vbase): Declare.
	* class.c (determine_primary_base, base_derived_from,
	update_vtable_entry_for_fn, walk_subobject_offsets, end_of_class,
	warn_about_ambiguous_bases, dfs_accumulate_vtbl_inits,
	build_vtbl_initializer): Adjust.
	* decl.c (xref_basetypes): Adjust, accumulate upper bound of
	vbases.
	* init.c (sort_mem_initializers, expand_member_init,
	push_base_cleanups): Adjust.
	* method.c (do_build_copy_constructor): Adjust.
	* search.c (get_pure_virtuals, copied_binfo, original_binfo): Adjust.
	(binfo_for_vbase): New.
	* tree.c (copy_base_binfos): Adjust.

2004-06-28  Mark Mitchell  <mark@codesourcery.com>

	* parser.c (cp_parser_set_decl_spec_type): Fix thinko.

2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/14123
	* cxx-pretty-print.c (pp_cxx_ptr_operator): Properly put
	paranthesis in case of pointers to array members.
	* error.c (dump_type_prefix): Likewise.
	(dump_type_suffix): Maybe issue a whitespace when printing
	ARRAY_TYPE.

2004-06-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/16193
	* parser.c (cp_parser_set_decl_spec_type): Refine test for
	redefinition of built-in types.

2004-06-27  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* error.c (pp_template_argument_list_start): Remove.
	(pp_template_argument_list_end): Likewise.
	(pp_separate_with_comma): Use pp_cxx_separate_with.
	(reinit_global_formatting_buffer): Remove.
	(pp_non_consecutive_character): Likewise.
	(dump_scope): Use pp_cxx_colon_colon.
	(dump_template_parameter): Use pp_cxx_identifier,
	pp_cxx_tree_identifier and pp_cxx_whitespace.
	(dump_templat_bindings): Replace use of pp_string with sequence
	of pp_cxx_whitespace and pp_equal.
	(dump_type): Use pp_cxx_identifier, pp_cxx_tree_identifier,
	pp_cxx_colon_colon, pp_cxx_whitespace throughout.  Don't set
	padding here.
	(dump_aggr_type): Use pp_cxx_identifier amd pp_cxx_tree_identifier.
	(dump_type_prefix): Don't set padding.  Use pp_cxx_whitespace,
	pp_cxx_left_parent, pp_cxx_colon_colon and pp_cxx_star troughout.
	(dump_type_suffix): Use pp_cxx_right_paren, pp_cxx_left_bracket,
	pp_cxx_right_bracket, pp_cxx_identifier throughout,
	(dump_decl): Likewise.
	(dump_template_decl): Likewise.
	(dump_function_decl): Likewise.  Set padding as appropriate.
	(dump_parameters): Use pp_cxx_left_paren, pp_cxx_identifier and
	pp_cxx_right_paren.
	(dump_exception_spec): Likewise.
	(dump_function_name): Use pp_cxx_tree_identifier and
	pp_cxx_identifier.
	(dump_template_parms): Use pp_cxx_begin_template_argument_list and
	pp_cxx_end_template_argument_list.
	(dump_expr): Use pp_cxx_left_paren, pp_cxx_right_paren,
	pp_cxx_colon_colon, pp_cxx_identifier, pp_cxx_tree_identifier and
	pp_cxx_whitespace throughout.
	(dump_binary_op): Use pp_cxx_whitespace, pp_cxx_left_paren and
	pp_cxx_right_paren.
	(dump_unary_op): Likewise.
	(reinit_cxx_pp): New function.
	(type_as_string); Use it.
	(expr_as_string): Likewise.
	(decl_as_string); Likewise.
	(context_as_string): Likewise.
	(lang_decl_name): Likewise.
	(decl_to_string): Likewise.
	(expr_to_string): Likewise.
	(parm_to_string): Likewise.
	(type_to_string): Likewise.
	(args_to_string): Likewise.
	(cv_to_string): Likewise.

2004-06-26  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (cp_cv_quals): New type.
	(cp_declarator): Use it instead of "tree" as appropriate.
	(grok_method_quals): Adjust prototype.
	(grokclassfn): Likewise.
	(do_friend): Likewise.
	* decl.c (grokfndecl): Use cp_cv_quals, not tree.
	(grokdeclarator): Likewise.
	* decl2.c (grok_method_quals): Likewise.
	(grokclassfn): Likewise.
	* friend.c (do_friend): Likewise.
	* method.c (implicitly_declare_fn): Adjust call to grokclassfn.
	* parser.c (make_call_declarator): Use cp_cv_quals, not tree.
	(make_pointer_declarator): Likewise.
	(make_reference_declarator): Likewise.
	(make_ptrmem_declarator): Likewise.
	(cp_parser_ptr_operator): Likewise.
	(cp_parser_cv_qualifier_seq_opt): Likewise.
	(cp_parser_cv_qualifier_opt): Remove.
	(cp_parser_new_declarator_opt): Adjust call to
	cp_parser_ptr_operator.
	(cp_parser_conversion_declaration_opt): Likewise.
	(cp_parser_declarator): Use cp_cv_quals, not tree.
	(cp_parser_direct_declarator): Likewise.

2004-06-26  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* call.c, cp-tree.h, cxx-pretty-print.c, decl.c, decl2.c:
	Rename DECL_STMT to DECL_EXPR.
	* init.c, name-lookup.c, parser.c, pt.c, semantics.c: Likewise.
	* cp-lang.c (LANG_HOOKS_SAFE_FROM_P): Deleted.
	* tree.c (cp_walk_subtrees): Don't call c_walk_subtrees.

2004-06-26  Jan Hubicka  <jh@suse.cz>

	PR C++/14865
	* decl2.c (maybe_emit_vtables):  Always import_export_vtable for the
	reachability analysis.

2004-06-25  Mark Mitchell  <mark@codesourcery.com>

	* cp-mudflap.c (mflang_flush_calls): Fix thinkos resulting from
	2004-06-23 change.

2004-06-25  Paul Brook  <paul@codesourcery.com>

	* decl2.c (get_guard): Call targetm.cxx.guard_type.
	(get_guard_bits, get_guard_cond): Call targetm.cxx.guard_mask_bit.

2004-06-24  Mark Mitchell  <mark@codesourcery.com>

	* decl.c (grokdeclarator): Restore error messages about __thread.
	* parser.c (cp_parser_decl_specifier_seq): Likewise.

2004-06-24  Jason Merrill  <jason@redhat.com>

	PR c++/16115
	* decl.c (grokparms): Give the PARM_DECL reference type if the
	parameter is passed by invisible reference.

2004-06-24  Andreas Schwab  <schwab@suse.de>

	* cp-tree.h (enum cp_storage_class): Remove trailing comma.

2004-06-23  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (cp/lex.o): Do not depend on cp/lex.h.
	(cp/decl.o): Likewise.
	(cp/decl2.o): Likewise.
	(cp/pt.o): Likewise.
	(cp/semantics.o): Likewise.
	* config-lang.in (gtfiles): Do not reference cp/lex.h.
	* class.c: Do not include lex.h.
	(add_implicitly_declared_members): Do not use
	adding_implicit_members.
	(check_bases_and_members): Do not talk about grok_x_components.
	* cp/cp-tree.h (adding_implicit_members): Remove.
	(cp_storage_class): New type.
	(cp_decl_spec): Likewise.
	(cp_decl_specifier_seq): Likewise.
	(cp_parameter_declarator): Use it for the decl_specifiers field.
	(check_tag_decl): Adjust prototype.
	(shadow_tag): Likewise.
	(groktypename): Likewise.
	(start_decl): Likewise.
	(start_function): Likewise.
	(start_method): Likewise.
	(grok_x_components): Remove.
	(grokfield): Adjust prototype.
	(grokbitfield): Likewise.
	(finish_member_class_template): Remove.
	* decl.c: Do not include lex.h.
	(adding_implicit_members): Do not define.
	(check_tag_decl): Do not use trees to represent decl-specifiers.
	(shadow_tag): Likewise.
	(groktypename): Likewise.
	(start_decl): Likewise.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	(grokparms): Likewise.
	(start_function): Likewise.
	(start_method): Likewise.
	* decl.h (grokdeclarator): Adjust prototype.
	* decl2.c: Do not include lex.h.
	(grok_x_components): Remove.
	(grokfield): Do not use trees to represent decl-specifiers.
	(grokbitfield): Likewise.
	* lex.c: Do not include lex.h.
	* lex.h: Remove.
	* parser.c: Include target.h.
	(clear_decl_specs): New function.
	(cp_parser_translation_unit): Do not use trees to represent
	decl-specifiers.
	(cp_parser_postfix_expression): Likewise.
	(cp_parser_new_type_id): Likewise.
	(cp_parser_condition): Likewise.
	(cp_parser_simple_declaration): Likewise.
	(cp_parser_decl_specifier_seq): Likewise.
	(cp_parser_function_specifier_opt): Likewise.
	(cp_parser_conversion_type_id): Likewise.
	(cp_parser_template_parameter): Likewise.
	(cp_parser_explicit_instantiation): Likewise.
	(cp_parser_type_specifier): Likewise.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_type_id): Likewise.
	(cp_parser_type_specifier_seq): Likewise.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_exception_declaration): Likewise.
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Likewise.
	(cp_parser_single_declaration): Likewise.
	(cp_parser_save_member_function_body): Likewise.
	(cp_parser_friend_p): Likewise.
	(cp_parser_set_storage_class): New function.
	(cp_parser_set_decl_spec_type): Likewise.
	* pt.c: Do not include lex.h.
	* semantics.c: Likewise.
	(finish_member_class_template): Remove.

2004-06-23  Roger Sayle  <roger@eyesopen.com>

	* call.c (build_cxx_call): Don't call expand_tree_builtin.  No
	longer take both "args" and "convert_args" as arguments.
	(build_op_delete_call): Update call to build_cxx_call.
	(build_over_call): Likewise, update call to build_cxx_call.
	* cp-tree.h (build_cxx_call): Update funtion prototype.
	* typeck.c (build_function_call): Don't call expand_tree_builtin.
	* rtti.c (throw_bad_cast): Update call to build_cxx_call.
	(throw_bad_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.

2004-06-22  Richard Henderson  <rth@redhat.com>

	* class.c (build_vfn_ref): Take a pointer not object.  Build
	an OBJ_TYPE_REF.
	(cp_fold_obj_type_ref): New.
	* call.c (build_over_call): Update build_vfn_ref call.
	* cp-lang.c (LANG_HOOKS_FOLD_OBJ_TYPE_REF): New.
	* cp-tree.h (cp_fold_obj_type_ref): Declare.

2004-06-21  Jason Merrill  <jason@redhat.com>

	PR c++/16112
	* cp-gimplify.c (cp_gimplify_init_expr): Look through
	CLEANUP_POINT_EXPR.

2004-06-21  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.def (NEW_EXPR): Add a fourth slot.
	* cp-tree.h (PARMLIST_ELLIPSIS_P): Remove.
	(TREE_PARMLIST): Likewise.
	(CALL_DECLARATOR_PARMS): Likewise.
	(CALL_DECLARATOR_QUALS): Likewise.
	(CALL_DECLARATOR_EXCEPTION_SPEC): Likewise.
	(cp_declarator_kind): New type.
	(cp_parameter_declarator): Likewise.
	(cp_declarator): Likewise.
	(cp_error_declarator): Likewise.
	(no_parameters): Likewise.
	(groktypename): Change prototype.
	(start_decl): Likewise.
	(start_handler_parms): Likewise.
	(get_scope_of_declarator): Likewise.
	(start_function): Likewise.
	(start_preparsed_function): New function.
	(start_function): Change prototype.
	(start_method): Likewise.
	(grokfield): Likewise.
	(grokbitfield): Likewise.
	(build_new): Likewise.
	(make_pointer_declarator): Remove.
	(make_reference_declarator): Likewise.
	(make_call_declarator): Likewise.
	(set_quals_and_spec): Likewise.
	(process_template_parm): Change prototype.
	(begin_function_definition): Remove.
	(finish_parmlist): Remove.
	* decl.c (groktypename): Do not use trees to represent
	declarators.
	(start_decl): Likewise.
	(start_handler_parms): Remove.
	(get_scope_of_declarator): Reimplement.
	(grokdeclarator): Do not use trees to represent	declarators.
	(grokparms): Likewise.
	(start_function): Likewise.
	(start_method): Likewise.
	(build_void_list_mode): Do not use TREE_PARMLIST.
	* decl.h (grokdeclarator): Change prototype.
	* decl2.c (grok_method_quals): Robustify.
	(grok_x_components): Do not use trees to represent declarators.
	(grokfield): Likewise.
	(grokbitfield): Likewise.
	(start_objects): Build FUNCTION_DECLs, not declarators.
	(start_static_storage_duration_function): Likewise.
	* init.c (build_new): Simplify.
	* lex.c (make_pointer_declarator): Remove.
	(make_reference_declarator): Likewise.
	(make_call_declarator): Likewise.
	(set_quals_and_spec): Likewise.
	* method.c (use_thunk): Use start_preparsed_function.
	(synthesize_method): Likewise.
	(implicitly_declare_fn): Build FUNCTION_DECLs, not declarators.
	* optimize.c (maybe_clone_body): Use start_preparsed_function.
	* parser.c (cp_error_declarator): New variable.
	(declarator_obstack): Likewise.
	(alloc_declarator): New function.
	(make_declarator): Likewise.
	(make_id_declarator): Likewise.
	(make_pointer_declarator): Likewise.
	(make_reference_declarator): Likewise.
	(make_ptrmem_declarator): Likewise.
	(make_call_declarator): Likewise.
	(make_array_declarator): Likewise.
	(no_parameters): New variable.
	(make_parameter_declarator): Likewise.
	(cp_parser_check_for_definition_in_return_type): Do not use trees
	to represent declarators.
	(cp_parser_translation_unit): Likewise.
	(cp_parser_new_expression): Likewise.
	(cp_parser_new_type_id): Likewise.
	(cp_parser_new_declarator_opt): Likewise.
	(cp_parser_direct_new_declarator): Likewise.
	(cp_parser_condition): Likewise.
	(cp_parser_declaration_statement): Likewise.
	(cp_parser_declaration): Likewise.
	(cp_parser_conversion_type_id): Likewise.
	(cp_parser_conversion_declarator_opt): Likewise.
	(cp_parser_template_parameter_list): Likewise.
	(cp_parser_template_parameter): Likewise.
	(cp_parser_explicit_instantiation): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_declarator): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_type_id): Likewise.
	(cp_parser_parameter_declaration_clause): Likewise.
	(cp_parser_parameter_declaration_list): Likewise.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_exception_declaration): Likewise.
	(cp_parser_check_declarator_template_parameters): Likewise.
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Likewise.
	(cp_parser_save_member_function_body): Likewise.
	* pt.c (process_template_parm): Add is_non_type parameter.
	(convert_template_argument): Adjust call to groktypename.
	(tsubst_call_declarator_parms): Remove use of TREE_PARMLIST.
	(tsubst): Do not expect declarators.
	(tsubst_copy_and_build): Adjust NEW_EXPR case to handle additional
	argument.
	(instantiate_decl): Use start_preparsed_function.
	* semantics.c (begin_function_definition): Remove.
	(finish_parmlist): Remove.
	* cp-mudflap.c (mflang_flush_calls): Build FUNCTION_DECLs, not
	declarators.

2004-06-21  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* call.c (build_vfield_ref): Add new operand for COMPONENT_REF.
	(build_new_method_call): Likewise.
	* decl.c (local_variable_p_walkfn): Don't walk into types.
	* decl2.c (grok_array_decl): Add new operands for ARRAY_REF.
	(build_anon_union_vars): Add new operand for COMPONENT_REF.
	* init.c (buld_new): Add new operand for ARRAY_REF.
	* method.c (do_build_copy_constructor): New op for COMPONENT_REF.
	(do_build_assign_ref): Likewise.
	* parser.c (cp_parser_direct_new_declarator): Add new operands
	for ARRAY_REF.
	(cp_parser_direct_declarator): Likewise.
	* pt.c (tsubst): Likewise.
	(tsubst_copy, tsubst_copy_and_build): Likewise; also add new operand
	for COMPONENT_REF.
	* semantics.c (finish_non_static_data_member): Add new operand
	for COMPONENT_REF.
	* typeck.c (build_class_member_access_expr): Likewise.
	(build_class_member_access_expr, finish_class_member_access_expr):
	Likewise.
	(build_ptrmemfunc_access_expr): Likewise.
	(build_array_ref): Add new operands for ARRAY_REF.
	* typeck2.c (split_nonconstant_init_1): Likewise; COMPONENT_REF too.
	* tree.c (count_trees_r, no_linkage_helper): Don't walk in types.

2004-06-21  Richard Henderson  <rth@redhat.com>

	* dump.c (cp_dump_tree): Don't use dump_next_stmt.
	* parser.c (cp_parser_jump_statement): Update commentary.
	* pt.c (tsubst_expr): Use RETURN_EXPR.
	* semantics.c (finish_return_stmt): Likewise.
	(finalize_nrv_r): Likewise.
	* typeck.c, typeck2.c: Update file start commentary.

2004-06-21  Richard Henderson  <rth@redhat.com>

	* semantics.c (finish_expr_stmt): Call verify_sequence_points.

2004-06-20  Richard Henderson  <rth@redhat.com>

	* cp-tree.h (add_decl_stmt): Declare.
	* pt.c (tsubst_copy): Abort for CLEANUP_POINT_EXPR.
	* semantics.c (maybe_cleanup_point_expr): New.
	(add_decl_stmt, finish_expr_stmt, finish_return_stmt,
	finish_for_expr, finish_switch_cond): Use it.
	(finalize_nrv_r): Don't build an EXPR_STMT.  Don't frob TREE_CHAIN.

2004-06-20  Richard Henderson  <rth@redhat.com>

	* cp-tree.def (CLEANUP_STMT, IF_STMT): Move from c-common.def.
	* cp-gimplify.c (gimplify_if_stmt): Move from c-gimplify.c.
	(cp_gimplify_expr): Call it.
	(gimplify_cleanup_stmt): Move from c-gimplify.c.
	(cp_genericize): New.
	* decl.c (finish_function): Call it.
	* cp-tree.h (cp_stmt_codes): Add CLEANUP_STMT, IF_STMT.
	(CLEANUP_BODY, CLEANUP_EXPR, CLEANUP_DECL): Move from c-common.h.
	(IF_COND, THEN_CLAUSE, ELSE_CLAUSE): Likewise.
	(cp_genericize): Declare.
	* cxx-pretty-print.c (pp_cxx_statement): Add CLEANUP_STMT, IF_STMT.
	* dump.c (cp_dump_tree): Likewise.
	* semantics.c (push_cleanup): Move from c-semantics.c.

2004-06-20  Zack Weinberg  <zack@codesourcery.com>

	* cp-lang.c (has_c_linkage): Implement.

	* cp-tree.h (set_mangled_name_for_decl): Don't prototype.
	* decl.c (duplicate_decls): Use COPY_DECL_RTL.
	(builtin_function_1): Don't call make_decl_rtl.
	(build_cp_library_fn): Don't call set_mangled_name_for_decl.
	(grokvardecl): Don't call mangle_decl.
	* except.c (nothrow_libfn_p): Look at DECL_NAME, not
	DECL_ASSEMBLER_NAME.
	* method.c (set_mangled_name_for_decl): Delete.
	* name-lookup.c (pushdecl): When a local extern shadows a
	file-scope declaration of the same object, give both DECLs the
	same DECL_UID.
	* typeck.c (cxx_mark_addressable): Don't set TREE_ADDRESSABLE
	on DECL_ASSEMBLER_NAME.

2004-06-19  Richard Henderson  <rth@redhat.com>

	* cp-gimplify.c: Remove unnecessary prototypes.
	(cp_gimplify_stmt): Merge into ...
	(cp_gimplify_expr): ... here.  Move to end of file.  Handle
	stmts_are_full_exprs_p frobbing.
	* cp-tree.h (cp_gimplify_stmt): Remove.
	* pt.c (tsubst_expr): Merge prep_stmt and unify.
	* tree.c (init_tree): Don't set lang_gimplify_stmt.

2004-06-18  Richard Henderson  <rth@redhat.com>

	PR c++/16034
	* semantics.c (begin_cond): New.
	(finish_cond): Rewrite to handle template DECL_STMTs specially.
	Assume that non-template decls go land before the conditional.
	(simplify_loop_decl_cond): Likewise.
	(begin_if_stmt, finish_if_stmt_cond, begin_while_stmt,
	finish_while_stmt_cond, finish_for_init_stmt, finish_for_cond,
	begin_switch_stmt, finish_switch_cond): Update to match.

2004-06-17  Jason Merrill  <jason@redhat.com>

	PR c++/16015
	* semantics.c (simplify_aggr_init_expr): Don't return the slot.
	(finish_stmt_expr_expr): Update type after conversions.
	(finish_stmt_expr): Wrap initializer in CLEANUP_POINT_EXPR.
	Handle void initializer.
	* tree.c (build_cplus_new): Make AGGR_INIT_EXPRs void.

2004-06-17  Geoffrey Keating  <geoffk@apple.com>

	* class.c (build_clone): Don't call defer_fn, let mark_used do it.
	* cp-tree.h (defer_fn): Delete.
	* decl2.c (defer_fn): Delete.
	(finish_file): Simplify deferred_fns loops; check that
	only used inline functions get into deferred_fns.
	(mark_used): Inline previous contents of defer_fn.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* cp-tree.h (COMPOUND_STMT_TRY_BLOCK, COMPOUND_STMT_BODY_BLOCK): Kill.
	(BIND_EXPR_TRY_BLOCK, BIND_EXPR_BODY_BLOCK): New.
	* cxx-pretty-print.c (pp_cxx_function_definition): Move handling
	of CTOR_INITIALIZER ...
	(pp_cxx_statement): ... here.
	* decl.c (begin_function_body): Don't set COMPOUND_STMT_BODY_BLOCK.
	(finish_function): Use alloc_stmt_list to zap entire function.
	* parser.c (cp_parser_compound_statement): Update commentary.
	* pt.c (tsubst_expr): Use BIND_EXPR instead of COMPOUND_STMT.
	* semantics.c (begin_compound_stmt, finish_compound_stmt): Likewise.
	(finish_stmt_expr): Don't look through COMPOUND_STMT.

2004-06-16  Geoffrey Keating  <geoffk@apple.com>

	* pt.c (mark_decl_instantiated): Don't call defer_fn.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* parser.c (cp_parser_labeled_statement): Update commentary.
	* pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
	* tree.c (mark_local_for_remap_r): Likewise.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* parser.c (cp_parser_asm_definition): Update commentary.
	* pt.c (tsubst_expr): Use ASM_EXPR.
	* semantics.c (finish_asm_stmt): Likewise.

2004-06-16  Richard Henderson  <rth@redhat.com>

	* decl.c (finish_destructor_body): Use LABEL_EXPR.
	* parser.c (cp_parser_statement): Update commentary.
	* pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
	* semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
	* tree.c (mark_local_for_remap_r): Likewise.

2004-06-16  Richard Henderson  <rth@redhat.com>

	PR c++/16012
	* semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
	statement in FOR_INIT_STMT for templates.

2004-06-15  Richard Henderson  <rth@redhat.com>

	* call.c (initialize_reference): Don't build CLEANUP_STMT here.
	* cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
	(genericize_try_block): Use gimplify_stmt.
	(genericize_catch_block, genericize_eh_spec_block): Likewise.
	(cp_gimplify_init_expr): Remove STMT_EXPR special case.
	(gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
	* cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
	(cp_tree_chain_matters_p): Remove.
	* cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
	(COMPOUND_STMT_BODY_BLOCK): New.
	(STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
	(EXPR_STMT_STMT_EXPR_RESULT): New.
	(building_stmt_tree): Check cur_stmt_list.
	(tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
	(BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
	* decl.c (poplevel): Use pop_stmt_list for minding cleanups.
	(cp_finish_decl): Use push_cleanup.
	(start_function, finish_function): Use statement lists.
	(finish_stmt): Do nothing.
	* except.c (begin_eh_spec_block): Use statement lists.
	(check_handlers_1, check_handlers): Likewise.
	* init.c (construct_virtual_base): Don't add extra compound stmts.
	(build_vec_init): Likewise.
	* name-lookup.c (maybe_push_cleanup_level): Use statement lists.
	* name-lookup.h (struct cp_binding_level): Add statement_list.
	* parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
	(cp_parser_labeled_statement, cp_parser_expression_statement,
	cp_parser_statement_seq_opt): Likewise.
	(cp_parser_compound_statement): Likewise.  Take bool for try block.
	(cp_parser_selection_statement): Tidy if processing.
	(cp_parser_already_scoped_statement): Rewrite to do what it says.
	* pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
	(tsubst_expr): Rewrite STMT_EXPR processing.  Handle STATEMENT_LIST.
	Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
	* semantics.c (do_poplevel, do_pushlevel): Use statement lists.
	(finish_cond): New, rewritten from FINISH_COND.
	(simplify_loop_decl_cond): New.
	(finish_expr_stmt): Avoid nested EXPR_STMTs.
	(begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
	begin_else_clause, finish_else_clause, finish_if_stmt,
	begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
	begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
	finish_for_cond, finish_for_stmt, begin_switch_stmt,
	finish_switch_cond, finish_switch_stmt, begin_try_block,
	finish_try_block, finish_cleanup_try_block, finish_function_try_block,
	finish_handler_sequence, finish_function_handler_sequence,
	begin_handler, finish_handler_parms, finish_handler,
	begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
	using statement lists.
	(begin_compound_stmt): Replace has_no_scope argument with flags.
	Update all callers.  Use statement lists.
	(finish_compound_stmt): Likewise.
	(finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
	(current_scope_stmt_stack): Remove.
	(simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
	* typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
	Rewrite with statement lists.

2004-06-15  Alexandre Oliva  <aoliva@redhat.com>

	* parser.c: Change all assignments of c_lex_string_translate
	to true and false to 1 and 0.
	(cp_lexer_read_token): Convert type of the translated string.
	(cp_parser_skip_to_closing_parentheses): Preserve original
	value of c_lex_string_translate, and set it to -1 while
	running.
	(cp_parser_cache_group): Likewise.
	(cp_parser_cache_group_1): Renamed.
	(cp_parser_asm_operand_list): Remove redundant setting of
	c_lex_string_translate.
	(cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
	Handle chained strings.

2004-06-12  Andrew Pinski  <apinski@apple.com>

	PR c++/14639
	Revert:
	2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>

		* cp-tree.h: Fix typo.

		* cp-tree.h: Include cgraph.h
		(DECL_NEEDED_P): Use cgraph_*node on the decl instead of
		TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.

2004-06-12  Jason Merrill  <jason@redhat.com>

	PR tree-optimization/14107
	* decl.c (finish_function): Warn about no return in all functions.

2004-06-15  Paolo Bonzini  <bonzini@gnu.org>

	* cp-tree.h (struct language_function): Remove cannot_inline.
	* decl.c (save_function_data): cannot_inline is no more.
	(cxx_push_function_context): Likewise.
	* decl2.c (start_objects, start_static_storage_duration_function):
	Reset DECL_INLINE, set DECL_UNINLINABLE.

2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/15967
	* search.c (lookup_field): Propagate the ambiguity list.
	(lookup_fnfields): Likewise.

2004-06-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/15947
	* parser.c (cp_parser_template_name): Ctors/dtors never need a
	template keyword to disambiguate.

2004-06-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15096
	* decl.c (grokdeclarator): Ignore pointer-to-members when
	computing template depth.

	PR c++/14930
	* name-lookup.c (pushtag): Do not try to put class declarations in
	explicit specialization scopes.

2004-06-11  Andrew Pinski  <pinskia@physics.uc.edu>

	* decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.

2004-06-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15862
	* name-lookup.c (unqualified_namespace_lookup): Do not ignore type
	bindings for undeclared built-ins.

2004-06-11  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
	appear at the correct location.

2004-06-10  Jason Merrill  <jason@redhat.com>

	PR c++/15875
	Revert:
	2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
	* init.c (build_offset_ref): Build SCOPE_REF with non-null
	TREE_TYPE for non-dependent names.
	* pt.c (type_dependent_expression_p): Handle SCOPE_REF with
	unknown_type_node as its TREE_TYPE.
	* cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
	* error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
	(dump_expr) <SCOPE_REF case>: Likewise.

2004-06-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15227
	* parser.c (cp_parser_direct_declarator): Robustify.

	PR c++/15877
	* pt.c (tsubst_copy): Use decl_constant_value on enumeration
	constants in non-dependent contexts.

	PR c++/14211
	PR c++/15076
	* typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
	necessary.

2004-06-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/14791
	* decl.c (duplicate_decls): Handle fileptr_type_node arguments
	specially.

2004-06-09  Mark Mitchell  <mark@codesourcery.com>

	Revert:
	PR c++/15815
	2004-06-07  Mark Mitchell  <mark@codesourcery.com>
	* lex.c (handle_pragma_interface): Deprecate.
	(handle_pragma_implementation): Likewise.

2004-06-09  Andrew Pinski  <pinskia@physics.uc.edu>

	* g++spec.c (lang_specific_driver): Remove check for -lm
	and -lmath when check it see if it was the math library.

2004-06-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/7841
	* parser.c (cp_parser_direct_declarator): Reject constructor named
	as qualified template-id.

2004-06-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15815
	* lex.c (handle_pragma_interface): Deprecate.
	(handle_pragma_implementation): Likewise.

2004-06-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15766
	* parser.c (cp_parser_iteration_statement): Fix typo in error
	message.

	PR c++/14777
	* pt.c (tsubst_default_argument): Do not defer access checks
	while substituting into the default argument.

	PR c++/15554
	* pt.c (tsubst_copy): Do not try to substitute for an enumeration
	constant in a non-dependent context.

	PR c++/15057
	* except.c (build_throw): Ensure that temp_expr has been
	initialized.

2004-06-06  Roger Sayle  <roger@eyesopen.com>

	* cp/cp-tree.h (lvalue_or_else): Add function prototype.

2004-06-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/15503
	* parser.c (cp_parser_mem_initializer_id): Gracefully reject
	'typename', and accept 'template'.

2004-06-03  Andrew Pinski  <pinskia@physics.uc.edu>
	    Jan Hubicka  <jh@suse.cz>

	PR c++/14639
	* method.c (use_think): Do not mark thunk as referenced.

2004-06-03  Matt Austern  <austern@apple.com>

	PR c++/15428
	* decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
	is nonzero, and if we see a noninline definition of a key method,
	make the vtables nonweak.

2004-06-02  Matt Austern  <austern@apple.com>

	* cp-tree.h (instantiate_decl): new boolean parameter,
	undefined_ok. Current behavior is equivalent to its being 0.
	* decl2.c (mark_used): Add new argument when calling instantiate_decl
	* pt.c (mark_decl_instantiated): Unconditionally make
	instantiations explicit unconditionally
	(do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
	since mark_decl_instantiated now does it.
	(instantiate_class_member): New.  Instantiate a member of an
	explicitly instantiated class template.
	(do_type_instantiation): Explicitly instantiate members of an
	explicitly instantiated class template.
	(instantiate_decl): if undefined_ok is nonzero, and if we're
	trying to explicitly instantiated a template with no definition,
	change it to an implicit instantiation.
	(instantiate_pending_templates): Add new argument to instantiate_decl.
	* tree.c (cp_cannot_inline_tree_fn): Likewise.

2004-06-02  Andrew Pinski  <pinskia@physics.uc.edu>

	* cp-tree.h: Fix typo.

	* cp-tree.h: Include cgraph.h
	(DECL_NEEDED_P): Use cgraph_*node on the decl instead of
	TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.

2004-06-01  Jason Merrill  <jason@redhat.com>

	PR c++/15142
	* call.c (call_builtin_trap): Remove type parm.
	(convert_arg_to_ellipsis): Change a non-POD argument to integer type.
	(build_x_va_arg): Dereference a null pointer for a non-POD argument.

2004-06-01  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13092
	* init.c (build_offset_ref): Build SCOPE_REF with non-null
	TREE_TYPE for non-dependent names.
	* pt.c (type_dependent_expression_p): Handle SCOPE_REF with
	unknown_type_node as its TREE_TYPE.
	* cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
	* error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
	(dump_expr) <SCOPE_REF case>: Likewise.

2004-06-01  Richard Henderson  <rth@redhat.com>
	    Andrew Pinski  <pinskia@physics.uc.edu>

	* lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
	* parser.c (struct cp_parser): Remove in_offsetof.
	(cp_parser_new): Don't set it.
	(cp_parser_unary_expression): Don't check it.
	(cp_parser_postfix_open_square_expression): Split out from ...
	(cp_parser_postfix_expression): ... here.
	(cp_parser_postfix_dot_deref_expression): Likewise.
	(cp_parser_builtin_offsetof): New.
	(cp_parser_primary_expression): Use it.

2004-06-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14932
	* parser.c (cp_parser_postfix_expression): Allow subscript
	operator in offsetof.

2004-05-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15701
	* friend.c (add_friend): Do not try to perform access checks for
	functions from dependent classes.

2004-05-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
	(pp_cxx_begin_template_argument_list): Turn into a function.
	(pp_cxx_end_template_argument_list): Likewise.
	(pp_cxx_separate_with): Define.
	(pp_cxx_unqualified_id): Tidy.
	(pp_cxx_primary_expression): Likewise.
	(pp_cxx_postfix_expression): Likewise.
	(pp_cxx_expression): Likewise.
	(pp_cxx_simple_type_specifier): Likewise.
	(pp_cxx_type_specifier_seq): Likewise.
	(pp_cxx_parameter_declaration_clause): Likewise.
	(pp_cxx_exception_specification): Likewise.
	(pp_cxx_direct_declarator): Likewise.
	(pp_cxx_type_id): Likewise.
	* cxx-pretty-print.h (pp_cxx_whitespace): Export from
	cxx-pretty-print.c.
	(pp_cxx_left_paren): Likewise.
	(pp_cxx_right_paren): Likewise.
	(pp_cxx_left_brace): Likewise.
	(pp_cxx_right_brace): Likewise.
	(pp_cxx_left_bracket): Likewise.
	(pp_cxx_right_bracket): Likewise.
	(pp_cxx_dot): Likewise.
	(pp_cxx_identifier): Likewise.
	(pp_cxx_tree_identifier): Likewise.
	(pp_cxx_ampersand): New macro.
	(pp_cxx_star): Likewise.
	(pp_cxx_arrow): Likewise.
	(pp_cxx_semicolon): Likewise.
	(pp_cxx_complement): Likewise.
	(pp_cxx_begin_template_argument_list): Declaree.
	(pp_cxx_end_template_argument_list): Likewise.
	(pp_cxx_colon_colon): likewise.

2004-05-31  Eric Botcazou  <ebotcazou@libertysurf.fr>

	* parser.c (cp_parser_simple_type_specifier): Explicitly test
	against NULL_TREE.

2004-05-31  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
	typeck.c: Fix comment formatting.

2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>

	* cp-lang.c (cp_expand_decl): Remove.
	(LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.

2004-05-30  Andreas Jaeger  <aj@suse.de>

	* lang-specs.h: Add missing initializers for .ii.

2004-05-28  Aldy Hernandez  <aldyh@redhat.com>

	* decl.c (cp_make_fname_decl): Free return value from
	fname_as_string.

2004-05-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15083
	* decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
	even in a templat.e
	* init.c (build_new): Likewise.

	PR c++/15640
	* name-lookup.c (arg_assoc): Robustify.

	PR c++/15471
	* typeck.c (unary_complex_lvalue): Use context_for_name_lookup
	when determining the scope to use for a pointer to member.
	(lookup_anon_field): Give it external linkage.
	* cp-tree.h (lookup_anon_field): Declare it.
	* expr.c (cplus_expand_constant): Use it.

2004-05-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14668
	* parser.c (cp_parser_simple_type_specifier): Call
	maybe_note_name_used_in_class.

2004-05-28  Tom Marshall  <tmarshall@real.com>

	PR c++/15214
	* class.c (finish_struct_1): Warn only if the dtor is non-private or
	the class has friends.

2004-05-27  Adam Nemet  <anemet@lnxw.com>

	PR c++/12883
	* decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
	TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.

2004-05-24  Geoffrey Keating  <geoffk@apple.com>

	* method.c (implicitly_declare_fn): Don't call defer_fn; abort
	if it might be needed.
	* pt.c (mark_decl_instantiated): Only call defer_fn if
	the function actually needs processing in finish_file.
	* decl2.c (finish_file): Add check that elements in
	deferred_fns_used are really needed there.  Remove unnecessary
	test of DECL_SAVED_TREE.

2004-05-23  Paolo Bonzini  <bonzini@gnu.org>

	* Make-lang.in: No need to specify $(LIBCPP).

2004-05-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15044
	* parser.c (cp_parser_class_head): Robustify.

	PR c++/15317
	* parser.c (cp_parser_decl_specifier_seq): Correct error in
	comment.
	(cp_parser_constructor_declarator_p): Treat attributes
	as decl-specifiers.

	PR c++/15329
	* typeck.c (build_unary_op): Do not attempt to resolve casts to
	base classes in templates.

2004-05-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15165
	* pt.c (instantiate_template): Robustify.

2004-05-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15025
	* decl.c (xref_tag): Issue errors about redeclaring template
	classes as non-template classes.

2004-05-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14821
	* name-lookup.c (supplement_binding): Allow redefinitions of
	namespace aliases.

	PR c++/14883
	* parser.c (cp_parser_template_argument): Robustify.

2004-05-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* class.c (alter_access): Use %E format specifier to print an
	identifier node.  Avoid looking at the IDENTIFIER_POINTER.
	(push_lang_context): Likewise.
	* decl.c (lookup_label): Likewise.
	(grokdeclarator): Likewise.
	* parser.c (cp_parser_check_for_invalid_template_id): Likewise.
	* pt.c (do_type_instantiation): Likewise.
	* tree.c (handle_java_interface_attribute): Likewise.
	(handle_com_interface_attribute): Likewise.
	(handle_init_priority_attribute): Likewise.

2004-05-22  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15285
	PR c++/15299
	* pt.c (build_non_dependent_expr): Expand the set of tree nodes
	recognized as overloaded functions.

2004-05-22  Mark Mitchell  <mark@codesourcery.com>

	PR c++/15507
	* class.c (layout_nonempty_base_or_field): Do not try to avoid
	layout conflicts for unions.

	PR c++/15542
	* typeck.c (build_x_unary_op): Instantiate template class
	specializations before looking for "operator &".

	PR c++/15427
	* typeck.c (complete_type): Layout non-dependent array types, even
	in templates.

	PR c++/15287
	* typeck.c (build_unary_op): Do not optimize "&x[y]" when in a
	template.

2004-05-22  Roger Sayle  <roger@eyesopen.com>

	* name-lookup.c (check_for_out_of_scope_variable): Avoid ICE by
	returning when TREE_TYPE is error_mark_node.
	* typeck.c (require_complete_type): Return error_mark_node if
	value's type is an error_mark_node.

2004-05-20  Andrew Pinski  <pinskia@physics.uc.edu>

	* optimize.c (calls_setjmp_r): Remove.
	(calls_setjmp_p): Remove.
	* cp-tree.c (calls_setjmp_p): Remove.
	* decl.c (finish_function): Do not call calls_setjmp_p.

2004-05-18  Zack Weinberg  <zack@codesourcery.com>

	* decl.c (cp_finish_decl): Use mark_decl_referenced.
	* decl2.c (maybe_make_one_only): Likewise.
	* method.c (use_thunk): Likewise.

2004-05-18  Jason Merrill  <jason@redhat.com>

	* class.c (build_base_path): Tidy a bit.

2004-05-14  Geoffrey Keating  <geoffk@apple.com>

	* name-lookup.c (struct scope_binding): New.
	(EMPTY_SCOPE_BINDING): New.
	(lookup_using_namespace): Take a scope_binding instead of a
	cxx_binding.
	(qualified_lookup_using_namespace): Likewise.
	(cxx_binding_clear): Delete.
	(do_nonmember_using_decl): Use a scope_binding instead of a
	cxx_binding.
	(lookup_tag): Don't call select_decl.
	(ambiguous_decl): Don't return anything (and change callers to match).
	Take a scope_binding as the second parameter.
	(lookup_namespace_name): Use a scope_binding instead of a
	cxx_binding.
	(unqualified_namespace_lookup): Likewise.
	(lookup_qualified_name): Likewise.
	(select_decl): Take a scope_binding instead of a cxx_binding.
	Use macros rather than hand-coding tests for type-ness.

2004-05-13  Diego Novillo  <dnovillo@redhat.com>

	* cp-gimplify.c: Rename from cp-simplify.c.
	* Make-lang.in, optimize.c: Update.

2004-05-13  Diego Novillo  <dnovillo@redhat.com>

	Merge from tree-ssa-20020619-branch.  See
	ChangeLog.tree-ssa for details.

	* Make-lang.in, call.c, class.c, cp-lang.c, cp-tree.def,
	cp-tree.h, cvt.c, decl.c, decl2.c, error.c, except.c,
	expr.c, init.c, name-lookup.h, optimize.c, parser.c,
	pt.c, rtti.c, semantics.c, tree.c, typeck.c, typeck2.c:
	Merged.
	* cp-mudflap.c: New file.
	* cp-simplify.c:: New file.

2004-05-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14389
	* decl2.c (check_classfn): For member templates, compare also the
	template parameters to match the declaration.
	* cp-tree.h: Adjust declaration of check_classfn.
	* decl.c (start_decl, grokfndecl): Adjust callers of check_classfn.
	* friend.c (do_friend): Likewise.
	* pt.c (tsubst_friend_function): Likewise.

2004-05-01  Zack Weinberg  <zack@codesourcery.com>

	* decl.c (reshape_init): Do not apply TYPE_DOMAIN to a VECTOR_TYPE.
	Instead, dig into the representation type to find the array bound.

2004-04-30  Jason Merrill  <jason@redhat.com>

	Refer to base members using COMPONENT_REFs where possible.
	* class.c (build_simple_base_path): New fn.
	(build_base_path): Use it for non-virtual base references.
	(layout_class_type): Change base fields to their real type
	after layout is done.
	* cp-tree.h (IS_FAKE_BASE_TYPE): New macro.
	* cp-lang.c (cxx_get_alias_set): Use it.

2004-04-30  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c, cp-tree.h, decl.c, decl2.c, pt.c, rtti.c: Fix
	comment typos.

2004-04-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/15064
	* parser.c (cp_parser_postfix_expression): typeid operator cannot be
	used in integral constant expressions.

2004-04-22  Mark Mitchell  <mark@codesourcery.com>

	* init.c (build_aggr_init): Fix accidental use of C99 construct in
	previous change.

	* class.c (initialize_array): Don't set TREE_HAS_CONSTRUCTOR on
	braced initializer.
	* cp-tree.h (BRACE_ENCLOSED_INITIALIZER_P): New macro.
	* decl.c (reshape_init): Use it.
	* init.c (perform_member_init): Remove redundant condition.
	(build_aggr_init): Adjust to handle brace-enclosed initializers
	correctly.
	(expand_default_init): Use BRACE_ENCLOSED_INITIALIZER_P.

	* parser.c (cp_parser_initializer_clause): Do not set
	TREE_HAS_CONSTRUCTOR on the initializer.
	* rtti.c (tinfo_base_init): Likewise.
	(generic_initializer): Likewise.
	(ptr_initializer): Likewise.
	(ptm_initializer): Likewise.
	(class_initializer): Likewise.
	(get_pseudo_ti_init): Likewise.
	* typeck2.c (digest_init): Use BRACE_ENCLOSED_INITIALIZER_P.

2004-04-22  Alan Modra  <amodra@bigpond.net.au>

	* name-lookup.c (anonymous_namespace_name): Make static.

2004-04-19  Roger Sayle  <roger@eyesopen.com>

	PR middle-end/14531
	* class.c (build_base_path): Call fold whilst building the NULL
	pointer check expression trees.

2004-04-15  Bryce McKinlay  <mckinlay@redhat.com>

	* init.c (build_new_1): Don't use type size argument for Java
	_Jv_AllocObject call.

2004-04-09  Danny Smith  <dannysmith@users.sourceforge.net>

	* method.c (make_alias_for_thunk): Remove preprocessor guard on
	declaration and definition.

2004-04-08  Danny Smith  <dannysmith@users.sourceforge.net>

	PR c++/14808
	* method.c (use_thunk): Test TARGET_USE_LOCAL_THUNK_ALIAS_P rather
	than ASM_OUTPUT_DEF.

2004-04-08  Jakub Jelinek  <jakub@redhat.com>

	* decl2.c (mark_used): Don't segfault if cfun != NULL but
	current_function_decl == NULL.

2004-04-05  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/3518
	* pt.c (check_cv_quals_for_unify): Ignore bogus CV quals at outer
	level.

2004-04-05  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* init.c (decl_constant_value): Don't look at DECL_INITIAL
	of PARM_DECL.
	* tree.c (bot_manip, build_min): Don't look at TREE_CONSTANT
	or TREE_SIDE_EFFECTS of a type.

2004-04-02  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/14007
	* pt.c (check_cv_quals_for_unify): Correct logic for disallowed
	cv-qualifier unification.
	* tree.c (cp_build_qualified_type_real): Renable DR295 logic.

2004-04-02  Jan Hubicka  <jh@suse.cz>

	* cp-lang. (LANG_HOOKS_UPDATE_DECL_AFTER_SAVING): Define.
	* cp-tree.h (cp_update_decl_after_saving): Declare.
	* tree.c (cp_update_decl_after_saving): Define.

2004-04-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14803
	* typeck.c (get_delta_difference): Call fold before returning the
	value.

2004-04-01  Richard Henderson  <rth@redhat.com>

	PR c++/14804
	* decl.c (cp_finish_decl): Preserve TREE_READONLY more often.
	* typeck2.c (split_nonconstant_init): Clear TREE_READONLY.

2004-04-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14810
	* name-lookup.c (maybe_push_cleanup_level): Robustify.

2004-04-01  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* class.c (VTT_TOP_LEVEL_P): Use unsigned_flag directly.

2004-03-31  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* call.c (joust): Use TYPE_UNSIGNED, not TREE_UNSIGNED.
	* class.c (check_bitfield_decl): Likewise.
	* cvt.c (type_promotes_to): Likewise.
	* decl.c (finish_enum): Likewise.
	* mangle.c (write_builtin_type): Likewise.
	* semantics.c (finish_switch_cond, finish_unary_op_expr): Likewise.
	* typeck.c (type_after_usual_arithmetic_conversions): Likewise.
	(build_binary_op): Likewise.

2004-03-31  Jan Hubicka  <jh@suse.cz>

	* tree.h (optimize_function): Kill prototype.
	* optimize.c (dump_function, optimize_function, dump_finction): Kill.
	* semantics.c (expand_body): Kill.

2004-03-30  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14724
	* decl.c (start_decl_1): Do not decide whether or not to create a
	new cleanup level until after the type has been completed.

	PR c++/14763
	* pt.c (tsubst_default_argument): Clear current_function_decl.

2004-03-30  Zack Weinberg  <zack@codesourcery.com>

	* name-lookup.c, parser.c: Use new shorter form of GTY markers.

2004-03-29  Zack Weinberg  <zack@codesourcery.com>

	* error.c (dump_function_name): If T's DECL_LANG_SPECIFIC
	is null, just print the literal name and return.

2004-03-25  Kazu Hirata  <kazu@cs.umass.edu>

	* cxx-pretty-print.c: Fix comment typos.

2004-03-24  Kazu Hirata  <kazu@cs.umass.edu>

	* cxx-pretty-print.c, cxx-pretty-print.h, decl.h, friend.c:
	Update copyright.

2004-03-23  Ziemowit Laski  <zlaski@apple.com>

	* Make-lang.in (cp/mangle.o): Depend on $(TARGET_H).
	* mangle.c (write_type): Add call to 'mangle_fundamental_type'
	target hook.

2004-03-23  Zack Weinberg  <zack@codesourcery.com>

	PR 12267, 12391, 12560, 13129, 14114, 14133
	* cp-lang.c (c_reset_state): Delete.
	(push_file_scope, pop_file_scope): New stubs.
	* parser.c (c_parse_file): Call sorry() here if called more than once.

2004-03-23  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* typeck.c (build_c_cast): Only look at TREE_CONSTANT_OVERFLOW
	for INTEGER_CST.

2004-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cxx-pretty-print.c (pp_cxx_parameter_declaration_clause): Declare.

2004-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* error.c (enum pad): Remove.
	(dump_qualifiers): Likewise.
	(dump_type): Replace dump_qualifiers with pp_cxx_cv_qualifier_seq.
	(dump_aggr_type): Likewise.
	(dump_type_suffix): Likewise.
	(dump_simple_decl): Likewise.
	(dump_function_decl): Likewise.
	(cv_to_string): Likewise.
	(dump_type_prefix): Likewise.  Adjust return void.
	* cxx-pretty-print.c (pp_cxx_cv_qualifier_seq): Move to
	cxx_pretty_print.h.
	(pp_cxx_template_keyword_if_needed): Document.
	(pp_cxx_qualified_id): Document case FUNCTION_DECL.  Tidy.
	(pp_cxx_expression): Handle NON_DEPENDENT_EXPR and
	MUST_NOT_THROW_EXPR.

2004-03-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14616
	* decl.c (cp_finish_decl): Compute the size of arrays declared in
	templates, if their type is non-dependent.

2004-03-19  Mark Mitchell  <mark@codesourcery.com>

	* call.c (build_op_delete_call): Do not forget the placement
	arguments when iterating through mutiple delete operators.

	* cp-tree.h (svaed_scope): Remove last_parms.
	(NEW_DELETE_OPNAME_P): New macro.
	(last_function_parms): Remove.
	(do_friend): Adjust prototype.
	* decl.c (grokparms): Return the PARM_DECLs directly, rather than
	using last_function_parms.
	(grokfndecl): Take the PARM_DECLs as an argument, rather than
	using last_function_parms.
	(grokdeclarator): Adjust accordingly.  Do not form METHOD_TYPEs
	for class-specific operator new and operator delete.
	(grok_op_properties): Do not look for allocation functions with
	METHOD_TYPEs.
	(start_function): Use DECL_ARGUMENTS instead of
	last_function_parms.
	* decl.h (last_function_parms): Do not declare.
	* decl2.c (grokclassfn): Do not use last_function_parms.
	* friend.c (do_friend): Remove parmdecls parameter.
	* name-lookup.c (push_to_top_level): Do not save last_function_parms.
	(pop_from_top_level): Do not restore it.
	* pt.c (check_explicit_specialization): Do not adjust
	last_function_parms.

	* name-lookup.c (do_local_using_decl): Create a local binding for
	types brought in via using declarations.

	* name-lookup.c (lookup_arg_dependent): Handle block-scope
	function declarations correctly.

	* semantics.c (finish_id_expression): Correct handling of
	conversion operators to dependent types.

	* typeck.c (lookup_destructor): Allow the use of destructors from
	base classes.

2004-03-19  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cxx-pretty-print.c (pp_cxx_unqualified_id): Use
	TEMPLATE_TYPE_PARM_INDEX instead of TYPE_FIELDS.
	* search.c (dfs_unuse_fields): Add two more TREE_CODES that mean
	the field is named TEMPLATE_TYPE_PARM_INDEX.

2004-03-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14545
	* parser.c (cp_parser_functional_cast): A cast to anything
	but integral or enumaration type is not an integral constant
	expression.
	* pt.c (value_dependent_expression_p): Handle cast expressions
	without operands (such as "int()").

2004-03-18  Mark Mitchell  <mark@codesourcery.com>

	* semantics.c (finish_pseudo_destructor_expr): Allow differing
	cv-qualification between the type named by the
	pseudo-destructor-name and the object-type.

	* search.c (accessible_base_p): Handle non-proper bases.

	* name-lookup.c (do_nonmember_using_decl): If a using declaration
	refers to a single overloaded function, set the type of the
	function.
	* tree.c (lvalue_type): Simplify.
	* typeck.c (type_unknown_p): Do not assume all OVERLOADs have an
	unknown type.
	(build_unary_op): Handle OVERLOADs with known types.

	* decl.c (duplicate_decls): Do not destroy DECL_ARGUMENTS for
	function templates.

	* parser.c (cp_parser_postfix_expression): Handle the use of
	"typename" in non-dependent contexts.  Convert appropriately when
	when using a qualified name after "->" or ".".

	* call.c (conditional_conversion): Honor the requirement that some
	conversions refer to the original object.

2004-03-18  Mark Mitchell  <mark@codesourcery.com>

	* call.c (build_conditional_expr): Do not call force_rvalue for
	operands of void_type when the conditional expression itself has
	void type.
	* name-lookup.c (pushdecl): Don't consider a declaration of a
	function named "main" to be an overload of a type named "main".
	* parser.c (cp_parser_template_name): Perform name lookup when the
	template name is proceeded by "template" if the qualifying scope
	is non-dependent.
	* typeck.c (composite_pointer_type_r): Correctly handle
	pointer-to-member types.
	(build_const_cast): Likewise.

2004-03-18  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cp-tree.def (TEMPLATE_TYPE_PARM, TYPEOF_TYPE): Update comments.
	* cp-tree.h (NEW_EXPR_USE_GLOBAL, DELETE_EXPR_USE_GLOBAL): Add check.
	(DELETE_EXPR_USE_VEC, COMPOUND_EXPR_OVERLOADED): Likewise.
	(KOENIG_LOOKUP_P, PTRMEM_OK_P, TEMPLATE_TYPE_PARM_INDEX): Likewise.
	(TYPENAME_TYPE_FULLNAME): Add check and use type.values.
	(TYPEOF_TYPE_EXPR): New macro.
	* class.c (finish_struct_bits): Use TYPE_VFIELD and TYPE_METHODS.
	* error.c (dump_type): Use TYPEOF_TYPE_EXPR.
	* pt.c (tsubst): Likewise.
	* semantics.c (finish_typeof): Likewise.
	* search.c (dfs_unuse_fields): Handle TYPENAME_TYPE, TYPEOF_TYPE,
	and TEMPLATE_TYPE_PARM.
	* typeck.c (comptypes): Use TYPE_ORIG_SIZE_TYPE, not TYPE_DOMAIN.
	(build_array_ref): Use TYPE_DOMAIN, not TYPE_VALUES.

2004-03-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14586
	* cp-tree.h (build_new_op): Change prototype.
	(build_x_binary_op): Likewise.
	* call.c (build_new_op): Add overloaded_p parameter.
	* decl2.c (grok_array_decl): Adjust call to build_new_op.
	* parser.c (cp_parser_binary_expression): Note that uses of
	overloaded operators prevents an expression from being considered
	an integral constant.
	* pt.c (tsubst_copy_and_build): Adjust calls to build_new_op and/or
	build_x_binary_op.
	* semantics.c (finish_call_expr): Likewise.
	* typeck.c (rationalize_conditional_expr): Likewise.
	(build_x_indirect_ref): Likewise.
	(build_x_binary_op): Likewise.
	(build_x_unary_op): Likewise.
	(build_x_compound_expr): Likewise.
	(build_modify_expr): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

2004-03-15  Kazu Hirata  <kazu@cs.umass.edu>

	* cp-lang.c, ptree.c: Update copyright.

2004-03-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14550
	* parser.c (cp_parser_non_integral_constant_expression): Encode
	more of the idiom that surrounded calls to this function within
	the function itself
	(cp_parser_primary_expression): Adjust accordingly.
	(cp_parser_postfix_expression): Likewise.
	(cp_parser_unary_expression): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_assignment_expression): Likewise.
	(cp_parser_expression): Likewise.
	(cp_parser_new_expression): Note that new-expressions are not
	allowed in integral constant expressions.
	(cp_parser_delete_expression): Likewise.

2004-03-12  Matt Austern  <austern@apple.com>

	* decl2.c (maybe_make_one_only): Look at
	TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
	to make an explicit instantiation weak.
	* method.c (use_thunk): Make sure we call comdat_linkage
	when appropriate.
	* pt.c (do_type_instantiation): On systems where weak symbols
	don't go in a static archive's TOC, explicit instantiation of a
	class must imply *explicit* instantiation of its memeber.

2004-03-11  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c, cp-tree.h, pt.c: Fix comment typos.

2004-03-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14510
	* decl.c (xref_tag): Disregard non-type declarations when
	looking up a tagged type.

2004-03-09  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/14397
	* call.c (convert_like_real): Build a const qualified temporary,
	when testing ctor access.

2004-03-09  Mark Mitchell  <mark@codesourcery.com>

	* call.c (initialize_reference): Fix typo.

2004-03-09  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14409
	* pt.c (determine_specialization): For member templates, match also
	constness.

	PR c++/14448
	* parser.c (cp_parser_initializer_clause): Fold initializer if it is
	non-dependent.
	* pt.c (tsubst_copy_and_build): Handle NOP_EXPRs.

2004-03-09  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14230
	* call.c (initialize_reference): Handle initializers that are
	class-member access expressions applies to rvalues.

2004-03-09  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14432
	* name-lookup.c (supplement_binding): Ignore functions that are
	marked DECL_ANTICIPATED.

2004-03-08  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14401
	* class.c (check_field_decls): Complain about non-static data
	members of reference type in unions.  Propagate
	CLASSTYPE_REF_FIELDS_NEED_INIT and
	CLASSTYPE_READONLY_FIELDS_NEED_INIT from the types of non-static
	data members.
	* init.c (perform_member_init): Complain about mbmers with const
	type that are not explicitly initialized.

2004-03-08  Mark Mitchell  <mark@codesourcery.com>

	* class.c (check_methods): Don't use IDENTIFIER_ERROR_LOCUS.
	* cp-tree.h (DECL_INVALID_OVERRIDER_P): New macro.
	(lang_identifier): Remove implicit_decl and error_locus.
	(IDENTIFIER_IMPLICIT_DECL): Remove.
	(SET_IDENTIFIER_IMPLICTI_DECL): Likewise.
	(IDENTIFIER_ERROR_LOCUS): Likewise.
	(SET_IDENTIFIER_ERROR_LOCUS): Likewise.
	(TYPE_ASSEMBLER_NAME_STRING): Likewise.
	(TYPE_ASSEMBLER_NAME_LENGTH): Likewise.
	(implicitly_declare): Remove.
	* decl.c (warn_extern_redeclared_static): Remove check of
	IDENTIFIER_IMPLICIT_DECL.
	(duplicate_decls): Don't check IDENTIFIER_ERROR_LOCUS.
	(implicitly_declare): Remove.
	(grok_ctor_properties): Don't set IDENTIFIER_ERROR_LOCUS.
	(start_function): Don't check IDENTIFIER_IMPLICIT_DECL.
	(start_method): Don't check IDENTIFIER_ERROR_LOCUS.
	* lex.c (unqualified_name_lookup_error): Create a dummy VAR_DECL
	in the innermost scope, rather than at namespace scope.
	* name-lookup.c (push_local_binding): Give it external linkage.
	(pushdecl): Remove dead code.
	* name-lookup.h (push_local_binding): Declare it.
	* ptree.c (cxx_print_identifier): Don't print
	IDENTIFIER_IMPLICIT_DECL or IDENTIFIER_ERROR_LOCUS.
	* search.c (check_final_overrider): Use DECL_INVALID_OVERRIDER_P,
	not IDENTIFIER_ERROR_LOCUS.
	* typeck.c (build_function_call): Remove dead code.

2004-03-08  Jason Merrill  <jason@redhat.com>

	PR c++/13170
	* decl.c (xref_tag): Remove attribute handling.
	* cp-tree.h: Adjust prototype.
	* decl.c, parser.c, rtti.c: Adjust callers.
	* parser.c (cp_parser_class_head): Pass back attributes in the
	class head.
	(cp_parser_class_specifier): Adjust.

2004-03-08  Matt Austern  <austern@apple.com>

	PR debug/14079
	* name-lookup.c (add_decl_to_level): Add extern variables, as well
	as static, to static_decls array.

2004-03-05  Jason Merrill  <jason@redhat.com>

	* tree.c (list_hash_pieces): s/TYPE_HASH/TREE_HASH/.

2004-03-04  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (grokfndecl): Update old incorrect comment.
	(grokvardecl): Diagnose C++ variables of type with no linkage.

2004-03-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14369
	* pt.c (build_non_dependent_expr): Do not create a
	NON_DEPENDENT_EXPR for a THROW_EXPR.

2004-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/14369
	* error.c (dump_expr): Handle THROW_EXPR.

2004-03-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14360
	* parser.c (cp_parser_postfix_expression): Do not perform Koenig
	lookup if ordinary name-lookup finds a non-function.
	* pt.c (tsubst_copy_and_build): Likewise.

	PR c++/14361
	* parser.c (cp_parser_late_parsing_default_args): Check that there
	are no extra tokens after the end of the default-argument
	expression.

2004-03-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14324
	* lex.c (retrofit_lang_decl): Treat entities with no linkage as
	having C++ linkage for name-mangling purposes.

	PR c++/14260
	* parser.c (cp_parser_direct_declarator): Recognize constructor
	declarators that use a template-id to name the class being
	constructed.

	PR c++/14337
	* pt.c (tsubst_qualified_id): Handle dependent qualifying scopes.
	(tsubst_expr): Do not call tsubst_copy, even when
	processing_template_decl.

2004-03-01  Jeff Law  <law@redhat.com>

	* init.c (build_vec_delete_1): Convert 2nd argument to NE_EXPR to
	the proper type.

2004-02-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14138
	* name-lookup.h (push_scope): Change prototype.
	* name-lookup.c (push_scope): Do not reenter the current class
	scope.
	* decl.c (grokfndecl): Check return code from push_scope before
	calling pop_scope.
	* decl2.c (check_classfn): Likewise.
	* parser.c (cp_parser_conversion_function_id): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_class_specifier): Likewise.
	(cp_parser_class_head): Likewise.
	(cp_parser_lookup_name): Likewise.
	(cp_parser_constructor_declarator_p): Likewise.
	* pt.c (instantiate_class_template): Likewise.
	(resolve_typename_type): Likewise.

2004-02-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14267
	* typeck.c (build_modify_expr): Remove more of the cast-as-lvalue
	extension.

	PR debug/12103
	* class.c (update_vtable_entry_for_fn): Do not go through
	covariance machinery if the type returned by an overrider is the
	same as the original.

2004-02-29  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c: Fix a comment typo.

2004-02-27  Ziemowit Laski  <zlaski@apple.com>

	* tree.c (pod_type_p): Treat VECTOR_TYPEs as PODs.

2004-02-26  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14278
	* parser.c (cp_parser_parameter_declaration_list): Commit
	to fewer tentative parses.

2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14284
	* pt.c (dependent_type_p_r): A template template parameter is a
	dependent type.

2004-02-26  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14246
	* mangle.c (write_template_arg_literal): Don't rely on identity for
	boolean constants.

2004-02-24  Jason Merrill  <jason@redhat.com>

	* tree.c (build_exception_variant): Use check_qualified_type.

2004-02-23  Zack Weinberg  <zack@codesourcery.com>
	    Kazu Hirata  <kazu@cs.umass.edu>

	* decl.c (cxx_init_decl_processing): Don't check
	flag_writable_strings.

2004-02-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/14156
	* typeck.c (maybe_warn_about_returning_address_of_location):
	Change check for VAR_DECL to use DECL_P instead.

2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14250
	* cvt.c (build_expr_type_conversion): Type must be complete before
	looking up for conversions.

2004-02-23  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14143
	* name-lookup.c	(arg_assoc_class): Don't look into template
	arguments if it is not a primary template.

2004-02-20  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	PR c++/12007
	* method.c (use_thunk): Always clone function argument tree.

2004-02-20  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14199
	* pt.c (tsubst_copy): Call mark_used for a PARM_DECL.

	PR c++/14173
	* semantics.c (begin_class_definition): Set TYPE_PACKED correctly
	for all type variants.

2004-02-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13927
	* decl.c (duplicate_decls): Return error_mark_node for invalid
	redeclarations.
	* name-lookup.c (push_namespace): Ignore the return value from
	pushdecl.
	* pt.c (push_template_decl_real): Robustify.

	PR c++/14186
	* name-lookup.c (push_class_level_binding): Do not complain about
	adding a binding for a member whose name is the same as the
	enclosing class if the member is located in a base class of the
	current class.

2004-02-19  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14181
	* parser.c (cp_parser_new_expression): Parse an ill-formed
	direct-new-declarator after a parenthesized type-id to emit good
	diagnostic.

2004-02-18  Kazu Hirata  <kazu@cs.umass.edu>

	* cp-tree.def, cvt.c: Update copyright.

2004-02-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/11326
	* cp-tree.h (abi_version_at_least): Remove.
	* mangle.c: Include flags.h.

2004-02-15  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13971
	* call.c (build_conditional_expr): Handle conversions between
	class types which result in differently cv-qualified type
	variants.

	PR c++/14086
	* class.c (delete_duplicate_fields_1): Remove.
	(delete_duplicate_fields): Likewise.
	(finish_struct_anon): Remove check for members with the same name
	as their enclosing class.
	(check_field_decls): Do not call duplicate_fields.
	* decl.c (grokdeclarator): Remove check for static data members
	with the same name as their enclosing class.
	* name-lookup.c (push_class_level_binding): Check for members with
	the same name as their enclosing class.

2004-02-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/14085
	* error.c (dump_decl): Handle TEMPLATE_TYPE_PARM.

2004-02-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13635
	* pt.c (push_template_decl_real): Make sure DECL_TI_ARGS of DECL
	has full set of arguments.

2004-02-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13927
	* error.c (dump_decl) <ALIAS_DECL>: Dump as simple declarations.

2004-02-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/14122
	* cp-tree.h (delete_sanity): Change prototype.
	* decl2.c (delete_sanity): Make doing_vec a bool, not an int.
	Remove dead code.  Adjust code to warn about deleting an array.
	* typekc.c (decay_conversion): Use build_address and build_nop.

	PR c++/14108
	* search.c (accessible_p): Do not check access in thunks.

	PR c++/14083
	* call.c (build_conditional_expr): Call force_rvalue on the
	non-void operand in the case that one result is a throw-expression
	and the other is not.

2004-02-13  Ian Lance Taylor  <ian@wasabisystems.com>

	PR c++/9851
	* parser.c (cp_parser_pseudo_destructor_name): Check for errors on
	the type name and look ahead for ::~, and bail out early with a
	better error message if the parse is going to fail.

2004-02-12  Mark Mitchell  <mark@codesourcery.com>

	* call.c (conversion_kind): New type.
	(conversion_rank): Likewise.
	(conversion): Likewise.
	(CONVERSION_RANK): New macro.
	(conversion_obstack): New variable.
	(obstack_initialized): Likewise.
	(z_candidate): Change type of convs and second_conv.
	(candidate_warning): New type.
	(IDENTITY_RANK): Remove.
	(EXACT_RANK): Likewise.
	(PROMO_RANK): Likewise.
	(STD_RANK): Likewise.
	(PBOOL_RANK): Likewise.
	(USER_RANK): Likewise.
	(ELLIPSIS_RANK): Likewise.
	(BAD_RANK): Likewise.
	(ICS_RANK): Likewise.
	(ICS_STD_RANK): Likewise.
	(ICS_USER_FLAG): Likewise.
	(ICS_ELLIPSIS_FLAG): Likewise.
	(ICS_THIS_FLAG): Likewise.
	(ICS_BAD_FLAG): Likewise.
	(NEED_TEMPORARY_P): Likewise.
	(CHECK_COPY_CONSTRUCTOR_P): Likewise.
	(USER_CONV_CAND): Likewise.
	(USER_CONV_FN): Likewise.
	(conversion_obstack_alloc): New function.
	(alloc_conversion): Likewise.
	(validate_conversion_obstack): Likewise.
	(alloc_conversions): Likewise.
	(build_conv): Adjust to deal with new conversion data structures.
	(build_identity_conv): New function.
	(build_ambiguous_conv): Likewise.
	(standard_conversion): Adjust to deal with new conversion data
	structures.
	(convert_class_to_reference): Likewise.
	(direct_reference_binding): Likewise.
	(reference_binding): Likewise.
	(implicit_conversion): Likewise.
	(add_candidate): Likewise.
	(add_function_candidate): Likewise.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.
	(print_z_candidate): Likewise.
	(merge_conversion_sequences): Likewise.
	(build_user_type_conversion_1): Likewise.
	(build_user_type_conversion): Likewise.
	(build_new_function_call): Likewise.
	(build_object_call): Likewise.
	(conditional_conversion): Likewise.
	(build_conditional_expr): Likewise.
	(build_new_op): Likewise.
	(build_op_delete_call): Likewise.
	(convert_like_real): Likewise.
	(build_over_call): Likewise.
	(build_new_method_call): Likewise.
	(is_subseq): Likewise.
	(maybe_handle_implicit_object): Likewise.
	(maybe_handle_ref_bind): Likewise.
	(compare_ics): Likewise.
	(source_type): Likewise.
	(add_warning): Likewise.
	(joust): Likewise.
	(can_convert_arg): Likewise.
	(can_convert_arg_bad): Likewise.
	(perform_implicit_conversion): Likewise.
	(perform_direct_initialization_if_possible): Likewise.
	(initialize_reference): Likewise.
	* cp-lang.c (cp_tree_size): Do not handle WRAPPER.
	* cp-tree.def (WRAPPER): Likewise.
	(IDENTITY_CONV): Remove.
	(LVALUE_CONV): Likewise.
	(QUAL_CONV): Likewise.
	(STD_CONV): Likewise.
	(PTR_CONV): Likewise.
	(PMEM_CONV): Likewise.
	(BASE_CONV): Likewise.
	(REF_BIND): Likewise.
	(USER_CONV): Likewise.
	(AMBIG_CONV): Likewise.
	(RVALUE_CONV): Likewise.
	* cp-tree.h (tree_wrapper): Remove.
	(WRAPPER_ZC): Remove.
	(lang_tree_node): Remove wrapper.
	(LOOKUP_SPECULATIVELY): Remove.
	(build_op_delete_call): Adjust prototype.
	(validate_conversion_obstack): Declare.
	(build_zc_wrapper): Remove.
	* cvt.c (convert_to_reference): Remove dead code.
	(ocp_convert): Likewise.
	* decl.c (redeclaration_error_message): Correct handling of
	templates.
	(finish_destructor_body): Do not use LOOKUP_SPECULATIVELY.
	(cp_tree_node_structure): Remove WRAPPER case.
	* decl2.c (finish_file): Call validate_conversion_obstack.
	* init.c (build_new_1): Remove use of LOOKUP_SPECULATIVELY.
	(build_op_delete_call): Likewise.
	(build_x_delete): Likewise.
	(build_delete): Adjust call to build_op_delete_call.
	* pt.c (tsubst_friend_declaration): Adjust code to determine
	whether or not a friend template is a definition.
	(tsubst_decl): Clear DECL_INITIAL for new FUNCTION_DECLs.
	* tree.c (build_zc_wrapper): Remove.

2004-02-12  Zack Weinberg  <zack@codesourcery.com>

	* cp-lang.c: Don't define LANG_HOOKS_BUILTIN_TYPE_DECLS.
	* cp-tree.h: Don't declare cxx_builtin_type_decls.
	* decl.c (builtin_type_decls, cxx_builtin_type_decls): Delete.
	(record_builtin_type): Call debug_hooks->type_decl on the TYPE_DECL.

2004-02-10  Mark Mitchell  <mark@codesourcery.com>

	* typeck.c (lookup_destructor): Fix typo in error message.

2004-02-09  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c, parser.c, tree.c: Fix comment typos.

2004-02-07  Zack Weinberg  <zack@codesourcery.com>

	Bug 13856
	* optimize.c (maybe_clone_body): Don't update DECL_ESTIMATED_INSNS.
	* decl.c (duplicate_decls, start_function): Likewise.

2004-02-07  Zack Weinberg  <zack@codesourcery.com>

	* name-lookup.c (pushdecl): Issue shadow warnings directly.
	* parser.c (free_parser_stacks): Delete.

2004-02-07  Kazu Hirata  <kazu@cs.umass.edu>

	* rtti.c: Update copyright.

2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14033
	* decl.c (require_complete_types_for_parms): Do not insert
	error_mark_node in the parameter list.

2004-02-06  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14028
	* parser.c (cp_parser_enclosed_template_argument_list): Emit straight
	error when terminator can not be found.

2004-02-05  Kelley Cook  <kcook@gcc.gnu.org>

	Make-lang.in (po-generated):  Delete.

2004-02-05  Kazu Hirata  <kazu@cs.umass.edu>

	* call.c (type_passed_as): Replace PROMOTE_PROTOTYPES with
	targetm.calls.promote_prototypes.

2004-02-05  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	PR middle-end/13750
	Revert:
	2004-01-15  Geoffrey Keating  <geoffk@apple.com>
	PR pch/13361
	* cp/lex.c (handle_pragma_interface): Duplicate string from tree.
	(handle_pragma_implementation): Likewise.

2004-02-05  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13714
	* typeck.c (lookup_destructor): Tweak error message.

2004-02-05  Jan Hubicka  <jh@suse.cz>

	* tree.c (cp_cannot_inline_tree_fn):  Allow inlining of comdat
	functions.

2004-02-05  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/14008
	* parser.c (cp_parser_diagnose_invalid_typename): Removed parsing
	code, only emits the diagnostic now. Added lookup of the identifier
	and support for qualified ids.
	(cp_parser_parse_and_diagnose_invalid_type_name): New function.
	Parse an (invalid) type name as id-expression within a declarator.
	(cp_parser_simple_declaration): Use it.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_make_typename_type): New function. Handle errors through
	cp_parser_diagnose_invalid_typename.
	(cp_parser_elaborated_type_specifier): Use it.

2004-02-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13932
	* call.c (convert_like_real): Use "converting" rather than
	"argument" as the descriptive keyword to
	dubious_conversion_warnings.
	* typeck.c (convert_for_assignment): Do not call
	dubious_conversion_warnings.

2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13086
	* init.c (build_delete): Emit a more informative error message in
	case of an incomplete type, and on the correct source line.

2004-02-04  Kazu Hirata  <kazu@cs.umass.edu>

	* error.c, search.c: Update copyright.

2004-02-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/9941
	* rtti.c (tinfo_base_init): Use import_export_tinfo to decide the
	linkage for the typeinfo name string.

2004-02-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13969
	* cp-tree.h (fold_non_dependent_expr): New function.
	* parser.c (cp_parser_fold_non_dependent_expr): Remove.
	(cp_parser_template_argument): Use fold_non_dependent_expr.
	(cp_parser_direct_declarator): Likewise.
	* pt.c (fold_non_dependent_expr): New function.
	(convert_nontype_argument): Use it.
	(tsubst_qualified_id): Simplify.
	(tsubst_copy_and_build): Likewise.

2004-02-04  Mark Mitchell  <mark@codesourcery.com>

	* decl.c (cxx_push_function_context): Do not set
	current_function_is_thunk.
	* method.c (use_thunk): Set CALL_FROM_THUNK on the call to the
	actual function.

2004-02-04  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13997
	* pt.c (more_specialized_class): Increase processing_template_decl
	while partial ordering.

2004-02-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13925
	* decl.c (start_function): Do not call pushdecl for any
	instantiation or specialization of a primary template.

2004-02-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13950
	* parser.c (cp_parser_class_name): Robustify.

	PR c++/13970
	* parser.c (cp_parser_cache_group): Do not consume the EOF token.

	PR c++/14002
	* semantics.c (finish_id_expression): Do not return an
	IDENTIFIER_NODE when lookup finds a PARM_DECL.

2004-02-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13978
	* pt.c (build_non_dependent_expr): Do not build
	NON_DEPENDENT_EXPRs for FUNCTION_DECLs or TEMPLATE_DECLs.

	PR c++/13968
	* semantics.c (finish_id_expression): Do not return an
	IDENTIFIER_NODE when lookup finds a VAR_DECL.

	PR c++/13975
	* parser.c (cp_parser_simple_declaration): When skipping to the
	end of the statement swallow the terminating semicolon.

2004-02-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13113
	* init.c (build_offset_ref): Improve error recovery for invalid
	uses of non-static member functions.

	PR c++/13854
	* cp-tree.h (cp_build_type_attribute_variant): New function.
	* class.c (build_clone): Use cp_build_type_attribute_variant.
	* decl.c (duplicate_decls): Likewise.
	* pt.c (copy_default_args_to_explicit_spec): Likewise.
	(tsubst_function_type): Likewise.
	* tree.c (build_exception_variant): Check attributes before
	concluding that two types are the same.
	(cp_build_type-attribute_variant): New method.
	* typeck.c (merge_types): Use cp_build_type_attribute_variant.

	PR c++/13907
	* call.c (convert_class_to_reference): Keep better track of
	pedantically invalid user-defined conversions.

2004-02-01  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13957
	* pt.c (tsubst_qualified_id): Improved error message when a type
	is expected but	not found.

2004-01-31  Kazu Hirata  <kazu@cs.umass.edu>

	* class.c: Fix comment typos.
	* decl.c: Likewise.
	* error.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* search.c: Likewise.
	* typeck.c: Likewise.

2004-01-30  Richard Henderson  <rth@redhat.com>

	PR c++/13693
	* method.c (use_thunk): Don't force_target_expr for void thunks.
	* tree.c (build_target_expr_with_type): Assert non-void type.
	(force_target_expr): Likewise.

2004-01-30  Michael Matz  <matz@suse.de>

	* parser.c (cp_parser_labeled_statement): Accept case ranges.

2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	DR206
	PR c++/13813
	* decl.c (grokdeclarator): Check immediatly type completeness for
	non-dependent types.

2004-01-30  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13683
	* call.c (convert_arg_to_ellipsis): Don't emit a warning if within
	a sizeof expression.block

2004-01-29  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13883
	* mangle.c (write_encoding): Correct encoding of member template
	constructors.

2004-01-28  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	* parser.c (cp_parser_template_id): Parse tentatively `[:' after a
	template name as it was `<::' (digraph typo).
	(cp_parser_nth_token_starts_template_argument_list_p): New function.
	(cp_parser_id_expression): Use it.
	(cp_parser_nested_name_specifier_opt): Likewise.
	(cp_parser_template_name): Likewise.
	(cp_parser_class_name): Likewise.
	(cp_lexer_get_preprocessor_token): Use c_lex_with_flags.

2004-01-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13791
	* typeck.c (merge_types): Do not merge attributes into
	TYPENAME_TYPEs.

	PR c++/13736
	* parser.c (cp_parser_direct_declarator): Do not prevent
	backtracking inside a parenthesized declarator.
	(cp_parser_parameter_declaration): Fix typo in comment.

2004-01-28  Jan Hubicka  <jh@suse.cz>

	* semantics.c (expand_body)  Do emit_associated_thunks before
	expansion.

2004-01-27  Devang Patel  <dpatel@apple.com>

	* name-lookup.c: Include "debug.h"
	(do_namespace_alias): Invoke debug_hooks to emit debug info
	for namespace alias.
	(do_local_using_decl): Invoke debug_hooks to emit debug info
	for using decl.
	(do_class_using_decl): Same.
	(do_toplevel_using_decl): Same.
	(do_using_directive): Same.
	(cp_emit_debug_info_for_using): New function.
	* Make-lang.in (cp/parser.o): Depend on debug.h
	(cp/name-lookup.o): Same.

2004-01-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-tree.h (language_function, lang_type_header): Use
	BOOL_BITFIELD.
	* name-lookup.h (cp_binding_level): Likewise.

2004-01-26  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13663
	* semantics.c (finish_for_expr): Check for unresolved overloaded
	functions.

	* class.c (add_method): Just check processing_template_decl to
	determine whether or not we are within a template.
	* decl2.c (maybe_retrofit_in_chrg): Likewise.
	* init.c (decl_constant_value): Check the type of the declaration,
	not TREE_READONLY.
	* name-lookup.c (maybe_push_to_top_level): Rename to ...
	(push_to_top_level): ... this.
	* name-lookup.h (maybe_push_to_top_level): Do not declare it.
	* pt.c (push_template_decl_real): Reorder condition for speed.
	(convert_template_argument): Use dependency-checking functions in
	place of uses_template_parms.
	(lookup_template_class): Avoid calling uses_template_parms more
	than once.
	(uses_template_parms): Reimplement, using dependency-checking
	functions.
	(instantiate_class_template): Use push_to_top_level, not
	maybe_push_to_top_level.
	(type_unification_real): Simplify.
	(type_dependent_expression_p): Handle OFFSET_REFs and
	TEMPLATE_DECLs.
	(any_dependent_template_arguments_p): Handle multiple levels of
	template argument.
	* semantics.c (expand_or_defer_fn): Do not check
	uses_template_parms for template instantiations.
	* typeck.c (comptypes): Avoid calling cp_type_quals.

2004-01-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13833
	* call.c (build_over_call): Do not convert arguments when
	processing a template.
	* pt.c (build_non_dependent_expr): Do not build a
	NON_DEPENDENT_EXPR for arithmetic constants.

2004-01-25  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13810
	* parser.c (cp_parser_type_parameter): When cp_parser_id_expression
	returns a TYPE_DECL. no further lookup is required.
	* semantics.c (check_template_template_default_arg): A TYPE_DECL
	is invalid. Rework to give better diagnostics.

2004-01-25  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13797
	* pt.c (instantiate_class_template): Add an error_mark_node
	check.
	(tsubst_decl) <TEMPLATE_DECL case>: Likewise.

2004-01-23  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/13701
	* decl.c (finish_function): Move the call to
	finish_fname_decls below the call to
	finish_eh_spec_block.

2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* optimize.c, typeck2.c: Update copyright.

2004-01-21  Kazu Hirata  <kazu@cs.umass.edu>

	* Make-lang.in, call.c, class.c, decl2.c, except.c, expr.c,
	init.c, mangle.c, typeck.c: Update copyright.

2004-01-21  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	* parser.c (cp_parser_class_specifier): Prevent garbage collection.

2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in: Replace $(docdir) with doc.
	(c++.info, c++.srcinfo): Dummy entry.
	(c++.man, c++.srcman): New rules.
	(c++.install-man): Revamp rule.

2004-01-20  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (CXX_INSTALL_NAME, GXX_INSTALL_NAME,
	CXX_TARGET_INSTALL_NAME, GXX_TARGET_INSTALL_NAME): Define via a
	immediate $(shell) instead of deferred backquote.

2004-01-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13651
	* parser.c (cp_parser_postfix_expression): When encountering
	incomplete type on left-hand side of "->" or ".", treat the entire
	expression as erroneous.

	PR c++/13592
	* call.c (build_field_call): Remove.
	(n_build_method_call): Likewise.
	(build_method_call): Likewise.
	(build_new_method_call): Do not call build_field_call.
	* class.c (n_build_method_call): Remove.
	(print_class_statistics): Do not print it.
	* cp-tree.h (build_method_call): Remove declaration.
	(finish_object_call_expr): Likewise.
	(build_new_1): Do not use build_method_call.
	* parser.c (cp_parser_postfix_expression): Use finish_call_expr
	when the function appearing on the right-hand-side of "." or "->"
	is not actually a function.
	* pt.c (tsubst_copy_and_build): Likewise.
	* semantics.c (finish_object_call_expr): Remove.

2004-01-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13710
	* pt.c (tsubst): Use finish_typeof.

2004-01-18  Jason Merrill  <jason@redhat.com>

	PR c++/11725
	* except.c (build_throw): In a template, set
	current_function_returns_abnormally.

2004-01-17  Fred Fish  <fnf@intrinsity.com>

	PR c++/11895
	* decl.c (reshape_init): Handle VECTOR_TYPE like ARRAY_TYPE,
	except don't call array_type_nelts() with a VECTOR_TYPE.

2004-01-16  Jan Hubicka  <jh@suse.cz>

	* mangle.c (write_mangled_name): Remove inline modifier.

2004-01-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13574
	* decl.c (compute_array_index_type): Fix grammar in comment.
	* init.c (build_zero_init): Handle zero-sized arrays correctly.

	PR c++/13178
	* call.c (name_as_c_string): Print conversion operator names
	correctly.

	PR c++/13478
	* call.c (initialize_reference): Pass -1 for inner parameter to
	convert_like_real.

2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13407
	* parser.c (cp_parser_base_specifier): Check for an invalid
	keyword `typename' and emit an user-friendly error message.

2004-01-15  Geoffrey Keating  <geoffk@apple.com>

	PR pch/13361
	* cp/lex.c (handle_pragma_interface): Duplicate string from tree.
	(handle_pragma_implementation): Likewise.

2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/9259
	* typeck.c (build_class_member_access_expr): Allow to access members
	of the currently open class.
	(finish_class_member_access_expr): Likewise.

2004-01-15  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/13659
	* name-lookup.c (validate_nonmember_using_decl): Take scope and
	name by value, instead of computing them.
	(do_local_using_decl, do_toplevel_using_decl): Add scope and name
	arguments.  Pass them to validate_nonmember_using_decl.
	* name-lookup.h (do_local_using_decl): Adjust.
	(do_toplevel_using_decl): Likewise.
	* parser.c (cp_parser_using_declaration): Likewise.
	* pt.c (tsubst_expr): Likewise.

2004-01-15  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/13594
	PR c++/13658
	* name-lookup.c (qualified_lookup_using_namespace): Search
	strongly-associated namespaces first, and only then try other
	namespaces.

2004-01-15  Kelley Cook  <kcook@gcc.gnu.org>

	* Make-lang.in (c++.srcextra): Dummy entry.

2004-01-15  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/8856
	* parser.c (cp_parser_template_name): Don't try to parse a
	conversion-function-id, as it cannot be a template-name.
	(cp_parser_simple_type_specifier): Check for invalid template-ids
	even after a built-in type.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	PR c++/12850
	* pt.c (instantiate_decl):  Do not increase function_depth.

2004-01-14  Danny Smith  <dannysmith@users,sourceforge.net>

	PR c++/9021
	PR c++/11005
	* parser.c (cp_parser_elaborated_type_specifier): Warn about
	attributes and discard.
	* decl.c (xref_tag): Don't overwite existing attributes with
	NULL_TREE.

2004-01-14  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/12335
	* parser.c (cp_parser_lookup_name): Return error_mark_node if there
	is no destructor while looking up a BIT_NOT_EXPR.

2004-01-13  Ian Lance Taylor  <ian@wasabisystems.com>

	* cxxfilt.c: Remove unused file.

2004-01-14  Jan Hubicka  <jh@suse.cz>

	Partial fix to PR c++/12850
	* decl2.c (mark_used): Do not proactively instantiate templates
	when compiling in unit-at-a-time or not optimizing.
	* optimize.c (maybe_clone_body): Do not increase function depth.

2004-01-13  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/13474
	* pt.c (tsubst) <INTEGER_TYPE>: Remove obsolete array index tweaking.

2004-01-12  Steven Bosscher  <stevenb@suse.de>

	PR c++/13558
	* parser.c (cp_parser_member_declaration): Any non-type is also
	not a class or a function.

2004-01-12  Jason Merrill  <jason@redhat.com>

	PR c++/12815
	* class.c (build_base_path): Do not mark vtable references as
	TREE_CONSTANT.
	(build_vtbl_ref_1): Likewise.

2004-01-12  Richard Henderson  <rth@redhat.com>

	PR opt/10776
	* typeck2.c (split_nonconstant_init_1, split_nonconstant_init): New.
	(store_init_value): Use it.
	* decl.c (check_initializer): Expect full initialization code
	from store_init_value.
	* init.c (expand_aggr_init_1): Likewise.
	* decl2.c (maybe_emit_vtables): Abort if runtime init needed.

2004-01-12  Mark Mitchell  <mark@codesourcery.com>

	* class.c (layout_class_type): For non-POD class types, also copy
	the DECL_SIZE and DECL_MODE of fields to the base class type.

2004-01-12  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13289
	* pt.c (instantiate_decl): Set DECL_TEMPLATE_INSTANTIATED before
	calling regenerate_decl_from_template.

2004-01-12  Scott Brumbaugh  <scottb.lists@verizon.net>

	PR c++/4100
	* parser.c (cp_parser_decl_specifier_seq): Add check for a friend
	decl-specifier occurring along with a class definition.

2004-01-12  Ian Lance Taylor  <ian@wasabisystems.com>

	* parser.c (cp_parser_decl_specifier_seq): Add parenthetical
	clauses to comments describing declares_class_or_enum.
	(cp_parser_type_specifier): Set *declares_class_or_enum to 0, not
	false.

2004-01-12  Jan Hubicka  <jh@suse.cz>

	* pt.c (for_each_template_parm): Do not check for duplicates.
	(for_each_template_parm): Use walk_tree duplicate checking code.

2004-01-11  Ian Lance Taylor  <ian@wasabisystems.com>

	PR c++/3478
	* parser.c (cp_parser_decl_specifier_seq): If the first decl_spec
	is error_mark_node, don't add any more decl_specs.
	(cp_parser_init_declarator): After committing to a declaration, if
	the decl_specifiers start with error_mark_node, issue an error and
	change the type to "int".

2004-01-09  Nathanael Nerode  <neroden@gcc.gnu.org>

	PR bootstrap/7817
	* Make-lang.in: Copy gcc.1 to g++.1 rather than using .so.

2004-01-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	DR 337
	PR c++/9256
	* pt.c (tsubst): Substitution must fail if we are attempting to
	create an array with element type that is an abstract class type.
	* decl.c (cp_finish_decl): Strip pointers and array types recursively
	before calling abstract_virtuals_error.

2004-01-09  Alexandre Oliva  <aoliva@redhat.com>

	* name-lookup.c (qualified_lookup_using_namespace): Consider
	strong using directives even if we've already found a binding.

2004-01-09  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (cxx_expand_expr): Change prototype.
	* expr.c (cxx_expand_expr): Add alt_rtl parameter.

2004-01-08  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

	PR c++/12573
	* pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
	looking into them recursively. They can be there because of the
	new __offsetof__ extension.

2004-01-07  Zack Weinberg  <zack@codesourcery.com>

	* parser.c (cp_parser_save_member_function_body): Mark the
	definition static.

2004-01-05  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13057
	* class.c (build_clone): Copy type attributes from the original
	function to the clone.

	PR c++/12815
	* class.c (build_vtbl_ref_1): Do not unconditionally mark vtable
	references as constant.

	PR c++/12132
	* parser.c (cp_parser_explicit_instantiation): Improve error
	recovery.
	(cp_parser_require): Improve indication of the error location.

	PR c++/13451
	* parser.c (cp_parser_class_head): Reorder logic to check for
	invalid qualification.

2004-01-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13157
	* name-lookup.c (lookup_using_namespace): Remove spacesp
	parameter.
	(unqualified_namespace_lookup): Likewise.
	(lookup_qualified_name): Adjust accordingly.
	(lookup_name_real): Likewise.
	(lookup_arg_dependent): Do not eliminate the namespace of the
	functions found by unqualified name lookup unless that is the
	current namespace.

2004-01-04  Andrew Pinski  <pinskia@physics.uc.edu>

	* semantics.c (push_deferring_access_checks): Fix format.
	(resume_deferring_access_checks): Likewise.
	(stop_deferring_access_checks): Likewise.
	(pop_deferring_access_checks): Likewise.
	(get_deferred_access_checks): Likewise.
	(pop_to_parent_deferring_access_checks): Likewise.
	(perform_deferred_access_checks): Likewise.
	(perform_or_defer_access_check): Likewise.

2004-01-04  Richard Henderson  <rth@redhat.com>

	* call.c (build_over_call): Don't create a save_expr of an
	aggregate, but rather its address.

2004-01-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/13529
	* parser.c (cp_parser_postfix_expression): Allow "." to appear in
	an offsetof expression.

	* parser.c (cp_parser_parameter_declaration): Fix comment.

	PR c++/12226
	* call.c (CHECK_COPY_CONSTRUCTOR_P): New macro.
	(reference_binding): Set it when appropriate.
	(build_temp): New function, split out from ...
	(convert_like_real): ... here.  Honor CHECK_COPY_CONSTRUCTOR_P.
	(initialize_reference): Likewise.

	PR c++/13536
	* parser.c (cp_parser): Add in_type_id_in_expr_p.
	(cp_parser_new): Initialize it.
	(cp_parser_postfix_expression): Set it.
	(cp_parser_sizeof_operand): Likewise.
	(cp_parser_parameteR_declaration): Do not commit early to tenative
	parsers when in_type_id_in_expr_p is set.

2004-01-03  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13094
	* parser.c (cp_parser_template_argument): Don't call
	make_unbound_class_template directly.
	(cp_parser_lookup_name): Don't extract TEMPLATE_DECL from
	UNBOUND_CLASS_TEMPLATE tree node.

2004-01-02  Richard Sandiford  <rsandifo@redhat.com>

	PR target/12729
	* method.c (use_thunk): Pass the CALL_EXPR through force_target_expr.

2004-01-02  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

	PR c++/13520
	* cp-tree.h (DECL_UNBOUND_CLASS_TEMPLATE_P): New macro.
	(DECL_FUNCTION_TEMPLATE_P): Use it.
	(DECL_CLASS_TEMPLATE_P): Likewise.
	* parser.c (cp_parser_lookup_name): Add is_template parameter.
	(cp_parser_type_parameter): Adjust call to cp_parser_lookup_name.
	(cp_parser_template_name): Likewise.
	(cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_namespace_name): Likewise.
	(cp_parser_class_name): Likewise.
	(cp_parser_lookup_name_simple): Likewise.
