OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [cp/] [ChangeLog-1997] - Diff between revs 816 and 826

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 816 Rev 826
Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  
Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  
        * call.c (add_builtin_candidate): Add default case in enumeration
        * call.c (add_builtin_candidate): Add default case in enumeration
        switch.
        switch.
        (build_new_op): Likewise.
        (build_new_op): Likewise.
        (convert_like): Likewise.
        (convert_like): Likewise.
        * cvt.c (build_expr_type_conversion): Likewise.
        * cvt.c (build_expr_type_conversion): Likewise.
        * tree.c (real_lvalue_p): Likewise.
        * tree.c (real_lvalue_p): Likewise.
        (lvalue_p): Likewise.
        (lvalue_p): Likewise.
        (cp_tree_equal): Likewise.
        (cp_tree_equal): Likewise.
        * typeck.c (comptypes): Likewise.
        * typeck.c (comptypes): Likewise.
        (build_component_ref): Likewise.
        (build_component_ref): Likewise.
        (build_function_call_real): Likewise.
        (build_function_call_real): Likewise.
        (build_binary_op_nodefault): Likewise.
        (build_binary_op_nodefault): Likewise.
        (build_unary_op): Likewise.
        (build_unary_op): Likewise.
        (build_modify_expr): Likewise.
        (build_modify_expr): Likewise.
        * typeck2.c (initializer_constant_valid_p): Likewise.
        * typeck2.c (initializer_constant_valid_p): Likewise.
Sun Dec 21 15:59:00 1997  Nick Clifton  
Sun Dec 21 15:59:00 1997  Nick Clifton  
        * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
        * decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
Thu Dec 18 14:51:50 1997  Mark Mitchell  
Thu Dec 18 14:51:50 1997  Mark Mitchell  
        * pt.c (coerce_template_parms): Make sure to digest_init if
        * pt.c (coerce_template_parms): Make sure to digest_init if
        possible.
        possible.
        * decl.c (duplicate_decls): Make the newdecl virtual if the
        * decl.c (duplicate_decls): Make the newdecl virtual if the
        olddecl was, just as is done with other attributes of olddecl.
        olddecl was, just as is done with other attributes of olddecl.
Thu Dec 18 14:43:19 1997  Jason Merrill  
Thu Dec 18 14:43:19 1997  Jason Merrill  
        * typeck.c (unary_complex_lvalue): Ignore op0 when taking the
        * typeck.c (unary_complex_lvalue): Ignore op0 when taking the
        address of an OFFSET_REF.
        address of an OFFSET_REF.
        * cp-tree.def: Add AGGR_INIT_EXPR.
        * cp-tree.def: Add AGGR_INIT_EXPR.
        * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
        * error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
        AGGR_INIT_EXPR where appropriate.
        AGGR_INIT_EXPR where appropriate.
        * expr.c (cplus_expand_expr): Likewise.  Simplify.
        * expr.c (cplus_expand_expr): Likewise.  Simplify.
        * decl2.c (finish_file): Remove call to register_exception_table.
        * decl2.c (finish_file): Remove call to register_exception_table.
Wed Dec 17 17:08:52 1997  Benjamin Kosnik  
Wed Dec 17 17:08:52 1997  Benjamin Kosnik  
        * pt.c (instantiate_class_template): Don't do injection when
        * pt.c (instantiate_class_template): Don't do injection when
        processing_template_decl is true, as pollutes current_binding_level
        processing_template_decl is true, as pollutes current_binding_level
        for base classes.
        for base classes.
Wed Dec 17 21:17:39 1997  Peter Schmid  
Wed Dec 17 21:17:39 1997  Peter Schmid  
        * pt.c (maybe_fold_nontype_arg): Add prototype.
        * pt.c (maybe_fold_nontype_arg): Add prototype.
Tue Dec 16 10:31:20 1997  Jason Merrill  
Tue Dec 16 10:31:20 1997  Jason Merrill  
        * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
        * tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
        * error.c (dump_expr): Likewise.
        * error.c (dump_expr): Likewise.
Mon Dec 15 12:22:04 1997  Jason Merrill  
Mon Dec 15 12:22:04 1997  Jason Merrill  
        * typeck.c (build_function_call_real): Remove "inline called before
        * typeck.c (build_function_call_real): Remove "inline called before
        definition" pedwarn.
        definition" pedwarn.
        * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
        * pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
Sun Dec 14 22:34:20 1997  Jason Merrill  
Sun Dec 14 22:34:20 1997  Jason Merrill  
        * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
        * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
        * pt.c (type_unification_real): Change __null to type void* with
        * pt.c (type_unification_real): Change __null to type void* with
        a warning.
        a warning.
Sun Dec 14 20:38:35 1997  Mark Mitchell  
Sun Dec 14 20:38:35 1997  Mark Mitchell  
        * call.c (implicit_conversion): Don't call
        * call.c (implicit_conversion): Don't call
        build_user_type_conversion_1 with a NULL expr, since it will
        build_user_type_conversion_1 with a NULL expr, since it will
        crash.
        crash.
        * pt.c (unify): Don't try to unify array bounds if either array is
        * pt.c (unify): Don't try to unify array bounds if either array is
        unbounded.
        unbounded.
Fri Dec 12 16:09:14 1997  Jason Merrill  
Fri Dec 12 16:09:14 1997  Jason Merrill  
        * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at):
        * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at):
        Replace extern decls with casts.
        Replace extern decls with casts.
        * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
        * decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
        Update last_parm_cleanup_insn.
        Update last_parm_cleanup_insn.
        (store_after_parms): Remove.
        (store_after_parms): Remove.
        * cp-tree.h: Adjust.
        * cp-tree.h: Adjust.
Thu Dec 11 22:18:37 1997  Jason Merrill  
Thu Dec 11 22:18:37 1997  Jason Merrill  
        * decl2.c (comdat_linkage): Also set DECL_COMDAT.
        * decl2.c (comdat_linkage): Also set DECL_COMDAT.
        (finish_file): Check DECL_COMDAT instead of weak|one_only.
        (finish_file): Check DECL_COMDAT instead of weak|one_only.
        (import_export_vtable): Use make_decl_one_only instead of
        (import_export_vtable): Use make_decl_one_only instead of
        comdat_linkage for win32 tweak.
        comdat_linkage for win32 tweak.
        (import_export_decl): Likewise.
        (import_export_decl): Likewise.
        * pt.c (mark_decl_instantiated): Likewise.
        * pt.c (mark_decl_instantiated): Likewise.
        * decl2.c (finish_file): Lose handling of templates in pending_statics.
        * decl2.c (finish_file): Lose handling of templates in pending_statics.
Thu Dec 11 21:12:09 1997  Jason Merrill  
Thu Dec 11 21:12:09 1997  Jason Merrill  
        * decl2.c (finish_file): Lose call to expand_builtin_throw.
        * decl2.c (finish_file): Lose call to expand_builtin_throw.
        * except.c (expand_builtin_throw): Remove.
        * except.c (expand_builtin_throw): Remove.
        * cp-tree.h: Remove ptr_ptr_type_node.
        * cp-tree.h: Remove ptr_ptr_type_node.
        * decl.c: Likewise.
        * decl.c: Likewise.
Thu Dec 11 20:43:33 1997  Teemu Torma  
Thu Dec 11 20:43:33 1997  Teemu Torma  
        * decl.c (ptr_ptr_type_node): Define.
        * decl.c (ptr_ptr_type_node): Define.
        (init_decl_processing): Initialize it.
        (init_decl_processing): Initialize it.
        * cp-tree.h: Declare it.
        * cp-tree.h: Declare it.
        * exception.cc (__cp_exception_info): Use __get_eh_info.
        * exception.cc (__cp_exception_info): Use __get_eh_info.
        (__cp_push_exception): Likewise.
        (__cp_push_exception): Likewise.
        (__cp_pop_exception): Likewise.
        (__cp_pop_exception): Likewise.
        From Scott Snyder :
        From Scott Snyder :
        * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
        * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
        saved_pc.
        saved_pc.
        (init_exception_processing): Removed saved_pc initialization.
        (init_exception_processing): Removed saved_pc initialization.
Wed Dec 10 11:04:45 1997  Jason Merrill  
Wed Dec 10 11:04:45 1997  Jason Merrill  
        * pt.c (instantiate_decl): Defer all templates but inline functions.
        * pt.c (instantiate_decl): Defer all templates but inline functions.
Mon Dec  8 23:17:13 1997  Jason Merrill  
Mon Dec  8 23:17:13 1997  Jason Merrill  
        * init.c (expand_vec_init): Don't fold a list of parameters.
        * init.c (expand_vec_init): Don't fold a list of parameters.
        * decl.c (copy_args_p): Handle copy elision for types with virtual
        * decl.c (copy_args_p): Handle copy elision for types with virtual
        bases.
        bases.
        * call.c (build_over_call): Likewise.
        * call.c (build_over_call): Likewise.
Sun Dec  7 22:38:12 1997  Mark Mitchell  
Sun Dec  7 22:38:12 1997  Mark Mitchell  
        * pt.c (lookup_template_function): Copy the template arguments,
        * pt.c (lookup_template_function): Copy the template arguments,
        not just the list containing them, to the permanent obstack.
        not just the list containing them, to the permanent obstack.
Sun Dec  7 15:53:06 1997  Jason Merrill  
Sun Dec  7 15:53:06 1997  Jason Merrill  
        * except.c (expand_start_catch_block): suspend_momentary for the
        * except.c (expand_start_catch_block): suspend_momentary for the
        terminate handler.
        terminate handler.
        * error.c (dump_decl): Handle LOOKUP_EXPR.
        * error.c (dump_decl): Handle LOOKUP_EXPR.
Sun Dec  7 15:45:07 1997  Mark Mitchell  
Sun Dec  7 15:45:07 1997  Mark Mitchell  
        * rtti.c (build_dynamic_cast): Copy the cast-to type to the
        * rtti.c (build_dynamic_cast): Copy the cast-to type to the
        permanent obstack if we are processing a template decl.
        permanent obstack if we are processing a template decl.
        * typeck.c (build_static_cast): Likewise.
        * typeck.c (build_static_cast): Likewise.
        (build_const_cast): Likewise.
        (build_const_cast): Likewise.
        (build_reinterpret_cast): Likewise.
        (build_reinterpret_cast): Likewise.
        * pt.c (coerce_template_parms): Coerce some expressions, even
        * pt.c (coerce_template_parms): Coerce some expressions, even
        when processing_template_decl.
        when processing_template_decl.
Sun Dec  7 01:46:33 1997  Bruno Haible  
Sun Dec  7 01:46:33 1997  Bruno Haible  
        * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
        * typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
        handling of pointer difference expressions.
        handling of pointer difference expressions.
        * typeck.c (comp_target_types): Comparison of function/method types
        * typeck.c (comp_target_types): Comparison of function/method types
        is independent of nptrs.
        is independent of nptrs.
Sun Dec  7 01:40:27 1997  Mark Mitchell  
Sun Dec  7 01:40:27 1997  Mark Mitchell  
        * pt.c (tsubst): Avoid creating pointer to reference and
        * pt.c (tsubst): Avoid creating pointer to reference and
        reference to reference types.
        reference to reference types.
Sat Dec  6 01:29:37 1997  Jason Merrill  
Sat Dec  6 01:29:37 1997  Jason Merrill  
        * parse.y (do_id): New nonterminal.
        * parse.y (do_id): New nonterminal.
        (template_id): Use it.
        (template_id): Use it.
Fri Dec  5 01:17:34 1997  Jason Merrill  
Fri Dec  5 01:17:34 1997  Jason Merrill  
        * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
        * parse.y (template_id): do_identifier for PFUNCNAMEs, too.
        * spew.c (yylex): Don't do_identifier here.
        * spew.c (yylex): Don't do_identifier here.
        * decl2.c (build_expr_from_tree): Revert last change.
        * decl2.c (build_expr_from_tree): Revert last change.
        * decl2.c (build_expr_from_tree): Expand the name for a method call.
        * decl2.c (build_expr_from_tree): Expand the name for a method call.
        * parse.y (object_template_id): Don't try to take the DECL_NAME.
        * parse.y (object_template_id): Don't try to take the DECL_NAME.
Wed Dec  3 20:02:39 1997  Jason Merrill  
Wed Dec  3 20:02:39 1997  Jason Merrill  
        * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
        * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
        alloc_expr.
        alloc_expr.
        * call.c (build_op_delete_call): Adjust.
        * call.c (build_op_delete_call): Adjust.
        * except.c (expand_end_catch_block): Lose rethrow region.
        * except.c (expand_end_catch_block): Lose rethrow region.
        (expand_start_catch_block): Likewise.
        (expand_start_catch_block): Likewise.
        (expand_end_catch_block): Don't expand_leftover_cleanups.
        (expand_end_catch_block): Don't expand_leftover_cleanups.
Wed Dec  3 13:24:04 1997  Benjamin Kosnik  
Wed Dec  3 13:24:04 1997  Benjamin Kosnik  
        * pt.c (tsubst): Remove tree_cons call (places redundant info into
        * pt.c (tsubst): Remove tree_cons call (places redundant info into
        DECL_TEMPLATE_INSTANTIATION).
        DECL_TEMPLATE_INSTANTIATION).
Wed Dec  3 11:44:52 1997  Jason Merrill  
Wed Dec  3 11:44:52 1997  Jason Merrill  
        * tree.c (is_overloaded_fn): Handle getting a fn template.
        * tree.c (is_overloaded_fn): Handle getting a fn template.
        (really_overloaded_fn): Likewise.
        (really_overloaded_fn): Likewise.
        * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
        * error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
        * pt.c (check_explicit_specialization): Tweak.
        * pt.c (check_explicit_specialization): Tweak.
        (determine_explicit_specialization): Tweak.
        (determine_explicit_specialization): Tweak.
        * tree.c, cp-tree.h (get_target_expr): New fn.
        * tree.c, cp-tree.h (get_target_expr): New fn.
Wed Dec  3 08:47:27 1997  Paul Eggert  
Wed Dec  3 08:47:27 1997  Paul Eggert  
        * pt.c (check_explicit_specialization): Fix misspelling in
        * pt.c (check_explicit_specialization): Fix misspelling in
        diagnostic: `preceeded'.
        diagnostic: `preceeded'.
        * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
        * typeck.c (get_delta_difference): Fix misspelling in diagnostic:
        `conversiona'.
        `conversiona'.
1997-12-02  Mark Mitchell  
1997-12-02  Mark Mitchell  
        * pt.c (determine_explicit_specialization): Avoid an internal
        * pt.c (determine_explicit_specialization): Avoid an internal
        error for bad specializations.
        error for bad specializations.
        * method.c (build_overload_value): Handle SCOPE_REF.
        * method.c (build_overload_value): Handle SCOPE_REF.
Tue Dec  2 19:18:50 1997  Mike Stump  
Tue Dec  2 19:18:50 1997  Mike Stump  
        * class.c (prepare_fresh_vtable): Enable even more complex MI
        * class.c (prepare_fresh_vtable): Enable even more complex MI
        vtable names.
        vtable names.
Tue Dec  2 01:37:19 1997  Jason Merrill  
Tue Dec  2 01:37:19 1997  Jason Merrill  
        * exception.cc (__check_eh_spec): Optimize a bit.
        * exception.cc (__check_eh_spec): Optimize a bit.
        * exception.cc (__cp_pop_exception): Lose handler arg.
        * exception.cc (__cp_pop_exception): Lose handler arg.
        * except.c (do_pop_exception): Likewise.
        * except.c (do_pop_exception): Likewise.
        (push_eh_cleanup): Let the cleanup mechanism supply the handler.
        (push_eh_cleanup): Let the cleanup mechanism supply the handler.
        (expand_end_catch_block): Likewise.
        (expand_end_catch_block): Likewise.
Fri Nov 28 01:58:14 1997  Jason Merrill  
Fri Nov 28 01:58:14 1997  Jason Merrill  
        * pt.c (check_explicit_specialization): Complain about using a
        * pt.c (check_explicit_specialization): Complain about using a
        template-id for a non-specialization.
        template-id for a non-specialization.
Fri Nov 28 12:35:19 1997  Scott Christley  
Fri Nov 28 12:35:19 1997  Scott Christley  
        * repo.c: Prototype rindex only if needed.
        * repo.c: Prototype rindex only if needed.
        * xref.c: Likewise.
        * xref.c: Likewise.
Fri Nov 28 01:56:35 1997  Bruno Haible  
Fri Nov 28 01:56:35 1997  Bruno Haible  
        * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
        * error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
Thu Nov 27 00:59:46 1997  Jason Merrill  
Thu Nov 27 00:59:46 1997  Jason Merrill  
        * typeck.c (build_const_cast): Handle references here instead of
        * typeck.c (build_const_cast): Handle references here instead of
        handing off to convert_to_reference.
        handing off to convert_to_reference.
        * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
        * except.c: Lose Unexpected, SetTerminate, SetUnexpected,
        TerminateFunctionCall.
        TerminateFunctionCall.
        (init_exception_processing): Likewise.  Terminate et al are now
        (init_exception_processing): Likewise.  Terminate et al are now
        the fns, not ADDR_EXPRs.
        the fns, not ADDR_EXPRs.
        (various): Lose redundant assemble_external calls.
        (various): Lose redundant assemble_external calls.
        (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
        (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
        * cp-tree.h (struct lang_decl_flags): Add comdat.
        * cp-tree.h (struct lang_decl_flags): Add comdat.
        (DECL_COMDAT): New macro.
        (DECL_COMDAT): New macro.
        * decl.c (duplicate_decls): Propagate it.
        * decl.c (duplicate_decls): Propagate it.
        (cp_finish_decl): Handle it.
        (cp_finish_decl): Handle it.
        * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
        * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
        * class.c: Remove static pending_hard_virtuals.
        * class.c: Remove static pending_hard_virtuals.
        (add_virtual_function): Take pointers to pending_virtuals
        (add_virtual_function): Take pointers to pending_virtuals
        and pending_hard_virtuals.
        and pending_hard_virtuals.
        (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
        (finish_struct_1): Pass them.  Declare pending_hard_virtuals.
Wed Nov 26 20:28:49 1997  Jason Merrill  
Wed Nov 26 20:28:49 1997  Jason Merrill  
        * decl2.c (import_export_vtable): If we support one_only but not
        * decl2.c (import_export_vtable): If we support one_only but not
        weak symbols, mark instantiated template vtables one_only.
        weak symbols, mark instantiated template vtables one_only.
        (import_export_decl): Likewise for tinfo functions.
        (import_export_decl): Likewise for tinfo functions.
        (finish_vtable_vardecl): Also write out vtables from explicitly
        (finish_vtable_vardecl): Also write out vtables from explicitly
        instantiated template classes.
        instantiated template classes.
        * pt.c (mark_class_instantiated): Revert last change.
        * pt.c (mark_class_instantiated): Revert last change.
        * except.c (expand_throw): Call mark_used on the destructor.
        * except.c (expand_throw): Call mark_used on the destructor.
Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
        * lex.c (lang_init): Enable flag_exceptions by default if no
        * lex.c (lang_init): Enable flag_exceptions by default if no
        command line switch was specified.
        command line switch was specified.
1997-11-26  Mark Mitchell  
1997-11-26  Mark Mitchell  
        * pt.c (unify): Handle `void' template parameters in
        * pt.c (unify): Handle `void' template parameters in
        specializations.
        specializations.
Wed Nov 26 01:11:24 1997  Jason Merrill  
Wed Nov 26 01:11:24 1997  Jason Merrill  
        * rtti.c (build_dynamic_cast): Handle template case here.
        * rtti.c (build_dynamic_cast): Handle template case here.
        (build_dynamic_cast_1): Not here.
        (build_dynamic_cast_1): Not here.
        * typeck2.c (digest_init): Make copies where appropriate.
        * typeck2.c (digest_init): Make copies where appropriate.
        * decl2.c (delete_sanity): resolve_offset_ref.
        * decl2.c (delete_sanity): resolve_offset_ref.
        * except.c: Call terminate without caching so many bits.
        * except.c: Call terminate without caching so many bits.
        * except.c (expand_start_catch_block): Fix catching a reference
        * except.c (expand_start_catch_block): Fix catching a reference
        to pointer.
        to pointer.
Tue Nov 25 11:28:21 1997  Jason Merrill  
Tue Nov 25 11:28:21 1997  Jason Merrill  
        * init.c (build_new): Copy size to the saveable obstack.
        * init.c (build_new): Copy size to the saveable obstack.
        * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
        * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
        TRY_CATCH_EXPR for now.
        TRY_CATCH_EXPR for now.
Mon Nov 24 12:15:55 1997  Jason Merrill  
Mon Nov 24 12:15:55 1997  Jason Merrill  
        * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
        * typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
        has DECL_LANG_SPECIFIC.
        has DECL_LANG_SPECIFIC.
        * exception.cc (struct cp_eh_info): Add handlers field.
        * exception.cc (struct cp_eh_info): Add handlers field.
        (__cp_push_exception): Initialize it.
        (__cp_push_exception): Initialize it.
        (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
        (__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
        (__throw_bad_exception): Remove.
        (__throw_bad_exception): Remove.
        * except.c (call_eh_info): Add handlers field.
        * except.c (call_eh_info): Add handlers field.
        (get_eh_handlers): New fn.
        (get_eh_handlers): New fn.
        (push_eh_cleanup): Increment handlers.
        (push_eh_cleanup): Increment handlers.
Fri Nov 21 12:22:07 1997  Jason Merrill  
Fri Nov 21 12:22:07 1997  Jason Merrill  
        * except.c (expand_start_eh_spec): Use the try/catch code.
        * except.c (expand_start_eh_spec): Use the try/catch code.
        (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
        (expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
        doing everything inline.
        doing everything inline.
        (init_exception_processing): throw_type_match now takes
        (init_exception_processing): throw_type_match now takes
        const void pointers.
        const void pointers.
        * exception.cc (__check_eh_spec): New fn.
        * exception.cc (__check_eh_spec): New fn.
        * inc/exception: Neither terminate nor unexpected return.
        * inc/exception: Neither terminate nor unexpected return.
        * decl.c: Make const_ptr_type_node public.
        * decl.c: Make const_ptr_type_node public.
        * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
        * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
        * except.c (expand_start_catch_block): We only need the rethrow
        * except.c (expand_start_catch_block): We only need the rethrow
        region for non-sjlj exceptions.
        region for non-sjlj exceptions.
        (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
        (expand_end_catch_block): Likewise.  Use outer_context_label_stack.
Thu Nov 20 14:40:17 1997  Jason Merrill  
Thu Nov 20 14:40:17 1997  Jason Merrill  
        * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
        * Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
        (various.o): Likewise.
        (various.o): Likewise.
        * inc/new: Add placement deletes.  Add throw specs for default new.
        * inc/new: Add placement deletes.  Add throw specs for default new.
        * new.cc (set_new_handler): Move here from libgcc2.
        * new.cc (set_new_handler): Move here from libgcc2.
        * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
        * new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
        (new): Move from libgcc2.  Throw bad_alloc.
        (new): Move from libgcc2.  Throw bad_alloc.
        * new2.cc: Move the rest of the op news and op deletes from libgcc2.
        * new2.cc: Move the rest of the op news and op deletes from libgcc2.
        * decl.c (init_decl_processing): Update exception specs on new and
        * decl.c (init_decl_processing): Update exception specs on new and
        delete.
        delete.
        * method.c (build_decl_overload_real): Don't mess with global
        * method.c (build_decl_overload_real): Don't mess with global
        placement delete.
        placement delete.
        * init.c (build_new): Check for null throw spec, not nothrow_t.
        * init.c (build_new): Check for null throw spec, not nothrow_t.
        * decl.c (duplicate_decls): Don't complain about different exceptions
        * decl.c (duplicate_decls): Don't complain about different exceptions
        from an internal declaration.
        from an internal declaration.
        * call.c (build_op_delete_call): Fix check for member fns again.
        * call.c (build_op_delete_call): Fix check for member fns again.
        * decl2.c (import_export_decl): Interface hackery affects
        * decl2.c (import_export_decl): Interface hackery affects
        virtual synthesized methods.
        virtual synthesized methods.
Wed Nov 19 18:24:14 1997  Jason Merrill  
Wed Nov 19 18:24:14 1997  Jason Merrill  
        * decl.c (start_decl): Don't just complain about a mismatched
        * decl.c (start_decl): Don't just complain about a mismatched
        scope, fix it.
        scope, fix it.
        * decl.c (make_implicit_typename): Handle case where t is not
        * decl.c (make_implicit_typename): Handle case where t is not
        actually from context.
        actually from context.
        * tree.c (get_type_decl): Lose identifier case.
        * tree.c (get_type_decl): Lose identifier case.
        * spew.c (yylex): Lose useless call to identifier_typedecl_value.
        * spew.c (yylex): Lose useless call to identifier_typedecl_value.
        * parse.y (nonnested_type): Just use lookup_name.
        * parse.y (nonnested_type): Just use lookup_name.
        (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
        (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
Wed Nov 19 11:45:07 1997  Michael Tiemann  
Wed Nov 19 11:45:07 1997  Michael Tiemann  
        * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
        * error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
        T was built in C language context (for example, by
        T was built in C language context (for example, by
        output_func_start_profiler).
        output_func_start_profiler).
Wed Nov 19 10:39:27 1997  Jason Merrill  
Wed Nov 19 10:39:27 1997  Jason Merrill  
        * decl.c (make_implicit_typename): New fn.
        * decl.c (make_implicit_typename): New fn.
        (lookup_name_real): Use it.  Use current_class_type as the context.
        (lookup_name_real): Use it.  Use current_class_type as the context.
Mon Nov 17 23:42:03 1997  Bruno Haible  
Mon Nov 17 23:42:03 1997  Bruno Haible  
        * pt.c (do_poplevel): Don't prohibit jumps into this contour.
        * pt.c (do_poplevel): Don't prohibit jumps into this contour.
Mon Nov 17 02:01:28 1997  Jason Merrill  
Mon Nov 17 02:01:28 1997  Jason Merrill  
        * friend.c (do_friend): Warn about non-template friends in templates.
        * friend.c (do_friend): Warn about non-template friends in templates.
        * call.c (build_op_delete_call): Fix handling of inherited delete.
        * call.c (build_op_delete_call): Fix handling of inherited delete.
        * search.c (dfs_record_inheritance): Ignore template type parms.
        * search.c (dfs_record_inheritance): Ignore template type parms.
Sat Nov 15 00:30:51 1997  Jason Merrill  
Sat Nov 15 00:30:51 1997  Jason Merrill  
        * call.c (build_new_op): Fix copy error.
        * call.c (build_new_op): Fix copy error.
        (build_op_new_call): New fn.
        (build_op_new_call): New fn.
        (build_op_delete_call): New fn.
        (build_op_delete_call): New fn.
        * cp-tree.h: Declare them.
        * cp-tree.h: Declare them.
        * init.c (build_new): Use them.  Support placement delete.
        * init.c (build_new): Use them.  Support placement delete.
        (build_x_delete): Use build_op_delete_call.
        (build_x_delete): Use build_op_delete_call.
        (build_delete): Likewise.
        (build_delete): Likewise.
        * decl2.c (delete_sanity): Likewise.
        * decl2.c (delete_sanity): Likewise.
        (coerce_delete_type): Don't complain about placement delete.
        (coerce_delete_type): Don't complain about placement delete.
Thu Nov 13 01:52:36 1997  Jason Merrill  
Thu Nov 13 01:52:36 1997  Jason Merrill  
        * call.c (build_new_function_call): Remove unused 'obj' parm.
        * call.c (build_new_function_call): Remove unused 'obj' parm.
        * cp-tree.h, typeck.c: Adjust.
        * cp-tree.h, typeck.c: Adjust.
        * init.c (build_new): Make the cleanup last longer.
        * init.c (build_new): Make the cleanup last longer.
        (expand_vec_init): Call do_pending_stack_adjust.
        (expand_vec_init): Call do_pending_stack_adjust.
Wed Nov 12 11:04:33 1997  Jason Merrill  
Wed Nov 12 11:04:33 1997  Jason Merrill  
        * pt.c (do_type_instantiation): Fix typo.
        * pt.c (do_type_instantiation): Fix typo.
        (mark_class_instantiated): If we support one_only but not weak
        (mark_class_instantiated): If we support one_only but not weak
        symbols, don't mark this as known.
        symbols, don't mark this as known.
        * init.c (build_new): Handle vec delete in EH cleanup.
        * init.c (build_new): Handle vec delete in EH cleanup.
Wed Nov 12 08:11:55 1997  Benjamin Kosnik  
Wed Nov 12 08:11:55 1997  Benjamin Kosnik  
        * call.c (build_method_call): Call complete_type before checking
        * call.c (build_method_call): Call complete_type before checking
        for destructor.
        for destructor.
Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
        * decl.c (add_block_current_level): Delete.
        * decl.c (add_block_current_level): Delete.
        * init.c (build_vec_delete_1): Delete build_block and
        * init.c (build_vec_delete_1): Delete build_block and
        add_block_current_level calls.
        add_block_current_level calls.
Wed Nov 12 00:48:16 1997  Jason Merrill  
Wed Nov 12 00:48:16 1997  Jason Merrill  
        * init.c (build_new): Handle freeing allocated memory when the
        * init.c (build_new): Handle freeing allocated memory when the
        constructor throws.
        constructor throws.
        * call.c (build_new_method_call): Fix flags arg.
        * call.c (build_new_method_call): Fix flags arg.
        * pt.c (do_type_instantiation): Don't try to instantiate
        * pt.c (do_type_instantiation): Don't try to instantiate
        member templates.
        member templates.
        (mark_decl_instantiated): If we support one_only but not
        (mark_decl_instantiated): If we support one_only but not
        weak symbols, mark this one_only.
        weak symbols, mark this one_only.
        * decl2.c (import_export_vtable): Don't defer handling of vtables
        * decl2.c (import_export_vtable): Don't defer handling of vtables
        if MULTIPLE_SYMBOL_SPACES.
        if MULTIPLE_SYMBOL_SPACES.
Tue Nov 11 12:02:12 1997  Jason Merrill  
Tue Nov 11 12:02:12 1997  Jason Merrill  
        * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
        * except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
Tue Nov 11 02:53:44 1997  Jason Merrill  
Tue Nov 11 02:53:44 1997  Jason Merrill  
        * except.c (do_pop_exception): Return a value.
        * except.c (do_pop_exception): Return a value.
Mon Nov 10 20:25:31 1997  Jason Merrill  
Mon Nov 10 20:25:31 1997  Jason Merrill  
        * call.c (build_new_method_call): Handle getting a
        * call.c (build_new_method_call): Handle getting a
        TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
        TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
        if we got template parms.
        if we got template parms.
        * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
        * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
        not just the args.
        not just the args.
        * decl2.c (build_expr_from_tree): Tweak last change.
        * decl2.c (build_expr_from_tree): Tweak last change.
        * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
        * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
        (maybe_fold_nontype_arg): Split out from tsubst_copy.
        (maybe_fold_nontype_arg): Split out from tsubst_copy.
        * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
        * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij  
Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij  
        * pt.c (tsubst_copy): Handle explicit template arguments in
        * pt.c (tsubst_copy): Handle explicit template arguments in
        function calls.
        function calls.
        * typeck.c (build_x_function_call): Likewise.
        * typeck.c (build_x_function_call): Likewise.
        * decl2.c (build_expr_from_tree): Lookup function name if it
        * decl2.c (build_expr_from_tree): Lookup function name if it
        hasn't been done.
        hasn't been done.
        * pt.c (tsubst): Instantiate template functions properly when
        * pt.c (tsubst): Instantiate template functions properly when
        template parameter does not appear in function arguments and return
        template parameter does not appear in function arguments and return
        type.
        type.
        (comp_template_args): Handle member templates required by tsubst.
        (comp_template_args): Handle member templates required by tsubst.
Mon Nov 10 20:08:38 1997  Jason Merrill  
Mon Nov 10 20:08:38 1997  Jason Merrill  
        * decl.c (grokdeclarator): Tweak conditions for pedwarn in
        * decl.c (grokdeclarator): Tweak conditions for pedwarn in
        previous change.
        previous change.
Mon Nov 10 20:08:29 1997  Bruno Haible  
Mon Nov 10 20:08:29 1997  Bruno Haible  
        * pt.c (coerce_template_parms): Tweak error message.
        * pt.c (coerce_template_parms): Tweak error message.
        * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
        * decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
        return type defaults to `int', even if there are storage-class
        return type defaults to `int', even if there are storage-class
        specifiers.
        specifiers.
Mon Nov 10 03:04:20 1997  Jason Merrill  
Mon Nov 10 03:04:20 1997  Jason Merrill  
        Complete nested exception support.
        Complete nested exception support.
        * except.c (do_pop_exception): Split out...
        * except.c (do_pop_exception): Split out...
        (push_eh_cleanup): From here.  Handle the EH region by hand.
        (push_eh_cleanup): From here.  Handle the EH region by hand.
        (expand_start_catch_block): Add a new level for the catch parm.
        (expand_start_catch_block): Add a new level for the catch parm.
        Move the rethrow region outside the two cleanup regions.
        Move the rethrow region outside the two cleanup regions.
        Protect the initializer for the catch parm with terminate.
        Protect the initializer for the catch parm with terminate.
        (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
        (expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
        * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
        * exception.cc (__cp_pop_exception): Now takes two parms.  Handle
        popping off the middle of the stack.
        popping off the middle of the stack.
        * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
        * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
        WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
        WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
        (build_cplus_new): Only wrap CALL_EXPRs.
        (build_cplus_new): Only wrap CALL_EXPRs.
        * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
        * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
        the constructor call.
        the constructor call.
Sun Nov  9 18:00:26 1997  Richard Kenner  
Sun Nov  9 18:00:26 1997  Richard Kenner  
        * Make-lang.in (c++.distdir): Make inc subdirectory.
        * Make-lang.in (c++.distdir): Make inc subdirectory.
Fri Nov  7 11:57:28 1997  Jason Merrill  
Fri Nov  7 11:57:28 1997  Jason Merrill  
        * decl2.c (finish_file): Put back some code.
        * decl2.c (finish_file): Put back some code.
Thu Nov  6 11:28:14 1997  Jason Merrill  
Thu Nov  6 11:28:14 1997  Jason Merrill  
        * decl2.c (finish_file): Remove redundant code.
        * decl2.c (finish_file): Remove redundant code.
        * method.c (emit_thunk): Don't let the backend defer generic thunks.
        * method.c (emit_thunk): Don't let the backend defer generic thunks.
Wed Nov  5 23:52:50 1997  Jason Merrill  
Wed Nov  5 23:52:50 1997  Jason Merrill  
        * except.c (call_eh_info): Split out...
        * except.c (call_eh_info): Split out...
        (push_eh_info): From here.
        (push_eh_info): From here.
        (expand_builtin_throw): Use it.
        (expand_builtin_throw): Use it.
        (expand_start_catch_block): Move region start back.
        (expand_start_catch_block): Move region start back.
Tue Nov  4 13:45:10 1997  Doug Evans  
Tue Nov  4 13:45:10 1997  Doug Evans  
        * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
        * lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
        (real_yylex): Record wide strings using target endianness, not host.
        (real_yylex): Record wide strings using target endianness, not host.
1997-11-03  Brendan Kehoe  
1997-11-03  Brendan Kehoe  
        * repo.c (rindex): Add decl unconditionally.
        * repo.c (rindex): Add decl unconditionally.
        (get_base_filename, open_repo_file): Don't cast rindex.
        (get_base_filename, open_repo_file): Don't cast rindex.
        * xref.c (rindex): Add decl unconditionally.
        * xref.c (rindex): Add decl unconditionally.
        (index): Remove unused decl.
        (index): Remove unused decl.
        (open_xref_file): Don't cast rindex.
        (open_xref_file): Don't cast rindex.
Sun Nov  2 15:04:12 1997  Jason Merrill  
Sun Nov  2 15:04:12 1997  Jason Merrill  
        * class.c (build_vbase_path): Propagate the result type properly.
        * class.c (build_vbase_path): Propagate the result type properly.
1997-11-01  Brendan Kehoe  
1997-11-01  Brendan Kehoe  
        * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
        * except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
        remaining use of saved_throw_type with a call to get_eh_type.
        remaining use of saved_throw_type with a call to get_eh_type.
1997-10-31  Brendan Kehoe  
1997-10-31  Brendan Kehoe  
        * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
        * lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
        (file_name_nondirectory): New function, doing the same as the macro.
        (file_name_nondirectory): New function, doing the same as the macro.
        (set_typedecl_interface_info): Use it instead of the macro.
        (set_typedecl_interface_info): Use it instead of the macro.
        (check_newline): Likewise.
        (check_newline): Likewise.
        (handle_cp_pragma): Likewise.
        (handle_cp_pragma): Likewise.
        * repo.c (get_base_filename): Cast result of rindex to char*.
        * repo.c (get_base_filename): Cast result of rindex to char*.
        (open_repo_file): Likewise.
        (open_repo_file): Likewise.
        * xref.c (open_xref_file): Likewise.
        * xref.c (open_xref_file): Likewise.
        * error.c (dump_char): Make its arg int, not char.
        * error.c (dump_char): Make its arg int, not char.
        * except.c (push_eh_info): Pass the number of fields - 1 down, not
        * except.c (push_eh_info): Pass the number of fields - 1 down, not
        the exact number of fields.
        the exact number of fields.
Fri Oct 31 01:47:57 1997  Jason Merrill  
Fri Oct 31 01:47:57 1997  Jason Merrill  
        Support for nested exceptions.
        Support for nested exceptions.
        * tinfo2.cc (__is_pointer): New fn.
        * tinfo2.cc (__is_pointer): New fn.
        * exception.cc (struct cp_eh_info): Define.
        * exception.cc (struct cp_eh_info): Define.
        (__cp_exception_info, __uncatch_exception): New fns.
        (__cp_exception_info, __uncatch_exception): New fns.
        (__cp_push_exception, __cp_pop_exception): New fns.
        (__cp_push_exception, __cp_pop_exception): New fns.
        * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
        * except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
        Lose empty_fndecl.
        Lose empty_fndecl.
        (init_exception_processing): Likewise.  __eh_pc is now external.
        (init_exception_processing): Likewise.  __eh_pc is now external.
        (push_eh_info): New fn.
        (push_eh_info): New fn.
        (get_eh_{info,value,type,caught}): New fns.
        (get_eh_{info,value,type,caught}): New fns.
        (push_eh_cleanup): Just call __cp_pop_exception.
        (push_eh_cleanup): Just call __cp_pop_exception.
        (expand_start_catch_block): Use push_eh_info.  Start the eh region
        (expand_start_catch_block): Use push_eh_info.  Start the eh region
        sooner.
        sooner.
        (expand_end_eh_spec): Use push_eh_info.
        (expand_end_eh_spec): Use push_eh_info.
        (expand_throw): Call __cp_push_exception to set up the exception info.
        (expand_throw): Call __cp_push_exception to set up the exception info.
        Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
        Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
        when we rethrow.
        when we rethrow.
        (expand_builtin_throw): Don't refer to empty_fndecl.
        (expand_builtin_throw): Don't refer to empty_fndecl.
Thu Oct 23 02:01:30 1997  Jason Merrill  
Thu Oct 23 02:01:30 1997  Jason Merrill  
        * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
        * pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
1997-10-22  Brendan Kehoe  
1997-10-22  Brendan Kehoe  
        * method.c (build_template_parm_names, build_decl_overload_real):
        * method.c (build_template_parm_names, build_decl_overload_real):
        Add static to definitions.
        Add static to definitions.
        * pt.c (add_to_template_args, note_template_header,
        * pt.c (add_to_template_args, note_template_header,
        processing_explicit_specialization, type_unification_real): Likewise.
        processing_explicit_specialization, type_unification_real): Likewise.
        ({determine,check}_explicit_specialization): Use a single string for
        ({determine,check}_explicit_specialization): Use a single string for
        error messages.
        error messages.
Mon Oct 20 12:06:34 1997  Jason Merrill  
Mon Oct 20 12:06:34 1997  Jason Merrill  
        * except.c (expand_exception_blocks): Call do_pending_stack_adjust.
        * except.c (expand_exception_blocks): Call do_pending_stack_adjust.
        (expand_end_catch_block): Likewise.
        (expand_end_catch_block): Likewise.
        (expand_end_eh_spec): Likewise.
        (expand_end_eh_spec): Likewise.
Mon Oct 20 11:44:20 1997  Mark Mitchell  
Mon Oct 20 11:44:20 1997  Mark Mitchell  
        * decl.c (duplicate_decls): Handle template specializations
        * decl.c (duplicate_decls): Handle template specializations
        correctly.
        correctly.
        * error.c (dump_function_name): Fix printing of specializations of
        * error.c (dump_function_name): Fix printing of specializations of
        member functions that are not member templates.
        member functions that are not member templates.
        * cp-tree.h (processing_specialization): Make global.
        * cp-tree.h (processing_specialization): Make global.
        * pt.c (processing_specialization): Likewise.
        * pt.c (processing_specialization): Likewise.
        * lex.c (cons_up_default_function): Save and restore
        * lex.c (cons_up_default_function): Save and restore
        processing_specialization to avoid confusion.
        processing_specialization to avoid confusion.
Mon Oct 20 10:52:22 1997  Jason Merrill  
Mon Oct 20 10:52:22 1997  Jason Merrill  
        * decl.c (init_decl_processing): Give null_node unknown* type.
        * decl.c (init_decl_processing): Give null_node unknown* type.
        * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
        * typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
        (common_type): Likewise.
        (common_type): Likewise.
        * error.c (args_as_string): Recognize null_node.
        * error.c (args_as_string): Recognize null_node.
Sun Oct 19 09:13:01 1997  Richard Kenner  
Sun Oct 19 09:13:01 1997  Richard Kenner  
        * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
        * typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
        (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
        (unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
        * decl.c (init_decl_processing): Call using_eh_for_cleanups.
        * decl.c (init_decl_processing): Call using_eh_for_cleanups.
        * Make-lang.in (g++): Include prefix.o.
        * Make-lang.in (g++): Include prefix.o.
Thu Oct 16 15:31:09 1997  Judy Goldberg  
Thu Oct 16 15:31:09 1997  Judy Goldberg  
        * pt.c (determine_explicit_specialization): Initialize "dummy"
        * pt.c (determine_explicit_specialization): Initialize "dummy"
        to keep Purify quiet.
        to keep Purify quiet.
Thu Oct 16 00:14:48 1997  Jason Merrill  
Thu Oct 16 00:14:48 1997  Jason Merrill  
        * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
        * method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
        (build_overload_int): Not here.
        (build_overload_int): Not here.
Wed Oct 15 00:35:28 1997  Mike Stump  
Wed Oct 15 00:35:28 1997  Mike Stump  
        * class.c (build_type_pathname): Remove.
        * class.c (build_type_pathname): Remove.
        (prepare_fresh_vtable): Fix problem with complex MI vtable names.
        (prepare_fresh_vtable): Fix problem with complex MI vtable names.
1997-10-14  Brendan Kehoe  
1997-10-14  Brendan Kehoe  
        * parse.y (unary_expr): Give a pedwarn if someone tries to use the
        * parse.y (unary_expr): Give a pedwarn if someone tries to use the
        &&label GNU extension.
        &&label GNU extension.
Tue Oct 14 12:01:00 1997  Mark Mitchell  
Tue Oct 14 12:01:00 1997  Mark Mitchell  
        * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
        * decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
        so as to avoid incorrect manglings.
        so as to avoid incorrect manglings.
        * method.c (build_decl_overload_real): Don't mangle return types
        * method.c (build_decl_overload_real): Don't mangle return types
        for constructors.
        for constructors.
Tue Oct 14 11:46:14 1997  Jason Merrill  
Tue Oct 14 11:46:14 1997  Jason Merrill  
        * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
        * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
        scratch_tree_cons): Define as macros for now.
        scratch_tree_cons): Define as macros for now.
        * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
        * call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
        lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
        lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
        typeck2.c: Use them and the expression_obstack variants.
        typeck2.c: Use them and the expression_obstack variants.
Mon Oct 13 17:41:26 1997  Benjamin Kosnik  
Mon Oct 13 17:41:26 1997  Benjamin Kosnik  
        * decl.c (store_return_init): Allow classes with explicit ctors to
        * decl.c (store_return_init): Allow classes with explicit ctors to
        be used with the named return values extension.
        be used with the named return values extension.
Fri Oct 10 12:21:11 1997  Jason Merrill  
Fri Oct 10 12:21:11 1997  Jason Merrill  
        * pt.c (instantiate_decl): Fix previous change.
        * pt.c (instantiate_decl): Fix previous change.
Thu Oct  9 12:08:21 1997  Jason Merrill  
Thu Oct  9 12:08:21 1997  Jason Merrill  
        * pt.c (tsubst): Fix thinko.
        * pt.c (tsubst): Fix thinko.
        (instantiate_decl): Really use the original template.
        (instantiate_decl): Really use the original template.
        * call.c (build_new_method_call): Use simple constructor_name for
        * call.c (build_new_method_call): Use simple constructor_name for
        error messages.
        error messages.
Wed Oct  8 22:44:42 1997  Jeffrey A Law  
Wed Oct  8 22:44:42 1997  Jeffrey A Law  
        * method.c (build_underscore_int): Don't use ANSI specific
        * method.c (build_underscore_int): Don't use ANSI specific
        features.
        features.
Wed Oct  8 00:18:22 1997  Jason Merrill  
Wed Oct  8 00:18:22 1997  Jason Merrill  
        * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
        * decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
        for our key method; it might have been inlined by -O3.
        for our key method; it might have been inlined by -O3.
Tue Oct  7 23:00:12 1997  Mark Mitchell  
Tue Oct  7 23:00:12 1997  Mark Mitchell  
        * decl.c (make_typename_type): Do not try to call lookup_field for
        * decl.c (make_typename_type): Do not try to call lookup_field for
        non-aggregate types.
        non-aggregate types.
Tue Oct  7 22:52:10 1997  Jason Merrill  
Tue Oct  7 22:52:10 1997  Jason Merrill  
        * typeck.c (build_reinterpret_cast): Tweak.
        * typeck.c (build_reinterpret_cast): Tweak.
Tue Oct  7 22:45:31 1997  Alexandre Oliva  
Tue Oct  7 22:45:31 1997  Alexandre Oliva  
        * typeck.c (build_reinterpret_cast): Converting a void pointer
        * typeck.c (build_reinterpret_cast): Converting a void pointer
        to function pointer with a reinterpret_cast produces a warning
        to function pointer with a reinterpret_cast produces a warning
        if -pedantic is issued.
        if -pedantic is issued.
Tue Oct  7 22:43:43 1997  Bruno Haible  
Tue Oct  7 22:43:43 1997  Bruno Haible  
        * typeck.c (c_expand_return): Don't warn about returning a
        * typeck.c (c_expand_return): Don't warn about returning a
        reference-type variable as a reference.
        reference-type variable as a reference.
Tue Oct  7 21:11:22 1997  Jason Merrill  
Tue Oct  7 21:11:22 1997  Jason Merrill  
        * method.c (build_static_name): Fix typo.
        * method.c (build_static_name): Fix typo.
1997-10-07  Brendan Kehoe  
1997-10-07  Brendan Kehoe  
        * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
        * decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
        OLDDECL before we try to do DECL_USE_TEMPLATE.
        OLDDECL before we try to do DECL_USE_TEMPLATE.
Tue Oct  7 00:48:36 1997  Jason Merrill  
Tue Oct  7 00:48:36 1997  Jason Merrill  
        * decl.c (duplicate_decls): Don't warn about template instances.
        * decl.c (duplicate_decls): Don't warn about template instances.
        * typeck.c (mark_addressable): Lose ancient code that unsets
        * typeck.c (mark_addressable): Lose ancient code that unsets
        DECL_EXTERNAL.
        DECL_EXTERNAL.
        * pt.c (do_decl_instantiation): Lose support for instantiating
        * pt.c (do_decl_instantiation): Lose support for instantiating
        non-templates.
        non-templates.
        * call.c (build_new_function_call): Fix handling of null explicit
        * call.c (build_new_function_call): Fix handling of null explicit
        template args.
        template args.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
Mon Oct  6 23:44:34 1997  Mark Mitchell  
Mon Oct  6 23:44:34 1997  Mark Mitchell  
        * method.c (build_underscore_int): Fix typo.
        * method.c (build_underscore_int): Fix typo.
1997-10-06  Brendan Kehoe  
1997-10-06  Brendan Kehoe  
        * tree.c (print_lang_statistics): #if 0 call to
        * tree.c (print_lang_statistics): #if 0 call to
        print_inline_obstack_statistics until its definition is checked in.
        print_inline_obstack_statistics until its definition is checked in.
Mon Oct  6 09:27:29 1997  Jason Merrill  
Mon Oct  6 09:27:29 1997  Jason Merrill  
        * decl2.c (finish_file): Move dump_tree_statistics to end.
        * decl2.c (finish_file): Move dump_tree_statistics to end.
        * pt.c (instantiate_decl): Look for the original template.
        * pt.c (instantiate_decl): Look for the original template.
        (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
        (tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
        of member templates.
        of member templates.
Wed Oct  1 08:41:38 1997  Jason Merrill  
Wed Oct  1 08:41:38 1997  Jason Merrill  
        * Makefile.in (g++FAQ.*): New rules.
        * Makefile.in (g++FAQ.*): New rules.
        (CONFLICTS): Update.
        (CONFLICTS): Update.
        * g++FAQ.texi: Moved from libg++.
        * g++FAQ.texi: Moved from libg++.
        * parse.y (PFUNCNAME): Only specify the type once.
        * parse.y (PFUNCNAME): Only specify the type once.
1997-10-01  Brendan Kehoe  
1997-10-01  Brendan Kehoe  
        * lex.c (real_yylex): Clean up the code to fully behave the way
        * lex.c (real_yylex): Clean up the code to fully behave the way
        the c-lex.c parser does for complex and real numbers.
        the c-lex.c parser does for complex and real numbers.
Tue Sep 30 08:51:36 1997  Jason Merrill  
Tue Sep 30 08:51:36 1997  Jason Merrill  
        * method.c (build_decl_overload_real): Reformat.
        * method.c (build_decl_overload_real): Reformat.
Tue Sep 30 00:18:26 1997  Jason Merrill  
Tue Sep 30 00:18:26 1997  Jason Merrill  
        * method.c (synthesize_method): If at_eof, determine our linkage.
        * method.c (synthesize_method): If at_eof, determine our linkage.
1997-09-29  Paul Eggert  
1997-09-29  Paul Eggert  
        * lex.c (real_yylex): Treat `$' just like `_', except issue a
        * lex.c (real_yylex): Treat `$' just like `_', except issue a
        diagnostic if !dollars_in_ident or if pedantic.
        diagnostic if !dollars_in_ident or if pedantic.
        * lang-specs.h (@c++): -ansi no longer implies -$.
        * lang-specs.h (@c++): -ansi no longer implies -$.
        * decl2.c (lang_decode_option):
        * decl2.c (lang_decode_option):
        -traditional and -ansi now do not mess with
        -traditional and -ansi now do not mess with
        dollars_in_ident.
        dollars_in_ident.
Mon Sep 29 19:57:51 1997  H.J. Lu  
Mon Sep 29 19:57:51 1997  H.J. Lu  
        * Makefile.in (parse.o, decl.o): Also depend on
        * Makefile.in (parse.o, decl.o): Also depend on
        $(srcdir)/../except.h $(srcdir)/../output.h.
        $(srcdir)/../except.h $(srcdir)/../output.h.
        (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
        (decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
        $(srcdir)/../except.h $(srcdir)/../output.h.
        $(srcdir)/../except.h $(srcdir)/../output.h.
        (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
        (typeck.o, init.o): Also depend on $(srcdir)/../expr.h
        ../insn-codes.h.
        ../insn-codes.h.
        * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
        * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
        * expr.c (cplus_expand_expr): Make it static.
        * expr.c (cplus_expand_expr): Make it static.
        * decl2.c, init.c, typeck.c: Include "expr.h".
        * decl2.c, init.c, typeck.c: Include "expr.h".
        (expand_expr): Use proper values when calling the function.
        (expand_expr): Use proper values when calling the function.
Mon Sep 29 11:05:54 1997  Alexandre Oliva  
Mon Sep 29 11:05:54 1997  Alexandre Oliva  
        * lang-options.h: New -Wold-style-cast flag.
        * lang-options.h: New -Wold-style-cast flag.
        * cp-tree.h (warn_old_style_cast): New variable.
        * cp-tree.h (warn_old_style_cast): New variable.
        * decl2.c (warn_old_style_cast): Likewise.
        * decl2.c (warn_old_style_cast): Likewise.
        (lang_decode_option): Support -Wold-style-cast.
        (lang_decode_option): Support -Wold-style-cast.
        (reparse_absdcl_as_casts): Produce old-style-cast warning.
        (reparse_absdcl_as_casts): Produce old-style-cast warning.
Mon Sep 29 09:20:53 1997  Benjamin Kosnik  
Mon Sep 29 09:20:53 1997  Benjamin Kosnik  
        * decl.c (cp_finish_decl): Allow expand_aggr_init to set
        * decl.c (cp_finish_decl): Allow expand_aggr_init to set
        TREE_USED, reset value based on already_used.
        TREE_USED, reset value based on already_used.
        * init.c (expand_member_init): Revert change.
        * init.c (expand_member_init): Revert change.
Mon Sep 29 08:57:53 1997  Jason Merrill  
Mon Sep 29 08:57:53 1997  Jason Merrill  
        * cp-tree.h, decl.c, decl2.c, pt.c:
        * cp-tree.h, decl.c, decl2.c, pt.c:
        Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
        Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
        * decl2.c (lang_decode_option): Add missing ;.
        * decl2.c (lang_decode_option): Add missing ;.
Sat Sep 27 16:22:48 1997  Jason Merrill  
Sat Sep 27 16:22:48 1997  Jason Merrill  
        * friend.c (do_friend): Disable injection for all template-derived
        * friend.c (do_friend): Disable injection for all template-derived
        decls.
        decls.
        * decl2.c (lang_decode_option): Handle -fguiding-decls.
        * decl2.c (lang_decode_option): Handle -fguiding-decls.
        * parse.y (notype_template_declarator): New nonterminal.
        * parse.y (notype_template_declarator): New nonterminal.
        (direct_notype_declarator): Use it.
        (direct_notype_declarator): Use it.
        (complex_direct_notype_declarator): Likewise.
        (complex_direct_notype_declarator): Likewise.
        (object_template_id): Accept any kind of identifier after TEMPLATE.
        (object_template_id): Accept any kind of identifier after TEMPLATE.
        (notype_qualified_id): Don't add template declarators here.
        (notype_qualified_id): Don't add template declarators here.
Sat Sep 27 16:21:58 1997  Mark Mitchell  
Sat Sep 27 16:21:58 1997  Mark Mitchell  
        * call.c (add_template_candidate): Add explicit_targs parameter.
        * call.c (add_template_candidate): Add explicit_targs parameter.
        (build_scoped_method_call): Use it.
        (build_scoped_method_call): Use it.
        (build_overload_call_real): Likewise.
        (build_overload_call_real): Likewise.
        (build_user_type_conversion_1): Likewise.
        (build_user_type_conversion_1): Likewise.
        (build_new_function_call): Likewise.
        (build_new_function_call): Likewise.
        (build_object_call): Likewise.
        (build_object_call): Likewise.
        (build_new_op): Likewise.
        (build_new_op): Likewise.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
        (build_new_function_call): Handle TEMPLATE_ID_EXPR.
        (build_new_function_call): Handle TEMPLATE_ID_EXPR.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
        * class.c (finish_struct_methods): Add specialization pass to
        * class.c (finish_struct_methods): Add specialization pass to
        determine which methods were specializing which other methods.
        determine which methods were specializing which other methods.
        (instantiate_type): Handle TEMPLATE_ID_EXPR.
        (instantiate_type): Handle TEMPLATE_ID_EXPR.
        * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
        * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
        * cp-tree.h (name_mangling_version): New variable.
        * cp-tree.h (name_mangling_version): New variable.
        (flag_guiding_decls): Likewise.
        (flag_guiding_decls): Likewise.
        (build_template_decl_overload): New function.
        (build_template_decl_overload): New function.
        (begin_specialization): Likewise.
        (begin_specialization): Likewise.
        (reset_specialization): Likewise.
        (reset_specialization): Likewise.
        (end_specialization): Likewise.
        (end_specialization): Likewise.
        (determine_explicit_specialization): Likewise.
        (determine_explicit_specialization): Likewise.
        (check_explicit_specialization): Likewise.
        (check_explicit_specialization): Likewise.
        (lookup_template_function): Likewise.
        (lookup_template_function): Likewise.
        (fn_type_unification): Add explicit_targs parameter.
        (fn_type_unification): Add explicit_targs parameter.
        (type_unification): Likewise.
        (type_unification): Likewise.
        * decl.c (duplicate_decls): Add smarts for explicit
        * decl.c (duplicate_decls): Add smarts for explicit
        specializations.
        specializations.
        (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
        (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
        specializations.
        specializations.
        (grokfndecl): Call check_explicit_specialization.
        (grokfndecl): Call check_explicit_specialization.
        * decl2.c (lang_decode_option): Handle -fname-mangling-version.
        * decl2.c (lang_decode_option): Handle -fname-mangling-version.
        (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
        (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
        (check_classfn): Handle specializations.
        (check_classfn): Handle specializations.
        * error.c (dump_function_name): Print specialization arguments.
        * error.c (dump_function_name): Print specialization arguments.
        * friend.c (do_friend): Don't call pushdecl for template
        * friend.c (do_friend): Don't call pushdecl for template
        instantiations.
        instantiations.
        * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
        * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
        * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
        * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
        and -fno-guiding-decls.
        and -fno-guiding-decls.
        * lex.c (identifier_type): Return PFUNCNAME for template function
        * lex.c (identifier_type): Return PFUNCNAME for template function
        names.
        names.
        * method.c (build_decl_overload_real): New function.
        * method.c (build_decl_overload_real): New function.
        (build_template_parm_names): New function.
        (build_template_parm_names): New function.
        (build_overload_identifier): Use it.
        (build_overload_identifier): Use it.
        (build_underscore_int): New function.
        (build_underscore_int): New function.
        (build_overload_int): Use it.  Add levels for template
        (build_overload_int): Use it.  Add levels for template
        parameters.
        parameters.
        (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
        (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
        (build_overload_nested_names): Handle template type parameters.
        (build_overload_nested_names): Handle template type parameters.
        (build_template_decl_overload): New function.
        (build_template_decl_overload): New function.
        * parse.y (YYSTYPE): New ntype member.
        * parse.y (YYSTYPE): New ntype member.
        (nested_name_specifier): Use it.
        (nested_name_specifier): Use it.
        (nested_name_specifier_1): Likewise.
        (nested_name_specifier_1): Likewise.
        (PFUNCNAME): New token.
        (PFUNCNAME): New token.
        (template_id, object_template_id): New non-terminals.
        (template_id, object_template_id): New non-terminals.
        (template_parm_list): Note specializations.
        (template_parm_list): Note specializations.
        (template_def): Likewise.
        (template_def): Likewise.
        (structsp): Likewise.
        (structsp): Likewise.
        (fn.def2): Handle member template specializations.
        (fn.def2): Handle member template specializations.
        (component_decl_1): Likewise.
        (component_decl_1): Likewise.
        (direct_notype_declarator): Handle template-ids.
        (direct_notype_declarator): Handle template-ids.
        (component_decl_1): Likewise.
        (component_decl_1): Likewise.
        (direct_notype_declarator): Handle template-ids.
        (direct_notype_declarator): Handle template-ids.
        (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
        (primary): Handle TEMPLATE_ID_EXPR, and template-ids.
        * pt.c (processing_specializations): New variable.
        * pt.c (processing_specializations): New variable.
        (template_header_count): Likewise.
        (template_header_count): Likewise.
        (type_unification_real): New function.
        (type_unification_real): New function.
        (processing_explicit_specialization): Likewise.
        (processing_explicit_specialization): Likewise.
        (note_template_header): Likewise.
        (note_template_header): Likewise.
        (is_member_template): Handle specializations.
        (is_member_template): Handle specializations.
        (end_template_decl): Call reset_specialization.
        (end_template_decl): Call reset_specialization.
        (push_template_decl): Handle member template specializations.
        (push_template_decl): Handle member template specializations.
        (tsubst): Likewise.
        (tsubst): Likewise.
        (tsubst_copy): Handle TEMPLATE_ID_EXPR.
        (tsubst_copy): Handle TEMPLATE_ID_EXPR.
        (instantiate_template): Handle specializations.
        (instantiate_template): Handle specializations.
        (instantiate_decl): Likewise.
        (instantiate_decl): Likewise.
        (fn_type_unification): Handle explicit_targs.
        (fn_type_unification): Handle explicit_targs.
        (type_unification): Likewise.  Allow incomplete unification
        (type_unification): Likewise.  Allow incomplete unification
        without an error message, if allow_incomplete.
        without an error message, if allow_incomplete.
        (get_bindings): Use new calling sequence for fn_type_unification.
        (get_bindings): Use new calling sequence for fn_type_unification.
        * spew.c (yylex): Handle PFUNCNAME.
        * spew.c (yylex): Handle PFUNCNAME.
        * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
        * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
        (really_overloaded_fn): Likewise.
        (really_overloaded_fn): Likewise.
        (get_first_fn): Handle function templates.
        (get_first_fn): Handle function templates.
        * typeck.c (build_x_function_call): Use really_overloaded_fn.
        * typeck.c (build_x_function_call): Use really_overloaded_fn.
        Handle TEMPLATE_ID_EXPR.
        Handle TEMPLATE_ID_EXPR.
        (build_x_unary_op): Likewise.
        (build_x_unary_op): Likewise.
        (build_unary_op): Likewise.
        (build_unary_op): Likewise.
        (mark_addressable): Templates whose address is taken are marked
        (mark_addressable): Templates whose address is taken are marked
        as used.
        as used.
1997-09-25  Andreas Schwab  
1997-09-25  Andreas Schwab  
        * decl.c (init_decl_processing): Declare __builtin_constant_p as
        * decl.c (init_decl_processing): Declare __builtin_constant_p as
        accepting any kind of type, not only int.
        accepting any kind of type, not only int.
Fri Sep 26 00:22:56 1997  Jason Merrill  
Fri Sep 26 00:22:56 1997  Jason Merrill  
        * search.c (get_matching_virtual): Notice virtual bases when sorrying
        * search.c (get_matching_virtual): Notice virtual bases when sorrying
        about covariant returns.
        about covariant returns.
        * parse.y (member_init): Also imply typename here.  Remove ancient
        * parse.y (member_init): Also imply typename here.  Remove ancient
        extension for initializing base members.
        extension for initializing base members.
Thu Sep 25 11:11:13 1997  Jason Merrill  
Thu Sep 25 11:11:13 1997  Jason Merrill  
        Handle multi-level typenames and implicit typename in base list.
        Handle multi-level typenames and implicit typename in base list.
        * parse.y (typename_sub{,[0-2]}): New rules.
        * parse.y (typename_sub{,[0-2]}): New rules.
        (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
        (structsp, rule TYPENAME_KEYWORD): Use typename_sub.
        (nonnested_type): New rule.
        (nonnested_type): New rule.
        (complete_type_name): Use it.
        (complete_type_name): Use it.
        (base_class.1): Use typename_sub and nonnested_type.
        (base_class.1): Use typename_sub and nonnested_type.
        (nested_name_specifier): Don't elide std:: here.
        (nested_name_specifier): Don't elide std:: here.
        * decl.c (make_typename_type): Handle getting a type for NAME.
        * decl.c (make_typename_type): Handle getting a type for NAME.
        (lookup_name_real): Turn std:: into :: here.
        (lookup_name_real): Turn std:: into :: here.
        Rvalue conversions were removed in London.
        Rvalue conversions were removed in London.
        * call.c (is_subseq): Don't consider lvalue transformations.
        * call.c (is_subseq): Don't consider lvalue transformations.
        (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
        (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
        (joust): Re-enable ?: kludge.
        (joust): Re-enable ?: kludge.
1997-09-22  Brendan Kehoe  
1997-09-22  Brendan Kehoe  
        * decl.c (start_function): Up warning of no return type to be a
        * decl.c (start_function): Up warning of no return type to be a
        pedwarn.
        pedwarn.
Mon Sep 22 14:15:34 1997  Benjamin Kosnik  
Mon Sep 22 14:15:34 1997  Benjamin Kosnik  
        * init.c (expand_member_init): Don't set TREE_USED.
        * init.c (expand_member_init): Don't set TREE_USED.
        * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
        * decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
        set,don't clear TREE_USED wholesale.
        set,don't clear TREE_USED wholesale.
Sat Sep 20 15:31:00 1997  Jason Merrill  
Sat Sep 20 15:31:00 1997  Jason Merrill  
        * call.c (build_over_call): Do require_complete_type before
        * call.c (build_over_call): Do require_complete_type before
        build_cplus_new.
        build_cplus_new.
Thu Sep 18 16:47:52 1997  Jason Merrill  
Thu Sep 18 16:47:52 1997  Jason Merrill  
        * search.c (lookup_field): Call complete_type in all cases.
        * search.c (lookup_field): Call complete_type in all cases.
        * decl.c (finish_function): Just warn about flowing off the end.
        * decl.c (finish_function): Just warn about flowing off the end.
Wed Sep 17 10:31:25 1997  Jason Merrill  
Wed Sep 17 10:31:25 1997  Jason Merrill  
        * decl.c (grokparms): Don't bash a permanent list node if we're
        * decl.c (grokparms): Don't bash a permanent list node if we're
        in a function.
        in a function.
1997-09-17  Brendan Kehoe  
1997-09-17  Brendan Kehoe  
        * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
        * Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
Tue Sep 16 14:06:56 1997  Jason Merrill  
Tue Sep 16 14:06:56 1997  Jason Merrill  
        * call.c (build_new_op): Give better error for syntactically
        * call.c (build_new_op): Give better error for syntactically
        correct, but semantically invalid, use of undeclared template.
        correct, but semantically invalid, use of undeclared template.
        * call.c (compare_qual): Handle pmfs.
        * call.c (compare_qual): Handle pmfs.
        * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
        * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
        after the exception spec.
        after the exception spec.
Mon Sep 15 11:52:13 1997  Jason Merrill  
Mon Sep 15 11:52:13 1997  Jason Merrill  
        * call.c (null_ptr_cst_p): Integer type, not integral type.
        * call.c (null_ptr_cst_p): Integer type, not integral type.
        * call.c (joust): Disable warnings until they can be moved to the
        * call.c (joust): Disable warnings until they can be moved to the
        right place.
        right place.
Fri Sep 12 16:11:13 1997  Per Bothner  
Fri Sep 12 16:11:13 1997  Per Bothner  
        * Makefile.in, config-lang.in:  Convert to autoconf.
        * Makefile.in, config-lang.in:  Convert to autoconf.
Thu Sep 11 17:14:55 1997  Jason Merrill  
Thu Sep 11 17:14:55 1997  Jason Merrill  
        * decl.c (lookup_name_real): Add implicit 'typename' to types from
        * decl.c (lookup_name_real): Add implicit 'typename' to types from
        base classes.
        base classes.
        * pt.c (most_specialized_class): Fix typo.
        * pt.c (most_specialized_class): Fix typo.
        (tsubst): Move constant folding to TREE_VEC case.
        (tsubst): Move constant folding to TREE_VEC case.
Thu Sep 11 10:08:45 1997  Mark Mitchell  
Thu Sep 11 10:08:45 1997  Mark Mitchell  
        * pt.c (do_poplevel): Don't warn about unused local variables
        * pt.c (do_poplevel): Don't warn about unused local variables
        while processing_template_decl since we don't always know whether
        while processing_template_decl since we don't always know whether
        or not they will need constructing/destructing.
        or not they will need constructing/destructing.
        * pt.c (uses_template_parms): Check the values of an enumeration
        * pt.c (uses_template_parms): Check the values of an enumeration
        type to make sure they don't depend on template parms.
        type to make sure they don't depend on template parms.
        * decl.c (make_typename_type): Don't lookup the field if the
        * decl.c (make_typename_type): Don't lookup the field if the
        context uses template parms, even if we're not
        context uses template parms, even if we're not
        processing_template_decl at the moment.
        processing_template_decl at the moment.
        * pt.c (coerce_template_parms): Avoid looking at the
        * pt.c (coerce_template_parms): Avoid looking at the
        TYPE_LANG_DECL portion of a typename type, since there won't be
        TYPE_LANG_DECL portion of a typename type, since there won't be
        one.
        one.
        (tsubst): Do constant folding as necessary to make sure that
        (tsubst): Do constant folding as necessary to make sure that
        arguments passed to lookup_template_class really are constants.
        arguments passed to lookup_template_class really are constants.
Wed Sep 10 16:39:26 1997  Jim Wilson  
Wed Sep 10 16:39:26 1997  Jim Wilson  
        * Make-lang.in (LN, LN_S): New macros, use where appropriate.
        * Make-lang.in (LN, LN_S): New macros, use where appropriate.
Wed Sep 10 11:21:55 1997  Jason Merrill  
Wed Sep 10 11:21:55 1997  Jason Merrill  
        * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
        * except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
        * decl2.c (finish_file): Only register exception tables if we
        * decl2.c (finish_file): Only register exception tables if we
        need to.
        need to.
        * decl.c (init_decl_processing): Add __builtin_[fs]p.
        * decl.c (init_decl_processing): Add __builtin_[fs]p.
Tue Sep  9 19:49:38 1997  Jason Merrill  
Tue Sep  9 19:49:38 1997  Jason Merrill  
        * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
        * pt.c (unify): Just return 0 for a TYPENAME_TYPE.
Tue Sep  9 17:57:25 1997  Mark Mitchell  
Tue Sep  9 17:57:25 1997  Mark Mitchell  
        * error.c (dump_decl): Avoid crashing when presented with a
        * error.c (dump_decl): Avoid crashing when presented with a
        uninitialized constant, as can occur with a template parameter.
        uninitialized constant, as can occur with a template parameter.
        (dump_expr): Make sure that there are enough levels of
        (dump_expr): Make sure that there are enough levels of
        current_template_parms before we start diving through them.
        current_template_parms before we start diving through them.
1997-09-09  Brendan Kehoe  
1997-09-09  Brendan Kehoe  
        * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
        * typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
        c-typeck.c.
        c-typeck.c.
Tue Sep  9 09:36:39 1997  Benjamin Kosnik  
Tue Sep  9 09:36:39 1997  Benjamin Kosnik  
        * except.c (expand_throw): Call build_delete for all
        * except.c (expand_throw): Call build_delete for all
        exception types, not just objects with destructors.
        exception types, not just objects with destructors.
Mon Sep  8 02:33:20 1997  Jody Goldberg  
Mon Sep  8 02:33:20 1997  Jody Goldberg  
        * decl.c (current_local_enum): Remove static.
        * decl.c (current_local_enum): Remove static.
        * pt.c (tsubst_enum): Save and restore value of current_local_enum
        * pt.c (tsubst_enum): Save and restore value of current_local_enum
        in case template is expanded in enum decl.
        in case template is expanded in enum decl.
        (instantiate_class_template): Use new tsubst_enum signature.
        (instantiate_class_template): Use new tsubst_enum signature.
        (tsubst_expr): Likewise.
        (tsubst_expr): Likewise.
Mon Sep  8 01:21:43 1997  Mark Mitchell  
Mon Sep  8 01:21:43 1997  Mark Mitchell  
        * pt.c (begin_member_template_processing): Take a function as
        * pt.c (begin_member_template_processing): Take a function as
        argument, not a set of template arguments.  Use the template
        argument, not a set of template arguments.  Use the template
        parameters, rather than the arguments.  Handle non-type parameters
        parameters, rather than the arguments.  Handle non-type parameters
        correctly.  Push a binding level for the parameters so that multiple
        correctly.  Push a binding level for the parameters so that multiple
        member templates using the same parameter names can be declared.
        member templates using the same parameter names can be declared.
        (end_member_template_processing): Pop the binding level.
        (end_member_template_processing): Pop the binding level.
        (push_template_decl): Mark member templates as static when
        (push_template_decl): Mark member templates as static when
        appropriate.
        appropriate.
        * lex.c (do_pending_inlines): Pass the function, not its template
        * lex.c (do_pending_inlines): Pass the function, not its template
        arguments, to begin_member_template_processing.
        arguments, to begin_member_template_processing.
        (process_next_inline): Likewise.
        (process_next_inline): Likewise.
        (do_pending_defargs): Likewise.
        (do_pending_defargs): Likewise.
        * error.c (dump_expr): Obtain the correct declaration for a
        * error.c (dump_expr): Obtain the correct declaration for a
        TEMPLATE_CONST_PARM.
        TEMPLATE_CONST_PARM.
        * call.c (add_template_conv_candidate): New function.
        * call.c (add_template_conv_candidate): New function.
        (build_object_call): Handle member templates, as done in the other
        (build_object_call): Handle member templates, as done in the other
        build_ functions.
        build_ functions.
Sat Sep  6 10:20:27 1997  Mark Mitchell  
Sat Sep  6 10:20:27 1997  Mark Mitchell  
        * decl.c (replace_defag): Undo previous change.
        * decl.c (replace_defag): Undo previous change.
        * lex.c (do_pending_defargs): Deal with member templates.
        * lex.c (do_pending_defargs): Deal with member templates.
        * pt.c (is_member_template): Avoid crashing when passed a
        * pt.c (is_member_template): Avoid crashing when passed a
        non-function argument.
        non-function argument.
Fri Sep  5 17:27:38 1997  Jason Merrill  
Fri Sep  5 17:27:38 1997  Jason Merrill  
        * class.c (grow_method): Remove check for redeclaration.
        * class.c (grow_method): Remove check for redeclaration.
Fri Sep  5 01:37:17 1997  Mark Mitchell  
Fri Sep  5 01:37:17 1997  Mark Mitchell  
        * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
        * cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
        (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
        (DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
        (PRIMARY_TEMPLATE_P): Use it.
        (PRIMARY_TEMPLATE_P): Use it.
        * call.c (build_overload_call_real): Use it.
        * call.c (build_overload_call_real): Use it.
        * class.c (instantiate_type): Likewise.
        * class.c (instantiate_type): Likewise.
        * decl.c (decls_match): Likewise.
        * decl.c (decls_match): Likewise.
        * method.c (build_overload_identifier): Likewise.
        * method.c (build_overload_identifier): Likewise.
        * pt.c (push_template_decl): Likewise.
        * pt.c (push_template_decl): Likewise.
        (classtype_mangled_name): Likewise.
        (classtype_mangled_name): Likewise.
        (lookup_template_class): Likewise.
        (lookup_template_class): Likewise.
        * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
        * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
        DECL_NTPARMS to conform to usage elsewhere.
        DECL_NTPARMS to conform to usage elsewhere.
        * call.c (add_template_candidate): Likewise.
        * call.c (add_template_candidate): Likewise.
        * class.c (instantiate_type): Likewise.
        * class.c (instantiate_type): Likewise.
        * pt.c (instantiate_template): Likewise.
        * pt.c (instantiate_template): Likewise.
        (get_bindings): Likewise.
        (get_bindings): Likewise.
        * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
        * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
        is_member_template.
        is_member_template.
        * pt.c (unify): Undo changes to allow multiple levels of template
        * pt.c (unify): Undo changes to allow multiple levels of template
        parameters.
        parameters.
        (type_unification): Likewise.
        (type_unification): Likewise.
        (fn_type_unification): Likewise.
        (fn_type_unification): Likewise.
        (get_class_bindings): Likewise.
        (get_class_bindings): Likewise.
        * cp-tree.h (Likewise).
        * cp-tree.h (Likewise).
        * decl.c (replace_defarg): Check that the type of the default
        * decl.c (replace_defarg): Check that the type of the default
        parameter does not invlove a template type before complaining
        parameter does not invlove a template type before complaining
        about the initialization.
        about the initialization.
        * error.c (dump_expr): Deal with template constant parameters in
        * error.c (dump_expr): Deal with template constant parameters in
        member templates correctly.
        member templates correctly.
        * pt.c (is_member_template): Deal with class specializations
        * pt.c (is_member_template): Deal with class specializations
        correctly.
        correctly.
        (tsubst): Handle "partial instantiation" of member templates
        (tsubst): Handle "partial instantiation" of member templates
        correctly.
        correctly.
Wed Sep  3 12:30:24 1997  Mark Mitchell  
Wed Sep  3 12:30:24 1997  Mark Mitchell  
        * pt.c (type_unification): Change calling sequence to allow for
        * pt.c (type_unification): Change calling sequence to allow for
        multiple levels of template parameters.
        multiple levels of template parameters.
        (tsubst_expr): Likewise.
        (tsubst_expr): Likewise.
        (tsubst): Likewise.
        (tsubst): Likewise.
        (tsubst_copy): Likewise.
        (tsubst_copy): Likewise.
        (instantiate_template): Likewise.
        (instantiate_template): Likewise.
        (unify): Likewise.
        (unify): Likewise.
        * call.c (build_overload_call_real): Use it.
        * call.c (build_overload_call_real): Use it.
        (add_builtin_candidate): Use it.
        (add_builtin_candidate): Use it.
        (build_new_method_call): Use it.
        (build_new_method_call): Use it.
        * class.c (instantiate_type): Use it.
        * class.c (instantiate_type): Use it.
        * decl.c (grokdeclarator): Use it.
        * decl.c (grokdeclarator): Use it.
        * decl2.c (finish_file): Use it.
        * decl2.c (finish_file): Use it.
        * method.c (build_overload_identifier): Use it.
        * method.c (build_overload_identifier): Use it.
        * call.c (add_template_candidate):  Add additional parameter for
        * call.c (add_template_candidate):  Add additional parameter for
        the function return type.  Call fn_type_unification istead of
        the function return type.  Call fn_type_unification istead of
        type_unification.
        type_unification.
        (build_user_type_conversion_1): Handle member templates.
        (build_user_type_conversion_1): Handle member templates.
        (build_new_function_call): Likewise.
        (build_new_function_call): Likewise.
        (build_new_op): Likewise.
        (build_new_op): Likewise.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
        * class.c (grow_method): Don't give an error message indicating
        * class.c (grow_method): Don't give an error message indicating
        that two member templates with the same name are ambiguous.
        that two member templates with the same name are ambiguous.
        (finish_struct): Treat member template functions just like member
        (finish_struct): Treat member template functions just like member
        functions.
        functions.
        * cp-tree.h (check_member_template): Add declaration.
        * cp-tree.h (check_member_template): Add declaration.
        (begin_member_template_processing): Likewise.
        (begin_member_template_processing): Likewise.
        (end_member_template_processing): Likewise.
        (end_member_template_processing): Likewise.
        (fn_type_unification): Likewise.
        (fn_type_unification): Likewise.
        (is_member_template): Likewise.
        (is_member_template): Likewise.
        (tsubst): Change prototype.
        (tsubst): Change prototype.
        (tsubst_expr): Likewise.
        (tsubst_expr): Likewise.
        (tsubst_copy): Likewise.
        (tsubst_copy): Likewise.
        (instantiate_template): Likewise.
        (instantiate_template): Likewise.
        (get_bindings): Likewise.
        (get_bindings): Likewise.
        * decl.c (decls_match): Handle multiple levels of template
        * decl.c (decls_match): Handle multiple levels of template
        parameters.
        parameters.
        (pushdecl): Handle template type params just like other type
        (pushdecl): Handle template type params just like other type
        declarations.
        declarations.
        (push_class_level_binding): Return immediately if the
        (push_class_level_binding): Return immediately if the
        class_binding_level is NULL.
        class_binding_level is NULL.
        (grokfndecl): If check_classfn() returns a member_template, use
        (grokfndecl): If check_classfn() returns a member_template, use
        the result of the template, not the template itself.
        the result of the template, not the template itself.
        * decl2.c (check_member_template): New function.  Check to see
        * decl2.c (check_member_template): New function.  Check to see
        that the entity declared to be a member template can be one.
        that the entity declared to be a member template can be one.
        (check_classfn): Allow redeclaration of member template functions
        (check_classfn): Allow redeclaration of member template functions
        with different types; the new functions can be specializations or
        with different types; the new functions can be specializations or
        explicit instantiations.
        explicit instantiations.
        * error.c (dump_decl): Handle multiple levels of template
        * error.c (dump_decl): Handle multiple levels of template
        parameters.
        parameters.
        (dump_function_decl): Update to handle function templates.
        (dump_function_decl): Update to handle function templates.
        * lex.c (do_pending_inlines): Set up template parameter context
        * lex.c (do_pending_inlines): Set up template parameter context
        for member templates.
        for member templates.
        (process_next_inline): Likewise.
        (process_next_inline): Likewise.
        * method.c (build_overload_identifier): Adjust for multiple levels
        * method.c (build_overload_identifier): Adjust for multiple levels
        of template parameters.
        of template parameters.
        * parse.y (fn.def2): Add member templates.
        * parse.y (fn.def2): Add member templates.
        (component_decl_1): Likewise.
        (component_decl_1): Likewise.
        * pt.c (begin_member_template_processing): New function.
        * pt.c (begin_member_template_processing): New function.
        (end_member_template_processing): Likewise.
        (end_member_template_processing): Likewise.
        (is_member_template): Likewise.
        (is_member_template): Likewise.
        (fn_type_unification): Likewise.
        (fn_type_unification): Likewise.
        (current_template_parms): Return a vector of all the template
        (current_template_parms): Return a vector of all the template
        parms, not just the innermost level of parms.
        parms, not just the innermost level of parms.
        (push_template_decl): Deal with the possibility of member
        (push_template_decl): Deal with the possibility of member
        templates.
        templates.
        (lookup_template_class): Likewise.
        (lookup_template_class): Likewise.
        (uses_template_parms): Likewise.
        (uses_template_parms): Likewise.
        (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
        (tsubst): Modify processing to TEMPLATE_TYPE_PARM and
        TEMPLATE_CONST_PARM to deal with multiple levels of template
        TEMPLATE_CONST_PARM to deal with multiple levels of template
        arguments.   Add processing of TEMPLATE_DECL to produce new
        arguments.   Add processing of TEMPLATE_DECL to produce new
        TEMPLATE_DECLs from old ones.
        TEMPLATE_DECLs from old ones.
        (do_decl_instantiation): Handle member templates.
        (do_decl_instantiation): Handle member templates.
        * search.c (lookup_fnfields_1): Handle member template conversion
        * search.c (lookup_fnfields_1): Handle member template conversion
        operators.
        operators.
        * tree.c (cp_tree_equal): Check the levels, as well as the
        * tree.c (cp_tree_equal): Check the levels, as well as the
        indices, of TEMPLATE_CONST_PARMs.
        indices, of TEMPLATE_CONST_PARMs.
        * typeck.c (comptypes): Check the levels, as well as the indices,
        * typeck.c (comptypes): Check the levels, as well as the indices,
        fo TEMPLATE_TYPE_PARMs.
        fo TEMPLATE_TYPE_PARMs.
        (build_x_function_call): Treat member templates like member
        (build_x_function_call): Treat member templates like member
        functions.
        functions.
Wed Sep  3 11:09:25 1997  Jason Merrill  
Wed Sep  3 11:09:25 1997  Jason Merrill  
        * typeck.c (c_expand_return): Always convert_for_initialization
        * typeck.c (c_expand_return): Always convert_for_initialization
        before checking for returning a pointer to local.
        before checking for returning a pointer to local.
        * pt.c (type_unification): If strict and the function parm doesn't
        * pt.c (type_unification): If strict and the function parm doesn't
        use template parms, just compare types.
        use template parms, just compare types.
Wed Sep  3 10:35:49 1997  Klaus Espenlaub  
Wed Sep  3 10:35:49 1997  Klaus Espenlaub  
        * method.c (build_overloaded_value): Replace direct call
        * method.c (build_overloaded_value): Replace direct call
        to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
        to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
Wed Sep  3 00:02:53 1997  Jason Merrill  
Wed Sep  3 00:02:53 1997  Jason Merrill  
        * typeck.c (convert_arguments): Don't arbitrarily choose the first
        * typeck.c (convert_arguments): Don't arbitrarily choose the first
        of a set of overloaded functions.
        of a set of overloaded functions.
Tue Sep  2 12:09:13 1997  Jason Merrill  
Tue Sep  2 12:09:13 1997  Jason Merrill  
        * lex.c (real_yylex): Don't elide __FUNCTION__.
        * lex.c (real_yylex): Don't elide __FUNCTION__.
        * method.c (build_overload_value): Add in_template parm.
        * method.c (build_overload_value): Add in_template parm.
        (build_overload_int): Likewise.
        (build_overload_int): Likewise.
        (build_overload_identifier): Pass it.
        (build_overload_identifier): Pass it.
        * decl.c (duplicate_decls): Don't bash a previous template
        * decl.c (duplicate_decls): Don't bash a previous template
        definition with a redeclaration.
        definition with a redeclaration.
        * pt.c (unify): float doesn't match double.
        * pt.c (unify): float doesn't match double.
        * pt.c (do_type_instantiation): Handle getting a _TYPE or a
        * pt.c (do_type_instantiation): Handle getting a _TYPE or a
        TYPE_DECL.  Handle getting non-template types.
        TYPE_DECL.  Handle getting non-template types.
        * parse.y (explicit_instantiation): Use typespec instead of
        * parse.y (explicit_instantiation): Use typespec instead of
        aggr template_type.
        aggr template_type.
Tue Sep  2 10:27:08 1997  Richard Henderson  
Tue Sep  2 10:27:08 1997  Richard Henderson  
        * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
        * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
Mon Sep  1 13:19:04 1997  Eugene Mamchits  
Mon Sep  1 13:19:04 1997  Eugene Mamchits  
        * call.c (add_builtin_candidate): Add missing TREE_TYPE.
        * call.c (add_builtin_candidate): Add missing TREE_TYPE.
        (compare_ics): Likewise.
        (compare_ics): Likewise.
Mon Sep  1 13:19:04 1997  Jason Merrill  
Mon Sep  1 13:19:04 1997  Jason Merrill  
        * call.c (joust): Warn about choosing one conversion op over
        * call.c (joust): Warn about choosing one conversion op over
        another because of 'this' argument when the other return type is
        another because of 'this' argument when the other return type is
        better.
        better.
        (source_type): New fn.
        (source_type): New fn.
        * call.c (build_new_op): Strip leading REF_BIND from first operand
        * call.c (build_new_op): Strip leading REF_BIND from first operand
        to builtin operator.
        to builtin operator.
        * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
        * decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
        use its RTL.
        use its RTL.
Thu Aug 28 09:45:23 1997  Jason Merrill  
Thu Aug 28 09:45:23 1997  Jason Merrill  
        * call.c (null_ptr_cst_p): Remove support for (void*)0.
        * call.c (null_ptr_cst_p): Remove support for (void*)0.
Wed Aug 27 02:03:34 1997  Jeffrey A Law  
Wed Aug 27 02:03:34 1997  Jeffrey A Law  
        * typeck.c (expand_target_expr): Make definition match declaration.
        * typeck.c (expand_target_expr): Make definition match declaration.
        * class.c (get_basefndecls): Make definition match declaration.
        * class.c (get_basefndecls): Make definition match declaration.
Mon Aug 25 14:30:02 1997  Jason Merrill  
Mon Aug 25 14:30:02 1997  Jason Merrill  
        * input.c (sub_getch): Eventually give up and release the input file.
        * input.c (sub_getch): Eventually give up and release the input file.
        * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
        * decl.c (cp_finish_decl): If #p i/i, put inline statics in the
        right place.
        right place.
        * call.c (joust): Tweak message.
        * call.c (joust): Tweak message.
Sat Aug 23 18:02:59 1997  Mark Mitchell  
Sat Aug 23 18:02:59 1997  Mark Mitchell  
        * error.c (type_as_string): Put const/volatile on template type
        * error.c (type_as_string): Put const/volatile on template type
        parameters where appropriate.
        parameters where appropriate.
Sat Aug 23 17:47:22 1997  Jeffrey A Law  
Sat Aug 23 17:47:22 1997  Jeffrey A Law  
        * call.c (strictly_better): Make arguments unsigned ints.
        * call.c (strictly_better): Make arguments unsigned ints.
Thu Aug 21 18:48:44 1997  Jason Merrill  
Thu Aug 21 18:48:44 1997  Jason Merrill  
        * lex.c (real_yylex): Refer to __complex instead of complex.
        * lex.c (real_yylex): Refer to __complex instead of complex.
Thu Aug 21 22:25:46 1997  J"orn Rennecke  
Thu Aug 21 22:25:46 1997  J"orn Rennecke  
        * lex.c (real_yylex): Don't use getc directly.
        * lex.c (real_yylex): Don't use getc directly.
Wed Aug 20 17:25:08 1997  Jason Merrill  
Wed Aug 20 17:25:08 1997  Jason Merrill  
        * call.c (is_subseq): Don't try to be clever.
        * call.c (is_subseq): Don't try to be clever.
Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
        * parse.y, pt.c: Include "except.h".
        * parse.y, pt.c: Include "except.h".
        * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
        * call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
        error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
        error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
        lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
        lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
        sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
        sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
        prototyping.
        prototyping.
Wed Aug 20 01:34:40 1997  Jason Merrill  
Wed Aug 20 01:34:40 1997  Jason Merrill  
        * decl2.c (mark_vtable_entries): Instead of replacing pure
        * decl2.c (mark_vtable_entries): Instead of replacing pure
        virtuals with a reference to __pure_virtual, copy the decl and
        virtuals with a reference to __pure_virtual, copy the decl and
        change the RTL.
        change the RTL.
Tue Aug 19 02:26:07 1997  Jason Merrill  
Tue Aug 19 02:26:07 1997  Jason Merrill  
        * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
        * pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
        * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
        * typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
        * pt.c (instantiate_class_template): Call repo_template_used
        * pt.c (instantiate_class_template): Call repo_template_used
        before finish_prevtable_vardecl.
        before finish_prevtable_vardecl.
        * call.c (is_subseq): New fn.
        * call.c (is_subseq): New fn.
        (compare_ics): Use it.
        (compare_ics): Use it.
        * repo.c (finish_repo): Don't crash on no args.
        * repo.c (finish_repo): Don't crash on no args.
        * parse.y (named_complex_class_head_sans_basetype): Handle
        * parse.y (named_complex_class_head_sans_basetype): Handle
        explicit global scope.
        explicit global scope.
        * decl2.c (handle_class_head): New fn.
        * decl2.c (handle_class_head): New fn.
        * pt.c (unify): Add CONST_DECL case.
        * pt.c (unify): Add CONST_DECL case.
Thu Aug 14 10:05:13 1997  Brendan Kehoe  
Thu Aug 14 10:05:13 1997  Brendan Kehoe  
        * rtti.c (permanent_obstack): Fix decl to not be a pointer.
        * rtti.c (permanent_obstack): Fix decl to not be a pointer.
        * cp-tree.h (report_type_mismatch): Add prototype.
        * cp-tree.h (report_type_mismatch): Add prototype.
        * call.c (build_overload_call_real): Remove erroneous fourth
        * call.c (build_overload_call_real): Remove erroneous fourth
        argument to report_type_mismatch.
        argument to report_type_mismatch.
        (build_user_type_conversion_1): Remove erroneous second arg to
        (build_user_type_conversion_1): Remove erroneous second arg to
        tourney.
        tourney.
        (build_new_function_call): Likewise.
        (build_new_function_call): Likewise.
        (build_object_call): Likewise.
        (build_object_call): Likewise.
        (build_new_op): Likewise.
        (build_new_op): Likewise.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
Wed Aug 13 19:19:25 1997  Jason Merrill  
Wed Aug 13 19:19:25 1997  Jason Merrill  
        * error.c (dump_decl): Don't bother processing a function with no
        * error.c (dump_decl): Don't bother processing a function with no
        DECL_LANG_SPECIFIC.
        DECL_LANG_SPECIFIC.
        * method.c (emit_thunk): Call init_function_start in the macro case.
        * method.c (emit_thunk): Call init_function_start in the macro case.
Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
        * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
        * decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
        defined and used to set flag_vtable_thunks.
        defined and used to set flag_vtable_thunks.
Tue Aug 12 20:13:57 1997  Jason Merrill  
Tue Aug 12 20:13:57 1997  Jason Merrill  
        * parse.y: Don't clear the inlines from their obstack until they've
        * parse.y: Don't clear the inlines from their obstack until they've
        all been processed.
        all been processed.
        * decl.c (duplicate_decls): Don't complain about exception
        * decl.c (duplicate_decls): Don't complain about exception
        specification mismatch if flag_exceptions is off.
        specification mismatch if flag_exceptions is off.
Mon Aug 11 15:01:56 1997  Marc Lehmann  
Mon Aug 11 15:01:56 1997  Marc Lehmann  
        * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
        * Make-lang.in (c++.distclean): Remove g++.c on make distclean.
Sun Aug 10 12:06:09 1997  Paul Eggert  
Sun Aug 10 12:06:09 1997  Paul Eggert  
        * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
        * cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
        * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
        * cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
        Include  before include files that formerly used STDIO_PROTO.
        Include  before include files that formerly used STDIO_PROTO.
        * decl.c, g++spec.c, lex.c, method.c, repo.c:
        * decl.c, g++spec.c, lex.c, method.c, repo.c:
        Include "config.h" first, as per autoconf manual.
        Include "config.h" first, as per autoconf manual.
Fri Aug  8 11:47:48 1997  Jason Merrill  
Fri Aug  8 11:47:48 1997  Jason Merrill  
        * decl.c (duplicate_decls): Tweak wording.
        * decl.c (duplicate_decls): Tweak wording.
        * lex.c (do_pending_defargs): Don't die if we see a default arg
        * lex.c (do_pending_defargs): Don't die if we see a default arg
        that isn't a DEFAULT_ARG.
        that isn't a DEFAULT_ARG.
        * error.c (dump_expr): Handle DEFAULT_ARG.
        * error.c (dump_expr): Handle DEFAULT_ARG.
        * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
        * decl2.c (lang_decode_option): Handle -fhandle-exceptions.
        * lang-options.h: Add -fhandle-exceptions.
        * lang-options.h: Add -fhandle-exceptions.
        * class.c (build_vtable): Vtables are artificial.
        * class.c (build_vtable): Vtables are artificial.
        (prepare_fresh_vtable): Likewise.
        (prepare_fresh_vtable): Likewise.
Wed Aug  6 11:02:36 1997  Jason Merrill  
Wed Aug  6 11:02:36 1997  Jason Merrill  
        * cvt.c (ocp_convert): After converting to the target type, set
        * cvt.c (ocp_convert): After converting to the target type, set
        LOOKUP_NO_CONVERSION.
        LOOKUP_NO_CONVERSION.
        * call.c (joust): Warn about potentially confusing promotion rules
        * call.c (joust): Warn about potentially confusing promotion rules
        with -Wsign-promo.
        with -Wsign-promo.
        * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
        * cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
Tue Aug  5 15:15:07 1997  Michael Meissner  
Tue Aug  5 15:15:07 1997  Michael Meissner  
        * exception.cc: Declare __terminate_func with noreturn attribute.
        * exception.cc: Declare __terminate_func with noreturn attribute.
Fri Aug  1 03:18:15 1997  Jason Merrill  
Fri Aug  1 03:18:15 1997  Jason Merrill  
        * parse.y: Break out eat_saved_input, handle errors.
        * parse.y: Break out eat_saved_input, handle errors.
        (function_try_block): Use compstmt instead of compstmt_or_error.
        (function_try_block): Use compstmt instead of compstmt_or_error.
Thu Jul 31 17:14:04 1997  Jason Merrill  
Thu Jul 31 17:14:04 1997  Jason Merrill  
        * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
        * tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
Fri Jul  4 01:45:16 1997  Andreas Schwab  
Fri Jul  4 01:45:16 1997  Andreas Schwab  
        * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
        * Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
        existence of cc1plus check whether $(LANGUAGES) contains C++.
        existence of cc1plus check whether $(LANGUAGES) contains C++.
Wed Jul 30 13:04:21 1997  Andreas Schwab  
Wed Jul 30 13:04:21 1997  Andreas Schwab  
        * method.c (do_build_copy_constructor): When copying an anonymous
        * method.c (do_build_copy_constructor): When copying an anonymous
        union member loop around to handle nested anonymous unions.  Use
        union member loop around to handle nested anonymous unions.  Use
        the offset of the member relative to the outer structure, not the
        the offset of the member relative to the outer structure, not the
        union.
        union.
Tue Jul 29 21:17:29 1997  Jason Merrill  
Tue Jul 29 21:17:29 1997  Jason Merrill  
        * call.c (resolve_args): New fn.
        * call.c (resolve_args): New fn.
        (build_new_function_call): Use it.
        (build_new_function_call): Use it.
        (build_object_call): Likewise.
        (build_object_call): Likewise.
        (build_new_method_call): Likewise.
        (build_new_method_call): Likewise.
Mon Jul 28 16:02:36 1997  Jason Merrill  
Mon Jul 28 16:02:36 1997  Jason Merrill  
        * call.c (build_over_call): tsubst all default parms from templates.
        * call.c (build_over_call): tsubst all default parms from templates.
Wed Jul 23 13:36:25 1997  Jason Merrill  
Wed Jul 23 13:36:25 1997  Jason Merrill  
        * decl.c (struct cp_function): Add static_labelno.
        * decl.c (struct cp_function): Add static_labelno.
        (push_cp_function_context): Save it.
        (push_cp_function_context): Save it.
        (pop_cp_function_context): Restore it.
        (pop_cp_function_context): Restore it.
Tue Jul 22 14:43:29 1997  Jason Merrill  
Tue Jul 22 14:43:29 1997  Jason Merrill  
        * typeck.c (build_component_ref_1): Convert from reference.
        * typeck.c (build_component_ref_1): Convert from reference.
Tue Jul 22 11:06:23 1997  Brendan Kehoe  
Tue Jul 22 11:06:23 1997  Brendan Kehoe  
        * parse.y (current_declspecs, prefix_attributes): Initialize to
        * parse.y (current_declspecs, prefix_attributes): Initialize to
        NULL_TREE.
        NULL_TREE.
        * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
        * parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
        before we try to force it to be a TREE_LIST.
        before we try to force it to be a TREE_LIST.
        (decl): Make sure $1.t is non-nil.
        (decl): Make sure $1.t is non-nil.
Sun Jul 20 11:53:07 1997  Jason Merrill  
Sun Jul 20 11:53:07 1997  Jason Merrill  
        * pt.c (uses_template_parms): Handle template first-parse codes.
        * pt.c (uses_template_parms): Handle template first-parse codes.
        * decl.c (cp_finish_decl): Only warn about user-defined statics.
        * decl.c (cp_finish_decl): Only warn about user-defined statics.
Fri Jul 18 17:56:08 1997  Jason Merrill  
Fri Jul 18 17:56:08 1997  Jason Merrill  
        * pt.c (unify): Handle BOOLEAN_TYPE.
        * pt.c (unify): Handle BOOLEAN_TYPE.
        * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
        * cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
        * pt.c (tsubst): Don't set it.
        * pt.c (tsubst): Don't set it.
        * call.c (build_over_call): Use uses_template_parms.
        * call.c (build_over_call): Use uses_template_parms.
Thu Jul 17 18:06:30 1997  Jason Merrill  
Thu Jul 17 18:06:30 1997  Jason Merrill  
        * method.c (build_overload_nested_name): Use static_labelno
        * method.c (build_overload_nested_name): Use static_labelno
        instead of var_labelno.
        instead of var_labelno.
        (build_qualified_name): New fn.
        (build_qualified_name): New fn.
        (build_overload_name): Split out from here.
        (build_overload_name): Split out from here.
        (build_static_name): Use build_qualified_name.
        (build_static_name): Use build_qualified_name.
        * decl.c (cp_finish_decl): Statics in extern inline functions
        * decl.c (cp_finish_decl): Statics in extern inline functions
        have comdat linkage.
        have comdat linkage.
        (start_function): Initialize static_labelno.
        (start_function): Initialize static_labelno.
Thu Jul 17 11:20:17 1997  Benjamin Kosnik  
Thu Jul 17 11:20:17 1997  Benjamin Kosnik  
        * class.c (finish_struct_methods): Add check of warn_ctor_dtor_privacy
        * class.c (finish_struct_methods): Add check of warn_ctor_dtor_privacy
        before "all member functions in class [] are private".
        before "all member functions in class [] are private".
Wed Jul 16 23:47:08 1997  Jason Merrill  
Wed Jul 16 23:47:08 1997  Jason Merrill  
        * lex.c (do_scoped_id): convert_from_reference.
        * lex.c (do_scoped_id): convert_from_reference.
        * init.c (build_offset_ref): Likewise.
        * init.c (build_offset_ref): Likewise.
Wed Jul 16 12:34:29 1997  Benjamin Kosnik  
Wed Jul 16 12:34:29 1997  Benjamin Kosnik  
        * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
        * error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
Mon Jul 14 03:23:46 1997  Jason Merrill  
Mon Jul 14 03:23:46 1997  Jason Merrill  
        * typeck.c (get_member_function_from_ptrfunc): Promote index
        * typeck.c (get_member_function_from_ptrfunc): Promote index
        before saving it.
        before saving it.
Sun Jul 13 00:11:52 1997  Jason Merrill  
Sun Jul 13 00:11:52 1997  Jason Merrill  
        * tree.c (layout_basetypes): Move non-virtual destructor warning.
        * tree.c (layout_basetypes): Move non-virtual destructor warning.
        * decl.c (xref_basetypes): Remove non-virtual destructor warning.
        * decl.c (xref_basetypes): Remove non-virtual destructor warning.
Sat Jul 12 12:47:12 1997  Jason Merrill  
Sat Jul 12 12:47:12 1997  Jason Merrill  
        * decl.c (grokdeclarator): Call add_defarg_fn for the function
        * decl.c (grokdeclarator): Call add_defarg_fn for the function
        type, too.
        type, too.
        * lex.c (add_defarg_fn): Adjust.
        * lex.c (add_defarg_fn): Adjust.
        (do_pending_defargs): Adjust.  Don't skip the first parm.
        (do_pending_defargs): Adjust.  Don't skip the first parm.
Fri Jul 11 01:39:50 1997  Jason Merrill  
Fri Jul 11 01:39:50 1997  Jason Merrill  
        * decl.c (build_enumerator): Global enumerators are also readonly.
        * decl.c (build_enumerator): Global enumerators are also readonly.
        * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
        * rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
        (build_dynamic_cast): Call it and convert_from_reference.
        (build_dynamic_cast): Call it and convert_from_reference.
        * lex.c (add_defarg_fn): New fn.
        * lex.c (add_defarg_fn): New fn.
        (snarf_defarg): Don't add to defarg_types.
        (snarf_defarg): Don't add to defarg_types.
        (do_pending_defargs): Lose defarg_types.  All fns we process now
        (do_pending_defargs): Lose defarg_types.  All fns we process now
        have defargs.
        have defargs.
        * decl.c (grokfndecl): Call add_defarg_fn.
        * decl.c (grokfndecl): Call add_defarg_fn.
        * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
        * Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
        * cp-tree.def: Add DEFAULT_ARG.
        * cp-tree.def: Add DEFAULT_ARG.
        * spew.c (yylex): Call snarf_defarg as appropriate.
        * spew.c (yylex): Call snarf_defarg as appropriate.
        * parse.y: New tokens DEFARG and DEFARG_MARKER.
        * parse.y: New tokens DEFARG and DEFARG_MARKER.
        (defarg_again, pending_defargs, defarg, defarg1): New rules.
        (defarg_again, pending_defargs, defarg, defarg1): New rules.
        (structsp): Use pending_defargs.
        (structsp): Use pending_defargs.
        (parms, full_parm): Use defarg.
        (parms, full_parm): Use defarg.
        * lex.c (init_lex): Initialize inline_text_firstobj.
        * lex.c (init_lex): Initialize inline_text_firstobj.
        (do_pending_inlines): Never pass the obstack to feed_input.
        (do_pending_inlines): Never pass the obstack to feed_input.
        (process_next_inline): Call end_input instead of restore_pending_input.
        (process_next_inline): Call end_input instead of restore_pending_input.
        (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
        (clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
        finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
        finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
        * input.c (end_input): New fn.
        * input.c (end_input): New fn.
        (sub_getch): At the end of some fed input, just keep returning EOF
        (sub_getch): At the end of some fed input, just keep returning EOF
        until someone calls end_input.
        until someone calls end_input.
        Remove 'obstack' field from struct input_source.
        Remove 'obstack' field from struct input_source.
        * decl.c (grokparms): Handle DEFAULT_ARG.
        * decl.c (grokparms): Handle DEFAULT_ARG.
        (replace_defarg): New fn.
        (replace_defarg): New fn.
        * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
        * cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
Wed Jul  9 13:44:12 1997  Jason Merrill  
Wed Jul  9 13:44:12 1997  Jason Merrill  
        * call.c (implicit_conversion): If nothing else works, try binding
        * call.c (implicit_conversion): If nothing else works, try binding
        an rvalue to a reference.
        an rvalue to a reference.
Wed Jul  9 13:04:38 1997  Geoffrey Noer  
Wed Jul  9 13:04:38 1997  Geoffrey Noer  
        * decl.c (init_decl_processing): Fix Jun 30 patch -- move
        * decl.c (init_decl_processing): Fix Jun 30 patch -- move
        ifndef for Cygwin32 to include SIGSEGV.
        ifndef for Cygwin32 to include SIGSEGV.
Thu Jul  3 01:44:05 1997  Jason Merrill  
Thu Jul  3 01:44:05 1997  Jason Merrill  
        * class.c (finish_struct_1): Only complain about pointers without
        * class.c (finish_struct_1): Only complain about pointers without
        copy stuff if there are any constructors.
        copy stuff if there are any constructors.
        * rtti.c (build_dynamic_cast): Call complete_type on the types.
        * rtti.c (build_dynamic_cast): Call complete_type on the types.
        * decl.c (grokfndecl): If the function we chose doesn't actually
        * decl.c (grokfndecl): If the function we chose doesn't actually
        match, die.
        match, die.
        * decl2.c (grokclassfn): Don't specify 'const int' for the
        * decl2.c (grokclassfn): Don't specify 'const int' for the
        artificial destructor parm.
        artificial destructor parm.
        * pt.c (type_unification): If we are called recursively, nothing
        * pt.c (type_unification): If we are called recursively, nothing
        decays.
        decays.
Mon Jun 30 17:53:21 1997  Geoffrey Noer  
Mon Jun 30 17:53:21 1997  Geoffrey Noer  
        * decl.c (init_decl_processing): Stop trying to catch signals
        * decl.c (init_decl_processing): Stop trying to catch signals
        other than SIGABRT since the Cygwin32 library doesn't support
        other than SIGABRT since the Cygwin32 library doesn't support
        them correctly yet.  This fixes a situation in which g++ causes
        them correctly yet.  This fixes a situation in which g++ causes
        a hang on SIGSEGVs and other such signals in our Win32-hosted
        a hang on SIGSEGVs and other such signals in our Win32-hosted
        tools.
        tools.
Mon Jun 30 14:50:01 1997  Jason Merrill  
Mon Jun 30 14:50:01 1997  Jason Merrill  
        * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
        * tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
Fri Jun 27 15:18:49 1997  Jason Merrill  
Fri Jun 27 15:18:49 1997  Jason Merrill  
        * typeck2.c (store_init_value): Always return the value if our
        * typeck2.c (store_init_value): Always return the value if our
        type needs constructing.
        type needs constructing.
        * method.c (hack_identifier): Convert class statics from
        * method.c (hack_identifier): Convert class statics from
        reference, too.
        reference, too.
Thu Jun 26 11:44:46 1997  Jason Merrill  
Thu Jun 26 11:44:46 1997  Jason Merrill  
        * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
        * Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
Thu Jun 19 16:49:28 1997  Mike Stump  
Thu Jun 19 16:49:28 1997  Mike Stump  
        * typeck.c (c_expand_return): Make sure we clean up temporaries at
        * typeck.c (c_expand_return): Make sure we clean up temporaries at
        the end of return x;
        the end of return x;
Thu Jun 19 12:28:43 1997  Brendan Kehoe  
Thu Jun 19 12:28:43 1997  Brendan Kehoe  
        * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
        * lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
Tue Jun 17 18:35:57 1997  Mike Stump  
Tue Jun 17 18:35:57 1997  Mike Stump  
        * except.c (expand_builtin_throw): Add support
        * except.c (expand_builtin_throw): Add support
        -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
        -fno-sjlj-exceptions -fPIC exception handling on the SPARC.
Mon Jun 16 01:24:37 1997  Jason Merrill  
Mon Jun 16 01:24:37 1997  Jason Merrill  
        * repo.c (extract_string): Null-terminate.
        * repo.c (extract_string): Null-terminate.
        * cp-tree.h (TI_SPEC_INFO): New macro.
        * cp-tree.h (TI_SPEC_INFO): New macro.
        (CLASSTYPE_TI_SPEC_INFO): New macro.
        (CLASSTYPE_TI_SPEC_INFO): New macro.
        * pt.c (push_template_decl): Correctly determine # of template parms
        * pt.c (push_template_decl): Correctly determine # of template parms
        for partial specs.
        for partial specs.
        * call.c (compare_ics): Really fix 'this' conversions.
        * call.c (compare_ics): Really fix 'this' conversions.
        * pt.c (do_decl_instantiation): Don't crash on explicit inst of
        * pt.c (do_decl_instantiation): Don't crash on explicit inst of
        non-template fn.
        non-template fn.
        * pt.c (push_template_decl): Complain about mismatch in # of
        * pt.c (push_template_decl): Complain about mismatch in # of
        template parms between a class template and a member template.
        template parms between a class template and a member template.
Sun Jun 15 02:38:20 1997  Jason Merrill  
Sun Jun 15 02:38:20 1997  Jason Merrill  
        * method.c (synthesize_method): You can't call
        * method.c (synthesize_method): You can't call
        function_cannot_inline_p after finish_function.
        function_cannot_inline_p after finish_function.
        * decl.c (finish_function): Turn on flag_inline_functions and turn
        * decl.c (finish_function): Turn on flag_inline_functions and turn
        off DECL_INLINE before handing a synthesized method to the
        off DECL_INLINE before handing a synthesized method to the
        backend.
        backend.
Thu Jun 12 17:35:28 1997  Jason Merrill  
Thu Jun 12 17:35:28 1997  Jason Merrill  
        * method.c (synthesize_method): Remove July 30 change to never set
        * method.c (synthesize_method): Remove July 30 change to never set
        DECL_INLINE if at_eof.
        DECL_INLINE if at_eof.
Thu Jun 12 15:25:08 1997  Mike Stump  
Thu Jun 12 15:25:08 1997  Mike Stump  
        * xref.c (GNU_xref_member): Ensure that the node has a
        * xref.c (GNU_xref_member): Ensure that the node has a
        decl_lang_specific part before checking DECL_FRIEND_P.
        decl_lang_specific part before checking DECL_FRIEND_P.
Thu Jun 12 12:36:05 1997  Jason Merrill  
Thu Jun 12 12:36:05 1997  Jason Merrill  
        * pt.c (instantiate_class_template): Diagnose non-class types used
        * pt.c (instantiate_class_template): Diagnose non-class types used
        as bases.
        as bases.
Wed Jun 11 17:33:40 1997  Jason Merrill  
Wed Jun 11 17:33:40 1997  Jason Merrill  
        * typeck.c (build_conditional_expr): Use convert_for_initialization
        * typeck.c (build_conditional_expr): Use convert_for_initialization
        instead of convert_and_check.
        instead of convert_and_check.
Wed Jun 11 12:31:33 1997  Brendan Kehoe  
Wed Jun 11 12:31:33 1997  Brendan Kehoe  
        * parse.y (typespec): Don't pedwarn for typeof.
        * parse.y (typespec): Don't pedwarn for typeof.
Tue Jun 10 00:22:09 1997  Jason Merrill  
Tue Jun 10 00:22:09 1997  Jason Merrill  
        * repo.c (finish_repo): Only check changes if we would write a
        * repo.c (finish_repo): Only check changes if we would write a
        repo file.
        repo file.
        * call.c (compare_ics): Fix handling of 'this' conversions.
        * call.c (compare_ics): Fix handling of 'this' conversions.
        * pt.c (do_decl_instantiation): Support static data too.  Rename
        * pt.c (do_decl_instantiation): Support static data too.  Rename
        from do_function_instantiation.
        from do_function_instantiation.
        * cp-tree.h: Adjust.
        * cp-tree.h: Adjust.
        * parse.y: Adjust.
        * parse.y: Adjust.
        * repo.c (extract_string): New fn.
        * repo.c (extract_string): New fn.
        (get_base_filename): Use it.
        (get_base_filename): Use it.
        (init_repo): Compare old args with current args.
        (init_repo): Compare old args with current args.
Mon Jun  9 14:25:30 1997  Mike Stump  
Mon Jun  9 14:25:30 1997  Mike Stump  
        * Makefile.in, Make-lang.in: Protect C-ls with a comment
        * Makefile.in, Make-lang.in: Protect C-ls with a comment
        character, idea from Paul Eggert .
        character, idea from Paul Eggert .
Mon Jun  9 01:52:03 1997  Jason Merrill  
Mon Jun  9 01:52:03 1997  Jason Merrill  
        * typeck.c (c_expand_return): Be more persistent in looking for
        * typeck.c (c_expand_return): Be more persistent in looking for
        returned temps.
        returned temps.
        * cvt.c (build_up_reference): Use NOP_EXPR for switching from
        * cvt.c (build_up_reference): Use NOP_EXPR for switching from
        pointer to reference.
        pointer to reference.
        * class.c (build_vbase_path): Don't do anything if PATH has no steps.
        * class.c (build_vbase_path): Don't do anything if PATH has no steps.
Sun Jun  8 03:07:05 1997  Jason Merrill  
Sun Jun  8 03:07:05 1997  Jason Merrill  
        * init.c (build_member_call, build_offset_ref):
        * init.c (build_member_call, build_offset_ref):
        Use do_scoped_id instead of do_identifier.
        Use do_scoped_id instead of do_identifier.
        * cvt.c (convert): Remove bogosity.
        * cvt.c (convert): Remove bogosity.
Sat Jun  7 20:50:17 1997  Brendan Kehoe  
Sat Jun  7 20:50:17 1997  Brendan Kehoe  
        * cvt.c (build_up_reference): Do checks of ARGTYPE and
        * cvt.c (build_up_reference): Do checks of ARGTYPE and
        TARGET_TYPE before trying to use get_binfo.
        TARGET_TYPE before trying to use get_binfo.
Fri Jun  6 17:36:39 1997  Jason Merrill  
Fri Jun  6 17:36:39 1997  Jason Merrill  
        * cvt.c (build_up_reference): Call get_binfo to get access control.
        * cvt.c (build_up_reference): Call get_binfo to get access control.
        * decl2.c (import_export_decl): If we don't support weaks, leave
        * decl2.c (import_export_decl): If we don't support weaks, leave
        statics undefined.
        statics undefined.
Fri Jun  6 15:55:49 1997  Mike Stump  
Fri Jun  6 15:55:49 1997  Mike Stump  
        * except.c (expand_builtin_throw): Add support for machines that
        * except.c (expand_builtin_throw): Add support for machines that
        cannot access globals after throw's epilogue when
        cannot access globals after throw's epilogue when
        -fno-sjlj-exceptions is used.
        -fno-sjlj-exceptions is used.
Thu Jun  5 16:28:43 1997  Jason Merrill  
Thu Jun  5 16:28:43 1997  Jason Merrill  
        * parse.y: 'std::' becomes '::'.
        * parse.y: 'std::' becomes '::'.
        * lex.c (real_yylex): Remove 'namespace' warning.
        * lex.c (real_yylex): Remove 'namespace' warning.
        * init.c (build_member_call): Ignore 'std::'.
        * init.c (build_member_call): Ignore 'std::'.
        (build_offset_ref): Likewise.
        (build_offset_ref): Likewise.
        * decl2.c (do_using_directive): Ignore 'using namespace std;'.
        * decl2.c (do_using_directive): Ignore 'using namespace std;'.
        (do_toplevel_using_decl): Ignore 'using std::whatever'.
        (do_toplevel_using_decl): Ignore 'using std::whatever'.
        * decl.c (push_namespace): Just sorry.
        * decl.c (push_namespace): Just sorry.
        (pop_namespace): Nop.
        (pop_namespace): Nop.
        (init_decl_processing): Declare std namespace.
        (init_decl_processing): Declare std namespace.
Tue Jun  3 18:08:23 1997  Jason Merrill  
Tue Jun  3 18:08:23 1997  Jason Merrill  
        * search.c (push_class_decls): A name which ambiguously refers to
        * search.c (push_class_decls): A name which ambiguously refers to
        several instantiations of the same template just refers to the
        several instantiations of the same template just refers to the
        template.
        template.
Tue Jun  3 12:30:40 1997  Benjamin Kosnik  
Tue Jun  3 12:30:40 1997  Benjamin Kosnik  
        * decl.c (build_enumerator): Fix problem with unsigned long
        * decl.c (build_enumerator): Fix problem with unsigned long
        enumerated values being smashed to ints, causing overflow
        enumerated values being smashed to ints, causing overflow
        when computing next enumerated value (for enum values around
        when computing next enumerated value (for enum values around
        MAX_VAL).
        MAX_VAL).
Mon Jun  2 17:40:56 1997  Jason Merrill  
Mon Jun  2 17:40:56 1997  Jason Merrill  
        * typeck.c (build_component_ref): Only call mark_used on a decl.
        * typeck.c (build_component_ref): Only call mark_used on a decl.
Thu May 29 15:54:17 1997  Brendan Kehoe  
Thu May 29 15:54:17 1997  Brendan Kehoe  
        * typeck.c (build_c_cast): Make the check for a ptr to function
        * typeck.c (build_c_cast): Make the check for a ptr to function
        more specific before possible default_conversion call.
        more specific before possible default_conversion call.
Thu May 29 13:02:06 1997  Mike Stump  
Thu May 29 13:02:06 1997  Mike Stump  
        * except.c (expand_exception_blocks): Simplify and fix and make
        * except.c (expand_exception_blocks): Simplify and fix and make
        sure we don't end a region in a sequence, as expand_end_bindings
        sure we don't end a region in a sequence, as expand_end_bindings
        doesn't like it.
        doesn't like it.
Wed May 28 17:08:03 1997  Mike Stump  
Wed May 28 17:08:03 1997  Mike Stump  
        * except.c (init_exception_processing): Mark terminate as not
        * except.c (init_exception_processing): Mark terminate as not
        returning so that the optimizer can optimize better.
        returning so that the optimizer can optimize better.
Tue May 27 19:49:19 1997  Mike Stump  
Tue May 27 19:49:19 1997  Mike Stump  
        * cvt.c (convert): Don't do any extra work, if we can avoid it
        * cvt.c (convert): Don't do any extra work, if we can avoid it
        easily.
        easily.
Tue May 27 18:21:47 1997  Mike Stump  
Tue May 27 18:21:47 1997  Mike Stump  
        * *.[chy]: Change cp_convert to ocp_convert, change convert to
        * *.[chy]: Change cp_convert to ocp_convert, change convert to
        cp_convert.  convert is now reserved for the backend, and doesn't
        cp_convert.  convert is now reserved for the backend, and doesn't
        have the semantics a frontend person should ever want.
        have the semantics a frontend person should ever want.
Fri May 23 10:58:31 1997  Jason Merrill  
Fri May 23 10:58:31 1997  Jason Merrill  
        * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
        * lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
        Lose -traditional support.
        Lose -traditional support.
Thu May 22 15:41:28 1997  Jason Merrill  
Thu May 22 15:41:28 1997  Jason Merrill  
        * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
        * rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
        * parse.y (self_reference): Do it for templates, too.
        * parse.y (self_reference): Do it for templates, too.
        * class.c (pushclass): Don't overload_template_name; the alias
        * class.c (pushclass): Don't overload_template_name; the alias
        generated by build_self_reference serves the same purpose.
        generated by build_self_reference serves the same purpose.
        * tree.c (list_hash): Make static, take more args.
        * tree.c (list_hash): Make static, take more args.
        (list_hash_lookup): Likewise.
        (list_hash_lookup): Likewise.
        (list_hash_add): Make static.
        (list_hash_add): Make static.
        (list_hash_canon): Lose.
        (list_hash_canon): Lose.
        (hash_tree_cons): Only build a new node if one isn't already in the
        (hash_tree_cons): Only build a new node if one isn't already in the
        hashtable.
        hashtable.
        (hash_tree_chain): Use hash_tree_cons.
        (hash_tree_chain): Use hash_tree_cons.
        * cp-tree.h: Adjust.
        * cp-tree.h: Adjust.
        * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
        * decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
        of calling lookup_name.
        of calling lookup_name.
Wed May 21 18:24:19 1997  Jason Merrill  
Wed May 21 18:24:19 1997  Jason Merrill  
        * pt.c (instantiate_class_template): TYPE_VALUES for an enum
        * pt.c (instantiate_class_template): TYPE_VALUES for an enum
        doesn't refer to the CONST_DECLs.
        doesn't refer to the CONST_DECLs.
Tue May 20 21:09:32 1997  Bob Manson  
Tue May 20 21:09:32 1997  Bob Manson  
        * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
        * rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
        is bigger.
        is bigger.
        (expand_class_desc): Convert the last argument to a sizetype.
        (expand_class_desc): Convert the last argument to a sizetype.
Tue May 20 13:55:57 1997  Brendan Kehoe  
Tue May 20 13:55:57 1997  Brendan Kehoe  
        * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
        * gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
        __real__): Add reswords.
        __real__): Add reswords.
        * hash.h: Regenerate.
        * hash.h: Regenerate.
        * lex.h (rid): Add RID_COMPLEX.
        * lex.h (rid): Add RID_COMPLEX.
        (RID_LAST_MODIFIER): Set to RID_COMPLEX.
        (RID_LAST_MODIFIER): Set to RID_COMPLEX.
        * lex.c (init_lex): Add building of RID_COMPLEX.
        * lex.c (init_lex): Add building of RID_COMPLEX.
        (real_yylex): General cleanup in line with what c-lex.c also has,
        (real_yylex): General cleanup in line with what c-lex.c also has,
        sans the cruft for traditional; add handling of SPEC_IMAG, complex
        sans the cruft for traditional; add handling of SPEC_IMAG, complex
        types, and imaginary numeric constants.
        types, and imaginary numeric constants.
        * parse.y (REALPART, IMAGPART): Add tokens.
        * parse.y (REALPART, IMAGPART): Add tokens.
        (unary_expr): Add REALPART and IMAGPART rules.
        (unary_expr): Add REALPART and IMAGPART rules.
        * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
        * cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
        * decl.c (complex_{integer,float,double,long}_type_node): Define
        * decl.c (complex_{integer,float,double,long}_type_node): Define
        types.
        types.
        (init_decl_processing): Set up the types.
        (init_decl_processing): Set up the types.
        (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
        (grokdeclarator): Add handling of RID_COMPLEX.  Set and use
        DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
        DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
        * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
        * call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
        * cvt.c (cp_convert): Handle COMPLEX_TYPE.
        * cvt.c (cp_convert): Handle COMPLEX_TYPE.
        * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
        * error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
        COMPLEX_TYPE case.
        COMPLEX_TYPE case.
        * method.c (build_overload_name): Add handling of the different
        * method.c (build_overload_name): Add handling of the different
        COMPLEX_TYPEs, prefixing them with `J'.
        COMPLEX_TYPEs, prefixing them with `J'.
        * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
        * pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
        as a template parm.
        as a template parm.
        (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
        (uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
        * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
        * tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
        (mapcar): Handle COMPLEX_CST.
        (mapcar): Handle COMPLEX_CST.
        * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
        * typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
        (common_type): Add code for complex types.
        (common_type): Add code for complex types.
        (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
        (build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
        (convert_for_assignment): Likewise.
        (convert_for_assignment): Likewise.
        (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
        (mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
Mon May 19 12:26:27 1997  Jason Merrill  
Mon May 19 12:26:27 1997  Jason Merrill  
        * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
        * pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
        tsubst_expr, as it might try to do overload resolution.
        tsubst_expr, as it might try to do overload resolution.
Sat May 17 10:48:31 1997  Jason Merrill  
Sat May 17 10:48:31 1997  Jason Merrill  
        * pt.c (instantiate_class_template): Oops.
        * pt.c (instantiate_class_template): Oops.
Fri May 16 14:23:57 1997  Jason Merrill  
Fri May 16 14:23:57 1997  Jason Merrill  
        * cp-tree.def: Add TAG_DEFN.
        * cp-tree.def: Add TAG_DEFN.
        * pt.c (tsubst_enum): New fn.
        * pt.c (tsubst_enum): New fn.
        (instantiate_class_template): Use it.
        (instantiate_class_template): Use it.
        (tsubst_expr): Support TAG_DEFN.
        (tsubst_expr): Support TAG_DEFN.
        (tsubst): Support local enums.
        (tsubst): Support local enums.
        (tsubst_copy): Likewise.
        (tsubst_copy): Likewise.
        * decl.c (finish_enum): Likewise.
        * decl.c (finish_enum): Likewise.
        (start_enum): If this is a local enum, switch to permanent_obstack.
        (start_enum): If this is a local enum, switch to permanent_obstack.
Wed May 14 19:08:28 1997  Mike Stump  
Wed May 14 19:08:28 1997  Mike Stump  
        * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
        * decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
        (finish_function): Put the base init code for constructors just
        (finish_function): Put the base init code for constructors just
        after the parm cleanup insns.
        after the parm cleanup insns.
        (struct cp_function): Add last_parm_cleanup_insn.
        (struct cp_function): Add last_parm_cleanup_insn.
        (push_cp_function_context): Likewise.
        (push_cp_function_context): Likewise.
        (pop_cp_function_context): Likewise.
        (pop_cp_function_context): Likewise.
Tue May 13 15:51:20 1997  Jason Merrill  
Tue May 13 15:51:20 1997  Jason Merrill  
        * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
        * pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
Wed May  7 11:17:59 1997  Brendan Kehoe  
Wed May  7 11:17:59 1997  Brendan Kehoe  
        * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
        * method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
        for THUNK_FNDECL before we switch to temporary allocation.
        for THUNK_FNDECL before we switch to temporary allocation.
Mon May  5 14:46:53 1997  Jason Merrill  
Mon May  5 14:46:53 1997  Jason Merrill  
        * call.c (build_new_op): Handle null arg2 for ?:.
        * call.c (build_new_op): Handle null arg2 for ?:.
Thu May  1 18:26:37 1997  Mike Stump  
Thu May  1 18:26:37 1997  Mike Stump  
        * except.c (expand_exception_blocks): Ensure that we flow through
        * except.c (expand_exception_blocks): Ensure that we flow through
        the end of the exception region for the exception specification.
        the end of the exception region for the exception specification.
        Move exception region for the exception specification in, so that
        Move exception region for the exception specification in, so that
        it doesn't protect the parm cleanup.  Remove some obsolete code.
        it doesn't protect the parm cleanup.  Remove some obsolete code.
        * decl.c (store_parm_decls): Likewise.
        * decl.c (store_parm_decls): Likewise.
        (finish_function): Likewise.
        (finish_function): Likewise.
Tue Apr 29 15:38:54 1997  Jason Merrill  
Tue Apr 29 15:38:54 1997  Jason Merrill  
        * init.c (build_new): Fix nothrow handling.
        * init.c (build_new): Fix nothrow handling.
Tue Apr 29 14:29:50 1997  Brendan Kehoe  
Tue Apr 29 14:29:50 1997  Brendan Kehoe  
        * init.c (emit_base_init): Don't warn about the initialization
        * init.c (emit_base_init): Don't warn about the initialization
        list for an artificial member.
        list for an artificial member.
Fri Apr 25 17:47:59 1997  Brendan Kehoe  
Fri Apr 25 17:47:59 1997  Brendan Kehoe  
        * expr.c (do_case): Handle !START case for the error msg.
        * expr.c (do_case): Handle !START case for the error msg.
Fri Apr 25 11:55:23 1997  Jason Merrill  
Fri Apr 25 11:55:23 1997  Jason Merrill  
        * decl2.c, lang-options.h: New option -Weffc++.
        * decl2.c, lang-options.h: New option -Weffc++.
        * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
        * class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
        to -Weffc++.
        to -Weffc++.
        * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
        * decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
        to MULTIPLE_SYMBOL_SPACES.
        to MULTIPLE_SYMBOL_SPACES.
Wed Apr 23 18:06:50 1997  Jason Merrill  
Wed Apr 23 18:06:50 1997  Jason Merrill  
        * method.c (emit_thunk, generic case): Set current_function_is_thunk.
        * method.c (emit_thunk, generic case): Set current_function_is_thunk.
        * method.c (emit_thunk, macro case): Set up DECL_RESULT.
        * method.c (emit_thunk, macro case): Set up DECL_RESULT.
        * typeck.c (c_expand_return): Don't complain about returning void
        * typeck.c (c_expand_return): Don't complain about returning void
        to void in an artificial function.
        to void in an artificial function.
        * method.c (make_thunk): Change settings of READONLY/VOLATILE,
        * method.c (make_thunk): Change settings of READONLY/VOLATILE,
        don't set DECL_RESULT, set DECL_ARTIFICIAL.
        don't set DECL_RESULT, set DECL_ARTIFICIAL.
        (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC.
        (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC.
Wed Apr 23 14:43:06 1997  Mike Stump  
Wed Apr 23 14:43:06 1997  Mike Stump  
        * init.c (init_decl_processing): Add support for setjmp/longjmp based
        * init.c (init_decl_processing): Add support for setjmp/longjmp based
        exception handling.
        exception handling.
        * except.c (init_exception_processing): Likewise.
        * except.c (init_exception_processing): Likewise.
        (expand_end_catch_block): Likewise.
        (expand_end_catch_block): Likewise.
        (expand_exception_blocks): Likewise.
        (expand_exception_blocks): Likewise.
        (expand_throw): Likewise.
        (expand_throw): Likewise.
        * exception.cc (__default_terminate): Likewise.
        * exception.cc (__default_terminate): Likewise.
        * init.c (perform_member_init): Use new method of expr level
        * init.c (perform_member_init): Use new method of expr level
        cleanups, instead of cleanups_this_call and friends.
        cleanups, instead of cleanups_this_call and friends.
        (emit_base_init): Likewise.
        (emit_base_init): Likewise.
        (expand_aggr_vbase_init_1): Likewise.
        (expand_aggr_vbase_init_1): Likewise.
        (expand_vec_init): Likewise.
        (expand_vec_init): Likewise.
        * decl.c (cp_finish_decl): Likewise.
        * decl.c (cp_finish_decl): Likewise.
        (expand_static_init): Likewise.
        (expand_static_init): Likewise.
        (store_parm_decls): Likewise.
        (store_parm_decls): Likewise.
        (cplus_expand_expr_stmt): Likewise.
        (cplus_expand_expr_stmt): Likewise.
        * decl2.c (finish_file): Likewise.
        * decl2.c (finish_file): Likewise.
        * Make-lang.in (exception.o): Ok to compile with -O now.
        * Make-lang.in (exception.o): Ok to compile with -O now.
        * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
        * decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
        we know it will be done later by the backend.
        we know it will be done later by the backend.
        * decl2.c (lang_f_options): Remove support for short temps.
        * decl2.c (lang_f_options): Remove support for short temps.
        * lang-options.h: Likewise.
        * lang-options.h: Likewise.
Wed Apr 23 04:12:06 1997  Jason Merrill  
Wed Apr 23 04:12:06 1997  Jason Merrill  
        * tree.c (varargs_function_p): New fn.
        * tree.c (varargs_function_p): New fn.
        * method.c (emit_thunk): Replace broken generic code with code to
        * method.c (emit_thunk): Replace broken generic code with code to
        generate a heavyweight thunk function.
        generate a heavyweight thunk function.
Tue Apr 22 02:45:18 1997  Jason Merrill  
Tue Apr 22 02:45:18 1997  Jason Merrill  
        * pt.c (process_template_parm): pedwarn about floating-point parms.
        * pt.c (process_template_parm): pedwarn about floating-point parms.
        * decl.c (grokdeclarator): inline no longer implies static.
        * decl.c (grokdeclarator): inline no longer implies static.
        * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
        * spew.c (yylex): Always return the TYPE_DECL if we got a scope.
Mon Apr 21 15:42:27 1997  Jason Merrill  
Mon Apr 21 15:42:27 1997  Jason Merrill  
        * class.c (check_for_override): The signature of an overriding
        * class.c (check_for_override): The signature of an overriding
        function is not changed.
        function is not changed.
        * call.c (build_over_call): Move setting of conv into the loop.
        * call.c (build_over_call): Move setting of conv into the loop.
        Note: this change, along with the related changes of the 18th thru
        Note: this change, along with the related changes of the 18th thru
        the 20th of April, fix an infinite loop problem in conversions.
        the 20th of April, fix an infinite loop problem in conversions.
Sun Apr 20 16:24:29 1997  Jason Merrill  
Sun Apr 20 16:24:29 1997  Jason Merrill  
        * call.c (build_user_type_conversion_1): Really ignore rvalue
        * call.c (build_user_type_conversion_1): Really ignore rvalue
        conversions when looking for a REFERENCE_TYPE.
        conversions when looking for a REFERENCE_TYPE.
        * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
        * cvt.c (build_up_reference): Eviscerate, use build_unary_op.
        * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
        * cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
        * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
        * typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
        (build_unary_op): Likewise.
        (build_unary_op): Likewise.
        * call.c (build_over_call): See through a CONVERT_EXPR around the
        * call.c (build_over_call): See through a CONVERT_EXPR around the
        ADDR_EXPR for on a temporary.
        ADDR_EXPR for on a temporary.
        * typeck.c (c_expand_return): See through a CONVERT_EXPR around
        * typeck.c (c_expand_return): See through a CONVERT_EXPR around
        the ADDR_EXPR for a local variable.
        the ADDR_EXPR for a local variable.
Fri Apr 18 12:11:33 1997  Jason Merrill  
Fri Apr 18 12:11:33 1997  Jason Merrill  
        * call.c (build_user_type_conversion_1): If we're trying to
        * call.c (build_user_type_conversion_1): If we're trying to
        convert to a REFERENCE_TYPE, only consider lvalue conversions.
        convert to a REFERENCE_TYPE, only consider lvalue conversions.
        (build_new_function_call): Print candidates.
        (build_new_function_call): Print candidates.
        (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
        (implicit_conversion): Try a temp binding if the lvalue conv is BAD.
        (reference_binding): Binding a temporary of a reference-related type
        (reference_binding): Binding a temporary of a reference-related type
        is BAD.
        is BAD.
Thu Apr 17 14:37:22 1997  Brendan Kehoe  
Thu Apr 17 14:37:22 1997  Brendan Kehoe  
        * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
        * inc/typeinfo (type_info::before): Add cv-qualifier-seq.
        * tinfo2.cc (type_info::before): Likewise.
        * tinfo2.cc (type_info::before): Likewise.
Mon Apr 14 12:38:17 1997  Jason Merrill  
Mon Apr 14 12:38:17 1997  Jason Merrill  
        * call.c (implicit_conversion): Oops.
        * call.c (implicit_conversion): Oops.
Fri Apr 11 02:18:30 1997  Jason Merrill  
Fri Apr 11 02:18:30 1997  Jason Merrill  
        * call.c (implicit_conversion): Try to find a reference conversion
        * call.c (implicit_conversion): Try to find a reference conversion
        before binding a const reference to a temporary.
        before binding a const reference to a temporary.
Wed Apr  2 12:51:36 1997  Mike Stump  
Wed Apr  2 12:51:36 1997  Mike Stump  
        * exception.cc (__default_unexpected): Call terminate by default,
        * exception.cc (__default_unexpected): Call terminate by default,
        so that if the user overrides terminate, the correct function will
        so that if the user overrides terminate, the correct function will
        be called.
        be called.
Wed Mar 19 14:14:45 1997  Mike Stump  
Wed Mar 19 14:14:45 1997  Mike Stump  
        * parse.y (left_curly): Avoid trying to use any fields of
        * parse.y (left_curly): Avoid trying to use any fields of
        error_mark_node, as there aren't any.
        error_mark_node, as there aren't any.
Thu Mar 13 16:33:22 1997  Jason Merrill  
Thu Mar 13 16:33:22 1997  Jason Merrill  
        * lex.c (do_identifier): Avoid breaking on overloaded methods
        * lex.c (do_identifier): Avoid breaking on overloaded methods
        as default arguments.
        as default arguments.
Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  
Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  
        * call.c (add_template_candidate): Initialize the variable "dummy".
        * call.c (add_template_candidate): Initialize the variable "dummy".
Mon Mar 10 15:13:14 1997  Brendan Kehoe  
Mon Mar 10 15:13:14 1997  Brendan Kehoe  
        * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
        * decl.c (start_decl): Make sure TYPE isn't an error_mark_node
        before we try to use TYPE_SIZE and TREE_CONSTANT on it.
        before we try to use TYPE_SIZE and TREE_CONSTANT on it.
Fri Mar  7 13:19:36 1997  Brendan Kehoe  
Fri Mar  7 13:19:36 1997  Brendan Kehoe  
        * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
        * cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
        (debug_binfo): Delete decl, not needed.
        (debug_binfo): Delete decl, not needed.
        * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
        * tree.c (fnaddr_from_vtable_entry, function_arg_chain,
        promotes_to_aggr_type): Delete fns.
        promotes_to_aggr_type): Delete fns.
        * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
        * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
        SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
        SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
        PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
        PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
        * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
        * decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
        * friend.c (is_friend_type): Delete fn.
        * friend.c (is_friend_type): Delete fn.
        * cp-tree.h (is_friend_type): Delete decl.
        * cp-tree.h (is_friend_type): Delete decl.
        * decl.c (original_result_rtx, double_ftype_double,
        * decl.c (original_result_rtx, double_ftype_double,
        double_ftype_double_double, int_ftype_int, long_ftype_long,
        double_ftype_double_double, int_ftype_int, long_ftype_long,
        float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
        float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
        * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
        * typeck.c (original_result_rtx, warn_synth): Delete extern decls.
        * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
        * decl.c (push_overloaded_decl{,_top_level}): Make static, adding
        fwd decls.
        fwd decls.
        * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
        * cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
        * decl.c (pushdecl_nonclass_level): #if 0, unused.
        * decl.c (pushdecl_nonclass_level): #if 0, unused.
        * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
        * cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
        * lex.c (reinit_lang_specific): #if 0, unused.
        * lex.c (reinit_lang_specific): #if 0, unused.
        * cp-tree.h (reinit_lang_specific): #if 0 decl.
        * cp-tree.h (reinit_lang_specific): #if 0 decl.
        * decl.c (revert_static_member_fn): Make static, adding fwd decl.
        * decl.c (revert_static_member_fn): Make static, adding fwd decl.
        * cp-tree.h (revert_static_member_fn): Delete decl.
        * cp-tree.h (revert_static_member_fn): Delete decl.
        * class.c (root_lang_context_p): Delete fn.
        * class.c (root_lang_context_p): Delete fn.
        * cp-tree.h (root_lang_context_p): Delete decl.
        * cp-tree.h (root_lang_context_p): Delete decl.
        * decl.c (set_current_level_tags_transparency): #if 0, unused.
        * decl.c (set_current_level_tags_transparency): #if 0, unused.
        * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
        * cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
        * lex.c (set_vardecl_interface_info): Make static.
        * lex.c (set_vardecl_interface_info): Make static.
        * cp-tree.h (set_vardecl_interface_info): Delete decl.
        * cp-tree.h (set_vardecl_interface_info): Delete decl.
        * call.c (find_scoped_type): Make static.
        * call.c (find_scoped_type): Make static.
        * cp-tree.h (find_scoped_type): Delete decl.
        * cp-tree.h (find_scoped_type): Delete decl.
        * search.c (convert_pointer_to_vbase): Make static.
        * search.c (convert_pointer_to_vbase): Make static.
        * cp-tree.h (convert_pointer_to_vbase): Delete decl.
        * cp-tree.h (convert_pointer_to_vbase): Delete decl.
        * decl.c (const_ptr_type_node): Likewise.
        * decl.c (const_ptr_type_node): Likewise.
        * cp-tree.h (const_ptr_type_node): Delete decl.
        * cp-tree.h (const_ptr_type_node): Delete decl.
        * typeck.c (common_base_type): Make static.
        * typeck.c (common_base_type): Make static.
        * cp-tree.h (common_base_types): Delete erroneous decl.
        * cp-tree.h (common_base_types): Delete erroneous decl.
        * pt.c (classtype_mangled_name): Make static.
        * pt.c (classtype_mangled_name): Make static.
        * cp-tree.h (classtype_mangled_name): Delete decl.
        * cp-tree.h (classtype_mangled_name): Delete decl.
        * lex.c (check_newline): Make static.
        * lex.c (check_newline): Make static.
        * cp-tree.h (check_newline): Delete decl.
        * cp-tree.h (check_newline): Delete decl.
        * typeck.c (build_x_array_ref): Delete fn, same idea as
        * typeck.c (build_x_array_ref): Delete fn, same idea as
        grok_array_decl.
        grok_array_decl.
        * cp-tree.h (build_x_array_ref): Delete decl.
        * cp-tree.h (build_x_array_ref): Delete decl.
        * lex.c (copy_decl_lang_specific): Delete fn, same idea as
        * lex.c (copy_decl_lang_specific): Delete fn, same idea as
        copy_lang_decl.
        copy_lang_decl.
        * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
        * cp-tree.h (copy_decl_lang_specific): #if 0 decl.
        * class.c (build_vtable_entry): Make static.
        * class.c (build_vtable_entry): Make static.
        * cp-tree.h (build_vtable_entry): Delete decl.
        * cp-tree.h (build_vtable_entry): Delete decl.
        * class.c (build_vbase_pointer): Make static.
        * class.c (build_vbase_pointer): Make static.
        * cp-tree.h (build_vbase_pointer): Delete decl.
        * cp-tree.h (build_vbase_pointer): Delete decl.
        * sig.c (build_sptr_ref): Add forward decl and make static.
        * sig.c (build_sptr_ref): Add forward decl and make static.
        * cp-tree.h (build_sptr_ref): Delete decl.
        * cp-tree.h (build_sptr_ref): Delete decl.
        * call.c (build_new_method_call): Add forward decl and make static.
        * call.c (build_new_method_call): Add forward decl and make static.
        * cp-tree.h (build_new_method_call): Delete decl.
        * cp-tree.h (build_new_method_call): Delete decl.
        * call.c (build_object_call): Make static.
        * call.c (build_object_call): Make static.
        * class.c (check_for_override, complete_type_p, mark_overriders):
        * class.c (check_for_override, complete_type_p, mark_overriders):
        Likewise.
        Likewise.
        * decl.c (cp_function_chain): Likewise.
        * decl.c (cp_function_chain): Likewise.
        * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
        * lex.c (set_typedecl_interface_info, reinit_parse_for_block):
        Likewise.
        Likewise.
        * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
        * pt.c (comp_template_args, get_class_bindings, push_tinst_level):
        Likewise.
        Likewise.
        * tree.c (build_cplus_array_type_1): Likewise.
        * tree.c (build_cplus_array_type_1): Likewise.
        * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
        * typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
        (comp_target_parms): Likewise.
        (comp_target_parms): Likewise.
        * init.c (build_builtin_call): Make static.
        * init.c (build_builtin_call): Make static.
        * cp-tree.h (build_builtin_call): Delete decl.
        * cp-tree.h (build_builtin_call): Delete decl.
        * typeck.c (binary_op_error): Delete decl.
        * typeck.c (binary_op_error): Delete decl.
        * cp-tree.h (binary_op_error): Likewise.
        * cp-tree.h (binary_op_error): Likewise.
Thu Mar  6 16:13:52 1997  Brendan Kehoe  
Thu Mar  6 16:13:52 1997  Brendan Kehoe  
        * call.c (build_method_call): Compare against error_mark_node
        * call.c (build_method_call): Compare against error_mark_node
        directly, rather than the ERROR_MARK tree code.
        directly, rather than the ERROR_MARK tree code.
        * cvt.c (cp_convert): Likewise.
        * cvt.c (cp_convert): Likewise.
        * decl.c (print_binding_level): Likewise.
        * decl.c (print_binding_level): Likewise.
        (duplicate_decls): Likewise.
        (duplicate_decls): Likewise.
        (grokdeclarator): Likewise.
        (grokdeclarator): Likewise.
        (grokdeclarator): Likewise.
        (grokdeclarator): Likewise.
        * init.c (expand_aggr_init_1): Likewise.
        * init.c (expand_aggr_init_1): Likewise.
        (decl_constant_value): Likewise.
        (decl_constant_value): Likewise.
        * method.c (build_opfncall): Likewise.
        * method.c (build_opfncall): Likewise.
        (hack_identifier): Likewise.
        (hack_identifier): Likewise.
        * typeck.c (build_modify_expr): Likewise.
        * typeck.c (build_modify_expr): Likewise.
        * typeck.c (build_c_cast): Don't decl TYPE as register tree.
        * typeck.c (build_c_cast): Don't decl TYPE as register tree.
Sun Mar  2 02:54:36 1997  Bruno Haible  
Sun Mar  2 02:54:36 1997  Bruno Haible  
        * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
        * pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
        * pt.c (coerce_template_parms): Add new error message.
        * pt.c (coerce_template_parms): Add new error message.
        * method.c (build_overload_value): Implement name mangling for
        * method.c (build_overload_value): Implement name mangling for
        floating-point template arguments.
        floating-point template arguments.
        * method.c (build_overload_int, icat, dicat): Fix mangling of template
        * method.c (build_overload_int, icat, dicat): Fix mangling of template
        arguments whose absolute value doesn't fit in a signed word.
        arguments whose absolute value doesn't fit in a signed word.
Mon Mar  3 12:14:54 1997  Brendan Kehoe  
Mon Mar  3 12:14:54 1997  Brendan Kehoe  
        * friend.c: New file; put all of the friend stuff in here.
        * friend.c: New file; put all of the friend stuff in here.
        * init.c: Instead of here.
        * init.c: Instead of here.
        * Makefile.in (CXX_OBJS): Add friend.o.
        * Makefile.in (CXX_OBJS): Add friend.o.
        (friend.o): Add dependencies.
        (friend.o): Add dependencies.
        * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
        * Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
Sun Mar  2 11:04:43 1997  Jason Merrill  
Sun Mar  2 11:04:43 1997  Jason Merrill  
        * call.c (build_scoped_method_call): Complain if the scope isn't a
        * call.c (build_scoped_method_call): Complain if the scope isn't a
        base.
        base.
Wed Feb 26 11:31:06 1997  Jason Merrill  
Wed Feb 26 11:31:06 1997  Jason Merrill  
        * parse.y (left_curly): Don't crash on erroneous type.
        * parse.y (left_curly): Don't crash on erroneous type.
        * init.c (build_delete): Fix type of ref.
        * init.c (build_delete): Fix type of ref.
Tue Feb 25 12:41:48 1997  Jason Merrill  
Tue Feb 25 12:41:48 1997  Jason Merrill  
        * search.c (get_vbase_1): Renamed from get_vbase.
        * search.c (get_vbase_1): Renamed from get_vbase.
        (get_vbase): Wrapper, now non-static.
        (get_vbase): Wrapper, now non-static.
        (convert_pointer_to_vbase): Now static.
        (convert_pointer_to_vbase): Now static.
        * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
        * call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
        * init.c (build_delete): Pass one.
        * init.c (build_delete): Pass one.
        (build_partial_cleanup_for): Use build_scoped_method_call.
        (build_partial_cleanup_for): Use build_scoped_method_call.
        * decl.c (finish_function): Pass a binfo.
        * decl.c (finish_function): Pass a binfo.
Mon Feb 24 15:00:12 1997  Jason Merrill  
Mon Feb 24 15:00:12 1997  Jason Merrill  
        * call.c (build_over_call): Only synthesize non-trivial copy ctors.
        * call.c (build_over_call): Only synthesize non-trivial copy ctors.
        * typeck.c (build_c_cast): Lose other reference to flag.
        * typeck.c (build_c_cast): Lose other reference to flag.
        * call.c (build_field_call): Don't look for [cd]tor_identifier.
        * call.c (build_field_call): Don't look for [cd]tor_identifier.
        * decl2.c (delete_sanity): Remove meaningless use of
        * decl2.c (delete_sanity): Remove meaningless use of
        LOOKUP_HAS_IN_CHARGE.
        LOOKUP_HAS_IN_CHARGE.
        * decl.c (finish_function): Use build_scoped_method_call instead
        * decl.c (finish_function): Use build_scoped_method_call instead
        of build_delete for running vbase dtors.
        of build_delete for running vbase dtors.
        * init.c (build_delete): Call overload resolution code instead of
        * init.c (build_delete): Call overload resolution code instead of
        duplicating it badly.
        duplicating it badly.
Thu Feb 20 15:12:15 1997  Jason Merrill  
Thu Feb 20 15:12:15 1997  Jason Merrill  
        * call.c (build_over_call): Call mark_used before trying to elide
        * call.c (build_over_call): Call mark_used before trying to elide
        the call.
        the call.
        * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
        * decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
Wed Feb 19 11:18:53 1997  Brendan Kehoe  
Wed Feb 19 11:18:53 1997  Brendan Kehoe  
        * typeck.c (build_modify_expr): Always pedwarn for a cast to
        * typeck.c (build_modify_expr): Always pedwarn for a cast to
        non-reference used as an lvalue.
        non-reference used as an lvalue.
Wed Feb 19 10:35:37 1997  Jason Merrill  
Wed Feb 19 10:35:37 1997  Jason Merrill  
        * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
        * cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
Tue Feb 18 15:40:57 1997  Jason Merrill  
Tue Feb 18 15:40:57 1997  Jason Merrill  
        * parse.y (handler): Fix template typo.
        * parse.y (handler): Fix template typo.
Sun Feb 16 02:12:28 1997  Jason Merrill  
Sun Feb 16 02:12:28 1997  Jason Merrill  
        * error.c (lang_decl_name): New fn.
        * error.c (lang_decl_name): New fn.
        * tree.c (lang_printable_name): Use it.
        * tree.c (lang_printable_name): Use it.
Fri Feb 14 16:57:05 1997  Mike Stump  
Fri Feb 14 16:57:05 1997  Mike Stump  
        * g++spec.c: Include config.h so that we can catch bzero #defines
        * g++spec.c: Include config.h so that we can catch bzero #defines
        from the config file.
        from the config file.
Tue Feb 11 13:50:48 1997  Mike Stump  
Tue Feb 11 13:50:48 1997  Mike Stump  
        * new1.cc: Include a declaration for malloc, to avoid warning, and
        * new1.cc: Include a declaration for malloc, to avoid warning, and
        avoid lossing on systems that require one (ones that define malloc
        avoid lossing on systems that require one (ones that define malloc
        in xm.h).
        in xm.h).
Mon Feb 10 22:51:13 1997  Bruno Haible  
Mon Feb 10 22:51:13 1997  Bruno Haible  
        * decl2.c (max_tinst_depth): New variable.
        * decl2.c (max_tinst_depth): New variable.
        (lang_decode_option): Parse "-ftemplate-depth-NN" command line
        (lang_decode_option): Parse "-ftemplate-depth-NN" command line
        option.
        option.
        * pt.c (max_tinst_depth): Variable moved.
        * pt.c (max_tinst_depth): Variable moved.
        * lang-options.h: Declare "-ftemplate-depth-NN" command line option
        * lang-options.h: Declare "-ftemplate-depth-NN" command line option
        as legal.
        as legal.
Fri Feb  7 15:43:34 1997  Jason Merrill  
Fri Feb  7 15:43:34 1997  Jason Merrill  
        * decl.c (xref_basetypes): Allow a base class that depends on
        * decl.c (xref_basetypes): Allow a base class that depends on
        template parms to be incomplete.
        template parms to be incomplete.
        * decl2.c (build_expr_from_tree): Support typeid(type).
        * decl2.c (build_expr_from_tree): Support typeid(type).
        * rtti.c (get_typeid): Support templates.
        * rtti.c (get_typeid): Support templates.
        (expand_si_desc, expand_class_desc): Fix string length.
        (expand_si_desc, expand_class_desc): Fix string length.
        (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
        (expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
Tue Feb  4 11:28:24 1997  Jason Merrill  
Tue Feb  4 11:28:24 1997  Jason Merrill  
        * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
        * pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
        * pt.c (tsubst): Put it back for -fno-ansi-overloading.
        * pt.c (tsubst): Put it back for -fno-ansi-overloading.
Mon Feb  3 18:41:12 1997  Jason Merrill  
Mon Feb  3 18:41:12 1997  Jason Merrill  
        * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
        * pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
        smashes together template and non-template decls of the same
        smashes together template and non-template decls of the same
        signature.
        signature.
Thu Jan 30 19:18:00 1997  Jason Merrill  
Thu Jan 30 19:18:00 1997  Jason Merrill  
        * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
        * pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
Wed Jan 29 11:40:35 1997  Brendan Kehoe  
Wed Jan 29 11:40:35 1997  Brendan Kehoe  
        * decl.c (duplicate_decls): Next route, pedwarn about different
        * decl.c (duplicate_decls): Next route, pedwarn about different
        exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
        exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
Tue Jan 28 20:43:29 1997  Brendan Kehoe  
Tue Jan 28 20:43:29 1997  Brendan Kehoe  
        * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
        * cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
        (struct lang_type): Delete has_default_implementation member.
        (struct lang_type): Delete has_default_implementation member.
        Increase dummy to 21.
        Increase dummy to 21.
        * decl.c (start_method): Delete usage.
        * decl.c (start_method): Delete usage.
        * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
        * cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
        store_after_parms, start_decl_1, auto_function): Add decls.
        store_after_parms, start_decl_1, auto_function): Add decls.
        (get_arglist_len_in_bytes, declare_implicit_exception,
        (get_arglist_len_in_bytes, declare_implicit_exception,
        have_exceptions_p, make_type_decl, typedecl_for_tag,
        have_exceptions_p, make_type_decl, typedecl_for_tag,
        store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
        store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
        build_component_type_expr, cplus_exception_name,
        build_component_type_expr, cplus_exception_name,
        {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
        {make,clear}_anon_parm_name, dont_see_typename): Removed decls.
        * call.c (build_this): Make static.
        * call.c (build_this): Make static.
        (is_complete): Likewise.
        (is_complete): Likewise.
        (implicit_conversion): Likewise.
        (implicit_conversion): Likewise.
        (reference_binding): Likewise.
        (reference_binding): Likewise.
        (standard_conversion): Likewise.
        (standard_conversion): Likewise.
        (strip_top_quals): Likewise.
        (strip_top_quals): Likewise.
        (non_reference): Likewise.
        (non_reference): Likewise.
        (build_conv): Likewise.
        (build_conv): Likewise.
        (user_harshness): Likewise.
        (user_harshness): Likewise.
        (rank_for_ideal): Likewise.
        (rank_for_ideal): Likewise.
        * decl.c (start_decl_1): Delete forward decl.
        * decl.c (start_decl_1): Delete forward decl.
        (push_decl_level): Make static.
        (push_decl_level): Make static.
        (resume_binding_level): Make static.
        (resume_binding_level): Make static.
        (namespace_bindings_p): Make static.
        (namespace_bindings_p): Make static.
        (declare_namespace_level): Make static.
        (declare_namespace_level): Make static.
        (lookup_name_real): Make static.
        (lookup_name_real): Make static.
        (duplicate_decls): Make static.  Take register off NEWDECL and
        (duplicate_decls): Make static.  Take register off NEWDECL and
        OLDDECL parm decls.
        OLDDECL parm decls.
        * decl2.c (get_sentry): Make static.
        * decl2.c (get_sentry): Make static.
        (temp_name_p): Delete fn.
        (temp_name_p): Delete fn.
        * except.c (auto_function): Delete decl.
        * except.c (auto_function): Delete decl.
        * lex.c (handle_{cp,sysv}_pragma): Make static.
        * lex.c (handle_{cp,sysv}_pragma): Make static.
        (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
        (handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
        * method.c (do_build_{copy_constructor,assign_ref}): Make static.
        * method.c (do_build_{copy_constructor,assign_ref}): Make static.
        * pt.c (tsubst_expr_values): Make static.
        * pt.c (tsubst_expr_values): Make static.
        * rtti.c (combine_strings): Delete decl.
        * rtti.c (combine_strings): Delete decl.
Tue Jan 28 16:40:40 1997  Jason Merrill  
Tue Jan 28 16:40:40 1997  Jason Merrill  
        * pt.c (push_template_decl): Handle getting a typedef.
        * pt.c (push_template_decl): Handle getting a typedef.
        * call.c (build_new_function_call): Complain about void arg.
        * call.c (build_new_function_call): Complain about void arg.
Tue Jan 28 15:25:09 1997  Brendan Kehoe  
Tue Jan 28 15:25:09 1997  Brendan Kehoe  
        * decl.c (duplicate_decls): Give pedwarn of different exceptions
        * decl.c (duplicate_decls): Give pedwarn of different exceptions
        if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
        if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
Mon Jan 27 19:21:29 1997  Mike Stump  
Mon Jan 27 19:21:29 1997  Mike Stump  
        * except.c (expand_throw): Don't expand the cleanup tree here,
        * except.c (expand_throw): Don't expand the cleanup tree here,
        since we are not going to write the rtl out.  Fixes problem with
        since we are not going to write the rtl out.  Fixes problem with
        -g -O on SPARC.
        -g -O on SPARC.
Mon Jan 27 16:24:35 1997  Sean McNeil  
Mon Jan 27 16:24:35 1997  Sean McNeil  
        * Make-lang.in: Add $(exeext) as necessary.
        * Make-lang.in: Add $(exeext) as necessary.
Mon Jan 27 13:20:39 1997  Mike Stump  
Mon Jan 27 13:20:39 1997  Mike Stump  
        * parse.y (handler_seq): Must have at least one catch clause.
        * parse.y (handler_seq): Must have at least one catch clause.
Sat Jan 25 12:00:05 1997  Jason Merrill  
Sat Jan 25 12:00:05 1997  Jason Merrill  
        * call.c (add_builtin_candidate): Restore ?: hack.
        * call.c (add_builtin_candidate): Restore ?: hack.
        * decl.c (grok_op_properties): More warnings.
        * decl.c (grok_op_properties): More warnings.
Sat Jan 25 08:50:03 1997  Brendan Kehoe  
Sat Jan 25 08:50:03 1997  Brendan Kehoe  
        * decl.c (duplicate_decls): On second thought, do it as a pedwarn
        * decl.c (duplicate_decls): On second thought, do it as a pedwarn
        still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
        still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
        * decl.c (duplicate_decls): Scale back to a warning, and only do
        * decl.c (duplicate_decls): Scale back to a warning, and only do
        'em if -pedantic.
        'em if -pedantic.
Fri Jan 24 17:52:54 1997  Mike Stump  
Fri Jan 24 17:52:54 1997  Mike Stump  
        * decl.c (duplicate_decls): pedwarn mismatched exception
        * decl.c (duplicate_decls): pedwarn mismatched exception
        specifications.
        specifications.
Thu Jan 23 18:18:54 1997  Mike Stump  
Thu Jan 23 18:18:54 1997  Mike Stump  
        * call.c (build_new_method_call): Don't display the invisible
        * call.c (build_new_method_call): Don't display the invisible
        argument for controlling virtual bases.
        argument for controlling virtual bases.
Thu Jan 23 16:48:10 1997  Mike Stump  
Thu Jan 23 16:48:10 1997  Mike Stump  
        * new: Add nothrow new and delete, bad_alloc and throw specifications
        * new: Add nothrow new and delete, bad_alloc and throw specifications
        for delete.
        for delete.
        * decl.c (init_decl_processing): Add throw specification for delete.
        * decl.c (init_decl_processing): Add throw specification for delete.
        * new.cc (nothrow): Define.
        * new.cc (nothrow): Define.
        * lex.c (real_yylex): Removing warning that throw and friends are
        * lex.c (real_yylex): Removing warning that throw and friends are
        keywords.
        keywords.
        * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
        * new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
        * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
        * new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
        * Make-lang.in: Add new{1,2}.{cc,o}.
        * Make-lang.in: Add new{1,2}.{cc,o}.
Thu Jan 23 16:39:06 1997  Jason Merrill  
Thu Jan 23 16:39:06 1997  Jason Merrill  
        * lex.c (cons_up_default_function): Fix return type of synth op=.
        * lex.c (cons_up_default_function): Fix return type of synth op=.
        * init.c (emit_base_init): Add warnings for uninitialized members
        * init.c (emit_base_init): Add warnings for uninitialized members
        and bases.
        and bases.
        * decl.c (xref_basetypes): Add warning for non-polymorphic type
        * decl.c (xref_basetypes): Add warning for non-polymorphic type
        with destructor used as base type.
        with destructor used as base type.
        * decl.c (grok_op_properties): Add warning for op= returning void.
        * decl.c (grok_op_properties): Add warning for op= returning void.
        * typeck.c (c_expand_return): Add warning for op= returning anything
        * typeck.c (c_expand_return): Add warning for op= returning anything
        other than *this.
        other than *this.
        * class.c (finish_struct_1): Add warning for class with pointers
        * class.c (finish_struct_1): Add warning for class with pointers
        but not copy ctor or copy op=.
        but not copy ctor or copy op=.
        * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
        * cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
        * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
        * pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
        (instantiate_template): If -fexternal-templates, add this
        (instantiate_template): If -fexternal-templates, add this
        instantiation to pending_templates.
        instantiation to pending_templates.
        * decl2.c (copy_assignment_arg_p): Disable old hack to support
        * decl2.c (copy_assignment_arg_p): Disable old hack to support
        Booch components.
        Booch components.
Tue Jan 21 18:32:04 1997  Mike Stump  
Tue Jan 21 18:32:04 1997  Mike Stump  
        * cvt.c (cp_convert): pedwarn enum to pointer conversions.
        * cvt.c (cp_convert): pedwarn enum to pointer conversions.
Mon Jan 20 17:59:51 1997  Jason Merrill  
Mon Jan 20 17:59:51 1997  Jason Merrill  
        * call.c (standard_conversion): Handle getting references.  Tack
        * call.c (standard_conversion): Handle getting references.  Tack
        on RVALUE_CONV here.  Do it for non-class types, too.
        on RVALUE_CONV here.  Do it for non-class types, too.
        (reference_binding): Pass references to standard_conversion.
        (reference_binding): Pass references to standard_conversion.
        (implicit_conversion): Likewise.
        (implicit_conversion): Likewise.
        (add_builtin_candidate): Disable one ?: kludge.
        (add_builtin_candidate): Disable one ?: kludge.
        (convert_like): Handle RVALUE_CONVs for non-class types.
        (convert_like): Handle RVALUE_CONVs for non-class types.
        (joust): Disable the other ?: kludge.
        (joust): Disable the other ?: kludge.
Mon Jan 20 14:53:13 1997  Brendan Kehoe  
Mon Jan 20 14:53:13 1997  Brendan Kehoe  
        * decl.c (init_decl_processing): Add code to build up common
        * decl.c (init_decl_processing): Add code to build up common
        function types beforehand, to avoid creation then removal of
        function types beforehand, to avoid creation then removal of
        things already in the hash table.
        things already in the hash table.
Mon Jan 20 14:43:49 1997  Jason Merrill  
Mon Jan 20 14:43:49 1997  Jason Merrill  
        * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
        * decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
        the arguments.
        the arguments.
        * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
        * error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
        current_template_parms.
        current_template_parms.
Fri Jan 17 10:25:42 1997  Jason Merrill  
Fri Jan 17 10:25:42 1997  Jason Merrill  
        * search.c (lookup_field): Don't return a function, check want_type.
        * search.c (lookup_field): Don't return a function, check want_type.
Thu Jan 16 18:14:35 1997  Brendan Kehoe  
Thu Jan 16 18:14:35 1997  Brendan Kehoe  
        * init.c (build_new): Make sure PLACEMENT has a type.
        * init.c (build_new): Make sure PLACEMENT has a type.
Thu Jan 16 17:40:28 1997  Jason Merrill  
Thu Jan 16 17:40:28 1997  Jason Merrill  
        * init.c (build_new): Support new (nothrow).
        * init.c (build_new): Support new (nothrow).
Wed Jan 15 12:38:14 1997  Jason Merrill  
Wed Jan 15 12:38:14 1997  Jason Merrill  
        * pt.c (instantiate_decl): Also do push_to_top_level before setting
        * pt.c (instantiate_decl): Also do push_to_top_level before setting
        up DECL_INITIAL.
        up DECL_INITIAL.
        * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
        * cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
        * pt.c (tsubst): Defer instantiation of default args.
        * pt.c (tsubst): Defer instantiation of default args.
        * call.c (build_over_call): Until here.
        * call.c (build_over_call): Until here.
Wed Jan 15 10:08:10 1997  Brendan Kehoe  
Wed Jan 15 10:08:10 1997  Brendan Kehoe  
        * search.c (lookup_field): Make sure we have an
        * search.c (lookup_field): Make sure we have an
        IDENTIFIER_CLASS_VALUE before we try to return it.
        IDENTIFIER_CLASS_VALUE before we try to return it.
Thu Jan  9 07:19:01 1997  Brendan Kehoe  
Thu Jan  9 07:19:01 1997  Brendan Kehoe  
        * call.c (build_method_call): Delete unused var PARM.
        * call.c (build_method_call): Delete unused var PARM.
        (build_overload_call_real): Likewise.
        (build_overload_call_real): Likewise.
        (build_object_call): Delete unused var P.
        (build_object_call): Delete unused var P.
        (build_new_op): Likewise.
        (build_new_op): Likewise.
        * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
        * decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
        var definitions, which are never used.
        var definitions, which are never used.
        (shadow_tag): Delete unused var FN.
        (shadow_tag): Delete unused var FN.
        * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
        * expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
        * init.c (build_new): Delete unused var ALLOC_TEMP.
        * init.c (build_new): Delete unused var ALLOC_TEMP.
        * method.c (hack_identifier): Delete unused var CONTEXT.
        * method.c (hack_identifier): Delete unused var CONTEXT.
        (do_build_copy_constructor): Delete unused var NAME.
        (do_build_copy_constructor): Delete unused var NAME.
        (synthesize_method): Delete unused var BASE.
        (synthesize_method): Delete unused var BASE.
        * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
        * pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
        * rtti.c (build_headof): Delete unused var VPTR.
        * rtti.c (build_headof): Delete unused var VPTR.
        (get_typeid): Delete unused var T.
        (get_typeid): Delete unused var T.
        * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
        * typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
        and ORIG_OP2.
        and ORIG_OP2.
        (build_ptrmemfunc): Delete unused vars U and NINDEX.
        (build_ptrmemfunc): Delete unused vars U and NINDEX.
        * typeck2.c (build_functional_cast): Delete unused var BINFO.
        * typeck2.c (build_functional_cast): Delete unused var BINFO.
Wed Jan  8 13:09:54 1997  Jason Merrill  
Wed Jan  8 13:09:54 1997  Jason Merrill  
        * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
        * search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
        things in a type being defined.
        things in a type being defined.
        * decl.c (finish_enum): Reverse the values so that they are in
        * decl.c (finish_enum): Reverse the values so that they are in
        the correct order.
        the correct order.
        * pt.c (instantiate_class_template): Don't initialize
        * pt.c (instantiate_class_template): Don't initialize
        BINFO_BASETYPES until the vector is filled out.
        BINFO_BASETYPES until the vector is filled out.
        (unify): Don't abort on conflicting bindings, just fail.
        (unify): Don't abort on conflicting bindings, just fail.
        (instantiate_decl): Do push_tinst_level before any tsubsting.
        (instantiate_decl): Do push_tinst_level before any tsubsting.
        * method.c (build_overload_value): Handle getting a
        * method.c (build_overload_value): Handle getting a
        TEMPLATE_CONST_PARM for a pointer.
        TEMPLATE_CONST_PARM for a pointer.
Tue Jan  7 14:00:58 1997  Jason Merrill  
Tue Jan  7 14:00:58 1997  Jason Merrill  
        * init.c (expand_member_init): Don't give 'not a base' error for
        * init.c (expand_member_init): Don't give 'not a base' error for
        templates.
        templates.
        * pt.c (instantiate_decl): Call import_export_decl later.
        * pt.c (instantiate_decl): Call import_export_decl later.
        * pt.c (instantiate_class_template): Return a value.
        * pt.c (instantiate_class_template): Return a value.
        * parse.y (extension): New rule for __extension__.
        * parse.y (extension): New rule for __extension__.
        (extdef, unary_expr, decl, component_decl): Use it.
        (extdef, unary_expr, decl, component_decl): Use it.
Tue Jan  7 09:20:28 1997  Mike Stump  
Tue Jan  7 09:20:28 1997  Mike Stump  
        * class.c (base_binfo): Remove unused base_has_virtual member.
        * class.c (base_binfo): Remove unused base_has_virtual member.
        (finish_base_struct): Likewise.
        (finish_base_struct): Likewise.
        (finish_struct_1): Likewise.
        (finish_struct_1): Likewise.


Copyright (C) 1997 Free Software Foundation, Inc.
Copyright (C) 1997 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.