X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fcp%2FChangeLog;h=a425e758fc31a5e736d98f1e6a8420c60f5f12aa;hp=c6e83decff2a95856e101ced725ab98c43f78ef2;hb=321f66b19ac294575bd85159cf327add9e7682f2;hpb=eb954b5fd74b1d34ffaed99570dd3a66e8ee8d78 diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c6e83decff2..a425e758fc3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,473 @@ +2011-05-15 Jonathan Wakely + + PR c++/48994 + * parser.c (cp_parser_perform_range_for_lookup): Call complete_type. + +2011-05-13 Ville Voutilainen + + Implement final on class. + * class.c (check_bases): Diagnose derivation from a final class. + * cp-tree.h (lang_type_class): Add is_final and adjust dummy. + (CLASSTYPE_FINAL): New. + * parser.c (cp_parser_class_head): Parse class-virt-specifier, set + CLASSTYPE_FINAL. + * pt.c (instantiate_class_template_1): Copy CLASSTYPE_FINAL. + +2011-05-13 Jason Merrill + + PR c++/48969 + * pt.c (deduction_tsubst_fntype): New. + (fn_type_unification): Use it. + (init_template_processing): Initialize hash table. + (print_template_statistics): Print hash table stats. + + * call.c (build_op_call): Use timevar_cond_start/stop. + (build_user_type_conversion): Likewise. + +2011-05-12 Jason Merrill + + * cp-tree.h (DECL_DEFERRED_CONSTEXPR_CHECK): New. + * semantics.c (validate_constexpr_fundecl): Set it. + (check_deferred_constexpr_decls): Clear it. + (register_constexpr_fundef): Make sure it isn't set. + * decl.c (grok_special_member_properties): Check it. + +2011-05-11 Jason Merrill + + PR c++/48948 + * semantics.c (validate_constexpr_fundecl): Defer checking if + an argument type is being defined. + (is_valid_constexpr_fn): Add defer_ok parm. + (cxx_eval_call_expression): Adjust. + (check_deferred_constexpr_decls): New. + (literal_type_p): Make sure type isn't being defined. + (ensure_literal_type_for_constexpr_object): Handle type being defined. + * cp-tree.h: Declare check_deferred_constexpr_decls. + * decl.c (grokfndecl): Call validate_constexpr_fundecl here. + (start_preparsed_function, cp_finish_decl): Not here. + * class.c (finalize_literal_type_property): Don't call + validate_constexpr_fundecl. + (finish_struct): Call check_deferred_constexpr_decls. + * pt.c (tsubst_decl): Call validate_constexpr_fundecl. + (instantiate_class_template): Call check_deferred_constexpr_decls. + + * semantics.c (validate_constexpr_fundecl): Check DECL_TEMPLATE_INFO + rather than DECL_TEMPLATE_INSTANTIATION. + (cxx_eval_call_expression): Likewise. + + * semantics.c (register_constexpr_fundef): Add to hash table here. + (validate_constexpr_fundecl): Not here. + + * decl.c (grokdeclarator): Only set DECL_DECLARED_CONSTEXPR_P once. + + * pt.c (build_non_dependent_expr): Don't check null_ptr_cst_p, + do call maybe_constant_value in C++0x mode. + * semantics.c (cxx_eval_constant_expression): Handle TEMPLATE_DECL. + + PR c++/48745 + * pt.c (value_dependent_expr_p): Handle CONSTRUCTOR. + +2011-05-11 Nathan Froyd + + * cp-tree.h (TYPENAME_TYPE_FULLNAME, TYPEOF_TYPE_EXPR): Use + TYPE_VALUES_RAW. + (UNDERLYING_TYPE_TYPE, DECLTYPE_TYPE_EXPR): Likewise. + (DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P): Likewise. + (TEMPLATE_TYPE_PARM_INDEX): Likewise. + +2011-05-10 Jason Merrill + + PR c++/48930 + * class.c (type_build_ctor_call): New. + * cp-tree.h: Declare it. + * decl.c (check_initializer): Use it instead of + TYPE_NEEDS_CONSTRUCTING. + * init.c (build_value_init, build_value_init_noctor): Likewise. + (perform_member_init, expand_aggr_init_1, build_new_1): Likewise. + (build_vec_init): Likewise. + * typeck2.c (process_init_constructor_array): Likewise. + (process_init_constructor_record): Likewise. + + PR c++/48736 + * pt.c (tsubst_copy_and_build): Handle substitution of a pack + expansion producing another expansion. + +2011-05-10 Ville Voutilainen + + Fixes for override/final. + * class.c (check_for_override): Diagnose final on a nonvirtual + member function, diagnose override for a virtual with no matching + override. Don't fiddle around with DECL_VINDEX. + +2011-05-10 Nathan Froyd + + * cp-tree.def (EXPR_PACK_EXPANSION): Add an operand. + * cp-objcp-common.c (cp_common_init_ts): Mark it as TS_TYPED. + * cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS): Use the new + operand of EXPR_PACK_EXPANSION. + (cp_tree_operand_length): Declare. + * tree.c (cp_tree_operand_length): Define. + (cp_tree_equal): Call it. + * pt.c (value_dependent_expr_P): Likewise. + * mangle.c (write_expression): Likewise. + +2011-05-09 Paolo Carlini + + PR c++/48737 + PR c++/48744 + * decl.c (reshape_init): Take a complain parameter and do + not call error if tf_error is not set. + (check_initializer, reshape_init_r, reshape_init_array, + reshape_init_array_1, reshape_init_vector, reshape_init_class): + Adjust. + * typeck2.c (digest_init_r): Take a complain parameter and + pass it to convert_for_initialization. + (digest_init, digest_init_flags, process_init_constructor_array, + process_init_constructor_record, process_init_constructor_union, + process_init_constructor, digest_init_r): Adjust. + * init.c (expand_default_init, build_new_1): Likewise. + * typeck.c (cp_build_modify_expr): Likewise. + * decl2.c (grokfield): Likewise. + * call.c (convert_like_real, convert_default_arg): Likewise. + * semantics.c (finish_compound_literal): Pass complain to + reshape_init and digest_init. + * cp-tree.h: Adjust declarations. + +2011-05-07 Fabien Chêne + + PR c++/48859 + * init.c (diagnose_uninitialized_cst_or_ref_member_1): stop the + recursion if there is user defined constructor. + +2011-05-09 Jason Merrill + + PR c++/34772 + * decl.c (initialize_local_var): Use DECL_INITIAL for simple + initialization. + +2011-05-08 Ville Voutilainen + + Implement final/override for member functions. + * class.c (check_for_override): Check for DECL_OVERRIDE_P. + * cp-tree.h (DECL_OVERRIDE_P, DECL_FINAL_P): New. + (cp_virt_specifiers, enum virt_specifier): New. + * decl.c (set_virt_specifiers): New. + (grokdeclarator): Use them. Diagnose virt-specifiers on non-fields. + * parser.c (make_call_declarator): add virt-specifiers parameter. + (cp_parser_lambda_declarator_opt): Adjust. + (cp_parser_direct_declarator): Likewise. + (cp_parser_virt_specifier_seq_opt): New. + * search.c (check_final_overrider): Diagnose attempts to override + a final member function. + +2011-05-09 Dodji Seketeli + + PR c++/48574 + * class.c (fixed_type_or_null): Use type_dependent_p_push to test + if the instance has a dependent initializer. + +2011-05-08 Paolo Carlini + + PR c++/48816 + * cxx-pretty-print.c (pp_cxx_template_declaration): Remove + effectively unused variable. + +2011-05-07 Eric Botcazou + + * name-lookup.h (global_bindings_p): Adjust prototype. + * name-lookup.c (global_bindings_p): Return bool. + +2011-05-06 Jason Merrill + + * decl.c (stabilize_save_expr_r): Set *walk_subtrees as + appropriate. + + PR c++/48909 + * semantics.c (cxx_eval_conditional_expression): Check + integer_zerop instead. + (potential_constant_expression_1): Likewise. + + PR c++/48911 + * semantics.c (cxx_eval_array_reference): Handle implicit + initializers. + +2011-05-06 Nathan Froyd + + * cp-tree.h (type_of_this_parm, class_of_this_parm): New functions. + * call.c (standard_conversion): Call class_of_this_parm. + * cxx-pretty-print.c (pp_cxx_implicit_parameter_type): Likewise. + (pp_cxx_direct_abstract_declarator): Likewise. + * decl2.c (change_return_type): Likewise. + (cp_reconstruct_complex_type): Likewise. + * error.c (dump_type_suffix, dump_function_decl): Likewise. + * mangle.c (write_function_type): Likewise. + * pt.c (unify): Likewise. + * typeck.c (merge_types, type_memfn_quals): Likewise. + * decl.c (build_this_parm): Call type_of_this_parm. + +2011-05-06 Dodji Seketeli + + PR c++/48838 + * cp-tree.h (non_static_member_function_p): Declare new function. + * tree.c (non_static_member_function_p): Define it. + * semantics.c (finish_call_expr): Use it. + +2011-05-05 Nathan Froyd + + * decl.c (finish_case_label): Omit the loc argument to + build_case_label. + +2011-05-05 Jason Merrill + + * cp-tree.h (REFERENCE_REF_P): Just check the type. + * cvt.c (convert_from_reference): Adjust. + * pt.c (build_non_dependent_expr): Adjust. + * semantics.c (finish_offsetof): Adjust. + * tree.c (lvalue_kind): Use it. + + PR c++/48873 + * tree.c (stabilize_expr): Don't make gratuitous copies of classes. + +2011-05-05 Eric Botcazou + + * decl.c (start_preparsed_function): Do not set + dont_save_pending_sizes_p. + +2011-05-05 Joseph Myers + + * parser.c (cp_parser_objc_method_definition_list): Update call to + objc_start_method_definition. + +2011-05-04 Jason Merrill + + PR c++/48749 + * class.c (resolves_to_fixed_type_p): Don't look closely + in templates. + +2011-05-03 Paolo Carlini + + PR c++/28501 + * call.c (add_builtin_candidate): Handle REALPART_EXPR and + IMAGPART_EXPR. + +2011-05-02 Lawrence Crowl + + * decl.c: (push_local_name): Change TV_NAME_LOOKUP to start/stop. + (poplevel): Refactor POP_TIMEVAR_AND_RETURN to plain code. + Change TV_NAME_LOOKUP to start/stop. + (define_label): Refactor timevar calls out to a wrapper function. + Change TV_NAME_LOOKUP to start/stop. + (xref_tag): Likewise. + (lookup_label): Refactor timevar calls out to a wrapper function. + Change TV_NAME_LOOKUP to start_cond/stop_cond. + + * pt.c: (instantiate_class_template): Add a wrapper to push/pop new + TV_TEMPLATE_INST. + (instantiate_template): Add a wrapper to push/pop new TV_TEMPLATE_INST. + (lookup_template_class): Refactor timevar calls out to a wrapper + function. Change use of TV_NAME_LOOKUP to TV_TEMPLATE_INST. + (instantiate_decl): Change TV_PARSE to TV_TEMPLATE_INST. + + * name-lookup.c: (store_bindings): Change TV_NAME_LOOKUP to start/stop. + (poplevel_class): Change TV_NAME_LOOKUP to start_cond/stop_cond. + (push_namespace): Likewise. + (pop_nested_namespace): Likewise. + (pushdecl_namespace_level): Likewise. + (store_class_bindings): Likewise. + (push_to_top_level): Likewise. + (identifier_type_value): Refactor timevar calls out to a wrapper + function. Change TV_NAME_LOOKUP to start/stop. + (find_binding): Likewise. + (push_using_decl): Likewise. + (lookup_arg_dependent): Likewise. + (push_using_directive): Likewise. + (qualified_lookup_using_namespace): Refactor POP_TIMEVAR_AND_RETURN + to plain code. Change TV_NAME_LOOKUP to start/stop. + (lookup_type_current_level): Likewise. Refactor inner return to + break. + (pushdecl_class_level): Refactor POP_TIMEVAR_AND_RETURN to plain + code. Change TV_NAME_LOOKUP to start_cond/stop_cond. + (pushdecl_top_level_1): Likewise. + (lookup_using_namespace): Likewise. + (pushdecl_with_scope): Refactor timevar calls out to a wrapper + function. Change TV_NAME_LOOKUP to start_cond/stop_cond. + (push_overloaded_decl): Likewise. + (push_class_level_binding): Likewise. + (namespace_binding): Likewise. + (set_namespace_binding): Likewise. + (supplement_binding): Likewise. + (unqualified_namespace_lookup): Likewise. + (lookup_name_real): Likewise. + (lookup_type_scope): Likewise. + (namespace_ancestor): Likewise. + (lookup_name_innermost_nonclass_level): Likewise. + (pushtag): Likewise. + (pop_from_top_level): Likewise. + (pushdecl_maybe_friend): Refactor timevar calls out to a wrapper + function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Wrap long + lines. + (add_using_namespace): Refactor timevar calls out to a wrapper + function. Change TV_NAME_LOOKUP to start_cond/stop_cond. Bypass + wrapper on call to self. + + * decl2.c: (cp_write_global_declarations): Add start/stop of + new TV_PHASE_DEFERRED, TV_PHASE_CGRAPH, TV_PHASE_CHECK_DBGINFO. + Remove push/pop calls to TV_VARCONST. + + * parser.c: Add include of "timevar.h". + (cp_parser_explicit_instantiation): Add push/pop calls to + TV_TEMPLATE_INST. + (cp_parser_enum_specifier): Add push/pop calls to new TV_PARSE_ENUM. + (cp_parser_class_specifier): Add wrapper to add push/pop calls to + TV_PARSE_STRUCT. + (cp_parser_function_definition_from_specifiers_and_declarator): Add + push/pop calls to new TV_PARSE_FUNC or TV_PARSE_INLINE. + (cp_parser_late_parsing_for_member): Add push/pop calls to + new TV_PARSE_INMETH. + + * call.c: Add include of "timevar.h". + (convert_class_to_reference): Wrap and add push/pop calls to + TV_OVERLOAD. + (build_op_call): Likewise. + (build_conditional_expr): Likewise. + (build_new_op): Likewise. + (build_new_method_call): Likewise. + (build_user_type_conversion): Reorganize to single return and add + push/pop calls to TV_OVERLOAD. + (perform_overload_resolution): Likewise. + + * Make-lang.in: Add dependence of call.o and parser.o on $(TIMEVAR_H). + +2011-05-02 Jason Merrill + + * tree.c (build_vec_init_expr): Take complain parm. + (build_vec_init_elt): Likewise. Free arg vector. + (diagnose_non_constexpr_vec_init, build_array_copy): Adjust. + * cp-tree.h (VEC_INIT_EXPR_SLOT): Use VEC_INIT_EXPR_CHECK. + (VEC_INIT_EXPR_INIT): Likewise. + Adjust build_vec_init_expr declaration. + * init.c (perform_member_init): Adjust. + + Revert: + PR c++/40975 + * cp-tree.def (VEC_INIT_EXPR): Add third operand. + * cp-tree.h (VEC_INIT_EXPR_NELTS): New. + * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it. + * tree.c (build_vec_init_expr): Handle getting pointer/nelts. + (build_vec_init_elt): Don't expect an array type. + (build_array_copy): Adjust. + * init.c (perform_member_init): Adjust. + (build_new_1): Use build_vec_init_expr. + + PR c++/48834 + * tree.c (build_vec_init_expr): Set TREE_SIDE_EFFECTS. + Protect an explicit target. + + PR c++/48446 + * decl.c (stabilize_save_expr_r, stabilize_vla_size): New. + (compute_array_index_type): Revert earlier 48446 changes. + (grokdeclarator): Use stabilize_vla_size. + +2011-05-02 Dmitry Gorbachev + Eric Botcazou + + * parser.c (cp_parser_init_declarator): Set pushed_scope to NULL_TREE + instead of inappropriate zero values. + +2011-05-02 Paolo Carlini + + PR c++/47969 + * decl.c (compute_array_index_type): Check build_expr_type_conversion + return value for NULL_TREE. + +2011-04-29 Paolo Carlini + + PR c++/48606 + * init.c (perform_member_init): Check build_value_init return + value for error_mark_node. + +2011-04-29 Diego Novillo + Le-Chun Wu + + * call.c (conversion_null_warnings): Also handle assignments + when warning about NULL conversions. + +2011-04-29 Le-Chun Wu + + * cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Define. + * call.c (build_new_function_call): Set it for TEMPLATE_ID_EXPRs. + (build_over_call): Use it to determine whether to emit a NULL + warning for template function instantiations. + (build_new_method_call): Set LOOKUP_EXPLICIT_TMPL_ARGS if + EXPLICIT_TARGS is set. + +2011-04-29 Nicola Pero , + Mike Stump + + * Make-lang.in ($(srcdir)/cp/cfns.h): Enable the dependency only + in maintainer mode. Use the --output-file option of gperf instead + of > to prevent creating an empty cp/cfns.h when gperf is not + available. + +2011-04-28 Paolo Carlini + + PR c++/48798 + * semantics.c (finish_base_specifier): cv-qualified base class + is fine, per DR 484. + +2011-04-28 Dodji Seketeli + + PR c++/48656 + * semantics.c (finish_call_expr): Don't forget BASELINK nodes when + considering call expressions involving a member function. + +2011-04-28 Paolo Carlini + + PR c++/48530 + * tree.c (build_cplus_new): Check build_target_expr return + value for error_mark_node. + +2011-04-28 Paolo Carlini + + PR c++/48771 + * semantics.c (literal_type_p): Reference types are literal types, + per the FDIS. + (valid_type_in_constexpr_fundecl_p): Remove. + (is_valid_constexpr_fn): Adjust. + +2011-04-27 Jason Merrill + + PR libstdc++/48760 + Implement list-initialization of _Complex. + * decl.c (reshape_init_r): Allow {real,imag} for _Complex. + (check_initializer): Likewise. + * call.c (build_complex_conv): New. + (implicit_conversion): Call it. + (convert_like_real): Handle it. + * typeck2.c (check_narrowing): Handle it. + + * init.c (build_vec_delete_1): Look for sfk_deleting_destructor to + decide whether to delete. + (build_vec_init): Pass sfk_complete_destructor. + + PR c++/40975 + * cp-tree.def (VEC_INIT_EXPR): Add third operand. + * cp-tree.h (VEC_INIT_EXPR_NELTS): New. + * cp-gimplify.c (cp_gimplify_expr) [VEC_INIT_EXPR]: Handle it. + * tree.c (build_vec_init_expr): Handle getting pointer/nelts. + (build_vec_init_elt): Don't expect an array type. + (build_array_copy): Adjust. + * init.c (perform_member_init): Adjust. + (build_new_1): Use build_vec_init_expr. + + * class.c (resolve_address_of_overloaded_function): Don't + change OVERLOAD to TREE_LIST. + * pt.c (print_candidates_1): Remove nonsensical assert. + + PR c++/48046 + * parser.c (cp_parser_diagnose_invalid_type_name): Commit + to tentative parse sooner. + 2011-04-26 Jason Merrill PR c++/42687