aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/ChangeLog')
-rw-r--r--gcc/cp/ChangeLog413
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