2013-03-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

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

2013-03-29  Paolo Carlini  <paolo.carlini@oracle.com>

	* call.c (build_op_call_1): Use TYPE_PTRFN_P and TYPE_REFFN_P.

2013-03-29  Paolo Carlini  <paolo.carlini@oracle.com>

	* call.c (add_builtin_candidate): Use TYPE_PTR_P and VOID_TYPE_P.
	(build_op_call_1): Likewise.
	(build_over_call): Likewise.
	(compare_ics): Likewise.
	* class.c (build_base_path): Likewise.
	(resolve_address_of_overloaded_function): Likewise.
	* cp-tree.h: Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_reference): Likewise.
	(ocp_convert): Likewise.
	(convert_force): Likewise, tidy.
	* cxx-pretty-print.c (pp_cxx_postfix_expression): Likewise.
	(pp_cxx_ptr_operator): Likewise.
	* decl.c (duplicate_decls): Likewise.
	(start_decl): Likewise.
	(grok_op_properties): Likewise.
	(start_preparsed_function): Likewise.
	(store_parm_decls): Likewise.
	(finish_function): Likewise.
	* decl2.c (delete_sanity): Likewise.
	(acceptable_java_type): Likewise.
	(grokbitfield): Likewise.
	(cp_reconstruct_complex_type): Likewise.
	* error.c (dump_type_prefix): Likewise.
	(dump_expr): Likewise.
	* except.c (push_eh_cleanup): Likewise.
	(complete_ptr_ref_or_void_ptr_p): Likewise.
	(can_convert_eh): Likewise.
	* init.c (build_new_1): Likewise.
	(build_delete): Likewise.
	(build_vec_delete): Likewise.
	* mangle.c (write_type): Likewise.
	* parser.c (lookup_literal_operator): Likewise.
	* pt.c (convert_nontype_argument_function): Likewise.
	(convert_nontype_argument): Likewise.
	(tsubst): Likewise.
	(unify): Likewise.
	(dependent_type_p_r): Likewise.
	* rtti.c (build_headof): Likewise.
	(build_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.
	(target_incomplete_p): Likewise.
	(typeinfo_in_lib_p): Likewise.
	* semantics.c (finish_omp_for): Likewise.
	(cxx_eval_call_expression): Likewise.
	(maybe_resolve_dummy): Likewise.
	* tree.c (build_target_expr): Likewise.
	(cp_build_qualified_type_real): Likewise.
	* typeck.c (composite_pointer_type_r): Likewise.
	(composite_pointer_type): Likewise.
	(comp_except_types): Likewise.
	(cxx_sizeof_nowarn): Likewise.
	(string_conv_p): Likewise.
	(cp_build_array_ref): Likewise.
	(cp_build_function_call_vec): Likewise, also use TYPE_PTRFN_P.
	(pointer_diff): Likewise.
	(cp_build_addr_expr_1): Likewise.
	(cp_build_unary_op): Likewise.
	(build_static_cast_1): Likewise.
	(cp_build_c_cast): Likewise.
	(comp_ptr_ttypes_real): Likewise.
	(ptr_reasonably_similar): Likewise.
	(comp_ptr_ttypes_const): Likewise.
	(casts_away_constness): Likewise.
	(check_literal_operator_args): Likewise.
	* typeck2.c (build_x_arrow): Likewise.
	(add_exception_specifier): Likewise.

2013-03-29  Jason Merrill  <jason@redhat.com>

	N3582
	* cp-tree.h (AUTO_IS_DECLTYPE): New.
	* parser.c (cp_parser_decltype): Handle decltype(auto).
	(cp_parser_type_id_1): Allow auto without a late-specified
	return in C++1y.
	(cp_parser_primary_expression): Use the return value of
	finish_parenthesized_expr.
	(cp_parser_transaction_expression): Likewise.
	* semantics.c (force_paren_expr): New.
	(finish_parenthesized_expr): Use it.
	* call.c (build_conditional_expr_1): Likewise.
	* pt.c (do_auto_deduction): Handle decltype(auto).
	(tsubst_copy): Handle PAREN_EXPR.
	(tsubst_copy_and_build): Likewise.
	* error.c (dump_expr): Handle PAREN_EXPR.
	* cxx-pretty-print.c (pp_cxx_expression): Likewise.
	* mangle.c (write_expression): Ignore PAREN_EXPR.

	* parser.c (cp_parser_decltype_expr): Split out...
	(cp_parser_decltype): ...from here.

	PR c++/56774
	PR c++/35722
	* pt.c (unify_pack_expansion): Fix indexing.

2013-03-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (build_java_interface_fn_ref): Likewise.
	(make_temporary_var_for_ref_to_temp): Likewise.
	* class.c (check_field_decls): Likewise.
	(layout_class_type): Likewise.
	(finish_struct_1): Likewise.
	(fixed_type_or_null): Likewise.
	(get_vtbl_decl_for_binfo): Likewise.
	* cp-gimplify.c (omp_var_to_track): Likewise.
	(cp_genericize_r): Likewise.
	* cp-objcp-common.c (cxx_warn_unused_global_decl): Likewise.
	* cp-tree.h (LANG_DECL_HAS_MIN): Likewise.
	(DECL_DISCRIMINATOR_P): Likewise.
	* decl.c (poplevel): Likewise.
	(decls_match): Likewise.
	(duplicate_decls): Likewise.
	(decl_jump_unsafe): Likewise.
	(start_decl): Likewise.
	(check_for_uninitialized_const_var): Likewise.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(expand_static_init): Likewise.
	(local_variable_p): Likewise.
	(maybe_register_incomplete_var): Likewise.
	* decl2.c (grokfield): Likewise.
	(comdat_linkage): Likewise.
	(determine_visibility): Likewise.
	(import_export_decl): Likewise.
	(prune_vars_needing_no_initialization): Likewise.
	(decl_maybe_constant_var_p): Likewise.
	* error.c (dump_simple_decl): Likewise.
	(dump_template_decl): Likewise.
	(cp_printer): Likewise.
	* except.c (build_throw): Likewise.
	* init.c (build_vtbl_address): Likewise.
	(member_init_ok_or_else): Likewise.
	(build_aggr_init): Likewise.
	(expand_aggr_init_1): Likewise.
	(build_offset_ref): Likewise.
	(constant_value_1): Likewise.
	* mangle.c (write_mangled_name): Likewise.
	(write_prefix): Likewise.
	* name-lookup.c (supplement_binding_1): Likewise.
	(add_decl_to_level): Likewise.
	(pushdecl_maybe_friend_1): Likewise.
	(check_for_out_of_scope_variable): Likewise.
	(validate_nonmember_using_decl): Likewise.
	(lookup_name_innermost_nonclass_level_1): Likewise.
	(lookup_arg_dependent_1): Likewise.
	* parser.c (cp_parser_lambda_introducer): Likewise.
	(cp_parser_template_argument): Likewise.
	(cp_parser_single_declaration): Likewise.
	* pt.c (convert_nontype_argument): Likewise.
	(instantiate_class_template_1): Likewise.
	(tsubst_decl): Likewise.
	(tsubst_expr): Likewise.
	(do_decl_instantiation): Likewise.
	(do_type_instantiation): Likewise.
	(regenerate_decl_from_template): Likewise.
	(always_instantiate_p): Likewise.
	(instantiate_decl): Likewise.
	(type_dependent_expression_p): Likewise.
	(build_non_dependent_expr): Likewise.
	* repo.c (repo_emit_p): Likewise.
	* rtti.c (build_dynamic_cast_1): Likewise.
	* search.c (shared_member_p): Likewise.
	* semantics.c (outer_var_p): Likewise.
	(finish_id_expression): Likewise.
	(finish_omp_clauses): Likewise.
	(finish_decltype_type): Likewise.
	(ensure_literal_type_for_constexpr_object): Likewise.
	* tree.c (lvalue_kind): Likewise.
	(bot_replace): Likewise.
	(cp_tree_equal): Likewise.
	(handle_init_priority_attribute): Likewise.
	(decl_storage_duration): Likewise.
	* typeck.c (cxx_sizeof_expr): Likewise.
	(cxx_alignof_expr): Likewise.
	(decay_conversion): Likewise.
	(build_class_member_access_expr): Likewise.
	(cp_build_array_ref): Likewise.
	(cxx_mark_addressable): Likewise.
	(maybe_warn_about_returning_address_of_local): Likewise.
	(check_return_expr): Likewise.
	* typeck2.c (cxx_readonly_error): Likewise.
	(abstract_virtuals_error_sfinae): Likewise.
	(cxx_incomplete_type_diagnostic): Likewise.

2013-03-28  Lawrence Crowl  <crowl@google.com>

	* Make-lang.in
	(CXX_PARSER_H): Add header dependence.
	* cp-tree.h
	(extern debug (cp_binding_level &)): New.
	(extern debug (cp_binding_level *)): New.
	* name-lookup.h
	(debug (cp_binding_level &)): New.
	(debug (cp_binding_level *)): New.
	* parser.c
	(debug (cp_parser &)): New.
	(debug (cp_parser *)): New.
	(debug (cp_token &)): New.
	(debug (cp_token *)): New.
	(debug (vec<cp_token, va_gc> &)): New.
	(debug (vec<cp_token, va_gc> *)): New.
	* parser.c: Add header dependence.
	(extern debug (cp_parser &)): New.
	(extern debug (cp_parser *)): New.
	(extern debug (cp_token &)): New.
	(extern debug (cp_token *)): New.
	(extern debug (vec<cp_token, va_gc> &)): New.
	(extern debug (vec<cp_token, va_gc> *)): New.

2013-03-28  Jason Merrill  <jason@redhat.com>

	PR c++/17232
	PR c++/52748
	* typeck2.c (abstract_virtuals_error_sfinae): Don't complete
	the type if tf_decltype is set.
	* pt.c (fn_type_unification): Add decltype_p parm.
	(get_bindings): Adjust.
	* cp-tree.h: Adjust.
	* class.c (resolve_address_of_overloaded_function): Adjust.
	* call.c (add_template_candidate_real, print_z_candidate): Adjust.

	PR c++/56679
	* parser.c (cp_parser_sizeof_pack): Split out from...
	(cp_parser_sizeof_operand): ...here.  Require (id).

	PR c++/56701
	* semantics.c (finish_this_expr): 'this' is an rvalue.
	* typeck.c (cp_build_indirect_ref): Handle NOP_EXPR of 'this'.

	PR c++/56710
	* semantics.c (finish_member_declaration): Don't push closure
	members.

	* name-lookup.c (pushdecl_maybe_friend_1): Use
	nonlambda_method_basetype and current_nonlambda_class_type.

	PR c++/56728
	* semantics.c (potential_constant_expression_1) [NOP_EXPR]: Reject
	conversion from integer to pointer.
	(cxx_eval_constant_expression): Likewise.
	(cxx_eval_indirect_ref): Use the folded operand if we still think
	this might be constant.

2013-03-28  Paolo Carlini  <paolo.carlini@oracle.com>
	    Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR c++/56725
	* call.c (convert_like_real): Change series of two permerrors
	to permerror + inform (and likewise for two errors).
	(build_new_method_call_1): Likewise.
	* typeck.c (convert_for_initialization): Change additional
	warning or error to inform.

2013-03-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (next_aggr_init_expr_arg): Remove static specifier.
	(first_aggr_init_expr): Likewise.
	(more_aggr_init_expr_args_p): Likewise.
	(type_of_this_parm): Likewise.
	(class_of_this_parm): Likewise.
	* name-lookup.h (get_global_value_if_present): Likewise.
	(is_typename_at_global_scope): Likewise.

2013-03-28  Paolo Carlini  <paolo.carlini@oracle.com>

	* call.c (joust): Don't call inform for a permerror returning false.
	* parser.c (cp_parser_check_class_key): Likewise.
	* pt.c (tsubst_copy_and_build): Likewise.

2013-03-27  Jason Merrill  <jason@redhat.com>

	PR c++/56749
	* semantics.c (finish_qualified_id_expr): Return early
	for enum scope.

2013-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (build_new_method_call_1): Use INDIRECT_REF_P.
	* cvt.c (convert_to_void): Likewise.
	* error.c (dump_expr): Likewise.
	* mangle.c (write_expression): Likewise.
	* parser.c (cp_parser_template_argument): Likewise.
	* pt.c (convert_nontype_argument): Likewise.
	(tsubst_copy_and_build): Likewise.
	* rtti.c (build_typeid): Likewise.
	* semantics.c (finish_call_expr): Likewise.
	(finish_decltype_type): Likewise.
	(build_data_member_initialization): Likewise.
	* tree.c (is_dummy_object): Likewise.
	* typeck.c (decay_conversion): Likewise.
	(build_class_member_access_expr): Likewise.
	(cp_build_addr_expr_1): Likewise.
	(unary_complex_lvalue): Likewise.
	(check_return_expr): Likewise.
	* typeck2.c (cxx_readonly_error): Likewise.

2013-03-26  Jason Merrill  <jason@redhat.com>

	PR c++/52597
	* typeck.c (invalid_nonstatic_memfn_p): Use get_first_fn.  Take tree.
	* semantics.c (finish_decltype_type): Check it before type_unknown_p.
	* cp-tree.h: Adjust prototype.

	PR c++/45282
	* typeck2.c (build_m_component_ref): Handle prvalue object.

2013-03-26  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-gimplify.c (cp_genericize_r): Use VAR_OR_FUNCTION_DECL_P.
	* decl.c (duplicate_decls): Likewise.
	(cp_finish_decl): Likewise.
	(check_class_member_definition_namespace): Likewise.
	* decl2.c (grokfield): Likewise.
	(decl_needed_p): Likewise.
	(import_export_decl): Likewise.
	(mark_used): Likewise.
	* name-lookup.c (pushdecl_maybe_friend_1): Likewise.
	* pt.c (push_access_scope): Likewise.
	(instantiate_decl): Likewise.
	* ptree.c (cxx_print_decl): Likewise.
	* repo.c (repo_emit_p): Likewise.
	* semantics.c (note_decl_for_pch): Likewise.
	* tree.c (decl_linkage): Likewise.

2013-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55951
	* decl.c (check_array_designated_initializer): Handle CONST_DECL
	as ce->index.

2013-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokfndecl): Handle separately <inline> and <constexpr>
	error messages.

	* decl.c (grokdeclarator): Declare typedef_p and use it everywhere.

2013-03-25  Jason Merrill  <jason@redhat.com>

	PR c++/56699
	* semantics.c (maybe_resolve_dummy): Make sure that the enclosing
	class is derived from the type of the object.

	PR c++/52014
	* semantics.c (lambda_expr_this_capture): Don't capture 'this' in
	unevaluated context.

2013-03-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/56722
	* decl.c (cp_finish_decl): Check DECL_LANG_SPECIFIC before
	DECL_TEMPLATE_INSTANTIATION.

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

	PR c++/56684
	* pt.c (instantiation_dependent_r): Check DECL_INITIAL of VAR_DECL
	and CONST_DECL.

2013-03-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (identifier_p): New.
	* call.c: Throughout, call identifier_p insstead of direct
	comparaison of TREE_CODE against IDENTIFIER_NODE.
	* decl.c: Likewisse.
	* decl2.c: Likewise.
	* init.c: Likewise.
	* mangle.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

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

	PR middle-end/48087
	* pt.c (convert_nontype_argument): Count werrorcount as warnings.
	* call.c (build_temp): Likewise.
	* method.c (synthesize_method): Likewise.
	* typeck.c (convert_for_initialization): Likewise.

2013-03-21  Marc Glisse  <marc.glisse@inria.fr>

	* call.c (build_conditional_expr_1): Fold VEC_COND_EXPR.

2013-03-21  Richard Biener  <rguenther@suse.de>

	* error.c (cp_printer): Use DECL_HAS_DEBUG_EXPR_P instead of
	DECL_DEBUG_EXPR_IS_FROM.  Guard properly.

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

	PR c++/56646
	* parser.c (cp_parser_late_return_type_opt): Save and restore
	current_class_ptr/ref.

	PR c++/54532
	* expr.c (cplus_expand_constant): Do nothing if the class is
	incomplete.
	* semantics.c (reduced_constant_expression_p): Allow PTRMEM_CST.
	* typeck2.c (store_init_value): Use reduced_constant_expression_p.
	* decl.c (maybe_register_incomplete_var): Handle PTRMEM_CST.
	(complete_vars): Likewise.

	* name-lookup.c (get_anonymous_namespace_name): Never use
	get_file_function_name.

	* pt.c (retrieve_specialization): Handle null tmpl argument.

	PR c++/17232
	PR c++/56642
	* pt.c (tsubst_decl): Check return value of register_specialization.
	* typeck2.c (abstract_virtuals_error_sfinae): Re-apply complete_type
	change.

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

	PR c++/54359
	PR c++/56639
	* parser.c (cp_parser_direct_declarator): Bail if we see a
	qualified-id not at namespace scope.

	PR c++/17232
	PR c++/56642
	* typeck2.c (abstract_virtuals_error_sfinae): Revert complete_type
	change for now.

2013-03-16  Jason Merrill  <jason@redhat.com>

	* decl.c (grokdeclarator): Assert that we won't see a pointer to
	METHOD_TYPE.

	PR c++/54277
	* cp-tree.h (WILDCARD_TYPE_P): Split out from...
	(MAYBE_CLASS_TYPE_P): ...here.
	* semantics.c (lambda_capture_field_type): Only build a
	magic decltype for wildcard types.
	(lambda_proxy_type): Likewise.
	(finish_non_static_data_member): Get the quals from
	the object.

	PR c++/55931
	* parser.c (cp_parser_template_argument): Don't
	fold_non_dependent_expr.

	* parser.c (cp_parser_lambda_declarator_opt): Use
	cp_parser_trailing_type_id.

	PR c++/45917
	* parser.c (cp_parser_template_id): Don't forget access checks.

	PR c++/52374
	* pt.c (tsubst_qualified_id): Use current_nonlambda_class_type.

	PR c++/54764
	PR c++/55972
	* name-lookup.h (tag_scope): Add ts_lambda.
	* semantics.c (begin_lambda_type): Use it.
	* decl.c (xref_tag_1): Set CLASSTYPE_LAMBDA_EXPR.
	* pt.c (check_default_tmpl_args): Ignore lambdas.
	(push_template_decl_real): Handle lambdas.
	* tree.c (no_linkage_check): Adjust lambda check.

	PR c++/56039
	* tree.c (strip_typedefs_expr): Complain about lambda, don't abort.

	PR c++/54359
	* parser.c (cp_parser_direct_declarator): Fix late return
	for out-of-class defn of member function.

	PR c++/55357
	* semantics.c (maybe_add_lambda_conv_op): Clear DECL_NAME of copied
	parms to avoid duplicate -Wshadow warnings.

	* search.c (lookup_base): Handle NULL_TREE.

	PR c++/56481
	* semantics.c (potential_constant_expression_1): Use of 'this' in
	a non-constexpr function makes the expression not potentially
	constant.

	N3276
	PR c++/52748
	* cp-tree.h (tsubst_flags): Add tf_decltype.
	* call.c (build_cxx_call): Don't build a temporary if it's set.
	(build_over_call): Make sure it's only passed to build_cxx_call.
	* parser.c (cp_parser_primary_expression): Add decltype_p parm.
	(cp_parser_unary_expression): Likewise.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_binary_expression): Likewise.
	(cp_parser_assignment_expression): Likewise.
	(cp_parser_postfix_expression): Likewise.  Pass tf_decltype.
	(cp_parser_expression): Add decltype_p.  Force a
	temporary for a call on the LHS of a comma.
	(cp_parser_decltype): Pass true to decltype_p parms.
	* pt.c (tsubst) [DECLTYPE_TYPE]: Pass tf_decltype.
	(tsubst_copy_and_build): Pass tf_decltype down only for
	CALL_EXPR and the RHS of COMPOUND_EXPR.
	* tree.c (build_cplus_new): Call complete_type_or_maybe_complain.

	* cp-tree.h (abstract_class_use): New enum.
	* typeck2.c (pending_abstract_type): Add use field.
	(abstract_virtuals_error_sfinae): Add overloads taking
	abstract_class_use instead of tree.
	* typeck.c (build_static_cast_1): Call it.
	* except.c (is_admissible_throw_operand_or_catch_parameter): Call it.
	* pt.c: Adjust calls.
	* decl.c (cp_finish_decl): Don't handle functions specially.
	(grokdeclarator): Always check return type.
	* init.c (build_new_1): Adjust call.

	DR 337
	PR c++/17232
	* pt.c (tsubst) [ARRAY_TYPE]: Use abstract_virtuals_error_sfinae.
	* typeck2.c (abstract_virtuals_error_sfinae): Call complete_type.

	DR 657
	* pt.c (tsubst_function_type): Call abstract_virtuals_error_sfinae.
	(tsubst_arg_types): Likewise.

	DR 1518
	PR c++/54835
	* call.c (convert_like_real): Check for explicit constructors
	even for value-initialization.

	PR c++/54946
	* pt.c (convert_nontype_argument): Handle invalid pointer.

	* parser.c (cp_parser_lambda_expression): Use nreverse.

	PR c++/56447
	PR c++/55532
	* pt.c (instantiate_class_template_1): Instantiate lambda capture
	list here.
	(tsubst_copy_and_build): Not here.

	PR c++/55017
	* method.c (walk_field_subobs): Disallow copy of rvalue ref.

	PR c++/55240
	* parser.c (parsing_nsdmi): New.
	* semantics.c (outer_automatic_var_p): Check it.
	(finish_id_expression): Likewise.
	* cp-tree.h: Declare it.

	PR c++/55241
	* error.c (dump_expr) [SIZEOF_EXPR]: Print sizeof... properly.

	* parser.c (lookup_literal_operator): Correct parm/arg naming
	mixup.

	PR c++/56238
	* pt.c (fold_non_dependent_expr_sfinae): Check
	instantiation_dependent_expression_p.

	PR c++/56095
	* class.c (resolve_address_of_overloaded_function): Accept a
	reference to function for target_type.
	(instantiate_type): Likewise.
	* pt.c (convert_nontype_argument): Pass it to
	convert_nontype_argument_function.

2013-03-16  Jakub Jelinek  <jakub@redhat.com>

	* tree.c (cp_tree_equal): Fix a pasto.

	PR c++/56607
	* typeck.c (cp_build_binary_op): When calling warn_for_div_by_zero,
	pass op1 through maybe_constant_value first.

2013-03-16  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/56582
	* semantics.c (cxx_eval_array_reference): Check for negative index.

2013-03-14  Jason Merrill  <jason@redhat.com>

	PR c++/56614
	* decl.c (local_variable_p_walkfn): Check DECL_ARTIFICIAL again.

	PR c++/56346
	* decl.c (register_dtor_fn): Pass null to __cxa_thread_atexit
	dso_handle parm on targets without __cxa_atexit.

2013-03-11  Jason Merrill  <jason@redhat.com>

	PR c++/56567
	* typeck.c (check_return_expr): Disallow returning init list here.
	* semantics.c (apply_deduced_return_type): Not here.

2013-03-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51412
	* cxx-pretty-print.c (pp_cxx_expression): Handle LAMBDA_EXPR.
	* error.c (dump_expr): Likewise.

2013-03-08  Jason Merrill  <jason@redhat.com>

	PR c++/51884
	* class.c (modify_all_vtables): Mangle the vtable name before
	entering dfs_walk.

	* semantics.c (lambda_expr_this_capture): In unevaluated context,
	just return the nearest 'this'.

	PR c++/51494
	PR c++/52183
	PR c++/56222
	* tree.c (maybe_dummy_object): Don't capture 'this'.
	* semantics.c (maybe_resolve_dummy): New.
	(finish_non_static_data_member): Use it.
	(finish_qualified_id_expr): Don't test is_dummy_object.
	* cp-tree.h: Declare maybe_resolve_dummy.
	* call.c (build_new_method_call_1): Use it.

	PR c++/56567
	* semantics.c (apply_deduced_return_type): Don't allow returning
	std::initializer_list.

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

	PR c++/56534
	* parser.c (cp_parser_elaborated_type_specifier): Don't call
	check_elaborated_type_specifier when TREE_CODE (decl) != TYPE_DECL.
	* decl.c (check_elaborated_type_specifier): Tidy.

2013-03-06  Jakub Jelinek  <jakub@redhat.com>

	PR c++/56543
	* tree.c (strip_typedefs): Don't copy args if they are NULL.

2013-03-05  Jakub Jelinek  <jakub@redhat.com>

	* parser.c (cp_parser_braced_list): For {} initialize
	*non_constant_p to false.

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

	PR c++/56464
	PR c++/54383
	* semantics.c (lambda_expr_this_capture): Handle NSDMI
	and non-class scopes.

2013-03-01  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Remove dead code.

2013-02-28  Jason Merrill  <jason@redhat.com>

	PR c++/56481
	* semantics.c (potential_constant_expression_1): Use
	cxx_eval_outermost_constant_expr rather than maybe_constant_value.

	PR c++/56243
	* call.c (build_over_call): Avoid virtual lookup in a template.

2013-02-27  Jason Merrill  <jason@redhat.com>

	PR c++/56358
	PR c++/56323
	* name-lookup.c (do_class_using_decl): Use ctor_identifier instead
	of the base name for inheriting ctors.
	(push_class_level_binding_1): Remove inheriting ctor handling.
	* pt.c (tsubst_decl) [USING_DECL]: Likewise.
	* class.c (add_implicitly_declared_members): Adjust.

2013-02-26  David Binderman  <dcb314@hotmail.com>

	PR c++/55632
	* decl.c (grokdeclarator): Tidy publicp assignment.

2013-02-25  Aldy Hernandez  <aldyh@redhat.com>

	PR c++/56419
	* semantics.c (begin_transaction_stmt): Set TREE_SIDE_EFFECTS.
	(build_transaction_expr): Same.

2013-02-25  Jason Merrill  <jason@redhat.com>

	PR c++/56377
	* pt.c (fn_type_unification): Wait to call push_tinst_level until
	we know what args we're looking at.

	PR c++/56438
	* semantics.c (potential_constant_expression_1): In C++98, a cast
	to non-integral type can't be a constant expression.

2013-02-24  Jakub Jelinek  <jakub@redhat.com>

	PR c++/56403
	* init.c (build_zero_init_1): Use RECORD_OR_UNION_CODE_P instead
	of CLASS_TYPE_P.

2013-02-22  Jason Merrill  <jason@redhat.com>

	PR c++/40405
	* pt.c (push_template_decl_real): Set DECL_INTERFACE_KNOWN
	if we got the wrong number of template parms.

	PR c++/56377
	* pt.c (fn_type_unification): Use explicit args in template
	instantiation context.

	PR c++/56359
	* call.c (can_convert_arg): Discard access checks.

	PR c++/56395
	* tree.c (strip_typedefs): Strip typedefs from TYPENAME_TYPE template
	args.

2013-02-20  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/56373
	* tree.c (maybe_warn_zero_as_null_pointer_constant): Add.
	* cvt.c (ocp_convert): Use the latter.
	(cp_convert_to_pointer): Likewise.
	* decl.c (check_default_argument): Likewise.
	* typeck.c (cp_build_binary_op): Likewise.
	* cp-tree.h (maybe_warn_zero_as_null_pointer_constant): Declare.

2013-02-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51242
	* decl2.c (grokbitfield): Allow scoped enumeration types.

2013-02-15  Jason Merrill  <jason@redhat.com>

	PR c++/54276
	* semantics.c (finish_id_expression): Also return the identifier
	for an outer local static.

	PR c++/56343
	* class.c (check_bases_and_members): Deduce noexcept after
	checking bases.

	PR c++/52026
	* semantics.c (finish_id_expression): In a template, return
	the identifier for a constant variable.

2013-02-14  Jason Merrill  <jason@redhat.com>

	PR c++/54922
	* semantics.c (build_anon_member_initialization): New.
	(build_data_member_initialization): Use it.

	PR c++/55003
	* decl.c (cp_finish_decl): Force instantiation of an
	auto static data member.

	PR c++/55220
	* pt.c (unify): A pack expansion that is not the last template
	argument makes the entire template argument list non-deduced.

	PR c++/56323
	* name-lookup.c (do_class_using_decl): Handle typedefs with
	inheriting constructors.
	(push_class_level_binding_1): Allow inheriting from template
	template parameter, too.
	* pt.c (tsubst_decl) [USING_DECL]: Likewise.

	PR c++/55223
	* pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Fix handling of
	default argument scope.
	* mangle.c (write_name): Likewise.

	PR c++/55232
	* error.c (find_typenames_r): Don't walk into a pack expansion.

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

	PR c++/55670
	* parser.c (cp_parser_member_declaration): Check the declarator
	form when detecting a function declaration via typedef.

	PR c++/55680
	* pt.c (maybe_process_partial_specialization): A lambda
	isn't what's being specialized.

	PR c++/55710
	* semantics.c (maybe_add_lambda_conv_op): Mark static thunk
	TREE_USED.

	PR c++/55879
	* semantics.c (cxx_bind_parameters_in_call): Undo DECL_BY_REFERENCE.

	PR c++/55993
	* semantics.c (cxx_fold_indirect_ref): Handle empty bases at
	non-zero offsets, too.

	PR c++/56155
	* decl.c (build_enumerator): Always convert the value to a
	fixed underlying type.

	PR c++/56135
	* pt.c (tsubst_copy_and_build): Don't forget any new
	captures that arose from use of dependent names.

2013-02-13  Jakub Jelinek  <jakub@redhat.com>

	PR c++/56302
	* semantics.c (finish_asm_stmt): If input constraints allow
	neither register nor memory, try maybe_constant_value to get
	a constant if possible.

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

	PR c++/56285
	* method.c (add_one_base_init): Handle base constructor
	taking rvalue reference parm.

	PR c++/56291
	* semantics.c (sort_constexpr_mem_initializers): Handle
	vptr out of order.

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

	PR c++/56268
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Call
	maybe_instantiate_noexcept.

	PR c++/56247
	* pt.c (eq_specializations): Set comparing_specializations.
	* tree.c (cp_tree_equal): Check it.
	* cp-tree.h: Declare it.

	* decl.c (decls_match): Check versions later.

	PR c++/56238
	* pt.c (build_non_dependent_expr): Don't try to fold
	instantiation-dependent expressions.
	(instantiation_dependent_r) [TRAIT_EXPR]: Split out.
	[BIND_EXPR]: Treat as dependent.

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

	PR c++/56241
	* init.c (build_vec_init): Don't append NULL values into new_vec.
	(build_zero_init_1): Don't push anything into v if recursive call
	returned NULL_TREE.
	(build_value_init_noctor): Don't push anything into v if
	build_value_init call returned NULL_TREE.

	PR c++/56239
	* parser.c (cp_parser_token_starts_cast_expression): Renamed to...
	(cp_parser_tokens_start_cast_expression): ... this.  Change parameter
	to cp_parser *, call cp_lexer_peek_token first.  For CPP_OPEN_PAREN,
	return true only if 2nd token isn't CPP_CLOSE_PAREN.
	(cp_parser_cast_expression): Adjust caller.

	PR c++/56237
	* decl.c (push_local_name): Look at DECL_DISCRIMINATOR (t)
	only if DECL_DISCRIMINATOR_SET_P (t) rather than just
	DECL_LANG_SPECIFIC (t).

2013-02-07  Jason Merrill  <jason@redhat.com>

	PR c++/56235
	* method.c (do_build_copy_constructor): Don't bother turning
	scalars from lvalues to xvalues.
	(do_build_copy_assign): Likewise.

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

	* parser.c (cp_parser_enum_specifier): Check for error_mark_node.

2013-02-05  Jason Merrill  <jason@redhat.com>

	PR c++/54122
	* tree.c (lvalue_kind) [INDIRECT_REF]: Don't check for
	METHOD_TYPE.

	PR c++/56177
	* decl.c (start_preparsed_function): Update restype if we change
	decl1.

	PR c++/56208
	* pt.c (fn_type_unification): Discard any access checks from
	substituting explicit args.

2013-01-31  Jason Merrill  <jason@redhat.com>

	PR c++/56162
	PR c++/56104
	* typeck.c (get_member_function_from_ptrfunc): Fix
	ptrmemfunc_vbit_in_delta case.

2013-01-29  Jason Merrill  <jason@redhat.com>

	PR libstdc++/54314
	* class.c (build_ctor_vtbl_group): Give construction vtables
	hidden visibility.

2013-01-25  Jason Merrill  <jason@redhat.com>

	PR c++/56095
	* pt.c (convert_nontype_argument_function): Handle invalid input.
	(convert_nontype_argument): Likewise.

	PR c++/56104
	* typeck.c (get_member_function_from_ptrfunc): Optimize if the
	dynamic type has no virtual functions.

2013-01-22  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55944
	* decl.c (check_initializer): Use TARGET_EXPR_DIRECT_INIT_P only
	on TARGET_EXPR nodes.

2013-01-22  Jason Merrill  <jason@redhat.com>

	PR c++/56071
	* pt.c (maybe_instantiate_noexcept): Don't defer access checks.

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

	PR c++/53609
	* pt.c (argument_pack_element_is_expansion_p)
	(make_argument_pack_select, use_pack_expansion_extra_args_p)
	(gen_elem_of_pack_expansion_instantiation): New static functions.
	(tsubst): When looking through an ARGUMENT_PACK_SELECT tree node,
	look through the possibly resulting pack expansion as well.
	(tsubst_pack_expansion): Use use_pack_expansion_extra_p to
	generalize when to use the PACK_EXPANSION_EXTRA_ARGS mechanism.
	Use gen_elem_of_pack_expansion_instantiation to build the
	instantiation piece-wise.  Don't use arg_from_parm_pack_p anymore,
	as gen_elem_of_pack_expansion_instantiation and the change in
	tsubst above generalize this particular case.
	(arg_from_parm_pack_p): Remove this for it's not used by
	tsubst_pack_expansion anymore.

2013-01-21  Jason Merrill  <jason@redhat.com>

	PR c++/56059
	* tree.c (strip_typedefs_expr) [TREE_VEC]: Preserve non-default
	template args count.

2013-01-18  Jason Merrill  <jason@redhat.com>

	PR target/54908
	* decl2.c (get_local_tls_init_fn): New.
	(get_tls_init_fn): Handle flag_extern_tls_init.  Don't bother
	with aliases for internal variables.  Don't use weakrefs if
	the variable needs destruction.
	(generate_tls_wrapper): Mark the wrapper as const if no
	initialization is needed.
	(handle_tls_init): Don't require aliases.

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

	PR c++/55663
	* pt.c (coerce_innermost_template_parms): New static function.
	(instantiate_alias_template):  Use it here.

2013-01-09  Jason Merrill  <jason@redhat.com>

	PR c++/55878
	* rtti.c (build_typeid, get_typeid): Add complain parm.
	(get_tinfo_decl_dynamic): Likewise.
	* cp-tree.h, parser.c, pt.c: Adjust.

	PR c++/55893
	* decl.c (cp_finish_decl): Clear TREE_READONLY if the variable
	needs destruction.

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

	PR c/48418
	* typeck.c (cp_build_binary_op): For LSHIFT_EXPR and RSHIFT_EXPR,
	call maybe_constant_value for the negative or too big shift
	count warnings.

2013-01-09  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55801
	* decl2.c (var_needs_tls_wrapper): Return false when error_operand_p
	of the argument is true.

2013-01-08  Joel Brobecker  <brobecker@adacore.com>

	* parser.c (cp_parser_initializer_list): Move declaration
	of variable non_const to start of lexical block.

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

	PR c++/55753
	* tree.c (build_aggr_init_expr): Do nothing in a template.
	* pt.c (tsubst_copy_and_build) [CALL_EXPR]: Strip an ADDR_EXPR off
	a FUNCTION_DECL before tsubsting.

2013-01-04  Dodji Seketeli  <dodji@redhat.com>

	PR c++/52343
	* pt.c (check_instantiated_arg): Allow type template arguments.

2013-01-04  Jason Merrill  <jason@redhat.com>

	PR c++/55877
	* decl.c (reset_type_linkage, bt_reset_linkage): New.
	(grokdeclarator): Use reset_type_linkage.
	* name-lookup.c (binding_table_foreach): Handle null table.
	* tree.c (decl_anon_ns_mem_p): Check TYPE_MAIN_DECL, not TYPE_NAME.

2013-01-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/54526 (again)
	* parser.c (cp_parser_template_id): Revert core of previous change
	(keep adjusted inform message).

2013-01-03  Jason Merrill  <jason@redhat.com>

	PR c++/55419
	PR c++/55753
	* pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Don't touch
	TREE_CONSTANT.

	PR c++/55842
	* semantics.c (trait_expr_value): Call maybe_instantiate_noexcept.

	PR c++/55856
	* semantics.c (build_data_member_initialization): Handle DECL_EXPR.

	PR c++/53650
	* call.c (type_has_extended_temps): New.
	* cp-tree.h: Declare it.
	* decl.c (check_initializer): Use build_aggr_init for arrays
	if it is false.
	* init.c (build_vec_init): Avoid mixed signed/unsigned arithmetic.

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

	PR c++/54325
	* call.c (build_new_method_call_1): Don't use build_value_init for
	user-provided default constructors.

	* decl.c (check_default_argument): Use LOOKUP_IMPLICIT.

	PR c++/55032
	PR c++/55245
	* tree.c (build_cplus_array_type): Copy layout information
	to main variant if necessary.

Copyright (C) 2013 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.
