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 Ávila de Espíndola  <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 Espíndola  <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 Ávila de Espíndola  <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.



Copyright (C) 2006 Free Software Foundation, Inc.

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