OSDN Git Service

* decl.c (record_builtin_java_type): Undo unintended change.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index c29e32d..fbe0637 100644 (file)
@@ -1,3 +1,743 @@
+2009-10-01  Gabriel Dos Reis  <gdr@cs.tamu.edu>
+
+       * decl.c (record_builtin_java_type): Undo unintended change.
+       (cxx_init_decl_processing): Likewise.
+
+2009-10-01  Jason Merrill  <jason@redhat.com>
+
+       * pt.c (register_specialization): Push DECL_SOURCE_LOCATION to the
+       clones.
+
+       * decl.c (grok_special_member_properties): Only adjust
+       TYPE_HAS_COMPLEX_* if the function is defaulted in the class body.
+       (cp_finish_decl): Push DECL_DELETED_FN/DECL_DEFAULTED_FN to the
+       clones.
+
+2009-09-30  Gabriel Dos Reis  <gdr@cs.tamu.edu>
+
+       * decl.c (check_for_uninitialized_const_var): Check constexpr
+       variables too.
+       (grokdeclarator): Handle `constexpr'.
+       (check_tag_decl): Reject `constexpr'.
+       (check_function_type): Check constexpr functions.
+       * cp-tree.h (ds_constexpr): New cp_decl_spec enumerator.
+       (CLASSTYPE_LITERAL_P): New.
+       (lang_type_class::is_literal): New.
+       (lang_type_class::dummy): Adjust width.
+       (literal_type_p): Declare.
+       * parser.c (cp_parser_check_decl_spec): Print it.
+       (cp_parser_decl_specifier_seq): Accept "constexpr".
+       * semantics.c (validate_constexpr_fundecl): Define.
+       (literal_type_p): Define.
+
+2009-09-30  Jason Merrill  <jason@redhat.com>
+
+       * semantics.c (lambda_expr_this_capture): Fix default capture
+       of explicit capture of 'this'.
+
+2009-09-30  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_lambda_expression): Don't add __ to __this.
+
+2009-09-30  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (LANG_DECL_U2_CHECK): Check LANG_DECL_HAS_MIN.
+
+2009-09-29  John Freeman  <jfreeman08@gmail.com>
+           Jason Merrill  <jason@redhat.com>
+
+       Add support for lambda-expressions as per N2927.
+       * cp-tree.def (VEC_INIT_EXPR, LAMBDA_EXPR): New.
+       * cp-tree.h (LAMBDA_TYPE_P, LAMBDA_FUNCTION_P): New.
+       (LAMBDA_EXPR_DEFAULT_CAPTURE_MODE): New.
+       (LAMBDA_EXPR_DEFAULT_CAPTURE_LIST): New.
+       (LAMBDA_EXPR_THIS_CAPTURE, LAMBDA_EXPR_CAPTURES_THIS_P): New.
+       (LAMBDA_EXPR_MUTABLE_P, LAMBDA_EXPR_DEDUCE_RETURN_TYPE_P): New.
+       (LAMBDA_EXPR_RETURN_TYPE, LAMBDA_EXPR_LOCATION): New.
+       (LAMBDA_EXPR_EXTRA_SCOPE, LAMBDA_EXPR_DISCRIMINATOR): New.
+       (struct tree_lambda_expr): New.
+       (union lang_tree_node): Add lambda_expression.
+       (struct lang_type_class): Add lazy_move_ctor flag, lambda_expr field.
+       (CLASSTYPE_LAZY_MOVE_CTOR, CLASSTYPE_LAMBDA_EXPR): New.
+       (LAMBDA_TYPE_EXTRA_SCOPE, VEC_INIT_EXPR_SLOT): New.
+       (VEC_INIT_EXPR_INIT, DECLTYPE_FOR_LAMBDA_CAPTURE): New.
+       (DECLTYPE_FOR_LAMBDA_RETURN): New.
+       (enum special_function_kind): Add sfk_move_constructor.
+       (LAMBDANAME_PREFIX, LAMBDANAME_FORMAT, LAMBDANAME_P): New.
+       * parser.c (cp_parser_lambda_expression, cp_parser_lambda_introducer)
+       (cp_parser_lambda_declarator_opt, cp_parser_lambda_body): New.
+       (start_lambda_scope, record_lambda_scope, finish_lambda_scope): New.
+       (no_linkage_lambda_type_p): New.
+       (cp_parser_primary_expression): Recognize lambda expression.
+       (cp_parser_init_declarator): Note lambda scope.
+       (cp_parser_function_definition_after_declarator): Likewise.
+       (cp_parser_late_parsing_default_args): Likewise.
+       (cp_parser_skip_to_closing_parenthesis): Skip to end of lambda capture
+       lists, too.
+       (cp_parser_parameter_declaration): Don't defer lambda default args.
+       * semantics.c (finish_non_static_data_member, finish_id_expression):
+       Handle default capture for lambda expressions.
+       (finish_this_expr): Handle 'this' keyword inside of lambda expressions.
+       (outer_automatic_var_p): New.
+       (finish_decltype_type): Handle decltypes within lambda expressions.
+       (classtype_has_nothrow_assign_or_copy_p): Synthesized move constructor.
+       (build_lambda_expr, build_lambda_object, begin_lambda_type)
+       (lambda_return_type, lambda_capture_field_type, apply_lambda_return_type)
+       (capture_decltype, add_capture, add_default_capture)
+       (lambda_expr_this_capture): New.
+       * mangle.c (write_unnamed_type_name): New. Incomplete.
+       (write_closure_type_name): New.
+       (write_unqualified_name): Recognize unnamed, closure types.
+       (write_type): Do not write decltypes from lambda expressions.
+       (decl_mangling_context): New.
+       (write_name): Use it.  Handle PARM_DECL scope.
+       (write_prefix): Likewise.  Handle VAR_DECL/FIELD_DECL scope.
+       (write_compact_number): Factor out from...
+       (write_expression, write_template_param): ...here.
+       (discriminator_for_local_entity): Recognize lambdas.
+       (write_local_name): Handle PARM_DECL scope.
+       * typeck.c (structural_comptypes): Compare decltypes from lambda
+       expressions.
+       (check_return_expr): Deduce lambda return type from multiple return
+       statements.
+       * class.c (add_implicitly_declared_members): Add lazy move constructor
+       for lambda types.
+       (check_bases_and_members): Delete default constructor and assignment
+       operator for lambda types.
+       (maybe_note_name_used_in_class): Do not confuse lambda expression with
+       defining a class.
+       * decl.c (reshape_init_r): Array copy.
+       (grokfndecl): Synthesized move constructor.
+       (cp_tree_node_structure): Lambda expression.
+       * method.c (use_thunk): Synthesized move constructor.
+       (do_build_copy_constructor): Likewise.
+       (locate_copy): Likewise.
+       (implicitly_declare_fn): Likewise.
+       * cp-objcp-common.c (cp_tree_size): Handle LAMBDA_EXPR.
+       * error.c (dump_aggr_type): Recognize lambda type.
+       (dump_function_decl): Recognize lambda function.
+       (function_category): Likewise.
+       (dump_function_name): Hide lambda name.
+       * tree.c (build_array_copy, move): New.
+       (special_function_p): Synthesized move constructor.
+       (no_linkage_check): Handle lambdas.
+       * search.c (lookup_fnfields_1): Synthesized move constructor.
+       * cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr):
+       Handle VEC_INIT_EXPR.
+       * typeck2.c (digest_init_r): Array copy.
+       * pt.c (get_template_info): Don't touch typedefs.
+       (instantiate_decl): Don't resubstitute artificial decls.
+       (tsubst_decl, tsubst, tsubst_copy_and_build): Handle lambdas.
+       (lookup_template_class): Don't fall back on name lookup.
+       * name-lookup.c (make_lambda_name): New.
+       (pushdecl_class_level): Handle default capture for lambda expressions.
+       (qualify_lookup): Handle decltypes within lambda expressions.
+       (pushtag): Handle ts_within_enclosing_non_class in function scope.
+
+2009-09-28  Janis Johnson  <janis187@us.ibm.com>
+
+       * mangle.c (write_builtin_type): Support decimal float types.
+
+2009-09-28  Richard Henderson  <rth@redhat.com>
+
+       * cp-objcp-common.h (LANG_HOOKS_EH_USE_CXA_END_CLEANUP): New.
+
+2009-09-24  Jakub Jelinek  <jakub@redhat.com>
+
+       * method.c (make_thunk, make_alias_for): Don't set
+       DECL_NO_STATIC_CHAIN.
+       * decl.c (builtin_function_1, grokfndecl): Likewise.
+       * lex.c (build_lang_decl): Likewise.
+
+2009-09-23  Dodji Seketeli  <dodji@redhat.com>
+
+       PR debug/41065
+       * decl.c (cp_finish_decl): Record the types used by the global
+       variable declaration we've just parsed.
+
+2009-09-22  Dodji Seketeli  <dodji@redhat.com>
+
+       * cp-lang.c (LANG_HOOKS_FUNCTION_PARAMETER_PACK_P,
+       LANG_HOOKS_FUNCTION_PARM_EXPANDED_FROM_PACK_P,
+       LANG_HOOKS_GET_GENERIC_FUNCTION_DECL): Initialize these
+       hooks for the c++ FE.
+       * cp-tree.h (function_parameter_pack_p, get_function_template_decl,
+       function_parameter_expanded_from_pack_p): Declare ...
+       * pt.c (function_parameter_pack_p, get_function_template_decl,
+       function_parameter_expanded_from_pack_p): ... new hooks.
+       (get_template_info): Make this more robust.
+       (template_args_variadic_p, make_ith_pack_parameter_name): Add a new
+       line between comment and function.
+       (get_template_argument_pack_elems): Fix comment.
+       (tsubst_decl): Arguments of function parameter packs are not
+       parameter packs themselves.
+
+2009-09-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41421
+       * tree.c (trivial_type_p): Fix logic.
+
+2009-09-21  Jason Merrill  <jason@redhat.com>
+
+       * name-lookup.c (push_class_level_binding): Sanity check.
+
+2009-09-18  Jason Merrill  <jason@redhat.com>
+
+       * decl2.c (determine_visibility): Make anonymous types internal.
+       (mark_used): Complain about types without linkage used in
+       decls with internal linkage.
+       (vague_linkage_fn_p): Split out from...
+       * decl.c (maybe_commonize_var): ...here.
+       (grokdeclarator): Adjust linkage when a typedef gives linkage name.
+       * tree.c (no_linkage_check): Check the enclosing class and template
+       arguments.
+
+       * cp-tree.h (TYPE_NAMESPACE_SCOPE_P): New.
+
+       * pt.c (get_pattern_parm): New.
+       (listify): Split out from...
+       (listify_autos): ...here.
+       (unify): Deduce std::initializer_list for T.
+       * call.c (build_over_call): Warn about it.
+
+2009-09-17  Andrew Pinski  <pinskia@gcc.gnu.org>
+
+       PR c++/39365
+       * typeck.c (cp_build_unary_op): Check TREE_CODE for bools instead of
+       using same_type_p.
+       (convert_for_assignment): Likewise.
+       * cvt.c (type_promotes_to): Likewise.
+
+2009-09-14  Richard Henderson  <rth@redhat.com>
+            Jakub Jelinek  <jakub@redhat.com>
+
+       * cp-tree.h (finish_asm_stmt): Update decl.
+       * parser.c (cp_parser_asm_definition): Parse asm goto.
+       (cp_parser_asm_label_list): New.
+       * pt.c (tsubst_copy_asm_operands): Don't recurse on labels.
+       (tsubst_expr): Handle asm labels.
+       * semantics.c (finish_asm_stmt): Add and use labels parameter.
+
+2009-09-14  Richard Henderson  <rth@redhat.com>
+
+       * except.c (init_exception_processing): Don't call
+       default_init_unwind_resume_libfunc.
+       (cp_protect_cleanup_actions): Return the decl to call.
+       (build_exc_ptr): Use __builtin_eh_pointer.
+       * optimize.c (clone_body): Set eh_lp_nr, not eh_region.
+
+2009-09-13  Richard Guenther  <rguenther@suse.de>
+       Rafael Avila de Espindola  <espindola@google.com>
+
+       * except.c (init_exception_processing): Do not set
+       lang_eh_runtime_type.
+       (choose_personality_routine): Do not set eh_personality_decl,
+       set pragma_java_exceptions.
+       * cp-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
+       (LANG_HOOKS_EH_PERSONALITY): Likewise.
+       (cp_eh_personality_decl): New.
+       (cp_eh_personality): Likewise.
+       * Make-lang.in (cp-lang.o): Add $(EXPR_H) and $(EXCEPT_H)
+       dependencies.
+
+2009-09-13  Wei Guozhi  <carrot@google.com>
+
+       PR c++/3187
+       * cp/optimize.c (build_delete_destructor_body): New function.
+       (maybe_clone_body): Call build_delete_destructor_body for
+       deleting destructor.
+
+2009-09-10  Jason Merrill  <jason@redhat.com>
+
+       * repo.c (extract_string, get_base_filename, init_repo): constify.
+
+2009-09-09  Jason Merrill  <jason@redhat.com>
+
+       * error.c (find_typenames_r): Also add decltypes.
+
+2009-09-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/28293
+       * decl2.c (grokfield): Check for explicit template argument lists.
+
+2009-09-09  Jack Howarth  <howarth@bromo.med.uc.edu>
+
+       PR bootstrap/41180
+       * Make-lang.in: Remove redundant code from linkage for darwin10.
+
+2009-09-08  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/39923
+       * decl.c (build_init_list_var_init): Check return value of
+       perform_implicit_conversion.
+
+2009-09-08  Jason Merrill  <jason@redhat.com>
+
+       * class.c (currently_open_class): Make sure we're dealing with the
+       main variant.
+
+       * cp-tree.h (enum overload_flags): Remove OP_FLAG.
+       * method.c (lazily_declare_fn): Check for dtorness in ABI warning.
+
+       * name-lookup.c (is_class_level): Remove.
+       (push_binding_level, leave_scope, resume_scope): Adjust.
+       (pushlevel_class): Adjust.
+       (poplevel_class): Make sure we're on class_binding_level.
+
+       * decl.c (grokmethod): Rename from start_method.
+       (finish_method): Remove.
+       * cp-tree.h: Adjust.
+       * parser.c (cp_parser_save_member_function_body): Adjust.
+
+2009-09-03  Doug Kwan  <dougkwan@google.com>
+
+       * tree.c (cp_fix_function_decl_p): New.
+       (cp_free_lang_data): New.
+
+2009-09-03  Diego Novillo  <dnovillo@google.com>
+
+       * Make-lang.in (decl2.o): Add dependency on $(POINTER_SET_H).
+       * decl2.c: Include pointer-set.h.
+       (collect_candidates_for_java_method_aliases): New.
+       (cp_write_global_declarations): Call it.
+       Add local variable CANDIDATES.  If set, call
+       build_java_method_aliases.
+       (build_java_method_aliases): Add argument CANDIDATES.
+       Use it to determine if FNDECL should get a hidden alias.
+       * cp-objcp-common.h (LANG_HOOKS_FREE_LANG_DATA): Define.
+       * cp-tree.h (cp_free_lang_data): Declare.
+
+2009-09-03  Richard Guenther  <rguenther@suse.de>
+
+       * method.c (use_thunk): Use cgraph_finalize_function to hand
+       off thunks to the cgraph.
+       * semantics.c (emit_associated_thunks): Do not emit thunks
+       for really extern functions.
+
+2009-09-03  Diego Novillo  <dnovillo@google.com>
+
+       * cp-lang.c (lang_hooks): Remove const qualifier.
+
+2009-09-02  Jason Merrill  <jason@redhat.com>
+
+       * semantics.c (describable_type): Don't pretend to be in a template.
+
+       * ptree.c (cxx_print_type) [DECLTYPE_TYPE]: Print the expression.
+
+2009-09-01  Alexandre Oliva  <aoliva@redhat.com>
+
+       * cp-tree.h (TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS): New.
+       * cp-lang.c (cxx_dwarf_name): Pass it.
+       * error.c (count_non_default_template_args): Take flags as
+       argument.  Adjust all callers.  Skip counting of default
+       arguments if the new flag is given.
+
+2009-09-01  Dodji Seketeli  <dodji@redhat.com>
+
+       PR bootstrap/41205
+       * pt.c (make_ith_pack_parameter_name): Don't use strnlen that is a
+       GNU extension.
+
+2009-09-01  Richard Guenther  <rguenther@suse.de>
+
+       * cp-objcp-common.c (cp_expr_size): Use tree_expr_size.
+       * cp-objcp-common.h (LANG_HOOKS_EXPR_SIZE): Do not define.
+
+2009-09-01  Richard Guenther  <rguenther@suse.de>
+
+       * cp-objcp-common.h (LANG_HOOKS_MARK_ADDRESSABLE): Remove.
+
+2009-08-31  Dodji Seketeli  <dodji@redhat.com>
+
+       PR debug/30161
+       * cp-tree.h (get_template_info): Parameter should be const.
+       (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): Fix typo.
+       (get_template_argument_pack_elems,
+       get_primary_template_innermost_parameters,
+       get_template_innermost_arguments, template_template_parameter_p):
+       Declare ...
+       * pt.c (get_template_argument_pack_elems,
+       get_template_innermost_parameters, get_template_innermost_arguments,
+       template_template_parameter_p):
+       ... New C++ front end implementation of new language hooks.
+       (primary_template_instantiation_p): New private helper.
+       (make_ith_pack_parameter_name): Use snprintf and strnlen instead of
+       printf and strlen.
+       (get_template_info): Const-ify parameter.
+       * cp-lang.c (LANG_HOOKS_GET_INNERMOST_GENERIC_PARMS,
+       LANG_HOOKS_GET_INNERMOST_GENERIC_ARGS,
+       LANG_HOOKS_GET_ARGUMENT_PACK_ELEMS,
+       LANG_HOOKS_GENERIC_TYPE_PARAMETER_DECL_P): Initialize these
+       interfaces for the C++ front-end.
+
+2009-08-31  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41127
+       * parser.c (cp_parser_enum_specifier): Make sure the : is followed by a
+       type-specifier-seq before we commit.
+
+2009-08-28  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/41058
+       * cp-gimplify.c (cp_genericize_r): Do not leak zero-sized stores
+       into the generic IL.
+
+2009-08-27  Richard Guenther  <rguenther@suse.de>
+
+       * class.c (build_vtbl_ref_1): Remove excess vertical space.
+       * Make-lang.in (CXX_TREE_H): Remove c-common.def dependency
+       tracked by $(TREE_H).
+       * semantics.c (expand_or_defer_fn): Zero DECL_SAVED_TREE.
+
+2009-08-26  Jason Merrill  <jason@redhat.com>
+
+       * call.c (build_builtin_candidate): Don't set LOOKUP_ONLYCONVERTING
+       if we're contextually converting to bool.
+       (build_conditional_expr): Likewise.
+       * typeck.c (condition_conversion): Likewise.
+
+       * call.c (build_conditional_expr): Fix logic errors.
+       (build_new_op): Remove dead COND_EXPR handling.
+
+2009-08-24  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (DECL_DEFERRED_FN): Remove.
+       (struct lang_decl_fn): Remove deferred flag.
+       * class.c (build_clone): Don't set it.
+       * decl2.c (note_vague_linkage_fn): Don't check or set it.
+       (mark_used): Don't check it.
+       * method.c (make_thunk, make_alias_for): Don't set it.
+
+       * decl2.c (mark_used): Streamline logic.
+
+       PR c++/41109
+       PR c++/41110
+       PR c++/41134
+       * cp-tree.h (DECL_ODR_USED): New macro.
+       (struct lang_decl_base): Add odr_used flag.
+       * decl.c (duplicate_decls): Propagate it.  Use it for error.
+       * pt.c (register_specialization): Use it for error.
+       * decl2.c (mark_used): Use it as gating flag rather than TREE_USED.
+       (cp_write_global_declarations): Use it for error.
+       (tree_used_ok): Remove.
+       * cp-tree.h: Remove tree_used_ok.
+       * call.c (build_call_a): Don't call it.
+       * init.c (build_offset_ref): Likewise.
+
+2009-08-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/41131
+       * tree.c (lvalue_p_1) <case CONST_DECL>: Return clk_none if
+       not TREE_STATIC.
+
+2009-08-19  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41119
+       PR c++/41120
+       * decl2.c (mark_used): Increment function_depth during synthesis.
+       * parser.c (cp_parser_default_argument): Not here.
+
+2009-08-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * method.c (use_thunk): Call free_after_compilation after
+       assemble_end_function.
+
+2009-08-17  Richard Guenther  <rguenther@suse.de>
+
+       * decl.c (build_ptrmemfunc_type): Keep variant chain intact.
+       Avoid useless copy.
+       (finish_enum): Keep variant chain intact.
+       * tree.c (cp_build_reference_type): Likewise.
+
+2009-08-16  Jason Merrill  <jason@redhat.com>
+
+       Make TREE_USED match the [basic.def.odr] concept for FUNCTION_DECL
+       and VAR_DECL, so mark_used only has effect the first time.
+       * decl2.c (mark_used): Just return if TREE_USED is already set.
+       Don't set TREE_USED if cp_unevaluated_operand is set.
+       (tree_used_ok): New fn.
+       * init.c (build_offset_ref): Check it instead of TREE_USED.
+       * call.c (build_call_a): Likewise.
+       * cp-tree.h: Declare it.
+       (DECL_NO_LINKAGE_CHECKED): No longer needed.
+       (struct lang_decl_base): Remove no_linkage_checked bitfield.
+
+       * decl2.c (finish_static_data_member_decl): Don't set TREE_USED.
+
+       * decl2.c (mark_used): It's ok to synthesize for default args now.
+
+2009-08-10  Jason Merrill  <jason@redhat.com>
+
+       Implement DR 757: It's OK for a decl to use a type without linkage
+       so long as the decl is defined in the current translation unit.
+       * decl2.c (no_linkage_decls): New vector.
+       (mark_used): Add decls that use types with no linkage.
+       (cp_write_global_declarations): Check that they are defined.
+       (decl_defined_p, no_linkage_error): New fns.
+       * cp-tree.h (DECL_NO_LINKAGE_CHECKED): New macro.
+       (struct lang_decl_base): Add flag.
+       * decl.c (grokfndecl): Don't check type linkage.
+       (grokvardecl): If the type has no linkage, just make sure
+       DECL_LANG_SPECIFIC is set.
+       * pt.c (check_instantiated_arg): Don't check type linkage.
+       * name-lookup.c (is_local_extern): New fn.
+       * name-lookup.h: Declare it.
+
+2009-08-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/40948
+       * init.c (build_vec_init): Evaluate the initializer before
+       starting the initialization try block.
+
+2009-08-05  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c++/36069
+       * typeck.c (convert_for_assignment): Do not warn for any boolean
+       variant. Use explicit location.
+
+2009-08-04  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/39987
+       * pt.c (tsubst_default_argument): Let access checks of the
+       default argument happen in the context of the current function.
+
+2009-08-04  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c++/16696
+       * call.c (build_new_op): Only try prefix operator if -fpermissive,
+       otherwise just error.
+
+2009-08-04  Dodji Seketeli  <dodji@redhat.com>
+
+       PR debug/39706
+       * error.c (lang_decl_name): Print qualified names for decls
+       in  namespace scope.
+
+2009-08-03  Jason Merrill  <jason@redhat.com>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/40948
+       * init.c (build_vec_init): Look through a TARGET_EXPR around a
+       CONSTRUCTOR.
+
+2009-07-31  Jason Merrill  <jason@redhat.com>
+           Douglas Gregor  <doug.gregor@gmail.com>
+
+       Remove implicit binding of lvalues to rvalue references (N2831)
+       * call.c (convert_class_to_reference): Binding an lvalue to an
+       rvalue reference is bad.  If the user-defined conversion is bad,
+       set bad_p before merging conversions.
+       (maybe_handle_ref_bind): Don't push down bad_p.
+       (reference_binding): Binding an lvalue to an rvalue reference is bad.
+       (convert_like_real): Give a helpful error about binding lvalue
+       to rvalue reference.
+       (reference_related_p): No longer static.
+       * typeck.c (build_typed_address): New.
+       (build_static_cast_1): Add static_cast from lvalue to &&.
+       * cp-tree.h: Adjust.
+
+2009-07-31  Jason Merrill  <jason@redhat.com>
+
+       * call.c (reference_binding): Rename lvalue_p to is_lvalue.
+       Do direct binding of "rvalues" in memory to rvalue references.
+       * tree.c (lvalue_p_1): Can't be both non-addressable lvalue and
+       "rvalue" in memory.
+       * typeck.c (build_static_cast_1): Do direct binding of memory
+       "rvalues" to rvalue references.
+       * cvt.c (cp_fold_convert): New.
+       * cp-tree.h: Declare it.
+
+2009-07-31  Jason Merrill  <jason@redhat.com>
+
+       * typeck.c (build_address): Do fold away ADDR_EXPR of INDIRECT_REF.
+       * tree.c (rvalue): Use cp_build_qualified_type, not TYPE_MAIN_VARIANT.
+
+2009-07-29  Jason Merrill  <jason@redhat.com>
+
+       PR c++/14912
+       * cp-tree.h (enum tsubst_flags): Add tf_no_class_instantiations.
+       * error.c (count_non_default_template_args): Pass it.
+       * pt.c (tsubst) [TYPENAME_TYPE]: Don't complete type if it's set.
+
+2009-07-29  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/40834
+       * cp-gimplify.c (cp_genericize_r): Properly walk the BIND_EXPR
+       vars.
+
+2009-07-26  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/40749
+       * decl.c (grokdeclarator): Do not set TREE_NO_WARNING for functions
+       with a qualified return type.
+
+2009-07-24  Jason Merrill  <jason@redhat.com>
+
+       Core issue 901
+       * call.c (build_op_delete_call): If this is for a new-expression
+       and the op delete is deleted, do nothing.
+
+       Core issue 702
+       * call.c (compare_ics): Give list-initialization of std::init_list
+       priority over conversion to scalar, too.
+
+2009-07-22  Jason Merrill  <jason@redhat.com>
+
+       * mangle.c (mangle_type_string_for_rtti): Rename to be clearer.
+       (needs_fake_anon): New.
+       (write_name): Check it.
+       (write_nested_name): Add a fake anonymous namespace scope if true.
+       * name-lookup.c (get_anonymous_namespace_name): No longer static.
+       * rtti.c, cp-tree.h: Adjust.
+
+2009-07-22  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/40799
+       * cp-gimplify.c (cp_gimplify_expr): Move handling of using
+       related exprs to ...
+       (cp_genericize_r): ... genericization stage.
+       (cp_genericize): Adjust.
+
+2009-07-21  Jason Merrill  <jason@redhat.com>
+
+       Core issue 934
+       * call.c (reference_binding): Implement binding to { }.
+       (initialize_reference): Binding temporary to non-const && is fine.
+       * decl.c (grok_reference_init): Remove error for CONSTRUCTOR.
+
+       * decl.c (reshape_init_r): { T } is not an aggregate initializer
+       for class T.
+
+2009-07-17  Richard Guenther  <rguenther@suse.de>
+
+       PR c/40401
+       * decl.c (finish_function): Do not emit unused result warnings
+       from here.
+       * cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use
+       c_warn_unused_result_pass.
+       * semantics.c (expand_or_defer_fn): Adjust assertion about IL status.
+       * optimize.c (clone_body): Clone in GENERIC.
+       (maybe_clone_body): Do not clear DECL_SAVED_TREE.
+       * decl2.c (cp_write_global_declarations): Fix body test.
+       Do not call cgraph_optimize.
+       * Make-lang.in (optimize.o): Add tree-iterator.h dependency.
+       * method.c (use_thunk): Register thunk with
+       cgraph_finalize_function.
+       * error.c (function_category): Guard access of DECL_LANG_SPECIFIC.
+
+2009-07-17  Richard Guenther  <rguenther@suse.de>
+
+       * init.c (build_vec_delete_1): Do not set DECL_REGISTER on the
+       temporary pointer.
+
+2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
+           Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR 40435 
+       * typeck.c, init.c, class.c, method.c, rtti.c, except.c, error.c,
+       tree.c, cp-gimplify.c, cxx-pretty-print.c, pt.c, semantics.c,
+       call.c, cvt.c, mangle.c: Add location argument to
+       fold_{unary,binary,ternary}, fold_build[123], build_call_expr,
+       build_size_arg, build_fold_addr_expr, build_call_array,
+       non_lvalue, size_diffop, fold_build1_initializer,
+       fold_build2_initializer, fold_build3_initializer,
+       fold_build_call_array, fold_build_call_array_initializer,
+       fold_single_bit_test, omit_one_operand, omit_two_operands,
+       invert_truthvalue, fold_truth_not_expr, build_fold_indirect_ref,
+       fold_indirect_ref, combine_comparisons, fold_builtin_*,
+       fold_call_expr, build_range_check, maybe_fold_offset_to_address,
+       round_up, round_down.
+
+2009-07-16  Jason Merrill  <jason@redhat.com>
+
+       PR libstdc++/37907
+       Split POD into "standard-layout" and "trivial" as per N2230,
+       Support std::is_standard_layout and std::is_trivial traits.
+       * cp-tree.h (enum cp_trait_kind): Add CPTK_IS_STD_LAYOUT,
+       CPTK_IS_TRIVIAL.
+       (struct lang_type_class): Add non_std_layout.
+       (CLASSTYPE_NON_STD_LAYOUT): New.
+       * class.c (check_bases): Set it.
+       (check_field_decls): Likewise.
+       (check_bases_and_members): Likewise.
+       * parser.c (cp_parser_primary_expression): Handle RID_IS_STD_LAYOUT,
+       RID_IS_TRIVIAL.
+       (cp_parser_trait_expr): Likewise.
+       * semantics.c (trait_expr_value): Handle CPTK_IS_STD_LAYOUT,
+       CPTK_IS_TRIVIAL.
+       (finish_trait_expr): Likewise.
+       * tree.c (scalarish_type_p, trivial_type_p, std_layout_type_p): New.
+       (pod_type_p): Use them.
+       (type_has_nontrivial_copy_init, type_has_nontrivial_default_init): New.
+
+       Adjust bits of the language that no longer refer to POD types.
+       * call.c (convert_arg_to_ellipsis): Use type_has_nontrivial_copy_init
+       and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
+       (build_x_va_arg): Likewise.
+       (call_builtin_trap): Remove.
+       * decl.c (declare_local_label): Use type_has_nontrivial_default_init
+       and TYPE_HAS_NONTRIVIAL_DESTRUCTOR rather than pod_type_p.
+       (cp_finish_decl): Likewise.
+       (check_previous_goto_1, check_goto): Adjust error.
+       * typeck.c (build_class_member_access_expr): Check
+       CLASSTYPE_NON_STD_LAYOUT rather than CLASSTYPE_NON_POD_P.
+
+2009-07-14  Taras Glek  <tglek@mozilla.com>
+           Rafael Espindola  <espindola@google.com>
+
+       * Make-lang.in: Added CP_PLUGIN_HEADERS and
+       c.install-target to export cp-tree.h cxx-pretty-print.h
+       name-lookup.h headers for plugins.
+
+2009-07-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37276
+       * decl.c (decls_match): A non-extern-C declaration doesn't match
+       a builtin extern-C declaration.
+
+       PR c++/40746
+       * name-lookup.c (qualified_lookup_using_namespace): Don't stop
+       looking in used namespaces just because we found something on
+       another branch.
+
+       PR c++/40740
+       * semantics.c (perform_koenig_lookup): Handle empty template args.
+
+       * call.c (build_over_call): Use can_trust_pointer_alignment.
+
+2009-07-14  Dodji Seketeli  <dodji@redhat.com>
+
+       PR debug/40705
+       PR c++/403057
+       * decl2.c (grokfield): Don't call set_underlying_type on typedef
+       decls that are type names.
+
+2009-07-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR C++/22154
+       * parser.c (cp_parser_elaborated_type_specifier): Accept typename in
+       front of qualified names.
+
+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