OSDN Git Service

2009-07-14 Taras Glek <tglek@mozilla.com>
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 200ce5a..4265fa9 100644 (file)
@@ -1,3 +1,493 @@
+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
+       * error.c (cp_print_error_function): Check for NULL block.
+
+2008-07-09  Simon Martin  <simartin@users.sourceforge.net>
+           Jason Merrill  <jason@redhat.com>
+
+       * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
+       append_type_to_template_for_access_check_1): Use CLASS_TYPE_P.
+
+2009-07-09  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/40684
+       * pt.c (type_unification_real): Use tsubst_template_arg instead
+       of tsubst to substitute default template arguments.
+
+2009-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       PR c++/31246
+       * init.c (build_new_1): Set TREE_NO_WARNING for compiler-generated
+       code.
+       * cp-gimplify.c (genericize_eh_spec_block): Likewise.
+       
+
+2009-07-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/35828
+       * pt.c (tsubst_decl): Don't abort if we didn't change anything
+       in a TEMPLATE_DECL's args.
+
+2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * semantics.c (finalize_nrv_r): Replace EXPR_LOCUS by
+       EXPR_LOCATION.
+       
+2009-07-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/37816
+       * decl.c (build_enumerator): Don't add enumerators for a
+       scoped enum to the enclosing class.
+
+       PR c++/40639
+       * decl.c (start_enum): Allow dependent underlying type.
+
+       PR c++/40633
+       * decl.c (finish_enum): Finish scope even in a template.
+
+2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * init.c: Replace %J by an explicit location. Update all calls.
+       * decl.c: Likewise.
+       * typeck2.c: Likewise.
+       * pt.c: Likewise.
+       * name-lookup.c: Likewise.
+       
+2009-07-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+
+       * decl.c: Replace %H by an explicit location. Update all calls.
+       * except.c: Likewise.
+       * semantics.c: Likewise.
+       * parser.c: Likewise.
+
+2009-07-06  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/40557
+       * pt.c (perform_typedefs_access_check, get_types_needing_access_check,
+       append_type_to_template_for_access_check_1): Use
+       RECORD_OR_UNION_CODE_P.
+
+2009-07-04  Jason Merrill  <jason@redhat.com>
+
+       * pt.c (retrieve_specialization): Don't get confused by a
+       using-declaration that brings in another instance of this template
+       from a base class.
+
+       * ptree.c (cxx_print_type): Fix logic.
+
+       * cp-tree.h (LANG_DECL_FN_CHECK): Fix non-checking version.
+
+       PR c++/40619
+       * cp-tree.h (struct lang_decl_parm): New.
+       (struct lang_decl): Add it.
+       (LANG_DECL_PARM_CHECK): New.
+       (DECL_PARM_INDEX): New.
+       * decl2.c (parm_index): Remove.
+       * lex.c (retrofit_lang_decl): Handle parms.
+       (cxx_dup_lang_specific_decl): Likewise.
+       * mangle.c (write_expression): Adjust.
+       * tree.c (cp_tree_equal): Adjust.
+       (decl_linkage): Only check DECL_COMDAT for functions and variables.
+       * parser.c (cp_parser_parameter_declaration_list): Set
+       DECL_PARM_INDEX.
+       * pt.c (iterative_hash_template_arg): Hash it.
+
+2009-07-03  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (struct lang_decl): Overhaul.
+       (struct lang_decl_flags): Remove.
+       (struct lang_decl_base): New.
+       (struct lang_decl_min): New.
+       (struct lang_decl_fn): New.
+       (struct lang_decl_ns): New.
+       (CAN_HAVE_FULL_LANG_DECL_P): Replace with LANG_DECL_HAS_MIN.
+       (LANG_DECL_MIN_CHECK): New.
+       (LANG_DECL_FN_CHECK): New.
+       (LANG_DECL_NS_CHECK): New.
+       (STRIP_TEMPLATE): New.
+       (NON_THUNK_FUNCTION_CHECK): Remove.
+       (DECL_DECLARES_FUNCTION_P): New.
+       (lots): Adjust.
+       * lex.c (retrofit_lang_decl, cxx_dup_lang_specific_decl): Adjust.
+       * decl.c (push_local_name, duplicate_decls): Adjust.
+       * decl2.c (start_objects): Don't set u2sel.
+       * semantics.c (finish_omp_threadprivate): Adjust.
+       * class.c (build_clone): Don't do much on TEMPLATE_DECLs.
+       (decl_cloned_function_p): Out-of-line implementation of macros.
+       (clone_function_decl, adjust_clone_args): Use DECL_CLONED_FUNCTION_P.
+       * mangle.c (write_unqualified_name): Don't check function flags
+       on non-functions.
+       * method.c (make_alias_for): Don't set DECL_CLONED_FUNCTION.
+       * pt.c (build_template_decl): Don't set function flags.
+       (check_default_tmpl_args): Check that it's a function.
+       (instantiate_template): Use DECL_ABSTRACT_ORIGIN to find the
+       cloned template.
+
+       * pt.c (tsubst_decl) [FUNCTION_DECL]: Don't tsubst
+       DECL_CLONED_FUNCTION.
+
+       * cp-tree.h (struct lang_type_class): Move sorted_fields here.
+       * class.c (finish_struct_1): Adjust.
+       * ptree.c (cxx_print_decl, cxx_print_type): Adjust.
+       * search.c (lookup_field_1): Adjust.
+
+       * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Remove.
+       * decl.c (finish_method): Don't add to it.
+       * class.c (fixup_pending_inline): Remove.
+       (fixup_inline_methods): Remove.
+       (finish_struct_1): Don't call it.
+
+       * error.c (dump_function_name): Handle null name.
+
+2009-07-02  Mark Mitchell  <mark@codesourcery.com>
+
+       * typeck.c (cp_build_binary_op): Move warnings about use of NULL
+       in arithmetic earlier and allow comparisions of NULL with
+       pointers-to-members.
+
+2009-07-02  Jason Merrill  <jason@redhat.com>
+
+       Use hash tables for template specialization lookup.
+       * pt.c (struct spec_entry): New type.
+       (decl_specializations, type_specializations): New hash tables.
+       (register_specialization, retrieve_specialization): Use them.
+       (reregister_specialization, lookup_template_class): Use them.
+       (eq_specializations, hash_tmpl_and_args, hash_specialization): New.
+       (iterative_hash_template_arg): New.
+       (init_template_processing): New
+       (process_partial_specialization): Don't look to see if we already
+       have this partial specialization.
+       (maybe_process_partial_specialization): Handle reassigning
+       full specializations when we get an explicit specialization
+       of the partial instantiation.
+       (tsubst_friend_function): Adjust specialization reassignment code.
+       (instantiate_template): Only do one lookup.
+       (instantiate_decl): Don't do any lookup.
+       * cp-tree.h: Declare init_template_processing.
+       * decl.c (duplicate_decls): Pass args to reregister_specialization.
+
+2009-07-01  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (DECL_CLASS_TEMPLATE_P): Use DECL_IMPLICIT_TYPEDEF_P.
+
+       * pt.c (register_specialization): Use duplicate_decls to merge
+       the argument with a previous specialization.
+       (check_explicit_specialization): Call register_specialization to
+       merge the TEMPLATE_DECL with a previous version.
+       (determine_specialization): Return the args even if fn is a template.
+
+2009-07-01  Ian Lance Taylor  <iant@google.com>
+
+       * g++spec.c (lang_specific_driver): Bump num_args by 1.
+
+2009-06-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/40595
+       * pt.c (tsubst_pack_expansion): Handle unexpanded packs in an
+       EXPR_PACK_EXPANSION.
+
+2009-06-29  Jason Merrill  <jason@redhat.com>
+
+       PR c++/40274
+       * error.c (dump_template_parms): Pass all args to
+       count_non_default_template_args.
+       (count_non_default_template_args): Pull out the inner ones.
+
+2009-06-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * decl.c (duplicate_decls): Re-indent.
+
+2009-06-25  Ian Lance Taylor  <iant@google.com>
+
+       * call.c (avoid_sign_compare_warnings): New static function.
+       (build_new_op): Call it.
+       * typeck.c (cp_build_binary_op): Don't call warn_sign_compare if
+       TREE_NO_WARNING is set on either operand.
+
+2009-06-25  Ian Lance Taylor  <iant@google.com>
+
+       * g++spec.c (SKIPOPT): define.
+       (lang_specific_driver): Handle -static-libstdc++.  Only add
+       LIBSTDCXX_STATIC if we add LIBSTDCXX.
+
+2009-06-25  Ian Lance Taylor  <iant@google.com>
+
+       * cvt.c (convert_to_void): Only warn about COND_EXPR if neither
+       the second nor third operand has side effects.
+
+2009-06-25  Ian Lance Taylor  <iant@google.com>
+
+       * parser.c (cp_parser_binary_expression): Increment
+       c_inhibit_evaluation_warnings while parsing the right hand side of
+       "true || x" or "false && x".
+       * typeck.c (cp_build_binary_op): Only call warn_for_sign_compare
+       if c_inhibit_evaluation_warnings is zero.
+
+2009-06-24  Jason Merrill  <jason@redhat.com>
+
+       * error.c (dump_decl): Do say "typedef" for the injected class name.
+
+       * pt.c (lookup_template_class): Use currently_open_class,
+       compare template args later.
+
+       PR c++/40342
+       * decl.c (decls_match): Check DECL_TI_TEMPLATE too.
+       * class.c (resolve_address_of_overloaded_function): Fix typo.
+
+2009-06-18  Aldy Hernandez  <aldyh@redhat.com>
+
+       * class.c (get_vtable_decl): Replace finish_decl with cp_finish_decl.
+       * decl.c (finish_decl): Remove.
+       (declare_global_var): Replace finish_decl with cp_finish_decl.
+       (start_method): Same.
+       * rtti.c (emit_tinfo_decl): Same.
+       * pt.c (tsubst_expr): Same.
+       (instantiate_decl): Same.
+       * decl2.c (grokbitfield): Same.
+       * name-lookup.c (pushdecl_top_level_1): Same.
+       * cp-tree.h: Remove finish_decl.
+
+2009-06-16  David Edelsohn  <edelsohn@gnu.org>
+
+       * g++-spec.c (LIBSTDCXX_STATIC): Default to NULL.
+       (lang_specific_driver): Always allocate extra argument.
+       Add LIBSTDCXX_STATIC to arglist if defined and linking
+       statically.
+
+2009-06-16  Ian Lance Taylor  <iant@google.com>
+
+       * Make-lang.in (cp/class.o): Depend upon gt-cp-class.h.
+       (cp/semantics.o): Depend upon gt-cp-semantics.h.
+
+2009-06-16  Ian Lance Taylor  <iant@google.com>
+
+       * parser.c (cp_unevaluated_operand): Define global variable.
+       (cp_parser_question_colon_clause): Increment
+       c_inhibit_evaluation_warnings when evaluating an expression which
+       will never be executed.
+       (cp_parser_decltype): Increment cp_unevaluated_operand and
+       c_inhibit_evaluation_warnings, not skip_evaluation.
+       (cp_parser_sizeof_operand): Likewise.
+       (cp_parser_enclosed_template_argument_list): Save
+       cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
+       skip_evaluation.
+       * cp-tree.h (struct saved_scope): Remove skip_evaluation field.
+       Add unevaluated_operand and inhibit_evaluation_warnings fields.
+       (cp_unevaluated_operand): Declare.
+       * name-lookup.c (push_to_top_level): Save cp_unevaluated_operand
+       and c_inhibit_evaluation_warnings rather than skip_evaluation.
+       (pop_from_top_level): Restore cp_unevaluated_operand and
+       c_inhibit_evaluation_warnings rather than skip_evaluation.
+       * class.c (build_base_path): Check cp_unevaluated_operand rather
+       than skip_evaluation.
+       * typeck.c (build_class_member_access_expr): Likewise.
+       (cp_build_binary_op): Don't warn about bad shift counts if
+       c_inhibit_evaluation_warnings is non-zero.
+       * pt.c (coerce_template_parms): Save state of
+       cp_unevaluated_operand and c_inhibit_evaluation_warnings, not
+       skip_evaluation.
+       (tsubst_aggr_type): Likewise.
+       (tsubst_pack_expansion): Check cp_unevaluated_operand rather than
+       skip_evaluation.
+       (tsubst_copy): Likewise.
+       (tsubst): Set cp_unevaluated_operand and
+       c_inhibit_evaluation_warnings, not skip_evaluation.
+       (tsubst_copy_and_build): Likewise.
+       * call.c (convert_arg_to_ellipsis): Check cp_unevaluated_operand
+       rather than skip_evaluation.
+       * decl2.c (mark_used): Likewise.
+       * semantics.c (finish_non_static_data_member): Likewise.
+       * cvt.c (cp_convert_and_check): Check
+       c_inhibit_evaluation_warnings rather than skip_evaluation.
+       * mangle.c (write_type): Set cp_unevaluated_operand rather than
+       skip_evaluation.
+
+2009-06-15  Ian Lance Taylor  <iant@google.com>
+
+       * parser.c (cp_parser_direct_declarator): Add braces around
+       variables declared before label.
+
+2009-06-15  Rafael Avila de Espindola  <espindola@google.com>
+
+       * cp-objcp-common.h (LANG_HOOKS_COMDAT_GROUP): Remove.
+       * cp-tree.h (cxx_comdat_group): Change signature.
+       * decl.c (duplicate_decls): Use DECL_COMDAT_GROUP.
+       (cxx_comdat_group): Change signature.
+       * decl2.c (comdat_linkage, maybe_make_one_only): Update call to
+       make_decl_one_only.
+       (constrain_visibility, get_guard): Use DECL_COMDAT_GROUP.
+       * method.c (use_thunk): Update call to make_decl_one_only.
+       * optimize.c (maybe_clone_body): Use DECL_COMDAT_GROUP
+
+2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
+
+       * typeck.c (cp_build_binary_op): Pass location to overflow_warning.
+       (build_modify_expr): New arg.
+       * semantics.c (finish_unary_op_expr): Pass location to
+       overflow_warning.
+       (handle_omp_for_class_iterator): Pass location to build_modify_expr.
+       * typeck.c (cxx_sizeof_or_alignof_type): Pass location to
+       c_sizeof_or_alignof_type.
+       (build_array_ref): New argument.
+       (build_compound_expr): Same.
+       (build_const_cast): Same.
+       (build_ptrmemfunc): Pass location to build_c_cast.
+       * init.c (avoid_placement_new_aliasing): Pass location to
+       build_stmt.
+       (build_vec_delete_1): Pass location to cp_build_modify_expr,
+       build_compound_expr.
+       * class.c (build_vtbl_ref_1): Pass location to build_array_ref.
+       * decl.c (poplevel): Pass location to c_build_bind_expr.
+       (finish_case_label): Pass location to build_case_label.
+       (finish_constructor_body): Same.
+       (finish_destructor_body): Pass location to build_stmt.
+       (cxx_maybe_build_cleanup): Same, but to build_compound_expr.
+       * call.c (build_new_op): Pass location to build_array_ref.
+       (build_x_va_arg): Pass location to build_va_arg.
+       * except.c (expand_end_catch_block): Pass location to
+       build_stmt.
+       * cp-tree.h (build_array_ref): New argument.
+       (build_compound_expr): Same.
+       (build_c_cast): Same.
+       * cp-gimplify.c (gimplify_if_stmt): Pass location on down.
+       (gimplify_switch_stmt): Same.
+       * typeck2.c (split_nonconstant_init_1): Same.
+       * pt.c (tsubst_copy): Same.
+       * semantics.c (add_decl_expr): Same.
+       (do_poplevel): Same.
+       (push_cleanup): Same.
+       (finish_goto_stmt): Same.
+       (finish_expr_stmt): Same.
+       (begin_if_stmt): Same.
+       (begin_while_stmt): Same.
+       (begin_do_stmt): Same.
+       (finish_return_stmt): Same.
+       (begin_for_stmt): Same.
+       (finish_break_stmt): Same.
+       (finish_continue_stmt): Same.
+       (begin_switch_stmt): Same.
+       (begin_try_block): Same.
+       (begin_handler): Same.
+       (finish_asm_stmt): Same.
+       (finish_label_stmt): Same.
+       (finish_stmt_expr_expr): Same.
+       (finalize_nrv_r): Same.
+       (finish_omp_atomic): Same.
+       * name-lookup.c (do_using_directive): Same.
+       * decl2.c (grok_array_decl): Same.
+       * parser.c (cp_parser_cast_expression): Same.
+       (cp_parser_selection_statement): Same.
+       (cp_parser_implicitly_scoped_statement): Same.
+       (cp_parser_objc_selector_expression): Same.
+       (cp_parser_objc_synchronized_statement): Same.
+       (cp_parser_objc_throw_statement): Same.
+       (cp_parser_omp_critical): Same.
+       (cp_parser_omp_master): Same.
+       * typeck.c (build_function_call): Add location argument.
+       * init.c: Add location argument to all build_decl calls.
+       * class.c: Same.
+       * method.c: Same.
+       * rtti.c: Same.
+       * tree.c: Same.
+       * pt.c: Same.
+       * semantics.c: Same.
+       * lex.c: Same.
+       * decl2.c: Same.
+       * cp-gimplify.c: Same.
+       * decl.c: Same.
+       (cp_make_fname_decl): Add location argument.  Pass location ot
+       build_decl.
+       (finish_case_label): Same.
+       * cp-tree.h (finish_case_label): Add location argument.
+       * parser.c (cp_parser_label_for_labeled_statement): Pass location to
+       finish_case_label.
+       
+2009-06-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/40381
+       * decl2.c (mark_used): Return after complaining about deleted fn.
+
+2009-06-08  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_type_id_1): 'auto' type is ok with a
+       late-specified return type.
+
+2009-06-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/40373
+       * call.c (check_dtor_name): Return false even if
+       get_type_value (name) is error_mark_node.
+
+       PR c++/40370
+       PR c++/40372
+       * parser.c (cp_parser_direct_declarator): Don't set TREE_SIDE_EFFECTS
+       on error_mark_node.  Check for VLAs outside of function context
+       before check whether to wrap bounds into a NOP_EXPR with
+       TREE_SIDE_EFFECTS.
+
+2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
+
+       * repo.c (get_base_filename): Use aux_base_name rather than
+       alternate temporary file during second compare debug compilation.
+       (finish_repo): Skip during -fcompare-debug-second.
+
 2009-06-06  Ian Lance Taylor  <iant@google.com>
 
        * parser.c (cp_parser_label_for_labeled_statement): Support