2007-04-13  Jason Merrill  <jason@redhat.com>

	PR c++/31074
	* call.c (reference_binding): Add c_cast_p parm.  If true,
	add quals to TO as needed to make it reference-compatible.

2007-04-11  Jan Hubicka  <jh@suse.cz>

	* cp/class.c (convert_to_base_statically): Fold produced tree; verify
	that we are not processing template_decl.

2007-04-09  Mark Mitchell  <mark@codesourcery.com>

	PR c++/31449
	* class.c (build_base_path): Ensure that the converted pointer has
	the same cv-qualification as the input.

2007-04-09  Paolo Carlini  <pcarlini@suse.de>

	* tree.c (cp_tree_equal): Deal with TRAIT_EXPR.

2007-04-08  Steven Bosscher  <steven@gcc.gnu.org>

	* cp-objcp-common.h (LANG_HOOKS_TREE_INLINING_ADD_PENDING_FN_DECLS):
	Do not set it.
	(LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P): Do not set it.
	* tree.c (cp_add_pending_fn_decls): Remove.
	* cp-tree.h (cp_add_pending_fn_decls): Remove prototype.

2007-04-07  Daniel Berlin  <dberlin@dberlin.org>

	Revert change removing staticp.

2007-04-06  Daniel Berlin  <dberlin@dberlin.org>

	* cp-objcp-common.c (cxx_staticp): Remove.
	* cp-objcp-common.h (LANG_HOOKS_STATICP): Remove.
	* cp-tree.h (cxx_staticp): 	

2007-04-04  Danny Smith  <dannysmith.users.sourceforge.net>

	* class.c (check_for_override): Don't remove dllmport attribute
	of virtual methods.

2007-04-03  Jakub Jelinek  <jakub@redhat.com>

	PR c++/30847
	* typeck.c (build_modify_expr): For COND_EXPR on LHS, if RHS has void
	type issue error and return early.

2007-03-30  Jason Merrill  <jason@redhat.com>

	PR c++/31187
	* typeck.c (cp_type_readonly): New fn.
	* cp-tree.h: Declare it.
	* decl.c (start_decl): Set implicit DECL_THIS_STATIC here.
	(cp_finish_decl): Not here.

2007-03-31  Richard Guenther  <rguenther@suse.de>

	* optimize.c (maybe_clone_body): Replace splay-tree usage by
	pointer-map.

2007-03-31  Douglas Gregor  <doug.gregor@gmail.com>

	PR c++/31138
	PR c++/31140
	PR c++/31141
	* parser.c (declarator_can_be_parameter_pack): New.
	(cp_parser_template_parameter): Only parse the `...' if the
	declarator can be a parameter pack.
	(cp_parser_parameter_declaration): Ditto. Also, handle when TYPE
	is NULL.
	* pt.c (find_parameter_packs_r): Look into the bounds on integer
	types (they could be used as array bounds). 
	(check_for_bare_parameter_packs): Deal with TEMPLATE_PARM_INDEX.
	(tsubst_pack_expansion): Handle failure to expand parameter
	packs.
	
2007-03-30  Paolo Carlini  <pcarlini@suse.de>

	PR c++/26099
	* cp-tree.h (enum cp_trait_kind, struct tree_trait_expr,
	TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add.
	(enum cp_tree_node_structure_enum, union lang_tree_node): Update.
	(CLASS_TYPE_NON_UNION_P): Add.
	(struct lang_type_class): Add has_complex_dflt.
	(TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add.
	(locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare.
	* cp-tree.def: Add TRAIT_EXPR.
	* cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case.
	* lex.c (struct resword): Add __has_nothrow_assign,
	__has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign,
	__has_trivial_constructor, __has_trivial_copy,
	__has_trivial_destructor, __has_virtual_destructor, __is_abstract,
	__is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum,
	__is_pod, __is_polymorphic, __is_union.
	* parser.c (cp_parser_primary_expression): Deal with the new RIDs.
	(cp_parser_trait_expr): New.
	* semantics.c (finish_trait_expr, trait_expr_value
	classtype_has_nothrow_copy_or_assign_p): New.
	* method.c (locate_copy, locate_ctor, locate_dtor): Do not define
	as static.
	* decl.c (cp_tree_node_structure): Add TRAIT_EXPR.
	* class.c (check_bases, check_field_decl, check_bases_and_members):
	Deal with TYPE_HAS_COMPLEX_DFLT (t) too.
	* pt.c (uses_template_parms, tsubst_copy_and_build,
	value_dependent_expression_p, type_dependent_expression_p): Deal with
	TRAIT_EXPR.
	* tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR.

2007-03-29  Richard Guenther  <rguenther@suse.de>

	* tree.c (cp_walk_subtrees): Do not set input_location.

2007-03-28  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29077
	* decl.c (grokfndecl): Properly setup decl if it is a constructor or a
	destructor.

2007-03-28 Douglas Gregor <doug.gregor@gmail.com>

	* parser.c (struct cp_parser): Update comment for
	greater_than_is_operator_p.
	(cp_parser_primary_expression): In C++0x mode, a cast operator can
	be terminated with a `>>' token when !GREATER_THAN_IS_OPERATOR_P.
	(TOKEN_PRECEDENCE): In C++0x mode, `>>' is treated like `>' when
	!GREATER_THAN_IS_OPERATOR_P.
	(cp_parser_binary_expression): When -Wc++0x-compat, warn about
	`>>' operators that will become two `>' tokens in C++0x.
	(cp_parser_parameter_declaration): Treat `>>' like `>' in C++0x
	mode, allowing it to terminate default arguments.
	(cp_parser_enclosed_template_argument_list): In C++0x mode, treat
	`>>' like two consecutive `>' tokens.
	(cp_parser_skip_to_end_of_template_parameter_list): Ditto.
	(cp_parser_next_token_ends_template_argument_p): In C++0x, `>>'
	ends a template argument.

2007-03-28  Douglas Gregor  <doug.gregor@gmail.com>

	* decl.c (redeclaration_error_message): Complain when redeclaring
	a friend function with default template arguments (C++0x mode only).
	* cp-tree.h (check_default_tmpl_args): Declare.
	* pt.c (check_default_tmpl_args): In C++0x mode, permit default
	template arguments in function templates. Add support for checking
	the default template arguments of friend templates.
	(push_template_decl_real): Fix call to check_default_tmpl_args.
	(type_unification_real): If a template parameter has not been
	deduced but provides a default template argument, substitute into
	that default template argument.
	* parser.c (cp_parser_init_declarator): When declaring (but not
	defining!) a function template in C++0x mode, check for default
	template arguments.

2007-03-28 Douglas Gregor <doug.gregor@gmail.com>

	PR c++/29993
	* decl.c (grokdeclarator): Deal with cv-qualified function type
	typedefs in the same way for member and non-member functions.

2007-03-26  Dirk Mueller  <dmueller@suse.de>

	* parser.c (cp_parser_member_declaration): Pedwarn
	about stray semicolons after member declarations.

2007-03-26  Paolo Carlini  <pcarlini@suse.de>

	PR c++/30500
	* pt.c (instantiate_decl): Set in_system_header.

2007-03-22  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (current_tempalte_parms): Improve documentation.
	* pt.c (current_template_args): Likewise.

	PR c++/30863
	* parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Do
	not consume tokens when failing.

2007-03-22  Jim Wilson  <wilson@specifix.com>
	    Mark Mitchell  <mark@codesourcery.com>

	PR c++/31273
	* call.c (standard_conversion): Use type_decays_to.  Keep FCODE
	consistent with FROM.

2007-03-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* error.c (dump_expr): Handle dependent names that designate types.
	* cxx-pretty-print.c (pp_cxx_unqualified_id): Handle TYPENAME_TYPE.

2007-03-17  Kazu Hirata  <kazu@codesourcery.com>

	* cp-tree.def, parser.c, pt.c: Fix comment typos.

2007-03-16  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* cvt.c (cp_convert_and_check) : Define.
	* cp-tree.h (cp_convert_and_check): Declare.
	* call.c (convert_conversion_warnings): Rename to
	conversion_null_warnings.  The warning for floating-point to
	integer is handled by convert_and_check in convert_like_real.
	(convert_like_real): convert_conversion_warnings was renamed as
	conversion_null_warnings.
	* typeck.c (build_binary_op): Use cp_convert_and_check to warn for
	overflow and changes of value during conversion.

2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/30891
	* parser.c (cp_parser_statement): If 'namespace' is found, this
	only can be a namespace alias definition, so parse it now.
	(cp_parser_namespace_alias_definition): if we find an open brace
	instead of '=', then this is actually a misplaced namespace
	definition.
	
2007-03-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/24924
	* decl.c (cxx_init_decl_processing): Move command-line options
	processing to c-opts.c.
	
2007-03-15  Douglas Gregor  <doug.gregor@gmail.com>

	* ptree.c (cxx_print_type): Use formatting markup for integers
	when printing template parameter index/level/orig level.
	(cxx_print_xnode): Ditto.
	* cp-tree.h (TEMPLATE_PARM_PARAMETER_PACK): Use TREE_LANG_FLAG_0.
	(struct template_parm_index_s): Remove the PARAMETER_PACK member.
	Make INDEX, LEVEL, and ORIG_LEVEL integers instead of
	HOST_WIDE_INTs.
	(struct saved_scope): Make X_PROCESSING_TEMPLATE_DECL an int,
	rather than a HOST_WIDE_INT.
	Turn X_PROCESSING_EXPLICIT_INSTANTIATION, SKIP_EVALUATION, and
	NEED_POP_FUNCTION_CONTEXT into bool bitfields; reorder fields for
	better bit-packing.
	(struct language_function): Make RETURNS_VALUE, RETURNS_NULL,
	RETURNS_ABNORMALLY, IN_FUNCTION_TRY_HANDLER, and
	IN_BASE_INITIALIZER bool bitfields.
	(struct cp_declarator): Make KIND a 4-bit field. Make
	PARAMETER_PACK_P a bool bitfield just after KIND.
	* pt.c (uses_parameter_packs): Destroy the pointer set.
	(make_pack_expansion): Ditto.
	(check_for_bare_parameter_packs): Ditto.
	* name-lookup.c (push_to_top_level): Make need_pop a bool value.
	
2007-03-14  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR c++/31165
	* call.c  (convert_default_arg): Instead of copying the node,
	unshare it.

2007-03-15  Dirk Mueller  <dmueller@suse.de>

	PR c++/30860
	* call.c (convert_conversion_warnings): New..
	(convert_like_real): .. factored out from here.
	(convert_conversion_warnings): Add warning about
	false being converted to NULL in argument passing.

2007-03-14  Dirk Mueller  <dmueller@suse.de>

	* cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
	(finish_do_body): Warn about empty body in do/while statement.

2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning.
	
2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/21438
	* typeck.c (build_binary_op): Call warn_for_div_zero instead of
	warning.
	
2007-03-13  Alexandre Oliva  <aoliva@redhat.com>

	* cp/repo.c (init_repo): Initialize random_seed saved options.
	(finish_repo): Adjust.

2007-03-13  Mark Mitchell  <mark@codesourcery.com>

	PR bootstrap/30899
	* Make-lang.in (doc/g++.1): Use $< to specify the location from
	which to copy.

2007-03-12  Seongbae Park <seongbae.park@gmail.com>

	* decl.c (compute_array_index_type): New warning flag warn_vla.

2007-03-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/30108
	* call.c (convert_default_arg): Copy non-constant arguments.

2007-03-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/31038
	* parser.c (cp_parser_postfix_expression): Disallow compound
	literals in constant expressions.

	PR c++/30328
	* semantics.c (finish_typeof): Use unlowered_expr_type.
	
2007-03-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/30274
	* cp-tree.h (unlowered_expr_type): New function.
	* typeck.c (is_bitfield_expr_with_lowered_type): Handle
	COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
	(unlowered_expr_type): New function.
	(build_unary_op): Disallow predecrements of bool bitfields.
	* call.c (build_conditional_expr): Use unlowered_expr_type.
	* pt.c (type_unification_real): Likewise.

2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>

	PR c++/20599
	* typeck.c (check_return_expr): Check for bare parameter packs.
	(comptypes): Compare template parameter packs and
	type pack expansions.
	* decl.c (grokdeclarator): Deal with the declaration of function
	parameter packs.
	(grokparms): Verify that the (optional) function parameter pack is
	at the end of the parameter list.
	(xref_basetypes): Handle pack expansions in the base class.
	(cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
	* cp-tree.def (TYPE_ARGUMENT_PACK): New.
	(NONTYPE_ARGUMENT_PACK): New.
	(TYPE_PACK_EXPANSION): New.
	(EXPR_PACK_EXPANSION): New.
	(ARGUMENT_PACK_SELECT): New.
	* cp-objcp-common.c (cp_tree_size): Compute size of
	(NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
	ARGUMENT_PACK_SELECT.
	* error.c (dump_template_argument): Print template argument packs.
	(dump_template_argument_list): Ditto.
	(dump_template_parameter): Dump `...' for template type parameter
	packs.
	(dump_type): Dump TYPE_PACK_EXPANSION nodes.
	(dump_parameters): Print function parameter packs.
	(dump_template_parms): Print template argument packs.
	(dump_expr): Dump EXPR_PACK_EXPANSION nodes.
	(maybe_warn_variadic_templates): New.
	* operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
	* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
	NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
	CAST_EXPR. 
	* mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
	(write_template_arg): Write argument packs as separate arguments.
	* cp-tree.h (struct template_parm_index_s): Add flag that
	indicates that the template parameter is actually a parameter
	pack.
	(struct tree_argument_pack_select): New.
	(enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
	(union lang_tree_node): Add argument_pack_select.
	(FUNCTION_PARAMETER_PACK_P): New.
	(PACK_EXPANSION_P): New.
	(PACK_EXPANSION_PATTERN): New.
	(SET_PACK_EXPANSION_PATTERN): New.
	(PACK_EXPANSION_PARAMETER_PACKS): New.
	(ARGUMENT_PACK_P): New.
	(ARGUMENT_PACK_ARGS): New.
	(SET_ARGUMENT_PACK_ARGS): New.
	(ARGUMENT_PACK_INCOMPLETE_P): New.
	(ARGUMENT_PACK_EXPLICIT_ARGS): New.
	(TEMPLATE_PARM_PARAMETER_PACK): New.
	(TEMPLATE_TYPE_PARAMETER_PACK): New.
	(ARGUMENT_PACK_SELECT_FROM_PACK): New.
	(ARGUMENT_PACK_SELECT_INDEX): New.
	(ARGUMENT_PACK_SELECT_ARG): New.
	(struct cp_declarator): Add parameter_pack_p flag.
	(maybe_warn_variadic_templates): Declare.
	(process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
	indicate a template parameter pack. 
	(uses_parameter_packs): Declare.
	(template_parameter_pack_p): Declare.
	(template_parms_variadic_p): Declare.
	(make_pack_expansion): Declare.
	(check_for_bare_parameter_packs): Declare.
	* cxx-pretty-print.c (pp_cxx_unary_expression): Print
	sizeof... expressions. 
	(pp_cxx_expression): Print pack expansions and non-type argument
	packs.
	(pp_cxx_exception_specification): Print pack expansions. 
	(pp_cxx_direct_declarator): Print ellipsis for parameter packs.
	(pp_cxx_ctor_initializer): Print pack expansions.
	(pp_cxx_type_id): Print pack expansions.
	(pp_cxx_template_argument_list): Print argument packs.
	(pp_cxx_template_parameter): Print ellipsis for template parameter
	packs.
	* pt.c (comp_template_parms): Compare template parameter packs.
	(template_parameter_pack_p): New.
	(template_parms_variadic_p): New.
	(template_args_variadic_p): New.
	(make_ith_pack_parameter_name): New.
	(struct find_parameter_pack_data): New.
	(find_parameter_packs_r): New.
	(uses_parameter_packs): New.
	(make_pack_expansion): New.
	(check_for_bare_parameter_packs): New.
	(expand_template_argument_pack): New.
	(reduce_template_parm_level): Propagate parameter pack flag.
	(process_template_parm): Add is_parameter_pack parameter to state
	when the parameter is actually a parameter pack. Create template
	parameter packs when is_parameter_pack is true.
	(current_template_args): The argument for a template parameter
	pack is an argument pack containing a single pack expansion.
	(process_partial_specialization): When checking that non-type
	argument expressions do not involve template parameters, loop over
	the arguments in argument packs separately.
	(push_template_decl_real): Check that the type of the declaration
	does not have any bare parameter packs. Check that primary
	templates have no more than one parameter pack, and that it comes
	at the end of the template parameter list.
	(convert_template_argument): Handle coercions for pack expansion
	expressions by coercing the pattern then rebuilding the expansion.
	(coerce_template_parms): When coercing the arguments for a
	variadic template, pack "extra" arguments into an argument pack.
	(coerce_template_template_parms): Cannot coerce between parameter
	packs and non-pack parameters.
	(template_args_equal): Compare PACK_EXPANSION_P expressions.
	(comp_template_args): Expand all template arguments packs before
	comparing template argument lists.
	(mangle_class_name_for_template): Make argument packs as separate
	template arguments.
	(for_each_template_parm_r): No need to handle BASELINK. 
	(instantiate_class_template): Handle pack expansions in the base
	class list.
	(tsubst_pack_expansion): New.
	(tsubst_template_args): Handle substitutions of argument packs and
	pack expansion into template argument lists.
	(tsubst_decl): Expand function parameter packs into separate
	function parameters.
	(tsubst_arg_types): Expand a type pack expansion into separate
	argument types.
	(tsubst_exception_specification): Handle pack expansions in
	exception specifiers.
	(tsubst): See through ARGUMENT_PACK_SELECT arguments when 
	replacing a template parameter with its argument. If we encounter
	a substitution for an argument pack, just return the parameter
	itself. 
	(tsubst_copy): sizeof(X...) returns the number of elements in
	parameter pack X.  See through ARGUMENT_PACK_SELECT when the
	PARM_DECL is a parameter pack.
	(tsubst_expr): Expression pack expansions and argument packs
	cannot show up here; they will all be handled through function
	calls, sizeof, and template argument lists.
	(tsubst_copy_and_build): sizeof(X...) returns the number of
	elements in parameter pack X.  Handle pack expansions in TREE_LIST
	and CONSTRUCTOR nodes.
	(fn_type_unification): Handle "incomplete" explicit template
	argument lists that specify some of the arguments for a template
	parameter pack.
	(type_unification_real): Unify arguments against pack expansions.
	(template_parm_level_and_index): New, helper function.
	(unify_pack_expansion): New.
	(unify): Unify argument packs on an argument-by-argument basis,
	handling variadic argument packs as well.
	(more_specialized_fn): Handle unification of function parameter
	packs. All things being equal, prefer non-variadic function
	templates to variadic function templates.
	(more_specialized_class): Prefer the variadic class template
	partial specialization that binds fewer arguments to a parameter
	pack.
	(regenerate_decl_from_template): Expand function parameter packs
	into separate parameters.
	(instantiate_decl): Ditto.
	(tsubst_initializer_list): Handle pack expansions for base-class
	initializers.
	(dependent_type_p_r): Determine dependent types in argument packs
	and pack expansions.
	(value_dependent_expression_p): Determine value-dependence of
	non-type argument packs.
	(dependent_template_arg_p): Handle argument packs.
	* semantics.c (finish_cond): Check for bare parameter packs.
	(finish_expr_stmt): Ditto.
	(finish_for_expr): Ditto.
	(finish_switch_cond): Ditto.
	(finish_mem_initializers): Ditto.
	* name-lookup.c (arg_assoc_type): Handle pack expansions and
	argument packs.
	* decl2.c (cp_build_parm_decl): Mark function parameter packs.
	* parser.c (make_declarator): Declarator is not an expansion.
	(make_pointer_declarator): Transfer parameter pack flag to outer
	declarator.
	(make_reference_declarator): Ditto.
	(make_ptrmem_declarator): Ditto.
	(make_call_declarator): Ditto.
	(make_array_declarator): Ditto.
	(cp_parser_postfix_expression): Allow pack expansion expressions
	in the argument list for a call expression.
	(cp_parser_parenthesized_expression_list): Add new parameter
	ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
	into separate arguments."
	(cp_parser_new_placement): Allow pack expansion expressions.
	(cp_parser_new_initializer): Ditto.
	(cp_parser_mem_initializer_list): Allow ellipsis to create a
	base-class initializer expansion.
	(cp_parser_mem_initializer): Ditto.
	(cp_parser_template_parameter_list): Keep track of whether the
	template parameter is a template parameter pack.
	(cp_parser_template_parameter): Parse the ellipsis to indicate a
	template parameter pack.
	(cp_parser_type_parameter): Ditto.
	(cp_parser_template_argument_list): Parse the ellipsis to indicate
	a pack expansion.
	(cp_parser_direct_declarator): Parse the ellipsis to indicate that
	this declarator is a parameter pack.
	(cp_parser_parameter_declaration): The ellipsis does not end the
	parameter declaration, because it might be a parameter pack. Parse
	the ellipsis to indicate a parameter pack.
	(cp_parser_initializer): Allow pack expansions.
	(cp_parser_initializer_list): Allow ellipsis to create an
	initializer expansion.
	(cp_parser_base_clause): Allow ellipsis to create a base specifier
	expansion.
	(cp_parser_type_id_list): Allow ellipsis to create an exception
	specifier expansion.
	(cp_parser_attribute_list): Don't allow pack expansions.
	(cp_parser_functional_cast): Allow pack expansions.
	(cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
	compute the length of a parameter pack.
	(cp_parser_next_token_ends_template_argument_p): An ellipsis can
	end a template argument.
	* tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
	NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
	CAST_EXPR. 

2007-03-09  Dirk Mueller  <dmueller@suse.de>

	* cp/call.c (build_new_op): Call warn_logical_operator.

2007-03-08  Volker Reichelt  <reichelt@netcologne.de>

	PR c++/30852
	* semantics.c (finish_offsetof): Handle COMPOUND_EXPR.

	PR c++/30534
	* pt.c (any_template_arguments_need_structural_equality_p):
	Robustify.

2007-03-08  Alexandre Oliva  <aoliva@redhat.com>

	* decl.c (grokdeclarator): Disable warnings for anonymous
	bitfields.

2007-03-05  Volker Reichelt  <reichelt@netcologne.de>

	* typeck2.c (readonly_error): Always emit a hard error.
	Remove last argument.
	* cp-tree.h (readonly_error): Adjust prototype.
	* semantics.c (finish_asm_stmt): Adjust call to readonly_error.
	* typeck.c (build_unary_op): Likewise.
	(build_modify_expr): Likewise.

2007-03-04  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/30895
	* tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.

2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/15787
	* parser.c (struct cp_parser): New IN_IF_STMT.
	(cp_parser_statement_seq_opt): Handle an unexpected 'else',
	returning if parsing the body of an 'if' statement or issuing an
	error and continuing.
	(cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
	body of 'if'.
	(cp_parser_jump_statement): Mask new IN_IF_STMT bit.
	
2007-03-02  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/28253
	* class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
	for thunks.

2007-03-02  Geoffrey Keating  <geoffk@apple.com>

	* g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
	Objective-C++.  Don't exit early if -shared-libgcc needs to be
	added.

2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* typeck.c (common_base_type): Delete unused function.
	
2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>

	* Make-lang.in: Add dummy lang.install-pdf target.

2007-03-01  Simon Baldwin <simonb@google.com>

	PR c++/23689
	* decl.c (check_tag_decl): Added new warning for typedef ignored
	when it precedes an otherwise valid non-typedef declaration.

2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>

	* typeck.c (build_function_call): Store converted arguments
	in a stack-allocated array instead of building a list.
	(convert_arguments): Store arguments in the array passed in as an
	argument, and return the actual number of arguments.
	* call.c (build_call): Delete, and replace with...
	(build_call_n, build_call_a): New.
	(build_op_delete_call): Rewrite to avoid constructing argument lists.
	(build_over_call): Store converted arguments in a stack-allocated
	array instead of building a list.
	(build_cxx_call): Pass arguments in an array instead of as a list.
	(build_java_interface_fn_ref): Rewrite to avoid constructing
	argument lists.
	* tree.h: Update declarations to reflect above changes.
	* method.c (use_thunk): Use a stack-allocated array to hold
	the arguments instead of a list.
	* rtti.c (throw_bad_cast): Update call to cxx_call.
	(throw_bad_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.
	* init.c (build_builtin_delete_call): Use build_call_n.
	* decl.c (expand_static_init): Likewise.
	* except.c (cp_protect_cleanup_actions): Likewise.
	* cp-gimplify.c (genericize_eh_spec_block): Likewise.
	(gimplify_must_not_throw_expr): Likewise.
	(cxx_omp_apply_fn): Use build_call_a.

2007-02-26  Mark Mitchell  <mark@codesourcery.com>

	* semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
	* decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.

2007-02-25  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (static_ctors): Remove.
	* cp-tree.h (static_dtors): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
	refactoring of tree_map hierarchy.
	(decl_shadowed_for_var_insert): Likewise.
	* semantics.c (expand_body): Use c_expand_body.
	(expand_or_defer_fn): Don't update static_ctors or static_dtors.
	* decl2.c (static_ctors): Remove.
	(static_dtors): Likewise.
	(generate_ctor_or_dtor_function): Pass NULL_TREE to
	objc_generate_static_init_call.  Do not call static_[cd]tors.
	(generate_ctor_and_dtor_functions_for_priority): Do not check for
	static_[cd]tors.
	(cp_write_global_declarations): Likewise.

2007-02-23  Richard Guenther  <rguenther@suse.de>

	* class.c (note_name_declared_in_class): Make declaration
	changes meaning a pedwarn.

2007-02-22  Michael Matz  <matz@suse.de>

	PR c++/29433
	* cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
	* error.c (dump_aggr_type, dump_simple_decl, dump_decl,
	dump_function_decl): Guard emitting outer scopes by new flag.
	* cp-lang.c (cxx_dwarf_name): New function.
	(LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
	* pt.c (classtype_mangled_name, mangle_class_name_for_template):
	Remove functions.
	(push_template_decl_real, lookup_template_class): Remove calls
	to above functions.

2007-02-19  Mark Mitchell  <mark@codesourcery.com>

	* call.c (build_new_method_call): Ensure that explicit calls of
	destructors have type "void".

2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* typeck.c (build_binary_op): Replace -Wstring-literal-comparison
	and -Walways-true with -Waddress.
	* cvt.c (convert_to_void): Replace unconditional warning with
	-Waddress.

2007-02-18  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, tree.c: Fix comment typos.

2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR C++/30158
	* semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
	statement expression if we had an error mark node.
	        
2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
	Change class to tcc_vl_exp.

	* call.c (build_call): Use build_call_list instead 
	of build3. 
	(build_over_call): Likewise.
	(build_new_method_call): Use build_min_non_dep_call_list 
	instead of build_min_non_dep.

	* error.c (dump_call_expr_args): New function.
	(dump_aggr_init_expr_args): New function.
	(dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
	Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.

	* cvt.c (convert_to_void): Use build_call_array instead
	of build3; use new AGGR_INIT_EXPR accessor macros.

	* mangle.c (write_expression): Use TREE_OPERAND_LENGTH
	instead of TREE_CODE_LENGTH.

	* dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
	AGGR_INIT_EXPR accessor macros.

	* cp-gimplify.c (cp_gimplify_init_expr): Use 
	AGGR_INIT_EXPR_SLOT to set the slot operand.

	* cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
	(AGGR_INIT_EXPR_SLOT): New macro.
	(AGGR_INIT_EXPR_ARG): New macro.
	(aggr_init_expr_nargs): New macro.
	(AGGR_INIT_EXPR_ARGP): New macro.
	(aggr_init_expr_arg_iterator): New.
	(init_aggr_init_expr_arg_iterator): New.
	(next_aggr_init_expr_arg): New.
	(first_aggr_init_expr_arg): New.
	(more_aggr_init_expr_args_p): New.
	(FOR_EACH_AGGR_INIT_EXPR_ARG): New.
	(stabilize_aggr_init): New declaration.
	(build_min_non_dep_call_list): Likewise.

	* tree.c (process_aggr_init_operands): New function.
	(build_aggr_init_array) New function.
	(build_cplus_new): Update to use new CALL_EXPR and
	AGGR_INIT_EXPR accessor macros. Replace use of build3 with
	build_aggr_init_array.
	(build_min_non_dep_call_list) New function.
	(build_min_nt): Assert input code parameter is not a variable
	length expression class.
	(build_min, build_min_non_dep): Likewise.
	(cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
	to check for equality instead of recursing. Handle tcc_vl_exp
	tree code classes.
	(stabilize_call): Update to only handle CALL_EXPRs, not 
	AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
	(stabilize_aggr_init): New function.
	(stabilize_init): Use it.

	* cxx-pretty-print.c (pp_cxx_postfix_expression)
	<AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
	AGGR_INIT_EXPR accessor macros and argument iterators.
	
	* pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
	build_vl_exp. Iterate through the operands, recursively 
	processing each one.
	(tsubst_copy_and_build) <CALL_EXPR>: Update to use new
	CALL_EXPR accessor macros.
	(value_dependent_expression_p) <default>: Handle tcc_vl_exp
	tree code classes. Use TREE_OPERAND_LENGTH instead of 
	TREE_CODE_LENGTH.

	* semantics.c (finish_call_expr): Use build_nt_call_list
	instead of build_nt.
	(simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
	accessor macros. Use build_call_array to construct the 
	CALL_EXPR node instead of build3
	
	* decl2.c (build_offset_ref_call_from_tree): Use 
	build_nt_call_list and build_min_non_dep_call_list instead
	of build_min_nt and build_min_non_dep.

	* parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
	Use build_nt_call_list instead of build_min_nt.

2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/28943
	* call.c (build_conditional_expr): Improve error message.
	
2007-02-13  Dirk Mueller  <dmueller@suse.de>

	* friend.c (do_friend): Annotate warning about friend
	declarations in templates with OPT_Wnon_template_friend.
	Convert informal message from warning() to inform().

2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
	    Mark Mitchell  <mark@codesourcery.com>

	PR c++/14622
	* pt.c (do_decl_instantiation): Detect type mismatches in explicit
	instantiations for variables.

2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR middle-end/7651
	* cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
	Check warn_unused_value just once.

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

	PR c++/26988
	* pt.c (determine_specialization): Use skip_artificial_parms_for.
	(fn_type_unificiation): Likewise.
	(get_bindings): Likewise.

o2007-02-06  Mark Mitchell  <mark@codesourcery.com>

	PR target/29487
	* decl.c (finish_function): Use DECL_REPLACEABLE.
	* tree.c (cp_cannot_inline_tree_fn): Likewise.

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

	* parser.c (cp_parser_primary_expression): Reformat overly long lines.

2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>

	* decl.c (grokvardecl): Don't error if !have_tls.
	(grokdeclarator): Likewise.
	* parser.c (cp_parser_omp_threadprivate): Likewise.

2007-02-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/30703
	* cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
	parameters and result decls in omp clauses.
	(cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
	by reference.

2007-02-05  Dirk Mueller  <dmueller@suse.de>

	PR bootstrap/30510
	* parser.c (cp_parser_class_specifier): Always initialize bases.

2007-02-05  Paolo Bonzini  <bonzini@gnu.org>

	* cp-tree.h (OMP_ATOMIC_CODE): Delete.
	(OMP_ATOMIC_DEPENDENT_P): Rewrite.
	* pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
	expressions.
	* semantics.c (finish_omp_atomic): Store a whole expression node
	in operand 1, and integer_zero_node in operand 0, for dependent
	OMP_ATOMIC.  Rewrite to make flow easier to understand.

2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.

2007-02-04  Kazu Hirata  <kazu@codesourcery.com>

	* class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
	parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.

2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>

       * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
       keyword warning to -Wc++0x-compat.
	
2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* decl.c (grokdeclarator): Update documentation.

2007-02-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/30536
	* decl.c (grokdeclarator): If __thread is used together with
	a storage class other than extern and static, clear thread_p
	after issuing diagnostics and fall through to checking the
	storage class.

2007-01-30  Roger Sayle  <roger@eyesopen.com>

	* error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
	calculating the size of an array (to avoid recursive errors).

2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/24745
	* typeck.c (build_binary_op): Fix logic for warning. Move warning
	to -Wpointer-arith.
	* call.c (convert_like_real): Don't warn when converting to
	boolean type.
	
2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* decl.c (pop_label): Replace warning with call to
	warn_for_unused_label.

2007-01-28  Andrew Pinski  <pinskia@gmail.com>

	PR C++/28988
	* semantics.c (finish_pseudo_destructor_expr): Check the
	destrutor name by calling check_dtor_name.

2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>

	* lex.c (D_CPP0X): Rename.
	(D_CXX0X): To this.
	(reswords): D_CPP0X -> D_CXX0X.
	(init_reswords): Ditto.
	* parser.c (cp_lexer_get_preprocessor_token): Warn about the use
	of C++0x keywords as identifiers.

2007-01-23  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/27492
	* decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
	function decls.

2007-01-23  Ian Lance Taylor  <iant@google.com>

	* typeck.c (convert_for_assignment): Only warn about a = b = c
	when converting to bool.

2007-01-23  Roger Sayle  <roger@eyesopen.com>

	* call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
	TREE_OVERFLOW.
	* typeck.c (ignore_overflows): Remove the remaining uses of
	TREE_CONSTANT_OVERFLOW.

2007-01-20  Jan Hubicka  <jh@suse.cz>

	* decl2.c (start_objects, start_static_storage_duration_function):
	Do not make the functions uninlinable.

2007-01-17  Ian Lance Taylor  <iant@google.com>

	* class.c (add_method): Call VEC_reserve_exact rather than passing
	a negative size to VEC_reserve.

2007-01-11  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29573
	* tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.

2007-01-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28999
	* decl.c (make_typename_type): If the qualified name is not a
	type, issue an error.
	* parser.c (cp_parser_elaborated_type_specifier): Fix comment
	formatting.

2007-01-08  Geoffrey Keating  <geoffk@apple.com>

	* rtti.c: Include target.h.
	(emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
	don't emit typeinfo for fundamental types as weak.
	* Make-lang.in (cp/rtti.o): Update and correct dependencies.

2007-01-08  Richard Guenther  <rguenther@suse.de>

	* cvt.c (cp_convert_to_pointer): Use build_int_cst_type.

2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>

	* call.c (standard_conversion): Pass flag to
	vector_types_convertible_p to disallow emission of note.
	* typeck.c (convert_for_assignment): Pass flag to
	vector_types_convertible_p to allow emission of note.
	(ptr_reasonably_similar): Pass flag to vector_types_convertible_p
	to disallow emission of note.

2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/28986
	* typeck.c (build_binary_op): Call overflow_warning if
	TREE_OVERFLOW_P is true for the result and not for any of the
	operands.
	
2007-01-06  Lee Millward  <lee.millward@codesourcery.com>

       PR c++/19439
       * class.c (add_method): Don't wait until template
       instantiation time to complain about duplicate methods.
	
2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c/19978
	* semantics.c (finish_unary_op_expr): Warn only if result
	overflowed and operands did not.

2007-01-05  Ian Lance Taylor  <iant@google.com>

	* typeck.c (build_binary_op): Warn about comparing a non-weak
	address to NULL.

2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>

	* pt.c (tsubst): Propagate the need for structural equality checks
	when reducing the level of template parameters.

2007-01-03  Kazu Hirata  <kazu@codesourcery.com>

	* pt.c: Fix a comment typo.

2006-01-02  Ian Lance Taylor  <iant@google.com>

	* semantics.c (maybe_convert_cond): Optionally warn when using an
	assignment as a condition.
	* typeck.c (convert_for_assignment): Optionally warn about
	assigning the result of an assignment to a bool.

2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>

	* pt.c (canonical_template_parms): Correct typo in comment.
	
2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>

	* typeck.c (structural_comptypes): Renamed from "comptypes".
	(comptypes): Use canonical type information to perform fast type
	comparison. When VERIFY_CANONICAL_TYPES, verify that the
	canonical type comparison returns the same results as we would see
	from the current, structural check. Support COMPARE_STRUCTURAL
	when we need structural checks.
	* decl.c (typename_compare): Fix comment.
	(build_typename_type): TYPENAME_TYPE nodes require structural
	equality checks, because they resolve different based on the
	current class type.
	(make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
	require structural equality checks (for now).
	(build_ptrmemfunc_type): Build the canonical pointer to member
	function type.
	(compute_array_index_type): Whenever we build a new index type
	to represent the size of an array in a template, we need to mark
	this index type as requiring structural equality. This goes for
	arrays with value-dependent sizes with the current ABI, or all
	arrays with ABI-1.
	* tree.c (cplus_array_hash): New.
	(struct cplus_array_info): New.
	(cplus_array_compare): New.
	(cplus_array_htab): New.
	(build_cplus_array_type_1): Use a hash table to cache the array
	types we build. Build the canonical array type for each array
	type.
	(cp_build_qualified_type_real): When building a cv-qualified array
	type, use the hash table of array types and build canonical array
	types as necessary.
	(bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
	use structural equality (for now).
	* cp-tree.h (COMPARE_STRUCTURAL): New.
	* pt.c (canonical_template_parms): New.
	(canonical_type_parameter): New.
	(process_template_parm): Find the canonical type parameter.
	(lookup_template_class): When we have named the primary template
	type, set the canonical type for our template class to the primary
	template type. If any of the template arguments need structural
	equality checks, the template class needs structural equality
	checks.
	(tsubst): When reducing the level of a template template
	parameter, we require structural equality tests for the resulting
	parameter because its template parameters have not had their types
	canonicalized. When reducing a template type parameter, find the
	canonical reduced type parameter.
	(any_template_arguments_need_structural_equality_p): New.

2006-12-31  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29731
	* parser.c (cp_parser_primary_expression): Return error_mark_node when
	a statement-expression is found outside of a function body.

2006-12-28  Kazu Hirata  <kazu@codesourcery.com>

	* cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
	Remove.

	* decl2.c: Fix a comment typo.

2006-12-21  Andrew Pinski  <pinskia@gmail.com>

	PR C++/30225
	* decl.c (cxx_builtin_function): Only copy the decl if adding
	it to the std namespace.

2006-12-21  Andrew Pinski  <pinskia@gmail.com>

	PR C++/30168
	* optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.

2006-12-22  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c: Fix a coment typo.

2006-12-18  Ian Lance Taylor  <iant@google.com>

	* decl.c (start_preparsed_function): Add support for
	-Wmissing-declarations.

2006-12-16  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29475
	* cp-tree.h (struct deferred_access_check): New structure to represent a
	deferred access check. It replaces the previous representation as a tree.
	(get_deferred_access_checks): Return a vector of struct
	deferred_access_check instead of a tree list.
	(perform_access_checks): Take a vector of struct deferred_access_check
	instead of a tree list.
	* semantics.c (struct deferred_access): Store the deferred access checks
	as a vector of struct deferred_access_check instead of a tree list.
	(push_deferring_access_checks): Handle the change in struct
	deferred_access.
	(get_deferred_access_checks): Likewise.
	(pop_to_parent_deferring_access_checks): Likewise.
	(perform_or_defer_access_check): Likewise.
	(perform_access_checks): Take a vector of struct deferred_access_check
	instead of a tree list.
	* parser.c (struct tree_check): New structure to store various data
	associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
	(struct cp_token): Changed the value field to be a union with a pointer to
	a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
	tokens and a tree field for all other tokens.
	(eof_token): Adjusted due to the change in struct cp_token.
	(cp_lexer_get_preprocessor_token): Likewise.
	(cp_lexer_purge_token): Likewise.
	(cp_lexer_purge_tokens_after): Likewise.
	(cp_lexer_print_token): Likewise.
	(cp_parser_error): Likewise.
	(cp_parser_identifier): Likewise.
	(cp_parser_string_literal): Likewise.
	(cp_parser_primary_expression): Likewise.
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_parenthesized_expression_list): Likewise.
	(cp_parser_storage_class_specifier_opt): Likewise.
	(cp_parser_function_specifier_opt): Likewise.
	(cp_parser_type_specifier): Likewise.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_initializer_list): Likewise.
	(cp_parser_member_specification_opt): Likewise.
	(cp_parser_attribute_list): Likewise.
	(cp_parser_objc_expression): Likewise.
	(cp_parser_objc_protocol_qualifiers): Likewise.
	(cp_parser_objc_selector): Likewise.
	(cp_parser_objc_declaration): Likewise.
	(cp_parser_objc_statement): Likewise.
	(cp_parser_omp_clause_name): Likewise.
	(cp_parser_omp_clause_default): Likewise.
	(cp_parser_omp_clause_schedule): Likewise.
	(cp_parser_omp_parallel): Likewise.
	(cp_parser_initial_pragma): Likewise.
	(pragma_lex): Likewise.
	(cp_parser_pre_parsed_nested_name_specifier): Likewise.
	(cp_parser_nested_name_specifier_opt): Likewise.
	Use cp_token::u::tree_check_value to save the token's value, the
	associated deferred checks and its qualifying scope.
	(cp_parser_template_id): Likewise.
	(cp_parser_template_declaration_after_export): Adjusted the call to
	get_deferred_access_checks.
	(cp_parser_init_declarator): Take the access checks as a vector of struct
	deferred_access_check instead of a tree list.
	(cp_parser_single_declaration): Likewise.
	(cp_parser_perform_template_parameter_access_checks): Likewise.
	(cp_parser_simple_declaration): Adjusted the call to
	cp_parser_init_declarator.
	(cp_parser_explicit_specialization): Adjusted the call to
	cp_parser_single_declaration.

2006-12-13  Ian Lance Taylor  <iant@google.com>

	PR c++/19564
	PR c++/19756
	* parser.c (cp_parser_expression_stack_entry): Add field
	lhs_type.
	(cp_parser_binary_expression): Track tree code of left hand side
	of expression.  Use it when calling build_x_binary_op.
	(cp_parser_selection_statement): Add if_p parameter.  Change all
	callers.  Warn about ambiguous else.
	(cp_parser_statement): Add if_p parameter.  Change all callers.
	(cp_parser_implicitly_scoped_statement): Likewise.
	* typeck.c (build_x_binary_op): Add parameters arg1_code and
	arg2_code.  Change all callers.  Call warn_about_parentheses.
	* cp-tree.h (build_x_binary_op): Update declaration.

2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* decl.c (build_enumerator): Update error message to match C
	front-end.
	
2006-12-11  Jan Hubicka  <jh@suse.cz>

	* decl2.c (var_finalized_p): Update for renamed varpool functions.

2006-12-09  Zack Weinberg  <zackw@panix.com>

	* parser.c (yydebug, enum pragma_omp_clause): Delete.

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

	PR c++/29732
	* cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
	(explicit_class_specialization_p): Declare.
	* pt.c (explicit_class_specialization_p): New function.
	* parser.c (cp_parser_init_declarator): Check correct number of
	template parameters for in-class function definitions.
	(cp_parser_check_declrator_template_parameters): Stop looking for
	template classes when we find an explicit specialization.

2006-12-07  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/29980
	* cp_parser_elaborated_type_specifier: Check
	the return value of check_elaborated_type_specifier.

2006-12-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29730
	* parser.c (cp_parser_init_declarator): Reject initialization of
	functions.

2006-12-05  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29729
	* decl2.c (check_member_template): Move check for member
	templates in local classes to ...
	* parser.c (cp_parser_template_declaration_after_export):
	... here.

	PR c++/29728
	* decl.c (check_array_designated_initializer): New function.
	(maybe_deduce_size_from_array_init): Use it.
	(reshape_init_array): Likewise.

2006-12-05  Aldy Hernandez  <aldyh@redhat.com>

	Merge from gimple-tuples-branch.

	2006-10-05  Aldy Hernandez  <aldyh@redhat.com>

	* cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
	(cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
	(cxx_omp_clause_copy_ctor): Same.
	(cxx_omp_clause_assign_op): Same.

	2006-09-28  Aldy Hernandez  <aldyh@redhat.com>

	* cp-tree.h (union lang_tree_node): Gimple statements do not
	have a TREE_CHAIN.
	(TREE_INDIRECT_USING): Look in base.

2006-12-04  Jan Hubicka  <jh@suse.cz>

	* cp-objcp-common.c (cp_expr_size): Return NULL in the case
	size is undefined.

2006-12-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29733
	* pt.c (tsubst_decl): Disallow variables of function type.

	PR c++/29632
	* call.c (add_builtin_candidate): Do not permit NULL pointer
	constants to be compared with template parameters.

2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>

	* pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
	Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.

2006-12-03  Richard Henderson  <rth@redhat.com>
	    Andrew Pinski  <pinskia@gmail.com>

	PR C++/14329
	* error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.

2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR C++/30033
	* decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.

2006-12-02  Kazu Hirata  <kazu@codesourcery.com>

	* name-lookup.c: Follow spelling conventions.

2006-12-01  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (poplevel): Check DECL_INITIAL invariant.
	(duplicate_decls): Preserve DECL_INITIAL when eliminating
	a new definition in favour of an old declaration.
	(start_preparsed_function): Define and document value of
	DECL_INITIAL before and after routine.
	(finish_function): Check DECL_INITIAL invariant.
	* parser.c
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Skip duplicate function definitions.

2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/30022
	* typeck.c (type_after_usual_arithmetic_conversions):
	Fix assertion for vector types.
	(build_binary_op): Use temporary for inner type of vector types.

2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>

	PR c++/29066
	* typeck.c (build_binary_op):  Fix pointer to member function
	comparison for ptrmemfunc_vbit_in_delta targets.

2006-12-01  Dirk Mueller  <dmueller@suse.de>

	PR c++/18313
	* decl.c (grokdeclarator): Warn for type qualifiers on return
	type for non-dependent types.
	* pt.c (tsubst_function_type): Warn for type qualifiers on
	return type for dependent types.

2006-11-30  Geoffrey Keating  <geoffk@apple.com>

	* rtti.c (get_tinfo_decl): Handle return value from
	pushdecl_top_level_and_finish.

2006-11-29  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/29022
	* parser.c (cp_parser_class_head): Move processing
	of any base classes to...
	(cp_parser_class_specifier) ...here. Take an extra
	tree* parameter for any base classes. Only process
	them if the opening brace was found.

2006-11-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/29735
	* decl.c (grokfndecl): Check main's type after applying
	attributes, not before.

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

	* class.c (build_vcall_offset_vtbl_entries): Do not add vcall
	entries for a primary construction virtual table.

2006-11-26  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29886
	* parser.c (cp_parser): Add in_function_body.
	(cp_parser_new): Initialize it.
	(cp_parser_primary_expression): Use parser->in_function_body
	instead of at_function_scope_p.
	(cp_parser_asm_definition): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_class_specifier): Clear parser->in_function_body.
	(cp_parser_constructor_declarator_p): Use parser->in_function_body
	instead of at_function_scope_p.
	(cp_parser_function_body_after_declarator): Set
	parser->in_function_body.

2006-11-21      Douglas Gregor <doug.gregor@gmail.com>

	* cp-tree.def (STATIC_ASSERT): New.
	* cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
	* error.c (dump_decl): Handle STATIC_ASSERT.
	* cp-tree.h (STATIC_ASSERT_CONDITION): New.
	(STATIC_ASSERT_MESSAGE): New.
	(STATIC_ASSERT_SOURCE_LOCATION): New.
	(struct tree_static_assert): New.
	(enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
	(union lang_tree_node): Add static_assertion.
	(finish_static_assert): Declare.
	* cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
	(pp_cxx_declaration): Handle STATIC_ASSERT.
	* pt.c (instantiate_class_template): Handle
	STATIC_ASSERT members.
	(tsubst_expr): Handle STATIC_ASSERT statements.
	* semantics.c (finish_static_assert): New.
	* lex.c (D_CPP0X): New.
	(reswords): Add static_assert keyword.
	(init_reswords): If not flag_cpp0x, mask out C++0x keywords.
	* parser.c (cp_parser_block_declaration): Parse static
	assertions.
	(cp_parser_static_assert): New.
	(cp_parser_member_declaration): Parse static assertions.

2006-11-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/29570
	* decl.c (cp_finish_decl): Check for value dependent brace enclosed
	scalar initializer.

	PR c++/29734
	* cp-tree.h (WANT_VECTOR): Define.
	(WANT_ARITH): Add WANT_VECTOR.
	* cvt.c (build_expr_type_conversion): Handle vector types.
	* typeck.c (build_unary_op): Add WANT_VECTOR to
	build_expr_type_conversion flags.

2006-11-20  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29475
	* cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
	extra argument that represents the declaration to use to print
	potential error messages.
	* init.c (build_offset_ref): Adjusted the call to
	perform_or_defer_access_check.
	* class.c (alter_access, resolve_address_of_overloaded_function):
	Likewise.
	* decl.c (make_typename_type, make_unbound_class_template): Likewise.
	* search.c (lookup_member): Likewise.
	* friend.c (add_friend): Likewise.
	* parser.c (cp_parser_template_id,
	cp_parser_pre_parsed_nested_name_specifier): Likewise.
	* semantics.c (finish_non_static_data_member,
	check_accessibility_of_qualified_id, finish_id_expression): Likewise.
	(pop_to_parent_deferring_access_checks, perform_access_checks,
	perform_or_defer_access_check): Adjusted the call to enforce_access.
	* call.c (enforce_access): Use the new extra argument to build the
	error message.
	(build_op_delete_call): Adjusted the call to
	perform_or_defer_access_check.
	(build_over_call): Likewise.

2006-11-16  Dirk Mueller  <dmueller@suse.de>

	* name-lookup.c (begin_scope): Use GGC_CNEW instead of
	GGC_NEW and memset.

2006-11-13  Roger Sayle  <roger@eyesopen.com>

	* rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
	base type info initializer has the correct type.

2006-11-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29518
	* pt.c (coerce_template_parms): Do not skip_evaluation while
	substituting template arguments.

2006-11-11  Richard Guenther  <rguenther@suse.de>

	* typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
	FIX_FLOOR_EXPR and FIX_ROUND_EXPR.

2006-11-03  Roger Sayle  <roger@eyesopen.com>

	* call.c (build_op_delete_call): Test user-visible type against
	size_type_node, instead of against the internal type, sizetype.
	* class.c (type_requires_array_cookie): Likewise.
	* mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
	handling of TYPE_IS_SIZETYPE.
	* typeck.c (type_after_usual_arithmetic_conversions): Remove
	special case handling of TYPE_IS_SIZETYPE.
	(comptypes): Likewise.

2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>

	* decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
	if targetm.cxx.use_atexit_for cxa_atexit.
	(start_cleanup_fn): Likewise.
	(register_dtor_fn): Likewise.

2006-09-25  Geoffrey Keating  <geoffk@apple.com>

	* decl2.c (cp_write_global_declarations): Rename from
	cp_finish_file.
	* cp-lang.c (finish_file): Don't call cp_finish_file.
	* cp-tree.h (cp_write_global_declarations): Rename from
	cp_finish_file.
	* cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
	cp_write_global_declarations.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* name-lookup.c (get_anonymous_namespace_name): New.
	(push_namespace_with_attribs): Use get_anonymous_namespace_name.
	* decl2.c (start_objects): Update for rename of
	get_file_function_name_long.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	PR c++/28704
	* decl.c (grokdeclarator): Duplicate diagnostic message
	for easier translation.
	* decl.c (grokdeclarator): Fix line-wrapping.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	PR c++/6321
	* decl.c (grokfndecl): Use check_main_parameter_types.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	PR c++/28669
	* decl.c (grokfndecl): Duplicate warning message for
	easier translation.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	* typeck.c (build_unary_op): Fix indenting. Use G_().

2006-10-29  Dirk Mueller  <dmueller@suse.de>

	PR c++/29089
	* typeck.c (build_unary_op): Duplicate warning message
	for easier translation.

2006-10-29  Dirk Mueller  <dmueller@suse.de>

	PR c++/16307
	* typeck.c (build_array_ref): Warn for char subscriptions
	on pointers.

2006-10-29  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c: Fix a comment typo.

2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR C++/29295
	* typeck.c (build_unary_op): Use same_type_p when comparing to
	boolean type.

2006-10-29  Dirk Mueller  <dmueller@suse.de>

	PR c++/29033
	* typeck.c (build_binary_op): Duplicate warning message
	for better translation.

2006-10-23  Rafael Avila de Espindola  <rafael.espindola@gmail.com>

	* decl.c (builtin_function_1): Move common code to
	add_builtin_function.
	(builtin_function): Rename to cxx_builtin_function.
	Change the signature.
	* call.c: Include langhooks.h.
	(build_java_interface_fn_ref):  Replace calls to
	builtin_function with add_builtin_function.
	* Make-lang.in (cp/call.o): Depend on langhooks.h.
	* cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
	cxx_builtin_function.
	* cp-tree.h (builtin_function): Rename to cxx_builtin_function.
	Change the signature.

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

	PR c++/20647
	* rtti.c (tinfo_base_init): The type info string is always global.

2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
	    Mark Mitchell <mark@codesourcery.com>

	PR c++/28053
	* decl2.c (grokbitfield): Detect invalid non-integral
	types earlier when possible.

2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>

	PR c++/26884
	* typeck2.c (digest_init): Raise error upon attempts to
	initialize arrays with variables.

2006-10-17  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27952
	* cp-tree.h (xref_basetypes): Return bool instead of void.
	* decl.c (xref_basetypes): Adjust definition. Return false
	if the class bases are invalid.
	* parser.c (cp_parser_class_head): Check the return value
	from xref_basetypes.

2006-10-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28261
	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
	comment.

	PR c++/28261
	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
	function.
	(cp_parser_constructor_declarator_p): Use it.
	(cp_parser_check_type_definition): Return a value indicating
	whether or not the definition is valid.
	(cp_parser_enum_specifier): Skip invalid enum definitions.

2006-10-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29039
	* typeck2.c (build_functional_cast): Don't zero-initialize
	non-PODs; instead, call their constructors.
	* method.c (synthesize_method): Always build mem-initializers, if
	we're synthesizing the default constructor.

2006-10-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27270
	* decl.c (reshape_init_class): Move check for designated
	to ...
	* parser.c (cp_parser_initializer_list): ... here.
	* pt.c (tsubst_copy_and_build): Use finish_compound_literal.

2006-10-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27270
	* typeck2.c (process_init_constructor_array): Reword comment.
	* pt.c (tsubst_copy_and_built): Call reshape_init before calling
	digest_init.

	PR c++/29408
	* parser.c (cp_parser_using_declaration): Stop parsing when
	something goes wrong with an access declaration.

	PR c++/29435
	* typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
	types when their sizes are required.  Refine test for VLAs.

	PR c++/28211
	* parser.c (cp_parser_template_argument): Don't consider "&var" a
	possible constant-expression.
	* pt.c (convert_nontype_argument): Refine handling of arguments of
	pointer type.

2006-10-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28506
	* parser.c (function_declarator_p): New function.
	(cp_parser_init_declarator): Use it.
	(cp_parser_member_declaration): Likewise.

2006-10-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29318
	* rtti.c (get_tinfo_decl): Refuse to create type info objects for
	variably modified types.

2006-10-12 Lee Millward <lee.millward@codesourcery.com>

       PR c++/27961
       * decl.c (start_decl): Return error_mark_node if a
       function is initialized like a variable.
       (check_var_type): If a variable of field is declared void,
       set the type to error_mark_node.
       (grokdeclarator): Check the return type of check_var_type.
       * class.c (finish_struct_1): Robustify.

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

	PR c++/29175
	* decl.c (check_initializer): Issue errors about trying to
	initialize arrays whose elements have variable size.

2006-10-11  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/29024
	* cp-tree (struct cp_decl_specifier_seq): Rename to
	conflicting_specifiers_p
	* parser.c (cp_parser_set_storage_class): Set
	conflicting_specifiers_p for the input decl specifier
	if a typedef specifier is present. Rename uses of
	multiple_specifiers_p to conflicting_specifiers_p.
	(cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
	class specifier has already been set for this declaration,
	set conflicting_specifiers_p to true on the decl_specs.
	* decl.c (grokdeclarator): Rename uses of
	multiple_specifiers_p to conflicting_specifiers_p.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* Make-lang.in: Added "c++.pdf" target support.

2006-10-10  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/29323
	* decl.c (finish_function): Set TREE_NOTHROW only for
	functions that bind local.

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

	Revert emutls patch.

2006-10-04  Richard Henderson  <rth@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* decl.c (grokvardecl): Don't error if !have_tls.
	(grokdeclarator): Likewise.
	* parser.c (cp_parser_omp_threadprivate): Likewise.

2006-10-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29020
	* friend.c (do_friend): Improve comments; add assertion.
	* parser.c (cp_parser_nested_name_specifier_opt): Resolve
	typenames for qualified names used in declarations, even when
	caching qualified name lookup.

	PR c++/29138
	* decl2.c (grokfield): Don't handle access declarations here.
	* parser.c (cp_parser_using_declaration): Handle access
	declarations too.
	(cp_parser_block_declaration): Adjust calls to
	cp_parser_using_declaration.
	(cp_parser_member_declaration): Likewise.  Use
	cp_parser_using_declaration to look for access_declarations.

2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/29291
	* init.c (build_new): Check for invalid init.

2006-10-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29226
	* typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
	not try to actually evaluate sizeof for a VLA type.

2006-10-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29105
	* pt.c (tsubst_baselink): Substituteinto the qualifying scope.
	* semantics.c (baselink_for_fns): Build a baselink, even when
	processing a template.

	PR c++/29080
	* parser.c (cp_parser_postfix_dot_deref_expression): Use
	BASELINK_ACCESS_BINFO as the qualifying scope when calling
	adjust_result_of_qualified_name_lookup.

2006-09-25  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27329
	PR c++/26938
	* cp-tree.h (redeclare_class_template): Adjust declaration
	to return bool instead of void.
	* pt.c (redeclare_class_template): Update definition.
	Return false on error.
	* decl.c (xref_tag): Return error_mark_node if
	redeclare_class_template returned false.

	PR c++/27667
	* cp-tree.h (begin_specialization): Return bool
	instead of void.
	* pt.c (check_specialization_scope): Likwise.
	Adjust comment. Return false if a specialization
	isn't permitted in the current scope.
	(begin_specialization): Use the return value of
	check_specialization_scope.
	* parser.c (cp_parser_explicit_specialization): If
	begin_specialization returned false, skip the rest
	of the specialization.

2006-09-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29016
	* typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
	BASELINK.

2006-09-21  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28861
	* decl.c (shadow_tag): Return error_mark_node
	if maybe_process_partial_specialization failed.

	PR c++/28303
	* decl.c (grokdeclarator): Return error_mark_node on
	declaration with two or more data types.

2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/27650
	* class.c (check_for_override): Remove dllimport from virtual
	methods.

2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>

	PR c++/29087
	* parser.c (cp_parser_labeled_statement): Return nothing.  Do
	not take in_statement_expr and in_compound as arguments.  Rename
	to cp_parser_label_for_labeled_statement.  Parse only the label,
	not the statement.
	(cp_parser_statement): Parse the statement of a labeled-statement
	from here, using tail recursion.

2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/29002
	* init.c (build_zero_init): If we have an error mark node for
	the array size, return.

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

	PR c++/28991
	* cp-objcp-common.c (cxx_staticp): New function.
	* cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
	* cp-tree.h (cxx_staticp): New function.

2006-09-09  Jason Merrill  <jason@redhat.com>

	PR c++/28996
	* cvt.c (convert_to_void): Strip COMPONENT_REF to functions.

2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28858
	* parser.c (cp_parser_skip_until_found): Rename to
	cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
	parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
	Reorganize.  Adjust comment.
	(cp_parser_template_declaration_after_export): Adjust call.
	(cp_parser_enclosed_template_argument_list): Likewise.

2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/28906
	* init.c (build_new_1): Build a distinct type copy
	for the array type that was returned from
	build_cplus_array_type.

2006-09-07  Jason Merrill  <jason@redhat.com>

	PR c++/27371
	* cvt.c (convert_to_void): Enable previous change.

	PR c++/26957
	* method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
	parms.

2006-09-07  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/28284
	* pt.c (fold_non_dependent_expr): Make sure expr is not
	dereferenced if it is NULL.

2006-09-06  Zak Kipling  <zak@transversal.com>

	PR c++/26195
	* decl.c (make_rtl_for_nonlocal_decl),
	(start_preparsed_function): Don't use lbasename on
	input_filename when calling get_fileinfo.
	* semantics.c (begin_class_definition): Likewise.
	* lex.c (cxx_make_type): Likewise.
	(handle_pragma_interface): Call get_fileinfo on input_filename,
	not on the parameter to the directive.

2006-09-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28903
	* pt.c (tsubst): Use fold_non_dependent_expr to fold array
	dimensions.

	PR c++/28886
	* pt.c (unify): Avoid unnecessary calls to fold_build2 for array
	dimensions.

2006-09-06  Jason Merrill  <jason@redhat.com>

	PR c++/27371
	* cvt.c (convert_to_void): Strip useless TARGET_EXPR.
	* cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
	* tree.c (build_cplus_new): Set it.

	PR c++/26696
	* cvt.c (convert_to_void): Replace a subexpression with no side
	effects with void_zero_node.
	* tree.c (is_overloaded_fn): Look through COMPONENT_REF.
	(get_first_fn): Ditto.
	* decl.c (grokdeclarator): No need to look through COMPONENT_REF.

2006-09-05  Jason Merrill  <jason@redhat.com>

	PR c++/26571
	* parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
	where the name is a type used incorrectly.

	PR c++/26671
	* typeck.c (maybe_warn_about_returning_address_of_local): Look
	through COMPONENT_REF and ARRAY_REF.

	PR c++/26102
	* name-lookup.c (do_class_using_decl): Try to find the base even
	if bases_dependent_p.
	* pt.c (type_dependent_expression_p): A USING_DECL is dependent.

	PR c++/19809
	* pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.

2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>

	PR 23287 Revert my 2006-09-01 patch.
	* parser.c: Reverted.
	* pt.c: Reverted.

2006-09-02  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27670
	PR c++/27493
	PR c++/27494
	PR c++/27397
	* parser.c (cp_parser_template_parameter_list): Add
	invalid template parameters to the parameter list as
	error_mark_node.

2006-09-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/28878
	* except.c (build_throw): Only set current_function_returns_abnormally
	if cfun is not NULL.

	PR c++/26917
	* repo.c (repo_file): Remove.
	(open_repo_file, reopen_repo_file_for_write): Return fopened
	FILE * instead of setting global repo_file variable.
	(init_repo): Adjust caller.
	(finish_repo): Likewise.  Return instead of goto out before
	reopen_repo_file_for_write has been called.

2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/28705
	* semantics.c (finish_call_expr): Add assert.
	* name-lookup.c (lookup_arg_dependent): Check we found an overload
	or an object.

	PR c++/23287
	* parser.c (cp_parser_id_expression): Add member_p
	argument. Update all callers.
	(cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
	the object's scope, if valid.
	(cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
	callers.
	(cp_parser_postfix_dot_deref_expression): Set object_scope.
	* pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.

2006-08-30  Jason Merrill  <jason@redhat.com>

	PR c++/26670
	* class.c (check_field_decls): Don't unset TYPE_PACKED until all
	the fields have been processed.

2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/28349
	* call.c (build_x_va_arg): Remove the reference type
	from the type before creating the pointer type.

2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>

	PR c++/28139
	* except.c (expand_start_catch_block): Use correct types for bitwise
	copy.

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

	PR c++/26670
	* class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
	fields can't be packed.

	PR c++/26577
	* cvt.c (convert_to_void): Don't automatically load from volatiles
	of TREE_ADDRESSABLE type.

2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28860
	* cp-tree.h (maybe_process_partial_specialization): Return
	tree instead of void.
	* parser.c (cp_parser_class_head): Use return value of
	maybe_process_partial_specialization.
	* pt.c (maybe_process_partial_specialization): Return error_mark_node
	for broken specializations, TYPE otherwise.  Check for template
	template parameters.

2006-08-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28058
	* pt.c (register_specialization): Return error_mark_node for
	specialization-after-instantiation.
	* decl2.c (mark_used): Mark the main function used when one of its
	clones is used.

2006-08-27  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/26573
	* class.c (check_field_decls): Don't issue error about
	local classes containing static data members.

2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>

	PR c++/24009
	* parser.c (struct cp_token): Add input_file_stack_index.
	(eof_token): Update.
	(cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
	(cp_lexer_set_source_position_from_token): Restore input file
	stack.

2006-08-26  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28736
	PR c++/28737
	PR c++/28738
	* pt.c (process_template_parm): Store invalid template
	parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
	(push_inline_template_parms_recursive): Check for template
	parameters having a TREE_VALUE of error_mark_node rather than
	check the parameter itself.
	(mangle_class_name_for_template): Likewise.
	(comp_template_parms): When comparing the individual template
	parameters, return 1 if either is error_mark_node.
	(current_template_args): Robustify.
	(redeclare_class_template): Likewise.

2006-08-26  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28588
	* class.c (resolve_address_of_overloaded_function): Add
	access_path parameter.  Perform access checks.
	(instantiate_type): Adjust call to
	resolve_address_of_overloaded_function.  Remove unnecessary code.
	* tree.c (is_overloaded_fn): Document.  Return 2 when there are
	acutally multiple functions.
	(really_overloaded_fn): Use is_overloaded_fn.
	* mangle.c (write_expression): Handle BASELINKs.
	* cp-tree.h (really_overloaded_fn): Return bool.
	(baselink_for_fns): Declare.
	* search.c (lookup_member): Check access for single static
	functions here.
	* pt.c (convert_nontype_argument_function): Handle BASELINKs.
	(tsubst_copy_and_build): Generate BASELINKs for template-ids.
	* semantics.c (finish_call_expr): Use baselink_for_fns.
	(baselink_for_fns): New function.
	(finish_id_expression): Use it.
	* parser.c (cp_parser_template_argument): Don't strip BASELINKs.

	PR c++/28595
	* pt.c (tsubst): Issue errors about attempts to create VLAs at
	template-instantiation time.

2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28853
	* typeck2.c (cxx_incomplete_type_diagnostic): Handle template
	template parameters.  Improve error message for template type
	parameters.

	PR c++/28852
	* cp-tree.h (grok_op_properties): Return bool instead of void.
	* decl.c (grokfndecl): Discard invalid operator declarations.
	(copy_fn_p): Revert change for PR 27547.
	(grok_op_properties): Return error status (true on success).
	* pt.c (tsubst_decl): Discard invalid operator declarations.

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

	PR c++/28056
	* decl.c (grokdeclarator): Disallow declarations with qualified
	names in local scopes.

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

	PR c++/27787
	* decl.c (make_typename_type): Only try and resolve it when
	context is not dependent.  Refactor.
	* decl2.c (check_classfn): Push to class scope before looking for
	the function.

2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>

	PR driver/28528
	* g++spec.c (lang_specific_driver): Always check if we need to
	swallow a space-separated  arg to '-x'.
	* lang-specs.h: Don't create ouput files for '-xc++-header'
	if -fsyntax-only.

2006-08-23  Jason Merrill  <jason@redhat.com>

	PR c++/27714
	* pt.c (push_template_decl_real): A friend template with class
	scope isn't primary.

2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>

	PR c++/28687
	* rtti.c (build_dynamic_cast, build_dynamic_cast_1):
	Move -fno-rtti check to be more specific.

2006-08-22  Jason Merrill  <jason@redhat.com>

	PR c++/23372
	* call.c (build_over_call): Don't make a copy here if build_call
	will make one too.

2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/28450
	* cp/init.c (build_zero_init): Handle VECTOR_TYPE and
	COMPLEX_TYPEs.

2006-08-22  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/28420
	* parser.c (cp_parser_postfix_expression): Make sure that the
	saved value for parser->type_definition_forbidden_message is
	restored before returning to avoid an invalid free().

2006-08-22  Jason Merrill  <jason@redhat.com>

	PR c++/28659
	* typeck.c (merge_types): If either of the types have the right
	attributes, return that one.

	* tree.c (cp_build_type_attribute_variant): Make sure we aren't
	doing this to class types.
	* typeck.c (original_type): Deal with type quals properly.

2006-08-21  Jason Merrill  <jason@redhat.com>

	PR c++/27115
	* semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
	just leave the expression as it is.
	(finish_stmt_expr): If the statement-expression has class type,
	wrap it in a TARGET_EXPR.
	* cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
	CLEANUP_POINT_EXPR.
	* except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.

2006-08-21  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/26269
	* decl.c (duplicate_decls): Return early if either
	newdecl or olddecl is error_mark_node.

	 PR c++/28505
	* decl.c (grokdeclarator): Return early after
	issuing diagnostic about an incomplete type.

	PR c++/28741
	* tree.c (decl_anon_ns_mem_p): Robustify.
	* decl2.c (determine_visibility): Likewise.

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

	PR c++/28341
	* tree.c (cast_valid_in_integral_constant_expression_p): New
	function.
	* cp-tree.h (tsubst_copy_and_build): Adjust prototype.
	* pt.c (tsubst_expr): Add integral_constant_expression_p
	parameter.
	(fold_non_dependent_expr): Adjust callers of
	tsubst_{expr,copy_and_build}.
	(tsubst_friend_function): Likewise.
	(tsubst_template_arg): Likewise.
	(tsubst_default_argument): Likewise.
	(tsubst_decl): Likewise.
	(tsubst): Likewise.
	(tsubst_omp_clasuses): Likewise.
	(regenerate_decl_fromp_template): Likewise.
	(instantiate_decl): Likewise.
	(tsubst_initializer_list): Likewise.
	(tsubst_enum): Likewise.
	(tsubst_expr): Use RECUR throughout.
	(tsubst_copy_and_build): Change definition of RECUR.  Do not allow
	invalid casts in integral constant expressions.
	* parser.c (cp_parser_postfix_expression): Use
	cast_valid_in_integral_constant_expression_p.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_functional_cast): Likewise.

	PR c++/28346
	* pt.c (tsubst_qualified_id): Do not strip references from
	OFFSET_REFs.

2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28606
	* parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
	Fix formatting.
	(cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
	for valid type-names.
	(cp_parser_unqualified_id): Fix error handling for destructors.

	PR c++/28710
	* decl.c (xref_tag): Improve error message.  Return early on error.

	PR c++/28711
	* pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.

2006-08-17  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/28573
	* semantics.c (finish_offsetof): Add new argument to fold_offsetof.

2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/28302
	* typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
	perform_integral_promotions for non integral type.

2006-08-16  Jason Merrill  <jason@redhat.com>

	PR c++/28385
	* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
	if arg is a function.

2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28593
	* init.c (build_new): Return early on invalid placement.

2006-08-15  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28594
	* pt.c (process_template_parm): Robustify.

2006-08-14  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28288
	PR c++/14556
	* operators.def: Remove <?, ?>, <?=, and >?= operators.
	* parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
	(cp_parser_warn_min_max): Remove.

2006-08-11  Jason Merrill  <jason@redhat.com>

	PR c++/28559
	* parser.c (cp_parser_elaborated_type_specifier): Also ignore
	attributes applied to a TYPENAME_TYPE.

2006-08-09  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28637
	* pt.c (coerce_template_parms): Copy across the
	invalid template arguments to the new template inner arguments.
	(retrieve_specialization): Robustify.

	PR c++/28638
	* pt.c (coerce_template_template_parms): Robustify.

	PR c++/28639
	* error.c (dump_template_parms): Robustify.

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

	PR c++/28641
	* pt.c (type_unification_real): Robustify.

2006-08-03  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28347
	* decl.c (start_decl): Return error_mark_node if a
	diagnostic was issed for an invalid typedef initialization.

2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27508
	* parser.c (cp_parser_unqualified_id): Check for invalid scopes
	when parsing destructor names.

	PR c++/28274
	* decl.c (duplicate_decls): Call check_default_args here.
	(start_preparsed_function): Do not call check_default_args.
	* name-lookup.c (pushdecl_maybe_friend): Only call
	check_default_args if duplicate_decls got bypassed.

2006-08-02  Richard Guenther  <rguenther@suse.de>

	PR c++/28479
	Revert
	2006-07-05  Richard Guenther  <rguenther@suse.de>
	Andrew Pinski  <pinskia@gcc.gnu.org>

	PR c++/27084
	* cp-objcp-common.c (cxx_types_compatible_p): Ignore
	top level qualifiers for pointer type comparisons.

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

	PR c++/28557
	* pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.

2006-07-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28523
	* tree.c (stabilize_expr): Tweak documentation.  Add assertion.
	(stabilize_call): Tweak documentation.
	(stabilize_init): Only call stabilize_call for calls.

2006-08-01  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28432
	* decl2.c (check_classfn): Remove early return.
	* search.c (lookup_member): Return NULL with bad type.

2006-08-01  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28256
	* decl.c (check_initializer): Check for 1 initializer on scalar types.

2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	PR debug/23336
	* pt.c (tsubst_copy_and_build): Mark used enum types.
	* semantics.c (finish_id_expression): Likewise.

2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/6634
	* decl.c (grokdeclarator): Check whether "long" or "short" was
	specified for non-integral types.

2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.

2006-07-28  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27668
	PR c++/27962
	* pt.c (process_template_parm) Store invalid template
	parameters as error_mark_node in the paramater list.
	(push_inline_template_parms_recursive): Handle invalid
	template parameters.
	(comp_template_parms): Likewise.
	(check_default_tmpl_arg): Likewise.
	(coerce_template_template_parms): Likewise.
	(mangle_class_name_for_template): Likewise.
	(tsubst_template_parms): Likewise.
	* error.c (dump_template_argument_list): Likewise.

2006-07-28  Kazu Hirata  <kazu@codesourcery.com>

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

2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27572
	* decl.c (grokdeclarator): Return error_mark_node after invalid
	typedef.

2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>

	PR c++/28460
	* decl.c (grokvardecl): Use FROB_CONTEXT.
	* pt.c (register_specialization): Likewise.

2006-07-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28025
	* cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
	* name-lookup.c (unqualified_namespace_lookup): There is no way to
	have a hidden name in non-namespace scopes.
	* pt.c (tsubst_friend_class): Look for hidden names.
	* decl.c (lookup_and_check_tag): Fix typo in comment.

	* semantics.c (finish_compound_literal): Fix typo in comment.

2006-07-21  Jason Merrill  <jason@redhat.com>

	* decl2.c (determine_visibility): Don't propagate visibility from
	type to decl.
	(constrain_class_visibility): Don't warn in system headers.
	Don't warn about pointer fields.

2006-07-20  Mike Stump  <mrs@apple.com>

	* decl2.c (determine_visibility_from_class): Don't use hidden
	visibility for explicit instantiations.

2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28250
	* pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
	valid decls.  Cleanup.

	PR c++/28363
	* semantics.c (check_template_template_default_arg): Simplify
	error handling.

2006-07-20  Jason Merrill  <jason@redhat.com>

	PR c++/28407
	* decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
	const variables with implicit internal linkage.
	* tree.c (decl_linkage): Only return lk_external if it's set.

	PR c++/28409
	* decl2.c (constrain_visibility): Ignore the anonymous namespace
	for extern "C" decls.
	(VISIBILITY_STATIC): Rename to VISIBILITY_ANON.

	* decl2.c (constrain_visibility): Remove specified and reason
	parameters.  Don't touch decls that already have explicit visibility.
	(determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
	template.
	(determine_visibility_from_class): Reverse sense of
	DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
	(constrain_class_visibility): Only complain about member visibility
	if the member type is another class.  Don't change visibility of the
	current class.

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

	PR c++/28338
	* decl.c (layout_var_decl): Don't call push_local_name here.
	(initialize_artificial_var): Assert artificiality.
	(cp_finish_decl): Call push_local_name here.

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

	PR c++/28337
	* typeck.c (build_binary_op): Short-circuit pointer arithmetic in
	templates.

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

	PR c++/28048
	* semantics.c (check_accessibility_of_qualified_id): Robustify.

	PR c++/28235
	* pt.c (tsubst_decl): Handling substitutions into a static data
	member from within the scope of the tempalte itself.

2006-07-18  Lee Millward  <lee.millward@gmail.com>

	PR c++/28258
	* method.c (locate_copy): Check for non_reference
	returning error_mark_node.

	PR c++/28260
	* decl.c (duplicate_decls): Return error_mark_node
	on ambiguous declaration.

2006-07-18  Steve Ellcey  <sje@cup.hp.com>

	PR c++/27495
	* search.c (adjust_result_of_qualified_name_lookup): Change
	assert to part of if statement.

2006-07-17  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28291
	* decl.c (reshape_init_class): Return error_mark_node on error.

2006-07-17  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28304
	* decl2.c (check_classfn): Return NULL_TREE on error.

2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28250
	* name-lookup.c (pushdecl_maybe_friend): Return early on
	error_mark_node.
	* except.c (expand_start_catch_block): Use error_mark_node instead
	of NULL_TREE for invalid decls.
	* parser.c (cp_parser_exception_declaration): Return error_mark_node
	on invalid catch parameter. Simplify.

2006-07-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/28370
	* decl2.c (note_vague_linkage_var): Removed.
	(finish_static_data_member_decl): Add decl to pending_statics vector
	directly.  Do it even for non-public decls.

2006-07-15  Lee Millward  <lee.millward@gmail.com>

	PR c++/28292
	* decl2.c (acceptable_java_type): Robustify. Use
	proper Boolean return type instead of return 1.
	(check_java_method): Don't issue error about
	type not being an acceptable Java parameter if
	it's error_mark_node.

	PR c++/28269
	* parser.c (cp_parser_elaborated_type_specifier):
	Return early if an invalid type was detected.

2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28249
	* parser.c (cp_parser_check_decl_spec): New function.
	(cp_parser_decl_specifier_seq): Factor out check for repeated
	decl-specifiers into cp_parser_check_decl_spec. Use it.
	(cp_parser_type_specifier_seq): Use it.

	PR c++/28294
	* semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
	only.

	PR c++/28387
	* decl2.c (cplus_decl_attributes): Check for invalid decls.

2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28343
	* decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
	* decl2.c (grokfield): Likewise.

2006-07-12  Geoffrey Keating  <geoffk@apple.com>

	* decl2.c (determine_visibility): Don't change visibility of
	function locals because of -fvisibility-inlines-hidden.

2006-07-12  Jason Merrill  <jason@redhat.com>

	PR c++/28217
	* semantics.c (note_decl_for_pch): Don't premangle templates.

2006-07-12  Martin Michlmayr  <tbm@cyrius.com>

	* typeck.c (string_conv_p): Remove spurious quotation mark in
	warning.

2006-07-07  Lee Millward  <lee.millward@gmail.com>
	    Andrew Pinski  <pinskia@gmail.com>

	PR c++/27820
	* decl.c (define_label): Return error_mark_node on error.
	* semantics.c (finish_label_stmt): Don't call
	add_stmt for invalid labels.

2006-07-06  Jason Merrill  <jason@redhat.com>

	PR c++/28279
	* decl2.c (finish_static_data_member_decl): Don't assert
	TREE_PUBLIC.

2006-07-05  Jason Merrill  <jason@redhat.com>

	PR c++/13983
	PR c++/17519
	* class.c (check_field_decls): Check TYPE_PACKED after
	stripping array types.
	(finish_struct_bits): Don't copy TYPE_SIZE here.

	PR c++/18681
	* friend.c (is_friend): Fix DR 45 implementation.

2006-07-05  Richard Guenther  <rguenther@suse.de>
	Andrew Pinski  <pinskia@gcc.gnu.org>

	PR c++/27084
	* cp-objcp-common.c (cxx_types_compatible_p): Ignore
	top level qualifiers for pointer type comparisons.

2006-07-01  Jason Merrill  <jason@redhat.com>

	PR c++/28215
	* method.c (make_thunk): Unset DECL_USE_TEMPLATE and
	DECL_TEMPLATE_INFO.

2006-06-30  Jason Merrill  <jason@redhat.com>

	PR c++/26577
	* call.c (build_new_method_call): Force evaluation of the
	instance pointer, not the object.

2006-06-30  Kazu Hirata  <kazu@codesourcery.com>

	* decl2.c: Fix a comment typo.

2006-06-30  Jason Merrill  <jason@redhat.com>

	PR c++/18698
	* decl2.c (grokfield): Only try to treat the decl as an access
	declaration if the scope is a class.

2006-06-29  Jason Merrill  <jason@redhat.com>

	PR c++/26905
	PR c++/26612
	PR c++/27000
	PR c++/26984
	PR c++/19134
	* decl2.c (determine_visibility): Overhaul.
	(determine_visibility_from_class): Likewise.
	(min_vis_r, type_visibility, constrain_visibility): New fns.
	(constrain_visibility_for_template): Likewise.
	(constrain_class_visibility): Likewise.
	* decl.c (cp_finish_decl): Call determine_visibility for function
	decls, too.
	* name-lookup.c (pushtag): Call determine_visibility.
	* decl.c (duplicate_decls): Don't copy visibility from template to
	specialization.
	* pt.c (check_explicit_specialization): Likewise.
	(lookup_template_class, tsubst_decl): Call determine_visibility.
	* class.c (finish_struct_1): Call constrain_class_visibility.

	PR c++/26905
	PR c++/21675
	PR c++/17470
	* parser.c (cp_parser_explicit_instantiation): Pass the attributes
	to grokdeclarator.
	(cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
	(cp_parser_enum_specifier): Likewise.
	(cp_parser_elaborated_type_specifier): Apply attributes if this
	declares only the class.
	(cp_parser_class_specifier): Apply leading attributes immediately.
	* semantics.c (begin_class_definition): Add attributes parameter,
	apply them to the type.

	PR c++/21581
	PR c++/25915
	* tree.c (decl_anon_ns_mem_p): New function.
	* cp-tree.h: Declare it.
	* decl2.c (determine_visibility): Make anonymous namespace
	members static.
	(min_vis_r, constrain_visibility): Likewise.
	* rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
	pseudo-types.
	* decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
	global_namespace.
	* name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
	on anonymous namespaces.

2006-06-28  Jason Merrill  <jason@redhat.com>

	PR c++/27424
	* pt.c (convert_template_argument): Pass all template arguments
	on to coerce_template_template_parms.

2006-06-25  Lee Millward  <lee.millward@gmail.com>
	    Mark Mitchell <mark@codesuorcery.com>

	PR c++/28054
	* decl2.c (grokbitfied): Remove check for grokdeclarator
	returning NULL_TREE, instead check for error_mark_node
	to indicate failure.
	* decl.c (grokdeclarator): Adjust block comment.

2006-06-25  Lee Millward  <lee.millward@gmail.com>

	PR c++/28051
	* mangle.c (mangle_conv_op_name_for_type): Check for
	invalid types.
	* name-lookup.c (push_class_level_binding): Robustify.
	(do_class_using_decl): Return early if name is error_mark_node.

2006-06-23  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28114
	* name-lookup.c (pushtag): Return if we have error_mark_node.

2006-06-23  Steve Ellcey  <sje@cup.hp.com>

	PR c++/27019
	* typeck2.c (process_init_constructor_array): Set ce->value on errors.

2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28112
	* parser.c (cp_parser_attribute_list): Skip attributes with invalid
	arguments.  Fix comment.

	PR c++/11468
	* init.c (build_new_1): Handle error_mark_nodes returned by
	build_java_class_ref.
	(build_java_class_ref): Do not abort compilation, but return
	error_mark_node.  Improve error message.  Fix indentation.

2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>

	PR target/27789
	* decl.c (start_decl): Check that dllimports are not initialized.

2006-06-22  Lee Millward  <lee.millward@gmail.com>

	PR c++/27805
	* typeck2.c (build_m_component_ref): Use error_operand_p.

	PR c++/27821
	* decl.c (grokdeclarator): Return error_mark_node on
	invalid uses of the scope resolution operator.

2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28111
	* pt.c (determine_specialization): Check for invalid decls.

	PR c++/28110
	* pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
	parameters.

	PR c++/28109
	* rtti.c (get_tinfo_decl_dynamic): Robustify.

2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28052
	* init.c (push_base_cleanups): Skip members with invalid types.
	* typeck.c (build_class_member_access_expr): Robustify.

2006-06-19  Mark Mitchell  <mark@codesourcery.com>

	* pt.c (instantiate_template): Fix typo in comment.

2006-06-19  Richard Guenther  <rguenther@suse.de>

	* parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
	power-of-two token vector size.

2006-06-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28016
	* decl.c (cp_finsh_decl): Do not emit uninstantiated static data
	members.

	PR c++/27979
	* call.c (standard_conversion): Strip cv-qualifiers from bitfield
	types.

	PR c++/27884
	* decl.c (have_extern_spec): Remove.
	(start_decl): Do not check have_extern_spec.
	(start_function): Likewise.
	* cp-tree.h (have_extern_spec): Remove.
	* parser.c (cp_parser_linkage_specification): Don't set
	have_extern_spec.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_parameter_declaration): Do not treat parameters as
	within the scope of an unbraced linkage specification.

2006-06-15  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27689
	* cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
	macro.
	* pt.c (unify): Use it.

	PR c++/27666
	* call.c (build_conditional_expr): Robustify.

	PR c++/27640
	* pt.c (instantiate_template): Set processing_template_decl to
	zero while performing substitutions.

2006-06-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27665
	* parser.c (cp_parser_unqualified_id): Use constructor_name_p to
	identify destructors.
	(cp_parser_nested_name_specifier_opt): Remove invalid
	optimization.
	(cp_parser_template_id): Refine heuristic for determining whether
	we are entering a scope.

	PR c++/27648
	* parser.c (cp_parser_declarator): Robustify.

	PR c++/26559
	* pt.c (tsubst_expr): Use finish_omp_atomic.
	(value_dependent_expression_p): All CALL_EXPRs are dependent.
	* semantics.c (finish_omp_atomic): Rework to use standard
	paradigms for handling non-dependent expressions.

2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* typeck.c (build_modify_expr): Tidy diagnostic message.

2006-06-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28018
	* typeck.c (build_modify_expr): Disallow array assignment.

2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.def: Fix typo.

2006-06-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27227
	* decl.c (decls_match): Allow an extern "C" variable declarations
	from different namespaces to match.
	(duplicate_decls): Disallow redeclaring a variable with a
	different linkage specification.

2006-06-13  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27793
	* cp-tree.h (cxx_int_tree_map): New struct.
	(struct language_function): Add extern_decl_map field.
	* name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
	to cp_function_chain->extern_decl_map hash table instead of
	copying over DECL_UID.
	* cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
	functions.
	(cp_genericize_r): Remap DECL_EXTERN local decls using
	cp_function_chain->extern_decl_map hash table.
	* decl.c (finish_function): Clear extern_decl_map.

2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27601
	* semantics.c (finish_offsetof): Handle pseudo-destructors.

	PR c++/27933
	* name-lookup.c (lookup_qualified_name): Always return error_mark_node
	if lookup fails.

	PR c++/27951
	* decl2.c (finish_anon_union): Return early if build_anon_union_vars
	fails.

2006-06-12  Roger Sayle  <roger@eyesopen.com>

	PR c++/21210
	* typeck2.c (build_functional_cast): Use cp_convert to construct
	non-aggregate initializers instead of the user-level build_c_cast.

2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27601
	* cp-tree.h (finish_offsetof): Add prototype.
	* semantics.c (finish_offsetof): New function.
	* parser.c (cp_parser_builtin_offsetof): Call it instead of
	fold_offsetof.
	* pt.c (tsubst_copy_and_build): Likewise.

2006-06-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27177
	* call.c (standard_conversion): Require that the derived type be
	complete when performing a derived-to-base conversion.

2006-06-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27819
	* decl.c (cp_finish_decl): Process initializers for static data
	members with non-dependent initializers, even in templates.

	PR c++/27722
	* decl.c (maybe_deduce_size_from_array_init): If the declaration
	is erroneous, give it an erroneous type.
	(layout_var_decl): If the type is erroneous, give up.
	(check_initializer): Likewise.

	PR c++/27807
	* cp-tree.h (TYPE_OBJ_P): New macro.
	(TYPE_PTROB_P): Use it.
	(TYPE_REF_OBJ_P): Likewise.
	* semantics.c (finish_compound_literal): Do not permit compound
	literals of non-object types.

	PR c++/27806
	* typeck.c (original_type): Robustify.

2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27804
	* init.c (constant_value_1): Return decl instead of error_mark_node
	for invalid initializers.

2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/27592
	* rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
	on operand of the COND_EXPR for the null pointer check.

2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/26740
	* typeck.c (build_unary_op): Mark the function as being used.

2006-06-01  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/26660
	* parser.c (cp_parser_initial_pragma): Read one more token for
	caller after reading PCH file in.

2006-05-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27801
	* call.c (perform_implicit_conversion): Do not actually perform
	conversions in templates.

	PR c++/26496
	* call.c (resolve_args): Check for invalid uses of bound
	non-static member functions.
	* init.c (build_offset_ref): Return error_mark_node for errors.

	PR c++/27385
	* decl.c (reshape_init): Robustify.
	(reshape_init_array_1): Likewise.

2006-05-30  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27808
	* parser.c (cp_parser_decl_specifier_seq): Issue errors about
	"friend" specifiers that do not appear in class scopes.

	PR c++/27803
	* class.c (check_bitfield_decl): Ensure that all bitfields have
	integral type.

2006-05-29  Kazu Hirata  <kazu@codesourcery.com>

	* pt.c (convert_nontype_argument): Fix a typo in an error
	message.

2006-05-28  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, decl2.c, parser.c: Fix comment typos.  Follow
	spelling conventions.

2006-05-24  Mark Mitchell  <mark@codesourcery.com>

	PR c++/20103
	* decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
	error_mark_node to indicate an initialization is OK.
	(start_decl): Likewise.  Adjust call to start_decl_1.
	(start_decl_1): Add initialized parameter.  Simplify.
	* except.c (initialize_handler_parm): Adjust call to
	setart_decl_1.
	(expand_start_catch_block): Let cp_finish_decl initialize catch
	parameters.
	* cp-tree.h (start_decl_1): Adjust prototype.
	* pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
	(instantiate_decl): Let cp_finish_decl handle initialization.
	* semantics.c (finish_compound_literal): Create a temporary
	variable for the literal.
	* typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
	cases.
	* decl2.c (finish_static_data_member_decl): Don't set
	DECL_INITIAL.
	(grokfield): Do not try to initialize functions.

2006-05-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/20173
	* pt.c (determine_specialization): Disallow partial
	specializations of templates.

2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27716
	* typeck.c (build_modify_expr): Test arguments for error_operand_p.

	* decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.

2006-05-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27210
	* cp-tree.h (cp_save_expr): New function.
	* init.c (build_new): Correct logic for zero-element array
	warning.  Use cp_save_expr.
	* tree.c (cp_save_expr): New function.

2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27398
	* decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
	or void_type_node.

2006-05-19  Mike Stump  <mrs@apple.com>

	* typeck.c (default_conversion): Remove static.

2006-05-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26433
	* cp-tree.h (begin_function_try_block): Change prototype.
	(finish_function_handler_sequence): Likewise.
	* parser.c (cp_parser_function_try_block): Adjust calls.
	* pt.c (tsubst_expr): Adjust calls.
	* semantics.c (begin_function_try_block): Create an artificial
	outer scope.
	(finish_function_handler_sequence): Close it.

2006-05-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27471
	PR c++/27506
	* typeck.c (decay_conversion): Convert bitfields to their declared
	types here.  Improve documentation.  Avoid use of cp_convert.
	(default_conversion): Make it static.  Perform integral promotions
	before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
	conversions.
	* init.c (build_init): Remove.
	(expand_default_init): Do not call rvalue.
	* call.c (null_ptr_cst_p): Robustify.
	(build_conditional_expr): Tidy.
	* except.c (build_throw): Do not perform lvalue-to-rvalue
	conversion on operand before initializing temporary.
	* tree.c (convert.h): Include it.
	(convert_bitfield_to_declared_type): Use convert_to_integer, not
	cp_convert.
	(rvalue): Don't convert bitfields to their declared type here.
	* cp-tree.h (build_init): Remove.
	(default_conversion): Likewise.
	* typeck2.c (build_m_component_ref): Do not perform
	lvalue-to-rvalue, function-to-pointer, or array-to-pointer
	conversions here.  Correct error message.

2006-05-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26122
	* decl2.c (check_member_template): Remove checks for virtual
	functions.
	* parser.c (cp_parser_function_specifier_opt): Complain about
	virtual templates.
	(cp_parser_pure_specifier): Likewise.

	PR c++/26068
	* parser.c (cp_parser_set_storage_class): Check for
	invalid uses of storage classes on unbraced linkage
	specifications.
	(cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
	to cp_parser_set_storage_class.

2006-05-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/27491
	* semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
	on CONSTRUCTORs.

	PR middle-end/27415
	* parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
	on combined parallel workshare constructs.
	* pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR driver/26885
	* Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).

2006-05-15  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27339
	* cp-tree.h (perform_access_checks): New function.
	* semantics.c (perform_access_checks): New function.
	(perform_deferred_access_checks): Use it.
	* parser.c (cp_parser_simple_declaration): Adjust call to
	cp_parser_init_declarator.
	(cp_parser_type_parameter): Do not defer checks in default
	arguments.
	(cp_parser_explicit_specialization): Adjust call to
	cp_parser_single_declaration.
	(cp_parser_init_declarator): Perform template-parameter access
	checks.
	(cp_parser_parameter_declaration): Do not defer checks for
	template parameter default arguments.
	(cp_parser_template_declaration_after_export): Gather access
	checks for template parameters, and pass them to
	cp_parser_single_declaration.
	(cp_parser_template_parameter_access_checks): New function.
	(cp_parser_single_declaration): Add checks parameter.

	PR c++/27505
	* call.c (convert_like_real): Convert bitfields to their declared
	types when forming an rvalue.
	* tree.c (convert_bitfield_to_declared_type): New function.
	(rvalue): Use it.
	* cp-tree.h (convert_bitfield_to_declare_type): Declare it.

2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27582
	* pt.c (any_dependent_template_arguments_p): Return early on invalid
	argument list.

	PR c++/27581
	* search.c (adjust_result_of_qualified_name_lookup): Skip on
	invalid context_class.

	PR c++/27315
	* pt.c (do_decl_instantiation): Return early on invalid decl.

	PR c++/27559
	* pt.c (push_template_decl_real): Return error_mark_node instead
	of broken decl.

	PR c++/27496
	* pt.c (tsubst_friend_class): Return early on invalid friend
	declarations.

2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>

	* Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
	(cp/decl2.o): Likewise.
	(cp/typeck.o): Likewise.
	(cp/cvt.o): Likewise.
	(cp/parser.o): Likewise.
	(cp/call.o): Replace target.h with $(TARGET_H).

2006-05-14  Alexandre Oliva  <aoliva@redhat.com>

	* pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
	COMPONENT_REF alone.

2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27547
	* decl.c (copy_fn_p): Return early on non-member functions.

2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27447
	* decl2.c (build_memfn_type): Skip invalid functions and class types.

2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27427
	* pt.c (convert_nontype_argument): Return early on invalid arguments.

	* pt.c (process_template_parm): Remove superfluous temporary.

	PR c++/27430
	* pt.c (process_template_parm): Handle erroneous non-type parameters.

	PR c++/27423
	* typeck.c (convert_for_initialization): Skip erroneous types.

	PR c++/27422
	* typeck.c (convert_arguments): Return early on args with
	invalid types.

2006-05-03  Aldy Hernandez  <aldyh@redhat.com>

	PR/21391
	* typeck.c (build_static_cast_1): Save casted types in used types
	hash table.
	(build_reinterpret_cast_1): Same.
	* rtti.c (build_dynamic_cast_1): Same.

2006-05-04  Jakub Jelinek  <jakub@redhat.com>

	PR c++/27359
	* parser.c (cp_parser_omp_for_loop): Only call
	cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
	called.

2006-05-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27102
	* decl.c (grokdeclarator): Robustify checks for defining members
	of incomplete types.

	PR c++/27309
	* class.c (add_method): Call grok_special_member_properties.
	* decl.c (grokdeclarator): Don't call it here.
	(copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
	assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
	constructor.
	(start_method): Don't call grok_special_member_properties.
	* method.c (implicitly_declare_fn): Likewise.
	* pt.c (instantiate_class_template): Likewise.
	* decl2.c (grokfield): Likewise.

2006-05-02  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27337
	* cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
	* cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
	* cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.

2006-04-30  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27094
	* pt.c (tsubst_default_argument): Increment function_depth around
	call to tsubst_expr.
	* parser.c (cp_parser_parameter_declaration): Likewise.
	* decl2.c (mark_used): Tidy.

2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27278
	* decl.c (grok_op_properties): Skip operators with invalid args
	when checking for class-type or enum-type args.

2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27279
	* decl.c (copy_fn_p): Skip functions with invalid first arg.

2006-04-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27292
	* tree.c (rvalue): Convert bitfields to their declared types.

	PR c++/27102
	* typeck2.c (cxx_incomplete_type_diagnostic): Handle
	TYPENAME_TYPE.

2006-04-24  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27292
	* typeck.c (decay_conversion): Don't adjust bitfield types.
	(perform_integral_promotions): Treat bitfield enums as enums, not
	as short integer types.
	* tree.c (rvalue): Convert bitfields to their correct types.

2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/19963
	* class.c (layout_class_type): Skip fields with invalid types.

2006-04-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26912
	* cp-tree.h (build_this_parm): Declare.
	(grok_method_quals): Remove.
	(build_memfn_type): Declare.
	(build_artificial_parm): Declare.
	(do_friend): Remove quals parameter.
	* decl.c (build_this_parm): New function.
	(grokfndecl): Use it.  Do not pass quals to grokclassfn.
	(grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
	unnecessary TYPE_DECLs.  Correct qualification of member function
	types.  Tidy.
	* method.c (implicitly_declare_fn): Use build_this_parm.
	* friend.c (do_friend): Remove quals parameter.
	* decl2.c (grok_method_quals): Remove.
	(build_memfn_type): New function.
	(build_artificial_parm): Give it external linkage.
	(grokclassfn): Remove quals parameter.  Do not build "this"
	PARM_DECL here.

	PR c++/26534
	* cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
	* typeck.c (is_bitfield_expr_with_lowered_type): New function.
	(decay_conversion): Convert bitfield expressions to the correct
	type.
	(build_modify_expr): Remove spurious conversions.
	* class.c (layout_class_type): Modify the type of bitfields to
	indicate a limited range.
	* call.c (standard_conversion): Adjust the type of bitfield
	expressions used in an rvalue context.
	(build_conditional_expr): Likewise.

2006-04-22  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c: Fix comment typos.

2006-04-21  Eric Christopher  <echristo@apple.com>

	* decl.c: Fix typo in function name.

2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26558
	* parser.c (cp_parser_class_name): Check for invalid typenames.
	Rearrange code.

	PR c++/26739
	* pt.c (tsubst_friend_function): Return early if
	pushdecl_namespace_level fails.

	PR c++/26036
	* typeck.c (convert_arguments): Return error_mark_node instead of
	error_mark_list.
	* cp-tree.h (error_mark_list): Remove declaration.
	* decl.c (error_mark_list): Remove definition.
	(cxx_init_decl_processing): Do not initialize error_mark_list.

	PR c++/10385
	* rtti.c (build_dynamic_cast_1): Check for invalid conversions
	before calling convert_to_reference.
	* cvt.c (convert_to_reference): Assert that reftype is a
	REFERENCE_TYPE.

2006-04-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27102
	* class.c (currently_open_class): Tidy.
	* decl.c (grokdeclarator): If we encounter an erroneous
	declarator, assume that we have already issued an error message
	and return.  Return error_mark_node instead of NULL_TREE in more
	places.  Issue errors about function definitions that do not have
	a function declarator.  Check for complete types for all function
	definitions.
	* cp-tree.h (cp_error_declarator): Remove.
	(currently_open_class): Change return type.
	* parser.c (cp_parser_id_expression): Add optional_p parameter.
	(cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
	(cp_parser_id_expression): Likewise.
	(cp_parser_unqualified_id): If the name is optional, return
	NULL_TREE.
	(cp_parser_postfix_dot_deref_expression): Adjust calls.
	(cp_parser_type_parameter): Likewise.
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_declarator_id): Add optional_p parameter.
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Assume that start_function indicates failure only if it has issued
	an error.
	(cp_parser_omp_var_list_no_open): Adjust calls.

2006-04-17  Janis Johnson  <janis187@us.ibm.com>

	PR c++/26114, c++/26115
	* typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
	* class.c (check_field_decls): Ditto.

2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* init.c (build_offset_ref): Remove superfluous temporary.

2006-04-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26365
	* typeck.c (finish_class_member_access_expr): Robustify

2006-04-15  Kazu Hirata  <kazu@codesourcery.com>

	* Make-lang.in (cp/pt.o): Depend on vecprim.h.
	* pt.c: Include vecprim.h.
	(inline_parm_levels): Change the type to VEC(int,heap) *.
	(inline_parm_levels_used): Remove.
	(maybe_begin_member_template_processing,
	maybe_end_member_template_processing): Use VEC instead of
	VARRAY.

	* cp/call.c: Fix comment typos.

2006-04-12  Mark Mitchell  <mark@codesourcery.com>

	* parser.c (cp_parser_init_declarator): Initialize local variables
	aggressively.

2006-04-12  Roger Sayle  <roger@eyesopen.com>

	* parser.c (cp_parser_init_declarator): Initialise
	is_parenthesized_init to false to avoid compiler warning.

2006-04-11  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (build_operator_new_call): Adjust prototype.
	(build_new_method_call): Likewise.
	(build_op_delete_call): Likewise.
	* init.c (build_raw_new_expr): New function.
	(build_new_1): Pass information as parameters, rather than
	bundling it into a NEW_EXPR.
	(build_new): Adjust accordingly.
	(build_vec_delete_1): Adjust for changes to build_op_delete_call.
	(build_delete): Likewise.
	* decl.c (finish_destructor_body): Likewise.
	* call.c (build_operator_new_call): Return the allocation function
	used.
	(build_op_delete_call): Take allocation function as parameter.
	(build_special_member_call): Adjust call to build_new_method_call.
	(build_new_method_call): Return function called.
	* pt.c (tsubst_copy_and_build): Adjust call to
	build_new_method_call.
	* semantics.c (finish_call_expr): Likewise.
	* parser.c (cp_parser_postfix_expression): Likewise.
	* typeck2.c (cxx_incomplete_type_diagnostic): Refer to
	"incomplete", not "undefined", types.

	PR c++/26295
	* decl.c (grokdeclarator): Remove namespace-handling code for
	pointers-to-members.
	* parser.c (cp_parser_ptr_operator): Check for qualified names
	using namespaces.

	PR c++/26122
	* parser.c (cp_parser_init_declarator): Adjust logic for deciding
	whether or not to look for a pure-specifier.
	(cp_parser_member_declaration): Likewise.

2006-04-08  Kazu Hirata  <kazu@codesourcery.com>

	* decl2.c, pt.c, semantics.c: Fix comment typos.

2006-04-06  Roger Sayle  <roger@eyesopen.com>

	* call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.

2006-04-05  Jason Merrill  <jason@redhat.com>

	* name-lookup.c (push_namespace_with_attribs): Temporarily disable
	default hidden visibility for anonymous namespace.

2006-03-29  Roger Sayle  <roger@eyesopen.com>

	PR c++/22494
	* init.c (build_vec_delete_1): Convert BASE pointer's type to
	the base pointer type to avoid a type mismatch in the EQ_EXPR.

2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>

	* search.c (maybe_suppress_debug_info): If
	flag_emit_class_debug_always then don't suppress.

2006-03-22  Jason Merrill  <jason@redhat.com>

	* name-lookup.c (push_namespace_with_attribs): Only apply hidden
	visibility to anonymous namespaces if HAVE_GAS_HIDDEN.

2006-03-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/26691
	* cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.

2006-03-21  Jason Merrill  <jason@redhat.com>

	PR c++/21581
	* parser.c (cp_parser_declaration): Support attributes on
	anonymous namespaces.
	* name-lookup.c (push_namespace_with_attribs): Anonymous
	namespaces default to hidden visibility.

2006-03-20  Jason Merrill  <jason@redhat.com>

	PR c++/21764, c++/19238
	* decl.c (cp_finish_decl): Call determine_visibility later.
	(start_preparsed_function): Likewise.
	* cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
	(TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
	* name-lookup.h (struct cp_binding_level): Add has_visibility
	bitfield.
	* name-lookup.c: Include c-pragma.h.
	(push_namespace_with_attribs): Split out from push_namespace.
	Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
	(leave_scope): Pop visibility if appropriate.
	* decl2.c (determine_visibility_from_class): Split out from...
	(determine_visibility): ...here.  Handle function scope and
	nested classes.
	(import_export_decl): Move visibility handling to
	determine_visibility_from_class.
	* parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
	attributes on namespace declarations.

2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/6634
	* decl.c (grokdeclarator): Do not accept long long double.
	Reorganize checks for invalid (combinations of) type modifiers.
	Quote modifiers in messages.

2006-03-09  Jason Merrill  <jason@redhat.com>

	PR c++/16387, c++/16389
	* typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
	(cxx_sizeof_or_alignof_expr): Split out from here.

2006-03-09  Diego Novillo  <dnovillo@redhat.com>

	Merge from gomp-20050608-branch

	2006-02-02  Diego Novillo  <dnovillo@redhat.com>

		* decl.c (pop_labels_1): Use appropriate pointer casting.
		(poplevel_named_label_1): Likewise.
		(named_label_entry_hash): Likewise.
		(named_label_entry_eq): Likewise.
		(check_goto): Likewise.
		(define_label): Likewise.

	2006-01-26  Diego Novillo  <dnovillo@redhat.com>

		* cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
		of TREE_BLOCK.
		* pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
		instead of TREE_CODE/TREE_OPERAND.
		* semantics.c: Likewise.
		* parser.c: Likewise.

	2005-11-10  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
		target does not support TLS.

	2005-11-09  Jakub Jelinek  <jakub@redhat.com>

		* decl.c (redeclaration_error_message): Don't error about
		DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
		(olddecl).

	2005-11-08  Jakub Jelinek  <jakub@redhat.com>

		PR c++/24735
		* semantics.c (finish_omp_barrier, finish_omp_flush): New
		  functions.
		* parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
		(cp_parser_omp_flush): Call finish_omp_flush.
		* cp-tree.h (finish_omp_barrier, finish_omp_flush): New
		  prototypes.

		PR c++/24734
		* pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.

	2005-11-03  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (finish_omp_threadprivate): Error on class-scope
		variables.

	2005-11-02  Jakub Jelinek  <jakub@redhat.com>

		* parser.c (cp_parser_omp_all_clauses): If some clause
		type is not allowed, don't remove just one of the
		clauses, but all clauses added in that loop round.

		* semantics.c (finish_omp_clauses): Fix function
		comment. Don't handle non-const or mutable specially,
		as const and not mutable is predetermined shared and
		that leads to double error. Don't ICE if copyin var is
		PARM_DECL.

		PR c++/24613
		* parser.c (cp_parser_pragma): Diagnose
		PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
		construct.

		* semantics.c (finish_omp_threadprivate): Error if V
		  is automatic variable or has incomplete type.

	2005-11-01  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_all_clauses): Use
		OMP_CLAUSE_CHAIN instead of TREE_CHAIN.

	2005-11-01  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_all_clauses): When emitting an
		error message, remove the invalid clause from the list.

	2005-10-31  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
		combined parallel+workshare directives.

	2005-10-31  Richard Henderson  <rth@redhat.com>

		* cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
		Use cxx_omp_clause_dtor.
		* cp-tree.h (CP_OMP_CLAUSE_INFO): New.
		(cxx_omp_clause_dtor): New.
		* cp-gimplify.c (cxx_omp_clause_apply_fn): New.
		(cxx_omp_clause_default_ctor): Use it.
		(cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
		Likewise.
		(cxx_omp_clause_dtor): New.
		* semantics.c (finish_omp_clauses): Rewrite cdtor
		checking to fill in CP_OMP_CLAUSE_INFO.  Don't
		specialcase LASTPRIVATE for removal.
		(cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
		cxx_omp_clause_assign_op): Move to cp-gimplify.c.

	2005-10-28  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (finish_omp_threadprivate): If
		  DECL_RTL_SET_P, call make_decl_rtl again so that
		  encode_section_info can update SYMBOL_REF's flags.

	2005-10-26  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (finish_omp_for): Don't segfault if COND
		or INCR is NULL.  If not calling c_finish_omp_for
		right away and one of COND and INCR is NULL, issue
		error and don't expand anything.

		PR c++/24512
		* cp-tree.h (finish_omp_for): Add PRE_BODY argument.
		* semantics.c (finish_omp_for): Likewise.  Set
		OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
		into the current statement list if not processing
		template decl or pass it to c_finish_omp_for.

		* parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
		into PRE_BODY statement list.  Pass it to finish_omp_for.
		* pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
		OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
		finish_omp_for.  Put all the statements into sk_omp
		scope.

	2005-10-25  Jakub Jelinek  <jakub@redhat.com>

		PR c++/24516
		* parser.c (struct cp_parser): Rename in_iteration_statement
		field to in_statement.
		(IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
		(IN_OMP_BLOCK, IN_OMP_FOR): Change values.
		(cp_parser_new, cp_parser_begin_omp_structured_block,
		cp_parser_end_omp_structured_block,
		cp_parser_omp_for_loop): Adjust for
		in_iteration_statement renaming.
		(cp_parser_selection_statement): Save
		parser->in_iteration, or it temporarily with
		IN_SWITCH_STMT for the
		cp_parser_implicitly_scoped_statement call.
		(cp_parser_iteration_statement): Adjust for
		in_iteration_statement renaming.  Use
		IN_ITERATION_STMT rather than true.
		(cp_parser_jump_statement): Adjust for
		in_iteration_statement renaming and new values.  Don't
		error on break in a switch statement within OMP_FOR or
		OpenMP structured block.

		PR c++/24513
		* parser.c (cp_parser_cache_group): Don't stop if next
		token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
		well.  If current token is CPP_PRAGMA, consume
		everything until CPP_PRAGMA_EOL inclusive.

	2005-10-24  Jakub Jelinek  <jakub@redhat.com>

		PR c++/24502
		* semantics.c (finish_omp_for): Handle MODOP_EXPR in
		addition to MODIFY_EXPR.

	2005-10-23  Richard Henderson  <rth@redhat.com>

		* cp-gimplify.c (struct cp_gimplify_ctx): Remove.
		(bc_label): New.
		(begin_bc_block, finish_bc_block): Use it.
		(push_context, pop_context): Remove.
		(cp_genericize): Don't use them.  Assert bc_label is null.
		* semantics.c (finish_omp_clauses): Create a fake data
		element of TYPE for probing ctors.

	2005-10-23  Richard Henderson  <rth@redhat.com>

		* cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
		(LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
		(LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
		(LANG_HOOKS_OMP_CLAUSE_DTOR): New.
		* semantics.c (finish_omp_clauses): Look through
		arrays when looking up special member calls.  Also
		remove FIRSTPRIVATE when LASTPRIVATE fails.
		(cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
		(cxx_omp_clause_assign_op): New.
		* cp-tree.h: Declare them.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* decl.c (check_previous_goto_1): Return false if error.
		(check_switch_goto): Likewise.
		(finish_case_label): Don't emit the case label on error.
		* parser.c (struct cp_parser): Revert
		in_switch_statement_p changes.
		(cp_parser_labeled_statement,
		cp_parser_selection_statement): Likewise.
		(cp_parser_begin_omp_structured_block): Don't save...
		(cp_parser_end_omp_structured_block): or restore
		in_switch_statement_p.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* semantics.c (finish_omp_threadprivate): Set
		decl_flags.u2sel when necessary.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* decl.c (poplevel_named_label_1): Restore creation of the
		bad_decls list.
		(decl_jump_unsafe): Check for error_mark_node types.
		(check_goto): Don't check cdtor_label.  Don't use identify_goto.
		* semantics.c (finish_return_stmt): Do check_omp_return before
		converting to cdtor_label goto.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		PR c++/24451
		* decl.c (check_omp_return): Return false on error.
		* cp-tree.h (check_omp_return): Update decl.
		* semantics.c (finish_return_stmt): Avoid adding
		return on error.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* cp-tree.h (struct language_function): Remove
		x_named_label_uses.
		Change x_named_labels to a hashtable.
		(check_omp_return): Declare.
		* decl.c (struct named_label_use_entry): Rename from
		named_label_use_list.  Remove label_decl.
		(struct named_label_entry): Rename from
		named_label_list.  Remove old_value and next.  Change
		in_try_scope and in_catch_scope to bool. Add
		in_omp_scope.
		(pop_labels_1): New.
		(pop_labels): Use it.
		(pop_local_label, poplevel_named_label_1): New.
		(poplevel): Use them.
		(named_label_entry_hash, named_label_entry_eq): New.
		(make_label_decl): Create named_labels.  Move label
		creation bits from lookup_label.
		(declare_local_label): Tidy.
		(identify_goto): Split out from ...
		(check_previous_goto_1): Add exited_omp argument.
		Handle omp scopes.

		(use_label): Merge into...
		(check_goto): ... here.  Handle omp scopes.
		(check_omp_return): New.
		(check_previous_gotos): Merge into...
		(define_label): ... here.
		(save_function_data): Remove x_named_label_uses reference.
		(finish_function): Likewise.
		* name-lookup.h (sk_omp): New.
		* name-lookup.c (begin_scope): Handle it.
		* parser.c (cp_parser_omp_for): Don't create extra
		compound stmt.

		(cp_parser_omp_sections): Likewise.
		* semantics.c (finish_return_stmt): Call check_omp_return.
		(begin_omp_structured_block): Use sk_omp.
		(finish_omp_structured_block): Use do_poplevel.  Don't build a
		MUST_NOT_THROW expression here.
		(begin_omp_parallel, finish_omp_parallel): Don't create extra
		compound statements.

	2005-10-21  Diego Novillo  <dnovillo@redhat.com>

		PR 24455
		* cp/cp-tree.h (struct lang_decl_flags): Add field
		threadprivate_p.
		(CP_DECL_IS_THREADPRIVATE): Define.
		* cp/semantics.c (finish_omp_threadprivate): Set.  Do
		not error out if CP_DECL_IS_THREADPRIVATE is set
		already.
		* cp/decl.c (duplicate_decls): Merge
		CP_DECL_THREADPRIVATE_P.

	2005-10-20  Richard Henderson  <rth@redhat.com>

		* cp-gimplify.c (cp_gimplify_omp_for): New.
		(cp_gimplify_expr): Call it.
		* cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
		* parser.c (struct cp_parser): Rename
		in_iteration_statement_p to in_iteration_statement and
		change to unsigned char.  Similarly with
		in_switch_statement.  Update all users.
		(IN_OMP_BLOCK, IN_OMP_FOR): New.
		(cp_parser_labeled_statement): Diagnose case labels
		binding closer to an openmp block nested than the
		switch.
		(cp_parser_jump_statement): Diagnose break and
		continue labels binding closer to an openmp block than
		an iteration or switch.
		(cp_parser_omp_for_loop): Mark in_iteration_statement
		for an omp for.
		(cp_parser_begin_omp_structured_block): New.
		(cp_parser_end_omp_structured_block): New.
		(cp_parser_omp_structured_block): Use them.
		(cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
		(cp_parser_omp_parallel): Likewise.

	2005-10-20  Richard Henderson  <rth@redhat.com>

		* semantics.c (begin_omp_structured_block): New.
		(finish_omp_structured_block): New.
		(begin_omp_parallel, finish_omp_parallel): Use them.
		* parser.c (cp_parser_omp_structured_block): Likewise.
		(cp_parser_omp_for): Likewise.
		(cp_parser_omp_sections_scope): Likewise.
		* cp-tree.h: Declare them.

	2005-10-20  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_parser_omp_master): Return the statement.
		(cp_parser_omp_ordered): Likewise.
		(cp_parser_omp_construct): Set the locus for them.

	2005-10-19  Richard Henderson  <rth@redhat.com>

		* semantics.c (finish_omp_atomic): Revert to
		uses_template_parms.

	2005-10-19  Richard Henderson  <rth@redhat.com>

		* semantics.c (finish_omp_clauses): Avoid
		DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
		stub asserts guaranteed to fail.

	2005-10-19  Richard Henderson  <rth@redhat.com>

		* cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
		(finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
		* parser.c (cp_parser_omp_clause_copyin): Remove.
		(cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
		Call finish_omp_clauses.
		(cp_parser_omp_clause_if): Don't do error checking here.
		(cp_parser_omp_clause_num_threads): Likewise.
		(cp_parser_omp_clause_schedule): Likewise.
		(cp_parser_omp_atomic): Use finish_omp_atomic.
		(cp_parser_omp_for_loop): Don't discard DECL_EXPR.
		Don't decompose assignment statment here.  Use
		finish_omp_for.

		* pt.c (tsubst_omp_clauses): New.
		(tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
		OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
		* semantics.c (finish_omp_clauses): New.
		(begin_omp_parallel, finish_omp_parallel): Know Less about the
		internals of the stmt_list stack.
		(finish_omp_for, finish_omp_atomic): New.

	2005-10-18  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (cxx_omp_predetermined_sharing): New function.
		* cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
		* cp-objcp-common.h
		(LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.

	2005-10-18  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_parser_omp_single): Use make_node and accessors
		instead of build.

	2005-10-17  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_parser_omp_for_loop): Handle declarations.

	2005-10-12  Richard Henderson  <rth@redhat.com>

		* Make-lang.in (CXX_C_OBJS): Add c-omp.o.
		* cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
		(finish_omp_threadprivate): Declare.
		* parser.c (struct cp_lexer): Add in_pragma.
		(cp_lexer_consume_token): Don't consume a PRAGMA_EOL
		when in_pragma.
		(cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
		(cp_parser_skip_to_end_of_statement): Likewise.
		(cp_parser_skip_to_end_of_block_or_statement): Likewise.
		(cp_parser_skip_to_closing_brace): Likewise.
		(cp_parser_skip_to_pragma_eol): Reset in_pragma.
		(cp_parser_require_pragma_eol): New.
		(cp_parser_statement): Add in_compound argument;
		update all callers.
		Restart if a non-statement pragma seen outside a
		compound.
		(cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
		(cp_parser_declaration_seq_opt): Likewise.
		(cp_parser_member_specification_opt): Likewise.
		(cp_parser_function_definition_after_decl): Likewise.
		(cp_parser_skip_until_found): Likewise.
		(cp_parser_cache_group): Likewise.
		(enum pragma_omp_clause, cp_parser_omp_clause_name,
		check_no_duplicate_clause,
		cp_parser_omp_var_list_no_open,
		cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
		cp_parser_omp_clause_default, cp_parser_omp_clause_if,
		cp_parser_omp_clause_nowait,
		cp_parser_omp_clause_num_threads,
		cp_parser_omp_clause_ordered,
		cp_parser_omp_clause_reduction,
		cp_parser_omp_clause_schedule,
		cp_parser_omp_all_clauses,
		cp_parser_omp_structured_block, cp_parser_omp_atomic,
		cp_parser_omp_barrier, cp_parser_omp_critical,
		cp_parser_omp_flush, cp_parser_omp_for_loop,
		cp_parser_omp_for, cp_parser_omp_master,
		cp_parser_omp_ordered, cp_parser_omp_sections_scope,
		cp_parser_omp_sections, cp_parser_omp_parallel,
		cp_parser_omp_single, cp_parser_omp_threadprivate,
		cp_parser_omp_construct): New.
		(cp_parser_pragma): Handle OpenMP pragmas.
		* semantics.c (finish_omp_threadprivate): New.
		(begin_omp_parallel, finish_omp_parallel): New.

	2005-10-11  Richard Henderson  <rth@redhat.com>

		* parser.c (struct cp_token): Add pragma_kind.
		(eof_token): Initialize it.
		(cp_lexer_handle_pragma): Remove.
		(cp_parser_initial_pragma): New.
		(cp_lexer_new_main): Use it.
		(cp_lexer_get_preprocessor_token): Initialize pragma_kind.
		(cp_lexer_print_token): Don't handle CPP_PRAGMA.
		(cp_parser_skip_to_pragma_eol): New.
		(cp_parser_error): Use it.
		(pragma_lex): New.

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

		* lex.c (parse_strconst_pragma): Update for c_lex name change.
		(handle_pragma_java_exceptions): Likewise.
		* parser.c (cp_lexer_new_main): Likewise.

	2005-10-06  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_lexer_new_main): Comment out defer_pragmas.
		(cp_lexer_handle_pragma): Comment out
		cpp_handle_deferred_pragma.

	2005-10-01  Richard Henderson  <rth@redhat.com>

		* name-lookup.c (lookup_name): Remove prefer_type argument.
		(lookup_name_prefer_type): New function.
		* name-lookup.h (lookup_name_prefer_type): Declare it.
		* decl.c (lookup_and_check_tag): Use it.
		* pt.c (tsubst_friend_class): Likewise. Update for
		lookup_name change.
		(lookup_template_class, tsubst_copy_and_build): Likewise.

2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/15759
	* tree.c (bot_manip): Don't call mark_used.

2006-03-02  Mike Stump  <mrs@apple.com>

	* decl2.c (import_export_decl): Remove redundant call to
	targetm.cxx.key_method_may_be_inline ().

2006-03-02  Richard Sandiford  <richard@codesourcery.com>

	* decl.c (start_decl): Use have_global_bss_p when deciding
	whether to make the decl common.

2006-03-01  Mike Stump  <mrs@apple.com>

	PR darwin/25908
	* decl2.c (import_export_decl): Fix ABI breakage on darwin.

2006-02-24  Geoffrey Keating  <geoffk@apple.com>

	* except.c (expand_start_catch_block): Handle
	flag_use_cxa_get_exception_ptr.

2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26291
	* decl.c (grok_op_properties): Check for ellipsis in arguments of
	operators.

2006-02-20  Rafael vila de Espndola  <rafael.espindola@gmail.com>

	* Make-lang.in (C++): Remove.
	(.PHONY): Remove C++.

2006-02-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26266
	* cp-tree.h (cp_finish_decl): Adjust declaration.
	(grokbitfield): Likewise.
	(finish_static_data_member_decl): Likewise.
	* init.c (constant_value_1): Ensure processing_template_decl when
	folding non-dependent initializers for static data members of
	dependent types.  Return error_mark_node for erroneous
	initailizers.
	* class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
	* decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
	(cp_finish_decl): Add init_const_expr_p parameter.  Set
	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
	(finish_decl): Adjust call to cp_finish_decl.
	(compute_array_index_type): Robustify.
	(start_method): Use finish_decl, not cp_finish_decl.
	* rtti.c (emit_tinfo_decl): Likewise.
	* except.c (initialize_handler_parm): Adjust call to
	cp_finish_decl.
	(expand_start_catch_block): Likewise.
	* cvt.c (build_up_reference): Adjust call to cp_finish_decl.
	* pt.c (instantiate_class_template): Adjust call to
	finish_static_data_member_decl.
	(tsubst_expr): Use finish_decl, not cp_finish_decl.
	(instantiate_decl): Adjust call to cp_finish_decl.
	* name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
	cp_finish_decl.
	* decl2.c (finish_static_data_member_decl): Add init_const_expr_p
	parameter.
	(grokfield): Likewise.
	* parser.c (cp_parser_condition): Check for constant initializers.
	(cp_parser_init_declarator): Adjust calls to grokfield and
	cp_finish_decl.  Don't set
	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_objc_class_ivars): Likewise.

2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* call.c (standard_conversion): Return NULL instead of 0.
	(build_user_type_conversion_1): Likewise.
	(tourney): Likewise.
	* decl.c (redeclaration_error_message): Likewise.
	* error.c (language_to_string): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* cp-tree.h (warn_hidden): Remove prototype.
	* class.c (warn_hidden): Make static.

	* cp-tree.h (build_type_conversion): Remove prototype.
	* cvt.c (build_type_conversion): Add prototype, make static.

	* cp-tree.h (push_tinst_level): Remove prototype.
	(pop_tinst_level): Likewise.
	* pt.c (push_tinst_level): Add prototype, make static.
	(pop_tinst_level): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* decl.c (grokdeclarator): Return NULL_TREE instead of 0.
	* typeck.c (unary_complex_lvalue): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* lex.c (parse_strconst_pragma): Return error_mark_node instead of
	"(tree)-1" to indicate failure.  Simplify.
	(handle_pragma_interface): Test for error_mark_node instead of
	"(tree)-1".
	(handle_pragma_implementation): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26151
	* parser.c (cp_parser_decl_specifier_seq): Check for duplicate
	decl-specifiers.  Remove extra check for duplicate 'friend'.
	* decl.c (grokdeclarator): Remove check for duplicate
	decl-specifiers.  Set longlong together with long_p.

2006-02-12  Jason Merrill  <jason@redhat.com>

	PR c++/24996
	* except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
	TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.

2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* class.c (debug_class): Remove extern.
	(debug_thunks): Likewise.

2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* typeck.c (string_conv_p): Don't test for flag_const_strings.

2006-02-08  Jason Merrill  <jason@redhat.com>

	PR c++/25979
	* cp-gimplify.c (cp_gimplify_expr): Don't call
	cp_gimplify_init_expr for MODIFY_EXPRs.
	* typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.

2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26071
	* decl.c (grokdeclarator): Set dname also for destructor.

	PR c++/26070
	* decl.c (grokdeclarator): Clear storage_class together with staticp.

2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
	(cp_build_qualified_type): Propogate renaming.
	* call.c (convert_like_real): Likewise.
	* cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
	* decl.c (make_typename_type, grokdeclarator): Likewise.
	* pt.c (tsubst_friend_function, instantiate_class_template,
	tsubst_default_argument, instantiate_decl,
	tsubst_initializer_list, tsubst_enum): Likewise.
	* semantics.c (finish_template_type): Likewise.
	* typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.

2006-02-07  Dirk Mueller  <dmueller@suse.com>

	* typeck.c (build_binary_op): Annotate div-by-zero
	warnings to make -Wno-div-by-zero have an effect.

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

	PR c++/9737
	* pt.c (coerce_template_template_parms): Do not templates with
	excess default arguments to match template template parameters
	with fewer parameters.
	(coerce_template_parms): Add use_default_args parameter; use
	default arguments only when true.
	(lookup_template_class): Adjust call to coerce_template_parms.
	(fn_type_unification): Likewise.
	(unify): Likewise.
	(get_bindings): Likewise.
	(dependent_type_p): Add assertions.

2006-02-06  Roger Sayle  <roger@eyesopen.com>

	* decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
	* rtti.c (typeinfo_in_lib_p): Likewise.
	* cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
	* name-lookup.c (arg_assoc_type): Likewise.

2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (tf_warn_or_error): New substituion flag.
	(cp_build_qualified_type): Use it.
	* call.c (convert_like_real): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_reference): Likewise.
	* decl.c (make_typename_type): Likewise.
	(grokdeclarator): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(tsubst_friend_class): Likewise.
	(instantiate_class_template): Likewise.
	(tsubst_default_argument): Likewise.
	(instantiate_decl): Likewise.
	(tsubst_initializer_list): Likewise.
	(tsubst_enum): Likewise.
	* semantics.c (finish_template_type): Likewise.
	* typeck.c (build_ptrmemfunc): Likewise.
	(convert_for_assignment): Likewise.

2006-02-03  Lee Millward  <lee.millward@gmail.com>

	* typeck.c (string_conv_p): Pass appropiate
	OPT_Wxxxx values when calling warning().
	(build_array_ref, cxx_mark_addressable): Likewise.
	(check_return_expr): Likewise.

	* init.c (perform_member_init): Likewise.
	(sort_mem_initializers, emit_mem_initializers): Likewise.

	* class.c (check_field_decls): Likewise.
	(warn_about_ambiguous_bases): Likewise.

	* decl.c (pop_label, poplevel): Likewise.
	(duplicate_decls, grok_op_properties): Likewise.
	(start_preparsed_function, finish_function): Likewise.

	* name-lookup.c (pushdecl_maybe_friend): Likewise.
	(pushdecl_maybe_friend): Likewise.

	* parser.c (cp_parser_warn_min_max): Likewise.
	(cp_parser_cast_expression): Likewise.

	* method.c (lazily_declare_fn): Likewise.
	* cvt.c (convert_to_void): Likewise.
	* mangle.c (finish_mangling): Likewise.
	* cp-gimplify.c (gimplify_expr_stmt): Likewise.

2006-02-03  Mark Mitchell  <mark@codesourcery.com>

	* name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
	not IDENTIFIER_OPNAME_P.

2006-01-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25342
	* cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
	documentation.
	* pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
	not TREE_VALUE.
	(instantiate_class_template): Simplify.
	(verify_class_unification): Remove.
	(unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
	permit multiple levels of template arguments.
	(more_specialized_class): Simplify.
	(get_class_bindings): Pass full arguments to unify.  Fold
	verify_class_unification into this function.  Return full
	arguments.
	(most_specialized_class): Adjust for changes to
	get_class_bindings.  Issue errors here for ambiguity.  Return the
	fully deduced arguments for the most specialized class, in
	addition to the partial specialization.

2006-01-31  Ben Elliston  <bje@au.ibm.com>

	* mangle.c: Comment fix.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
	* repo.c (extract_string, afgets): Use cast when converting from
	void *.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (alloc_conversion): Use cast when converting from void *.
	(alloc_conversions): Likewise.
	(add_candidate): Likewise.
	(print_z_candidates): Likewise.
	(add_warning): Likewise.
	* pt.c (retrieve_local_specialization): Likewise.
	(process_partial_specialization): Likewise.
	(mangle_class_name_for_template): Likewise.
	(tsubst_template_args): Likewise.
	* typeck2.c (pat_calc_hash): Likewise.
	(pat_compare): Likewise.
	(abstract_virtuals_error): Likewise.
	* class.c (method_name_cmp): Likewise.
	(resort_method_name_cmp): Likewise.
	(get_vfield_name): Likewise.
	* decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
	* lex.c (init_reswords): Likewise.
	* rtti.c (create_pseudo_type_info): Likewise.
	* search.c (dfs_lookup_base): Likewise.
	(dfs_dcast_hint_pre): Likewise.
	(dfs_dcast_hint_post): Likewise.
	* tree.c (hash_tree_cons): Likewise.
	* repo.c (extract_string): Likewise.
	(afgets): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
	* g++spec.c (lang_specific_driver): Likewise.

2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (joust): Pass option code to warning.  Use inform for
	explanation.
	* class.c (check_bases): Likewise.
	(maybe_warn_about_overly_private_class): Likewise.
	(check_field_decls): Likewise.
	(layout_empty_base): Likewise.
	(layout_virtual_bases): Likewise.
	(layout_class_type): Likewise.

2006-01-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25999
	* decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
	here, not ...
	(start_function): ... here.

2006-01-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25855
	* class.c (resolve_address_of_overloaded_function): Adjust use of
	return value from most_specialized_instantiation.
	* pt.c (determine_specialization): Avoid multiple calls to
	get_bindings.
	(most_specialized_instantiation): When a tie occurs, set the
	current presumed champion to the next template.  Return the
	TREE_LIST node containing the template, rather than the template
	itself.
	(most_specialized): Remove.
	* name-lookup.c (push_overloaded_decl): When duplicate_decls
	indicates a failed redeclaration, report that to callers.

2006-01-26  Jason Merrill  <jason@redhat.com>

	PR c++/16021
	* name-lookup.c (parse_using_directive): Require strong using to
	name a nested namespace.

2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	Revert:
	* cp-tree.h (do_poplevel): Remove prototype.
	* semantics.c (do_poplevel): Add prototype.  Make static.

	Revert:
	* cp-tree.h (default_conversion): Remove prototype.
	* typeck.c (default_conversion): Make static.

2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* cp-tree.h (get_primary_binfo): Remove prototype.
	(push_using_decl): Likewise.
	(current_template_args): Likewise.
	(more_specialized_class): Likewise.
	(mark_class_instantiated): Likewise.
	(default_conversion): Likewise.
	(pfn_from_ptrmemfunc): Likewise.
	* class.c (get_primary_binfo): Add prototype, make static, simplify.
	* name-lookup.c (push_using_decl): Make static.
	* pt.c (current_template_args): Likewise.
	(more_specialized_class): Likewise.
	(mark_class_instantiated): Likewise.
	* typeck.c (default_conversion): Make static.
	(pfn_from_ptrmemfunc): Add prototype, make static.

2006-01-24  Dirk Mueller  <dmueller@suse.de>

	* typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().

2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/25552
	* parser.c (cp_parser_unqualified_id): Check that destructor name
	and scope match.
	* call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
	Adjust comment.  Return early if possible.
	Use same_type_p to compare types.
	* typeck.c (lookup_destructor): Adjust call to check_dtor_name.

2006-01-24  Mark Mitchell  <mark@codesourcery.com>

	* semantics.c: Remove outdated comment.

2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* cp-tree.h (do_poplevel): Remove prototype.
	* semantics.c (do_poplevel): Add prototype.  Make static.

	* cp-tree.h (original_type): Remove prototype.
	* typeck.c (original_type): Make static.

	* cp-tree.h (declare_global_var): Remove prototype.
	* decl.c (declare_global_var): Make static.

	* cp-tree.h (implicitly_declare_fn): Remove prototype.
	* method.c (implicitly_declare_fn): Make static.

	* cp-tree.h (fold_decl_constant_value): Remove prototype.
	* pt.c (fold_decl_constant_value): Make static.

	* cp-tree.h (build_x_delete): Remove prototype.
	* init.c (build_vec_delete_1): Call build_op_delete_call directly
	and not via build_x_delete.
	(build_x_delete): Remove.

	* cp-tree.h (get_vtt_name): Remove prototype.
	* class.c (get_vtt_name): Remove.
	(build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.

2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* rtti.c (build_dynamic_cast): Fix comment.

2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/10891
	* rtti.c (build_dynamic_cast): Reject dynamic_cast use if
	-fno-rtti.

2006-01-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25895
	* class.c (build_base_path): Generate a NOP_EXPR instead of a
	COMPONENT_REF if the base and derived classes are at the same
	address.

	PR c++/25856
	* decl.c (begin_destructor_body): Robustify.

	PR c++/25858
	* parser.c (cp_parser_direct_declarator): Robustify.

2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* parser.c (cp_lexer_next_token_is_keyword): Simplify.

	* parser.c (clear_decl_specs): Remove prototype.

	* parser.c (cp_parser_expression_fn): Remove.

	* call.c (add_builtin_candidates): Remove superfluous return.
	* name-lookup.c (do_toplevel_using_decl): Likewise.
	* parser.c (cp_parser_type_specifier_seq): Likewise.
	(cp_parser_save_default_args): Likewise.

2006-01-20  Dirk Mueller  <dmueller@suse.com>

	PR c++/5520
	* semantics.c (finish_if_stmt): Call empty_body_warning.
	* parser.c (cp_parser_implicitly_scoped_statement):
	Mark empty statement with an empty stmt.

2006-01-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/22136
	* name-lookup.c (do_class_using_decl): Don't try to look up base
	classes in templates with dependent base types.

2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/25854
	* pt.c (maybe_process_partial_specialization): Return early on
	error_mark_node.

2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/16829
	* decl.c (start_preparsed_function): Check default arguments
	unconditionally.
	* name-lookup.c (pushdecl_maybe_friend): Check default arguments
	of all functions and function templates.
	* parser.c (cp_parser_late_parsing_default_args): Check default
	arguments.
	* decl2.c (check_default_args): Set missing default arguments to
	error_mark_node.

2006-01-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25836
	* cp-tree.h (push_class_stack): New function.
	(pop_class_stack): Likewise.
	* class.c (class_stack_node): Add hidden field.
	(pushclass): Clear it.
	(push_class_stack): New function.
	(pop_class_stack): Likewise.
	(currently_open_class): Ignore hidden classes.
	(currently_open_derived_class): Likewise.
	* name-lookup.c (push_to_top_level): Call push_class_stack.
	(pop_from_top_level): Call pop_class_stack.

2006-01-18  Kazu Hirata  <kazu@codesourcery.com>

	* tree.c (find_tree_t, find_tree): Remove.
	* cp-tree.h: Remove the prototype for find_tree.

2006-01-18  Jakub Jelinek  <jakub@redhat.com>

	* search.c (lookup_conversions_r): Fix a pasto.

2006-01-17  Eric Christopher  <echristo@apple.com>

	* call.c (convert_like_real): When issuing conversion
	warnings, depend on OPT_Wconversion.
	* cvt.c (build_expr_type_conversion): Ditto.

2006-01-17  Kazu Hirata  <kazu@codesourcery.com>

	* name-lookup.c (lookup_namespace_name): Remove.
	* name-lookup.h: Remove the prototype for
	lookup_namespace_name.

2006-01-17  Jakub Jelinek  <jakub@redhat.com>

	PR c/25682
	* decl.c (compute_array_index_type): After issuing not an integral
	constant-expression error, set size to 1 to avoid ICEs later on.

2006-01-16  Ian Lance Taylor  <ian@airs.com>

	* parser.c: Include "cgraph.h".
	(cp_parser_asm_definition): Call cgraph_add_asm_node rather than
	assemble_asm.

2006-01-16  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>

	* g++spec.c (lang_specific_spec_functions): Remove.

2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* decl.c (check_initializer): Fix thinko.

2006-01-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25663
	* parser.c (cp_parser_direct_declarator): Use cp_parser_error
	instead of error.

2006-01-13  Jason Merrill  <jason@redhat.com>

	* pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.

	* name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
	* pt.c (check_explicit_specialization): Likewise.

2006-01-12  Jason Merrill  <jason@redhat.com>

	PR libstdc++/24660
	* pt.c (check_explicit_specialization): Handle namespace
	association.
	* name-lookup.c (set_decl_namespace): Likewise.

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

	PR c++/24824
	* class.c (handle_using_decl): Pass correct scope to
	cp_emit_debug_info_for_using.

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

	PR c++/25386
	* tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
	packedness.

2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>

	* parser.c (cp_parser_primary_expression): Document the grammar
	for the built-in offsetof, a GNU extension.

2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>

	PR c++/25632
	* init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
	in condition.

2006-01-04  Chris Lattner  <sabre@gnu.org>

	* typeck2.c: update copyright to 2006
	(split_nonconstant_init_1):  Set TREE_CONSTANT to true.

2006-01-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/24782
	* parser.c (cp_parser_nested_name_specifier_opt): Preserve access
	checks, even when parsing tentatively.

2006-01-04  Richard Henderson  <rth@redhat.com>

	Merge from gomp branch.
	* lex.c (handle_pragma_java_exceptions): Fix whitespace.
	* parser.c (struct cp_token): Add pragma_kind.
	(eof_token): Update to match.
	(struct cp_lexer): Add in_pragma; rearrange next for better packing.
	(cp_parser_initial_pragma): New.
	(cp_lexer_new_main): Use it.  Don't bother clearing
	c_lex_return_raw_strings.
	(cp_lexer_get_preprocessor_token): Always initialize keyword
	and pragma_kind fields.  Handle CPP_PRAGMA.
	(cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
	in_pragma is set.
	(cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
	(cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
	(cp_parser_skip_to_pragma_eol): New.
	(cp_parser_error): Use it.
	(cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
	rearrange with switch statement.
	(cp_parser_skip_to_end_of_statement): Likewise.
	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
	(cp_parser_skip_to_closing_brace): Likewise.
	(cp_parser_skip_until_found): Likewise.
	(cp_parser_statement): Add in_compound argument; update callers.
	Use it to decide how to handle pragma parsing.
	(cp_parser_labeled_statement): Add in_compound argument; pass
	it on to cp_parser_statement.
	(cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
	(cp_parser_declaration_seq_opt): Likewise.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_member_specification_opt): Likewise.
	(cp_parser_function_definition_after_decl): Likewise.
	(cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
	(cp_parser_pragma): New.
	(pragma_lex): New.

2006-01-04  Dirk Mueller <dmueller@suse.com>

	* decl.c (finish_constructor_body): create simple
	compound stmt instead of a if(1) { } construct.

2006-01-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25492
	* name-lookup.c (push_class_level_binding): When a derived class
	provides a type binding, eliminate any type binding from a base
	class.

	PR c++/25625
	* repo.c (repo_emit_p): Always instantiate static data members
	initialized by constant expressions, so that there values are
	available.

2006-01-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25635
	* class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
	conversion operator.
	* decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.

	PR c++/25638
	* class.c (add_method): Never associate more than one destructor
	with a single class.

	PR c++/25637
	* cp-tree.h (do_friend): Adjust prototype.
	* decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
	(grokdeclarator): Likewise.  Refine check for invalid
	declarations/definitions of member functions outside of their own
	class.
	* friend.c (do_friend): Make funcdef_flag a bool, not an int.

	PR c++/25633
	* parser.c (cp_parser_mem_initializer_list): Check result of
	cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
	(cp_parser_mem_initializer): Return error_mark_node for failure.

	PR c++/25634
	* parser.c (cp_parser_template_parameter_list): Call
	begin_template_parm_list and end_template_parm_list here.
	(cp_parser_type_parameter): Not here.
	(cp_parser_template_declaration_after_export): Or here.
	(cp_parser_elaborated_type_specifier): Call
	cp_parser_check_template_parameters.

	* tree.c (build_target_expr_with_type): Use force_target_expr.

	* decl2.c (mark_used): Fix typo in comment.

2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* parser.c (cp_parser_using_declaration): Skip name-lookup on
	invalid scope.

2005-12-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-12-29  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-12-26  Mark Mitchell  <mark@codesourcery.com>

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

2005-12-26  Mark Mitchell  <mark@codesourcery.com>

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

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

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

2005-12-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

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

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

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

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

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

2005-12-20  Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

2005-12-12  Mark Mitchell  <mark@codesourcery.com>

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

2005-12-10  Mark Mitchell  <mark@codesourcery.com>

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

2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>

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

2005-12-08  Th�dore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>

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

2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-12-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>

	* Make-lang.in (c++.all.build, c++.install-normal): Remove.

2005-12-07  Rafael �ila de Esp�dola  <rafael.espindola@gmail.com>

	* Make-lang.in: Remove all dependencies on s-gtype.

2005-12-06  Aldy Hernandez  <aldyh@redhat.com>

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

2005-12-06  Roger Sayle  <roger@eyesopen.com>

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

2005-12-06  Roger Sayle  <roger@eyesopen.com>

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

2005-12-05  Daniel Berlin  <dberlin@dberlin.org>

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

2005-12-02  Mark Mitchell  <mark@codesourcery.com>

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

2005-12-02  Richard Guenther  <rguenther@suse.de>

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

2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-11-30  Jason Merrill  <jason@redhat.com>

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

2005-11-30  Ben Elliston  <bje@au.ibm.com>

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

2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-11-26  Richard Henderson  <rth@redhat.com>

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

2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-11-24  Richard Guenther  <rguenther@suse.de>
	Dirk Mueller <dmueller@suse.de>

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

2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-11-21  Richard Henderson  <rth@redhat.com>

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

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

2005-11-18  Mark Mitchell  <mark@codesourcery.com>

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

2005-11-18  Mike Stump  <mrs@apple.com>

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

2005-11-15  Jason Merrill  <jason@redhat.com>

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

2005-11-15  Mike Stump  <mrs@apple.com>

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

2005-11-15  Mark Mitchell  <mark@codesourcery.com>

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

2005-11-14  Mark Mitchell  <mark@codesourcery.com>

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

	* parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
	field.

2005-11-14  Jason Merrill  <jason@redhat.com>

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

2005-11-14  Mark Mitchell  <mark@codesourcery.com>

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

2005-11-13  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-11-12  Jakub Jelinek  <jakub@redhat.com>

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

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

2005-11-08  Jakub Jelinek  <jakub@redhat.com>

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

2005-11-08  Jason Merrill  <jason@redhat.com>

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

2005-11-06  Jason Merrill  <jason@redhat.com>
	    James A. Morrison <phython@gcc.gnu.org>

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

2005-11-06  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-11-05  Kazu Hirata  <kazu@codesourcery.com>

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

2005-11-04  Richard Guenther  <rguenther@suse.de>

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

2005-11-03  Josh Conner  <jconner@apple.com>

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

2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-11-03  Mark Mitchell  <mark@codesourcery.com>

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

2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>

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

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

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

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

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

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

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

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

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

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

2005-10-28  Josh Conner  <jconner@apple.com>

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

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

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

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

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

2005-10-20  Mark Mitchell  <mark@codesourcery.com>

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

2005-10-20  Richard Guenther  <rguenther@suse.de>

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

2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-10-18  Mark Mitchell  <mark@codesourcery.com>

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

2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

2005-10-17  Mark Mitchell  <mark@codesourcery.com>

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

2005-10-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>

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

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

2005-10-16  Mark Mitchell  <mark@codesourcery.com>

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

2005-10-16  Mark Mitchell  <mark@codesourcery.com>

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

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

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

2005-10-16  Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

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

2005-10-14  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-10-13  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-10-13  Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

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

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

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

2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>

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


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

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

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

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

2005-10-12  David Edelsohn  <edelsohn@gnu.org>

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

2005-10-12  Paolo Bonzini  <bonzini@gnu.org>

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

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

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

2005-10-11  Ian Lance Taylor  <ian@airs.com>

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

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

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

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

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

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

2005-10-10  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
	    Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

2005-10-08  James A. Morrison  <phython@gcc.gnu.org>

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

2005-10-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-10-05  Paolo Bonzini  <bonzini@gnu.org>

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

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

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

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

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

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

2005-10-03  Alexandre Oliva  <aoliva@redhat.com>

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

2005-10-03  Mark Mitchell  <mark@codesourcery.com>

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

2005-10-02  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-09-28  Mark Mitchell  <mark@codesourcery.com>

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

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

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

2005-09-26  Jason Merrill  <jason@redhat.com>

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

2005-09-26  Richard Guenther  <rguenther@suse.de>

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

2005-09-22  Jakub Jelinek  <jakub@redhat.com>

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

2005-09-21  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-09-20  Jakub Jelinek  <jakub@redhat.com>

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

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

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

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

2005-09-15  Jason Merrill  <jason@redhat.com>

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

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

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

	* pt.c (check_explicit_instantiation_namespace): Fix typo.

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

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

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

2005-09-13  Bastian Blank <waldi@debian.org>

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

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

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

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

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

2005-09-12  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-12  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-12  Ian Lance Taylor  <ian@airs.com>

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

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

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

2005-09-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-09-09  Richard Henderson  <rth@redhat.com>

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

2005-09-09  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-08  Richard Henderson  <rth@redhat.com>

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

2005-09-08  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-08  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-09-07  Richard Guenther  <rguenther@suse.de>

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

2005-09-06  Jakub Jelinek  <jakub@redhat.com>

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

2005-09-06  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-09-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-09-06  Jakub Jelinek  <jakub@redhat.com>

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

2005-09-06  Kazu Hirata  <kazu@codesourcery.com>

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

2005-09-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-09-03  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-09-02  Mark Mitchell  <mark@codesourcery.com>

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

2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-28  Mark Mitchell  <mark@codesourcery.com>

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

2005-08-26  Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

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

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

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

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

2005-08-22  James E Wilson  <wilson@specifix.com>

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

2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

2005-08-15 Fariborz Jahanian <fjahanian@apple.com>

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

2005-08-12  Giovanni Bajo  <giovannibajo@libero.it>
	    Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

2005-08-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-11  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

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

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

2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-08-06  Michael Matz  <matz@suse.de>

	* method.c (use_thunk): Call init_insn_lengths.

2005-08-05  James A. Morrison  <phython@gcc.gnu.org>

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

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

	* name-lookup.c (pushtag): Remove accidental commit from:
	2004-12-21  Mark Mitchell  <mark@codesourcery.com>
	PR c++/19063
	* decl.c (grokdeclarator): Return error_mark_node, not
	void_type_node, to indicate errors.
	* parser.c (cp_parser_template_parameter_list): Robustify.
	(cp_parser_template_parameter): Likewise.

2005-08-01  Kazu Hirata  <kazu@codesourcery.com>

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

2005-07-29  Kazu Hirata  <kazu@codesourcery.com>

	* method.c: Fix a comment typo.

2005-07-28  Mark Mitchell  <mark@codesourcery.com>

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

2005-07-28  Mike Stump  <mrs@apple.com>

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

2005-07-27  Devang Patel  <dpatel@apple.com>

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

2005-07-25  Ian Lance Taylor  <ian@airs.com>

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

2005-07-24  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

2005-07-22  Manfred Hollstein  <mh@suse.com>

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

2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>

	* class.c (build_base_path): Fix typo.

2005-07-21  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-07-20  Douglas Gregor <doug.gregor@gmail.com>

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

2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>

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

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

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

2005-07-17  Mark Mitchell  <mark@codesourcery.com>

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

2005-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

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

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

2005-07-14  Daniel Berlin  <dberlin@dberlin.org>

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

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

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

2005-07-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
	    Nathan Sidwell  <nathan@codesourcery.com>

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

2005-07-09  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-07-08  Daniel Berlin  <dberlin@dberlin.org>

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

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

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

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

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

2005-07-05  Paolo Bonzini  <bonzini@gnu.org>

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

2005-07-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* dump.c: Use dump_string_field.

2005-07-03  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-07-02  Kazu Hirata  <kazu@codesourcery.com>

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

2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-07-02  Zack Weinberg  <zack@codesourcery.com>
	    Joseph S. Myers  <joseph@codesourcery.com>

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

2005-06-30  Daniel Berlin  <dberlin@dberlin.org>

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

2005-06-30  Zack Weinberg  <zack@codesourcery.com>
	    Jakub Jelinek  <jakub@redhat.com>

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

2005-06-30  Steven Bosscher  <stevenb@suse.de>

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

2005-06-28  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-06-28  Paul Brook  <paul@codesourcery.com>

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

2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

2005-06-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>

	* all files: Update FSF address in copyright headers.

2005-06-23  Jason Merrill  <jason@redhat.com>

	PR c++/19317
	* semantics.c (simplify_aggr_init_expr): Use
	CALL_EXPR_RETURN_SLOT_OPT, not CALL_EXPR_HAS_RETURN_SLOT_ADDR.

2005-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-06-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

2005-06-17  Geoffrey Keating  <geoffk@apple.com>

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

2005-06-16  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-06-15  Nathan Sidwell  <nathan@codesourcery.com>

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

	* Make-lang.in: Reformat some long lines.
	(gt-cp-rtti.h): New target.
	(cp/rtti.o): Add dependency.
	* config-lang.in (gtfiles): Add cp/rtti.c.
	* cp-tree.h (CPTI_TI_DESC_TYPE, CPTI_BLTN_DESC_TYPE,
	CPTI_PTR_DESC_TYPE, CPTI_ARY_DESC_TYPE, CPTI_FUNC_DESC_TYPE,
	CPTI_ENUM_DESC_TYPE, CPTI_CLASS_DESC_TYPE,
	CPTI_SI_CLASS_DESC_TYPE, CPTI_VMI_CLASS_DESC_TYPE,
	CPTI_PTM_DESC_TYPE, CPTI_BASE_DESC_TYPE): Remove.
	(ti_desc_type_node, bltn_desc_type_node, ptr_desc_type_node,
	ary_desc_type_node, func_desc_type_node, enum_desc_type_node,
	class_desc_type_node, si_class_desc_type_node,
	vmi_class_desc_type_node, ptm_desc_type_node,
	base_desc_type_node): Remove.
	* decl.c: Adjust documentation of global trees.
	* rtti.c (TINFO_PSEUDO_TYPE, TINFO_VTABLE_DECL,
	TINFO_REAL_NAME): Remove.
	(struct tinfo_s): New.
	(enum tinfo_kind): New.
	(tinfo_descs): New.
	(get_tinfo_decl): Adjust use of tinfo descriptor.
	(tinfo_base_init, generic_initializer, ptr_initializer,
	ptm_initializer, class_initializer): Likewise.
	(get_pseudo_ti_init): Take descriptor index. Adjust.
	(create_pseudo_type_info): Likewise.
	(get_pseudo_ti_desc): Return descriptor index. Adjust.
	(create_tinfo_types): Adjust use of create_pseudo_type_info.
	(emit_tinfo_decl): Adjust use of tinfo descriptor.

2005-06-14  Roger Sayle  <roger@eyesopen.com>

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

2005-06-13  Geoffrey Keating  <geoffk@apple.com>

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

2005-06-13  Nathan Sidwell  <nathan@codesourcery.com>

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

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

	* parser (cp_parser_skip_to_end_of_block_or_statement): Cleanup.

2005-06-12  Roger Sayle  <roger@eyesopen.com>

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

2005-06-10  Aldy Hernandez  <aldyh@redhat.com>

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

2005-06-08  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-06-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

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

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

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

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

2005-06-06  Jakub Jelinek  <jakub@redhat.com>

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

2005-06-06  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

2005-06-06  Hans-Peter Nilsson  <hp@axis.se>

	* config-lang.in (target_libs): Remove target-gperf.

2005-06-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-06-03  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-06-02  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

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

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

2005-05-31  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-05-30  Mark Mitchell  <mark@codesourcery.com>

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

2005-05-30  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-05-28  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-05-27  Mark Mitchell  <mark@codesourcery.com>

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

2005-05-27  Ian Lance Taylor  <ian@airs.com>

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

2005-05-27  Roger Sayle  <roger@eyesopen.com>
	    Giovanni Bajo  <giovannibajo@gcc.gnu.org>

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

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

2005-05-27  Nathan Sidwell  <nathan@codesourcery.com>

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

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

2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-05-26  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-05-25  Richard Henderson  <rth@redhat.com>

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

2005-05-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-05-25  DJ Delorie  <dj@redhat.com>

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

2005-05-24  Ziemowit Laski  <zlaski@apple.com>

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

2005-05-24  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-05-19  Jakub Jelinek  <jakub@redhat.com>

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

2005-05-19  Kazu Hirata  <kazu@cs.umass.edu>

	* parser.c: Fix comment typos.

2005-05-18  Geoffrey Keating  <geoffk@apple.com>

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

2005-05-17  H.J. Lu  <hongjiu.lu@intel.com>

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

2005-05-17  Ziemowit Laski  <zlaski@apple.com>
	    Mike Stump  <mrs@apple.com>

	Yet more Objective-C++...

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

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

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

2005-05-18  Jan Hubicka  <jh@suse.cz>

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

2005-05-17  Jakub Jelinek  <jakub@redhat.com>

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

2005-05-16  Richard Henderson  <rth@redhat.com>

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

2005-05-12  Ian Lance Taylor  <ian@airs.com>

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

2005-05-09  Mark Mitchell  <mark@codesourcery.com>

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

2005-05-08  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-05-07  Richard Sandiford  <rsandifo@redhat.com>

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

2005-05-07  Kazu Hirata  <kazu@cs.umass.edu>

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

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

2005-05-06  Kazu Hirata  <kazu@cs.umass.edu>

	* decl2.c (spew_debug): Remove.

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

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

2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-05-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-05-05  Kazu Hirata  <kazu@cs.umass.edu>

	* pt.c: Fix a comment typo.

2005-05-04  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-05-03  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>

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

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

2005-05-02  Paolo Bonzini  <bonzini@gnu.org>

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

2005-05-02  Michael Matz  <matz@suse.de>

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

2005-04-25  Ian Lance Taylor  <ian@airs.com>

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

2005-04-25  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-04-24  Jakub Jelinek  <jakub@redhat.com>

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

2005-04-12  Markus F.X.J. Oberhumer  <markus@oberhumer.com>

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

2005-04-24  Ian Lance Taylor  <ian@airs.com>

	* cp-tree.def (USING_STMT): Change class to tcc_statement.
	(TRY_BLOCK, EH_SPEC_BLOCK, HANDLER, CLEANUP_STMT): Likewise.
	(IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT): Likewise.
	(BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.

2005-04-23  DJ Delorie  <dj@redhat.com>

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

2005-04-22  Per Bothner  <per@bothner.com>

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

2005-04-22  Alexandre Oliva  <aoliva@redhat.com>

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

2005-04-21  Kazu Hirata  <kazu@cs.umass.edu>

	* cp-tree.h (THROW_NAME, AUTO_VTABLE_NAME, AUTO_TEMP_FORMAT,
	VTABLE_BASE, VTABLE_NAME_PREFIX, STATIC_NAME_FORMAT): Remove.

2005-04-21  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-04-20  Ian Lance Taylor  <ian@airs.com>

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

2005-04-18  Kazu Hirata  <kazu@cs.umass.edu>

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

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

2005-04-17  Ian Lance Taylor  <ian@airs.com>

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

2005-04-16  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-17  Kazu Hirata  <kazu@cs.umass.edu>

	* cp-tree.h (LOOKUP_GLOBAL): Remove.
	(LOOKUP_ONLYCONVERTING, DIRECT_BIND, LOOKUP_NO_CONVERSION,
	LOOKUP_DESTRUCTOR, LOOKUP_NO_TEMP_BIND, LOOKUP_PREFER_TYPES,
	LOOKUP_PREFER_NAMESPACES, LOOKUP_CONSTRUCTOR_CALLABLE): Adjust
	their values.

2005-04-15  Richard Henderson  <rth@redhat.com>

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

2005-04-15  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-04-14  Kazu Hirata  <kazu@cs.umass.edu>

	* cp-tree.h (SET_TMPL_ARG, ENUM_TI_TEMPLATE, ENUM_TI_ARGS,
	CLASSTYPE_TEMPLATE_LEVEL): Remove.

2005-04-11  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-09  Kazu Hirata  <kazu@cs.umass.edu>

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

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

	* cp-tree.h (EXCEPTION_CLEANUP_NAME, B_SET, B_CLR, B_TST,
	CONV_STATIC_CAST): Remove.

	* pt.c (UNIFY_ALLOW_MAX_CORRECTION): Remove.

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

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

2005-04-08  Ian Lance Taylor  <ian@airs.com>

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

2005-04-08  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-04-06  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-04-06  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-06  Jason Merrill  <jason@redhat.com>

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

2005-04-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-05  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-04  Mark Mitchell  <mark@codesourcery.com>

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

2005-04-04  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-04-04  Jan Hubicka  <jh@suse.cz>

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

2005-04-03  Kazu Hirata  <kazu@cs.umass.edu>

	* pt.c: Fix comment typos.

2005-04-03  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-04-01  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-03-31  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-03-31  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2005-03-31  Jan Hubicka  <jh@suse.cz>

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

2005-03-29  Richard Henderson  <rth@redhat.com>

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

2005-03-24  Geoffrey Keating  <geoffk@apple.com>

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

2005-03-24  Steven Bosscher  <stevenb@suse.de>

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

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

2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-03-22  Mark Mitchell  <mark@codesourcery.com>

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

2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-03-22  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-03-21  Paolo Carlini  <pcarlini@suse.de>

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

2005-03-21  Paolo Carlini  <pcarlini@suse.de>

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

2005-03-21  Joseph S. Myers  <joseph@codesourcery.com>

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

2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-03-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-03-18  Dale Johannesen <dalej@apple.com>

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

2005-03-18  Paolo Carlini  <pcarlini@suse.de>

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

2005-03-17  Paolo Carlini  <pcarlini@suse.de>

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

2005-03-17  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-03-14  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-03-13  Mark Mitchell  <mark@codesourcery.com>

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

2005-03-11  Per Bothner  <per@bothner.com>

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

2005-03-10  Jakub Jelinek  <jakub@redhat.com>

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

2005-03-09  Mark Mitchell  <mark@codesourcery.com>

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

2005-03-09  Paolo Carlini  <pcarlini@suse.de>

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

2005-03-08  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

2005-03-07  Mark Mitchell  <mark@codesourcery.com>

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

2005-03-05  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-03-02  Alexandre Oliva  <aoliva@redhat.com>

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

2005-03-01  Per Bothner  <per@bothner.com>

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

2005-03-01  Nathan Sidwell  <nathan@codesourcery.com>

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

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

2005-02-27  Jakub Jelinek  <jakub@redhat.com>

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

2005-02-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-02-24  Jakub Jelinek  <jakub@redhat.com>

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

2005-02-23  Mark Mitchell  <mark@codesourcery.com>

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

2005-02-23  Alexandre Oliva  <aoliva@redhat.com>

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

2005-02-23  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-02-22  Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

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

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

2005-02-21  Douglas Gregor  <dgregor@cs.indiana.edu>

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

2005-02-20  Zack Weinberg  <zack@codesourcery.com>

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

2005-02-18  Richard Henderson  <rth@redhat.com>

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

2005-02-19  Jakub Jelinek  <jakub@redhat.com>

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

2005-01-20  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

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

2005-02-18  Jakub Jelinek  <jakub@redhat.com>

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

2005-02-17  Alexandre Oliva  <aoliva@redhat.com>

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

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

2005-02-15  Alexandre Oliva  <aoliva@redhat.com>

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

2005-02-15  Alexandre Oliva  <aoliva@redhat.com>

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

2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

2005-02-14  Alexandre Oliva  <aoliva@redhat.com>

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

2005-02-14  Nathan Sidwell  <nathan@codesourcery.com>

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

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

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

2005-02-11  Richard Henderson  <rth@redhat.com>

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

2005-02-10  Mark Mitchell  <mark@codesourcery.com>

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

2005-02-11  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-02-09  Mark Mitchell  <mark@codesourcery.com>

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

	* parser.c (cp_parser_unqualified_id): Initialize type_decl.

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

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

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

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

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

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

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

2005-02-08  Kazu Hirata  <kazu@cs.umass.edu>

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

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

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

2005-02-03  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

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

2005-02-02  Matt Austern  <austern@apple.com>

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

2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-02-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-01-31  Mark Mitchell  <mark@codesourcery.com>

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

2005-02-01  Alexandre Oliva  <aoliva@redhat.com>

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

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

2005-01-31  Mark Mitchell  <mark@codesourcery.com>

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

2005-01-31  Mike Stump  <mrs@apple.com>

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

2005-01-31  Mark Mitchell  <mark@codesourcery.com>

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

2005-01-30  Mark Mitchell  <mark@codesourcery.com>

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

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

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

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

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

2005-01-28  Mark Mitchell  <mark@codesourcery.com>

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

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

2005-01-27  Steven Bosscher  <stevenb@suse.de>

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

2005-01-26  J"orn Rennecke <joern.rennecke@st.com>

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

2005-01-25  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* decl.h (debug_bindings_indentation): Remove.

2005-01-23  Kazu Hirata  <kazu@cs.umass.edu>

	* typeck.c: Fix a comment typo.

2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>

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

2005-01-20  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-01-19  Matt Austern  <austern@apple.com>

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

2005-01-19  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-01-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>

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

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

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

2005-01-18  Andrew Pinski  <pinskia@physics.uc.edu>

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

2005-01-18  Kazu Hirata  <kazu@cs.umass.edu>

	* Make-lang.in, call.c, cvt.c, init.c, rtti.c, tree.c,
	typeck2.c: Update copyright.

2005-01-16  Kazu Hirata  <kazu@cs.umass.edu>

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

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

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

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

2005-01-15  Jakub Jelinek  <jakub@redhat.com>

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

2005-01-12  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

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

2005-01-10  Kazu Hirata  <kazu@cs.umass.edu>

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

2005-01-07  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-01-06  Mark Mitchell  <mark@codesourcery.com>

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

2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-01-06  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>

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

2005-01-06  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-01-05  Nathan Sidwell  <nathan@codesourcery.com>

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

2005-01-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

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

2005-01-01  Steven Bosscher  <stevenb@suse.de>

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