OSDN Git Service

2011-05-23 Jonathan Wakely <jwakely.gcc@gmail.com>
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index b89280d..20c9808 100644 (file)
@@ -1,3 +1,227 @@
+2011-05-23  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR c++/18016
+       * init.c (perform_member_init): Check for self-initialization.
+
+2011-05-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48647
+       * typeck.c (composite_pointer_type_r): Return error_mark_node
+       on error in SFINAE context.
+
+2011-05-20  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48945
+       * decl.c (grokdeclarator): Don't add set const function-cv-qual
+       for constexpr fns to memfn_quals, just add it to the type.
+       (revert_static_member_fn): Don't complain about quals.
+       (check_static_quals): New.
+       (grokfndecl): Call it.
+       (start_preparsed_function): Don't call revert_static_member_fn.
+
+       PR c++/48945
+       * decl.c (revert_static_member_fn): Ignore const on constexpr fn.
+
+       PR c++/48780
+       * cvt.c (type_promotes_to): Don't promote scoped enums.
+
+       PR c++/49066
+       * decl.c (duplicate_decls): Preserve DECL_DELETED_FN.
+
+       PR c++/48873
+       * tree.c (stabilize_expr): Fix typo.
+
+       DR 1073
+       PR c++/49082
+       * typeck.c (comp_except_specs): noexcept(false) is not compatible
+       with throw(type-list).
+       * typeck2.c (merge_exception_specifiers): noexcept(false)
+       beats any more limited specification.
+
+       PR c++/24163
+       PR c++/29131
+       * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Avoid repeating
+       unqualified lookup.
+       * semantics.c (perform_koenig_lookup): Add complain parm.
+       * cp-tree.h: Adjust.
+       * parser.c (cp_parser_postfix_expression): Adjust.
+       (cp_parser_perform_range_for_lookup): Adjust.
+
+2011-05-20  Jason Merrill  <jason@redhat.com>
+
+       * semantics.c (finish_call_expr): SET_EXPR_LOCATION.
+
+2011-05-20  Joseph Myers  <joseph@codesourcery.com>
+
+       * Make-lang.in (GXX_OBJS): Remove intl.o and version.o.
+
+2011-05-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/49043
+       * decl.c (check_omp_return): Stop searching on sk_function_parms.
+
+       PR c++/48869
+       * method.c (get_dtor, get_copy_ctor): Add COMPLAIN argument,
+       pass it down to locate_fn_flags.
+       * cp-tree.h (get_dtor, get_copy_ctor): Adjust prototypes.
+       * semantics.c (cxx_omp_create_clause_info): Adjust callers.
+       * cp-gimplify.c: Include splay-tree.h.
+       (splay_tree_compare_decl_uid, omp_var_to_track,
+       omp_cxx_notice_variable): New functions.
+       (struct cp_genericize_omp_taskreg): New type.
+       (struct cp_genericize_data): Add omp_ctx field.
+       (cp_genericize_r): Attempt to determine implicitly determined
+       firstprivate class type variables.
+       (cp_genericize): Clear omp_ctx.
+       * Make-lang.in (cp/cp-gimplify.o): Depend on $(SPLAY_TREE_H).
+
+2011-05-18  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48948
+       PR c++/49015
+       * class.c (finalize_literal_type_property): Do check
+       for constexpr member functions of non-literal class.
+       (finish_struct): Don't call check_deferred_constexpr_decls.
+       * cp-tree.h: Don't declare it.
+       (DECL_DEFERRED_CONSTEXPR_CHECK): Remove.
+       * decl.c (grok_special_member_properties): Don't check it
+       (grokfnedcl): Don't call validate_constexpr_fundecl.
+       (start_preparsed_function): Do call it.
+       * pt.c (tsubst_decl): Don't call it.
+       (instantiate_class_template_1): Don't call
+       check_deferred_constexpr_decls.
+       * semantics.c (literal_type_p): Check for any incompleteness.
+       (ensure_literal_type_for_constexpr_object): Likewise.
+       (is_valid_constexpr_fn): Revert deferral changes.
+       (validate_constexpr_fundecl): Likewise.
+       (register_constexpr_fundef): Likewise.
+       (check_deferred_constexpr_decls): Remove.
+
+2011-05-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/48969
+       * pt.c (deduction_tsubst_fntype): Use a VEC initially.
+
+2011-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * cxx-pretty-print.c: Update comment.
+       * semantics.c (trait_expr_value, finish_trait_expr):
+       Reorder the cases.
+       * parser.c (cp_parser_primary_expression): Likewise.
+
+2011-05-15  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR c++/48994
+       * parser.c (cp_parser_perform_range_for_lookup): Call complete_type.
+
+2011-05-13  Ville Voutilainen  <ville.voutilainen@gmail.com>
+
+       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  <jason@redhat.com>
+
+       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  <jason@redhat.com>
+
+       * 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  <jason@redhat.com>
+
+       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  <froydnj@codesourcery.com>
+
+       * 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  <jason@redhat.com>
+
+       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  <ville.voutilainen@gmail.com>
+
+       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  <froydnj@codesourcery.com>
+
+        * 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  <paolo.carlini@oracle.com>
 
        PR c++/48737
 2011-05-09  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/48737