OSDN Git Service

2005-12-02 Richard Guenther <rguenther@suse.de>
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 7b2ff85..1197d02 100644 (file)
@@ -1,3 +1,505 @@
+2005-12-02  Richard Guenther  <rguenther@suse.de>
+
+       * semantics.c (simplify_aggr_init_expr): Use buildN instead
+       of build.
+
+2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * parser.c (cp_lexer_new_main): Usr GGC_RESIZEVEC instead of
+       ggc_realloc. 
+       (cp_parser_template_argument_list): Use XRESIZEVEC instead of
+       xrealloc. 
+       * class.c (pushclass): Likewise.
+
+2005-12-02  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * decl2.c (get_priority_info): Use XNEW, not xmalloc.
+       * decl.c (push_switch): Likewise.
+       * lex.c (handle_pragma_implementation): Likewise.
+       * cp-objcp-common.c (decl_shadowed_for_var_insert): Use GGC_NEW,
+       not ggc_alloc.
+       (cxx_initialize_diagnostics): Use XNEW, not xmalloc.
+       * class.c (init_class_processing): Use XNEWVEC, not xmalloc.
+       * g++spec.c (lang_specific_driver): Likewise.
+       * mangle.c (save_partially_mangled_name): Likewise.
+       * parser.c (cp_lexer_new_main): Use GGC_NEWVEC, not ggc_alloc.
+       (cp_parser_template_argument_list): Use XNEWVEC, nto xmalloc.
+       (cp_parser_sizeof_operand): Likewise.
+       * repo.c (open_repo_file, open_repo_file): Likewise.
+       
+2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * parser.c (cp_parser_make_typename_type): Call make_typename_type
+       with tf_none instead of magic value 0.
+       (cp_parser_explicit_instantiation): Call do_type_instantiation
+       with tf_error instead of magic value 1.
+       (cp_parser_elaborated_type_specifier): Call make_typename_type
+       with tf_error instead of magic value 1.
+       (cp_parser_class_name): Likewise.
+       (cp_parser_lookup_name): Likewise.
+
+2005-12-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * parser.c (cp_parser_declaration): Set token2.type to CPP_EOF,
+       not RID_MAX.
+
+2005-11-30  Jason Merrill  <jason@redhat.com>
+
+       PR c++/21123
+       * cp-gimplify.c (cp_genericize_r): Don't dereference invisible reference 
+       parms in a thunk.
+
+2005-11-30  Ben Elliston  <bje@au.ibm.com>
+
+       * typeck.c (build_x_unary_op): Correct spelling in error message.
+
+2005-11-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/21166
+       * class.c (check_field_decls): Only set DECL_PACKED on a field
+       when its natural alignment is > BITS_PER_UNIT.
+
+2005-11-27  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/24979
+       * cp-tree.h (DECL_MAIN_P): Remove duplicate definition.
+
+2005-11-26  Richard Henderson  <rth@redhat.com>
+
+       * lex.c: Update for pragma_lex rename.
+       * parser.c: Likewise.
+
+2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/9278
+       * decl.c (grokparms): Do not allow typedef-names in a '(void)'
+       parmlist.
+
+2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       * typeck2.c (process_init_constructor_union): Remove check for
+       unnamed union members.
+
+2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       * name-lookup.c (lookup_name_real): Merge two if's.
+
+2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       * pt.c (instantiate_class_template): Clean-up.
+
+2005-11-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       * pt.c (template_class_depth_real): Remove. Move functionality to ...
+       (template_class_depth): ... here, replacing count_specializations
+       with 0.  Adjust comment.
+
+2005-11-24  Richard Guenther  <rguenther@suse.de>
+       Dirk Mueller <dmueller@suse.de>
+
+       PR c++/14024
+       * typeck.c (build_reinterpret_cast_1): Use
+       strict_aliasing_warning.
+
+2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       PR c++/24235
+       * pt.c (check_instantiated_args): Reword diagnostic message about
+       template argument involving local types.
+
+2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       PR c++/21667
+       * typeck.c (build_array_ref): Avoid code duplicate.  Use common
+       C/C++ diagnostic function warn_array_subscript_with_type_char. 
+
+2005-11-21  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       PR c++/22238
+       * error.c (resolve_virtual_fun_from_obj_type_ref): New.
+       (dump_expr): Use it in <case CALL_EXPR>.
+
+2005-11-21  Richard Henderson  <rth@redhat.com>
+
+       * cp-objcp-common.h, name-lookup.c, name-lookup.h: Revert 11-18 patch.
+
+       * name-lookup.c (lookup_name): Remove prefer_type argument.
+       (lookup_name_prefer_type): New.
+       * decl.c (lookup_and_check_tag): Use them.
+       * pt.c (tsubst_friend_class): Likewise.
+       (lookup_template_class): Likewise.
+       (tsubst_copy_and_build): Likewise.
+       * name-lookup.h (lookup_name_prefer_type): New.
+       (lookup_name): Remove declaration.
+
+2005-11-18  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/8355
+       * decl.c (grokfndecl): Set up DECL_TEMPLATE_INFO before calling
+       set_decl_namespace.
+       * name-lookup.c (set_decl_namespace): 
+
+2005-11-18  Mike Stump  <mrs@apple.com>
+
+       * cp-objcp-common.h (LANG_HOOKS_LOOKUP_NAME): Add.
+       * name-lookup.c (lookup_name_two): Remove.
+       (lookup_name_one): Add.
+       * name-lookup.h (lookup_name_two): Remove.
+       (lookup_name_one): Add.
+
+2005-11-15  Jason Merrill  <jason@redhat.com>
+
+       PR c++/24580
+       * method.c (locate_copy): Also use skip_artificial_parms here.
+       (synthesize_exception_spec): Use CLASS_TYPE_P rather than checking
+       for RECORD_TYPE.
+       (locate_ctor): Abort if we fail to find a default constructor.
+
+2005-11-15  Mike Stump  <mrs@apple.com>
+
+       * name-lookup.c (lookup_name_two): Add.
+       * name-lookup.h: Likewise.
+
+2005-11-15  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/24667
+       * typeck.c (check_for_casting_away_constness): Use the diag_fn.
+       (build_const_cast_1): Call it, for C-style casts.
+
+2005-11-14  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/24687
+       * pt.c (check_explicit_specialization): Don't check for C linkage.
+       (push_template_decl_real): Likewise.
+       * parser.c (cp_parser_explicit_specialization): Check here.
+       (cp_parser_template_declaration_after_export): And here.
+
+       * parser.c (cp_lexer_get_preprocessor_token): Initialize keyword
+       field.
+
+2005-11-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/24580
+       * method.c (locate_ctor): Skip all artificial parms, not just
+       'this'.
+
+2005-11-14  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (eof_token): Add initializer for ambiguous_p.
+
+2005-11-13  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/24817
+       * decl.c (check_redeclaration_exception_specification): New
+       function.
+       (duplicate_decls): Use it.
+       * error.c (fndecl_to_string): Print the template parameter list.
+
+       PR c++/20293
+       * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
+       for namespaces.
+       (pp_cxx_original_namespace_definition): Likewise.
+       * name-lookup.c (ambiguous_decl): Don't issue error messages;
+       instead return lists of ambiguous candidates.
+       (select_decl): Handle ambiguous namespace lookups.
+       * parser.c (cp_token): Add ambiguous_p.
+       (cp_lexer_get_preprocessor_token): Set it.
+       (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
+       when a qualified name uses an invalid scope. 
+       (cp_parser_primary_expression): Print ambiguous candidates.
+       (cp_parser_type_parameter): Adjust comment to reflect new
+       parameter name for cp_parser_lookup_name.
+       (cp_parser_template_argument): Likewise.
+       (cp_parser_elaborated_type_specifier): Likewise.
+       (cp_parser_namespace_name): Likewise.
+       (cp_parser_class_name): Print ambiguous candidates.
+       (cp_parser_lookup_name): Rename ambiguous_p parameter to
+       ambiguous_decls.  Use it to return a list of ambiguous candiates
+       when a lookup is ambiguous.
+       (cp_parser_lookup_name_simple): Adjust comment to reflect new
+       parameter name for cp_parser_lookup_name.
+       
+2005-11-12  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/24780
+       * typeck.c (complete_type): Set TYPE_NEEDS_CONSTRUCTING
+       and TYPE_HAS_NONTRIVIAL_DESTRUCTOR flags for all variants
+       of array type.
+
+       PR c++/24761
+       * pt.c (tsubst_copy_asm_operands): New function.
+       (tsubst_expr) <case ASM_EXPR>: Use it.
+
+2005-11-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/19450
+       * decl.c (redeclaration_error_message): Issue diagnostics about
+       olddecl and newdecl disagreement on __thread property.
+       (grokdeclarator): Set DECL_TLS_MODEL on class static variables.
+
+2005-11-08  Jason Merrill  <jason@redhat.com>
+
+       PR c++/21123
+       * method.c (use_thunk): Use build_cplus_new instead of 
+       force_target_expr.
+
+2005-11-06  Jason Merrill  <jason@redhat.com>
+           James A. Morrison <phython@gcc.gnu.org>
+
+       PR c++/17256
+       * decl2.c (cp_finish_file): Fix conditions for undefined warning.
+       Set TREE_NO_WARNING instead of TREE_PUBLIC.
+       * pt.c (instantiate_pending_templates): Set DECL_INITIAL to avoid
+       a warning on a function we didn't instantiate because of excessive
+       recursion.
+
+2005-11-06  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (record_subobject_offsets): Don't record offsets past
+       biggest empty class for non-empty base classes.
+       (layout_class_type): Use TYPE_SIZE_UNIT, not TYPE_SIZE, when
+       keeping track of the size of emptyclasses.
+
+       PR c++/21308
+       * class.c (sizeof_biggest_empty_class): New variable.
+       (record_subobject_offsets): Don't record offsets past biggest
+       empty class for data members.  Replace vbases_p parameter with
+       is_data_member parameter.
+       (build_base_field): Adjust call.
+       (layout_class_type): Likewise.  Maintain
+       sizeof_biggest_empty_class.
+       
+2005-11-05  Kazu Hirata  <kazu@codesourcery.com>
+
+       * decl2.c, init.c, typeck.c: Fix comment typos.
+
+2005-11-04  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/22487
+       * init.c (build_vec_init): Build comparison of matching
+       types.
+
+2005-11-03  Josh Conner  <jconner@apple.com>
+
+       PR c++/19989
+       pt.c (tsubst): Accept zero-length array if tf_error is set
+       in complain flags.  Change error message for negative-
+       length array.
+
+2005-11-04  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * cp-tree.h (cp_cpp_error), error.c (cp_cpp_error): Take va_list*
+       parameter.
+
+2005-11-03  Joseph S. Myers  <joseph@codesourcery.com>
+
+       PR c++/17964
+       * error.c (cp_cpp_error): New function.
+       * cp-tree.h (cp_cpp_error): Declare.
+       * parser.c (cp_lexer_new_main): Set CPP option client_diagnostic
+       and error callback after lexing.
+
+2005-11-03  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/21627
+       * pt.c (register_specialization): Update inline flags on clones.y
+
+2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR c++/24582
+       * decl.c (declare_local_label): Return 0 for variables
+       with error_mark_node as their types.
+
+2005-11-02  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/22434
+       * call.c (build_conditional_expr): Do bad conversions, if there's
+       no other choice.
+
+       PR c++/24560
+       * parser.c (cp_parser_postfix_dot_deref_expression): Improve error
+       message for use of overloaded functions on LHS of "." operator.
+
+       PR c++/19253
+       * parser.c (cp_parser_postfix_expression): Use
+       cp_parser_elaborated_type_specifier to handle typename-types in
+       functional casts.
+       (cp_parser_enclosed_argument_list): Skip ahead to the end of the
+       template argument list if the closing ">" is not found.
+
+       PR c++/24569
+       * pt.c (instantiate_decl): Use cp_finish_decl, not
+       finish_static_data_member_decl. 
+
+2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * decl.c (grokfndecl): Remove the setting
+       of the return type of the function type
+       of main after erroring about must returning
+       int.
+
+2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/23229
+       * decl.c (grokfndecl): Create a new function type
+       after erroring out about main not returning int.
+
+2005-10-28  Josh Conner  <jconner@apple.com>
+
+       PR c++/22153
+       * parser.c (cp_parser_member_declaration): Detect and handle
+       a template specialization.
+
+2005-10-28  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR C++/23426
+       * decl.c (start_decl): Check that the decl is an
+       error_mark_node before getting the type.
+       Remove the check for the decl's type being an
+       error_mark_node.  
+
+2005-10-21  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/24260
+       * parser.c (cp_parser_init_declarator): Pass attributes to
+       grokfield. 
+
+2005-10-20  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/22618
+       * search.c (accessible_p): Check access in the outermost set of
+       template parameters.
+
+2005-10-20  Richard Guenther  <rguenther@suse.de>
+
+       * decl.c (grokdeclarator): Fix ambiguous pedwarn message.
+
+2005-10-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/22293
+       * decl.c (grokdeclarator): Reject unqualified destructors in
+       friend declarations.
+
+2005-10-18  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/23293
+       * pt.c (convert_template_argument): Use canonical type variants in
+       template specializations.
+
+2005-10-18  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/21383
+       * name-lookup.c (arg_assoc): Template args can be null in a
+       template-id-expr.
+
+       PR c++/22604
+       * class.c (update_vtable_entry_for_fn): Don't process invalid
+       covariant overriders.
+
+       PR c++/23118
+       * cp-tree.h (add_method): Add return value.
+       * class.c (add_method): Return success indicator.
+       * semantics.c (finish_member_declaration): Don't add an invalid
+       method to the method list.
+
+2005-10-17  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/21908
+       * call.c (build_new_method_call): Do not show VTT parameters to
+       the user.
+
+2005-10-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR c++/23440
+       * parser.c (cp_parser_statement): If the parser reached CPP_EOF,
+       only complain about missing statement.
+
+2005-10-17  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/24386
+       * cp-tree.h (BASELINK_QUALIFIED_P): New.
+       * pt.c (tsubst_copy_and_build): <CALL_EXPR case>: Use it.
+       * typeck.c (finish_class_member_access_expr): Set it.
+
+       PR c++/21353
+       * decl.c (check_default_argument): Don't check
+       processing_template_decl or uses_template_parms here.
+       (grokparms): Only call check_default_argument when not processing
+       a template decl.
+       * parser.c (cp_parser_late_parsing_default_arg): Call
+       check_default_argument when not processing a template decl.
+
+2005-10-16  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/24389
+       * decl2.c (mark_used): Use uses_template_parms instead of
+       dependent_type_p.
+       * init.c (constant_value_1): Handle uninstantiated templates
+       specially.
+       * pt.c (instantiate_decl): Add sanity check.
+
+2005-10-16  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/22173
+       * typeck.c (check_template_keyword): Fix thinko.
+               
+2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR c++/23959
+       * decl.c (pop_switch): Only call c_do_switch_warnings
+       when not processing templates.
+
+2005-10-16  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/22173
+       * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro.
+       (check_template_keyword): New function.
+       (finish_id_expression): Change prototoype.
+       (finish_qualified_id_expr): Change prototype.
+       (build_qualified_name): New function.
+       (finish_class_member_access_expr): Change prototype.
+       * init.c (build_offset_ref): Use build_qualified_name.
+       * mangle.c (write_expression): Likewise.
+       * parser.c (cp_parser_primary_expression): Remove qualifying_class
+       parameter.  Add address_p and template_arg_p.  Use
+       build_qualified_name.
+       (cp_parser_id_expression): Default *template_p to
+       template_keyword_p.  Check for invalid uses of the template
+       keyword.  
+       (cp_parser_postfix_expression): Eliminate special handling for
+       qualified names.  Adjust call to cp_parser_primary_expression.
+       (cp_parser_postfix_dot_deref_expression): Adjust call to
+       cp_parser_id_expression and finish_class_member_access_expr.
+       (cp_parser_template_argument_list): Add comment.
+       (cp_parser_template_argument): Adjust use of
+       cp_parser_primary_expression.  Remove call to
+       finish_qualified_id_expr.
+       (cp_parser_lookup_name): Use build_qualified_name. 
+       * pt.c (tsubst): Use build_qualified_name.
+       (tsubst_qualified_id): Likewise.  Adjust call to
+       finish_qualified_id_expr.
+       (tsubst_copy): Use build_qualified_name.
+       (tsubst_copy_and_build): Adjusts call to finish_id_expression and
+       finish_class_member_access_expr. 
+       * semantics.c (finish_non_static_data_member): Use
+       build_qualified_name.
+       (finish_qualified_id_expr): Add template_p and template_arg_p
+       parameters. 
+       (finish_id_expression): Remove qualifiying_class parameter.  Add
+       template_p, done, address_p, and template_arg_p.  Use
+       build_qualified_name.  Adjust calls to
+       finish_class_member_acess_expr.  
+       * tree.c (build_qualified_name): New function.
+       * typeck.c (check_template_keyword): New function.
+       (finish_class_member_access_expr): Add template_p argument.  Check
+       for invalid uses of the template keyword.
+
+2005-10-15  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/21347
+       * class.c (maybe_warn_about_overly_private_class): Lazy
+       constructors are public.
+
 2005-10-14  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/19565