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

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

2003-12-30  Nathan Sidwell  <>

	PR c++/13507
	* decl.c (duplicate_decls): Use build_type_attribute_variant to
	merge attributes.

	PR c++/13494
	* tree.c (build_cplus_array_type_1): Only build a minimal array
	type for dependent types or domains.

2003-12-29  Nathan Sidwell  <>

	PR c++/12774
	* typeck.c (comp_array_types): Fold non-dependent domains for

2003-12-29  Kriang Lerdsuwanakij  <>

	PR c++/13289
	* semantics.c (finish_id_expression): Only check if the type of
	a template argument is integral or enumeration when it is not

2003-12-29  Kriang Lerdsuwanakij  <>

	PR c++/12403
	* parser.c (cp_parser_template_declaration_after_export): Set up
	template specialization scope in case of explicit specialization.

2003-12-28  Mark Mitchell  <>

	PR c++/13081
	* decl.c (duplicate_decls): Preserve inline-ness when redeclaring
	a function template.

	PR c++/12613
	* decl.c (reshape_init): Reject GNU colon-style designated
	initializers in arrays.

	PR c++/13009
	* call.c (build_special_member_call): Do not assume that we have a
	pointer to the complete object in an assignment operator.

2003-12-28  Roger Sayle  <>

	PR c++/13070
	* decl.c (duplicate_decls): When setting the type of an anticipated
	declaration, merge the existing type attributes.

2003-12-25  Andrew Pinski  <>

	PR c++/13268, c++/13339
	* class.c (add_method): Return early when method is error_mark_node.
	* pt.c (tsubst_friend_function): Return early when new_friend is

2003-12-23  Mark Mitchell  <>

	* cp-lang.c (cp_expr_size): Return zero for empty classes.

	* cp-tree.h (warn_if_uknown_interface): Remove unused function.
	* decl2.c (warn_if_unknown_interface): Likewise.

2003-12-23  Nathan Sidwell  <>

	PR c++/13387
	* cp-lang.c (cxx_get_alias_set): Correct logic for a base type.

2003-12-22  Mark Mitchell  <>

	* decl.c (start_function): Do not check
	flag_alt_external_templates or flag_external_templates.
	* decl2.c (warn_if_unknown_interface): Likewise.
	* lex.c (extract_interface_info): Likewise.
	* pt.c (lookup_template_class): Likewise.

	PR c++/12862
	* name-lookup.c (pushdecl): Look up all namespace-scope entities
	in their corresponding namespace.

	PR c++/12397
	* typeck.c (finish_class_member_access_expr): Don't tree
	IDENTIFIER_NODEs as non-dependent expressions.

2003-12-22  Andrew Pinski  <>

	PR c++/5050
	* tree.c (cp_start_inlining): Remove.
	(cp_end_inlining): Remove.
	* cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Do not define.
	* cp-tree.h (cp_start_inlining): Do not declare.
	(cp_end_inlining): Do not declare.

2003-12-22  Mark Mitchell  <>

	PR c++/12479
	* parser.c (cp_parser_declaration_seq_opt): Only issue "extra ;"
	pedwarn when not in a system header.

2003-12-21  Mark Mitchell  <>

	* cp-tree.h (cp_tree_index): Remove CPTI_RECORD_TYPE,
	(record_type_node): Remove.
	(union_type_node): Likewise.
	(enum_type_node): Likewise.
	* decl.c: Remove mention of above tree nodes in comment.
	* lex.c (cxx_init): Do not assign to record_type_node,
	union_type_node, or enum_type_node.  Simplify handling of

	PR c++/11554
	* init.c (sort_mem_initializers): Add warning.

2003-12-21  Kazu Hirata  <>

	* call.c: Fix comment formatting.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* cxx-pretty-print.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* error.c: Likewise.
	* except.c: Likewise.
	* init.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* semantics.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

2003-12-19  Kazu Hirata  <>

	* cvt.c: Remove uses of "register" specifier in
	declarations of arguments and local variables.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* lex.c: Likewise.
	* name-lookup.c: Likewise.
	* repo.c: Likewise.
	* search.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

2003-12-19  Mark Mitchell  <>

	PR c++/12795
	* name-lookup.c (pushdecl): Do not treated any functions as being
	"nested" in C++.

2003-12-19  Jason Merrill  <>

	PR c++/13371
	* typeck.c (build_modify_expr): Stabilize lhs if we're narrowing.
	* cvt.c (convert_to_void): Don't warn about the RHS of a comma
	being useless if TREE_NO_UNUSED_WARNING is set.

2003-12-18  Richard Henderson  <>

	* cp-tree.h (struct lang_type_header): Remove __extension__.

2003-12-18  Jason Merrill  <>

	PR c++/12253
	* init.c (build_vec_init): Initialization of an element from
	an initializer list is also a full-expression.

	* parser.c, pt.c, semantics.c: Rename constant_expression_p
	to integral_constant_expression_p.

2003-12-18  Kriang Lerdsuwanakij  <>

	PR c++/13262
	* pt.c (instantiate_decl): Wrap push_nested_class and
	pop_nested_class around cp_finish_decl call for static member

2003-12-18  Giovanni Bajo  <>

	PR c++/9154
	* parser.c (cp_parser_template_argument): A type-id followed by '>>'
	is just an user typo, and should be accepted as last resort if any
	other parsing fails.
	(cp_parser_enclosed_template_argument_list): If the argument list is
	parsed correctly, but the next token is '>>', emit a diagnostic.
	(cp_parser_next_token_ends_template_argument): Accept '>>' as
	delimiter of template argument, it will be later detected as a typo.

2003-12-17  Kelley Cook  <>

	* Replace cp/g++.1 with $(docobjdir)/g++.1.

2003-12-17  Mark Mitchell  <>

	PR c++/10603
	PR c++/12827
	* parser.c (cp_parser_error): Help c_parse_error print good
	messages if the next token is a keyword.
	(cp_parser_parameter_declaration_list): When resynchronizing after
	a bad parameter declaration, stop if a comma is found.
	(cp_parser_parameter_declaration): Avoid backtracking.

2003-12-16  Mark Mitchell  <>

	PR c++/12696
	* decl.c (reshape_init): Recover quickly from errors.

2003-12-16  Nathan Sidwell  <>

	PR c++/9043
	C++ ABI change: Mangling array indices in templates.
	* decl.c (compute_array_index_type): Reorganize for earlier
	template errors. Use value_dependent_expression_p for abi-2.
	* mangle.c (write_array_type): Check broken mangling for
	expression indices on abi-1

2003-12-16  Mark Mitchell  <>

	PR c++/12696
	* decl.c (reshape_init): Recover quickly from errors.

	PR c++/13275
	* lex.c (reswords): Add "__offsetof" and "__offsetof__".
	* parser.c (cp_parser): Add in_offsetof_p.
	(cp_parser_new): Initialize it.
	(cp_parser_primary_expression): Handle __offsetof__ (...).
	(cp_parser_postfix_expression): Allow casts to pointer type and
	uses of "->" in a constant expression if implementing offsetof.
	(cp_parser_unary_expression): Allow the use of "&" in a constant
	expression if implementing offsetof.

2003-12-16  Giovanni Bajo  <>

	PR c++/2294
	* name-lookup.c (push_overloaded_decl): always construct an OVERLOAD
	if the declaration comes from an using declaration.

2003-12-16  Giovanni Bajo  <>

	* semantics.c (finish_id_expression): Refactor the code to handle
	template parameters, and emit a more informative error message
	when they are used within an integral constant expression.

2003-12-16  Nathan Sidwell  <>

	PR c++/13387
	* class.c (finish_struct_1): Compute mode and alias set for
	* call.c (build_over_call): Use CLASSTYPE_AS_BASE for trivial
	assignment of a class, as necessary.
	* cp-lang.c (cxx_get_alias_set): The alias set as a base is the
	same as for the complete type.

	PR c++/13242
	C++ ABI change. Mangling template parameters of reference type
	* mangle.c (write_template_args): Remove unreachable code.
	(write_template_arg): Look through an argument of reference type.

2003-12-16  Giovanni Bajo  <>

	PR c++/2294
	* name-lookup.c (push_overloaded_decl): always construct an OVERLOAD
	if the declaration comes from an using declaration.

2003-12-15  Mark Mitchell  <>

	PR c++/10926
	* decl2.c (grokfield): Robustify.

	PR c++/11116
	* parser.c (cp_parser_throw_expression): Determine whether or not
	an assignment-expression is present by doing one-token lookahead.

	PR c++/13269
	* parser.c (cp_parser_function_definition_after_declarator): Stop
	scanning tokens when reaching EOF.

	PR c++/12989
	* typeck.c (cxx_sizeof_or_alignof_expr): Robustify.

	PR c++/13310
	* pt.c (dependent_template_p): Handle OVERLOADs.

2003-12-15  Mark Mitchell  <>

	PR c++/13243
	PR c++/12573
	* parser.c (cp_parser_postfix_expression): Tighten handling of
	integral constant expressions.
	(cp_parser_unary_expression): Likewise.
	* pt.c (value_dependent_expression_p): Remove handling for

2003-12-15  Nathan Sidwell  <>

	* class.c (add_method): Disallow destructor for java classes.
	* decl.c (xref_basetypes): Check java class inheritance.
	* decl2.c (check_java_method): Skip artificial params.

	PR c++/13241
	C++ ABI change. Mangling of symbols in expressions.
	* mangle.c (write_mangled_name): Add top_level flag. Rework for
	nested and unnested mangling. Deal with abi version 1 and version
	2 differences.
	(write_expression): Adjust write_mangled_name call.
	(mangle_decl_string): Use write_mangled_name for all non-type decls.

2003-12-14  Mark Mitchell  <>

	PR c++/10779
	PR c++/12160
	* parser.c (struct cp_parser): Add in_template_argument_list_p.
	(cp_parser_error): Use c_parse_error.
	(cp_parser_name_lookup_error): New function.
	(cp_parser_new): Initialize it.
	(cp_parser_declarator): Add parenthesized_p parameter.
	(cp_parser_nested_name_specifier_opt): Use
	(cp_parser_parenthesized_expression_list): Improve comments.
	(cp_parser_condition): Adjust call to cp_parser_declarator.
	(cp_parser_template_parameter): Adjust call to
	(cp_parser_template_argument_list): Set
	(cp_parser_explicit_instantiation): Adjust call to
	(cp_parser_simple_type_specifier): Remove unncessary code.
	(cp_parser_using_declaration): Use cp_parser_name_lookup_error.
	(cp_parser_init_declarator): Handle member function definitions.
	(cp_parser_direct_declarator): Adjust call to
	(cp_parser_type_id): Adjust call to cp_parser_declarator.
	(cp_parser_parameter_declaration_list): Avoid backtracking where
	(cp_parser_parameter_declaration): Add parenthesized_p parameter.
	(cp_parser_function_definition): Remove.
	(cp_parser_member_declaration): Do not backtrack to look for
	function definitions.
	(cp_parser_exception_declaration): Adjust call to
	(cp_parser_single_declaration): Handle function definitions via
	(cp_parser_save_member_function_body): New function.

2003-12-14  Kriang Lerdsuwanakij  <>

	PR c++/13106
	* decl.c (finish_function): Check if return type is dependent before
	issuing no return statement warning.

2003-12-12  Nathan Sidwell  <>

	PR c++/13118
	* cp-tree.h (lang_decl_u): Add thunk_alias member.
	(THUNK_ALIAS_P): Remove.
	(THUNK_ALIAS): Adjust.
	* class.c (update_vtable_entry_for_fn): Get the vbase within the
	overriding function's return type.
	(dump_thunk): Adjust THUNK_ALIAS printing.
	(build_vtbl_initializer): Adjust THUNK_ALIAS use.
	* method.c (make_thunk): Revert 12881 test change. Clear
	(finish_thunk): Adjust THUNK_ALIAS setting.
	(use_thunk): Adjust THUNK_ALIAS use.
	* semantics.c (emit_associated_thunks): Likewise.

	PR c++/13114, c++/13115
	* class.c (layout_empty_base): Propagate the move of an empty base
	to offset zero.

	PR c++/12881
	* method.c (make_thunk): Deal with thunk aliases when searching
	for a thunk. Robustify assertion.

2003-12-11  Nathan Sidwell  <>

	* mangle.c (conv_type_names): Holds IDENTIFIER_NODEs only.
	(hash_type): Use TYPE_UID of the identifier's type.
	(compare_type): Adjust.
	(mangle_conv_op_name_for_type): Store identifier nodes only, use
	TYPE_UID has hash value.

2003-12-10  Mark Mitchell  <>

	* cp-tree.h (DECL_CONV_FN_P): Check that DECL_NAME is non-NULL.

2003-12-08  Matt Austern  <>

	PR c/13134
	* decl.c (duplicate_decls): Copy visibility flag when appropriate.

2003-12-09  Giovanni Bajo  <>

	* init.c (build_new_1): Deal with an OVERLOAD set when
	looking up for _Jv_AllocObject.
	* except.c (build_throw): Likewise for _Jv_Throw.

2003-12-08  Jason Merrill  <>

	PR c++/11971
	* tree.c (build_local_temp): Split out from build_cplus_new.
	(force_target_expr): New fn.
	* call.c (call_builtin_trap): Call it.  Take a type parm.
	(convert_arg_to_ellipsis): Pass it.
	(build_x_va_arg): Use call_builtin_trap.

	PR c++/11929
	* call.c (magic_varargs_p): New fn.
	(build_over_call): Do no ellipsis conversions for arguments to
	functions with magic varargs.

	* name-lookup.c, init.c, except.c: Revert Giovanni's patch from

	Give the anonymous namespace a null DECL_NAME.
	* cp-tree.h: Don't declare anonymous_namespace_name.
	* decl.c: Don't define it.
	* dump.c (cp_dump_tree): Don't check for it.
	* cxx-pretty-print.c (pp_cxx_original_namespace_definition): Likewise.
	* error.c (dump_decl): Likewise.
	* name-lookup.c: Define it here.
	(push_namespace): Put it in DECL_ASSEMBLER_NAME instead.
	* mangle.c (write_unqualified_name): Adjust.

2003-12-07  Giovanni Bajo  <>

	PR c++/2294
	* name-lookup.c (push_overloaded_decl): Always construct an
	OVERLOAD unless the declaration is a built-in.
	(set_namespace_binding): While binding OVERLOADs with only one
	declaration, we still need to call supplement_binding.
	* init.c (build_new_1): Deal with an OVERLOAD set when
	looking up for _Jv_AllocObject.
	* except.c (build_throw): Likewise for _Jv_Throw.

2003-12-06  Mark Mitchell  <>

	PR c++/13323
	* class.c (same_signature_p): Handle conversion operators
	(check_for_override): Likewise.

2003-12-06  Kelley Cook  <>

	(c++.install_common, cp/g++.1, c++.install-man): Adjust for above.
	(c++.uninstall): Likewise.

2003-12-05  Danny Smith <>
	    Mark Mitchell  <>

	PR c++/13305
	* parser.c (cp_parser_elaborated_type_specifier): Accept

2003-12-05  Mark Mitchell  <>

	PR c++/13314
	* parser.c (cp_parser_class_specifier): Match push_scope/pop_scope
	(cp_parser_class_head): Likewise.

2003-12-05  Kriang Lerdsuwanakij  <>

	PR c++/13166
	* parser.c (cp_parser_late_parsing_default_args): Make sure the
	context is a class before calling push_nested_class and

2003-12-03  James E Wilson  <>

	* g++spec.c (lang_specific_driver): Delete USE_LIBUNWIND_EXCEPTIONS

2003-12-03  Mark Mitchell  <>

	PR c++/9127
	* cp-tree.h (at_namespace_scope_p): New function.
	* parser.c (cp_parser_class_head): Handle invalid explicit
	* search.c (at_namespace_scope_p): New function.

	PR c++/13179
	* semantics.c (finish_handler_parms): Do not call eh_type_info for
	types used in templates.

	PR c++/10771
	* parser.c (cp_parser_check_for_invalid_template_id): New
	(cp_parser_simple_type_specifier): Use it.
	(cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_class_head): Likewise.

2003-12-02  Giovanni Bajo  <>

	PR c++/10126
	* pt.c (convert_nontype_argument): Handle default conversions
	while converting a pointer to member function.

2003-12-02  Giovanni Bajo  <>

	PR c++/12573
	* pt.c (value_dependent_expression_p): Handle COMPONENT_REFs by
	looking into them recursively.

2003-12-02  Richard Henderson  <>

	* name-lookup.h (struct cp_binding_level): Use ENUM_BITFIELD.
	* parser.c (struct cp_token): Likewise.
	(struct cp_parser_token_tree_map_node): Likewise.
	* lex.c (struct resword): Move const after ENUM_BITFIELD.

2003-11-30  Mark Mitchell  <>

	PR c++/9849
	* parser.c (cp_lexer_prev_token): New function.
	(cp_parser_skip_to_closing_parenthesis): Add consume_paren
	(cp_parser_nested_name_specifier_opt): Add is_declaration
	(cp_parser_nested_name_specifier): Likewise.
	(cp_parser_class_or_namespace_name): Likewise.
	(cp_parser_class_name): Likewise.
	(cp_parser_template_id): Likewise.
	(cp_parser_template_name): Likewise.
	(cp_parser_id_expression): Adjust calls to
	cp_parser_nested_name_specifier_op, cp_parser_template_id,
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_postfix_expression): Likewise.
	(cp_parser_pseudo_destructor_name): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_mem_initializer_id): Likewise.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_type_name): Likewise.
	(cp_parser_elaborated_type_specifier): Likewise.
	(cp_parser_qualified_namespace_specifier): Likewise.
	(cp_parser_using_declaration): Likewise.
	(cp_parser_using_directive): Likewise.
	(cp_parser_ptr_operator): Likewise.
	(cp_parser_declarator_id): Likewise.
	(cp_parser_class_head): Likewise.
	(cp_parser_base_specifier): Likewise.
	(cp_parser_constructor_declarator_p): Likewise.
	(cp_parser_direct_declarator): Fix typo in comment.
	(cp_parser_parenthesized_expression_list): Adjust call to
	(cp_parser_selection_statement): Likewise.

2003-11-23  Kriang Lerdsuwanakij  <>

	PR c++/12924
	* typeck.c (finish_class_member_access_expr): Handle TEMPLATE_ID_EXPR
	with OVERLOAD and DECL nodes as the first operand.

2003-11-22  Kriang Lerdsuwanakij  <>

	* pt.c (tsubst) <ARRAY_REF>: Remove erroneous argument to build_nt.

2003-11-22  Kriang Lerdsuwanakij  <>

	PR c++/5369
	* friend.c (is_friend): Handle member function of a class
	template as template friend.
	(do_friend): Likewise.
	* decl2.c (check_classfn): Add template_header_p parameter.
	* decl.c (start_decl): Adjust check_classfn call.
	(grokfndecl): Likewise.
	* pt.c (is_specialization_of_friend): New function.
	(uses_template_parms_level): Likewise.
	(push_template_decl_real): Use uses_template_parms_level.
	(tsubst_friend_function): Adjust check_classfn call.
	* cp-tree.h (check_classfn): Adjust declaration.
	(uses_template_parms_level): Add declaration.
	(is_specialization_of_friend): Likewise.

2003-11-21  Mark Mitchell  <>

	PR c++/12515
	* pt.c (build_non_dependent_expr): Handle GNU extension to ?:

2003-11-21  Jan Hubicka  <>

	* parser.c (cp_parser_postfix_expression): Initialize 's' to

2003-11-20  Joseph S. Myers  <>

	* (c++.extraclean): Delete.

2003-11-20  Joseph S. Myers  <>

	* (check-g++, lang_checks): Add.

2003-11-18  Kriang Lerdsuwanakij  <>

	PR c++/12932
	* class.c (currently_open_derived_class): Check if
	current_class_type is NULL_TREE.
	* semantics.c (finish_call_expr): Check if
	currently_open_derived_class returns NULL_TREE.
	* cp-tree.h (DERIVED_FROM_P): Add parenthesis around PARENT

2003-11-17  Jason Merrill  <>

	* init.c (build_new_1): Preevaluate placement args.
	* call.c (build_op_delete_call): Don't expose placement args to
	overload resolution.

2003-11-16  Jason Merrill  <>

	* (c++.tags): Create TAGS.sub files in each directory
	and TAGS files that include them for each front end.

2003-11-15  Bernardo Innocenti  <>

	PR c++/2294
	* name-lookup.c: Revert previous patch for PR c++/2294 to prevent
	build failure on libjava.

2003-11-14  Giovanni Bajo  <>

	PR c++/2294
	* name-lookup.c (push_overloaded_decl): Always construct an OVERLOAD
	unless the declaration is a built-in.
	(set_namespace_binding): While binding OVERLOADs with only one
	declaration, we still need to call supplement_binding.

2003-11-14  Mark Mitchell  <>

	PR c++/12762
	* parser.c (cp_parser_enclosed_template_argument_list): New
	(cp_parser_template_id): Use it.
	(cp_parser_simple_type_specifier): Recognize invalid template

2003-11-14  Giovanni Bajo  <>

	PR c++/2094
	* pt.c (unify): Add support for PTRMEM_CST and
	FIELD_DECL unification.

2003-11-13  Richard Earnshaw  <>

	* decl.c (grokfndecl): Change OK to type tree.

2003-11-12  Mark Mitchell  <>

	* tree.c (build_target_expr_with_type): Treate VA_ARG_EXPR like

	* decl.c (cp_make_fname_decl): When creating a top-level
	__FUNCTION__-like symbol, do register it with pushdecl.

	* decl.c (finish_case_label): Do not check that we are within a
	switch statement here.
	* parser.c (struct cp_parser): Add in_iteration_statement_p and
	(cp_parser_new): Initialize them.
	(cp_parser_labeled_statement): Check validity of case labels
	(cp_parser_selection_statement): Set in_switch_statement_p.
	(cp_parser_iteration_statement): Set in_iteration_statement_p.
	(cp_parser_jump_statement): Check validity of break/continue
	statements here.

	PR c++/12735
	* cp-tree.h (duplicate_decls): Return a tree.
	* decl.c (duplicate_decls): Clarify documentation.  Return
	error_mark_node to indicate a failed redeclaration.
	* friend.c (do_friend): Handle that case.
	* name-lookup.c (pushdecl): Likewise.

2003-11-11  Jason Merrill  <>

	* cp-tree.h (DECL_NAMESPACE_ASSOCIATIONS): New macro.
	* name-lookup.c (parse_using_directive): New fn.
	(is_associated_namespace): New fn.
	(arg_assoc_namespace): Also check associated namespaces.
	* name-lookup.h: Declare new fns.
	* pt.c (maybe_process_partial_specialization): Allow
	specialization in associated namespace.
	* parser.c (cp_parser_using_directive): Accept attributes.  Use

2003-11-10  Richard Henderson  <>

	* cvt.c (convert_to_void): Use void_zero_node after overload failure.

2003-11-10  Gabriel Dos Reis  <>

	PR c++/12832
	* name-lookup.c (supplement_binding): Gracefully handle names
	used at non-class scope prior declaration.

2003-11-06  Matt Austern  <>

	* decl.c (duplicate_decls): copy DECL_VISIBILITY field.
	* method.c (use_thunk): give thunk same visibility as function.
	* optimize.c (maybe_clone_body): copy DECL_VISIBILITY field.

2003-11-05  Kriang Lerdsuwanakij  <>

	PR c++/11616
	* pt.c (instantiate_pending_templates): Save and restore

2003-11-05  Kriang Lerdsuwanakij  <>

	PR c++/2019
	* friend.c (add_friend): Don't display previous declaration in
	case of duplicate friend warning.

2003-11-02  Kriang Lerdsuwanakij  <>

	PR c++/9810
	* call.c (build_over_call): Check access using primary template
	if FN is a member function template.

2003-11-01  Kriang Lerdsuwanakij  <>

	PR c++/12796
	* class.c (handle_using_decl): Set input_location before calling

2003-10-26  Kriang Lerdsuwanakij  <>

	PR c++/10371
	* semantics.c (finish_non_static_data_member): Handle when
	both processing_template_decl and qualifying_scope are true.

2003-10-24  Kriang Lerdsuwanakij  <>

	PR c++/11076
	* class.c (handle_using_decl): Swap arguments of error_not_base_type.
	* parser.c (cp_parser_direct_declarator): Only resolve typename for
	namespace scope declarations.

2003-10-24  Nathan Sidwell  <>

	PR c++/12698, c++/12699, c++/12700, c++/12566
	* cp-tree.h (THUNK_ALIAS_P, THUNK_ALIAS): New.
	(debug_class, debug_thunks): New.
	* class.c (dump_class_hierarchy_1): New break out from ...
	(dump_class_hierarchy): ... here.
	(dump_thunk, debug_thunks, debug_class): New.
	(update_vtable_entry_for_fn): Add ssizetype casts. Correct
	continued search for primary binfo via virtual.
	(build_vtbl_initializer): Follow covariant thunk alias.
	* method.c (make_thunk): Clear DECL_THUNKS of the thunk.
	(finish_thunk): Look for an alias of the covariant thunk and point
	to it.
	(use_thunk): We should never use an alias.
	* semantics.c (emit_associated_thunks): Do not emit aliases.

	PR c++/12566
	* cp-tree.h (cp_fname_init): Add TYPE pointer param.
	* decl.c (cp_fname_init): Add TYPE pointer param. Set it. Don't
	create an ad-hoc ERROR_MARK.
	(cp_make_fname_decl): Adjust.
	* pt.c (tsubst_expr): Adjust.

2003-10-23  Jason Merrill  <>

	PR c++/12726
	* tree.c (build_target_expr_with_type): Don't call force_rvalue

2003-10-22  Kazu Hirata  <>

	* call.c: Fix comment formatting.
	* class.c: Likewise.
	* cxx-pretty-print.c: Likewise.
	* init.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

2003-10-21  Mark Mitchell  <>

	PR c++/11962
	* typeck.c (build_x_conditional_expr): Handle missing middle
	operands in templates.
	* mangle.c (write_expression): Issue errors about attempts to
	mangle a non-existant middle operator to the ?: operator.

2003-10-21  Robert Bowdidge   <>

	* decl.c (cp_finish_decl): Remove clause intended for asm directives
	  in struct or class fields: this code is never executed.

2003-10-22  Kriang Lerdsuwanakij  <>

	* decl.c (start_decl): Exit if push_template_decl returns

2003-10-20  Kazu Hirata  <>

	* ChangeLog: Fix typos.
	* call.c: Fix comment typos.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* cxx-pretty-print.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* init.c: Likewise.
	* mangle.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

2003-10-20  Jan Hubicka  <>

	* decl.c (start_cleanup_fn):  Set DECL_DECLARED_INLINE_P to deffer
	the expansion.

2003-10-20  Mark Mitchell  <>

	* (c++.install-info): Remove.

2003-10-20  Jason Merrill  <>

	* class.c (layout_class_type): Set DECL_ARTIFICIAL on padding

2003-10-20  Kriang Lerdsuwanakij  <>

	PR c++/9781, c++/10583, c++/11862
	* decl.c (cp_finish_decl): Exit immediately if decl is an
	* pt.c (push_template_decl_real): Return error_mark_node for
	invalid template declaration of variable.

2003-10-18  Kriang Lerdsuwanakij  <>

	PR c++/12495
	* pt.c (lookup_template_class): Handle when current_class_type
	is a local class.

2003-10-17  Kriang Lerdsuwanakij  <>

	PR c++/2513
	* decl.c (make_typename_type): Use dependent_type_p.
	(make_unbound_class_template): Likewise.
	* pt.c (instantiate_class_template): Increment
	processing_template_decl during substitution of template friend
	function.  Preincrement processing_template_decl rather than
	(get_mostly_instantiated_function_type): Increment
	processing_template_decl during partial substitution of function

2003-10-15  Jan Hubicka  <>

	PR c++/12574
	* decl2.c (cxx_callgraph_analyze_expr): Deal with baselink.

2003-10-14  Jason Merrill  <>

	PR c++/11878
	* tree.c (build_target_expr_with_type): Call force_rvalue for
	classes with non-trivial copy ctors.

	PR c++/11063
	* typeck.c (build_modify_expr): Call convert rather than abort.

2003-10-14  Gabriel Dos Reis  <>

	Breack out decl.c (3/n)
	* name-lookup.c: Include flags.h
	(lookup_name_current_level): Make static.
	(add_decl_to_level): Likewise.
	(push_local_binding): Likewise.
	(push_overloaded_decl): Likewise.
	(lookup_using_namespace): Likewise.
	(qualified_lookup_using_namespace): Likewise.
	(lookup_type_current_level): Likewise.
	(unqualified_namespace_lookup): Likewise.
	(namespace_ancestor): Likewise.
	(push_using_directive): Likewise.
	* decl.c (pushdecl): Move to name-lookup.c.
	(pushdecl_top_level_1): Likewise.
	(pushdecl_top_level): Likewise.
	(pushdecl_top_level_and_finish): Likewise.
	(maybe_push_decl): Likewise.
	(push_using_decl): Likewise.
	(push_overloaded_decl): Likewise.
	(make_anon_name): Likewise.
	(anon_cnt): Likewise.
	(clear_anon_tags): Likewise.
	(maybe_inject_for_scope_var): Likewise.
	(check_for_out_of_scope_variable): Likewise.
	* (cp/name-lookup.o): Depend on flags.h.
	* decl.c (warn_extern_redeclared_static): Export.
	* cp-tree.h (warn_extern_redeclared_static): Declare.

2003-10-14  Nathanael Nerode  <>

	* Replace uses of $(target_alias) with

2003-10-13  Volker Reichelt  <>

	* ChangeLog: Add PR number to patch for PR c++/12370.

2003-10-13  Gabriel Dos Reis  <>

	* name-lookup.h (cxx_scope_find_binding_for_name): Don't export.
	(binding_for_name): Likewise.
	(cxx_binding_clear): Move to name-lookup.c.
	* name-lookup.c (cxx_scope_find_binding_for_name): Now static.
	(binding_for_name): Likewise.
	* decl2.c (is_ancestor): Move to name-lookup.c
	(namespace_ancestor): Likewise.
	(add_using_namespace): Likewise.
	(ambiguous_decl): Likewise.
	(lookup_using_namespace): Likewise.
	(qualified_lookup_using_namespace): Likewise.
	(set_decl_namespace): Likewise.
	(decl_namespace): Likewise.
	(current_decl_namespace): Likewise.
	(push_decl_namespace): Likewise.
	(pop_decl_namespace): Likewise.
	(push_scope): Likewise.
	(pop_scope): Likewise.
	(struct arg_lookup): Likewise.
	(arg_assoc): Likewise.
	(arg_assoc_args): Likewise.
	(arg_assoc_type): Likewise.
	(add_function): Likewise.
	(arg_assoc_namespace): Likewise.
	(arg_assoc_class): Likewise.
	(arg_assoc_template_arg): Likewise.
	(do_namespace_alias): Likewise.
	(validate_nonmember_using_decl): Likewise.
	(do_nonmember_using_decl): Likewise.
	(do_toplevel_using_decl): Likewise.
	(do_local_using_decl): Likewise.
	(do_class_using_decl): Likewise.
	(do_using_directive): Likewise.
	(constructor_name_full): Likewise.
	(constructor_name): Likewise.
	(constructor_name_p): Likewise.

2003-10-13  Gabriel Dos Reis  <>

	Break out decl.c (2/n)
	* name-lookup.c: Include diagnostic.h
	(cxx_binding_free): Make static.
	(cxx_binding_make): Likewise.
	(binding_table_new): Likewise
	(binding_table_free): Likewise.
	(binding_table_insert): Likewise.
	(binding_table_find_anon_type): Likewise.
	(binding_table_reverse_maybe_remap): Likewise.
	(supplement_binding): Likewise.
	* name-lookup.h (global_scope_name): Declare extern.
	(global_type_node): Likewise.
	(cxx_binding_free): Don't export.
	(cxx_binding_make): Likewise.
	(binding_table_new): Likewise.
	(binding_table_free): Likewise.
	(binding_table_insert): Likewise.
	(binding_table_find_anon_type): Likewise.
	(binding_table_reverse_maybe_remap): Likewise.
	* (cp/name-lookup.o): Depend on $(DIAGNOSTIC_H)
	* decl.c (lookup_namespace_name): Move to name-lookup.c
	(select_decl): Likewise.
	(unqualified_namespace_lookup): Likewise.
	(lookup_qualified_name): Likewise.
	(lookup_name_real): Likewise.
	(lookup_name_nonclass): Likewise.
	(lookup_function_nonclass): Likewise.
	(lookup_name): Likewise.
	(lookup_name_current_level): Likewise.
	(lookup_type_current_level): Likewise.
	(lookup_flags): Likewise.
	(qualify_lookup): Likewise.
	(lookup_tag): Likewise.
	(lookup_tag_reverse): Likewise.
	(getdecls): Likewise.
	(storedecls): Remove.
	(cxx_remember_type_decls): Move to name-lookup.c.
	(global_bindings_p): Likewise.
	(innermost_nonclass_level): Likewise.
	(toplevel_bindings_p): Likewise.
	(namespace_bindings_p): Likewise.
	(kept_level_p): Likewise.
	(innermost_scope_kind): Likewise.
	(template_parm_scope_p): Likewise.
	(push_binding): Likewise.
	(push_local_binding): Likewise.
	(add_decl_to_level): Likewise.  Make extern.
	(push_class_binding): Move to name-lookup.c.
	(resume_level): Likewise.  Rename to resume_scope.
	(begin_scope): Move to name-lookup.c.
	(indent): Likewise.
	(binding_depth): Likewise.
	(is_class_level): Likewise.
	(cxx_scope_descriptor): Likewise.
	(cxx_scope_debug): Likewise.
	(namespace_scope_ht_size): Likewise.
	(leave_scope): Likewise.
	(pushlevel_class): Likewise.
	(poplevel_class): Likewise.
	(clear_identifier_class_values): Likewise.
	(pushdecl_with_scope): Likewise.
	(pushdecl_namespace_level): Likewise.
	(pushdecl_class_level): Likewise.
	(push_class_level_binding): Likewise.
	(push_using_directive): Likewise.
	(identifier_global_value): Likewise.
	(keep_next_level_flag): Likewise.
	(keep_next_level): Likewise.
	(free_binding_level): Likewise.
	(set_class_shadows): Likewise.
	(maybe_push_cleanup_level): Likewise.
	(cp_namespace_decls): Likewise.
	(bt_print_entry): Likewise.
	(print_binding_level): Likewise.
	(print_other_binding_stack): Likewise.
	(print_binding_stack): Likewise.
	(push_namespace): Likewise.
	(pop_namespace): Likewise.
	(push_nested_namespace): Likewise.
	(pop_nested_namespace): Likewise.
	(cxx_saved_binding_make): Likewise.
	(struct cxx_saved_binding_make): Likewise.
	(store_bindings): Likewise.
	(maybe_push_to_top_level): Likewise.
	(push_to_top_level): Likewise.
	(pop_from_top_level): Likewise.
	(identifier_type_value): Likewise.
	(set_identifier_type_value): Likewise.
	(set_identifier_type_value_with_scope): Likewise.
	(pop_everything): Likewise.
	(pushtag): Likewise.
	(follow_tag_typedef): Likewise.
	(maybe_process_template_type_declaration): Likewise.
	(pop_binding): Likewise.
	* cp-tree.h: Move corresponding declarations to name-lookup.h

2003-10-12  Steven Bosscher  <>

	* cvt.c (ocp_convert): Move warning to C common code.

2003-10-09  Jason Merrill  <>

	PR c++/6392
	* tree.c (build_cplus_array_type): Handle all quals the same.
	(cp_build_qualified_type_real): Look through arrays first.

	* tree.c (build_cplus_new): Use build_decl to create a VAR_DECL.
	(build_target_expr_with_type): Likewise.

	* pt.c (instantiate_class_template): Sanity check that our
	enclosing class has been instantiated.

2003-10-08  Giovanni Bajo  <>

	* cp_tree.h: Added TFF_NO_FUNCTION_ARGUMENTS.
	* error.c (dump_function_decl): Use it to skip the dump of the
	(dump_expr): When dumping a declaration found within an
	expression, always set TFF_NO_FUNCTION_ARGUMENTS
	in the flags.

2003-10-08  Giovanni Bajo  <>

	PR c++/11097
	* pt.c (tsubst_decl): Substitute also the DECL_NAME node of

2003-10-06  Mark Mitchell  <>

	PR c++/10147
	* call.c (initialize_reference): Tweak error message.
	* cxx-pretty-print.h (cxx_pretty_printer_flags): Remove
	pp_cxx_flag_qualified_id and pp_cxx_flag_global_scope.
	* cxx-pretty-print.c (pp_cxx_id_expression): Always display
	qualified entities using qualified names.

	PR c++/12337
	* init.c (build_new_1): Make sure that the expression returned is
	not an lvalue.

	PR c++/12344, c++/12236, c++/8656
	* decl.c (start_function): Do not ignore attributes embedded in a
	function declarator.

2003-10-06  Mark Mitchell  <>

	* ( Remove.
	(c++.dvi): Remove.
	(c++.generated-manpages): Replace with ...
	(generated-manpages): ... this.

2003-10-03  Gabriel Dos Reis  <>

	* decl.c (struct cp_binding_level): Move to name-lookup.h
	(current_binding_level): Likewise.
	(class_binding_level): Likewise.
	* cp-tree.h (enum scope_kind): Likewise.

2003-10-03  Gabriel Dos Reis  <>

	* name-lookup.c (binding_entry_free): Nullify name and type

2003-10-02  Mark Mitchell  <>

	PR c++/12486
	* typeck.c (finish_class_member_access_expr): Issue diagnostic
	on erroneous use of qualified name.

2003-09-30  Richard Henderson  <>

	PR c++/12370
	* decl.c (duplicate_decls): Copy DECL_SAVED_INSNS too.

2003-09-30  Kelley Cook  <>

	* g++spec.c: Convert to ISO C90 prototypes.
	* parser.c: Likewise.

2003-09-30  Gabriel Dos Reis  <>

	* decl.c (pop_binding): Don't mess with nullifying binding->scope
	* name-lookup.c: Re-format.
	(cxx_binding_free): Nullify binding->scope.

2003-09-29  Jan Hubicka  <>

	PR C++/12047
	* except.c (build_eh_type_type): Call mark_used on the type.

2003-09-28  Richard Henderson  <>

	* typeck.c (c_expand_asm_operands): Take location_t, instead of
	individual file and line.

2003-09-28  Andreas Jaeger  <>

	* decl.c (cxx_builtin_type_decls): Convert to ISO C90 function
	* init.c (push_base_cleanups): Likewise.
	* decl2.c (finish_file): Likewise.
	* mangle.c (init_mangle): Likewise.
	(dump_substitution_candidates): Likewise.
	* search.c: Likewise.

2003-09-27  Gabriel Dos Reis  <>

	* name-lookup.h (get_global_value_if_present): New function.
	(is_typename_at_global_scope): Likewise.
	* except.c (do_begin_catch): Use get_global_value_if_present.
	(do_end_catch): Likewise.
	(do_allocate_exception): Likewise.
	(do_free_exception): Likewise.
	(build_throw): Likewise.
	* parser.c (cp_parser_member_declaration): Likewise.
	* rtti.c (throw_bad_cast): Likewise.
	(throw_bad_typeid): Likewise.
	* decl.c (check_tag_decl): Use is_typename_at_global_scope.
	(grokdeclarator): Likewise.
	* cp-tree.h (global_namespace): Move to name-lookup.h
	* call.c (call_builtin_trap): Tidy.

2003-09-27  Kriang Lerdsuwanakij  <>

	PR c++/11415
	* parser.c (cp_parser_nested_name_specifier_opt): Issue correct
	error message when parser->scope is global_namespace.

2003-09-27  Gabriel Dos Reis  <>

	* cp-tree.h, name-lookup.h, decl.c, decl2.c: Remove reference to

2003-09-26  Gabriel Dos Reis  <>

	* decl.c (pop_binding_level, suspend_binding_level,
	find_class_binding_level): Merge into leave_scope.  Remove.
	(leave_scope):  New function.
	(poplevel): Update.
	(poplevel_class): Likewise.
	(pop_namespace): Likewise.

2003-09-25  Kriang Lerdsuwanakij  <>

	PR c++/5655
	* parser.c (cp_parser_check_access_in_redeclaration): New function.
	(cp_parser_member_declaration): Use it.
	(cp_parser_template_declaration_after_export): Likewise.

2003-09-22  Gabriel Dos Reis  <>

	* cp-tree.h (scope_kind): Add new enumerator.
	(keep_next_level): Change parameter type to bool.
	(begin_scope):  Change prototype.
	(pushlevel): Remove declaration.
	* decl.c (push_binding_level): Fold in begin_scope.  Remove.
	(struct cp_binding_level): Remove tag_tranparent field.  Make keep
	of bitsize one.
	(keep_next_level_flag): Make a bool.
	(cxx_scope_descriptor): Update scope names table
	(make_cxx_scope): Fold in begin_scope.  Remove..
	(namespace_scope_ht_size): New function.
	(begin_scope): Change prototype.  Return a scope.  Tidy.
	(kept_level_p): Update.
	(pushlevel): Remove.
	(maybe_push_cleanup_level): Simplify.
	(poplevel): Update for sk_cleanup and keep change.
	(print_binding_level): Likewise.
	(initial_push_namespace_scope): Fold in begin_scope.  Remove.
	(push_namespace): Update.
	(pushtag): Likewise.
	(lookup_tag): Likewise.
	(lookup_name_current_level): Likewise.
	(lookup_type_current_level): Likewise.
	(cxx_init_decl_processing): Likewise.
	(start_function): Likewise.
	(begin_function_body): Likewise.
	(start_method): Likewise.
	* pt.c (push_inline_template_parms_recursive): Likewise.
	(begin_template_parm_list): Likewise.
	(begin_specialization): Likewise.
	* semantics.c (do_pushlevel): Likewise.
	(begin_compound_stmt): Likewise.
	(begin_stmt_expr): Likewise.

2003-09-21  Richard Henderson  <>

	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
	method.c, optimize.c, pt.c, semantics.c, tree.c: Revert.

2003-09-21  Richard Henderson  <>

	* class.c, cp-tree.h, decl.c, decl2.c, error.c, init.c,
	method.c, optimize.c, pt.c, semantics.c, tree.c: Update for
	DECL_SOURCE_LOCATION rename and change to const.

2003-09-20  Richard Henderson  <>

	* decl.c, decl2.c, pt.c: Use %J in diagnostics.

2003-09-20  Kriang Lerdsuwanakij  <>

	PR c++/157
	* parser.c (cp_parser_direct_declarator): Clear
	parser->num_template_parameter_lists when parsing function
	(cp_parser_constructor_declarator_p): Likewise.

2003-09-19  Kriang Lerdsuwanakij  <>

	PR c++/495
	* pt.c (tsubst_friend_class): Only use innermost template
	arguments for the injected friend class template.

2003-09-19  Nathan Sidwell  <>

	PR c++/12332
	* pt.c (instantiate_class_template): Increment
	processing_template_decl around the tsubst of a template member

2003-09-19  Gabriel Dos Reis  <>

	* decl.c (cxx_scope_descriptor): Fix thinko.
	(struct cp_binding_level): Adjust type of binding_depth field.

2003-09-18  Danny Smith  <>

	PR c++/12320
	* call.c (type_passed_as): Check for incomplete type.
	(convert_for_arg_passing): Likewise.

2003-09-18  Nathan Sidwell  <>

	PR c++/9848
	* optimize.c (maybe_clone_body): Don't set MARK_USED on parameters
	* semantics.c (expand_body): Set it here on the remaining clones.

2003-09-18  Roger Sayle  <>

	* lex.c (init_operators): Remove operator_name_info for FFS_EXPR.
	* class.c (instantiate_type): Remove FFS_EXPR case.

2003-09-18  Volker Reichelt  <>

	* ChangeLog: Fix recent commit.

2003-09-18  Volker Reichelt  <>

	* ChangeLog: Add PR number to patch for PR c++/12316.

2003-09-18  Gabriel Dos Reis <>

	* error.c (dump_type): Simplify.  Use pp_type_specifier_seq for
	"C" types.
	* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Fix thinko.

2003-09-17  Richard Henderson  <>

	* semantics.c (expand_body): Don't save/restore input_location.

2003-09-17  Mark Mitchell  <>

	PR c++/12266
	* cp-tree.h (tsubst_flags_t): Add tf_conv.
	* class.c (standard_conversion): Pass tf_conv to
	(resolve_address_of_overloaded_function): Do not call mark_used
	when just checking conversions.

	PR debug/12066
	* cp-lang.c (LANG_HOOKS_BUILTIN_TYPE_DECLS): Define.
	* cp-tree.h (cxx_builtin_type_decls): Declare.
	* decl.c (builtin_type_decls): New variables.
	(cxx_builtin_type_decls): New function.
	(record_builtin_type): Add to builtin_type_decls.

2003-09-17  Richard Henderson  <>

	PR c++/12316
	* semantics.c (expand_or_defer_fn): Inc/dec function_depth.

2003-09-16  Kriang Lerdsuwanakij  <>

	PR c++/7939
	* typeck.c (comptypes): Don't ICE when its first argument is
	(compparms): Reverse the arguments of same_type_p.

2003-09-15  Nathan Sidwell  <>

	PR c++/12184
	* typeck.c (convert_arguments): Return error_mark_node for an
	incomplete parameter. Make error message more informative.

2003-09-12  Mark Mitchell  <>

	PR c++/3907
	* class.c (maybe_note_name_used_in_class): Refine test for whether
	or not we are in a class scope.

	* cp-tree.h (language_function): Remove x_expanding_p.
	(expanding_p): Remove.
	(doing_semantic_analysis_p): Remove.
	(scope_kind): Add sk_function_parms, sk_class,
	(innermost_scope_kind): New method.
	* call.c (cxx_type_promotes_to): Use type_decays_to.
	* cp-lang.c (LANG_HOOKS_PUSHLEVEL): Redefine.
	* decl.c (cp_binding_level): Remove parm_flag, template_parms_p,
	template_spec_p, namespace_p, is_for_scope, is_try_scope, and
	is_catch_scope.  Add kind and explicit_spec_p.
	(cxx_scope_descriptor): Use a lookup table.
	(find_class_binding_level): Use "kind" field in binding_level, not
	the various flags.
	(pop_binding_level): Likewise.
	(innermost_nonclass_level): Likewise.
	(toplevel_bindings_p): Likewise.
	(namespace_bindings_p): Likewise.
	(template_parm_scope_p): Likewise.
	(innermost_scope_kind): New method.
	(current_tmpl_spec_kind): Use "kind" field in binding_level, not
	the various flags.
	(pushlevel): Remove check for doing_semantic_analysis_p.
	(begin_scope): Simplify.
	(add_decl_to_level): Use "kind" field in binding_level, not
	the various flags.
	(push_local_binding): Likewise.
	(pop_label): Remove check for doing_semantic_analysis_p.
	(poplevel): Use "kind" field in binding_level, not
	the various flags.
	(set_block): Remove check for doing_semantic_analysis_p.
	(pushlevel_class): Use "kind" field in binding_level, not
	the various flags.
	(poplevel_class): Likewise.
	(initial_push_namespace_scope): Likewise.
	(maybe_push_to_top_level): Likewise.
	(set_identifier_type_value_with_scope): Likewise.
	(pop_everything): Likewise.
	(maybe_process_template_type_declaration): Likewise.
	(pushtag): Likewise.
	(pushdecl): Likewise.
	(pushdecl_with_scope): Likewise.
	(check_previous_goto_1): Likewise.
	(define_label): Likewise.
	(finish_case_label): Likewise.
	(lookup_tag): Likewise.
	(unqualified_namespace_lookup): Likewise.
	(lookup_name_real): Likewise.
	(lookup_name_current_level): Likewise.
	(lookup_type_current_level): Likewise.
	(record_builtin_type): Likewise.
	(cp_make_fname_decl): Likewise.
	(maybe_inject_for_scope_var): Likewise.
	(cp_finish_decl): Remove check for doing_semantic_analysis_p.
	(start_function): Use begin_scope, not pushlevel.
	(finish_function): Use "kind" field in binding_level, not
	the various flags.
	(start_method): Use begin_scope, not pushlevel.
	(make_label_decl): Do not check expanding_p.
	(save_function-data): Do not set expanding_p.
	(cxx_push_function_context): Do not clear expanding_p.
	* semantics.c (cxx_expand_function_start): Do not set expanding_p.

2003-09-14  Mark Mitchell  <>

	* class.c (layout_class_type): Make DECL_MODE match TYPE_MODE for
	an bit-field whose width exceeds that of its type.

2003-09-14  Geoffrey Keating  <>

	* rtti.c (get_tinfo_decl): Set TREE_PUBLIC for typeinfo decls.

2003-09-14  Kazu Hirata  <>

	* ChangeLog: Follow spelling conventions.
	* parser.c: Likewise.

2003-09-13  Richard Henderson  <>

	* decl2.c (finish_file): Check cgraph_assemble_pending_functions
	during relaxation loop.

2003-09-11  David Edelsohn  <>

	* decl2.c (var_finalized_p): Swap arms of conditional.

2003-09-10  Nathan Sidwell  <>

	PR c++/11788
	* typeck.c (build_address): If it is a function, mark it used.
	(build_unary_op): Do not lose object's side-effects when taking
	address of static member function.
	* class.c (resolve_address_of_overloaded_function): Use
	tsubst_flags_t parameter. Only expect overload sets. Adjust.
	(instantiate_type): Adjust flags passing. Do not lose object's
	side-effects when taking address of static member function.

2003-09-11  Richard Henderson  <>

	* semantics.c (expand_or_defer_fn): Update for new
	cgraph_finalize_function argument.

2003-09-10  Richard Henderson  <>

	* decl2.c (cxx_callgraph_analyze_expr): Mark argument unused.

2003-09-10  Jan Hubicka  <>

	* decl2.c (var_finalized_p): New.
	(maybe_emit_vtables, write_out_vars, finish_file): Use it.

2003-09-10  Richard Henderson  <>

	* decl2.c (cxx_callgraph_analyze_expr): New, from corpse of
	(lower_function): Remove.
	* cp-tree.h: Update to match.

2003-09-09  Richard Henderson  <>

	* semantics.c (expand_or_defer_fn): Update call to

	* semantics.c (expand_or_defer_fn): Use cgraph_finalize_function

	* decl2.c (finish_file): Avoid out-of-bounds array reference
	during memmove.

2003-09-09  Richard Henderson  <>

	* decl2.c (mark_member_pointers): Rename from
	mark_member_pointers_and_eh_handlers and don't check eh handlers.

2003-09-09  Christian Ehrhardt  <>

	PR bootstrap/12168
	* method.c (use_thunk): Clear DECL_RTL of copied nodes.

2003-09-08  Mark Mitchell  <>

	* cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to

	PR c++/11786
	* decl2.c (add_function): Do not complain about seeing the same
	non-function twice.
	* semantics.c (perform_koenig_lookup): Improve documentation.

	PR c++/5296
	* pt.c (try_one_overload): Add addr_p parameter.
	(resolve_overloaded_unification): Pass it.

2003-09-08  Richard Henderson  <>

	* optimize.c (maybe_clone_body): Inc/dec function_depth.

2003-09-08  Richard Henderson  <>

	* decl.c (finish_function): Clear current_function_decl.
	* decl2.c (mark_used): Don't push/pop gc context.
	* optimize.c (optimize_function): Likewise.
	* tree.c (cp_cannot_inline_tree_fn): Likewise.
	* pt.c (instantiate_decl): Inc/dec function_depth instead.
	* semantics.c (expand_body): Update for tree_rest_of_compilation
	nested argument.

2003-09-07  Gabriel Dos Reis  <>

	PR c++/11762
	* error.c (dump_decl): Handle namespace-alias-definition.
	* decl.c (warn_extern_redeclared_static): There is no point in
	checking changes in storage class specifier for a namespace
	(duplicate_decls): Tidy diagnostic message.
	* cxx-pretty-print.c (pp_cxx_left_brace): New macro.
	(pp_cxx_right_brace): Likewise.
	(pp_cxx_original_namespace_definition): New function.
	(pp_cxx_namespace_alias_definition): Likewise.
	(pp_cxx_declaration): Use them.  Handle NAMESPACE_DECLs.

2003-09-07  Jan Hubicka  <>

	* decl2.c (maybe_emit_vtables, write_out_vars, finish_file):
	Avoid re-emitting variables in unit-at-a-time mode.

2003-09-06  Mark Mitchell  <>

	PR c++/11867
	* call.c (standard_conversion): Improve comments.
	(perform_direct_initialization): Make sure we return an expression
	of the correct type.
	* typeck.c (build_static_cast): Check for ambiguity and
	accessibility when performing conversions.

2003-09-06  Gabriel Dos Reis  <>

	* cp-tree.h (add_binding): Remove declaration.
	* name-lookup.h (supplement_binding): Declare.
	* decl.c (add_binding): Move to name-lookup.c.
	(push_local_binding): Adjust.
	(push_class_binding): Likewise.
	(set_identifier_type_value_with_scope): Likewise.
	* name-lookup.c (supplement_binding): Rename from add_binding.
	Return a bool.  Improve documentation.
	(set_namespace_binding): Adjust.
	* (cp/name-lookup.o): Depend on toplev.h

2003-09-06  Nathan Sidwell  <>

	PR c++/11794
	* class.c (pushclass): Push dependent using decls for nested
	classes of templates too.

2003-09-06  Roger Sayle  <>

	PR c++/11409
	* class.c (resolve_address_of_overloaded_function): When building
	list of matching non-template function decls, ignore anticipated
	declarations of undeclared or shadowed GCC builtins.

2003-09-06  Steven Bosscher  <>

	PR c++/11595
	* decl.c (define_label): Remove unreachable timevar pop.
	Always return the decl, even if the definition is invalid.

2003-09-06  Nathan Sidwell  <>

	PR c++/12167
	* parser.c (cp_parser_late_parsing_default_args): Push & pop the
	unparsed functions queue.

2003-09-05  Mark Mitchell  <>

	PR c++/12163
	* call.c (perform_direct_initialization): Correct logic for
	direct-initialization of a class type.

	PR c++/12146
	* pt.c (lookup_template_function): Robustify.

2003-09-05  Nathan Sidwell  <>

	PR c++/11922
	* pt.c (tsubst_qualified_id): Make sure we get a non-type.
	(tsubst_expr, tsubst_copy_and_build): Pass false, not zero, as
	is_type_p to lookup_qualified_name.

	* semantics.c (finish_call_expr): Refactor some code.

	PR c++/12037
	(build_min_non_dep): Declare.
	* tree.c (build_min): Propagate TREE_SIDE_EFFECTS.
	(build_min_non_dep): New.
	* cvt.c (convert_to_void): Don't explicitly copy
	* call.c (build_new_method_call): Use build_min_non_dep.
	* decl2.c (grok_array_decl): Likewise.
	(build_offset_ref_call_from_tree): Likewise.
	* typeck.c (finish_class_member_access_expr,
	build_x_indirect_ref, build_x_binary_op, build_x_unary_op,
	build_x_conditional_expr, build_x_compound_expr): Likewise.
	(build_static_cast, build_reinterpret_cast,
	build_const_cast): Propagate TREE_SIDE_EFFECTS inside a template.
	* typeck2.c (build_x_arrow): Use build_min_non_dep.
	(build_functional_cast): Propagate TREE_SIDE_EFFECTS inside a
	* rtti.c (build_dynamic_cast_1): Set DECL_IS_PURE.
	(build_dynamic_cast): Set TREE_SIDE_EFFECTS.
	* pt.c (build_non_dependent_expr): Check COMPOUND_EXPR_OVERLOADED.

2003-09-04  Richard Henderson  <>

	* decl2.c (mark_member_pointers_and_eh_handlers): Update for
	change in cgraph_mark_needed_node arguments.

2003-09-02  Geoffrey Keating  <>

	PR 12161
	* decl2.c (mark_used): Use ggc_push_context/ggc_pop_context.
	* tree.c (cp_cannot_inline_tree_fn): Likewise.

2003-09-04  Nathan Sidwell  <>

	* cp-tree.h (finish_sizeof, finish_alignof): Remove.
	(expr_sizeof): Replace with ...
	(cxx_sizeof_or_alignof_expr): ... here.
	(cxx_sizeof_or_alignof_type): Make complain parameter a bool.
	* parser.c (cp_parser_unary_expression): Commonize alignof and
	sizeof handling.
	* pt.c (tsubst_copy_and_build): Adjust alignof and sizeof
	* semantics.c (finish_sizeof, finish_alignof): Remove.
	* typeck.c (cxx_sizeof_or_alignof_type): Complain parameter
	becomes bool. Set TREE_READONLY.
	(expr_sizeof): Replace with ...
	(cxx_sizeof_or_alignof_expr): ... here. Clear TREE_SIDE_EFFECTS.

2003-09-04  Mark Mitchell  <>

	Remove cast-as-lvalue extension.
	* call.c (build_conditional_expr): Correct formatting.
	(convert_like_real): Use lvalue_p, not non_cast_lvalue_p.
	(initialize_real): Use real_lvalue_p, not real_non_cast_lvalue_p.
	* cp-tree.h (non_cast_lvalue_p): Remove.
	(real_non_cast_lvalue_p): Remove.
	(non_cast_lvalue_or_else): Remove.
	* tree.c (lvalue_p_1): Remove allow_cast_as_lvalue parameter.
	(real_lvalue_p): Adjust call to lvalue_p_1.
	(non_cast_lvalue_p): Remove.
	(non_cast_lvalue_or_else): Remove.
	(lvalue_p): Adjust call to lvalue_p_1.
	(lvalue_or_else): Simplify.
	* typeck.c (build_unary_op): Use lvalue_or_else, not
	(build_static_cast): Use real_lvalue_p, not real_non_cast_lvalue_p.

2003-09-03  DJ Delorie  <>

	* decl.c (finish_function): Pass fndecl to aggregate_value_p.

2003-09-03  Mark Mitchell  <>

	PR c++/12053
	* class.c (include_empty_classes): Correct logic for ABI version 1.

2003-09-03  Richard Henderson  <>

	* optimize.c (optimize_function): Push/pop ggc context around
	the call to optimize_inline_calls.

2003-09-02  Scott Brumbaugh  <>

	PR c++/11553
	* parser.c (cp_parser_decl_specifier_seq): Add check for a
	duplicate friend decl-specifier.

2003-09-02  Mark Mitchell  <>

	PR c++/11847
	* pt.c (convert_nontype_argument): Correct representation of
	REFERENCE_TYPE expressions.

	PR c++/11808
	* cp-tree.h (KOENIG_LOOKUP_P): New macro.
	(finish_call_expr): Change prototype.
	* parser.c (cp_parser_postfix_expression): Adjust call to
	* pt.c (tsubst_copy_and_build): Use KOENIG_LOOKUP_P.
	* semantics.c (finish_call_expr): Add koenig_p parameter.

2003-09-01  Mark Mitchell  <>

	PR c++/12114
	* cp-tree.h (initialize_reference): Change prototype.
	* call.c (initialize_reference): Add cleanup parameter.
	* decl.c (grok_reference_init): Likewise.
	(check_initializer): Likewise.
	(cp_finish_decl): Insert a CLEANUP_STMT if necessary.
	(duplicate_decls): When replacing an anticipated builtin, do not
	* typeck.c (convert_for_initialization): Correct call to

	PR c++/11972
	* pt.c (dependent_type_p_r): Pass only the innermost template
	arguments to any_dependent_template_arguments_p.

2003-09-01  Josef Zlomek  <>

	* error.c (dump_expr): Kill BIT_ANDTC_EXPR.
	* lex.c (init_operators): Kill BIT_ANDTC_EXPR.
	* pt.c (tsubst_copy): Kill BIT_ANDTC_EXPR.
	* typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR.
	(tsubst_copy_and_build): Kill BIT_ANDTC_EXPR.

2003-08-29  Mark Mitchell  <>

	PR c++/12093
	* pt.c (build_non_dependent_expr): Do not build a

	PR c++/11928
	* search.c (add_conversions): Avoid adding two conversion
	operators for the same type.

2003-08-29  Mark Mitchell  <>

	PR c++/6196
	* pt.c (tsubst_copy_and_build): Correct handling of
	address-of-label extension.
	* semantics.c (finish_goto_stmt): The address of a label must go
	through the lvalue-to-rvalue conversion.

2003-08-29  Richard Henderson  <>
	    Jason Merrill <>

	* cp-lang.c (LANG_HOOKS_RTL_EXPAND_START): New.
	* cp-tree.h (cxx_expand_function_start): Declare.
	* decl.c (start_function): Use allocate_struct_function.
	Move stmts_are_full_exprs_p assertion from expand_body.
	Do not free_after_parsing or free_after_compilation.
	(cxx_push_function_context): Move code to set struct function
	data from genrtl_start_function.
	* optimize.c (optimize_function): Don't inc/dec function_depth.
	* semantics.c (expand_body): Use tree_rest_of_compilation.
	(cxx_expand_function_start): Rename from genrtl_start_function,
	omit bits done by tree_rest_of_compilation.
	(genrtl_finish_function): Remove.
	(clear_decl_rtl): Move to ../tree-optimize.c.

2003-08-29  Gabriel Dos Reis  <>

	PR c++/11811
	* cxx-pretty-print.c (pp_cxx_canonical_template_parameter): New
	* cxx-pretty-print.h: Declare.
	* error.c (dump_template_parameter): Use it.
	(dump_type): Likewise.

2003-08-28  Mark Mitchell  <>

	* init.c (decl_constant_value): Deal with COND_EXPR specially.
	* call.c (build_conditional_expr): Revert previous patch.

	PR optimization/5079
	* call.c (build_conditional_expr): Use decl_constant_value to
	simplify the arguments.

2003-08-26  Dan Nicolaescu  <>

	* parser.c (struct cp_token): Use enum bitfields.
	(CP_TOKEN_BLOCK_NUM_TOKENS): Make sure cp_token_block fits in a
	512B allocation unit.
	(cp_parser_token_tree_map_node): Use enum bitfields.

2003-08-26  Nathan Sidwell  <>

	PR c++/11871
	* decl.c (push_class_level_binding): Correct old_decl value from
	my 2003-07-29 reorganization.

	* call.c (build_call): Don't set TREE_SIDE_EFFECTS here.
	(build_new_method_call): Add goto finish.
	* semantics.c (simplify_aggr_init_exprs_r): Don't set

2003-08-25  Richard Henderson  <>

	* cxx-pretty-print.c (pp_cxx_class_name): Remove unused function.

2003-08-25  Gabriel Dos Reis  <>

	* cxx-pretty-print.h (pp_cxx_flag_default_argument): New flag.
	(cxx_pretty_printer): Adjust base type.
	(pp_cxx_function_specifier): Declare.
	* cxx-pretty-print.c (pp_cxx_whitespace): New macro.
	(pp_cxx_left_paren): Likewise.
	(pp_cxx_right_paren): Likewise.
	(pp_cxx_dot): Likewise.
	(pp_cxx_arrow): Likewise.
	(pp_cxx_semicolon): Likewise.
	(pp_cxx_identifier): Likewise.
	(pp_cxx_cv_qualifier_seq): Likewise.
	(pp_cxx_storage_class_specifier): Likewise.
	(pp_cxx_expression_list): Likewise.
	(pp_cxx_space_for_pointer_operator): Likewise.
	(pp_cxx_init_declarator): Likewise.
	(pp_cxx_call_argument_list): Likewise.
	(pp_cxx_nonconsecutive_character): Tidy.
	(pp_cxx_conversion_function_id): New function.
	(pp_cxx_template_id): Likewise.
	(pp_cxx_template_keyword_if_needed): Likewise.
	(pp_cxx_nested_name_specifier): Likewise.
	(pp_cxx_unqualified_id): Tidy
	(pp_cxx_qualified_id): Handle more nodes.
	(pp_cxx_primary_expression): Tidy.
	(pp_cxx_postfix_expression): Likewise.
	(pp_cxx_new_expression): Tidy.
	(pp_cxx_delete_expression): Likewise.
	(pp_cxx_cast_expression): New function.
	(pp_cxx_pm_expression): Tidy.
	(pp_cxx_conditional_expression): Likewise.
	(pp_cxx_assignment_operator): New function.
	(pp_cxx_assignment_expression): Tidy.
	(pp_cxx_expression): New function.
	(pp_cxx_function_specifier): Likewise.
	(pp_cxx_decl_specifier_seq): Likewise.
	(pp_cxx_simple_type_specifier): Tidy.
	(pp_cxx_type_specifier_seq): Likewise.
	(pp_cxx_ptr_operator): New function.
	(pp_cxx_implicit_parameter_type): Likewise.
	(pp_cxx_parameter_declaration): Tidy.
	(pp_cxx_parameter_declaration_clause): New function.
	(pp_cxx_exception_specification): Likewise.
	(pp_cxx_direct_declarator): Tidy.
	(pp_cxx_declarator): Likewise.
	(pp_cxx_ctor_initializer): New function.
	(pp_cxx_function_definition): Likewise.
	(pp_cxx_abstract_declarator): Tidy.
	(pp_cxx_direct_abstract_declarator): Likewise.
	(pp_cxx_type_id): Likewise.
	(pp_cxx_exception_declaration): New function.
	(pp_cxx_statement): Likewise.
	(pp_cxx_simple_declaration): Likewise.
	(pp_cxx_template_parameter_list): Likewise.
	(pp_cxx_template_parameter): Likewise.
	(pp_cxx_template_declaration): Likewise.
	(pp_cxx_explicit_specialization): Likewise.
	(pp_cxx_explicit_instantiation): Likewise.
	(pp_cxx_declaration): Tidy.
	(pp_cxx_pretty_printer_init): Initialize more fields.

2003-08-25  Mark Mitchell  <>

	PR c++/8795
	* cp-tree.h (build_cplus_method_type): Remove.
	* call.c (standard_conversion): Use build_method_type_directly
	instead of build_cplus_method_type.
	* class.c (build_clone): Likewise.
	(adjust_clone_args): Likewise.
	* decl.c (build_ptrmem_type): Likewise.
	(grokdeclarator): Likewise.
	(check_function_type): Likewise.
	* decl2.c (grok_method_quals): Likewise.
	(maybe_retrofit_in_chrg): Likewise.
	* pt.c (copy_default_args_to_explicit_spec): Likewise.
	(tsubst_function_type): Likewise.
	(tsubst): Likewise.
	* tree.c (build_cplus_method_type): Remove.
	* typeck.c (merge_types): Use build_method_type_directly.

2003-08-23  Kriang Lerdsuwanakij  <>

	PR c++/3765
	* search.c (dfs_access_in_type): Fix typo in comment.
	(dfs_accessible_queue_p): Likewise.
	(dfs_accessible_p): Only terminate when a friend is found.
	(accessible_p): Return immediately if access_in_type allows

2003-08-23  Kriang Lerdsuwanakij  <>

	PR c++/641, c++/11876
	* friend.c (add_friend): Add complain parameter.
	(make_friend_class): Likewise.
	(do_friend): Adjust add_friend call.
	* decl.c (grokdeclarator): Adjust make_friend_class call.
	* parser.c (cp_parser_member_declaration): Likewise.
	(cp_parser_template_declaration_after_export): Likewise.
	* pt.c (instantiate_class_template): Adjust make_friend_class
	and add_friend call.
	* cp-tree.h (make_friend_class): Adjust declaration.
	(add_friend): Likewise.

2003-08-21  Jason Merrill  <>

	PR c++/11283
	* call.c (build_conditional_expr): Ignore cv-qual differences for
	non-class types.

2003-08-21  Mark Mitchell  <>

	PR c++/11551
	* parser.c (cp_parser_id_expression): Add declarator_p parameter.
	(cp_parser_primary_expression): Adjust call to
	(cp_parser_unqualified_id): Complain about the use of
	typedef-names in a destructor declarator.
	(cp_parser_postfix_expression): Adjust call to
	(cp_parser_type_parameter): Likewise.
	(cp_parser_template_argument): Likewise.
	(cp_parser_declarator_id): Likewise.

	PR c++/11919
	* call.c (standard_conversion): Use same_type_p, not pointer
	equality, to compare types.

	PR c++/10762
	* parser.c (cp_parser_using_declaration): Check for invalid uses
	of template-ids here...
	* decl2.c (do_class_using_decl): ... rather than here.

2003-08-20  Mark Mitchell  <>

	PR c++/11834
	* pt.c (more_specialized): Bump processing_template_decl.

2003-08-21  Jason Merrill  <>

	PR c++/11614
	* decl.c (grokdeclarator): Recognize a flexible array based on the
	type, not the form of the declarator.

2003-08-20  Jason Merrill  <>

	* semantics.c (simplify_aggr_init_expr): Split out from
	simplify_aggr_init_exprs_r.  Convert slot address to match
	the return type.
	* cp-tree.h: Declare it.
	* tree.c (cp_copy_res_decl_for_inlining): Don't clobber the
	DECL_NAME of a user variable.

2003-08-20  Nathan Sidwell  <>

	PR c++/11945
	* pt.c (build_non_dependent_expr): Look inside COND_EXPR and
	* semantics.c (finish_expr_stmt): Always convert to void.
	* typeck.c (build_x_compound_exp): Always convert to void.

2003-08-19  Mark Mitchell  <>

	PR c++/11684
	* cp-tree.h (grok_op_properties): Change prototype.
	* decl.c (grok_op_properties): Add complain parameter.
	(grokfndecl): Pass it.
	* pt.c (tsubst_decl): Adjust accordingly.

	PR c++/10926
	* decl.c (start_method): Return immediately if push_template_decl
	does not like the declaration.
	* pt.c (push_template_decl_real): Disallow member template

	PR c++/11036
	* cp-tree.h (add_binding): Add prototype.
	* class.c (add_method): Set TYPE_HAS_DESTRUCTOR if appropriate.
	(maybe_warn_about_overly_private_class): Use
	(pushclass): Adjust call to set_identifier_type_value.
	* decl.c (add_binding): Give it external linkage.
	(push_local_binding): Adjust call to add_binding.
	(push_class_binding): Likewise.
	(set_identifier_type_value_with_scope): Change prototype.  Use
	add_binding for global bindings.
	(set_identifier_type_value): Adjust accordingly.
	(pushtag): Likewise.
	(pushdecl): Use set_identifier_type_value, not
	(pushdecl_namespace_level): Adjust calls to
	(pushdecl_class_level): Likewise.
	(lookup_tag): Use select_decl.
	(select_decl): Improve comment.
	(record_builtin_type): Do not call pushdecl.
	(cxx_init_decl_processing): Do not call xref_tag for bad_alloc.
	(cp_finish_decl): Adjust call to set_identifier_type_value.
	(check_elaborated_type_specifier): Improve checks for invalid uses
	of typedefs.
	(xref_tag): Adjust call to check_elaborated_type_specifier.
	* decl2.c (grokclassfn): Do not set TYPE_HAS_DESTRUCTOR.
	* name-lookup.c (set_namespace_binding): Use add_binding.
	* parser.c (cp_parser_simple_type_specifier): Return a TYPE_DECL,
	rather than an IDENTIFIER_NODE, to represent built-in types, if
	requested by the caller.
	(cp_parser_postfix_expression): Adjust call.
	(cp_parser_type_specifier): Likewise.
	(cp_parser_elaborated_type_specifier): Adjust call to
	* typeck2.c (build_functional_cast): Do not perform name lookups.

	PR c++/10717
	* decl.c (expand_static_init): Remove unnecessary code.

2003-08-19  Andrew Pinski  <>

	PR c++/10538, PR c/5582
	* cp/cp-lang.c (LANG_HOOKS_DECL_UNINIT): Define.

2003-08-19  Kriang Lerdsuwanakij  <>

	PR c++/11174
	* init.c (build_offset_ref): Perform access checking for
	pointer to member correctly.

2003-08-19  Gabriel Dos Reis  <>

	* cp-lang.c (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Fix spelling.

2003-08-18  Nathan Sidwell  <>

	PR c++/11957
	* cp-tree.h (finish_stmt_expr): Add bool parameter.
	* init.c (finish_init_stmts): Pass true to finish_stmt_expr. Don't
	adjust the stmt_expr here.
	(build_vec_init): Use finish_stmt_expr_expr, convert result to
	array type.
	* parser.c (cp_parser_primar_expression): Adjust finish_stmt_expr
	* pt.c (tsubst_copy): Likewise.
	* semantics.c (finish_stmt_expr): Add parameter.

	* pt.c (instantiate_class_template): Push to class's scope before
	tsubsting base.

2003-08-17  Jan Hubicka  <>

	PR C++/11702
	* semantics.c (finish_id_expression): Mark all functions as used.

2003-08-16  Nathan Sidwell  <>

	PR c++/11512
	* cvt.c (convert_to_void): Indicate which side of conditional has
	no effects, and rhs of comma operator. Test for no sideeffect
	expressions here and always build a convert expr.
	* init.c (expand_default_init): Convert the init to void.
	* typeck.c (build_x_compound_expr): Do not check for side effects
	(build_compound_expr): Do not convert lhs when building a

2003-08-15  Nathan Sidwell  <>

	* cp-tree.def (NON_DEPENDENT_EXPR): Add operand.
	* decl2.c (build_offset_ref_call_from_tree): Use
	* error.c (dump_expr) <NON_DEPENDENT_EXPR case>: Dump the operand.
	* pt.c (build_non_dependent_expr): Set operand.

2003-08-14  Jan Hubicka  <>

	* decl2.c (mark_member_pointers): Rename to...
	(mark_member_pointers_and_eh_tinfos): ... this one; deal with eh tinfos
	(lower_function): Update call.
	* except.c (eh_type_info): Break out from ...
	(build_eh_type): ... here; tinfo is already used.
	(finish_eh_spec_block): Mark tinfos as used.
	* semantics.c (finish_handler_params): Mark tinfo as used.
	* cp-tree.h (eh_type_info): Declare.

2003-08-15  Nathan Sidwell  <>

	* pt.c (instantiate_class_template): Set location before
	substuting bases.

	* decl.c (make_typename_type): Use my_friendly_assert.
	* pt.c (tsubst_aggr_type): Rearrange context substitution.

2003-08-14  Jan Hubicka  <>

	* method.c (use_thunk): Expand body directly.

2003-08-12  Mark Mitchell  <>

	PR c++/11703
	* call.c (type_passed_as): Use TYPE_SIZE, not TYPE_PRECISION to
	determine whether or not to promote types.
	(convert_for_arg_passing): Likewise.
	* decl2.c (cp_build_parm_decl): Do not set DECL_ARG_TYPE in
	* pt.c (tsubst_decl): Do not expect it to be set.

	PR c++/9512
	PR c++/10923
	* cp-tree.h (check_elaborated_type_specifier): Declare.
	(handle_class_head): Remove.
	(note_got_semicolon): Likewise.
	(note_list_got_semicolon): Likewise.
	(finish_class_definition): Likewise.
	* decl.c (check_elaborated_type_specifier): Make it public.
	(handle_class_head): Remove.
	* parser.c (cp_parser_elaborated_type_specifier): Use
	(cp_parser_class_specifier): Do not call finish_class_definition.
	(cp_parser_class_head): Or handle_class_head.  Check for
	over-qualified names.
	* semantics.c (finish_class_definition): Remove.

	* parser.c (cp_parser_check_for_definition_in_return_type): New
	(cp_parser_simple_declaration): Adjust call to
	(cp_parser_decl_specifier_seq): Change type of
	declares_class_or_enum parameter.
	(cp_parser_explicit_instantiation): Adjust accordingly.
	(cp_parser_type_specifier): Change type of
	declares_class_or_enum parameter.
	(cp_parser_init_declarator): Add declares_class_or_enum
	(cp_parser_parameter_declaration): Adjust call to
	(cp_parser_function_definition): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_single_declaration): Likewise.

	* cp-tree.h (lang_type_class): Remove has_call_overloaded,
	has_array_ref_overloaded, has_arrow_overloaded, and got_semicolon.
	* class.c (check_bases): Do not set them.
	(finish_struct_1): Likewise.
	* decl.c (cp_finish_decl): Do not set CLASSTYPE_GOT_SEMICOLON.
	(build_ptrmemfunc_type): Likewise.
	(grok_op_properties): Do not set TYPE_OVERLOADS_*.
	(start_function): Do not check CLASSTYPE_GOT_SEMICOLON.
	* decl2.c (grokfield): Do not set CLASSTYPE_GOT_SEMICOLON.
	* lex.c (note_got_semicolon): Remove.
	(note_list_got_semicolon): Likewise.
	* parser.c (cp_parser_simple_declaration): Do not call
	* pt.c (list_eq): Remove.
	(lookup_template_class): Do not set CLASSTYPE_GOT_SEMICOLON.
	(instantiate_class_template): Do not set TYPE_OVERLOADS*.
	(instantiate_class_template): Do not set CLASSTYPE_GOT_SEMICOLON.
	* ptree.c (cxx_print_type): Do not print them.
	* semantics.c (finish_member_class_template): Do not call

2003-08-11  Aldy Hernandez  <>

	* call.c (standard_conversion): Opaque pointers interconvert.

	* testsuite/g++.dg/other/opaque-3.C: New.

2003-08-11  Mark Mitchell  <>

	* typeck.c (merge_types): Handle cv-qualified pointer-to-member
	types correctly.

2003-08-10  Mark Mitchell  <>

	PR c++/11789
	* cp-tree.h (get_vbase): Remove.
	(get_vbase_types): Remove.
	* init.c (expand_member_init): Correct logic for looking up base

2003-08-10  Gabriel Dos Reis  <>

	* error.c (dump_expr): Tidy.
	* cxx-pretty-print.c (pp_cxx_nonconsecutive_character): New.
	(pp_cxx_begin_template_argument_list): Likewise.
	(pp_cxx_end_template_argument_list): Likewise.
	(is_destructor_name): Likewise.
	(pp_cxx_unqualified_id): Likewise.
	(pp_cxx_qualified_id): Likewise.
	(pp_cxx_id_expression): Likewise.
	(pp_cxx_new_expression): Likewise.
	(pp_cxx_delete_expression): Likewise.
	(pp_cxx_pm_expression): Likewise.
	(pp_cxx_type_specifier): Rework.
	(pp_cxx_type_id): Likewise.
	(pp_cxx_primary_expression): Likewise.
	(pp_cxx_postfix_expression): Likewise.
	(pp_cxx_unary_expression): Likewise.
	(pp_cxx_multiplicative_expression): Likewise.
	(pp_cxx_conditional_expression): Likewise.
	(pp_cxx_assignment_expression): Likewise.
	(pp_cxx_pretty_printer_init): Tidy.

2003-08-10  Nathan Sidwell  <>

	NODE is always a TREE_VEC of nonzero size.
	(NUM_TMPL_ARGS): NODE is always a TREE_VEC.
	* decl2.c (arg_assoc): Template args will be a vec.
	* error.c (dump_decl) <TEMPLATE_ID_EXPR case>: Call
	(dump_template_parms): Args will be a vec.
	* parser.c (cp_parser_template_argument_list): Produce a
	vector, not a list.
	* pt.c (coerce_template_parms): Args are always vectors.
	(mangle_class_name_for_template): Likewise.
	(lookup_template_function): Likewise.
	(lookup_template_class): Likewise.
	(tsubst_template_args): Likewise.
	(tsubst_baselink): Use tsubst_template_args.
	(tsubst_qualified_id): Likewise.
	(tsubst_copy) <TEMPLATE_ID_EXPR case>: Likewise.
	(tsubst_copy_and_build) <TEMPLATE_ID_EXPR case>: Likewise.
	(any_dependent_template_args_p):  Args are always vectors.
	* tree.c (cp_tree_equal): Add TEMPLATE_ID_EXPR case.

	PR c++/11670
	* call.c (convert_like_real): Add rvalue binding error message.
	* error.c (dump_expr) <NOP_EXPR case>: Detect when the no expr is
	really a cast.

	PR c++/10530
	* pt.c (dependent_type_p_r): A dependent template-id is a class
	type with dependent template arguments, or a bound template
	template parameter.
	(type_dependent_expression_p): A template function decl cannot
	have a dependent context.

2003-08-07  Kriang Lerdsuwanakij  <>

	PR c++/5767
	* parser.c (cp_parser_class_name): Return immediately when scope
	is error_mark_node.

2003-08-07  Aldy Hernandez  <>

	* cp/ (cp/call.o): Add dependency for target.h.

	* cp/call.c (standard_conversion): Support opaque types.
	Include target.h.
	(strip_top_quals): Use cp_build_qualified_type instead of

	* cp/typeck.c (convert_for_assignment): Support opaque types.

	* testsuite/g++.dg/other/opaque-1.C: New.

	* testsuite/g++.dg/other/opaque-2.C: New.

2003-08-06  Aldy Hernandez  <>

	* decl.c (grokparms): Use cp_build_qualified_type instead

2003-08-05  Gabriel Dos Reis  <>

	* cxx-pretty-print.h: New file.
	* cxx-pretty-print.c: Likewise.
	* error.c (scratch_pretty_printer): Change type.
	(init_error): Tidy.
	(dump_aggr_type): Likewise.
	(dump_global_iord): Likewise.
	(dump_expr): Likewise.
	(dump_char): Remove.
	(cxx_initialize_diagnostics): New function.
	* (CXX_OBJS): Add cp/cxx-pretty-print.o
	(CXX_PRETTY_PRINT_H): New variable.
	(cp/cxx-pretty-print.o): New rule.
	(cp/cp-lang.o): Update dependence.
	(cp/error.o): Likewise.

2003-08-05  Steven Bosscher  <>

	* cp-tree.h (struct lang_decl): Don't include c_lang_decl.
	* decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P
	if decl is a FUNCTION_DECL.  This never made sense, but now it is
	required to avoid a tree check failure.
	* decl.c (grokfndecl): Don't touch DID_INLINE_FUNC.
	* optimize.c (maybe_clone_body): Likewise.

2003-08-04  Roger Sayle  <>

	* decl.c (cxx_insert_default_attributes): Delete.
	* cp-tree.h (cxx_insert_default_attributes): Don't prototype.
	* cp-lang.c (LANG_HOOKS_INSERT_DEFAULT_ATTRIBUTES): Don't define.

2003-08-03  Nathan Sidwell  <>

	PR c++/11704
	* pt.c (type_dependent_expression_p): Cope with COMPONENT_REF with
	unknown type.

	PR c++/11766
	* typeck.c (comp_ptr_ttypes_real): Don't loop on pointers to
	member functions.

2003-08-02  Nathan Sidwell  <>

	PR c++/9447
	* cp-tree.def (USING_DECL): Document its type.
	* class.c (pushclass): If we're entering a template, push any
	dependent using decls it has.
	* decl2.c (do_class_using_decl): Refactor. Type is NULL iff it is
	a dependent scope.
	* pt.c (tsubst_decl) <USING_DECL case>: Set type.
	(tsubst): Remove USING_DECL checks.
	(type_dependent_expression_p): Remove USING_DECL case.
	* semantics.c (finish_member_declaration): A USING_DECL's type
	indicates whether it is dependent.

2003-08-02  Nathan Sidwell  <>

	* cp-tree.h (pushclass): Remove unneeded parameter.
	* class.c (pushclass): Remove unneeded MODIFY parm. Adjust.
	(push_nested_class): Adjust pushclass call.
	* pt.c (instantiate_class_template): Likewise.
	* semantics.c (begin_class_definition): Likewise.

2003-08-01  Nathanael Nerode  <>

	* typeck2.c (add_exception_specifier): Use 'bool' where appropriate.

2003-08-01  Mark Mitchell  <>

	PR c++/11697
	* decl.c (decls_match): Don't ignore the types of template

	PR c++/11744
	* pt.c (tsubst_copy_and_build): Refine Koenig lookup logic.

2003-08-01  Kriang Lerdsuwanakij  <>

	PR c++/8442, c++/8806
	* decl.c (qualify_lookup): Accept TEMPLATE_DECL if types are
	(check_elaborated_type_specifier): Add allow_template_p
	parameter.  Check tag mismatch and class template.
	(xref_tag): Add template_header_p parameter.  Add assertion
	that name is an IDENTIFIER_NODE.  Remove implicit typename
	warning.  Simplify lookup process if globalize is true.
	(cxx_init_decl_processing): Adjust call to xref_tag.
	(xref_tag_from_type): Likewise.
	* decl2.c (handle_class_head): Likewise.
	* parser.c (cp_parser_elaborated_type_specifier,
	cp_parser_class_head): Likewise.
	* rtti.c (init_rtti_processing, build_dynamic_cast1,
	tinfo_base_init, emit_support_tinfos): Likewise.
	* class.c (is_base_of_enclosing_class): Remove.
	* pt.c (convert_template_argument): Don't accept RECORD_TYPE as
	template template argument.
	* cp-tree.h (xref_tag): Adjust declaration.
	(is_base_of_enclosing_class): Remove.
	* NEWS: Document template template argument change.

2003-08-01  Nathan Sidwell  <>

	* parser.c (cp_parser_init_declarator,
	cp_paser_member_declaration): Reformat.
	* pt.c (lookup_template_class, type_unification_real, unify,
	type_dependent_expression_p): Reformat.

	PR c++/11295
	* cp-tree.h (tubst_flags_t): Add tf_stmt_expr_cmpd,
	(finish_stmt_expr_expr): Declare.
	* parser.c (cp_parser_primary_expression): Tell
	cp_parser_compount_statement that it is a statement expression.
	(cp_parser_statement, cp_parser_labeled_statement,
	cp_parser_compound_statement, cp_parser_statement_seq_opt): Add
	in_statement_expr_p parameter.
	(cp_parser_expression_statement): Likewise. Call
	finish_stmt_expr_expr for final expression of a statement
	cp_parser_already_scoped_statement, cp_parser_function_definition,
	cp_parser_try_block, cp_parser_handled): Adjust.
	* pt.c (tsubst_copy) <STMT_EXPR case>: Pass tf_stmt_expr.
	(tsubst_expr): Process tf_stmt_expr and tf_stmt_exprs flags.
	(tsubst_expr) <EXPR_STMT case>: Check tf_stmt_exprs flag.
	* semantics.c (finish_expr_stmt): Do not deal with statement
	(begin_stmt_expr): Clear last_expr_type.
	(finish_stmt_expr_expr): New.
	(finish_stmt_expr): Process the value expression.

	* typeck.c (build_compound_expr): If RHS is a TARGET_EXPR, put the
	compound expr inside the target's initializer.

	PR c++/11525
	* parser.c (cp_parser_primary_expression): Do not set
	non-constant-p merely because it is a dependent scope.

	PR c++/9447
	* decl2.c (do_class_using_decl): Set type to NULL_TREE.
	* semantics.c (finish_expr_stmt): Do not convert to void in a

2003-07-31  Nathan Sidwell  <>

	* pt.c (coerce_template_parms): Refactor.
	(fn_type_unification): Increment processing_template_decl when
	tsubsting an incomplete set of explicit args.

	PR c++/11347
	* pt.c (instantiate_class_template): Increment
	processing_template_decl around the tsubst of a template member
	(tsubst_qualified_id): Assert we do not have a dependent scope.

	* pt.c (coerce_template_template_parms, lookup_template_class,
	can_complete_type_without_circularity, instantiate_class_template,
	tsubst_decl, unify): Reformat.

2003-07-31  Jan Hubicka  <>

	* decl2.c (maybe_make_one_only): Use mark_referenced.
	* method.c (use_thunk): Likewsie.

2003-07-30  Jan Hubicka  <>

	* class.c (build_vtable_entry_ref): Kill.
	(build_vtbl_ref_1): Do not call build_vtable_entry_ref.
	(build_vfn_ref): Do not call build_vtable_entry_ref.
	* cp-tree.h (prepare_assemble_variable): Kill.
	* cp-decl.c (prepare_assemble_variable): Kill.

2003-07-29  Geoffrey Keating  <>

	* parser.c (cp_lexer_new_main): Use c_common_no_more_pch instead
	of setting valid_pch by hand.

2003-07-29  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>

	* decl.c (finish_enum): Initialize underlying_type.

2003-07-29  Nathan Sidwell  <>

	PR c++/9447
	* decl.c (add_binding): Add bval local variable.
	(push_class_level_binding): Likewise. Allow a USING_DECL to be
	* decl2.c (do_class_using_decl):  The type of a using decl is
	* parser.c (cp_parser_postfix_expression): Refactor unqualified-id
	function call lookup code.
	* pt.c (tsubst): A USING_DECL will have unknown type.
	(tsubst_copy_and_build): Allow a using decl.
	(type_dependent_expression_p): A USING_DECL will make it
	* semantics.c (finish_member_declaration): Push a dependent using

2003-07-28  Mark Mitchell  <>

	PR c++/11530
	* parser.c (cp_parser_postfix_expression): Do not call mark_used.
	* semantics.c (finish_id_expression): Call mark_used for all

2003-07-28  Mark Mitchell  <>

	PR c++/11667
	* call.c (standard_conversion): Allow all integral->enumeral
	conversions, after marking them as bad.
	* decl.c (finish_enum): Make sure that all enumerators are
	properly converted to the underlying type.
	(build_enumerator): Set DECL_CONTEXT for namespace-scope
	enumeration types.
	* pt.c (tsubst_copy): Adjust handling of CONST_DECLs accordingly.
	(tsubst_enum): Tidy.

	* (typeck.o): Depend on convert.h.
	(class.o): Likewise.
	(rtti.o): Likewise.
	* call.c: Include convert.h.
	(convert_arg_to_ellipsis): Use convert_to_real.
	* class.c: Include convert.h.
	(build_base_path): Use convert_to_integer.
	* rtti.c: Include convert.h.
	(build_headof): Use convert_to_integer.
	* typeck.c: Include convert.h.
	(decay_conversion): Use convert_to_integer.
	(build_unary_op): Use build_nop.
	(get_delta_difference): Use convert_to_integer.
	(build_ptrmemfunc): Avoid unnecessary conversions.

2003-07-28  Jan Hubicka  <>

	* decl2.c (mark_member_pointers): Verify that member pointer points to
	the function.

2003-07-28  Nathan Sidwell  <>

	* cp-tree.h (begin_compound_stmt): No scope arg is a bool.
	(finish_compound_stmt): Remove no scope arg.
	* decl.c (register_dtor_fn): Adjust begin_compound_stmt and
	end_compound_stmt calls.
	(expand_static_init, begin_destructor_body, begin_function_body,
	finish_function_body): Likewise.
	* decl2.c (start_objects, finish_objects,
	finish_static_storage_duration_function): Likewise.
	* init.c (begin_init_stmts, finish_init_stmts,
	construct_virtual_base, build_vec_init): Likewise.
	* method.c (do_build_assign_ref, synthesize_method): Likewise.
	* parser.c (cp_parser_compound_statement,
	cp_parser_already_scoped_statement): Likewise.
	* pt.c (tsubst_expr): Likewise.
	* semantics.c (begin_compound_stmt): No scope arg is a bool.
	(finish_compound_stmt): Remove no scope arg.

	* error.c (dump_expr) <COMPOUND_EXPR case>: A compound expr is
	always dyadic.

2003-07-27  Mark Mitchell  <>

	* call.c (standard_conversion): Tweak handling of
	pointer-to-member types.
	* pt.c (tsubst): Correctly qualify pointers-to-data member types.
	* typeck.c (comp_ptr_ttypes_real): Check qualifiers on
	pointer-to-data member types.

2003-07-27  Nathan Sidwell  <>

	* parser.c (cp_parser_type_parameter): Reformat.
	(cp_parser_parameter_declaration): Deprecate default args where
	not allowed.

2003-07-26  Nathan Sidwell  <>

	* cfns.h: Rebuilt.

	* cp-tree.h (begin_init_stmts, finish_init_stmts): Remove.
	(begin_global_stmt_expr, finish_global_stmt_expr): Remove.
	* init.c (begin_init_stmts): Make static. Return is_global
	value. Always call begin_stmt_expr.
	(finish_init_stmts): Make static. Add is_global parm. Always
	building a stmt tree.
	(build_aggr_init): Adjust begin_init_stmts, finish_init_stmts calls.
	(build_vec_init): Likewise. Always building a stmt tree.
	(expand_default_init): Always building a stmt tree.
	(get_temp_regvar): Likewise.
	* semantics.c (begin_global_stmt_expr,
	finish_global_stmt_expr): Remove.

2003-07-25  Nathan Sidwell  <>

	* cp-tree.h (build_compound_expr): Take LHS & RHS args.
	(build_x_compound_expr_from_list): Declare.
	* typeck.c (build_x_compound_expr_from_list): New.
	(build_x_compound_expr): Adjust.
	(build_compound_expr): Remove unreachable code. Take two
	parameters, adjust.
	* decl.c (grok_reference_init): Use
	(expand_static_init): Adjust build_compound_expr call.
	(cxx_maybe_build_cleanup): Likewise.
	* init.c (perform_member_init): Use
	(build_new_1): Likewise.
	(build_vec_delete): Adjust build_compound_expr calls.
	(build_vbase_delete): Likewise.
	* typeck2.c (store_init_value): Use
	(build_functional_cast): Likewise.

2003-07-25  Nathan Sidwell  <>

	* cp-tree.h (enum tsubst_flags_t): Add tf_user.
	* decl.c (make_typename_type): Pass it.
	* pt.c (lookup_template_class): Use it.
	(resolve_typename_type): Pass it.
	* semantics.c (finish_template_type): Pass it.

2003-07-25  Nathan Sidwell  <>

	PR c++/11617
	* cp-tree.h (qualified_name_lookup_error): Declare.
	* pt.c (tsubst_qualified_id): Use qualified_name_lookup_error for
	(tsubst_expr) <DECL_STMT case>: Likewise.
	(tsubst_copy_and_build) <COMPONENT_REF case>: Likewise.
	* semantics.c (qualified_name_lookup_error): New, broken out of ...
	(finish_id_expression): ... here. Use it.

2003-07-25  Falk Hueffner  <>

	* cfns.gperf: Add '%%' delimiter to placate gperf 3.0.

2003-07-25  Nathan Sidwell  <>

	PR c++/11596
	* pt.c (maybe_fold_nontype_arg, maybe_fold_nontype_args): Remove.
	(tsubst_template_arg): New.
	(tsubst_template_arg_vector): Rename to ...
	(tsubst_template_args): ... this. Accept a TREE_LIST form. Use
	(coerce_template_parms): Use tsubst_template_arg for default
	(tsubst_template_parms): Likewise.
	(tsubst_aggr_type): Adjust.
	(tsubst_decl): Likewise.
	(tsubst): Use tsubst_template_arg for a DOMAIN. Adjust.
	(tsubst_copy) <TEMPLATE_ID_EXPR case>: Use tsubst_template_args.

2003-07-25 Gabriel Dos Reis  <>

	* (cp/error.o): Depend on DIAGNOSTIC_H.
	* error.c: Use the new pretty-printer framework.

2003-07-24  Per Bothner  <>

	* decl.c (pushdecl_class_level): Don't use push_srcloc/pop_srcloc
	which causes errors messages to incorrectly mention included files.

2003-07-24  Mark Mitchell  <>

	* cp-tree.h (convert_to_base_statically): Declare.
	* call.c (build_special_member_call): Convert INSTANCE to the base
	* class.c (convert_to_base_statically): New method.
	* init.c (construct_virtual_base): Use it.
	* method.c (do_build_assign_ref): Fix typo in comment.

2003-07-24  Jason Merrill  <>

	* decl.c: Just set truthvalue_* to boolean_*.

2003-07-24  Nathan Sidwell  <>

	* decl.c (reshape_init): Remove unreachable code.

2003-07-24  Kriang Lerdsuwanakij  <>

	PR c++/11513
	* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): Use current_scope.

2003-07-23  Mark Mitchell  <>

	PR c++/11645
	* cp-tree.h (accessible_base_p): Declare.
	* call.c (build_over_call): Use it.
	* search.c (accessible_base_p): New function, split out from ...
	(lookup_base): ... here.

	PR c++/11517
	* call.c (build_conditional_expr): Use perform_implicit_conversion
	and error_operand_p.  Robustify.
	* typeck.c (build_unary_op): Use perform_implicit_conversion.

2003-07-23  Nathan Sidwell  <>

	PR c++/10953
	* parser.c (cp_parser_nested_name_specifier): Reset scope on
	(cp_parser_elaborated_type_specifier): Likewise.

2003-07-22  Mark Mitchell  <>

	Eliminate use of POINTER_TYPE for pointers-to-members.
	* call.c (standard_conversion): Rework pointer-to-member handling.
	Add comments.
	(add_builtin_candidate): Likewise.
	(resolve_scoped_fn_name): Remove.
	(build_conditional_expr): Rework pointer-to-member handling.
	(compare_ics): Likewise.
	* class.c (check_field_decls): Use TYPE_PTR_P.
	* cp-lang.c (cp_var_mod_type_p): Rework pointer-to-member
	(TYPE_PTRMEM_P): Add comment.
	(TYPE_PTR_P): Simplify.
	(TYPE_PTROB_P): Correct definition.
	(TYPE_PTR_TO_MEMBER_P): New macro.
	(resolved_scoped_fn_name): Remove declaration.
	(build_offset_ref): Change prototype.
	(resolve_offset_ref): Remove.
	(comp_target_types): Remove.
	* cvt.c (cp_convert_to_pointer): Rework pointer-to-member
	(convert_to_reference): Use can_convert.
	(ocp_convert): Improve error handling.  Rework pointer-to-member
	(perform_qualification_conversions): Rework pointer-to-member
	* decl.c (build_ptrmem_type): Handle functions too.
	(create_array_type_for_decl): Remove OFFSET_TYPE error message.
	(grokdeclarator): Use OFFSET_TYPE for pointers to data members.
	(grokparms): Remove OFFSET_TYPE error message.
	* dump.c (cp_dump_tree): Rework pointer-to-member handling.
	* error.c (dump_type_prefix): Likewise.
	* expr.c (cplus_expand_constant): Use build_nop.
	* init.c (build_offset_ref): Add address_p parameter.  Fold in
	necessary bits from resolve_offset_ref.
	(resolve_offset_ref): Remove.
	* parser.c (cp_parser_postfix_expression): Remove special case
	code for OFFSET_TYPE.
	* pt.c (convert_nontype_argument): Rework pointer-to-member
	(convert_template_argument): Likewise.
	(unify): Likewise.
	(invalid_nontype_parm_type_p): Likewise.
	(dependent_type_p_r): Likewise.
	* rtti.c (get_tinfo_decl): Remove OFFSET_TYPE special case.
	(target_incomplete_p_): Rework pointer-to-member
	(get_pseudo_ti_init): Likewise.
	(get_pseudo_ti_desc): Likewise.
	* semantics.c (finish_qualified_id_expr): Adjust call to
	build_offset_ref.  Remove use of resolve_offset_ref.
	* tree.c (pod_type_p): Use TYPE_PTR_TO_MEMBER_P.
	* typeck.c (target_type): Use TYPE_PTRMEM_P.
	(type_unknown_p): Remove obsolete code about the time before
	non-dependent expressions were handled correctly.
	(qualify_type_recursive): Remove.
	(composite_pointer_type_r): New function.
	(composite_pointer_type): Use it.
	(merge_types): Remove dead comments.
	(comp_cv_target_types): Remove.
	(comp_target_types): Likewise.
	(comp_target_parms): Likewise.
	(cxx_sizeof_or_alignof_type): Remove OFFSET_TYPE error.
	(build_indirect_ref): Use TYPE_PTR_TO_MEMBER_P.
	(build_binary_op): Do not use of comp_target_types.
	(pointer_diff): Remove OFFSET_TYPE case.
	(build_unary_op): Adjust pointer-to-member handling.
	(unary_complex_lvalue): Likewise.
	(check_for_casting_away_constness): Add description parameter.
	(build_static_cast): Pass it.
	(build_reinterpret_cast): Use check_for_casting_away_constness.
	(build_const_cast): Adjust pointer-to-member handling.
	(build_c_cast): Likewise.
	(convert_for_assignment): Remove OFFSET_TYPE error message.
	(comp_ptr_ttypes_real): Adjust pointer-to-member handling.
	(comp_ptr_ttypes_reinterpret): Remove.
	(casts_away_constness_r): Adjust pointer-to-member handling.
	(casts_away_constness): Liekwise.
	(strip_all_pointer_quals): Remove.
	* typeck2.c (digest_init): Adjust pointer-to-member handling.
	(build_m_component_ref): Likewise.

2003-07-22  Wolfgang Bangerth  <>

	* lex.c (unqualified_fn_lookup_error): Mention that the error
	message needs to be kept in synch with the manual.

2003-07-22  Nathan Sidwell  <>

	PR c++/11614
	* decl.c (grokdeclarator): An array member is only a flexible
	array member if the field itself is the array.

2003-07-22  Kriang Lerdsuwanakij  <>

	PR c++/10793
	* decl.c (xref_basetypes): Handle error_mark_node.

2003-07-22  Nathan Sidwell  <>

	* cp-tree.h (enum cp_lvalue_kind): Add clk_packed.
	* tree.c (lvalue_p_1): Set it.
	* class.c (check_field): Don't allow non-packed non-POD fields to
	be packed.
	* call.c (reference_binding): Need a temporary for all bitfield
	and packed fields.
	(convert_like_real): Check it is ok to make a temporary here.

2003-07-21  Nathan Sidwell  <>

	* cp-tree.h (hack_identifier): Remove.
	* method.c (hack_identifier): Remove.
	* semantics.c (finish_id_expression): Expand hack_identifier
	here. Simplify.

2003-07-19  Kaveh R. Ghazi  <>

	* call.c class.c decl.c decl2.c g++spec.c lex.c parser.c pt.c rtti.c
	semantics.c typeck.c: Remove unnecessary casts.

2003-07-18  Nathan Sidwell  <>

	* cp-tree.h (hack_identifier): Remove.
	* method.c (hack_identifier): Remove.
	* semantics.c (finish_id_expression): Expand hack_identifier
	here. Simplify.

2003-07-18  Nathan Sidwell  <>

	* cp-tree.h (finish_non_static_data_member): Add object param.
	* method.c (hack_identifier): Adjust.
	* pt.c (tsubst_copy_and_build) <COMPONENT_REF case>: Don't search
	again for a FIELD_DECL.
	* semantics.c (finish_non_static_data_member): Add object
	parameter. Always save the DECL in the COMPONENT_REF.
	* call.c (resolve_scoped_fn_name): Adjust.

2003-07-17  Zack Weinberg  <>

	* pt.c (get_bindings): Make definition consistent with
	forward declaration.

2003-07-17  Kriang Lerdsuwanakij  <>

	PR c++/7809
	* friend.c (add_friend): Check access for member functions
	and templates.

2003-07-17  Gabriel Dos Reis  <>

	PR c++/10668
	* typeck.c (build_class_member_access_expr): Improve diagnostic.

2003-07-16  Mark Mitchell  <>

	PR c++/11547
	* decl.c (duplicate_decls): Merge
	* parser.c (cp_parser_postfix_expression): Adjust call to
	cp_parser_initializer_list and
	(cp_parser_parenthesized_expression_list): Add non_constant_p.
	(cp_parser_new_placement): Adjust call to
	(cp_parser_direct_new_declarator): Likewise.
	(cp_parser_conditional_expression): Remove.
	(cp_parser_constant_expression): Parse an assignment-expression,
	not a conditional-expression.
	(cp_parser_simple_declaration): Resolve expression/declaration
	ambiguity more quickly.
	(cp_parser_mem_initializer): Adjust call to
	(cp_parser_init_declarator): Keep track of whether or not the
	initializer is a constant-expression.
	(cp_parser_initializer): Add non_constant_p parameter.
	(cp_parser_initializer_clause): Likewise.
	(cp_parser_initializer_list): Likewise.
	(cp_parser_attribute_list): Adjust call to
	(cp_parser_functional_cast): Likewise.
	* pt.c (tsubst_decl): Copy
	(tsubst_expr): Tweak use of DECL_PRETTY_FUNCTION_P.
	* semantics.c (finish_id_expression): Use

2003-07-16  Neil Booth  <>

	* lang-options.h: Remove.

2003-07-16  Andrew Pinski  <>

	PR c/10962
	* class.c (field_decl_cmp): Remove.
	(resort_field_decl_cmp): Remove.
	(resort_sorted_fields): Remove.
	(add_fields_to_vec): Rename to ...
	(add_fields_to_record_type): this.
	(finish_struct_1): Change to be using
	sorted_fields_type's fields.
	* cp-tree.h (lang_decl): In lang_decl_u3
	change sorted_fields to be a pointer to
	(resort_sorted_fields): Remove prototype.
	* search.c (lookup_field_1): Change to be using
	sorted_fields_type's fields.

2003-07-16  Kriang Lerdsuwanakij  <>

	PR c++/5421
	* decl.c (grokdeclarator): Handle TEMPLATE_ID_EXPR if friend
	is a member of other class.
	* friend.c (do_friend): Don't build TEMPLATE_DECL if friend
	is a specialization of function template.

2003-07-16  Gabriel Dos Reis  <>

	PR c++/10903
	* pt.c (convert_nontype_argument): Fix thinko in diagnostic.

2003-07-15  Mark Mitchell  <>

	* cp-tree.def (LOOKUP_EXPR): Remove.
	* cp-tree.h (cp_id_kind): Add CP_ID_KIND_UNQUALIFIED_DEPENDENT.
	(get_bindings): Remove.
	(is_aggr_type_2): Remove.
	* call.c (resolved_scoped_fn_name): Remove support for
	* decl.c (grokfndecl): Likewise.
	(grokdeclarator): Likewise.
	* error.c (dump_decl): Likewise.
	(dump_expr): Likewise.
	* friend.c (do_friend): Likewise.
	* init.c (build_offset_ref): Likewise.
	* lex.c (unqualified_fn_lookup_error): Use pedwarn.  Do not create
	* mangle.c (write_expression): Remove support for LOOKUP_EXPR.
	* parser.c (cp_parser_postfix_expression): Modify Koenig lookup
	* pt.c (get_bindings): Give it internal linkage.
	(check_explicit_specialization): Remove support for LOOKUP_EXPR.
	(lookup_template_function): Likewise.
	(for_each_tempalte_parm_r): Likewise.
	(tsubst_decl): Likewise.
	(tsubst_qualified_id): Handle template template parameters.
	(tsubst_copy): Remove support for LOOKUP_EXPR.
	(tsubst_copy_and_build): Likewise.
	(most_general_template): Likewise.
	(value_dependent_expression_p): Likewise.
	(type_dependent_expression_p): Note that IDENTIFIER_NODEs are
	always dependent.
	* semantics.c (perform_koenig_lookup): Do not create
	(finish_fname): Likewise.
	(finish_id_expression): Likewise.
	* tree.c (is_aggr_type_2): Remove.

2003-07-16  Gabriel Dos Reis  <>

	PR c++/11531
	* typeck.c (check_return_expr): Fix thinko in diagnostic.

2003-07-15  Kriang Lerdsuwanakij  <>

	PR c++/10108
	* pt.c (tsubst_decl) <TEMPLATE_DECL>: Add a check for

2003-07-14  Mark Mitchell  <>

	PR c++/11509
	* pt.c (dependent_scope_ref_p): New function.
	(value_dependent_expression_p): Use it.
	(type_dependent_expression_p): Likewise.

	* pt.c (tsubst_friend_function): Use reregister_specialization.

	PR c++/7019
	* cp-tree.h (lookup_qualified_name): Adjust prototype.
	* decl.c (lookup_qualified_name): Add complain parameter.  Adjust
	call to is_aggr_type.
	* parser.c (cp_parser_lookup_name): Adjust call to
	* pt.c (tsubst_qualified_id): Likewise.
	(tsubst_copy_and_build): Likewise.
	* semantics.c (finish_qualified_id_expr): Deal with erroneous

2003-07-14  Gabriel Dos Reis <>

	PR c++/11510
	* call.c (op_error): Properly format  REALPART_EXPR and
	* error.c (dump_expr): Likewise.

2003-07-14  Gabriel Dos Reis <>

	* error.c (dump_expr): Handle EMPTY_CLASS_EXPR.

2003-07-14  Gabriel Dos Reis  <>

	PR c++/5293
	* call.c (initialize_reference): Improve diagnostic.

2003-07-14  Kriang Lerdsuwanakij  <>

	PR c++/11154
	* pt.c (more_specialized_class): Add full_args parameter.
	(most_specialized_class): Adjust calls to more_specialized_class.
	* cp-tree.h (more_specialized_class): Adjust declaration.

2003-07-14  Dan Nicolaescu  <>

	* lex.c (enum tree_node_kind): Delete.

2003-07-13  Mark Mitchell  <>

	PR c++/11503
	* cp-tree.h (DECL_SELF_REFERENCE_P): New macro.
	* class.c (build_self_reference): Use SET_DECL_SELF_REFERENCE_P.
	* pt.c (tsubst_decl): Copy it.
	* search.c (lookup_base): Use DECL_SELF_REFERENCE_P.

	* pt.c (reregister_specialization): Fix thinko in previous change.

	* cp-tree.h (cp_id_kind): New type.
	(unqualified_name_lookup_error): Change prototype.
	(unqualified_fn_lookup_error): New function.
	(do_identifier): Remove.
	(do_scoped_id): Likewise.
	(tsubst_copy_and_build): Change prototype.
	(reregister_specialization): New function.
	(perform_koenig_lookup): Likewise.
	(finish_id_expression): Likewise.
	* call.c (build_method_call): Adjust call to
	* decl.c (duplicate_decls): Use reregister_specialization.
	* lex.c (is_global): Remove.
	(unqualified_name_lookup_error): Return a value.
	(do_identifier): Remove.
	(do_scoped_id): Likewise.
	(identifier_typedecl_value): Remove.
	(unqualified_fn_lookup_error): New function.
	* parser.c (cp_parser_id_kind): Remove.
	(cp_parser_non_constant_id_expression): Remove.
	(cp_parser_primary_expression): Use finish_id_expression.
	(cp_parser_class_or_namespace_name): Use cp_id_kind, not
	(cp_parser_postfix_expression): Use perform_koenig_lookup.
	(cp_parser_template_argument): Use cp_id_kind.
	(cp_parser_fold_non_dependent_expr): Adjust call to
	* pt.c (unregister_specialization): Rename to ...
	(reregister_specialization): This.
	(tsubst_friend_function): Use it.
	(maybe_fold_nontype_arg): Adjust call to tsubst_copy_and_build.
	(tsubst_qualified_id): Likewise.
	(tsubst_expr): Likewise.
	(tsubst_copy_and_build): Add function_p parameter.  Use
	finish_id_expression.  Introduce RECUR macro.
	(tsubst_non_call_postfix_expression): New function.
	(regenerate_decl_from_template): Use reregister_specialization.
	* semantics.c (perform_koenig_lookup): New function.
	(finish_id_expression): Likewise.

2003-07-13  Kriang Lerdsuwanakij  <>

	* pt.c (push_access_scope_real): Remove.
	(push_access_scope): Move code from push_access_scope_real.
	(pop_access_scope): Don't check for TEMPLATE_DECL.
	(instantiate_template): Defer access checking during template
	(regenerate_decl_from_template): Tidy.

2003-07-11  Nathanael Nerode  <>

	PR c++/11437
	* operators.def: Add definitions for __imag__, __real__.

2003-07-11  Nathan Sidwell  <>

	PR c++/11050
	* parser.c (cp_parser_expression_list): Rename to ...
	(cp_parser_parenthesized_expression_list): ... here. Add attribute
	parameter, parse the surounding parentheses.
	(cp_parser_skip_to_closing_parenthesis): Add recover and or_comma
	parameters. Return int.
	(cp_parser_skip_to_closing_parenthesis or comma): Remove.
	(cp_parser_postfix_expression): Adjust function call parsing.
	(cp_parser_new_placement): Adjust.
	(cp_parser_new_initializer): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_selection_statement): Likewise.
	(cp_parser_mem_initializer): Likewise.
	(cp_parser_asm_definition): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_declarator): Make
	cdtor_or_conv_p an int ptr.
	(cp_parser_direct_declarator): Likewise. Check for a parameter
	list on cdtors & conv functions.
	(cp_parser_initializer): Adjust.
	(cp_parser_member_declaration): Adjust.
	(cp_parser_attribute_list): Move code into
	(cp_parser_functional_cast): Adjust.
	* pt.c (type_dependent_expression_p): Erroneous expressions are

2003-07-11  Geoffrey Keating  <>

	* decl.c (cp_finish_decl): Handle 'used' attribute.

	* cp-lang.c (c_reset_state): New dummy routine.
	* cp-tree.h (finish_file): Move prototype to c-common.h.
	* parser.c (c_parse_file): Rename from yyparse; don't call finish_file.

2003-07-11  Mark Mitchell  <>

	PR c++/8327
	* pt.c (tsubst_qualified_id): Implement suggested resolution for
	Core Issue 2.
	(type_dependent_expression_p): Likewise.

2003-07-10  Mark Mitchell  <>

	* typeck.c (build_binary_op): Do not warn about signed
	vs. unsigned comparisons in the bodies of templates.

	PR c++/9411
	* parser.c (cp_parser_postfix_expression): Check dependency of

2003-07-09  Mark Mitchell  <>

	PR c++/10032
	* decl.c (cxx_init_decl_processing): With -pedantic, pedwarns are
	still errors.

	PR c++/10527
	* error.c (decl_to_string): Do not print default argument

	* cp-tree.h (break_out_calls): Remove declaration.
	* tree.c (break_out_calls): Remove.
	* typeck.c (build_modify_expr): Avoid invalid sharing of trees.

2003-07-09  Nathan Sidwell  <>

	PR c++ 9483
	* class.c (check_field_decls): Pass DECL_NAME to constructor_name_p.
	* decl2.c (constructor_name_p): Avoid repeated constructor_name
	* decl.c (grokdeclarator): Refactor ctor/dtor detection.

2003-07-09  Mark Mitchell  <>

	* typeck.c (build_x_unary_op): Take note of the fact that
	PREINCREMENT_EXPR and POSTINCREMENT_EXPR are binary operations on

	* parser.c (cp_parser_primary_expression): Preserve the form of
	qualified expressions in templates, even if they are not
	* pt.c (convert_nontype_argument): Handle non-dependent SCOPE_REFs.
	(tsubst_qualified_id): Likewise.
	* search.c (accessible_p): Treat everything in the body of a
	template as accessible.

2003-07-08  Mark Mitchell  <>

	* cp-tree.def (NON_DEPENDENT_EXPR): New node.
	* cp-tree.h (build_call_from_tree): Remove.
	(build_member_call): Likewise.
	(dependent_template_arg_p): Remove.
	(any_dependent_template_arguments_p): New function.
	(dependent_template_id_p): Likewise.
	(any_type_dependent_arguments_p): Likewise.
	(build_non_dependent_expr): Likewise.
	(build_non_dependent_args): Likewise.
	(build_x_compound_expr): Adjust prototype.
	* call.c (build_new_method_call): Handle non-dependent expressions
	* decl2.c (grok_array_decl): Likewise.
	(build_offset_ref_call_from_tree): Likewise.
	(build_call_from_tree): Remove.
	* error.c (dump_decl): Handle NON_DEPENDENT_EXPR.
	(dump_expr): Likewise.
	* init.c (build_member_call): Remove.
	* mangle.c (write_expression): Update handling for template-ids.
	* parser.c (cp_parser_primary_expression): Use
	any_dependent_template_arguments_p.  Update constant-expression
	(cp_parser_postfix_expression): Use
	any_type_dependent_arguments_p.  Simplify call processing.
	(cp_parser_unary_expression): Simplify.
	(cp_parser_expression): Adjust for changes to
	(cp_parser_template_argument): Implement standard-conforming
	parsing of non-type template arguments.
	(cp_parser_direct_declarator): Use
	(cp_parser_fold_non_dependent_expr): New function.
	(cp_parser_next_token_ends_template_argument_p): Likewise.
	* pt.c (convert_template_argument): Do not call
	(tsubst_baselink): Likewise.
	(tsubst_copy_and_build): Share common code.  Make sizeof/alignof
	processing work correctly for non-dependent expressions.  Adjust
	handling of COMPOUND_EXPR.  Simplify call processing.
	(value_dependent_expression_p): Deal with functional casts and
	sizeof/alignof correctly.
	(type_dependent_expression_p): Handle overloaded functions.
	(any_type_dependent_arguments_p): New function.
	(any_dependent_template_arguments_p): Likewise.
	(dependent_template_p): Treat SCOPE_REFs as dependent.
	(dependent_template_id_p): Simplify.
	(build_non_dependent_expr): New function.
	(build_non_dependent_args): Likewise.
	* semantics.c (finish_stmt_expr): Don't make dependent
	statement-expresions have void type.
	(finish_call_expr): Handle non-dependent expressions
	* tree.c (lvalue_p_1): Treat NON_DEPENDENT_EXPRs as lvalues.
	* typeck.c (cxx_sizeof_or_alignof_type): Give the expression
	type size_t, even in templates.
	(expr_sizeof): Likewise.
	(finish_class_member_access_expr): Handle non-dependent expressions
	(build_x_indirect_ref): Likewise.
	(build_x_binary_op): Likewise.
	(build_x_unary_op): Likewise.
	(build_x_conditional_expr): Likewise.
	(build_x_compound_expr): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

2003-07-09  Jan Hubicka  <>

	* decl.c (duplicate_decls): Use DECL_ESTIMATED_INSNS.
	(start_function): Use DECL_ESTIMATED_INSNS.
	* optimize.c (maybe_clone_body): Use DECL_ESTIMATED_INSNS.

	* decl2.c (maybe_emit_vtables): Fix marking vtables as needed in

2003-07-08  Kriang Lerdsuwanakij  <>

	PR c++/11030
	* pt.c (instantiate_class_template): Don't call xref_tag to
	inject name when the friend class is a specialization.

2003-07-07  Mark Mitchell  <>

	* cp-tree.h (build_scoped_method_call): Remove.
	(lookup_qualified_name): Remove parameter.
	(tsubst_copy_and_build): Declare.
	(finish_qualified_object_call_expr): Remove.
	(check_accessibility_of_qualified_id): New function.
	(finish_qualified_id_expr): Likewise.
	(non_reference): Likewise.
	(build_expr_from-tree): Remove.
	* call.c (non_reference): Remove.
	(build_scoped_method_call): Likewise.
	(build_method_call): Use error_operand_p.  Assert that we are not
	processing a template.
	(standard_conversion): Use non_reference.
	* class.c (build_vtbl_entry_ref): Likewise.
	(build_vtbl_ref_1): Likewise.
	* cvt.c (build_expr_type_conversion): Use non_reference.
	* decl.c (lookup_qualified_name): Remove flags parameter.
	(grok_op_properties): Use non_reference.
	* decl2.c (grok_array_decl): Likewise.
	(build_expr_from_tree): Remove.
	(build_offset_ref_call_from_tree): Update comment.
	* error.c (parm_to_string): Call reinit_global_formatting_buffer.
	* except.c (prepare_eh_types): Use non_reference.
	(can_convert_eh): Likewise.
	* init.c (build_dtor_call): Avoid using build_method_call.
	* mangle.c (write_template_param): Remove misleading comment.
	* method.c (locate_copy): Use non_reference.
	* parser.c (cp_parser_scope_through_which_access_occurs): Remove.
	(cp_parser_primary_expression): Do not create SCOPE_REFs is
	non-dependent contexts.
	(cp_parser_postfix_expression): Use finish_qualified_id_expr.
	(cp_parser_direct_declarator): Use tsubst_copy_and_build, not
	(cp_parser_lookup_name): Adjust call to lookup_qualified_name.
	Use check_accessibility_of_qualified_id.
	* pt.c (maybe_fold_nontype_arg): Use tsubst_copy_and_build, not
	(tsubst_baselink): New function.
	(tsubst_qualified_id): Likewise.
	(tsubst_copy): Use them.  Remove support for METHOD_CALL_EXPR.
	(tsubst_expr): Adjust call to lookup_qualified_name.
	(tsubst_copy_and_build): Handle SCOPE_REFs specially.  Adjust
	handling of CALL_EXPRs.
	(value_dependent_expression_p): Use INTEGRAL_OR_ENUMERATION_TYPE_P.
	* rtti.c (get_tinfo_decl_dynamic): Use non_reference.
	* search.c (check_final_overrider): Likewise.
	* semantics.c (check_accessibility_of_qualified_id): New function.
	(finish_qualified_object_call_expr): Remove.
	* typeck.c (target_type): Use non_reference.
	(cxx_sizeof_or_alignof_type): Likewise.
	(dubious_conversion_warnings): Likewise.
	(convert_for_initialization): Likewise.
	(non_reference): New function.

2003-07-07  Kaveh R. Ghazi  <>

	* decl.c (print_binding_level, print_other_binding_stack,
	print_binding_stack): Merge uses of HOST_PTR_PRINTF with adjacent
	stdio calls.
	* ptree.c (cxx_print_decl, cxx_print_binding): Likewise.

2003-07-07  Andreas Jaeger  <>

	* friend.c: Convert to ISO C90 prototypes.

	* ($(srcdir)/cp/cfns.h): Use ANSI-C as output
	* cfns.h: Regenerate.

	* typeck.c: Convert remaining prototypes to ISO C90.
	* search.c: Likewise.

	* decl2.c (build_expr_from_tree): Convert prototype to ISO C90.
	* semantics.c (expand_or_defer_fn): Likewise
	* mangle.c (discriminator_for_string_literal): Likewise.
	* g++spec.c (lang_specific_driver): Likewise.

	* search.c (lookup_base_r): Remove unused variable.

2003-07-07  Nathan Sidwell  <>

	* semantics.c: (genrtl_try_block) Adjust emit_line_note

2003-07-07  Andreas Jaeger  <>

	* search.c (lookup_base_r): Remove unused variable.

2003-07-06  Michael Chastain  <>

	PR debug/10055
	* lex.c (cxx_init): Call push_srcloc and pop_srcloc rather than
	assigning to input_filename directly.

2003-07-06  Kazu Hirata  <>

	* call.c: Fix comment formatting.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* error.c: Likewise.
	* method.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* typeck.c: Likewise.

2003-07-06  Mark Mitchell  <>

	PR c++/11345
	* search.c (lookup_base_r): Remove is_non_public and
	within_current_scope parameters.  Remove other dead code.
	(lookup_base): Adjust call to lookup_base_r.
	(adjust_result_of_qualified_name_lookup): Improve comment.
	* semantics.c (finish_call_expr): Use maybe_dummy_object.

2003-07-06  Neil Booth  <>


2003-07-05  Mark Mitchell  <>

	PR c++/11431
	* typeck.c (build_static_cast): Check for reference conversions

2003-07-04  Mark Mitchell  <>

	* cp-tree.h (perform_integral_promotions): Declare.
	* call.c (build_addr_func): Use decay_conversion.
	(convert_arg_to_ellipsis): Likewise.  Remove misleading comment.
	(convert_for_arg_passing): Use perform_integral_promotions.
	* cvt.c (build_expr_type_conversion): Use decay_conversion.
	(type_promotes_to): Do not return a cv-qualified type.
	* decl.c (grok_reference_init): Fix formatting.
	(get_atexit_node): Use decay_conversion.
	(build_enumerator): Use perform_integral_promotions.
	* init.c (build_vec_init): Use decay_conversion.
	* semantics.c (finish_expr_stmt): Likewise.
	(finish_switch_cond): Use perform_integral_promotions.
	* typeck.c (default_conversion): Likewise.
	(perform_integral_promotions): New function.
	(build_indirect_ref): Use decay_conversion.
	(build_array_ref): Use perform_integral_promotions.
	(convert_arguments): Use decay_conversion.
	(build_unary_op): Use perform_integral_promotions.
	(build_c_cast): Use decay_conversion.
	(build_modify_expr): Likewise.
	(convert_for_initialization): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

2003-07-04  Kazu Hirata  <>

	* call.c: Fix comment typos.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cvt.c: Likewise.
	* decl2.c: Likewise.
	* decl.c: Likewise.
	* init.c: Likewise.
	* mangle.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

2003-07-04  Zack Weinberg  <>

	* parser.c (cp_lexer_read_token): No need to handle string
	constant concatenation.

2003-07-03  Kaveh R. Ghazi  <>

	(cp_error_at, cp_warning_at, cp_pedwarn_at): Mark with

2003-07-03  Mark Mitchell  <>

	* call.c (build_addr_func): Handle bound pointers-to-members.
	(build_method_call): Do not call resolve_offset_ref.
	(implicit_conversion): Likewise.
	(resolve_scoped_fn_name): Use finish_non_static_data_member, not
	(resolve_args): Do not call resolve_offset_ref.
	(build_conditional_expr): Likewise.
	(build_new_method_call): Likewise.
	* cp-tree.def (OFFSET_REF): Update documentation.
	* cvt.c (cp_convert_to_pointer): Update handling of conversions from
	pointers to members to pointers.
	(ocp_convert): Do not call resolve_offset_ref.
	(convert_to_void): Likewise.
	(build_expr_type_conversion): Likewise.
	* decl2.c (delete_sanity): Likewise.
	* init.c (resolve_offset_ref): Simplify greatly.
	(build_vec_delete): Do not call resolve_offset_ref.
	* parser.c (cp_parser_postfix_expression): Call resolve_offset_ref
	if appropriate.
	(cp_parser_unary_expression): Use
	(cp_parser_delete_expression): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_pm_expression): Use cp_parser_binary_op.
	(cp_parser_simple_cast_expression): New function.
	* rtti.c (build_dynamic_cast_1): Do not call resolve_offset_ref.
	* semantics.c (finish_increment_expr): Likewise.
	(finish_typeof): Likewise.
	* tree.c (lvalue_p_1): Do not handle OFFSET_REF.
	* typeck.c (require_complete_type): Do not handle OFFSET_REFs.
	(decay_conversion): Do not call resolve_offset_ref.
	(finish_class_member_access_expr): Likewise.
	(convert_arguments): Likewise.
	(build_x_binary_op): Handle DOTSTAR_EXPR.
	(condition_conversion): Do not call resolve_offset_ref.
	(unary_complex_lvalue): Likewise.
	(build_static_cast): Likewise.
	(build_reinterpret_cast): Likewise.
	(build_const_cast): Likewise.
	(build_c_cast): Likewise.
	(build_modify_expr): Likewise.
	(convert_for_assignment): Likewise.
	(convert_for_initialization): Likewise.
	* typeck2.c (build_x_arrow): Likewise.
	(build_m_component_ref): Simplify.

	* call.c (build_scoped_method_call): Use convert_to_void.
	(build_method_call): Likewise.
	* class.c (check_field_decls): Remove dead code.
	* cvt.c (convert_from_reference): Remove OFFSET_TYPE handling.
	* decl2.c (grok_array_decl): Remove dead code.
	(arg_assoc_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
	as pointer-to-member representation.
	* init.c (build_offset_ref): Tidy.
	(build_vec_delete_1): Use convert_to_void.
	* mangle.c (write_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
	as pointer-to-member representation.

2003-07-03  Nathan Sidwell  <>

	PR c++/9162
	* decl.c (grokdeclarator): Return friend decls, not
	* decl2.c (grokfield): Alter friend decl check.
	* parser.c (struct cp_parser): Document default_arg chain on
	(cp_parser_save_default_args): New.
	(cp_parser_init_declarator, cp_parser_function_definition,
	cp_parser_member_declaration): Call it.
	(cp_parser_class_specifier): Remove unused variable. Alter
	processing of unparsed_functions_queue.

2003-07-03  Kaveh R. Ghazi  <>

	* class.c (add_method, check_field_decl): Fix format specifier.
	* decl.c (duplicate_decls, pushdecl, check_goto,
	fixup_anonymous_aggr, maybe_commonize_var, grokdeclarator,
	start_enum): Likewise.
	* decl2.c (ambiguous_decl): Likewise.
	* pt.c (redeclare_class_template): Likewise.

2003-07-02  Nathan Sidwell  <>

	PR c++/10219
	* pt.c (type_unification_real): Don't unify exprs of error type.
	* tree.c (error_type): Don't die on error_type.

	PR c++/9779
	* decl2.c (arg_assoc_class): Don't die on NULL type.
	* typeck.c (type_unknown_p): Don't die on untyped expressions.

2003-07-01  Mark Mitchell  <>

	PR c++/6949
	* decl2.c (grokfield): Create TEMPLATE_DECLs for methods in local

2003-07-01  Kaveh R. Ghazi  <>

	* error.c (locate_error): %P takes an `int', not a `tree'.

2003-07-02  Jan Hubicka  <>

	* decl2.c (defer_fn): Set DECL_DEFER_OUTPUT.
	(finish-file): Do not process function with DECL_DEFER_OUTPUT clear;
	clear DECL_DEFER_OUTPUT once function is processed; avoid flags

	* cp-tree.h (DECL_NEEDED_P): Support unit-at-a-time
	(expand_or_defer_fn): Declare.
	(lower_function): Declare.
	* decl.c (start_cleanup_fn): Use expand_or_defer_fn.
	* decl2.c: Include cgraph.h and varpool.h
	(maybe_emit_vtables):  Make explicit instantations as needed.
	(mark_member_pointers, lower_function): New functions.
	(finish_file): Do unit-at-a-time.
	* method.c (synthesize_method): Use expand_or_defer_fn.
	* optimize.c (maybe_clone_body): Use expand_or_defer_fn.
	* parser.c (cp_parser_function_definition_after_decl): Use
	* pt.c (instantiate_decl): Likewise.
	* semantics.c: Include cgraph.h
	(expand_or_defer_fn): Break out from ...
	(expand_body): ... here; deal with unit-at-a-time.

2003-07-01  Mark Mitchell  <>

	* call.c (resolve_scoped_fn_name): Return error_mark_node for
	erroneous cases.

2003-07-01  Mark Mitchell  <>

	PR c++/11149
	* call.c (resolve_scoped_fn_name): Check that the qualifying scope
	is a class type.

2003-07-01  Giovanni Bajo  <>

	PR c++/8046
	* error.c (dump_decl): Handle BIT_NOT_EXPR as
	pseudo destructor calls.

2003-07-01  Nathan Sidwell  <>

	* cp-tree.h (define_label): Replace filename and lineno
	arguments with a location_t.
	* decl.c (pop_label): Adjust define_label call.
	(define_label): Replace filename and lineno arguments with a
	* semantics.c (finish_label): Adjust define_label call.

2003-07-01  Mark Mitchell  <>

	PR c++/9559
	* decl2.c (grokfield): Do not build NOP_EXPRs around the

2003-06-30  Neil Booth  <>

	* Update.
	* cp-lang.c (c_language): Define.
	(LANG_HOOKS_INIT_OPTIONS): Use common hook.
	* cp-tree.h (cxx_init_options): Remove.
	* lex.c: Don't include diagnostic.h.
	(cxx_init_options): Remove.

2003-06-30  Giovanni Bajo  <>

	PR c++/4933
	* error.c (dump_expr): Support correctly the COMPOUND_EXPR
	tree generated within a template. Use dump_expr to dump an
	expression sizeof.

2003-06-30  Giovanni Bajo  <>

	* mangle.c (write_expression): Exit gracefully when trying to
	mangle a CALL_EXPR.

2003-06-30  Giovanni Bajo  <>

	PR c++/10750
	* parser.c (cp_parser_primary_expression): A VAR_DECL with a
	(value- or type-) dependent expression as DECL_INITIAL is a
	valid constant-expression (at parser time).

2003-06-30  Giovanni Bajo  <>

	PR c++/11106
	* error.c (dump_decl): Call dump_decl to dump the DECL_NAME for a
	USING_DECL, instead of print_tree_identifier.

2003-06-29  Gabriel Dos Reis  <>

	* cp-tree.h (language_to_string): Adjust declaration.
	* dump.c (cp_dump_tree): Adjust usage.
	* error.c (dump_char): Use output_formatted_scalar. Tidy.
	(parm_to_string): Lose unused parameter.  Tidy.
	(expr_to_string): Likewise.
	(code_to_string): Likewise.
	(language_to_string): Likewise.
	(op_to_string): Likewise.
	(assop_to_string): Likewise.
	(digit_buffer): Remove.
	(dump_type): Format builtin vector type as __vector__.

2003-06-29  Gabriel Dos Reis  <>

	* error.c (print_integer): Remove.
	(dump_type_suffix): Adjust.
	(dump_expr): Likewise.

2003-06-28  Nathan Sidwell  <>

	* error.c (print_instantiation_partial_context): Take a
	(print_instantiation_full_context): Adjust.
	(print_instantiation_context): Adjust.

	* cp-tree.h (cp_line_of, cp_file_of): Remove.
	* error.c (cp_line_of, cp_file_of): Merge into ...
	(location_of): ... here. Make static, return a location_t.
	(cp_error_at, cp_warning_at, cp_pedwarn_at): Adjust.

2003-06-28  Nathan Sidwell  <>

	PR c++/10784
	* call.c (joust): Move warn_conversion check outwards.

2003-06-27  Zack Weinberg  <>

	* decl.c (build_typename_type)
	* mangle.c (write_template_template_arg)
	* parser.c (cp_parser_scope_through_which_access_occurs)
	* pt.c (push_access_scope_real, push_access_scope, pop_access_scope)
	* repo.c (get_base_filename)
	* semantics.c (maybe_convert_cond):
	Mark the definition static, matching the forward declaration.

2003-06-27  Mark Mitchell  <>

	PR c++/10468
	* pt.c (tsubst): Handle qualified TYPEOF_TYPEs correctly.

2003-06-27  Mark Mitchell  <>

	PR c++/10796
	* decl.c (finish_enum): Implement DR377.

	* decl.c (cp_finish_decl): Don't make variables with reference
	type readonly while they are being initialized.

2003-06-26  Mark Mitchell  <>

	PR c++/11332
	* typeck.c (build_static_cast): Avoid returning expressions with
	reference type.

2003-06-26  Nathan Sidwell  <>

	* call.c (build_op_delete_call): Use strip_array_call. Correct
	error message to say 'delete' or 'delete[]'.

2003-06-26  Giovanni Bajo  <>

	PR c++/8266
	* pt.c (check_explicit_specialization): When looking up a
	template function from an identifier outside class-scope, bind

2003-06-25  Mark Mitchell  <>

	PR c++/10990
	* search.c (lookup_base_r): Rely on accessible_p, rather than
	trying to emulate that logic here.

	PR c++/10931
	* call.c (convert_like): Pass issue_conversion_warnings.
	(convert_like_with_context): Likewise.
	(convert_like_real): Add issue_conversion_warnings parameter.
	(perform_direct_initialization_if_possible): New function.
	* cp-tree.h (perform_direct_initialization_if_possible): Declare it.
	* typeck.c (check_for_casting_away_constness): New function.
	(build_static_cast): Rewrite.

2003-06-24  Nathan Sidwell  <>

	* call.c (enforce_access): Assert we get a binfo.
	(build_op_delete_call): Pass a binfo to
	* class.c (alter_access): Likewise.
	* decl.c (make_typename_type): Likewise.
	(make_unbound_class_template): Likewise.
	* lex.c (do_identifier): Likewise.
	* method.c (hack_identifier): Likewise.
	* parser.c (cp_parser_lookup_name): Likewise.
	* search.c (lookup_member): Likewise. Move IDENTIFIER_CLASS_VALUE
	* semantics.c (finish_non_static_data_member): Likewise.
	(perform_or_defer_access_check): Expect a binfo.
	* typeck.c (comptypes): Expect types.

	* mangle.c (find_substitution): Don't pass a non-type to same_type_p
	* friend.c (make_friend_class): Likewise.
	* pt.c (check_default_tmpl_args): Likewise.
	(lookup_template_class): Likewise.

2003-06-24  Jan Hubicka  <>

	* method.c (thunk_labelno): Move outside ifdef block to make garbage
	collector happy.

2003-06-24  Jan Hubicka  <>

	* class.c (build_vtable): Make vtables.
	* cp-tree.h (DECL_VTABLE_OR_VTT_P): New macro.
	* decl2.c (output_vtable_inherit): Rename to ...
	(prepare_assemble_variable): ... this one; change interface.
	(maybe_emit_vtables): Do not call output_vtable_inherit.
	* cp-tree.h (prepare_assemble_variable): New.

2003-06-23  Andrew Pinski <>

	* method.c: add prototype for make_alias_for_thunk.
	(thunk_labelno, make_alias_for_thunk): only define
	if ASM_OUTPUT_DEF is defined.

2003-06-23  Jakub Jelinek  <>

	* method.c (thunk_labelno): New variable.
	(make_alias_for_thunk): New function.
	(use_thunk): Use it if defined ASM_OUTPUT_DEF.  Put the thunk
	into the same section as the function it is calling.
	Include gt-cp-method.h.
	* (gt-cp-method.h): Depend on s-gtype.
	(cp/method.o): Depend on gt-cp-method.h.
	* (gtfiles): Add $(srcdir)/cp/method.c.

2003-06-23  Jan Hubicka  <>

	* decl.c (register_dtor_fn): Mark cleanup as used.
	* decl2.c (mark_vtable_entries): Skip nops.
	* rtti.c (get_tinfo_ptr): Mark tinfo as used.
	(build_dynamic_cast_1): Likewise.
	(tinfo_base_init): Likewise.
	(emit_tinfo_decl): Likewise.

2003-06-23  Jakub Jelinek  <>

	* mangle.c (hash_type): Val is the TREE_LIST itself, not a pointer
	to it.

2003-06-21  Gabriel Dos Reis <>

	PR c++/10784
	* call.c (joust): Warn about choosing conversion sequence only if

2003-06-21  Gabriel Dos Reis  <>

	PR c++/10864
	* call.c (op_error): Tidy.
	* error.c (dump_expr): Properly format 'T()' when T is an
	aggregate type.

2003-06-21  Gabriel Dos Reis <>

	PR c++/10915
	* decl.c (grok_op_properties): Warn possible confusing conversion
	only if -Wconversion.

2003-06-20  Mark Mitchell  <>

	PR c++/10749
	* parser.c (cp_parser_class_head): See through dependent names
	when parsing a class-head.

	PR c++/10845
	* pt.c (try_class_unification): Correct handling of member class

2003-06-20  Nathan Sidwell  <>

	* semantics.c (genrtl_finish_function): Adjust
	expand_function_end call.

2003-06-19  Mark Mitchell  <>

	PR c++/10939
	* pt.c (tsubst_decl): Do not try to substitute into non-dependent
	(value_dependent_expression_p): Correct logic for FUNCTION_DECLs.

	PR c++/9649
	* cp-tree.h (pushdecl_class_level): Change prototype.
	(push_class_level_binding): Likewise.
	* decl.c (add_binding): Reject duplicate static data members.
	(pushdecl_class_level): Return a value indicating whether or not
	the binding was valid.
	(push_class_level_binding): Likewise.
	* semantics.c (finish_member_declaration): Don't keep invalid

	PR c++/11041
	* call.c (initialize_reference): Do not use cp_finish_decl to emit
	temporary variables.
	* cp-tree.h (static_aggregates): Declare.
	(pushdecl_top_level_and_finish): Likewise.
	* decl.c (pushdecl_top_level_1): New function.
	(pushdecl_top_level): Use it.
	(pushdecl_top_level_and_finish): New function.
	(initialize_local_var): Remove redundant code.
	(cp_finish_decl): Remove support for RESULT_DECLs.  Don't check
	* decl.h (static_aggregates): Remove.
	* decl2.c (get_guard): Use pushdecl_top_level_and_finish.
	* rtti.c (get_tinfo_decl): Use pushdecl_top_level_and_finish.
	(tinfo_base_init): Likewise.

2003-06-19  Matt Austern  <>

	PR c++/11228
	* init.c (build_zero_init): Assert that number of array elements
	is an integer constant.
	(build_default_init) Don't use build_zero_init for arrays with
	variable number of elements.

2003-06-19  Andreas Jaeger  <>

	* cp-tree.h: Remove duplicated declarations.

2003-06-18  Nathanael Nerode  <>

	* pt.c: Convert to ISO C.
	* semantics.c: Convert to ISO C.

2003-06-18  Nathan Sidwell  <>

	* cp-tree.h (comp_except_specs, compparms, cp_has_mutable_p,
	at_least_as_qualified_p, more_qualified_p): Return bool.
	* typeck.c: ANSIFY function definitions.
	(comp_array_types): Take redeclaration bool parameter.
	(comptypes): Rearrange STRICT handling.
	(at_least_as_qualified_p, more_qualified_p,
	comp_cv_qualification): Cache cv quals.
	(compparms): Rearrange loop.

2003-06-18  Nathan Sidwell  <>

	* cp-tree.h (COMPARE_RELAXED): Rename to ...
	(COMPARE_DERIVED): ... here. Adjust comment.
	(resolve_typename_type_in_current_instantiation): Remove.
	(cp_tree_equal, comptypes): Return a bool.
	* cvt.c (convert_to_reference): Adjust comptypes call.
	* pt.c (template_args_equal, unify,): Adjust cp_tree_equal call.
	(resolve_typename_type_in_current_instantiation): Remove.
	* tree.c (cp_tree_equal): Return bool. Cope with TEMPLATE_DECLs and
	IDENTIFIER_NODEs. Abort if undeciderable. Adjust recursive
	calls. Refactor code.
	* typeck.c (comp_array_types): Return bool. Lose callback.
	parameter. Adjust cp_tree_equal calls.
	(comptypes): Return bool. Adjust strict handling. Remove relaxed
	enumeration and java type handling. Deal with typename types here.
	Adjust recursive and cp_tree_equals calls. Adjust base and derived
	(comp_target_types): Remove unreachable code. Adjust
	same_or_base_type_p calls.
	(ptr_reasonably_similar): Adjust base and derived check.

	* typeck.c (maybe_warn_about_returning_address_of_local): Remove
	unused calculation.
	(check_return_expr): Adjust error messages.
	* cp-tree.def (SCOPE_REF): Correct comment.

2003-06-17  Mark Mitchell  <>

	* mangle.c (mangle_conv_op_name_for_type): Correct sprintf format
	string again.

2003-06-17  Robert Abeles  <>

	* optimize.c (dump_function): Form complete flag name by
	prefixing 'fdump-' to string returned by dump_flag_name().

2003-06-17  Mark Mitchell  <>

	* mangle.c (mangle_conv_op_name_for_type): Correct sprintf format

2003-06-17  Jason Merrill  <>

	PR c++/10929
	* decl.c (grokfndecl): Don't mark a function inline for
	-finline-functions if it isn't defined.

2003-06-17  Mark Mitchell  <>

	PR c++/10712
	* class.c (handle_using_decl): Robustify.

	PR c++/11105
	* cp-tree.h (DECL_CONV_FN_TYPE): New method.
	* mangle.c (struct globals): Remove internal_mangling_p.
	(write_unqualified_name): Use DECL_CONV_FN_TYPE.
	(write_template_parm): Don't write out the level number.
	(conv_type_names): New variable.
	(hash_type): New function.
	(compare_type): Likewise.
	(mangle_conv_op_name_for_type): Don't try to mangle conversion
	operator names.
	* search.c (lookup_conversion_operator): New function.
	(lookup_fnfields_1): Use it.

2003-06-17  Andreas Jaeger  <>

	* except.c: Remove duplicate declaration of push_eh_cleanup.

	* call.c: Remove extra declaration of inhibit_warnings.

2003-06-16  Nathanael Nerode  <>

	2003-06-16  Jens-Michael Hoffmann  <>
	* mangle.c: Convert to ISO C.

2003-06-16  Kaveh R. Ghazi  <>

	* cp/decl.c, cp/pt.c, cp/search.c, cp/tree.c: Don't use the PTR

2003-06-16  Nathanael Nerode  <>

	* tree.c: Convert to ISO C.

2003-06-16  Kazu Hirata  <>

	* cp-tree.h: Follow spelling conventions.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* parser.c: Likewise.

2003-06-14  Nathan Sidwell  <>

	* decl.c (start_function): Adjust init_function_start call.
	* method.c (use_thunk): Likewise.
	* semantics.c (genrtl_start_function): Likewise.

2003-06-14  Neil Booth  <>

	* Remove c-options.o.

2003-06-13  Nathanael Nerode  <>

	* lex.c: Convert to ISO C.

	2003-05-19  Jens-Michael Hoffmann  <>
	* init.c: removes use of PARAMS macro.  Use ISO style function
	declarations.  (Not copyright-significant change.)

	* rtti.c: Remove PARAMS.

	* typeck2.c: Convert to ISO C.

2003-06-12  Mark Mitchell  <>

	PR c++/10635
	* typeck.c (build_c_cast): Check that the destination type is

2003-06-11  Mark Mitchell  <>

	PR c++/10432
	* cp-tree.h (finish_declarator): Remove.
	* decl.c (cp_finish_decl): Make sure to pop_nested_class even for
	erroneous declarations.
	* semantics.c (finish_declarator): Remove.

2003-06-11  Roger Sayle  <>

	* decl2.c (generate_ctor_or_dtor_function): Avoid expanding a
	global static constructor/destructor if it will be empty, i.e.
	either doesn't call any ctors/dtors or only calls pure or const

2003-06-11  Mark Mitchell  <>

	* mangle.c (tm_p.h): Include it.
	* (cp/mangle.o): Depend on $(TM_P_H).

	PR c++/11131
	* tree.c (cp_cannot_inline_fn): Check for "inline" before

2003-06-10  Jason Merrill  <>

	PR c++/10968
	* pt.c (mark_decl_instantiated): Clear DECL_COMDAT.

2003-06-10  Andrew Pinski  <>

	* decl.c (start_cleanup_fn): Move static 'counter' out, mark with GTY.
	(start_cleanup_cnt): New.

2003-06-10  Mark Mitchell  <>

	PR c++/11131
	* cp-tree.h (template_for_substitution): Declare.
	* decl2.c (mark_used): Use it when figuring out whether or not a
	function is inline.
	* pt.c (template_for_substitution): Give it external linkage.
	* tree.c (cp_cannot_inline_tree_fn): Instantiate as early as

2003-06-09  Zack Weinberg  <>

	PR 8861
	* mangle.c (write_real_cst): New function.  Implement
	ABI-compliant mangling of floating-point literals when
	-fabi-version>=2; provide backward compatibility with 3.3 when
	-fabi-version=1 (with warning).  Clarify commentary.
	(write_template_arg_literal): Use write_real_cst.

2003-06-07  Andreas Jaeger  <>

	* cp/decl.c (xref_tag): Remove undefined macro NONNESTED_CLASSES.

2003-06-07  Neil Booth  <>

	* cp-lang.c (LANG_HOOKS_DECODE_OPTON): Drop.
	* cp-tree.h (cxx_init_options): Update.
	* lex.c (cxx_init_options): Update.

2003-06-05  Jan Hubicka  <>

	*  Add support for stageprofile and stagefeedback

2003-06-04  J"orn Rennecke <>

	* decl.c (grokdeclarator): Error_mark_node in, error_mark_node out.

2003-06-04  Andreas Jaeger  <>

	* g++spec.c (lang_specific_driver): Remove ALT_LIBM usage.

2003-06-03  Jason Merrill  <>

	* cp/cp-tree.h (CP_AGGREGATE_TYPE_P): Accept vectors.

	* cp/decl.c (reshape_init): Handle vectors.

	* testsuite/g++.dg/init/array10.C: New.

2003-06-03  Kriang Lerdsuwanakij  <>

	PR c++/10940
	* pt.c (check_explicit_specialization): Check for 'static'

2003-05-31  Diego Novillo  <>

	* class.c (dump_array): Call CONSTRUCTOR_ELTS to access
	the operand of a CONSTRUCTOR node.

2003-05-31  Gabriel Dos Reis <>

	* decl.c (cp_binding_level::this_entity): Rename from this_class.
	(cxx_scope_descriptor): New function.
	(cxx_scope_debug): Likewise.
	(push_binding_level): Use it.
	(pop_binding_level): Likewise.
	(suspend_binding_level): Likewise.
	(resume_binding_level): Likewise.
	(pushlevel_class): Adjust use of this_class.
	(pushtag): Likewise.
	(lookup_name_real): Likewise.
	(global_scope_name): New variable.
	(initialize_predefined_identifiers): Initialize it.
	(push_namespace): Use it.
	(make_cxx_scope): New function.
	(pushlevel): Use it.
	(pushlevel_class): Likewise.
	(push_binding_level): Simplify.  Loose the last two arguments.
	(make_binding_level): Remove.
	(initial_push__namespace_scope): New function.
	(push_namespace): Use it.  Simplify.
	(cxx_init_decl_processing): Likewise.
	(declare_namespace_level): Remove.

2003-05-31  Kriang Lerdsuwanakij  <>

	PR c++/10956
	* pt.c (instantiate_decl): Don't use full template arguments if
	we are dealing with specializations.

2003-05-29  Gabriel Dos Reis  <>

	(binding_depth): Unconditionally define.
	(is_class_level): Likewise.
	(indent): Likewise.  Take an indenting parameter.
	(push_binding_level): Remove conditional definittion.
	(pop_binding_level): Likewise.
	(suspend_binding_level): Likewise.
	(resume_binding_level): Likewise.
	(pushlevel): Likewise.
	(pushlevel_class): Likewise.
	(poplevel_class): Likewise.
	(pop_everything): Likewise.

2003-05-27  Gabriel Dos Reis <>

	* name-lookup.h (global_scope_p): New macro.
	* decl.c (pop_binding_level): Use it.  Don't refer directly to
	(suspend_binding_level): Likewise.
	(global_bindings_p): Likewise.
	(print_other_binding_stack): Likewise.
	(print_binding_stack): Likewise.
	(maybe_push_to_top_level): Likewise.
	(pushdecl_namespace_level): Likewise.
	(cxx_init_decl_processing): Likewise.
	(start_decl): Likewise.
	(cp_finish_decl): Likewise.
	(start_function): Likewise.
	(global_binding_level): Remove.

2003-05-25  Kriang Lerdsuwanakij  <>

	* parser.c (cp_parser_explicit_instantiation): Restore old
	access before template instantiation.

2003-05-23  Geoffrey Keating  <>

	* lang-specs.h: Use -o to specify preprocessor's output file.
	Make -no-integrated-cpp work when building PCH files.

2003-05-23  Kriang Lerdsuwanakij  <>

	PR c++/10682
	* pt.c (instantiate_class_template): Use DECL_ARTIFICIAL to
	check for implicitly created typedef to an enum.

2003-05-21  Jason Merrill  <>

	* init.c (build_vec_delete): Copy the address into a temporary
	variable before calling build_vec_delete_1.
	* decl2.c (delete_sanity): Don't call stabilize_reference.

2003-05-21  Nathan Sidwell  <>

	* pt.c (register_specialization): Update the decl's location,
	if necessary.
	(check_explicit_specialization): Likewise.

2003-05-20  Kaveh R. Ghazi  <>

	* error.c (dump_expr): Use HOST_WIDE_INT_PRINT_DOUBLE_HEX.

2003-05-21  Danny Smith  <>

	PR c++/9738
	* decl.c (duplicate_decls): Re-invoke make_decl_rtl
	if the old decl had instantiated DECL_RTL.
	(Base on Richard Henderson 2003-05-13 patch to c-decl.c).

2003-05-19  Matt Austern  <>

	* lang-options.h: Document -Wno-invalid-offsetof
	* typeck.c (build_class_member_access_expr): Don't complain about
	(Foo *)p->x for non-POD Foo if warn_invalid_offset is zero.

2003-05-18 Andrew Pinski <>

	* name-lookup.c (free_binding_entry): fix where the GTY markers are.
	(binding_entry_make): Make entry->chain NULL after getting an entry.
	fix the spelling of chain in a comment.
	(binding_table_free): speed up by having temporary variable.
	(binding_table_new): set table->chain to be NULL after allocating
	a table.
	(cxx_binding_make): use gcc_alloc instead of ggc_alloc_cleared and set
	binding->previous to NULL after getting an binding for speed.

2003-05-18  Gabriel Dos Reis  <>

	* cp-tree.h (struct lang_type_class): Replace data member tags
	with hash-table nested_udts.
	* class.c (unreverse_member_declarations): Don't touch
	(pushclass): Use cxx_remember_type_decls.
	* decl.c (struct cp_binding_level): Replace data member tags with
	hash-table type_decls.
	(pop_binding_level): Handle level->type_decls.
	(kept_level_p): Adjust.
	(poplevel): Remove unused local variable.
	(bt_print_entry): New function.
	(print_binding_level): Use it.
	(push_namespace): Build current_binding_level->type_decls.
	(maybe_process_template_type_declaration): Adjust.
	(pushtag): Likewise.
	(clear_anon_tags): Use binding_table_remove_anonymous_types.
	(gettags): Remove.
	(cxx_remember_type_decls):  Rename from storetags.  Adjust.
	(lookup_tag): Use binding_table_find_anon_type.  Tidy.
	(lookup_tag_reverse): Use binding_table_reverse_maybe_remap.
	(cxx_init_decl_processing): Build global_binding_level->type_decls.
	(store_parm_decls): Remove pointless code.
	* name-lookup.c (free_binding_entry): New variable.
	(ENTRY_INDEX): New macro.
	(struct binding_table_s): New datatype.
	(binding_entry_make): New function.
	(binding_entry_free): Likewise.
	(binding_table_construct): Likewise.
	(binding_table_free): Likewise.
	(binding_table_new): Likewise.
	(binding_table_expand): Likewise.
	(binding_table_insert): Likewise.
	(binding_table_find): Likewise.
	(binding_table_find_anon_type): Likewise.
	(binding_table_reverse_maybe_remap): Likewise.
	(binding_table_remove_anonymous_types): Likewise.
	(binding_table_foreach): Likewise.
	* name-lookup.h (binding_table): New type.
	(binding_entry): Likewise.
	(bt_foreach_proc): Likewise.
	(struct binding_entry_s): New datatype.
	(binding_table_new): Declare.
	(binding_table_free): Likewise.
	(binding_table_insert): Likewise.
	(binding_table_find_anon_type): Likewise.
	(binding_table_reverse_maybe_remap): Likewise.
	(binding_table_remove_anonymous_types): Likewise.
	(binding_table_foreach): Likewise.
	(binding_table_find): Likewise.
	(cxx_remember_type_decls): Likewise.
	* pt.c (bt_instantiate_type_proc): New function.
	(do_type_instantiation): Use it.
	* search.c (lookup_field_r): Use binding_table_find.

2003-05-18  Kriang Lerdsuwanakij  <>

	* semantics.c (perform_deferred_access_checks): Don't discard
	checked access.

2003-05-17  Kaveh R. Ghazi  <>

	* error.c (cp_error_at, cp_warning_at, cp_pedwarn_at): Eliminate
	libiberty VA_ macros, always use stdarg.
	* rtti.c (create_pseudo_type_info): Likewise.
	* tree.c (build_min_nt, build_min): Likewise.

2003-05-16  Kaveh R. Ghazi  <>

	* ptree.c (cxx_print_type, cxx_print_xnode): Use string
	concatentation on HOST_WIDE_INT_PRINT_* format specifier to
	collapse multiple function calls into one.
	* tree.c (debug_binfo): Likewise.

2003-05-15  Jason Merrill  <>

	PR c++/5388
	* call.c (conditional_conversion): Don't consider implicit
	conversions if T2 is a base of T1.
	* cp-tree.h (DERIVED_FROM_P, UNIQUELY_DERIVED_FROM_P): Make boolean.

	* parser.c (cp_parser_primary_expression): Convert a static data
	member from reference.

2003-05-15  Mark Mitchell  <>

	* call.c (build_op_delete_call): Avoid creating unnecessary types.
	* class.c (instantiate_type): Remove tests for tf_no_attributes.
	* cp-tree.h (tsubst_flags_t): Remove tf_no_attributes.
	* typeck.c (comptypes): Do not check COMPARE_NO_ATTRIBUTES.

	PR c++/8385
	* semantics.c (finish_typeof): Refine type-dependency check.

2003-05-13  Jason Merrill  <>

	* typeck.c (build_modify_expr): Don't always stabilize the lhs and
	rhs.  Do stabilize the lhs of a MODIFY_EXPR used on the lhs.

2003-05-11  Kriang Lerdsuwanakij  <>

	* method.c (synthesize_method): Call push/pop_deferring_access_checks.

2003-05-11  Kriang Lerdsuwanakij  <>

	PR c++/10230, c++/10481
	* semantics.c (finish_non_static_data_member): Handle when the
	non-static member is not from a base of the current class type.

2003-05-11  Kriang Lerdsuwanakij  <>

	PR c++/10552
	* pt.c (tsubst_copy): Handle TEMPLATE_DECL that is a member class
	template and has dependent context.

2003-05-10  Kriang Lerdsuwanakij  <>

	* pt.c (instantiate_decl): Call push/pop_deferring_access_checks.

2003-05-10  Kriang Lerdsuwanakij  <>

	PR c++/9252
	* cp-tree.h (saved_scope): Remove check_access field.
	(tsubst_flags_t): Remove tf_parsing.
	* decl.c (maybe_push_to_top_level): Don't initialize
	(make_typename_type, make_unbound_class_template): Don't use
	(register_dtor_fn): Use push/pop_deferring_access_checks
	instead of scope_chain->check_access.
	* method.c (use_thunk): Likewise.
	* parser.c (cp_parser_explicit_instantiation
	(cp_parser_constructor_declarator_p): Don't call
	push/pop_deferring_access_checks here.
	(cp_parser_template_argument, cp_parser_class_name): Don't use
	(yyparse): Check flag_access_control.
	* pt.c (instantiate_class_template): Call
	* semantics.c (push_deferring_access_checks): Propagate
	(perform_or_defer_access_check): Make sure basetype_path is
	a type before comparison.
	* call.c (build_op_delete_call, build_over_call): Use
	* class.c (alter_access): Likewise.
	* init.c (build_offset_ref): Likewise.
	* lex.c (do_identifier): Likewise.
	* method.c (hack_identifier): Likewise.
	* search.c (lookup_member): Likewise.
	* semantics.c (finish_non_static_data_member): Likewise.
	(simplify_aggr_init_exprs_r): Use push/pop_deferring_access_checks
	instead of flag_access_control.

2003-05-10  Kriang Lerdsuwanakij  <>

	PR c++/9554
	* parser.c (cp_parser_class_name): Remove check_access parameter.
	All caller adjusted.  Update declaration.
	(cp_parser_lookup_name): Likewise.
	* semantics.c (push_deferring_access_checks): Change parameter type
	to enum deferring_kind.  All caller adjusted.
	(resume_deferring_access_checks): Adjust to use new enum.
	(stop_deferring_access_checks): Likewise.
	(perform_or_defer_access_check): Likewise.
	* cp-tree.h (deferring_kind): New enum.
	(deferred_access): Adjust field type.
	(push_deferring_access_checks): Update declaration.

2003-05-09  Kriang Lerdsuwanakij  <>

	PR c++/10555, c++/10576
	* pt.c (lookup_template_class): Handle class template with
	multiple levels of parameters when one of the levels contain

2003-05-08  Jason Merrill  <>

	* init.c (build_new_1): Don't reuse a TARGET_EXPR in an
	expression.  Undo some of the recent reorg.

2003-05-07  Richard Henderson  <>

	PR c++/10570
	* cfns.gperf: Comment out POSIX thread cancellation points,
	plus abort and raise.
	* cfns.h: Regenerate.

2003-05-07  Jason Merrill  <>

	* call.c (build_conditional_expr): Don't assume that the folded
	expression has result_type.

2003-05-06  Kriang Lerdsuwanakij  <>

	* typeck.c (build_unary_op): Deal with const qualifier in
	invalid pointer-to-member earlier.

2003-05-05  Jason Merrill  <>

	PR c++/9537
	* call.c (conditional_conversion): Build an RVALUE_CONV if
	we're just changing the cv-quals.
	(build_conditional_expr): Don't call convert to change

2003-05-05  Kriang Lerdsuwanakij  <>

	PR c++/10496
	* typeck.c (build_unary_op): Don't output const qualifier when
	output invalid pointer-to-member diagnostics.

2003-05-05  Kriang Lerdsuwanakij  <>

	* decl.c: Fix typos.

2003-05-05  Kriang Lerdsuwanakij  <>

	PR c++/4494
	* decl.c (start_function): Use same_type_p to check return type
	of main.

2003-05-03  Zack Weinberg  <>

	PR c/10604
	* cp/typeck.c (build_x_compound_expr): No need to check
	extra_warnings as well as warn_unused_value.

2003-05-03  Kriang Lerdsuwanakij  <>

	PR c++/9364, c++/10553, c++/10586
	* decl.c (make_typename_type): Don't crash on illegal code.

2003-05-03  Nathan Sidwell  <>

	* class.c (finish_struct): Use location_t and input_location
	* decl.c (make_label_decl): Likewise.
	(use_label): Likewise.
	* decl2.c (warn_if_unknown_interface): Likewise.
	(start_static_initialization_or_destruction): Likewise.
	(generate_ctor_or_dtor_function): Likewise.
	(finish_file): Likewise.
	* error.c (print_instantiation_full_context): Likewise.
	* init.c (create_temporary_var): Likewise.
	* method.c (synthesize_method): Likewise.
	* parser.c (cp_token): Likewise.
	(cp_lexer_set_source_position_from_token): Likewise.
	(cp_lexer_get_preprocessor_token): Likewise.
	(cp_parser_statement): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(instantiate_class_template): Likewise.
	(tsubst_decl): Likewise.
	(tsubst): Likewise.
	(instantiate_decl): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	(expand_body): Likewise.

2003-05-01  Nathan Sidwell  <>

	* class.c (finish_struct): Rename lineno to input_line.
	* decl.c (push_binding_level, pop_binding_level,
	suspend_binding_level, resume_binding_level, make_label_decl,
	use_label, start_function): Likewise.
	* decl2.c (warn_if_unknown_interface,
	generate_ctor_or_dtor_function, finish_file): Likewise.
	* error.c (cp_line_of, print_instantiation_full_context,
	print_instantiation_context): Likewise.
	* except.c (check_handlers_1, check_handlers): Likewise.
	* init.c (create_temporary_var): Likewise.
	* method.c (use_thunk, synthesize_method): Likewise.
	* parser.c (cp_lexer_set_source_position_from_token,
	cp_lexer_get_preprocessor_token): Likewise.
	* pt.c (push_tinst_level, pop_tinst_level,
	tsubst_friend_function, instantiate_class_template, tsubst_decl,
	tsubst, tsubst_expr, instantiate_decl): Likewise.
	* semantics.c (genrtl_try_block, finish_label_stmt,
	begin_class_definition, expand_body,
	genrtl_finish_function): Likewise.
	* tree.c (build_min_nt, build_min): Likewise.

2003-05-01  Mark Mitchell  <>

	* decl2.c (comdat_linkage): Don't externalize explicit

2003-05-01  Kriang Lerdsuwanakij  <>

	PR c++/10554
	* decl2.c (do_class_using_decl): Check if operand 0 of SCOPE_REF
	is not NULL.

2003-05-01  Steven Bosscher  <>

	* cp-tree.h (struct lang_id2): Remove.  Move fields from here...
	(struct lang_identifier): ... to here.
	(LANG_ID_FIELD): Remove.
	(SET_LANG_ID): Remove.
	(IDENTIFIER_LABEL_VALUE): Adjust for new lang_identifier.

2003-05-01  Kriang Lerdsuwanakij  <>

	PR c++/8772
	* pt.c (convert_template_argument): Correct diagnostic.

2003-04-30  Kriang Lerdsuwanakij  <>

	PR c++/9432, c++/9528
	* decl2.c (validate_nonmember_using_decl): Handle SCOPE_REF.

2003-04-30  Garbiel Dos Reis  <>

	* decl.c (check_previous_goto_1): Adjust prototype.
	(check_previous_goto): Adjust use.
	(check_switch_goto): Likewise.
	(use_label): Adjust.
	(check_previous_goto_1): Don't use pedwarn_with_file_and_line.
	(struct named_label_use_list): Use location_t datatype.

2003-04-29  Mark Mitchell  <>

	PR c++/10551
	* pt.c (mark_decl_instantiated): Defer all explicit instantiations
	that have not yet been written out.

2003-04-29  Mark Mitchell  <>

	PR c++/10549
	* class.c (layout_class_type): Mark overlong bitfields as having
	the maximum size permitted by their type, after layout.

	PR c++/10527
	* error.c (dump_expr): Correctly handling of NEW_EXPR.4

2003-04-29  Kriang Lerdsuwanakij  <>

	* call.c (build_operator_new_call): Fix typo.
	* lang-options.h: Likewise.

2003-04-29  Mark Mitchell  <>

	PR c++/10515
	* cp-tree.h (lookup_field_1): Declare it.
	* search.c (lookup_field_1): Make it public.
	* decl.c (reshape_init): Handle designated initializers.

	* decl.c (maybe_commonize_var): Further tweak support for systems
	without weak symbols.

2003-04-27  Mark Mitchell  <>

	* decl.c (maybe_commonize_var): Fix thinko in last patch.

2003-04-27  Mark Mitchell  <>

	PR c++/10506
	* method.c (use_thunk): Decrement immediate_size_expand.

	PR c++/10503
	* cp-tree.h (DECL_VAR_MARKED_P): New macro.
	* class.c (fixed_type_or_null): Avoid infinite recursion.

	* decl.c (maybe_commonize_var): Make the code match the comments.
	* pt.c (instantiate_decl): Move call to import_export_decl.

2003-04-26  Mark Mitchell  <>

	* decl2.c (finish_file): Fix merge botch.

2003-04-25  Mark Mitchell  <>

	* decl2.c (finish_file): Don't call import_export_decl for
	functions that are not defined.
	(handle_class_head): Robustify.
	* pt.c (instantiate_decl): Do not call cp_finish_decl for
	variables that are not defined.

2003-04-24  Sylvain Pion  <>

	* call.c (print_z_candidates): Fix off by one error.

2003-04-24  Nathan Sidwell  <>

	PR c++/10337
	* call.c (joust): Don't warn about conversion ops that are exact
	or cv-conversions. Rearrange to avoid multiple type comparisons.

2003-04-23  Mark Mitchell  <>

	PR c++/10471
	* call.c (build_cxx_call): Robustify.

2003-04-23  Neil Booth  <>

	* (lex.o): Remove mbchar.h.
	* lex.c (MULTIBYTE_CHARS): Lose.
	* parser.c (cp_lexer_get_preprocessor_token): CPP_OTHER handled
	in c-lex.c.

2003-04-23  Mark Mitchell  <>

	PR c++/9847
	* cp-tree.h (duplicate_tag_error): Remove.
	* class.c (duplicate_tag_error): Remove.
	* semantics.c (begin_class_definition): Return immediately for a
	duplicate class definition.

	PR c++/10451
	* decl.c (grokdeclarator): Correct logic for "mutable" errors.

2003-04-22  Mark Mitchell  <>

	PR c++/10446
	* search.c (lookup_fnfields_1): Handle empty slots in the method

	PR c++/10428
	* decl.c (check_elaborated_type_specifier): New function, split
	out from ...
	(xref_tag): ... here.  Use the new function in more places.

	* rtti.c (throw_bad_typeid): Use build_cxx_call.

2003-04-21  Mark Mitchell  <>

	* call.c (build_over_call): Use build_cxx_call.
	(build_cxx_call): New method, split out of build_over_call.
	* cp-tree.h (language_function): Add can_throw.
	(build_cxx_call): Declare it.
	* decl.c (finish_function): If a function does not contain any
	calls to functions that can throw an exception, indicate that
	* decl2.c (mark_used): Do not defer the instantiation of
	functions, if the current function does not throw.
	* optimize.c (maybe_clone_body): Copy TREE_NOTHROW to the clones.
	* pt.c (instantiate_decl): Make sure import_export_decl is called
	before emitting things.
	* rtti.c (throw_bad_cast): Use build_cxx_call.
	(build_dynamic_cast_1): Likewise.
	* typeck.c (build_function_call): Likewise.

2003-04-21  Nathan Sidwell  <>

	PR c++/9881
	* typeck.c (build_unary_op): Fold all COMPONENT_REF addr
	expressions. Reverts my 2002-08-08 patch.

	* typeck.c (comp_ptr_ttypes_real): Swap final && operands for
	cheaper early exit.

2003-04-20  Nathan Sidwell  <>

	* cp/decl2.c (start_static_storage_duration_function): Take count
	arg, don't check if it wraps round.
	(generate_ctor_or_dtor_function): Add locus arg, use it.
	(generate_ctor_and_dtor_functions_for_priority): Data arg is a
	(finish_file): Set line numbers to past EOF for synthesized

2003-04-20  Nathan Sidwell  <>

	PR c++/10405
	* search.c (lookup_field_1): Final scan goes backwards for
	types, forwards for non-types.

2003-04-17  Roger Sayle  <>

	PR c/10375
	* decl.c (duplicate_decls): Preserve "const", "noreturn" and
	"nothrow" function attributes.

2003-04-17  Kriang Lerdsuwanakij  <>

	PR c++/10347
	* pt.c (type_dependent_expression_p): Handle array new.

2003-04-15  Mark Mitchell  <>

	PR c++/10381
	* parser.c (cp_parser_primary_expression): Reorganize logic for
	dealing with name lookup failures.

2003-04-15  Jason Merrill  <>

	* decl2.c (mark_used): Don't instantiate anything if

2003-04-14  Ziemowit Laski  <>

	* tree.c (build_cplus_array_type_1): Do not call
	uses_template_parms() on a NULL index_type.

2003-04-13  Roger Sayle  <>

	* decl.c (duplicate_decls): Preserve pure and malloc attributes.

2003-04-12  Mark Mitchell  <>

	PR c++/10300
	* init.c (build_new_1): Reorganize.

2003-04-12  Zack Weinberg  <>

	* class.c (initialize_array)
	* decl.c (reshape_init)
	* decl2.c (build_expr_from_tree)
	* init.c (build_zero_init)
	* pt.c (tsubst_copy, tsubst_copy_and_build)
	* rtti.c (tinfo_base_init, generic_initializer, ptr_initializer)
	(ptm_initializer, class_initializer, get_pseudo_ti_init)
	* semantics.c (finish_compound_literal)
	* typeck.c (build_ptrmemfunc1)
	* typeck2.c (store_init_value, process_init_constructor)
	(build_functional_cast): Use build_constructor.

2003-04-12  Zack Weinberg  <>

	* call.c (print_z_candidates): Use gcc_gettext_width, not
	strlen, to determine how much padding to use.

2003-04-10  Zack Weinberg  <>

	* decl.c: Update all calls to shadow_warning.

2003-04-10  Mark Mitchell  <>

	* class.c (layout_class_type): Correct handling for overlong
	bit-fields whose width is the same as an integer type.

2003-04-06  Zack Weinberg   <>

	* cp-tree.def: Make fourth element for all 'c' and 'x' nodes zero.
	* cp-lang.c (cp_tree_size): New function.

	tree_srcloc, TS_CP_COMMON, TS_CP_SRCLOC): Kill.
	(union lang_tree_node): Remove common and srcloc members.
	(build_srcloc_here): Don't prototype.
	* decl.c (cp_tree_node_structure): Kill SRCLOC case.
	* pt.c (pending_templates): Correct comment.
	* tree.c (build_srcloc, build_srcloc_here): Kill.

2003-04-06  Zack Weinberg   <>

	* call.c: Include intl.h.
	(print_z_candidate): Always use inform; get rid of errfn
	argument. Reorganize so that all the strings get picked up
	by xgettext.  Note obligation of caller to pass first argument
	through gettext.
	(print_z_candidates): Update to match.  Indent second and
	successive candidates by strlen() of translated message.
	(joust): Restructure ambiguous-conversion pedwarn so that
	translators see a complete sentence.  Update calls to

	* (cp/call.o): Update dependencies.

2003-04-05  Kaveh R. Ghazi  <>

	* decl.c (set_current_binding_level): Delete, revert last change.
	(current_binding_level): Modify to allow it as as lvalue.

2003-04-04  Kaveh R. Ghazi  <>

	* name-lookup.c (find_binding): Pass appropriate pointer type to

2003-04-03  Kaveh R. Ghazi  <>

	* (cp-warn): Add $(STRICT_WARN).
	* cp-tree.h: Don't insist on having GNUC.

2003-04-03  Jason Merrill  <>

	* cvt.c (ocp_convert): Only abort if we try to convert an object

	* class.c (build_vtable): Set DECL_ALIGN here.
	(get_vtable_decl): Not here.
	(layout_vtable_decl): Or here.
	(create_vtable_ptr): Or here.
	(layout_class_type): Or here.
	(check_bitfield_decl): Don't mess with field alignment.

2003-04-03  Kaveh R. Ghazi  <>

	DEF_ASSN_OPERATOR): Delete spurious semi-colon.
	* rtti.c (dfs_class_hint_mark): Likewise.

	* decl.c (push_local_name, push_class_level_binding,
	maybe_inject_for_scope_var): Don't use POP_TIMEVAR_AND_RETURN in
	functions returning void.
	* decl2.c (add_using_namespace): Likewise.

	* decl.c (print_binding_level, print_other_binding_stack,
	print_binding_stack): Cast argument of %p specifier to void*.
	* ptree.c (cxx_print_decl): Likewise.


	* decl.c (set_current_binding_level): New macro.  Use throughout
	when setting the current binding level.

	* cp-tree.h (cp_lvalue_kind, base_access): Delete trailing comma
	in enum.
	* method.c (mangling_flags): Likewise.

	* cp-tree.h (lang_type_header): Add __extension__ and use
	CHAR_BITFIELD for members.

2003-04-02  Geoffrey Keating  <>

	PR other/9274
	* mangle.c: Include gt-cp-mangle.h.
	(subst_identifiers): Mark with GTY.
	* (gtfiles): Add cp/mangle.c.
	* (gt-cp-mangle.h): New rule.
	(cp/mangle.o): Depends on gt-cp-mangle.h.

2003-04-01  Andrew Pinski  <>

	* (gtfiles): Add \$(srcdir)/cp/name-lookup.c
	after \$(srcdir)/cp/name-lookup.h.
	* name-lookup.c: (cxx_binding_make): Use ggc_alloc_clearedinstead
	of ggc_alloc.  Include gt-cp-name-lookup.h at the end of the file.
	* (gt-cp-name-lookup.h): Is generated by gengtype.
	(cp/name-lookup.o): Depends on gt-cp-name-lookup.h.

2003-03-31  Jason Merrill  <>

	PR java/10145
	* class.c (check_field_decl): Don't set DECL_ALIGN.

2003-03-30  Mark Mitchell  <>

	PR c++/7647
	* decl.c (grokdeclarator): Tidy, slightly.
	* search.c (lookup_field_1): Add want_type parameter.
	(lookup_field_r): Adjust call to lookup_field_1.

2003-03-30  Gabriel Dos Reis  <>

	* (cp/name-lookup.o): Add more dependencies.

2003-03-30  Gabriel Dos Reis <>

	* cp-tree.h (binding_for_name: Move to name-lookup.h  Adjust
	(cxx_scope_find_binding_for_name): Likewise.
	* decl.c (find_binding: Move to name-lookup.c.
	(binding_for_name): Likewise.
	(cxx_scope_find_binding_for_name): Likewise.
	(BINDING_LEVEL):  Remove.
	(push_binding): Tidy.
	(push_class_binding): Likewise.
	(pop_binding): Likewise.
	(poplevel): Likewise.
	(poplevel_class): Likewise.
	(set_identifier_type_value_with_scope): Likewise.
	(push_overloaded_decl): Likewise.
	(lookup_tag): Likewise.
	(unqualified_namespace_lookup): Likewise.
	(lookup_name_current_level): Likewise.
	(maybe_inject_for_scope_var): Likewise.
	(namespace_binding): Move to name-lookup.c.
	(set_namespace_binding): Likewise.
	* decl2.c (lookup_using_namespace): Tidy.
	(qualified_lookup_using_namespace): Likewise.
	(do_toplevel_using_decl): Likewise.
	* name-lookup.c: Include "timevar.h"
	* name-lookup.h (cxx_scope):  Declare.
	(struct cxx_binding): Lose member "has_level".  Adjust "scope"
	member declaration.
	(BINDING_SCOPE): Adjust definition.

2003-03-30  Gabriel Dos Reis  <>

	* name-lookup.c: New file.
	* name-lookup.h: Likewise..
	* decl.c (push_binding): Adjust use cxx_binding_make.
	(free_bindings): Move to name-lookup.c
	(pop_binding): Use cxx_binding_free.
	(binding_for_name): Tidy.
	* cp-tree.h: Include "name-lookup.h"
	(cxx_binding_make): Move to name-lookup.h
	(cxx_binding_clear): Likewise.
	(struct cxx_binding): Likewise.
	(LOCAL_BINDING_P): Likewise.
	(BINDING_SCOPE): Likewise.
	(BINDING_VALUE): Likewise.
	(BINDING_TYPE): Likewise.
	* (gtfiles): Add cp/name-lookup.h
	* (cp/name-lookup.o): New rule.
	(CXX_OBJS): Add cp/name-lookup.o
	(CXX_TREE_H): Add cp/name-lookup.h

2003-03-28  Jason Merrill  <>

	PR c++/10245
	* cvt.c (force_rvalue): New fn.
	* call.c (build_conditional_expr): Use it.
	* cp-tree.h: Declare it.

2003-03-28  Mike Stump  <>

	* error.c (dump_expr): Add 0x to printed hex numbers to make
	output match source code better.

2003-03-28  Mark Mitchell  <>

	PR c++/10218
	* decl.c (grokfndecl): Return NULL_TREE for bogus out-of-class

	* decl2.c (generate_ctor_or_dtor_function): Tolerate a
	non-existant ssdf_decls array.
	(finish_file): Call generator_ctor_or_dtor_function when there are
	static constructors or destructors and no other static

2003-03-28  Nathan Sidwell  <>

	PR c++/10047
	* decl2.c (finish_file): Don't warn about explicitly instantiated
	inline decls.

2003-03-27  Nathan Sidwell  <>

	PR c++/10224
	* pt.c (lookup_template_class): Only check instantiated args if
	they do not contain template parameters.

2003-03-27  Nathan Sidwell  <>

	PR c++/10158
	* parser.c (cp_parser_function_definition): Set
	* pt.c (instantiate_decl): Only reduce the template args for
	friends that are not defined in class.

2003-03-25  Jason Merrill  <>

	* call.c (print_z_candidate): Change name of first arg to msgid.
	(joust): Add comment for translators.

2003-03-24  Nathan Sidwell  <>

	PR c++/9898, PR c++/383, DR 322
	* pt.c (maybe_adjust_types_for_deduction) <DEDUCE_CONV>: Look
	through reference types on both PARM and ARG.

2003-03-24  Nathan Sidwell  <>

	PR c++/10119
	* error.c (dump_expr) <BASELINK>: Use dump_expr.
	* pt.c (maybe_fold_nontype_args): New function.
	(tsubst_copy) <SCOPE_REF>: Subst any template_id args.
	<TEMPLATE_ID_EXPR>: Break out folding code, call it.
	(tsubst_copy_and_build) <TEMPLATE_ID_EXPR>: Call

2003-03-24  Nathan Sidwell  <>

	PR c++/10026
	* decl2.c (arg_assoc_type) <ERROR_MARK>: Don't die.

2003-03-23  Mark Mitchell  <>

	PR c++/7086
	* typeck.c (cxx_mark_addressable):  Adjust call to
	gen_mem_addressof or put_var_into_stack.

2003-03-22  Nathan Sidwell  <>

	PR c++/9978, c++/9708
	* cp-tree.h (instantiate_template): Add tsubst_flags parameter.
	* call.c (add_template_candidate_real): Adjust
	instantiate_template call.
	* class.c (resolve_address_of_overloaded_function): Likewise.
	* decl.c (build_enumerator): Set TREE_CONSTANT.
	* pt.c (check_instantiated_args): New.
	(push_inline_template_parms_recursive): Set TREE_CONSTANT,
	(build_template_parm_index): Copy TREE_CONSTANT, TREE_READONLY.
	(reduce_template_parm_level): Likewise.
	(process_template_parm): Likewise.
	(check_explicit_specialization): Adjust instantiate_template call.
	(convert_template_argument): Don't check non-type argument here.
	(lookup_template_class): Check them here.
	(tsubst_friend_function): Adjust instantiate_template call.
	(instantiate_template): Add tsubst_flags parameter, use it. Check
	instantiated args.

2003-03-21  Zack Weinberg  <>

	* decl.c: Update calls to shadow_warning.

2003-03-21  Nathan Sidwell  <>

	PR c++/9898
	* error.c (dump_decl) [CONST_DECL]: Print '<enumerator>'.
	(dump_expr) [CONSTRUCTOR]: Print default ctor as a function call.

2003-03-20  Mark Mitchell  <>

	* cp/decl2.c (arg_assoc_class): Correct check for namespace-scope
	* cp/pt.c (instantiate_class_template): Fix formatting.

2003-03-14  Matt Austern  <>

	* cp-tree.h (unemitted_tinfo_decls): Declaration of a new varray.
	(unemitted_tinfo_decl_p): Remove.
	(emit_tinfo_decl): Change declaration to remove unused parameter.
	* decl2.c (finish_file): Change tinfo emission to loop through
	unemitted_tinfo_decls array instead of looping through all decls.
	* rtti.c (unemitted_tinfo_decl_p): Declare as static, remove
	unused second parameter.
	(init_rtti_processing): initialize unemitted_tinfo_decls varray.
	(get_tinfo_decls): push new tinfo decl on unemitted_tinfo_decls.
	(emit_tinfo_decl): remove unused second parameter, add assertion
	that decl hasn't already been emitted.

2003-03-19  Nathanael Nerode  <>

	* dump.c (cp_dump_tree), cp-tree.h (cp_dump_tree): Change return
	type from 'int' to 'bool'. Replace 0 and 1 with true and false in
	return statements.

2003-03-19  Jason Merrill  <>

	PR c++/8316, c++/9315, c++/10136
	* call.c (print_z_candidate): Split out from...
	(joust): Use it.

2003-03-17  Roger Sayle  <>

	PR c++/10031
	* decl.c (duplicate_decls): Use the new type when prototyping
	anticipated decls, even when the types match.  This defines the
	exception list for the built-in function.

2003-03-17  Jason Merrill  <>

	PR c++/10091
	* typeck.c (build_class_member_access_expr): Compare

2003-03-17  Mark Mitchell  <>

	PR c++/9639
	* parser.c (cp_parser_declarator_id): Clear parser->scope.

2003-03-16  Jason Merrill  <>

	PR c++/9993
	* decl.c (finish_function): Only allow the NRVO to use variables
	declared at function scope.

2003-03-17  Andreas Jaeger  <>

	* (cp/TAGS): Remove.

2003-03-16  Nathan Sidwell  <>

	PR c++/9629
	* cp-tree.h (struct language_function): Add in_base_initializer.
	(in_base_initializer): define it.
	(expand_member_init): Remove INIT param.
	* init.c (expand_member_init): Remove INIT param, return the member.
	(emit_mem_initializers): Set in_base_initializer.
	* class.c (build_base_path): Check in_base_initializer.
	* parser.c (cp_parser_mem_initializer): Set in_base_initializer.
	* pt.c (tsubst_initializer_list): Likewise.

2003-03-16   Gabriel Dos Reis <>

	* decl.c (binding_for_name): Fix initialization thinko.

2003-03-15  Gabriel Dos Reis <>

	Compile-time improvement: 2/n.
	* cp-tree.h (struct cxx_binding): New datatype;
	(struct lang_identifier): Use it.
	(LOCAL_BINDING_P): Adjust definition.
	(BINDING_SCOPE): Likewise.
	(BINDING_VALUE): Likewise.
	(BINDING_TYPE): Likewise.
	(struct tree_binding): Remove.
	(TS_CP_BINDING): Likewise.
	((union lang_tree_node): Remove field "binding".
	(cxx_binding_clear): New macro.
	(binding_for_name): Adjust return type.
	(qualified_lookup_using_namespace): Adjust prototype.
	(lookup_using_namespace): Adjust prototype.
	(cxx_scope_find_binding_for_name): Declare.
	* cp-tree.def: Remove CPLUS_BINDING definition.
	* decl.c (push_binding): Adjust local variable type.
	(add_binding): Likewise.
	(push_class_binding): Likewise.
	(pop_binding): Likewise.
	(poplevel): Likewise.
	(poplevel_class): Likewise.
	(free_bindings):  Adjust type.
	(find_binding): Adjust return type, add a third parameter. Remove
	non-useful assertion now that we use static typing.
	(cxx_scope_find_binding_for_name): New function.
	(binding_for_name): Use it.  Adjust local variable type. Simplify.
	(namespace_binding):  Simplify.
	(set_namespace_binding): Likewise.
	(set_identifier_type_value_with_scope): Adjust local variable type.
	(lookup_tag): Don't type-abuse of local variable 'old'.
	(lookup_namespace_name): Likewise.  Allocate binding on stack.
	(select_decl): Adjust prototype.
	(unqualified_namespace_lookup):  Allocate binding on stack.
	Don't type-abuse of local variable 'val'.
	(lookup_name_real): Likewise.
	(maybe_inject_for_scope_var): Adjust local variable type.
	(cp_tree_node_structure): Remove CPLUS_BINDING case label.
	(namespace_binding): Adjust logic, simplify.
	(BINDING_LEVEL): Adjust definition.
	(push_class_level_binding): Adjust local variable type.
	(struct cxx_saved_binding): Adjust field 'binding' type.
	* decl2.c (ambiguous_decl): Adjust prototype.
	(lookup_using_namespace): Adjust local variable type.
	(qualified_lookup_using_namespace): Catch type error and correct
	ensueing logic error.
	(do_nonmember_using_decl): Adjust local variable type.  Allocate
	temporary cxx_binding on stack.
	(do_toplevel_using_decl): Adjust local variable type.
	* ptree.c (cxx_print_cxx_binding): New function.
	(cxx_print_identifier): Use it.
	(cxx_print_xnode): Delete CPLUS_BINDING case label.

2003-03-15  Roger Sayle  <>

	* tree.c (count_functions): Fix whitespace.

2003-03-15  Neil Booth  <>

	* Update.

2003-03-15  Kriang Lerdsuwanakij  <>

	PR c++/6440
	* pt.c (maybe_process_partial_specialization): Handle
	member class template when enclosing class template is
	explicit specialized.
	(most_general_template): Stop looking when DECL is already

2003-03-13  Jason Merrill  <>

	PR c++/9420
	* search.c (lookup_conversions): Call complete_type here.
	* call.c (implicit_conversion): Not here.

2003-03-13  Mark Mitchell  <>

	* decl2.c (do_nonmember_using_decl): Correct handling of
	simultaneous type/non-type bindings.

	* call.c (initialize_reference): Remove bogus assertion.
	* decl.c (build_ptrmemfunc_type): Revert change of 2003-03-09.

2003-03-12  Andrew Lewycky  <>

	PR c++/7050
	* expr.c (cxx_expand_expr): Return const0_rtx for throw

2003-03-11  Mark Mitchell  <>

	PR c++/9474
	* decl2.c (do_nonmember_using_decl): Do not call duplicate decls
	to merge old and new declarations.

2003-03-12  Alexandre Oliva  <>

	* g++.1: Remove.
	* (c++.generated-manpages): Build cp/g++.1.
	(cp/g++.1): Build it from scratch in the build tree.
	(c++.install-man): Depend on it.  Install it from the build tree.
	(c++.mostlyclean): Clean it.

2003-03-11  Mark Mitchell  <>

	PR c++/9474
	* decl2.c (do_nonmember_using_decl): Do not call duplicate decls
	to merge old and new declarations.

	PR c++/9924
	* decl2.c (do_nonmember_using_decl): Ignore anticipated builtins.

2003-03-11  Jason Merrill  <>

	PR c++/9820
	* search.c (lookup_member): Fix handling of functions in a class
	being defined.

2003-03-11  Mark Mitchell  <>

	PR c++/8700
	* call.c (convert_class_to_reference): Adjust usage of
	(any_viable): Remove.
	(splice_viable): Combine with any_viable.
	(print_z_candidates): Avoid printing duplicates.
	(build_user_type_conversion_1): Adjust usage of splice_viable.
	(build_new_function_call): Likewise.
	(build_operator_new_call): Likewise.
	(build_object_call): Likewise.
	(build_conditional_expr): Likewise.
	(build_new_op): Likewise.
	(build_new_method_call): Likewise.
	(joust): Remove spurious comment.
	* cp-tree.h (DECL_FRIENDLIST): Correct documentation.
	* decl2.c (arg_assoc_class): Simplify.
	* friend.c (add_friend): Likewise.

2003-03-11  Jason Merrill  <>

	PR c++/8660
	* decl2.c (check_classfn): A member template only matches a
	member template.

2003-03-11  Neil Booth  <>

	* (CXX_C_OBJS): Update.
	* lang-specs.h: Don't define __GNUG__ here.

2003-03-10  Mark Mitchell  <>

	* call.c (perform_overload_resolution): New function.
	(build_new_function_call): Use it.
	(build_operator_new_call): Likewise.
	(add_candidates): Add explicit_targs and template_only parameters.
	(build_new_op): Adjust accordingly.
	* cp-tree.h (build_operator_new_call): New function.
	(build_function_call_real): Remove.
	(build_function_call_maybe): Likewise.
	* init.c (build_new_1): Use build_operator_new_call.
	* typeck.c (build_function_call_real): Rename to ...
	(build_function_call): ... this.

2003-03-10  Devang Patel  <>

	PR c++/9394
	* g++spec.c (lang_specific_driver): Use DEFAULT_WORD_SWTCH_TAKES_ARG.

2003-03-10  Jason Merrill  <>

	PR c++/9798
	* decl.c (push_using_directive): Push before recursing.

	PR c++/9868, c++/9524
	* call.c (resolve_scoped_fn_name): Handle the case of a function
	pointer member.

	* decl2.c (build_offset_ref_call_from_tree): Only mess with 'this'
	argument in the pointer-to-member case.

2003-03-09  Mark Mitchell  <>

	PR c++/9373
	* cp-lang.c (cxx_get_alias_set): Use alias set zero for
	pointers to member functions.

	PR c++/8534
	* decl.c (build_ptrmemfunc_type): Do not allow default arguments
	in pointer-to-member-function types.

2003-03-10  Gabriel Dos Reis  <>

	* expr.c (cplus_expand_constant): Use C90 prototype style.
	(cxx_expand_expr): Likewise.

2003-03-09  Kriang Lerdsuwanakij  <>

	PR c++/9970
	* decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual

2003-03-08  Geoffrey Keating  <>

	* lang-specs.h (c++-header): Change .pch to .gch.

2003-03-08  Neil Booth  <>

	* cp-tree.h (cxx_init): Update prototype.
	* lex.c (cxx_init): Similarly.

2003-03-08  Mark Mitchell  <>

	PR c++/9823
	* cp-tree.h (begin_mem_initializers): Remove.
	* parser.c (cp_parser_mem_initializer_list): Inline it here.
	Do not call finish_mem_initializers if not in a constructor.
	(cp_parser_class_head): Fix typo in error message.
	* semantics.c (begin_mem_initializers): Remove.
	* testsuite/g++.dg/parser/constructor1.C: New test.

	PR c++/9809
	* call.c (add_function_candidate): Skip builtin fuctions that have
	not yet been declared.

	PR c++/9982
	* init.c (build_new_1): Correct logic for determining whether or
	not to use an array cookie.

	PR c++/9524
	* parser.c (cp_parser_postfix_expression): Call
	finish_non_static_data_member, even when processing_template_decl.

	PR c++/9912
	* cp-tree.h (is_ancestor): New function.
	(handle_class_head): Change prototype.
	* decl2.c (is_namespace_ancestor): Rename to ...
	(namespace_anecestor): ... this.
	(set_decl_namespace): Adjust accordingly.
	(handle_class_head): Remove unnecessary parameters.
	* parser.c (cp_parser_class_head): Check that
	nested-name-specifiers are used appropriately.

2003-03-07  Mark Mitchell  <>

	* call.c (reference_binding): Remove REF_IS_VAR parameter.
	(implicit_conversion): Adjust call to reference_binding.
	(make_temporary_var_for_ref_to_type): Add TYPE parameter.
	(initialize_reference): Adjust handling for references bound to
	* cp-tree.h (make_temporary_var_for_ref_to_temp): Change
	(real_non_cast_lvalue_p): New method.
	* cvt.c (build_up_reference): Adjust use of
	* tree.c (real_non_cast_lvalue_p): New method.

2003-03-07  Gabriel Dos Reis  <>

	* except.c (init_exception_processing): Use C90 prototype style.
	(cp_protect_cleanup_actions): Likewise.
	(prepare_eh_type): Likewise.
	(build_eh_type_type): Likewise.
	(build_exc_ptr): Likewise.
	(do_begin_catch): Likewise.
	(dtor_nothrow): Likewise.
	(do_end_catch): Likewise.
	(push_eh_cleanup): Likewise.
	(decl_is_java_type): Likewise.
	(choose_personality_routine): Likewise.
	(initialize_handler_parm): Likewise.
	(expand_start_catch_block): Likewise.
	(expand_end_catch_block): Likewise.
	(begin_eh_spec_block): Likewise.
	(finish_eh_spec_block): Likewise.
	(do_allocate_exception): Likewise.
	(do_free_exception): Likewise.
	(wrap_cleanups_r): Likewise.
	(stabilize_throw_expr): Likewise.
	(build_throw): Likewise.
	(complete_ptr_ref_or_void_ptr_p): Likewise.
	(is_admissible_throw_operand): Likewise.
	(nothrow_libfn_p): Likewise.
	(can_convert_eh): Likewise.
	(check_handlers_1): Likewise.
	(check_handlers): Likewise.

2003-03-06  Mark Mitchell  <>

	* call.c (merge_conversion_sequences): New function.
	(build_conv): Set ICS_USER_FLAG for USER_CONVs.
	(convert_class_to_reference): Correct handling of second
	standard conversion sequence in a user-defined conversion
	(build_user_type_conversion_1): Use merge_conversion_sequences.
	* cp-tree.def: Add comments for CONV nodes.
	* rtti.c (get_tinfo_decl): Use build_address/build_nop.

2003-03-07  Gabriel Dos Reis  <>

	* error.c (init_error): Use C90 prototype style.
	(dump_scope): Likewise.
	(dump_qualifiers): Likewise.
	(dump_template_argument): Likewise.
	(dump_template_argument_list): Likewise.
	(dump_template_parameter): Likewise.
	(dump_template_bindings): Likewise.
	(dump_type): Likewise.
	(dump_typename): Likewise.
	(class_key_or_enum): Likewise.
	(dump_aggr_type): Likewise.
	(dump_type_prefix): Likewise.
	(dump_type_suffix): Likewise.
	(dump_global_iord): Likewise.
	(dump_simple_decl): Likewise.
	(dump_decl): Likewise.
	(dump_template_decl): Likewise.
	(dump_function_decl): Likewise.
	(dump_parameters): Likewise.
	(dump_exception_spec): Likewise.
	(dump_function_name): Likewise.
	(dump_template_parms): Likewise.
	(dump_char): Likewise.
	(dump_expr_list): Likewise.
	(dump_expr): Likewise.
	(dump_binary_op): Likewise.
	(dump_unary_op): Likewise.
	(type_as_string): Likewise.
	(expr_as_string): Likewise.
	(decl_as_string): Likewise.
	(context_as_string): Likewise.
	(lang_decl_name): Likewise.
	(cp_file_of): Likewise.
	(cp_line_of): Likewise.
	(decl_to_string): Likewise.
	(expr_to_string): Likewise.
	(fndecl_to_string): Likewise.
	(code_to_string): Likewise.
	(language_to_string): Likewise.
	(parm_to_string): Likewise.
	(op_to_string): Likewise.
	(type_to_string): Likewise.
	(assop_to_string): Likewise.
	(args_to_string): Likewise.
	(cv_to_string): Likewise.
	(cxx_print_error_function): Likewise.
	(cp_diagnostic_starter): Likewise.
	(cp_diagnostic_finalizer): Likewise.
	(cp_print_error_function): Likewise.
	(function_category): Likewise.
	(print_instantiation_full_context): Likewise.
	(print_instantiation_partial_context): Likewise.
	(maybe_print_instantiation_context): Likewise.
	(print_instantiation_context): Likewise.
	(cp_printer): Likewise.
	(print_integer): Likewise.
	(print_non_consecutive_character): Likewise.
	(locate_error): Likewise.

2003-03-06  Mark Mitchell  <>

	PR c++/9965
	* call.c (reference_binding): Add ref_is_var parameter.
	(implicit_conversion): Adjust call to reference_binding.
	(initialize_reference): Likewise.

	PR c++/9400
	* decl.c (pushdecl): Don't check for shadowing of DECL_ARTIFICIAL

	PR c++/9791
	* class.c (get_basefndecls): Use lookup_fnfields_1.

2003-03-06  Kriang Lerdsuwanakij  <>

	PR c++/9188
	* parser.c (cp_parser_type_parameter): Remove redundant `expect'
	in error message.
	(cp_parser_single_declaration): Likewise.

2003-03-05  Jason Merrill  <>

	PR c++/9440
	* call.c (build_conditional_expr): Use convert rather than an
	explicit NOP_EXPR.

2003-03-02  Matt Austern  <>

	* decl.c (cp_binding_level): Add static_decls varray member.
	(add_decl_to_level): Add static/inline namespace scope
	declarations to static_decls array.
	(wrapup_global_for_namespace): Pass static_decls only, instead of
	all decls, to wrapup_global_declarations/check_global_declarations.
	(push_namespace): Initialize static_decls for ordinary namespaces.
	(cxx_init_decl_processing): Initialize static_decls for global

2003-03-05  Mark Mitchell  <>

	* class.c (end_of_class): Correct thinko.

2003-03-04  Nathanael Nerode  <>

	* Replace ${libstdcxx_version} by its value.

2003-03-04  Gabriel Dos Reis <>

	* cp-tree.h (cxx_saved_binding): Declare.
	(struct saved_scope): Adjust type of field 'old_binding'.
	* decl.c (cxx_saved_binding_make): New macro.
	(struct cxx_saved_binding): Define.
	(store_bindings): Adjust prototype.  Use cxx_saved_binding to save
	C++ bindings.
	(maybe_push_to_top_level): Adjust local variable type.
	(pop_from_top_level): Likewise.

2003-03-04  Tom Tromey  <>

	* (c++.tags): New target.

2003-03-04  Neil Booth  <>

	* Update.

2003-03-03  Jason Merrill  <>

	* decl.c (finish_enum): Do set the type in a template. Simplify.
	* pt.c (tsubst_enum, tsubst_copy): Revert last patch.

2003-03-03  Mark Mitchell  <>

	PR c++/9878
	* call.c (convert_class_to_reference): Correct conversion
	(reference_binding): Add ref_bound_directly_to_rvalue_p parameter.
	(implicit_conversion): Adjust call to reference_binding.
	(add_candidate): Change type of candidates parameter.
	(add_function_candidate): Likewise.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.
	(add_builtin_candidate): Likewise.
	(add_builtin_candidates): Likewise.
	(add_template_candidate_real): Likewise.
	(add_template_candidate): Likewise.
	(add_template_conv_candidate): Likewise.
	(build_user_type_conversion_1): Adjust accordingly.
	(build_object_call): Likewise.
	(build_conditional_expr): Likewise.
	(add_candidates): Likewise.
	(build_new_op): Likewise.
	(convert_like_real): Use USER_CONV_CAND.  Use build_nop.
	(build_new_method_call): Adjust calls to add_function_candidate.
	(make_temporary_var_for_ref_to_temp): New function.
	(initialize_reference): Add decl parameter.
	* class.c (build_rtti_vtbl_entries): Use build_address and
	* cp-tree.h (initialize_reference): Change prototype.
	(make_temporary_var_for_ref_to_temp): New function.
	(build_type_conversion): Change prototype.
	(build_address): New function.
	(build_nop): Likewise.
	* cvt.c (cp_convert_to_pointer): Adjust call to
	build_type_conversion.  Avoid indicating redundant NOP_EXPRs.
	Use build_nop.
	(convert_to_pointer_force): Use build_nop.
	(build_up_reference): Use make_temporary_var_for_ref_to_temp.
	(convert_to_reference): Adjust call to build_type_conversion.
	(ocp_convert): Likewise.
	(build_type_conversion): Remove for_sure parameter.
	* decl.c (grok_reference_init): Use initialize_reference.
	* typeck.c (build_address): New function.
	(build_nop): Likewise.
	(build_unary_op): Use them.
	(build_ptrmemfunc): Tidy slightly.
	(convert_for_initialization): Adjust call to
	* typeck2.c (store_init_value): Remove #if 0'd code.

2003-03-03  Jason Merrill  <>

	* decl.c (start_function): Clear DECL_NUM_STMTS.

	* class.c (get_vtable_decl): Use vtbl_type_node.
	(build_primary_vtable): Check for it.

2003-03-02  Aldy Hernandez  <>

	* decl.c (check_initializer): Check for vector_opaque_p.

2003-03-02  Ashif Harji  <>

	* lang-specs.h (default_compilers): Add -no-integrated-cpp flag to
	  invoke an external cpp during compilation.

2003-03-01  Gabriel Dos Reis  <>

	* decl.c (duplicate_decls): Convert use of warning_with_decl() to
	that of warning().
	(start_decl): Likewise.
	(start_function): Likewise.

2003-03-01  Neil Booth  <>

	* (CXX_C_OBJS): Update.

2003-02-28  Mark Mitchell  <>

	PR c++/9892
	* pt.c (instantiate_decl): Clear DECL_RTL for a VAR_DECL when
	instantiating it.

2003-02-28  Aldy Hernandez  <>

	* parser.c (cp_parser_init_declarator): Revert opaque
	vector_opaque_p change.
	Do not include target.h.

2003-02-28  Mark Mitchell  <>

	PR c++/9879
	* cp-tree.h (build_zero_init): Add parameter.
	* decl.c (cp_finish_decl): Adjust call.
	* init.c (build_zero_init): Add nelts parameter.  Adjust recursive
	(build_default_init): Add nelts parameter.  Adjust calls to
	(build_new_1): Adjust call to build_default_init.
	* typeck2.c (process_init_constructor): Adjust call to build_zero_init.

2003-02-26  Devang Patel  <>

	* decl.c (finish_enum): Merge two 'for' loops. Copy value node if
	required.  Postpone enum setting for template decls.
	(build_enumerator): Delay copying value node until finish_enum
	(). Remove #if 0'ed code.
	* pt.c (tsubst_enum): Set TREE_TYPE and copy value node.
	(tsubst_copy): Add check for enum type.

2003-02-25  Mark Mitchell  <>

	PR c++/9683
	* decl2.c (prune_vars_needing_no_initialization): Do not throw
	away initializations for DECL_EXTERNAL VAR_DECLs.
	(finish_file): Adjust accordingly.
	* pt.c (instantiate_decl): Do not defer VAR_DECLs.

2003-02-24 Gabriel Dos Reis  <>

	* decl.c (add_binding): Time TV_NAME_LOOKUP.
	(push_class_binding): Likewise.
	(set_namespace_binding): Likewise.

2003-02-24  Mark Mitchell  <>

	PR c++/9836
	* cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): Do not skip from
	specializations back to the main template.
	* parser.c (cp_parser_diagnose_invalid_type_name):Adjust use.
	* pt.c (resolve_typename_type): Likewise.

2003-02-24  Jeffrey D. Oldham  <>

	PR c++/9778
	* pt.c (tsubst_copy_and_build): For a templated function inside a
	scope, process template arguments.

2003-02-24  Kriang Lerdsuwanakij  <>

	PR c++/9602
	* typeck2.c (abstract_virtuals_error): Don't check when
	TYPE is still template parameter dependent.

2003-02-23  Mark Mitchell  <>

	PR c++/5333
	* cp-tree.h (CLASSTYPE_PRIMARY_TEMPLATE): New macro.
	* parser.c (cp_parser_diagnose_invalid_type_name): Use it.
	* pt.c (instantiate_class_template): Don't try to instantiate
	dependent types.
	(resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE.

2003-02-21  Mark Mitchell  <>

	PR c++/9749
	* decl.c (grokdeclarator): Do not allow parameters with variably
	modified types.

2003-02-21  Nathan Sidwell  <>

	* search.c (grow_bfs_bases): Remove. Fold into ...
	(bfs_walk): ... here, fix fencepost error. Fix merge lossage
	in previous patch.

2003-02-20  Mark Mitchell  <>

	PR c++/9729
	* mangle.c (mangle_conv_op_name_for_type): Issue an error message
	when the G++ 3.2 ABI prevents correct compilation.

2003-02-20  Nathan Sidwell  <>

	Change base class access representation. Share virtual base
	* cp/call.c (build_special_member_call): Remove binfo_for_vbase
	* cp/class.c (build_base_path): Likewise.
	(build_primary_vtable): Adjust BINFO_NEW_VTABLE_MARKED use.
	(build_secondary_vtable): Remove FOR_TYPE arg. Adjust.
	(make_new_vtable): Adjust.
	(force_canonical_binfo_r): Delete.
	(force_canonical_binfo): Delete.
	(mark_primary_virtual_base): Delete.
	(dfs_unshared_virtual_bases): Delete.
	(mark_primary_bases): Adjust.
	(maybe_warn_about_overly_private_class): Adjust.
	(dfs_base_derived_from): Delete.
	(base_derived_from): Follow the inheritance chain.
	(struct find_final_overrider_data): Add vpath member.
	(dfs_find_final_overrider): Adjust.
	(dfs_find_final_overrider_q, dfs_find_final_overrider_post): New.
	(find_final_overrider): Adjust.
	(update_vtable_entry_for_fn): Adjust.
	(modify_all_vtables): Adjust.
	(walk_subobject_offsets): Adjust.
	(layout_nonempty_base_or_field): Adjust.
	(layout_empty_base): Remove last parameter. Adjust.
	(build_base_field): Adjust.
	(build_base_fields): Adjust.
	(propagate_binfo_offsets): Remove last parameter. Adjust.
	(dfs_set_offset_for_unshared_vbases): Delete.
	(layout_virtual_bases): Adjust.
	(finish_struct_1): Adjust.
	(init_class_processing): Don't init access nodes.
	(dfs_get_primary_binfo): Delete.
	(get_primary_binfo): Adjust.
	(dump_class_hierarchy_r): Remove most derived arg, add IGO
	parameter. Adjust.
	(dump_class_hierarchy): Adjust.
	(finish_vtbls): Adjust.
	(get_original_base): Delete.
	(build_vtt_inits): Adjust.
	(dfs_build_secondary_vptr_vtt_inits): Adjust.
	(dfs_ctor_vtable_bases_queue_p): Adjust.
	(build_ctor_vtbl_group): Adjust.
	(dfs_accumulate_vtbl_inits): Adjust.
	(build_vtbl_initializer): Adjust.
	(build_vbase_offset_vtbl_entries): Adjust.
	(add_vcall_offset_vtbl_entries_1): Adjust.
	* cp/cp-tree.h (CPTI_ACCESS_*): Remove.
	(access_*_node): Remove.
	(BINFO_MARKED): Set LANG_FLAG_0 directly.
	(dfs_walk, dfs_walk_real): Queue function takes derived binfo and
	(markedp, unmarkedp): Adjust.
	(dfs_unmarked_real_bases_queue_p, dfs_marked_real_bases_queue_p,
	dfs_skip_vbases, marked_vtable_pathp, unmarked_vtable_pathp,
	find_vbase_instance, binfo_for_vbase): Delete.
	(copied_binfo, original_binfo): Declare.
	(finish_base_specifier): Add virtual_p arg.
	(unshare_base_binfos): Delete.
	(copy_base_binfos): Declare.
	(reverse_path): Delete.
	* cp/decl.c (xref_basetypes): Access and virtuality passed
	differently. Don't copy direct base binfos here. Call
	* cp/init.c (dfs_initialize_vtbl_ptrs): Adjust.
	(initialize_vtbl_ptrs): Adjust.
	(expand_member_init): Adjust.
	* cp/parser.c (cp_parser_base_specifier): Adjust.
	* cp/pt.c (instantiate_class_template): Adjust.
	(get_template_base_recursive): Adjust.
	* cp/rtti.c (get_pseudo_ti_init): Adjust.
	(get_pseudo_ti_desc): Adjust.
	* cp/tree.c (unshare_base_binfos): Rename to ...
	(copy_base_binfos): ... here, reimplement.
	(make_binfo): Set BINFO_DEPENDENT_BASE_P.
	(reverse_path): Remove.
	* cp/typeck.c (get_delta_difference): Adjust error messages.
	* cp/semantics.c (finish_base_specifier): Add virtual arg, adjust.
	* cp/search.c (lookup_base_r): Adjust.
	(dynamic_cast_base_recurse): Adjust.
	(canonical_binfo): Remove.
	(dfs_canonical_queue): Remove.
	(dfs_assert_unmarked_p): Remove.
	(assert_canonical_unmarked): Remove.
	(shared_marked_p, shared_unmarked_p): Remove.
	(dfs_access_in_type): Adjust.
	(access_in_type): Adjust.
	(dfs_accessible_queue_p): Adjust.
	(dfs_accessible_p): Adjust.
	(is_subobject_of_p_1, is_subobject_of_p): Remove.
	(struct lookup_field_info): Remove from_dep_base_p field.
	(lookup_field_queue_p): Adjust, test BINFO_DEPENDENT_BASE_P.
	(lookup_field_r): Remove dependent base code.
	(lookup_member): Likewise.
	(dfs_walk, dfs_walk_real): Add access arg to queue fn.
	(dfs_unmarked_real_bases_queue_p): Remove.
	(dfs_marked_real_bases_queue_p): Remove.
	(dfs_skip_vbases): Remove.
	(dfs_get_pure_virtuals): Adjust.
	(markedp, unmarkedp): Adjust.
	(marked_vtable_pathp, unmarked_vtable_pathp): Remove.
	(marked_pushdecls_p, unmarked_pushdecls_p): Adjust.
	(dfs_unmark): Adjust.
	(dfs_build_inheritance_graph_order): Remove.
	(get_vbase_types): Remove
	(dfs_find_vbase_instance): Remove.
	(find_vbase_instance): Remove.
	(dfs_debug_unmarkedp): Adjust.
	(dependent_base_p): Remove.
	(dfs_push_type_decls): Adjust.
	(dfs_push_decls): Adjust.
	(dfs_no_overlap_yet): Adjust.
	(copied_binfo): New function.
	(original_binfo): New function.
	(binfo_for_vbase): Remove.

2003-02-18  Zack Weinberg  <>

	* cp/search.c (grow_bfs_bases): New subroutine of bfs_walk.
	(bfs_walk): Rewritten using circular queue of BINFO_BASETYPES
	vectors, for speed.

2003-02-18  Mark Mitchell  <>

	PR c++/9704
	* class.c (layout_class_type): In the 3.2 ABI, take into account
	trailing bit fields when computing CLASSTYPE_SIZE_UNIT.

2003-02-18  Matt Austern <>

	* cp/cp-lang.c: Change lang hooks so that final_write_globals does
	nothing for C++.
	* cp/decl.c (wrapup_globals_for_namespace): Remove special
	handling of global namespace.

2003-02-18  Geoffrey Keating  <>

	* cp-tree.h (rid_to_yy): Delete.
	(C_RID_YYCODE): Delete.
	(finish_file): Delete redundant declaration.

2003-02-18  Jason Merrill  <>

	PR c++/9623
	* decl.c (reshape_init): Don't mess with initializer labels.

	PR c++/9485
	* parser.c (cp_parser_postfix_expression): Set idk properly for

2003-02-18  Ben Elliston  <>

	PR other/7350
	* decl.c (duplicate_decls): Fix typo in comment.

2003-02-17  Michael Elizabeth Chastain <>

	PR debug/9717
	* class.c (build_base_field): Mark fields for base classes with

2003-02-17  Kriang Lerdsuwanakij  <>

	PR c++/9457
	* pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Substitute

2003-02-16  Kriang Lerdsuwanakij  <>

	PR c++/9459
	* error.c (dump_type_prefix): Handle TYPEOF_TYPE.
	(dump_type_suffix): Likewise.

2003-02-14  Nathan Sidwell  <>

	* search.c: ANSIfy function declarations and definitions.
	* cp-tree.h (lookup_field, lookup_member): Last parameter is a bool.
	* call.c (build_method_call, resolve_scoped_fn_name,
	build_java_interface_fn_ref): Adjust lookup_field, lookup_member
	* class.c (handle_using_decl): Likewise.
	* decl.c (make_typename_type, make_unmound_class_template,
	start_decl, compute_array_index_type): Likewise.
	* decl2.c (build_expr_from_tree, build_call_from_tree): Likewise.
	* init.c (expand_member_init, build_member_call): Likewise.
	* pt.c (tsubst_copy, tsubst_copy_and_build, do_decl_instantiation,
	resolve_typename_type): Likewise.
	* typeck.c (lookup_destructor, finish_class_member_access_exprm
	build_prememfunc_access_expr): Likewise.

2003-02-13  Gabriel Dos Reis <>

	* decl2.c: Include "timevar.h".
	(namespace_ancestor): Time name lookup.
	(add_using_namespace): Likewise.
	(lookup_using_namespace): Likewise.
	(qualified_lookup_using_namespace): Likewise.
	(decl_namespace): Likewise.
	(lookup_arg_dependent): Likewise.
	* lex.c (do_identifier): Likewise.
	(do_scoped_id): Likewise.
	* pt.c (lookup_template_class): Likewise.

2003-02-14   Andrew Pinski <>

	* decl.c: (define_label): Fix warning for return 0 instead of NULL.

2003-02-13  Gabriel Dos Reis  <>

	* decl.c: Include "timevar.h".
	(poplevel): Time name lookup.
	(find_binding): Likewise.
	(push_namespace): Likewise.
	(pop_nested_namespace): Likewise.
	(store_bindings): Likewise.
	(maybe_push_to_top_level): Likewise.
	(pop_from_top_level): Likewise.
	(push_local_name): Likewise.
	(pushtag): Likewise.
	(pushdecl): Likewise.
	(pushdecl_with_scope): Likewise.
	(pushdecl_namespace_level): Likewise.
	(pushdecl_top_level): Likewise.
	(pushdecl_class_level): Likewise.
	(push_class_level_binding): Likewise.
	(push_using_decl): Likewise.
	(push_using_directive): Likewise.
	(push_overloaded_decl): Likewise.
	(lookup_label): Likewise.
	(define_label): Likewise.
	(lookup_tag): Likewise.
	(lookup_tag_reverse): Likewise.
	(lookup_namespace_name): Likewise.
	(select_decl): Likewise.
	(unqualified_namespace_lookup): Likewise.
	(lookup_name_real): Likewise.
	(lookup_name_current_level): Likewise.
	(lookup_type_current_level): Likewise.
	(maybe_inject_for_scope_var): Likewise.
	(xref_tag): Likewise.

	* (cp/decl.o): Add dependency on timevar.h

2003-02-12  Phil Edwards  <>

	* decl.c (build_enumerator):  Remove unneeded test.

2003-02-09  Dan Nicolaescu  <>

	* cp-tree.h (struct lang_type_header): Make all fields unsigned

2003-02-03  Mark Mitchell  <>

	PR c++/7129
	* call.c (z_candidate): Add args.
	(convert_class_to_reference): Set it.
	(implicit_conversion): Tidy.
	(add_candidate): Add args parameter.
	(add_function_candidate): Adjust call to add_candidate.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.
	(build_user_type_conversion_1): Eliminate wasteful tree_cons
	(build_new_function_call): Likewise.
	(build_object_call): Likewise.
	(add_candidates): New function.
	(build_new_op): Use it.
	(covert_like_real): Adjust call to build_over_call.
	(build_over_call): Remove args parameter.
	* operators.def: Add <?= and >?=.

2003-02-01  Richard Sandiford  <>

	* typeck.c (build_indirect_ref): Don't check flag_volatile.

2003-01-31  Kriang Lerdsuwanakij  <>

	PR c++/8849
	* pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL.

2003-01-31  Nathan Sidwell  <>

	(BINFO_LANG_ELTS): New #define.
	* tree.c (make_binfo): Use BINFO_LANG_ELTS.

2003-01-30  Geoffrey Keating  <>

	* cp/ Remove -Wno-error from cp/decl.o.

2003-01-30  Mark Mitchell  <>

	* class.c (check_field_decls): Only check C_TYPE_FIELDS_READONLY
	for class types.
	* cp-tree.h (C_TYPE_FIELDS_READONLY): Use a lang-specific bit
	rather than TYPE_LANG_FLAG_0.
	(TYPE_BUILT_IN): Remove.
	(TYPE_DEPENDENT_P): New macro.
	(lang_type_class): Add fields_readonly.
	* decl.c (record_builtin_type): Don't set TYPE_BUILT_IN.
	* pt.c (dependent_type_p_r): New function, split out from ...
	(dependent_type_p): ... here.  Memoize results.
	* search.c (dependent_base_p): Use dependent_type_p, not
	* typeck.c (build_modify_expr): Only check C_TYPE_FIELDS_READONLY
	for class types.

2003-01-29  Mark Mitchell  <>

	* call.c (build_field_call): Use build_new_op, not build_opfncall.
	(prep_operand): New function.
	(build_new_op): Use it.  Remove dead code.
	* class.c (pushclass): Change "modify" parameter type from int to
	(currently_open_class): Use same_type_p, not pointer equality.
	(push_nested_class): Adjust calls to pushclass, remove modify
	* cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
	(pushclass): Change prototype.
	(push_nested_class): Likewise.
	(grokoptypename): Remove.
	(build_opfncall): Remove.
	(value_dependent_expression_p): Declare.
	(resolve_typename_type): Likewise.
	(resolve_typename_type_in_current_instantiation): Likewise.
	(enter_scope_of): Remove.
	(tsubst): Remove.
	(tsubst_expr): Likewise.
	(tsubst_copy): Likewise.
	(tsubst_copy_and_build): Likewise.
	* decl.c (warn_about_implicit_typename_lookup): Remove.
	(finish_case_label): Return error_mark_node for erroneous labels.
	(start_decl): Adjust calls to push_nested_class.
	(grokfndecl): Call push_scope/pop_scope around call to
	(grokdeclarator): Do not call tsubst.
	(start_function): Adjust calls to push_nested_class.
	* decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
	(check_classfn): Use push_scope/pop_scope around type comparisions.
	(grokoptypename): Remove.
	(push_sscope): Adjust call to push_nested_class.
	* error.c (dump_type): Show cv-qualification of typename types.
	* init.c (build_member_call): Use build_new_op, not
	* method.c (build_opfncall): Remove.
	* parser.c (cp_parser): Add allow_non_constant_expression_p and
	(cp_parser_constant_expression): Adjust prototype.
	(cp_parser_resolve_typename_type): Remove.
	(cp_parser_non_constant_expression): New function.
	(cp_parser_non_constant_id_expression): Likewise.
	(cp_parser_new): Set allow_non_constant_expression_p and
	(cp_parser_primary_expression): Reject `this' and `va_arg' in
	constant-expressions.  Note that dependent names aren't really
	(cp_parser_postfix_expression): Reject conversions to non-integral
	types in constant-expressions.  Neither are increments or
	(cp_parser_unary_expression): Reject increments and decrements in
	(cp_parser_direct_new_declarator): Adjust call to
	(cp_parser_cast_expression): Reject conversions to non-integral
	types in constant-expressions.
	(cp_parser_assignment_expression): Rejects assignments in
	(cp_parser_expression): Reject commas in constant-expressions.
	(cp_parser_labeled_statement): Adjust call to
	(cp_parser_direct_declarator): Simplify array bounds, even in
	templates, when they are non-dependent.  Use
	resolve_typename_type, not cp_parser_resolve_typename_type.
	(cp_parser_class_head): Use resolve_typename_type, not
	(cp_parser_member_declaration): Adjust call to
	(cp_parser_constant_initializer): Likewise.
	(cp_parser_constructor_declarator): Use resolve_typename_type, not
	(cp_parser_late_parsing_default_args): Adjust call to
	* pt.c (tsubst): Give it internal linkage.
	(tsubst_expr): Likewise.
	(tsubst_copy): Likewise.
	(tsubst_copy_and_build): Likewise.
	(push_access_scope_real): Likewise.
	(tsubst_friend_class): Likewise.
	(instantiate_class_template): Adjust call to pushclass.
	(value_dependent_expression_p): Give it external linkage.
	(resolve_typename_type): New function.
	* semantics.c (finish_call_expr): Use build_new_op, not
	(begin_constructor_declarator): Remove.
	(begin_class_definition): Adjust call to pushclass.
	(enter_scope_of): Remove.
	* typeck.c (comptypes): Resolve typename types as appropriate.
	(build_x_indirect_ref): Use build_new_op, not build_opfncall.
	(build_x_compound_expr): Likewise.
	(build_modify_expr): Likewise.
	(build_x_modify_expr): Likewise.
	* typeck2.c (build_x_arrow): Likewise.

2003-01-29  Fariborz Jahanian  <>

	* pt.c (last_pending_template) Declare GTY().

2003-01-29  Kriang Lerdsuwanakij  <>

	PR c++/8591
	* parser.c (cp_parser_elaborated_type_specifier): Convert
	TEMPLATE_DECL to TYPE_DECL only when processing template friends.
	(cp_parser_maybe_treat_template_as_class): Remove redundant tests.

2003-01-28  Nathan Sidwell  <>

	PR c++/9437
	* pt.c (unify): Don't unify '*T' with 'U C::*'.

	PR c++/3902
	* parser.c (cp_parser_decl_specifier_seq): Cannot have constructor
	inside a declarator.

2003-01-27  Nathan Sidwell  <>

	* class.c (update_vtable_entry_for_fn): Add index parameter.
	Generate vcall thunk for covariant overriding from a virtual
	primary base.
	(dfs_modify_vtables): Adjust.

2003-01-25  Nathan Sidwell  <>

	PR c++/9403
	* parser.c (cp_parser_class_or_namespace_name): Reject duplicate
	template keyword.
	(cp_parser_base_specifier): Look for and consume a
	TEMPLATE keyword. Replace switch with array index.

	PR c++/795
	* semantics.c (finish_non_static_data_member): Remember the
	field's type even in a template.

	PR c++/9415
	* pt.c (tsubst_copy_and_build, CALL_EXPR): BASELINK exprs are
	already scoped.

	PR c++/8545
	* parser.c (cp_parser_cast_expression): Be more tentative.

2003-01-25  Kriang Lerdsuwanakij  <>

	* cp-tree.h (flagged_type_tree_s): Remove.
	(check_for_new_type): Likewise.
	* typeck2.c (check_for_new_type): Likewise.

2003-01-23  Nathanael Nerode  <>

	* dump.c: ANSIfy function declarations and definitions.

	* cp-tree.h, decl.h: Get rid of PARAMS.  Again.

2003-01-22  Mark Mitchell  <>

	PR c++/9354
	* init.c (build_new): Set the type of the new-expression, even
	when processing_templte_decl.

	PR c++/9216
	* parser.c (cp_parser_primary_expression): Improve error message
	for templates used in an expression context.

	PR c++/8696
	* parser.c (cp_parser_decl_specifier_seq): Commit to tentative
	parse when encountering "typedef".

2003-01-22  Nathanael Nerode  <>

	* class.c, parser.c: ANSIfy function definitions and declarations.

2003-01-22  Mark Mitchell  <>

	PR c++/9328
	* error.c (dump_decl): For an OVERLOAD, just print the name of the
	function; it doesn't make sense to try to print its type.
	* semantics.c (finish_typeof): Issue errors about invalid uses.

	PR c++/9298
	* parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
	(cp_parser_expression_statement): Use it.
	(cp_parser_explicit_instantiation): Likewise.
	* pt.c (do_decl_instantiation): Improve error handling logic.

2003-01-22  Mark Mitchell  <>

	PR c++/9384
	* parser.c (cp_parser_using_declaration): Issue error messages
	about name resolution failures here.

	PR c++/9388
	* class.c (currently_open_derived_class): Use dependent_type_p.
	* cp-tree.h (dependent_type_p): New function.
	(dependent_template_arg_p): Likewise.
	(dependent_template_p): Likewise.
	(type_dependent_expression_p): Likewise.
	* parser.c (cp_parser_dependent_type_p): Remove.
	(cp_parser_value_dependent_type_p): Likewise.
	(cp_parser_type_dependent_expression_p): Likewise.
	(cp_parser_dependent_template_arg_p): Likewise.
	(cp_parser_dependent_template_id_p): Likewise.
	(cp_parser_dependent_template_p): Likewise.
	(cp_parser_diagnose_invalid_type_name): Replace
	cp_parser_dependent_type_p with dependent_type_p, etc.
	(cp_parser_primary_expresion): Likewise.
	(cp_parser_nested_name_specifier_opt): Likewise.
	(cp_parser_postfix_expression): Likewise.
	(cp_parser_unary_expression): Likewise.
	(cp_parser_template_name): Likewise.
	(cp_parser_class_name): Likewise.
	(cp_parser_lookup_name): Likewise.
	* pt.c (dependent_type_p): New function.
	(value_dependent_expression_p): Likewise.
	(type_dependent_expression_p): Likewise.
	(dependent_template_arg_p): Likewise.
	(dependent_template_id_p): Likewise.
	(dependent_template_p): Likewise.

	PR c++/9285
	PR c++/9294
	* parser.c (cp_parser_simple_declaration): Return quickly when
	encountering errors.

2003-01-21  Kaveh R. Ghazi  <> (cp/decl.o-warn): Add -Wno-error.

2003-01-17  Jason Merrill  <>

	PR c++/9167, c++/9358
	* decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.

2003-01-17  Jason Merrill  <>

	PR c++/9342
	* call.c (build_conditional_expr): Always do lvalue-rvalue

2003-01-17  Mark Mitchell  <>

	PR c++/9294
	* cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
	* cp-tree.h (BASELINK_BINFO): Adjust.
	(tree_baselink): New structure.
	(cp_tree_node_structure_enum): Add TS_CP_BASELINK.
	(lang_tree_node): Add baselink.
	* decl.c (cp_tree_node_structure): Add BASELINK case.
	* search.c (build_baselink): Adjust.
	* tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
	test from TREE_LIST case.

	PR c++/9272
	* parser.c (cp_parser_constructor_declarator_p): Do not assume
	that a constructor cannot be declared outside of its own class.

	* parser.c (cp_parser_resolve_typename_type): If the scope cannot
	be resolved, neither can the qualified name.

	* rtti.c (get_pseudo_ti_desc): Fix thinko.

2003-01-16  Jason Merrill  <>

	PR c++/8564
	* init.c (build_vec_init): Re-add maxindex parm.
	(perform_member_init, build_aggr_init): Pass it.
	(build_new_1): Pass it. Use an incomplete array type for full_type.
	* typeck.c (build_modify_expr): Pass it.
	* cp-tree.h: Adjust.

2003-01-16  Jeffrey D. Oldham  <>

	* cp-tree.h (tsubst_copy_and_build): New declaration.
	* pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
	(tsubst_expr): Use 'tsubst_copy_and_build'.  Update initial comment.
	(tsubst_copy_and_build): New function.

2003-01-16  Mark Mitchell  <>

	* cp-tree.h (lang_type_class): Remove is_partial_instantiation.
	(build_typename_type): Remove declaration.
	(parmlist_is_exprlist): Likewise.
	* decl.c (build_typename_type): Make it static, remove third
	(push_class_binding): Don't do implicit typename stuff.
	(make_typename_type): Likewise.
	(lookup_name_real): Likewise.
	(grokdeclarator): Don't try to convert declarations into
	initializations.  Don't do implicit typename stuff.
	(parmlist_is_exprlist): Remove.
	(xref_basetypes): Simplify.
	* decl2.c (grokfield): Don't try to convert declarations into
	(build_anon_union_vars): Do this while processing templates, too.
	(finish_anon_union): Likewise.
	* error.c (dump_type): Remove implicit typename handling.
	* parser.c (cp_parser_diagnose_invalid_type_name): New method.
	(cp_parser_primary_expression): Correct handling of names not
	found by unqualified name lookup in templates.
	(cp_parser_nested_name_specifier_opt): Avoid checking dependency
	of types when possible.
	(cp_parser_simple_declaration): Complain intelligently about some
	invalid declarations.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_constructor_declarator_p): Don't check when we're in a
	function scope.
	* pt.c (instantiate_class_template): Remove
	* search.c (lookup_field_r): Don't build implicit typenames.
	(marked_pushdecls_p): Don't enter dependent base types.
	(unmarked_pushdecls_p): Likewise.
	* semantics.c (begin_class_definition): Remove implicit typename

2003-01-16  Nathan Sidwell  <>

	PR c++/9212
	* parser.c (cp_parser_direct_declarator): If accepting either
	abstract or named, the name must be an unqualified-id.

2003-01-16  Kaveh R. Ghazi  <>

	* class.c (layout_virtual_bases): Avoid signed/unsigned warning.

2003-01-14  Kaveh R. Ghazi  <>

	* decl2.c (check_classfn): Fix uninitialized warning.
	(build_anon_union_vars): Likewise.
	* pt.c (tsubst_copy): Likewise.

2003-01-14  Jeffrey D. Oldham  <>

	Further conform g++'s __vmi_class_type_info to the C++ ABI
	* rtti.c (dfs_class_hint_mark): Do not set hints not specified by
	the specification.
	(class_hint_flags): Likewise.

2003-01-14  Kriang Lerdsuwanakij  <>

	* Add semantics.c to gtfiles.
	* cp-tree.h (flagged_type_tree_s): Remove lookups field.
	(saved_scope): Likewise.
	(type_lookups): Remove.
	(deferred_access): New structure.
	(type_access_control): Remove.
	(save_type_access_control): Likewise.
	(reset_type_access_control): Likewise.
	(decl_type_access_control): Likewise.
	(push_deferring_access_checks): Declare.
	(resume_deferring_access_checks): Likewise.
	(stop_deferring_access_checks): Likewise.
	(pop_deferring_access_checks): Likewise.
	(get_deferred_access_checks): Likewise.
	(pop_to_parent_deferring_access_checks): Likewise.
	(perform_deferred_access_checks): Likewise.
	(perform_or_defer_access_check): Likewise.
	* decl.c (make_typename_type): Use perform_or_defer_access_check.
	(make_unbound_class_template): Likewise.
	(grokdeclarator): Don't call decl_type_access_control.
	* parser.c (cp_parser_context): Remove deferred_access_checks
	and deferring_access_checks_p fields.
	(cp_parser_context_new): Adjust.
	(cp_parser): Remove access_checks_lists.
	(cp_parser_defer_access_check): Remove.
	(cp_parser_start_deferring_access_checks): Remove.
	(cp_parser_stop_deferring_access_checks): Remove.
	(cp_parser_perform_deferred_access_checks): Remove.
	(cp_parser_nested_name_specifier_opt): Use new deferred access
	(cp_parser_simple_declaration): Likewise.
	(cp_parser_template_id): Likewise.
	(cp_parser_function_definition): Likewise.
	(cp_parser_class_specifier): Likewise.
	(cp_parser_lookup_name): Likewise.
	(cp_parser_single_declaration): Likewise.
	(cp_parser_pre_parsed_nested_name_specifier): Likewise.
	(cp_parser_parse_tentatively): Likewise.
	(cp_parser_parse_definitely): Likewise.
	(yyparse): Likewise.
	(cp_parser_init_declarator): Remove access_checks parameter.
	Use new deferred access functions.
	(cp_parser_class_head): Remove deferring_access_checks_p and
	saved_access_checks parameters.  Use new deferred access functions.
	(cp_parser_member_specification_opt): Don't call
	* search.c (type_access_control): Remove.
	* semantics.c: Include "gt-cp-semantics.h".
	(deferred_type_access_control): Remove.
	(deferred_access_stack): New variable.
	(deferred_access_free_list): Likewise.
	(push_deferring_access_checks): New function.
	(resume_deferring_access_checks): Likewise.
	(stop_deferring_access_checks): Likewise.
	(pop_deferring_access_checks): Likewise.
	(get_deferred_access_checks): Likewise.
	(pop_to_parent_deferring_access_checks): Likewise.
	(perform_deferred_access_checks): New function, adapted from
	(perform_or_defer_access_check): New function, adapted from
	(current_type_lookups): Remove.
	(deferred_type_access_control): Likewise.
	(decl_type_access_control): Likewise.
	(save_type_access_control): Likewise.
	(reset_type_access_control): Likewise.
	(begin_function_definition): Adjust.
	(begin_class_definiton): Likewise.

2003-01-13  Jason Merrill  <>

	PR c++/8748
	* class.c (build_base_path): Take the address before calling save_expr.

	* call.c (build_user_type_conversion_1): Do set ICS_BAD_FLAG if
	all the ambiguous conversions are bad.

	* class.c (maybe_warn_about_overly_private_class): Don't stop
	searching when we find a nonprivate method.

	* typeck.c (build_class_member_access_expr): Use unary_complex_lvalue.

2003-01-12  Mark Mitchell  <>

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

	PR c++/9264
	* parser.c (cp_parser_elaborated_type_specifier): Handle erroneous
	typeame types more robustly.

2003-01-11  Phil Edwards  <>

	* parser.c:  Fix comment typos.

2003-01-10  Mark Mitchell  <>

	PR c++/9099
	* parser.c (cp_parser_scope_through_which_access_occurs): Handle
	an object_type which is not a class type.

2003-01-10  Geoffrey Keating  <>

	* parser.c (cp_parser_late_parsing_for_member): Don't cast to void.
	(cp_parser_late_parsing_default_args): Likewise.

2003-01-10  Nathanael Nerode  <>

	* cfns.gperf: ANSIfy function declarations.
	* cfns.h: Regenerate.
	* cp-tree.h: ANSIfy function declarations.

2003-01-10  Mark Mitchell  <>

	* cp-tree.h (reparse_absdcl_as_expr): Remove.
	(reparse_absdcl_as_casts): Likewise.
	(reparse_decl_as_expr): Likewise.
	(finish_decl_parsing): Likewise.
	* decl2.c (reparse_absdcl_as_expr): Remove.
	(reparse_absdcl_as_casts): Likewise.
	(repase_decl_as_expr): Likewise.
	(finish_decl_parsing): Likewise.

	PR c++/9128
	PR c++/9153
	PR c++/9171
	* parser.c (cp_parser_pre_parsed_nested_name_specifier): New
	(cp_parser_nested_name_specifier_opt): Correct the
	check_dependency_p false.
	(cp_parser_postfix_expression): Fix formatting.
	(cp_parser_decl_specifier_seq): Avoid looking for constructor
	declarators when possible.
	(cp_parser_template_id): Avoid performing name-lookup when
	(cp_parser_class_head): Do not count specializations when counting
	levels of templates.
	(cp_parser_constructor_declarator_p): Return immediately if
	there's no chance that the tokens form a constructor declarator.
	* rtti.c (throw_bad_typeid): Add comment.  Do not return an
	expression with reference type.
	(get_tinfo_decl_dynamic): Do not return an expression with
	reference type.
	(build_typeid): Add comment.  Do not return an expression with
	reference type.
	* typeck.c (build_class_member_access_expr): Improve handling of
	conditionals and comma-expressions as objects.

2003-01-09  Nathanael Nerode  <>

	* cfns.gperf: ANSIfy function declarations.
	* cfns.h: Regenerate.
	* cp-tree.h: ANSIfy function declarations.
	* parser.c: ANSIfy function declarations & definitions.

	* decl.c (bad_specifiers): Fix parameter order error I introduced.

2003-01-09  Geoffrey Keating  <>

	Merge from pch-branch:

	2003-01-09  Geoffrey Keating  <>

	Merge to tag pch-merge-20030102:

	* semantics.c (finish_translation_unit): Don't call finish_file.
	* parser.c: Don't include ggc.h.
	(cp_lexer_new_main): Rename from cp_lexer_new, only create main lexer,
	read first token here.  Don't allow PCH files after the first
	token is read.
	(cp_lexer_new_from_tokens): Duplicate functionality from cp_lexer_new.
	(cp_lexer_get_preprocessor_token): Allow LEXER to be NULL.
	(cp_parser_new): Call cp_lexer_new_main before allocating GCed memory.
	(cp_parser_late_parsing_for_member): Don't duplicate call to
	(cp_parser_late_parsing_default_args): Likewise.
	(yyparse): Call finish_file after clearing the_parser.

	2002-12-11  Geoffrey Keating  <>

	* Remove $(GGC_H) from all dependencies.
	(CXX_TREE_H): Add $(GGC_H).
	* class.c: Don't include ggc.h.
	(field_decl_cmp): Make parameters be 'const void *' to match qsort.
	(method_name_cmp): Likewise.
	(resort_data): New variable.
	(resort_field_decl_cmp): New.
	(resort_method_name_cmp): New.
	(resort_sorted_fields): New.
	(resort_type_method_vec): New.
	(finish_struct_methods): Delete cast.
	(finish_struct_1): Delete cast.
	* cp-tree.h: Include ggc.h.
	(struct lang_type_class): Add reorder attribute to field `methods'.
	(union lang_decl_u3): Add reorder attribute to field `sorted_fields'.
	(resort_sorted_fields): New prototype.
	(resort_type_method_vec): New prototype.
	* call.c: Don't include ggc.h.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* init.c: Likewise.
	* lex.c: Likewise.
	* method.c: Likewise.
	* optimize.c: Likewise.
	* parse.y: Likewise.
	* pt.c: Likewise.
	* repo.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* spew.c: Likewise.
	* tree.c: Likewise.

	* lang-specs.h: Remove comment.

	2002-12-03  Geoffrey Keating  <>

	* cp-tree.h (struct operator_name_info_t): Mark for GTY machinery.
	(operator_name_info): Mark to be saved for PCH, specify size.
	(assignment_operator_name_info): Likewise.

	2002-11-19  Geoffrey Keating  <>

	* decl.c (anon_cnt): Mark to be saved for PCH.

	2002-10-25  Geoffrey Keating  <>

	* lex.c  (init_reswords): Delete now-untrue comment.
	Allocate ridpointers using GGC.

	2002-10-04  Geoffrey Keating  <>

	* cp-tree.h (union lang_decl_u2): Add tags to all fields.

	* g++spec.c (lang_specific_driver): Don't include standard
	libraries in `added'.

	2002-08-27  Geoffrey Keating  <>

	* decl2.c (finish_file): Call c_common_write_pch.
	* (CXX_C_OBJS): Add c-pch.o.

	2002-08-17  Geoffrey Keating  <>

	* g++spec.c (lang_specific_driver): Treat .h files as C++ header
	files when using g++.
	* lang-specs.h: Handle compiling C++ header files.

2003-01-09  Jakub Jelinek  <>

	* decl.c (start_decl): Only check DECL_THREAD_LOCAL for VAR_DECLs.

2003-01-09  Kriang Lerdsuwanakij  <>

	* pt.c (push_access_scope_real): Call push_to_top_level for
	function in namespace scope.
	(pop_access_scope): Call pop_from_top_level for function in
	namespace scope.

2003-01-09  Jakub Jelinek  <>

	* decl.c (start_decl): Don't set DECL_COMMON for __thread variables.

2003-01-09  Christian Cornelssen  <>

	* (c++.install-common, c++.install-man,
	c++.uninstall): Prepend $(DESTDIR) to destination paths in
	all (un)installation commands.
	(c++.install-common): Rewrite $(LN) commands to support
	DESTDIR with "ln" as well as with "ln -s".

2003-01-08  Jason Merrill  <>

	* parser.c (cp_parser_primary_expression): See through explicitly
	scoped ALIAS_DECLs, too.

2003-01-08  Nathanael Nerode  <>

	* decl.c: Remove some #if 0 code.

	* decl.c: ANSIfy function declarations.

2003-01-07  Mark Mitchell  <>

	* parser.c (cp_parser_asm_definition): Correct handling of omitted

2003-01-08  Kriang Lerdsuwanakij  <>

	PR c++/9030
	* decl.c (make_typename_type): Check access only when tf_error.
	(make_unbound_class_template): Likewise.
	* pt.c (saved_access_scope): New variable.
	(push_access_scope_real): New function.
	(push_access_scope): Likewise.
	(pop_access_scope): Likewise.
	(tsubst_default_argument): Use them.
	(instantiate_template): Likewise.
	(regenerate_decl_from_template): Likewise.
	(instantiate_decl): Likewise.
	(get_mostly_instantiated_function_type): Likewise.

2003-01-07  Nathanael Nerode <>

	* tree.c: Delete bogus #if 0 code.

2003-01-07  Andreas Schwab  <>

	* class.c (layout_class_type): Don't use

2003-01-06  Mark Mitchell  <>

	PR c++/9165
	* decl2.c (build_cleanup): Mark the object as used.

	* pt.c (retrieve_local_specialization): Revert 2003-01-05 change.
	(hash_local_specialization): New function.
	(register_local_specialization): Revert 2003-01-05 change.
	(instantiate_decl): Use hash_local_specialization when creating
	the local_specializations table.

	* decl2.c (mark_used): Do not synthesize thunks.

	* class.c (layout_class_type): Correct handling of unnamed
	bitfields wider than their types.

	PR c++/9189
	* parser.c (cp_parser): Remove default_arg_types.  Update
	documentation for unparsed_functions_queues.
	(cp_parser_late_parsing_default_args): Take a FUNCTION_DECL as the
	(cp_parser_new): Don't set parser->default_arg_types.
	(cp_parser_function_definition): Adjust usage of
	(cp_parser_class_specifier): Don't mess with
	parser->default_arg_types.  Handle default argument processing in
	a separate phase from function body processing.
	(cp_parser_template_declaration_after_export): Adjust usage of
	(cp_parser_late_parsing_for_member): Do not handle default

2003-01-06  Nathan Sidwell  <>

	PR c++/9109
	* parser.c (cp_parser_declarator_kind): New enum.
	(cp_parser_declarator): Adjust.
	(cp_parser_direct_declarator): Adjust. Allow for either named or
	abstract declarator. Prefer abstract, if possible. Allow
	parenthesized function name.
	(cp_parser_condition): Adjust cp_parser_declarator call.
	(cp_parser_explicit_instantiation): Likewise.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_type_id): Likewise.
	(cp_parser_function_definition): Likewise.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_parameter_declaration): Use cp_parser_declarator to do
	the tentative parsing.
	(cp_parser_exception_declaration): Likewise.

2003-01-05  Mark Mitchell  <>

	* parser.c (cp_parser_template_parameter): Adjust call to
	(cp_parser_parameter_declaration_list): Likewise.
	(cp_parser_parameter_declaration): Replace
	greater_than_is_operator_p with template_parm_p parameter.  Do not
	cache tokens for template default arguments.

	* pt.c (retrieve_local_specialization): Use htab_find, not
	(register_local_specialization): Use htab_find_slot, not
	(instantiate_decl): Pass a hash function to htab_create.

2003-01-04  Kaveh R. Ghazi  <>

	* parser.c (cp_parser_binary_expression,
	cp_parser_additive_expression, cp_parser_shift_expression,
	cp_parser_relational_expression, cp_parser_equality_expression,
	cp_parser_and_expression, cp_parser_exclusive_or_expression,
	cp_parser_logical_and_expression, cp_parser_logical_or_expression,
	cp_parser_binary_expression): Const-ify.

2003-01-04  Mark Mitchell  <>

	* method.c (use_thunk): Disable access control while building the
	body of the thunk.

2003-01-03  Nathanael Nerode  <>

	* cvt.c, decl.c, decl2.c: This is the C++ front end, not the C
	front end.

2003-01-03  Matt Austern  <>

	* cp-tree.h (struct lang_type_class): add field for key method
	(cp_global_trees): rename dynamic_classes to keyed_classes
	(key_method): add definition
	* class.c (finish_struct_1): compute class's key method, and add
	the class to keyed_classes list if there is no key method.
	* decl.c (finish_function): add class to keyed_classes list if we
	see a definition of the class's key method.
	* pt.c (instantiate_class_template): add template specialization
	of a dynamic class to keyed_classes list.
	* decl2.c (key_method): remove
	(finish_file): iterate only through keyed_classes list when
	deciding whether to emit vtables, remove class from its list after
	we do the emission.

2003-01-02  Jason Merrill  <>

	* call.c (build_conditional_expr): Stabilize lvalues properly.
	* cvt.c (ocp_convert): Don't build NOP_EXPRs of class type.
	* tree.c (lvalue_p_1): Don't allow sloppy NOP_EXPRs as lvalues.
	Don't allow CALL_EXPR or VA_ARG_EXPR, either.

	* call.c (convert_like_real): Call decl_constant_value for an
	IDENTITY_CONV even if there are no more conversions.

	* cvt.c (build_up_reference): Don't push unnamed temps.

	* decl2.c (do_namespace_alias): Namespace aliases are DECL_EXTERNAL.

	* dump.c (cp_dump_tree): Don't try to dump class-specific fields
	for a backend struct.

	* except.c (wrap_cleanups_r, build_throw): Make
	* init.c (expand_default_init): Update to handle MUST_NOT_THROW_EXPR.

	* init.c (build_vec_delete_1): Pre-evaluate the base address.

	* init.c (get_temp_regvar): Simplify logic.

	* tree.c (cp_copy_res_decl_for_inlining): Only do debug tweaks if
	our replacement is a decl.

	* decl.c (cp_make_fname_decl): Push the decls inside the
	outermost scope.

2003-01-03  Nathan Sidwell  <>

	PR c++/45, c++/3784
	* tree.c (cp_tree_equal, TEMPLATE_PARM_INDEX): The types must be
	the same too.

2003-01-03  Graham Stott  <>

	* parser.c (struct cp_parser): Add access_checks_lists field
	(cp_parser_simple_declaration): Use.
	(cp_parser_init_declarator): Likewise.

2003-01-02  Mark Mitchell  <>

	* parser.c (cp_parser_declaration): Accept the __extension__
	keyword before the declaration.

	PR c++/2843
	* parser.c (cp_parser_parameter_declaration): Allow attributes to
	appear after the declarator.

	* call.c (build_new_method_call): Fix typo in message format

2003-01-02  Mark Mitchell  <>

	* parser.c (cp_lexer_next_token_is): Declare it inline.
	(cp_lexer_set_source_position_from_token): Likewise.
	(cp_lexer_debugging_p): Likewise.
	(cp_parser_parsing_tentatively): Likewise.
	(cp_parser_nested_name_specifier_opt): Reduce the number of calls
	to the cp_lexer_peek_token.

	* parser.c (cp_parser_sizeof_operand): Do not evaluate the

2003-01-02  Steven Bosscher <>

	* cp/except.c, cp/expr.c, cp/friend.c, cp/g++spec.c,
	cp/lang-options.h, cp/lang-specs.h, cp/lex.h, cp/ptree.c,
	cp/repo.c: Fix copyright years.

2003-01-01  Neil Booth  <>

	* lex.c: Remove superfluous include of cpplib.h.
	(CONSTRAINT): Define without conditions.
	(init_cp_pragma): Use c_register_pragma.

Copyright (C) 2003 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.