OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [gcc/] [cp/] [ChangeLog-2001] - Diff between revs 283 and 338

Only display areas with differences | Details | Blame | View Log

Rev 283 Rev 338
2001-12-29  Nathan Sidwell  
2001-12-29  Nathan Sidwell  
        * call.c (build_user_type_conversion_1): Use my_friendly_assert
        * call.c (build_user_type_conversion_1): Use my_friendly_assert
        rather than if ... abort.
        rather than if ... abort.
        * cvt.c (convert_to_reference): Likewise.
        * cvt.c (convert_to_reference): Likewise.
        * semantics.c (setup_vtbl_ptr): Likewise.
        * semantics.c (setup_vtbl_ptr): Likewise.
        * pt.c (lookup_template_class): Comment typo.
        * pt.c (lookup_template_class): Comment typo.
2001-12-29  Nathan Sidwell  
2001-12-29  Nathan Sidwell  
        PR c++/5125
        PR c++/5125
        * pt.c (push_template_decl_real): Make sure DECL has
        * pt.c (push_template_decl_real): Make sure DECL has
        DECL_LANG_SPECIFIC.
        DECL_LANG_SPECIFIC.
2001-12-29  Nathan Sidwell  
2001-12-29  Nathan Sidwell  
        PR c++/335
        PR c++/335
        * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
        * init.c (resolve_offset_ref): Copy cv qualifiers of this pointer
        for non-reference fields.
        for non-reference fields.
        * typeck.c (require_complete_type): Use resolve_offset_ref).
        * typeck.c (require_complete_type): Use resolve_offset_ref).
2001-12-26  Nathan Sidwell  
2001-12-26  Nathan Sidwell  
        PR c++/196
        PR c++/196
        * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
        * parse.y (bad_parm): Better diagnostic when given a SCOPE_REF.
2001-12-24  Nathan Sidwell  
2001-12-24  Nathan Sidwell  
        PR c++/160
        PR c++/160
        * typeck.c (build_modify_expr): Remove old unreachable code & tidy
        * typeck.c (build_modify_expr): Remove old unreachable code & tidy
        up. Don't stabilize_references when initializing a reference.
        up. Don't stabilize_references when initializing a reference.
2001-12-23  Kaveh R. Ghazi  
2001-12-23  Kaveh R. Ghazi  
        * decl2.c (lang_f_options): Const-ify.
        * decl2.c (lang_f_options): Const-ify.
2001-12-20  Joseph S. Myers  
2001-12-20  Joseph S. Myers  
        * config-lang.in (diff_excludes): Remove.
        * config-lang.in (diff_excludes): Remove.
2001-12-19  Nathan Sidwell  
2001-12-19  Nathan Sidwell  
        PR c++/90
        PR c++/90
        * typeck.c (build_function_call_real): Use original function
        * typeck.c (build_function_call_real): Use original function
        expression for errors.
        expression for errors.
2001-12-18  Jason Merrill  
2001-12-18  Jason Merrill  
        PR c++/3242
        PR c++/3242
        * class.c (add_method): Do compare 'this' quals when trying to match a
        * class.c (add_method): Do compare 'this' quals when trying to match a
        used function.  Don't defer to another used function.
        used function.  Don't defer to another used function.
2001-12-18  Nathan Sidwell  
2001-12-18  Nathan Sidwell  
        * pt.c (instantiate_clone): Remove, fold into ...
        * pt.c (instantiate_clone): Remove, fold into ...
        (instantiate_template): ... here. Simplify by removing mutual
        (instantiate_template): ... here. Simplify by removing mutual
        recursion.
        recursion.
        * typeck2.c (build_m_component_ref): Don't cv qualify the function
        * typeck2.c (build_m_component_ref): Don't cv qualify the function
        pointed to by a pointer to function.
        pointed to by a pointer to function.
        * class.c (delete_duplicate_fields_1): Typo.
        * class.c (delete_duplicate_fields_1): Typo.
2001-12-18  Jason Merrill  
2001-12-18  Jason Merrill  
        C++ ABI change: destroy value arguments in caller.
        C++ ABI change: destroy value arguments in caller.
        * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
        * semantics.c (genrtl_start_function, genrtl_finish_function): Don't
        create an extra binding level for the parameters.
        create an extra binding level for the parameters.
        * decl.c (store_parm_decls): Don't do parameter cleanups.
        * decl.c (store_parm_decls): Don't do parameter cleanups.
2001-12-18  Nathan Sidwell  
2001-12-18  Nathan Sidwell  
        * call.c (build_new_method_call): Use '%#V'.
        * call.c (build_new_method_call): Use '%#V'.
        * error.c (cv_to_string): Use V parameter to determine padding.
        * error.c (cv_to_string): Use V parameter to determine padding.
2001-12-18  Joseph S. Myers  
2001-12-18  Joseph S. Myers  
        * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
        * call.c, decl2.c, init.c: Use "built-in" and "bit-field"
        spellings in messages.
        spellings in messages.
2001-12-17  Zack Weinberg  
2001-12-17  Zack Weinberg  
        * cp-tree.h: Delete #defines for cp_error, cp_warning,
        * cp-tree.h: Delete #defines for cp_error, cp_warning,
        cp_pedwarn, and cp_compiler_error.
        cp_pedwarn, and cp_compiler_error.
        * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
        * call.c, class.c, cp-tree.h, cvt.c, decl.c, decl2.c, error.c,
        except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
        except.c, friend.c, init.c, lex.c, method.c, parse.y, pt.c,
        rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
        rtti.c, search.c, semantics.c, spew.c, tree.c, typeck.c,
        typeck2.c: Change calls to the above macros to use their
        typeck2.c: Change calls to the above macros to use their
        language-independent equivalents: error, warning, pedwarn, and
        language-independent equivalents: error, warning, pedwarn, and
        internal_error respectively.
        internal_error respectively.
2001-12-16  Neil Booth  
2001-12-16  Neil Booth  
        * decl2.c (finish_file): Remove back_end_hook.
        * decl2.c (finish_file): Remove back_end_hook.
2001-12-16  Joseph S. Myers  
2001-12-16  Joseph S. Myers  
        * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
        * ChangeLog.1, ChangeLog.2, ChangeLog, NEWS, call.c, class.c,
        cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
        cp-tree.h, decl.c, decl2.c, except.c, operators.def, optimize.c,
        pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
        pt.c, rtti.c, semantics.c, typeck.c: Fix spelling errors.
2001-12-15  Joseph S. Myers  
2001-12-15  Joseph S. Myers  
        * lang-options.h: Use American spelling in messages.
        * lang-options.h: Use American spelling in messages.
2001-12-13  Jason Merrill  
2001-12-13  Jason Merrill  
        * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
        * Make-lang.in (parse.h): Separate rule, just depend on parse.c.
        Use cleanups to run base and member destructors.
        Use cleanups to run base and member destructors.
        * init.c (push_base_cleanups): New function, split out from...
        * init.c (push_base_cleanups): New function, split out from...
        (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
        (build_delete): ...here.  Lose !TYPE_HAS_DESTRUCTOR code.
        * decl.c (finish_destructor_body): Move vbase destruction code to
        * decl.c (finish_destructor_body): Move vbase destruction code to
        push_base_cleanups.
        push_base_cleanups.
        (begin_function_body, finish_function_body): New fns.
        (begin_function_body, finish_function_body): New fns.
        (finish_function): Move [cd]tor handling and call_poplevel to
        (finish_function): Move [cd]tor handling and call_poplevel to
        finish_function_body.
        finish_function_body.
        (pushdecl): Skip the new level.
        (pushdecl): Skip the new level.
        * semantics.c (genrtl_try_block): Don't call end_protect_partials.
        * semantics.c (genrtl_try_block): Don't call end_protect_partials.
        (setup_vtbl_ptr): Call push_base_cleanups.
        (setup_vtbl_ptr): Call push_base_cleanups.
        * method.c (synthesize_method): Call {begin,end}_function_body.
        * method.c (synthesize_method): Call {begin,end}_function_body.
        * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
        * pt.c (tsubst_expr): Handle COMPOUND_STMT_BODY_BLOCK.
        * cp-tree.h: Declare new fns.
        * cp-tree.h: Declare new fns.
        * parse.y (function_body, .begin_function_body): New nonterminals.
        * parse.y (function_body, .begin_function_body): New nonterminals.
        (fndef, pending_inline, function_try_block): Use function_body.
        (fndef, pending_inline, function_try_block): Use function_body.
        (ctor_initializer_opt, function_try_block): No longer has a value.
        (ctor_initializer_opt, function_try_block): No longer has a value.
        (base_init): Remove .set_base_init token.
        (base_init): Remove .set_base_init token.
        (.set_base_init, compstmt_or_error): Remove.
        (.set_base_init, compstmt_or_error): Remove.
        * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
        * Make-lang.in (parse.c): Expect two fewer s/r conflicts.
        * optimize.c (maybe_clone_body): Fix parameter updating.
        * optimize.c (maybe_clone_body): Fix parameter updating.
2001-12-12  Jason Merrill  
2001-12-12  Jason Merrill  
        * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
        * decl.c (store_parm_decls): Remove parms_have_cleanups cruft.
        * semantics.c (genrtl_start_function): Don't pass
        * semantics.c (genrtl_start_function): Don't pass
        parms_have_cleanups or push an extra binding level.
        parms_have_cleanups or push an extra binding level.
        (genrtl_finish_function): Lose cleanup_label cruft.
        (genrtl_finish_function): Lose cleanup_label cruft.
        * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
        * cp-tree.h (struct cp_language_function): Remove x_ctor_label.
        (ctor_label): Remove.
        (ctor_label): Remove.
        * semantics.c (finish_return_stmt): Lose ctor_label support.
        * semantics.c (finish_return_stmt): Lose ctor_label support.
        * decl.c (finish_constructor_body, mark_lang_function): Likewise.
        * decl.c (finish_constructor_body, mark_lang_function): Likewise.
        * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
        * typeck.c (check_return_expr): Check DECL_DESTRUCTOR_P, not
        dtor_label.
        dtor_label.
        * call.c (build_new_method_call): Let resolves_to_fixed_type_p
        * call.c (build_new_method_call): Let resolves_to_fixed_type_p
        check for [cd]tors.
        check for [cd]tors.
        * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
        * class.c (fixed_type_or_null, case INDIRECT_REF): Fix.
        * decl.c (finish_function): Check VMS_TARGET, not VMS.
        * decl.c (finish_function): Check VMS_TARGET, not VMS.
        * decl.c (start_cleanup_fn): Remove redundant pushlevel.
        * decl.c (start_cleanup_fn): Remove redundant pushlevel.
        (end_cleanup_fn): And poplevel.
        (end_cleanup_fn): And poplevel.
        * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
        * semantics.c (setup_vtbl_ptr): Always build a CTOR_INITIALIZER
        if we're in a template.
        if we're in a template.
2001-12-12  Jakub Jelinek  
2001-12-12  Jakub Jelinek  
        * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
        * cp-tree.h (DESTRUCTOR_DECL_PREFIX, DESTRUCTOR_NAME_P,
        ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
        ANON_PARMNAME_FORMAT, ANON_PARMNAME_P, DESTRUCTOR_NAME_FORMAT,
        THIS_NAME_P): Delete.
        THIS_NAME_P): Delete.
        * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
        * spew.c (read_process_identifier): Remove DESTRUCTOR_NAME_P,
        THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
        THIS_NAME_P and ANON_PARMNAME_P tests from warning about clash
        with internal naming scheme.
        with internal naming scheme.
        * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
        * error.c (dump_decl): Remove DESTRUCTOR_NAME_P use.
2001-12-12  Nathan Sidwell  
2001-12-12  Nathan Sidwell  
        * decl.c (grokdeclarator): Deprecated implicit typename use.
        * decl.c (grokdeclarator): Deprecated implicit typename use.
2001-12-11  Nathan Sidwell  
2001-12-11  Nathan Sidwell  
        PR g++/51
        PR g++/51
        * parse.y (frob_specs): Indicate it is a language linkage which
        * parse.y (frob_specs): Indicate it is a language linkage which
        contained the extern.
        contained the extern.
        * decl.c (grokdeclarator): Allow extern language linkage with
        * decl.c (grokdeclarator): Allow extern language linkage with
        other specifiers.
        other specifiers.
2001-12-10  Nathan Sidwell  
2001-12-10  Nathan Sidwell  
        PR g++/72
        PR g++/72
        * decl.c (add_binding): Don't reject duplicate typedefs involving
        * decl.c (add_binding): Don't reject duplicate typedefs involving
        template parameters.
        template parameters.
2001-12-10  Neil Booth  
2001-12-10  Neil Booth  
        * parse.y, semantics.c: Similarly.
        * parse.y, semantics.c: Similarly.
2001-12-09  Nathan Sidwell  
2001-12-09  Nathan Sidwell  
        PR g++/87
        PR g++/87
        * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
        * cp-tree.h (DECL_COPY_CONSTRUCTOR_P): Use copy_fn_p.
        (copy_args_p): Rename to ...
        (copy_args_p): Rename to ...
        (copy_fn_p): ... here.
        (copy_fn_p): ... here.
        (grok_special_member_properties): New function.
        (grok_special_member_properties): New function.
        (grok_op_properties): Lose VIRTUALP parameter.
        (grok_op_properties): Lose VIRTUALP parameter.
        (copy_assignment_arg_p): Remove.
        (copy_assignment_arg_p): Remove.
        * call.c (build_over_call): Use copy_fn_p.
        * call.c (build_over_call): Use copy_fn_p.
        * decl.c (grokfndecl): Reformat. Adjust call to
        * decl.c (grokfndecl): Reformat. Adjust call to
        grok_op_properties.
        grok_op_properties.
        (copy_args_p): Rename to ...
        (copy_args_p): Rename to ...
        (copy_fn_p): ... here. Reject template functions. Check for pass
        (copy_fn_p): ... here. Reject template functions. Check for pass
        by value.
        by value.
        (grok_special_member_properties): Remember special functions.
        (grok_special_member_properties): Remember special functions.
        (grok_ctor_properties): Don't remember them here, just check.
        (grok_ctor_properties): Don't remember them here, just check.
        (grok_op_properties): Likewise.
        (grok_op_properties): Likewise.
        (start_method): Call grok_special_member_properties.
        (start_method): Call grok_special_member_properties.
        * decl2.c (grokfield): Likewise.
        * decl2.c (grokfield): Likewise.
        (copy_assignment_arg_p): Remove.
        (copy_assignment_arg_p): Remove.
        (grok_function_init): Don't remember abstract assignment here.
        (grok_function_init): Don't remember abstract assignment here.
        * pt.c (instantiate_class_template): Call
        * pt.c (instantiate_class_template): Call
        grok_special_member_properties.
        grok_special_member_properties.
        (tsubst_decl): Adjust grok_op_properties call.
        (tsubst_decl): Adjust grok_op_properties call.
2001-12-08  Aldy Hernandez  
2001-12-08  Aldy Hernandez  
        * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
        * lex.c (rid_to_yy): Add RID_CHOOSE_EXPR and
        RID_TYPES_COMPATIBLE_P.
        RID_TYPES_COMPATIBLE_P.
2001-12-08  John David Anglin  
2001-12-08  John David Anglin  
        * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
        * semantics.c (simplify_aggr_init_exprs_r): Add DIRECT_BIND flag in
        call to build_aggr_init.
        call to build_aggr_init.
        * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
        * cp-tree.h (DIRECT_BIND): Document new use of DIRECT_BIND.
2001-12-08  Neil Booth  
2001-12-08  Neil Booth  
        * parse.y: Replace uses of the string non-terminal with STRING.
        * parse.y: Replace uses of the string non-terminal with STRING.
        Don't perform string concatentaion here.
        Don't perform string concatentaion here.
        (string): Remove non-terminal.
        (string): Remove non-terminal.
        * semantics.c (finish_asm_stmt): Don't concatenate strings here.
        * semantics.c (finish_asm_stmt): Don't concatenate strings here.
2001-12-05  Jason Merrill  
2001-12-05  Jason Merrill  
        * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
        * cp-lang.c (LANG_HOOKS_TREE_INLINING_START_INLINING): Define.
        (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
        (LANG_HOOKS_TREE_INLINING_END_INLINING): Define.
        * tree.c (cp_start_inlining, cp_end_inlining): New fns.
        * tree.c (cp_start_inlining, cp_end_inlining): New fns.
        * pt.c (push_tinst_level): No longer static.
        * pt.c (push_tinst_level): No longer static.
        * cp-tree.h: Declare them.
        * cp-tree.h: Declare them.
        * init.c (resolve_offset_ref): Don't check access for the base
        * init.c (resolve_offset_ref): Don't check access for the base
        conversion to access a FIELD_DECL.
        conversion to access a FIELD_DECL.
        * cp-tree.h (TYPE_REFFN_P): New macro.
        * cp-tree.h (TYPE_REFFN_P): New macro.
        * decl.c (bad_specifiers): Check it, too.
        * decl.c (bad_specifiers): Check it, too.
        * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
        * rtti.c (create_pseudo_type_info): Set CLASSTYPE_INTERFACE_ONLY
        on the __*_type_info type if we haven't seen a definition.
        on the __*_type_info type if we haven't seen a definition.
2001-12-05  Neil Booth  
2001-12-05  Neil Booth  
        * decl.c: Include c-common.h.
        * decl.c: Include c-common.h.
        (shadow_warning): Move to c-common.c.
        (shadow_warning): Move to c-common.c.
2001-12-05  Richard Kenner  
2001-12-05  Richard Kenner  
        * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
        * decl.c (duplicate_decls): Don't copy DECL_NO_CHECK_MEMORY_USAGE.
2001-12-04  Nathan Sidwell  
2001-12-04  Nathan Sidwell  
        * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
        * pt.c (end_template_parm_list): Clear TREE_CHAIN of each parm.
2001-12-04  Nathan Sidwell  
2001-12-04  Nathan Sidwell  
        PR g++/164
        PR g++/164
        * init.c (sort_base_init): Allow binfos to be directly specified.
        * init.c (sort_base_init): Allow binfos to be directly specified.
        * method.c (do_build_copy_constructor): Explicitly convert to the
        * method.c (do_build_copy_constructor): Explicitly convert to the
        base instance.
        base instance.
        (do_build_assign_ref): Likewise.
        (do_build_assign_ref): Likewise.
2001-12-03  Hans-Peter Nilsson  
2001-12-03  Hans-Peter Nilsson  
        * decl.c (xref_basetypes): Don't use C99 construct in tag_code
        * decl.c (xref_basetypes): Don't use C99 construct in tag_code
        declaration and initialization.
        declaration and initialization.
2001-12-03  Neil Booth  
2001-12-03  Neil Booth  
        * typeck2.c: Remove leading capital from diagnostic messages, as
        * typeck2.c: Remove leading capital from diagnostic messages, as
        per GNU coding standards.
        per GNU coding standards.
2001-12-03  Mumit Khan  
2001-12-03  Mumit Khan  
        PR c++/3394
        PR c++/3394
        * decl.c (xref_basetypes): Handle attributes between
        * decl.c (xref_basetypes): Handle attributes between
        'class' and name.
        'class' and name.
2001-12-03  Nathan Sidwell  
2001-12-03  Nathan Sidwell  
        PR g++/3381
        PR g++/3381
        * parse.y (named_complex_class_head_sans_basetype): Add new
        * parse.y (named_complex_class_head_sans_basetype): Add new
        reduction.
        reduction.
        * Make-lang.in (parse.c): Adjust expected conflict count.
        * Make-lang.in (parse.c): Adjust expected conflict count.
2001-12-03  Jason Merrill  
2001-12-03  Jason Merrill  
        * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
        * class.c (finish_vtbls): Fill in BINFO_VPTR_FIELD in the
        immediate binfos for our virtual bases.
        immediate binfos for our virtual bases.
2001-12-02  Neil Booth  
2001-12-02  Neil Booth  
        * call.c (build_java_interface_fn_ref): Similarly.
        * call.c (build_java_interface_fn_ref): Similarly.
        * except.c (is_admissible_throw_operand): Similarly.
        * except.c (is_admissible_throw_operand): Similarly.
        * init.c (build_java_class_ref): Similarly.
        * init.c (build_java_class_ref): Similarly.
        * xref.c (open_xref_file): Similarly.
        * xref.c (open_xref_file): Similarly.
2001-12-01  Neil Booth  
2001-12-01  Neil Booth  
        * class.c (finish_struct): Remove trailing periods from messages.
        * class.c (finish_struct): Remove trailing periods from messages.
        * decl.c (check_tag_decl): Similarly.
        * decl.c (check_tag_decl): Similarly.
        * lex.c (cxx_set_yydebug): Similarly.
        * lex.c (cxx_set_yydebug): Similarly.
        * typeck2.c (friendly_abort): Similarly.
        * typeck2.c (friendly_abort): Similarly.
2001-11-29  Mark Mitchell  
2001-11-29  Mark Mitchell  
        PR c++/3048
        PR c++/3048
        * cp-tree.h (ovl_member): Remove.
        * cp-tree.h (ovl_member): Remove.
        * decl2.c (merge_functions): Handle extern "C" functions
        * decl2.c (merge_functions): Handle extern "C" functions
        specially.
        specially.
        * tree.c (ovl_member): Remove.
        * tree.c (ovl_member): Remove.
2001-11-29  Mark Mitchell  
2001-11-29  Mark Mitchell  
        PR c++/4842
        PR c++/4842
        * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
        * class.c (get_basefndecls): Take an IDENTIFIER_NODE, not a
        FUNCTION_DECL, as input.
        FUNCTION_DECL, as input.
        (mark_overriders): Remove.
        (mark_overriders): Remove.
        (warn_hidden): Rework for the new ABI.
        (warn_hidden): Rework for the new ABI.
2001-11-29  Mark Mitchell  
2001-11-29  Mark Mitchell  
        PR c++/3471
        PR c++/3471
        * call.c (convert_like_real): Do not build additional temporaries
        * call.c (convert_like_real): Do not build additional temporaries
        for rvalues of class type.
        for rvalues of class type.
2001-11-28  Nathan Sidwell  
2001-11-28  Nathan Sidwell  
        * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
        * cp-tree.h (UNIQUELY_DERIVED_FROM_P): Use lookup base.
        (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
        (ACCESSIBLY_UNIQUELY_DERIVED_FROM_P): Likewise.
        (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
        (PUBLICLY_UNIQUELY_DERIVED_FROM_P: Likewise.
        (DERIVED_FROM_P): Likewise.
        (DERIVED_FROM_P): Likewise.
        (enum base_access): Renumber, add ba_quiet bit mask.
        (enum base_access): Renumber, add ba_quiet bit mask.
        (get_binfo): Remove.
        (get_binfo): Remove.
        (get_base_distance): Remove.
        (get_base_distance): Remove.
        (binfo_value): Remove.
        (binfo_value): Remove.
        (ACCESSIBLY_DERIVED_FROM_P): Remove.
        (ACCESSIBLY_DERIVED_FROM_P): Remove.
        * call.c (standard_conversion): Use lookup_base.
        * call.c (standard_conversion): Use lookup_base.
        * class.c (strictly_overrides): Likewise.
        * class.c (strictly_overrides): Likewise.
        (layout_virtual_bases): Likewise.
        (layout_virtual_bases): Likewise.
        (warn_about_ambiguous_direct_bases): Likewise.
        (warn_about_ambiguous_direct_bases): Likewise.
        (is_base_of_enclosing_class): Likewise.
        (is_base_of_enclosing_class): Likewise.
        (add_vcall_offset_vtbl_entries_1): Likewise.
        (add_vcall_offset_vtbl_entries_1): Likewise.
        * cvt.c (build_up_reference): Adjust comment.
        * cvt.c (build_up_reference): Adjust comment.
        * init.c (build_member_call): Reformat.
        * init.c (build_member_call): Reformat.
        * search.c (get_binfo): Remove.
        * search.c (get_binfo): Remove.
        (get_base_distance_recursive): Remove.
        (get_base_distance_recursive): Remove.
        (get_base_distance): Remove.
        (get_base_distance): Remove.
        (lookup_base_r): Tweak.
        (lookup_base_r): Tweak.
        (lookup_base): Add ba_quiet control. Complete the types here.
        (lookup_base): Add ba_quiet control. Complete the types here.
        (covariant_return_p): Use lookup_base.
        (covariant_return_p): Use lookup_base.
        * tree.c (binfo_value): Remove.
        * tree.c (binfo_value): Remove.
        (maybe_dummy_object): Use lookup_base.
        (maybe_dummy_object): Use lookup_base.
        * typeck.c (build_static_cast): Use lookup_base.
        * typeck.c (build_static_cast): Use lookup_base.
        (get_delta_difference): Likewise.
        (get_delta_difference): Likewise.
        * typeck2.c (binfo_or_else): Use lookup_base.
        * typeck2.c (binfo_or_else): Use lookup_base.
        (build_scoped_ref): Add back error_mark_check.
        (build_scoped_ref): Add back error_mark_check.
        (build_m_component_ref): Use lookup_base.
        (build_m_component_ref): Use lookup_base.
2001-11-29  Joseph S. Myers  
2001-11-29  Joseph S. Myers  
        * Make-lang.in (c++.generated-manpages): New dummy target.
        * Make-lang.in (c++.generated-manpages): New dummy target.
2001-11-27  Richard Kenner  
2001-11-27  Richard Kenner  
        * Make-lang.in (cp-lang.o): Depends on c-common.h.
        * Make-lang.in (cp-lang.o): Depends on c-common.h.
        * cp-lang.c (c-common.h): Include.
        * cp-lang.c (c-common.h): Include.
        (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
        (LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
        * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
        * decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
        * expr.c (init_cplus_expand): Don't set lang_expand_constant.
        * expr.c (init_cplus_expand): Don't set lang_expand_constant.
2001-11-26  Neil Booth  
2001-11-26  Neil Booth  
        * decl2.c (c_language): Move to c-common.c.
        * decl2.c (c_language): Move to c-common.c.
        * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
        * lex.c (cxx_post_options, cxx_init_options): Use c-common.c
        functions.
        functions.
        (cxx_init): Update.
        (cxx_init): Update.
2001-11-26  Jason Merrill  
2001-11-26  Jason Merrill  
        * call.c (joust): Remove COND_EXPR hack.
        * call.c (joust): Remove COND_EXPR hack.
2001-11-25  Aldy Hernandez  
2001-11-25  Aldy Hernandez  
        * search.c (lookup_base_r): Declare bk in variable declaration
        * search.c (lookup_base_r): Declare bk in variable declaration
        space.
        space.
2001-11-25  Nathan Sidwell  
2001-11-25  Nathan Sidwell  
        PR g++/3145
        PR g++/3145
        * class.c (build_vbase_pointer): Remove.
        * class.c (build_vbase_pointer): Remove.
        (build_vbase_path): Remove.
        (build_vbase_path): Remove.
        (build_base_path): New function.
        (build_base_path): New function.
        * cp-tree.h (base_access, base_kind): New enumerations.
        * cp-tree.h (base_access, base_kind): New enumerations.
        (build_base_path): Declare.
        (build_base_path): Declare.
        (convert_pointer_to_real): Remove.
        (convert_pointer_to_real): Remove.
        (convert_pointer_to): Remove.
        (convert_pointer_to): Remove.
        (lookup_base): Declare.
        (lookup_base): Declare.
        (convert_pointer_to_vbase): Remove.
        (convert_pointer_to_vbase): Remove.
        * call.c (build_scoped_method_call): Use lookup_base &
        * call.c (build_scoped_method_call): Use lookup_base &
        build_base_path instead of convert_pointer_to_real,
        build_base_path instead of convert_pointer_to_real,
        get_base_distance & get_binfo.
        get_base_distance & get_binfo.
        (build_over_call): Likewise.
        (build_over_call): Likewise.
        * cvt.c (cp_convert_to_pointer): Likewise.
        * cvt.c (cp_convert_to_pointer): Likewise.
        (convert_to_pointer_force): Likewise.
        (convert_to_pointer_force): Likewise.
        (build_up_reference): Likewise.
        (build_up_reference): Likewise.
        (convert_pointer_to_real): Remove.
        (convert_pointer_to_real): Remove.
        (convert_pointer_to): Remove.
        (convert_pointer_to): Remove.
        * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
        * init.c (dfs_initialize_vtbl_ptrs): Use build_base_path
        instead of convert_pointer_to_vbase & build_vbase_path.
        instead of convert_pointer_to_vbase & build_vbase_path.
        (emit_base_init): Use build_base_path instead of
        (emit_base_init): Use build_base_path instead of
        convert_pointer_to_real.
        convert_pointer_to_real.
        (expand_virtual_init): Lose unrequired conversions.
        (expand_virtual_init): Lose unrequired conversions.
        (resolve_offset_ref): Use lookup_base and build_base_path
        (resolve_offset_ref): Use lookup_base and build_base_path
        instead of convert_pointer_to.
        instead of convert_pointer_to.
        * rtti.c (build_dynamic_cast_1): Use lookup_base &
        * rtti.c (build_dynamic_cast_1): Use lookup_base &
        build_base_path instead of get_base_distance & build_vbase_path.
        build_base_path instead of get_base_distance & build_vbase_path.
        * search.c (get_vbase_1): Remove.
        * search.c (get_vbase_1): Remove.
        (get_vbase): Remove.
        (get_vbase): Remove.
        (convert_pointer_to_vbase): Remove.
        (convert_pointer_to_vbase): Remove.
        (lookup_base_r): New function.
        (lookup_base_r): New function.
        (lookup_base): New function.
        (lookup_base): New function.
        * typeck.c (require_complete_type): Use lookup_base &
        * typeck.c (require_complete_type): Use lookup_base &
        build_base_path instead of convert_pointer_to.
        build_base_path instead of convert_pointer_to.
        (build_component_ref): Likewise.
        (build_component_ref): Likewise.
        (build_x_function_call): Likewise.
        (build_x_function_call): Likewise.
        (get_member_function_from_ptrfunc): Likewise.
        (get_member_function_from_ptrfunc): Likewise.
        (build_component_addr): Likewise.
        (build_component_addr): Likewise.
        * typeck2.c (build_scoped_ref): Likewise.
        * typeck2.c (build_scoped_ref): Likewise.
2001-11-22  Bryce McKinlay  
2001-11-22  Bryce McKinlay  
        * cp-tree.h (CP_TYPE_QUALS): Removed.
        * cp-tree.h (CP_TYPE_QUALS): Removed.
        * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
        * decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
        * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
        * cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
        LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
        LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
        * dump.c (cp_dump_tree): Use void* dump_info argument to match
        * dump.c (cp_dump_tree): Use void* dump_info argument to match
        lang-hooks prototype.
        lang-hooks prototype.
        * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
        * call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
        rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
        rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
        CP_TYPE_QUALS changed to cp_type_quals.
        CP_TYPE_QUALS changed to cp_type_quals.
        * Make-lang.in: References to c-dump.h changed to tree-dump.h.
        * Make-lang.in: References to c-dump.h changed to tree-dump.h.
        (CXX_C_OBJS): Remove c-dump.o.
        (CXX_C_OBJS): Remove c-dump.o.
2001-11-21  Mark Mitchell  
2001-11-21  Mark Mitchell  
        PR c++/3637
        PR c++/3637
        * pt.c (lookup_template_class): Ensure that all specializations
        * pt.c (lookup_template_class): Ensure that all specializations
        are registered on the list corresponding to the most general
        are registered on the list corresponding to the most general
        template.
        template.
2001-11-20  Mark Mitchell  
2001-11-20  Mark Mitchell  
        * call.c (non_reference): Add documentation.
        * call.c (non_reference): Add documentation.
        (convert_class_to_reference): Do not strip reference types
        (convert_class_to_reference): Do not strip reference types
        from conversion operators.
        from conversion operators.
        (maybe_handle_ref_bind): Simplify.
        (maybe_handle_ref_bind): Simplify.
        (compare_ics): Correct handling of references.
        (compare_ics): Correct handling of references.
2001-11-19  John Wilkinson 
2001-11-19  John Wilkinson 
        * dump.c (dump_op): New function.
        * dump.c (dump_op): New function.
        (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
        (cp_dump_tree): Dump CLASSTYPE_TEMPLATE_SPECIALIZATION.  Use
        dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
        dump_op.  Dump DECL_MUTABLE, access and staticness for VAR_DECLs.
        DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
        DECL_PURE_VIRTUAL_P, DECL_VIRTUAL_P,
2001-11-19  Mark Mitchell  
2001-11-19  Mark Mitchell  
        PR4629
        PR4629
        * semantics.c (finish_sizeof): Make sure that expression created
        * semantics.c (finish_sizeof): Make sure that expression created
        while processing a template do not have a type.
        while processing a template do not have a type.
        (finish_alignof): Likewise.
        (finish_alignof): Likewise.
        * typeck.c (c_sizeof): Likewise.
        * typeck.c (c_sizeof): Likewise.
        (expr_sizeof): Likewise.
        (expr_sizeof): Likewise.
2001-11-18  Neil Booth  
2001-11-18  Neil Booth  
        * lex.c (cxx_finish): Call c_common_finish.
        * lex.c (cxx_finish): Call c_common_finish.
        (finish_parse): Remove.
        (finish_parse): Remove.
2001-11-17  Kriang Lerdsuwanakij  
2001-11-17  Kriang Lerdsuwanakij  
        * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
        * decl.c (create_array_type_for_decl): Check if NAME is NULL_TREE
        when displaying error message about missing array bounds.
        when displaying error message about missing array bounds.
2001-11-17  Kriang Lerdsuwanakij  
2001-11-17  Kriang Lerdsuwanakij  
        * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
        * mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
        CONST_CAST_EXPR.
        CONST_CAST_EXPR.
        * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
        * operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
2001-11-16  Neil Booth  
2001-11-16  Neil Booth  
        * cp-tree.h (print_class_statistics): Restore.
        * cp-tree.h (print_class_statistics): Restore.
2001-11-15  Jason Merrill  
2001-11-15  Jason Merrill  
        * method.c (use_thunk): Don't emit debugging information for thunks.
        * method.c (use_thunk): Don't emit debugging information for thunks.
        * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
        * parse.y: Add ... IDENTIFIER SCOPE and ... PTYPENAME SCOPE expansions.
        * decl.c (make_typename_type): Handle getting a class template.
        * decl.c (make_typename_type): Handle getting a class template.
        * search.c (lookup_field_r): A class template is good enough for
        * search.c (lookup_field_r): A class template is good enough for
        want_type.
        want_type.
        * call.c (convert_like_real): Only use cp_convert for the bad part.
        * call.c (convert_like_real): Only use cp_convert for the bad part.
        (standard_conversion): Also allow bad int->enum.
        (standard_conversion): Also allow bad int->enum.
        * typeck.c (ptr_reasonably_similar): Also allow functions to
        * typeck.c (ptr_reasonably_similar): Also allow functions to
        interconvert.  Pointers to same-size integers are reasonably
        interconvert.  Pointers to same-size integers are reasonably
        similar.
        similar.
        * cvt.c (convert_to_void): If we build a new COND_EXPR, always
        * cvt.c (convert_to_void): If we build a new COND_EXPR, always
        give it void type.
        give it void type.
2001-11-15  Nathan Sidwell  
2001-11-15  Nathan Sidwell  
        PR g++/3154
        PR g++/3154
        * init.c (sort_base_init): Remove unreachable code.
        * init.c (sort_base_init): Remove unreachable code.
        (expand_member_init): Adjust comment to reflect reality. Simplify
        (expand_member_init): Adjust comment to reflect reality. Simplify
        and remove unreachable code.
        and remove unreachable code.
2001-11-15  Neil Booth  
2001-11-15  Neil Booth  
        * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
        * cp-tree.h (init_reswords, cxx_init_decl_processing): New.
        (cxx_init): Update prototype.
        (cxx_init): Update prototype.
        * decl.c (init_decl_processing): Rename.  Move null node init
        * decl.c (init_decl_processing): Rename.  Move null node init
        to its creation time.
        to its creation time.
        * lex.c (cxx_init_options): Update.
        * lex.c (cxx_init_options): Update.
        (cxx_init): Combine with old init_parse; also call
        (cxx_init): Combine with old init_parse; also call
        cxx_init_decl_processing.
        cxx_init_decl_processing.
2001-11-14  Richard Sandiford  
2001-11-14  Richard Sandiford  
        * decl.c (check_initializer): Try to complete the type of an
        * decl.c (check_initializer): Try to complete the type of an
        array element before checking whether it's complete.  Don't
        array element before checking whether it's complete.  Don't
        complain about arrays with complete element types but an
        complain about arrays with complete element types but an
        unknown size.
        unknown size.
        (cp_finish_decl): Build the hierarchical constructor before
        (cp_finish_decl): Build the hierarchical constructor before
        calling maybe_deduce_size_from_array_init.
        calling maybe_deduce_size_from_array_init.
2001-11-14  Joseph S. Myers  
2001-11-14  Joseph S. Myers  
        * Make-lang.in: Change all uses of $(manext) to $(man1ext).
        * Make-lang.in: Change all uses of $(manext) to $(man1ext).
2001-11-13  Nathan Sidwell  
2001-11-13  Nathan Sidwell  
        PR g++/4206
        PR g++/4206
        * parse.y (already_scoped_stmt): Remove.
        * parse.y (already_scoped_stmt): Remove.
        (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
        (simple_stmt, WHILE & FOR): Use implicitly_scoped_stmt.
2001-11-12  H.J. Lu 
2001-11-12  H.J. Lu 
        * cvt.c (ocp_convert): Don't warn the address of a weak
        * cvt.c (ocp_convert): Don't warn the address of a weak
        function is always `true'.
        function is always `true'.
2001-11-09  Neil Booth  
2001-11-09  Neil Booth  
        * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
        * cp-lang.c (LANG_HOOKS_PRINT_DECL, LANG_HOOKS_PRINT_TYPE,
        LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
        LANG_HOOKS_PRINT_STATISTICS, LANG_HOOKS_PRINT_XNODE,
        LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
        LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_SET_YYDEBUG): Override.
        * cp-tree.h (print_class_statistics): Remove.
        * cp-tree.h (print_class_statistics): Remove.
        (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
        (cxx_print_statistics, cxx_print_xnode, cxx_print_decl, cxx_print_type,
        cxx_print_identifier, cxx_set_yydebug): New.
        cxx_print_identifier, cxx_set_yydebug): New.
        * lex.c (set_yydebug): Rename c_set_yydebug.
        * lex.c (set_yydebug): Rename c_set_yydebug.
        * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
        * ptree.c (print_lang_decl, print_lang_type, print_lang_identifier,
        lang_print_xnode): Rename.
        lang_print_xnode): Rename.
        * tree.c (print_lang_statistics): Rename.
        * tree.c (print_lang_statistics): Rename.
2001-11-09  Kaveh R. Ghazi  
2001-11-09  Kaveh R. Ghazi  
        * class.c (dump_array): Fix format specifier warning.
        * class.c (dump_array): Fix format specifier warning.
2001-11-09  Neil Booth  
2001-11-09  Neil Booth  
        * cp-lang.c (LANG_HOOKS_NAME): Override.
        * cp-lang.c (LANG_HOOKS_NAME): Override.
        (struct lang_hooks): Constify.
        (struct lang_hooks): Constify.
        * lex.c (cxx_init_options): Update.
        * lex.c (cxx_init_options): Update.
        (lang_identify): Remove.
        (lang_identify): Remove.
        * parse.y (language_string): Remove.
        * parse.y (language_string): Remove.
2001-11-08  Andreas Franck  
2001-11-08  Andreas Franck  
        * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
        * Make-lang.in (CXX_INSTALL_NAME, GXX_CROSS_NAME,
        DEMANGLER_CROSS_NAME): Handle program_transform_name the way
        DEMANGLER_CROSS_NAME): Handle program_transform_name the way
        suggested by autoconf.
        suggested by autoconf.
        (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
        (GXX_TARGET_INSTALL_NAME, CXX_TARGET_INSTALL_NAME): Define.
        (c++.install-common): Use the transformed target alias names.
        (c++.install-common): Use the transformed target alias names.
2001-11-06  Neil Booth  
2001-11-06  Neil Booth  
        * Make-lang.in: Update.
        * Make-lang.in: Update.
        * cp-lang.c: Include langhooks-def.h.
        * cp-lang.c: Include langhooks-def.h.
2001-11-04  Kriang Lerdsuwanakij  
2001-11-04  Kriang Lerdsuwanakij  
        * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
        * pt.c (tsubst_copy): Call tsubst for TYPEOF_EXPR.
2001-11-03  Kaveh R. Ghazi  
2001-11-03  Kaveh R. Ghazi  
        * lex.c (copy_lang_type): Add static prototype.
        * lex.c (copy_lang_type): Add static prototype.
2001-11-02  Kriang Lerdsuwanakij  
2001-11-02  Kriang Lerdsuwanakij  
        * pt.c (unify): Handle SCOPE_REF.
        * pt.c (unify): Handle SCOPE_REF.
2001-11-01  Jakub Jelinek  
2001-11-01  Jakub Jelinek  
        * tree.c (cp_copy_res_decl_for_inlining): Adjust
        * tree.c (cp_copy_res_decl_for_inlining): Adjust
        DECL_ABSTRACT_ORIGIN for the return variable.
        DECL_ABSTRACT_ORIGIN for the return variable.
2001-10-31  Zack Weinberg  
2001-10-31  Zack Weinberg  
        *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
        *  Make-lang.in: Replace $(INTL_TARGETS) with po-generated.
2001-10-28  Joseph S. Myers  
2001-10-28  Joseph S. Myers  
        * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
        * ChangeLog.1, ChangeLog.2, ChangeLog, class.c, decl2.c, search.c,
        semantics.c, spew.c: Fix spelling errors.
        semantics.c, spew.c: Fix spelling errors.
2001-10-27  Kriang Lerdsuwanakij  
2001-10-27  Kriang Lerdsuwanakij  
        * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
        * decl2.c (validate_nonmember_using_decl): Handle NAMESPACE_DECL.
2001-10-25  Zack Weinberg  
2001-10-25  Zack Weinberg  
        * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
        * cp-lang.c: Redefine LANG_HOOKS_CLEAR_BINDING_STACK to
        pop_everything.
        pop_everything.
2001-10-23  Richard Kenner  
2001-10-23  Richard Kenner  
        * cp-lang.c (cxx_get_alias_set): New function.
        * cp-lang.c (cxx_get_alias_set): New function.
        Point LANG_HOOKS_GET_ALIAS_SET to it.
        Point LANG_HOOKS_GET_ALIAS_SET to it.
2001-10-23  Kriang Lerdsuwanakij  
2001-10-23  Kriang Lerdsuwanakij  
        * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
        * cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
        * cp-tree.h (make_unbound_class_template): Prototype new function.
        * cp-tree.h (make_unbound_class_template): Prototype new function.
        * decl.c (make_unbound_class_template): New function.
        * decl.c (make_unbound_class_template): New function.
        * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
        * decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
        * error.c (dump_type): Likewise.
        * error.c (dump_type): Likewise.
        * mangle.c (write_type): Likewise.
        * mangle.c (write_type): Likewise.
        * parse.y (template_parm): Likewise.
        * parse.y (template_parm): Likewise.
        (template_argument): Use make_unbound_class_template.
        (template_argument): Use make_unbound_class_template.
        * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
        * pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
        (tsubst): Likewise.
        (tsubst): Likewise.
        (tsubst_copy): Likewise.
        (tsubst_copy): Likewise.
        (unify): Likewise.
        (unify): Likewise.
        * tree.c (walk_tree): Likewise.
        * tree.c (walk_tree): Likewise.
        * typeck.c (comptypes): Likewise.
        * typeck.c (comptypes): Likewise.
2001-10-21  Kaveh R. Ghazi  
2001-10-21  Kaveh R. Ghazi  
        * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
        * xref.c (GNU_xref_member): Use safe-ctype macros and/or fold
        extra calls into fewer ones.
        extra calls into fewer ones.
2001-10-18  Alexandre Oliva  
2001-10-18  Alexandre Oliva  
        * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
        * decl.c (duplicate_decls): Propagate DECL_UNINLINABLE.
        Warn when merging inline with attribute noinline.
        Warn when merging inline with attribute noinline.
        (start_decl, start_function): Warn if inline and attribute
        (start_decl, start_function): Warn if inline and attribute
        noinline appear in the same declaration.
        noinline appear in the same declaration.
2001-10-16  H.J. Lu 
2001-10-16  H.J. Lu 
        * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
        * cp-tree.h (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): Defined
        for tree checking disabled.
        for tree checking disabled.
2001-10-16  Hans-Peter Nilsson  
2001-10-16  Hans-Peter Nilsson  
        * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
        * cp-tree.h (VFIELD_NAME_FORMAT) [NO_DOLLAR_IN_LABEL &&
        NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
        NO_DOT_IN_LABEL]: Adjust to match VFIELD_NAME.
2001-10-15  Richard Sandiford  
2001-10-15  Richard Sandiford  
        * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
        * pt.c (UNIFY_ALLOW_MAX_CORRECTION): Define.
        (unify): Only handle MINUS_EXPR specially if the above flag is set
        (unify): Only handle MINUS_EXPR specially if the above flag is set
        and the subtracted constant is 1.  Clear the flag on recursive calls.
        and the subtracted constant is 1.  Clear the flag on recursive calls.
        Set it when unifying the maximum value in an INTEGER_TYPE's range.
        Set it when unifying the maximum value in an INTEGER_TYPE's range.
2001-10-15  Richard Sandiford  
2001-10-15  Richard Sandiford  
        * decl.c (bad_specifiers): Don't allow exception specifications
        * decl.c (bad_specifiers): Don't allow exception specifications
        on any typedefs.
        on any typedefs.
2001-10-14  Neil Booth  
2001-10-14  Neil Booth  
        * cp/lex.c (init_cp_pragma): Similarly.
        * cp/lex.c (init_cp_pragma): Similarly.
2001-10-13  Kriang Lerdsuwanakij  
2001-10-13  Kriang Lerdsuwanakij  
        * pt.c (lookup_template_class): Build complete template arguments
        * pt.c (lookup_template_class): Build complete template arguments
        for BOUND_TEMPLATE_TEMPLATE_PARM.
        for BOUND_TEMPLATE_TEMPLATE_PARM.
2001-10-12  Kriang Lerdsuwanakij  
2001-10-12  Kriang Lerdsuwanakij  
        * cp-tree.h (TYPE_BINFO): Update comment.
        * cp-tree.h (TYPE_BINFO): Update comment.
        (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
        (BOUND_TEMPLATE_TEMPLATE_PARM_TYPE_CHECK): New macro.
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Use template_info.
        (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
        (TYPENAME_TYPE_FULLNAME): Use TYPE_FIELDS.
        (copy_type): Prototype new function.
        (copy_type): Prototype new function.
        * lex.c (copy_lang_decl): Gather tree node statistics.
        * lex.c (copy_lang_decl): Gather tree node statistics.
        (copy_lang_type): New function.
        (copy_lang_type): New function.
        (copy_type): Likewise.
        (copy_type): Likewise.
        (cp_make_lang_type): Create lang_type for
        (cp_make_lang_type): Create lang_type for
        BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
        BOUND_TEMPLATE_TEMPLATE_PARM.  Set TYPE_BINFO for TYPENAME_TYPE
        and BOUND_TEMPLATE_TEMPLATE_PARM.
        and BOUND_TEMPLATE_TEMPLATE_PARM.
        * pt.c (tsubst): Use copy_type instead of copy_node.
        * pt.c (tsubst): Use copy_type instead of copy_node.
        * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
        * search.c (lookup_field_1): Ignore TYPENAME_TYPE.
2001-10-12  Kriang Lerdsuwanakij  
2001-10-12  Kriang Lerdsuwanakij  
        * pt.c (determine_specialization): Ignore functions without
        * pt.c (determine_specialization): Ignore functions without
        DECL_TEMPLATE_INFO.
        DECL_TEMPLATE_INFO.
2001-10-12  Nathan Sidwell  
2001-10-12  Nathan Sidwell  
        PR g++/4476
        PR g++/4476
        * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
        * typeck2.c (abstract_virtuals_error): Ignore incomplete classes.
2001-10-11  Jason Merrill  
2001-10-11  Jason Merrill  
        * typeck2.c (store_init_value): Don't re-digest a bracketed
        * typeck2.c (store_init_value): Don't re-digest a bracketed
        initializer.
        initializer.
        * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
        * class.c (finish_struct_anon): Use TYPE_ANONYMOUS_P instead of
        ANON_AGGR_TYPE_P.
        ANON_AGGR_TYPE_P.
2001-10-11  Richard Henderson  
2001-10-11  Richard Henderson  
        * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
        * class.c (build_vtable_entry_ref): Create a VTABLE_REF instead
        of an asm statement.
        of an asm statement.
        (build_vtbl_ref_1): Split out from build_vtbl_ref.
        (build_vtbl_ref_1): Split out from build_vtbl_ref.
        (build_vfn_ref): Use it to handle vtable descriptors before
        (build_vfn_ref): Use it to handle vtable descriptors before
        calling build_vtable_entry_ref.
        calling build_vtable_entry_ref.
        * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
        * decl2.c (output_vtable_inherit): Use assemble_vtable_inherit.
2001-10-10  Richard Henderson  
2001-10-10  Richard Henderson  
        * parse.y (asm_operand): Allow named operands.
        * parse.y (asm_operand): Allow named operands.
        * semantics.c (finish_asm_stmt): Tweek for changed location
        * semantics.c (finish_asm_stmt): Tweek for changed location
        of the operand constraint.
        of the operand constraint.
2001-10-09  Jason Merrill  
2001-10-09  Jason Merrill  
        * call.c (standard_conversion): Add bad conversion between
        * call.c (standard_conversion): Add bad conversion between
        integers and pointers.
        integers and pointers.
        (convert_like_real): Don't use convert_for_initialization for bad
        (convert_like_real): Don't use convert_for_initialization for bad
        conversions; complain here and use cp_convert.
        conversions; complain here and use cp_convert.
        (build_over_call): Don't handle bad conversions specially.
        (build_over_call): Don't handle bad conversions specially.
        (perform_implicit_conversion): Allow bad conversions.
        (perform_implicit_conversion): Allow bad conversions.
        (can_convert_arg_bad): New fn.
        (can_convert_arg_bad): New fn.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * typeck.c (convert_for_assignment): Use it.
        * typeck.c (convert_for_assignment): Use it.
        (ptr_reasonably_similar): Any target type is similar to void.
        (ptr_reasonably_similar): Any target type is similar to void.
2001-10-08  Alexandre Oliva  
2001-10-08  Alexandre Oliva  
        * Make-lang.in (CXX_OBJS): Added cp-lang.o.
        * Make-lang.in (CXX_OBJS): Added cp-lang.o.
        (cp/cp-lang.o): New rule.
        (cp/cp-lang.o): New rule.
        * cp-tree.h: Declare hooks.
        * cp-tree.h: Declare hooks.
        * tree.c: Make hooks non-static.
        * tree.c: Make hooks non-static.
        (init_tree): Don't initialize hooks here.
        (init_tree): Don't initialize hooks here.
        * lex.c: Likewise.  Move definition of lang_hooks to...
        * lex.c: Likewise.  Move definition of lang_hooks to...
        * cp-lang.c: ... new file.
        * cp-lang.c: ... new file.
2001-10-08  Richard Henderson  
2001-10-08  Richard Henderson  
        * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
        * cp-tree.h (struct lang_decl_flags): Remove declared_inline.
        (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
        (DECL_DECLARED_INLINE_P): Use the bit in struct c_lang_decl.
2001-10-07  Kaveh R. Ghazi  
2001-10-07  Kaveh R. Ghazi  
        * class.c (build_vtable_entry_ref): Const-ify.
        * class.c (build_vtable_entry_ref): Const-ify.
        * decl.c (predefined_identifier,
        * decl.c (predefined_identifier,
        initialize_predefined_identifiers): Likewise.
        initialize_predefined_identifiers): Likewise.
        * init.c (build_new_1): Likewise.
        * init.c (build_new_1): Likewise.
        * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
        * lex.c (cplus_tree_code_type, cplus_tree_code_length, resword):
        Likewise.
        Likewise.
2001-10-05  Alexandre Oliva  
2001-10-05  Alexandre Oliva  
        * optimize.c (struct inline_data): Moved to ../tree-inline.c.
        * optimize.c (struct inline_data): Moved to ../tree-inline.c.
        (INSNS_PER_STMT): Likewise.
        (INSNS_PER_STMT): Likewise.
        (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
        (remap_decl, remap_block, copy_scopy_stmt, copy_body_r): Likewise.
        (copy_body, initialize_inlined_parameters): Likewise.
        (copy_body, initialize_inlined_parameters): Likewise.
        (declare_return_variable, inlinable_function_p): Likewise.
        (declare_return_variable, inlinable_function_p): Likewise.
        (expand_call_inline, expand_calls_inline): Likewise.
        (expand_call_inline, expand_calls_inline): Likewise.
        (optimize_inline_calls, clone_body): Likewise.
        (optimize_inline_calls, clone_body): Likewise.
        * tree.c (walk_tree): Moved to ../tree-inline.c.
        * tree.c (walk_tree): Moved to ../tree-inline.c.
        (walk_tree_without_duplicates): Likewise.
        (walk_tree_without_duplicates): Likewise.
        (copy_tree_r, remap_save_expr): Likewise.
        (copy_tree_r, remap_save_expr): Likewise.
2001-10-04  Alexandre Oliva  
2001-10-04  Alexandre Oliva  
        * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
        * Make-lang.in (cp/decl.o, cp/tree.o): Depend on tree-inline.h.
        (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
        (cp/pt.o, cp/semantics.o, cp/optimize.o): Likewise.
        * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
        * cp-tree.h (lang_decl): Moved inlined_fns to tree_decl.
        (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
        (TREE_READONLY_DECL_P, DECL_INLINED_FNS): Moved to ../tree.h.
        (flag_inline_trees): Moved declaration to ../tree-inline.h.
        (flag_inline_trees): Moved declaration to ../tree-inline.h.
        (walk_tree): Moved declaration to ../tree-inline.h.
        (walk_tree): Moved declaration to ../tree-inline.h.
        (walk_tree_without_duplicates, copy_tree_r): Likewise.
        (walk_tree_without_duplicates, copy_tree_r): Likewise.
        (remap_save_expr): Likewise.
        (remap_save_expr): Likewise.
        * decl.c: Include tree-inline.h.
        * decl.c: Include tree-inline.h.
        (lang_mark_tree): Don't mark inlined_fns.
        (lang_mark_tree): Don't mark inlined_fns.
        * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
        * decl2.c (flag_inline_trees): Moved defn to ../tree-inline.c.
        * optimize.c: Include tree-inline.h.
        * optimize.c: Include tree-inline.h.
        (optimize_inline_calls): Move declaration to ../tree.h, as
        (optimize_inline_calls): Move declaration to ../tree.h, as
        non-static.
        non-static.
        (remap_decl): Use language-independent constructs and hooks.
        (remap_decl): Use language-independent constructs and hooks.
        (remap_block, copy_body_r, declare_return_variable): Likewise.
        (remap_block, copy_body_r, declare_return_variable): Likewise.
        (inlinable_function_p): Likewise.  Don't test for
        (inlinable_function_p): Likewise.  Don't test for
        DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
        DECL_LANG_SPECIFIC before DECL_INLINED_FNS as inlined_fns is
        no longer language-specific.
        no longer language-specific.
        (optimize_inline_calls): Likewise.  Make it non-static.  Moved
        (optimize_inline_calls): Likewise.  Make it non-static.  Moved
        call of dump_function to...
        call of dump_function to...
        (optimize_function): Here...
        (optimize_function): Here...
        (clone_body): New function, extracted from...
        (clone_body): New function, extracted from...
        (maybe_clone_body): ... here.  Build decl_map locally and pass
        (maybe_clone_body): ... here.  Build decl_map locally and pass
        it on to clone_body.
        it on to clone_body.
        * pt.c, semantics.c: Include tree-inline.h.
        * pt.c, semantics.c: Include tree-inline.h.
        * tree.c: Likewise.
        * tree.c: Likewise.
        (cp_walk_subtrees): New language-specific hook for tree inlining.
        (cp_walk_subtrees): New language-specific hook for tree inlining.
        (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
        (cp_cannot_inline_tree_fn, cp_add_pending_fn_decls,
        cp_is_overload_p, cp_auto_var_in_fn_p,
        cp_is_overload_p, cp_auto_var_in_fn_p,
        cp_copy_res_decl_for_inlining): Likewise.
        cp_copy_res_decl_for_inlining): Likewise.
        (walk_tree): Move language-specific constructs into...
        (walk_tree): Move language-specific constructs into...
        (cp_walk_subtrees): this new function.
        (cp_walk_subtrees): this new function.
        (copy_tree_r): Use language-independent constructs and hooks.
        (copy_tree_r): Use language-independent constructs and hooks.
        (init_tree): Initialize tree inlining hooks.
        (init_tree): Initialize tree inlining hooks.
        (remap_save_expr): Adjust prototype so that the declaration
        (remap_save_expr): Adjust prototype so that the declaration
        does not require the definition of splay_tree.
        does not require the definition of splay_tree.
2001-10-03  John David Anglin  
2001-10-03  John David Anglin  
        * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
        * rtti.c (get_tinfo_decl): Call typeinfo_in_lib_p with the type used
        to build the declaration instead of the declaration itself.
        to build the declaration instead of the declaration itself.
2001-10-02  Jason Merrill  
2001-10-02  Jason Merrill  
        * decl2.c (cxx_decode_option): Add 'else'.
        * decl2.c (cxx_decode_option): Add 'else'.
        * spew.c (end_input): No longer static.
        * spew.c (end_input): No longer static.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
        * parse.y (datadef): Add "error END_OF_SAVED_INPUT" expansion.
2001-10-02  Joseph S. Myers  
2001-10-02  Joseph S. Myers  
        * call.c (build_over_call), typeck.c (build_function_call_real):
        * call.c (build_over_call), typeck.c (build_function_call_real):
        Pass type attributes to check_function_format rather than name or
        Pass type attributes to check_function_format rather than name or
        assembler name.  Don't require there to be a name or assembler
        assembler name.  Don't require there to be a name or assembler
        name to check formats.
        name to check formats.
2001-10-02  Joseph S. Myers  
2001-10-02  Joseph S. Myers  
        * decl.c (init_decl_processing): Don't call
        * decl.c (init_decl_processing): Don't call
        init_function_format_info.  Initialize lang_attribute_table
        init_function_format_info.  Initialize lang_attribute_table
        earlier.
        earlier.
        (builtin_function): Call decl_attributes.
        (builtin_function): Call decl_attributes.
        (insert_default_attributes): New.
        (insert_default_attributes): New.
2001-10-01  Jason Merrill  
2001-10-01  Jason Merrill  
        * decl.c (grokdeclarator): Copy array typedef handling from C
        * decl.c (grokdeclarator): Copy array typedef handling from C
        frontend.
        frontend.
        * decl.c (grokdeclarator): Copy too-large array handling from C
        * decl.c (grokdeclarator): Copy too-large array handling from C
        frontend.
        frontend.
2001-09-29  Alexandre Oliva  
2001-09-29  Alexandre Oliva  
        * config-lang.in (target_libs): Added target-gperf, so that we
        * config-lang.in (target_libs): Added target-gperf, so that we
        don't try to build it if C++ is disabled.
        don't try to build it if C++ is disabled.
2001-09-23  Zack Weinberg  
2001-09-23  Zack Weinberg  
        * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
        * Make-lang.in (CXX_OBJS): Take out cp/errfn.o.
        (cp/errfn.o): Delete rule.
        (cp/errfn.o): Delete rule.
        (cp/error.o): Depend on flags.h.
        (cp/error.o): Depend on flags.h.
        * errfn.c: Delete file.
        * errfn.c: Delete file.
        * cp-tree.h: Declare warn_deprecated.  Remove definitions of
        * cp-tree.h: Declare warn_deprecated.  Remove definitions of
        TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
        TFF_NAMESPACE_SCOPE, TFF_CLASS_SCOPE, TFF_CHASE_NAMESPACE_ALIAS,
        and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
        and TFF_TEMPLATE_DEFAULT_ARGUMENTS. #define cp_error, cp_warning,
        cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
        cp_pedwarn, and cp_compiler_error to error, warning, pedwarn, and
        internal_error respectively.  Make cp_deprecated into a macro.
        internal_error respectively.  Make cp_deprecated into a macro.
        Don't define cp_printer typedef or declare cp_printers.
        Don't define cp_printer typedef or declare cp_printers.
        * error.c: Include flags.h.
        * error.c: Include flags.h.
        Delete: struct tree_formatting_info, print_function_argument_list,
        Delete: struct tree_formatting_info, print_function_argument_list,
        print_declaration, print_expression, print_function_declaration,
        print_declaration, print_expression, print_function_declaration,
        print_function_parameter, print_type_id, print_cv_qualifier_seq,
        print_function_parameter, print_type_id, print_cv_qualifier_seq,
        print_type_specifier_seq, print_simple_type_specifier,
        print_type_specifier_seq, print_simple_type_specifier,
        print_elaborated_type_specifier, print_rest_of_abstract_declarator,
        print_elaborated_type_specifier, print_rest_of_abstract_declarator,
        print_parameter_declaration_clause, print_exception_specification,
        print_parameter_declaration_clause, print_exception_specification,
        print_nested_name_specifier, and definition of cp_printers.
        print_nested_name_specifier, and definition of cp_printers.
        (locate_error): New function.
        (locate_error): New function.
        (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
        (cp_error_at, cp_warning_at, cp_pedwarn_at): Moved here and
        rewritten in terms of locate_error and diagnostic.c.
        rewritten in terms of locate_error and diagnostic.c.
        (cp_tree_printer): Rename cp_printer; wire up to *_to_string
        (cp_tree_printer): Rename cp_printer; wire up to *_to_string
        instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
        instead of deleted print_* routines.  Handle %C, %L, %O, %Q also.
        (init_error): Adjust to match.
        (init_error): Adjust to match.
2001-09-22  Richard Kenner  
2001-09-22  Richard Kenner  
        * Make-lang.in (CXX_C_OBJS): Add attribs.o.
        * Make-lang.in (CXX_C_OBJS): Add attribs.o.
2001-09-21  Richard Henderson  
2001-09-21  Richard Henderson  
        * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
        * class.c (set_vindex): Mind TARGET_VTABLE_USES_DESCRIPTORS.
        (build_vtbl_initializer): Likewise.
        (build_vtbl_initializer): Likewise.
        (build_vfn_ref): New.
        (build_vfn_ref): New.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * call.c (build_over_call): Use it.
        * call.c (build_over_call): Use it.
        * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
        * decl2.c (mark_vtable_entries): Mark FDESC_EXPR.
        * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
        * typeck.c (get_member_function_from_ptrfunc): Mind descriptors.
2001-09-21  J"orn Rennecke 
2001-09-21  J"orn Rennecke 
        * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
        * decl.c (grokdeclarator): Use C syntax for attr_flags declaration.
2001-09-21  Joseph S. Myers  
2001-09-21  Joseph S. Myers  
        Table-driven attributes.
        Table-driven attributes.
        * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
        * decl.c: Rename DECL_MACHINE_ATTRIBUTES to DECL_ATTRIBUTES.
        * decl2.c (cplus_decl_attributes): Only take one attributes
        * decl2.c (cplus_decl_attributes): Only take one attributes
        parameter.
        parameter.
        * cp-tree.c (cplus_decl_attributes): Update prototype.
        * cp-tree.c (cplus_decl_attributes): Update prototype.
        * class.c (finish_struct), decl.c (start_decl, start_function),
        * class.c (finish_struct), decl.c (start_decl, start_function),
        decl2.c (grokfield), friend.c (do_friend), parse.y
        decl2.c (grokfield), friend.c (do_friend), parse.y
        (parse_bitfield): Update calls to cplus_decl_attributes.
        (parse_bitfield): Update calls to cplus_decl_attributes.
        * decl.c (grokdeclarator): Take a pointer to a single ordinary
        * decl.c (grokdeclarator): Take a pointer to a single ordinary
        attribute list.
        attribute list.
        * decl.h (grokdeclarator): Update prototype.
        * decl.h (grokdeclarator): Update prototype.
        * decl2.c (grokfield): Take a single ordinary attribute list.
        * decl2.c (grokfield): Take a single ordinary attribute list.
        * friend.c (do_friend): Likewise.
        * friend.c (do_friend): Likewise.
        * decl.c (shadow_tag, groktypename, start_decl,
        * decl.c (shadow_tag, groktypename, start_decl,
        start_handler_parms, grokdeclarator, grokparms, start_function,
        start_handler_parms, grokdeclarator, grokparms, start_function,
        start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
        start_method), decl2.c (grokfield, grokbitfield, grokoptypename),
        parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
        parse.y (parse_field, parse_bitfield, component_decl_1), pt.c
        (process_template_parm, do_decl_instantiation): Pass single
        (process_template_parm, do_decl_instantiation): Pass single
        ordinary attribute lists around.
        ordinary attribute lists around.
        * decl.c (grokdeclarator): Correct handling of nested attributes.
        * decl.c (grokdeclarator): Correct handling of nested attributes.
        Revert the patch
        Revert the patch
        1998-10-18  Jason Merrill  
        1998-10-18  Jason Merrill  
                * decl.c (grokdeclarator): Embedded attrs bind to the right,
                * decl.c (grokdeclarator): Embedded attrs bind to the right,
                not the left.
                not the left.
        .
        .
        * cp-tree.h (cp_valid_lang_attribute): Remove declaration
        * cp-tree.h (cp_valid_lang_attribute): Remove declaration
        (cp_attribute_table): Declare.
        (cp_attribute_table): Declare.
        * decl.c (valid_lang_attribute): Don't define.
        * decl.c (valid_lang_attribute): Don't define.
        (lang_attribute_table): Define.
        (lang_attribute_table): Define.
        (init_decl_processing): Initialize lang_attribute_table instead of
        (init_decl_processing): Initialize lang_attribute_table instead of
        valid_lang_attribute.
        valid_lang_attribute.
        * tree.c (cp_valid_lang_attribute): Remove.
        * tree.c (cp_valid_lang_attribute): Remove.
        (handle_java_interface_attribute, handle_com_interface_attribute,
        (handle_java_interface_attribute, handle_com_interface_attribute,
        handle_init_priority_attribute): New functions.
        handle_init_priority_attribute): New functions.
        (cp_attribute_table): New array.
        (cp_attribute_table): New array.
        * decl2.c (import_export_class): Don't use
        * decl2.c (import_export_class): Don't use
        targetm.valid_type_attribute.
        targetm.valid_type_attribute.
2001-09-15  Gabriel Dos Reis  
2001-09-15  Gabriel Dos Reis  
        * Make-lang.in (cp/error.o): Depend on real.h
        * Make-lang.in (cp/error.o): Depend on real.h
        * error.c: #include "real.h"
        * error.c: #include "real.h"
2001-09-15  Kaveh R. Ghazi  
2001-09-15  Kaveh R. Ghazi  
        * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
        * mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
        xmalloc/strcpy/strcat.
        xmalloc/strcpy/strcat.
2001-09-13  Kaveh R. Ghazi  
2001-09-13  Kaveh R. Ghazi  
        * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
        * decl.c (warn_extern_redeclared_static, cp_make_fname_decl):
        Const-ification.
        Const-ification.
        * pt.c (tsubst_decl): Likewise.
        * pt.c (tsubst_decl): Likewise.
2001-09-12  Kaveh R. Ghazi  
2001-09-12  Kaveh R. Ghazi  
        * decl2.c (lang_f_options): Const-ification.
        * decl2.c (lang_f_options): Const-ification.
        * lex.c (cplus_tree_code_name): Likewise.
        * lex.c (cplus_tree_code_name): Likewise.
        * spew.c (yyerror): Likewise.
        * spew.c (yyerror): Likewise.
2001-09-06  Nathan Sidwell  
2001-09-06  Nathan Sidwell  
        PR c++/3986
        PR c++/3986
        * class.c (force_canonical_binfo_r): Check & move an indirect
        * class.c (force_canonical_binfo_r): Check & move an indirect
        primary base first.
        primary base first.
        (force_canonical_binfo): Check that it's not already
        (force_canonical_binfo): Check that it's not already
        canonical.
        canonical.
        (mark_primary_virtual_base): Remove BINFO parameter.
        (mark_primary_virtual_base): Remove BINFO parameter.
        (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
        (mark_primary_bases): Adjust, set BINFO_LOST_PRIMARY_P here.
2001-09-06  Nathan Sidwell  
2001-09-06  Nathan Sidwell  
        Remove TYPE_NONCOPIED_PARTS.
        Remove TYPE_NONCOPIED_PARTS.
        * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
        * cp-tree.h (CLASSTYPE_INLINE_FRIENDS): Map onto
        CLASSTYPE_PURE_VIRTUALS.
        CLASSTYPE_PURE_VIRTUALS.
        (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
        (TYPE_RAISES_EXCEPTIONS): Map onto TYPE_BINFO.
        * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
        * class.c (duplicate_tag_error): Remove TYPE_NONCOPIED_PARTS.
        (layout_class_type): Don't call fixup_inline_methods here ...
        (layout_class_type): Don't call fixup_inline_methods here ...
        (finish_struct_1): ... call it here.
        (finish_struct_1): ... call it here.
2001-09-04  Mark Mitchell  
2001-09-04  Mark Mitchell  
        * decl.c (duplicate_decls): Remove code deadling with
        * decl.c (duplicate_decls): Remove code deadling with
        DECL_SAVED_INSNS.
        DECL_SAVED_INSNS.
        * decl2.c (finish_file): Likewise.
        * decl2.c (finish_file): Likewise.
        * pt.c (instantiate_decl): Likewise.
        * pt.c (instantiate_decl): Likewise.
        * semantics.c (expand_body): Don't defer local functions if
        * semantics.c (expand_body): Don't defer local functions if
        they wouldn't be deferred for some other reason.  Don't
        they wouldn't be deferred for some other reason.  Don't
        generate RTL for functions that will not be emitted.
        generate RTL for functions that will not be emitted.
        (genrtl_start_function): Remove code deadling with
        (genrtl_start_function): Remove code deadling with
        DECL_SAVED_INSNS.
        DECL_SAVED_INSNS.
        (genrtl_finish_function): Likewise.
        (genrtl_finish_function): Likewise.
2001-09-04  Nathan Sidwell  
2001-09-04  Nathan Sidwell  
        PR c++/4203
        PR c++/4203
        * call.c (build_over_call): Do not optimize any empty base
        * call.c (build_over_call): Do not optimize any empty base
        construction.
        construction.
2001-08-31  Kriang Lerdsuwanakij  
2001-08-31  Kriang Lerdsuwanakij  
        * error.c (dump_template_decl): Output template parameters
        * error.c (dump_template_decl): Output template parameters
        together with their specifiers.
        together with their specifiers.
        Output `class' prefix for template template parameter.
        Output `class' prefix for template template parameter.
        (dump_decl): Fix formatting.
        (dump_decl): Fix formatting.
2001-08-30  Kurt Garloff  
2001-08-30  Kurt Garloff  
        * optimize.c (inlinable_function_p): Allow only smaller single
        * optimize.c (inlinable_function_p): Allow only smaller single
        functions. Halve inline limit after reaching recursive limit.
        functions. Halve inline limit after reaching recursive limit.
2001-08-30  Joern Rennecke 
2001-08-30  Joern Rennecke 
            Jason Merrill  
            Jason Merrill  
        * class.c (build_vtable_entry_ref): Subtract in char*, not
        * class.c (build_vtable_entry_ref): Subtract in char*, not
        ptrdiff_t.
        ptrdiff_t.
2001-08-23  Jason Merrill  
2001-08-23  Jason Merrill  
        * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
        * tree.c (cp_build_qualified_type_real): Use get_qualified_type.
        (build_cplus_array_type): Use cp_build_qualified_type, not
        (build_cplus_array_type): Use cp_build_qualified_type, not
        TYPE_MAIN_VARIANT, to get an unqualified version.
        TYPE_MAIN_VARIANT, to get an unqualified version.
        * decl2.c (grok_alignof): Lose.
        * decl2.c (grok_alignof): Lose.
        (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
        (build_expr_from_tree): Use expr_sizeof and c_alignof_expr.
        * typeck.c (c_alignof): Lose.
        * typeck.c (c_alignof): Lose.
        * semantics.c (finish_sizeof, finish_alignof): New.
        * semantics.c (finish_sizeof, finish_alignof): New.
        * parse.y: Use them.
        * parse.y: Use them.
        * cp-tree.h: Declare them.
        * cp-tree.h: Declare them.
2001-08-22  Jason Merrill  
2001-08-22  Jason Merrill  
        * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
        * pt.c (tsubst_expr): Hand off to the TREE_CHAIN of a statement.
        Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
        Don't loop in COMPOUND_STMT, FOR_STMT or TRY_BLOCK.
        * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
        * tree.c (cp_statement_code_p): A TAG_DEFN is a statement.
2001-08-19  Jakub Jelinek  
2001-08-19  Jakub Jelinek  
        * typeck2.c (add_exception_specifier): Only require complete type if
        * typeck2.c (add_exception_specifier): Only require complete type if
        not in processing template declaration.
        not in processing template declaration.
2001-08-18  Kaveh R. Ghazi  
2001-08-18  Kaveh R. Ghazi  
        * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
        * decl.c: Cast argument to size_t, not HOST_WIDE_INT, in calls to
        GNU_xref_start_scope and GNU_xref_end_scope.
        GNU_xref_start_scope and GNU_xref_end_scope.
        * tree.c (TYPE_HASH): Moved to ../tree.h.
        * tree.c (TYPE_HASH): Moved to ../tree.h.
2001-08-16  Mark Mitchell  
2001-08-16  Mark Mitchell  
        * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
        * cvt.c (convert_to_void): Preserve TREE_SIDE_EFFECTS
        on COMPOUND_EXPRs.
        on COMPOUND_EXPRs.
2001-08-14  Richard Henderson  
2001-08-14  Richard Henderson  
        * class.c, cp-tree.h (build_vfn_ref): Remove.
        * class.c, cp-tree.h (build_vfn_ref): Remove.
        * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
        * call.c, rtti.c: Replace all refernces with build_vtbl_ref.
2001-08-13  Mark Mitchell  
2001-08-13  Mark Mitchell  
        * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
        * call.c (build_over_call): Mark COMPOUND_EXPRs generated for
        empty class assignment as having side-effects to avoid
        empty class assignment as having side-effects to avoid
        spurious warnings.
        spurious warnings.
2001-08-13  Zack Weinberg  
2001-08-13  Zack Weinberg  
        * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
        * Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
        * except.c: Include libfuncs.h.
        * except.c: Include libfuncs.h.
2001-08-11  Gabriel Dos Reis  
2001-08-11  Gabriel Dos Reis  
        * decl.c (grokdeclarator): Clarify diagnostic message.
        * decl.c (grokdeclarator): Clarify diagnostic message.
2001-08-13  Kriang Lerdsuwanakij  
2001-08-13  Kriang Lerdsuwanakij  
        * decl2.c (do_nonmember_using_decl): Replace using directive
        * decl2.c (do_nonmember_using_decl): Replace using directive
        with using declaration in the error message.
        with using declaration in the error message.
2001-08-11  Kriang Lerdsuwanakij  
2001-08-11  Kriang Lerdsuwanakij  
        * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
        * pt.c (maybe_fold_nontype_arg): Use TREE_TYPE of ARG as the
        criterion to avoid rebuilding expression tree instead of
        criterion to avoid rebuilding expression tree instead of
        processing_template_decl.
        processing_template_decl.
2001-08-07  Jason Merrill  
2001-08-07  Jason Merrill  
        Support named return value optimization for inlines, too.
        Support named return value optimization for inlines, too.
        * decl.c (finish_function): Nullify returns here.
        * decl.c (finish_function): Nullify returns here.
        * semantics.c (genrtl_start_function): Not here.
        * semantics.c (genrtl_start_function): Not here.
        (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
        (cp_expand_stmt): Don't mess with CLEANUP_STMTs.
        (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
        (nullify_returns_r): No longer static.  Just clear RETURN_EXPR.
        Also nullify the CLEANUP_STMT for the nrv.
        Also nullify the CLEANUP_STMT for the nrv.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * optimize.c (declare_return_variable): Replace the nrv with the
        * optimize.c (declare_return_variable): Replace the nrv with the
        return variable.
        return variable.
        * typeck.c (check_return_expr): Be more flexible on alignment check.
        * typeck.c (check_return_expr): Be more flexible on alignment check.
        Ignore cv-quals when checking for a matching type.
        Ignore cv-quals when checking for a matching type.
2001-08-09  Richard Henderson  
2001-08-09  Richard Henderson  
        * decl2.c (finish_objects): Use target hooks instead of
        * decl2.c (finish_objects): Use target hooks instead of
        assemble_constructor and assemble_destructor.
        assemble_constructor and assemble_destructor.
2001-08-08  John David Anglin  
2001-08-08  John David Anglin  
        * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
        * g++spec.c (lang_specific_driver): Quote argument after `-Xlinker'.
2001-08-07  Nathan Sidwell  
2001-08-07  Nathan Sidwell  
        PR c++/3820
        PR c++/3820
        Stop using TYPE_NONCOPIED_PARTS.
        Stop using TYPE_NONCOPIED_PARTS.
        * call.c (build_over_call): Be careful when copy constructing
        * call.c (build_over_call): Be careful when copy constructing
        or assigning to an empty class.
        or assigning to an empty class.
        * class.c (check_bases_and_members): It has a
        * class.c (check_bases_and_members): It has a
        COMPLEX_ASSIGN_REF if it has a vptr.
        COMPLEX_ASSIGN_REF if it has a vptr.
        (layout_class_type): Don't add empty class padding to
        (layout_class_type): Don't add empty class padding to
        TYPE_NONCOPIED_PARTS.
        TYPE_NONCOPIED_PARTS.
        (finish_struct_1): Don't add the VFIELD either.
        (finish_struct_1): Don't add the VFIELD either.
        * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
        * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): Mention _copy_
        initialization.
        initialization.
2001-08-07  Jason Merrill  
2001-08-07  Jason Merrill  
        * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
        * tree.c (walk_tree): Walk siblings even if !walk_subtrees.
2001-08-06  Richard Henderson  
2001-08-06  Richard Henderson  
        * decl2.c (finish_objects): Pass a symbol_ref and priority to
        * decl2.c (finish_objects): Pass a symbol_ref and priority to
        assemble_{constructor,destructor}.  Remove priority handling.
        assemble_{constructor,destructor}.  Remove priority handling.
2001-08-05  Gabriel Dos Reis  
2001-08-05  Gabriel Dos Reis  
        Don't allow template-id in using-declaration.
        Don't allow template-id in using-declaration.
        * decl2.c (validate_nonmember_using_decl): Handle template-ids.
        * decl2.c (validate_nonmember_using_decl): Handle template-ids.
        (do_class_using_decl): Likewise.
        (do_class_using_decl): Likewise.
2001-08-04  Neil Booth  
2001-08-04  Neil Booth  
        * cp/spew.c (read_token): No need to pop buffers.
        * cp/spew.c (read_token): No need to pop buffers.
2001-08-02  Stan Shebs  
2001-08-02  Stan Shebs  
        * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
        * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY): Remove, no longer used.
        (fnaddr_from_vtable_entry): Remove decl.
        (fnaddr_from_vtable_entry): Remove decl.
        * method.c (use_thunk): Update comment.
        * method.c (use_thunk): Update comment.
2001-08-01  Andrew Cagney  
2001-08-01  Andrew Cagney  
        * repo.c (get_base_filename): Change return value to const char
        * repo.c (get_base_filename): Change return value to const char
        pointer.
        pointer.
2001-08-02  Nathan Sidwell  
2001-08-02  Nathan Sidwell  
        Kill -fhonor-std.
        Kill -fhonor-std.
        * NEWS: Document.
        * NEWS: Document.
        * cp-tree.h (flag_honor_std): Remove.
        * cp-tree.h (flag_honor_std): Remove.
        (CPTI_FAKE_STD): Remove.
        (CPTI_FAKE_STD): Remove.
        (std_node): Remove comment about it being NULL.
        (std_node): Remove comment about it being NULL.
        (fake_std_node): Remove.
        (fake_std_node): Remove.
        * decl.c (in_fake_std): Remove.
        * decl.c (in_fake_std): Remove.
        (walk_namespaces_r): Remove fake_std_node check.
        (walk_namespaces_r): Remove fake_std_node check.
        (push_namespace): Remove in_fake_std code.
        (push_namespace): Remove in_fake_std code.
        (pop_namespace): Likewise.
        (pop_namespace): Likewise.
        (lookup_name_real): Remove fake_std_node check.
        (lookup_name_real): Remove fake_std_node check.
        (init_decl_processing): Always create std_node. Always add
        (init_decl_processing): Always create std_node. Always add
        std:: things there.
        std:: things there.
        (builtin_function): Always put non '_' fns in std.
        (builtin_function): Always put non '_' fns in std.
        * decl2.c (flag_honor_std): Remove.
        * decl2.c (flag_honor_std): Remove.
        (lang_f_options): Remove honor-std.
        (lang_f_options): Remove honor-std.
        (unsupported_options): Add honor-std.
        (unsupported_options): Add honor-std.
        (set_decl_namespace): Remove fake_std_node check.
        (set_decl_namespace): Remove fake_std_node check.
        (validate_nonmember_using_decl): Likewise.
        (validate_nonmember_using_decl): Likewise.
        (do_using_directive): Likewise.
        (do_using_directive): Likewise.
        (handle_class_head): Likewise.
        (handle_class_head): Likewise.
        * dump.c (cp_dump_tree): Likewise.
        * dump.c (cp_dump_tree): Likewise.
        * except.c (init_exception_processing): Adjust.
        * except.c (init_exception_processing): Adjust.
        * init.c (build_member_call): Remove fake_std_node check.
        * init.c (build_member_call): Remove fake_std_node check.
        (build_offset_ref): Likewise.
        (build_offset_ref): Likewise.
        * lang-options.h: Remove -fhonor-std, -fno-honor-std.
        * lang-options.h: Remove -fhonor-std, -fno-honor-std.
        * rtti.c (init_rtti_processing): Adjust.
        * rtti.c (init_rtti_processing): Adjust.
2001-07-31  Alexandre Petit-Bianco  
2001-07-31  Alexandre Petit-Bianco  
        * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
        * tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
        operand while calling cp_tree_equal.
        operand while calling cp_tree_equal.
2001-07-31  Nathan Sidwell  
2001-07-31  Nathan Sidwell  
        The 3.0 ABI no longer has vbase pointer fields.
        The 3.0 ABI no longer has vbase pointer fields.
        * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
        * cp-tree.h (VBASE_NAME, VBASE_NAME_FORMAT, VBASE_NAME_P,
        FORMAT_VBASE_NAME): Remove.
        FORMAT_VBASE_NAME): Remove.
        * method.c (do_build_copy_constructor): Adjust.
        * method.c (do_build_copy_constructor): Adjust.
        (do_build_assign_ref): Adjust.
        (do_build_assign_ref): Adjust.
        * search.c (lookup_field_r): Adjust.
        * search.c (lookup_field_r): Adjust.
        * typeck.c (build_component_ref): Adjust.
        * typeck.c (build_component_ref): Adjust.
        The 3.0 ABI always has a vtable pointer at the start of every
        The 3.0 ABI always has a vtable pointer at the start of every
        polymorphic class.
        polymorphic class.
        * rtti.c (build_headof_sub): Remove.
        * rtti.c (build_headof_sub): Remove.
        (build_headof): Adjust.
        (build_headof): Adjust.
        (get_tinfo_decl_dynamic): No need to check flag_rtti
        (get_tinfo_decl_dynamic): No need to check flag_rtti
        here. Adjust.
        here. Adjust.
        (create_real_tinfo_var): Explain why we need a hidden name.
        (create_real_tinfo_var): Explain why we need a hidden name.
2001-07-31  Nathan Sidwell  
2001-07-31  Nathan Sidwell  
        PR c++/3631
        PR c++/3631
        * class.c (update_vtable_entry_for_fn): The fixed adjustment
        * class.c (update_vtable_entry_for_fn): The fixed adjustment
        of a virtual thunk should be from declaring base.
        of a virtual thunk should be from declaring base.
2001-07-31  Nathan Sidwell  
2001-07-31  Nathan Sidwell  
        * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
        * class.c (dfs_ctor_vtable_bases_queue_p): Always walk into
        the shared virtual base, so preserving inheritance graph order.
        the shared virtual base, so preserving inheritance graph order.
2001-07-30  Andreas Jaeger  
2001-07-30  Andreas Jaeger  
        * decl2.c: Remove unused var global_temp_name_counter.
        * decl2.c: Remove unused var global_temp_name_counter.
2001-07-28  Richard Henderson  
2001-07-28  Richard Henderson  
        * method.c (pending_inlines): Remove.
        * method.c (pending_inlines): Remove.
2001-07-27  Nathan Sidwell  
2001-07-27  Nathan Sidwell  
        * class.c (mark_primary_virtual_base): Don't adjust base
        * class.c (mark_primary_virtual_base): Don't adjust base
        offsets here.
        offsets here.
        (dfs_unshared_virtual_bases): Adjust them here.
        (dfs_unshared_virtual_bases): Adjust them here.
        (mark_primary_bases): Explain why we adjust at the end.
        (mark_primary_bases): Explain why we adjust at the end.
2001-07-27  Nathan Sidwell  
2001-07-27  Nathan Sidwell  
        * class.c (finish_struct_1): When copying the primary base's
        * class.c (finish_struct_1): When copying the primary base's
        VFIELD, make sure we find it is at offset zero.
        VFIELD, make sure we find it is at offset zero.
2001-07-26  Kriang Lerdsuwanakij  
2001-07-26  Kriang Lerdsuwanakij  
        * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
        * pt.c (tsubst_template_parms): Call maybe_fold_nontype_arg and
        tsubst_expr for default template arguments.
        tsubst_expr for default template arguments.
2001-07-26  Nathan Sidwell  
2001-07-26  Nathan Sidwell  
        PR c++/3621
        PR c++/3621
        * spew.c (yylex): Only copy the token's lineno, if it is
        * spew.c (yylex): Only copy the token's lineno, if it is
        nonzero.
        nonzero.
2001-07-26  Nathan Sidwell  
2001-07-26  Nathan Sidwell  
        PR c++/3624
        PR c++/3624
        * call.c (resolve_args): Simplify, call
        * call.c (resolve_args): Simplify, call
        convert_from_reference.
        convert_from_reference.
        (build_new_op): Resolve and convert from reference ARG1
        (build_new_op): Resolve and convert from reference ARG1
        earlier. Adjust ARG2 & ARG3 resolve and conversion.
        earlier. Adjust ARG2 & ARG3 resolve and conversion.
2001-07-26  Nathan Sidwell  
2001-07-26  Nathan Sidwell  
        * decl.c (last_function_parm_tags): Remove.
        * decl.c (last_function_parm_tags): Remove.
        (current_function_parm_tags): Remove.
        (current_function_parm_tags): Remove.
        (init_decl_processing): Adjust.
        (init_decl_processing): Adjust.
        (start_function): Adjust.
        (start_function): Adjust.
        (store_parm_decls): Adjust.
        (store_parm_decls): Adjust.
        PR c++/3152
        PR c++/3152
        * decl.c (grokdeclarator): Detect when a function typedef is
        * decl.c (grokdeclarator): Detect when a function typedef is
        declaring a function, and create last_function_parms correctly.
        declaring a function, and create last_function_parms correctly.
2001-07-25  Jason Merrill  
2001-07-25  Jason Merrill  
        * call.c (joust): Only prefer a non-builtin candidate to a builtin
        * call.c (joust): Only prefer a non-builtin candidate to a builtin
        one if they have the same signature.
        one if they have the same signature.
        * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
        * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
        it rather than toplevel_bindings_p.  Give it a mangled name if static.
        it rather than toplevel_bindings_p.  Give it a mangled name if static.
        (convert_to_reference): Adjust.
        (convert_to_reference): Adjust.
        * decl2.c (get_temp_name): Lose.
        * decl2.c (get_temp_name): Lose.
        * mangle.c (mangle_ref_init_variable): New fn.
        * mangle.c (mangle_ref_init_variable): New fn.
        (mangle_guard_variable): Strip the ref-init header.
        (mangle_guard_variable): Strip the ref-init header.
        * cp-tree.h: Adjust.
        * cp-tree.h: Adjust.
        * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
        * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
        initializer.
        initializer.
        (grok_reference_init): Always use DECL_INITIAL.
        (grok_reference_init): Always use DECL_INITIAL.
2001-07-25  Nathan Sidwell  
2001-07-25  Nathan Sidwell  
        PR c++/3416
        PR c++/3416
        * call.c (build_conditional_expr): Recheck args after
        * call.c (build_conditional_expr): Recheck args after
        conversions.
        conversions.
        * cp-tree.h (build_conditional_expr): Move to correct file.
        * cp-tree.h (build_conditional_expr): Move to correct file.
        * typeck.c (decay_conversion): Diagnose any unknown types
        * typeck.c (decay_conversion): Diagnose any unknown types
        reaching here.
        reaching here.
        (build_binary_op): Don't do initial decay or default
        (build_binary_op): Don't do initial decay or default
        conversions on overloaded functions.
        conversions on overloaded functions.
        (build_static_cast): Don't do a decay conversion here.
        (build_static_cast): Don't do a decay conversion here.
2001-07-25  Nathan Sidwell  
2001-07-25  Nathan Sidwell  
        PR c++/3543
        PR c++/3543
        * typeck.c (condition_conversion): Resolve an OFFSET_REF.
        * typeck.c (condition_conversion): Resolve an OFFSET_REF.
        * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
        * expr.c (cplus_expand_expr): An OFFSET_REF should never get here.
2001-07-25  Nathan Sidwell  
2001-07-25  Nathan Sidwell  
        * class.c (build_vtbl_or_vbase_field): Remove, move into ...
        * class.c (build_vtbl_or_vbase_field): Remove, move into ...
        (create_vtbl_ptr): ... here.
        (create_vtbl_ptr): ... here.
2001-07-25  Nathan Sidwell  
2001-07-25  Nathan Sidwell  
        * class.c (build_vbase_offset_vbtl_entries): Look for
        * class.c (build_vbase_offset_vbtl_entries): Look for
        non-primary base of which we are a sub vtable.
        non-primary base of which we are a sub vtable.
2001-07-24  Phil Edwards  
2001-07-24  Phil Edwards  
        * semantics.c (finish_this_expr):  Remove unused code.
        * semantics.c (finish_this_expr):  Remove unused code.
2001-07-24  Nathan Sidwell  
2001-07-24  Nathan Sidwell  
        Simplify rtti, now we've only one ABI.
        Simplify rtti, now we've only one ABI.
        * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
        * cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID,
        CPTI_TINFO_VAR_ID.
        CPTI_TINFO_VAR_ID.
        (tinfo_decl_id, tinfo_var_id): Remove.
        (tinfo_decl_id, tinfo_var_id): Remove.
        (get_typeid_1): Remove.
        (get_typeid_1): Remove.
        * rtti.c
        * rtti.c
        (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
        (init_rtti_processing): Remove tinfo_decl_id & tinfo_var_id.
        (typeid_ok_p): New function.
        (typeid_ok_p): New function.
        (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
        (build_type_id): Call typeid_ok_p. Don't call tinfo_from_decl.
        (get_tinfo_decl): Remove old abi documentation.
        (get_tinfo_decl): Remove old abi documentation.
        (tinfo_from_decl): Remove.
        (tinfo_from_decl): Remove.
        (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
        (get_type_id): Call typeid_ok_p. Absorb get_typeid_1.
        (get_typeid_1): Remove.
        (get_typeid_1): Remove.
        (get_base_offset): Remove.
        (get_base_offset): Remove.
        (synthesize_tinfo_var): Absorb get_base_offset.
        (synthesize_tinfo_var): Absorb get_base_offset.
        (create_real_tinfo_var): Don't use tinfo_decl_id.
        (create_real_tinfo_var): Don't use tinfo_decl_id.
2001-07-23  Graham Stott  
2001-07-23  Graham Stott  
        * cp/class.c (type_requires_array_cookie): Fix use of uninitialized
        * cp/class.c (type_requires_array_cookie): Fix use of uninitialized
        variable has_two_argument_delete_p.
        variable has_two_argument_delete_p.
2001-07-21  Nathan Sidwell  
2001-07-21  Nathan Sidwell  
        Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
        Remove flag_vtable_thunk. It is always on for the 3.0 ABI.
        * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
        * cp-tree.h (CPTI_DELTA2_IDENTIFIER): Remove.
        (CPTI_INDEX_IDENTIFIER): Remove.
        (CPTI_INDEX_IDENTIFIER): Remove.
        (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
        (CPT_PFN_OR_DELTA2_IDENTIFIER): Remove.
        (delta2_identifier): Remove.
        (delta2_identifier): Remove.
        (index_identifier): Remove.
        (index_identifier): Remove.
        (pfn_or_delta2_identifier): Remove.
        (pfn_or_delta2_identifier): Remove.
        (flag_vtable_thunks): Remove.
        (flag_vtable_thunks): Remove.
        (VTABLE_DELTA2_NAME): Remove.
        (VTABLE_DELTA2_NAME): Remove.
        (VTABLE_INDEX_NAME): Remove.
        (VTABLE_INDEX_NAME): Remove.
        (FNADDR_FROM_VTABLE_ENTRY): Adjust.
        (FNADDR_FROM_VTABLE_ENTRY): Adjust.
        (vfunc_ptr_type_node): Adjust.
        (vfunc_ptr_type_node): Adjust.
        (VTABLE_NAME_PREFIX): Adjust.
        (VTABLE_NAME_PREFIX): Adjust.
        (build_vfn_ref): Lose first parameter.
        (build_vfn_ref): Lose first parameter.
        (fixup_all_virtual_upcast_offsets): Remove.
        (fixup_all_virtual_upcast_offsets): Remove.
        * decl.c (initialize_predefined_identifiers): Remove
        * decl.c (initialize_predefined_identifiers): Remove
        delta2_identifier, index_identifier, pfn_or_delta2_identifier.
        delta2_identifier, index_identifier, pfn_or_delta2_identifier.
        (init_decl_processing): Remove no-vtable-thunk code.
        (init_decl_processing): Remove no-vtable-thunk code.
        * decl2.c (flag_vtable_thunks): Remove.
        * decl2.c (flag_vtable_thunks): Remove.
        (mark_vtable_entries): Remove no-vtable-thunk code.
        (mark_vtable_entries): Remove no-vtable-thunk code.
        * error.c (dump_decl): Remove no-vtable-thunk code.
        * error.c (dump_decl): Remove no-vtable-thunk code.
        (dump_expr): Adjust ptr to member function code.
        (dump_expr): Adjust ptr to member function code.
        * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
        * init.c (initialize_vtable_ptrs): Remove no-vtable-thunk
        code.
        code.
        * rtti.c (build_headof): Remove no-vtable-thunk code.
        * rtti.c (build_headof): Remove no-vtable-thunk code.
        (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
        (get_tinfo_decl_dynamic): Adjust build_vfn_ref call.
        * search.c (get_base_distance): Remove expand_upcast_fixups case.
        * search.c (get_base_distance): Remove expand_upcast_fixups case.
        (virtual_context) Remove.
        (virtual_context) Remove.
        (expand_upcast_fixups): Remove.
        (expand_upcast_fixups): Remove.
        (fixup_virtual_upcast_offsets): Remove.
        (fixup_virtual_upcast_offsets): Remove.
        (fixup_all_virtual_upcast_offsets): Remove.
        (fixup_all_virtual_upcast_offsets): Remove.
        * typeck.c (get_member_function_from_ptrfunc): Remove
        * typeck.c (get_member_function_from_ptrfunc): Remove
        no-vtable-thunk code.
        no-vtable-thunk code.
        * call.c (build_over_call): Adjust call to build_vfn_ref.
        * call.c (build_over_call): Adjust call to build_vfn_ref.
        * class.c (build_vfn_ref): Lose first parameter. Remove
        * class.c (build_vfn_ref): Lose first parameter. Remove
        no-vtable-thunk code.
        no-vtable-thunk code.
        (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
        (build_rtti_vtbl_entries): Remove no-vtable-thunk code.
        (build_vtable_entry): Remove no-vtable-thunk code.
        (build_vtable_entry): Remove no-vtable-thunk code.
2001-07-20  Nathan Sidwell  
2001-07-20  Nathan Sidwell  
        Remove old-abi remnants. Remove comments about old abi
        Remove old-abi remnants. Remove comments about old abi
        behavior. Remove references to 'new-abi' in comments.
        behavior. Remove references to 'new-abi' in comments.
        * cp-tree.h: Adjust comments.
        * cp-tree.h: Adjust comments.
        (vbase_offsets_in_vtable_p): Delete.
        (vbase_offsets_in_vtable_p): Delete.
        (vcall_offsets_in_vtable_p): Delete.
        (vcall_offsets_in_vtable_p): Delete.
        (vptrs_present_everywhere_p): Delete.
        (vptrs_present_everywhere_p): Delete.
        (all_overridden_vfuns_in_vtables_p): Delete.
        (all_overridden_vfuns_in_vtables_p): Delete.
        (merge_primary_and_secondary_vtables_p): Delete.
        (merge_primary_and_secondary_vtables_p): Delete.
        (TYPE_CONTAINS_VPTR_P): Adjust.
        (TYPE_CONTAINS_VPTR_P): Adjust.
        (VTT_NAME_PREFIX): Remove.
        (VTT_NAME_PREFIX): Remove.
        (CTOR_VTBL_NAME_PREFIX): Remove.
        (CTOR_VTBL_NAME_PREFIX): Remove.
        (init_vbase_pointers): Remove.
        (init_vbase_pointers): Remove.
        * class.c: Adjust coments.
        * class.c: Adjust coments.
        (build_vbase_pointer_fields): Delete.
        (build_vbase_pointer_fields): Delete.
        (build_vbase_pointer): Remove old-abi code.
        (build_vbase_pointer): Remove old-abi code.
        (build_secondary_vtable): Likewise.
        (build_secondary_vtable): Likewise.
        (modify_all_vtables): Likewise.
        (modify_all_vtables): Likewise.
        (create_vtable_ptr): Likewise.
        (create_vtable_ptr): Likewise.
        (layout_class_type): Likewise.
        (layout_class_type): Likewise.
        (finish_struct_1): Likewise.
        (finish_struct_1): Likewise.
        (finish_vtbls): Likewise.
        (finish_vtbls): Likewise.
        (dfs_finish_vtbls): Delete.
        (dfs_finish_vtbls): Delete.
        (build_vbase_offset_vtbl_entries): Remove old-abi code.
        (build_vbase_offset_vtbl_entries): Remove old-abi code.
        * cvt.c: Adjust comments.
        * cvt.c: Adjust comments.
        * decl.c: Adjust comments.
        * decl.c: Adjust comments.
        * decl2.c: Adjust comments.
        * decl2.c: Adjust comments.
        * init.c: Adjust comments.
        * init.c: Adjust comments.
        (construct_virtual_bases): Remove old-abi code.
        (construct_virtual_bases): Remove old-abi code.
        * lang-specs.h: Remove -fno-new-abi.
        * lang-specs.h: Remove -fno-new-abi.
        * mangle.c: Adjust comments.
        * mangle.c: Adjust comments.
        * rtti.c: Adjust comments.
        * rtti.c: Adjust comments.
        (get_base_offset): Remove old-abi-code.
        (get_base_offset): Remove old-abi-code.
        * search.c: Adjust comments.
        * search.c: Adjust comments.
        (dfs_init_vbase_pointers): Remove.
        (dfs_init_vbase_pointers): Remove.
        (dfs_vtable_path_unmark): Remove.
        (dfs_vtable_path_unmark): Remove.
        (init_vbase_pointers): Remove.
        (init_vbase_pointers): Remove.
        * semantics.c: Adjust comments.
        * semantics.c: Adjust comments.
        (emit_associated_thunks): Remove old-abi code.
        (emit_associated_thunks): Remove old-abi code.
        * typeck.c: Adjust comments.
        * typeck.c: Adjust comments.
2001-07-20  Daniel Berlin  
2001-07-20  Daniel Berlin  
        * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
        * Make-lang.in (cp/optimize.o): Depend on $(PARAMS_H), not
        params.h.
        params.h.
2001-07-19  Mark Mitchell  
2001-07-19  Mark Mitchell  
        * class.c (finish_struct_anon): Forbid nested classes.
        * class.c (finish_struct_anon): Forbid nested classes.
2001-07-19  Neil Booth  
2001-07-19  Neil Booth  
        * decl2.c: Don't include dwarfout.h and dwarf2out.h.
        * decl2.c: Don't include dwarfout.h and dwarf2out.h.
        * optimize.c: Include debug.h.
        * optimize.c: Include debug.h.
        (maybe_clone_body): Use debug hook.
        (maybe_clone_body): Use debug hook.
        * semantics.c: Include debug.h.
        * semantics.c: Include debug.h.
        (expand_body): Use debug hook.
        (expand_body): Use debug hook.
2001-07-19  Neil Booth  
2001-07-19  Neil Booth  
        * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
        * spew.c (read_token, yyerror): Remove CPP_INT, CPP_FLOAT cases.
2001-07-18  Mark Mitchell  
2001-07-18  Mark Mitchell  
        * class.c (type_requires_array_cookie): New function.
        * class.c (type_requires_array_cookie): New function.
        (check_methods): Don't try to figure out whether the type needs a
        (check_methods): Don't try to figure out whether the type needs a
        cookie here.
        cookie here.
        (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
        (check_bases_and_members): Set TYPE_VEC_NEW_USES_COOKIE here.
        * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
        * cp-tree.h (TYPE_VEC_DELETE_TAKES_SIZE): Remove.
        (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
        (TYPE_VEC_NEW_USES_COOKIE): Reimplement.
        * pt.c (instantiate_class_template): Don't set
        * pt.c (instantiate_class_template): Don't set
        TYPE_VEC_DELETE_TAKES_SIZE.
        TYPE_VEC_DELETE_TAKES_SIZE.
        * NEWS: Document ABI changes from GCC 3.0.
        * NEWS: Document ABI changes from GCC 3.0.
2001-07-18  Xavier Delacour ,
2001-07-18  Xavier Delacour ,
            Gerald Pfeifer  
            Gerald Pfeifer  
        * NEWS (Changes in GCC 3.0): Fix typo.
        * NEWS (Changes in GCC 3.0): Fix typo.
2001-07-13  Joseph S. Myers  
2001-07-13  Joseph S. Myers  
        * decl2.c (cplus_decl_attributes): Take a pointer to the node to
        * decl2.c (cplus_decl_attributes): Take a pointer to the node to
        which attributes are to be attached, and a flags argument.  Update
        which attributes are to be attached, and a flags argument.  Update
        call to decl_attributes.
        call to decl_attributes.
        (grokfield): Update call to decl_attributes.
        (grokfield): Update call to decl_attributes.
        * class.c (finish_struct): Update call to cplus_decl_attributes.
        * class.c (finish_struct): Update call to cplus_decl_attributes.
        * cp-tree.h (cplus_decl_attributes): Update prototype.
        * cp-tree.h (cplus_decl_attributes): Update prototype.
        * decl.c (start_decl, grokdeclarator, start_function): Update
        * decl.c (start_decl, grokdeclarator, start_function): Update
        calls to decl_attributes and cplus_decl_attributes.
        calls to decl_attributes and cplus_decl_attributes.
        * friend.c (do_friend): Update call to cplus_decl_attributes.
        * friend.c (do_friend): Update call to cplus_decl_attributes.
        * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
        * parse.y (parse_bitfield): Update call to cplus_decl_attributes.
2001-07-12  Mark Mitchell  
2001-07-12  Mark Mitchell  
        * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
        * decl.c (make_rtl_for_nonlocal_decl): Set DECL_C_HARD_REGISTER
        for `register' variables with an asm-specification.
        for `register' variables with an asm-specification.
2001-07-11  Mark Mitchell  
2001-07-11  Mark Mitchell  
        * semantics.c (finish_asm_stmt): Mark the output operands
        * semantics.c (finish_asm_stmt): Mark the output operands
        to an asm addressable, if necessary.
        to an asm addressable, if necessary.
2001-07-11  Ben Elliston  
2001-07-11  Ben Elliston  
        * Revert this change -- there is a subtle bug.
        * Revert this change -- there is a subtle bug.
        PR c++/80
        PR c++/80
        * decl.c (finish_enum): New "attributes" argument; pass it to
        * decl.c (finish_enum): New "attributes" argument; pass it to
        cplus_decl_attributes.  Use a narrower type if the enum is packed.
        cplus_decl_attributes.  Use a narrower type if the enum is packed.
        * cp-tree.h (finish_enum): Adjust prototype.
        * cp-tree.h (finish_enum): Adjust prototype.
        * parse.y (enum_head): New non-terminal.
        * parse.y (enum_head): New non-terminal.
        (structsp): Use it. Enums now may be preceded or followed by
        (structsp): Use it. Enums now may be preceded or followed by
        optional attributes -- pass their chained tree to finish_enum().
        optional attributes -- pass their chained tree to finish_enum().
        * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
        * pt.c (tsubst_enum): Pass NULL_TREE for the new argument.
2001-07-10  Mark Mitchell  
2001-07-10  Mark Mitchell  
        * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
        * pt.c (tsubst_decl): Set DECL_CONTEXT for namespace-scope
        variables.
        variables.
2001-07-10  Jason Merrill  
2001-07-10  Jason Merrill  
        * semantics.c (cp_expand_stmt): Fix for null
        * semantics.c (cp_expand_stmt): Fix for null
        current_function_return_value.
        current_function_return_value.
2001-07-10  Jan van Male  
2001-07-10  Jan van Male  
        * call.c (build_op_delete_call): Initialize fn.
        * call.c (build_op_delete_call): Initialize fn.
        (convert_like_real): Delete conditional.
        (convert_like_real): Delete conditional.
        (joust): Initialize *w and *l.
        (joust): Initialize *w and *l.
        * class.c: Add prototype for binfo_ctor_vtable.
        * class.c: Add prototype for binfo_ctor_vtable.
        (get_primary_binfo): Initialize result.
        (get_primary_binfo): Initialize result.
        * init.c (build_java_class_ref): Initialize name.
        * init.c (build_java_class_ref): Initialize name.
2001-07-09  Erik Rozendaal  
2001-07-09  Erik Rozendaal  
        * typeck.c (unary_complex_lvalue): Do not duplicate the
        * typeck.c (unary_complex_lvalue): Do not duplicate the
        argument to modify, pre-, or post-increment when used as an
        argument to modify, pre-, or post-increment when used as an
        lvalue and when the argument has side-effects.
        lvalue and when the argument has side-effects.
2001-07-08  Joseph S. Myers  
2001-07-08  Joseph S. Myers  
        * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
        * decl.c (start_decl): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
        (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
        (start_function): Don't call SET_DEFAULT_DECL_ATTRIBUTES.  Call
        cplus_decl_attributes even if attrs is NULL.
        cplus_decl_attributes even if attrs is NULL.
        * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
        * friend.c (do_friend): Don't call SET_DEFAULT_DECL_ATTRIBUTES.
2001-07-08  Joseph S. Myers  
2001-07-08  Joseph S. Myers  
        * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
        * decl.c (grokdeclarator), decl2.c (cplus_decl_attributes): Update
        calls to decl_attributes.
        calls to decl_attributes.
2001-07-06  Ira Ruben   
2001-07-06  Ira Ruben   
        * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
        * cp-tree.def (TEMPLATE_DECL): Update comment. DECL_RESULT should
        be DECL_TEMPLATE_RESULT.
        be DECL_TEMPLATE_RESULT.
2001-07-05  Kriang Lerdsuwanakij  
2001-07-05  Kriang Lerdsuwanakij  
        * cp-tree.h (copy_template_template_parm): Rename to ...
        * cp-tree.h (copy_template_template_parm): Rename to ...
        (bind_template_template_parm): ... here.
        (bind_template_template_parm): ... here.
        * tree.c (copy_template_template_parm): Rename to ...
        * tree.c (copy_template_template_parm): Rename to ...
        (bind_template_template_parm): ... here.  Remove the case when
        (bind_template_template_parm): ... here.  Remove the case when
        NEWARGS is NULL_TREE.
        NEWARGS is NULL_TREE.
        (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
        (copy_tree_r): Don't copy TEMPLATE_TEMPLATE_PARM and
        BOUND_TEMPLATE_TEMPLATE_PARM.
        BOUND_TEMPLATE_TEMPLATE_PARM.
        * pt.c (lookup_template_class): Adjust.
        * pt.c (lookup_template_class): Adjust.
2001-07-05  Jason Merrill  
2001-07-05  Jason Merrill  
        * cvt.c (convert_lvalue): New fn.
        * cvt.c (convert_lvalue): New fn.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * method.c (do_build_assign_ref): Use it.
        * method.c (do_build_assign_ref): Use it.
        (do_build_copy_constructor): Convert parm to base types
        (do_build_copy_constructor): Convert parm to base types
        before calling base constructors.
        before calling base constructors.
        * typeck.c (check_return_expr): Check DECL_ALIGN instead of
        * typeck.c (check_return_expr): Check DECL_ALIGN instead of
        DECL_USER_ALIGN.  Check flag_elide_constructors instead of
        DECL_USER_ALIGN.  Check flag_elide_constructors instead of
        optimize.
        optimize.
        * semantics.c (cp_expand_stmt): Don't destroy the named return value.
        * semantics.c (cp_expand_stmt): Don't destroy the named return value.
2001-07-02  Nathan Sidwell  
2001-07-02  Nathan Sidwell  
        * optimize.c (optimize_inline_calls): New function, broken out
        * optimize.c (optimize_inline_calls): New function, broken out
        of ...
        of ...
        (optimize_function): ... here. Call it. Don't inline if it is
        (optimize_function): ... here. Call it. Don't inline if it is
        a thunk.
        a thunk.
        (dump_function): Print name of dump flag causing this dump.
        (dump_function): Print name of dump flag causing this dump.
        * semantics.c (expand_body): Move thunk inline check to
        * semantics.c (expand_body): Move thunk inline check to
        optimize_function.
        optimize_function.
2001-06-29  Joseph S. Myers  
2001-06-29  Joseph S. Myers  
        * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
        * typeck.c (COMP_TYPE_ATTRIBUTES): Don't define.
        (comptypes): Use target.comp_type_attributes.
        (comptypes): Use target.comp_type_attributes.
2001-06-29  Nathan Sidwell  
2001-06-29  Nathan Sidwell  
        * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
        * cp-tree.h (flag_dump_class_layout): Remove unneeded declaration.
2001-06-28  Gabriel Dos Reis  
2001-06-28  Gabriel Dos Reis  
        * error.c (lang_print_error_function): Add a `diagnostic_context *'
        * error.c (lang_print_error_function): Add a `diagnostic_context *'
        parameter. Tweak.
        parameter. Tweak.
2001-06-27  Neil Booth  
2001-06-27  Neil Booth  
        * decl2.c (import_export_class): Update.
        * decl2.c (import_export_class): Update.
2001-06-26  Gabriel Dos Reis  
2001-06-26  Gabriel Dos Reis  
        * error.c (init_error): Adjust settings.
        * error.c (init_error): Adjust settings.
2001-06-26  Gabriel Dos Reis  
2001-06-26  Gabriel Dos Reis  
        * error.c (init_error): Adjust settings.
        * error.c (init_error): Adjust settings.
2001-06-19  Richard Sandiford  
2001-06-19  Richard Sandiford  
        * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
        * except.c (initialize_handler_parm): Expect __cxa_begin_catch to
        return pointers to data members by reference rather than by value.
        return pointers to data members by reference rather than by value.
2001-06-18  Jason Merrill  
2001-06-18  Jason Merrill  
        Implement the Named Return Value optimization.
        Implement the Named Return Value optimization.
        * cp-tree.h (struct cp_language_function): Add x_return_value.
        * cp-tree.h (struct cp_language_function): Add x_return_value.
        (current_function_return_value): Now a macro.
        (current_function_return_value): Now a macro.
        * decl.c: Don't define it.
        * decl.c: Don't define it.
        (define_label, finish_case_label): Don't clear it.
        (define_label, finish_case_label): Don't clear it.
        (init_decl_processing): Don't register it with GC.
        (init_decl_processing): Don't register it with GC.
        * semantics.c (genrtl_finish_function): Don't check it for
        * semantics.c (genrtl_finish_function): Don't check it for
        no_return_label.  Copy the RTL from the return value to
        no_return_label.  Copy the RTL from the return value to
        current_function_return_value and walk, calling...
        current_function_return_value and walk, calling...
        (nullify_returns_r): ...this new fn.
        (nullify_returns_r): ...this new fn.
        * typeck.c (check_return_expr): Set current_function_return_value.
        * typeck.c (check_return_expr): Set current_function_return_value.
2001-06-15  Jason Merrill  
2001-06-15  Jason Merrill  
        * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
        * class.c (dfs_accumulate_vtbl_inits): Just point to the base we're
        sharing a ctor vtable with.  Merge code for cases 1 and 2.
        sharing a ctor vtable with.  Merge code for cases 1 and 2.
        (binfo_ctor_vtable): New fn.
        (binfo_ctor_vtable): New fn.
        (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
        (build_vtt_inits, dfs_build_secondary_vptr_vtt_inits): Use it.
2001-06-14  Jason Merrill  
2001-06-14  Jason Merrill  
        * class.c (dfs_find_final_overrider): Fix logic.
        * class.c (dfs_find_final_overrider): Fix logic.
        * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
        * class.c (update_vtable_entry_for_fn): Uncomment optimization to use
        virtual thunk instead of non-virtual.
        virtual thunk instead of non-virtual.
        (get_matching_virtual): Uncomment.
        (get_matching_virtual): Uncomment.
        * pt.c (unify): Don't recurse between the POINTER_TYPE and the
        * pt.c (unify): Don't recurse between the POINTER_TYPE and the
        OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
        OFFSET_TYPE.  If we're adding cv-quals, the extra ones would be on
        PARM, not ARG.
        PARM, not ARG.
2001-06-14  Nathan Sidwell  
2001-06-14  Nathan Sidwell  
        * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
        * class.c (dfs_accumulate_vtbl_inits): For case 2 & 3, make sure
        we've not emerged from the hierarchy of RTTI_BINFO on reaching
        we've not emerged from the hierarchy of RTTI_BINFO on reaching
        a non-virtual base.
        a non-virtual base.
2001-06-13  Mark Mitchell  
2001-06-13  Mark Mitchell  
        * NEWS: Update release number.
        * NEWS: Update release number.
2001-06-12  Nathan Sidwell  
2001-06-12  Nathan Sidwell  
        PR c++/3130, c++/3131, c++/3132
        PR c++/3130, c++/3131, c++/3132
        * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
        * cp-tree.h (BINFO_UNSHARED_MARKED): New #define.
        * class.c (force_canonical_binfo_r): Move
        * class.c (force_canonical_binfo_r): Move
        BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
        BINFO_UNSHARED_MARKED, BINFO_LOST_PRIMARY_P. Don't move
        virtual bases unless they're primary and what they're primary
        virtual bases unless they're primary and what they're primary
        too has been moved.
        too has been moved.
        (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
        (dfs_unshared_virtual_bases): Use BINFO_UNSHARED_MARKED. Cope
        with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
        with morally virtual bases. Duplicate BINFO_LOST_PRIMARY_P and
        BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
        BINFO_PRIMARY_BASE_OF. Clear BINFO_VTABLE for all but the most
        derived binfo.
        derived binfo.
        (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
        (mark_primary_bases): Use BINFO_UNSHARED_MARKED.
        (layout_nonempty_base_or_field): Add most derived type
        (layout_nonempty_base_or_field): Add most derived type
        parameter. Adjust.
        parameter. Adjust.
        (layout_empty_base): Likewise.
        (layout_empty_base): Likewise.
        (build_base_field): Likewise.
        (build_base_field): Likewise.
        (build_base_fields): Likewise.
        (build_base_fields): Likewise.
        (propagate_binfo_offsets): Add most derived type
        (propagate_binfo_offsets): Add most derived type
        parameter. Skip non canonical virtual bases too.
        parameter. Skip non canonical virtual bases too.
        (dfs_set_offset_for_unshared_vbases): Don't skip primary
        (dfs_set_offset_for_unshared_vbases): Don't skip primary
        bases. Do skip canonical bases.
        bases. Do skip canonical bases.
        (layout_virtual_bases): Adjust.
        (layout_virtual_bases): Adjust.
        (layout_class_type): Adjust.
        (layout_class_type): Adjust.
        (dfs_get_primary_binfo): Build list of virtual primary base
        (dfs_get_primary_binfo): Build list of virtual primary base
        candidates.
        candidates.
        (get_primary_binfo): Check that the shared virtual primary
        (get_primary_binfo): Check that the shared virtual primary
        base candidate was found first.
        base candidate was found first.
        (accumulate_vtbl_inits): Don't do anything for non-vptr
        (accumulate_vtbl_inits): Don't do anything for non-vptr
        containing binfos. For case 1 primary virtual bases, keep
        containing binfos. For case 1 primary virtual bases, keep
        checking that we've not emerged from the hierarchy of RTTI_BINFO.
        checking that we've not emerged from the hierarchy of RTTI_BINFO.
2001-06-12  Nathan Sidwell  
2001-06-12  Nathan Sidwell  
        PR c++/3089
        PR c++/3089
        * class.c (dfs_accumulate_vtbl_inits): Always walk down the
        * class.c (dfs_accumulate_vtbl_inits): Always walk down the
        hierarchy looking for primary bases for a ctor
        hierarchy looking for primary bases for a ctor
        vtable. Recursively call oneself, if we meet our primary via
        vtable. Recursively call oneself, if we meet our primary via
        this route and haven't met it yet via inheritance graph order.
        this route and haven't met it yet via inheritance graph order.
2001-06-11  Mark Mitchell  
2001-06-11  Mark Mitchell  
        * lang-options.h: Emit documentation for -fno-honor-std, not
        * lang-options.h: Emit documentation for -fno-honor-std, not
        -fhonor-std.
        -fhonor-std.
2001-06-10  Alexandre Oliva  
2001-06-10  Alexandre Oliva  
        * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
        * typeck.c (get_member_function_from_ptrfunc) [vbit_in_delta]:
        Don't clobber delta.
        Don't clobber delta.
        (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
        (expand_ptrmemfunc_cst) [ptrmemfunc_vbit_in_delta]: Adjust pfn.
2001-06-10  Mark Mitchell 
2001-06-10  Mark Mitchell 
            Gabriel Dos Reis  
            Gabriel Dos Reis  
        * Make-lang.in (cp/call.o): Depend on diagnostic.h
        * Make-lang.in (cp/call.o): Depend on diagnostic.h
        (cp/typeck.o): Depend on diagnostic.h
        (cp/typeck.o): Depend on diagnostic.h
        (cp/typeck2.o): Depend on diagnostic.h
        (cp/typeck2.o): Depend on diagnostic.h
        (cp/repo.o): Depend on dignostic.h
        (cp/repo.o): Depend on dignostic.h
        * typeck.c: #include diagnostic.h
        * typeck.c: #include diagnostic.h
        (convert_for_initialization): Remove extern declaration for
        (convert_for_initialization): Remove extern declaration for
        warningcount and errorcount.
        warningcount and errorcount.
        * call.c: #include diagnostic.h
        * call.c: #include diagnostic.h
        (convert_like_real): Remove extern declaration for warnincount and
        (convert_like_real): Remove extern declaration for warnincount and
        errorcount.
        errorcount.
        * repo.c: #include diagnostic.h
        * repo.c: #include diagnostic.h
        * typeck2.c: #include diagnostic.h
        * typeck2.c: #include diagnostic.h
2001-06-08  Nathan Sidwell  
2001-06-08  Nathan Sidwell  
        * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
        * decl.c (duplicate_decls): Fix DECL_TEMPLATE_RESULT thinko
        in previous change.
        in previous change.
2001-06-08  Nathan Sidwell  
2001-06-08  Nathan Sidwell  
        PR c++/2929
        PR c++/2929
        * friend.c (do_friend): Use push_decl_namespace for classes at
        * friend.c (do_friend): Use push_decl_namespace for classes at
        namespace scope.
        namespace scope.
2001-06-08  Nathan Sidwell  
2001-06-08  Nathan Sidwell  
            Jason Merrill 
            Jason Merrill 
        PR c++/3061
        PR c++/3061
        * class.c (build_secondary_vtable): Use assert, rather than an error
        * class.c (build_secondary_vtable): Use assert, rather than an error
        message.
        message.
        (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
        (dfs_fixup_binfo_vtbls): BINFO_VTABLE might be NULL.
        (dfs_accumulate_vtbl_inits): A lost primary virtual base may
        (dfs_accumulate_vtbl_inits): A lost primary virtual base may
        be between ORIG_BINFO and RTTI_BINFO, but neither of them.
        be between ORIG_BINFO and RTTI_BINFO, but neither of them.
        Don't set BINFO_VTABLE for a primary virtual base.
        Don't set BINFO_VTABLE for a primary virtual base.
2001-06-07  Mark Mitchell  
2001-06-07  Mark Mitchell  
        * decl.c (duplicate_decls): Update source position information
        * decl.c (duplicate_decls): Update source position information
        when a template function is defined.
        when a template function is defined.
2001-06-07  Phil Edwards  
2001-06-07  Phil Edwards  
        * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
        * lang-specs.h:  Move -D_GNU_SOURCE to config/linux.h.
2001-06-07  Nathan Sidwell  
2001-06-07  Nathan Sidwell  
        PR c++/2914
        PR c++/2914
        * decl.c (pushtag): Don't push into a complete type's scope.
        * decl.c (pushtag): Don't push into a complete type's scope.
2001-06-06  Jason Merrill  
2001-06-06  Jason Merrill  
        * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
        * cp-tree.h (THUNK_GENERATE_WITH_VTABLE_P): Lose.
        (struct lang_decl_flags): Lose generate_with_vtable_p.
        (struct lang_decl_flags): Lose generate_with_vtable_p.
        (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
        (BV_GENERATE_THUNK_WITH_VTABLE_P): Lose.
        * class.c (copy_virtuals): Adjust.
        * class.c (copy_virtuals): Adjust.
        * decl2.c (mark_vtable_entries): Adjust.
        * decl2.c (mark_vtable_entries): Adjust.
        * method.c (make_thunk, build_vtable_entry): Adjust.
        * method.c (make_thunk, build_vtable_entry): Adjust.
        * class.c (update_vtable_entry_for_fn): Only look as far as the
        * class.c (update_vtable_entry_for_fn): Only look as far as the
        first defining class.
        first defining class.
        (build_vtbl_initializer): Put nothing in the slot for a function only
        (build_vtbl_initializer): Put nothing in the slot for a function only
        defined in a lost primary virtual base.
        defined in a lost primary virtual base.
        (add_vcall_offset_vtbl_entries_1): Use the same code for
        (add_vcall_offset_vtbl_entries_1): Use the same code for
        the lost primary case and the normal case.
        the lost primary case and the normal case.
        (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
        (dfs_unshared_virtual_bases): Don't lose a non-virtual primary base.
        (get_vfield_offset, get_derived_offset): Lose.
        (get_vfield_offset, get_derived_offset): Lose.
        (dfs_find_final_overrider): Use look_for_overrides_here.
        (dfs_find_final_overrider): Use look_for_overrides_here.
        (get_matching_virtual): New fn.
        (get_matching_virtual): New fn.
        * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
        * semantics.c (emit_associated_thunks): Check BV_USE_VCALL_INDEX_P,
        not BV_VCALL_INDEX.
        not BV_VCALL_INDEX.
        * search.c (look_for_overrides_here): Split out from...
        * search.c (look_for_overrides_here): Split out from...
        (look_for_overrides_r): Here.
        (look_for_overrides_r): Here.
        * class.c (find_final_overrider): Return error_mark_node on error.
        * class.c (find_final_overrider): Return error_mark_node on error.
        * decl2.c (key_method): #if 0 accidental change.
        * decl2.c (key_method): #if 0 accidental change.
2001-06-06  John David Anglin  
2001-06-06  John David Anglin  
        * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
        * call.c (convert_default_arg): Use INTEGRAL_TYPE_P.
        (build_over_call): Likewise.
        (build_over_call): Likewise.
        * decl.c (grokparms): Likewise.
        * decl.c (grokparms): Likewise.
        * pt.c (tsubst_decl): Likewise.
        * pt.c (tsubst_decl): Likewise.
        * typeck.c (convert_arguments): Likewise.
        * typeck.c (convert_arguments): Likewise.
2001-06-05  Mark Mitchell  
2001-06-05  Mark Mitchell  
        * semantics.c (begin_class_definition): Robustify.
        * semantics.c (begin_class_definition): Robustify.
        * pt.c (instantiate_decl): Tell the repository code about the
        * pt.c (instantiate_decl): Tell the repository code about the
        clones, not the cloned functions.
        clones, not the cloned functions.
        * repo.c (repo_template_used): Explicitly instantiate the cloned
        * repo.c (repo_template_used): Explicitly instantiate the cloned
        function, not the clones.
        function, not the clones.
2001-06-05  Nathan Sidwell  
2001-06-05  Nathan Sidwell  
        * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
        * call.c (build_user_type_conversion_1): Set ICS_USER_FLAG and
        ICS_BAD_FLAG on created conversion.
        ICS_BAD_FLAG on created conversion.
        (compare_ics): Break out rank.
        (compare_ics): Break out rank.
2001-06-05  Nathan Sidwell  
2001-06-05  Nathan Sidwell  
        * decl.c (xref_tag): Remove extraneous %s on dependent name
        * decl.c (xref_tag): Remove extraneous %s on dependent name
        lookup warning.
        lookup warning.
2001-06-05  Nathan Sidwell  
2001-06-05  Nathan Sidwell  
        * class.c (layout_vtable_decl): Fix off by one error on
        * class.c (layout_vtable_decl): Fix off by one error on
        build_index_type.
        build_index_type.
        (build_vtt): Likewise.
        (build_vtt): Likewise.
        (build_ctor_vtbl_group): Likewise.
        (build_ctor_vtbl_group): Likewise.
2001-06-05  Nathan Sidwell  
2001-06-05  Nathan Sidwell  
        * class.c (maybe_indent_hierarchy): New function.
        * class.c (maybe_indent_hierarchy): New function.
        (dump_class_hierarchy_r): Add flags. Dump extra binfo
        (dump_class_hierarchy_r): Add flags. Dump extra binfo
        information, if enabled. Use maybe_indent_hierarchy. Adjust
        information, if enabled. Use maybe_indent_hierarchy. Adjust
        output format.
        output format.
        (dump_class_hierarchy): Adjust prototype. Adjust output format.
        (dump_class_hierarchy): Adjust prototype. Adjust output format.
        (dump_array, dump_vtable, dump_vtt): New functions.
        (dump_array, dump_vtable, dump_vtt): New functions.
        (finish_struct_1): Adjust hierarchy dumping.
        (finish_struct_1): Adjust hierarchy dumping.
        (initialize_vtable): Call dump_vtable.
        (initialize_vtable): Call dump_vtable.
        (build_vtt): Call dump_vtt.
        (build_vtt): Call dump_vtt.
        (build_ctor_vtbl_group): Call dump_vtable.
        (build_ctor_vtbl_group): Call dump_vtable.
        * decl2.c (flag_dump_class_layout): Remove.
        * decl2.c (flag_dump_class_layout): Remove.
        (cxx_decode_option): Remove dump translation unit
        (cxx_decode_option): Remove dump translation unit
        and dump class hierarchy check. Call dump_switch_p.
        and dump class hierarchy check. Call dump_switch_p.
        (finish_file): Adjust dumping.
        (finish_file): Adjust dumping.
        (dump.c): Only dump base classes if not TDF_SLIM.
        (dump.c): Only dump base classes if not TDF_SLIM.
        Only dump namespace members if not TDF_SLIM.
        Only dump namespace members if not TDF_SLIM.
        * optimize.c (dump_function): New function.
        * optimize.c (dump_function): New function.
        (optimize_function): Call dump_function.
        (optimize_function): Call dump_function.
        * semantics.c (expand_body): Use dump_enabled_p.
        * semantics.c (expand_body): Use dump_enabled_p.
2001-06-01  Nathan Sidwell  
2001-06-01  Nathan Sidwell  
        PR g++/2936
        PR g++/2936
        Part missed from first commit
        Part missed from first commit
        * decl2.c (finish_anon_union): Copy context.
        * decl2.c (finish_anon_union): Copy context.
2001-05-30  Nathan Sidwell  
2001-05-30  Nathan Sidwell  
        PR g++/2936
        PR g++/2936
        * optimize.c (remap_decl): Remap anonymous aggregate members too.
        * optimize.c (remap_decl): Remap anonymous aggregate members too.
2001-05-26  Nathan Sidwell  
2001-05-26  Nathan Sidwell  
        PR g++/2823
        PR g++/2823
        * semantics.c (expand_body): Don't optimize thunks.
        * semantics.c (expand_body): Don't optimize thunks.
2001-05-25  Sam TH  
2001-05-25  Sam TH  
        * cp-tree.h lex.h: Fix header include guards.
        * cp-tree.h lex.h: Fix header include guards.
2001-05-25  Mark Mitchell 
2001-05-25  Mark Mitchell 
        * decl.c (init_decl_processing): Tweak.
        * decl.c (init_decl_processing): Tweak.
2001-05-24  Mark Mitchell  
2001-05-24  Mark Mitchell  
        * decl.c (duplicate_decls): Tidy.
        * decl.c (duplicate_decls): Tidy.
        (init_decl_processing): Always set flag_no_builtin.
        (init_decl_processing): Always set flag_no_builtin.
2001-05-24  Nathan Sidwell  
2001-05-24  Nathan Sidwell  
        PR c++/2184
        PR c++/2184
        * decl2.c (do_local_using_decl): Push the decls, even in a
        * decl2.c (do_local_using_decl): Push the decls, even in a
        template.
        template.
2001-05-22  Mark Mitchell  
2001-05-22  Mark Mitchell  
        * optimize.c (initialize_inlined_parameters): Don't set
        * optimize.c (initialize_inlined_parameters): Don't set
        TREE_READONLY for a VAR_DECL taking the place of an inlined
        TREE_READONLY for a VAR_DECL taking the place of an inlined
        PARM_DECL.
        PARM_DECL.
2001-05-22  Jason Merrill  
2001-05-22  Jason Merrill  
        * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
        * class.c, cp-tree.h, rtti.c: Remove com_interface attribute support.
        * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
        * tree.c (cp_valid_lang_attribute): Warn about use of com_interface
        attribute.
        attribute.
2001-05-22  Joseph S. Myers  
2001-05-22  Joseph S. Myers  
        * parse.y: Refer to compound literals as such, not as
        * parse.y: Refer to compound literals as such, not as
        constructor-expressions.
        constructor-expressions.
2001-05-21  Mark Mitchell  
2001-05-21  Mark Mitchell  
        * call.c (build_op_delete_call): Ignore exception-specifications
        * call.c (build_op_delete_call): Ignore exception-specifications
        when looking for matching delete operators.
        when looking for matching delete operators.
        * init.c (build_new_1): Compute whether or not the allocation
        * init.c (build_new_1): Compute whether or not the allocation
        function used is a placement allocation function or not, and
        function used is a placement allocation function or not, and
        communicate this information to build_op_delete_call.
        communicate this information to build_op_delete_call.
2001-05-21  Jason Merrill  
2001-05-21  Jason Merrill  
        * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
        * class.c (build_vtable_entry_ref): Lose vtbl parm.  Fix for new abi.
        (build_vtbl_ref): Adjust.
        (build_vtbl_ref): Adjust.
        (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
        (dfs_accumulate_vtbl_inits): Set TREE_CONSTANT on the vtable address.
        * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
        * decl2.c (lang_f_options): Remove huge-objects, vtable-thunks.
        Re-add vtable-gc.
        Re-add vtable-gc.
        (unsupported_options): Correspondingly.
        (unsupported_options): Correspondingly.
        * decl2.c (maybe_make_one_only): Check flag_weak, not
        * decl2.c (maybe_make_one_only): Check flag_weak, not
        supports_one_only().
        supports_one_only().
        * cp-tree.def (START_CATCH_STMT): Lose.
        * cp-tree.def (START_CATCH_STMT): Lose.
        * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
        * dump.c (cp_dump_tree): Don't dump it.  Do dump HANDLER_PARMS.
        * tree.c (cp_statement_code_p): Don't case it.
        * tree.c (cp_statement_code_p): Don't case it.
        * semantics.c (cp_expand_stmt): Likewise.
        * semantics.c (cp_expand_stmt): Likewise.
        * cp-tree.h (START_CATCH_TYPE): Lose.
        * cp-tree.h (START_CATCH_TYPE): Lose.
        (HANDLER_TYPE): New.
        (HANDLER_TYPE): New.
        * except.c (expand_start_catch_block): Don't start any blocks.
        * except.c (expand_start_catch_block): Don't start any blocks.
        Return the type.
        Return the type.
        (expand_end_catch_block): Don't end any blocks.
        (expand_end_catch_block): Don't end any blocks.
        * parse.y (handler): Don't pass anything from finish_handler_parms
        * parse.y (handler): Don't pass anything from finish_handler_parms
        to finish_handler.
        to finish_handler.
        * pt.c (tsubst_expr): Likewise.
        * pt.c (tsubst_expr): Likewise.
        * semantics.c (begin_handler): Call note_level_for_catch here.
        * semantics.c (begin_handler): Call note_level_for_catch here.
        (finish_handler_parms): Don't return anything.
        (finish_handler_parms): Don't return anything.
        (genrtl_catch_block, begin_catch_block): Lose.
        (genrtl_catch_block, begin_catch_block): Lose.
        (genrtl_handler): Call expand_start_catch here.
        (genrtl_handler): Call expand_start_catch here.
2001-05-18  Jason Merrill  
2001-05-18  Jason Merrill  
        * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
        * class.c (build_vtable): Set DECL_ASSEMBLER_NAME for vtables here.
        (get_vtable_decl, build_vtt): Not here.
        (get_vtable_decl, build_vtt): Not here.
2001-05-20  Nathan Sidwell  
2001-05-20  Nathan Sidwell  
        PR c++/2781
        PR c++/2781
        * optimize.c (update_cloned_parm): Copy addressability and other
        * optimize.c (update_cloned_parm): Copy addressability and other
        flags.
        flags.
2001-05-20  Kriang Lerdsuwanakij  
2001-05-20  Kriang Lerdsuwanakij  
        * pt.c (determine_specialization): Ignore artificial functions.
        * pt.c (determine_specialization): Ignore artificial functions.
2001-05-20  Neil Booth  
2001-05-20  Neil Booth  
        * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
        * cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
        (C_RID_CODE): Remove.
        (C_RID_CODE): Remove.
        * lex.c (cxx_init_options): Call set_identifier_size.  Update.
        * lex.c (cxx_init_options): Call set_identifier_size.  Update.
        (init_parse): Don't do it here.
        (init_parse): Don't do it here.
2001-05-18  Diego Novillo  
2001-05-18  Diego Novillo  
        * decl2.c (finish_objects): Use the original SYMBOL_REF from the
        * decl2.c (finish_objects): Use the original SYMBOL_REF from the
        function declaration to avoid stripping the symbol's attributes.
        function declaration to avoid stripping the symbol's attributes.
2001-05-18  Nathan Sidwell  
2001-05-18  Nathan Sidwell  
        * decl.c (pushdecl): Adjust error string.
        * decl.c (pushdecl): Adjust error string.
        (xref_tag): Adjust friend class injection warning. Remove the
        (xref_tag): Adjust friend class injection warning. Remove the
        inherited name from the class shadowed scope.
        inherited name from the class shadowed scope.
2001-05-17  Mark Mitchell  
2001-05-17  Mark Mitchell  
        * except.c (cp_protect_cleanup_actions): New function.
        * except.c (cp_protect_cleanup_actions): New function.
        (init_exception_processing): Don't set protect_cleanup_actions
        (init_exception_processing): Don't set protect_cleanup_actions
        here.  Do set lang_protect_cleanup_actions.
        here.  Do set lang_protect_cleanup_actions.
2001-05-16  Nathan Sidwell  
2001-05-16  Nathan Sidwell  
        * spew.c (read_token): Call yyerror on all unexpected tokens.
        * spew.c (read_token): Call yyerror on all unexpected tokens.
2001-05-16  Nathan Sidwell  
2001-05-16  Nathan Sidwell  
        * init.c (member_init_ok_or_else): Take a tree rather than
        * init.c (member_init_ok_or_else): Take a tree rather than
        string for name.
        string for name.
        (expand_member_init): Adjust.
        (expand_member_init): Adjust.
2001-05-14  Nick Clifton  
2001-05-14  Nick Clifton  
        * decl.c (duplicate_decls): Suppress warning about duplicate
        * decl.c (duplicate_decls): Suppress warning about duplicate
        decls if the first decl is a friend.
        decls if the first decl is a friend.
2001-05-12  Zack Weinberg  
2001-05-12  Zack Weinberg  
        * except.c (choose_personality_routine): Export.  Add
        * except.c (choose_personality_routine): Export.  Add
        explanatory comment.  Take an enum languages, not a boolean.
        explanatory comment.  Take an enum languages, not a boolean.
        (initialize_handler_parm): Adjust to match.
        (initialize_handler_parm): Adjust to match.
        * cp-tree.h: Prototype choose_personality_routine.
        * cp-tree.h: Prototype choose_personality_routine.
        * lex.c (handle_pragma_java_exceptions): New function.
        * lex.c (handle_pragma_java_exceptions): New function.
        (init_cp_pragma): Register #pragma GCC java_exceptions.
        (init_cp_pragma): Register #pragma GCC java_exceptions.
2001-05-12  Neil Booth  
2001-05-12  Neil Booth  
        * method.c (build_mangled_C99_name): Remove unused prototype.
        * method.c (build_mangled_C99_name): Remove unused prototype.
2001-05-12  Alexandre Oliva  
2001-05-12  Alexandre Oliva  
        * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
        * cp-tree.h (ptrmemfunc_vbit_where_t): Declare type.
        * typeck.c (get_member_function_from_ptrfunc,
        * typeck.c (get_member_function_from_ptrfunc,
        build_ptrmemfunc, expand_ptrmemfunc_cst): Take
        build_ptrmemfunc, expand_ptrmemfunc_cst): Take
        TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
        TARGET_PTRMEMFUNC_VBIT_LOCATION into account.
        Reverted Geoff Keating's 2001-05-03's patch.
        Reverted Geoff Keating's 2001-05-03's patch.
2001-05-11  Ira Ruben   
2001-05-11  Ira Ruben   
        * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
        * cp/cp-tree.h (C_EXP_ORIGINAL_CODE): Delete; declared in c-common.h.
2001-05-11  Neil Booth  
2001-05-11  Neil Booth  
        * cp-tree.h (finish_label_expr, lookup_label): Delete.
        * cp-tree.h (finish_label_expr, lookup_label): Delete.
        * parse.y: Update for '&&'; don't issue warning here.
        * parse.y: Update for '&&'; don't issue warning here.
        * semantics.c (finish_label_expr): Delete.
        * semantics.c (finish_label_expr): Delete.
2001-05-07  Mark Mitchell  
2001-05-07  Mark Mitchell  
        * splay-tree.h (splay_tree_max): New function.
        * splay-tree.h (splay_tree_max): New function.
        (splay_tree_min): Likewise.
        (splay_tree_min): Likewise.
2001-05-03  Geoffrey Keating  
2001-05-03  Geoffrey Keating  
        * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
        * cp-tree.h (enum cp_tree_index): Add CPTI_PFN_VFLAG_IDENTIFIER.
        (pfn_vflag_identifier): Define.
        (pfn_vflag_identifier): Define.
        Update comment about layout of pointer functions.
        Update comment about layout of pointer functions.
        (build_ptrmemfunc1): Update prototype.
        (build_ptrmemfunc1): Update prototype.
        (expand_ptrmemfunc_cst): Update prototype.
        (expand_ptrmemfunc_cst): Update prototype.
        * decl.c (initialize_predefined_identifiers): Initialize
        * decl.c (initialize_predefined_identifiers): Initialize
        pfn_vflag_identifier.
        pfn_vflag_identifier.
        (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
        (build_ptrmemfunc_type): When FUNCTION_BOUNDARY < 16, add
        an extra field to the type.
        an extra field to the type.
        * expr.c (cplus_expand_constant): Pass 'flag' between
        * expr.c (cplus_expand_constant): Pass 'flag' between
        expand_ptrmemfunc_cst and build_ptrmemfunc1.
        expand_ptrmemfunc_cst and build_ptrmemfunc1.
        * typeck.c (get_member_function_from_ptrfunc): When
        * typeck.c (get_member_function_from_ptrfunc): When
        FUNCTION_BOUNDARY < 16, look at additional field to determine
        FUNCTION_BOUNDARY < 16, look at additional field to determine
        if a pointer-to-member is a real pointer or a vtable offset.
        if a pointer-to-member is a real pointer or a vtable offset.
        (build_ptrmemfunc1): Add new parameter to contain extra field.
        (build_ptrmemfunc1): Add new parameter to contain extra field.
        (build_ptrmemfunc): Pass the extra field around.
        (build_ptrmemfunc): Pass the extra field around.
        (expand_ptrmemfunc_cst): Add new parameter to return extra field.
        (expand_ptrmemfunc_cst): Add new parameter to return extra field.
        (pfn_from_ptrmemfunc): Ignore the extra field.
        (pfn_from_ptrmemfunc): Ignore the extra field.
2001-05-03  Mark Mitchell  
2001-05-03  Mark Mitchell  
        * cp-tree.h (flag_inline_trees): Update documentation.
        * cp-tree.h (flag_inline_trees): Update documentation.
        * decl.c (init_decl_processing): Adjust handling of
        * decl.c (init_decl_processing): Adjust handling of
        flag_inline_functions and flag_inline_trees to support -O3.
        flag_inline_functions and flag_inline_trees to support -O3.
        (grokfndecl): Set DECL_INLINE on all functions if that's what
        (grokfndecl): Set DECL_INLINE on all functions if that's what
        the user requested.
        the user requested.
        (save_function_data): Clear DECL_INLINE in
        (save_function_data): Clear DECL_INLINE in
        current_function_cannot_inline is non-NULL.
        current_function_cannot_inline is non-NULL.
        * decl2.c (flag_inline_trees): Update documentation.
        * decl2.c (flag_inline_trees): Update documentation.
2001-05-03  Nathan Sidwell  
2001-05-03  Nathan Sidwell  
        * dump.c (cp_dump_tree, USING_STMT case): New case.
        * dump.c (cp_dump_tree, USING_STMT case): New case.
        * tree.c (cp_statement_code_p): Add USING_STMT.
        * tree.c (cp_statement_code_p): Add USING_STMT.
        * decl2.c (do_using_directive): Add the using directive statement.
        * decl2.c (do_using_directive): Add the using directive statement.
        * tree.c (walk_tree): Reformat an if block.
        * tree.c (walk_tree): Reformat an if block.
2001-05-02  Mark Mitchell  
2001-05-02  Mark Mitchell  
        * decl.c (compute_array_index_type): Don't try to do anything with
        * decl.c (compute_array_index_type): Don't try to do anything with
        the indices when processing a template.
        the indices when processing a template.
2001-05-02  Kaveh R. Ghazi  
2001-05-02  Kaveh R. Ghazi  
        * call.c: NULL_PTR -> NULL.
        * call.c: NULL_PTR -> NULL.
        * class.c: Likewise.
        * class.c: Likewise.
        * cvt.c: Likewise.
        * cvt.c: Likewise.
        * decl.c: Likewise.
        * decl.c: Likewise.
        * decl2.c: Likewise.
        * decl2.c: Likewise.
        * except.c: Likewise.
        * except.c: Likewise.
        * init.c: Likewise.
        * init.c: Likewise.
        * rtti.c: Likewise.
        * rtti.c: Likewise.
        * search.c: Likewise.
        * search.c: Likewise.
        * tree.c: Likewise.
        * tree.c: Likewise.
        * typeck.c: Likewise.
        * typeck.c: Likewise.
        * typeck2.c: Likewise.
        * typeck2.c: Likewise.
2001-05-02  Mark Mitchell  
2001-05-02  Mark Mitchell  
        * decl2.c (do_using_directive): Revert previous patch.
        * decl2.c (do_using_directive): Revert previous patch.
2001-05-01  Nathan Sidwell  
2001-05-01  Nathan Sidwell  
        * cp-tree.def (USING_STMT): New statement node.
        * cp-tree.def (USING_STMT): New statement node.
        * cp-tree.h (USING_STMT_NAMESPACE): New macro.
        * cp-tree.h (USING_STMT_NAMESPACE): New macro.
        * decl2.c (do_using_directive): Add USING_STMT to statement
        * decl2.c (do_using_directive): Add USING_STMT to statement
        tree. Don't emit errors when processing template decl.
        tree. Don't emit errors when processing template decl.
        * pt.c (tsubst_expr, USING_STMT case): New case.
        * pt.c (tsubst_expr, USING_STMT case): New case.
        * semantics.c (cp_expand_stmt, USING_STMT case): New case.
        * semantics.c (cp_expand_stmt, USING_STMT case): New case.
2001-05-01  Nathan Sidwell  
2001-05-01  Nathan Sidwell  
        * call.c (build_new_op): Convert args from reference here.
        * call.c (build_new_op): Convert args from reference here.
        (build_conditional_expr): Don't convert here.
        (build_conditional_expr): Don't convert here.
2001-05-01  Nathan Sidwell  
2001-05-01  Nathan Sidwell  
        * spew.c (last_token_id): New static variable.
        * spew.c (last_token_id): New static variable.
        (read_token): Set it here.
        (read_token): Set it here.
        (yyerror): Use it here.
        (yyerror): Use it here.
2001-04-30  Richard Henderson  
2001-04-30  Richard Henderson  
        * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
        * cvt.c: Downcase C_PROMOTING_INTEGER_TYPE_P invocations.
        * decl.c: Likewise.
        * decl.c: Likewise.
2001-04-30  Mark Mitchell  
2001-04-30  Mark Mitchell  
        * gxxint.texi: Remove.
        * gxxint.texi: Remove.
        * Make-lang.in: Remove all traces of gxxint.texi.
        * Make-lang.in: Remove all traces of gxxint.texi.
2001-04-30  Mark P Mitchell  
2001-04-30  Mark P Mitchell  
        * decl2.c (start_static_initialization_or_destruction): Correct
        * decl2.c (start_static_initialization_or_destruction): Correct
        logic to handle the -fno-use-cxa-atexit case.
        logic to handle the -fno-use-cxa-atexit case.
2001-04-30  Mark Mitchell  
2001-04-30  Mark Mitchell  
        * optimize.c (update_cloned_parm): New function.
        * optimize.c (update_cloned_parm): New function.
        (maybe_clone_body): Use it.  Update the `this' parameter too.
        (maybe_clone_body): Use it.  Update the `this' parameter too.
2001-04-29  Joseph S. Myers  
2001-04-29  Joseph S. Myers  
        * decl2.c (unsupported_options): Add new-abi.
        * decl2.c (unsupported_options): Add new-abi.
        * lang-options.h: Remove no longer supported options.
        * lang-options.h: Remove no longer supported options.
2001-04-27  Nathan Sidwell  
2001-04-27  Nathan Sidwell  
        * except.c (can_convert_eh): Don't check template parms,
        * except.c (can_convert_eh): Don't check template parms,
        typename types etc.
        typename types etc.
2001-04-27  Nathan Sidwell  
2001-04-27  Nathan Sidwell  
        * optimize.c (maybe_clone_body): Copy parameter names and locations.
        * optimize.c (maybe_clone_body): Copy parameter names and locations.
2001-04-27  Nathan Sidwell  
2001-04-27  Nathan Sidwell  
        * cp-tree.h (adjust_clone_args): Prototype new function.
        * cp-tree.h (adjust_clone_args): Prototype new function.
        * class.c (adjust_clone_args): New function.
        * class.c (adjust_clone_args): New function.
        * decl.c (start_function): Call it for in charge ctors.
        * decl.c (start_function): Call it for in charge ctors.
2001-04-26  Mark Mitchell  
2001-04-26  Mark Mitchell  
        * method.c (use_thunk): Make sure that thunks really are emitted
        * method.c (use_thunk): Make sure that thunks really are emitted
        when requested.
        when requested.
2001-04-26  Nathan Sidwell 
2001-04-26  Nathan Sidwell 
        * mangle.c (write_chars): New macro.
        * mangle.c (write_chars): New macro.
        (hwint_to_ascii): New function
        (hwint_to_ascii): New function
        (write_number): Use it.
        (write_number): Use it.
        (write_integer_cst): Deal with really big numbers.
        (write_integer_cst): Deal with really big numbers.
2001-04-25  Mark Mitchell  
2001-04-25  Mark Mitchell  
        * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
        * optimize.c (maybe_clone_body): Copy TREE_PUBLIC before emitting
        the clone.
        the clone.
2001-04-25  Nathan Sidwell  
2001-04-25  Nathan Sidwell  
        * decl.c (grokdeclarator): Set context of namespace scope
        * decl.c (grokdeclarator): Set context of namespace scope
        TYPE_DECLS.
        TYPE_DECLS.
2001-04-24  Zack Weinberg  
2001-04-24  Zack Weinberg  
        * cp/optimize.c: Include hashtab.h.
        * cp/optimize.c: Include hashtab.h.
        (struct inline_data): Add tree_pruner.
        (struct inline_data): Add tree_pruner.
        (expand_call_inline, expand_calls_inline): Use it when calling
        (expand_call_inline, expand_calls_inline): Use it when calling
        walk_tree.
        walk_tree.
        (optimize_function): Initialize and free tree_pruner.
        (optimize_function): Initialize and free tree_pruner.
2001-04-24  Nathan Sidwell 
2001-04-24  Nathan Sidwell 
        Lazy __FUNCTION__ generation.
        Lazy __FUNCTION__ generation.
        * cp-tree.def (FUNCTION_NAME): Remove.
        * cp-tree.def (FUNCTION_NAME): Remove.
        * cp-tree.h (function_name_declared_p): Remove.
        * cp-tree.h (function_name_declared_p): Remove.
        (cp_fname_init): Prototype.
        (cp_fname_init): Prototype.
        * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
        * decl.c (init_decl_processing): Don't generate __FUNCTION__ et al ids,
        don't call declare_function_name. Call start_fname_decls.
        don't call declare_function_name. Call start_fname_decls.
        (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
        (cp_make_fname_decl): Adjust parameters. Generate the name. Don't
        clobber the line number.
        clobber the line number.
        (cp_fname_init): New function.
        (cp_fname_init): New function.
        (start_function): Call start_fname_decls.
        (start_function): Call start_fname_decls.
        (finish_function): Call finish_fname_decls.
        (finish_function): Call finish_fname_decls.
        * lex.c (reswords): Add slots for __FUNCTION__ et al.
        * lex.c (reswords): Add slots for __FUNCTION__ et al.
        (rid_to_yy): Add mappings for __FUNCTION__ et al.
        (rid_to_yy): Add mappings for __FUNCTION__ et al.
        * optimize.c (maybe_clone_body): Remove function_name_declared_p.
        * optimize.c (maybe_clone_body): Remove function_name_declared_p.
        * parse.y (VAR_FUNC_NAME): New token.
        * parse.y (VAR_FUNC_NAME): New token.
        (primary): Add VAR_FUNC_NAME.
        (primary): Add VAR_FUNC_NAME.
        * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
        * pt.c (tsubst_decl): Adjust a DECL_PRETTY_FUNCTION_P's
        generation.
        generation.
        (tsubst, FUNCTION_NAME case): Remove.
        (tsubst, FUNCTION_NAME case): Remove.
        (tsubst_copy, FUNCTION_NAME case): Remove.
        (tsubst_copy, FUNCTION_NAME case): Remove.
        (tsubst_expr, DECL_STMT case): Be careful with a
        (tsubst_expr, DECL_STMT case): Be careful with a
        DECL_PRETTY_FUNCTION_P.
        DECL_PRETTY_FUNCTION_P.
        (instantiate_decl): Remove function_name_declared_p.
        (instantiate_decl): Remove function_name_declared_p.
        * semantics.c (begin_compound_statement): Don't call
        * semantics.c (begin_compound_statement): Don't call
        declare_function_name here.
        declare_function_name here.
        (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
        (setup_vtbl_ptr). Don't save & restore function_name_declared_p.
        (finish_translation_unit): Call finish_fname_decls.
        (finish_translation_unit): Call finish_fname_decls.
        (expand_body): Remove function_name_declared_p.
        (expand_body): Remove function_name_declared_p.
        * typeck2.c (digest_init): Allow any ERROR_MARK.
        * typeck2.c (digest_init): Allow any ERROR_MARK.
2001-04-24  Nathan Sidwell  
2001-04-24  Nathan Sidwell  
        * pt.c (tsubst_decl): Use VOID_TYPE_P.
        * pt.c (tsubst_decl): Use VOID_TYPE_P.
        * semantics.c: Fix some typos.
        * semantics.c: Fix some typos.
2001-04-23  Phil Edwards  
2001-04-23  Phil Edwards  
        * cp/decl2.c (flag_honor_std):  Always initialize to 1.
        * cp/decl2.c (flag_honor_std):  Always initialize to 1.
2001-04-22  Kaveh R. Ghazi  
2001-04-22  Kaveh R. Ghazi  
        * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
        * xref.c (GNU_xref_file): Use concat in lieu of xmalloc/sprintf.
2001-04-23  Jason Merrill  
2001-04-23  Jason Merrill  
        * except.c (build_throw): Wrap the initialization of the exception
        * except.c (build_throw): Wrap the initialization of the exception
        object in a MUST_NOT_THROW_EXPR.
        object in a MUST_NOT_THROW_EXPR.
        (do_free_exception): #if 0.
        (do_free_exception): #if 0.
2001-04-20  Mark Mitchell  
2001-04-20  Mark Mitchell  
        * cp-tree.h (finish_enum): Change prototype.
        * cp-tree.h (finish_enum): Change prototype.
        * decl.c (finish_enum): Reorganize.
        * decl.c (finish_enum): Reorganize.
        * parse.y (structsp): Adjust calls to finish_enum.
        * parse.y (structsp): Adjust calls to finish_enum.
2001-04-20  Nathan Sidwell  
2001-04-20  Nathan Sidwell  
        * tree.c (cp_tree_equal): Adjust final switch formatting. Add
        * tree.c (cp_tree_equal): Adjust final switch formatting. Add
        't' case.
        't' case.
2001-04-20  Nathan Sidwell  
2001-04-20  Nathan Sidwell  
        * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
        * class.c (dfs_unshared_virtual_bases): Add ATTRIBUTE_UNUSED.
        (layout_empty_base): Return at end flag.
        (layout_empty_base): Return at end flag.
        (build_base_field): Likewise.
        (build_base_field): Likewise.
        (build_base_fields): Likewise.
        (build_base_fields): Likewise.
        (layout_virtual_bases): Don't add 1 to eoc value.
        (layout_virtual_bases): Don't add 1 to eoc value.
        (end_of_class): Use full size for empty bases.
        (end_of_class): Use full size for empty bases.
        (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
        (layout_class_type): Clear CLASSNEARLY_EMPTY_P if we appended
        empty bases. Don't add 1 to eoc value. Only add trailing padding
        empty bases. Don't add 1 to eoc value. Only add trailing padding
        if we're an empty class with no empty bases.
        if we're an empty class with no empty bases.
        (dump_class_hierarchy): Dump size and alignment.
        (dump_class_hierarchy): Dump size and alignment.
2001-04-20  Jakub Jelinek  
2001-04-20  Jakub Jelinek  
        * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
        * call.c (maybe_handle_ref_bind): Copy ICS_USER_FLAG and
        ICS_BAD_FLAG.
        ICS_BAD_FLAG.
2001-04-20  Jakub Jelinek  
2001-04-20  Jakub Jelinek  
        * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
        * search.c (lookup_field_r): If looking for type and non-TYPE_DECL
        is found, look first if name does not match the structure name.
        is found, look first if name does not match the structure name.
2001-04-19  Mark Mitchell  
2001-04-19  Mark Mitchell  
        * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
        * cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
        set.
        set.
        (SET_DECL_LANGUAGE): New macro.
        (SET_DECL_LANGUAGE): New macro.
        * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
        * decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
        (pushdecl): Likewise.
        (pushdecl): Likewise.
        (build_library_fn_1): Likewise.
        (build_library_fn_1): Likewise.
        (build_cp_library_fn): Likewise.
        (build_cp_library_fn): Likewise.
        (grokfndecl): Likewise.
        (grokfndecl): Likewise.
        (grokvardecl): Mark `extern "C"' variables as having C linkage.
        (grokvardecl): Mark `extern "C"' variables as having C linkage.
        * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
        * decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
        * lex.c (retrofit_lang_decl): Likewise.
        * lex.c (retrofit_lang_decl): Likewise.
        * mangle.c (mangle_decl_string): Don't mangle the names of
        * mangle.c (mangle_decl_string): Don't mangle the names of
        variables declared with C language linkage.
        variables declared with C language linkage.
        * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
        * semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.
2001-04-18  John David Anglin  
2001-04-18  John David Anglin  
        * semantics.c (simplify_aggr_init_exprs_r): Don't restore
        * semantics.c (simplify_aggr_init_exprs_r): Don't restore
        flag_access_control from uninitialized storage.
        flag_access_control from uninitialized storage.
2001-04-15  Mark Mitchell  
2001-04-15  Mark Mitchell  
        * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
        * cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
        * mangle.c (write_pointer_to_member_type): Fix mangling of
        * mangle.c (write_pointer_to_member_type): Fix mangling of
        pointers to cv-qualified member function types.
        pointers to cv-qualified member function types.
        * init.c (build_delete): Create a SAVE_EXPR for the address if
        * init.c (build_delete): Create a SAVE_EXPR for the address if
        we're going to use it more than once.
        we're going to use it more than once.
2001-04-13  Mark Mitchell  
2001-04-13  Mark Mitchell  
        * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
        * cp-tree.h (DELTA2_FROM_PTRMEMFUNC): Remove.
        (expand_ptremfunc_cst): Change prototype.
        (expand_ptremfunc_cst): Change prototype.
        (delta2_from_ptrmemfunc): Remove.
        (delta2_from_ptrmemfunc): Remove.
        * expr.c (cplus_expand_constant): Adjust call to
        * expr.c (cplus_expand_constant): Adjust call to
        expand_ptrmemfunc_cst.
        expand_ptrmemfunc_cst.
        * typeck.c (build_ptrmemfunc1): Simplify.
        * typeck.c (build_ptrmemfunc1): Simplify.
        (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
        (build_ptrmemfunc): Make sure that casting a PTRMEM_CST still
        results in a constant.
        results in a constant.
        (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
        (expand_ptrmemfunc_cst): Remove idx and delta2 parameters.
        (delta2_from_ptrmemfunc): Remove.
        (delta2_from_ptrmemfunc): Remove.
        (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
        (pfn_from_ptrmemfunc): Adjust call to expand_ptrmemfunc_cst.
2001-04-12  Jason Merrill  
2001-04-12  Jason Merrill  
        * cp-tree.h (decl_namespace_list): New macro.
        * cp-tree.h (decl_namespace_list): New macro.
        (struct saved_scope): Add decl_ns_list.
        (struct saved_scope): Add decl_ns_list.
        * decl.c (mark_saved_scope): Mark it.
        * decl.c (mark_saved_scope): Mark it.
        * decl2.c: Lose static decl_namespace_list.
        * decl2.c: Lose static decl_namespace_list.
        (init_decl2): Don't save it.
        (init_decl2): Don't save it.
2001-04-12  Kaveh R. Ghazi  
2001-04-12  Kaveh R. Ghazi  
        * cp-tree.h (warn_return_type, yylex): Delete redundant
        * cp-tree.h (warn_return_type, yylex): Delete redundant
        declarations.
        declarations.
        * decl.c (current_class_depth, global_namespace): Likewise.
        * decl.c (current_class_depth, global_namespace): Likewise.
        * decl2.c (current_class_depth, flag_gnu_xref): Likewise
        * decl2.c (current_class_depth, flag_gnu_xref): Likewise
        * repo.c (flag_use_repository): Likewise.
        * repo.c (flag_use_repository): Likewise.
2001-04-12  Kaveh R. Ghazi  
2001-04-12  Kaveh R. Ghazi  
        * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
        * cp-tree.h (pedantic, convert, global_bindings_p, insert_block,
        set_block, pushdecl, getdecls, gettags, init_decl_processing,
        set_block, pushdecl, getdecls, gettags, init_decl_processing,
        maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
        maybe_build_cleanup, copy_lang_decl, prep_stmt, lvalue_p,
        lvalue_or_else, print_lang_statistics, comp_target_types,
        lvalue_or_else, print_lang_statistics, comp_target_types,
        unsigned_type, signed_type, signed_or_unsigned_type,
        unsigned_type, signed_type, signed_or_unsigned_type,
        build_function_call, mark_addressable, incomplete_type_error):
        build_function_call, mark_addressable, incomplete_type_error):
        Delete redundant declarations.
        Delete redundant declarations.
2001-04-11  Jason Merrill  
2001-04-11  Jason Merrill  
        * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
        * cp-tree.h (TYPE_LINKAGE_IDENTIFIER): New macro.
        (TYPE_ANONYMOUS_P): New macro.
        (TYPE_ANONYMOUS_P): New macro.
        (TAGGED_TYPE_P): New macro.
        (TAGGED_TYPE_P): New macro.
        * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
        * decl.c (check_tag_decl): Use TYPE_ANONYMOUS_P.
        (grokfndecl, grokvardecl, grokdeclarator): Likewise.
        (grokfndecl, grokvardecl, grokdeclarator): Likewise.
        * tree.c (no_linkage_helper): Likewise.
        * tree.c (no_linkage_helper): Likewise.
        * semantics.c (begin_class_definition): Likewise.
        * semantics.c (begin_class_definition): Likewise.
        * pt.c (convert_template_argument): Likewise.
        * pt.c (convert_template_argument): Likewise.
        * lex.c (check_for_missing_semicolon): Likewise.
        * lex.c (check_for_missing_semicolon): Likewise.
2001-04-12  Nathan Sidwell  
2001-04-12  Nathan Sidwell  
        * class.c (dfs_unshared_virtual_bases): New function.
        * class.c (dfs_unshared_virtual_bases): New function.
        (mark_primary_bases): Call it.
        (mark_primary_bases): Call it.
        (check_bases): Ignore virtual bases when determining
        (check_bases): Ignore virtual bases when determining
        nearly-emptiness.
        nearly-emptiness.
2001-04-12  Nathan Sidwell  
2001-04-12  Nathan Sidwell  
        * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
        * method.c (make_thunk): Clear DECL_CLONED_FUNCTION.
2001-04-11  Mark Mitchell  
2001-04-11  Mark Mitchell  
        * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
        * optimize.c (maybe_clone_body): Copy DECL_NUM_STMTS from the
        cloned function to the clone.
        cloned function to the clone.
2001-04-11  Kaveh R. Ghazi  
2001-04-11  Kaveh R. Ghazi  
        * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
        * Make-lang.in (cp/semantics.o): Depend on $(EXPR_H).
        * semantics.c: Include expr.h.
        * semantics.c: Include expr.h.
2001-04-11  Nathan Sidwell  
2001-04-11  Nathan Sidwell  
        * method.c (implicitly_declare_fn): Commonize code for copy ctor
        * method.c (implicitly_declare_fn): Commonize code for copy ctor
        and assignment op. Set TREE_USED for parameter.
        and assignment op. Set TREE_USED for parameter.
2001-04-10  Mark Mitchell  
2001-04-10  Mark Mitchell  
        * class.c (find_final_overrider_data): Add `candidates'.
        * class.c (find_final_overrider_data): Add `candidates'.
        (dfs_find_final_overrider): Don't issue error messages
        (dfs_find_final_overrider): Don't issue error messages
        prematurely.
        prematurely.
        (find_final_overrider): Issue error messages here.
        (find_final_overrider): Issue error messages here.
        (build_base_field): Don't warn about amgibuous direct bases here.
        (build_base_field): Don't warn about amgibuous direct bases here.
        (warn_about_ambiguous_direct_bases): New function.
        (warn_about_ambiguous_direct_bases): New function.
        (layout_class_type): Use it.
        (layout_class_type): Use it.
2001-04-10  Richard Henderson  
2001-04-10  Richard Henderson  
        * typeck.c (build_array_ref): Push the array reference inside
        * typeck.c (build_array_ref): Push the array reference inside
        COMPOUND_EXPR and COND_EXPR.
        COMPOUND_EXPR and COND_EXPR.
2001-04-05  Mark Mitchell  
2001-04-05  Mark Mitchell  
        * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
        * cp-tree.h (DECL_THIS_INLINE): Rename to DECL_DECLARED_INLINE_P.
        * decl.c (duplicate_decls): Adjust accordingly.
        * decl.c (duplicate_decls): Adjust accordingly.
        (maybe_commonize_var): Likewise.
        (maybe_commonize_var): Likewise.
        (grokfndecl): Likewise.
        (grokfndecl): Likewise.
        (start_function): Likewise.
        (start_function): Likewise.
        (start_method): Likewise.
        (start_method): Likewise.
        * decl2.c (key_method): Likewise.
        * decl2.c (key_method): Likewise.
        (import_export_decl): Likewise.
        (import_export_decl): Likewise.
        * method.c (implicitly_declare_fn): Likewise.
        * method.c (implicitly_declare_fn): Likewise.
        * optimize.c (maybe_clone_body): Likewise.
        * optimize.c (maybe_clone_body): Likewise.
2001-04-05  Benjamin Kosnik  
2001-04-05  Benjamin Kosnik  
        * lang-specs.h: Add __DEPRECATED.
        * lang-specs.h: Add __DEPRECATED.
2001-04-05  J"orn Rennecke 
2001-04-05  J"orn Rennecke 
        * search.c (get_dynamic_cast_base_type): When building a new
        * search.c (get_dynamic_cast_base_type): When building a new
        constant, set its type to ssizetype.
        constant, set its type to ssizetype.
2001-04-04  Jakub Jelinek  
2001-04-04  Jakub Jelinek  
        * optimize.c (expand_call_inline): Only add newly inlined statements
        * optimize.c (expand_call_inline): Only add newly inlined statements
        into inlined_stmts.
        into inlined_stmts.
2001-04-03  Mark Mitchell  
2001-04-03  Mark Mitchell  
        * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
        * cp-tree.h (OPERATOR_ASSIGN_FORMAT): Remove.
        (OPERATOR_FORMAT): Likewise.
        (OPERATOR_FORMAT): Likewise.
        (OPERATOR_TYPENAME_FORMAT): Likewise.
        (OPERATOR_TYPENAME_FORMAT): Likewise.
        * operators.def: Remove old name-mangling information.
        * operators.def: Remove old name-mangling information.
        * decl.c (grok_op_properties): Adjust accordingly.
        * decl.c (grok_op_properties): Adjust accordingly.
        * lex.c (init_operators): Likewise.
        * lex.c (init_operators): Likewise.
        * rtti.c (get_tinfo_decl): Issue error messages about types that
        * rtti.c (get_tinfo_decl): Issue error messages about types that
        have variable size.
        have variable size.
2001-04-03  Mark Mitchell  
2001-04-03  Mark Mitchell  
        * decl2.c (import_export_decl): Don't call import_export_class
        * decl2.c (import_export_decl): Don't call import_export_class
        when processing an inline member function.
        when processing an inline member function.
        * semantics.c (expand_body): Call import_export_decl before
        * semantics.c (expand_body): Call import_export_decl before
        emitting inline functions.
        emitting inline functions.
2001-03-28  Richard Henderson  
2001-03-28  Richard Henderson  
        IA-64 ABI Exception Handling:
        IA-64 ABI Exception Handling:
        * cp-tree.def (EH_SPEC_BLOCK): New.
        * cp-tree.def (EH_SPEC_BLOCK): New.
        (MUST_NOT_THROW_EXPR): New.
        (MUST_NOT_THROW_EXPR): New.
        * cp-tree.h: Update changed function declarations.
        * cp-tree.h: Update changed function declarations.
        (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
        (CPTI_PUSH_EXCEPTION_IDENTIFIER): Remove.
        (CPTI_CALL_UNEXPECTED): New.
        (CPTI_CALL_UNEXPECTED): New.
        (struct cp_language_function): Rename x_eh_spec_try_block
        (struct cp_language_function): Rename x_eh_spec_try_block
        to x_eh_spec_block.
        to x_eh_spec_block.
        (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
        (EH_SPEC_STMTS, EH_SPEC_RAISES): New.
        * decl.c (current_binding_level): If no current function
        * decl.c (current_binding_level): If no current function
        bindings, revert to scope_chain.
        bindings, revert to scope_chain.
        (initialize_predefined_identifiers): Remove __cp_push_exception.
        (initialize_predefined_identifiers): Remove __cp_push_exception.
        (store_parm_decls): Use begin_eh_spec_block.
        (store_parm_decls): Use begin_eh_spec_block.
        (finish_function): Use finish_eh_spec_block.
        (finish_function): Use finish_eh_spec_block.
        (mark_lang_function): Update for name changes.
        (mark_lang_function): Update for name changes.
        * decl2.c (finish_file): No mark_all_runtime_matches.
        * decl2.c (finish_file): No mark_all_runtime_matches.
        * dump.c (cp_dump_tree): Handle new tree codes.
        * dump.c (cp_dump_tree): Handle new tree codes.
        * error.c (dump_expr) [BIND_EXPR]: Fix typo.
        * error.c (dump_expr) [BIND_EXPR]: Fix typo.
        * except.c (catch_language_init, catch_language): Remove.
        * except.c (catch_language_init, catch_language): Remove.
        (init_exception_processing): Don't set language code.
        (init_exception_processing): Don't set language code.
        Initialize call_unexpected_node, protect_cleanup_actions,
        Initialize call_unexpected_node, protect_cleanup_actions,
        eh_personality_libfunc, lang_eh_runtime_type.
        eh_personality_libfunc, lang_eh_runtime_type.
        (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
        (call_eh_info, push_eh_info, get_eh_info, get_eh_value): Remove.
        (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
        (get_eh_type, get_eh_caught, get_eh_handlers): Remove.
        (prepare_eh_type): Split out type canonicalizations ...
        (prepare_eh_type): Split out type canonicalizations ...
        (build_eh_type_type): ... from here.
        (build_eh_type_type): ... from here.
        (build_eh_type_type_ref): Remove.
        (build_eh_type_type_ref): Remove.
        (mark_all_runtime_matches): Remove.
        (mark_all_runtime_matches): Remove.
        (build_exc_ptr): New.
        (build_exc_ptr): New.
        (do_begin_catch, do_end_catch): New.
        (do_begin_catch, do_end_catch): New.
        (do_pop_exception): Remove.
        (do_pop_exception): Remove.
        (build_terminate_handler): Remove.
        (build_terminate_handler): Remove.
        (choose_personality_routine): Split out language choice from ...
        (choose_personality_routine): Split out language choice from ...
        (initialize_handler_parm): ... here.
        (initialize_handler_parm): ... here.
        Use MUST_NOT_THROW_EXPR.
        Use MUST_NOT_THROW_EXPR.
        (expand_start_catch_block): Use do_begin_catch.  Simplify Java
        (expand_start_catch_block): Use do_begin_catch.  Simplify Java
        exception object handling.
        exception object handling.
        (expand_start_eh_spec, expand_end_eh_spec): Remove.
        (expand_start_eh_spec, expand_end_eh_spec): Remove.
        (expand_exception_blocks, alloc_eh_object): Remove.
        (expand_exception_blocks, alloc_eh_object): Remove.
        (begin_eh_spec_block, finish_eh_spec_block): New.
        (begin_eh_spec_block, finish_eh_spec_block): New.
        (do_allocate_exception, do_free_exception): New.
        (do_allocate_exception, do_free_exception): New.
        (expand_throw): Merge into ...
        (expand_throw): Merge into ...
        (build_throw): ... here.  Update for abi.
        (build_throw): ... here.  Update for abi.
        * expr.c (cplus_expand_expr): No expand_internal_throw.
        * expr.c (cplus_expand_expr): No expand_internal_throw.
        Handle MUST_NOT_THROW_EXPR.
        Handle MUST_NOT_THROW_EXPR.
        * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
        * pt.c (tsubst_expr): Handle EH_SPEC_BLOCK.
        * semantics.c (*) Update for except.h name changes.
        * semantics.c (*) Update for except.h name changes.
        (genrtl_try_block): No protect_with_terminate.
        (genrtl_try_block): No protect_with_terminate.
        (genrtl_eh_spec_block): New.
        (genrtl_eh_spec_block): New.
        (genrtl_handler): Don't emit the goto here.
        (genrtl_handler): Don't emit the goto here.
        (cp_expand_stmt): Handle EH_SPEC_BLOCK.
        (cp_expand_stmt): Handle EH_SPEC_BLOCK.
        (genrtl_finish_function): Don't expand_exception_blocks.
        (genrtl_finish_function): Don't expand_exception_blocks.
        * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
        * tree.c (cp_statement_code_p): Handle EH_SPEC_BLOCK.
2001-03-28  Richard Henderson  
2001-03-28  Richard Henderson  
        * decl.c (struct named_label_list): Rename eh_region to
        * decl.c (struct named_label_list): Rename eh_region to
        in_try_scope, add in_catch_scope.
        in_try_scope, add in_catch_scope.
        (struct binding_level): Rename eh_region to is_try_scope,
        (struct binding_level): Rename eh_region to is_try_scope,
        add is_catch_scope.
        add is_catch_scope.
        (note_level_for_try): Rename from note_level_for_eh.
        (note_level_for_try): Rename from note_level_for_eh.
        (note_level_for_catch): New.
        (note_level_for_catch): New.
        (poplevel): Copy both is_try_scope and is_catch_scope to
        (poplevel): Copy both is_try_scope and is_catch_scope to
        the named_label_list struct.
        the named_label_list struct.
        (check_previous_goto_1): Don't check for catch block via
        (check_previous_goto_1): Don't check for catch block via
        DECL_ARTIFICIAL; use in_try_scope instead.
        DECL_ARTIFICIAL; use in_try_scope instead.
        (check_goto): Likewise.
        (check_goto): Likewise.
        * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
        * cp-tree.h (note_level_for_try, note_level_for_catch): Declare.
        * except.c (expand_start_catch_block): Call note_level_for_catch.
        * except.c (expand_start_catch_block): Call note_level_for_catch.
        * semantics.c (begin_compound_stmt): Update for note_level_for_try.
        * semantics.c (begin_compound_stmt): Update for note_level_for_try.
2001-03-27  Richard Henderson  
2001-03-27  Richard Henderson  
        * except.c: Use USING_SJLJ_EXCEPTIONS instead of
        * except.c: Use USING_SJLJ_EXCEPTIONS instead of
        exceptions_via_longjmp.
        exceptions_via_longjmp.
2001-03-27  Phil Edwards  
2001-03-27  Phil Edwards  
        * pt.c (check_default_tmpl_args):  Make error messages clearer.
        * pt.c (check_default_tmpl_args):  Make error messages clearer.
2001-03-26  Phil Edwards  
2001-03-26  Phil Edwards  
        * error.c:  Also undefine 'A' macro used for cp_printers definition.
        * error.c:  Also undefine 'A' macro used for cp_printers definition.
2001-03-27  Kaveh R. Ghazi  
2001-03-27  Kaveh R. Ghazi  
        * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
        * Make-lang.in: Depend on $(SYSTEM_H), not system.h.
2001-03-26  Mike Yang 
2001-03-26  Mike Yang 
            Mark Mitchell  
            Mark Mitchell  
        * dump.c (dump_access): New function.
        * dump.c (dump_access): New function.
        (cp_dump_tree): Use it.  Dump basetype information for class
        (cp_dump_tree): Use it.  Dump basetype information for class
        types.
        types.
2001-03-26  Mark Mitchell  
2001-03-26  Mark Mitchell  
        * Makefile.in (optimize.o): Depend on params.h.
        * Makefile.in (optimize.o): Depend on params.h.
        (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
        (duplicate_decls): Copy DECL_NUM_STMTS, not DECL_FRAME_SIZE.
        (init_decl_processing): Set flag_no_inline when doing
        (init_decl_processing): Set flag_no_inline when doing
        inlining-on-trees.
        inlining-on-trees.
        * optimize.c: Include params.h.
        * optimize.c: Include params.h.
        (struct inline_data): Improve documentation of FNS.  Add
        (struct inline_data): Improve documentation of FNS.  Add
        FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
        FIRST_INLINED_FN, INLINED_STMTS, and CLONING_P.
        (INSNS_PER_STMT): New macro.
        (INSNS_PER_STMT): New macro.
        (remap_block): Use CLONING_P.
        (remap_block): Use CLONING_P.
        (inlinable_function_p): Don't inline big functions.
        (inlinable_function_p): Don't inline big functions.
        (expand_call_inline): Keep track of how much inlining we've done.
        (expand_call_inline): Keep track of how much inlining we've done.
        (optimize_function): Set FIRST_INLINED_FN.
        (optimize_function): Set FIRST_INLINED_FN.
        (maybe_clone_body): Set CLONING_P.
        (maybe_clone_body): Set CLONING_P.
        * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
        * semantics.c (simplify_aggr_init_exprs_r): Fix typing problems in
        tree nodes.
        tree nodes.
        (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
        (genrtl_finish_function): Clear DECL_DEFER_OUTPUT before calling
        rest_of_compilation.  Clear DECL_RTL for local variables
        rest_of_compilation.  Clear DECL_RTL for local variables
        afterwards.
        afterwards.
        (clear_decl_rtl): New function.
        (clear_decl_rtl): New function.
2001-03-26  Nathan Sidwell  
2001-03-26  Nathan Sidwell  
        Implement DR 209
        Implement DR 209
        * cp-tree.h (skip_type_access_control,
        * cp-tree.h (skip_type_access_control,
        reset_type_access_control): Prototype.
        reset_type_access_control): Prototype.
        * decl.c (grokdeclarator): Access of friends is not checked.
        * decl.c (grokdeclarator): Access of friends is not checked.
        * parse.y (component_decl_list): Reset type access control.
        * parse.y (component_decl_list): Reset type access control.
        * semantics.c (decl_type_access_control): Clear
        * semantics.c (decl_type_access_control): Clear
        current_type_lookups.
        current_type_lookups.
        (save_type_access_control): Don't save if not deferring.
        (save_type_access_control): Don't save if not deferring.
        (skip_type_access_control, reset_type_access_control): New
        (skip_type_access_control, reset_type_access_control): New
        functions.
        functions.
        (begin_class_definition): Do type access control for basetypes.
        (begin_class_definition): Do type access control for basetypes.
        Start deferred access control.
        Start deferred access control.
        (finish_class_definition): Resume immediate access control if
        (finish_class_definition): Resume immediate access control if
        this is a local class.
        this is a local class.
2001-03-25  Kaveh R. Ghazi  
2001-03-25  Kaveh R. Ghazi  
        * class.c (add_method): Use memcpy/memmove, not bcopy.
        * class.c (add_method): Use memcpy/memmove, not bcopy.
        * decl.c (duplicate_decls): Likewise.
        * decl.c (duplicate_decls): Likewise.
2001-03-23  Jakub Jelinek  
2001-03-23  Jakub Jelinek  
        * mangle.c (write_discriminator): Use `_0' for discriminator 1,
        * mangle.c (write_discriminator): Use `_0' for discriminator 1,
        not `_'.
        not `_'.
2001-03-23  Jakub Jelinek  
2001-03-23  Jakub Jelinek  
        * decl.c (local_names): Define.
        * decl.c (local_names): Define.
        (push_local_name): New.
        (push_local_name): New.
        (grok_reference_init): Return init if initializing static reference
        (grok_reference_init): Return init if initializing static reference
        variable with non-constant instead of emitting it.
        variable with non-constant instead of emitting it.
        Move expand_static_init call to cp_finish_decl.
        Move expand_static_init call to cp_finish_decl.
        (layout_var_decl): Call push_local_name.
        (layout_var_decl): Call push_local_name.
        (maybe_commonize_var): Allow inlining functions even if they have
        (maybe_commonize_var): Allow inlining functions even if they have
        static local variables, use comdat_linkage for them if flag_weak.
        static local variables, use comdat_linkage for them if flag_weak.
        (check_initializer): Call obscure_complex_init if
        (check_initializer): Call obscure_complex_init if
        grok_reference_init returned nonzero.
        grok_reference_init returned nonzero.
        (save_function_data): Clear x_local_names.
        (save_function_data): Clear x_local_names.
        (pop_cp_function_context): Free x_local_names.
        (pop_cp_function_context): Free x_local_names.
        (mark_inlined_fns): Remove.
        (mark_inlined_fns): Remove.
        (mark_lang_function): Mark x_local_names.
        (mark_lang_function): Mark x_local_names.
        (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
        (lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
        Mark inlined_fns as tree, remove call to mark_inlined_fns.
        Mark inlined_fns as tree, remove call to mark_inlined_fns.
        * class.c (alter_access): Ensure DECL_ACCESS is never set if
        * class.c (alter_access): Ensure DECL_ACCESS is never set if
        DECL_DISCRIMINATOR_P.
        DECL_DISCRIMINATOR_P.
        * cp-tree.h (cp_language_function): Add x_local_names.
        * cp-tree.h (cp_language_function): Add x_local_names.
        (lang_decl_flags): Add discriminator into u2.
        (lang_decl_flags): Add discriminator into u2.
        (lang_decl_inlined_fns): Remove.
        (lang_decl_inlined_fns): Remove.
        (lang_decl): inlined_fns is now a TREE_VEC.
        (lang_decl): inlined_fns is now a TREE_VEC.
        (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
        (DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
        * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
        * optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
        TREE_VEC, not a custom structure.
        TREE_VEC, not a custom structure.
        (optimize_function): Likewise.
        (optimize_function): Likewise.
        * mangle.c (discriminator_for_local_entity): Discriminate among
        * mangle.c (discriminator_for_local_entity): Discriminate among
        VAR_DECL local entities.
        VAR_DECL local entities.
        * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
        * search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
        is not valid.
        is not valid.
2001-03-22  Bryce McKinlay  
2001-03-22  Bryce McKinlay  
        Add support for Java interface method calls.
        Add support for Java interface method calls.
        * cp-tree.h (struct lang_type): Add java_interface flag.
        * cp-tree.h (struct lang_type): Add java_interface flag.
        (TYPE_JAVA_INTERFACE): New macro.
        (TYPE_JAVA_INTERFACE): New macro.
        * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
        * tree.c (cp_valid_lang_attribute): Handle "java_interface" attribute
        by setting TYPE_JAVA_INTERFACE.
        by setting TYPE_JAVA_INTERFACE.
        * call.c (java_iface_lookup_fn): New static.
        * call.c (java_iface_lookup_fn): New static.
        (build_over_call): If calling a method declared in a
        (build_over_call): If calling a method declared in a
        TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
        TYPE_JAVA_INTERFACE, call build_java_interface_fn_ref to generate the
        expression which resolves the function address.
        expression which resolves the function address.
        (build_java_interface_fn_ref): New function.
        (build_java_interface_fn_ref): New function.
2001-03-22  Richard Henderson  
2001-03-22  Richard Henderson  
        * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
        * Make-lang.in (cp/except.o): Don't depend on insn-flags.h.
        * except.c: Don't include it.
        * except.c: Don't include it.
2001-03-22  Gerald Pfeifer  
2001-03-22  Gerald Pfeifer  
            based on an idea from Joe Buck 
            based on an idea from Joe Buck 
        * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
        * parse.y (bad_decl, template_arg_list_ignore, arg_list_ignore):
        New nonterminals.
        New nonterminals.
        (data_def, component_decl): Add reductions to bad_decl.
        (data_def, component_decl): Add reductions to bad_decl.
2001-03-22  Jakub Jelinek  
2001-03-22  Jakub Jelinek  
        * method.c (do_build_assign_ref): Don't use build_modify_expr for
        * method.c (do_build_assign_ref): Don't use build_modify_expr for
        anonymous aggregates, since they don't have assignment operator
        anonymous aggregates, since they don't have assignment operator
        method.
        method.
        * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
        * decl.c (fixup_anonymous_aggr): Disallow ctors, dtors and copy
        assignment operators for anonymous structure fields.
        assignment operators for anonymous structure fields.
2001-03-21  Jason Merrill  
2001-03-21  Jason Merrill  
        * pt.c (instantiate_decl): Abort if we see a member constant
        * pt.c (instantiate_decl): Abort if we see a member constant
        instantiation that doesn't already have its initializer.
        instantiation that doesn't already have its initializer.
        Downgrade explicit instantiation without definition to pedwarn.
        Downgrade explicit instantiation without definition to pedwarn.
        * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
        * cp-tree.h (DECL_TINFO_FN_P, SET_DECL_TINFO_FN_P): Remove.
        * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
        * class.c (build_vtable_entry): Don't check DECL_TINFO_FN_P.
        (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
        (import_export_decl): Check tinfo_decl_p, not DECL_TINFO_FN_P.
        * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
        * cp-tree.h (CLASSTYPE_VTABLE_NEEDS_WRITING): Remove.
        (pending_vtables): Remove.
        (pending_vtables): Remove.
        * decl2.c (pending_vtables): Remove.
        * decl2.c (pending_vtables): Remove.
        (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
        (import_export_vtable): Use CLASSTYPE_INTERFACE_ONLY, not
        CLASSTYPE_VTABLE_NEEDS_WRITING.
        CLASSTYPE_VTABLE_NEEDS_WRITING.
        (import_export_class): Likewise.
        (import_export_class): Likewise.
        (init_decl2): Don't mark pending_vtables.
        (init_decl2): Don't mark pending_vtables.
        * lex.c (handle_pragma_vtable): Just sorry.
        * lex.c (handle_pragma_vtable): Just sorry.
        * pt.c (instantiate_class_template): Don't mess with
        * pt.c (instantiate_class_template): Don't mess with
        CLASSTYPE_VTABLE_NEEDS_WRITING.
        CLASSTYPE_VTABLE_NEEDS_WRITING.
        (mark_class_instantiated): Likewise.
        (mark_class_instantiated): Likewise.
        * ptree.c (print_lang_type): Don't print it.
        * ptree.c (print_lang_type): Don't print it.
        * semantics.c (begin_class_definition): Don't set it.
        * semantics.c (begin_class_definition): Don't set it.
        * pt.c (template_tail): Replace with last_pending_template.
        * pt.c (template_tail): Replace with last_pending_template.
        (maybe_templates, maybe_template_tail): Remove.
        (maybe_templates, maybe_template_tail): Remove.
        (add_pending_template): Adjust.
        (add_pending_template): Adjust.
        (instantiate_pending_templates): Adjust.
        (instantiate_pending_templates): Adjust.
        * cp-tree.h (struct saved_scope): Remove lang_stack field.
        * cp-tree.h (struct saved_scope): Remove lang_stack field.
        (current_lang_stack): Remove.
        (current_lang_stack): Remove.
        * decl.c (maybe_push_to_top_level): Don't initialize it.
        * decl.c (maybe_push_to_top_level): Don't initialize it.
        (duplicate_decls): Use current_lang_depth.
        (duplicate_decls): Use current_lang_depth.
        (xref_basetypes): Likewise.
        (xref_basetypes): Likewise.
        * class.c (current_lang_depth): New fn.
        * class.c (current_lang_depth): New fn.
        (push_lang_context): Use more varray functionality.
        (push_lang_context): Use more varray functionality.
        (pop_lang_context): Likewise.
        (pop_lang_context): Likewise.
        * error.c (GLOBAL_THING): Always use '__'.
        * error.c (GLOBAL_THING): Always use '__'.
2001-03-21  Mark Mitchell  
2001-03-21  Mark Mitchell  
        * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
        * class.c (build_clone): Clear DECL_ASSEMBLER_NAME.
        * mangle.c (mangle_decl_string): Mangle the names of overloaded
        * mangle.c (mangle_decl_string): Mangle the names of overloaded
        operators, even when they have `extern "C"' linkage.
        operators, even when they have `extern "C"' linkage.
2001-03-19  Mark Mitchell  
2001-03-19  Mark Mitchell  
        * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
        * class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        where it's not necessary.
        where it's not necessary.
        (add_method): Remove optimization involving comparison of
        (add_method): Remove optimization involving comparison of
        DECL_ASSEMBLER_NAME.
        DECL_ASSEMBLER_NAME.
        (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
        (build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        where it's not necessary.
        where it's not necessary.
        (check_methods): Likewise.
        (check_methods): Likewise.
        (build_clone): Likewise.
        (build_clone): Likewise.
        (built_vtt): Likewise.
        (built_vtt): Likewise.
        * cp-tree.h (DECL_NEEDED_P): Likewise.
        * cp-tree.h (DECL_NEEDED_P): Likewise.
        * decl.c (pushtag): Likewise.
        * decl.c (pushtag): Likewise.
        (duplicate_decls): Likewise.
        (duplicate_decls): Likewise.
        (pushdecl): Likewise.
        (pushdecl): Likewise.
        (builtin_function): Likewise.
        (builtin_function): Likewise.
        (build_library_fn_1): Set DECL_LANGUAGE for library functions.
        (build_library_fn_1): Set DECL_LANGUAGE for library functions.
        (build_cp_library_fn): Likewise.
        (build_cp_library_fn): Likewise.
        (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
        (maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        where it's not necessary.
        where it's not necessary.
        (make_rtl_for_nonlocal_decl): Likewise.
        (make_rtl_for_nonlocal_decl): Likewise.
        (cp_finish_decl): Likewise.
        (cp_finish_decl): Likewise.
        (grokfndecl): Likewise.
        (grokfndecl): Likewise.
        (grokvardecl): Likewise.
        (grokvardecl): Likewise.
        (grokdeclarator): Likewise.
        (grokdeclarator): Likewise.
        (start_function): Likewise.
        (start_function): Likewise.
        (cp_missing_return_ok_p): Likewise.
        (cp_missing_return_ok_p): Likewise.
        * decl2.c (grokclassfn): Likewise.
        * decl2.c (grokclassfn): Likewise.
        (check_classfn): Likewise.
        (check_classfn): Likewise.
        (finish_static_data_member_decl): Likewise.
        (finish_static_data_member_decl): Likewise.
        (grokfield): Likewise.
        (grokfield): Likewise.
        * error.c (GLOBAL_IORD_P): Remove.
        * error.c (GLOBAL_IORD_P): Remove.
        (dump_global_iord): Improve output.
        (dump_global_iord): Improve output.
        (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
        (dump_decl): Avoid using DECL_ASSEMBLER_NAME.
        * except.c (nothrow_libfn_p): Summarily reject any function not in
        * except.c (nothrow_libfn_p): Summarily reject any function not in
        namespace-scope.
        namespace-scope.
        * init.c (build_java_class_ref): Don't explicitly set
        * init.c (build_java_class_ref): Don't explicitly set
        DECL_ASSEMBLER_NAME after calling mangle_decl.
        DECL_ASSEMBLER_NAME after calling mangle_decl.
        * mangle.c (mangle_decl_string): Handle extern "C" functions.
        * mangle.c (mangle_decl_string): Handle extern "C" functions.
        (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
        (mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
        * method.c (set_mangled_name_for_decl): Don't explicitly set
        * method.c (set_mangled_name_for_decl): Don't explicitly set
        DECL_ASSEMBLER_NAME after calling mangle_decl.
        DECL_ASSEMBLER_NAME after calling mangle_decl.
        (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
        (make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
        IDENTIFIER_GLOBAL_VALUE for the thunk.
        IDENTIFIER_GLOBAL_VALUE for the thunk.
        * pt.c (set_mangled_name_for_template_decl): Remove.
        * pt.c (set_mangled_name_for_template_decl): Remove.
        (check_explicit_specialization): Don't use it.
        (check_explicit_specialization): Don't use it.
        (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
        (looup_template_class): Don't set DECL_ASSEMBLER_NAME.
        (tsubst_friend_function): Likewise.
        (tsubst_friend_function): Likewise.
        (tsubst_decl): Likewise.
        (tsubst_decl): Likewise.
        (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
        (regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
        * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
        * rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
        where it's not necessary.
        where it's not necessary.
        (tinfo_base_init): Likewise.
        (tinfo_base_init): Likewise.
        (create_real_tinfo_var): Likewise.
        (create_real_tinfo_var): Likewise.
        * search.c (looup_field_1): Likewise.
        * search.c (looup_field_1): Likewise.
        * semantics.c (finish_named_return_value): Likewise.
        * semantics.c (finish_named_return_value): Likewise.
        * tree.c (init_tree): Set lang_set_decl_assembler_name.
        * tree.c (init_tree): Set lang_set_decl_assembler_name.
2001-03-15  Gabriel Dos Reis  
2001-03-15  Gabriel Dos Reis  
        Correct semantics restrictions checking in throw-expression.
        Correct semantics restrictions checking in throw-expression.
        * except.c (is_admissible_throw_operand): New function.
        * except.c (is_admissible_throw_operand): New function.
        (build_throw): Use it.
        (build_throw): Use it.
2001-03-14  Mark Mitchell  
2001-03-14  Mark Mitchell  
        * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
        * decl.c (cp_make_fnname_decl): Set DECL_IGNORED_P on __FUNCTION__
        and its ilk.
        and its ilk.
2001-03-14  Mark Mitchell  
2001-03-14  Mark Mitchell  
        * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
        * class.c (build_clone): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
        * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
        * cp-tree.h (DECL_IN_MEMORY_P): Likewise.
        * decl.c (duplicate_decls): Likewise.
        * decl.c (duplicate_decls): Likewise.
        (builtin_function): Likewise.
        (builtin_function): Likewise.
        (build_library_fn): Likewise.
        (build_library_fn): Likewise.
        (build_cp_library_fn): Likewise.
        (build_cp_library_fn): Likewise.
        (check_initializer): Likewise.
        (check_initializer): Likewise.
        (cp_finish_decl): Likewise.
        (cp_finish_decl): Likewise.
        * decl2.c (grokfield): Likewise.
        * decl2.c (grokfield): Likewise.
        (grok_function_init): Remove #if 0'd code.
        (grok_function_init): Remove #if 0'd code.
        (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
        (finish_anon_union): Use COPY_DECL_RTL, DECL_RTL_SET_P, etc.
        * friend.c (do_friend): Likewise.
        * friend.c (do_friend): Likewise.
        * init.c (get_temp_regvar): Likewise.
        * init.c (get_temp_regvar): Likewise.
        * method.c (make_thunk): Likewise.
        * method.c (make_thunk): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        (tsubst_decl): Likewise.
        (tsubst_decl): Likewise.
        (regenerate_decl_from_template): Likewise.
        (regenerate_decl_from_template): Likewise.
        * semantics.c (genrtl_named_return_value): Likewise.
        * semantics.c (genrtl_named_return_value): Likewise.
        (expand_body): Likewise.
        (expand_body): Likewise.
        (genrtl_finish_function): Likewise.
        (genrtl_finish_function): Likewise.
        * tree.c (cp_tree_equal): Likewise.
        * tree.c (cp_tree_equal): Likewise.
2001-03-12  Nathan Sidwell  
2001-03-12  Nathan Sidwell  
        * call.c (convert_like_real): Add extra semantics to INNER
        * call.c (convert_like_real): Add extra semantics to INNER
        parameter. Don't convert to temporary if a user conversion
        parameter. Don't convert to temporary if a user conversion
        gives us an lvalue that we're about to bind to a reference.
        gives us an lvalue that we're about to bind to a reference.
        Set INNER to indicate pending reference binding on recursive
        Set INNER to indicate pending reference binding on recursive
        calls.
        calls.
2001-03-10  Neil Booth  
2001-03-10  Neil Booth  
        * cp/lex.c: Delete duplicate pending_lang_change.
        * cp/lex.c: Delete duplicate pending_lang_change.
2001-03-10  Neil Booth  
2001-03-10  Neil Booth  
        * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
        * cp/lex.c (handle_pragma_interface, handle_pragma_implementation):
        Similarly.
        Similarly.
        * cp/repo.c (get_base_filename, open_repo_file): Similarly.
        * cp/repo.c (get_base_filename, open_repo_file): Similarly.
        * cp/cp-tree.h: Remove file_name_nondirectory prototype.
        * cp/cp-tree.h: Remove file_name_nondirectory prototype.
2001-03-09  Zack Weinberg  
2001-03-09  Zack Weinberg  
        * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
        * Make-lang.in: Add dependencies on $(TM_P_H) as appropriate.
2001-03-08  Stan Shebs  
2001-03-08  Stan Shebs  
        * cp-tree.h (set_identifier_local_value): Remove unused decl.
        * cp-tree.h (set_identifier_local_value): Remove unused decl.
2001-03-06  Zack Weinberg  
2001-03-06  Zack Weinberg  
        * spew.c: Remove references to CPP_OSTRING.
        * spew.c: Remove references to CPP_OSTRING.
2001-03-06  Andrew Haley  
2001-03-06  Andrew Haley  
        * typeck.c (convert_arguments): Check that we have an fndecl.
        * typeck.c (convert_arguments): Check that we have an fndecl.
2001-03-05  Andrew Haley  
2001-03-05  Andrew Haley  
        * typeck.c (convert_arguments): Don't do ellipsis conversion for
        * typeck.c (convert_arguments): Don't do ellipsis conversion for
        __built_in_constant_p.
        __built_in_constant_p.
2001-03-02  Nathan Sidwell  
2001-03-02  Nathan Sidwell  
        * typeck.c (build_static_cast): Allow enum to enum conversions
        * typeck.c (build_static_cast): Allow enum to enum conversions
        as per DR 128.
        as per DR 128.
2001-03-02  Nathan Sidwell  
2001-03-02  Nathan Sidwell  
        * class.c (check_field_decls): Pointers to member do not a
        * class.c (check_field_decls): Pointers to member do not a
        non-pod struct make, as per DR 148.
        non-pod struct make, as per DR 148.
2001-03-02  Nathan Sidwell  
2001-03-02  Nathan Sidwell  
        * call.c (joust): cp_pedwarn when using gnu extension concerning
        * call.c (joust): cp_pedwarn when using gnu extension concerning
        worst conversion sequences.
        worst conversion sequences.
2001-03-01  Zack Weinberg  
2001-03-01  Zack Weinberg  
        * decl.c: Replace all uses of 'boolean' with 'bool'.
        * decl.c: Replace all uses of 'boolean' with 'bool'.
2001-03-01  Zack Weinberg  
2001-03-01  Zack Weinberg  
        * lang-specs.h: Add zero initializer for cpp_spec field to
        * lang-specs.h: Add zero initializer for cpp_spec field to
        all array elements that need one.  Don't put an #ifdef inside
        all array elements that need one.  Don't put an #ifdef inside
        the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
        the initializer list; set a default for CPLUSPLUS_CPP_SPEC and
        use it.
        use it.
2001-03-01  Nathan Sidwell  
2001-03-01  Nathan Sidwell  
        Implement using decls inside template functions.
        Implement using decls inside template functions.
        * decl2.c (validate_nonmember_using_decl): Don't special case
        * decl2.c (validate_nonmember_using_decl): Don't special case
        fake_std_node in the global namespace. Don't reject early when
        fake_std_node in the global namespace. Don't reject early when
        processing a template.
        processing a template.
        (do_local_using_decl): Add to statement tree. Don't do further
        (do_local_using_decl): Add to statement tree. Don't do further
        processing when building a template.
        processing when building a template.
        * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
        * pt.c (tsubst_expr, DECL_STMT case): Deal with USING_DECLs.
2001-03-01  Nathan Sidwell  
2001-03-01  Nathan Sidwell  
        * decl2.c (do_nonmember_using_decl): Don't complain if we find
        * decl2.c (do_nonmember_using_decl): Don't complain if we find
        same function. Do complain about ambiguating extern "C"
        same function. Do complain about ambiguating extern "C"
        declarations.
        declarations.
2001-02-28  Nathan Sidwell  
2001-02-28  Nathan Sidwell  
        Remove floating point and complex type template constant parms.
        Remove floating point and complex type template constant parms.
        * pt.c (convert_nontype_argument): Remove REAL_TYPE and
        * pt.c (convert_nontype_argument): Remove REAL_TYPE and
        COMPLEX_TYPE extensions.
        COMPLEX_TYPE extensions.
        (invalid_nontype_parm_type_p): Likewise.
        (invalid_nontype_parm_type_p): Likewise.
2001-02-27  Jeffrey Oldham  
2001-02-27  Jeffrey Oldham  
        * except.c (call_eh_info): Revert "match_function"'s type.
        * except.c (call_eh_info): Revert "match_function"'s type.
2001-02-27  Nathan Sidwell  
2001-02-27  Nathan Sidwell  
        Fix ctor vtable vcall offsets.
        Fix ctor vtable vcall offsets.
        * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
        * class.c (struct vtbl_init_data_s): Add rtti_binfo member.
        (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
        (build_rtt_vtbl_entries): Lose RTTI_BINFO parameter.
        (get_matching_base): Remove.
        (get_matching_base): Remove.
        (get_original_base): New function.
        (get_original_base): New function.
        (build_vtbl_initializer): Initialize vid.rtti_binfo.
        (build_vtbl_initializer): Initialize vid.rtti_binfo.
        Use a virtual thunk for a ctor vtable with an index
        Use a virtual thunk for a ctor vtable with an index
        (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
        (add_vcall_offset_vtbl_entries_1): Check if binfo has lost a
        primary base within a constructor vtable. Only set
        primary base within a constructor vtable. Only set
        BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
        BV_VCALL_INDEX when not a constructor vtable. Adjust vcall offset
        when primary base has been lost.
        when primary base has been lost.
        * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
        * cp-tree.h (BINFO_VIRTUALS): Remove ambiguity from comment.
2001-02-26  Jeffrey Oldham  
2001-02-26  Jeffrey Oldham  
        * call.c (joust): Ensure more_specialized()'s argument length
        * call.c (joust): Ensure more_specialized()'s argument length
        parameter has correct value for constructors.
        parameter has correct value for constructors.
2001-02-26  Nathan Sidwell  
2001-02-26  Nathan Sidwell  
        * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
        * except.c (call_eh_info): Cleanup generation of cp_eh_info struct.
        * decl.c (mark_inlined_fns): Prototype.
        * decl.c (mark_inlined_fns): Prototype.
2001-02-22  Mark Mitchell  
2001-02-22  Mark Mitchell  
        * spew.c (yylex): Correct handling of friends.
        * spew.c (yylex): Correct handling of friends.
2001-02-22  Mark Mitchell  
2001-02-22  Mark Mitchell  
        * mangle.c (write_encoding): Pass write_function_type the
        * mangle.c (write_encoding): Pass write_function_type the
        FUNCTION_DECL for the function being encoded.
        FUNCTION_DECL for the function being encoded.
        (write_function_type): Pass it along to write_bare_function_type.
        (write_function_type): Pass it along to write_bare_function_type.
        (write_bare_function_type): Pass it along to write_method_parms.
        (write_bare_function_type): Pass it along to write_method_parms.
        (write_method_parms): Don't mangle the compiler-generated
        (write_method_parms): Don't mangle the compiler-generated
        parameters to a constructor or destructor.
        parameters to a constructor or destructor.
2001-02-22  Andreas Jaeger  
2001-02-22  Andreas Jaeger  
        * optimize.c: Include toplev.h for
        * optimize.c: Include toplev.h for
        note_deferral_of_defined_inline_function prototype.
        note_deferral_of_defined_inline_function prototype.
2001-02-22  Jakub Jelinek  
2001-02-22  Jakub Jelinek  
        * cp-tree.h (struct lang_decl_inlined_fns): New.
        * cp-tree.h (struct lang_decl_inlined_fns): New.
        (struct lang_decls): Add inlined_fns.
        (struct lang_decls): Add inlined_fns.
        (DECL_INLINED_FNS): New macro.
        (DECL_INLINED_FNS): New macro.
        * optimize.c (struct inline_data): Add inlined_fns.
        * optimize.c (struct inline_data): Add inlined_fns.
        (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
        (declare_return_variable): Use VARRAY_ACTIVE_SIZE macro.
        (inlinable_function_p): Likewise, fix typo in comment,
        (inlinable_function_p): Likewise, fix typo in comment,
        function is not inlinable if it already inlined function currently
        function is not inlinable if it already inlined function currently
        being optimized.
        being optimized.
        (expand_call_inline): Add fn to inlined_fns if necessary.
        (expand_call_inline): Add fn to inlined_fns if necessary.
        (optimize_function): Initialize inlined_fns.
        (optimize_function): Initialize inlined_fns.
        Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
        Save inlined_fns into DECL_INLINED_FNS after expanding inlines.
        * decl.c (mark_inlined_fns): New function.
        * decl.c (mark_inlined_fns): New function.
        (lang_mark_tree): Call it.
        (lang_mark_tree): Call it.
2001-02-21  Jason Merrill  
2001-02-21  Jason Merrill  
        * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
        * cp-tree.h (struct lang_decl_flags): Remove uninlinable flag.
        (DECL_UNINLINABLE): Move to middle-end.
        (DECL_UNINLINABLE): Move to middle-end.
        * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
        * class.c (clone_function_decl): Set DECL_ABSTRACT on original fn.
        * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
        * decl.c (duplicate_decls): Preserve DECL_ABSTRACT.
        * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
        * class.c (build_clone): Set DECL_ABSTRACT_ORIGIN for the clone.
        * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
        * optimize.c (maybe_clone_body): Set DECL_ABSTRACT_ORIGIN for the
        parms and outer BLOCK.  note_deferral_of_defined_inline_function.
        parms and outer BLOCK.  note_deferral_of_defined_inline_function.
        * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
        * method.c (implicitly_declare_fn): Don't set DECL_ARTIFICIAL on
        second parm of op=.
        second parm of op=.
2001-02-19  Mark Mitchell  
2001-02-19  Mark Mitchell  
        * decl2.c (set_decl_namespace): Allow explicit instantiations in
        * decl2.c (set_decl_namespace): Allow explicit instantiations in
        any namespace.
        any namespace.
2001-02-18  Kriang Lerdsuwanakij  
2001-02-18  Kriang Lerdsuwanakij  
        * optimize.c (expand_call_inline): Don't walk subtrees of type
        * optimize.c (expand_call_inline): Don't walk subtrees of type
        nodes.
        nodes.
2001-02-18  Mark Mitchell  
2001-02-18  Mark Mitchell  
        * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
        * class.c (add_vcall_offset_vtbl_entries_1): Only add one entry
        for a destructor.
        for a destructor.
2001-02-18  Jason Merrill  
2001-02-18  Jason Merrill  
        Do put the VTT parameter in DECL_ARGUMENTS.
        Do put the VTT parameter in DECL_ARGUMENTS.
        * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
        * cp-tree.h (struct cp_language_function): Add x_vtt_parm.
        (current_vtt_parm): New macro.
        (current_vtt_parm): New macro.
        (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
        (struct lang_decl_flags): Add has_vtt_parm_p, remove vtt_parm.
        (DECL_HAS_VTT_PARM_P): New macro.
        (DECL_HAS_VTT_PARM_P): New macro.
        (DECL_VTT_PARM): Remove.
        (DECL_VTT_PARM): Remove.
        (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
        (FUNCTION_FIRST_USER_PARMTYPE, FUNCTION_FIRST_USER_PARM): New macros.
        * decl.c (duplicate_decls): Only copy the operator code if
        * decl.c (duplicate_decls): Only copy the operator code if
        appropriate.
        appropriate.
        (start_function): Set current_vtt_parm.
        (start_function): Set current_vtt_parm.
        (lang_mark_tree): Don't mark vtt_parm.
        (lang_mark_tree): Don't mark vtt_parm.
        * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
        * decl2.c (maybe_retrofit_in_chrg): Do add the VTT parm to
        DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
        DECL_ARGUMENTS.  Set DECL_HAS_VTT_PARM_P.
        * class.c (build_clone): Maybe remove the VTT parm.
        * class.c (build_clone): Maybe remove the VTT parm.
        * optimize.c (maybe_clone_body): Set up the VTT parm.
        * optimize.c (maybe_clone_body): Set up the VTT parm.
        * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
        * pt.c (copy_default_args_to_explicit_spec): Preserve the VTT parm.
        * call.c (build_over_call): Just allow the VTT arg.
        * call.c (build_over_call): Just allow the VTT arg.
        * method.c (make_thunk): Don't set DECL_VTT_PARM.
        * method.c (make_thunk): Don't set DECL_VTT_PARM.
        (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
        (do_build_copy_constructor): Use FUNCTION_FIRST_USER_PARM.
        (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
        (synthesize_method): Use FUNCTION_FIRST_USER_PARMTYPE.
        * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
        * decl.c (grokdeclarator, copy_args_p, grok_ctor_properties): Likewise.
        * error.c (dump_function_decl): Likewise.
        * error.c (dump_function_decl): Likewise.
        * call.c (build_user_type_conversion_1, convert_like_real): Abort
        * call.c (build_user_type_conversion_1, convert_like_real): Abort
        if we try to call a constructor with in-charge or VTT parms.
        if we try to call a constructor with in-charge or VTT parms.
        * method.c (skip_artificial_parms_for): New fn.
        * method.c (skip_artificial_parms_for): New fn.
        * call.c (add_function_candidate, build_over_call): Call it.
        * call.c (add_function_candidate, build_over_call): Call it.
        * call.c (build_new_method_call): Use current_vtt_parm.
        * call.c (build_new_method_call): Use current_vtt_parm.
        * init.c (expand_virtual_init): Likewise.
        * init.c (expand_virtual_init): Likewise.
        * class.c (same_signature_p): No longer static.
        * class.c (same_signature_p): No longer static.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * search.c (look_for_overrides_r): Use it.
        * search.c (look_for_overrides_r): Use it.
2001-02-17  Mark Mitchell  
2001-02-17  Mark Mitchell  
        * cp-tree.h (new_abi_rtti_p): Remove.
        * cp-tree.h (new_abi_rtti_p): Remove.
        (name_mangling_version): Likewise.
        (name_mangling_version): Likewise.
        (flag_do_squangling): Likewise.
        (flag_do_squangling): Likewise.
        * class.c (build_rtti_vtbl_entries): Remove old ABI support.
        * class.c (build_rtti_vtbl_entries): Remove old ABI support.
        * decl.c (grokfndecl): Likewise.
        * decl.c (grokfndecl): Likewise.
        * decl2.c (name_mangling_version): Remove.
        * decl2.c (name_mangling_version): Remove.
        (flag_do_squangling): Likewise.
        (flag_do_squangling): Likewise.
        (lang_f_options): Remove `squangle'.
        (lang_f_options): Remove `squangle'.
        (unsupported_options): Add `squangle'.
        (unsupported_options): Add `squangle'.
        (cxx_decode_option): Issue a warning about uses of
        (cxx_decode_option): Issue a warning about uses of
        -fname-mangling-version.
        -fname-mangling-version.
        (finish_file): Remove old ABI support.
        (finish_file): Remove old ABI support.
        * pt.c (check_explicit_specialization): Likewise.
        * pt.c (check_explicit_specialization): Likewise.
        (tsubst_decl): Likewise.
        (tsubst_decl): Likewise.
        * rtti.c (init_rtti_processing): Likewise.
        * rtti.c (init_rtti_processing): Likewise.
        (build_headof): Likewise.
        (build_headof): Likewise.
        (get_tinfo_decl_dynamic): Likewise.
        (get_tinfo_decl_dynamic): Likewise.
        (tinfo_from_decl): Likewise.
        (tinfo_from_decl): Likewise.
        (build_dynamic_cast_1): Likewise.
        (build_dynamic_cast_1): Likewise.
        (synthesize_tinfo_var): Likewise.
        (synthesize_tinfo_var): Likewise.
        * init.c (build_new): Allow enumeration types for the array-bounds
        * init.c (build_new): Allow enumeration types for the array-bounds
        in a direct-new-declarator.
        in a direct-new-declarator.
        * semantics.c (finish_typeof): Resolve OFFSET_REFs.
        * semantics.c (finish_typeof): Resolve OFFSET_REFs.
        * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
        * pt.c (check_explicit_specialization): Copy TREE_PRIVATE and
        TREE_PROTECTED from the template being specialized.
        TREE_PROTECTED from the template being specialized.
2001-02-17  Jason Merrill  
2001-02-17  Jason Merrill  
        * decl2.c (build_artificial_parm): Set TREE_READONLY.
        * decl2.c (build_artificial_parm): Set TREE_READONLY.
        * decl.c (bad_specifiers): Allow throw specs on things with
        * decl.c (bad_specifiers): Allow throw specs on things with
        pointer-to-function or -member-function type.
        pointer-to-function or -member-function type.
        * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
        * init.c (build_default_init): Don't use a CONSTRUCTOR to initialize
        a pmf.
        a pmf.
2001-02-17  Mark Mitchell  
2001-02-17  Mark Mitchell  
        * call.c (check_dtor_name): Handle template names correctly.
        * call.c (check_dtor_name): Handle template names correctly.
2001-02-16  Jason Merrill  
2001-02-16  Jason Merrill  
        * cp-tree.h (DECL_USE_VTT_PARM): Remove.
        * cp-tree.h (DECL_USE_VTT_PARM): Remove.
        * decl2.c (maybe_retrofit_in_chrg): Don't create it.
        * decl2.c (maybe_retrofit_in_chrg): Don't create it.
        * optimize.c (maybe_clone_body): Don't substitute it.
        * optimize.c (maybe_clone_body): Don't substitute it.
        * call.c (build_new_method_call): Check in_chrg instead.
        * call.c (build_new_method_call): Check in_chrg instead.
        * init.c (expand_virtual_init): Likewise.
        * init.c (expand_virtual_init): Likewise.
2001-02-16  Gabriel Dos Reis  
2001-02-16  Gabriel Dos Reis  
        * decl.c (check_tag_decl): Make sure a typedef for an anonymous
        * decl.c (check_tag_decl): Make sure a typedef for an anonymous
        class-type introduces at least a type-name.
        class-type introduces at least a type-name.
2001-02-16  Jakub Jelinek  
2001-02-16  Jakub Jelinek  
        * call.c (convert_like_real): Create a temporary for non-lvalue.
        * call.c (convert_like_real): Create a temporary for non-lvalue.
2001-02-16  Jeffrey Oldham  
2001-02-16  Jeffrey Oldham  
        * cp-tree.h: Fix typos in comments.
        * cp-tree.h: Fix typos in comments.
2001-02-16  Jason Merrill  
2001-02-16  Jason Merrill  
        * optimize.c (remap_block): If we're compiling a clone, pass the
        * optimize.c (remap_block): If we're compiling a clone, pass the
        new block to insert_block.
        new block to insert_block.
2001-02-16  Mark Mitchell  
2001-02-16  Mark Mitchell  
        * semantics.c (finish_asm_stmt): Robustify.
        * semantics.c (finish_asm_stmt): Robustify.
2001-02-15  Mark Mitchell  
2001-02-15  Mark Mitchell  
        * pt.c (push_template_decl_real): Don't remangle the name of a
        * pt.c (push_template_decl_real): Don't remangle the name of a
        class template.
        class template.
2001-02-15  Jim Meyering  
2001-02-15  Jim Meyering  
        * Make-lang.in (c++.install-common): Depend on installdirs.
        * Make-lang.in (c++.install-common): Depend on installdirs.
        (c++.install-info): Likewise.
        (c++.install-info): Likewise.
        (c++.install-man): Likewise.
        (c++.install-man): Likewise.
2001-02-15  Mark Mitchell  
2001-02-15  Mark Mitchell  
        * typeck2.c (build_m_component_ref): Robustify.
        * typeck2.c (build_m_component_ref): Robustify.
2001-02-15  Alexandre Oliva  
2001-02-15  Alexandre Oliva  
        * friend.c (do_friend): Don't take the nested [template] class
        * friend.c (do_friend): Don't take the nested [template] class
        into account when deciding whether to warn about the friend
        into account when deciding whether to warn about the friend
        function not referring to a template function.
        function not referring to a template function.
2001-02-14  Jakub Jelinek  
2001-02-14  Jakub Jelinek  
        * typeck.c (build_unary_op): Clarify error message.
        * typeck.c (build_unary_op): Clarify error message.
2001-02-08  Aldy Hernandez  
2001-02-08  Aldy Hernandez  
        * parse.y (component_constructor_declarator): allow optional
        * parse.y (component_constructor_declarator): allow optional
        parentheses around constructor class name.
        parentheses around constructor class name.
2001-02-14  Nathan Sidwell  
2001-02-14  Nathan Sidwell  
        * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
        * cp-tree.h (setup_vtbl_ptr): Move prototype to semantics.c
        section.
        section.
        * init.c (emit_base_init): Remove incorrect comment about
        * init.c (emit_base_init): Remove incorrect comment about
        virtual bases.
        virtual bases.
        * method.c (make_thunk): Fix comment alignment.
        * method.c (make_thunk): Fix comment alignment.
2001-02-14  Nathan Sidwell  
2001-02-14  Nathan Sidwell  
        Kill remnants of this is variable.
        Kill remnants of this is variable.
        * cp-tree.h (flag_this_is_variable): Remove.
        * cp-tree.h (flag_this_is_variable): Remove.
        * decl2.c (flag_this_is_variable): Remove.
        * decl2.c (flag_this_is_variable): Remove.
        * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
        * class.c (fixed_type_or_null): Add cdtor parm. Adjust.
        (build_vbase_path): The path is non-static, even in a cdtor.
        (build_vbase_path): The path is non-static, even in a cdtor.
        (resolves_to_fixed_type_p): Add additional return value.
        (resolves_to_fixed_type_p): Add additional return value.
        * search.c (init_vbase_pointers): Adjust.
        * search.c (init_vbase_pointers): Adjust.
        * tree.c (lvalue_p_1): Adjust.
        * tree.c (lvalue_p_1): Adjust.
        * typeck.c (mark_addressable): Adjust.
        * typeck.c (mark_addressable): Adjust.
2001-02-14  Nathan Sidwell  
2001-02-14  Nathan Sidwell  
        * pt.c (unify): Don't check cv quals of array types.
        * pt.c (unify): Don't check cv quals of array types.
2001-02-14  Nathan Sidwell  
2001-02-14  Nathan Sidwell  
        * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
        * tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
        check whether we already have the type.
        check whether we already have the type.
2001-02-13  Mark Mitchell  
2001-02-13  Mark Mitchell  
        * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
        * cp-tree.h (CLASSTYPE_DESTRUCTORS): Fix typo in comment.
        * call.c (build_op_delete_call): Simplify to remove duplicate
        * call.c (build_op_delete_call): Simplify to remove duplicate
        code.
        code.
        * class.c (clone_function_decl): Don't build the deleting variant
        * class.c (clone_function_decl): Don't build the deleting variant
        of a non-virtual destructor.
        of a non-virtual destructor.
        * decl.c (finish_destructor_body): Don't call delete if this is a
        * decl.c (finish_destructor_body): Don't call delete if this is a
        non-virtual destructor.
        non-virtual destructor.
        * init.c (build_delete): Explicitly call `operator delete' when
        * init.c (build_delete): Explicitly call `operator delete' when
        deleting an object with a non-virtual destructor.
        deleting an object with a non-virtual destructor.
2001-02-13  Jason Merrill  
2001-02-13  Jason Merrill  
        * lang-specs.h: Add more __EXCEPTIONS.
        * lang-specs.h: Add more __EXCEPTIONS.
2001-02-12  Nathan Sidwell  
2001-02-12  Nathan Sidwell  
        * typeck2.c (process_init_constructor): Check
        * typeck2.c (process_init_constructor): Check
        TREE_HAS_CONSTRUCTOR before issuing missing init warning.
        TREE_HAS_CONSTRUCTOR before issuing missing init warning.
2001-02-12  Nathan Sidwell  
2001-02-12  Nathan Sidwell  
        * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
        * pt.c (maybe_adjust_types_for_deduction, DEDUCE_ORDER case):
        Remove spurious information in comment. Allow further
        Remove spurious information in comment. Allow further
        adjustments of REFERENCE_TYPE args.
        adjustments of REFERENCE_TYPE args.
2001-02-12  Nathan Sidwell  
2001-02-12  Nathan Sidwell  
        * errfn.c (cp_deprecated): Tweak diagnostic text.
        * errfn.c (cp_deprecated): Tweak diagnostic text.
        * parse.y (new_initializer): Deprecate initializer lists
        * parse.y (new_initializer): Deprecate initializer lists
        extension.
        extension.
2001-02-12  Mark Mitchell  
2001-02-12  Mark Mitchell  
        Remove old ABI support.
        Remove old ABI support.
2001-02-11  Mark Mitchell  
2001-02-11  Mark Mitchell  
        * decl2.c (flag_vtable_thunks): Always set it to 1.
        * decl2.c (flag_vtable_thunks): Always set it to 1.
        (flag_new_abi): Likewise.
        (flag_new_abi): Likewise.
        * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
        * lang-specs.h: Remove conditional on ENABLE_NEW_GXX_ABI.
        * Makefile.in (g++spec.o): Fix typo.
        * Makefile.in (g++spec.o): Fix typo.
2001-02-09  Jason Merrill  
2001-02-09  Jason Merrill  
        * lang-specs.h: Restore definition of __EXCEPTIONS.
        * lang-specs.h: Restore definition of __EXCEPTIONS.
2001-02-08  Jason Merrill  
2001-02-08  Jason Merrill  
        * search.c (shared_member_p): New function.
        * search.c (shared_member_p): New function.
        (lookup_field_r): Use it.
        (lookup_field_r): Use it.
        * cp-tree.h (SHARED_MEMBER_P): Remove.
        * cp-tree.h (SHARED_MEMBER_P): Remove.
        * method.c (process_overload_item): Handle template-dependent array
        * method.c (process_overload_item): Handle template-dependent array
        bounds.
        bounds.
        * pt.c (type_unification_real): If we end up with undeduced nontype
        * pt.c (type_unification_real): If we end up with undeduced nontype
        parms, try again.
        parms, try again.
        * decl.c (lookup_name_real): Tweak warning to refer to decls, not
        * decl.c (lookup_name_real): Tweak warning to refer to decls, not
        types.
        types.
        * typeck2.c (friendly_abort): Don't say anything if we have
        * typeck2.c (friendly_abort): Don't say anything if we have
        earlier errors or sorries.
        earlier errors or sorries.
        * decl.c (check_tag_decl): Notice attempts to redefine bool and
        * decl.c (check_tag_decl): Notice attempts to redefine bool and
        wchar_t.  Ignore if in_system_header.
        wchar_t.  Ignore if in_system_header.
        * decl.c (maybe_push_cleanup_level): New fn...
        * decl.c (maybe_push_cleanup_level): New fn...
        (start_decl_1): ...split out from here.
        (start_decl_1): ...split out from here.
        * cvt.c (build_up_reference): Use it.
        * cvt.c (build_up_reference): Use it.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
2001-02-07  Mark Mitchell  
2001-02-07  Mark Mitchell  
        * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
        * lang-specs.h: Use CPLUSPLUS_CPP_SPEC for the preprocessor
        spec.
        spec.
2001-02-06  Nathan Sidwell  
2001-02-06  Nathan Sidwell  
        * pt.c (lookup_template_class): Make sure it's a primary
        * pt.c (lookup_template_class): Make sure it's a primary
        template or template_template_parm when called from the parser.
        template or template_template_parm when called from the parser.
        (instantiate_template_class): Add assertion.
        (instantiate_template_class): Add assertion.
2001-02-05  Alexandre Oliva  
2001-02-05  Alexandre Oliva  
        * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
        * method.c (build_mangled_name) [old abi]: Protect flush_repeats()
        from error_mark_node.
        from error_mark_node.
2001-02-05  Nathan Sidwell  
2001-02-05  Nathan Sidwell  
        Fix specification and implementation bugs in V3 ABI
        Fix specification and implementation bugs in V3 ABI
        construction vtables.
        construction vtables.
        * cp-tree.h (flag_dump_class_layout): New flag.
        * cp-tree.h (flag_dump_class_layout): New flag.
        (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
        (BINFO_OVERRIDE_ALONG_VIRTUAL_PATH_P): Remove.
        (BINFO_LOST_PRIMARY_P): New flag.
        (BINFO_LOST_PRIMARY_P): New flag.
        (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
        (SET_BINFO_NEW_VTABLE_MARKED): Adjust asserts.
        (BINFO_PRIMARY_MARKED_P): Rename to ...
        (BINFO_PRIMARY_MARKED_P): Rename to ...
        (BINFO_PRIMARY_P): ... here.
        (BINFO_PRIMARY_P): ... here.
        (binfo_via_virtual): New prototype.
        (binfo_via_virtual): New prototype.
        * decl2.c (flag_dump_class_layout): New flag.
        * decl2.c (flag_dump_class_layout): New flag.
        (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
        (cxx_decode_option): Set it. Adjust -fdump-translation-unit to
        use `=' as a file name separator.
        use `=' as a file name separator.
        * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
        * init.c (dfs_initialize_vtbl_ptrs): Walk into virtual primary
        bases.
        bases.
        (build_vtbl_address): If this is a virtual primary base, then
        (build_vtbl_address): If this is a virtual primary base, then
        get the vtbl of what it is ultimately primary for.
        get the vtbl of what it is ultimately primary for.
        * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
        * search.c (dfs_skip_nonprimary_vbases_unmarkedp): Adjust
        for BINFO_PRIMARY_P.
        for BINFO_PRIMARY_P.
        (dfs_skip_nonprimary_vbases_markedp): Likewise.
        (dfs_skip_nonprimary_vbases_markedp): Likewise.
        (get_shared_vbase_if_not_primary): Likewise.
        (get_shared_vbase_if_not_primary): Likewise.
        (dfs_get_pure_virtuals): Likewise.
        (dfs_get_pure_virtuals): Likewise.
        (expand_upcast_fixups): Likewise.
        (expand_upcast_fixups): Likewise.
        (fixup_virtual_upcast_offsets): Likewise.
        (fixup_virtual_upcast_offsets): Likewise.
        (dfs_find_vbase_instance): Likewise.
        (dfs_find_vbase_instance): Likewise.
        (find_vbase_instance): Likewise.
        (find_vbase_instance): Likewise.
        (binfo_from_vbase): Adjust comment to reflect reality.
        (binfo_from_vbase): Adjust comment to reflect reality.
        (binfo_via_virtual): New function.
        (binfo_via_virtual): New function.
        * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
        * class.c (VTT_TOP_LEVEL_P, VTT_MARKED_BINFO_P): New macros
        for binfo walking during VTT construction.
        for binfo walking during VTT construction.
        (dfs_mark_primary_bases): Remove.
        (dfs_mark_primary_bases): Remove.
        (force_canonical_binfo_r): New function.
        (force_canonical_binfo_r): New function.
        (force_canonical_binfo): New function.
        (force_canonical_binfo): New function.
        (mark_primary_virtual_base): New function.
        (mark_primary_virtual_base): New function.
        (mark_primary_bases): Walk in inheritance graph order, use
        (mark_primary_bases): Walk in inheritance graph order, use
        mark_primary_virtual_base.
        mark_primary_virtual_base.
        (determine_primary_base): Use some more intermediate variables.
        (determine_primary_base): Use some more intermediate variables.
        (dfs_find_final_overrider): Don't check for overriding along a
        (dfs_find_final_overrider): Don't check for overriding along a
        virtual path.
        virtual path.
        (dfs_modify_vtables): Walk into primary virtual bases too.
        (dfs_modify_vtables): Walk into primary virtual bases too.
        (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
        (walk_subobject_offsets): Adjust for BINFO_PRIMARY_P.
        (build_base_fields): Likewise.
        (build_base_fields): Likewise.
        (dfs_set_offset_for_unshared_vbases): Likewise.
        (dfs_set_offset_for_unshared_vbases): Likewise.
        (layout_virtual_bases): Likewise.
        (layout_virtual_bases): Likewise.
        (end_of_class): Likewise.
        (end_of_class): Likewise.
        (finish_struct_1): Call dump_class_hierarchy, if requested.
        (finish_struct_1): Call dump_class_hierarchy, if requested.
        (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
        (dfs_get_primary_binfo): Use BINFO_TYPE for binfos.
        (dump_class_hierarchy_r): Add stream parameter. Emit more information.
        (dump_class_hierarchy_r): Add stream parameter. Emit more information.
        (dump_class_hierarchy): Add file parameter. Append to file, if
        (dump_class_hierarchy): Add file parameter. Append to file, if
        required.
        required.
        (finish_vtbls): Adjust accumulate_vtbl_inits call.
        (finish_vtbls): Adjust accumulate_vtbl_inits call.
        Use canonical base for virtual bases.
        Use canonical base for virtual bases.
        (build_vtt): Add more comments. Adjust build_vtt_inits call.
        (build_vtt): Add more comments. Adjust build_vtt_inits call.
        (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
        (build_vtt_inits): Remove VIRTUAL_VTTS_P parm.
        Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
        Only set BINFO_VPTR_INDEX on top level. Use VTT_TOP_LEVEL_P,
        VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
        VTT_MARKED_BINFO_P for binfo walking. Use canonical vbase for
        virtual VTTs.
        virtual VTTs.
        (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
        (dfs_build_secondary_vptr_vtt_inits): Extract VTT_TOP_LEVEL_P
        from DATA.  We want virtual primary bases and all bases via virtual.
        from DATA.  We want virtual primary bases and all bases via virtual.
        Only set BINFO_VPTR_INDEX for top level. Look up from a primary
        Only set BINFO_VPTR_INDEX for top level. Look up from a primary
        virtual base when not a construction vtable.
        virtual base when not a construction vtable.
        (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
        (dfs_ctor_vtable_bases_queue_p): New DFS predicate.
        (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
        (build_ctor_vtbl_group): Adjust accumulate_vtbl_inits call.
        Use canonical bases when processing virtual bases.
        Use canonical bases when processing virtual bases.
        (accumulate_vtbl_inits): We're interested in any base via a
        (accumulate_vtbl_inits): We're interested in any base via a
        virtual path.
        virtual path.
        (dfs_accumulate_vtbl_inits): If this is a primary virtual base
        (dfs_accumulate_vtbl_inits): If this is a primary virtual base
        within a construction vtable, determine what is being overridden.
        within a construction vtable, determine what is being overridden.
        (build_vtbl_initializer): Add more comments
        (build_vtbl_initializer): Add more comments
        (add_vcall_offset_vtbl_entries_1): Adjust comment.
        (add_vcall_offset_vtbl_entries_1): Adjust comment.
        (build_rtti_vtbl_entries): Check if the base has lost its
        (build_rtti_vtbl_entries): Check if the base has lost its
        primary.
        primary.
2001-02-05  Mark Mitchell  
2001-02-05  Mark Mitchell  
        * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
        * Makefile.in (g++spec.o): Adjust use of DRIVER_DEFINES.
2001-02-04  Richard Kenner  
2001-02-04  Richard Kenner  
        * decl.c (pushdecl): Call abort instead of fatal.
        * decl.c (pushdecl): Call abort instead of fatal.
        * except.c (decl_is_java_type): Call fatal_error instead of fatal.
        * except.c (decl_is_java_type): Call fatal_error instead of fatal.
        * init.c (build_new_1): Likewise.
        * init.c (build_new_1): Likewise.
        (build_java_class_ref): Call internal_error and fatal_error, not fatal.
        (build_java_class_ref): Call internal_error and fatal_error, not fatal.
        * decl.c (build_typename_type): hash_table_init now returns void.
        * decl.c (build_typename_type): hash_table_init now returns void.
        decl.c (init_decl_processing): Make an error non-fatal.
        decl.c (init_decl_processing): Make an error non-fatal.
2001-02-04  Mark Mitchell  
2001-02-04  Mark Mitchell  
        * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
        * cp-tree.h (CLASSTYPE_INTERFACE_UNKNOWN): Fix formatting.
        Document.
        Document.
        (CLASSTYPE_INTERFACE_KNOWN): Likewise.
        (CLASSTYPE_INTERFACE_KNOWN): Likewise.
        (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
        (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
        (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
        (SET_CLASSTYPE_INTERFACE_UNKNOWN): Likewise.
        (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
        (SET_CLASSTYPE_INTERFACE_KNOWN): Likewise.
        * decl.c (maybe_commonize_var): Use the new name-mangling where
        * decl.c (maybe_commonize_var): Use the new name-mangling where
        appropriate.
        appropriate.
        * decl2.c (comdat_linkage): Enhance comments.  Make all
        * decl2.c (comdat_linkage): Enhance comments.  Make all
        compiler-generated things static, if COMDAT is not available.
        compiler-generated things static, if COMDAT is not available.
        (get_tinfo_decl): Do not make typeinfo objects that belong in the
        (get_tinfo_decl): Do not make typeinfo objects that belong in the
        library COMDAT.
        library COMDAT.
        (tinfo_base_init): Use the correct mangled name for typeinfo
        (tinfo_base_init): Use the correct mangled name for typeinfo
        strings, and push them into the global scope.
        strings, and push them into the global scope.
        (typeinfo_in_lib_p): New function.
        (typeinfo_in_lib_p): New function.
        (synthesize_tinfo_var): Use it.
        (synthesize_tinfo_var): Use it.
        (create_real_tinfo_var): Likewise.
        (create_real_tinfo_var): Likewise.
2001-02-03  Jakub Jelinek  
2001-02-03  Jakub Jelinek  
        * decl.c (push_class_binding): Use context_for_name_lookup instead
        * decl.c (push_class_binding): Use context_for_name_lookup instead
        of CP_DECL_CONTEXT.
        of CP_DECL_CONTEXT.
        * search.c (context_for_name_lookup): Remove static.  Check for NULL
        * search.c (context_for_name_lookup): Remove static.  Check for NULL
        context in the loop.
        context in the loop.
        * cp-tree.h (context_for_name_lookup): Add prototype.
        * cp-tree.h (context_for_name_lookup): Add prototype.
2001-02-02  Jakub Jelinek  
2001-02-02  Jakub Jelinek  
        * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
        * cp-tree.h (build_expr_ptr_wrapper, can_free): Remove.
        * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
        * tree.c (build_expr_ptr_wrapper, can_free, permanent_obstack):
        Remove.
        Remove.
        * call.c (convert_class_to_reference, build_user_type_conversion_1,
        * call.c (convert_class_to_reference, build_user_type_conversion_1,
        add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
        add_warning): Change build_expr_ptr_wrapper to build_ptr_wrapper.
2001-02-02  Mark Mitchell  
2001-02-02  Mark Mitchell  
        * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
        * Make-lang.in (g++spec.o): Add DRIVER_DEFINES to the list
        of macros used when compiling g++spec.c.
        of macros used when compiling g++spec.c.
        * g++spec.c (lang_specific_driver): Link with the shared
        * g++spec.c (lang_specific_driver): Link with the shared
        libgcc by default.
        libgcc by default.
2001-01-29  Joseph S. Myers  
2001-01-29  Joseph S. Myers  
        * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
        * decl2.c (build_expr_from_tree), lex.c (make_pointer_declarator,
        make_reference_declarator, make_call_declarator), method.c
        make_reference_declarator, make_call_declarator), method.c
        (implicitly_declare_fn), parse.y (namespace_using_decl,
        (implicitly_declare_fn), parse.y (namespace_using_decl,
        notype_unqualified_id, expr_or_declarator, new_type_id,
        notype_unqualified_id, expr_or_declarator, new_type_id,
        after_type_declarator, direct_after_type_declarator,
        after_type_declarator, direct_after_type_declarator,
        notype_declarator, complex_notype_declarator,
        notype_declarator, complex_notype_declarator,
        complex_direct_notype_declarator, qualified_id,
        complex_direct_notype_declarator, qualified_id,
        notype_qualified_id, overqualified_id, direct_new_declarator,
        notype_qualified_id, overqualified_id, direct_new_declarator,
        absdcl, direct_abstract_declarator, conversion_declarator), pt.c
        absdcl, direct_abstract_declarator, conversion_declarator), pt.c
        (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
        (tsubst), semantics.c (begin_constructor_declarator): Use build_nt
        instead of build_parse_node.
        instead of build_parse_node.
2001-01-28  Kaveh R. Ghazi  
2001-01-28  Kaveh R. Ghazi  
        * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
        * cp-tree.h (cp_tree_index): Delete CPTI_MINUS_ONE.
        (minus_one_node): Moved to top level gcc directory.  Renamed
        (minus_one_node): Moved to top level gcc directory.  Renamed
        to integer_minus_one_node.
        to integer_minus_one_node.
        * init.c (init_init_processing): Don't set minus_one_node.
        * init.c (init_init_processing): Don't set minus_one_node.
        (build_vec_init): Use integer_minus_one_node.
        (build_vec_init): Use integer_minus_one_node.
        * rtti.c (get_tinfo_decl_dynamic): Likewise.
        * rtti.c (get_tinfo_decl_dynamic): Likewise.
2001-01-28  Jakub Jelinek  
2001-01-28  Jakub Jelinek  
        * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
        * optimize.c (copy_body_r): If MODIFY_EXPR has both arguments
        identical and they would be replaced with constant, remove
        identical and they would be replaced with constant, remove
        MODIFY_EXPR from the tree.
        MODIFY_EXPR from the tree.
2001-01-27  Kaveh R. Ghazi  
2001-01-27  Kaveh R. Ghazi  
        * Make-lang.in: Remove all dependencies on defaults.h.
        * Make-lang.in: Remove all dependencies on defaults.h.
        * call.c: Don't include defaults.h.
        * call.c: Don't include defaults.h.
        * decl.c: Likewise.
        * decl.c: Likewise.
        * decl2.c: Likewise.
        * decl2.c: Likewise.
        * except.c: Likewise.
        * except.c: Likewise.
        * pt.c: Likewise.
        * pt.c: Likewise.
        * rtti.c: Likewise.
        * rtti.c: Likewise.
        * tree.c: Likewise.
        * tree.c: Likewise.
        * typeck.c: Likewise.
        * typeck.c: Likewise.
2001-01-25  Jakub Jelinek  
2001-01-25  Jakub Jelinek  
        * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
        * mangle.c (write_mangled_name, write_encoding): Mangle overloaded
        operators even in "C" linkage.
        operators even in "C" linkage.
        * method.c (set_mangled_name_for_decl): Likewise.
        * method.c (set_mangled_name_for_decl): Likewise.
        * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
        * decl.c (grokfndecl): Call set_mangled_name_for_decl even for
        overloaded operators in "C" linkage.
        overloaded operators in "C" linkage.
2001-01-24  Nathan Sidwell  
2001-01-24  Nathan Sidwell  
        * pt.c (tsubst_decl): Remove IN_DECL parameter.
        * pt.c (tsubst_decl): Remove IN_DECL parameter.
        (tsubst_arg_types): Check parameter is not void.
        (tsubst_arg_types): Check parameter is not void.
        (tsubst): Adjust tsubst_decl call.
        (tsubst): Adjust tsubst_decl call.
2001-01-24  Nathan Sidwell  
2001-01-24  Nathan Sidwell  
        * call.c (add_builtin_candidate): Quote std properly, from
        * call.c (add_builtin_candidate): Quote std properly, from
        previous change.
        previous change.
2001-01-23  Kriang Lerdsuwanakij  
2001-01-23  Kriang Lerdsuwanakij  
        * pt.c (check_explicit_specialization): Clone constructors and
        * pt.c (check_explicit_specialization): Clone constructors and
        destructors.
        destructors.
2001-01-23  Nathan Sidwell  
2001-01-23  Nathan Sidwell  
        * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
        * decl.c (grokdeclarator): Don't presume DECL_LANG_SPECIFIC
        indicates anything special about template depth. Make sure we
        indicates anything special about template depth. Make sure we
        only count the user visible template classes.
        only count the user visible template classes.
2001-01-23  Nathan Sidwell  
2001-01-23  Nathan Sidwell  
        * call.c (build_conv): Typo in comment.
        * call.c (build_conv): Typo in comment.
        (add_builtin_candidate): Add more explanation.
        (add_builtin_candidate): Add more explanation.
        Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
        Remove extra test for ENUMERAL_TYPE in {PRE,POST}INCREMENT_EXPR.
        Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
        Allow ENUMERAL_TYPEs for relops and eqops. Add both candidates
        when we have enumeral types.
        when we have enumeral types.
        (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
        (add_builtin_candidates): Add more explanation. Add ENUMERAL_TYPE
        candidates for relops and eqops.
        candidates for relops and eqops.
        (joust): Simplify control flow. Allow a non-template user
        (joust): Simplify control flow. Allow a non-template user
        function to hide a builtin.
        function to hide a builtin.
2001-01-22  Nathan Sidwell  
2001-01-22  Nathan Sidwell  
        * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
        * cp-tree.h (unification_kind_t): Add DEDUCE_ORDER.
        (more_specialized): Add deduction parameter.
        (more_specialized): Add deduction parameter.
        * call.c (joust): Adjust more_specialized call.
        * call.c (joust): Adjust more_specialized call.
        * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
        * pt.c (UNIFY_ALLOW_OUTER_MORE_CV_QUAL,
        UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
        UNIFY_ALLOW_OUTER_LESS_CV_QUAL): New unify flags.
        (get_bindings_order): Remove.
        (get_bindings_order): Remove.
        (get_bindings_real): Add DEDUCE parameter.
        (get_bindings_real): Add DEDUCE parameter.
        (maybe_adjust_types_for_deduction): Return extra unify flags. Do
        (maybe_adjust_types_for_deduction): Return extra unify flags. Do
        REFERENCE_TYPE jig for DEDUCE_ORDER.
        REFERENCE_TYPE jig for DEDUCE_ORDER.
        (type_unification_real): Deal with DEDUCE_ORDER. Use result of
        (type_unification_real): Deal with DEDUCE_ORDER. Use result of
        maybe_adjust_types_for_deduction.
        maybe_adjust_types_for_deduction.
        (more_specialized): Add DEDUCE parameter. Call get_bindings_real
        (more_specialized): Add DEDUCE parameter. Call get_bindings_real
        directly.
        directly.
        (try_one_overload): Use result of maybe_adjust_types_for_deduction.
        (try_one_overload): Use result of maybe_adjust_types_for_deduction.
        (check_cv_quals_for_unify): Use new unify qualifier flags.
        (check_cv_quals_for_unify): Use new unify qualifier flags.
        (unify): Clear new unify qualifier flags.
        (unify): Clear new unify qualifier flags.
        (get_bindings_real): Add DEDUCE parameter.
        (get_bindings_real): Add DEDUCE parameter.
        (get_bindings): Adjust call to get_bindings_real.
        (get_bindings): Adjust call to get_bindings_real.
        (get_bindings_overload): Likewise.
        (get_bindings_overload): Likewise.
        (most_specialized_instantiation): Adjust call to
        (most_specialized_instantiation): Adjust call to
        more_specialized.
        more_specialized.
2001-01-19  Jason Merrill  
2001-01-19  Jason Merrill  
        * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
        * decl2.c (flag_vtable_thunks): Also depend on ENABLE_NEW_GXX_ABI.
        * decl.c (init_decl_processing): Just force -fvtable-thunks on if
        * decl.c (init_decl_processing): Just force -fvtable-thunks on if
        -fnew-abi.
        -fnew-abi.
2001-01-19  Ute Pelkmann  
2001-01-19  Ute Pelkmann  
        * decl2.c (arg_assoc_class): Fix double iteration logic.
        * decl2.c (arg_assoc_class): Fix double iteration logic.
2001-01-19  Jason Merrill  
2001-01-19  Jason Merrill  
        * init.c (build_delete): Always call convert_force to strip cv-quals.
        * init.c (build_delete): Always call convert_force to strip cv-quals.
        * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
        * decl2.c (flag_new_abi): Depend on ENABLE_NEW_GXX_ABI.
        * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
        * lang-specs.h: Default ABI depends on ENABLE_NEW_GXX_ABI.
        * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
        * g++spec.c: Don't look at ENABLE_NEW_GXX_ABI.
2001-01-19  Nathan Sidwell  
2001-01-19  Nathan Sidwell  
        * search.c (get_vbase_1): Count only virtual bases.
        * search.c (get_vbase_1): Count only virtual bases.
2001-01-19  Nathan Sidwell  
2001-01-19  Nathan Sidwell  
        * class.c (duplicate_tag_error): Robustify flag clearing.
        * class.c (duplicate_tag_error): Robustify flag clearing.
2001-01-19  Nathan Sidwell  
2001-01-19  Nathan Sidwell  
        * cp-tree.h (lookup_template_class): Add complain parm.
        * cp-tree.h (lookup_template_class): Add complain parm.
        * decl.c (lookup_namespace_name): Adjust call to
        * decl.c (lookup_namespace_name): Adjust call to
        lookup_template_class.
        lookup_template_class.
        (make_typename_type): Likewise.
        (make_typename_type): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * semantics.c (finish_template_type): Likewise.
        * pt.c (lookup_template_class): Add complain parm. Adjust.
        * pt.c (lookup_template_class): Add complain parm. Adjust.
        (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
        (tsubst_aggr_type): Pass COMPLAIN down to lookup_template_class.
        (tsubst): Likewise.
        (tsubst): Likewise.
2001-01-19  Nathan Sidwell  
2001-01-19  Nathan Sidwell  
        * pt.c (copy_default_args_to_explicit_spec): Preserve
        * pt.c (copy_default_args_to_explicit_spec): Preserve
        object's CV quals. Reorganize.
        object's CV quals. Reorganize.
2001-01-18  Nathan Sidwell  
2001-01-18  Nathan Sidwell  
        * typeck.c (build_modify_expr): Say `initialization' for
        * typeck.c (build_modify_expr): Say `initialization' for
        INIT_EXPRs.
        INIT_EXPRs.
        * init.c (build_default_init): Convert to enumeral type, if
        * init.c (build_default_init): Convert to enumeral type, if
        needed.
        needed.
2001-01-18  Jakub Jelinek  
2001-01-18  Jakub Jelinek  
        * parse.y (nomods_initdcl0): Properly set things up for
        * parse.y (nomods_initdcl0): Properly set things up for
        initdcl0_innards.
        initdcl0_innards.
2001-01-18  Nathan Sidwell  
2001-01-18  Nathan Sidwell  
        * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
        * pt.c (UNIFY_ALLOW_OUTER_LEVEL): New unify flag.
        (type_unification_real): Set it.
        (type_unification_real): Set it.
        (unify): Use it.
        (unify): Use it.
2001-01-18  Nathan Sidwell  
2001-01-18  Nathan Sidwell  
        * decl.c (finish_destructor_body): Convert to vbase pointer here.
        * decl.c (finish_destructor_body): Convert to vbase pointer here.
2001-01-18  Nathan Sidwell  
2001-01-18  Nathan Sidwell  
        * semantics.c (begin_class_definition): Check we're not inside a
        * semantics.c (begin_class_definition): Check we're not inside a
        template parm list.
        template parm list.
2001-01-18  Nathan Sidwell  
2001-01-18  Nathan Sidwell  
        * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
        * tree.c (walk_tree, TREE_LIST): Don't walk the TREE_PURPOSE of
        BASELINK_P.
        BASELINK_P.
2001-01-16  Kriang Lerdsuwanakij  
2001-01-16  Kriang Lerdsuwanakij  
        * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
        * typeck.c (build_function_call_real): Call fold on the CALL_EXPR.
        * call.c (build_over_call): Add comment.
        * call.c (build_over_call): Add comment.
2001-01-16 Daniel Berlin 
2001-01-16 Daniel Berlin 
        * cvt.c (ocp_convert): Handle vector type conversion
        * cvt.c (ocp_convert): Handle vector type conversion
        * typeck2.c (digest_init): Handle vector type initializations
        * typeck2.c (digest_init): Handle vector type initializations
2001-01-16  Phil Edwards  
2001-01-16  Phil Edwards  
        * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
        * g++spec.c:  Don't add libraries needlessly if -fsyntax-only
          was given.
          was given.
2001-01-15  Nathan Sidwell  
2001-01-15  Nathan Sidwell  
        * pt.c (check_nontype_parm): Rename to ...
        * pt.c (check_nontype_parm): Rename to ...
        (invalid_nontype_parm_type_p): ... here.
        (invalid_nontype_parm_type_p): ... here.
        (process_template_parm): Adjust.
        (process_template_parm): Adjust.
        (convert_template_argument): Adjust.
        (convert_template_argument): Adjust.
2001-01-15  Nathan Sidwell  
2001-01-15  Nathan Sidwell  
        * pt.c (check_nontype_parm): New function.
        * pt.c (check_nontype_parm): New function.
        (process_template_parm): Use it.
        (process_template_parm): Use it.
        (convert_template_argument): Use it.
        (convert_template_argument): Use it.
        (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
        (convert_nontype_argument, RECORD_TYPE): Assert it's a ptr to
        member.
        member.
2001-01-14  Jeffrey Oldham  
2001-01-14  Jeffrey Oldham  
        * tree.c: Add defaults.h
        * tree.c: Add defaults.h
        (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
        (cp_valid_lang_attribute): Incorporate SUPPORTS_INIT_PRIORITY.
        * Make-lang.in (cp/tree.o): Add defaults.h.
        * Make-lang.in (cp/tree.o): Add defaults.h.
2001-01-13  Joseph S. Myers  
2001-01-13  Joseph S. Myers  
        * Make-lang.in (CXX_C_OBJS): Add c-format.o.
        * Make-lang.in (CXX_C_OBJS): Add c-format.o.
2001-01-13  Joseph S. Myers  
2001-01-13  Joseph S. Myers  
        * g++.1: Change to be ".so man1/gcc.1".
        * g++.1: Change to be ".so man1/gcc.1".
2001-01-13  Joseph S. Myers  
2001-01-13  Joseph S. Myers  
        * Make-lang.in (c++.info, c++.install-info): Build and install g++
        * Make-lang.in (c++.info, c++.install-info): Build and install g++
        internals info.
        internals info.
        (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
        (c++.uninstall, c++.maintainer-clean): Remove g++ internals info.
        ($(srcdir)/cp/g++int.info): New target.
        ($(srcdir)/cp/g++int.info): New target.
        * gxxint.texi: Add info directory entry.  Use @@ in email address.
        * gxxint.texi: Add info directory entry.  Use @@ in email address.
        * .cvsignore: Update.
        * .cvsignore: Update.
2001-01-12  Nathan Sidwell  
2001-01-12  Nathan Sidwell  
        * typeck.c (build_c_cast): Do template processing earlier.
        * typeck.c (build_c_cast): Do template processing earlier.
        Always pedwarn on array casts.
        Always pedwarn on array casts.
2001-01-12  Nathan Sidwell  
2001-01-12  Nathan Sidwell  
        * friend.c (make_friend_class): Make sure a templated class is
        * friend.c (make_friend_class): Make sure a templated class is
        actually a template.
        actually a template.
2001-01-11  Nathan Sidwell  
2001-01-11  Nathan Sidwell  
        * decl2.c (get_guard): Set linkage from guarded decl.
        * decl2.c (get_guard): Set linkage from guarded decl.
2001-01-11  Nathan Sidwell  
2001-01-11  Nathan Sidwell  
        * call.c (convert_default_arg): Check for unprocessed
        * call.c (convert_default_arg): Check for unprocessed
        DEFAULT_ARG.
        DEFAULT_ARG.
        * cp-tree.h (replace_defarg): Move to spew.c.
        * cp-tree.h (replace_defarg): Move to spew.c.
        (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
        (maybe_snarf_defarg, add_defarg_fn, do_pending_defargs): Move to
        spew.c, which is where they really are.
        spew.c, which is where they really are.
        (done_pending_defargs): Declare.
        (done_pending_defargs): Declare.
        (unprocessed_defarg_fn): Declare.
        (unprocessed_defarg_fn): Declare.
        * decl.c (replace_defarg): Move to spew.c
        * decl.c (replace_defarg): Move to spew.c
        * parse.y (structsp): Call done_pending_defargs.
        * parse.y (structsp): Call done_pending_defargs.
        * spew.c (defarg_fns): Rearrange list structure.
        * spew.c (defarg_fns): Rearrange list structure.
        (defarg_fnsdone): New static variable.
        (defarg_fnsdone): New static variable.
        (defarg_depfns): New static variable.
        (defarg_depfns): New static variable.
        (init_spew): Adjust.
        (init_spew): Adjust.
        (add_defarg_fn): Store the type in TREE_TYPE.
        (add_defarg_fn): Store the type in TREE_TYPE.
        (do_pending_defargs): Detect and deal with ordering constraints
        (do_pending_defargs): Detect and deal with ordering constraints
        and circularity.
        and circularity.
        (done_pending_defargs): New function.
        (done_pending_defargs): New function.
        (unprocessed_defarg_fn): New function.
        (unprocessed_defarg_fn): New function.
        (replace_defarg): Moved from decl.c. Robustify. Don't save
        (replace_defarg): Moved from decl.c. Robustify. Don't save
        if circularity detected.
        if circularity detected.
2001-01-11  Nathan Sidwell  
2001-01-11  Nathan Sidwell  
        * pt.c (unify): Check array has a domain, before checking
        * pt.c (unify): Check array has a domain, before checking
        whether it is variable sized.
        whether it is variable sized.
2001-01-11  Nathan Sidwell  
2001-01-11  Nathan Sidwell  
        * decl.c (grokparms): Unobfuscate and get correct diagnostic for
        * decl.c (grokparms): Unobfuscate and get correct diagnostic for
        parameters with pointers to arrays of unknown bound.
        parameters with pointers to arrays of unknown bound.
2001-01-11  Nathan Sidwell  
2001-01-11  Nathan Sidwell  
        * parse.y (template_parm_header, template_spec_header): New
        * parse.y (template_parm_header, template_spec_header): New
        reductions. Split out from ...
        reductions. Split out from ...
        (template_header): ... here. Use them.
        (template_header): ... here. Use them.
        (template_template_parm): Use template_parm_header.
        (template_template_parm): Use template_parm_header.
        * semantics.c (finish_template_template_parm): Add assert.
        * semantics.c (finish_template_template_parm): Add assert.
2001-01-10  Mark Mitchell  
2001-01-10  Mark Mitchell  
        * mangle.c (write_builtin_type): Fix thinko.
        * mangle.c (write_builtin_type): Fix thinko.
        * pt.c (copy_default_args_to_explicit_spec_1): New function.
        * pt.c (copy_default_args_to_explicit_spec_1): New function.
        (copy_default_args_to_explicit_spec): Likewise.
        (copy_default_args_to_explicit_spec): Likewise.
        (check_explicit_specialization): Use it.
        (check_explicit_specialization): Use it.
        * class.c (finish_struct_1):  Remove last argument in call to
        * class.c (finish_struct_1):  Remove last argument in call to
        make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
        make_decl_rtl; use make_function_rtl instead of make_decl_rtl.
        * decl.c (builtin_function): Likewise.
        * decl.c (builtin_function): Likewise.
        (build_cp_library_fn): Likewise.
        (build_cp_library_fn): Likewise.
        (check_initializer): Likewise.
        (check_initializer): Likewise.
        (make_rtl_for_nonlocal_decl): Likewise.
        (make_rtl_for_nonlocal_decl): Likewise.
        (cp_finish_decl): Likewise.
        (cp_finish_decl): Likewise.
        (start_function): Likewise.
        (start_function): Likewise.
        * decl2.c (finish_anon_union): Likewise.
        * decl2.c (finish_anon_union): Likewise.
        * friend.c (do_friend): Likewise.
        * friend.c (do_friend): Likewise.
        * init.c (build_java_class_ref): Likewise.
        * init.c (build_java_class_ref): Likewise.
        * method.c (make_thunk): Likewise.
        * method.c (make_thunk): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        * pt.c (tsubst_friend_function): Likewise.
        * semantics.c (expand_body): Likewise.
        * semantics.c (expand_body): Likewise.
2001-01-10  Mark Mitchell  
2001-01-10  Mark Mitchell  
        * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
        * cp-tree.h (DECL_CLONED_FUNCTION_P): Avoid wild reads by not
        looking at DECL_CLONED_FUNCTION for non-functions.
        looking at DECL_CLONED_FUNCTION for non-functions.
2001-01-10  Nathan Sidwell  
2001-01-10  Nathan Sidwell  
        * error.c (dump_template_parameter): Use parm to determine how
        * error.c (dump_template_parameter): Use parm to determine how
        to print default value.
        to print default value.
2001-01-10  Nathan Sidwell  
2001-01-10  Nathan Sidwell  
        * class.c (duplicate_tag_error): Clear more flags.
        * class.c (duplicate_tag_error): Clear more flags.
2001-01-10  Nathan Sidwell  
2001-01-10  Nathan Sidwell  
        * call.c (build_new_method_call): Use binfo_for_vbase.
        * call.c (build_new_method_call): Use binfo_for_vbase.
2001-01-10  Joseph S. Myers  
2001-01-10  Joseph S. Myers  
        * cp-tree.h (flag_cond_mismatch): Don't declare.
        * cp-tree.h (flag_cond_mismatch): Don't declare.
        * decl2.c (flag_cond_mismatch): Don't define.
        * decl2.c (flag_cond_mismatch): Don't define.
        (lang_f_options): Remove cond-mismatch.
        (lang_f_options): Remove cond-mismatch.
        (unsupported_options): Add cond-mismatch.
        (unsupported_options): Add cond-mismatch.
2001-01-09  Nathan Sidwell  
2001-01-09  Nathan Sidwell  
        * class.c (handle_using_decl): Reject using of constructor name
        * class.c (handle_using_decl): Reject using of constructor name
        of sourcing class. Allow injecting of a method with same name as
        of sourcing class. Allow injecting of a method with same name as
        nested class. Fixup error messages.
        nested class. Fixup error messages.
2001-01-09  Joseph S. Myers  
2001-01-09  Joseph S. Myers  
        * decl2.c (lang_decode_option): Handle -Wformat=2.
        * decl2.c (lang_decode_option): Handle -Wformat=2.
2001-01-08  Nathan Sidwell  
2001-01-08  Nathan Sidwell  
        * cp-tree.h (lang_decl_flags): Rename defined_in_class to
        * cp-tree.h (lang_decl_flags): Rename defined_in_class to
        initialized_in_class.
        initialized_in_class.
        (DECL_DEFINED_IN_CLASS_P): Rename to ...
        (DECL_DEFINED_IN_CLASS_P): Rename to ...
        (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
        (DECL_INITIALIZED_IN_CLASS_P): ... here, to reflect true meaning.
        * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
        * decl.c (duplicate_decls): Preseve DECL_INITIALIZED_IN_CLASS_P.
        (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
        (cp_finish_decl): Adjust for DECL_INITIALIZED_IN_CLASS_P.
        * pt.c (check_default_tmpl_args): Adjust for
        * pt.c (check_default_tmpl_args): Adjust for
        DECL_INITIALIZED_IN_CLASS_P.
        DECL_INITIALIZED_IN_CLASS_P.
        (instantiate_class_template): Likewise.
        (instantiate_class_template): Likewise.
        (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
        (instantiate_decl): Check DECL_INITIALIZED_IN_CLASS_P.
        * class.c (finish_struct): Constify saved_filename.
        * class.c (finish_struct): Constify saved_filename.
2001-01-08  Nathan Sidwell  
2001-01-08  Nathan Sidwell  
        * class.c (duplicate_tag_error): Adjust diagnostic.
        * class.c (duplicate_tag_error): Adjust diagnostic.
        (finish_struct): Locally set location to start of struct.
        (finish_struct): Locally set location to start of struct.
        * decl.c (fixup_anonymous_aggr): Use cp_error_at.
        * decl.c (fixup_anonymous_aggr): Use cp_error_at.
2001-01-08  Nathan Sidwell  
2001-01-08  Nathan Sidwell  
        * decl.c (struct binding_level): Adjust class_shadowed comments
        * decl.c (struct binding_level): Adjust class_shadowed comments
        to reflect reality.
        to reflect reality.
        (push_class_level_binding): Adjust comments to reflect reality.
        (push_class_level_binding): Adjust comments to reflect reality.
        Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
        Set IDENTIFIER_CLASS_VALUE when replacing an existing binding.
        Don't set TREE_VALUE on the class_shadowed list.
        Don't set TREE_VALUE on the class_shadowed list.
2001-01-07  Alexandre Petit-Bianco  
2001-01-07  Alexandre Petit-Bianco  
        * decl2.c (acceptable_java_type): Allow references too.
        * decl2.c (acceptable_java_type): Allow references too.
        * init.c (build_java_class_ref): When using the new ABI, search
        * init.c (build_java_class_ref): When using the new ABI, search
        `class$' and have it mangled with `mangle_decl.'
        `class$' and have it mangled with `mangle_decl.'
        * mangle.c (write_java_integer_type_codes): New function.
        * mangle.c (write_java_integer_type_codes): New function.
        (write_builtin_type): Detect and mangle Java integer and real
        (write_builtin_type): Detect and mangle Java integer and real
        types.
        types.
2001-01-07  Mark Mitchell  
2001-01-07  Mark Mitchell  
        * decl2.c (grokfield): Don't accept `asm' specifiers for
        * decl2.c (grokfield): Don't accept `asm' specifiers for
        non-static data members.
        non-static data members.
2001-01-07  Kaveh R. Ghazi  
2001-01-07  Kaveh R. Ghazi  
        * expr.c (cplus_expand_expr): Don't reset `target'.
        * expr.c (cplus_expand_expr): Don't reset `target'.
2001-01-07  Neil Booth  
2001-01-07  Neil Booth  
        * cp/decl2.c (cxx_post_options): Call cpp_post_options.
        * cp/decl2.c (cxx_post_options): Call cpp_post_options.
2001-01-05  Nathan Sidwell  
2001-01-05  Nathan Sidwell  
        * parse.y (template_datadef): Check for error_mark_node.
        * parse.y (template_datadef): Check for error_mark_node.
2001-01-05  Nathan Sidwell  
2001-01-05  Nathan Sidwell  
        * cp-tree.def (DEFAULT_ARG): Make `x' class.
        * cp-tree.def (DEFAULT_ARG): Make `x' class.
2001-01-04  Joseph S. Myers  
2001-01-04  Joseph S. Myers  
        * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
        * decl.c (SIZE_TYPE, PTRDIFF_TYPE, WCHAR_TYPE): Don't define.
        (record_builtin_type): Make non-static.
        (record_builtin_type): Make non-static.
        (flag_short_double): Don't declare.
        (flag_short_double): Don't declare.
        (init_decl_processing): Remove the creation of many tree nodes now
        (init_decl_processing): Remove the creation of many tree nodes now
        in c_common_nodes_and_builtins.
        in c_common_nodes_and_builtins.
        (build_void_list_node): New function.
        (build_void_list_node): New function.
        * decl2.c (flag_short_double, flag_short_wchar): Don't define.
        * decl2.c (flag_short_double, flag_short_wchar): Don't define.
        * cp-tree.h (flag_short_wchar): Don't declare.
        * cp-tree.h (flag_short_wchar): Don't declare.
2001-01-04  Mark Mitchell  
2001-01-04  Mark Mitchell  
        * call.c (build_conv): Don't use build1 for USER_CONV.
        * call.c (build_conv): Don't use build1 for USER_CONV.
        * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
        * pt.c (tsubst_copy): Or for PREINCREMENT_EXPR and similar nodes.
2001-01-03  Joseph S. Myers  
2001-01-03  Joseph S. Myers  
        * lex.c (lang_init): Call c_common_lang_init.
        * lex.c (lang_init): Call c_common_lang_init.
2001-01-03  Nathan Sidwell  
2001-01-03  Nathan Sidwell  
        * search.c (lookup_fnfields_here): Remove.
        * search.c (lookup_fnfields_here): Remove.
        (look_for_overrides_r): Use lookup_fnfields_1.
        (look_for_overrides_r): Use lookup_fnfields_1.
        Ignore functions from using declarations.
        Ignore functions from using declarations.
2001-01-03  Nathan Sidwell  
2001-01-03  Nathan Sidwell  
        Implement exceptions specifiers for implicit member functions.
        Implement exceptions specifiers for implicit member functions.
        * cp-tree.h (merge_exceptions_specifiers): Declare new function.
        * cp-tree.h (merge_exceptions_specifiers): Declare new function.
        * method.c (synthesize_exception_spec): New function.
        * method.c (synthesize_exception_spec): New function.
        (locate_dtor, locate_ctor, locate_copy): New functions.
        (locate_dtor, locate_ctor, locate_copy): New functions.
        (implicitly_declare_fn): Generate the exception spec too.
        (implicitly_declare_fn): Generate the exception spec too.
        * search.c (check_final_overrider): Check artificial functions
        * search.c (check_final_overrider): Check artificial functions
        too.
        too.
        * typeck2.c (merge_exception_specifiers): New function.
        * typeck2.c (merge_exception_specifiers): New function.
2001-01-03  Jason Merrill  
2001-01-03  Jason Merrill  
        * init.c (build_default_init): New fn.
        * init.c (build_default_init): New fn.
        (perform_member_init): Split out from here.
        (perform_member_init): Split out from here.
        (build_new_1): Use it.  Simplify initialization logic.
        (build_new_1): Use it.  Simplify initialization logic.
        (build_vec_init): Take an array, rather than a pointer and maxindex.
        (build_vec_init): Take an array, rather than a pointer and maxindex.
        Speed up simple initializations.  Don't clean up if we're assigning.
        Speed up simple initializations.  Don't clean up if we're assigning.
        * cp-tree.h: Adjust.
        * cp-tree.h: Adjust.
        * decl2.c (do_static_initialization): Remove TREE_VEC case.
        * decl2.c (do_static_initialization): Remove TREE_VEC case.
        * parse.y (new_initializer): Return void_zero_node for ().
        * parse.y (new_initializer): Return void_zero_node for ().
        * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
        * typeck.c (build_modify_expr): Handle getting a CONSTRUCTOR.
        * typeck2.c (digest_init): Only complain about user-written
        * typeck2.c (digest_init): Only complain about user-written
        CONSTRUCTORs.
        CONSTRUCTORs.
2000-12-22  Mike Stump  
2000-12-22  Mike Stump  
        * decl2.c: (max_tinst_depth): Increase to 50.
        * decl2.c: (max_tinst_depth): Increase to 50.
2001-01-02  Mark Mitchell  
2001-01-02  Mark Mitchell  
        * class.c (invalidate_class_lookup_cache): Zero the
        * class.c (invalidate_class_lookup_cache): Zero the
        previous_class_values.
        previous_class_values.
        * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
        * cp-tree.h (TMPL_PARMS_DEPTH): Use TREE_INT_CST_LOW, not
        TREE_INT_CST_HIGH.
        TREE_INT_CST_HIGH.
        (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
        (CLASSTYPE_TEMPLATE_LEVEL): Likewise.
        * decl.c (free_bindings): New variable.
        * decl.c (free_bindings): New variable.
        (push_binding): Don't create a new binding if we have one on the
        (push_binding): Don't create a new binding if we have one on the
        free list.
        free list.
        (pop_binding): Put old bindings on the free list.
        (pop_binding): Put old bindings on the free list.
        (init_decl_processing): Use size_int, not build_int_2.
        (init_decl_processing): Use size_int, not build_int_2.
        Register free_bindings as a GC root.
        Register free_bindings as a GC root.
        (cp_make_fname_decl): Use size_int, not build_int_2.
        (cp_make_fname_decl): Use size_int, not build_int_2.
        (push_inline_template_parms_recursive): Likewise.
        (push_inline_template_parms_recursive): Likewise.
        (end_template_parm_list): Likewise.
        (end_template_parm_list): Likewise.
        (for_each_template_parm): Do not use walk_tree_without_duplicates.
        (for_each_template_parm): Do not use walk_tree_without_duplicates.
        (tsubst_template_parms): Use size_int, not build_int_2.
        (tsubst_template_parms): Use size_int, not build_int_2.
        (tsubst): Likewise.
        (tsubst): Likewise.
        * rtti.c (get_vmi_pseudo_type_info): Likewise.
        * rtti.c (get_vmi_pseudo_type_info): Likewise.
2001-01-02  Richard Henderson  
2001-01-02  Richard Henderson  
        * parse.y (asm): Set ASM_INPUT_P.
        * parse.y (asm): Set ASM_INPUT_P.
2001-01-02  Jason Merrill  
2001-01-02  Jason Merrill  
        * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
        * tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
        for v3 ABI.
        for v3 ABI.
        * typeck.c (cp_truthvalue_conversion): New fn.
        * typeck.c (cp_truthvalue_conversion): New fn.
        * cvt.c (ocp_convert): Use it.
        * cvt.c (ocp_convert): Use it.
        * cp-tree.h: Lose c-common.c decls.
        * cp-tree.h: Lose c-common.c decls.
        * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
        * typeck.c (build_unary_op): Restore old &a.f diagnostic code.
        * cvt.c (convert_to_void): Use type_unknown_p.
        * cvt.c (convert_to_void): Use type_unknown_p.
        * typeck.c (strip_all_pointer_quals): Also strip quals from
        * typeck.c (strip_all_pointer_quals): Also strip quals from
        pointer-to-member types.
        pointer-to-member types.
        * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
        * Make-lang.in (cp/TAGS): Use --no-globals.  Ignore parse.c, and treat
        parse.y as C.
        parse.y as C.
        * call.c (build_new_method_call): Do evaluate the object parameter
        * call.c (build_new_method_call): Do evaluate the object parameter
        when accessing a static member.
        when accessing a static member.
        * typeck.c (build_component_ref): Likewise.
        * typeck.c (build_component_ref): Likewise.
2001-01-02  Andreas Jaeger  
2001-01-02  Andreas Jaeger  
        * decl.c (cp_missing_noreturn_ok_p): New.
        * decl.c (cp_missing_noreturn_ok_p): New.
        (init_decl_processing): Set lang_missing_noreturn_ok_p.
        (init_decl_processing): Set lang_missing_noreturn_ok_p.


Copyright (C) 2001 Free Software Foundation, Inc.
Copyright (C) 2001 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
notice and this notice are preserved.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.