2009-07-22  Release Manager

	* GCC 4.4.1 released.

2009-07-14  Jason Merrill  <jason@redhat.com>

	PR c++/40740
	* semantics.c (perform_koenig_lookup): Handle empty template args.

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

	PR c++/36628
	* tree.c (rvalue): Use lvalue_or_rvalue_with_address_p.

	PR c++/37206
	* cp-tree.h (enum cp_lvalue_kind_flags): Add clk_rvalueref.
	* tree.c (lvalue_p_1): Return it.  Remove
	treat_class_rvalues_as_lvalues parm.
	(real_lvalue_p): Disallow pseudo-lvalues here.
	(lvalue_or_rvalue_with_address_p): New fn.
	* call.c (initialize_reference): Use it instead of real_lvalue_p.

	PR c++/40689
	* init.c (build_new_1): Handle initializer list as array initializer.
	(build_vec_init): Likewise.
	* typeck.c (cp_build_modify_expr): Likewise.
	* typeck2.c (process_init_constructor_array): Error rather than abort
	if too many initializers.

2009-07-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/40502
	* error.c (cp_print_error_function): Check for NULL block.

2009-07-09  Dodji Seketeli  <dodji@redhat.com>

	PR c++/40684
	* pt.c (type_unification_real): Use tsubst_template_arg instead
	of tsubst to substitute default template arguments.

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

	PR c++/35828
	* pt.c (tsubst_decl): Don't abort if we didn't change anything
	in a TEMPLATE_DECL's args.

	PR c++/37816
	* decl.c (build_enumerator): Don't add enumerators for a
	scoped enum to the enclosing class.

	PR c++/40639
	* decl.c (start_enum): Allow dependent underlying type.

	PR c++/40633
	* decl.c (finish_enum): Finish scope even in a template.

2009-07-04  Jason Merrill  <jason@redhat.com>

	PR c++/40619
	* tree.c (cp_tree_equal) [PARM_DECL]: Don't check parm index.

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

	PR c++/40595
	* pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
	EXPR_PACK_EXPANSION.

2009-06-24  Jason Merrill  <jason@redhat.com>

	PR c++/40342
	* decl.c (decls_match): Check DECL_TI_TEMPLATE too.
	* class.c (resolve_address_of_overloaded_function): Fix typo.

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

	PR c++/40381
	* decl2.c (mark_used): Return after complaining about deleted fn.

2009-06-08  Jason Merrill  <jason@redhat.com>

	* parser.c (cp_parser_type_id_1): 'auto' type is ok with a
	late-specified return type.

2009-06-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/40373
	* call.c (check_dtor_name): Return false even if
	get_type_value (name) is error_mark_node.

	PR c++/40370
	PR c++/40372
	* parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
	on error_mark_node.  Check for VLAs outside of function context
	before check whether to wrap bounds into a NOP_EXPR with
	TREE_SIDE_EFFECTS.

2009-06-02  Jason Merrill  <jason@redhat.com>

	PR c++/40308
	PR c++/40311
	* typeck.c (cp_build_modify_expr): Always pass init-lists to the
	conversion code.
	* call.c (implicit_conversion): Allow init-list conversion to scalar
	during direct-initialization, too.  Mark the conversion bad if it
	has too many levels of braces.
	(convert_like_real): And give a helpful error.

	PR c++/40306
	PR c++/40307
	* decl.c (cp_finish_decl): Handle auto deduction from ().
	* typeck.c (build_x_indirect_ref): Handle dereferencing an operand
	with dependent type that is known to be a pointer.

2009-05-27  Jason Merrill  <jason@redhat.com>

	* call.c (implicit_conversion): Handle conversion from
	initializer-list to scalar.
	(convert_like_real): Likewise.  Avoid crashing on list
	initialization with bad conversions.

2009-05-22  Jason Merrill  <jason@redhat.com>

	PR c++/38064
	* typeck.c (cp_build_binary_op): Allow ENUMERAL_TYPE in
	arithmetic comparisons.
	(cp_common_type): Handle scoped enums.

2009-05-16  Jason Merrill  <jason@redhat.com>

	PR c++/40139
	* semantics.c (finish_id_expression): Fix logic.

2009-05-06  Dodji Seketeli  <dodji@redhat.com>

	PR c++/17395
	* pt.c (tsubst_copy) <case PARM_DECL>: We don't want to tsubst the
	whole list of PARM_DECLs, just the current one.

2009-05-05  Jakub Jelinek  <jakub@redhat.com>

	PR c++/40013
	* pt.c (tsubst): If magic NOP_EXPR with side-effects has no type,
	set it from its operand's type after tsubst_expr.

2009-04-23  Dodji Seketeli  <dodji@redhat.com>

	PR c++/38228
	* pt.c (unify): Do not allow the result of a template argument
	deduction to be a METHOD_TYPE.
	* cvt.c (cp_convert): Report a meaningful error for non-valid use
	of pointer to member functions during conversions.
	* call.c (build_new_op): Report a meaningful error for non-valid
	use of pointer to member functions in binary expressions.
	* typeck.c (invalid_nonstatic_memfn_p): Do not crash when EXPR is
	NULL;

2009-04-22  Dodji Seketeli  <dodji@redhat.com>

	PR c++/39639
	* parser.c (cp_parser_template_argument_list): Display an error
	when an ellipsis is not preceded by a parameter pack. Also, warn
	about variadic templates usage without -std=c++0x.

2009-04-21  Release Manager

	* GCC 4.4.0 released.

2009-04-14  Jason Merrill  <jason@redhat.com>

	PR c++/39763
	* name-lookup.c (pushdecl_maybe_friend): Avoid all warnings
	about shadowing by tentative parms.

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

	PR c++/39480
	* call.c (build_over_call): Don't call memcpy if the target is
	the same as the source.

	PR c++/39750
	* pt.c (uses_template_parms): Handle CONSTRUCTOR.

2009-04-12  Jason Merrill  <jason@redhat.com>

	PR c++/39742
	* call.c (joust): Don't crash on variadic fn.

2009-04-10  H.J. Lu  <hongjiu.lu@intel.com>

	Backport from mainline:
	2009-04-10  Jason Merrill  <jason@redhat.com>

	PR c++/28301
	* parser.c (cp_parser_skip_to_end_of_block_or_statement): Return
	if we see a close brace without an open brace.

2009-04-08  Dodji Seketeli  <dodji@redhat.com>

	PR c++/39637
	* parser.c (cp_parser_enumerator_definition): Make sure the
	initializer of the enumerator doesn't contain any bare parameter pack.

2009-04-07  Jason Merrill  <jason@redhat.com>

	PR c++/34691
	* name-lookup.c	(merge_functions): Keep multiple extern "C" functions.
	* call.c (joust): Complain about mismatched default arguments
	in extern "C" functions.
	* class.c (resolve_address_of_overloaded_function): Handle multiple
	extern "C" functions.
	* pt.c (resolve_overloaded_unification): Likewise.

	* decl.c (grokdeclarator): Reject pointer to qualified function
	type.

	PR c++/37806, core issue 547
	* typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals
	to a typedef.
	* tree.c (cp_build_qualified_type_real): Don't apply restrict to a 
	function type.
	* decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG.
	* decl.c (groktypename): Add is_template_arg parameter.
	(grokdeclarator): Allow function cv-quals on a template type arg.
	* parser.c (cp_parser_new_type_id, cp_parser_type_id): Add
	is_template_arg argument in calls to groktypename.
	* cp-tree.h: Adjust prototype.
	* error.c (dump_type_prefix, dump_type_suffix): Fix plain 
	FUNCTION_TYPE printing.
	
2009-04-06  Jason Merrill  <jason@redhat.com>

	PR c++/35146
	* pt.c (fn_type_unification): For DEDUCE_EXACT check that
	the deduced template arguments give us the parameter types
	we're looking for.

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

	C++ DR 613
	* semantics.c (finish_non_static_data_member): Allow such references
	without an associated object in sizeof/decltype/alignof.

2009-04-03  Jason Merrill  <jason@redhat.com>

	PR c++/39608
	* semantics.c (finish_id_expression): Don't assume a dependent
	member of the current instantiation isn't a valid integral
	constant expression.  Check dependent_scope_p.
	* pt.c (dependent_scope_p): Check TYPE_P.
	(tsubst_copy): If args is null, just return.

2009-04-02  Jason Merrill  <jason@redhat.com>

	* mangle.c (write_expression): Mangle dependent name as
	source-name.

	PR c++/38030, 38850, 39070
	* pt.c (type_dependent_expression_p_push): New fn.
	(tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the
	substitution makes the call non-dependent.  Preserve koenig_p.
	* parser.c (cp_parser_postfix_expression): Only do arg-dep lookup
	for non-dependent calls.
	* semantics.c (finish_call_expr): Revert earlier changes.
	* cp-tree.h: Revert change to finish_call_expr prototype.

2009-03-30  Jakub Jelinek  <jakub@redhat.com>

	Revert

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

	PR c++/35652
	* typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.

2009-03-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/39554
	* parser.c (cp_parser_postfix_expression): Don't call
	warning_if_disallowed_function_p.

2009-03-27  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR c++/38638
	* parser.c (cp_parser_elaborated_type_specifier): If we have a
	typename tag and don't have either a TYPE_DECL or a
	TEMPLATE_ID_EXPR, set the type to NULL.

2009-03-27  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/37647
	* decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class
	scope.

2009-03-27  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29727
	* decl.c (check_array_designated_initializer): Handle error_mark_node.

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

	PR c++/35652
	* typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum.

2009-03-26  Andrew Haley  <aph@redhat.com>

	PR C++/39380
	* decl2.c (possibly_inlined_p): If java exceptions are in use
	don't inline a decl unless it is explicitly marked inline.
	* lex.c: (pragma_java_exceptions): New variable.
	(handle_pragma_java_exceptions): Set pragma_java_exceptions.
	* cp-tree.h (pragma_java_exceptions): Declare new variable.

2009-03-24  Jason Merrill  <jason@redhat.com>

	PR c++/28274
	* name-lookup.c (pushdecl_maybe_friend): Check default args later.

2009-03-23  Jakub Jelinek  <jakub@redhat.com>

	PR c/39495
	* semantics.c (handle_omp_for_class_iterator): Swap cond operands and
	code if iter is the second operand.
	* parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p
	argument.  If it is set, don't build the toplevel expression with
	build_x_binary_op, but build2.
	(cp_parser_assignment_expression,  cp_parser_omp_for_incr): Adjust
	callers.
	(cp_parser_omp_for_cond): Don't assume the first operand of the
	comparison must be decl.

2009-03-23  Jason Merrill  <jason@redhat.com>

	PR c++/37729
	* pt.c (make_fnparm_pack): Split out from...
	(instantiate_decl): ...here.
	(tsubst_pack_expansion): Handle being called in a late-specified
	return type.

	PR c++/39526
	* name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing
	a parm with a parm.

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

	PR c++/28879
	* parser.c (cp_parser_direct_declarator): In a template, wrap 
	non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set.
	* pt.c (tsubst): Preserve it in a partial instantiation.
	(dependent_type_p_r): Don't check value_dependent_expression_p.
	* decl.c (compute_array_index_type): Don't check
	value_dependent_expression_p if TREE_SIDE_EFFECTS.

	C++ core issue 703
	* typeck2.c (check_narrowing): Don't complain about loss of 
	precision when converting a floating-point constant.

2009-03-19  Jakub Jelinek  <jakub@redhat.com>

	PR c/39495
	* parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL.
	(cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond.

2009-03-18  Jakub Jelinek  <jakub@redhat.com>

	* parser.c (struct cp_token): Reorder fields for 64-bit hosts.
	(eof_token): Adjust.

2009-03-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/39425
	* parser.c (cp_parser_explicit_specialization): Don't skip the
	rest of the specialization when begin_specialization returns
	false.

2009-03-17  Jason Merrill  <jason@redhat.com>

	* decl.c (grokfndecl): Set DECL_CONTEXT on parms.
	(duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
	* pt.c (check_explicit_specialization): Likewise.
	(tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
	local specialization.
	* tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
	* decl2.c (parm_index): New fn.
	* semantics.c (finish_decltype_type): Don't use describable_type.
	* mangle.c (write_expression): Likewise.  Mangle ALIGNOF_EXPR.
	Give a sorry for unsupported codes rather than crash.  Mangle
	conversions with other than 1 operand.  New mangling for PARM_DECL.
	* operators.def (ALIGNOF_EXPR): Mangle as "az".

2009-03-17  Jing Yu  <jingyu@google.com>

	PR middle-end/39378
	* method.c (use_thunk): Change is_thunk from crtl to cfun.

2009-03-17  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/39475
	* semantics.c (check_trait_type): New.
	(finish_trait_expr): Use it.

2009-03-17  Jakub Jelinek  <jakub@redhat.com>

	* name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs
	instead of calling imported_module_or_decl debug hook if
	building_stmt_tree ().
	* cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand
	is a NAMESPACE_DECL.

	PR debug/37890
	* name-lookup.c (do_namespace_alias): Don't call global_decl debug
	hook at function scope.

	PR debug/39471
	* cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME
	on IMPORTED_DECL.

2009-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/39371
	* semantics.c (finish_switch_cond): Don't call get_unwidened.
	* decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument
	instead of TREE_TYPE (cond).

2009-03-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/39060
	* parser.c (cp_parser_late_parsing_default_args): Continue
	the loop when cp_parser_assignment_expression returns
	error_mark_node.

2009-03-07  Jason Merrill  <jason@redhat.com>

	PR c++/39367
	* init.c (build_new_1): Don't use a VLA type.
	(build_vec_init): Handle getting a pointer for BASE.

2009-03-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/37520
	* cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL
	when mangling symbols.

2009-03-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/33492
	* error.c (dump_expr): Don't try to print THROW_EXPRs in full.

2009-03-06  Alexandre Oliva  <aoliva@redhat.com>

	* decl.c (record_builtin_java_type): Use canonicalized integer
	types.

2009-03-04  Jason Merrill  <jason@redhat.com>

	PR c++/38908
	* class.c (is_really_empty_class): New fn.
	* cp-tree.h: Declare it.
	* cp-objcp-common.c (cp_expr_size): Use it.

	PR c++/13549
	* semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR.
	* parser.c (cp_parser_postfix_expression): Call it for 
	TEMPLATE_ID_EXPR.
	* tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR.
	(get_first_fn): Likewise.

	PR c++/9634
	PR c++/29469
	PR c++/29607
	Implement DR 224.
	* decl.c (make_typename_type): Do look inside currently open classes.
	* parser.c (cp_parser_lookup_name): Likewise.
	(cp_parser_template_name): Likewise.
	* pt.c (dependent_scope_p): New function.
	* cp-tree.h: Declare it.
	* class.c (currently_open_class): Return fast if T isn't a class.

2009-02-26  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/37789
	* parser.c (cp_parser_mem_initializer): Return error_mark_node
	if cp_parser_mem_initializer_id returns error_mark_node.

2009-02-24  Richard Guenther  <rguenther@suse.de>

	PR c++/39242
	* pt.c (instantiate_decl): Do not instantiate extern, non-inline
	declared functions.

2009-02-23  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/36411
	* pt.c (coerce_template_template_parms): Return 0 if parameter
	is error_mark_node.

2009-02-23  Jason Merrill  <jason@redhat.com>

	* pt.c (unify): Call maybe_adjust_types_for_deduction when
	deducing from an initializer list.

2009-02-20  Jason Merrill  <jason@redhat.com>

	PR c++/39225
	* decl.c (grokdeclarator): Handle ~identifier.

2009-02-19  Jakub Jelinek  <jakub@redhat.com>

	PR target/39175
	* decl2.c (determine_visibility): If visibility changed and
	DECL_RTL has been already set, call make_decl_rtl to update symbol
	flags.

2009-02-19  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/39188
	* cp-tree.h (maybe_commonize_var): New.

	* decl.c (maybe_commonize_var): Make it extern.

	* decl2.c (finish_anon_union): Call maybe_commonize_var.

2009-02-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR c++/39219
	* parser.c (cp_parser_enum_specifier): Apply all attributes.

2009-02-18  Jason Merrill  <jason@redhat.com>

	* cfns.h: Tweak pathname for cfns.gperf.

2009-02-13  Jason Merrill  <jason@redhat.com>

	PR c++/39070
	* semantics.c (finish_call_expr): Change koenig_p parm to int.
	If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates.
	* cp-tree.h: Adjust prototype.
	* pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1.

2009-02-12  Jason Merrill  <jason@redhat.com>

	PR c++/38950
	* pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type.

2009-02-11  Jason Merrill  <jason@redhat.com>

	PR c++/39153
	* decl2.c (cp_write_global_declarations): 
	Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.

	PR c++/30111
	* init.c (build_value_init_noctor): Split out from...
	(build_value_init): ...here.
	(expand_aggr_init_1): Handle value-initialization.
	* cp-tree.h: Add declaration.
	* class.c (type_has_user_provided_constructor): 
	Handle non-class arguments.

2009-02-10  Jason Merrill  <jason@redhat.com>

	PR c++/38649
	* class.c (defaultable_fn_p): Handle ... properly.

	PR c++/36744
	* tree.c (lvalue_p_1): Condition rvalue ref handling on
	treat_class_rvalues_as_lvalues, too.

2009-02-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/34397
	* typeck.c (build_x_array_ref): New.
	* cp-tree.h: Declare it.
	* pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF.

2009-02-09  Jason Merrill  <jason@redhat.com>

	PR c++/39109
	* semantics.c (simplify_aggr_init_expr): Do zero-initialization here.
	* init.c (build_value_init): Not here. Don't build a TARGET_EXPR.
	* tree.c (get_target_expr): Handle AGGR_INIT_EXPR.
	* cp-gimplify.c (cp_gimplify_init_expr): Remove special handling
	for build_value_init TARGET_EXPR.
	* cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro.

2009-02-06  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/35147
	PR c++/37737
	* cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH.

2009-02-04  Jakub Jelinek  <jakub@redhat.com>

	PR c++/39095
	* operators.def: Use COMPONENT_REF code for ->/pt operator again,
	remove ./dt operator.
	* mangle.c (write_expression): Handle COMPONENT_REF after handling
	ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
	write_string ("dt") instead of using operators.def.

2009-02-03  Jason Merrill  <jason@redhat.com>

	* typeck.c (cp_build_unary_op): Only complain about taking address
	of main if pedantic.

2009-02-03  Jakub Jelinek  <jakub@redhat.com>

	PR inline-asm/39059
	* parser.c (cp_parser_primary_expression): Reject FIXED_CSTs.

	PR c++/39056
	* typeck2.c (digest_init_r): Don't call process_init_constructor
	for COMPLEX_TYPE.

2009-02-03  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/36897
	* pt.c (convert_nontype_argument_function): Expect expr to be an
	ADDR_EXPR.

	PR c++/37314
	* typeck.c (merge_types): Call resolve_typename_type if only
	one type is a typename.

2009-02-02  Jason Merrill  <jason@redhat.com>

	PR c++/39054
	* parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node 
	in BIT_NOT_EXPR.

2009-02-01  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/39053
        * parser.c (cp_parser_pure_specifier): If there are no tokens left
        do not call cp_lexer_consume_token.

2009-01-30  Jakub Jelinek  <jakub@redhat.com>

	PR c++/39028
	* parser.c (cp_parser_already_scoped_statement): Handle __label__
	declarations.

2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/33465
	* error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR.

2009-01-30  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/38655
	* error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE.

2009-01-29  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck.c (invalid_nonstatic_memfn_p): Use
	DECL_NONSTATIC_MEMBER_FUNCTION_P.

2009-01-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/37554
	* call.c (build_over_call): If convert_for_arg_passing returns
	error_mark_node unconditionally return it.

2009-01-22  Adam Nemet  <anemet@caviumnetworks.com>

	* class.c (check_field_decls): Also inherit packed for bitfields
	regardless of their type.

2009-01-22  Dodji Seketeli  <dodji@redhat.com>

	PR c++/38930
	* decl2.c (grokfield): Reverting changes of PR c++/26693
	(save_template_attributes): Likewise.
	* decl.c (grokdeclarator): Likewise.
	* name-lookup.c (pushdecl_maybe_friend): Likewise.
	* cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise.
	(append_type_to_template_for_access_check): Likewise.
	* semantics.c (check_accessibility_of_qualified_id): Likewise.
	* pt.c (instantiate_class_template, instantiate_template ): Likewise.
	(tsubst): Likewise.
	(resolve_type_name_type): Likewise.
	(append_type_to_template_for_access_check): Likewise.

2009-01-21  Dodji Seketeli  <dodji@redhat.com>

	PR c++/26693
	* decl2.c (grokfield): when a typedef appears in a
	class, create the typedef variant type node for it.
	(save_template_attributes): Creating typedef variant type node
	 here is now useless.
	* decl.c (grokdeclarator): If the typedef'ed struct/class was
	anonymous, set the proper type name to all its type variants.
	* name-lookup.c (pushdecl_maybe_friend): Reuse the
	set_underlying_type function to install typedef variant types.
	* cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor
	macro.
	(append_type_to_template_for_access_check): New entry points.
	* semantics.c (check_accessibility_of_qualified_id):
	When a typedef that is a member of a class appears in a template,
	add it to the template. It will be ...
	* pt.c (instantiate_class_template, instantiate_template ): ... access
	checked at template instantiation time.
	(tsubst): Handle the case of being called with NULL args.
	(resolve_type_name_type): The type name should be the name of the
	main type variant.
	(append_type_to_template_for_access_check): New entry point.

2009-01-19  Jason Merrill  <jason@redhat.com>

	PR c++/23287
	* parser.c (cp_parser_unqualified_id): In a template,
	accept ~identifier.
	* typeck.c (lookup_destructor): Handle IDENTIFIER_NODE.

2009-01-16  Jason Merrill  <jason@redhat.com>

	PR c++/38877
	* tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF.
	* init.c (build_new): Don't call describable_type unless we
	have an auto.

	PR c++/29470
	* pt.c (tsubst_decl) [USING_DECL]: Propagate access flags.

	PR c++/38579
	* search.c (protected_accessible_p): N doesn't vary.

2009-01-15  Jason Merrill  <jason@redhat.com>

	PR c++/38850
	* pt.c (tsubst_copy_and_build): Tell finish_call_expr to
	accept hidden friends.

2009-01-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR C++/29388
	* decl.c (grokdeclarator): Check for a non namespace/class context.

2009-01-15  Jason Merrill  <jason@redhat.com>

	PR c++/36334
	PR c++/37646
	* tree.c (lvalue_p_1): Handle BASELINK.  A COMPONENT_REF to
	a function isn't necessarily an lvalue. Take tree, not const_tree.
	(lvalue_p, real_lvalue_p): Take tree, not const_tree.
	* typeck.c (lvalue_or_else): Likewise.
	* cp-tree.h: Adjust prototypes.

2009-01-15  Steve Ellcey  <sje@cup.hp.com>

	PR c++/38357
	* pt.c (tsubst): Check for NULL args.

2009-01-15  Dodji Seketeli  <dodji@redhat.com>

	PR c++/38636
	* name-lookup.c (pushtag): Don't create members to types that are not
	being created.

2009-01-14  Nick Clifton  <nickc@redhat.com>

	PR c++/37862
	* parser.c: Pass cp_id_kind computed in
	cp_parser_postfix_dot_deref_expression to
	cp_parser_primary_expression.

2009-01-13  Jakub Jelinek  <jakub@redhat.com>

	PR c++/38795
	* tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR,
	STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same
	as CAST_EXPR.

2009-01-12  Jason Merrill  <jason@redhat.com>
	    Steve Ellcey  <sje@cup.hp.com>

	PR c++/35109
	* name-lookup.c (lookup_name_real): Keep looking past a hidden 
	binding.

2009-01-12  Dodji Seketeli  <dodji@redhat.com>

	PR c++/36019
	* pt.c (parameter_of_template_p): New function.
	* cp-tree.h: Declare it.
	* name-lookup.c (binding_to_template_parms_of_scope_p): New
	function.
	(outer_binding): Take template parameters in account when looking for
	a name binding.

2009-01-12  Jason Merrill  <jason@redhat.com>

	PR c++/31488
	* tree.c (pod_type_p): Return 1 for structs created by the back end.

2009-01-12  Jakub Jelinek  <jakub@redhat.com>

	PR c/32041
	* parser.c (cp_parser_builtin_offsetof): Allow `->' in
	offsetof member-designator, handle it as `[0].'.

	PR c++/38794
	* decl.c (start_function): If grokdeclarator hasn't returned
	FUNCTION_DECL nor error_mark_node, issue diagnostics.

2009-01-11  Jakub Jelinek  <jakub@redhat.com>

	PR c++/36254
	* cp-gimplify.c (genericize_if_stmt): Renamed from ...
	(gimplify_if_stmt): ... this.
	(cp_gimplify_expr): Don't handle IF_STMT here.
	(cp_genericize_r): Call genericize_if_stmt for IF_STMT.

2009-01-10  Andrew Pinski  <pinskia@gmail.com>

	PR c++/38648
	* typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.

	PR c++/36695
	* typeck2.c (build_functional_cast): Check for reference type and NULL
	PARMS.

2009-01-09  Steve Ellcey  <sje@cup.hp.com>

	* typeck.c (cp_build_unary_op): Check for ERROR_MARK.

2009-01-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/35335
	* error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.

2009-01-09  John F. Carr  <jfc@mit.edu>

	PR c++/37877
	* parser.c (cp_parser_class_specifier): Clear
	parser->in_unbraced_linkage_specification_p while parsing class
	specifiers.

2009-01-07  Jakub Jelinek  <jakub@redhat.com>

	PR c++/38725
	* semantics.c (finish_goto_stmt): Convert destination to
	void *.

2009-01-06  Jason Merrill  <jason@redhat.com>

	PR c++/35297
	PR c++/35477
	PR c++/35784
	PR c++/36846
	PR c++/38276
	* pt.c (check_default_tmpl_args): Don't complain about
	out-of-order parameter packs in the enclosing class
	or parameter packs after default args.
	(coerce_template_parms): If we have more than one
	parameter pack, don't flatten argument packs.
	(template_args_equal): Handle argument packs.
	(comp_template_args): Don't flatten argument packs.
	(check_instantiated_arg): Split out from...
	(check_instantiated_args): Here.  Handle arg packs.
	(convert_template_argument): Just check that nontype argument
	packs have the right type.

2009-01-05  Dodji Seketeli  <dodji@redhat.com>

	PR c++/38472
	* typeck.c (type_after_usual_arithmetic_conversions): Fix a typo.

2009-01-05  Jason Merrill  <jason@redhat.com>

	PR c++/38698
	* typeck2.c (process_init_constructor_union): Handle union with
	no fields.

	* mangle.c (write_expression): Remove mangling for zero-operand
	casts.

	PR c++/38701
	* decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid
	defaulting.

	PR c++/38702
	* class.c (defaultable_fn_p): Only operator== can be a copy
	assignment operator.

2009-01-02  Jason Merrill  <jason@redhat.com>

	PR c++/38698
	* typeck2.c (process_init_constructor_union): Handle excess
	initializers.
	(process_init_constructor_record): Likewise.

	PR c++/38684
	* typeck2.c (digest_init_r): Don't use process_init_constructor
	for non-aggregate classes.
