diff options
Diffstat (limited to 'gcc/cp/ChangeLog')
-rw-r--r-- | gcc/cp/ChangeLog | 413 |
1 files changed, 413 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c3263933a46..2142ac4082b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,416 @@ +2007-03-15 Dirk Mueller <dmueller@suse.de> + + PR c++/30860 + * call.c (convert_conversion_warnings): New.. + (convert_like_real): .. factored out from here. + (convert_conversion_warnings): Add warning about + false being converted to NULL in argument passing. + +2007-03-14 Dirk Mueller <dmueller@suse.de> + + * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning. + (finish_do_body): Warn about empty body in do/while statement. + +2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + * class.c (warn_hidden): Add OPT_Woverloaded_virtual to warning. + +2007-03-14 Manuel Lopez-Ibanez <manu@gcc.gnu.org> + + PR c/21438 + * typeck.c (build_binary_op): Call warn_for_div_zero instead of + warning. + +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 |