X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fcp%2FChangeLog;h=dee7410600dfbdd78015cf2918446c1f21a803f2;hp=97ba8261459c33498a39d35c1ad56debc67aa91c;hb=d246ef3665dc8e1504a9719b287a88f5a189ef01;hpb=03798958e72f0cbe633321977d6147482ea3d558 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 97ba8261459..dee7410600d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,640 @@ +2005-10-21 Mark Mitchell + + PR c++/24260 + * parser.c (cp_parser_init_declarator): Pass attributes to + grokfield. + +2005-10-20 Mark Mitchell + + PR c++/22618 + * search.c (accessible_p): Check access in the outermost set of + template parameters. + +2005-10-20 Richard Guenther + + * decl.c (grokdeclarator): Fix ambiguous pedwarn message. + +2005-10-18 Volker Reichelt + + PR c++/22293 + * decl.c (grokdeclarator): Reject unqualified destructors in + friend declarations. + +2005-10-18 Mark Mitchell + + PR c++/23293 + * pt.c (convert_template_argument): Use canonical type variants in + template specializations. + +2005-10-18 Nathan Sidwell + + PR c++/21383 + * name-lookup.c (arg_assoc): Template args can be null in a + template-id-expr. + + PR c++/22604 + * class.c (update_vtable_entry_for_fn): Don't process invalid + covariant overriders. + + PR c++/23118 + * cp-tree.h (add_method): Add return value. + * class.c (add_method): Return success indicator. + * semantics.c (finish_member_declaration): Don't add an invalid + method to the method list. + +2005-10-17 Mark Mitchell + + PR c++/21908 + * call.c (build_new_method_call): Do not show VTT parameters to + the user. + +2005-10-17 Volker Reichelt + + PR c++/23440 + * parser.c (cp_parser_statement): If the parser reached CPP_EOF, + only complain about missing statement. + +2005-10-17 Nathan Sidwell + + PR c++/24386 + * cp-tree.h (BASELINK_QUALIFIED_P): New. + * pt.c (tsubst_copy_and_build): : Use it. + * typeck.c (finish_class_member_access_expr): Set it. + + PR c++/21353 + * decl.c (check_default_argument): Don't check + processing_template_decl or uses_template_parms here. + (grokparms): Only call check_default_argument when not processing + a template decl. + * parser.c (cp_parser_late_parsing_default_arg): Call + check_default_argument when not processing a template decl. + +2005-10-16 Mark Mitchell + + PR c++/24389 + * decl2.c (mark_used): Use uses_template_parms instead of + dependent_type_p. + * init.c (constant_value_1): Handle uninstantiated templates + specially. + * pt.c (instantiate_decl): Add sanity check. + +2005-10-16 Mark Mitchell + + PR c++/22173 + * typeck.c (check_template_keyword): Fix thinko. + +2005-10-16 Andrew Pinski + + PR c++/23959 + * decl.c (pop_switch): Only call c_do_switch_warnings + when not processing templates. + +2005-10-16 Mark Mitchell + + PR c++/22173 + * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro. + (check_template_keyword): New function. + (finish_id_expression): Change prototoype. + (finish_qualified_id_expr): Change prototype. + (build_qualified_name): New function. + (finish_class_member_access_expr): Change prototype. + * init.c (build_offset_ref): Use build_qualified_name. + * mangle.c (write_expression): Likewise. + * parser.c (cp_parser_primary_expression): Remove qualifying_class + parameter. Add address_p and template_arg_p. Use + build_qualified_name. + (cp_parser_id_expression): Default *template_p to + template_keyword_p. Check for invalid uses of the template + keyword. + (cp_parser_postfix_expression): Eliminate special handling for + qualified names. Adjust call to cp_parser_primary_expression. + (cp_parser_postfix_dot_deref_expression): Adjust call to + cp_parser_id_expression and finish_class_member_access_expr. + (cp_parser_template_argument_list): Add comment. + (cp_parser_template_argument): Adjust use of + cp_parser_primary_expression. Remove call to + finish_qualified_id_expr. + (cp_parser_lookup_name): Use build_qualified_name. + * pt.c (tsubst): Use build_qualified_name. + (tsubst_qualified_id): Likewise. Adjust call to + finish_qualified_id_expr. + (tsubst_copy): Use build_qualified_name. + (tsubst_copy_and_build): Adjusts call to finish_id_expression and + finish_class_member_access_expr. + * semantics.c (finish_non_static_data_member): Use + build_qualified_name. + (finish_qualified_id_expr): Add template_p and template_arg_p + parameters. + (finish_id_expression): Remove qualifiying_class parameter. Add + template_p, done, address_p, and template_arg_p. Use + build_qualified_name. Adjust calls to + finish_class_member_acess_expr. + * tree.c (build_qualified_name): New function. + * typeck.c (check_template_keyword): New function. + (finish_class_member_access_expr): Add template_p argument. Check + for invalid uses of the template keyword. + +2005-10-15 Mark Mitchell + + PR c++/21347 + * class.c (maybe_warn_about_overly_private_class): Lazy + constructors are public. + +2005-10-14 Mark Mitchell + + PR c++/19565 + * call.c (convert_like_real): Rely on convert_and_check to issue + warnings about overflow and conversion to unsigned. + * decl.c (finish_enum): Use the location of the enumerators, not + the closing brace of the enumeration, when reporting warnings + about conversions. + (build_enumerator): Use error_mark_node for erroneous values. + * typeck2.c (digest_init): Remove reference to "signature pointer" + from comment. + +2005-10-14 Nathan Sidwell + + PR c++/17796 + * optimize.c (update_cloned_parm): Add FIRST parameter. Use it. + (maybe_clone_body): Track the first clone. + +2005-10-13 Nathan Sidwell + + PR c++/23984 + * class.c (build_base_path): The vtable is always the first thing + in the vtt. + +2005-10-13 Mark Mitchell + + PR c++/20721 + * cp-tree.h (DECL_NONTRIVIALLY_INITIALIZED_P): New macro. + * decl.c (duplicate_decls): Merge it into new declarations. + (decl_jump_unsafe): Use it, rather than DECL_INITIAL. + (cp_finish_decl): Set it, when appropriate. + + PR c++/22180 + * call.c (build_new_method_call): Correct pretty-printing of + destructor names. + * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an + identifier. + + PR c++/23694 + * decl.c (start_method): Return error_mark_node for errors. + + PR c++/23307 + * pt.c (push_template_decl_real): Complain about attempts to + declare template variables. + + PR c++/22352 + * pt.c (tsubst_template_parms): Set processing_template_decl while + processing the parameters. + (tsubst_decl): Set processing_template_decl when substituting into + a TEMPLATE_DECL. + + PR c++/22405 + * pt.c (most_specialized_instantiation): Robustify. + + PR c++/22464 + * semantics.c (finish_id_expression): Issue errors about uses of + local variables in containing functions even in templates. + +2005-10-12 Danny Smith + + PR target/21801 + PR target/23589 + * class.c (finish_struct_1): Call + targetm.cxx.adjust_class_at_definition. + + +2005-10-12 Nathan Sidwell + + PR c++/21592 + * pt.c (build_non_dependent_expr): Don't wrap a COMPONENT_REF + with already looked up member functions. Assert we're not + returning a NON_DEPENDENT_EXPR with unknown type. + * typeck.c (finish_class_member_access_expr): We can get + non-template-id-expr baselinks. If the lookup finds a baselink, + remember it even inside templates. + + PR c++/23797 + * parser.c (cp_parser_functional_cast): Cope when TYPE is not a + TYPE_DECL. Use dependent_type_p to check type. + * pt.c (uses_template_parms_p): Use dependent_type_p for a + TYPE_DECL. + (type_dependent_expression_p): Assert we've not been given a + TYPE_DECL. + + PR c++/21117 + * decl.c (check_function_type): Correctly overwrite incomplete + return type with void type. + * typeck.c (check_return_expr): If the function's return type is + void, don't try and convert a return expr. + +2005-10-12 David Edelsohn + + PR c++/23730 + * call.c (build_object_call): If BINFO is NULL, bypass + lookup_fnfields and set fns to NULL_TREE. + +2005-10-12 Paolo Bonzini + + PR c++/24052 + * error.c (dump_expr): Pass LABEL_DECL to dump_decl. Print + an ADDR_EXPR of a LABEL_DECL as &&. + +2005-10-12 Nathan Sidwell + + PR c++/19964 + * class.c (walk_subobject_offsets): Don't walk error_mark_node. + +2005-10-11 Ian Lance Taylor + + PR c++/8057 + * cvt.c (convert_to_void): Don't warn about unused values when + processing a template declaration. + +2005-10-11 Mark Mitchell + + PR c++/21089 + * call.c (convert_like_real): Use decl_constant_value, not + integral_constant_value. + * init.c (constant_value_1): New function. + (integral_constant_value): Use it. + (decl_constant_value): Likewise. + * typeck.c (decay_conversion): Use decl_constant_value, not + integral_constant_value. + + PR c++/21369 + * parser.c (cp_parser_elaborated_type_specifier): Don't treat + class types as templates if the type is not appearing as part of a + type definition or declaration. + +2005-10-10 Mark Mitchell + + PR c++/24277 + * pt.c (instantiate_decl): Call finish_static_data_member_decl for + static data members. + +2005-10-10 Giovanni Bajo + Mark Mitchell + + PR c++/23437 + * parser.c (cp_parser_template_argument_list): Do not treat + contents of argument list as part of a constant expression. + +2005-10-10 Mark Mitchell + + PR c++/24139 + * decl.c (grokdeclarator): Do not require template parameter lists + for explicitly specialized class. + * error.c (dump_aggr_type): Do not dump template arguments for + non-primary specializations. + (dump_function_name): Likewise. + + PR c++/24275 + * pt.c (instantiate_decl): Instantiate the initializer of + a static data member in the namespace containing the class + containing the static data member. + +2005-10-08 James A. Morrison + + PR c++/22172 + * parser.c (cp_parser_postfix_expression) : Treat nontype + scopes as nondependent. + +2005-10-06 Volker Reichelt + + * call.c (resolve_args): Remove redundant test. + +2005-10-05 Paolo Bonzini + + PR tree-optimization/21419 + PR tree-optimization/24146 + PR tree-optimization/24151 + + * semantics.c (finish_asm_stmt): Call readonly_error if outputs are + read-only. Set ASM_VOLATILE_P for asms without outputs. + +2005-10-05 Nathan Sidwell + + PR c++/23513 + * call.c (joust): Adjust length count to more_specialized_fn. + * pt.c (more_specialized_fn): Cope with non-static member vs + non-member. + +2005-10-04 Andrew Pinski + + PR middle-end/23125 + * decl.c (make_rtl_for_nonlocal_decl): Use set_user_assembler_name + instead of change_decl_assembler_name. + +2005-10-03 Alexandre Oliva + + * error.c (dump_type) : Print reworded message. + +2005-10-03 Mark Mitchell + + PR c++/17775 + * repo.c: Include flags.h. + (finish_repo): Add -frandom-seed to the arguments. + +2005-10-02 Mark Mitchell + + PR c++/22621 + * parser.c (cp_parser_template_argument): Don't turn "T::f" into + "(*this).T::f". + * pt.c (convert_nontype_argument): Remove ??? comment. + + PR c++/23840 + * tree.c (lvalue_p_1): A VA_ARG_EXPR with class type is an lvalue, + when class rvalues are lvalues. + +2005-09-28 Mark Mitchell + + PR c++/16782 + * decl.c (grokdeclarator): Always pedwarn about overqualified + member names. + +2005-09-27 Mark Mitchell + + PR c++/22147 + * name-lookup.c (maybe_process_template_type_declaration): Don't + treat forward declarations of classes as templates just because + we're processing_template_decl. + * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend + functions. + +2005-09-26 Jason Merrill + + PR c++/13764 + * cp-tree.h (FUNCTION_NEEDS_BODY_BLOCK): New macro. + * name-lookup.c (pushdecl_maybe_friend): Check it. + * decl.c (begin_function_body): Do nothing if it's false. + (finish_function_body): Ditto. + (outer_curly_brace_block): New fn. + (finish_function): Use it. + +2005-09-26 Richard Guenther + + PR middle-end/15855 + * decl2.c (do_static_destruction): Remove. + (finish_static_initialization_or_destruction): Likewise. + (DECL_EFFECTIVE_INIT_PRIORITY): New macro. + (NEEDS_GUARD_P): Likewise. + (do_static_initialization): Rename to + do_static_initialization_or_destruction. Process all + initializers/destructors and handle common conditionalizing. + (start_static_initialization_or_destruction): Rename to + one_static_initialization_or_destruction. Handle only + decl-specific conditionalizing. + (cp_finish_file): Call do_static_initialization_or_destruction. + +2005-09-22 Jakub Jelinek + + PR c++/21983 + * class.c (find_final_overrider): Move diagnostic about no unique final + overrider to... + (update_vtable_entry_for_fn): ... here. + +2005-09-21 Mark Mitchell + + PR c++/23993 + * init.c (integral_constant_value): Use DECL_INTEGRAL_CONSTANT_VAR_P. + +2005-09-21 Volker Reichelt + + PR c++/23965 + * call.c (resolve_args): Return error_mark_node on arguments + whose TREE_TYPE is error_mark_node. + +2005-09-20 Jakub Jelinek + + PR c++/23947 + * rtti.c (get_pseudo_ti_init): Recompute ti pointer after + get_tinfo_ptr calls. + +2005-09-16 Mark Mitchell + + PR c++/23914 + * parser.c (cp_parser_enclosed_template_argument_list): Make sure + skip_evaluation is false when processing template arguments. + + PR c++/21514 + * pt.c (check_instantiated_args): Treat uses of anonymous types as + causing type-deduction failure. + +2005-09-15 Jason Merrill + + PR c++/23357 + * cp-tree.def (SIZEOF_EXPR, ALIGNOF_EXPR): Change code class to + tcc_expression. + +2005-09-15 Mark Mitchell + + PR c++/23896 + * pt.c (tsubst_aggr_type): Make sure skip_evaluation is false when + processing template arguments. + + * pt.c (check_explicit_instantiation_namespace): Fix typo. + + PR c++/13140 + * decl.c (check_class_member_definition_namespace): New function. + (grokfndecl): Use it. + (grokvardecl): Likewise. + (grokdecl): Improve documentation. + * pt.c (check_explicit_instantiation_namespace): New function. + (register_specialization): Call check_specialization_namespace + when replacing an implicitly instantiated function. + (check_explicit_specialization): Ensure that DECL_CONTEXT is set + correctly for namespace-scope specializations. + (do_decl_instantiation): Use + check_explicit_instantiation_namespace. + (do_type_instantiation): Likewise. + +2005-09-15 Nathan Sidwell + + PR c++/23725 + * error.c (dump_decl): Use USING_DECL_SCOPE. + +2005-09-13 Bastian Blank + + PR c++/16171 + * mangle.c (find_substitution): Do not use special substitutions + for identifiers not in std::. + +2005-09-13 Mark Mitchell + + PR c++/23839 + * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER + for VAR_DECLs. + +2005-09-13 Mark Mitchell + + PR c++/23842 + * pt.c (tsubst_default_argument): Do treat default argument + expressions as occurring in the context of the function called. + +2005-09-12 Mark Mitchell + + PR c++/23841 + * parser.c (cp_parser_primary_expression): Recognize the closing + ">" of a template-argument-list after a floating-point literal as + the end of a cast expression. + +2005-09-12 Mark Mitchell + + PR c++/23789 + * cvt.c (perform_qualification_conversions): Don't create + unnecessary NOP_EXPRs. + * pt.c (tsubst_template_arg): Use fold_non_dependent_expr. + +2005-09-12 Ian Lance Taylor + + PR g++/7874 + * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p + bitfield. Make dummy bitfield one bit smaller. + (DECL_HIDDEN_FRIEND_P): Define. + (pushdecl_maybe_friend): Declare. + (pushdecl_top_level_maybe_friend): Declare. + * decl.c (duplicate_decls): Add newdecl_is_friend parameter. + Change prototype and all callers. Add assertion that a + DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P. Set + DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if + appropriate. + * name-lookup.c (supplement_binding): Don't ignore a + DECL_HIDDEN_FRIEND_P. + (pushdecl_maybe_friend): Break out contents of pushdecl. Add + is_friend parameter. Set DECL_ANTICIPATED and + DECL_HIDDEN_FRIEND_P for a friend function. + (pushdecl): Just call pushdecl_maybe_friend. + (pushdecl_with_scope): Add is_friend parameter. Change prototype + and all callers. + (pushdecl_namespace_level): Likewise. + (push_overloaded_decl): Likewise. Check DECL_HIDDEN_FRIEND_P as + well as DECL_ANTICIPATED when checking for a builtin. + (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as + DECL_ANTICIPATED when checking for a builtin. + (do_nonmember_using_decl): Likewise. + (pushdecl_top_level_1): Add is_friend parameter. Change all + callers. + (pushdecl_top_level_maybe_friend): New function. + (remove_hidden_names): New function. + (struct arg_lookup): Add args field. + (friend_of_associated_class_p): New static function. + (arg_assoc_namespace): Ignore hidden functions which are not + friends of an associated class of some argument. + (lookup_arg_dependent): Remove hidden functions from list passed + in. Initialize k.args. + * name-lookup.h (remove_hidden_names): Declare. + * friend.c (do_friend): Call pushdecl_maybe_friend instead of + pushdecl. + * call.c (add_function_candidate): Change DECL_ANTICIPATED test to + an assertion, with a check for DECL_HIDDEN_FRIEND_P. + (build_new_function_call): Add koenig_p parameter. Change + prototype and callers. + * pt.c (register_specialization): Add is_friend parameter. Change + all callers. + (push_template_decl_real): Change is_friend parameter to bool. + Change prototype and all callers. + (tsubst_friend_class): Call pushdecl_top_level_maybe_friend + instead of pushdecl_top_level. + +2005-09-11 Richard Henderson + + * decl2.c (build_anon_union_vars): Copy attributes from the base addr. + * pt.c (tsubst_decl): Substitute in DECL_VALUE_EXPR. + +2005-09-09 Gabriel Dos Reis + + * parser.c (cp_parser_translation_unit): Simplify. The while-block + was actually executed at most once. + +2005-09-09 Richard Henderson + + PR debug/20998 + * cp-tree.def (ALIAS_DECL): Remove. + * cp-lang.c (cp_init_ts): Remove support for it. + * error.c (dump_decl): Likewise. + * name-lookup.c (pushdecl): Likewise. + * semantics.c (finish_id_expression): Likewise. + * decl2.c (build_anon_union_vars): Use a VAR_DECL with + DECL_VALUE_EXPR instead. + +2005-09-09 Mark Mitchell + + PR c++/22252 + * decl.c (start_preparsed_function): Do not pay attention to + #pragma interface for implicitly-defined methods. + * decl2.c (cp_finish_file): Do not complain about uses of inline + functions that have bodies, even if we decided not to emit the + body in this translation unit. + * semantics.c (note_decl_for_pch): Do not mess with linkage. + (expand_or_defer_fn): Make inline, non-template functions COMDAT + at this point. + +2005-09-08 Richard Henderson + + PR debug/23190 + * decl.c (wrapup_globals_for_namespace): Call + emit_debug_global_declarations. + * decl2.c (cp_finish_file): Likewise. + +2005-09-08 Mark Mitchell + + PR c++/23691 + * decl2.c (mark_used): Instantiate static data members initialized + by constants, even in a template. + +2005-09-08 Andrew Pinski + + PR obj-c++/16816 + * parser.c (cp_parser_objc_selector_expression): Treat CPP_SCOPE as + two CPP_COLON. + +2005-09-07 Richard Guenther + + * cp-gimplify.c (cp_gimplify_expr): Create empty CONSTRUCTOR + for EMPTY_CLASS_EXPR. + +2005-09-06 Jakub Jelinek + + PR c/23075 + * typeck.c (check_return_expr): Add no_warning argument. Set + *no_warning to true if "return-statement with no value, in function + returning" warning has been issued. + * cp-tree.h (check_return_expr): Adjust prototype. + * semantics.c (finish_return_stmt): Set TREE_NO_WARNING if + check_return_expr set *no_warning to true. + +2005-09-06 Mark Mitchell + + * cp-tree.h (rvalue): New function. + * call.c (build_conditional_expr): Use it. + * init.c (build_new_1): Likewise. + * rtti.c (build_dynamic_cast_1): Likewise. + * tree.c (rvalue): New function. + * typeck.c (build_unary_op): Use it. + (build_static_cast_1): Likewise. + + PR c++/9782 + * init.c (build_new_1): Make sure the entire array type is + complete, not just its element types. + +2005-09-06 Volker Reichelt + + * decl.c (check_elaborated_type_specifier): Remove redundant check. + +2005-09-06 Jakub Jelinek + + PR c++/23056 + * typeck.c (ignore_overflows): New helper function. + (build_static_cast_1): Use it. + +2005-09-06 Kazu Hirata + + * cp-tree.h, decl.c, decl2.c, semantics.c: Fix comment typos. + Follow spelling conventions. + 2005-09-05 Mark Mitchell PR c++/23667