OSDN Git Service

PR c++/42447
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 0be2491..c39304c 100644 (file)
@@ -1,3 +1,309 @@
+2009-12-28  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42447
+       * pt.c (iterative_hash_template_arg): Don't rely on TYPE_CANONICAL
+       for ARRAY_TYPE.
+
+2009-12-24  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41305, DR 384
+       * name-lookup.c (arg_assoc_class): Split out arg_assoc_class_only
+       and arg_assoc_bases.
+       (friend_of_associated_class_p): Remove.
+       (arg_assoc_namespace): Don't call it.
+       (arg_assoc_template_arg): Use arg_assoc_class_only for member
+       template context.
+       (arg_assoc_type): Handle UNION_TYPE and ENUMERAL_TYPE properly.
+
+       * name-lookup.c (arg_assoc): Handle TEMPLATE_ID_EXPR properly.
+
+2009-12-23  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/42260
+       * cp-tree.h (lookup_conversions): Add new bool parameter to
+       declaration.
+       * search.c (lookup_conversion): Use new bool parameter in
+       definition.
+       * call.c (add_builtin_candidates): Don't lookup template conversion
+       (convert_class_to_reference, build_user_type_conversion_1,
+        build_op_call): Adjust.
+       * cvt.c (build_expr_type_conversion): Likewise
+
+2009-12-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42466
+       * pt.c (reduce_template_parm_level): Check the type before
+       returning cached TEMPLATE_PARM_INDEX.
+
+       PR c++/42331
+       * typeck.c (cp_build_modify_expr): Fix thinko.
+
+2009-12-21  Jason Merrill  <jason@redhat.com>
+
+       * mangle.c (write_member_name): Move abi-version=1 code back to...
+       (write_expression): ...here.
+
+2009-12-21  Brian Hackett  <bhackett1024@gmail.com>
+
+       * decl.c (finish_function): Rename pre-genericize event.
+
+2009-12-19  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/42225
+       * pt.c (push_template_decl_real): Set DECL_CONTEXT of template type parms
+       to their containing template decl.
+       * typeck.c (comp_template_parms_position): Split this from
+       structural_comptypes.
+       (incompatible_template_type_parms_p): Renamed
+       incompatible_dependent_typedefs_p into this. Change the function to
+       handle comparison between TEMPLATE_TYPE_PARMs only.
+       (structural_comptypes): Use comp_template_parms_position in
+       TEMPLATE_TEMPLATE_PARM and BOUND_TEMPLATE_TEMPLATE_PARM cases.
+       Use incompatible_template_type_parms_p in TEMPLATE_TYPE_PARM case.
+       * mangle.c (decl_mangling_context): Template type parms don't have
+       a mangling context.
+       * tree.c (cp_set_underlying_type): Set type structural equality
+       only for TEMPLATE_TYPE_PARMs.
+
+2009-12-18  Jason Merrill  <jason@redhat.com>
+
+       PR c++/28300
+       PR c++/42062
+       * pt.c (check_specialization_namespace): Complain about
+       specialization at non-namespace scope.
+
+       PR c++/42415
+       * call.c (build_new_method_call): Complain about calling the
+       constructor directly.
+
+2009-12-18  Shujing Zhao  <pearly.zhao@oracle.com>
+
+       PR c++/31665
+       * decl.c (duplicate_decls, grokdeclarator): Put the diagnostics in
+       full sentences for easy translation and wrapped into G_().
+       * typeck.c (build_x_unary_op): Likewise.
+
+2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
+
+       * call.c (build_over_call, build_java_interface_fn_ref): Update
+       cp_build_indirect_ref calls.
+       * typeck2.c (build_m_component_ref): Likewise.
+
+2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
+
+       * typeck.c (build_indirect_ref): Update the argument.
+       (build_x_indirect_ref): Likewise.
+       (cp_build_indirect_ref): Update the argument and emit the diagnostics
+       for easy translation.
+       (build_class_member_access_expr, build_array_ref,
+       get_member_function_from_ptrfunc): Update calls.
+       * cp-tree.h (build_x_indirect_ref, cp_build_indirect_ref): Update
+       prototypes.
+       * call.c (build_new_op, convert_like_real, build_x_va_arg,
+       build_over_call): Update calls.
+       * class.c (build_base_path, build_simple_base_path, build_vfn_ref):
+       Likewise.
+       * decl.c (start_preparsed_function): Likewise.
+       * except.c (expand_start_catch_block, build_throw): Likewise.
+       * init.c (emit_mem_initializers, expand_virtual_init,
+       expand_virtual_init, build_new_1, build_vec_init, build_delete,
+       build_vec_delete): Likewise.
+       * parser.c (cp_parser_unary_expression): Likewise.
+       * pt.c (tsubst_copy_and_build): Likewise.
+       * rtti.c (build_headof, get_tinfo_decl_dynamic, get_typeid): Likewise.
+       * semantics.c (finish_non_static_data_member, thisify_lambda_field):
+       Likewise.
+       * tree.c (build_dummy_object, stabilize_expr): Likewise.
+       * typeck2.c (build_x_arrow): Likewise.
+
+2009-12-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42387
+       * decl.c (compute_array_index_type): Mark a VLA as dependent.
+
+2009-12-15  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42358
+       * pt.c (iterative_hash_template_arg): Completely ignore
+       ARGUMENT_PACK_SELECT.
+
+2009-12-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/41183
+       * cp-tree.h (current_class_ptr): Give NULL even when cfun
+       has NULL cfun->language.
+
+2009-12-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42364
+       * pt.c (function_parameter_expanded_from_pack_p): Don't require
+       a pack to have a name.
+       (tsubst_decl): Do typedef magic after applying attributes.
+
+2009-12-15  Paolo Bonzini  <bonzini@gnu.org>
+           Shujing Zhao  <pearly.zhao@oracle.com>
+
+       * Makefile.in (cp/pt.o): Depend on intl.h
+       * call.c (print_z_candidates): Make loop more compact,
+       choose head string depending on number of candidates,
+       extract creation of spaces string to intl.c.
+       * pt.c (print_overloaded_functions): Replace with...
+       (print_candidates_1): ... this rewrite.
+       (print_candidates): Rewrite to call print_candidates_1.
+       (most_specialized_class): Make loop more compact,
+       choose head string depending on number of candidates,
+       and size indents depending on translations.
+
+2009-12-11  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42219
+       * typeck.c (error_type_p): New.
+       (ptr_reasonably_similar): Use it.
+       * cp-tree.h: Declare it.
+
+2009-12-11  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/42225
+       * typeck.c (incompatible_dependent_typedefs_p): New function.
+       (structural_comptypes): Use it.
+       * cp-tree.h (cp_set_underlying_type): Declare ...
+       * tree.c (cp_set_underlying_type): ... new function.
+       * class.c (build_self_reference): Use cp_set_underlying_type
+       instead of set_underlying_type.
+       * decl2.c (grokfield): Likewise.
+       * name-lookup.c (pushdecl_maybe_friend): Likewise.
+
+2009-12-11  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/42251
+       * pt.c (convert_template_argument): Avoid missing folding of SCOPE_REFs.
+
+2009-12-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/42317
+       * decl2.c (cp_write_global_declarations): Clear DECL_EXTERNAL
+       also on all other functions in the same comdat group.
+       * optimize.c (maybe_clone_body): Also optimize virtual implicit
+       dtors.  For virtual comdat dtors tell cgraph that base and deleting
+       dtor are in the same comdat group.
+
+2009-12-04  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42010
+       * cp-tree.h (DECL_DISCRIMINATOR_SET_P): New.
+       * mangle.c (discriminator_for_local_entity): Check it.
+
+       PR c++/42277
+       * semantics.c (finish_decltype_type): Defer handling of decltype
+       of a non-dependent COMPONENT_REF in a template.
+
+2009-12-04  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/42218
+       * cxx-pretty-print.c (pp_cxx_unqualified_id): Print only innermost
+       template arguments.
+
+2009-12-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41611
+       * decl2.c (get_guard): Don't use the same comdat group as the decl.
+
+       PR c++/42266
+       * cvt.c (convert_from_reference): Do nothing if TREE_TYPE is null.
+
+2009-12-03  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/42217
+       * class.c (remove_zero_width_bit_fields): The width of the bit field is
+       in DECL_SIZE, not in DECL_INITIAL.
+
+2009-12-03  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/42256
+       * optimize.c (maybe_clone_body): Call emit_associated_thunks
+       after expand_or_defer_fn_1.
+
+2009-12-02  Taras Glek  <taras@mozilla.com>
+
+       * parser.c (cp_parser_class_specifier): Back out my previous change.
+       * semantics.c (begin_class_definition): Back out my previous change.
+
+2009-12-02  Paolo Bonzini  <bonzini@gnu.org>
+           Shujing Zhao  <pearly.zhao@oracle.com>
+
+       PR c++/29917
+       * call.c (op_error): Accept a boolean to indicate no match/ambiguous
+       match, instead of a string. Callers adjusted.
+
+       PR c++/34836
+       * cp-tree.h (readonly_error_kind): New type.
+       (readonly_error): Adjust prototype with new argument.
+       * typeck2.c (readonly_error): Accept readonly_error_kind as argument
+       and add macro ERROR_FOR_ASSIGNMENT to emit diagnostics.
+       * semantics.c (finish_asm_stmt): Adjust readonly_error call.
+       * typeck.c (cp_build_unary_op, cp_build_modify_expr): Likewise.
+
+       * decl.c (grokparms, grok_op_properties): Put the diagnostics in full
+       sentences for easy translation and wrap the diagnostics into G_() when
+       needed.
+       (create_array_type_for_decl): Likewise.
+       * pt.c (tsubst): Likewise.
+       * typeck2.c (cp_build_unary_op): Wrap diagnostic into _().
+       * rtti.c (build_dynamic_cast_1): Likewise.
+       * Make-lang.in: Adjust.
+
+2009-12-02  Jakub Jelinek  <jakub@redhat.com>
+
+       * g++spec.c (lang_specific_driver): Remove unused saw_verbose_flag
+       variable.
+       * pt.c (tsubst_pack_expansion): Remove unused first_arg_pack variable.
+       * init.c (build_vec_init): Remove unused size variable.
+       * typeck2.c (check_narrowing): Remove unused was_decl variable.
+       * decl.c (poplevel): Remove unused tmp and real_functionbody
+       variables.
+       (decls_match): Remove unused tree_name variable.
+       (start_decl): Remove unused type variable.
+       * parser.c (cp_parser_type_parameter): Remove unused parameter_list
+       variable.
+       (cp_parser_template_id, cp_parser_explicit_instantiation,
+       cp_parser_declarator): Remove unused token variable.
+       (cp_parser_simple_type_specifier): Remove unused id variable.
+       (cp_parser_parameter_declaration): Remove unused
+       greater_than_is_operator_p variable.
+       (cp_parser_check_declarator_template_parameters): Remove unused
+       member variable.
+       (c_parse_file): Remove unused error_occurred variable.
+       * cp-gimplify.c (cp_gimplify_init_expr): Remove unused slot variable.
+       * typeck.c (cp_build_function_call_vec): Remove unused name variable.
+       * class.c (resolve_address_of_overloaded_function): Remove unused
+       is_reference variable.
+       (build_rtti_vtbl_entries): Remove unused basetype variable.
+       * mangle.c (write_template_param): Remove unused parm_level and
+       parm_type variables.
+
+2009-12-01  Taras Glek  <taras@mozilla.com>
+
+       * parser.c (cp_parser_class_specifier): Set class location to that
+       of IDENTIFIER_NODE instead of '{' when possible.
+
+2009-12-01  Taras Glek  <taras@mozilla.com>
+
+       * semantics.c (begin_class_definition): Do not overide locations with less precise ones.
+
+2009-12-01  Jason Merrill  <jason@redhat.com>
+
+       PR c++/41611
+       * decl2.c (get_guard): Copy DECL_COMDAT.
+       (comdat_linkage): Set DECL_COMDAT unconditionally.
+
+2009-12-01  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/3187
+       * optimize.c (cdtor_comdat_group): New function.
+       (maybe_clone_body): Also optimize DECL_COMDAT base/complete cdtors
+       and in that case put also the deleting dtor in the same comdat group
+       as base and complete dtor if dtor is virtual.
+
 2009-11-30  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/40371