OSDN Git Service

PR c++/33407
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 0ade8cd..91909a1 100644 (file)
@@ -1,3 +1,243 @@
+2008-01-18  Ian Lance Taylor  <iant@google.com>
+
+       PR c++/33407
+       * decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
+       (grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set
+       DECL_IS_OPERATOR_NEW flag.
+
+2008-01-16  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/33819
+       * typeck.c (is_bitfield_expr_with_lowered_type): Recurse
+       for conversions to type variants.
+
+2008-01-15  Andreas Tobler  <a.tobler@schweiz.org>
+
+       * parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
+       declaration and code.  Update copyright year.
+
+2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/34399
+       * friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
+       know we have a class type.
+
+2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/34751
+       * pt.c (coerce_template_parameter_pack): When substituting into
+       the type of a non-type template parameter pack. use the
+       deduced/substituted arguments.
+       * parser.c (declarator_can_be_parameter_pack): A pointer-to-member
+       can be a parameter pack with the ellipsis following it.  When we
+       have an erroneous declaration, allow it to be a parameter pack.
+       (cp_parser_template_parameter): Complain about default
+       arguments on non-type template parameter packs, and parse them
+       using the new cp_parser_default_argument.
+       (cp_parser_parameter_declaration): Complain about parameter packs
+       with default arguments. Move parsing of default arguments into a
+       new function, cp_parser_default_argument.
+       (cp_parser_default_argument): New; extracted from
+       cp_parser_parameter_declaration.
+
+2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/34051
+       PR c++/34055
+       PR c++/34102
+       PR c++/34103
+       * typeck.c (check_return_expr): If there are bare parameter packs
+       in the return value, set it to error_mark_node.
+       * tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
+       * pt.c (find_parameter_packs_r): Look at the type of
+       IDENTIFIER_NODEs (e.g., for user-defined conversions).
+       (check_for_bare_parameter_packs): Flip the result: now returns
+       TRUE when there were bare parameter packs, FALSE otherwise.
+       (push_template_decl_real): Deal with flipped result of
+       check_for_bare_parameter_packs.
+       * semantics.c (finish_cond): If there are bare parameter packs in
+       the conditional, set it to error_mark_node.
+       (finish_expr_stmt): If there are bare parameter packs in the
+       expression, set it to error_mark_node.
+       (finish_for_expr): Ditto.
+       (finish_switch_cond): If there are bare parameter packs in
+       the conditional, set it to error_mark_node.
+       (finish_mem_initializers): If there are bare parameter packs in
+       the member initializer, set it to error_mark_node.
+       (finish_member_declaration): Check the attributes of the
+       declaration for bare parameter packs, and remove the attributes if
+       any have bare parameter packs.
+       * parser.c (cp_parser_using_declaration): Check the using
+       declaration for bare parameter packs.
+       (cp_parser_base_clause): If there are bare parameter packs in a
+       base specifier, don't add it to the chain.
+
+2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/34314
+       * error.c (dump_simple_decl): Display ellipsis for template
+       non-type parameter packs.
+       (dump_decl): Display ellipsis for template type parameter packs.
+       (dump_template_decl): Display ellipsis for template template
+       parameter packs.
+       * pt.c (redeclare_class_template): When redeclaring a class
+       template, check for collisions between template parameters and
+       template parameter packs.
+
+2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/33964
+       * pt.c (process_partial_specialization): Don't mark template
+       parameters that occur in non-deduced contexts.
+       (struct pair_fn_data): Add include_nondeduced_p.
+       (for_each_template_parm_r): Only visit non-deduced contexts if
+       include_nondeduced_p is set.
+       (for_each_template_parm): Added parameter include_nondeduced_p,
+       which states whether template parameters found in non-deduced
+       contexts should be visited.
+       (uses_template_parms): Visit all template parameters, even those
+       in non-deduced contexts.
+
+2008-01-15  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/34052
+       * pt.c (check_default_tmpl_args): Check for parameter packs that
+       aren't at the end of a primary template.
+       (push_template_decl_real): Remove check for parameter packs that
+       aren't at the end of a primary template; that now happens in
+       check_default_tmpl_args.
+       * semantics.c (finish_template_template_parm): Use
+       check_default_tmpl_args to check for errors in the template
+       parameter list.
+       
+2008-01-12  Doug Kwan  <dougkwan@google.com>
+
+       * decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
+       instead of OPT_Wreturn_type in warning due to ignored return type
+       qualifiers.
+       * pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
+       instead of OPT_Wreturn_type in warning due to ignored return type
+       qualifiers.
+
+2008-01-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/33890
+       * semantics.c (finish_omp_for): Don't call
+       fold_build_cleanup_point_expr if processing_template_decl.
+
+2008-01-04  Paolo Carlini  <pcarlini@suse.de>
+           Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34611
+       * error.c (dump_template_argument): Deal with TREE_LIST.
+
+2008-01-01  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * parser.c (cp_parser_check_decl_spec): Don't warn about "long
+       long" in C++0x mode; change the warning to note that "long long"
+       is only unsupported in C++98 mode.
+
+2007-12-20  Jason Merrill  <jason@redhat.com>
+
+       PR c++/34111
+       * call.c (standard_conversion): Derived-to-base is considered a
+       standard conversion.
+
+2007-12-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34513
+       * parser.c (cp_parser_omp_parallel): For non-combined parallel
+       call cp_parser_statement rather than
+       cp_parser_already_scoped_statement.
+
+2007-12-18  Jason Merrill  <jason@redhat.com>
+
+       PR c++/34206
+       * pt.c (tsubst_aggr_type): Do nothing if the type already doesn't 
+       use template parms.
+       (dependent_type_p_r): Handle the domain of an array.
+
+2007-12-18  Douglas Gregor  <doug.gregor@gmail.com>
+            Jakub Jelinek  <jakub@redhat.com>
+       
+       PR c++/32565
+       PR c++/33943
+       PR c++/33965
+       * pt.c (template_template_parm_bindings_ok_p): New; verifies
+       bindings of template template parameters after all template
+       arguments have been deduced.
+       (coerce_template_parms): Don't complain when COMPLAIN doesn't
+       include tf_error.
+       (fn_type_unification): Use template_template_parm_bindings_ok_p. 
+       (unify): Deal with variadic, bound template template parameters. 
+       (get_class_bindings): Use template_template_parm_bindings_ok_p. 
+
+2007-12-18  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34488
+       * decl.c (grokdeclarator): Reject friend sfk_constructor
+       FUNCTION_TYPE.
+
+2007-12-17  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/34506
+       * parser.c (cp_parser_omp_all_clauses): Accept optional comma
+       in between clauses.
+
+2007-12-15  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR debug/7081
+       * cp-lang.c (cp_classify_record): New.
+       (LANG_HOOKS_CLASSIFY_RECORD): Override.
+
+2007-12-11  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34238
+       * decl2.c (cp_write_global_declarations): Revert 2007-11-22 change.
+
+       PR c++/34364
+       * rtti.c (build_dynamic_cast): Call convert_from_reference even for
+       dynamic_cast in a template.
+
+2007-12-10  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/34059
+       * typeck.c (build_class_member_access_expr): Compute MEMBER_SCOPE from
+       MEMBER's BASELINK_ACCESS_BINFO instead of its BASELINK_BINFO.
+
+2007-12-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34395
+       * error.c (dump_type_prefix, dump_type_suffix): Handle
+       TYPE_PACK_EXPANSION.
+
+       PR c++/34394
+       * error.c (dump_expr): Handle ABS_EXPR.
+
+2007-12-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34178
+       PR c++/34340
+       * repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
+       in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
+       Return 2 also if DECL_EXPLICIT_INSTANTIATION.
+       * decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
+       flag_use_repository and repo_emit_p returned 2.
+
+2007-12-06  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34336
+       * tree.c (stabilize_call, stabilize_init): Do nothing if
+       processing_template_decl.
+
+2007-12-05  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/34271
+       * semantics.c (finish_decltype_type): For SCOPE_REF issue an
+       error instead of assertion failure.
+       * parser.c (cp_parser_decltype): If closing paren is not found,
+       return error_mark_node.
+
 2007-12-04  Douglas Gregor  <doug.gregor@gmail.com>
 
        PR c++/34101