+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,