re PR c++/46220 (Error: invalid covariant return type generated for incomplete class...
[gcc.git] / gcc / cp / ChangeLog
index 22f5bf095b38204997baac2f2d9e614ca89ef0bf..ce4ade16a84d4c16c3ea7228d901fcdc099f4fea 100644 (file)
@@ -1,3 +1,332 @@
+2011-03-04  Jason Merrill  <jason@redhat.com>
+
+       PR c++/46220
+       * search.c (check_final_overrider): Allow pointer to same incomplete
+       class type with different cv-quals.
+
+2011-03-03  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/47974
+       * pt.c (tsubst_template_args): Check argument t for error_mark_node.
+
+2011-03-03  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47950
+       * pt.c (tsubst_copy_and_build) [TARGET_EXPR]: Retain TREE_CONSTANT.
+
+2011-03-02  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47950
+       * parser.c (cp_parser_condition): Don't fold_non_dependent_expr here.
+
+       PR c++/47774
+       * tree.c (build_vec_init_elt): Split out from...
+       (build_vec_init_expr): ...here.
+       (diagnose_non_constexpr_vec_init): New fn.
+       * semantics.c (potential_constant_expression_1): Use it.
+       * cp-tree.h: Declare it.
+
+2011-03-01  Jason Merrill  <jason@redhat.com>
+
+       PR c++/46159
+       * parser.c (cp_parser_primary_expression): Don't warn about a
+       failed tentative parse.
+
+       PR c++/47200
+       * semantics.c (cxx_bind_parameters_in_call): Don't call
+       adjust_temp_type on non-constant args.
+
+       PR c++/47851
+       * call.c (standard_conversion): Provide requested cv-quals on
+       class rvalue conversion.
+
+       PR c++/46282
+       * decl2.c (grokbitfield): Handle type-dependent width.
+
+2011-02-28  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47873
+       * class.c (update_vtable_entry_for_fn): Check BINFO_LOST_PRIMARY_P
+       after checking for a non-thunk.
+
+2011-02-26  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47904
+       * tree.c (cp_tree_equal): Compare DECL_PARM_LEVEL.
+       * pt.c (iterative_hash_template_arg): And hash it.
+
+       PR c++/47897
+       * semantics.c (non_const_var_error): Split out from...
+       (cxx_eval_constant_expression): ...here.
+       (potential_constant_expression_1) [VAR_DECL]: Use it.
+       Allow dependent variables.
+
+2011-02-24  Jason Merrill  <jason@redhat.com>
+
+       * parser.c (cp_parser_constant_expression): Set
+       non_integral_constant_expression correctly for C++0x too.
+       (cp_parser_static_assert): Allow non-constant expression.
+       (cp_parser_direct_declarator): Expect non_constant_p to be set
+       properly for C++0x.
+       * pt.c (value_dependent_expression_p): Handle TYPEID_EXPR.
+       * semantics.c (maybe_constant_value): Check type_unknown_p too.
+       (potential_rvalue_constant_expression): New.
+       (require_potential_rvalue_constant_expression): New.
+
+2011-02-23  Jason Merrill  <jason@redhat.com>
+
+       * cp-tree.h (DECL_PARM_LEVEL): New.
+       (struct lang_decl_parm): Add level field.
+       * name-lookup.c (function_parm_depth): New fn.
+       * name-lookup.h: Declare it.
+       * parser.c (cp_parser_parameter_declaration_list): Use it.
+       * mangle.c (struct globals): Add parm_depth field.
+       (write_bare_function_type): Adjust it.
+       (write_expression): Include the level delta in PARM_DECL mangling
+       for abi >= 6.
+
+       * semantics.c (finish_decltype_type): Remove shortcut for decltype
+       of id-expression.
+       * mangle.c (write_type) [DECLTYPE_TYPE]: Strip it here for abi < 6.
+
+2011-02-23  Nathan Froyd  <froydnj@codesourcery.com>
+
+       PR c++/46868
+       * parser.c (cp_parser_class_specifier): Require a closing brace
+       to attempt error recovery.
+
+2011-02-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47833
+       * pt.c (struct pending_template): Add chain_next GTY option.
+       * decl.c (struct named_label_use_entry): Likewise.
+
+2011-02-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/47242
+       * semantics.c (build_lambda_object): Bail out if a field is
+       error_mark_node.
+
+2011-02-22  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47666
+       * class.c (dfs_declare_virt_assop_and_dtor)
+       (declare_virt_assop_and_dtor): New static functions.
+       (add_implicitly_declared_members): Use
+       declare_virt_assop_and_dtor.
+
+2011-02-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47207
+       * decl2.c (decl_constant_var_p): A constexpr var needs an
+       initializer to be constant.
+       * semantics.c (cxx_eval_constant_expression): Complain about
+       constexpr var used in its own initializer.
+       * call.c (set_up_extended_ref_temp): Set
+       DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P too.
+
+2011-02-20  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47199
+       * semantics.c (cxx_eval_call_expression): Call
+       cxx_eval_constant_expression in trivial shortcut.
+
+       PR c++/46831
+       * call.c (convert_class_to_reference): Don't try to set up a
+       second conv sequence for non-viable candidates.
+
+       PR c++/47703
+       * error.c (location_of): Handle non-tagged types.
+
+       PR c++/46472
+       * method.c (process_subob_fn): Instantiate constexpr templates.
+       * optimize.c (maybe_clone_body): Propagate DECL_DECLARED_CONSTEXPR_P.
+
+2011-02-20  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/46394
+       * pt.c (tsubst_pack_expansion): do not use
+       cp_tree_equal/same_type_p to detect an expansion of a parameter
+       pack.
+
+2011-02-19  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47503
+       * semantics.c (cxx_eval_call_expression): Shortcut trivial copy.
+
+2011-02-18  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/47795
+       * semantics.c (finish_non_static_data_member): Early return if
+       object is error_mark_node.
+
+2011-02-18  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47208
+       * pt.c (do_auto_deduction): Do not mention error_mark_node in
+       diagnostics.
+       * semantics.c (finish_id_expression): Do not pass erroneous decl
+       to decl_constant_var_p.
+
+2011-02-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47783
+       * cvt.c (convert_from_reference): Call mark_exp_read.
+
+2011-02-11  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47172
+       * pt.c (finish_call_expr): Consider a call expression that has a
+       dependent "this" pointer as being dependent.  Add comments.
+       (dependent_type_p, type_dependent_expression_p): Update comments.
+
+2011-02-16  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47326
+       * pt.c (tsubst_copy)<case SIZEOF_EXPR>: Ensure that even pack
+       expansion arguments are not evaluated.
+
+2011-02-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47704
+       * cp-tree.h (ENUM_FIXED_UNDERLYING_TYPE_P): Use TYPE_LANG_FLAG_5
+       instead of TYPE_LANG_FLAG_3.
+       * pt.c (lookup_template_class): Copy over
+       ENUM_FIXED_UNDERLYING_TYPE_P.
+
+2011-02-15  Jason Merrill  <jason@redhat.com>
+
+       PR c++/46807
+       * method.c (synthesized_method_walk): Always exit early for
+       trivial fn in C++98 mode.
+
+2011-02-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47482
+       * parser.c (cp_parser_enumerator_definition): Call
+       fold_non_dependent_expr.
+
+2011-02-09  Jason Merrill  <jason@redhat.com>
+
+       * decl.c (cp_make_fname_decl): Set DECL_THIS_STATIC at toplevel.
+       * semantics.c (finish_fname): Only return the name if we're in
+       a function.
+
+       * decl.c (build_enumerator): Don't perform integral promotions on
+       non-integral constants.
+
+       * cvt.c (convert_to_void): Handle null op1.
+
+       * class.c (type_has_constexpr_default_constructor): Make sure the
+       caller stripped an enclosing array.
+       * init.c (perform_member_init): Strip arrays before calling it.
+
+       PR c++/47511
+       * semantics.c (potential_constant_expression_1): Handle TEMPLATE_DECL.
+
+2011-02-03  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47398
+       * tree.c (cp_tree_equal)<TEMPLATE_PARM_INDEX>: Take the number of
+       template parameters in account.
+
+2011-02-03  Nathan Froyd  <froydnj@codesourcery.com>
+
+       PR c++/46890
+       * parser.c (cp_parser_class_specifier): Fix setting of
+       want_semicolon.
+
+2011-01-31  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47416
+       * semantics.c (build_data_member_initialization): Handle
+       STATEMENT_LIST always instead of just for CLEANUP_BODY.
+
+2011-01-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * g++spec.c (lang_specific_driver) [HAVE_LD_STATIC_DYNAMIC] Use
+       LD_STATIC_OPTION, LD_DYNAMIC_OPTION.
+
+2011-01-29  Dodji Seketeli  <dodji@redhat.com>
+
+       PR c++/47311
+       * cp-tree.h (fixup_template_parms): Declare.
+       * pt.c (end_template_parm_list): Do not fixup template parms here.
+       (fixup_template_parms): Remove static. Fix typo in the
+       comments. Remove useless code statement.
+       (fixup_template_parm): For a template template parameter, fixup
+       its attributes before fixing up its type.
+       * parser.c
+       (cp_parser_template_declaration_after_export): After parsing
+       template parameters fixup their types.
+
+2011-01-26  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47476
+       * semantics.c (potential_constant_expression_1): Handle
+       TRUTH_XOR_EXPR.
+
+2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       PR c++/43601
+       * semantics.c (expand_or_defer_fn_1): Handle it.
+       * decl2.c (decl_needed_p): Likewise.
+
+2011-01-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47041
+       * semantics.c (build_constexpr_constructor_member_initializers):
+       Handle trivial copy.
+
+2011-01-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47388
+       * semantics.c (begin_for_stmt): If -fno-for-scope, don't
+       assume init must be NULL if scope is NULL.
+       (begin_range_for_stmt): Likewise.
+
+2011-01-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/46552
+       * semantics.c (cxx_eval_constant_expression): Handle OFFSET_REF.
+
+       PR c++/46977
+       * semantics.c (potential_constant_expression_1): Split out from
+       potential_constant_expression.  Add want_rval parm.  Handle
+       template expression forms.  Don't enforce restriction on address
+       of automatic variable here.  Add a couple of diagnostics that
+       had been missing.
+       (require_potential_constant_expression): New entry point.
+       (build_data_member_initialization, register_constexpr_fundef): Adjust.
+       (maybe_constant_value): Check potential_constant_expression.
+       * pt.c (fold_non_dependent_expr_sfinae): Likewise.
+       * tree.c (build_vec_init_expr): Adjust.
+
+2011-01-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/47303
+       * decl2.c (finish_anon_union): Only call mangle_decl if TREE_STATIC
+       or DECL_EXTERNAL.
+
+2011-01-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/47067
+       * semantics.c (base_field_constructor_elt): New fn.
+       (cxx_eval_bare_aggregate): Use it.
+       (build_data_member_initialization): Leave COMPONENT_REF for
+       vfield inits.
+
+2011-01-14  Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
+
+       * parser.c (cp_parser_range_for): Remove the "unused variable" warning
+       workaround.
+
+2011-01-15  Giovanni Funchal  <gafunchal@gmail.com>
+           Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR c++/33558
+       * decl.c (grokdeclarator): Reject mutable reference members.
+
 2011-01-14  Jason Merrill  <jason@redhat.com>
 
        PR c++/47289