+2008-01-25 Jason Merrill <jason@redhat.com>
+
+ * decl2.c (is_late_template_attribute): Don't defer attribute
+ visibility just because the type is dependent.
+
+2008-01-25 Jason Merrill <jason@redhat.com>
+ Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/31780
+ * call.c (standard_conversion): Allow conversion from integer/real
+ to complex.
+ (compare_ics): Such a conversion is worse than a normal arithmetic
+ conversion.
+
+2008-01-25 Richard Guenther <rguenther@suse.de>
+
+ PR c++/33887
+ * cp-lang.c (LANG_HOOKS_REDUCE_BIT_FIELD_OPERATIONS): Define
+ to true.
+
+2008-01-24 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/34603
+ * pt.c (push_template_decl_real): Return error_mark_node in case
+ of template definition of non-template.
+
+2008-01-24 Jason Merrill <jason@redhat.com>
+
+ PR c++/34913
+ * decl2.c (is_late_template_attribute): Defer any attribute with
+ dependent args. Also defer type attributes if the type is dependent.
+
+2008-01-22 Jakub Jelinek <jakub@redhat.com>
+ Alexandre Oliva <aoliva@redhat.com>
+
+ PR c++/33984
+ * call.c (reference_binding): For bitfields use the declared bitfield
+ type.
+ (add_builtin_candidates): Likewise.
+ * class.c (layout_class_type): For bitfields copy over the
+ original type quals.
+
+2008-01-22 Jason Merrill <jason@redhat.com>
+
+ PR c++/28560
+ * decl.c (groktypename): Also ignore attributes on dependent
+ possibly-class types.
+
+ PR c++/34912
+ * friend.c (do_friend): Check for prior declaration of a friend
+ function of a local class.
+ * name-lookup.c (lookup_name_innermost_nonclass_level):
+ No longer static.
+ * name-lookup.h: Declare it.
+
+2008-01-22 Tom Tromey <tromey@redhat.com>
+
+ PR c++/34829:
+ * init.c (build_new_1): Only disallow Java aggregates.
+
+2008-01-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/34607
+ * semantics.c (finish_omp_for): Don't call c_finish_omp_for
+ if decl or init is error_mark_node.
+
+ PR c++/34918
+ * error.c (dump_expr): Handle VECTOR_CST.
+
+2008-01-21 Jason Merrill <jason@redhat.com>
+
+ PR c++/33959
+ * pt.c (tsubst_aggr_type): Make sure our context is complete.
+
+ PR c++/34573
+ * pt.c (retrieve_local_specialization): Robustify.
+ (tsubst_pack_expansion, tsubst_decl): Remove redundant checks.
+
+ PR c++/34846
+ * pt.c (tsubst): Only call retrieve_local_specialization if the
+ original typedef was in a function template.
+
+ PR c++/34196
+ * decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.
+
+2008-01-21 Richard Guenther <rguenther@suse.de>
+
+ PR c++/34850
+ * error.c (cp_print_error_function): Deal with recursive
+ BLOCK trees.
+
+2008-01-20 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/34891
+ * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.
+
+2008-01-20 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/34776
+ PR c++/34486
+ * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
+ on non-IS_AGGR_TYPE scope.
+ (constructor_name_p): Assert IS_AGGR_TYPE.
+
+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
+ * name-lookup.c (arg_assoc_template_arg): Recurse on argument
+ packs.
+ (arg_assoc_type): We don't need to handle TYPE_ARGUMENT_PACK here,
+ since arg_assoc_template_arg will deal with them (better).
+
+2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
+
+ PR c++/33509
+ * pt.c (tsubst_exception_specification): Handle substitutions into
+ member templates, where tsubst_pack_expansion returns a
+ TYPE_PACK_EXPANSION.
+
+2007-12-04 Douglas Gregor <doug.gregor@gmail.com>
+
+ PR c++/33091
+ * pt.c (unify_pack_expansion): If we didn't deduce any actual
+ bindings for the template parameter pack, don't try to keep the
+ empty deduced arguments.
+ (unify): If a parameter is a template-id whose template argument
+ list contains a pack expansion that is not at the end, then we
+ cannot unify against that template-id.
+
+2007-12-02 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/34061
+ * pt.c (current_template_args): Use error_operand_p.
+
+2007-12-02 Paolo Carlini <pcarlini@suse.de>
+
+ PR c++/34273
+ * error.c (dump_decl): Handle TREE_BINFO.
+
+2007-12-01 Ollie Wild <aaw@google.com>
+
+ PR c++/8171
+ * typeck.c (build_binary_op): Add conversion of pointers to function
+ members appearing as operands to the equality operators.
+
+2007-11-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/34275
+ * error.c (dump_expr): Handle OBJ_TYPE_REF.
+
+2007-11-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/34270
+ * tree.c (lvalue_p_1) <case COND_EXPR>: Handle x ?: y
+ in templates.
+ * typeck.c (is_bitfield_expr_with_lowered_type) <case COND_EXPR>:
+ Likewise.
+
+ PR c++/34267
+ PR c++/34268
+ * parser.c (cp_parser_decltype): Don't call finish_id_expression
+ on ~type.
+ * semantics.c (finish_decltype_type): Issue error on types, TYPE_DECLs
+ and ~type early.
+
+2007-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/34181
+ * method.c (use_thunk): Don't inline the call in the thunk.
+
+ PR c++/34213
+ * tree.c (decl_linkage): Static data members and static member
+ functions in anonymous ns classes are lk_external.
+
+2007-11-26 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ PR c++/34081
+ * decl.c (start_preparsed_function): Pass
+ processing_template_decl for the new allocate_struct_function
+ parameter.
+
2007-11-25 Richard Guenther <rguenther@suse.de>
- decl.c (poplevel): Use BLOCK_CHAIN.
+ * decl.c (poplevel): Use BLOCK_CHAIN.
2007-11-24 Ollie Wild <aaw@google.com>