OSDN Git Service

* call.c (build_op_delete_call): Tweak error.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 5949b24..2407446 100644 (file)
@@ -1,3 +1,601 @@
+2009-11-10  Jason Merrill  <jason@redhat.com>
+
+       * call.c (build_op_delete_call): Tweak error.
+
+       PR c++/34158
+       PR c++/36406
+       * call.c (non_placement_deallocation_fn_p): Split out...
+       (build_op_delete_call): ...from here.  Use instantiate_type
+       for placement delete.  Simplify logic.
+       * pt.c (primary_template_instantiation_p): Non-static.
+       * cp-tree.h: Declare it.
+
+2009-11-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41972
+       * parser.c (cp_parser_template_argument): Accept SCOPE_REF around
+       VAR_DECL.
+
+       PR c++/41994
+       * pt.c (tsubst_baselink): tsubst the name.
+
+2009-11-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37920
+       * pt.c (tsubst) [TYPEOF_TYPE]: Set cp_unevaluated_operand.
+
+       PR c++/18451
+       PR c++/40738
+       * cp-tree.h (cp_decl_specifier_seq): Add any_type_specifiers_p.
+       * parser.c (cp_parser_single_declaration): Call
+       cp_parser_parse_and_diagnose_invalid_type_name here, too.
+       (cp_parser_parameter_declaration): And here.
+       (cp_parser_parse_and_diagnose_invalid_type_name): Be
+       less picky about declarator form.  Don't skip to
+       the end of the block if we're in a declarator.
+       (cp_parser_decl_specifier_seq): Set any_type_specifiers_p.
+       (cp_parser_simple_declaration): Check it.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_diagnose_invalid_type_name): Tweak error message.
+       (cp_parser_expression_statement): Likewise.
+       * decl2.c (grokfield): Mention decltype instead of typeof.
+
+2009-11-06  Jason Merrill  <jason@redhat.com>
+
+       PR c++/15946
+       * parser.c (cp_parser_check_template_parameters): Don't talk about
+       specialization at function scope.
+       (cp_parser_diagnose_invalid_type_name): Handle dependent scope.
+       (cp_parser_parse_and_diagnose_invalid_type_name): Likewise.
+       (cp_parser_expression_statement): Suggest typename.
+       * error.c (dump_decl) [SCOPE_REF]: Print the type here.
+       (dump_expr) [SCOPE_REF]: Call it.
+       (dump_type) [UNBOUND_CLASS_TEMPLATE]: Check TFF_UNQUALIFIED_NAME.
+       * cxx-pretty-print.c (pp_cxx_unqualified_id): Print class template
+       args.
+
+       PR c++/9381
+       * decl2.c (build_memfn_type): Preserve attributes.
+       (cp_reconstruct_complex_type): Likewise.
+       (maybe_retrofit_in_chrg): Likewise.
+       * class.c (adjust_clone_args): Likewise.
+       * call.c (standard_conversion): Use build_memfn_type.
+       * pt.c (tsubst): Likewise.
+       * decl.c (build_ptrmem_type): Likewise
+       (check_function_type): Preserve attributes.
+       * tree.c (cp_build_type_attribute_variant): Propagate exception
+       specs on METHOD_TYPE, too.
+       (strip_typedefs): Preserve exception specs and attributes.
+
+2009-11-06  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR c++/41536
+       * optimize.c (maybe_clone_body): Copy DECL_ATTRIBUTES and
+       DECL_DISREGARD_INLINE_LIMITS also.
+
+2009-11-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/41967
+       * parser.c (cp_parser_omp_for_loop): After diagnosing not perfectly
+       nested loop and parsing statements, don't cp_parser_require }, instead
+       exit the loop if next token is CPP_EOF.
+
+2009-11-05  Jason Merrill  <jason@redhat.com>
+
+       PR c++/34180
+       * method.c (do_build_copy_constructor): Don't drop cv-quals from
+       the field type.
+
+       PR c++/7046
+       * class.c (finish_struct): Store maximum_field_alignment in
+       TYPE_PRECISION.
+       * pt.c (instantiate_class_template): Set maximum_field_alignment.
+
+       PR c++/34870
+       * name-lookup.c (arg_assoc_class): Call complete_type.
+       * pt.c (instantiate_class_template): Call uses_template_parms
+       instead of dependent_type_p.
+
+       PR c++/41703
+       * pt.c (check_undeduced_parms): New subroutine of...
+       (more_specialized_fn): ...here.  Undeduced template parms can make
+       a template less specialized than another.
+
+2009-11-04  Jason Merrill  <jason@redhat.com>
+
+       PR c++/39413
+       * search.c (lookup_base): Don't complete_type (base).
+
+       PR c++/35067
+       * method.c (use_thunk): Check DECL_WEAK as well as
+       DECL_ONE_ONLY.
+
+       PR c++/17365, DR 218
+       * name-lookup.c (add_function): Ignore non-functions.
+
+2009-11-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/36959
+       * decl2.c (cxx_callgraph_analyze_expr): Don't reference a function
+       just because a static variable in it is needed unless -frepo.
+
+       PR c++/41876
+       * parser.c (cp_parser_type_specifier_seq): Rename is_condition to
+       is_declaration.
+       (cp_parser_exception_declaration): Pass true.
+       (cp_parser_omp_for_loop): Likewise.
+
+       PR c++/41927
+       * typeck.c (build_x_binary_op): Don't do warn_parentheses
+       if we're in a SFINAE context.
+
+       PR c++/41815
+       * call.c (build_call_a): Strip cv-quals from rvalue result.
+
+       PR c++/40944
+       * call.c (initialize_reference): Add complain parm.
+       * typeck.c (convert_for_initialization): Pass it.
+       * decl.c (grok_reference_init): Likewise.
+       * cp-tree.h: Declare it.
+
+       PR c++/40687
+       * pt.c (do_auto_deduction): Diagnose inconsistent deduction.
+
+2009-11-02  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/37093
+       * pt.c (check_valid_ptrmem_cst_expr): New function.
+       (convert_nontype_argument): Use it to output an error for
+       illegal pointer to member expressions used as template arguments.
+
+2009-11-02  Jason Merrill  <jason@redhat.com>
+
+       Restrict DR 757 change to C++0x mode.
+       * decl2.c (mark_used): Check cxx_dialect.
+       * decl.c (grokfndecl): Do check type linkage in C++98 mode.
+       (grokvardecl): Likewise.
+       * pt.c (check_instantiated_arg): Likewise.
+
+2009-11-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/41774
+       * name-lookup.c (handle_namespace_attrs): Pass 1 as last argument to
+       push_visibility.
+       * parser.c (cp_parser_namespace_definition): Pass 1 as argument to
+       pop_visibility.
+       * rtti.c (push_abi_namespace): Pass 2 as last argument to
+       push_visibility.
+       (pop_abi_namespace): Pass 2 as argument to pop_visibility.
+
+2009-10-31  Jason Merrill  <jason@redhat.com>
+
+       * tree.c (cv_unqualified): New fn.
+       * cp-tree.h: Declare it.
+       * typeck.c (decay_conversion): Use it instead of TYPE_MAIN_VARIANT.
+
+       * rtti.c (tinfo_name): Fix lengths for private case.
+
+2009-10-31  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41754
+       * call.c (compare_ics): Avoid bad union use when
+       comparing two ck_lists.
+
+2009-10-30  Jerry Quinn  <jlquinn@optonline.net>
+
+       * mangle.c (mangle_type_string_for_rtti): Reapply 153734.
+       (needs_fake_anon): Likewise.
+       (write_name): Likewise.
+       (write_nested_name): Likewise.
+       * cp-tree.h (mangle_type_string_for_rtti): Likewise.
+       (get_anonymous_namespace): Likewise.
+       * name-lookup.c (get_anonymous_namespace_name): Likewise.
+       * rtti.c (tinfo_name): Likewise, with +1 in the second
+       build_string call fixed.
+       (tinfo_base_init): Likewise.
+
+2009-10-30  Jason Merrill  <jason@redhat.com>
+
+       Revert:
+       * decl.c (cp_fname_init): Correct build_string argument.
+
+2009-10-30  Jerry Quinn  <jlquinn@optonline.net>
+
+       * mangle.c (mangle_type_string_for_rtti): Revert 153734.
+       (needs_fake_anon): Likewise.
+       (write_name): Likewise.
+       (write_nested_name): Likewise.
+       * cp-tree.h (mangle_type_string_for_rtti): Likewise.
+       (get_anonymous_namespace): Likewise.
+       * name-lookup.c (get_anonymous_namespace_name): Likewise.
+       * rtti.c (tinfo_name): Likewise.
+       (tinfo_base_init): Likewise.
+
+2009-10-30  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/41863
+       * pt.c (iterative_hash_template_arg): articifial parms
+       don't have DECL_PARM_INDEX set. Do not hash it.
+
+2009-10-28  Jerry Quinn  <jlquinn@optonline.net>
+
+       * mangle.c (mangle_type_string_for_rtti): Revert r149964.
+       (needs_fake_anon): Likewise.
+       (write_name): Likewise.
+       (write_nested_name): Likewise.
+       * cp-tree.h (mangle_type_string_for_rtti): Likewise.
+       (get_anonymous_namespace): Likewise.
+       * name-lookup.c (get_anonymous_namespace_name): Likewise.
+       * rtti.c (tinfo_name): Insert '*' in front of private names.
+       (tinfo_base_init): Use it.
+
+2009-10-28  Jason Merrill  <jason@redhat.com>
+
+       Core issue 812, 861
+       * name-lookup.c (set_decl_namespace): Deal properly with inline
+       namespaces.
+       (qualified_lookup_using_namespace): Overhaul.
+       * pt.c (print_candidates): Handle getting an OVERLOAD.
+
+2009-10-28  Jason Merrill  <jason@redhat.com>
+
+       * decl.c (cp_fname_init): Correct build_string argument.
+
+2009-10-27  Jason Merrill  <jason@redhat.com>
+
+       Allow no-capture lambdas to convert to function pointer.
+       * semantics.c (maybe_add_lambda_conv_op): New.
+       * parser.c (cp_parser_lambda_expression): Call it.
+       (cp_parser_lambda_declarator_opt): Make op() static if
+       no captures.
+       * mangle.c (write_closure_type_name): Adjust.
+       * semantics.c (finish_this_expr): Adjust.
+       * decl.c (grok_op_properties): Allow it.
+       * call.c (build_user_type_conversion_1): Handle static conversion op.
+       (build_op_call): And op().
+
+2009-10-26  Jakub Jelinek  <jakub@redhat.com>
+
+       PR debug/41828
+       * cp-lang.c (cxx_dwarf_name): Return NULL instead of
+       <anonymous ...> for anonymous aggregate names.
+
+2009-10-26  Jason Merrill  <jason@redhat.com>
+
+       PR c++/38796, Core issue 906
+       * cp-tree.h (DECL_DEFAULTED_OUTSIDE_CLASS_P): New.
+       (DECL_DEFAULTED_IN_CLASS_P): New.
+       * class.c (user_provided_p): Non-static.
+       (check_methods): Use it.
+       (check_bases_and_members): Check defaulted fns.
+       (defaultable_fn_p): Move and rename to...
+       * method.c (defaultable_fn_check): ...this.
+       (defaulted_late_check): New.
+       * pt.c (tsubst_decl): Call it.
+       * decl2.c (grokfield): Adjust.
+       * decl.c (cp_finish_decl): Adjust.
+       (grok_special_member_properties): Use user_provided_p.
+
+2009-10-26  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/41785
+       * pt.c (template_args_equal): Handle comparison of
+       an ARGUMENT_PACK_SELECT node with the arguments node it selects into.
+       * cp-tree.def: Fix a typo in the description of TYPE_PACK_EXPANSION.
+
+2009-10-26  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/41020
+       * decl.c (decls_match): Use DECL_IS_BUILTIN instead of
+       DECL_BUILT_IN.
+
+2009-10-23  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/40808
+       * mangle.c (write_template_args): Allow mangling of empty template
+       argument list. Updated function comments.
+
+2009-10-23  Jason Merrill  <jason@redhat.com>
+
+       * semantics.c (lambda_expr_this_capture): Use thisify_lambda_field.
+
+       * semantics.c (outer_lambda_capture_p): New fn.
+       (thisify_lambda_field): Factor out...
+       (add_default_capture): ...from here.
+       (finish_id_expression): Use them.
+
+       Core issue 899
+       * call.c (add_function_candidate): Only permit explicit conversion
+       ops if copy ctor was called with a single argument.
+
+       * call.c (initialize_reference): Tweak error message.
+
+2009-10-21  Jakub Jelinek  <jakub@redhat.com>
+
+       * mangle.c (finish_mangling_get_identifier): Use
+       obstack_base (mangle_obstack) instead of name_base.
+
+2009-10-19  Jakub Jelinek  <jakub@redhat.com>
+
+       * parser.c (cp_lexer_print_token, cp_parser_is_string_literal,
+       cp_parser_string_literal, cp_parser_primary_expression): Likewise.
+       (cp_lexer_get_preprocessor_token): Use C_LEX_STRING_JOIN instead
+       of C_LEX_RAW_STRINGS.
+
+2009-10-15  Jason Merrill  <jason@redhat.com>
+
+       PR c++/38888
+       * error.c (dump_template_bindings): Wrap argument packs in {}.
+
+       PR c++/38798
+       * parser.c (CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS): New.
+       (cp_parser_type_specifier): Don't try to parse a class-specifier
+       or enum-specifier in that case.
+       (cp_parser_trailing_type_id): New.
+       (cp_parser_late_return_type_opt): Call it.
+       (cp_parser_type_id_1): Add is_trailing_return parm.
+       (cp_parser_type_specifier_seq): Likewise.
+
+2009-10-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/39866
+       * call.c (print_z_candidates): Don't print deleted candidates.
+       (print_z_candidate): Note deleted candidates.
+
+2009-10-14  Larry Evans  <cppljevans@suddenlink.net>
+
+       PR c++/40092
+       * tree.c (cp_tree_equal): Add test for TEMPLATE_PARM_PARAMETER_PACK
+       equality.
+
+2009-10-12  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37875
+       * parser.c (cp_parser_decltype): Set greater_than_is_operator_p.
+
+       PR c++/37766
+       * pt.c (type_unification_real): Call convert_template_argument
+       for function default template arguments.
+       (check_default_tmpl_args): Suggest -std=c++0x when function default
+       template args seen in C++98 mode.
+
+2009-10-11  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37204
+       * typeck.c (build_reinterpret_cast_1): Handle rvalue refs
+       properly.
+
+2009-10-11  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (cp_free_lang_data): Drop anonymous aggregate names.
+
+2009-10-08  Jason Merrill  <jason@redhat.com>
+
+       PR c++/36816
+       * pt.c (maybe_adjust_types_for_deduction): Do rvalue ref adjustment
+       even when DEDUCE_EXACT.
+
+       PR c++/37177
+       * pt.c (resolve_nondeduced_context): New.
+       * cvt.c (convert_to_void): Call it.
+       * semantics.c (finish_decltype_type): Likewise.
+       * typeck.c (decay_conversion): Here too.
+       * pt.c (tsubst_decl): Don't clobber input_location.
+       Don't register a bad specialization.
+
+2009-10-07  Gabriel Dos Reis  <gdr@cs.tamu.edu>
+
+       * cp-tree.h: Fix location of documentation for DECL_LANG_FLAG_7.
+
+2009-10-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/39863
+       * pt.c (tsubst_pack_expansion): Don't do anything now if we
+       have incomplete packs of different lengths.
+
+       PR c++/41038
+       * tree.c (build_qualified_name): Call convert_from_reference.
+
+2009-10-06  Jason Merrill  <jason@redhat.com>
+
+       Fix lookup of initialized captures in unevaluated context.
+       * cp-tree.h (DECL_NORMAL_CAPTURE_P): New.
+       * name-lookup.c (qualify_lookup): Check it.
+       * parser.c (cp_parser_lambda_introducer): Pass explicit_init_p
+       to add_capture.
+       * semantics.c (add_capture): Set DECL_NORMAL_CAPTURE_P
+       on captures without explicit init.
+       (add_default_capture): Pass explicit_init_p.
+
+       Fix capture by copy of types with explicit copy constructor.
+       * cp-tree.h (TARGET_EXPR_DIRECT_INIT_P): New.
+       (DIRECT_INIT_EXPR_P): New.
+       * typeck.c (convert_for_initialization): Just return if
+       DIRECT_INIT_EXPR_P.
+       * semantics.c (build_lambda_object): Use
+       TARGET_EXPR_DIRECT_INIT_P for normal captures.
+
+2009-10-05  Jason Merrill  <jason@redhat.com>
+
+       * parser.c: Mark lambda_scope and lambda_count for PCH.
+
+2009-10-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41553
+       * parser.c (cp_parser_lambda_introducer): Avoid infinite loop on
+       parse error.
+
+2009-10-02  Jason Merrill  <jason@redhat.com>
+
+       * mangle.c (write_unnamed_type_name): Implement.
+       (local_class_index): Split out from...
+       (discriminator_for_local_entity): ...here.
+       (nested_anon_class_index): New.
+       * cp-tree.h (TYPE_FUNCTION_SCOPE_P): New.
+
+2009-10-02  Janis Johnson  <janis187@us.ibm.com>
+
+       * call.c (convert_arg_to_ellipsis): Avoid promoting decimal32
+       to double.
+
+2009-10-01  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_lambda_expression): Compute visibility.
+       (no_linkage_lambda_type_p): Remove.
+       * cp-tree.h: Remove declaration.
+       * tree.c (no_linkage_check): Don't call it.  Don't check template
+       args.  Don't check TREE_PUBLIC Types.
+
+2009-10-01  Gabriel Dos Reis  <gdr@cse.tamu.edu>
+           Jason Merrill <jason@redhat.com>
+
+       * decl.c (grokdeclarator): Set constexprness before announcing
+       friendship.
+
+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