]> gcc.gnu.org Git - gcc.git/blobdiff - gcc/cp/ChangeLog
re PR c++/16224 (internal compiler error: in write_unscoped_name (template/namespace))
[gcc.git] / gcc / cp / ChangeLog
index 4b80aa6d5aa48a9269e3b175320497af1211585a..81a819a793167575e1b90f0894c7518ab69b00fa 100644 (file)
@@ -1,3 +1,753 @@
+2004-08-01  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16224
+       * name-lookup.c (decl_namespace): Remove.
+       (current_decl_namespace): Use decl_namespace_context instead of
+       decl_namespace.
+       (push_decl_namespace): Likewise.
+       (arg_assoc_class): Likewise.
+       (arg_assoc_type): Likewise.
+       * pt.c (check_specialization_namespace): New function.
+       (maybe_process_partial_specialization): Use it.
+       (register_specialization): Likewise.
+
+       PR c++/16489
+       * cp-tree.h (DECL_INTEGRAL_CONSTANT_VAR_P): New macro.
+       * call.c (null_ptr_cst_p): Handle variables with constant
+       initializers.
+       * pt.c (convert_nontype_argument): Use
+       DECL_INTEGRAL_CONSTANT_VAR_P.
+       * semantics.c (finish_id_expression): Likewise.
+
+       PR c++/16529
+       * decl.c (duplicate_decls): Reject duplicate namespace
+       declarations.
+
+       PR c++/16810
+       * typeck.c (build_ptrmemfunc): Loosen assertion.
+
+2004-08-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * call.c (z_candidate::template_decl): Rename from template.
+       (add_template_candidate_real): Adjust member reference.
+       (joust): Likewise.
+
+2004-07-29  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (IDENTIFIER_REPO_CHOSEN): Define.
+       (lang_decl_flags): Narrow the width of "languages".  Add
+       repo_available_p.
+       (DECL_NEEDED_P): Remove.
+       (FOR_EACH_CLONE): New macro.
+       (DECL_REPO_AVAILABLE_P): Likewise.
+       (DECL_TINFO_P): Likewise.
+       (set_linkage_according_to_type): Declare.
+       (import_export_vtable): Remove.
+       (import_export_tinfo): Likewise.
+       (mark_needed): New function.
+       (decl_needed_p): Likewise.
+       (note_vauge_linkage_fn): Likewise.
+       (init_repo): Change prototype.
+       (repo_template_used): Remove.
+       (repo_template_instantiated): Likewise.
+       (repo_emit_p): New function.
+       (repo_export_class_p): Likewise.
+       (no_linkage_check): Change prototype.
+       * class.c (set_linkage_according_to_type): New function.
+       (build_vtable): Use it.  Do not call import_export_vtable.  Set
+       DECL_IGNORED_P if appropriate.
+       * decl.c (duplicate_decls): Preserve DECL_REPO_AVAILABLE_P.
+       (make_rtL_for_nonlocal_decls): Check for template instantiations
+       explicitly.
+       (grokfndecl): Adjust call to no_linkage_check.
+       (set_linkage_for_static_data_member): New function.
+       (grokvardecl): Use it.  Adjust call to no_linkage_check.
+       (grokdeclarator): Use set_linkage_for_static_data_member.
+       * decl2.c (note_vague_linkage_fn): New function.
+       (note_vague_linkage_var): Likewise.
+       (finish_static_data_member_decl): Use it.
+       (import_export_vtable): Remove.
+       (import_export_class): Use repo_export_class_p.
+       (var_finalized_p): Simplify.
+       (maybe_emit_vtables): Simplify.
+       (mark_needed): New function.
+       (decl_needed_p): Likewise.
+       (import_export_decl): Add documentation and consistency checks.
+       Use repo_emit_p.  Handle virtual tables and RTTI information
+       here.
+       (import_export_tinfo): Remove.
+       (write_out_vars): Call import_export_decl.
+       (cxx_callgraph_analyze_expr): Ensure that all vtables are emitted
+       whenever one is.
+       (finish_file): Use decl_needed_p.  Do not call import_export_decl
+       for undefined static data members.  Do not warn about undefined
+       inlines when using a repository.
+       (mark_used): Use note_vague_linkage_fn.  Always defer template
+       instantiations.
+       * lex.c (cxx_init): Adjust call to init_repo.  Always set
+       flag_unit_at_a-time.
+       * method.c (synthesize_method): Remove unncessary
+       import_export_decl call.
+       (implicitly_declare_fn): Use set_linkage_according_to_type.
+       * optimize.c (maybe_clone_body): Use FOR_EACH_CLONE.
+       * pt.c (instantiate_class_template): Don't redundantly add classes
+       to keyed_classes.  Don't call repo_template_used.
+       (tsubst_decl): Set DECL_INTERFACE_KNOWN for instantiations of
+       templates with internal linkage.
+       (check_instantiated_args): Adjust call to no_linkage_check.
+       (instantiate_template): Use FOR_EACH_CLONE.
+       (mark_definable): New function.
+       (mark_decl_instantiated): Use it.
+       (do_decl_instantiation): Adjust tests for explicit instantiation
+       after "extern template".
+       (instantiate_class_member): Do not use repo_template_instantiated.
+       (do_type_instantiation): Simplify.
+       (instantiate_decl): Use mark_definable.  Check repo_emit_p.
+       Simplify.
+       * repo.c (repo_get_id): Remove.
+       (original_repo): Remove.
+       (IDENTIFIER_REPO_USED): Remove.
+       (IDENTIFIER_REPO_CHOSEN): Remove.
+       Remove all #if 0'd code.
+       (repo_template_used): Remove.
+       (repo_template_instantiated): Remove.
+       (temporary_obstack_initialized_p): New variable.
+       (init_repo): Register with lang_post_pch_load.  Avoid creating
+       identifiers unnecessarily.  Don't use original_repo.  Close the
+       file here.
+       (reopen_repo_file_for_write): Not here.
+       (finish_repo): Always write out a new repository file.
+       (repo_emit_p): New function.
+       (repo_export_class_p): Likewise.
+       * rtti.c (get_tinfo_decl): Use set_linkage_according_to_type.
+       (involves_incomplete_p): New function.
+       (tinfo_base_init): Use it.
+       (ptr_initializer): Remove non_public_ptr parameter.
+       (ptm_initializer): Likewise.
+       (get_pseudo_ti_init): Likewise.
+       (unemitted_tinfo_decl_p): Remove.
+       (emit_tinfo_decl): Use import_export_decl.
+       * semantics.c (expand_body): Move updates of static_ctors and
+       static_dtors to ...
+       (expand_or_defer_fn): ... here.
+       * tree.c (no_linkage_check): Add relaxed_p parameter.
+       
+2004-07-28  Eric Christopher  <echristo@redhat.com>
+
+       * cp-lang.c (LANG_HOOKS_UNSAFE_FOR_REEVAL): Delete.
+
+2004-07-28  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (struct tree_pair_s): New.
+       (typedef tree_pair_p): New.
+       (DEF_VEC_O(tree_pair_s)): New.
+       (struct lang_type_class): Make vcall_indices a VEC(tree_pair_s).
+       (CLASSTYPE_VCALL_INDICES): Update documentation.
+       * class.c (get_vcall_index): Adjust.
+       (add_vcall_offset): Adjust.
+
+2004-07-27  Kelley Cook  <kcook@gcc.gnu.org>
+
+       * pt.c, typeck.c: Remove spurious carriage returns.
+
+2004-07-27  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/14429
+       * pt.c (coerce_template_template_parms) <PARM_DECL case>: Only check
+       when the type of ARG is not dependent.
+
+2004-07-26  Geoffrey Keating  <geoffk@apple.com>
+
+       * g++spec.c (LIBSTDCXX_PROFILE): Default to LIBSTDCXX.
+       (lang_specific_driver): If the C++ or math library options don't
+       start with '-l', don't count them as added libraries.
+
+2004-07-26  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (xref_basetypes): Adjust base access vector creation.
+       * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Adjust base
+       access accesses.
+       * search.c (dynamic_cast_base_recurse, dfs_access_in_type): Likewise.
+
+2004-07-26  Niall Douglas  <s_fsfeurope2@nedprod.com>
+           Brian Ryner  <bryner@brianryner.com>
+
+       PR c++/15000
+       PR c++/9283
+       * class.c (check_field_decls): Apply hidden visibility if
+       -fvisibility-inlines-hidden and inlined unless otherwise specified
+       (build_vtable): Set vtable visibility to class visibility.
+       (check_field_decls): Default static member visibility to class
+       visibility.
+       (check_methods): Default method visibility to class visibility.
+       * cp-tree.h: Added CLASSTYPE_VISIBILITY and
+       CLASSTYPE_VISIBILITY_SPECIFIED macro.
+       * decl.c (duplicate_decls): New logic for merging definition decls
+       with declaration decls. Added ignore & warning when non default
+       applied to global operator new or delete.
+       * method.c, optimize.c, rtti.c: Added setting of VISIBILITY_SPECIFIED
+       wherever VISIBILITY was changed
+       * rtti.c (get_tinfo_decl): Set typeinfo visibility to class
+       visibility.
+       (tinfo_base_init): Set typeinfo name visibility to class visibility.
+
+2004-07-25  Bernardo Innocenti  <bernie@develer.com>
+
+       * decl.c: Rename all identifiers named `class' to `cl'.
+       * cp-tree.h: Likewise.
+
+2004-07-25  Gabriel Dos Reis  <gdr@integrable-solutions.net>
+
+       * cp-tree.h (TYPE_SET_PTRMEMFUNC_TYPE): Use GGC_CNEW.
+       * typeck2.c (abstract_virtuals_error): Use GGC_NEW.
+       * name-lookup.c (binding_entry_make): Use GGC_NEW.
+       (binding_table_construct): Use GGC_CNEWVEC.
+       (binding_table_new): Use GGC_NEW.
+       (cxx_binding_make): Likewise.
+       (begin_scope): Likewise.
+       (push_to_top_level): Use GCC_CNEW.
+       * parser.c (cp_token_cache_new): Likewise.
+       (cp_token_cache_push_token): Likewise.
+       (cp_lexer_new_main): Likewise.
+       (cp_lexer_new_from_tokens): Likewise.
+       (cp_parser_context_new): Likewise.
+       (cp_parser_new): Likewise.
+       (cp_lexer_new_from_tokens): Use GGC_NEWVEC.
+       * lex.c (cxx_make_type): Use GGC_CNEW.
+       (retrofit_lang_decl): Use GGC_NEWVAR.
+       (cxx_dup_lang_specific_decl): Likewise.
+       (copy_lang_type): Likewise.
+       * decl.c (use_label): Use GGC_NEW instead of ggc_alloc.
+       (save_function_data): Likewise.
+       (lookup_label): Use GGC_CNEW instead of ggc_alloc_cleared.
+       (cxx_push_function_context): Likewise.
+
+2004-07-25  Richard Henderson  <rth@redhat.com>
+
+       * decl.c (start_preparsed_function): Set DECL_ARTIFICIAL and
+       DECL_IGNORED_P on RESULT_DECL.
+       * semantics.c (finalize_nrv): Copy them too.
+
+2004-07-23  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * search.c (lookup_conversion_operator): Avoid two loops.
+       (add_conversions): Remove.
+       (check_hidden_convs, split_conversions,
+       lookup_conversions_r):  New.
+       (lookup_conversions): Use lookup_conversions_r.
+
+2004-07-22  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * pt.c (get_template_base): Check type is completable.
+
+2004-07-21  Eric Christopher  <echristo@redhat.com>
+
+       * decl.c (poplevel): Inline unused variable checking.
+       Change formatting.
+
+2004-07-21  Paolo Bonzini  <bonzini@gnu.org>
+
+       * typeck.c (build_binary_op): Do not use RDIV_EXPR for
+       integer vectors.
+
+2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+
+       PR c++/14497
+       * pt.c (check_explicit_specialization): Remove extension to accept
+       specializations without template headers. Fall-through to normal
+       processing.
+
+2004-07-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+
+       PR c++/509
+       * pt.c (determine_specialization): New parameter template_count.
+       Disambiguate between member templates and member functions counting
+       the template headers.
+       (check_explicit_specialization): Update caller.
+       (tsubst_friend_function): Likewise.
+
+2004-07-20  Steven Bosscher  <stevenb@suse.de>
+
+       * cp-tree.def (TINST_LEVEL): Make it an 'x' node.
+       * cp-tree.h (tinst_level_t): New tree type.
+       (union lang_tree_node): Handle it.
+       (TINST_LOCATION): New accessor macro.
+       (make_tinst_level): New prototype.
+       * cp-lang.c (cp_tree_size): Handle TINST_LEVEL.
+       * decl.c (cp_tree_node_structure): Likewise.
+       * error.c (print_instantiation_full_context): Use TINST_LOCATION.
+       (print_instantiation_partial_context): Likewise.
+       * pt.c (pop_tinst_level): Likewise.
+        (push_tinst_level): Use make_tinst_level.
+       * tree.c (make_tinst_level): New function.
+       (cp_walk_subtrees): Walk TINST_DECL for a TINST_LEVEL node.
+
+2004-07-20  Mark Mitchell  <mark@codesourcery.com>
+
+       * parser.c (cp_parser_simple_type_specifier): Fix typo.
+
+       PR c++/16637
+       * parser.c (cp_parser_simple_type_specifier): Do not record usage
+       of globally-qualified names.
+
+2004-07-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/16175
+       * error.c (dump_type) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Output
+       cv qualifier.
+
+2004-07-19  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16623
+       * cp-tree.h (lang_type_class): Add lazy_assignment_op.
+       (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
+       * class.c (add_implicitly_declared_members): Use
+       CLASSTYPE_LAZY_ASSIGNMENT_OP.
+       * method.c (lazily_declare_fn): Clear
+       CLASSTYPE_LAZY_ASSIGNMENT_OP.
+       * search.c (lookup_fnfields_1): Check it.
+
+2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (vec_binfo_member): Remove.
+       * tree.c (vec_binfo_member): Remove.
+
+       * cp-tree.h (struct lang_type_class): Remove vfields field.
+       (CLASSTYPE_VFIELDS): Remove.
+       (SET_BINFO_NEW_VTABLE_MARKED): Adjust.
+       * class.c (determine_primary_base): Remove CLASSTYPE_VFIELDS
+       handling.
+       (dfs_modify_vtables): Use TYPE_CONTAINS_VPTR_P.
+       (finish_struct_1): Remove CLASSTYPE_VFIELDS handling.
+       * init.c (dfs_initialize_vtbl_ptrs): Use TYPE_CONTAINS_VPTR_P.
+
+2004-07-20  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (DEF_VEC_P(tree)): Remove here.
+       (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, BINFO_PRIMARY_BASE_OF):
+       Moved to common.
+       (BINFO_LANG_SLOTS): Remove.
+       * tree.c (copy_binfo): Adjust BINFO creation and accessors.
+       * decl.c (xref_basetypes): Adjust BINFO creation and accessors.
+       * class.c (check_bases): Adjust BINFO accessors.
+       (determine_primary_base, finish_struct_bits,
+       maybe_warn_about_overly_private_class, warn_hidden,
+       walk_subobject_offsets, propagate_binfo_offsets, end_of_class,
+       warn_about_ambiguous_bases, get_vfield_name,
+       dump_class_hierarchy_r, build_vtt_inits, accumulate_vtbl_inits,
+       add_vcall_offset_vtbl_entries_r): Likewise.
+       * dump.c (cp_dump_tree): Likewise.
+       * init.c (sort_mem_initializers, expand_member_init, build_delete,
+       push_base_cleanups): Likewise.
+       * method.c (do_build_copy_constructor, do_build_assign_ref,
+       synthesize_exception_spec): Likewise.
+       name-lookup.c (arg_assoc_class): Likewise.
+       * pt.c (instantiate_class_template,
+       get_template_base_recursive): Likewise.
+       * rtti.c (get_pseudo_ti_init, get_pseudo_ti_desc): Likewise.
+       * typeck2.c (process_init_constructor): Likewise.
+       * search.c (lookup_base_r, dynamic_cast_base_recurse,
+       dfs_access_in_type, dfs_walk_real, look_for_overrides,
+       types_overlap_p, copied_binfo, original_binfo): Likewise.
+       (binfo_for_vtable): Remove
+
+2004-07-20  Steven Bosscher  <stevenb@suse.de>
+
+       * cp-tree.h (struct lang_decl_flags): Unify the template_info and
+       thunk_alias, and the access and virtual_offset fields.
+       (THUNK_VIRTUAL_OFFSET, THUNK_ALIAS): Adjust.
+       * decl.c (finish_case_label): Update c_add_case_node call.
+
+2004-07-19  Mark Mitchell  <mark@codesourcery.com>
+
+       Revert patch for PR c++/16623.
+
+2004-07-19  Kelley Cook  <kcook@gcc.gnu.org>
+
+       * except.c: Remove two spurious carriage returns.
+
+2004-07-19  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16623
+       * cp-tree.h (lang_type_class): Add lazy_assignment_op.
+       (CLASSTYPE_LAZY_ASSIGNMENT_OP): New macro.
+       * class.c (add_implicitly_declared_members): Use
+       CLASSTYPE_LAZY_ASSIGNMENT_OP.
+       * method.c (lazily_declare_fn): Clear
+       CLASSTYPE_LAZY_ASSIGNMENT_OP.
+       * search.c (lookup_fnfields_1): Check it.
+
+2004-07-19  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * class.c (add_method): Delay adding the slot until the end.
+       (determine_primary_base): Adjust VEC_iterate invokation.
+       (resort_type_method_vec, finish_struct_methods, warn_hidden,
+       walk_subobject_offsets, end_of_class, warn_about_ambiguous_bases,
+       build_vtbl_initializer): Likewise.
+       * init.c (sort_mem_initializers, build_delete, push_base_cleanups,
+       build_vbase_delete): Likewise.
+       * method.c (do_build_copy_constructor): Likewise.
+       * name-lookup.c (new_class_binding, print_binding_level,
+       poplevel_class, store_class_bindings, push_to_top_level,
+       pop_from_top_level): Likewise.
+       * pt.c (check_explicit_specialization): Likewise.
+       * search.c (lookup_conversion_operator, lookup_fnfields_1,
+       get_pure_virtuals, add_conversions, dfs_check_overlap,
+       binfo_for_vbase): Likewise.
+
+2004-07-19  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/12170
+       * pt.c (unify) <BOUND_TEMPLATE_TEMPLATE_PARM case>: Use only
+       innermost set of template arguments during deduction.  Simplify.
+
+2004-07-19  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       * typeck.c (build_modify_expr, build_x_modify_expr): Set
+       TREE_NO_WARNING on assignments with an operator other than '='.
+
+2004-07-10  Steven Bosscher  <stevenb@suse.de>
+           Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       * cp-tree.h (C_SET_EXP_ORIGINAL_CODE): Remove.
+       * decl2.c (grokfield): Don't check current_class_depth via
+       unused TREE_COMPLEXITY.
+       * semantics.c (finish_parenthesized_expr): Set TREE_NO_WARNING
+       to avoid the missing parentheses warning.
+       Don't set C_SET_EXP_ORIGINAL_CODE.
+
+2004-07-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * tree.c (no_linkage_helper): Remove.
+       (no_linkage_check): Don't use walk_tree_without_duplicates.
+
+       * mangle.c (write_expression): Issue a sorry for zero-operand
+       functional casts.
+
+2004-07-18  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+       PR c++/13092
+       * init.c (build_offset_ref): Build SCOPE_REF with non-null
+       TREE_TYPE for non-dependent names.
+       * typeck.c (build_x_unary_op): Handle non-dependent SCOPE_REF.
+       * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
+       unknown_type_node as its TREE_TYPE.
+       * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
+       * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
+       (dump_expr) <SCOPE_REF case>: Likewise.
+
+2004-07-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/16115
+       * call.c (type_passed_as): Make the invisible reference type
+       __restrict.
+       * cp-gimplify.c (gimplify_cleanup_stmt): Rename to
+       cp_genericize_r.  Handle invisible reference lowering.
+       (is_invisiref_parm): New fn.
+       (cp_genericize): Adjust the types of invisible reference parms.
+       Don't repeat the walk for clones.
+       * decl.c (store_parm_decls): Don't generate any code for clones.
+
+2004-07-17  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       * cp-tree.h (builtin_function): Declare.
+
+2004-07-16  Mark Mitchell  <mark@codesourcery.com>
+
+       * class.c (finish_struct_methods): Remove unncessary code.
+       (add_implicitly_declared_members): Create declarations for default
+       constructors and copy constructors lazily.
+       * cp-tree.h (lang_type_class): Remove lazy_default_ctor and
+       lazy_copy_ctor.
+       (CLASSTYPE_LAZY_DEFAULT_CTOR): New macro.
+       (CLASSTYPE_LAZY_COPY_CTOR): Likewise.
+       * decl2.c (check_classfn): Robustify.
+       (locate_dtor): Handle empty CLASSTYPE_METHOD_VEC.
+       (locate_ctor): Handle lazy default constructors.
+       (locate_copy): Handle lazy copy constructors.
+       (implicitly_declare_fn): Make sure we're looking at the
+       TYPE_MAIN_VARIANT for a class before creating functions.  Don't
+       set TYPE_HAS_CONSTRUCTOR.
+       (lazily_declare_fn): New function.
+       * name-lookup.c (constructor_name_full): Simplify.
+       * search.c (lookup_fnfields_1): Lazily create methods, as
+       necessary.
+       (lookup_for_overrides): Handle empty CLASSTYPE_METHOD_VEC.
+
+2004-07-16  Steven Bosscher  <stevenb@suse.de>
+
+       * cp-tree.h (struct lang_type): Don't have three GTY options on a
+       single bit GTY desc.
+
+2004-07-16  Richard Henderson  <rth@redhat.com>
+
+       * cp-lang.c (LANG_HOOKS_TREE_INLINING_COPY_RES_DECL_FOR_INLINING): Die.
+       * cp-tree.h (cp_copy_res_decl_for_inlining): Remove.
+       * tree.c (cp_copy_res_decl_for_inlining): Remove.
+
+2004-07-16  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * class.c (finish_struct_bits): Use for loop.
+       (propagate_binfo_offsets): Do primary binfo outside of loop.
+
+       PR c++/16583
+       * dump.c (cp_dump_tree): Don't dump the bases if there's no
+       binfo.
+
+       * pt.c (tsubst) <TREE_BINFO case>: We should never get here.
+
+2004-07-15  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (lang_type_class): Remove has_real_assign_ref and
+       has_abstract_assign_ref.  Make methods a VEC(tree) *.
+       (TYPE_HAS_CONST_ASSIGN_REF): Add documentation.
+       (CLASSTYPE_CONSTRUCTORS): Adjust for changes to CLASSTYPE_METHOD_VEC.
+       (CLASSTYPE_DESTRUCTORS): Likewise.
+       (TYPE_HAS_REAL_ASSIGN_REF): Remove.
+       (TYPE_HAS_ABSTRACT_ASSIGN_REF): Likewise.
+       (add_method): Change prototoype.
+       * class.c (add_method): Remove error_p parameter.  Adjust for
+       changes to CLASSTYPE_METHOD_VEC.
+       (handle_using_decl): Adjust call to add_method.
+       (maybe_warn_about_overly_private_class): Adjust for
+       changes to CLASSTYPE_METHOD_VEC.
+       (resort_type_method_vec): Likewise.
+       (finish_struct_methods): Likewise.
+       (check_for_override): Likewise.
+       (warn_hidden): Likewise.
+       (add_implicitly_declared_members): Defer creation of assignment
+       operators.  Adjust call to add_method.
+       (clone_function_decl): Adjust call to add_method.
+       (check_bases_and_members): Don't set TYPE_HAS_REAL_ASSIGN_REF.
+       (finish_struct_1): Use CLASSTYPE_DESTRUCTORS.
+       * decl.c (grok_special_member_properties): Don't set
+       TYPE_HAS_ABSTRACT_ASSIGN_REF.
+       * decl2.c (check_classfn): Adjust for
+       changes to CLASSTYPE_METHOD_VEC.
+       * method.c (locate_dtor): Use CLASSTYPE_DESTRUCTORS.
+       (locate_ctor): Use CLASSTYPE_CONSTRUCTORS.
+       (locate_copy): Adjust for changes to CLASSTYPE_METHOD_VEC.
+       (implicitly_declare_fn): Set DECL_SOURCE_LOCATION.  Do not call
+       cp_finish_decl.
+       * pt.c (check_explicit_specialization): Adjust for
+       changes to CLASSTYPE_METHOD_VEC.
+       (instantiate_class_template): Do not set
+       TYPE_HAS_ABSTRACT_ASSIGN_REF.
+       * ptree.c (cxx_print_type): Don't try to print
+       CLASSTYPE_METHOD_VEC.
+       * rtti.c (emit_support_tinfos): Use CLASSTYPE_DESTRUCTORS.
+       * search.c (lookup_field_r): Adjust for
+       changes to CLASSTYPE_METHOD_VEC.
+       (lookup_fnfields): Likewise.
+       (lookup_conversion_operator): Likewise.
+       (lookup_fnfields_1): Likewise.  Create assignment operators
+       lazily.
+       (look_for_overrides_here): Adjust for
+       changes to CLASSTYPE_METHOD_VEC.
+       (add_conversions): Likewise.
+       * semantics.c (finish_member_declaration): Adjust call to add_method.
+
+2004-07-15  Jason Merrill  <jason@redhat.com>
+
+       * cp-lang.c (cxx_types_compatible_p): To the middle-end,
+       references and pointers are compatible.
+
+2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (xref_basetypes): Refactor.
+       * tree.c (copy_base_binfos): Replace with ...
+       (copy_binfo): ... this. Deep copy the given binfo, (not the just
+       bases of the given base).
+       * cp-tree.h (copy_base_binfo): Remove.
+       (copy_binfo): Declare.
+
+2004-07-15  Mark Mitchell  <mark@codesourcery.com>
+
+       * name-lookup.c (set_inherited_value_binding_p): Add class_type
+       parameter.
+       (get_class_binding): Adjust.
+       (push_class_level_binding): Don't use set_inherited_value_binding_p.
+
+2004-07-15  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * class.c (finish_struct_bits): Don't set TYPE_HAS_CONVERSION here.
+       * decl.c (xref_basetypes): Set it here.
+
+       * class.c (check_bases): Don't set CLASSTYPE_NON_AGGREGATE here.
+       Don't check for incomplete base.
+       (get_vfield_name): Simplify while loop.
+       * decl.c (xref_basetypes): Set CLASSTYPE_NON_AGGREGATE here.
+
+2004-07-14  Mark Mitchell  <mark@codesourcery.com>
+
+       * lex.c (cxx_make_type): Remove call to get_pointer_type.
+
+       * cp-tree.h (IDENTIFIER_VALUE): Remove.
+       (BINFO_PUSHDECLS_MARKED): Likewise.
+       (maybe_inject_for_scope_var): Likewise.
+       (push_class_decls): Likewise.
+       * name-lookup.h (push_class_binding): Remove.
+       (innermost_non_namespace_value): New function.
+       (outer_binding): Likewise.
+       * class.c (add_method): Push bindings before adding to
+       TYPE_METHODS.
+       (restore_class_cache): Do not restore class_shadowed.
+       (pushclass): Do not add USING_DECLs.  Do not call
+       push_class_decls.
+       * config-lang.in (gtfiles): Remove $(srcdir)/cp/search.c.
+       * decl.c (pushdecl): Use outer_binding.
+       (poplevel): Set the scope for an out-of-scope for-loop declaration
+       appropriately.
+       (cp_finish_decl): Don't call maybe_inject_for_scope_var.
+       * name-lookup.c (new_class_binding): New function.
+       (push_binding): Use it.
+       (pushdecl): Use innermost_non_namespace_value.
+       (maybe_inject_for_scope_var): Remove.
+       (push_class_binding): Remove.
+       (set_inherited_value_binding_p): New function.
+       (get_class_binding): New function.
+       (push_class_level_binding): Assert that the current_class_type is
+       being defined.
+       (outer_binding): New function.
+       (innermost_non_namespace_value): Likewise.
+       (lookup_name_real): Use outer_binding.
+       (lookup_name_current_level): Ignore out-of-scope variables.
+       * pt.c (check_template_shadow): Use innermost_non_namespace_value.
+       (lookup_template_class): Likewise.
+       * search.c (dfs_push_type_decls): Remove.
+       (dfs_push_decls): Likewise.
+       (setup_class_bindings): Likewise.
+       (lookup_field_1): Handle USING_DECLs from dependent scopes.
+       (marked_pushdecls_p): Remove.
+       (unmarked_pushdecls_p): Remove.
+       (marked_identifiers): Remove.
+       (setup_class_bindings): Remove.
+       (dfs_push_type_decls): Remove.
+       (dfs_push_decls): Remove.
+       (push_class_decls): Remove.
+
+2004-07-13  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/16518
+       PR c++/16337
+       * decl.c (grokvardecl): Make declspecs parameter const.
+       (grokdeclarator): Likewise.  Adjust accordingly.
+       * decl.h (grokdeclarator): Adjust declaration.
+       * parser.c (cp_parser_init_declarator): Do not clear
+       decl_specifiers->attributes.
+
+       * cp-tree.h (lang_identifier): Remove class_value.
+       (IDENTIFIER_CLASS_VALUE): Remove.
+       (pop_class_decls): Likewise.
+       (init_search_processing): Likewise.
+       * class.c (handle_using_decl): Use lookup_member, not
+       IDENTIFIER_CLASS_VALUE.
+       (restore_class_cache): New function, split out from ...
+       (pushclass): ... here.  Do not call clear_identifier_class_values.
+       (invalidate_class_lookup_cache): Do not clear
+       IDENTIFIER_CLASS_VALUE.
+       (popclass): Do not call pop_class_decls.
+       (maybe_note_name_used_in_class): Do not save names looked up after
+       the class is complete.  Use lookup_member, not
+       IDENTIFIER_CLASS_VALUE.
+       * config-lang.in (gtfiles): Add $(srcdir)/cp/search.c.
+       * decl.c (cxx_init_decl_processing): Do not call
+       init_search_processing.
+       * method.c (do_build_copy_constructor): Remove unnecessary code.
+       (do_build_assign_ref): Likewise.
+       * name-lookup.c (pushdecl): Use lookup_member, not
+       IDENTIFIER_CLASS_VALUE.
+       (set_identifier_type_value_with_scope): Set TREE_TYPE on the
+       type_shadowed list.
+       (poplevel_class): Do not restore IDENTIFIER_CLASS_VALUE.
+       (push_class_binding): Do not set it.
+       (clear_identifier_class_values): Remove.
+       (push_class_level_binding): Do not set IDENTIFIER_CLASS_VALUE.
+       (store_binding): Do not save it.
+       (pop_from_top_level): Do not restore it.
+       * name-lookup.h (cxx_saved_binding): Remove class_value.
+       (clear_identifier_class_values): Remove.
+       * ptree.c (cxx_print_identifier): Do not print
+       IDENTIFIER_CLASS_VALUE.
+       * search.c (search_obstack): Remove.
+       (push_stack_level): Remove.
+       (pop_stack_level): Remove.
+       (search_level): Remove.
+       (search_stack): Remove.
+       (lookup_member): Don't check IDENTIFIER_CLASS_VALUE.
+       (setup_class_bindings): Use IDENTIFIER_MARKED, not
+       IDENTIFIER_CLASS_VALUE.
+       (marked_identifiers): New variable.
+       (push_class_decls): Clear IDENTIFIER_MARKED.
+       (pop_class_decls): Don't call pop_search_level.
+       (init_search_processing): Remove.
+
+2004-07-12  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (get_aggr_typedef): Remove.
+       * init.c (get_aggr_typedef): Likewise.
+
+       * name-lookup.c (push_class_level_binding): Simplify.
+
+2004-07-12  Andrew Pinski  <apinski@apple.com>
+
+       PR c++/16475
+       Revert:
+       2004-07-07  H.J. Lu  <hongjiu.lu@intel.com>
+               PR c++/16276
+               * rtti.c (emit_tinfo_decl): Turn off DECL_ONE_ONLY if typeinfo
+               is not public.
+
+2004-07-12  Eric Christopher  <echristo@redhat.com>
+
+       * parser.c (cp_parser_class_head): Remove unused variable.
+
+2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
+
+       * decl.c (grok_op_properties): Reject [de-]allocation functions
+       declared in a namespace, or declared as static.
+
+2004-07-12  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (make_binfo): Remove.
+       * decl.c (xref_basetypes): Use make_tree_binfo directly.
+       * tree.h (copy_base_binfos): Likewise.
+       (make_binfo): Remove.
+
+       * call.c (build_user_type_conversion_1, build_new_op,
+       check_constructor_callable, build_temp,
+       perform_direct_initialization_of_possible): Pass type directly to
+       lookup_fnfields & build_special_member_call.
+       (build_special_member_call): Accept a type, and complete it.
+       * class.c (finish_stuct_bits): Copy the BINFOs here.
+       * cvt.c (ocp_convert): Pass type directly to
+       build_special_member_call.
+       * decl.c (build_ptrmemfunc_type): Call xref_bastypes here.
+       (xref_basetypes): Allocate the binfo here. Adjust.
+       * init.c (build_init, build_new_1): Pass type directly to
+       build_special_member_call.
+       * lex.c (cxx_make_type): Do not allocate binfo here.
+       * name-lookup.c (arg_assoc_class): Incomplete types have no binfo.
+       * parser.c (cp_parser_class_head): Always call xref_basetypes.
+       * pt.c (instantiate_class_template): Likewise. Inhibit access
+       checking for template friends.
+       * ptree.c (cxx_print_type): Adjust record printing.
+       * search.c (lookup_base): When taking a type, complete it before
+       looking for a binfo.
+       (lookup_member): Delay completing a type.
+       (push_class_decls): Don't walk an incomplete type.
+       (lookup_conversions): Likewise.
+       * semantics.c (finish_stmt_expr_expr): Pass type directly to
+       build_special_member_call.
+       * tree.c (copy_base_binfos): Adjust.
+       (make_binfo): Likewise.
+       * typeck.c (build_modify_expr): Pass type directly to
+       build_special_member_call.
+       * typeck2.c (process_init_constructor): Check a binfo exists.
+       (build_m_component_ref): Allow accessing an incomplete type.
+       (build_functional_cast): Pass type directly to
+       build_special_member_call.
+
 2004-07-12  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
 
        PR c++/2204
        push_base_cleanups): Likewise.
        * method.c (do_build_copy_constructor, do_build_assign_reg,
        synthesize_exception_spec): Likewise.
-       * name-lookup.c (arg_assoc_class):
+       * name-lookup.c (arg_assoc_class): Likewise.
        * pt.c (instantiate_class_template, tsubst,
-       get_template_base_recursive):
-       * ptree.c (cxx_print_type):
+       get_template_base_recursive): Likewise.
+       * ptree.c (cxx_print_type): Likewise.
        * rtti.c (get_psuedo_ti_init, get_pseudo_ti_desc): Likewise.
        * search.c (lookup_base_r, dynamic_cast_base_recurse,
        dfs_access_in_type, access_in_type, lookup_field_queue_p,
This page took 0.043998 seconds and 5 git commands to generate.