OSDN Git Service

gcc/ChangeLog:
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 63cf2d1..a56322b 100644 (file)
@@ -1,3 +1,998 @@
+2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
+
+       * cp/repo.c (init_repo): Initialize random_seed saved options.
+       (finish_repo): Adjust.
+
+2007-03-13  Mark Mitchell  <mark@codesourcery.com>
+
+       PR bootstrap/30899
+       * Make-lang.in (doc/g++.1): Use $< to specify the location from
+       which to copy.
+
+2007-03-12  Seongbae Park <seongbae.park@gmail.com>
+
+       * decl.c (compute_array_index_type): New warning flag warn_vla.
+
+2007-03-12  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/30108
+       * call.c (convert_default_arg): Copy non-constant arguments.
+
+2007-03-11  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/31038
+       * parser.c (cp_parser_postfix_expression): Disallow compound
+       literals in constant expressions.
+
+       PR c++/30328
+       * semantics.c (finish_typeof): Use unlowered_expr_type.
+       
+2007-03-10  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/30274
+       * cp-tree.h (unlowered_expr_type): New function.
+       * typeck.c (is_bitfield_expr_with_lowered_type): Handle
+       COMPOUND_EXPR, MODIFY_EXPR, and SAVE_EXPR.
+       (unlowered_expr_type): New function.
+       (build_unary_op): Disallow predecrements of bool bitfields.
+       * call.c (build_conditional_expr): Use unlowered_expr_type.
+       * pt.c (type_unification_real): Likewise.
+
+2007-03-09  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR c++/20599
+       * typeck.c (check_return_expr): Check for bare parameter packs.
+       (comptypes): Compare template parameter packs and
+       type pack expansions.
+       * decl.c (grokdeclarator): Deal with the declaration of function
+       parameter packs.
+       (grokparms): Verify that the (optional) function parameter pack is
+       at the end of the parameter list.
+       (xref_basetypes): Handle pack expansions in the base class.
+       (cp_tree_node_structure): Handle ARGUMENT_PACK_SELECT.
+       * cp-tree.def (TYPE_ARGUMENT_PACK): New.
+       (NONTYPE_ARGUMENT_PACK): New.
+       (TYPE_PACK_EXPANSION): New.
+       (EXPR_PACK_EXPANSION): New.
+       (ARGUMENT_PACK_SELECT): New.
+       * cp-objcp-common.c (cp_tree_size): Compute size of
+       (NON)TYPE_ARGUMENT_PACK, (TYPE|EXPR)_PACK_EXPANSION, and
+       ARGUMENT_PACK_SELECT.
+       * error.c (dump_template_argument): Print template argument packs.
+       (dump_template_argument_list): Ditto.
+       (dump_template_parameter): Dump `...' for template type parameter
+       packs.
+       (dump_type): Dump TYPE_PACK_EXPANSION nodes.
+       (dump_parameters): Print function parameter packs.
+       (dump_template_parms): Print template argument packs.
+       (dump_expr): Dump EXPR_PACK_EXPANSION nodes.
+       (maybe_warn_variadic_templates): New.
+       * operators.def: Add ellipsis operator for EXPR_PACK_EXPANSION.
+       * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
+       NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
+       CAST_EXPR. 
+       * mangle.c (write_type): Mangle TYPE_PACK_EXPANSION.
+       (write_template_arg): Write argument packs as separate arguments.
+       * cp-tree.h (struct template_parm_index_s): Add flag that
+       indicates that the template parameter is actually a parameter
+       pack.
+       (struct tree_argument_pack_select): New.
+       (enum cp_tree_node_structure_enum): Add TS_CP_ARGUMENT_PACK_SELECT.
+       (union lang_tree_node): Add argument_pack_select.
+       (FUNCTION_PARAMETER_PACK_P): New.
+       (PACK_EXPANSION_P): New.
+       (PACK_EXPANSION_PATTERN): New.
+       (SET_PACK_EXPANSION_PATTERN): New.
+       (PACK_EXPANSION_PARAMETER_PACKS): New.
+       (ARGUMENT_PACK_P): New.
+       (ARGUMENT_PACK_ARGS): New.
+       (SET_ARGUMENT_PACK_ARGS): New.
+       (ARGUMENT_PACK_INCOMPLETE_P): New.
+       (ARGUMENT_PACK_EXPLICIT_ARGS): New.
+       (TEMPLATE_PARM_PARAMETER_PACK): New.
+       (TEMPLATE_TYPE_PARAMETER_PACK): New.
+       (ARGUMENT_PACK_SELECT_FROM_PACK): New.
+       (ARGUMENT_PACK_SELECT_INDEX): New.
+       (ARGUMENT_PACK_SELECT_ARG): New.
+       (struct cp_declarator): Add parameter_pack_p flag.
+       (maybe_warn_variadic_templates): Declare.
+       (process_template_parm): Add bool parameter IS_PARAMETER_PACK, to
+       indicate a template parameter pack. 
+       (uses_parameter_packs): Declare.
+       (template_parameter_pack_p): Declare.
+       (template_parms_variadic_p): Declare.
+       (make_pack_expansion): Declare.
+       (check_for_bare_parameter_packs): Declare.
+       * cxx-pretty-print.c (pp_cxx_unary_expression): Print
+       sizeof... expressions. 
+       (pp_cxx_expression): Print pack expansions and non-type argument
+       packs.
+       (pp_cxx_exception_specification): Print pack expansions. 
+       (pp_cxx_direct_declarator): Print ellipsis for parameter packs.
+       (pp_cxx_ctor_initializer): Print pack expansions.
+       (pp_cxx_type_id): Print pack expansions.
+       (pp_cxx_template_argument_list): Print argument packs.
+       (pp_cxx_template_parameter): Print ellipsis for template parameter
+       packs.
+       * pt.c (comp_template_parms): Compare template parameter packs.
+       (template_parameter_pack_p): New.
+       (template_parms_variadic_p): New.
+       (template_args_variadic_p): New.
+       (make_ith_pack_parameter_name): New.
+       (struct find_parameter_pack_data): New.
+       (find_parameter_packs_r): New.
+       (uses_parameter_packs): New.
+       (make_pack_expansion): New.
+       (check_for_bare_parameter_packs): New.
+       (expand_template_argument_pack): New.
+       (reduce_template_parm_level): Propagate parameter pack flag.
+       (process_template_parm): Add is_parameter_pack parameter to state
+       when the parameter is actually a parameter pack. Create template
+       parameter packs when is_parameter_pack is true.
+       (current_template_args): The argument for a template parameter
+       pack is an argument pack containing a single pack expansion.
+       (process_partial_specialization): When checking that non-type
+       argument expressions do not involve template parameters, loop over
+       the arguments in argument packs separately.
+       (push_template_decl_real): Check that the type of the declaration
+       does not have any bare parameter packs. Check that primary
+       templates have no more than one parameter pack, and that it comes
+       at the end of the template parameter list.
+       (convert_template_argument): Handle coercions for pack expansion
+       expressions by coercing the pattern then rebuilding the expansion.
+       (coerce_template_parms): When coercing the arguments for a
+       variadic template, pack "extra" arguments into an argument pack.
+       (coerce_template_template_parms): Cannot coerce between parameter
+       packs and non-pack parameters.
+       (template_args_equal): Compare PACK_EXPANSION_P expressions.
+       (comp_template_args): Expand all template arguments packs before
+       comparing template argument lists.
+       (mangle_class_name_for_template): Make argument packs as separate
+       template arguments.
+       (for_each_template_parm_r): No need to handle BASELINK. 
+       (instantiate_class_template): Handle pack expansions in the base
+       class list.
+       (tsubst_pack_expansion): New.
+       (tsubst_template_args): Handle substitutions of argument packs and
+       pack expansion into template argument lists.
+       (tsubst_decl): Expand function parameter packs into separate
+       function parameters.
+       (tsubst_arg_types): Expand a type pack expansion into separate
+       argument types.
+       (tsubst_exception_specification): Handle pack expansions in
+       exception specifiers.
+       (tsubst): See through ARGUMENT_PACK_SELECT arguments when 
+       replacing a template parameter with its argument. If we encounter
+       a substitution for an argument pack, just return the parameter
+       itself. 
+       (tsubst_copy): sizeof(X...) returns the number of elements in
+       parameter pack X.  See through ARGUMENT_PACK_SELECT when the
+       PARM_DECL is a parameter pack.
+       (tsubst_expr): Expression pack expansions and argument packs
+       cannot show up here; they will all be handled through function
+       calls, sizeof, and template argument lists.
+       (tsubst_copy_and_build): sizeof(X...) returns the number of
+       elements in parameter pack X.  Handle pack expansions in TREE_LIST
+       and CONSTRUCTOR nodes.
+       (fn_type_unification): Handle "incomplete" explicit template
+       argument lists that specify some of the arguments for a template
+       parameter pack.
+       (type_unification_real): Unify arguments against pack expansions.
+       (template_parm_level_and_index): New, helper function.
+       (unify_pack_expansion): New.
+       (unify): Unify argument packs on an argument-by-argument basis,
+       handling variadic argument packs as well.
+       (more_specialized_fn): Handle unification of function parameter
+       packs. All things being equal, prefer non-variadic function
+       templates to variadic function templates.
+       (more_specialized_class): Prefer the variadic class template
+       partial specialization that binds fewer arguments to a parameter
+       pack.
+       (regenerate_decl_from_template): Expand function parameter packs
+       into separate parameters.
+       (instantiate_decl): Ditto.
+       (tsubst_initializer_list): Handle pack expansions for base-class
+       initializers.
+       (dependent_type_p_r): Determine dependent types in argument packs
+       and pack expansions.
+       (value_dependent_expression_p): Determine value-dependence of
+       non-type argument packs.
+       (dependent_template_arg_p): Handle argument packs.
+       * semantics.c (finish_cond): Check for bare parameter packs.
+       (finish_expr_stmt): Ditto.
+       (finish_for_expr): Ditto.
+       (finish_switch_cond): Ditto.
+       (finish_mem_initializers): Ditto.
+       * name-lookup.c (arg_assoc_type): Handle pack expansions and
+       argument packs.
+       * decl2.c (cp_build_parm_decl): Mark function parameter packs.
+       * parser.c (make_declarator): Declarator is not an expansion.
+       (make_pointer_declarator): Transfer parameter pack flag to outer
+       declarator.
+       (make_reference_declarator): Ditto.
+       (make_ptrmem_declarator): Ditto.
+       (make_call_declarator): Ditto.
+       (make_array_declarator): Ditto.
+       (cp_parser_postfix_expression): Allow pack expansion expressions
+       in the argument list for a call expression.
+       (cp_parser_parenthesized_expression_list): Add new parameter
+       ALLOW_EXPANSION_P. When true, parse the ellipsis to mean "expand
+       into separate arguments."
+       (cp_parser_new_placement): Allow pack expansion expressions.
+       (cp_parser_new_initializer): Ditto.
+       (cp_parser_mem_initializer_list): Allow ellipsis to create a
+       base-class initializer expansion.
+       (cp_parser_mem_initializer): Ditto.
+       (cp_parser_template_parameter_list): Keep track of whether the
+       template parameter is a template parameter pack.
+       (cp_parser_template_parameter): Parse the ellipsis to indicate a
+       template parameter pack.
+       (cp_parser_type_parameter): Ditto.
+       (cp_parser_template_argument_list): Parse the ellipsis to indicate
+       a pack expansion.
+       (cp_parser_direct_declarator): Parse the ellipsis to indicate that
+       this declarator is a parameter pack.
+       (cp_parser_parameter_declaration): The ellipsis does not end the
+       parameter declaration, because it might be a parameter pack. Parse
+       the ellipsis to indicate a parameter pack.
+       (cp_parser_initializer): Allow pack expansions.
+       (cp_parser_initializer_list): Allow ellipsis to create an
+       initializer expansion.
+       (cp_parser_base_clause): Allow ellipsis to create a base specifier
+       expansion.
+       (cp_parser_type_id_list): Allow ellipsis to create an exception
+       specifier expansion.
+       (cp_parser_attribute_list): Don't allow pack expansions.
+       (cp_parser_functional_cast): Allow pack expansions.
+       (cp_parser_sizeof_operand): Allow ellipsis following "sizeof" to
+       compute the length of a parameter pack.
+       (cp_parser_next_token_ends_template_argument_p): An ellipsis can
+       end a template argument.
+       * tree.c (cp_walk_subtrees): Walk BASELINK, TYPE_ARGUMENT_PACK,
+       NONTYPE_ARGUMENT_PACK, TYPE_PACK_EXPANSION, EXPR_PACK_EXPANSION,
+       CAST_EXPR. 
+
+2007-03-09  Dirk Mueller  <dmueller@suse.de>
+
+       * cp/call.c (build_new_op): Call warn_logical_operator.
+
+2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
+
+       PR c++/30852
+       * semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
+
+       PR c++/30534
+       * pt.c (any_template_arguments_need_structural_equality_p):
+       Robustify.
+
+2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
+
+       * decl.c (grokdeclarator): Disable warnings for anonymous
+       bitfields.
+
+2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
+
+       * typeck2.c (readonly_error): Always emit a hard error.
+       Remove last argument.
+       * cp-tree.h (readonly_error): Adjust prototype.
+       * semantics.c (finish_asm_stmt): Adjust call to readonly_error.
+       * typeck.c (build_unary_op): Likewise.
+       (build_modify_expr): Likewise.
+
+2007-03-04  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/30895
+       * tree.c (cp_tree_equal): Properly handle COMPLEX_CST trees.
+
+2007-03-03  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c++/15787
+       * parser.c (struct cp_parser): New IN_IF_STMT.
+       (cp_parser_statement_seq_opt): Handle an unexpected 'else',
+       returning if parsing the body of an 'if' statement or issuing an
+       error and continuing.
+       (cp_parser_selection_statement): Set IN_IF_STMT bit when parsing
+       body of 'if'.
+       (cp_parser_jump_statement): Mask new IN_IF_STMT bit.
+       
+2007-03-02  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/28253
+       * class.c (update_vtable_entry_for_fn): Properly handle invalid overriders
+       for thunks.
+
+2007-03-02  Geoffrey Keating  <geoffk@apple.com>
+
+       * g++spec.c (lang_specific_driver): Add -lstdc++ when compiling
+       Objective-C++.  Don't exit early if -shared-libgcc needs to be
+       added.
+
+2007-03-02  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * typeck.c (common_base_type): Delete unused function.
+       
+2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
+
+       * Make-lang.in: Add dummy lang.install-pdf target.
+
+2007-03-01  Simon Baldwin <simonb@google.com>
+
+       PR c++/23689
+       * decl.c (check_tag_decl): Added new warning for typedef ignored
+       when it precedes an otherwise valid non-typedef declaration.
+
+2007-02-28  Sandra Loosemore  <sandra@codesourcery.com>
+
+       * typeck.c (build_function_call): Store converted arguments
+       in a stack-allocated array instead of building a list.
+       (convert_arguments): Store arguments in the array passed in as an
+       argument, and return the actual number of arguments.
+       * call.c (build_call): Delete, and replace with...
+       (build_call_n, build_call_a): New.
+       (build_op_delete_call): Rewrite to avoid constructing argument lists.
+       (build_over_call): Store converted arguments in a stack-allocated
+       array instead of building a list.
+       (build_cxx_call): Pass arguments in an array instead of as a list.
+       (build_java_interface_fn_ref): Rewrite to avoid constructing
+       argument lists.
+       * tree.h: Update declarations to reflect above changes.
+       * method.c (use_thunk): Use a stack-allocated array to hold
+       the arguments instead of a list.
+       * rtti.c (throw_bad_cast): Update call to cxx_call.
+       (throw_bad_typeid): Likewise.
+       (build_dynamic_cast_1): Likewise.
+       * init.c (build_builtin_delete_call): Use build_call_n.
+       * decl.c (expand_static_init): Likewise.
+       * except.c (cp_protect_cleanup_actions): Likewise.
+       * cp-gimplify.c (genericize_eh_spec_block): Likewise.
+       (gimplify_must_not_throw_expr): Likewise.
+       (cxx_omp_apply_fn): Use build_call_a.
+
+2007-02-26  Mark Mitchell  <mark@codesourcery.com>
+
+       * semantics.c (expand_or_defer_fn): Call c_record_cdtor_fn.
+       * decl2.c (cp_write_gloabl_declarations): Call c_build_cdtor_fns.
+
+2007-02-25  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (static_ctors): Remove.
+       * cp-tree.h (static_dtors): Likewise.
+       * cp-objcp-common.c (decl_shadowed_for_var_lookup): Adjust for
+       refactoring of tree_map hierarchy.
+       (decl_shadowed_for_var_insert): Likewise.
+       * semantics.c (expand_body): Use c_expand_body.
+       (expand_or_defer_fn): Don't update static_ctors or static_dtors.
+       * decl2.c (static_ctors): Remove.
+       (static_dtors): Likewise.
+       (generate_ctor_or_dtor_function): Pass NULL_TREE to
+       objc_generate_static_init_call.  Do not call static_[cd]tors.
+       (generate_ctor_and_dtor_functions_for_priority): Do not check for
+       static_[cd]tors.
+       (cp_write_global_declarations): Likewise.
+
+2007-02-23  Richard Guenther  <rguenther@suse.de>
+
+       * class.c (note_name_declared_in_class): Make declaration
+       changes meaning a pedwarn.
+
+2007-02-22  Michael Matz  <matz@suse.de>
+
+       PR c++/29433
+       * cp-tree.h (TFF_UNQUALIFIED_NAME): New formatting flag.
+       * error.c (dump_aggr_type, dump_simple_decl, dump_decl,
+       dump_function_decl): Guard emitting outer scopes by new flag.
+       * cp-lang.c (cxx_dwarf_name): New function.
+       (LANG_HOOKS_DWARF_NAME): Define to cxx_dwarf_name.
+       * pt.c (classtype_mangled_name, mangle_class_name_for_template):
+       Remove functions.
+       (push_template_decl_real, lookup_template_class): Remove calls
+       to above functions.
+
+2007-02-19  Mark Mitchell  <mark@codesourcery.com>
+
+       * call.c (build_new_method_call): Ensure that explicit calls of
+       destructors have type "void".
+
+2007-02-19  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * typeck.c (build_binary_op): Replace -Wstring-literal-comparison
+       and -Walways-true with -Waddress.
+       * cvt.c (convert_to_void): Replace unconditional warning with
+       -Waddress.
+
+2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
+
+       * decl.c, tree.c: Fix comment typos.
+
+2007-02-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR C++/30158
+       * semantics.c (finish_stmt_expr_expr): Set TREE_TYPE of the 
+       statement expression if we had an error mark node.
+               
+2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
+           Brooks Moses  <brooks.moses@codesourcery.com>
+           Lee Millward  <lee.millward@codesourcery.com>
+
+       * cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
+       Change class to tcc_vl_exp.
+
+       * call.c (build_call): Use build_call_list instead 
+       of build3. 
+       (build_over_call): Likewise.
+       (build_new_method_call): Use build_min_non_dep_call_list 
+       instead of build_min_non_dep.
+
+       * error.c (dump_call_expr_args): New function.
+       (dump_aggr_init_expr_args): New function.
+       (dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
+       Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
+
+       * cvt.c (convert_to_void): Use build_call_array instead
+       of build3; use new AGGR_INIT_EXPR accessor macros.
+
+       * mangle.c (write_expression): Use TREE_OPERAND_LENGTH
+       instead of TREE_CODE_LENGTH.
+
+       * dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
+       AGGR_INIT_EXPR accessor macros.
+
+       * cp-gimplify.c (cp_gimplify_init_expr): Use 
+       AGGR_INIT_EXPR_SLOT to set the slot operand.
+
+       * cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
+       (AGGR_INIT_EXPR_SLOT): New macro.
+       (AGGR_INIT_EXPR_ARG): New macro.
+       (aggr_init_expr_nargs): New macro.
+       (AGGR_INIT_EXPR_ARGP): New macro.
+       (aggr_init_expr_arg_iterator): New.
+       (init_aggr_init_expr_arg_iterator): New.
+       (next_aggr_init_expr_arg): New.
+       (first_aggr_init_expr_arg): New.
+       (more_aggr_init_expr_args_p): New.
+       (FOR_EACH_AGGR_INIT_EXPR_ARG): New.
+       (stabilize_aggr_init): New declaration.
+       (build_min_non_dep_call_list): Likewise.
+
+       * tree.c (process_aggr_init_operands): New function.
+       (build_aggr_init_array) New function.
+       (build_cplus_new): Update to use new CALL_EXPR and
+       AGGR_INIT_EXPR accessor macros. Replace use of build3 with
+       build_aggr_init_array.
+       (build_min_non_dep_call_list) New function.
+       (build_min_nt): Assert input code parameter is not a variable
+       length expression class.
+       (build_min, build_min_non_dep): Likewise.
+       (cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
+       to check for equality instead of recursing. Handle tcc_vl_exp
+       tree code classes.
+       (stabilize_call): Update to only handle CALL_EXPRs, not 
+       AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
+       (stabilize_aggr_init): New function.
+       (stabilize_init): Use it.
+
+       * cxx-pretty-print.c (pp_cxx_postfix_expression)
+       <AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
+       AGGR_INIT_EXPR accessor macros and argument iterators.
+       
+       * pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
+       build_vl_exp. Iterate through the operands, recursively 
+       processing each one.
+       (tsubst_copy_and_build) <CALL_EXPR>: Update to use new
+       CALL_EXPR accessor macros.
+       (value_dependent_expression_p) <default>: Handle tcc_vl_exp
+       tree code classes. Use TREE_OPERAND_LENGTH instead of 
+       TREE_CODE_LENGTH.
+
+       * semantics.c (finish_call_expr): Use build_nt_call_list
+       instead of build_nt.
+       (simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
+       accessor macros. Use build_call_array to construct the 
+       CALL_EXPR node instead of build3
+       
+       * decl2.c (build_offset_ref_call_from_tree): Use 
+       build_nt_call_list and build_min_non_dep_call_list instead
+       of build_min_nt and build_min_non_dep.
+
+       * parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
+       Use build_nt_call_list instead of build_min_nt.
+
+2007-02-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c++/28943
+       * call.c (build_conditional_expr): Improve error message.
+       
+2007-02-13  Dirk Mueller  <dmueller@suse.de>
+
+       * friend.c (do_friend): Annotate warning about friend
+       declarations in templates with OPT_Wnon_template_friend.
+       Convert informal message from warning() to inform().
+
+2007-02-12  Simon Martin  <simartin@users.sourceforge.net>
+           Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/14622
+       * pt.c (do_decl_instantiation): Detect type mismatches in explicit
+       instantiations for variables.
+
+2007-02-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR middle-end/7651
+       * cp-gimplify.c (gimplify_expr_stmt): Don't check extra_warnings.
+       Check warn_unused_value just once.
+
+2007-02-11  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/26988
+       * pt.c (determine_specialization): Use skip_artificial_parms_for.
+       (fn_type_unificiation): Likewise.
+       (get_bindings): Likewise.
+
+o2007-02-06  Mark Mitchell  <mark@codesourcery.com>
+
+       PR target/29487
+       * decl.c (finish_function): Use DECL_REPLACEABLE.
+       * tree.c (cp_cannot_inline_tree_fn): Likewise.
+
+2007-02-10  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * parser.c (cp_parser_primary_expression): Reformat overly long lines.
+
+2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>
+
+       * decl.c (grokvardecl): Don't error if !have_tls.
+       (grokdeclarator): Likewise.
+       * parser.c (cp_parser_omp_threadprivate): Likewise.
+
+2007-02-07  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/30703
+       * cp-gimplify.c (cp_genericize_r): Don't dereference invisiref
+       parameters and result decls in omp clauses.
+       (cxx_omp_privatize_by_reference): Pass also invisiref PARM_DECLs
+       by reference.
+
+2007-02-05  Dirk Mueller  <dmueller@suse.de>
+
+       PR bootstrap/30510
+       * parser.c (cp_parser_class_specifier): Always initialize bases.
+
+2007-02-05  Paolo Bonzini  <bonzini@gnu.org>
+
+       * cp-tree.h (OMP_ATOMIC_CODE): Delete.
+       (OMP_ATOMIC_DEPENDENT_P): Rewrite.
+       * pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
+       expressions.
+       * semantics.c (finish_omp_atomic): Store a whole expression node
+       in operand 1, and integer_zero_node in operand 0, for dependent
+       OMP_ATOMIC.  Rewrite to make flow easier to understand.
+
+2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * decl.c (grokdeclarator): Use OPT_Wreturn_type instead of 0.
+
+2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
+
+       * class.c, cp-tree.h, decl.c, decl2.c, g++spec.c, init.c,
+       parser.c, pt.c, tree.c, typeck.c: Follow spelling conventions.
+
+2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * parser.c (cp_lexer_get_preprocessor_token): Attach the C++0x
+       keyword warning to -Wc++0x-compat.
+       
+2007-02-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * decl.c (grokdeclarator): Update documentation.
+
+2007-02-02  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/30536
+       * decl.c (grokdeclarator): If __thread is used together with
+       a storage class other than extern and static, clear thread_p
+       after issuing diagnostics and fall through to checking the
+       storage class.
+
+2007-01-30  Roger Sayle  <roger@eyesopen.com>
+
+       * error.c (dump_type_suffix): Avoid use of cp_build_binary_op when
+       calculating the size of an array (to avoid recursive errors).
+
+2007-01-30  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c++/24745
+       * typeck.c (build_binary_op): Fix logic for warning. Move warning
+       to -Wpointer-arith.
+       * call.c (convert_like_real): Don't warn when converting to
+       boolean type.
+       
+2007-01-29  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * decl.c (pop_label): Replace warning with call to
+       warn_for_unused_label.
+
+2007-01-28  Andrew Pinski  <pinskia@gmail.com>
+
+       PR C++/28988
+       * semantics.c (finish_pseudo_destructor_expr): Check the
+       destrutor name by calling check_dtor_name.
+
+2007-01-24  Douglas Gregor  <dgregor@osl.iu.edu>
+
+       * lex.c (D_CPP0X): Rename.
+       (D_CXX0X): To this.
+       (reswords): D_CPP0X -> D_CXX0X.
+       (init_reswords): Ditto.
+       * parser.c (cp_lexer_get_preprocessor_token): Warn about the use
+       of C++0x keywords as identifiers.
+
+2007-01-23  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/27492
+       * decl.c (duplicate_decls): Don't reset DECL_INVALID_OVERRIDER_P for
+       function decls.
+
+2007-01-23  Ian Lance Taylor  <iant@google.com>
+
+       * typeck.c (convert_for_assignment): Only warn about a = b = c
+       when converting to bool.
+
+2007-01-23  Roger Sayle  <roger@eyesopen.com>
+
+       * call.c (null_ptr_cst_p): Replace use of TREE_CONSTANT_OVERFLOW with
+       TREE_OVERFLOW.
+       * typeck.c (ignore_overflows): Remove the remaining uses of
+       TREE_CONSTANT_OVERFLOW.
+
+2007-01-20  Jan Hubicka  <jh@suse.cz>
+
+       * decl2.c (start_objects, start_static_storage_duration_function):
+       Do not make the functions uninlinable.
+
+2007-01-17  Ian Lance Taylor  <iant@google.com>
+
+       * class.c (add_method): Call VEC_reserve_exact rather than passing
+       a negative size to VEC_reserve.
+
+2007-01-11  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/29573
+       * tree.c (cp_tree_equal): Properly handle MODOP_EXPR trees.
+
+2007-01-10  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/28999
+       * decl.c (make_typename_type): If the qualified name is not a
+       type, issue an error.
+       * parser.c (cp_parser_elaborated_type_specifier): Fix comment
+       formatting.
+
+2007-01-08  Geoffrey Keating  <geoffk@apple.com>
+
+       * rtti.c: Include target.h.
+       (emit_support_tinfos): If ! targetm.cxx.library_rtti_comdat (),
+       don't emit typeinfo for fundamental types as weak.
+       * Make-lang.in (cp/rtti.o): Update and correct dependencies.
+
+2007-01-08  Richard Guenther  <rguenther@suse.de>
+
+       * cvt.c (cp_convert_to_pointer): Use build_int_cst_type.
+
+2007-01-08  Mark Shinwell  <shinwell@codesourcery.com>
+
+       * call.c (standard_conversion): Pass flag to
+       vector_types_convertible_p to disallow emission of note.
+       * typeck.c (convert_for_assignment): Pass flag to
+       vector_types_convertible_p to allow emission of note.
+       (ptr_reasonably_similar): Pass flag to vector_types_convertible_p
+       to disallow emission of note.
+
+2007-01-07  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c++/28986
+       * typeck.c (build_binary_op): Call overflow_warning if
+       TREE_OVERFLOW_P is true for the result and not for any of the
+       operands.
+       
+2007-01-06  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/19439
+       * class.c (add_method): Don't wait until template
+       instantiation time to complain about duplicate methods.
+       
+2007-01-05  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       PR c/19978
+       * semantics.c (finish_unary_op_expr): Warn only if result
+       overflowed and operands did not.
+
+2007-01-05  Ian Lance Taylor  <iant@google.com>
+
+       * typeck.c (build_binary_op): Warn about comparing a non-weak
+       address to NULL.
+
+2007-01-05  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * pt.c (tsubst): Propagate the need for structural equality checks
+       when reducing the level of template parameters.
+
+2007-01-03  Kazu Hirata  <kazu@codesourcery.com>
+
+       * pt.c: Fix a comment typo.
+
+2006-01-02  Ian Lance Taylor  <iant@google.com>
+
+       * semantics.c (maybe_convert_cond): Optionally warn when using an
+       assignment as a condition.
+       * typeck.c (convert_for_assignment): Optionally warn about
+       assigning the result of an assignment to a bool.
+
+2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * pt.c (canonical_template_parms): Correct typo in comment.
+       
+2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * typeck.c (structural_comptypes): Renamed from "comptypes".
+       (comptypes): Use canonical type information to perform fast type
+       comparison. When VERIFY_CANONICAL_TYPES, verify that the
+       canonical type comparison returns the same results as we would see
+       from the current, structural check. Support COMPARE_STRUCTURAL
+       when we need structural checks.
+       * decl.c (typename_compare): Fix comment.
+       (build_typename_type): TYPENAME_TYPE nodes require structural
+       equality checks, because they resolve different based on the
+       current class type.
+       (make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
+       require structural equality checks (for now).
+       (build_ptrmemfunc_type): Build the canonical pointer to member
+       function type.
+       (compute_array_index_type): Whenever we build a new index type
+       to represent the size of an array in a template, we need to mark
+       this index type as requiring structural equality. This goes for
+       arrays with value-dependent sizes with the current ABI, or all
+       arrays with ABI-1.
+       * tree.c (cplus_array_hash): New.
+       (struct cplus_array_info): New.
+       (cplus_array_compare): New.
+       (cplus_array_htab): New.
+       (build_cplus_array_type_1): Use a hash table to cache the array
+       types we build. Build the canonical array type for each array
+       type.
+       (cp_build_qualified_type_real): When building a cv-qualified array
+       type, use the hash table of array types and build canonical array
+       types as necessary.
+       (bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
+       use structural equality (for now).
+       * cp-tree.h (COMPARE_STRUCTURAL): New.
+       * pt.c (canonical_template_parms): New.
+       (canonical_type_parameter): New.
+       (process_template_parm): Find the canonical type parameter.
+       (lookup_template_class): When we have named the primary template
+       type, set the canonical type for our template class to the primary
+       template type. If any of the template arguments need structural
+       equality checks, the template class needs structural equality
+       checks.
+       (tsubst): When reducing the level of a template template
+       parameter, we require structural equality tests for the resulting
+       parameter because its template parameters have not had their types
+       canonicalized. When reducing a template type parameter, find the
+       canonical reduced type parameter.
+       (any_template_arguments_need_structural_equality_p): New.
+
+2006-12-31  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/29731
+       * parser.c (cp_parser_primary_expression): Return error_mark_node when
+       a statement-expression is found outside of a function body.
+
+2006-12-28  Kazu Hirata  <kazu@codesourcery.com>
+
+       * cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
+       Remove.
+
+       * decl2.c: Fix a comment typo.
+
+2006-12-21  Andrew Pinski  <pinskia@gmail.com>
+
+       PR C++/30225
+       * decl.c (cxx_builtin_function): Only copy the decl if adding
+       it to the std namespace.
+
+2006-12-21  Andrew Pinski  <pinskia@gmail.com>
+
+       PR C++/30168
+       * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
+
+2006-12-22  Kazu Hirata  <kazu@codesourcery.com>
+
+       * decl.c: Fix a coment typo.
+
+2006-12-18  Ian Lance Taylor  <iant@google.com>
+
+       * decl.c (start_preparsed_function): Add support for
+       -Wmissing-declarations.
+
+2006-12-16  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/29475
+       * cp-tree.h (struct deferred_access_check): New structure to represent a
+       deferred access check. It replaces the previous representation as a tree.
+       (get_deferred_access_checks): Return a vector of struct
+       deferred_access_check instead of a tree list.
+       (perform_access_checks): Take a vector of struct deferred_access_check
+       instead of a tree list.
+       * semantics.c (struct deferred_access): Store the deferred access checks
+       as a vector of struct deferred_access_check instead of a tree list.
+       (push_deferring_access_checks): Handle the change in struct
+       deferred_access.
+       (get_deferred_access_checks): Likewise.
+       (pop_to_parent_deferring_access_checks): Likewise.
+       (perform_or_defer_access_check): Likewise.
+       (perform_access_checks): Take a vector of struct deferred_access_check
+       instead of a tree list.
+       * parser.c (struct tree_check): New structure to store various data
+       associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
+       (struct cp_token): Changed the value field to be a union with a pointer to
+       a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
+       tokens and a tree field for all other tokens.
+       (eof_token): Adjusted due to the change in struct cp_token.
+       (cp_lexer_get_preprocessor_token): Likewise.
+       (cp_lexer_purge_token): Likewise.
+       (cp_lexer_purge_tokens_after): Likewise.
+       (cp_lexer_print_token): Likewise.
+       (cp_parser_error): Likewise.
+       (cp_parser_identifier): Likewise.
+       (cp_parser_string_literal): Likewise.
+       (cp_parser_primary_expression): Likewise.
+       (cp_parser_unqualified_id): Likewise.
+       (cp_parser_parenthesized_expression_list): Likewise.
+       (cp_parser_storage_class_specifier_opt): Likewise.
+       (cp_parser_function_specifier_opt): Likewise.
+       (cp_parser_type_specifier): Likewise.
+       (cp_parser_simple_type_specifier): Likewise.
+       (cp_parser_initializer_list): Likewise.
+       (cp_parser_member_specification_opt): Likewise.
+       (cp_parser_attribute_list): Likewise.
+       (cp_parser_objc_expression): Likewise.
+       (cp_parser_objc_protocol_qualifiers): Likewise.
+       (cp_parser_objc_selector): Likewise.
+       (cp_parser_objc_declaration): Likewise.
+       (cp_parser_objc_statement): Likewise.
+       (cp_parser_omp_clause_name): Likewise.
+       (cp_parser_omp_clause_default): Likewise.
+       (cp_parser_omp_clause_schedule): Likewise.
+       (cp_parser_omp_parallel): Likewise.
+       (cp_parser_initial_pragma): Likewise.
+       (pragma_lex): Likewise.
+       (cp_parser_pre_parsed_nested_name_specifier): Likewise.
+       (cp_parser_nested_name_specifier_opt): Likewise.
+       Use cp_token::u::tree_check_value to save the token's value, the
+       associated deferred checks and its qualifying scope.
+       (cp_parser_template_id): Likewise.
+       (cp_parser_template_declaration_after_export): Adjusted the call to
+       get_deferred_access_checks.
+       (cp_parser_init_declarator): Take the access checks as a vector of struct
+       deferred_access_check instead of a tree list.
+       (cp_parser_single_declaration): Likewise.
+       (cp_parser_perform_template_parameter_access_checks): Likewise.
+       (cp_parser_simple_declaration): Adjusted the call to
+       cp_parser_init_declarator.
+       (cp_parser_explicit_specialization): Adjusted the call to
+       cp_parser_single_declaration.
+
+2006-12-13  Ian Lance Taylor  <iant@google.com>
+
+       PR c++/19564
+       PR c++/19756
+       * parser.c (cp_parser_expression_stack_entry): Add field
+       lhs_type.
+       (cp_parser_binary_expression): Track tree code of left hand side
+       of expression.  Use it when calling build_x_binary_op.
+       (cp_parser_selection_statement): Add if_p parameter.  Change all
+       callers.  Warn about ambiguous else.
+       (cp_parser_statement): Add if_p parameter.  Change all callers.
+       (cp_parser_implicitly_scoped_statement): Likewise.
+       * typeck.c (build_x_binary_op): Add parameters arg1_code and
+       arg2_code.  Change all callers.  Call warn_about_parentheses.
+       * cp-tree.h (build_x_binary_op): Update declaration.
+
+2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
+
+       * decl.c (build_enumerator): Update error message to match C
+       front-end.
+       
+2006-12-11  Jan Hubicka  <jh@suse.cz>
+
+       * decl2.c (var_finalized_p): Update for renamed varpool functions.
+
+2006-12-09  Zack Weinberg  <zackw@panix.com>
+
+       * parser.c (yydebug, enum pragma_omp_clause): Delete.
+
+2006-12-07  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/29732
+       * cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
+       (explicit_class_specialization_p): Declare.
+       * pt.c (explicit_class_specialization_p): New function.
+       * parser.c (cp_parser_init_declarator): Check correct number of
+       template parameters for in-class function definitions.
+       (cp_parser_check_declrator_template_parameters): Stop looking for
+       template classes when we find an explicit specialization.
+
+2006-12-07  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/29980
+       * cp_parser_elaborated_type_specifier: Check
+       the return value of check_elaborated_type_specifier.
+
+2006-12-06  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/29730
+       * parser.c (cp_parser_init_declarator): Reject initialization of
+       functions.
+
+2006-12-05  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/29729
+       * decl2.c (check_member_template): Move check for member
+       templates in local classes to ...
+       * parser.c (cp_parser_template_declaration_after_export):
+       ... here.
+
+       PR c++/29728
+       * decl.c (check_array_designated_initializer): New function.
+       (maybe_deduce_size_from_array_init): Use it.
+       (reshape_init_array): Likewise.
+
+2006-12-05  Aldy Hernandez  <aldyh@redhat.com>
+
+       Merge from gimple-tuples-branch.
+
+       2006-10-05  Aldy Hernandez  <aldyh@redhat.com>
+
+       * cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
+       (cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
+       (cxx_omp_clause_copy_ctor): Same.
+       (cxx_omp_clause_assign_op): Same.
+
+       2006-09-28  Aldy Hernandez  <aldyh@redhat.com>
+
+       * cp-tree.h (union lang_tree_node): Gimple statements do not
+       have a TREE_CHAIN.
+       (TREE_INDIRECT_USING): Look in base.
+
+2006-12-04  Jan Hubicka  <jh@suse.cz>
+
+       * cp-objcp-common.c (cp_expr_size): Return NULL in the case
+       size is undefined.
+
+2006-12-04  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/29733
+       * pt.c (tsubst_decl): Disallow variables of function type.
+
+       PR c++/29632
+       * call.c (add_builtin_candidate): Do not permit NULL pointer
+       constants to be compared with template parameters.
+
+2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
+       Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.
+
+2006-12-03  Richard Henderson  <rth@redhat.com>
+           Andrew Pinski  <pinskia@gmail.com>
+
+       PR C++/14329
+       * error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.
+
+2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR C++/30033
+       * decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.
+
 2006-12-02  Kazu Hirata  <kazu@codesourcery.com>
 
        * name-lookup.c: Follow spelling conventions.
        (start_preparsed_function): Define and document value of
        DECL_INITIAL before and after routine.
        (finish_function): Check DECL_INITIAL invariant.
-       * parser.c 
-       (cp_parser_function_definition_from_specifiers_and_declarator): 
+       * parser.c
+       (cp_parser_function_definition_from_specifiers_and_declarator):
        Skip duplicate function definitions.
 
 2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
 2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>
 
-        PR c++/29066
+       PR c++/29066
        * typeck.c (build_binary_op):  Fix pointer to member function
        comparison for ptrmemfunc_vbit_in_delta targets.
 
        * rtti.c (get_tinfo_decl): Handle return value from
        pushdecl_top_level_and_finish.
 
-2006-11-29  Lee Millward  <lee.millward@codesourcery.com> 
+2006-11-29  Lee Millward  <lee.millward@codesourcery.com>
 
        PR c++/29022
        * parser.c (cp_parser_class_head): Move processing
        (cp_parser_class_specifier) ...here. Take an extra
        tree* parameter for any base classes. Only process
        them if the opening brace was found.
-       
+
 2006-11-28  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/29735
 
 2006-11-21      Douglas Gregor <doug.gregor@gmail.com>
 
-        * cp-tree.def (STATIC_ASSERT): New.  
+       * cp-tree.def (STATIC_ASSERT): New.
        * cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
        * error.c (dump_decl): Handle STATIC_ASSERT.
        * cp-tree.h (STATIC_ASSERT_CONDITION): New.
-        (STATIC_ASSERT_MESSAGE): New.
+       (STATIC_ASSERT_MESSAGE): New.
        (STATIC_ASSERT_SOURCE_LOCATION): New.
        (struct tree_static_assert): New.
        (enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
        (union lang_tree_node): Add static_assertion.
-        (finish_static_assert): Declare.
+       (finish_static_assert): Declare.
        * cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
        (pp_cxx_declaration): Handle STATIC_ASSERT.
        * pt.c (instantiate_class_template): Handle
        STATIC_ASSERT members.
-        (tsubst_expr): Handle STATIC_ASSERT statements.  
+       (tsubst_expr): Handle STATIC_ASSERT statements.
        * semantics.c (finish_static_assert): New.
-        * lex.c (D_CPP0X): New.
-        (reswords): Add static_assert keyword.
-        (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
-        * parser.c (cp_parser_block_declaration): Parse static
+       * lex.c (D_CPP0X): New.
+       (reswords): Add static_assert keyword.
+       (init_reswords): If not flag_cpp0x, mask out C++0x keywords.
+       * parser.c (cp_parser_block_declaration): Parse static
        assertions.
-        (cp_parser_static_assert): New.
-        (cp_parser_member_declaration): Parse static assertions.
+       (cp_parser_static_assert): New.
+       (cp_parser_member_declaration): Parse static assertions.
 
 2006-11-21  Jakub Jelinek  <jakub@redhat.com>
 
        perform_or_defer_access_check.
        * class.c (alter_access, resolve_address_of_overloaded_function):
        Likewise.
-       * decl.c (make_typename_type, make_unbound_class_template): Likewise. 
+       * decl.c (make_typename_type, make_unbound_class_template): Likewise.
        * search.c (lookup_member): Likewise.
        * friend.c (add_friend): Likewise.
        * parser.c (cp_parser_template_id,
        (build_op_delete_call): Adjusted the call to
        perform_or_defer_access_check.
        (build_over_call): Likewise.
-       
+
 2006-11-16  Dirk Mueller  <dmueller@suse.de>
 
        * name-lookup.c (begin_scope): Use GGC_CNEW instead of
 2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
        PR C++/29295
-       * typeck.c (build_unary_op): Use same_type_p when comparing to 
+       * typeck.c (build_unary_op): Use same_type_p when comparing to
        boolean type.
 
 2006-10-29  Dirk Mueller  <dmueller@suse.de>
        * rtti.c (tinfo_base_init): The type info string is always global.
 
 2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
-            Mark Mitchell <mark@codesourcery.com>
+           Mark Mitchell <mark@codesourcery.com>
+
+       PR c++/28053
+       * decl2.c (grokbitfield): Detect invalid non-integral
+       types earlier when possible.
 
-        PR c++/28053
-        * decl2.c (grokbitfield): Detect invalid non-integral 
-        types earlier when possible.
-       
 2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>
 
        PR c++/26884
        * typeck2.c (digest_init): Raise error upon attempts to
        initialize arrays with variables.
 
-2006-10-17  Lee Millward  <lee.millward@codesourcery.com> 
+2006-10-17  Lee Millward  <lee.millward@codesourcery.com>
+
+       PR c++/27952
+       * cp-tree.h (xref_basetypes): Return bool instead of void.
+       * decl.c (xref_basetypes): Adjust definition. Return false
+       if the class bases are invalid.
+       * parser.c (cp_parser_class_head): Check the return value
+       from xref_basetypes.
 
-        PR c++/27952
-        * cp-tree.h (xref_basetypes): Return bool instead of void.
-        * decl.c (xref_basetypes): Adjust definition. Return false
-        if the class bases are invalid.
-        * parser.c (cp_parser_class_head): Check the return value
-        from xref_basetypes.
-       
 2006-10-17  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/28261
        set the type to error_mark_node.
        (grokdeclarator): Check the return type of check_var_type.
        * class.c (finish_struct_1): Robustify.
-       
+
 2006-10-11  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/29175
 2006-10-11  Lee Millward  <lee.millward@codesourcery.com>
 
        PR c++/29024
-        * cp-tree (struct cp_decl_specifier_seq): Rename to 
-        conflicting_specifiers_p
-        * parser.c (cp_parser_set_storage_class): Set
-        conflicting_specifiers_p for the input decl specifier 
-        if a typedef specifier is present. Rename uses of
-        multiple_specifiers_p to conflicting_specifiers_p.
-        (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage 
-        class specifier has already been set for this declaration, 
-        set conflicting_specifiers_p to true on the decl_specs.
-        * decl.c (grokdeclarator): Rename uses of
-        multiple_specifiers_p to conflicting_specifiers_p.
+       * cp-tree (struct cp_decl_specifier_seq): Rename to
+       conflicting_specifiers_p
+       * parser.c (cp_parser_set_storage_class): Set
+       conflicting_specifiers_p for the input decl specifier
+       if a typedef specifier is present. Rename uses of
+       multiple_specifiers_p to conflicting_specifiers_p.
+       (cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
+       class specifier has already been set for this declaration,
+       set conflicting_specifiers_p to true on the decl_specs.
+       * decl.c (grokdeclarator): Rename uses of
+       multiple_specifiers_p to conflicting_specifiers_p.
 
 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
 
        PR c++/29080
        * parser.c (cp_parser_postfix_dot_deref_expression): Use
        BASELINK_ACCESS_BINFO as the qualifying scope when calling
-       adjust_result_of_qualified_name_lookup. 
+       adjust_result_of_qualified_name_lookup.
 
 2006-09-25  Lee Millward  <lee.millward@codesourcery.com>
 
-        PR c++/27329
-        PR c++/26938
-        * cp-tree.h (redeclare_class_template): Adjust declaration
-        to return bool instead of void.
-        * pt.c (redeclare_class_template): Update definition.
+       PR c++/27329
+       PR c++/26938
+       * cp-tree.h (redeclare_class_template): Adjust declaration
+       to return bool instead of void.
+       * pt.c (redeclare_class_template): Update definition.
        Return false on error.
-        * decl.c (xref_tag): Return error_mark_node if
+       * decl.c (xref_tag): Return error_mark_node if
        redeclare_class_template returned false.
 
        PR c++/27667
-        * cp-tree.h (begin_specialization): Return bool 
+       * cp-tree.h (begin_specialization): Return bool
        instead of void.
-        * pt.c (check_specialization_scope): Likwise. 
-       Adjust comment. Return false if a specialization 
+       * pt.c (check_specialization_scope): Likwise.
+       Adjust comment. Return false if a specialization
        isn't permitted in the current scope.
-        (begin_specialization): Use the return value of  
-        check_specialization_scope.
-        * parser.c (cp_parser_explicit_specialization): If
-        begin_specialization returned false, skip the rest 
+       (begin_specialization): Use the return value of
+       check_specialization_scope.
+       * parser.c (cp_parser_explicit_specialization): If
+       begin_specialization returned false, skip the rest
        of the specialization.
-       
+
 2006-09-21  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/29016
 
        PR c++/28861
        * decl.c (shadow_tag): Return error_mark_node
-        if maybe_process_partial_specialization failed.
+       if maybe_process_partial_specialization failed.
 
        PR c++/28303
-        * decl.c (grokdeclarator): Return error_mark_node on
-        declaration with two or more data types.
-       
+       * decl.c (grokdeclarator): Return error_mark_node on
+       declaration with two or more data types.
+
 2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>
 
        PR target/27650
        * tree.c (build_cplus_new): Set it.
 
        PR c++/26696
-       * cvt.c (convert_to_void): Replace a subexpression with no side 
+       * cvt.c (convert_to_void): Replace a subexpression with no side
        effects with void_zero_node.
        * tree.c (is_overloaded_fn): Look through COMPONENT_REF.
        (get_first_fn): Ditto.
        where the name is a type used incorrectly.
 
        PR c++/26671
-       * typeck.c (maybe_warn_about_returning_address_of_local): Look 
-       through COMPONENT_REF and ARRAY_REF.    
+       * typeck.c (maybe_warn_about_returning_address_of_local): Look
+       through COMPONENT_REF and ARRAY_REF.
 
        PR c++/26102
        * name-lookup.c (do_class_using_decl): Try to find the base even
        if bases_dependent_p.
-       * pt.c (type_dependent_expression_p): A USING_DECL is dependent.        
+       * pt.c (type_dependent_expression_p): A USING_DECL is dependent.
 
        PR c++/19809
        * pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.
        fields can't be packed.
 
        PR c++/26577
-       * cvt.c (convert_to_void): Don't automatically load from volatiles 
+       * cvt.c (convert_to_void): Don't automatically load from volatiles
        of TREE_ADDRESSABLE type.
 
 2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
        specialization-after-instantiation.
        * decl2.c (mark_used): Mark the main function used when one of its
        clones is used.
-       
+
 2006-08-27  Lee Millward  <lee.millward@codesourcery.com>
 
        PR c++/26573
        * class.c (check_field_decls): Don't issue error about
        local classes containing static data members.
-       
+
 2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>
 
        PR c++/24009
        parameters, return 1 if either is error_mark_node.
        (current_template_args): Robustify.
        (redeclare_class_template): Likewise.
-       
+
 2006-08-26  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/28588
 2006-08-23  Jason Merrill  <jason@redhat.com>
 
        PR c++/27714
-       * pt.c (push_template_decl_real): A friend template with class 
+       * pt.c (push_template_decl_real): A friend template with class
        scope isn't primary.
 
 2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>
 2006-08-22  Jason Merrill  <jason@redhat.com>
 
        PR c++/23372
-       * call.c (build_over_call): Don't make a copy here if build_call 
+       * call.c (build_over_call): Don't make a copy here if build_call
        will make one too.
 
 2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>
 2006-08-22  Jason Merrill  <jason@redhat.com>
 
        PR c++/28659
-       * typeck.c (merge_types): If either of the types have the right 
+       * typeck.c (merge_types): If either of the types have the right
        attributes, return that one.
 
        * tree.c (cp_build_type_attribute_variant): Make sure we aren't
        PR c++/28741
        * tree.c (decl_anon_ns_mem_p): Robustify.
        * decl2.c (determine_visibility): Likewise.
-       
+
 2006-08-20  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/28341
 
        PR c++/28346
        * pt.c (tsubst_qualified_id): Do not strip references from
-       OFFSET_REFs. 
+       OFFSET_REFs.
 
 2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
 
        PR c++/28594
        * pt.c (process_template_parm): Robustify.
-       
+
 2006-08-14  Steve Ellcey  <sje@cup.hp.com>
 
        PR c++/28288
 
        PR c++/28641
        * pt.c (type_unification_real): Robustify.
-       
+
 2006-08-03  Lee Millward  <lee.millward@codesourcery.com>
 
        PR c++/28347
        * decl.c (start_decl): Return error_mark_node if a
        diagnostic was issed for an invalid typedef initialization.
-       
+
 2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/27508
        (mangle_class_name_for_template): Likewise.
        (tsubst_template_parms): Likewise.
        * error.c (dump_template_argument_list): Likewise.
-       
+
 2006-07-28  Kazu Hirata  <kazu@codesourcery.com>
 
        * cp-tree.h: Fix a comment typo.
        * tree.c (decl_linkage): Only return lk_external if it's set.
 
        PR c++/28409
-       * decl2.c (constrain_visibility): Ignore the anonymous namespace 
+       * decl2.c (constrain_visibility): Ignore the anonymous namespace
        for extern "C" decls.
        (VISIBILITY_STATIC): Rename to VISIBILITY_ANON.
 
-       * decl2.c (constrain_visibility): Remove specified and reason 
+       * decl2.c (constrain_visibility): Remove specified and reason
        parameters.  Don't touch decls that already have explicit visibility.
-       (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from 
+       (determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
        template.
-       (determine_visibility_from_class): Reverse sense of 
+       (determine_visibility_from_class): Reverse sense of
        DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
        (constrain_class_visibility): Only complain about member visibility
        if the member type is another class.  Don't change visibility of the
        PR c++/28260
        * decl.c (duplicate_decls): Return error_mark_node
        on ambiguous declaration.
-       
+
 2006-07-18  Steve Ellcey  <sje@cup.hp.com>
 
        PR c++/27495
        * decl2.c (acceptable_java_type): Robustify. Use
        proper Boolean return type instead of return 1.
        (check_java_method): Don't issue error about
-       type not being an acceptable Java parameter if 
+       type not being an acceptable Java parameter if
        it's error_mark_node.
-       
+
        PR c++/28269
        * parser.c (cp_parser_elaborated_type_specifier):
        Return early if an invalid type was detected.
-       
+
 2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28249
        * decl.c (define_label): Return error_mark_node on error.
        * semantics.c (finish_label_stmt): Don't call
        add_stmt for invalid labels.
-       
+
 2006-07-06  Jason Merrill  <jason@redhat.com>
 
        PR c++/28279
 2006-07-01  Jason Merrill  <jason@redhat.com>
 
        PR c++/28215
-       * method.c (make_thunk): Unset DECL_USE_TEMPLATE and 
+       * method.c (make_thunk): Unset DECL_USE_TEMPLATE and
        DECL_TEMPLATE_INFO.
 
 2006-06-30  Jason Merrill  <jason@redhat.com>
 
        PR c++/26577
-       * call.c (build_new_method_call): Force evaluation of the 
+       * call.c (build_new_method_call): Force evaluation of the
        instance pointer, not the object.
 
 2006-06-30  Kazu Hirata  <kazu@codesourcery.com>
 2006-06-30  Jason Merrill  <jason@redhat.com>
 
        PR c++/18698
-       * decl2.c (grokfield): Only try to treat the decl as an access 
+       * decl2.c (grokfield): Only try to treat the decl as an access
        declaration if the scope is a class.
 
 2006-06-29  Jason Merrill  <jason@redhat.com>
 2006-06-28  Jason Merrill  <jason@redhat.com>
 
        PR c++/27424
-       * pt.c (convert_template_argument): Pass all template arguments 
+       * pt.c (convert_template_argument): Pass all template arguments
        on to coerce_template_template_parms.
 
 2006-06-25  Lee Millward  <lee.millward@gmail.com>
        returning NULL_TREE, instead check for error_mark_node
        to indicate failure.
        * decl.c (grokdeclarator): Adjust block comment.
-       
+
 2006-06-25  Lee Millward  <lee.millward@gmail.com>
 
        PR c++/28051
        invalid types.
        * name-lookup.c (push_class_level_binding): Robustify.
        (do_class_using_decl): Return early if name is error_mark_node.
-       
+
 2006-06-23  Steve Ellcey  <sje@cup.hp.com>
 
        PR c++/28114
        PR c++/27821
        * decl.c (grokdeclarator): Return error_mark_node on
        invalid uses of the scope resolution operator.
-       
+
 2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/28111