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

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

2005-12-30  Gabriel Dos Reis  <>

	* cxx-pretty-print.c (pp_cxx_constant): New.  Print
	string-literal in parens if input program says so.
	(pp_cxx_primary_expression): Hand off constant printing to
	(pp_cxx_pretty_printer_init): Set pp->c_base.constant.
	(pp_cxx_expression): Use pp_cxx_constant for literals.
	* error.c (dump_expr): Use pp_constant for literals.

2005-12-29  Nathan Sidwell  <>

	* method.c (make_thunk): Don't set comdat_linkage here.
	(use_thunk): Make thunk one only here, if thunk target is

2005-12-26  Mark Mitchell  <>

	PR c++/25439
	* decl.c (grokdeclarator): Remove dead code.
	* ptree.c (cxx_print_xnode): Handle BASELINK.
	* parser.c (make_id_declarator): Add sfk parameter.
	(cp_parser_direct_declarator): Do not pass TYPE_DECLs to
	(cp_parser_declarator_id): Simplify BASELINKs here.
	(cp_parser_member_declaration): Adjust calls to

2005-12-26  Mark Mitchell  <>

	PR c++/23171, c++/23172, c++/25417.
	* typeck.c (build_unary_op): Create temporary variables for
	compound literals whose addresses are taken.
	* init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
	* decl.c (reshape_init_vector): Likewise.
	(reshape_init): Give it external linkage.
	(check_initializer): Use COMPOUND_LITERAL_P.
	(initialize_artificial_var): Allow the initializer to be a
	* call.c (make_temporary_var_for_ref_to_temp): Use
	* cp-tree.h (COMPOUND_LITERAL_P): New macro.
	(rehape_init): Declare.
	* typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
	* semantics.c (finish_compound_literal): Use reshape_init.

2005-12-23  Mark Mitchell  <>

	PR c++/24671
	* pt.c (instantiate_template): Handle SFINAE.

2005-12-23  Volker Reichelt  <>

	* decl.c (grokdeclarator): Improve diagnostic for friend
	declarations of class members.

2005-12-22  Mark Mitchell  <>

	PR c++/25369
	* tree.c (really_overloaded_fn): Tweak comment.
	* pt.c (tsubst_call_declarator_parms): Remove.
	(tsubst_copy): Call mark_used on the member referenced by an
	* semantics.c (finish_qualified_id_expr): Simplify.
	* decl2.c (mark_used): Accept BASELINKs.

	PR c++/25364
	* typeck.c (build_unary_op): Pass DECLs not names to
	* init.c (build_offset_ref): Do not do name lookup.  Do not call
	* call.c (build_call): Simplify and tidy.
	* semantics.c (finish_qualified_id_expr): Call mark_used.

2005-12-22  Volker Reichelt  <>

	PR c++/23333
	* parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to
	identify a single '0'.

2005-12-20  Mark Mitchell  <>

	PR c++/21228
	* decl.c (use_eh_spec_block): New function.
	(store_parm_decls): Use it.
	(finish_function): Likewise.

2005-12-19  Mark Mitchell  <>

	PR c++/24278
	* init.c (expand_member_init): Print messages about baseclasses
	using %T rather than %D.

	PR c++/24915
	* class.c (add_method): Do not treat templates as identical unless
	their return types are the same.

2005-12-12  Mark Mitchell  <>

	PR c++/25300
	* tree.c (build_qualified_name): Return error_mark_node for
	erroneous input.

2005-12-10  Mark Mitchell  <>

	PR c++/25337
	* pt.c (tsubst_copy_and_build): Permit dependent types for the
	object in a class member access expression.

2005-12-10  Terry Laurenzo  <>

	PR java/9861
	* mangle.c (write_bare_function_type): Mangle return type for
	methods of Java classes

2005-12-08  Théodore Papadopoulo <>

	* call.c (build_conditional_expr): Print types in error messages.

2005-12-07  Volker Reichelt  <>

	* expr.c (cxx_expand_expr): Call gcc_unreachable instead of abort.

2005-12-07  Volker Reichelt  <>

	* cp-gimplify.c (gimplify_cp_loop): Use fold_build3.

2005-12-07  Rafael Ávila de Espíndola  <>

	* (, c++.install-normal): Remove.

2005-12-07  Rafael Ávila de Espíndola  <>

	* Remove all dependencies on s-gtype.

2005-12-06  Aldy Hernandez  <>

	PR C++/24138
	* decl.c (reshape_init_array_1): Handle max_index of -1.

2005-12-06  Roger Sayle  <>

	* typeck.c (build_binary_op): Issue warning if either operand of a
	comparison operator is a string literal, except for testing equality
	or inequality against NULL.

2005-12-06  Roger Sayle  <>

	PR c++/25263
	* decl.c (compute_array_index_type): Check that itype is an
	INTEGER_CST node before testing/clearing TREE_OVERFLOW.

2005-12-05  Daniel Berlin  <>

	* ptree.c (cxx_print_decl): Update to check for decl_common

2005-12-02  Mark Mitchell  <>

	PR c++/24173
	* decl.c (duplicate_decls): Don't rely on DECL_TEMPLATE_INFO after
	clobbering newdecl.

2005-12-02  Richard Guenther  <>

	* semantics.c (simplify_aggr_init_expr): Use buildN instead
	of build.

2005-12-02  Gabriel Dos Reis  <>

	* parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
	(cp_parser_template_argument_list): Use XRESIZEVEC instead of
	* class.c (pushclass): Likewise.

2005-12-02  Gabriel Dos Reis  <>

	* decl2.c (get_priority_info): Use XNEW, not xmalloc.
	* decl.c (push_switch): Likewise.
	* lex.c (handle_pragma_implementation): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
	not ggc_alloc.
	(cxx_initialize_diagnostics): Use XNEW, not xmalloc.
	* class.c (init_class_processing): Use XNEWVEC, not xmalloc.
	* g++spec.c (lang_specific_driver): Likewise.
	* mangle.c (save_partially_mangled_name): Likewise.
	* parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
	(cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
	(cp_parser_sizeof_operand): Likewise.
	* repo.c (open_repo_file, open_repo_file): Likewise.

2005-12-01  Gabriel Dos Reis  <>

	* parser.c (cp_parser_make_typename_type): Call make_typename_type
	with tf_none instead of magic value 0.
	(cp_parser_explicit_instantiation): Call do_type_instantiation
	with tf_error instead of magic value 1.
	(cp_parser_elaborated_type_specifier): Call make_typename_type
	with tf_error instead of magic value 1.
	(cp_parser_class_name): Likewise.
	(cp_parser_lookup_name): Likewise.

2005-12-01  Gabriel Dos Reis  <>

	* parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
	not RID_MAX.

2005-11-30  Jason Merrill  <>

	PR c++/21123
	* cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference
	parms in a thunk.

2005-11-30  Ben Elliston  <>

	* typeck.c (build_x_unary_op): Correct spelling in error message.

2005-11-28  Nathan Sidwell  <>

	PR c++/21166
	* class.c (check_field_decls): Only set DECL_PACKED on a field
	when its natural alignment is > BITS_PER_UNIT.

2005-11-27  Volker Reichelt  <>

	PR c++/24979
	* cp-tree.h (DECL_MAIN_P): Remove duplicate definition.

2005-11-26  Richard Henderson  <>

	* lex.c: Update for pragma_lex rename.
	* parser.c: Likewise.

2005-11-25  Volker Reichelt  <>

	PR c++/9278
	* decl.c (grokparms): Do not allow typedef-names in a '(void)'

2005-11-25  Volker Reichelt  <>

	* typeck2.c (process_init_constructor_union): Remove check for
	unnamed union members.

2005-11-25  Volker Reichelt  <>

	* name-lookup.c (lookup_name_real): Merge two if's.

2005-11-25  Volker Reichelt  <>

	* pt.c (instantiate_class_template): Clean-up.

2005-11-25  Volker Reichelt  <>

	* pt.c (template_class_depth_real): Remove. Move functionality to ...
	(template_class_depth): ... here, replacing count_specializations
	with 0.  Adjust comment.

2005-11-24  Richard Guenther  <>
	Dirk Mueller <>

	PR c++/14024
	* typeck.c (build_reinterpret_cast_1): Use

2005-11-23  Gabriel Dos Reis  <>

	PR c++/24235
	* pt.c (check_instantiated_args): Reword diagnostic message about
	template argument involving local types.

2005-11-23  Gabriel Dos Reis  <>

	PR c++/21667
	* typeck.c (build_array_ref): Avoid code duplicate.  Use common
	C/C++ diagnostic function warn_array_subscript_with_type_char.

2005-11-21  Gabriel Dos Reis  <>

	PR c++/22238
	* error.c (resolve_virtual_fun_from_obj_type_ref): New.
	(dump_expr): Use it in <case CALL_EXPR>.

2005-11-21  Richard Henderson  <>

	* cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.

	* name-lookup.c (lookup_name): Remove prefer_type argument.
	(lookup_name_prefer_type): New.
	* decl.c (lookup_and_check_tag): Use them.
	* pt.c (tsubst_friend_class): Likewise.
	(lookup_template_class): Likewise.
	(tsubst_copy_and_build): Likewise.
	* name-lookup.h (lookup_name_prefer_type): New.
	(lookup_name): Remove declaration.

2005-11-18  Mark Mitchell  <>

	PR c++/8355
	* decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
	* name-lookup.c (set_decl_namespace):

2005-11-18  Mike Stump  <>

	* cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
	* name-lookup.c (lookup_name_two): Remove.
	(lookup_name_one): Add.
	* name-lookup.h (lookup_name_two): Remove.
	(lookup_name_one): Add.

2005-11-15  Jason Merrill  <>

	PR c++/24580
	* method.c (locate_copy): Also use skip_artificial_parms here.
	(synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
	(locate_ctor): Abort if we fail to find a default constructor.

2005-11-15  Mike Stump  <>

	* name-lookup.c (lookup_name_two): Add.
	* name-lookup.h: Likewise.

2005-11-15  Mark Mitchell  <>

	PR c++/24667
	* typeck.c (check_for_casting_away_constness): Use the diag_fn.
	(build_const_cast_1): Call it, for C-style casts.

2005-11-14  Mark Mitchell  <>

	PR c++/24687
	* pt.c (check_explicit_specialization): Don't check for C linkage.
	(push_template_decl_real): Likewise.
	* parser.c (cp_parser_explicit_specialization): Check here.
	(cp_parser_template_declaration_after_export): And here.

	* parser.c (cp_lexer_get_preprocessor_token): Initialize keyword

2005-11-14  Jason Merrill  <>

	PR c++/24580
	* method.c (locate_ctor): Skip all artificial parms, not just

2005-11-14  Mark Mitchell  <>

	* parser.c (eof_token): Add initializer for ambiguous_p.

2005-11-13  Mark Mitchell  <>

	PR c++/24817
	* decl.c (check_redeclaration_exception_specification): New
	(duplicate_decls): Use it.
	* error.c (fndecl_to_string): Print the template parameter list.

	PR c++/20293
	* cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
	for namespaces.
	(pp_cxx_original_namespace_definition): Likewise.
	* name-lookup.c (ambiguous_decl): Don't issue error messages;
	instead return lists of ambiguous candidates.
	(select_decl): Handle ambiguous namespace lookups.
	* parser.c (cp_token): Add ambiguous_p.
	(cp_lexer_get_preprocessor_token): Set it.
	(cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
	when a qualified name uses an invalid scope.
	(cp_parser_primary_expression): Print ambiguous candidates.
	(cp_parser_type_parameter): Adjust comment to reflect new
	parameter name for cp_parser_lookup_name.
	(cp_parser_template_argument): Likewise.
	(cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_namespace_name): Likewise.
	(cp_parser_class_name): Print ambiguous candidates.
	(cp_parser_lookup_name): Rename ambiguous_p parameter to
	ambiguous_decls.  Use it to return a list of ambiguous candiates
	when a lookup is ambiguous.
	(cp_parser_lookup_name_simple): Adjust comment to reflect new
	parameter name for cp_parser_lookup_name.

2005-11-12  Jakub Jelinek  <>

	PR c++/24780
	* typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
	and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
	of array type.

	PR c++/24761
	* pt.c (tsubst_copy_asm_operands): New function.
	(tsubst_expr) <case ASM_EXPR>: Use it.

2005-11-08  Jakub Jelinek  <>

	PR c++/19450
	* decl.c (redeclaration_error_message): Issue diagnostics about
	olddecl and newdecl disagreement on __thread property.
	(grokdeclarator): Set DECL_TLS_MODEL on class static variables.

2005-11-08  Jason Merrill  <>

	PR c++/21123
	* method.c (use_thunk): Use build_cplus_new instead of

2005-11-06  Jason Merrill  <>
	    James A. Morrison <>

	PR c++/17256
	* decl2.c (cp_finish_file): Fix conditions for undefined warning.
	* pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
	a warning on a function we didn't instantiate because of excessive

2005-11-06  Mark Mitchell  <>

	* class.c (record_subobject_offsets): Don't record offsets past
	biggest empty class for non-empty base classes.
	(layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
	keeping track of the size of emptyclasses.

	PR c++/21308
	* class.c (sizeof_biggest_empty_class): New variable.
	(record_subobject_offsets): Don't record offsets past biggest
	empty class for data members.  Replace vbases_p parameter with
	is_data_member parameter.
	(build_base_field): Adjust call.
	(layout_class_type): Likewise.  Maintain

2005-11-05  Kazu Hirata  <>

	* decl2.c, init.c, typeck.c: Fix comment typos.

2005-11-04  Richard Guenther  <>

	PR c++/22487
	* init.c (build_vec_init): Build comparison of matching

2005-11-03  Josh Conner  <>

	PR c++/19989
	pt.c (tsubst): Accept zero-length array if tf_error is set
	in complain flags.  Change error message for negative-
	length array.

2005-11-04  Joseph S. Myers  <>

	* cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*

2005-11-03  Joseph S. Myers  <>

	PR c++/17964
	* error.c (cp_cpp_error): New function.
	* cp-tree.h (cp_cpp_error): Declare.
	* parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
	and error callback after lexing.

2005-11-03  Mark Mitchell  <>

	PR c++/21627
	* pt.c (register_specialization): Update inline flags on clones.y

2005-11-03  Andrew Pinski  <>

	PR c++/24582
	* decl.c (declare_local_label): Return 0 for variables
	with error_mark_node as their types.

2005-11-02  Mark Mitchell  <>

	PR c++/22434
	* call.c (build_conditional_expr): Do bad conversions, if there's
	no other choice.

	PR c++/24560
	* parser.c (cp_parser_postfix_dot_deref_expression): Improve error
	message for use of overloaded functions on LHS of "." operator.

	PR c++/19253
	* parser.c (cp_parser_postfix_expression): Use
	cp_parser_elaborated_type_specifier to handle typename-types in
	functional casts.
	(cp_parser_enclosed_argument_list): Skip ahead to the end of the
	template argument list if the closing ">" is not found.

	PR c++/24569
	* pt.c (instantiate_decl): Use cp_finish_decl, not

2005-10-28  Andrew Pinski  <>

	* decl.c (grokfndecl): Remove the setting
	of the return type of the function type
	of main after erroring about must returning

2005-10-28  Andrew Pinski  <>

	PR C++/23229
	* decl.c (grokfndecl): Create a new function type
	after erroring out about main not returning int.

2005-10-28  Josh Conner  <>

	PR c++/22153
	* parser.c (cp_parser_member_declaration): Detect and handle
	a template specialization.

2005-10-28  Andrew Pinski  <>

	PR C++/23426
	* decl.c (start_decl): Check that the decl is an
	error_mark_node before getting the type.
	Remove the check for the decl's type being an

2005-10-21  Mark Mitchell  <>

	PR c++/24260
	* parser.c (cp_parser_init_declarator): Pass attributes to

2005-10-20  Mark Mitchell  <>

	PR c++/22618
	* search.c (accessible_p): Check access in the outermost set of
	template parameters.

2005-10-20  Richard Guenther  <>

	* decl.c (grokdeclarator): Fix ambiguous pedwarn message.

2005-10-18  Volker Reichelt  <>

	PR c++/22293
	* decl.c (grokdeclarator): Reject unqualified destructors in
	friend declarations.

2005-10-18  Mark Mitchell  <>

	PR c++/23293
	* pt.c (convert_template_argument): Use canonical type variants in
	template specializations.

2005-10-18  Nathan Sidwell  <>

	PR c++/21383
	* name-lookup.c (arg_assoc): Template args can be null in a

	PR c++/22604
	* class.c (update_vtable_entry_for_fn): Don't process invalid
	covariant overriders.

	PR c++/23118
	* cp-tree.h (add_method): Add return value.
	* class.c (add_method): Return success indicator.
	* semantics.c (finish_member_declaration): Don't add an invalid
	method to the method list.

2005-10-17  Mark Mitchell  <>

	PR c++/21908
	* call.c (build_new_method_call): Do not show VTT parameters to
	the user.

2005-10-17  Volker Reichelt  <>

	PR c++/23440
	* parser.c (cp_parser_statement): If the parser reached CPP_EOF,
	only complain about missing statement.

2005-10-17  Nathan Sidwell  <>

	PR c++/24386
	* cp-tree.h (BASELINK_QUALIFIED_P): New.
	* pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
	* typeck.c (finish_class_member_access_expr): Set it.

	PR c++/21353
	* decl.c (check_default_argument): Don't check
	processing_template_decl or uses_template_parms here.
	(grokparms): Only call check_default_argument when not processing
	a template decl.
	* parser.c (cp_parser_late_parsing_default_arg): Call
	check_default_argument when not processing a template decl.

2005-10-16  Mark Mitchell  <>

	PR c++/24389
	* decl2.c (mark_used): Use uses_template_parms instead of
	* init.c (constant_value_1): Handle uninstantiated templates
	* pt.c (instantiate_decl): Add sanity check.

2005-10-16  Mark Mitchell  <>

	PR c++/22173
	* typeck.c (check_template_keyword): Fix thinko.

2005-10-16  Andrew Pinski  <>

	PR c++/23959
	* decl.c (pop_switch): Only call c_do_switch_warnings
	when not processing templates.

2005-10-16  Mark Mitchell  <>

	PR c++/22173
	* cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
	(check_template_keyword): New function.
	(finish_id_expression): Change prototoype.
	(finish_qualified_id_expr): Change prototype.
	(build_qualified_name): New function.
	(finish_class_member_access_expr): Change prototype.
	* init.c (build_offset_ref): Use build_qualified_name.
	* mangle.c (write_expression): Likewise.
	* parser.c (cp_parser_primary_expression): Remove qualifying_class
	parameter.  Add address_p and template_arg_p.  Use
	(cp_parser_id_expression): Default *template_p to
	template_keyword_p.  Check for invalid uses of the template
	(cp_parser_postfix_expression): Eliminate special handling for
	qualified names.  Adjust call to cp_parser_primary_expression.
	(cp_parser_postfix_dot_deref_expression): Adjust call to
	cp_parser_id_expression and finish_class_member_access_expr.
	(cp_parser_template_argument_list): Add comment.
	(cp_parser_template_argument): Adjust use of
	cp_parser_primary_expression.  Remove call to
	(cp_parser_lookup_name): Use build_qualified_name.
	* pt.c (tsubst): Use build_qualified_name.
	(tsubst_qualified_id): Likewise.  Adjust call to
	(tsubst_copy): Use build_qualified_name.
	(tsubst_copy_and_build): Adjusts call to finish_id_expression and
	* semantics.c (finish_non_static_data_member): Use
	(finish_qualified_id_expr): Add template_p and template_arg_p
	(finish_id_expression): Remove qualifiying_class parameter.  Add
	template_p, done, address_p, and template_arg_p.  Use
	build_qualified_name.  Adjust calls to
	* tree.c (build_qualified_name): New function.
	* typeck.c (check_template_keyword): New function.
	(finish_class_member_access_expr): Add template_p argument.  Check
	for invalid uses of the template keyword.

2005-10-15  Mark Mitchell  <>

	PR c++/21347
	* class.c (maybe_warn_about_overly_private_class): Lazy
	constructors are public.

2005-10-14  Mark Mitchell  <>

	PR c++/19565
	* call.c (convert_like_real): Rely on convert_and_check to issue
	warnings about overflow and conversion to unsigned.
	* decl.c (finish_enum): Use the location of the enumerators, not
	the closing brace of the enumeration, when reporting warnings
	about conversions.
	(build_enumerator): Use error_mark_node for erroneous values.
	* typeck2.c (digest_init): Remove reference to "signature pointer"
	from comment.

2005-10-14  Nathan Sidwell  <>

	PR c++/17796
	* optimize.c (update_cloned_parm): Add FIRST parameter. Use it.
	(maybe_clone_body): Track the first clone.

2005-10-13  Nathan Sidwell  <>

	PR c++/23984
	* class.c (build_base_path): The vtable is always the first thing
	in the vtt.

2005-10-13  Mark Mitchell  <>

	PR c++/20721
	* cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro.
	* decl.c (duplicate_decls): Merge it into new declarations.
	(decl_jump_unsafe): Use it, rather than DECL_INITIAL.
	(cp_finish_decl): Set it, when appropriate.

	PR c++/22180
	* call.c (build_new_method_call): Correct pretty-printing of
	destructor names.
	* pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an

	PR c++/23694
	* decl.c (start_method): Return error_mark_node for errors.

	PR c++/23307
	* pt.c (push_template_decl_real): Complain about attempts to
	declare template variables.

	PR c++/22352
	* pt.c (tsubst_template_parms): Set processing_template_decl while
	processing the parameters.
	(tsubst_decl): Set processing_template_decl when substituting into

	PR c++/22405
	* pt.c (most_specialized_instantiation): Robustify.

	PR c++/22464
	* semantics.c (finish_id_expression): Issue errors about uses of
	local variables in containing functions even in templates.

2005-10-12  Danny Smith  <>

	PR target/21801
	PR target/23589
	* class.c (finish_struct_1): Call

2005-10-12  Nathan Sidwell  <>

	PR c++/21592
	* pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF
	with already looked up member functions.  Assert we're not
	returning a NON_DEPENDENT_EXPR with unknown type.
	* typeck.c (finish_class_member_access_expr):  We can get
	non-template-id-expr baselinks.  If the lookup finds a baselink,
	remember it even inside templates.

	PR c++/23797
	* parser.c (cp_parser_functional_cast): Cope when TYPE is not a
	TYPE_DECL.  Use dependent_type_p to check type.
	* pt.c (uses_template_parms_p): Use dependent_type_p for a
	(type_dependent_expression_p): Assert we've not been given a

	PR c++/21117
	* decl.c (check_function_type): Correctly overwrite incomplete
	return type with void type.
	* typeck.c (check_return_expr): If the function's return type is
	void, don't try and convert a return expr.

2005-10-12  David Edelsohn  <>

	PR c++/23730
	* call.c (build_object_call): If BINFO is NULL, bypass
	lookup_fnfields and set fns to NULL_TREE.

2005-10-12  Paolo Bonzini  <>

	PR c++/24052
	* error.c (dump_expr): Pass LABEL_DECL to dump_decl.  Print
	an ADDR_EXPR of a LABEL_DECL as &&.

2005-10-12  Nathan Sidwell  <>

	PR c++/19964
	* class.c (walk_subobject_offsets): Don't walk error_mark_node.

2005-10-11  Ian Lance Taylor  <>

	PR c++/8057
	* cvt.c (convert_to_void): Don't warn about unused values when
	processing a template declaration.

2005-10-11  Mark Mitchell  <>

	PR c++/21089
	* call.c (convert_like_real): Use decl_constant_value, not
	* init.c (constant_value_1): New function.
	(integral_constant_value): Use it.
	(decl_constant_value): Likewise.
	* typeck.c (decay_conversion): Use decl_constant_value, not

	PR c++/21369
	* parser.c (cp_parser_elaborated_type_specifier): Don't treat
	class types as templates if the type is not appearing as part of a
	type definition or declaration.

2005-10-10  Mark Mitchell  <>

	PR c++/24277
	* pt.c (instantiate_decl): Call finish_static_data_member_decl for
	static data members.

2005-10-10  Giovanni Bajo  <>
	    Mark Mitchell  <>

	PR c++/23437
	* parser.c (cp_parser_template_argument_list): Do not treat
	contents of argument list as part of a constant expression.

2005-10-10  Mark Mitchell  <>

	PR c++/24139
	* decl.c (grokdeclarator): Do not require template parameter lists
	for explicitly specialized class.
	* error.c (dump_aggr_type): Do not dump template arguments for
	non-primary specializations.
	(dump_function_name): Likewise.

	PR c++/24275
	* pt.c (instantiate_decl): Instantiate the initializer of
	a static data member in the namespace containing the class
	containing the static data member.

2005-10-08  James A. Morrison  <>

	PR c++/22172
	* parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype
	scopes as nondependent.

2005-10-06  Volker Reichelt  <>

	* call.c (resolve_args): Remove redundant test.

2005-10-05  Paolo Bonzini  <>

	PR tree-optimization/21419
	PR tree-optimization/24146
	PR tree-optimization/24151

	* semantics.c (finish_asm_stmt): Call readonly_error if outputs are
	read-only.  Set ASM_VOLATILE_P for asms without outputs.

2005-10-05  Nathan Sidwell  <>

	PR c++/23513
	* call.c (joust): Adjust length count to more_specialized_fn.
	* pt.c (more_specialized_fn): Cope with non-static member vs

2005-10-04  Andrew Pinski  <>

	PR middle-end/23125
	* decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name
	instead of change_decl_assembler_name.

2005-10-03  Alexandre Oliva  <>

	* error.c (dump_type) <UNKNOWN_TYPE>: Print reworded message.

2005-10-03  Mark Mitchell  <>

	PR c++/17775
	* repo.c: Include flags.h.
	(finish_repo): Add -frandom-seed to the arguments.

2005-10-02  Mark Mitchell  <>

	PR c++/22621
	* parser.c (cp_parser_template_argument): Don't turn "T::f" into
	* pt.c (convert_nontype_argument): Remove ??? comment.

	PR c++/23840
	* tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue,
	when class rvalues are lvalues.

2005-09-28  Mark Mitchell  <>

	PR c++/16782
	* decl.c (grokdeclarator): Always pedwarn about overqualified
	member names.

2005-09-27  Mark Mitchell  <>

	PR c++/22147
	* name-lookup.c (maybe_process_template_type_declaration): Don't
	treat forward declarations of classes as templates just because
	we're processing_template_decl.
	* pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend

2005-09-26  Jason Merrill  <>

	PR c++/13764
	* cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro.
	* name-lookup.c (pushdecl_maybe_friend): Check it.
	* decl.c (begin_function_body): Do nothing if it's false.
	(finish_function_body): Ditto.
	(outer_curly_brace_block): New fn.
	(finish_function): Use it.

2005-09-26  Richard Guenther  <>

	PR middle-end/15855
	* decl2.c (do_static_destruction): Remove.
	(finish_static_initialization_or_destruction): Likewise.
	(NEEDS_GUARD_P): Likewise.
	(do_static_initialization): Rename to
	do_static_initialization_or_destruction.  Process all
	initializers/destructors and handle common conditionalizing.
	(start_static_initialization_or_destruction): Rename to
	one_static_initialization_or_destruction.  Handle only
	decl-specific conditionalizing.
	(cp_finish_file): Call do_static_initialization_or_destruction.

2005-09-22  Jakub Jelinek  <>

	PR c++/21983
	* class.c (find_final_overrider): Move diagnostic about no unique final
	overrider to...
	(update_vtable_entry_for_fn): ... here.

2005-09-21  Mark Mitchell  <>

	PR c++/23993
	* init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P.

2005-09-21  Volker Reichelt  <>

	PR c++/23965
	* call.c (resolve_args): Return error_mark_node on arguments
	whose TREE_TYPE is error_mark_node.

2005-09-20  Jakub Jelinek  <>

	PR c++/23947
	* rtti.c (get_pseudo_ti_init): Recompute ti pointer after
	get_tinfo_ptr calls.

2005-09-16  Mark Mitchell  <>

	PR c++/23914
	* parser.c (cp_parser_enclosed_template_argument_list): Make sure
	skip_evaluation is false when processing template arguments.

	PR c++/21514
	* pt.c (check_instantiated_args): Treat uses of anonymous types as
	causing type-deduction failure.

2005-09-15  Jason Merrill  <>

	PR c++/23357
	* cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to

2005-09-15  Mark Mitchell  <>

	PR c++/23896
	* pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when
	processing template arguments.

	* pt.c (check_explicit_instantiation_namespace): Fix typo.

	PR c++/13140
	* decl.c (check_class_member_definition_namespace): New function.
	(grokfndecl): Use it.
	(grokvardecl): Likewise.
	(grokdecl): Improve documentation.
	* pt.c (check_explicit_instantiation_namespace): New function.
	(register_specialization): Call check_specialization_namespace
	when replacing an implicitly instantiated function.
	(check_explicit_specialization): Ensure that DECL_CONTEXT is set
	correctly for namespace-scope specializations.
	(do_decl_instantiation): Use
	(do_type_instantiation): Likewise.

2005-09-15  Nathan Sidwell  <>

	PR c++/23725
	* error.c (dump_decl): <USING_DECL case> Use USING_DECL_SCOPE.

2005-09-13  Bastian Blank <>

	PR c++/16171
	* mangle.c (find_substitution): Do not use special substitutions
	for identifiers not in std::.

2005-09-13  Mark Mitchell  <>

	PR c++/23839
	* typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER
	for VAR_DECLs.

2005-09-13  Mark Mitchell  <>

	PR c++/23842
	* pt.c (tsubst_default_argument): Do treat default argument
	expressions as occurring in the context of the function called.

2005-09-12  Mark Mitchell  <>

	PR c++/23841
	* parser.c (cp_parser_primary_expression): Recognize the closing
	">" of a template-argument-list after a floating-point literal as
	the end of a cast expression.

2005-09-12  Mark Mitchell  <>

	PR c++/23789
	* cvt.c (perform_qualification_conversions): Don't create
	unnecessary NOP_EXPRs.
	* pt.c (tsubst_template_arg): Use fold_non_dependent_expr.

2005-09-12  Ian Lance Taylor  <>

	PR g++/7874
	* cp-tree.h (struct lang_decl_flags): Add hidden_friend_p
	bitfield.  Make dummy bitfield one bit smaller.
	(pushdecl_maybe_friend): Declare.
	(pushdecl_top_level_maybe_friend): Declare.
	* decl.c (duplicate_decls): Add newdecl_is_friend parameter.
	Change prototype and all callers.  Add assertion that a
	DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if
	* name-lookup.c (supplement_binding): Don't ignore a
	(pushdecl_maybe_friend): Break out contents of pushdecl.  Add
	is_friend parameter.  Set DECL_ANTICIPATED and
	DECL_HIDDEN_FRIEND_P for a friend function.
	(pushdecl): Just call pushdecl_maybe_friend.
	(pushdecl_with_scope): Add is_friend parameter.  Change prototype
	and all callers.
	(pushdecl_namespace_level): Likewise.
	(push_overloaded_decl): Likewise.  Check DECL_HIDDEN_FRIEND_P as
	well as DECL_ANTICIPATED when checking for a builtin.
	(do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as
	DECL_ANTICIPATED when checking for a builtin.
	(do_nonmember_using_decl): Likewise.
	(pushdecl_top_level_1): Add is_friend parameter.  Change all
	(pushdecl_top_level_maybe_friend): New function.
	(remove_hidden_names): New function.
	(struct arg_lookup): Add args field.
	(friend_of_associated_class_p): New static function.
	(arg_assoc_namespace): Ignore hidden functions which are not
	friends of an associated class of some argument.
	(lookup_arg_dependent): Remove hidden functions from list passed
	in.  Initialize k.args.
	* name-lookup.h (remove_hidden_names): Declare.
	* friend.c (do_friend): Call pushdecl_maybe_friend instead of
	* call.c (add_function_candidate): Change DECL_ANTICIPATED test to
	an assertion, with a check for DECL_HIDDEN_FRIEND_P.
	(build_new_function_call): Add koenig_p parameter.  Change
	prototype and callers.
	* pt.c (register_specialization): Add is_friend parameter.  Change
	all callers.
	(push_template_decl_real): Change is_friend parameter to bool.
	Change prototype and all callers.
	(tsubst_friend_class): Call pushdecl_top_level_maybe_friend
	instead of pushdecl_top_level.

2005-09-11  Richard Henderson  <>

	* decl2.c (build_anon_union_vars): Copy attributes from the base addr.
	* pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR.

2005-09-09  Gabriel Dos Reis  <>

	* parser.c (cp_parser_translation_unit): Simplify.  The while-block
	was actually executed at most once.

2005-09-09  Richard Henderson  <>

	PR debug/20998
	* cp-tree.def (ALIAS_DECL): Remove.
	* cp-lang.c (cp_init_ts): Remove support for it.
	* error.c (dump_decl): Likewise.
	* name-lookup.c (pushdecl): Likewise.
	* semantics.c (finish_id_expression): Likewise.
	* decl2.c (build_anon_union_vars): Use a VAR_DECL with

2005-09-09  Mark Mitchell  <>

	PR c++/22252
	* decl.c (start_preparsed_function): Do not pay attention to
	#pragma interface for implicitly-defined methods.
	* decl2.c (cp_finish_file): Do not complain about uses of inline
	functions that have bodies, even if we decided not to emit the
	body in this translation unit.
	* semantics.c (note_decl_for_pch): Do not mess with linkage.
	(expand_or_defer_fn): Make inline, non-template functions COMDAT
	at this point.

2005-09-08  Richard Henderson  <>

	PR debug/23190
	* decl.c (wrapup_globals_for_namespace): Call
	* decl2.c (cp_finish_file): Likewise.

2005-09-08  Mark Mitchell  <>

	PR c++/23691
	* decl2.c (mark_used): Instantiate static data members initialized
	by constants, even in a template.

2005-09-08  Andrew Pinski  <>

	PR obj-c++/16816
	* parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as

2005-09-07  Richard Guenther  <>

	* cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR

2005-09-06  Jakub Jelinek  <>

	PR c/23075
	* typeck.c (check_return_expr): Add no_warning argument.  Set
	*no_warning to true if "return-statement with no value, in function
	returning" warning has been issued.
	* cp-tree.h (check_return_expr): Adjust prototype.
	* semantics.c (finish_return_stmt): Set TREE_NO_WARNING if
	check_return_expr set *no_warning to true.

2005-09-06  Mark Mitchell  <>

	* cp-tree.h (rvalue): New function.
	* call.c (build_conditional_expr): Use it.
	* init.c (build_new_1): Likewise.
	* rtti.c (build_dynamic_cast_1): Likewise.
	* tree.c (rvalue): New function.
	* typeck.c (build_unary_op): Use it.
	(build_static_cast_1): Likewise.

	PR c++/9782
	* init.c (build_new_1): Make sure the entire array type is
	complete, not just its element types.

2005-09-06  Volker Reichelt  <>

	* decl.c (check_elaborated_type_specifier): Remove redundant check.

2005-09-06  Jakub Jelinek  <>

	PR c++/23056
	* typeck.c (ignore_overflows): New helper function.
	(build_static_cast_1): Use it.

2005-09-06  Kazu Hirata  <>

	* cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos.
	Follow spelling conventions.

2005-09-05  Mark Mitchell  <>

	PR c++/23667
	* pt.c (tsubst_decl): Clear DECL_TEMPLATE_INSTANTIATED when
	copying a VAR_DECL.

2005-09-05  Mark Mitchell  <>

	PR c++/21440
	* semantics.c (finish_stmt_expr_expr): Add an explicit
	initialization to the last statement in the statement-expression.
	* (finish_stmt_expr): Adjust accordingly.

2005-09-03  Mark Mitchell  <>

	PR c++/23699
	* decl2.c (mark_used): Always instantiate static data members
	initialized by constant expressions.
	* pt.c (instantiate_decl): Instantiate the initializers for static
	data members initialized by constant expressions.

	PR c++/21687
	* semantics.c (expand_or_defer_fn): Do not call ggc_collect when
	finishing processing for a template function in a local class.
	2005-09-02  Mark Mitchell  <>
	* parser.c (cp_parser_class_specifier): Push/pop GC contexts
	around functions in local classes.

2005-09-02  Mark Mitchell  <>

	PR c++/21687
	* parser.c (cp_parser_class_specifier): Push/pop GC contexts
	around functions in local classes.

2005-08-31  Andrew Pinski  <>

	PR obj-c++/23640
	* decl2.c (cp_finish_file): If this is obj-c++ and we need a static
	init, call generate_ctor_or_dtor_function.

2005-08-31  Volker Reichelt  <>

	PR c++/13377
	* parser.c (cp_parser_lookup_name): Pass LOOKUP_COMPLAIN to
	lookup_name_real on final parse.

2005-08-31  Volker Reichelt  <>

	PR c++/23639
	* semantics.c (qualified_name_lookup_error): Do not complain again
	on invalid scope.

2005-08-30  Volker Reichelt  <>

	PR c++/23586
	* parser.c (cp_parser_namespace_name): Move diagnostic for
	invalid namespace-name to here from ...
	* name-lookup.c (do_namespace_alias): ... here and ...
	(do_using_directive): ... here.  Remove dead code.

2005-08-28  Mark Mitchell  <>

	PR c++/23099
	* cp-tree.h (saved_scope): Add skip_evaluation.
	* decl.c (start_decl): Use DECL_INITIALIZED_IN_CLASS_P, not
	DECL_INITIAL, to determine whether or not a static data member was
	initialized in the class-specifier.
	(cp_finish_decl): Add comment.
	* init.c (integral_constant_value): Subtitute into the
	initializers for static data members in	templates.
	* name-lookup.c (push_to_top_level): Save skip_evaluation.
	(pop_from_top_level): Restore it.
	* pt.c (instantiate_class_template): Do not substitute into the
	intializers of static data members when instantiating a class.
	(regenerate_decl_from_template): Simplify.
	(instantiate_decl): Tidy.  Substitute into the initializer for a
	static data member even when the definition of the data member is
	not available.

2005-08-26  Mark Mitchell  <>

	PR c++/19004
	* pt.c (uses_template_parms): Handle IDENTIFIER_NODE.
	(type_dependent_expression_p): Allow BASELINKs whose associated
	functions are simply a FUNCTION_DECL.

	PR c++/23491
	* cp-tree.h (build_vec_init): Adjust prototype.
	* init.c (perform_member_init): Adjust call to build_vec_init.
	(build_aggr_init): Likewise.
	(build_new_1): Do not call build_default_init for array types.
	(build_vec_init): Add explicit_default_init_p parameter.  Perform
	default initialization of vector elements when set.
	* typeck.c (build_modify_expr): Adjust call to build_vec_init.

2005-08-25  Nathan Sidwell  <>

	PR c++/20817
	* typeck.c (build_x_unary_op): Make sure OFFSET_REF is not for a

2005-08-24  Nathan Sidwell  <>

	PR c++/22454
	* parser.c (cp_lexer_peek_nth_token): Relax assert.

2005-08-23  Nathan Sidwell  <>

	PR c++/23044
	* pt.c (tsubst_qualified_id): A SCOPE_REF can still remain.

2005-08-22  James E Wilson  <>

	PR tree-optimization/23426
	* decl.c (grokdeclarator): Use TYPE_SIZE_UNIT not TYPE_SIZE for
	array size check.

2005-08-22  Volker Reichelt  <>

	PR c++/22233
	* pt.c (push_template_decl_real): Return error_mark_node if the
	number of template parameters does not match previous definition.

2005-08-22  Volker Reichelt  <>

	PR c++/23089
	* decl.c (require_complete_types_for_parms): Mark incomplete types
	as invalid.

2005-08-19  Volker Reichelt  <>

	* parser.c (cp_parser_nth_token_starts_template_argument_list_p):
	Fix typo in leading comment.

2005-08-15  Kaveh R. Ghazi  <>

	* name-lookup.c, ptree.c: Delete HOST_PTR_PRINTF.

2005-08-15 Fariborz Jahanian <>

	* cp-tree.h (can_convert_arg, fn_type_unification): New argument.
	* call.c (add_template_candidate_real): Pass down 'flags' to
	(can_convert_arg): New 'flags' argument. Pass it to call to
	implicit_conversion instead of LOOKUP_NORMAL.
	(can_convert): Add LOOKUP_NORMAL to call to can_convert_arg.
	* class.c (resolve_address_of_overloaded_function): Ditto.
	(resolve_address_of_overloaded_function): Ditto.
	* decl.c (reshape_init, check_default_argument): Ditto.
	* typeck.c (build_ptrmemfunc): Ditto.
	* pt.c (type_unification_real): Add 'flags' argument.
	(fn_type_unification): Pass 'flags' to type_unification_real.
	(type_unification_real): Pass new 'flags' argument to call to

2005-08-12  Giovanni Bajo  <>
	    Nathan Sidwell  <>

	PR c++/21799
	PR c++/8271
	* pt.c (unify) <METHOD_TYPE>: Check this-pointer cv-qualifiers

2005-08-12  Nathan Sidwell  <>

	PR c++/21799
	Revert my 2005-07-08 patch
	* pt.c (type_unification_real): Remove is_method_argument and
	assoicated checks.
	(fn_type_unification, unify): Adjust type_unification_real calls.

2005-08-11  Volker Reichelt  <>

	PR c++/23266
	* decl2.c (grokfield): Check that method is not static before
	marking it as pure.

2005-08-11  Nathan Sidwell  <>

	PR c++/23219
	* name-lookup.c (pushtag): Process the template type before
	altering the identifier lookup fields.  Remove unreachable code
	creating an empty stub decl.

2005-08-10  Volker Reichelt  <>

	PR c++/20646
	* decl.c (grokdeclarator): Reset storage_class after error.

2005-08-08  Volker Reichelt  <>

	PR c++/22508
	* init.c (build_new_1): Check for empty candidate list.

2005-08-06  Volker Reichelt  <>

	PR c++/23191
	* pt.c (tsubst) <case METHOD_TYPE>: Check for error_mark_node
	before calling build_exception_variant.

2005-08-06  Volker Reichelt  <>

	PR c++/19498
	* pt.c (tsubst_decl) <case TEMPLATE_DECL>: Return ERROR_MARK_NODE
	if substitution of template args did not succeed.

2005-08-06  Michael Matz  <>

	* method.c (use_thunk): Call init_insn_lengths.

2005-08-05  James A. Morrison  <>

	PR c++/22514
	* name-lookup.c (cp_emit_debug_info_for_using): Do nothing if
	sorrycount or errorcount are nonzero.

2005-08-05  Mark Mitchell  <>

	* name-lookup.c (pushtag): Remove accidental commit from:
	2004-12-21  Mark Mitchell  <>
	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.

2005-08-01  Kazu Hirata  <>

	* class.c, decl.c, name-lookup.c, pt.c, typeck.c, typeck2.c:
	Fix comment typos.

2005-07-29  Kazu Hirata  <>

	* method.c: Fix a comment typo.

2005-07-28  Mark Mitchell  <>

	PR c++/22545
	* call.c (add_builtin_candidate): Adjust for changes in
	representation of pointer-to-member types.

2005-07-28  Mike Stump  <>

	* pt.c (check_explicit_specialization): Add visibility logic.
	(lookup_template_class): Likewise.
	(instantiate_class_template): Likewise.

2005-07-27  Devang Patel  <>

	* name-lookup.c (pushtag): Do no set DECL_IGNORED_P bit.

2005-07-25  Ian Lance Taylor  <>

	* ptree.c (cxx_print_identifier): Print a leading space if the
	indent level is 0.

2005-07-24  Kaveh R. Ghazi  <>

	* call.c (convert_for_arg_passing): Check function pointers when
	-Wmissing-format-attribute is activated.
	* typeck.c (convert_for_assignment): Likewise.

2005-07-22  Manfred Hollstein  <>

	* parser.c (cp_parser_declaration): Fix unitialised warnings.

2005-07-21  Andrew Pinski  <>

	* class.c (build_base_path): Fix typo.

2005-07-21  Andrew Pinski  <>

	PR C++/22358
	* class.c (build_base_path): Convert BINFO_OFFSET to the correct type.

2005-07-21  Volker Reichelt  <>

	* call.c: Fix comment typo(s).
	* cxx-pretty-print.h: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.

2005-07-20  Douglas Gregor <>

	PR c++/2922
	* semantics.c (perform_koenig_lookup): For dependent calls, just
	return the set of functions we've found so far. Later, it will be
	augmented by those found through argument-dependent lookup.
	* name-lookup.c (lookup_arg_dependent): Implement DR 164 by removing
	the optimization that skips namespaces where the functions were
	originally found.

2005-07-20  Giovanni Bajo  <>

	Make CONSTRUCTOR use VEC to store initializers.
	* call.c (convert_default_arg): Update call to digest_init.
	* class.c (dump_class_hierarchy, dump_array): Update to cope with
	* cp-tree.h (EMPTY_CONSTRUCTOR_P): Likewise.
	(finish_compound_literal, digest_init): Update declaration.
	* decl.c (struct reshape_iter): New data type.
	(reshape_init_array): Rename to...
	(reshape_init_array_1): Update to cope with VEC in CONSTRUCTOR_ELTS.
	(reshape_init): Rewrite from scratch. Split parts into...
	(reshape_init_array, reshape_init_vector, reshape_init_class,
	reshape_init_r): New functions.
	(check_initializer): Update call to reshape_init. Remove obsolete
	(initialize_artificial_var, cp_complete_array_type): Update to cope
	* decl2.c (grokfield): Update calls to digest_init.
	(mark_vtable_entries): Update to cope with VEC in CONSTRUCTOR_ELTS.
	* error.c (dump_expr_init_vec): New function.
	(dump_expr): Use dump_expr_init_vec.
	* init.c (build_zero_init, build_vec_init): Update to cope with VEC
	(expand_default_init): Update call to digest_init.
	* parser.c  (cp_parser_postfix_expression): Use a VEC for the
	(cp_parser_initializer_list): Build a VEC of initializers.
	* pt.c (tsubst_copy, tsubst_copy_and_build): Update to cope with VEC
	* rtti.c (tinfo_base_init, generic_initializer, ptr_initializer,
	ptm_initializer, class_initializer, get_pseudo_ti_init): Use
	build_constructor_from_list instead of build_constructor.
	* semantics.c (finish_compound_literal): Update call to digest_init.
	* tree.c (stabilize_init): Update to cope with VEC in
	* typeck.c (build_ptrmemfunc1): Likewise.
	* typeck2.c: (cxx_incomplete_type_error, split_nonconstant_init_1):
	(store_init_value): Use build_constructor_from_list and update call
	to digest_init.
	(digest_init): Rewrite.
	(process_init_constructor): Rewrite from scratch. Split into...
	(process_init_constructor_array, picflag_from_initializer,
	process_init_constructor_record, process_init_constructor_union):
	New functions.
	New macros.
	(build_functional_cast): Use build_constructor_from_list instead of

2005-07-18  Mark Mitchell  <>

	PR c++/22263
	* cp-tree.h (instantiate_decl): Change prototype.
	* decl2.c (mark_used): Adjust accordingly.
	* pt.c (do_decl_instantiation): Likewise.
	(instantiate_class_member): Likewise.
	(instantiate_decl): Rename undefined_ok as expl_inst_class_mem_p.
	Clear DECL_INTERFACE_KNOWN for an explicitly instantiated template
	that has no definition available.
	(instantiate_pending_templates): Adjust call to instantiate_decl.

2005-07-17  Mark Mitchell  <>

	PR c++/22139
	* cp-tree.h (DECL_TEMPLATE_INFO): Improve documentation.
	* decl.c (duplicate_decls): Re-register template specializations
	for functions that have DECL_TEMLPLATE_INFO, even if they do not

2005-07-16  Kaveh R. Ghazi  <>

	* call.c (diagnostic_fn_t): New.
	(build_temp, convert_like_real): Use diagnostic_fn_t.

2005-07-15  Mark Mitchell  <>

	PR c++/22204
	* repo.c (repo_emit_p): Robustify.

2005-07-14  Daniel Berlin  <>

	Fix PR c++/22452
	* tree.c (decl_linkage): Don't check DECL_COMDAT on CONST_DECL.

2005-07-15  Mark Mitchell  <>

	PR c++/22132
	* call.c (implicit_conversion): Add c_cast_p parameter.
	(standard_conversion): Likewise.  Allow conversions between
	differently-qualified pointer types when performing a C-style
	(add_function_candidate): Adjust callee.
	(build_builtin_candidate): Likewise.
	(build_user_type_conversion_1): Likewise.
	(conditional_conversion): Likewise.
	(can_convert_arg): Likewise.
	(can_convert_arg_bad): Likewise.
	(perform_implicit_conversion): Likewise.
	* cp-tree.h (comp_ptr_ttypes_const): Declare.
	* typeck.c (comp_ptr_ttypes_const): Give it external linkage.
	Return bool.

2005-07-12  Volker Reichelt  <>
	    Nathan Sidwell  <>

	PR c++/20172
	* pt.c (tsubst_template_parms): Check for invalid non-type

2005-07-09  Andrew Pinski  <>

	* cp-lang.c (shadowed_var_for_decl, decl_shadowed_for_var_lookup,
	decl_shadowed_for_var_insert): Move over to cp-objcp-common.c.
	(cp_init_ts): Call init_shadowed_var_for_decl.
	Remove include of gt-cp-cp-lang.h.
	* cp-objcp-common.c (shadowed_var_for_decl,
	decl_shadowed_for_var_lookup, decl_shadowed_for_var_insert): Moved from
	(init_shadowed_var_for_decl): New function to initialize
	Include gt-cp-cp-objcp-common.h.
	* (gt-cp-lang.h): Remove.
	(gt-cp-cp-objcp-common.h): Add.
	(cp/cp-lang.o): Remove dependancy on gt-cp-lang.h.
	(cp/cp-objcp-common.o): Add dependancy on gt-cp-cp-objcp-common.h.
	* (gtfiles): Remove cp-lang.c and Add cp-objcp-common.c.
	* cp-tree (init_shadowed_var_for_decl): Add prototype.

2005-07-08  Daniel Berlin  <>

	* Add gt-cp-lang.h.
	(cp-lang.o): Ditto.
	* class.c (create_vtable_ptr): Stop setting DECL_ASSEMBLER_NAME on
	the field.
	* Add cp-lang.c to gtfiles.
	* cp-lang.c: Include hashtab.h.
	(cp_init_ts): New function.
	(LANG_HOOK_INIT_TS): Use macro.
	(decl_shadowed_for_var_lookup): New function.
	(decl_shadowed_for_var_insert): Ditto.
	* cp-tree.h (THUNK_FUNCTION_CHECK): Use decl_common.
	(DECL_NAMESPACE_ASSOCIATIONS): Use decl_non_common.
	(DECL_SHADOWED_FOR_VAR): Use hashtable.
	* decl.c (duplicate_decls): Update for new/updated structures.
	* decl2.c (start_static_initialization_or_destruction): Deal with
	* pt.c (tsubst_decl): Check TS_DECL_WRTL before doing
	* tree.c (handle_init_priority_attribute): Handle priority.

2005-07-08  Nathan Sidwell  <>

	PR c++/21799
	* pt.c (type_unification_real): Add is_method argument.  Use it
	for this pointer unification.
	(fn_type_unification): Adjust type_unification_real call.
	(unify): Likewise.

2005-07-07  Nathan Sidwell  <>

	* pt.c (type_unification_real): Remove allow_incomplete argument.
	Remove unreachable code.
	(fn_type_unification): Adjust call to type_unification_real.
	(unify): Likewise.

2005-07-05  Paolo Bonzini  <>

	* (class.o, decl2.o): Adjust dependencies.
	* class.c: Include tree-dump.h.
	* decl2.c: Include tree-dump.h.

2005-07-02  Gabriel Dos Reis  <>

	* dump.c: Use dump_string_field.

2005-07-03  Joseph S. Myers  <>

	* cp-tree.h (GCC_DIAG_STYLE): #undef before defining.  Change
	minimum GCC version for format checking to 4.1.

2005-07-02  Kazu Hirata  <>

	* (cc1plus-checksum.c): Use
	build/genchecksum$(build_exeext), not build/genchecksum$(exeext).

2005-07-02  Joseph S. Myers  <>

	* name-lookup.c, parser.c: Use %q, %< and %> to quote in

2005-07-02  Zack Weinberg  <>
	    Joseph S. Myers  <>

	* error.c (location_of): Add comment.
	(locate_error, cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
	* cp-tree.h (cp_error_at, cp_warning_at, cp_pedwarn_at): Remove.
	* call.c, class.c, decl.c, decl2.c, friend.c, init.c,
	name-lookup.c, parser.c, pt.c, search.c, semantics.c, typeck.c,
	typeck2.c: Use '+' flag instead of %J, cp_error_at, cp_warning_at
	or cp_pedwarn_at.  Mark up some diagnostic strings with N_.

2005-06-30  Daniel Berlin  <>

	* decl.c (require_complete_types_for_parms): Call relayout_decl
	instead of layout_decl.

2005-06-30  Zack Weinberg  <>
	    Jakub Jelinek  <>

	* cp-lang.c: No need to include cxx-pretty-print.h.
	* error.c (cp_printer): Update signature.  No need to process
	(print_instantiation_partial_context): Output last newline
	with pp_base_newline.
	* Update dependencies.

2005-06-30  Steven Bosscher  <>

	* decl.c (start_decl): Replace DECL_THREAD_LOCAL with
	(cp_finish_decl): Likewise.
	(grokvardecl): Set the default DECL_TLS_MODEL here.

2005-06-28  Joseph S. Myers  <>

	* cvt.c (ocp_convert): Use invalid_conversion hook.
	* typeck.c (build_binary_op): Use invalid_binary_op hook.
	(build_unary_op): Use invalid_unary_op hook.

2005-06-28  Paul Brook  <>

	* (cp/except.o): Depend on $(TARGET_H)
	* except.c: Include target.h.
	(init_exception_processing): Initialize unwind_resume_libfunc.
	* doc/tm.texi: Document TARGET_ASM_TTYPE

2005-06-26  Kaveh R. Ghazi  <>

	* call.c (build_over_call): Pass in named argument list to
	* typeck.c (build_function_call): Likewise.

2005-06-26  Kaveh R. Ghazi  <>

	* cp-tree.h (lang_check_failed): Add noreturn attribute.

2005-06-25  Kelley Cook  <>

	* all files: Update FSF address in copyright headers.

2005-06-23  Jason Merrill  <>

	PR c++/19317
	* semantics.c (simplify_aggr_init_expr): Use

2005-06-23  Volker Reichelt  <>

	* pt.c (register_specialization): Remove superfluous assertion.

2005-06-18  Kaveh R. Ghazi  <>

	* call.c (convert_like_real): Add format attribute.
	* typeck.c (check_for_casting_away_constness,
	build_static_cast_1): Likewise.
	* typeck2.c (readonly_error, cxx_incomplete_type_diagnostic):

2005-06-17  Geoffrey Keating  <>

	PR c++/17413
	* pt.c (type_unification_real): Apply template type deduction even
	to procedure parameters that are not dependent on a template

2005-06-16  Nathan Sidwell  <>

	* rtti.c (get_tinfo_decl): Avoid caching tinfo_descs when it might
	(create_pseudo_type_info): First parameter is an int.

2005-06-15  Nathan Sidwell  <>

	PR c++/20678
	* error.c (dump_expr) <COMPONENT_REF case>: Check DECL_NAME is not

	* Reformat some long lines.
	(gt-cp-rtti.h): New target.
	(cp/rtti.o): Add dependency.
	* (gtfiles): Add cp/rtti.c.
	(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
	ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
	class_desc_type_node, si_class_desc_type_node,
	vmi_class_desc_type_node, ptm_desc_type_node,
	base_desc_type_node): Remove.
	* decl.c: Adjust documentation of global trees.
	(struct tinfo_s): New.
	(enum tinfo_kind): New.
	(tinfo_descs): New.
	(get_tinfo_decl): Adjust use of tinfo descriptor.
	(tinfo_base_init, generic_initializer, ptr_initializer,
	ptm_initializer, class_initializer): Likewise.
	(get_pseudo_ti_init): Take descriptor index. Adjust.
	(create_pseudo_type_info): Likewise.
	(get_pseudo_ti_desc): Return descriptor index. Adjust.
	(create_tinfo_types): Adjust use of create_pseudo_type_info.
	(emit_tinfo_decl): Adjust use of tinfo descriptor.

2005-06-14  Roger Sayle  <>

	* decl.c (grokdeclarator): Only check TREE_OVERFLOW on INTEGER_CST.

2005-06-13  Geoffrey Keating  <>

	* (c++.install-man): Doesn't really depend on installdirs.
	(rule for installing g++.1 manpage): Does depend on installdirs.

2005-06-13  Nathan Sidwell  <>

	PR c++/20789
	* decl.c (cp_finish_decl): Clear runtime runtime initialization if
	in-class decl's initializer is bad.

	PR c++/21929
	* parser.c (struct cp_parser): Document that scope could be
	(cp_parser_diagnose_invalid_type_name): Cope with error_mark for
	(cp_parser_nested_name_specifier): Return NULL_TREE on error.
	(cp_parser_postfix_expression): Deal with null or error_mark
	(cp_parser_elaborated_type_specifier): Adjust
	cp_parser_nested_name_specifier call.

	* parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.

2005-06-12  Roger Sayle  <>

	PR c++/21930
	* error.c (dump_expr): UNARY_PLUS_EXPR need not handle void types.
	Treat CONVERT_EXPR identically to NOP_EXPR.

2005-06-10  Aldy Hernandez  <>

	PR c++/10611
	* cvt.c (build_expr_type_conversion): Same.
	* typeck.c (build_binary_op): Handle vectors.
	(common_type): Same.
	(type_after_usual_arithmetic_conversions): Same.

2005-06-08  Nathan Sidwell  <>

	PR c++/19497
	* cp-tree.def (USING_DECL): Update documentation.
	* cp-tree.h (DECL_DEPENDENT_P): New.
	* class.c (handle_using_decl): Move most of the processing to ...
	* name-lookup.c (do_class_using_decl): ... here.  Make stricter.
	(push_using_decl): Use USING_DECL_SCOPE.
	(cp_emit_debug_info_for_using): Make extern.
	* cxx-pretty-print.c (pp_cxx_statement) <USING_DECL case>: Adjust.
	* name-lookup.h (cp_emit_debug_info_for_using): Declare.
	* pt.c (tsubst_decl) <USING_DECL case>: Use do_class_using_decl
	when tsubsting.
	(tsubst_expr): Use USING_DECL_SCOPE.
	* search.c (lookup_field_1): Use DECL_DEPENDENT_P.
	* semantics.c (finish_member_declaration): Likewise.

2005-06-08  Volker Reichelt  <>

	PR c++/19894
	* pt.c (tsubst): Reject pointer-to-member of type void.

	PR c++/20563
	* parser.c (cp_parser_label_declaration): Deal with invalid/missing

2005-06-07  Nathan Sidwell  <>

	* cp-tree.def (DEFAULT_ARG): Adjust documentation.
	* cp-tree.h (DEFARG_INSTANTIATIONS): New.
	(struct tree_default_arg): Add instantiations member.
	* parser.c (cp_parser_late_parsing_default_args): Adjust to use a
	* pt.c (tsubst_arg_types): Likewise.

	* parser.c (cp_parser_late_parsing_default_args): Fix overeager
	assert in previous patch.

2005-06-06  Jakub Jelinek  <>

	* error.c (locate_error): Use gmsgid instead of msgid for argument
	(cp_error_at, cp_warning_at, cp_pedwarn_at): Likewise.

2005-06-06  Nathan Sidwell  <>

	PR 21903
	* cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
	* parser.c (cp_parser_late_parsing_default_args): Propagate parsed
	argument to any early instantiations.
	* pt.c (tsubst_arg_types): Chain early instantiation of default arg.

	PR c++/20637
	* cp-tree.h (add_method): Add using_decl parameter.
	* class.c (add_method): Add using_decl parameter.  Adjust error
	(handle_using_decl): Pass the using decl to add_method.
	(clone_function_decl): Adjust add_member calls.
	* decl2.c (check_classfn): Likewise.
	* method.c (lazily_declare_fn): Likewise.
	* semantics.c (finish_member_declaration): Likewise.

	* method.c (synthesize_method): Use inform, not warning.

2005-06-06  Hans-Peter Nilsson  <>

	* (target_libs): Remove target-gperf.

2005-06-05  Mark Mitchell  <>

	PR c++/21619
	* cp-tree.h (DECL_IS_BUILTIN_CONSTANT_P): New macro.
	* parser.c (cp_parser_postfix_expression): Allow non-constant
	expressions as arguments to __builtin_constant_p.
	* tree.c (builtin_valid_in_constant_expr_p): Use

2005-06-03  Mark Mitchell  <>

	PR c++/21853
	* typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
	the pointed-to type for a pointer-to-member.

	PR c++/21336
	* cp-tree.h (grok_op_properties): Remove friendp parameter.
	* decl.c (grokfndecl): Adjust call.
	(grok_op_properties): Determine the class of which the function is
	a member by looking at its DECL_CONTEXT, not current_class_type.
	* pt.c (tsubst_decl): Adjust call to grok_op_properties.

2005-06-02  Nathan Sidwell  <>

	* method.c (synthesize_method): Add addtional arg to warning call.

	PR c++/21280
	* (method.o): Add diagnostic.h
	* decl.c (start_preparsed_function): Use decl's location for file
	* decl2.c (cp_finish_file): Set input_location before synthesizing
	a function.
	(mark_used): When deferring a synthesized function, save current
	location.  Do not set function's location when actually
	synthesizing it.
	* method.c: #include diagnostic.h.
	(synthesize_method): Set the functions source location.  Show
	needed location if errors are emitted.

	* decl.c (start_decl): Simplify specialization handling. Remove
	* mangle.c (discriminator_for_local_entity): Use VEC_index.

	PR c++/20350
	* decl.c (duplicate_decls): Copy all of DECL_USE_TEMPLATE.

	PR c++/21151
	* name-lookup.c (pushtag): Push local class even in a template.

2005-05-31  Nathan Sidwell  <>

	PR c++/21165
	* init.c (integral_constant_value): Check the type of the
	initializer, not the decl.

2005-05-30  Mark Mitchell  <>

	PR c++/21784
	* name-lookup.c (do_nonmember_using_decl): Ignore builtin
	functions, even	when the used name is not a function.

2005-05-30  Kazu Hirata  <>

	* operators.def, optimize.c: Update copyright.

2005-05-28  Mark Mitchell  <>

	PR c++/21210
	* call.c (standard_conversion): Permit conversions to complex
	types if conversion to the corresponding scalar type would be

	PR c++/21340
	* method.c (implicitly_declare_fn): Clear processing_template_decl
	when generating implicit declaration.

2005-05-27  Mark Mitchell  <>

	PR c++/21614
	* typeck.c (get_member_function_from_ptrfunc): Do not attempt
	conversions to base classes of incomplete types.

2005-05-27  Ian Lance Taylor  <>

	* semantics.c (add_stmt): Add C++ frontend specific version.
	* cp-tree.h (STMT_IS_FULL_EXPR_P): Define.
	(stmts_are_full_exprs_p): Declare.

2005-05-27  Roger Sayle  <>
	    Giovanni Bajo  <>

	* cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
	* parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
	(cp_parser_unary_expression): Likewise.
	* typeck.c (build_unary_op): Likewise.
	* call.c (add_builtin_candidate, build_new_op): Likewise.
	* error.c (dump_expr): Likewise.
	* pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
	* decl.c (ambi_op_p, grok_op_properties): Likewise.
	* dump.c (dump_op): Likewise.
	* lex.c (init_operators): Likewise.
	* operators.def ("+"): Likewise.
	* cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
	conversion, if the result and argument types differ.
	* tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
	like a NOP_EXPR when !processing_template_decl.

	* cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
	(pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.

2005-05-27  Nathan Sidwell  <>

	PR c++/21455
	* typeck.c (get_delta_difference): Cope with incomplete but equal
	classes.  Reorder if.

	PR c++/21681
	* parser.c (cp_parser_late_parsing_for_member): Disable access
	checking for template functions.

2005-05-26  Volker Reichelt  <>

	PR c++/21768
	* pt.c (redeclare_class_template): Change error message according
	to coding conventions.

2005-05-26  Volker Reichelt  <>

	* call.c (build_op_delete_call): Fix quoting in error message.

2005-05-25  Richard Henderson  <>

	PR libgcj/21692
	* cp-tree.h (make_alias_for): Declare.
	* decl2.c (build_java_method_aliases): New.
	(cp_finish_file): Call it.
	* method.c (make_alias_for): Split out from ...
	(make_alias_for_thunk): ... here.

2005-05-25  Volker Reichelt  <>

	PR c++/21686
	* semantics.c (finish_id_expression): Fix quoting in error message.

2005-05-25  DJ Delorie  <>

	* decl.c (duplicate_decls): Move warning control from if() to
	* name-lookup.c (parse_using_directive): Likewise.
	* parser.c (cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_init_declarator): Likewise.
	* tree.c (handle_com_interface_attribute): Likewise.

2005-05-24  Ziemowit Laski  <>

	* class.c (layout_class_type): Do not issue C++ ABI warnings
	for ObjC structs.
	* decl.c (objc_mark_locals_volatile): Streamline by calling
	* parser.c (cp_parser_objc_message_expression): Allow simple
	type specifiers (instead of merely type names) as message
	* pt.c (template_args_equal): Do not call objc_comptypes().
	* typeck.c (composite_pointer_type): If both pointers are
	ObjC-esque, arbitrarily choose the first; do not call
	(comptypes): Do not call objc_comptypes().
	(convert_for_assignment): Call objc_compare_types().
	(comp_ptr_ttypes_real): Call objc_type_quals_match() before
	concluding that types do not match.

2005-05-24  Andrew Pinski  <>

	PR C++/21645
	* optimize.c (update_cloned_parm): Copy the TYPE also from the
	original one.

2005-05-19  Jakub Jelinek  <>

	PR c++/21495
	* decl.c (grokdeclarator): Fix "storage class specified for"
	error reporting.

2005-05-19  Kazu Hirata  <>

	* parser.c: Fix comment typos.

2005-05-18  Geoffrey Keating  <>

	* (cc1plus-dummy): New.
	(cc1plus-checksum.c): New.
	(cc1plus-checksum.o): New.
	(cc1plus): Add cc1plus-checksum.o.

2005-05-17  H.J. Lu  <>

	PR C++/19664
	* decl2.c (determine_visibility): Don't set visibility to
	hidden if it has been set explicitly by user.

2005-05-17  Ziemowit Laski  <>
	    Mike Stump  <>

	Yet more Objective-C++...

	* cp-objcp-common.h (cxx_get_alias_set): Move from
	(cxx_warn_unused_global_decl): Likewise.
	(cp_expr_size): Likewise.
	(cp_tree_size): Likewise.
	(cp_var_mod_type_p): Likewise.
	(cxx_initialize_diagnostics): Likewise.
	(cxx_types_compatible_p): Likewise.
	* cp-tree.h: to here.
	(do_poplevel): Add.
	* lex.c (D_OBJC): Add.
	(init_reswords): Add.
	* (cp/pt.o): Add cp/cp-objcp-common.h.
	* parser.c: Add c-common.h include.
	* pt.c: Add c-common.h and cp-objcp-common.h includes.
	(template_args_equal): Use objc_comptypes as well.
	(tsubst_copy_and_build): Use objcp_tsubst_copy_and_build as well.
	* semantics.c (do_poplevel): Remove static.

	* decl.c (objc_mark_locals_volatile): Don't change decls that are
	already ok.
	* decl2.c (generate_ctor_or_dtor_function): Add code to initialize
	Objective C++ early enough.
	* lex.c (struct resword reswords): Add Objective-C++ support.
	* parser.c (cp_lexer_get_preprocessor_token): Add Objective-C++.
	(cp_parser_objc_message_receiver): Add.
	(cp_parser_objc_message_args): Likewise.
	(cp_parser_objc_message_expression): Likewise.
	(cp_parser_objc_encode_expression): Likewise.
	(cp_parser_objc_defs_expression): Likewise.
	(cp_parser_objc_protocol_expression): Likewise.
	(cp_parser_objc_selector_expression): Likewise.
	(cp_parser_objc_expression): Likewise.
	(cp_parser_objc_visibility_spec): Likewise.
	(cp_parser_objc_method_type): Likewise.
	(cp_parser_objc_protocol_qualifiers): Likewise.
	(cp_parser_objc_typename): Likewise.
	(cp_parser_objc_selector_p): Likewise.
	(cp_parser_objc_selector): Likewise.
	(cp_parser_objc_method_keyword_params): Likewise.
	(cp_parser_objc_method_tail_params_opt): Likewise.
	(cp_parser_objc_interstitial_code): Likewise.
	(cp_parser_objc_method_signature): Likewise.
	(cp_parser_objc_method_prototype_list): Likewise.
	(cp_parser_objc_method_definition_list): Likewise.
	(cp_parser_objc_class_ivars): Likewise.
	(cp_parser_objc_identifier_list): Likewise.
	(cp_parser_objc_alias_declaration): Likewise.
	(cp_parser_objc_class_declaration): Likewise.
	(cp_parser_objc_protocol_declaration): Likewise.
	(cp_parser_objc_protocol_refs_opt): Likewise.
	(cp_parser_objc_superclass_or_category): Likewise.
	(cp_parser_objc_class_interface): Likewise.
	(cp_parser_objc_class_implementation): Likewise.
	(cp_parser_objc_end_implementation): Likewise.
	(cp_parser_objc_declaration): Likewise.
	(cp_parser_objc_try_catch_finally_statement): Likewise.
	(cp_parser_objc_synchronized_statement): Likewise.
	(cp_parser_objc_throw_statement): Likewise.
	(cp_parser_objc_statement): Likewise.
	(cp_parser_primary_expression): Add Objective-C++.
	(cp_parser_statement): Likewise.
	(cp_parser_declaration): Likewise.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_type_name): Likewise.
	(cp_parser_parameter_declaration_list): Likewise.
	(cp_parser_member_declaration) Likewise.
	* tree.c: Include debug.h.
	* typeck.c (composite_pointer_type): Add Objective-C++ support.
	(finish_class_member_access_expr): Likewise.
	(build_function_call): Allow objc to rewrite FUNCTION_DECLs.
	(build_modify_expr): Allow objc to generate write barriers.

	* (cp/tree.o): Add debug.h.
	* tree.c (lvalue_p_1, case CONST_DECL): Add.

2005-05-18  Jan Hubicka  <>

	* method.c: Include tree-pass.h
	(use_thunk): Lower body before expanding.

2005-05-17  Jakub Jelinek  <>

	PR c++/21454
	* decl.c (maybe_deduce_size_from_array_init): Call
	cp_apply_type_quals_to_decl after completing array type.

2005-05-16  Richard Henderson  <>

	* decl.c (build_library_fn_1): Move setting TREE_NOTHROW ...
	(build_library_fn): ... here.

2005-05-12  Ian Lance Taylor  <>

	* cp-tree.h (cp_stmt_codes): Don't define.
	(statement_code_p): Declare.
	* lex.c (statement_code_p): Define.
	(cxx_init): Use actual codes in stmt_codes initializer, not
	cp_stmt_codes macro.  Initialize statement_code_p directly, rather

2005-05-09  Mark Mitchell  <>

	* typeck.c (build_unary_op): Do not resort to address arithmetic
	when taking the address of a COMPONENT_REF.

2005-05-08  Kazu Hirata  <>

	* class.c (vtbl_init_data_s): Change the type of fns to
	(build_vtbl_initializer, add_vcall_offset, add_vcall_offset):
	Use VEC instead of VARRAY.

2005-05-07  Richard Sandiford  <>

	* mangle.c: Remove a reference to the MIPS -mint64 option.

2005-05-07  Kazu Hirata  <>

	* decl.c (wrapup_globals_for_namespace): Use VEC instead of
	* name-lookup.c (add_decl_to_level, begin_scope): Likewise.
	* name-lookup.h (cp_binding_level): Change the type of
	static_decls to VEC(tree,gc)*.

	* mangle.c (globals): Change the type of substitutions to
	(dump_substitution_candidates, add_substitution,
	find_substitution, finish_mangling, init_mangle): Use VEC
	instead of VARRAY.

2005-05-06  Kazu Hirata  <>

	* decl2.c (spew_debug): Remove.

	* decl2.c (ssdf_decls, start_static_storage_duration_function,
	generate_ctor_or_dtor_function): Use VEC instead of VARRAY.

	* decl2.c (pending_statics, note_vague_linkage_var,
	cp_finish_file): Use VEC instead of VARRAY.
	(pending_statics_used): Remove.

2005-05-05  Kazu Hirata  <>

	* decl2.c (deferred_fns, note_vague_linkage_fn,
	cp_finish_file): Use VEC instead of VARRAY.

2005-05-05  Mark Mitchell  <>

	PR c++/21352
	* pt.c (build_non_dependent_expr): Use is_overloaded_fn.

2005-05-05  Kazu Hirata  <>

	* pt.c: Fix a comment typo.

2005-05-04  Kazu Hirata  <>

	* cp-tree.h (language_function): Change the type of
	x_local_names to VEC.
	* decl.c (push_local_name): Adjust uses of local_names.

2005-05-03  Kazu Hirata  <>

	* friend.c, lex.c, mangle.c, repo.c: Update copyright.

2005-05-02  Kazu Hirata  <>

	* class.c (local_classes, init_class_processing): Use VEC
	instead of VARRAY.
	* cp-tree.h (local_classes): Likewise.
	* mangle.c (discriminator_for_local_entity): Likewise.
	* name-lookup.c (pushtag): Likewise.

	* class.c (current_lang_depth, push_lang_context,
	pop_lang_context): Use VEC instead of VARRAY.
	* cp-tree.h (saved_scope): Use VEC for lang_base instead of
	* name-lookup.c (push_to_top_level): Use VEC instead of

2005-05-02  Paolo Bonzini  <>

	* semantics.c (finish_call_expr): Call resolve_overloaded_builtin
	for BUILT_IN_MD built-ins.

2005-05-02  Michael Matz  <>

	PR c++/19542
	* cp-tree.h (cp_tree_index): Remove CPTI_NULL, to be defined in C
	common frontend.
	(null_node): Remove.
	* lex.c (cxx_init): Move null_node initialisation to C common frontend.

2005-04-25  Ian Lance Taylor  <>

	* cp-tree.def: Add EXPR_STMT.
	* cp-tree.h (cp_stmt_codes): Add EXPR_STMT.
	(EXPR_STMT_EXPR): Define.
	* cp-gimplify.c: Include "flags.h".
	(gimplify_expr_stmt): New static function.
	(cp_gimplify_expr): Handle EXPR_STMT.
	* cxx-pretty-print.c (pp_cxx_statement): Use pp_cxx_expression
	rather than pp_expression.
	(pp_cxx_statement): Handle EXPR_STMT.
	* dump.c (cp_dump_tree): Handle EXPR_STMT.
	* lex.c (cxx_init): Don't use c_common_stmt_codes in stmt_codes

2005-04-25  Andrew Pinski  <>

	PR C++/21188
	* rtti.c (ifnonnull): Cast the zero comparison operand
	to the correct type.

2005-04-24  Jakub Jelinek  <>

	PR middle-end/20991
	* class.c: Include cgraph.h.
	(cp_fold_obj_type_ref): Set node->local.vtable_method.
	* (cgraph.o): Depend on $(CGRAPH_H).

2005-04-12  Markus F.X.J. Oberhumer  <>

	* mangle.c (write_builtin_type): Handle integer types which are
	not one of the shared integer type nodes and emit a "vendor
	extended builtin type" with an encoding in the form of "u5int96".

2005-04-24  Ian Lance Taylor  <>

	* cp-tree.def (USING_STMT): Change class to tcc_statement.

2005-04-23  DJ Delorie  <>

	* call.c, class.c, cvt.c, decl.c, decl2.c, except.c, friend.c,
	init.c, lex.c, mangle.c, method.c, name-lookup.c, parser.c,
	repo.c, rtti.c, tree.c, typeck.c, typeck2.c: Adjust warning()

2005-04-22  Per Bothner  <>

	* decl.c (make_rtl_for_nonlocal_decl): Don't try get_fileinfo if
	input_filename is NULL, as it is for (say) __PRETTY_FUNCTION__.

2005-04-22  Alexandre Oliva  <>

	PR c++/21087
	* name-lookup.c (push_overloaded_decl): Do not overload with
	non-duplicate anticipated built-in.

2005-04-21  Kazu Hirata  <>


2005-04-21  Nathan Sidwell  <>

	* cp-tree.h: Adjust for new VEC API.
	Define VEC(tree_pair_s,gc).
	(struct save_scope): Adjust.
	(struct lang_type_class): Adjust.
	(unemitted_tinfo_decls): Adjust.
	* class.c (add_method, resort_type_method_vec,
	finish_struct_methods, struct find_final_overrider_data,
	dfs_find_final_overrider_pre, find_final_overrider,
	get_vcall_index, warn_hidden, walk_subobject_offsets,
	check_methods, fixup_inline_methods, end_of_class,
	warn_about_ambiguous_bases, finish_struct, build_vtbl_initializer,
	add_vcall_offset): Adjust.
	* decl.c (xref_basetypes, finish_method): Adjust.
	* decl2.c (check_classfn): Adjust.
	* init.c (sort_mem_initializers, push_base_cleanups): Adjust.
	* method.c (do_build_copy_constructor): Adjust.
	* name-lookup.c (new_class_binding, store_binding,
	store_bindings, store_class_bindings): Adjust.
	* name-lookup.h: Define VEC(cxx_saved_binding,gc),
	(struct cp_binding_level): Adjust.
	* parser.c: Define VEC(cp_token_position,heap).
	(struct cp_lexer): Adjust.
	(cp_lexer_new_main, cp_lexer_new_from_tokens, cp_lexer_destroy,
	cp_lexer_save_tokens): Adjust.
	* pt.c (retrieve_specialization,
	check_explicit_specialization): Adjust.
	* rtti.c (unemitted_tinfo_decls): Adjust.
	(init_rtti_processing, get_tinfo_decl, get_pseudo_ti_init,
	get_pseudo_ti_desc): Adjust.
	* search.c (dfs_access_in_type, lookup_conversion_operator,
	lookup_fnfields_1, dfs_walk_once, dfs_walk_once_accessible,
	dfs_get_pure_virtuals, lookup_conversions_r, binfo_for_vbase): Adjust.
	* semantics.c: Define VEC(deferred_access,gc).
	(push_deferring_access_checks): Adjust.
	* typeck2.c (abstract_virtuals_error): Adjust.

2005-04-20  Ian Lance Taylor  <>

	* cp-tree.def: Add STMT_EXPR.
	* cp-tree.h (STMT_EXPR_NO_SCOPE): Define.
	(STMT_EXPR_STMT): Define.
	* cxx-pretty-print.c (pp_cxx_primary_expression): Handle
	(pp_cxx_expression): Likewise.
	(pp_cxx_statement): Call pp_cxx_statement, not pp_statement.
	* dump.c (cp_dump_tree): Handle STMT_EXPR.

2005-04-18  Kazu Hirata  <>

	* decl.c (expand_static_init): Call build2 and build3 instead
	of build.

	* cp-tree.h (VPTR_NAME, VPTR_NAME_P): Remove.

2005-04-17  Ian Lance Taylor  <>

	* cxx-pretty-print.c (pp_cxx_postfix_expression): Handle
	(pp_cxx_unary_expression): Handle SIZEOF_EXPR and ALIGNOF_EXPR.
	(pp_cxx_expression): Handle ARROW_EXPR, SIZEOF_EXPR, and
	* typeck.c (cxx_sizeof_or_alignof_type): Update call to
	c_sizeof_or_alignof_type for change in parameter type.

2005-04-16  Mark Mitchell  <>

	PR c++/21025
	* typeck.c (cxx_sizeof_or_alignof_type): Check whether the type to
	which sizeof/alignof is dependent, rather than just whether we are

2005-04-17  Kazu Hirata  <>

	* cp-tree.h (LOOKUP_GLOBAL): Remove.
	their values.

2005-04-15  Richard Henderson  <>

	PR middle-end/14311
	* semantics.c (finish_call_expr): Call resolve_overloaded_builtin.

2005-04-15  Kazu Hirata  <>

	* cp-tree.h (lang_type_class): Remove redefined.  Move
	java_interface into where redefined was.  Increment the width
	of dummy.

2005-04-14  Kazu Hirata  <>


2005-04-11  Mark Mitchell  <>

	* decl2.c (determine_visibility): Don't use export_class_data.
	(import_export_decl): Honor TARGET_CXX_CLASS_DATA_ALWAYS_WEAK and

2005-04-09  Kazu Hirata  <>

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

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



	* cp-tree.h (VF_BINFO_VALUE, VF_BASETYPE_VALUE): Remove.

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

2005-04-08  Ian Lance Taylor  <>

	* cp-tree.def: Define FOR_STMT, WHILE_STMT, DO_STMT, BREAK_STMT,
	* cp-tree.h (cp_stmt_codes): Add FOR_STMT, WHILE_STMT, DO_STMT,
	(DO_COND, DO_BODY): Define.
	* cp-gimplify.c (enum bc_t): Define.
	(struct cp_gimplify_ctx, ctxp): Define.
	(push_context, pop_context): New static functions.
	(begin_bc_block, finish_bc_block): New static functions.
	(build_bc_goto): New static function.
	(gimplify_cp_loop, gimplify_for_stmt): New static functions.
	(gimplify_while_stmt, gimplify_do_stmt): Likewise.
	(gimplify_switch_stmt): Likewise.
	(cp_gimplify_expr): Handle FOR_STMT, WHILE_STMT, DO_STMT,
	(cp_genericize): Call push_context and pop_context.
	* semantics.c (finish_break_stmt): Just call build_stmt
	(BREAK_STMT) rather than build_break_stmt.
	(finish_continue_stmt): Corresponding change.
	* decl.c (pop_switch): Update call to c_do_switch_warnings for new
	* cxx-pretty-print.c (pp_cxx_statement): Handle SWITCH_STMT,
	* dump.c (cp_dump_tree): Likewise.

2005-04-08  Mark Mitchell  <>

	PR c++/20905
	* parser.c (cp_parser_type_specifier_seq): Add is_condition
	(cp_parser_new_type_id): Pass it.
	(cp_parser_condition): Likewise.
	(cp_parser_conversion_type_id): Likewise.
	(cp_parser_type_id): Likewise.
	(cp_parser_type_specifier_seq): In a condition, do not allow
	invalid type-specifier combinations.
	(cp_parser_exception_declaration): Adjust call to

	* cp-tree.def (TINST_LEVEL): Document TINST_IN_SYSTEM_HEADER_P.
	* cp-tree.h (struct tinst_level): Add in_system_header_p.
	(make_tinst_level): Remove.
	* pt.c (lookup_template_class): Preserve DECL_IN_SYSTEM_HEADER on
	the instantiated class.
	(push_tinst_level): Do not use make_tinst_level.  Set
	(pop_tinst_level): Likewise.
	(instantiate_class_template): Set in_system_header.
	(instantiate_pending_templates): Likewise.
	* tree.c (make_tinst_level): Remove.

2005-04-06  Joseph S. Myers  <>

	* decl.c (start_decl): Apply pending #pragma weak regardless of

2005-04-06  Mark Mitchell  <>

	PR c++/20212
	* pt.c (regenerate_decl_from_template): Copy attributes for
	parameters from the pattern to the instantiation.

2005-04-05  Mark Mitchell  <>

	PR c++/20734
	* cp-tree.def (OFFSET_REF): Correct comments.
	* init.c (build_offset_ref): Remove misleading comment.
	* typeck.c (build_unary_op): Handle pointer-to-member creation
	here, rather than ...
	(unary_complex_lvalue): ... here.

2005-04-06  Jason Merrill  <>

	PR c++/19312
	* tree.c (stabilize_init): Don't bother trying to stabilize
	something with no side-effects.

2005-04-05  Mark Mitchell  <>

	PR c++/20763
	* decl.c (grokdeclarator): Correct attribute handling.

2005-04-05  Mark Mitchell  <>

	PR c++/19159
	* decl2.c (import_export_decl): Use non-COMDAT external linkage
	for virtual tables, typeinfo, etc. that will be emitted in only
	one translation unit on systems without weak symbols.

2005-04-04  Mark Mitchell  <>

	PR c++/20679
	* parser.c (cp_parser_template_name): Fix thinko.

2005-04-04  Nathan Sidwell  <>

	PR c++/20746
	* method.c (use_thunk): Protect covariant pointer return
	adjustments from NULL pointers.

2005-04-04  Jan Hubicka  <>

	* decl2.c (finish_objects): Revert my previous patch.
	(cp_finish_file): Likewise.

2005-04-03  Kazu Hirata  <>

	* pt.c: Fix comment typos.

2005-04-03  Nathan Sidwell  <>

	PR c++/20723
	* pt.c (more_specialized_fn): Member functions are unordered wrt
	non-members.  Conversion operators are unordered wrt other

2005-04-01  Nathan Sidwell  <>

	* call.c (add_template_candidates_real): Remove length parameter
	from fn_type_unification call.
	* class.c (resolve_address_of_overloaded_function): Likewise
	* cp-tree.h (fn_type_unification): Remove length parameter.
	* pt.c (get_bindings_overload): Remove.
	(get_bindings_real): Rename to ...
	(get_bindings): ... here.  Remove length and strict
	parameters. Change return type flag to boolean.  Remove original
	forwarding function.
	(determine_specialization): Adjust get_bindings call.
	(fn_type_unification): Remove length parameter.  Adjust.
	(type_unification_real): Remove length parameter.  Adjust.
	(resolve_overloaded_unification): Adjust get_bindings call.
	(try_one_overload): Simplify confusing cascaded if control flow.
	(unify): Remove length paramter from type_unification_real call.
	(most_specialized_instantiation): Adjust get_bindings calls.
	(most_specialized): Likewise.

2005-03-31  Nathan Sidwell  <>

	PR c++/19203, implement DR 214
	* call.c (joust): Use more_specialized_fn.
	* cp-tree.h (DEDUCE_ORDER): Remove.
	(more_specialized): Replace with ...
	(more_specialized_fn): ... this.
	* pt.c (maybe_adjust_types_for_deduction): Remove DEDUCE_ORDER
	(type_unification_real): Remove DEDUCE_ORDER case.
	(more_specialized): Replace with ...
	(more_specialized_fn): ... this.  Implement DR 214.
	(most_specialized_instantiation): Use get_bindings_real directly.

2005-03-31  Gabriel Dos Reis  <>

	PR c++/18644
	* call.c (build_new_op): Remove check for -Wsynth.

2005-03-31  Jan Hubicka  <>

	* decl2.c (finish_objects): Mark ctor as needed.
	(cp_finish_file): Output variables only in nonunit-at-a-time.

2005-03-29  Richard Henderson  <>

	PR c/20519
	* decl.c (cp_complete_array_type): Rename from complete_array_type.
	Use the new complete_array_type in c-common.c.  Update all callers.
	* cp-tree.h (cp_complete_array_type): Update to match.

2005-03-24  Geoffrey Keating  <>

	* typeck.c (build_static_cast_1): Allow scalar_cast between
	any integral, floating, or enumeration type.

2005-03-24  Steven Bosscher  <>

	* typeck.c (comptypes): First determine if the types are compatible
	from a target-independent point of view.  Check target attributes

	* class.c (build_base_path):
	(add_vcall_offset): Replace fold (buildN (...)) with fold_buildN.
	* error.c (dump_expr): Likewise.
	* init.c (build_zero_init, expand_cleanup_for_base,
	build_vec_delete_1): Likewise.
	* mangle.c (write_integer_cst): Likewise.
	* method.c (thunk_adjust): Likewise.
	* pt.c (convert_nontype_argument, tsubst, unify): Likewise.
	* tree.c (cxx_print_statistics, array_type_nelts_total): Likewise.
	* typeck.c (build_ptrmemfunc_access_expr,
	(get_member_function_from_ptrfunc): Likewise.

2005-03-23  Joseph S. Myers  <>

	* cp-objcp-common.h (LANG_HOOKS_TRUTHVALUE_CONVERSION): Remove.

2005-03-23  Joseph S. Myers  <>

	* cp-tree.h (perform_integral_promotions): Remove.
	(default_conversion): Add.

2005-03-22  Mark Mitchell  <>

	* parser.c (cp_parser_warn_min_max): New function.
	(cp_parser_binary_expression): Use it.
	(cp_parser_assignment_operator_opt): Likewise.
	(cp_parser_operator): Likewise.

2005-03-22  Volker Reichelt  <>

	PR c++/19980
	* decl.c (start_preparsed_function): Robustify.

2005-03-22  Volker Reichelt  <>

	PR c++/20499
	* parser.c (cp_parser_class_head): Return NULL_TREE when
	encountering a redefinition.

2005-03-22  Nathan Sidwell  <>

	PR c++/20465
	PR c++/20381
	* typeck.c (build_ptrmemfunc): Allow OFFSET_REF when processing a

2005-03-21  Paolo Carlini  <>

	PR c++/20461
	PR c++/20536
	* init.c (emit_mem_initializers): Don't crash on undefined

2005-03-21  Paolo Carlini  <>

	PR c++/20147
	* semantics.c (finish_stmt_expr_expr): Return immediately
	if error_operand_p (expr).

2005-03-21  Joseph S. Myers  <>

	* cp-tree.h (lvalue_or_else, lvalue_p): New.
	* typeck.c (lvalue_or_else): New.  Call lvalue_error.

2005-03-19  Kriang Lerdsuwanakij  <>

	PR c++/20240
	* decl.c (decls_match): Compare context of VAR_DECL.

2005-03-19  Kriang Lerdsuwanakij  <>

	PR c++/20333
	* parser.c (cp_parser_postfix_expression) <case RID_TYPENAME>:
	Check the return value of cp_parser_nested_name_specifier.

2005-03-18  Dale Johannesen <>

	* cp/tree.c (cp_tree_equal):  Handle SSA_NAME.

2005-03-18  Paolo Carlini  <>

	PR c++/20463
	* parser.c (cp_parser_diagnose_invalid_type_name):
	Check TYPE_BINFO (current_class_type) before attempting
	to emit inform messages.

2005-03-17  Paolo Carlini  <>

	PR c++/19966
	* cp-tree.h (grok_op_properties): Change return type to void.
	* decl.c (grok_op_properties): Return early - don't check the
	arity - in case of a static member or an operator that cannot
	be non-member; tidy a bit.

2005-03-17  Nathan Sidwell  <>

	PR c++/20186
	* pt.c (contains_dependent_cast_p): Remove.
	(fold_non_dependent_expr): Don't use it.
	(value_dependent_expression_p): Use a switch statement.
	reference_exprs can be dependent.

2005-03-14  Kriang Lerdsuwanakij  <>

	PR c++/4403
	PR c++/9783, DR433
	* name-lookup.c (pushtag): Skip template parameter scope when
	scope is ts_global.  Don't push tag into template parameter
	* pt.c (instantiate_class_template): Reorder friend class
	template substitution to handle non-dependent friend class
	that hasn't been previously declared.

2005-03-14  Kriang Lerdsuwanakij  <>

	Friend class name lookup 5/n
	PR c++/1016
	* cp-tree.h (pushtag): Adjust declaration.
	* decl.c (lookup_and_check_tag): Call lookup_type_scope if
	lookup_name fails.
	(xref_tag): Adjust call to pushtag.  Make hidden class visible.
	(start_enum): Adjust call to pushtag.
	* name-lookup.c (ambiguous_decl): Ignore hidden names.
	(qualify_lookup): Change return type to bool.
	(hidden_name_p): New function.
	(lookup_namespace_name, unqualified_namespace_lookup,
	lookup_name_real): Use it.
	(lookup_type_scope): Update comments.
	(maybe_process_template_type_declaration): Change parameter name
	from globalize to is_friend.
	(pushtag): Change globalize parameter of type int to tag_scope.
	Hide name if introduced by friend declaration.
	* name-lookup.h (hidden_name_p): Add declaration.
	* parser.c (cp_parser_lookup_name): Don't deal with hidden name
	* pt.c (push_template_decl_real): Make hidden class template
	(lookup_template_class, instantiate_class_template): Adjust call
	to pushtag.
	* semantics.c (begin_class_definition): Likewise.
	* rtti.c (init_rtti_processing, build_dynamic_cast_1,
	tinfo_base_init, emit_support_tinfos): Use ts_current instead of

2005-03-13  Mark Mitchell  <>

	PR c++/20157
	* pt.c (determine_specialization): Reject non-specializations.

2005-03-11  Per Bothner  <>

	* cp-tree.h (struct cp_declarator): New id_loc field.
	* cp/parser.c (cp_lexer_get_preprocessor_token): Set cp_token's
	location using c_lex_with_flags, instead of input_location.
	(cp_parser_direct_declarator): Set declarator's id_loc from
	cp_token's id_loc.

2005-03-10  Jakub Jelinek  <>

	PR c++/18384, c++/18327
	* decl.c (reshape_init_array): Use UHWI type for max_index_cst
	and index.  Convert max_index to size_type_node if it isn't
	host_integerp (, 1).

2005-03-09  Mark Mitchell  <>

	PR c++/20208
	* pt.c (tsubst_decl): Apply array-to-pointer and
	function-to-pointer conversions to function arguments.
	(regenerate_decl_from_template): Likewise.

2005-03-09  Paolo Carlini  <>

	PR c++/16859
	* decl.c (complete_array_type): In pedantic mode, return
	3 for an empty initializer list as the initializer for an
	array of unknown bound (8.5.1/4).
	(maybe_deduce_size_from_array_init): Fix final test to use
	the above.

2005-03-08  Nathan Sidwell  <>

	PR c++/20186
	* pt.c (contains_dependent_cast_p): New.
	(fold_non_dependent_expr): Call it.

2005-03-08  Mark Mitchell  <>

	PR c++/20142
	* cp-tree.h (target_type): Remove.
	* decl.c (layout_var_decl): Remove #if 0'd code.
	(cp_finish_decl): Remove dead code.
	* init.c (build_vec_init): When determining whether or not the
	element type has an asignment operator, look through all array
	* typeck.c (target_type): Remove.

2005-03-07  Mark Mitchell  <>

	* class.c (finish_struct_1): Do not warn about non-virtual
	destructors in Java classes.

2005-03-05  Kriang Lerdsuwanakij  <>

	PR c++/19311
	* init.c (build_offset_ref): Don't build non-dependent SCOPE_REF.
	* pt.c (build_non_dependent_expr): Don't build NON_DEPENDENT_EXPR
	* typeck.c (build_x_unary_op): Don't build non-dependent SCOPE_REF.
	(build_unary_op): Handle building ADDR_EXPR of OFFSET_REF inside

2005-03-02  Alexandre Oliva  <>

	* name-lookup.c (push_overloaded_decl): Don't error if the new
	decl matches the old one.
	* decl.c (redeclaration_error_message): Likewise.

2005-03-01  Per Bothner  <>

	* decl.c (finish_function): Use SET_EXPR_LOCATION instead of
	unavailable annotate_with_file_line, if USE_MAPPED_LOCATION.

2005-03-01  Nathan Sidwell  <>

	PR c++/20232
	* class.c (update_vtable_entry_for_fn): Don't crash on invalid

	* cp-tree.g (THUNK_TARGET): Expand comment.
	* method.c (use_thunk): Make sure we also use the target, if that
	is a thunk.

2005-02-27  Jakub Jelinek  <>

	PR c++/20206
	* decl.c (cxx_comdat_group): Put thunks for
	TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
	comdat group as the thunk target.

2005-02-24  Volker Reichelt  <>

	* call.c, class.c, cp-tree.h, decl2.c, error.c, init.c, mangle.c,
	parser.c: Fix comment typo(s).

2005-02-24  Jakub Jelinek  <>

	PR c++/20175
	* decl.c (reshape_init): Don't warn about missing braces if STRING_CST
	initializes a char/wchar_t array.

2005-02-23  Mark Mitchell  <>

	PR c++/19878
	* decl.c (grokvardecl): Set DECL_INTERFACE_KNOWN for declarations
	with internal linkage.

2005-02-23  Alexandre Oliva  <>

	* decl.c (grokvardecl): Don't exempt anonymous types from having
	linkage for variables that have linkage other than "C".

2005-02-23  Kazu Hirata  <>

	* cp-objcp-common.h, error.c: Update copyright.

2005-02-22  Mark Mitchell  <>

	PR c++/20073
	* decl.c (start_decl_1): Don't clear TREE_READONLY.
	(cp_finish_decl): Likewise.
	(complete_vars): Call cp_apply_type_quals_to_decl.
	* typeck.c (cp_apply_type_quals): Avoid setting TREE_READONLY in
	cases where that's not valid.

	PR c++/19991
	* init.c (integral_constant_value): Iterate if the value of a decl
	is itself a constant.

	PR c++/20152
	* parser.c (cp_parser_class_head): Check for redefintions here.
	* semantics.c (begin_class_definition): Not here.

	PR c++/20153
	* decl2.c (build_anon_union_vars): Add type parameter.
	(finish_anon_union): Pass it.

	PR c++/20148
	* error.c (dump_expr): Do not print the body of a BIND_EXPR.

	PR c++/19883
	* parser.c (cp_parser_direct_declarator): Always complain about
	non-constant array bounds when in a function scope.
	* semantics.c (finish_id_expression): Do not mark dependent names
	as non-constant.

2005-02-21  Douglas Gregor  <>

	PR c++/19076
	PR c++/6628
	* cp-tree.h (cp_apply_type_quals_to_decl): Declared.
	* decl.c (grokdeclarator): Pedwarn about qualifying a function
	Add qualifiers when declaring a typedef of a function type.
	Member function pointers pick up the qualifiers of the typedef
	used to declare them.
	Don't complain about creating cv-qualified function types.
	Complain about qualified function typedefs that are used to
	declare non-static member functions or free functions.
	Use cp_apply_type_quals_to_decl.
	(start_preparsed_function): Use cp_apply_type_quals_to_decl.
	(grokclassfn): Use cp_apply_type_quals_to_decl.
	* error.c (dump_type_suffix): Print qualifiers for function
	* pt.c (tsubst_decl): Use cp_apply_type_quals_to_decl.
	(tsubst): When substituting a function type into a member
	pointer type, pass along the qualifiers.
	(unify): Unify member pointers to member function pointers.
	* tree.c (cp_build_qualified_type_real): Function types may be
	qualified. This includes restrict qualifiers.
	* typeck.c (cp_apply_type_quals_to_decl): New function to replace
	use of c_apply_type_quals_to_decl. Drops qualifiers that are being
	added to function types.

2005-02-20  Zack Weinberg  <>

	PR 18785
	* cp-objcp-common.h (LANG_HOOKS_TO_TARGET_CHARSET): Set to
	c_common_to_target_charset.  Delete bogus comment.

2005-02-18  Richard Henderson  <>

	PR libstdc++/10606
	* except.c (do_get_exception_ptr): New.
	(expand_start_catch_block): Use it.

2005-02-19  Jakub Jelinek  <>

	* decl.c (start_decl_1): Only check TYPE_NEEDS_CONSTRUCTING
	if type is not error_mark_node.

2005-01-20  Giovanni Bajo  <>

	PR c++/19508
	* decl2.c (grokfield): Do not apply attributes to template parameters
	as they are ignored by tsubst anyway.

2005-02-18  Jakub Jelinek  <>

	PR c++/19813
	* decl.c (start_decl_1): Clear TREE_READONLY flag if
	(complete_vars): Likewise.

2005-02-17  Alexandre Oliva  <>

	PR c++/20028
	* class.c (finish_struct): Initialize TYPE_SIZE_UNIT of a
	template along with TYPE_SIZE.

	PR c++/20022
	* semantics.c (perform_deferred_access_checks): Use
	get_deferred_access_checks to get the top of the stack.

2005-02-15  Alexandre Oliva  <>

	PR c++/17788
	* class.c (add_implicitly_declared_members, check_field_decl)
	(check_field_decls, check_bases): Remove arguments, tests and
	assignments of cant_have_default_ctor-related variables.

2005-02-15  Alexandre Oliva  <>

	* decl2.c (mark_used): Set the source location of the used decl to
	the current input location here...
	* method.c (synthesize_method): ... not here.  Set input_location
	from the decl instead.

2005-02-14  Nathan Sidwell  <>

	PR c++/19608
	* parser.c (cp_parser_late_parsing_for_member): Use
	current_function_decl as scope to push to and from.

	PR c++/19884
	* pt.c (check_explicit_specialization): Make sure namespace
	binding lookup found an overloaded function.
	(lookup_template_function): Just assert FNS is an overloaded

	PR c++/19895
	* decl.c (grokdeclarator): Check for error mark node in ptrmem

2005-02-14  Alexandre Oliva  <>

	PR c++/17816
	* decl.c (redeclaration_error_message): Report redefinition of
	pure virtual function.

2005-02-14  Nathan Sidwell  <>

	PR c++/19891
	* class.c (build_simple_base_path): Build the component_ref
	(update_vtable_entry_for_fn): Walk the covariant's binfo chain
	rather than using lookup_base.
	* search.c (dfs_walk_once): Add non-recursive assert check.
	* typeck.c (build_class_member_access_expr): It is possible for
	the member type to be both const and volatile.

2005-02-12  Kriang Lerdsuwanakij  <>

	PR c++/14479
	PR c++/19487
	* pt.c (maybe_check_template_type): Remove.
	* cp-tree.h (maybe_check_template_type): Remove prototype.
	* name-lookup.c (maybe_process_template_type_declaration): Don't
	use maybe_check_template_type.

2005-02-11  Richard Henderson  <>

	PR c++/19632
	* pt.c (get_mostly_instantiated_function_type): Save and restore
	flag_access_control instead of push/pop_access_scope.

2005-02-10  Mark Mitchell  <>

	PR c++/19755
	* decl.c (reshape_init): Issue warnings about missing braces.

2005-02-11  Kazu Hirata  <>

	* cp-tree.def, except.c, ptree.c: Update copyright.

2005-02-09  Mark Mitchell  <>

	PR c++/19811
	* call.c (build_op_delete_call): Check COMPLETE_TYPE_P before
	attempting name lookup.

	* parser.c (cp_parser_unqualified_id): Initialize type_decl.

	PR c++/19787
	* call.c (initialize_reference): Robustify.

	PR ++/19732
	* decl.c (grokdeclarator): Check for invalid use of destructor

	PR c++/19762
	* parser.c (cp_parser_unqualified_id): Avoid creating destructor
	names with invalid types.

	PR c++/19826
	* parser.c (cp_parser_direct_declarator): Allow type-dependent
	expressions as array bounds.

	PR c++/19739
	* parser.c (cp_parser_attributes_list): Allow empty lists.

2005-02-08  Mark Mitchell  <>

	PR c++/19733
	* class.c (add_method): Don't set TYPE_HAS_DESTRUCTOR.
	(check_bases): Give warnings about a base class with a
	non-virtual destructor, even if it is implicit.
	(finish_struct_bits): Don't copy TYPE_HAS_DESTRUCTOR.
	(maybe_warn_about_overly_private_class): Don't use
	(finish_struct_methods): Don't set TYPE_HAS_DESTRUCTOR.
	(check_for_override): Give it external linkage.
	(add_implicitly_declared_members): Generate destructors lazily.
	(check_field_decls): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
	(check_bases_and_members): Call check_methods before
	(check_bases_and_members): Use TYPE_HAS_NONTRIVIAL_DESTRUCTOR, not
	(finish_struct_1): Do not use TYPE_HAS_DESTRUCTOR.
	* cp-tree.def (PSEUDO_DTOR_EXPR): Document.
	* cp-tree.h (TYPE_HAS_DESTRUCTOR): Remove.
	(lang_type_class): Add lazy_destructor.
	(check_for_override): Declare.
	(build_vbase_delete): Remove.
	* cvt.c (convert_to_void): Issue errors about pseudo-destructor
	* decl.c (cxx_maybe_build_cleanup): Remove dead code.
	* except.c (dtor_nothrow): Lazily create destructors if necessary.
	* init.c (build_delete): Lazily create destructors, if necessary.
	(build_vbase_delete): Remove.
	* method.c (locate_dtor): Simplify.
	(implicitly_declare_fn): Add support for destructors.
	* parser.c (cp_parser_lookup_name): Lazily create destructors, if
	* pt.c (check_explicit_specialization): Don't use
	(instantiate_class_template): Likewise.
	* ptree.c (cxx_print_type): Don't print TYPE_HAS_DESTRUCTOR.
	* rtti.c (emit_support_tinfos): Robustify.
	* search.c (lookup_fnfields_1): Lazily create destructors.
	* typeck.c (build_class_member_access_expr): Remove
	(lookup_destructor): Likewise.

2005-02-08  Kazu Hirata  <>

	* cxx-pretty-print.c, cxx-pretty-print.h, decl.h: Update

2005-02-07  Mark Mitchell  <>

	* parser.c (cp_lexer_start_debugging): Avoid arithmetic operations
	on boolean variables.
	(cp_lexer_stop_debugging): Likewise.

2005-02-03  Giovanni Bajo  <>

	PR c++/17401
	* parser.c (cp_parser_pure_specifier): Emit a specific error
	message with an invalid pure specifier.
	* decl2.c (grok_function_init): Remove.
	(grokfield): An initializer for a method is a always a pure

2005-02-02  Matt Austern  <>

	PR c++/19628
	* cp-tree.h (builtin_valid_in_constant_expr_p): Declare.
	* parser.c (cp_parser_postfix_expression): Accept function call in
	constant expression if builtin_valid_in_constant_expr_p is true
	for that function.
	* pt.c (value_dependent_expression_p): Handle CALL_EXPRs properly.
	* semantics.c (finish_id_expression): Accept function call in constant
	expression if builtin_valid_in_constant_expr_p is true for that
	* tree.c (builtin_valid_in_constant_expr_p): New.

2005-02-02  Volker Reichelt  <>

	PR c++/17413
	* pt.c (check_instantiated_args): Improve error message.
	Fix logic when to print its second part.

2005-02-02  Volker Reichelt  <>

	* cp-tree.h (complete_type_or_else): Remove macro.
	(complete_type_or_diagnostic): Rename to complete_type_or_else
	and remove last argument.
	* typeck.c (complete_type_or_diagnostic): Rename to
	complete_type_or_else and remove last argument.

2005-02-02  Volker Reichelt  <>

	* cp-tree.h (commonparms): Remove prototype.
	(convert_arguments): Likewise.
	* typeck.c (commonparms): Make static.
	(convert_arguments): Add prototype. Make static.
	(PFN_FROM_PTRMEMFUNC): Replace by pfn_from_ptrmemfunc.

2005-01-31  Mark Mitchell  <>

	* parser.c (cp_parser_primary_expression): Don't complain about
	floating-point literals in integral constant expressions when

2005-02-01  Alexandre Oliva  <>

	* parser.c (cp_parser_template_id): Revert comment patch too.

	PR c++/18757
	PR c++/19366
	PR c++/19499
	* parser.c (cp_parser_template_id): Revert 2004-12-09's patch.
	Issue an error when creating the template id.
	* pt.c (fn_type_unification): Return early if the explicit
	template arg list is an error_mark_node.

2005-01-31  Mark Mitchell  <>

	* decl.c (build_enumerator): Do not issue duplicate error messages
	about invalid enumeration constants.
	* parser.c (cp_parser_non_integral_constant_expression): Always
	set parser->non_integral_constant_expression_p.
	(cp_parser_primary_expression): Add cast_p parameter.  Issue
	errors about invalid uses of floating-point literals in
	(cp_parser_postfix_expression): Add cast_p parameter.
	(cp_parser_open_square_expression): Pass it.
	(cp_parser_parenthesized_expression_list): Add cast_p parameter.
	(cp_parser_unary_expression): Likewise.
	(cp_parser_new_placement): Pass it.
	(cp_parser_direct_new_declarator): Likewise.
	(cp_parser_new_initializer): Likewise.
	(cp_parser_cast_expression): Add cast_p parameter.
	(cp_parser_binary_expression): Likewise.
	(cp_parser_question_colon_clause): Likewise.
	(cp_parser_assignment_expression): Likewise.
	(cp_parser_expression): Likewise.
	(cp_parser_constant_expression): If an integral constant
	expression is invalid, return error_mark_node.
	(cp_parser_expression_statement): Pass cast_p.
	(cp_parser_condition): Likewise.
	(cp_parser_iteration_statement): Likewise.
	(cp_parser_jump_statement): Likewise.
	(cp_parser_mem_initializer): Likewise.
	(cp_parser_template_argument): Likewise.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_initializer): Likewise.
	(cp_parser_throw_expression): Likewise.
	(cp_parser_attribute_list): Likewise.
	(cp_parser_simple_cast_expression): Likewise.
	(cp_parser_functional_cast): Likewise.
	(cp_parser_late_parsing_default_args): Likewise.
	(cp_parser_sizeof_operand): Save/restore

2005-01-31  Mike Stump  <>

	* parser.c (cp_lexer_new_main): Get the first token, first, before
	doing anything.

2005-01-31  Mark Mitchell  <>

	* decl.c (start_decl): Add missing parentheses.

2005-01-30  Mark Mitchell  <>

	PR c++/19555
	* cp-tree.h (DECL_USE_TEMPLATE): Expand documentation.
	* decl.c (duplicate_decls): Do not discard
	DECL_IMPLICIT_INSTANTIATION when merging declarations.
	variables that do not have DECL_USE_TEMPLATE.

	PR c++/19395
	* decl.c (grokdeclarator): Refactor code so that qualified names
	are never allowed as the declarator in a typedef.

	PR c++/19367
	* name-lookup.c (do_nonmember_using_decl): Avoid overloading
	builtin declarations.

	PR c++/19457
	* call.c (convert_like_real): Inline call to
	dubious_conversion_warnings here.
	* cp-tree.h (dubious_conversion_warnings): Remove.
	* semantics.c (finish_unary_op_expr): Copy INTEGER_CSTs before
	* typeck.c (dubious_conversion_warnings): Remove.

	PR c++/19349
	* name-lookup.c (pushdecl_namespace_level): Avoid accessing free'd

2005-01-28  Mark Mitchell  <>

	PR c++/19253
	* parser.c (cp_parser_diagnose_invalid_type_name): Commit to
	tentative parses.

	PR c++/19667
	* pt.c (redeclare_class_template): Robustify.

2005-01-27  Steven Bosscher  <>

	* decl.c (finish_case_label): Use SWITCH_STMT accessor macros
	instead of SWITCH_EXPR ones.
	* pt.c (tsubst_expr): Likewise.
	* semantics.c (begin_switch_stmt, finish_switch_cond,
	finish_switch_stmt): Likewise.

2005-01-26  J"orn Rennecke <>

	PR c++/18370
	* parser.c (cp_parser_initializer_clause): Initialize *non_constant_p.

2005-01-25  Andrew Pinski  <>

	* class.c (abort_fndecl_addr): New variable.
	(build_vtbl_initializer): If we have a pure virtual function
	share the abort function's address.
	Include gt-cp-class.h at the end.
	* (gtfiles): Add cp/class.c.

2005-01-25  Volker Reichelt  <>

	* cxx-pretty-print.c (pp_cxx_statement): Add prototype. Make static.
	(pp_cxx_function_definition): Make static.
	* cxx-pretty-print.h (pp_cxx_statement): Remove prototype.
	(pp_cxx_function_definition): Likewise.

2005-01-25  Volker Reichelt  <>

	* name-lookup.c (print_binding_level): Make static.
	(constructor_name_full): Make static inline.
	(current_decl_namespace): Make static.
	* name-lookup.h (constructor_name_full): Remove prototype.
	(print_binding_level): Likewise.
	(current_decl_namespace): Likewise.

2005-01-25  Volker Reichelt  <>

	* decl.h (debug_bindings_indentation): Remove.

2005-01-23  Kazu Hirata  <>

	* typeck.c: Fix a comment typo.

2005-01-21  Giovanni Bajo  <>

	PR c++/19208
	* pt.c (fold_decl_constant_value): Always call fold_non_dependent_expr
	at least once.
	(tsubst): Use fold_decl_constant_value in place of a bare call to

2005-01-20  Kazu Hirata  <>

	* typeck.c (more_qualified_p): Remove.
	* cp-tree.h: Remove the corresponding prototype.

2005-01-19  Matt Austern  <>

	* typeck.c (comptypes): Handle return code from objc_comptypes

2005-01-19  Kazu Hirata  <>

	* cp-tree.h, name-lookup.h: Remove unused prototypes.

2005-01-19  Kriang Lerdsuwanakij  <>

	PR c++/19375
	* semantics.c (finish_id_expression): Disable access checking for
	already lookuped FIELD_DECL.

2005-01-18  Kazu Hirata  <>

	* decl.c (delete_block): Remove.
	* cp-tree.h: Remove the corresponding prototype.

	* decl.c (vtable_decl_p, vtype_decl_p, walk_globals_data,
	walk_vtables_r, walk_vtables, walk_globals_r, walk_globals):
	* cp-tree.h: Remove the corresponding prototypes.

	* tree.c (count_functions, bound_pmf_p, cp_is_overload_p,
	cp_update_decl_after_saving, name_p): Remove.
	* cp-tree.h: Remove the corresponding prototypes.

2005-01-18  Andrew Pinski  <>

	PR c/19472
	* semantics.c (finish_asm_stmt): Strip nops off
	input memory operands.

2005-01-18  Kazu Hirata  <>

	*, call.c, cvt.c, init.c, rtti.c, tree.c,
	typeck2.c: Update copyright.

2005-01-16  Kazu Hirata  <>

	* class.c (get_enclosing_class): Remove.
	* cp-tree.h: Remove the corresponding prototypes.

	* cvt.c (convert_lvalue): Remove.
	* cp-tree.h: Remove the corresponding prototype.

	* pt.c (tinst_for_decl): Remove.
	* cp-tree.h: Remove the corresponding prototypes.

	* tree.c (hash_chainon): Remove.
	* cp-tree.h: Remove the corresponding prototypes.

2005-01-15  Jakub Jelinek  <>

	PR c++/19263
	* typeck2.c (split_nonconstant_init_1) <case VECTOR_TYPE>: Put a copy
	of CONSTRUCTOR's node into MODIFY_EXPR, as the original is modified.

2005-01-12  Kaveh R. Ghazi  <>

	* (cp-warn): Don't append $(WERROR).

2005-01-10  Kazu Hirata  <>

	* cp-tree.h: Fix a comment typo.

2005-01-07  Nathan Sidwell  <>

	PR c++/19298
	* pt.c (tsubst_qualified_id): Call convert_from_reference.

2005-01-06  Mark Mitchell  <>

	PR c++/19244
	* class.c (add_implicitly_declared_members): Remove dead code.
	* decl.c (grokfndecl): Add sfk parameter.  Use it do set
	(grokdeclarator): Adjust calls to grokfndecl.
	* method.c (implicitly_declare_fn): Improve documentation.
	* parser.c (cp_parser_direct_declarator): Do not consider a
	function to be a constructor if the containing class was
	originally anonymous.

2005-01-06  Kriang Lerdsuwanakij  <>

	PR c++/17154
	* search.c (lookup_field_1): Handle using declaration in
	class template partial specialization.

2005-01-06  Kriang Lerdsuwanakij  <>

	PR c++/19258
	* pt.c (push_access_scope): Handle friend defined in class.
	(pop_access_scope): Likewise.

2005-01-06  Nathan Sidwell  <>

	PR c++/19270
	* pt.c (tsubst_copy) <ARRAY_REF case>: Handle separately.
	(tsubst_copy_and_build) <ARRAY_REF case>: Remove obsolete
	array-new handling code.  Use build_x_binary_op.

2005-01-05  Nathan Sidwell  <>

	PR c++/19030
	* cp-tree.h (start_decl): Take pointer to pushed scope, not bool.
	* name-lookup.h (push_scope): Return pushed scope, not flag.
	* name-lookup.c (push_scope): Return scope that should be popped,
	not a flag.
	* decl.c (start_decl): Adjust.
	(grokfndecl): Adjust scope push and pop.
	* decl2.c (check_classfn): Likewise.
	* parser.c (cp_parser_condition, cp_parser_conversion_function_id,
	cp_parser_init_declarator, cp_parser_direct_declarator,
	cp_parser_class_specifier, cp_parser_class_head,
	cp_parser_constructor_declarator_p): Likewise.
	* pt.c (instantiate_class_template,
	resolve_typename_type): Likewise.

2005-01-03  Volker Reichelt  <>

	PR c++/14136
	* parser.c (cp_parser_unqualified_id): Do not issue error message
	for typedef-name as destructor declarator when performing an
	uncommitted tentative parse.

2005-01-01  Steven Bosscher  <>

	PR middle-end/17544
	* decl.c (finish_function): Fix comment.  Annotate the compiler
	generated return with the current file name and line 0.

Copyright (C) 2005 Free Software Foundation, Inc.

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