diff -x de.gmo -x fr.gmo -Nrc3p egcs-1.1.2/gcc/cp/ChangeLog gcc-2.95/gcc/cp/ChangeLog *** egcs-1.1.2/gcc/cp/ChangeLog Sat Mar 13 18:38:24 1999 --- gcc-2.95/gcc/cp/ChangeLog Wed Jul 28 21:39:42 1999 *************** *** 1,152 **** ! Sun Mar 14 02:38:07 PST 1999 Jeff Law (law@cygnus.com) ! * egcs-1.1.2 Released. Sun Feb 21 20:38:00 1999 H.J. Lu (hjl@gnu.org) ! * decl2.c (start_objects): Make file scope constructors and ! destructors local to the file if ASM_OUTPUT_CONSTRUCTOR and ! ASM_OUTPUT_DESTRUCTOR are defined. ! Sat Feb 20 15:08:42 1999 Jeffrey A Law (law@cygnus.com) ! 1999-01-25 Martin von Löwis ! * tree.c (equal_functions): New function. ! (ovl_member): Call it. ! Sat Feb 6 17:00:48 1999 Jeffrey A Law (law@cygnus.com) ! * typeck2.c: Update email addresses. ! 1998-11-16 Jason Merrill ! * typeck2.c (my_friendly_abort): Don't fatal twice in a row. ! 1998-11-15 Jason Merrill ! * typeck2.c (my_friendly_abort): Add URL in the other case, too. ! 1998-11-13 Jason Merrill ! * rtti.c (synthesize_tinfo_fn): Call import_export_decl here. ! (get_tinfo_fn): Not here. ! 1998-11-08 Mark Mitchell * decl.c (grokdeclarator): Tighten checks for invalid destructors. Improve error-messages and error-recovery. ! * decl2.c (check_classfn): Don't assume that mangled destructor names contain type information. ! 1998-11-02 Jason Merrill ! * decl2.c (import_export_decl): Call import_export_class. ! 1998-10-28 Jason Merrill ! * class.c (finish_struct_1): Don't complain about non-copy ! assignment ops in union members. ! * class.c (build_vtable): Don't pass at_eof to import_export_vtable. ! (prepare_fresh_vtable): Likewise. ! (finish_struct_1): Don't call import_export_class. ! * decl2.c (finish_vtable_vardecl): Do import/export stuff. ! (finish_prevtable_vardecl): Lose. ! (finish_file): Don't call it. * pt.c (instantiate_class_template): Likewise. ! 1998-10-23 Martin von Löwis ! * parse.y (condition): Convert VAR_DECL from reference to indirect ! reference. ! 1998-10-18 Jason Merrill ! * method.c (hack_identifier): Just return a member function. ! 1998-10-18 Martin von Löwis ! * decl2.c (validate_nonmember_using_decl): Fix using-directives of ! std if std is ignored. ! 1998-10-14 Jason Merrill ! * spew.c (yylex): Clear looking_for_typename if we got ! 'enum { ... };'. ! 1998-10-13 Jason Merrill ! * tinfo2.cc (fast_compare): Remove. ! (before): Just use strcmp. ! * tinfo.cc (operator==): Just use strcmp. ! 1998-10-12 Jason Merrill ! * tinfo.cc (operator==): Always compare names. ! 1998-10-12 Jason Merrill ! * inc/typeinfo: Add #pragma interface. ! (operator!=): Just call operator==. ! * tinfo.cc: Add #pragma implementation. ! (operator==): Move from inc/typeinfo and tinfo2.cc. ! * typeck2.c (my_friendly_abort): Add URL. ! 1998-10-05 Martin von Löwis ! * method.c (build_decl_overload_real): Clear ! numeric_output_need_bar after __. ! 1998-10-04 Jason Merrill ! * decl.c (cp_finish_decl): Make statics in extern inlines and ! templates common, if possible and the target doesn't support weak ! symbols. ! 1998-10-03 Jason Merrill ! * decl2.c (merge_functions): Remove duplicates. ! * typeck.c (build_conditional_expr): Only fold if ifexp is an ! INTEGER_CST. ! Fri Oct 2 02:07:26 1998 Mumit Khan ! * parse.y (nomods_initdcl0): Set up the parser stack correctly. ! 1998-08-25 Jason Merrill ! * decl.c (duplicate_decls): Don't complain about different ! exceptions from an internal decl even if pedantic. ! 1998-08-24 Gavin Romig-Koch ! * typeck.c (c_expand_return): Handle the case that valtype ! is wider than the functions return type. ! 1998-08-24 Martin von Löwis ! * search.c (my_tree_cons): Reimplement. ! 1998-08-17 Jason Merrill ! * decl.c (finish_enum): Also set TYPE_SIZE_UNIT. ! * class.c (finish_struct_bits): Likewise. ! 1998-08-17 Mark Mitchell ! * pt.c (check_explicit_specialization): Don't abort on bogus ! explicit instantiations. ! 1998-08-14 Jason Merrill ! * rtti.c (get_tinfo_fn): Don't mess with the context for now. ! 1998-08-13 Mumit Khan ! * decl2.c (import_export_class): Don't use dllexport ! attribute as a heuristic. 1998-07-29 Jason Merrill --- 1,4938 ---- ! Wed Jul 28 21:39:31 PDT 1999 Jeff Law (law@cygnus.com) ! * gcc-2.95 Released. ! ! Sun Jul 25 23:40:51 PDT 1999 Jeff Law (law@cygnus.com) ! ! * gcc-2.95 Released. ! ! Sun Jul 25 15:24:21 1999 Jeffrey A Law (law@cygnus.com) ! ! * g++FAQ.texi: Deleted per Joe Buck's request. ! * Makefile.in: Corresponding changes. ! ! Sat Jul 17 23:50:47 1999 Jeffrey A Law (law@cygnus.com) ! ! * Makefile.in (INTERFACE): Bump to 2. ! ! 1999-07-17 Alexandre Oliva ! ! * typeck2.c (my_friendly_abort): Updated URL with bug reporting ! instructions to gcc.gnu.org. Removed e-mail address. ! ! 1999-07-15 Mark Mitchell ! ! * pt.c (check_default_tmpl_args): Handle friends defined in the ! class just like member functions defined in the class. ! ! Thu Jul 15 01:26:49 1999 H.J. Lu ! ! * decl.c (duplicate_decls): Relax restriction for exception ! checks on duplicate symbols. ! ! 1999-07-07 Jason Merrill ! ! * decl.c (grokdeclarator): Update the names of all variants when ! de-anonymizing. ! ! Wed Jul 7 01:26:47 1999 Alexandre Oliva ! ! * decl2.c (mark_vtable_entries): Fix check for rtti offset. ! ! 1999-06-26 Richard Henderson ! ! * decl.c (cp_finish_decl): Fix typo in cp_warning_at call. ! ! 1999-06-21 Mark Mitchell ! ! * init.c (expand_aggr_vbase_init): Rename to ! construct_virtual_bases. Conditionalize construction here, ! rather than ... ! (emit_base_init): Here. ! ! 1999-06-19 Mark Mitchell ! ! * semantics.c (finish_asm_statement): Apply decay conversions to ! input operands. ! ! * decl.c (expand_static_init): When building an anonymous function ! for use with atexit, compute its body before and after entering ! the function. ! ! 1999-06-18 Mark Mitchell ! ! * init.c (expand_aggr_vbase_init): Add flag parameter. ! (build_partial_cleanup_for): Remove, inlining into .. ! (expand_cleanup_for_base): ... here. Take flag parameter. ! (emit_base_init): Pass the in_chrg parameter to ! emit_aggr_vbase_init. ! (emit_aggr_vbase_init): Pass it to expand_cleanup_for_base. ! ! 1999-06-16 Mark Mitchell ! ! * decl2.c (import_export_decl): Use same_type_p, rather than ! relying on pointer-equality for types. ! ! * method.c (do_build_copy_constructor): Simplify. ! ! * call.c (build_method_call): Remove bogus code for two-argument ! delete. ! * init.c (build_new_1): Expand on comment, and remove dead code. ! ! * init.c (expand_cleanup_for_base): New function, split out ! from ... ! (emit_base_init): Here. ! (expand_aggr_vbase_init): Use it. ! ! 1999-06-15 Mark Mitchell ! ! * cp-tree.h (class_cache_firstobj): Declare. ! (maybe_push_cache_obstack): Rename to push_cache_obstack. ! * class.c (permanent_obstack): Remove declaration. ! (class_cache_firstobj): Make it global. ! (add_method): Don't use permanent_obstack directly. ! (pushclass): Only free the class_cache_obstack if we know how far ! back to free it. ! (maybe_push_cache_obstack): Rename to push_cache_obstack. ! * decl.c: Remove dead comment. ! (saved_scope): Add class_cache_firstobj. ! (push_to_top_level): Save it. ! (pop_from_top_level): Restore it. ! (push_class_level_binding): Use push_cache_obstack, not ! maybe_push_cache_obstack. ! * search.c (push_class_decls): Likewise. ! ! 1999-06-14 Nathan Sidwell ! ! * call.c (build_new_op): Remove REF_BIND from all operands. ! ! 1999-06-07 Mark Mitchell ! ! * search.c (convert_pointer_to_single_level): Reimplement without ! using get_binfo. ! ! 1999-06-06 Mark Mitchell ! ! * method.c (is_back_referenceable_type): Back-reference bools when ! not squangling. ! ! 1999-06-04 Jason Merrill ! ! * semantics.c (finish_if_stmt_cond): Copy cond to permanent_obstack. ! (finish_while_stmt_cond, finish_do_stmt, finish_for_cond): Likewise. ! ! 1999-05-30 Mark Mitchell ! ! * lex.c (make_lang_type): Create TYPE_BINFO for ! TEMPLATE_TYPE_PARMs just like for non-template types. ! ! 1999-05-28 Nathan Sidwell ! ! * decl.c (complete_array_type): Allocate off same obstack. Fix ! DO_DEFAULT comment to match reality. ! ! 1999-05-22 Mark Mitchell ! ! * tree.c (mapcar): Handle NON_LVALUE_EXPR. ! ! 1999-05-21 Mark Mitchell ! ! * typeck.c (build_ptrmemfunc): Handle PTRMEM_CSTs carefully to ! reveal optimization opportunities. ! ! 1999-05-20 Mark Mitchell ! ! * decl.c (grokdeclarator): Don't treat [] as indicating a ! zero-sized array in a typedef. ! ! * call.c (build_object_call): Don't look at DECL_NAME for a type. ! (pt.c): Or CP_TYPE_QUALS for an ERROR_MARK. ! (typeck.c): Or TYPE_MAIN_VARIANT for a type. ! ! 1999-05-20 Jason Merrill ! ! * tree.c (lvalue_p_1): A NOP_EXPR can be an lvalue. ! (build_cplus_new): Make sure that what we return is of the right type. ! ! 1999-05-20 Mark Mitchell ! ! * cp-tree.h (make_ptrmem_cst): New function. ! * expr.c (cplus_expand_constant): Split out from ... ! (cplus_expand_expr): Here. Use cplus_expand_constant. ! (init_cplus_expand): Set lang_expand_constant. ! * pt.c (convert_nontype_argument): Use make_ptrmem_cst. ! * tree.c (make_ptrmem_cst): Define. ! * typeck.c (unary_complex_lvalue): Use make_ptrmem_cst. ! * typeck2.c (initializer_constant_valid_p): Use make_ptrmem_cst. ! ! 1999-05-19 Mark Mitchell ! ! * decl2.c (start_static_storage_duration_function): Fix comment. ! (finish_file): Create static storage duration functions lazily. ! ! Wed May 19 02:50:53 1999 Arvind Sankar ! ! * gxxint.texi: Fix typo. ! ! 1999-05-18 Jason Merrill ! ! * call.c (joust): Compare the types of the conv ops, not the ! target types of the conversions. ! ! Tue May 18 00:21:34 1999 Zack Weinberg ! ! * lang-specs.h: Define __GNUC__ and __GNUC_MINOR__ only if -no-gcc ! was not given. ! ! 1999-05-17 Mark Mitchell ! ! * cp-tree.def (TEMPLATE_ID_EXPR): Update documentation. ! * decl.c (grokfndecl): Don't allow inline declarations of friend ! template specializations, or friend template specializations with ! default arguments. ! * pt.c (tsubst): Handle substitution into array types that does ! not yield a fixed upper bound, even when not processing a ! template. ! (tsubst_copy): Deal with the fact that the second operand to a ! TEMPLATE_ID_EXPR may be NULL_TREE, a TREE_LIST, or a TREE_VEC. ! * search.c (marked_pushdecls_p): Don't descend into ! TEMPLATE_TYPE_PARMs and the like. ! (unmarked_pushdecls_p): Likewise. ! ! * call.c (build_over_call): Don't throw away ! initializations/copies of empty classes; use MODIFY_EXPR and ! INIT_EXPR as for non-empty classes. ! * class.c (finish_struct_1): Put the padding byte for an empty ! class on the TYPE_NONCOPIED_PARTS list for the class. ! ! 1999-05-16 Mark Mitchell ! ! * decl2.c (build_expr_from_tree): Handle COMPONENT_REFs that ! indicate a reference to a field that is a qualified name. ! ! 1999-05-16 Jason Merrill ! ! * decl2.c (finish_objects): Don't use .?tors.* if we don't have ! ASM_OUTPUT_CONSTRUCTOR. ! ! * friend.c (do_friend): Add attrlist arg. Remove support for ! getting a non-decl as 'decl'. ! * decl.c (grokfndecl): Remove attrlist arg. Don't set attrs or ! rtl. ! (grokdeclarator): Adjust. ! * cp-tree.h: Adjust. ! ! 1999-05-16 Mark Mitchell ! ! * cp-tree.h (permanent_p): New function. ! * init.c (build_new_1): Use mapcar, not copy_node, to copy a ! possibly complex tree node. ! * tree.c (mapcar): Adjust comments, and follow coding standards in ! conditional. ! (permanent_p): New function. ! ! 1999-05-13 Per Bothner ! ! * class.c (push_lang_context): Turn off DECL_IGNORED_P for ! primitive Java types, if we actually see `extern "Java"'. ! ! 1999-05-10 18:21 -0400 Zack Weinberg ! ! * lang-specs.h: Pass -$ to the preprocessor. ! ! 1999-05-10 Jason Merrill ! ! * init.c (build_offset_ref): Wrap baselinks in OFFSET_REF, too. ! Don't bother wrapping an OFFSET_TYPE around unknown_type_node. ! (resolve_offset_ref): Don't handle a raw baselink. ! * cvt.c (build_expr_type_conversion): Likewise. ! * typeck.c (decay_conversion, build_c_cast, convert_for_assignment, ! convert_for_initialization): Likewise. ! * class.c (instantiate_type): Handle seeing a baselink under an ! OFFSET_REF. ! * error.c (dump_expr): Likewise. ! * pt.c (for_each_template_parm): Likewise. ! (resolve_overloaded_unification): Likewise. ! * tree.c (is_overloaded_fn, really_overloaded_fn): Likewise. ! * typeck.c (expr_sizeof): Also complain about other permutations ! of overloaded functions. ! ! 1999-05-07 Jason Merrill ! ! * init.c (resolve_offset_ref): Don't return a raw method. ! Use BASELINK_P. ! * typeck.c (decay_conversion): Don't handle a raw method. ! Resolve all OFFSET_REFs. ! (get_member_function_from_ptrfunc): 0 is a valid vtable index. ! (build_binary_op_nodefault): Handle resolving overloaded fns. Use ! same_type_p for pmf bits. Don't use build_binary_op to compare ! raw pointers to methods. ! (convert_for_assignment): Check for OFFSET_REF, not OFFSET_TYPE, ! to decide when to call resolve_offset_ref. ! (build_c_cast, convert_for_initialization): Likewise. ! * cvt.c (build_expr_type_conversion): Likewise. ! ! 1999-05-06 Nathan Sidwell ! ! * call.c (build_new_method_call): Use TYPE_MAIN_VARIANT of class. ! ! 1999-05-05 Mark Mitchell ! ! * decl2.c (start_objects): Don't let static constructors and ! destructors get inlined. ! ! * parse.y (nested_name_specifier): Make sure ordinary types are ! complete, just like template types. ! * parse.c: Regenerated. ! ! * pt.c (check_explicit_specialization): Improve error messages. ! ! 1999-05-04 Martin von Löwis ! ! * typeck.c (string_conv_p): Use same_type_p to check whether we ! try to convert between char and wchar_t. ! ! 1999-05-03 Mark Mitchell ! ! * search.c (lookup_field_r): Set the TREE_TYPE of an ambiguous ! lookup to error_mark_node here. ! (lookup_member): Revise documentation. Add comments. Don't set ! the TREE_TYPE to error_mark_node here, and don't build up an extra ! TREE_LIST for ambiguous lookups. ! (setup_class_bindings): Adjust accordingly. ! (push_class_decls): Revise out-of-date comments. ! ! * typeck.c (build_const_cast): Tighten checks for legality. ! ! 1999-05-02 Martin von Löwis ! ! * init.c (build_member_call): Lookup names coming from ! namespace-scoped LOOKUP_EXPR. ! ! 1999-05-03 Jim Blandy ! ! * gxxint.texi: Add documentation for 'I'. ! ! 1999-05-02 Martin von Löwis ! ! * tinfo.cc (operator==): Qualify type_info with std::. ! ! 1999-05-02 Mark Mitchell ! ! * cp-tree.h (lang_decl_flags): Remove comdat. Updated dummy. ! (DECL_COMDAT): Remove definition. ! ! 1999-05-01 Mark Mitchell ! ! * decl.c (wrapup_globals_for_namespace): Fix thinko in previous ! change. ! ! 1999-04-30 Mark Mitchell ! ! * class.c (build_vtable): Use build_lang_decl when building ! vtables, not just build_decl. ! (prepare_fresh_vtable): Likewise. ! * decl.c (wrapup_globals_for_namespace): Mark vtables as ! DECL_EXTERNAL when calling wrapup_global_declarations. ! * decl2.c (priority_info_s): Add initializations_p and ! destructions_p members. ! (finish_vtable_vardecl): Use TREE_SYMBOL_REFERENCED, not TREE_USED, ! when deciding what vtables to write out. ! (ssdf_decls): New variable. ! (ssdf_decls_used): Likewise. ! (start_static_storage_duration_function): Deal with being called ! multiple times. Avoid inlining this function. ! (generate_inits_for_priority): Deal with reuse of priority map. ! (get_priority_info): Clear initializations_p and destructions_p. ! (do_static_initialization): Tweak comment. ! (do_static_destruction): Likewise. Fix condition on sentries for ! destruction. ! (generate_ctor_or_dtor_function): Call all of the static storage ! duration functions. ! (generate_ctor_or_dtor_function_for_priority): Check ! initializations_p and destructions_p to see what priorities need ! initialization functions. ! (finish_file): Rework to generate multiple static storage duration ! functions, rather than just one. ! ! * typeck.c (build_const_cast): Tweak last change to handle ! templates correctly. ! ! * typeck.c (build_const_cast): Disallow use of const_cast to ! anything but a pointer or reference type. ! ! 1999-04-30 Nathan Sidwell ! ! * decl.c (cp_finish_decl): Don't permit arrays of abstract or ! signature type. ! ! 1999-04-29 Mark Mitchell ! ! * decl2.c (do_static_destruction): Remove obsolete FIXME comment. ! (finish_file): Indent comments properly. ! ! 1999-04-29 Richard Henderson ! ! * decl2.c (do_static_initialization): Call do_pending_stack_adjust. ! (do_static_destruction): Likewise. ! ! 1999-04-29 Nathan Sidwell ! ! * cp-tree.h (TYPE_NOTHROW_P): New macro. ! * decl2.c (delete_sanity): Warn on deleting void *. ! * init.c (build_new_1): Use TYPE_NOTHROW_P. ! * typeck.c (c_expand_return): cp_pedwarn on returning NULL from ! throwing operator new. ! ! 1999-04-28 Nathan Sidwell ! ! * cp-tree.h (build_component_addr): Remove prototype. ! * typeck.c (build_component_addr): Make static. Remove MSG ! argument. ! (build_component_addr): Remove MSG parameter, clean up ! comment. ! (build_x_function_call): Use cp_error. ! (build_unary_op): Adjust call of build_component_addr. ! ! 1999-04-28 Mark Mitchell ! ! * pt.c (tsubst_friend_class): Check for NULL. ! ! Wed Apr 28 11:42:22 1999 Andreas Schwab ! ! * search.c (binfo_for_vtable): Initialize bfvi.var. ! ! 1999-04-27 Nathan Sidwell ! ! * rtti.c (build_x_typeid): Check rtti is enabled. ! ! 1999-04-26 Mark Mitchell ! ! * search.c (is_subobject_of_p): Make sure we're looking at the ! right baseclasses. ! ! 1999-04-26 Marc Espie ! ! * Make-lang.in (cplib2.ready): Don't depend on phony targets. ! ! 1999-04-23 Mark Mitchell ! ! * decl2.c (finish_file): Tweak handling of extern inlines so that ! they are not unnecessarily put out. ! ! * search.c (is_subobject_of_p): Handle TEMPLATE_TYPE_PARMs and ! such as base classes. ! ! 1999-04-22 Brendan Kehoe ! ! * tree.c (build_exception_variant): Fix typo: use the chain of U, ! not trying V, while cycling through U. ! ! 1999-04-22 Mark Mitchell ! ! * cp-tree.h (lang_decl_flags): Remove returns_first_arg and ! preserves_first_arg. Enlarge dummy accordingly. ! (DECL_TINFO_FN_P): New macro. ! (SET_DECL_TINFO_FN_P): Likeiwse. ! (DECL_RETURNS_FIRST_ARG): Remove. ! (DECL_PRESERVES_THIS): Likewise. ! (DECL_INIT_PRIORITY): New macro. ! (finish_struct_1): Change prototype. ! (cat_namespace_levels): Remove prototype. ! (vtable_decl_p): New prototype. ! (vtype_decl_p): Likewise. ! (sigtable_decl_p): Likewise. ! (walk_globals_pred): New typedef. ! (walk_globals_fn): Likewise. ! (walk_globals): New prototype. ! (walk_namespaces_fn): New typedef. ! (walk_namespaces): New prototype. ! (wrapup_globals_for_namespace): Likewise. ! (walk_vtables): Remove prototype. ! (walk_sigtables): Likewise. ! (instantiate_pending_templates): New prototype. ! * class.c (finish_struct_1): Don't return a value. ! * decl.h (pending_statics): Remove declaration. ! * decl.c (walk_namespaces_r): New function. ! (walk_globals_r): Likewise. ! (vtable_decl_p): Likewise. ! (vtype_decl_p): Likewise. ! (sigtable_decl_p): Likewise. ! (walk_namespaces): Likewise. ! (walk_globals_data): New type. ! (walk_globals): New function. ! (wrapup_globals_for_namespace): Likewise. ! (expand_static_init): Remove assertion. Remove redundancy in ! conditional. Don't put static data members in static_aggregates ! Tidy. ! (finish_function): Remove redundancy in conditional. Don't set ! DECL_RETURNS_FIRST_ARG. ! (cat_namespace_levels): Remove. ! * decl2.c: Include splay-tree.h and varray.h. ! (priority_info_s): New structure. ! (finish_vtable_vardecl): Change prototype. Adjust for new calling ! conventions. ! (prune_vtable_vardecl): Likewise. ! (finish_sigtable_vardecl): Likewise. ! (setup_initp): Remove. ! (do_dtors): Remove. ! (do_ctors): Remove. ! (start_static_storage_duration_function): New function. ! (generate_inits_for_priority): Likewise. ! (finish_static_storage_duration_function): Likewise. ! (get_priority_info): Likewise. ! (do_static_initialization): Likewise. ! (do_static_destruction): Likewise. ! (do_static_initialization_and_destruction): Likewise. ! (generate_ctor_or_dtor_function): Likewise. ! (generate_ctor_and_dtor_functions_for_priority): Likewise. ! (pending_statics): Make it a varray. ! (pending_statics_used): New variable. ! (saved_inlines): Make it a varray. ! (saved_inlines_used): New variable. ! (finish_static_data_member): Change method of updating ! pending_statics. ! (mark_inline_for_output): Remove #if 0'd code. Change method of ! updating saved_inlines. ! (walk_vtables): Remove. ! (walk_sigtables): Likewise. ! (import_export_decl): Use DECL_TINFO_FN_P. ! (pending_templates): Remove declaration. ! (maybe_templates): Likewise. ! (static_aggregates_initp): Likewise. ! (setup_initp): Likewise. ! (finish_objects): Simplify. ! (INITIALIZE_P_IDENTIFIER): New macro. ! (PRIORITY_IDENTIFIER): New macro. ! (SSDF_IDENTIFIER): New macro. ! (initialize_p_decl): New variable. ! (priority_decl): Likewise. ! (ssdf_decl): Likewise. ! (priority_info_map): Likewise. ! (finish_file): Recode output of static intializers and other ! file-scope finalization tasks. ! * error.c (OB_END_TEMPLATE_ID): New macro. ! (dump_type_real): Use it. ! (dump_decl): Likewise. ! (dump_function_name): Likewise. ! * lex.c (set_typedecl_interface_info): Adjust for new walk_globals ! interface. ! (check_newline): Use walk_globals, not walk_vtables. ! * pt.c (pending_tempalte_expansions): Remove. ! (set_vardecl_interface_info): Likewise. ! (pending_templates): Make static. ! (maybe_templates): Likewise. ! (instantiate_class_template): Adjust call to finish_struct_1. ! (instantiate_pending_templates): New function. ! * rtti.c (get_tinfo_fn): Use SET_DECL_TINFO_FN_P. ! * tree.c (static_aggregates_initp): Remove. ! (cp_valid_lang_attribute): Don't use it; use DECL_INIT_PRIORITY ! instead. ! * Makefile.in (decl2.o): Depend on varray.h and splay-tree.h. ! ! * gxx.gperf (RETURN): Rename to RETURN_KEYWORD to avoid clashes ! with the RTL code RETURN. ! * hash.h: Regenerated. ! * lex.c (reinit_parse_for_block): Use RETURN_KEYWORD. ! * parse.y: Replace RETURN with RETURN_KEYWORD throughout. ! * parse.c: Regenerated. ! * pt.c: Include varray.h. Include rtl.h since varray.h requires ! it. ! (inline_parm_levels): New variable. ! (inline_parm_levels_used): Likewise. ! (maybe_begin_member_template_processing): Update them. ! (maybe_end_member_template_processing): Use them, rather than ! guessing how many levels to pop. ! ! * decl.c (make_typename_type): Tighten error-checking. ! ! 1999-04-20 Mark Mitchell ! ! * cp-tree.h (build_binary_op): Remove unneeded parameter. ! * class.c (build_vrable_entry_ref): Adjust call to ! build_binary_op. ! * decl.c (expand_static_init): Likewise. ! (grokdeclarator): Likewise. ! (finish_function): Likewise. ! * decl2.c (delete_sanity): Likewise. ! (do_dtors): Likewise. ! (do_ctors): Likewise. ! * error.c (dump_type_suffix): Likewise. ! * expr.c (cplus_expand_expr): Likewise. ! * init.c (resolve_offset_ref): Likewise. ! (build_new): Likewise. ! (build_new_1): Likewise. ! (build_vec_delete_1): Likewise. ! (expand_vec_init_catch_clause): Likewise. ! (build_delete): Likewise. ! * pt.c (tsubst): Likewise. ! * rtti.c (synthesize_tinfo_fn): Likewise. ! * search.c (expand_upcast_fixups): Likewise. ! (expand_direct_vtbls_init): Likewise. ! * typeck.c (get_member_function_from_ptrfunc): Likewise. ! (build_binary_op_nodefault): Likewise. ! (point_int_sum): Likewise. ! (pointer_diff): Likewise. ! (build_unary_op): Likewise. ! (build_modify_expr): Likewise. ! (get_delta_difference): Likewise. ! (build_ptrmemfunc): Likewise. ! (expand_ptrmemfunc_cst): Likewise. ! ! 1999-04-20 Jason Merrill ! ! * decl.c (grokfndecl): Always call cplus_decl_attributes. ! * decl2.c (grokfield): Pass attrlist to grokdeclarator. ! ! 1999-04-19 Mark Mitchell ! ! * cp-tree.h (finish_static_data_member_decl): New function. ! * decl2.c (finish_static_data_member_decl): Split out from ... ! (grokfield): Here. ! * pt.c (instantiate_class_template): Use it here instead of ! trying to fake it. ! (tsubst_decl): Don't set DECL_ASSEMBLER_NAME; ! finish_static_data_member_decl will do that. Explicit set ! DECL_EXTERNAL to match non-template processing. ! ! 1999-04-18 Mark Mitchell ! ! * cp-tree.h (finish_class_definition): Add parameter. ! * parse.y (structsp): Use it. Don't call pop_scope here. ! * parse.c: Regenerated. ! * semantics.c (finish_class_definition): Pop it here. ! ! 1999-04-17 Mark Mitchell ! ! * decl.c (xref_tag): Revise handling of nested template ! declarations. ! * pt.c (check_explicit_specialization): Tweak handling of friend ! templates in template classes. ! (tsubst_friend_class): Handle friend declarations for nested ! member template classes. ! ! 1999-04-16 Mark Mitchell ! ! * class.c (finish_struct): Remove unused variable. ! (pushclass): Likewise. ! (invalidate_class_lookup_cache): Likewise. ! * cp-tree.def (TYPENAME_TYPE): Improve documentation. ! * decl.c (build_typename_type): Make sure TYPENAME_TYPE_FULLNAME ! doesn't get obliterated. ! (make_typename_type): Handle template classes correctly. ! ! * cp-tree.h (TREE_NONLOCAL_FLAG): Remove. ! (storetags): Declare. ! * class.c (finish_struct): Don't use TREE_NONLOCAL_FLAG. ! (pushclass): Likewise. Use storetags to install tag declarations, ! not pushtag. ! (invalidate_class_lookup_cache): Don't use TREE_NONLOCAL_FLAG. ! * decl.c (storetags): Make it global. ! (push_class_binding): Set INHERITED_VALUE_BINDING_P for an ! implicit typename declaration. ! (pushtag): Tidy. Don't use TREE_NONLOCAL_FLAG. ! * method.c (hack_identifier): Likewise. ! * search.c (lookup_member): Likewise. ! ! * decl.c (warn_about_implicit_typename_lookup): New function. ! (lookup_name_real): Use it. Rework handling of implicit typename ! extension. ! ! 1999-04-15 Mark Mitchell ! ! * cp-tree.h (lookup_nested_field): Remove. ! * class.c (push_nested_class): Handle UNION_TYPEs. ! (pop_nested_class): Likewise. ! * decl.c (lookup_name_real): Don't call lookup_nested_field. ! (start_decl): Use push_nested_class, not just pushclass. ! (cp_finish_decl): Use pop_nested_class, not just popclass. ! * search.c (lookup_nested_field): Remove. ! ! * cp-tree.h (lang_type): Add documentation. ! * decl2.c (handle_class_head): Create template declarations here, ! as appropriate. ! * parse.y (class_head): Return whether or not we entered a new ! scope, as well as the type named. ! (named_class_head): Likewise. ! (named_complex_class_head_sans_basetype): Likewise. ! (structsp): Adjust accordingly. Pop scope when required. ! * parse.c: Regenerated. ! * pt.c (check_default_tmpl_args): Robustify. ! (redeclare_class_template): Likewise. ! (instantiate_class_template): An instantiation of an ! anonymous union is itself an anonymous union. ! * semantics.c (begin_class_definition): Don't create template ! declarations here. ! ! 1999-04-15 Jason Merrill ! ! * parse.y (after_type_declarator_intern): New nonterminal. ! (after_type_declarator): Use it. ! (direct_after_type_declarator): Likewise. Move above ! nonnested_type to fix reduce/reduce conflict resolution. ! (declmods): Reducing from just 'attributes' has EMPTY precedence. ! * Makefile.in (CONFLICTS): Update. ! ! * decl.c (define_label): Downgrade error for jumping over a ! non-POD decl to pedwarn. ! ! 1999-04-14 Mark Mitchell ! ! * cp-tree.h (popclass): Change declaration. ! (pop_nested_class): Likewise. ! (poplevel_class): Remove declaration. ! * call.c (convert_default_argument): Pass no arguments to ! popclass. ! * class.c (finish_struct_1): Likewise. ! (finish_struct): Likewise. ! (popclass): Remove argument. Simplify code accordingly. ! (pop_nested_class): Likewise. ! * decl.c (poplevel_class): Declare it here, and make it static. ! (poplevel): Handle class scopes. ! (poplevel_class): Don't take an rgument. Simplify. ! (pop_everything): Pass no arguments to pop_nested_class. ! (cp_finish_decl): Pass no arguments to popclass. ! (grokdeclarator): Pass no arguments to pop_nested_class. ! (finish_function): Likewise. ! * decl2.c (grokfield): Likewise. ! (pop_scope): Pass no arguments to popclass. ! * lex.c (do_pending_defargs): Pass no arguments to pop_nested_class. ! * pt.c (instantiate_class_template): Move call to pushclass, and ! document. Pass no arguments to popclass. ! (regenerate_decl_from_template): Likewise. ! ! 1999-04-14 Jason Merrill ! ! * typeck.c (build_unary_op): Handle taking the address of a unique ! bound non-static member function. ! ! 1999-04-13 Martin von Loewis ! ! * lang-options.h (-Wdeprecated): New flag. ! * decl2.c (warn_deprecated): New flag. ! (lang_decode_option): Deprecated this-is-variable, ! external-templates, alt-external-templates. ! Support -Wdeprecated. ! * errfn.c (cp_deprecated): New function. ! ! 1999-04-13 Jason Merrill ! ! * decl2.c (setup_initp): Compare DECL_ASSEMBLER_NAME instead ! of the decls themselves. ! ! * pt.c (tsubst_function_type): Copy attributes over. ! ! * tree.c (cp_valid_lang_attribute): New fn. Handle init_priority ! and com_interface. ! * cp-tree.h: Add prototype. ! * decl.c (init_decl_processing): Set valid_lang_attribute. ! ! 1999-04-13 Mark Mitchell ! ! * class.c (finish_struct_1): Look at the const-ness of the field's ! type, not the TREE_READONLY-ness of the declaration. ! * method.c (synthesize_method): Likewise. ! * pt.c (tsubst_decl): Call c_apply_type_quals_to_decl when ! creating new declarations. ! ! 1999-04-13 Mike Stump ! ! * decl2.c (import_export_decl): Because vtables always reference ! virtual functions, even if they are inlined, don't allow ! -fno-implement-inlines to not emit them, instead, emit them with ! the vtable. ! * decl.c (start_function): Likewise. ! ! 1999-04-12 Jason Merrill ! ! * cp-tree.h (struct lang_type): Add com_interface. ! (CLASSTYPE_COM_INTERFACE): New macro. ! * class.c (set_rtti_entry): COM interface classes have no RTTI ! entries in their vtables; adjust. ! (add_virtual_function, finish_base_struct, skip_rtti_stuff, ! modify_one_vtable, fixup_vtable_deltas1, override_one_vtable, ! finish_struct_1): Likewise. ! * decl2.c (mark_vtable_entries): Likewise. ! * rtti.c (build_headof, get_tinfo_fn_dynamic): Likewise. ! * search.c (get_abstract_virtuals_1, get_abstract_virtuals, ! expand_upcast_fixups): Likewise. ! * tree.c (debug_binfo): Likewise. ! ! * cp-tree.h (COMPARE_NO_ATTRIBUTES): New macro. ! * typeck.c (comptypes): If we get it, ignore attributes. ! * class.c (instantiate_type): Use BASELINK_P. Change complain ! parameter to flags; 2 means ignore attributes. ! * call.c (build_op_delete_call): Pass it. ! ! * decl.c (xref_tag): Only complain once about using a typedef-name ! with 'struct'. Downgrade to pedwarn. ! ! * decl.c (grokdeclarator): Allow [] syntax for zero-length array. ! ! * parse.y (absdcl_intern): New nonterminal. ! (absdcl, direct_abstract_declarator): Use it. ! ! * pt.c (lookup_template_class): Look through implict typename. ! ! 1999-04-11 Mark Mitchell ! ! * friend.c (add_friend): Deal gracefully with error_mark_node. ! * method.c (build_overload_value): Handle pointers-to-members as ! template parameters. ! ! * decl.c (push_binding): Fix typo in comment. ! ! 1999-04-10 Mark Mitchell ! ! * error.c (dump_type_real): If a typename is a template-id, put ! out the template arguments. ! (dump_expr): Handle TEMPLATE_ID_EXPR. ! * pt.c (lookup_template_class): Now that full arguments are ! available everywhere, remove code that tried to guess them. ! ! 1999-04-09 Mark Mitchell ! ! * decl.c (make_typename_type): Complain if we don't find a type ! when trying to make a typename type for a non-template type. ! ! 1999-04-09 Jason Merrill ! ! * decl.c (start_decl): Pass attributes to grokdeclarator. ! (grokdeclarator): Handle attributes on constructor-syntax ! initializers. ! ! 1999-04-08 Mark Mitchell ! ! * error.c (dump_expr): Don't crash on INDIRECT_REFs whose operands ! don't have types. ! ! * search.c (template_self_reference_p): Tweak. ! ! 1999-04-07 Mark Mitchell ! ! * init.c (build_offset_ref): Don't build yet another weird data ! structure to describe overloaded functions. ! ! 1999-04-06 Mark Mitchell ! ! * cp-tree.h (BASELINK_P): New macro. ! (SET_BASELINK_P): Likewise. ! * init.c (build_member_call): Remove needless assignment in if ! statement. ! * search.c (lookup_field_r): Fix handling when we are looking ! specifically for a type; these are not hidden by functions and ! variables. ! (lookup_member): Use SET_BASELINK_P. ! * tree.c (is_overloaded_fn): Use BASELINK_P. ! (really_overloaed_fn): Likewise. ! (get_first_fn): Likewise. ! ! 1999-04-05 Mark Mitchell ! ! * decl.c (lookup_name_current_level): Tweak, and improve ! documentation. ! ! * class.c (maybe_fixup_vptrs): Remove declaration. ! (build_class_init_list): Likewise. ! * decl.c (pushdecl_class_level): Call check_template_shadow here ! ... ! (push_class_level_binding): ... not here. ! * search.c (dfs_push_type_decls): Only avoid ! template-self-reference TYPE_DECLs if they are from base classes. ! ! 1999-04-04 Mark Mitchell ! ! * pt.c (check_template_shadow): Don't treat OVERLOADs as _DECL ! nodes. Tidy. ! ! 1999-04-03 Jason Merrill ! ! * class.c (maybe_fixup_vptrs, build_class_init_list): Lose. ! (finish_struct_1): Don't call build_class_init_list. ! ! 1999-04-02 Mark Mitchell ! ! * tinfo.h (__class_type_info): Fix illegal declaration. ! ! * cp-tree.def (TEMPLATE_ID_EXPR): Update comment. ! * cp-tree.h (INHERITED_VALUE_BINDING_P): New macro. ! (IDENTIFIER_CLASS_VALUE): Improve documentation. ! (is_properly_derived_from): Declare. ! (invalidate_class_lookup_cache): Likewise. ! (maybe_maybe_note_name_used_in_class): Likewise. ! (note_name_declared_in_class): Likewise. ! (push_using_decl): Remove duplicate declaration. ! (id_in_current_class): Remove declaration. ! (push_class_binding): Change prototype. ! (clear_identitifer_class_values): Declare. ! * call.c (is_properly_derived_from): Make it global. ! (build_new_function_call): Be careful about updating candidates. ! (build_new_method_call): Handle COMPONENT_REFs. Don't crash when ! asked to make illegal calls. ! * class.c: Include splay-tree.h. ! (class_stack_node): Add names_used slot. ! (check_member_decl_is_same_in_complete_scope): Remove. ! (add_method): Fix comment. Push the declaration into class ! scope. ! (finish_struct_1): When popping the class, pop the bindings too. ! Remove check for data member/function member conflict. ! (finish_struct): Remove calls to ! check_member_decl_is_same_in_complete_scope. Change calls to ! popclass. ! (pushclass): Clear names_used in the class stack entry. ! Use invalidate_class_lookup_cache to remove cached entries, rather ! than magic values with popclass. Clear IDENTIFIER_CLASS_VALUE ! before entering a new class. Remove dead code. Don't mess with ! current_function_decl when pushing declarations. ! (invalidate_class_lookup_cache): New function, split out from ... ! (popclass): Here. Clean up names_used on our way out. ! (instantiate_type): Adjust. ! (build_self_reference): Don't push the declaration here. ! (maybe_note_name_used_in_class): New function. ! (note_name_declared_in_class): Likewise. ! * decl.c (add_binding): Change prototype. ! (find_class_binding_level): New function. ! (innermost_nonclass_level): Likewise. ! (current_binding_level): Update documentation. ! (inner_binding_level): Remove. Replace with current_binding_level ! throughout. ! (push_binding_level): Remove special handling of ! class_binding_level. ! (pop_binding_level): Likewise. Use find_class_binding_level. ! (suspend_binding_level): Likewise. ! (global_bindings_p): Use innermost_nonclass_level. ! (toplevel_bindings_p): Likewise. ! (namespace_bindings_p): Likewise. ! (pseudo_global_level_p): Likewise. ! (push_binding): Clear INHERITED_VALUE_BINDING_P. ! (add_binding): Check for illegal multiple declarations. Return a ! value indicating whether or not the new binding was legal. ! (push_local_binding): Skip over class binding levels. Check ! return value from add_binding. ! (push_class_binding): Set INHERITED_VALUE_BINDING_P. Call ! note_name_declared_in_class. ! (pushlevel_class): Remove "fake out the rest of the compiler" ! code. ! (poplevel_class): Reset IDENTIFIER_CLASS_VALUEs. ! (clear_identifier_class_values): New function. ! (pop_from_top_level): Use it. ! (pop_everything): Tweak. ! (maybe_process_template_type_declaration): Don't push the ! declaration for the template here. ! (pushtag): Don't push tag declarations into class scope here. ! (pushdecl): Apply DeMorgan's law for readability. ! (pushdecl_class_level): Remove special-case code for ! TYPE_BEING_DEFINED. Handle OVERLOADs and anonymous unions. ! (push_class_level_bindng): Deal with inherited bindings. ! (lookup_name_real): Remove special-case code for ! TYPE_BEING_DEFINED, and some implicit typename magic. ! (grokdeclarator): Handle COMPONENT_REF for a template function. ! (build_enumerator): Don't call pushdecl_class_level here. ! (id_in_current_class): Remove. ! * decl2.c (grokfield): Don't call pushdecl_class_level or ! check_template_shadow. ! * errfn.c (cp_file_of): Don't declare. ! (cp_line_of): Likewise. ! * error.c (dump_decl): Handle an OVERLOAD. ! (cp_file_of): Likewise. ! (cp_line_of): Likewise. ! * init.c (build_member_call): Handle a COMPONENT_REF. ! * lex.c (do_identifier): Call maybe_note_name_used_in_class, not ! pushdecl_class_level. ! * method.c (hack_identifier): Build COMPONENT_REFs for references ! to member templates as well as member functions. Remove dead ! code. ! * parse.y (left_curly): Remove. ! (nonnested_type): Call maybe_note_name_used_in_class, not ! pushdecl_class_level. ! * parse.c: Regenerated. ! (nested_name_specifier_1): Likewise. ! * pt.c (check_explicit_specialization): Adjust, for robustness. ! (check_template_shadow): Handle OVERLOADs. ! (build_template_decl): Set DECL_CONSTRUCTOR_P on the ! TEMPLATE_DECL, if appropriate. ! * search.c (envelope_add_decl): Remove. ! (dfs_pushdecls): Likewise. ! (dfs_compress_decls): Likewise. ! (dfs_push_decls): New function. ! (dfs_push_type_decls): Likewise. ! (setup_class_bindings): Likewise. ! (template_self_reference_p): Likewise. ! (lookup_field_r): Use it. ! (looup_member): Remove old comment. Deal with ambiguity. ! (push_class_decls): Use dfs_push_decls and dfs_push_type_decls, ! and remove envelope processing. ! * semantics.c (begin_class_definition): Let pushclass push ! declarations for base classes. ! (finish_member_declaration): Push declarations into class scope. ! * typeck.c (build_component_ref): Just put an OVERLOAD into the ! COMPONENT_REF, not a TREE_LIST of an OVERLOAD. ! (build_x_function_call): Deal with OVERLOAD. Handle template-ids. ! * Makefile.in (class.o): Depend on splay-tree.h. ! ! Wed Mar 31 11:30:43 1999 Nathan Sidwell ! ! * cvt.c (convert_pointer_to_real): Use same_type_p. ! * typeck.c (comp_target_types): Use same_type_p. ! ! 1999-03-31 Jason Merrill ! ! * semantics.c (begin_inline_definitions, ! finish_inline_definitions): Rename from finish_default_args and ! begin_inline_definitions, respectively, to something that isn't a ! total lie. :) ! * parse.y (structsp): Adjust. ! ! * tree.c (hash_tree_cons): Remove obsolete via_* parms. ! (list_hash_lookup): Likewise. ! (hash_tree_chain): Adjust. ! * pt.c (tsubst): Adjust. ! (tsubst_arg_types): Use plain hash_tree_cons. ! * cp-tree.h (hash_tree_cons_simple): Lose. ! * parse.y (declmods, nonempty_cv_qualifiers): Use hash_tree_cons. ! ! Wed Mar 31 10:48:29 1999 Kaveh R. Ghazi ! ! * Makefile.in (hash.h): Generate using gperf language 'C', not ! 'KR-C', so gperf uses the `const' keyword on strings. ! ! * gxx.gperf (resword): Const-ify a char*. ! ! 1999-03-30 Jason Merrill ! ! * cp-tree.h (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST, ! CLASSTYPE_BASELINK_VEC, CLASSTYPE_N_SUPERCLASSES, ! CLASSTYPE_N_BASECLASSES, CLASSTYPE_MAX_DEPTH, ! CLASSTYPE_BASE_INIT_LIST, CLASSTYPE_AS_LIST, CLASSTYPE_ID_AS_LIST, ! CLASSTYPE_BINFO_AS_LIST): Remove cruft. ! * class.c, lex.c, parse.y, ptree.c, search.c, semantics.c, ! tree.c: Adjust. ! ! 1999-03-29 Jason Merrill ! ! * decl2.c (lang_decode_option): Remove -Wsign-promo from -Wall. ! ! 1999-03-28 Jason Merrill ! ! * pt.c (fn_type_unification): Ignore 'this' parm from conversion ops. ! ! 1999-03-27 Mark Mitchell ! ! * cp-tree.h (add_friend): Declare. ! (add_friends): Likewise. ! * friend.c (add_friend): Make it global. Don't add to ! DECL_BEFRIENDING_CLASSES if the befriending class is a template. ! (add_friends): Make it global. ! (make_friend_class): Don't add to DECL_BEFRIENDING_CLASSES if the ! befriending class is a template. ! * parse.y (component_decl_1): Fix typo in comment. ! * parse.c: Regenerated. ! * pt.c (instantiate_class_template): Use add_friend and ! add_friends rather that duplicating some of their functionality ! here. ! ! 1999-03-27 Jason Merrill ! ! * call.c (build_field_call): Unify 'this' and non-'this' cases. ! ! * typeck.c (build_indirect_ref): Check for 'this' sooner. ! ! Fri Mar 26 10:20:34 1999 Kaveh R. Ghazi ! ! * call.c (op_error): Const-ify a char*. ! (add_candidate, source_type, add_warning): Add static prototype. ! (print_z_candidates): Const-ify a char*. ! ! * class.c (resolve_address_of_overloaded_function, ! fixed_type_or_null, build_vtable_entry_ref): Add static prototype. ! (get_vtable_name, finish_struct_1): Const-ify a char*. ! ! * cvt.c (convert_to_reference): Likewise. ! ! * decl.c (redeclaration_error_message, record_builtin_type, ! record_unknown_type, member_function_or_else, bad_specifiers): ! Likewise. ! (find_binding, select_decl, unqualified_namespace_lookup, ! lookup_flags, qualify_lookup, record_builtin_java_type, tag_name): ! Add static prototype. ! (warn_extern_redeclared_static, duplicate_decls, pushdecl, ! implicitly_declare, record_builtin_java_type, define_function, ! grok_op_properties, tag_name): Const-ify a char*. ! ! * cp-tree.h (FORMAT_VBASE_NAME): Allow parameter `BUF' to be const. ! (define_function, finish_builtin_type): Const-ify a char*. ! (cp_error, cp_error_at, cp_warning, cp_warning_at, cp_pedwarn, ! cp_pedwarn_at, cp_compiler_error, cp_sprintf): Add prototype args. ! (file_name_nondirectory): Const-ify a char*. ! (init_filename_times): Don't prototype. ! (compiler_error): Prototype. ! (yyerror, init_repo): Const-ify a char*. ! (build_srcloc): Don't prototype. ! (build_x_indirect_ref, build_indirect_ref, build_component_addr): ! Const-ify a char*. ! (warn_for_assignment): Don't prototype. ! (convert_for_initialization, readonly_error, check_for_new_type, ! GNU_xref_begin, GNU_xref_file, GNU_xref_ref, GNU_xref_call): ! Const-ify a char*. ! ! * decl2.c (acceptable_java_type, output_vtable_inherit, ! setup_initp, start_objects, finish_objects, do_dtors, do_ctors, ! merge_functions, decl_namespace, validate_nonmember_using_decl, ! do_nonmember_using_decl): Add static prototype. ! (lang_f_options): Const-ify a char*. ! (finish_builtin_type): Likewise. ! (add_function, arg_assoc_namespace, arg_assoc_class): Add static ! prototype. ! ! * errfn.c: Include cp-tree.h. ! (cp_thing): Add static prototype. ! (compiler_error): Don't protoptype. ! (cp_compiler_error): Cast `compiler_error' to `errorfn' before ! passing it to `cp_thing'. ! ! * error.c (interesting_scope_p): Add static prototype. ! ! * except.c (build_eh_type_type, build_eh_type_type_ref): Const-ify ! a char*. ! ! * init.c (compiler_error): Don't prototype. ! (member_init_ok_or_else): Const-ify a char*. ! (build_java_class_ref): Add static prototype. ! ! * lex.c (compiler_error): Don't prototype. ! (get_time_identifier, interface_strcmp, extend_token_buffer, ! handle_cp_pragma): Const-ify a char*. ! (is_global, init_filename_times): Add static prototype. ! (file_name_nondirectory, cplus_tree_code_name): Const-ify a char*. ! (compiler_error): Change from fixed args to variable args. ! (yyerror): Const-ify a char*. ! ! * parse.y (cond_stmt_keyword): Const-ify a char*. ! (parse_decl): Add static prototype. ! ! * pt.c (template_args_equal, print_template_context): Likewise. ! (print_candidates, check_default_tmpl_args): Const-ify a char*. ! (instantiate_class_template): Likewise. ! ! * repo.c (get_base_filename, open_repo_file, init_repo): Likewise. ! ! * rtti.c (call_void_fn, expand_generic_desc, expand_si_desc, ! expand_class_desc, expand_ptr_desc, expand_attr_desc): Likewise. ! ! * search.c (lookup_field_info, lookup_member): Likewise. ! (lookup_member): Cast the first argument of `bzero' to a PTR. ! ! * sig.c (compiler_error): Don't prototype. ! (build_signature_pointer_or_reference_nam): Const-ify a char*. ! (get_sigtable_name, build_member_function_pointer): Likewise. ! ! * tree.c (compiler_error): Don't prototype. ! (no_linkage_helper, build_srcloc): Add static prototype. ! (build_vbase_pointer_fields): Const-ify a char*. ! (__eprintf): Don't unnecessarily handle `const' when !__STDC__. ! ! * typeck.c (compiler_error): Don't prototype. ! (convert_for_assignment): Const-ify a char*. ! (comp_cv_target_types): Add static prototype. ! (build_x_indirect_ref, build_indirect_ref, convert_arguments, ! build_component_addr, build_unary_op, convert_for_initialization): ! Const-ify a char*. ! ! * typeck2.c (ack): Add static prototype and change from fixed args ! to variable args. ! (readonly_error, check_for_new_type): Const-ify a char*. ! ! * xref.c (_XREF_FILE, find_file, filename, fctname, declname, ! fixname, open_xref_file, classname, GNU_xref_begin): Likewise. ! (GNU_xref_file): Likewise. Also use `xmalloc' instead of `malloc'. ! (GNU_xref_end_scope, GNU_xref_ref, GNU_xref_decl, GNU_xref_call, ! gen_assign, GNU_xref_member): Const-ify a char*. ! ! 1999-03-25 Martin von Löwis ! ! * gxxint.texi: Remove old discussion on copying virtual bases. ! ! 1999-03-25 Zack Weinberg ! ! * Make-lang.in: Remove all references to g++.o/g++.c. ! Link g++ from gcc.o. ! ! 1999-03-25 Jason Merrill ! ! * decl2.c (comdat_linkage): Treat vtables like functions. ! ! 1999-03-25 Mark Mitchell ! ! * pt.c (tsubst_decl): tsubst into DECL_BEFRIENDING_CLASSES. ! ! 1999-03-25 Nathan Sidwell ! ! * decl.c (init_decl_processing): Add `signed' type as a synonym ! for `int'. ! ! 1999-03-25 Jason Merrill ! ! * typeck.c (common_type): Handle cv-qual unification for pointers ! to members. ! ! * decl.c (unqualified_namespace_lookup): Return error_mark_node ! on error. ! (lookup_name_real): Set LOOKUP_COMPLAIN when *not* parsing. ! * lex.c (do_identifier): If we got error_mark_node, call ! lookup_name again. ! ! 1999-03-24 Martin von Löwis ! ! * class.c (finish_struct_1): Always reset TYPE_FIELDS for empty ! classes. ! ! 1999-03-24 Jason Merrill ! ! * decl.c (lookup_name_real): Do nested field lookup regardless of ! TYPE_BEING_DEFINED. ! ! 1999-03-24 Mark Mitchell ! ! * cp-tree.h (lang_type): Remove has_assignment and ! has_real_assignment. Add befriending_classes. ! (TYPE_HAS_ASSIGNMENT): Remove. ! (TYPE_HAS_REAL_ASSIGNMENT): Likewise. ! (CLASSTYPE_BEFRIENDING_CLASSES): New macro. ! (lang_decl): Document. ! (DECL_BEFRIENDING_CLASSES): New macro. ! (FRIEND_NAME): Move declaration to more obvious location. ! (FRIEND_DECLS): Likewise. ! * class.c (finish_struct_1): Don't use TYPE_HAS_REAL_ASSIGNMENT. ! * decl.c (duplicate_decls): Copy DECL_BEFRIENDING_CLASSES. ! (fixup_anonymous_union): Don't use TYPE_HAS_ASSIGNMENT. ! (grok_op_properties): Likewise. ! * friend.c (is_friend): Use FRIEND_NAME and FRIEND_DECLS. ! (add_friend): Likewise. Don't do weird things with assignment ! operators. Update DECL_BEFRIENDING_CLASSES. ! (add_friends): Don't do weird things with assignment operators. ! (make_friend_class): Likewise. Update ! CLASSTYPE_BEFRIENDING_CLASSES. ! * pt.c (instantiate_class_template): Don't set ! TYPE_HAS_ASSIGNMENT. ! (tsubst_copy): Substitute the TREE_TYPE for more unary ! expressions. ! * ptree.c (print_lang_type): Don't look at TYPE_HAS_ASSIGNMENT. ! * search.c (protected_accessible_p): New function. ! (friend_accessible_p): Likewise. ! (accessible_p): Use them. ! ! 1999-03-23 Mark Mitchell ! ! * pt.c (convert_nontype_argument): Don't create things that aren't ! PTRMEM_CSTs when applying a qualification conversion to a ! PTRMEM_CST. ! ! 1999-03-23 Mark Mitchell ! ! * Makefile.in (OBJS): Don't mention hash.o. ! (OBJDEPS): Likewise. ! ! 1999-03-23 Jason Merrill ! ! * decl2.c (finish_file): Set at_eof to 2 after expanding ctors. ! * decl.c (expand_static_init): Make sure we don't add any after ! then. ! ! * decl.c (cp_finish_decl): Move intelligence about handling ! DECL_COMDAT for variables from here... ! * decl2.c (comdat_linkage): ...to here. ! (maybe_make_one_only): Tweak. ! (import_export_decl): Call comdat_linkage for variables, too. ! (finish_file): Handle template statics properly. ! ! 1999-03-22 Mark Mitchell ! ! * cp-tree.h (TYPE_PTRMEMFUNC_P): Use TYPE_PTRMEMFUNC_FLAG. ! Document internals of pointer-to-member-functions. ! (DELTA2_FROM_PTRMEMFUNC): Make it call delta2_from_ptrmemfunc. ! (PFN_FROM_PTRMEMFUNC): Likewise. ! (build_type_conversion): Remove unused parameter. ! (build_ptrmemfunc1): Declare. ! (expand_ptrmemfunc_cst): New function. ! (delta2_from_ptrmemfunc): Likewise. ! (pfn_from_ptrmemfunc): Likewise. ! * cvt.c (cp_convert_to_pointer): Remove unused parameter to ! build_type_conversion. Use TYPE_PTRMEM_P for readability. ! (convert_to_reference): Remove unused parameter to ! build_type_conversion. ! (ocp_convert): Likewise. ! (build_user_type_conversion): Likewise. ! * error.c (dump_expr): Handle NULL pointer-to-member functions. ! * expr.c (cplus_expand_expr): Handle PTRMEM_CSTs for functions. ! * method.c (build_overload_value): Don't go splitting CONSTRUCTORs ! open when handling pointer-to-member functions. ! * pt.c (convert_nontype_argument): Clean up error messages. Be ! more stringent with pointers-to-members. ! * typeck.c (build_ptrmemfunc1): Don't declare. Make it global. ! (build_unary_op): Tidy ever-so-slightly. ! (build_conditional_expr): Remove extra parameter to ! build_type_conversion. ! (build_ptrmemfunc): Build PTRMEM_CSTs if we know what function ! we're using. ! (expand_ptrmemfunc_cst): Define. ! (delta2_from_ptrmemfunc): Likewise. ! (pfn_from_ptrmemfunc): Likewise. ! ! 1999-03-19 Mark Mitchell ! ! * init.c (build_member_call): Handle template-id expressions ! correctly. ! * typeck.c (build_x_function_call): Likewise. ! ! 1999-03-19 Chip Salzenberg ! ! * friend.c (make_friend_class): Avoid core dump when ! not-yet-defined friend type lacks TYPE_LANG_SPECIFIC(). ! ! 1999-03-18 Jason Merrill ! ! * decl.c (start_function): Suppress normal linkage heuristics ! for #pragma interface under MULTIPLE_SYMBOL_SPACES. ! ! 1999-03-19 Alexandre Oliva ! ! * Make-lang.in: ($(INTL_TARGETS)): Depend on cp/parse.c. ! ($(srcdir)/cp/parse.c): Moved from ../Makefile.in. ! ! 1999-03-17 Martin von Löwis ! ! * parse.y (named_complex_class_head_sans_basetype): ! Do not push a scope for error_mark_node. ! (maybe_base_class_list): Likewise. ! ! * decl.c (start_decl): Check for error_mark_node as a type. ! Detected by g++.brendan/array-refs.C. ! (start_decl_1): Likewise. Detected by g++.bugs/900322_01.C. ! (maybe_build_cleanup_1): Likewise. Detected by ! g++.jason/incomplete1.C. ! ! * tree.c (build_dummy_object): Use void_zero_node instead of the ! error_mark_node. ! (is_dummy_object): Check for such a node. ! Detected by g++.bob/inherit1.C ! ! 1999-03-16 Jason Merrill ! ! * method.c (old_backref_index): Split out... ! (flush_repeats): From here. Rename back from try_old_backref. ! (build_mangled_name): Put back some old-style repeat handling. ! ! Mon Mar 15 21:57:16 1999 Kaveh R. Ghazi ! ! * lex.c: Don't include setjmp.h. ! (parse_float): New static function. ! (pf_args): New struct. ! (real_yylex): Use them in call to `do_float_handler'. ! ! 1999-03-15 Mark Mitchell ! ! * decl.c (xref_basetypes): Set CLASSTYPE_VBASECLASSES here. ! * tree.c (layout_basetypes): Not here. ! * search.c (dfs_search): Remove; no longer used. ! ! 1999-03-12 Mark Mitchell ! ! * decl2.c (validate_nonmember_using_decl): Issue sensible ! error-messages on bogus qualifiers. ! ! 1999-03-14 Jason Merrill ! ! * call.c (add_function_candidate): Fix uninitialized variable. ! ! * Makefile.in (search.o): Add dependency on varray.h. ! ! 1999-03-13 Jason Merrill ! ! * decl.c (duplicate_decls): Use same_type_p. ! * method.c (try_old_backref): Renamed from flush_repeats. Use ! same_type_p. Don't try to handle repeats. Return success. ! (is_back_referenceable_type): Return 0 if TYPE_FOR_JAVA. Support ! calls from old-style code, too. ! (check_ktype): Use same_type_p. ! (check_btype): Use same_type_p. Don't pull out TYPE_MAIN_VARIANT. ! (build_qualified_name): Simplify logic. ! (process_overload_item): Strip typedefs and quals at the top. ! (build_mangled_name_for_type_with_Gcode): Remove call to ! type_canonical_variant. ! (build_mangled_name): Likewise. Remove support for old-style ! repeats, which have been disabled since 2.7.2. Don't mess with ! TREE_USED. ! (build_decl_overload_real): Don't mess with TREE_USED. ! ! 1999-03-13 Nathan Sidwell ! ! * error.c (cp_printers): Add 'F' escape character. ! (dump_type_real): Remove TREE_LIST (fnargs) printing. ! Functionality moved to dump_parameters. ! (dump_type_suffix): Use dump_parameters and dump_exception_spec. ! (dump_function_decl): Extend meaning of V parameter. Use ! dump_parameters and dump_exception_spec. ! (dump_parameters): New static function. ! (dump_exception_spec): New static function. ! (fndecl_as_string): Change argument semantics. Use ! dump_function_decl directly. ! ! * sig.c (build_signature_table_constructor): Use cp_error. ! ! 1999-03-13 Martin von Löwis ! ! * semantics.c (finish_switch_cond): Handle error cases gracefully. ! Detected by g++.law/enum5.C. ! ! * typeck.c (build_modify_expr): Check for errors after resolving ! offsets. Detected by g++.brendan/static1.C. ! ! * decl.c (complete_array_type): Ignore initial_value if it is an ! error. Detected by g++.benjamin/17930.C. ! ! * typeck2.c (process_init_constructor): Return error if one argument ! is in error. Detected by g++.benjamin/13478.C. ! ! 1999-03-12 Martin von Löwis ! ! * decl.c (select_decl): Allow class templates when we need types. ! * decl2.c (ambiguous_decl): Likewise. ! ! 1999-03-12 Mark Mitchell ! ! * lex.c (do_identifier): Correct call to enforce_access. ! * search.c (accessible_p): Tweak comment. ! ! 1999-03-10 Mark Mitchell ! ! * semantics.c (begin_class_definition): Call build_self_reference. ! (finish_member_declaration): Set DECL_CONTEXT for TYPE_DECLs. ! ! * search.c (assert_canonical_unmarked): Fix typo in prototype. ! ! * search.c (dfs_canonical_queue): New function. ! (dfs_assert_unmarked_p): Likewise. ! (assert_canonical_unmarked): Likewise. ! (access_in_type): Use it. ! (accessible_p): Likewise. Walk the whole tree when umarking. ! ! * sig.c (build_signature_table_constructor): Use accessible_p ! instead of compute_access. ! ! 1999-03-09 Jason Merrill ! ! * call.c (add_builtin_candidates): Handle overloaded conversion ops. ! ! 1999-03-09 Mark Mitchell ! ! * cp-tree.h (flag_access_control): Declare. ! (TREE_VIA_PPUBLIC): Document. ! (DECL_NONSTATIC_MEMBER_P): New macro. ! (enforce_access): Return an indication of whether or not access ! was permitted. ! (build_self_reference): Change prototype. ! (compute_access): Replace with ... ! (accessible_p): New function. ! (dfs_walk): Change prototype. ! (dfs_unmark): Likewise. ! (markedp): Likewise. ! * call.c (enforce_access): Use accessible_p. ! * class.c (build_self_reference): Insert the declaration into the ! list of members for this type, and make it public. ! * decl.c (xref_basetypes): Avoid ill-timed recursion. ! * init.c (build_offset_ref): Use lookup_member, not three separate ! name-lookups. Call enforce_access rather than checking for ! illegal accesses here. ! (resolve_offset_ref): Likewise. ! * lex.c (do_identifier): Likewise. ! * method.c (hack_identifier): Likewise. ! * parse.y (self_reference): Remove. ! (opt_component_decl_list): Don't use it. ! * parse.c: Regenerated. ! * pt.c (print_candidates): Generalize to handle lists of ! overloaded functions. ! (instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's ! not set. ! (get_template_base): Use new calling convention for dfs_walk. ! * search.c: Include varray.h. Add prototypes. ! (dfs_walk): Accept a data pointer to pass to the work functions. ! All callers changed. All work functions changed. ! (breadth_first_search): Rename to bfs_walk, and make consistent ! with dfs_walk. ! (dfs_walk_real): New function. ! (canonical_binfo): New function. ! (context_for_name_lookup): Likewise. ! (shared_marked_p): Likewise. ! (shared_unmarked_p): Likewise. ! (lokup_field_queue_p): Likewise. ! (lookup_field_r): Generalize to handle both functions and fields. ! (lookup_field): Just call lookup_member. ! (lookup_fnfields): Likewise. ! (lookup_member): Move body of lookup_field here and generalize. ! (dfs_accessible_queue_p): Likewise. ! (dfs_accessible_p): Likewise. ! (dfs_access_in_type): Likewise. ! (access_in_type): Likewise. ! (compute_access): Remove, and replace with ... ! (accessible_p): New function. ! (vbase_types): Remove. ! (vbase_decl_ptr_intermediate): Likewise. ! (vbase_decl_ptr): Likewise. ! (vbase_init_result): Likewise. ! (closed_envelopes): Likewise. ! (bvtable): Likewise. ! ! 1999-03-09 Jason Merrill ! ! * call.c (add_function_candidate): Check for proper number of args ! before checking the validity of those args. ! ! 1999-03-06 Jason Merrill ! ! * cp-tree.h (struct lang_type): Add anon_union field. ! (ANON_UNION_TYPE_P): Use it instead of examining type. ! (SET_ANON_UNION_TYPE_P): New macro. ! * decl.c (check_tag_decl): Use it. ! ! * search.c (compute_access): Handle non-type contexts earlier, and ! handle NULL_TREE. ! ! * tree.c (build_exception_variant): Use copy_to_permanent. ! ! * decl2.c (setup_initp): Give statics with no priority the default ! priority here. ! (do_dtors, do_ctors, finish_file): Remove special handling of ! non-prioritized statics. ! ! 1999-03-05 Mark Mitchell ! ! * cp-tree.h (ANON_UNION_TYPE_P): Robustify. ! * decl.c (make_typename_type): Don't issue an error if an ! immediate lookup fails; it migt be resolved later. ! * friend.c (is_friend): Add comment. ! * search.c (breadth_first_search): Add POSTFN and DATA ! parameters. Tidy. All callers changed. ! (lookup_field_queue_p): New function. ! (lookup_field_r): Likewise. ! (lookup_field_post): Likewise. ! (lookup_field): Use them, via breadth_first_search, instead of ! duplicating logic. ! (compute_access): Robustify. ! (lookup_fnfield_info): New structure. ! ! 1999-03-05 Jason Merrill ! ! * pt.c (tsubst, case ARRAY_REF): Use tsubst_expr again. ! ! 1999-03-03 Jason Merrill ! ! * class.c, decl2.c, method.c, pt.c: Add 'static' to make SunOS 4 ! cc happy. ! ! * decl2.c (import_export_class): Also return if ! CLASSTYPE_INTERFACE_ONLY is set. ! ! 1999-03-03 Martin von Löwis ! ! * decl.c (push_overloaded_decl): Only overwrite the old binding if ! there was one. ! * decl2.c (do_local_using_decl): Fix loop termination. ! ! 1999-03-02 Mark Mitchell ! ! * cp-tree.h (determine_specialization): Don't declare. ! * pt.c (determine_specialization): Make it static. Eliminate ! complain parameter. Note that decl is always non-NULL now, and ! simplify accordingly. ! ! * decl.c (maybe_push_to_top_level): Always call ! push_cp_function_context. ! (pop_from_top_level): Always call pop_cp_function_context. ! ! 1999-02-26 Nathan Sidwell ! ! * typeck.c (complete_type_or_else): Add VALUE arg, for helpful ! diagnostics. ! * cp-tree.h (complete_type_or_else): Added VALUE parameter. ! * init.c (build_new_1): Extra arg to complete_type_or_else. ! (build_delete): Likewise. ! * typeck.c (require_complete_type): Likewise. ! (pointer_int_sum): Likewise. ! (pointer_diff): Likewise. ! (build_component_ref): Likewise. ! ! * typeck2.c (incomplete_type_error): Always use cp_error. ! Show declaration of undefined type, if appropriate. ! Deal with UNKNOWN_TYPE nodes. ! ! * typeck.c (require_complete_type): Use TYPE_SIZE as ! size_zero_node to mean incomplete type. ! (require_complete_type_in_void): New function. ! (build_compound_expr): Call complete_type_in_void for LHS. ! (build_c_cast): Call complete_type_in_void for void cast. ! * cvt.c (ocp_convert): Call complete_type_in_void for void cast. ! * decl.c (cplus_expand_expr_stmt): Void expression checks moved to ! require_complete_type_in_void. Call it. ! * cp-tree.h (require_complete_type_in_void): Prototype new function. ! ! * typeck.c (convert_arguments): Use alternative format for ! function decls. Don't require_complete_type here. Simplify ! diagnostic printing. ! (convert_for_initialization): Don't require_complete_type on RHS yet. ! * call.c (convert_arg_to_ellipsis): Call require_complete_type. ! ! * call.c (build_over_call): Cope with qualified void return type. ! * semantics.c (finish_call_expr): Likewise. ! * typeck.c (build_function_call_real): Likewise. ! (c_expand_return): Likewise. ! * decl2.c (reparse_absdcl_as_expr): Cope with qualified void type. ! ! * call.c (print_z_candidates): Use alternate print format, to be ! consistent with (pt.c) print_candidates. ! * method.c (hack_identifier): List candidate members. ! * search.c (lookup_field): Build ambiguous list, and show it, if ! ambiguous. ! ! 1999-02-26 Mark Mitchell ! ! * typeck.c (decay_conversion): Don't confuse constant array ! variables with their initializers. ! ! * decl.c (duplicate_decls): Copy DECL_TEMPLATE_INSTANTIATED when ! merging decls. ! * pt.c (regenerate_decl_from_template): Tweak for clarity. ! (instantiate_decl): Mark a decl instantiated before regenerating ! it to avoid recursion. ! * tree.c (mapcar): Don't call decl_constant_value unless we know ! something is TREE_READONLY_DECL_P. ! ! * class.c (check_for_override): Don't stop checking when we find ! the first overridden function. Delete #if 0'd code. ! * search.c (get_matching_virtual): Likewise. ! ! 1999-02-25 Richard Henderson ! ! * lang-specs.h: Define __FAST_MATH__ when appropriate. ! ! 1999-02-24 Mike Stump ! ! * typeck.c (convert_for_assignment): Allow boolean integral constant ! expressions to convert to null pointer. ! ! 1999-02-24 Martin von Loewis ! ! * decl.c (lookup_namespace_name): Resolve namespace aliases. ! ! * class.c (push_nested_class): Allow namespaces. ! ! * decl2.c (set_decl_namespace): Add friendp parameter. ! * decl.c (grokfndecl): Pass it. ! (grokvardecl): Likewise. ! * cp-tree.h: Change declaration. ! ! 1999-02-24 Jason Merrill ! ! * pt.c (tsubst): Allow an array of explicit size zero. ! ! 1999-02-23 Jason Merrill ! ! * errfn.c: Change varargs code to look like toplev.c. ! ! * method.c (process_modifiers): Don't prepend 'U' for char or ! wchar_t. ! ! 1999-02-20 Craig Burley ! ! * Make-lang.in (cplib2.ready): Don't consider updating ! cplib2 stuff if the current directory isn't writable, as ! it won't work (such as during a `make install'). Sun Feb 21 20:38:00 1999 H.J. Lu (hjl@gnu.org) ! * decl2.c (start_objects): Make file scope constructors and ! destructors local to the file if ASM_OUTPUT_CONSTRUCTOR and ! ASM_OUTPUT_DESTRUCTOR are defined. ! ! 1999-02-19 Mark Mitchell ! ! * cp-tree.h (CLASSTYPE_METHOD_VEC): Adjust comment. ! (fn_type_unification): Adjust prototype. ! (lookup_fnfields_1): Declare. ! * call.c (add_template_candidate_real): Adjust call to ! fn_type_unification. ! * class.c (add_method): Don't allow duplicate declarations of ! constructors or destructors. ! (resolve_address_of_overloaded_function): Remove unused variable. ! Adjust call to fn_type_unification. ! * decl.c (grokfndecl): Be more robust in the face of illegal ! specializations. ! * decl2.c (check_classfn): Remove hokey handling of member ! templates. ! * pt.c (determine_specialization): Improve comments. Adjust to ! handle template argument deduction as per the standard. ! (check_explicit_specialization): Fix comment spacing. Handle ! type-conversion operators correctly. Improve error-recovery. ! (fn_type_unification): Remove EXTRA_FN_ARG parameter. ! (get_bindings_real): Simplify handling of static members. ! * search.c (lookup_fnfields_1): Make it have external linkage. ! * typeck.c (compparms): Fix comment. ! (build_unary_op): Don't try to figure out which template ! specialization is being referred to when when the address-of ! operator is used with a template function. ! ! Thu Feb 18 23:40:01 1999 Kaveh R. Ghazi ! ! * cp-tree.h (lvalue_or_else): Qualify a char* with the `const' ! keyword to match an analogous change at the top level. ! ! * tree.c (lvalue_or_else): Likewise. ! ! 1999-02-17 Mark Mitchell ! ! * decl.c (xref_basetypes): Comment. ! * pt.c (instantiate_class_template): Use xref_basetypes. ! ! 1999-02-16 Mark Mitchell ! ! * cp-tree.h (tsubst): Change prototype. ! (tsubst_expr): Likewise. ! (tsubst_copy): Likewise. ! (type_unification): Remove prototype. ! * call.c (convert_default_arg): Adjust call to tsubst_expr. ! * class.c (resolve_address_of_overloaded_function): Just use ! fn_type_unification. ! * decl.c (grokdeclarator): Adjust call to tsubst. ! * method.c (build_template_parm_names): Likewise. ! * pt.c (GTB_VIA_VIRTUAL): New macro. ! (GTB_IGNORE_TYPE): Likewise. ! (resolve_overloaded_unification): Add `complain' parameter. ! (try_one_overload): Likewise. ! (tsubst_template_arg_vector): Likewise. ! (tsubst_template_parms): Likewise. ! (tsubst_aggr_type): Likewise. ! (tsubst_arg_types): Likewise. ! (tsubst_call_declarator_parms): Likewise. ! (unify): Remove explicit_mask. ! (type_unification_real): Likewise. ! (get_template_base_recursive): Likewise. ! (coerce_template_template_parms): Provide prototype. ! (tsubst_function_type): Likewise. ! (try_class_unification): New function. ! All callers changed to use new complain parameter. ! (get_template_base): Use try_class_unification. ! (unify): Adjust handling of classes derived from template types. ! (fn_type_unification): Substitute explicit arguments before ! unification. ! ! 1999-02-16 Kriang Lerdsuwanakij ! ! * decl.c (pushdecl): Remove dead code. ! ! 1999-02-16 Jason Merrill ! ! * decl2.c (finish_objects): Fix code I missed in previous change. ! ! 1999-02-13 Jason Merrill ! ! * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node. ! (grokdeclarator): Don't expect error_mark_node from grokfndecl. ! ! * pt.c (maybe_process_partial_specialization): Complain about ! 'template <>' on non-specialization. ! ! 1999-02-10 Jason Merrill ! ! * decl.c (grokdeclarator): Catch wierd declarators. ! * decl2.c (finish_file): Don't abort because of namespace parsing ! failure. ! (check_decl_namespace): Remove. ! ! 1999-02-09 Mark Mitchell ! ! * cp-tree.h (get_template_base): Don't declare. ! (dfs_walk): Declare. ! (dfs_unmark): Likewise. ! (markedp): Likewise. ! * pt.c (unify): Remove duplicate declaration. Pass tparms and ! targs to get_template_base. ! (get_template_base_recursive): Move here from search.c. Check to ! see that the base found can be instantiated to form the desired ! type. ! (get_template_base): Likewise. ! (get_class_bindings): Simplify. ! * search.c (get_template_base_recursive): Move to pt.c. ! (get_template_base): Likewise. ! (markedp): Make it global. ! (dfs_walk): Likewise. ! (dfs_unmark): Likewise. ! ! 1999-02-07 Jason Merrill ! ! * pt.c (maybe_process_partial_specialization): Complain about ! specialization in wrong namespace. ! * tree.c (decl_namespace_context): New fn. ! ! 1999-02-06 Kriang Lerdsuwanakij ! ! * decl2.c (arg_assoc_type): Handle TEMPLATE_TEMPLATE_PARM. ! * pt.c (coerce_template_template_parms): Handle nested ! template template parameters. ! ! Sat Feb 6 18:08:40 1999 Jeffrey A Law (law@cygnus.com) ! ! * typeck2.c: Update email addresses. ! ! 1999-02-04 Kriang Lerdsuwanakij ! ! * pt.c (unify): Call coerce_template_parms with the COMPLAIN flag ! turned off. ! ! 1999-02-04 Jason Merrill ! ! * lex.c (retrofit_lang_decl): Split out... ! (build_lang_decl): From here. ! * decl.c (pushdecl): Call it for functions generated by the middle ! end that don't have DECL_LANG_SPECIFIC. ! * cp-tree.h: Declare it. ! ! * decl2.c: Remove flag_init_priority. Always enable initp stuff. ! (start_objects, finish_objects): Only use special ! init_priority code if the user specified a priority. ! (do_ctors, do_dtors): Use DEFAULT_INIT_PRIORITY for the non-initp ! objects. ! ! Wed Feb 3 22:50:17 1999 Marc Espie ! ! * Make-lang.in (GXX_OBJS): Remove choose-temp.o, pexecute.o and ! mkstemp.o. Get them from libiberty now. ! (DEMANGLER_PROG): Simlarly, remove getopt.o getopt1.o. ! ! Tue Feb 2 22:38:48 1999 Theodore Papadopoulo ! ! * decl2.c (lang_decode_option): Use read_integral_parameter. ! ! 1999-02-01 Mark Mitchell ! ! * pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED ! before calling complete_type_or_else. ! ! Mon Feb 1 09:49:52 1999 Kaveh R. Ghazi ! ! * input.c (inline): Don't define, its handled by system.h. ! ! Sun Jan 31 20:34:29 1999 Zack Weinberg ! ! * decl2.c: Don't define flag_no_ident here. Don't process ! -f(no-)ident here. ! * cp-tree.h: Don't declare flag_no_ident here. ! * lang-specs.h: Map -Qn to -fno-ident. ! ! 1999-01-28 Jason Merrill ! ! * cp-tree.h (struct tree_binding): Replace scope field with a union. ! (BINDING_SCOPE): Adjust. ! * decl.c (BINDING_LEVEL): Adjust. ! ! 1999-01-26 Jason Merrill ! ! * pt.c (instantiate_class_template): Set up the DECL_INITIAL of ! member constants. ! ! * init.c (expand_member_init): Pull out TYPE_MAIN_VARIANT in ! a ctor initializer. ! ! * tree.c (equal_functions): Fix name in prototype. ! ! * decl.c (push_local_binding): Add FLAGS argument. ! (pushdecl, push_overloaded_decl): Pass it. ! * decl2.c (do_local_using_decl): Likewise. ! * cp-tree.h: Adjust prototype. ! * decl.c (poplevel): Fix logic. ! ! * decl.c (push_local_binding): Also wrap used decls in a TREE_LIST. ! (poplevel): Handle that. Fix logic for removing TREE_LISTs. ! (cat_namespace_levels): Don't loop forever. ! ! 1999-01-25 Richard Henderson ! ! * typeck.c (build_reinterpret_cast): Fix typo in duplicated test. ! ! 1999-01-25 Jason Merrill ! ! * class.c (resolve_address_of_overloaded_function): Mark the ! chosen function used. ! ! * call.c (build_call): Make sure that a function coming in has ! been marked used already. ! * decl.c (expand_static_init): Call mark_used instead of ! assemble_external. ! * except.c (call_eh_info, do_pop_exception, expand_end_eh_spec, ! alloc_eh_object, expand_throw): Likewise. ! * init.c (build_builtin_delete_call): Likewise. ! * rtti.c (call_void_fn, get_tinfo_fn, build_dynamic_cast_1, ! expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc, ! expand_generic_desc): Likewise. ! ! 1999-01-25 Martin von Löwis ! ! * tree.c (equal_functions): New function. ! (ovl_member): Call it. ! ! 1999-01-24 Jason Merrill ! ! * cvt.c (cp_convert_to_pointer): Fix conversion of 0 to pmf. ! ! 1999-01-25 Martin von Loewis ! ! * decl.c (decls_match): Return 1 if old and new are identical. ! (push_overloaded_decl): Set OVL_USED when PUSH_USING. ! ! 1999-01-24 Jason Merrill ! ! * decl.c (start_function): Make member functions one_only on windows. ! * decl2.c (import_export_decl): Likewise. ! ! * decl.c (grokdeclarator): Don't complain about implicit int in ! a system header. Change same-name field check to not complain in ! a system header instead of within extern "C". ! ! 1999-01-21 Mark Mitchell ! ! * cp-tree.h (PUSH_GLOBAL): New macro. ! (PUSH_LOCAL): Likewise. ! (PUSH_USING): Likewise. ! (namespace_bindings_p): Declare. ! (push_overloaded_decl): Likewise. ! * decl.c (push_overloaded_decl): Don't make it static. Check for ! illegal declarations after using declarations here. ! (namespace_bindings_p): Likewise. ! (duplicate_decls): Don't consider declarations from different ! namespaces to be the same. ! (pushdecl): Use symbolic PUSH_ constants in calls to ! push_overloaded_decl. ! (push_overloaded_decl_1): Likewise. ! * decl2.c (validate_nonmember_using_decl): Tweak `std' handling. ! (do_nonmember_using_decl): Check for illegal using declarations ! after ordinary declarations here. ! (do_local_using_decl): Call pushdecl to insert declarations. ! ! 1999-01-21 Jason Merrill ! ! * decl.c (grokdeclarator): Fix lang_c -> lang_name_c typo. ! ! 1999-01-21 Mark Mitchell ! ! * tree.c (build_cplus_array_type_1): Don't call build_array_type ! for types involving template parameters. ! ! * cp-tree.h (PARM_DECL_EXPR): Delete. ! (convert_default_arg): Change prototype. ! (check_default_argument): Declare. ! (search_tree): Likewise. ! * call.c (convert_default_arg): Take the function to which the ! default argument belongs as a parameter, and do any necessary ! instantiation here, instead of ... ! (build_over_call): Here. ! * decl.c (local_variable_p): New function. ! (check_default_argument): Likewise, split out and tidied from ... ! (grokparms): Here. ! * error.c (dump_expr): Don't set PARM_DECL_EXPR. ! * pt.c (tsubst_call_declarator_parms): New function. ! (for_each_template_parm): Handle ARRAY_REFs. Do the obvious thing ! with CALL_EXPRs, rather than trying to be clever. ! (tsubst): Use tsubst_call_declarator_parms. ! * tree.c (search_tree): Don't make it static. ! * typeck.c (convert_arguments): Use new interface to ! convert_default_arg. ! ! 1999-01-20 Mark Mitchell ! ! * error.c (dump_function_decl): Don't print the argument types for ! a function when the verbosity level is negative. ! ! * call.c (build_over_call): Check format attributes at call-time. ! ! * pt.c (tsubst_copy): Fix comment. ! (unify): Don't allow unification with variable-sized arrays. ! ! * semantics.c (finish_stmt_expr): When processing a template make ! the BIND_EXPR long-lived. ! ! 1999-01-19 Jason Merrill ! ! * decl2.c (finish_vtable_vardecl): Make vtables comdat here. ! (import_export_vtable): Not here. ! ! 1999-01-18 Jason Merrill ! ! * typeck.c (build_component_ref): Wrap an OVERLOAD around a unique ! non-static member function. ! ! 1999-01-18 Nathan Sidwell ! ! * class.c (instantiate_type): Only diagnose illegal address of member ! function if complaining. ! ! * decl.c (lookup_name_real): Remove duplicate code. ! ! 1999-01-18 Jason Merrill ! ! * tree.c (copy_template_template_parm): Use permanent_obstack. ! ! 1999-01-18 Kriang Lerdsuwanakij ! ! * pt.c (unify): Remove restrictions on deduction of argument ! of template template parameters. ! ! 1999-01-18 Nathan Sidwell ! ! * rtti.c (build_dynamic_cast_1): Resolve OFFSET_REF exprs. ! ! * class.c (resolve_address_of_overloaded_function): Show list of ! all candidates, when none of them match. ! ! 1999-01-18 Chip Salzenberg ! ! * typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up ! definition of 'casting away const' in reinterpret_cast<>. ! ! 1999-01-18 Graham ! ! * cvt.c: Add include for decl.h, remove extern for ! static_aggregates which is now provided by decl.h. ! ! * Makefile.in (cvt.o): Add dependency for decl.h and missing ! dependencies for convert.h and flags.h. ! ! 1999-01-18 Nathan Sidwell ! ! * decl2.c (do_dtors): Set current location to that of the ! decl, for sensible diagnostics and debugging. ! (check_classfn): Issue `incomplete type' error, if ! class is not defined. ! ! 1999-01-16 Jason Merrill ! ! * cp-tree.h: Add prototype for bound_pmf_p. ! ! 1999-01-16 Jason Merrill ! Manfred Hollstein ! ! * decl.c (grokdeclarator): Don't make 'main(){}' an error with only ! -Wreturn-type. ! ! 1999-01-16 Nathan Sidwell ! ! * cp-tree.h (struct lang_type): Added has_mutable flag. ! (CLASSTYPE_HAS_MUTABLE): New macro to access it. ! (TYPE_HAS_MUTABLE_P): New macro to read it. ! (cp_has_mutable_p): Prototype for new function. ! * class.c (finish_struct_1): Set has_mutable from members. ! * decl.c (cp_finish_decl): Clear decl's TREE_READONLY flag, if ! it contains a mutable. ! * typeck.c (cp_has_mutable_p): New function. ! ! 1999-01-15 Mark Mitchell ! ! * pt.c (process_template_parm): Ignore top-level qualifiers on ! non-type parameters. ! ! * decl.c (start_function): Use current_function_parms in the call ! to require_complete_type_for_parms, not the probably empty ! DECL_ARGUMENTS. ! ! 1999-01-14 Jason Merrill ! ! * semantics.c (finish_asm_stmt): Don't warn about redundant volatile. ! ! * decl2.c (import_export_class): MULTIPLE_SYMBOL_SPACES only means ! that we don't suppress the other copies. ! * lex.c (handle_cp_pragma): Likewise. ! ! 1999-01-13 Mark Mitchell ! ! * decl.c (grokdeclarator): Undo 1998-12-14 change. ! * tree.c (build_cplus_array_type_1): Likewise. ! * pt.c (instantiate_class_template): Remove misleading comment. ! (tsubst_aggr_type): Substitute if there are template parameters, ! regardless of whether or not they use template arguments. ! (unify): Likewise, but for unification. ! ! 1999-01-12 Richard Henderson ! ! * cp-tree.h (flag_permissive): Declare extern. ! ! 1999-01-06 Mark Mitchell ! ! * cp-tree.h (IDENTIFIER_TYPENAME_P): Use OPERATOR_TYPENAME_FORMAT ! here. ! (lang_type): Add is_partial_instantiation. Decrease width of ! dummy. ! (PARTIAL_INSTANTIATION_P): New macro. ! (OPERATOR_TYPENAME_P): Remove. ! * decl.c (unary_op_p): Use IDENTIFIER_TYPENAME_P, not ! OPERATOR_TYPENAME_P. ! (grok_op_properties): Likewise. ! * friend.c (do_friend): Handle friends that are member functions ! correctly. ! * lex.c (init_parse): Use OPERATOR_TYPENAME_FORMAT. ! * pt.c (instantiate_class_template): Rework for clarity. Avoid ! leaving TYPE_BEING_DEFINED set in obscure cases. Don't do ! any more partial instantiation than is absolutely necessary for ! implicit typename. Set PARTIAL_INSTANTIATION_P. ! (tsubst_decl): Use IDENTIFIER_TYPENAME_P. ! * semantics.c (begin_class_definition): Handle partial ! specializations of a type that was previously partially ! instantiated. ! ! Wed Jan 6 03:18:53 1999 Mark Elbrecht ! ! * Make-lang.in (g++.o): Depend on prefix.h. ! ! 1999-01-04 Jason Merrill ! ! * tree.c (bound_pmf_p): New fn. ! * typeck.c (build_c_cast): Use it. ! ! * decl.c (grok_op_properties): Use same_type_p. ! ! Tue Dec 22 15:09:25 1998 Kaveh R. Ghazi ! ! * Makefile.in (cvt.o): Depend on toplev.h. ! ! * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes. ! ! * cvt.c: Include toplev.h. ! ! * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and ! definitions. ! ! * init.c (expand_vec_init): Initialize variable `itype'. ! ! * lex.c (yyerror): Cast the argument passed to a ctype function to ! an unsigned char. ! ! * method.c (build_mangled_C9x_name): Wrap prototype and definition ! in "HOST_BITS_PER_WIDE_INT >= 64". ! ! * typeck.c (build_binary_op): Mark parameter `convert_p' with ! ATTRIBUTE_UNUSED. ! ! 1998-12-22 Mark Mitchell ! ! * cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation. ! * tree.c (build_exception_variant): Don't crash on empty throw ! specs. ! ! 1998-12-18 DJ Delorie ! ! * cvt.c (convert_to_reference): Check for both error_mark_node ! and NULL_NODE after call to convert_for_initialization. ! ! 1998-12-17 Jason Merrill ! ! * error.c (interesting_scope_p): New fn. ! (dump_simple_decl): Use it. ! (dump_expr, case CONSTRUCTOR): Force a & for a PMF. ! (dump_expr, case OFFSET_REF): Print ->* if appropriate. ! ! 1998-12-16 Mark Mitchell ! ! * class.c (resolve_address_of_overloaded_function): Do conversion ! to correct type here, rather than ... ! (instantiate_type): Here. ! ! * cp-tree.h (DECL_TEMPLATE_PARM_P): New macro. ! (DECL_TEMPLATE_TEMPLATE_PARM_P): Use it. ! (decl_template_parm_p): Remove. ! * decl.c (pushdecl): Don't set DECL_CONTEXT for a template ! parameter. ! * lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P. ! * pt.c (push_inline_template_parms_recursive): Set it. ! (decl_template_parm_p): Remove. ! (check_template_shadow): Use DECL_TEMPLATE_PARM_P. ! (process_template_parm): Set it. ! ! Wed Dec 16 16:33:58 1998 Dave Brolley ! ! * lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus ! if configured with cpplib. ! ! 1998-12-15 Mark Mitchell ! ! * decl.c (poplevel): Make sure ns_binding is initialized. ! ! * decl.c (finish_function): Undo inadvertent change in previous ! patch. ! ! 1998-12-14 Mark Mitchell ! ! * class.c (pushclass): Tweak handling of class-level bindings. ! (resolve_address_of_overloaded_function): Update pointer-to-member ! handling. ! (instantiate_type): Likewise. ! * cvt.c (cp_convert_to_pointer): Likewise. ! * decl.c (pop_binding): Take the DECL to pop, not just the name. ! Deal with `struct stat' hack. ! (binding_level): Add to documentation. ! (push_binding): Clear BINDING_TYPE. ! (add_binding): New function. ! (push_local_binding): Use it. ! (push_class_binding): Likewise. ! (poplevel): Adjust calls to pop_binding. ! (poplevel_class): Likewise. ! (pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden ! declarations to current binding level. ! (push_class_level_binding): Likewise. ! (push_overloaded_decl): Adjust handling of OVERLOADs in local ! bindings. ! (lookup_namespace_name): Don't crash when confronted with a ! TEMPLATE_DECL. ! (lookup_name_real): Do `struct stat' hack in local binding ! contexts. ! (build_ptrmemfunc_type): Adjust documentation. ! (grokdeclarator): Don't avoid building real array types when ! processing templates unless really necessary. ! (finish_method): Adjust calls to pop_binding. ! * decl2.c (reparse_absdcl_as_expr): Recursively call ourselves, ! not reparse_decl_as_expr. ! (build_expr_from_tree): Deal with a template-id as the function to ! call in a METHOD_CALL_EXPR. ! * pt.c (convert_nontype_argument): Tweak pointer-to-member handling. ! (maybe_adjust_types_For_deduction): Don't do peculiar things with ! METHOD_TYPEs here. ! (resolve_overloaded_unification): Handle COMPONENT_REFs. Build ! pointer-to-member types where necessary. ! * tree.c (build_cplus_array_type_1): Don't avoid building real ! array types when processing templates unless really necessary. ! (build_exception_variant): Compare the exception lists correctly. ! ! 1998-12-13 Mark Mitchell ! ! * cp-tree.def (CPLUS_BINDING): Update documentation. ! * cp-tree.h (LOCAL_BINDING_P): New macro. ! (lang_identifier): Rename local_value to bindings. ! (tree_binding): Make `scope' of type `void*', not `tree'. ! (BINDING_SCOPE): Update documentation. ! (IDENTIFIER_LOCAL_VALUE): Remove. ! (IDENTIFIER_CLASS_VALUE): Document. ! (IDENTIFIER_BINDING): New macro. ! (IDENTIFIER_VALUE): Likewise. ! (TIME_IDENTIFIER_TIME): Likewise. ! (TIME_IDENTIFIER_FILEINFO): Likewise. ! (IMPLICIT_TYPENAME_P): Likewise. ! (set_identifier_local_value): Remove. ! (push_local_binding): New function. ! (push_class_binding): Likewise. ! * class.c (pushclass): Update comments; use push_class_binding. ! * decl.c (set_identifier_local_value_with_scope): Remove. ! (set_identifier_local_value): Likewise. ! (push_binding): New function. ! (pop_binding): Likewise. ! (binding_level): Update documentation. Remove shadowed. ! (BINDING_LEVEL): New macro. ! (free_binding_nodes): New variable. ! (poplevel): Adjust for new name-lookup scheme. Don't mess up ! BLOCK_VARs when doing for-scope extension. Remove effectively ! dead code. ! (pushlevel_class): Tweak formatting. ! (poplevel_class): Adjust for new name-lookup scheme. ! (print_binding_level): Likewise. ! (store_bindings): Likewise. ! (pushdecl): Likewise. ! (pushdecl_class_level): Likewise. ! (push_class_level_binding): Likewise. ! (push_overloaded_decl): Update comments. Adjust for new ! name-lookup scheme. ! (lookup_name_real): Likewise. ! (lookup_name_current_level): Likewise. ! (cp_finish_decl): Likewise. ! (require_complete_types_for_parms): Likewise. Remove misleading ! #if 0'd code. ! (grok_parms): Likewise. Don't call ! require_complete_types_for_parms here. ! (grok_ctor_properties): Don't treat templates as copy ! constructors. ! (grop_op_properties): Or as assignment operators. ! (start_function): Document. Adjust for new name-lookup scheme. ! (finish_function): Likewise. ! * decl2.c (do_local_using_decl): Use push_local_binding. ! * lex.c (begin_definition_of_inclass_inline): New function, split ! out from ... ! (do_pending_inlines): Here, and ... ! (process_next_inline): Here. ! (get_time_identifier): Use TIME_IDENTIFIER_* macros. ! (init_filename_times): Likewise. ! (extract_interface_info): Likewise. ! (ste_typedecl_interface_info): Likewise. ! (check_newline): Likewise. ! (dump_time_statistics): Likewise. ! (handle_cp_pragma): Likewise. ! (do_identifier): Adjust for new name-lookup scheme. ! * parse.y (function_try_block): Return ctor_initializer_opt value. ! (fndef): Use it. ! (fn.defpen): Pass appropriate values to start_function. ! (pending_inline): Use functor_try_block value, and pass ! appropriate values to finish_function. ! * pt.c (is_member_template): Update documentation; remove handling ! of FUNCTION_DECLs. As per name, this function should deal only in ! TEMPLATE_DECLs. ! (decl_template_parm_p): Change name of olddecl parameter to decl. ! (check_template_shadow): Adjust for new name-lookup scheme. ! (lookup_template_class): Likewise. ! (tsubst_decl): Tweak so as not to confuse member templates with ! copy constructors and assignment operators. ! (unify): Handle UNION_TYPEs. ! * ptree.c (print_lang_identifier): Adjust for new name-lookup scheme. ! (lang_print_xnode): Adjust for new name-lookup scheme. ! * typeck.c (mark_addressable): Likewise. ! (c_expand_return): Likewise. ! ! 1998-12-08 Jason Merrill ! ! * decl.c (grokdeclarator): Allow field with same name as class ! in extern "C". ! ! * decl.c (lookup_name_real): Don't limit field lookup to types. ! * class.c (check_member_decl_is_same_in_complete_scope): No error ! if icv and x are the same. ! * lex.c (do_identifier): Tweak error message. ! ! 1998-12-10 Mark Mitchell ! ! * decl.c (start_enum): Use push_obstacks, not ! end_temporary_allocation. ! (finish_enum): Call pop_obstacks. ! ! 1998-12-10 Mark Mitchell ! ! * class.c (instantiate_type): Return error_mark_node rather than ! junk. ! ! 1998-12-09 Mark Mitchell ! ! * cp-tree.h (most_specialized_instantiation): New function. ! (print_candidates): Likewise. ! * class.c (validate_lhs): Remove. ! (resolve_address_of_overloaded_function): New function, split out ! and then substantially reworked, from ... ! (instantiate_type): Use it. Simplify. ! * cvt.c (convert_to_reference): Complain when caller has indicated ! that's the right thing to do. Don't crash if instantiate_type ! fails. ! * pt.c: Substitute `parameters' for `paramters' throughout. ! (print_candidates): Don't make it static. ! (most_specialized_instantiation): Split out from ... ! (most_specialized): Here. ! ! Wed Dec 9 15:33:01 1998 Dave Brolley ! ! * lex.c (lang_init_options): Initialize cpplib. ! * decl2.c (parse_options,cpp_initialized): Removed. ! (lang_decode_option): Move initialization of cpplib to ! lang_init_options. ! ! 1998-12-09 Mark Mitchell ! ! * decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as ! well as the TYPE_DECL, when a typedef name is assigned to a ! previously anonymous type. ! ! 1998-12-08 Andrew MacLeod ! ! * cp/except.c (call_eh_info): Use __start_cp_handler instead of ! __cp_eh_info for getting the eh info pointer. Add table_index to ! field list. ! (push_eh_cleanup): Don't increment 'handlers' data field. ! (process_start_catch_block): Don't set the 'caught' field. ! ! * cp/exception.cc (CP_EH_INFO): New macro for getting the ! exception info pointer within library routines. ! (__cp_eh_info): Use CP_EH_INFO. ! (__start_cp_handler): Get exception info pointer, set caught field, ! and increment the handlers field. Avoids this being done by handlers. ! (__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro. ! (uncaught_exception): Use CP_EH_INFO macro. ! ! Tue Dec 8 10:48:21 1998 Jeffrey A Law (law@cygnus.com) ! ! * Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h ! ! Mon Dec 7 17:56:06 1998 Mike Stump ! ! * lex.c (check_newline): Add support for \ as `natural' ! characters in file names in #line to be consistent with #include ! handling. We support escape processing in the # 1 "..." version of ! the command. See also support in cp/lex.c. ! ! 1998-12-07 Zack Weinberg ! ! * cp/decl2.c: s/data/opts/ when initializing cpp_reader ! structure. ! ! 1998-12-07 Jason Merrill ! ! * decl.c (build_typename_type): Set DECL_ARTIFICIAL. ! ! * error.c (dump_simple_decl): Also print namespace context. ! (dump_function_decl): Likewise. ! ! * decl2.c (ambiguous_decl): Don't print old value if it's ! error_mark_node. ! ! * decl.c (lookup_name_real): Fix handling of local types shadowed ! by a non-type decl. Remove obsolete code. ! * cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro. ! ! * lang-options.h: Add -fpermissive. ! * decl2.c: Likewise. ! * cp-tree.h: Add flag_permissive. ! * decl.c (init_decl_processing): If neither -fpermissive or -pedantic ! were specified, set flag_pedantic_errors. ! * call.c (build_over_call): Turn dropped qualifier messages ! back into pedwarns. ! * cvt.c (convert_to_reference): Likewise. ! * typeck.c (convert_for_assignment): Likewise. ! ! 1998-12-05 Jason Merrill ! ! * decl2.c (coerce_new_type): Use same_type_p. ! (coerce_delete_type): Likewise. ! ! * call.c (check_dtor_name): Return 1, not error_mark_node. ! ! 1998-12-04 Jason Merrill ! ! * lex.c (handle_cp_pragma): Disable #pragma interface/implementation ! if MULTIPLE_SYMBOL_SPACES. ! ! * pt.c (check_template_shadow): New fn. ! * decl2.c (grokfield): Use it. ! * decl.c (pushdecl): Likewise. ! (pushdecl_class_level): Likewise. ! (start_method): Likewise. ! (xref_tag): Don't try to use 't' if we're defining. ! ! * call.c (check_dtor_name): Just return an error_mark_node. ! * pt.c (lookup_template_class): Complain about using non-template here. ! * parse.y (apparent_template_type): Not here. ! ! * pt.c (check_explicit_specialization): Complain about specialization ! with C linkage. ! ! * lang-options.h: Add -f{no-,}implicit-inline-templates. ! ! * pt.c (convert_nontype_argument): Don't assume that any integer ! argument is intended to be a constant-expression. ! ! 1998-12-03 Mark Mitchell ! ! * class.c (handle_using_decl): Fix comment. Don't lookup ! constructors in base classes. ! (validate_lhs): Fix typo in comment. ! * search.c (lookup_field_1): Don't return a USING_DECL. ! ! * cp-tree.h (DECL_ACCESS): Improve documentation. ! ! * decl.c (expand_static_init): Don't set the initialization-done ! flag until the initialization is done. ! ! 1998-12-02 Mark Mitchell ! ! * decl2.c (validate_nonmember_using_decl): Complain about using ! declarations for class members. ! ! 1998-11-29 Jason Merrill ! ! * typeck2.c (process_init_constructor): Use same_type_p. ! ! * decl.c (check_tag_decl): Don't warn about null decl inside a ! class. ! ! * pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than ! UNIFY_ALLOW_NONE. ! (convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE. ! (resolve_overloaded_unification): Strip baselinks. ! ! Fri Nov 27 13:07:23 1998 Kaveh R. Ghazi ! ! * g++spec.c: Don't prototype xmalloc. ! ! 1998-11-25 Jason Merrill ! ! * except.c (expand_throw): Use TYPE_PTR_P to check for pointers. ! ! * decl.c (check_tag_decl): Do complain about null friend decl at ! file scope. ! ! 1998-11-25 Andreas Schwab ! ! * lex.c (make_lang_type): Clear the whole struct lang_type, not ! only the first multiple of sizeof (int). ! ! 1998-11-24 Jason Merrill ! ! * decl.c (start_decl): An explicit specialization of a static data ! member is only a definition if it has an initializer. ! ! * except.c (expand_throw): Use cp_finish_decl for the throw temp. ! * cvt.c (build_up_reference): Pass DIRECT_BIND down into ! cp_finish_decl. ! * init.c (expand_default_init): Check for DIRECT_BIND instead of ! DECL_ARTIFICIAL. ! ! * call.c (build_over_call): Use build_decl. ! ! * except.c (expand_throw): Just use convert, not ! build_reinterpret_cast. ! ! * lex.c (handle_generic_pragma): Use token_buffer. ! ! * decl.c (check_tag_decl): Don't complain about null friend decl. ! ! 1998-11-24 Dave Pitts ! ! * Make-lang.in (DEMANGLER_PROG): Move the output arguments to the ! first position. ! * lex.c (check_newline): Use ISALPHA. ! (readescape): Use ISGRAPH. ! (yyerror): Use ISGRAPH. ! ! 1998-11-24 Nathan Sidwell ! ! * search.c (get_abstract_virtuals): Do not use initial ! CLASSTYPE_ABSTRACT_VIRTUALS. ! * typeck2.c (abstract_virtuals_error): Show location of abstract ! declaration. ! * call.c (build_new_method_call): Use ! CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate. ! * class.c (finish_struct_bits): Don't bother working out whether ! get_abstract_virtuals will do anything, just do it. ! ! 1998-11-24 Graham ! ! * typeck.c (build_component_ref): Remove unused statement. ! ! 1998-11-24 Jason Merrill ! ! * class.c (add_method): Catch invalid overloads. ! ! * class.c (add_method): Build up OVERLOADs properly for conversion ops. ! * search.c (lookup_conversions): Handle getting real OVERLOADs. ! (add_conversions): Likewise. Revert last change. ! * call.c (add_conv_candidate): Pass totype to add_candidate instead ! of fn. Don't add a new candidate if the last one was for the same ! type. ! (print_z_candidates): Handle getting a type as a function. ! (joust): If we got two conversion candidates to the same type, ! just pick one. ! (build_object_call): Lose 'templates'. ! (build_user_type_conversion_1): Handle getting real OVERLOADs. ! ! 1998-11-23 Jason Merrill ! ! * typeck2.c (process_init_constructor): If there are elements ! that don't have initializers and they need to have constructors ! run, supply them with initializers. ! ! * class.c (finish_struct_1): A class with a 0-width bitfield is ! still empty. ! ! 1998-11-23 Mark Mitchell ! ! * pt.c (instantiate_class_template): Don't try to figure out what ! specialization to use for a partial instantiation. Correct ! typos in a couple of comments. Avoid calling uses_template_parms ! multiple times. ! ! 1998-11-23 Benjamin Kosnik ! ! * method.c (process_overload_item): Add call to ! build_mangled_C9x_name for intTI_type_nodes. ! (build_mangled_C9x_name): Add prototype, define. ! * decl.c (init_decl_processing): Add names for ! TImode_type_node. ! ! 1998-11-23 Jason Merrill ! ! * parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS. ! ! * class.c (finish_struct_1): Set things up for 0-width bitfields ! like we do for others. ! ! * decl.c (check_tag_decl): New fn. ! (shadow_tag): Split out from here. ! * decl2.c (grok_x_components): Call it. ! ! 1998-11-22 Jason Merrill ! ! * decl.c: Lose warn_about_return_type. ! (grokdeclarator): Always complain about implicit int, except for ! `main () { ... }'. ! ! * decl.c (tag_name): New fn. ! (xref_tag): Complain about using typedef-name after class-key. ! ! * init.c (expand_vec_init): Also keep going if from_array. ! ! * tree.c (is_overloaded_fn): Also handle the output of ! build_offset_ref. ! ! * decl.c (grokdeclarator): Use constructor_name when comparing ! field name against enclosing class. ! * class.c (finish_struct_anon): Likewise. ! ! 1998-11-22 Mark Mitchell ! ! * decl.c (poplevel): Remove code to handle KEEP == 2. ! (finish_function): Don't confuse BLOCK-order when ! processing a destructor. ! ! 1998-11-21 Jason Merrill ! ! * decl.c (require_complete_types_for_parms): Call layout_decl ! after we've completed the type. ! ! 1998-11-21 Martin von Löwis ! ! * decl2.c (validate_nonmember_using_decl): Allow using templates ! from the global namespace. ! ! 1998-11-21 Jason Merrill ! ! Handle specifying template args to member function templates. ! * tree.c (build_overload): Always create an OVERLOAD for a template. ! * search.c (add_conversions): Handle finding an OVERLOAD. ! * decl2.c (check_classfn): Likewise. ! * lex.c (identifier_type): See through a baselink. ! * parse.y (do_id): Don't call do_identifier if we got a baselink. ! * class.c (instantiate_type, case TREE_LIST): Recurse. ! ! * decl.c (grokdeclarator): Allow a boolean constant for array ! bounds, odd as that sounds. ! ! * pt.c (unify): Be more strict about non-type parms, except for ! array bounds. ! (UNIFY_ALLOW_INTEGER): New macro. ! ! 1998-11-19 Manfred Hollstein ! ! * Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir). ! ! 1998-11-19 Jason Merrill ! ! * semantics.c (begin_class_definition): Call ! maybe_process_partial_specialization before push_template_decl. ! Don't call push_template_decl for a specialization. ! * search.c (lookup_field): Do return a member template class. ! * decl2.c (handle_class_head): Handle member template classes. ! ! * decl.c (grokdeclarator): A parm type need not be complete. ! ! * pt.c (convert_nontype_argument): Fix thinko. ! ! 1998-11-18 Mark Mitchell ! ! * cp-tree.h (PTRMEM_CST_CLASS): Fix typo. ! (global_delete_fndecl): New variable. ! * decl.c (global_delete_fndecl): Define it. ! (init_decl_processing): Set it. ! * init.c (build_builtin_delete_call): Use it. ! * tree.c (mapcar): Recursively call mapcar for the type of EXPR ! nodes. ! ! 1998-11-18 Jason Merrill ! ! * decl.c (cplus_expand_expr_stmt): Always complain about unresolved ! type. ! ! * tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue. ! * call.c (build_object_call): Also support references to functions. ! * typeck.c (convert_for_initialization): Don't decay a function ! if the target is a reference to function. ! ! * search.c (add_conversions): Get all the overloads from a class. ! ! * decl.c (grok_ctor_properties): Complain about any constructor ! that will take a single arg of the class type by value. ! ! * typeck2.c (build_functional_cast): Can't create objects of ! abstract classes this way. ! * cvt.c (ocp_convert): Likewise. ! ! * decl.c (grokfndecl): Member functions of local classes are not ! public. ! ! 1998-11-18 Mark Mitchell ! ! * Make-lang.in (cc1plus): Add dependency on hash.o. ! ! 1998-11-18 Jason Merrill ! ! * search.c (get_abstract_virtuals): Complain about virtuals with ! no final overrider. ! * typeck2.c (abstract_virtuals_error): Remove handling for virtuals ! with no final overrider. ! * class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P ! on virtuals with no final overrider. ! ! * lex.c (reinit_parse_for_block): Add a space after the initial ':'. ! ! * class.c (finish_struct_1): Don't remove zero-width bit-fields until ! after layout_type. ! ! * friend.c (do_friend): Don't set_mangled_name_for_decl. ! ! * class.c (finish_struct_anon): Complain about non-fields. ! * decl2.c (build_anon_union_vars): Likewise. ! ! * decl.c (grokdeclarator): Normal data members can't have the same ! name as the class, either. ! * class.c (finish_struct_anon): Neither can members of an ! anonymous union. ! ! 1998-11-17 Mark Mitchell ! ! * cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses. ! (TYPE_BINFO): Likewise. ! (IS_AGGR_TYPE): Tweak. ! (SET_IS_AGGR_TYPE): New macro. ! (CLASS_TYPE_P): Tweak. ! (lang_type): Group mark bitfields together. Remove linenum. ! (CLASSTYPE_SOURCE_LINE): Remove macro. ! (CLASSTYPE_MARKED_N): New macro. ! (SET_CLASSTYPE_MARKED_N): Likewise. ! (CLEAR_CLASSTYPE_MARKED_N): Likewise. ! (CLASS_TYPE_MARKED_*): Use them. ! (SET_CLASSTYPE_MARKED_*): Likewise. ! (CLEAR_CLASSTYPE_MARKED_*): Likewise. ! (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise. ! (TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well. ! (TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE. ! * class.c (class_cache_obstack): New variable. ! (class_cache_firstobj): Likewise. ! (finish_struct): Don't set CLASSTYPE_SOURCE_LINE. ! (pushclass): Free the cache, when appropriate. ! (popclass): Tidy. ! (maybe_push_cache_obstack): Use class_cache_obstack. ! * decl.c (include hash.h). ! (typename_hash): New function. ! (typename_compare): Likewise. ! (build_typename_type): Check the hash table to avoid creating ! duplicates. ! (build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE. ! (grokdeclarator): Use CLASS_TYPE_P. ! (xref_basetypes): Likewise. ! (start_function): Likewise. Don't put current_class_ref on the ! permanent obstack. ! * error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO ! and TYPE_TI_ARGS. ! * lex.c (note_got_semicolon): Use CLASS_TYPE_P. ! (make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated ! fields for types other than class types. Do clear TYPE_ALIAS_SET ! for types other than class types, though. ! * method.c (build_overload_identifier): Use CLASS_TYPE_P and ! TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO. ! * pt.c (process_template_parm): Don't set ! CLASSTYPE_GOT_SEMICOLON. ! (lookup_template_class): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO. ! Coerce arguments on the momentary obstack. ! (for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO. ! (instantiate_class_template): Calculate template arguments on the ! momentary obstack. Tidy. ! (tsubst_template_arg_vector): Use make_temp_vec. ! (tsubst_aggr_type): Put template arguments on the momentary ! obstack. ! (tsubst_decl): Likewise. ! (tsubst): Copy the array bounds index to the permanent obstack ! before building index types. Use new macros. ! (unify): Use new macros. ! (do_type_instantiation): Likewise. ! * search.c (lookup_fnfields_1): Use new macros. ! (dfs_pushdecls): Build envelopes on the cache obstack. ! (dfs_compress_decls): Use new macros. ! (push_class_decls): Build on the cache obstack. ! * semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON. ! * sign.c (build_signature_pointer_or_reference_type): Use ! SET_IS_AGGR_TYPE. ! * tree.c (make_binfo): Check CLASS_TYPE_P. ! (copy_template_template_parm): Adjust. ! (make_temp_vec): Use push_expression_obstack. ! * typeck.c (complete_type): Use new macros. ! (comptypes): Likewise. ! ! 1998-11-17 Jason Merrill ! ! * pt.c (tsubst): Add diagnostics for invalid array, reference ! and pointer to member types. ! ! 1998-11-16 Jason Merrill ! ! * typeck2.c (my_friendly_abort): Don't fatal twice in a row. ! ! * typeck.c (c_expand_start_case): Use build_expr_type_conversion. ! Simplify. ! ! * parse.y (structsp): Fix cut-and-paste error. ! ! * init.c (build_new): Complain about non-integral size. ! ! * parse.y (unary_expr): Complain about defining types in sizeof. ! ! * typeck.c (expr_sizeof): Complain about sizeof an overloaded fn. ! ! * rtti.c (build_x_typeid): Complain about typeid without ! including . ! (get_typeid): Likewise. Complain about typeid of incomplete type. ! (get_tinfo_fn_dynamic): Likewise. ! (get_typeid_1): Not static anymore. ! * except.c (build_eh_type_type): Use get_typeid_1. ! ! * rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to ! ambiguous or private bases. Fix warning for reference cast. ! ! 1998-11-16 Mark Mitchell ! ! * cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro. ! * decl.c (duplicate_decls): Remove special-case code to deal with ! template friends, and just do the obvious thing. ! * pt.c (register_specialization): Tweak for clarity, and also to ! clear DECL_INITIAL for an instantiation before it is merged with a ! specialization. ! (check_explicit_specialization): Fix indentation. ! (tsubst_friend_function): Handle both definitions in friend ! declaration and outside friend declarations. ! (tsubst_decl): Don't clear DECL_INITIAL for an instantiation. ! (regenerate_decl_from_template): Tweak accordingly. ! (instantiate_decl): Likewise. ! ! 1998-11-16 Jason Merrill ! ! * decl.c (cplus_expand_expr_stmt): Promote warning about naked ! member function reference to error. ! * cvt.c (ocp_convert): Complain about converting an overloaded ! function to void. ! ! * init.c (build_offset_ref): Just return a lone static member ! function. ! ! * decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs, ! not internal ones. ! ! * typeck.c (build_binary_op_nodefault): Improve error handling. ! ! * decl.c (grokfndecl): Complain about making 'main' a template. ! ! * typeck.c (string_conv_p): Don't convert from wchar_t[] to char*. ! ! * call.c (build_method_call): Handle a BIT_NOT_EXPR around a ! TYPE_DECL in a template. ! ! 1998-11-15 Jason Merrill ! ! * typeck2.c (my_friendly_abort): Add URL in the other case, too. ! ! * decl.c (struct cp_function): Add named_label_uses. ! (push_cp_function_context): Save it. ! (pop_cp_function_context): Restore it. ! (define_label): Also complain about jumping into the scope of ! non-POD objects that don't have constructors. ! * tree.c (pod_type_p): New fn. ! ! * pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner. ! * rtti.c (synthesize_tinfo_fn): Call import_export_decl here. ! (get_tinfo_fn): Not here. ! * repo.c (repo_get_id): Abort if we get called for an incomplete ! type. ! ! 1998-11-13 Mark Mitchell ! ! * except.c (expand_throw): Make sure first argument to ! __cp_push_exception is of type `void*' to avoid spurious error ! messages. ! ! 1998-11-11 Jason Merrill ! ! * pt.c (try_one_overload): Take orig_targs again. Only check for ! mismatches against them; we don't care what a previous call found. ! (resolve_overloaded_unification): Adjust. ! ! * search.c (lookup_field): Don't return anything for a non-type ! field from a dependent type. ! * decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class ! in an array declarator. ! (start_decl): Push into the class before looking for the field. ! ! 1998-11-08 Mark Mitchell ! ! * method.c (build_overload_value): Handle REFERENCE_TYPE. ! ! 1998-11-08 Martin von Löwis ! ! * decl.c (grokdeclarator): Allow namespace-scoped members if they ! are friends. ! ! 1998-11-08 Jason Merrill ! ! * pt.c (tsubst_decl): Don't mess with the global value of an ! un-mangled DECL_ASSEMBLER_NAME. ! ! 1998-11-03 Christopher Faylor ! ! * decl.c (init_decl_processing): Remove CYGWIN conditional ! since CYGWIN is now able to deal with trapping signals. ! ! Sat Nov 7 15:48:02 1998 Kaveh R. Ghazi ! ! * cp-tree.h: Don't include gansidecl.h. ! * exception.cc: Include gansidecl.h (since we don't include config.h) ! * g++spec.c: Don't include gansidecl.h. ! ! 1998-11-06 Mark Mitchell ! ! * cp-tree.h (lang_decl_flags): Add defined_in_class. Decrease ! size of dummy. ! (DECL_DEFINED_IN_CLASS_P): New macro. ! (TEMPLATE_PARMS_FOR_INLINE): Document. ! (check_static_variable_definition): New function. ! * decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if ! appropriate. ! (check_static_variable_definition): Split out from ... ! (grokdeclarator): Here. ! * pt.c (check_default_tmpl_args): New function, split out from ... ! (push_template_decl_real): Here. ! (instantiate_template): Fix comment. ! ! 1998-11-04 Mark Mitchell ! ! * cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued. ! (CP_TYPE_VOLATILE_P): Likewise. ! (CP_TYPE_RESTRICT_P): Likewise. ! ! 1998-11-03 Mark Mitchell ! ! * pt.c (tsubst): Use build_index_type, not build_index_2_type. ! ! 1998-11-02 Jason Merrill ! ! * class.c (instantiate_type): Be more helpful. ! ! * decl2.c (import_export_decl): Call import_export_class. ! ! * cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR. ! * decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR. ! * pt.c (tsubst_copy): Likewise. ! ! 1998-11-02 Mark Mitchell ! ! * init.c (expand_vec_init): Fix off-by-one error. ! ! 1998-11-02 Alexandre Oliva ! ! * parse.y (apparent_template_type): New type. ! (named_complex_class_head_sans_basetype): Use it. ! * Makefile.in (CONFLICTS): One new conflict. ! * parse.c: Regenerated. ! ! 1998-11-01 Mark Mitchell ! ! * cp-tree.h (COMPARE_STRICT): New macro. ! (COMPARE_BASE): Likewise. ! (COMPARE_RELAXED): Likewise. ! (COMPARE_REDECLARATION): Likewise. ! (same_type_p): Likewise. ! (same_or_base_type_p): Likewise. ! * call.c (standard_conversion): Use them, in place of comptypes ! with numeric arguments. ! (reference_binding): Likewise. ! (convert_like): Likewise. ! (build_over_call): Likewise. ! (is_subseq): Likewise. ! (is_properly_derived_from): Likewise. ! (compare_ics): Likewise. ! (joust): Likewise. ! * class.c (delete_duplicate_fields_1): Likewise. ! (resolves_to_fixed_type_p): Likewise. ! (instantiate_type): Likewise. Remove #if 0'd code. ! * decl.c (decls_match): Likewise. Use COMPARE_REDECLARATION here. ! (pushdecl): Likewise. ! (lookup_name_real): Likewise. ! (grokdeclarator): Likewise. Check for illegal array declarations. ! (grokparms): Likewise. ! (grok_op_properties): Likewise. ! * decl2.c (check_classfn): Likewise. ! * friend.c (is_friend): Likewise. ! (make_friend_class): Likewise. ! * init.c (expand_aggr_init): Likewise. ! (expand_vec_init): Likewise. ! * pt.c (is_member_template_class): Remove declaration. ! (is_specialization_of): Use COMPARE_* and new macros. ! (comp_template_parms): Likewise. ! (convert_nontype_argument): Likewise. ! (coerce_template_template_parms): Likewise. ! (template_args_equal): Likewise. ! (lookup_template_class): Likewise. ! (type_unification_real): Likewise. ! (unify): Likewise. ! (get_bindings_real): Likewise. ! * search.c (covariant_return_p): Likewise. ! (get_matching_virtual): Likewise. ! * sig.c (match_method_types): Likewise. ! * tree.c (vec_binfo_member): Likewise. ! (cp_tree_equal): Likewise. ! * typeck.c (common_type): Likewise. ! (comp_array_types): Likewise. Get issues involving unknown array ! bounds right. ! (comptypes): Update comments. Use new flags. ! (comp_target_types): Use new macros. ! (compparms): Likewise. ! (comp_target_parms): Likewise. ! (string_conv_p): Likewise. ! (build_component_ref): Likewise. ! (build_indirect_ref): Likewise. ! (build_conditional_expr): Likewise. ! (build_static_cast): Likewise. ! (build_reinterpret_cast): Likewise. ! (build_const_cast): Likewise. ! (build_modify_expr): Likewise. ! (convert_for_assignment): Likewise. ! (comp_ptr_ttypes_real): Likewise. ! (ptr_reasonably_similar): Likewise. ! (comp_ptr_ttypes_const): Likewise. ! ! 1998-10-31 Jason Merrill ! ! * rtti.c (build_dynamic_cast_1): Fix cut-and-paste error. ! ! 1998-10-30 Mark Mitchell ! ! * decl2.c (delete_sanity): Pass integer_zero_node, not ! integer_two_node, to build_vec_delete. ! * init.c (build_array_eh_cleanup): Remove. ! (expand_vec_init_try_block): New function. ! (expand_vec_init_catch_clause): Likewise. ! (build_vec_delete_1): Don't deal with case that auto_delete_vec ! might be integer_two_node anymore. ! (expand_vec_init): Rework for initialization-correctness and ! exception-correctness. ! * typeck2.c (process_init_constructor): Make mutual exclusivity ! of cases more obvious. ! ! 1998-10-29 Jason Merrill ! ! * decl.c (lookup_name_real): OK, only warn if not lexing. ! Simplify suggested fix. ! ! * cp-tree.h (IDENTIFIER_MARKED): New macro. ! * search.c (lookup_conversions): Use breadth_first_search. ! (add_conversions): Avoid adding two conversions to the same type. ! (breadth_first_search): Work with base binfos, rather ! than binfos and base indices. ! (get_virtual_destructor): Adjust. ! (tree_has_any_destructor_p): Adjust. ! (get_matching_virtual): Adjust. ! ! * pt.c (push_template_decl_real): Generalize check for incorrect ! number of template parms. ! (is_member_template_class): #if 0. ! ! 1998-10-29 Richard Henderson ! ! * Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@, ! last. ! ! 1998-10-28 Zack Weinberg ! ! * lex.c: Call check_newline from lang_init always. After ! calling cpp_start_read, set yy_cur and yy_lim to read from the ! cpplib token buffer. ! ! 1998-10-28 Jason Merrill ! ! * class.c (instantiate_type): Don't consider templates for a normal ! match. ! ! * class.c (finish_struct_1): Don't complain about non-copy ! assignment ops in union members. ! ! * class.c (build_vtable): Don't pass at_eof to import_export_vtable. ! (prepare_fresh_vtable): Likewise. ! (finish_struct_1): Don't call import_export_class. ! * decl2.c (finish_vtable_vardecl): Do import/export stuff. ! (finish_prevtable_vardecl): Lose. ! (finish_file): Don't call it. ! * pt.c (instantiate_class_template): Likewise. ! * cp-tree.h: Remove it. ! ! * init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here. ! * decl.c (finish_function): Not here. ! (start_function): Do set DECL_INITIAL. ! ! * pt.c (push_template_decl_real): Complain about default template ! args for enclosing classes. ! ! * call.c (add_function_candidate): Treat conversion functions ! as coming from the argument's class. ! * cp-tree.h (DECL_CONV_FN_P): New fn. ! (DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE. ! * class.c (add_method): Use DECL_CONV_FN_P. ! * decl2.c (check_classfn): Likewise. ! * error.c (dump_function_name): Likewise. ! (dump_function_decl): Likewise. ! * pt.c (fn_type_unification): Likewise. ! * search.c (add_conversions): Likewise. ! ! 1998-10-27 Jason Merrill ! ! * lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL. ! * method.c (hack_identifier): Also check for using RESULT_DECL ! from outer context. ! ! 1998-10-27 Mark Mitchell ! ! * decl.c (grokdeclarator): Use type_quals, rather than constp, ! consistently. ! ! 1998-10-27 Jason Merrill ! ! * call.c (standard_conversion): instantiate_type here. ! (reference_binding): And here. ! (implicit_conversion): Not here. ! (build_op_delete_call): No need to cons up an OVERLOAD. ! * cvt.c (cp_convert_to_pointer): instantiate_type here. ! (convert_to_reference): And here. ! * decl.c (grok_reference_init): Not here. ! (grokparms): Or here. ! * typeck2.c (digest_init): Or here. ! * typeck.c (decay_conversion): Take the address of overloaded ! functions, too. ! (require_instantiated_type): Lose. ! (convert_arguments): Don't handle unknown types here. ! (build_c_cast): Likewise. ! (build_binary_op): Gut. ! (build_conditional_expr): Don't require_instantiated_type. ! (build_modify_expr): Likewise. ! (build_static_cast): Don't instantiate_type. ! (build_reinterpret_cast): Likewise. ! (build_const_cast): Likewise. ! (convert_for_initialization): Likewise. ! (build_ptrmemfunc): Use type_unknown_p. ! (convert_for_assignment): Also do default_conversion on overloaded ! functions. Hand them off to ocp_convert. ! ! 1998-10-26 Mark Mitchell ! ! * error.c (dump_decl): Deal with TEMPLATE_DECLs that are ! VAR_DECLs. Handle vtables whose DECL_CONTEXT is not a type. ! ! * class.c (finish_struct_1): Use build_cplus_array_type to build ! array types. ! * decl.c (init_decl_processing): Likewise. ! * except.c (expand_end_eh_spec): Likewise. ! * search.c (expand_upcast_fixups): Simplify very slightly. ! ! 1998-10-26 Jason Merrill ! ! * decl.c (grokdeclarator): Complain about a variable using ! constructor syntax coming back null from start_decl. ! ! * friend.c (make_friend_class): Complain about trying to make ! a non-class type a friend. ! ! * decl.c (grokfndecl): Set DECL_INITIAL for a defn here. ! (start_function): Not here. ! ! 1998-10-26 Brendan Kehoe ! ! * decl.c (grokdeclarator): Disallow `explicit' in a friend declaration. ! ! 1998-10-26 Jason Merrill ! ! * typeck2.c (process_init_constructor): Only skip anonymous fields ! if they are bitfields. ! ! * cp-tree.def (TYPEOF_TYPE): New code. ! * error.c (dump_type_real): Handle it. ! * pt.c (tsubst): Likewise. ! * tree.c (search_tree): Likewise. ! * semantics.c (finish_typeof): New fn. ! * parse.y (typespec): Use it. ! * cp-tree.h: Declare it. ! ! 1998-10-26 Manfred Hollstein ! ! * cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional. ! ! 1998-10-26 Jason Merrill ! ! * typeck.c (convert_arguments): Don't handle pmf references ! specially. ! ! * init.c (build_member_call): Don't try to convert to the base type ! if it's ambiguous or pedantic. ! ! * typeck2.c (check_for_new_type): Only depend on pedantic for ! C-style casts. ! ! 1998-10-25 Mark Mitchell ! ! * decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all ! non-converting constructors. ! ! 1998-10-24 Martin von Löwis ! ! * gxxint.texi: Correct documentation for n, N, Q, and B. ! ! 1998-10-23 Martin von Löwis ! ! * parse.y (condition): Convert VAR_DECL from reference to indirect ! reference. ! ! 1998-10-23 Andrew MacLeod ! ! * exception.cc (__cp_pop_exception): Free the original exception ! value, not the potentially coerced one. ! ! 1998-10-23 Mark Mitchell ! ! * Makefile.in (hash.h): Run gperf when necessary. ! ! * cp-tree.h (CP_TYPE_READONLY): Remove. ! (CP_TYPE_VOLATILE): Likewise. ! (CP_TYPE_QUALS): New macro. ! (CP_TYPE_CONST_P): Likewise. ! (CP_TYPE_VOLATILE_P): Likewise. ! (CP_TYPE_RESTRICT_P): Likewise. ! (CP_TYPE_CONST_NON_VOLATILE_P): Likewise. ! (cp_build_type_variant): Rename to ... ! (cp_build_qualified_type): New function. ! (c_apply_type_quals_to_decl): Declare. ! (SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'. ! (SIGNATURE_REFERENCE_NAME_FORMAT): Likewise. ! (cp_type_qual_from_rid): New function. ! (compparms): Remove unused parameter. All callers changed. ! (cp_type_quals): New function. ! (at_least_as_qualified_p): Likewise. ! (more_qualified_p): Likewise. ! ! * call.c (standard_conversion): Replace calls to ! cp_build_type_variant with cp_build_qualified_type. Use ! CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to ! compare them. Use CP_TYPE_* macros to check qualifiers. ! (reference_binding): Likewise. ! (implicit_conversion): Likewise. ! (add_builtin_candidates): Likewise. ! (build_over_call): Likewise. ! * class.c (overrides): Compare all qualifiers, not just `const', ! on method declarations. ! * cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc. ! (convert_pointer_to_real): Likewise. ! (type_promotes_to): Likewise. ! * decl.c (check_for_uninitialized_const_var): New function. ! (init_decl_processing): More CP_TYPE_QUALS conversion, etc. ! (cp_finish_decl): Use check_for_uninitialized_const_var. ! (grokdeclarator): More CP_TYPE_QUALS conversion, etc. Update to ! handle `restrict'. ! (grok_ctor_properties): Likewise. ! (grok_op_properties): Likewise. ! (start_function): Likewise. ! (rever_static_member_fn): Likewise. ! * decl2.c (grok_method_quals): Likewise. ! (grokfield): Likewise. ! * error.c (dump_readonly_or_volatile): Rename to ... ! (dump_qualifiers): New function. Handle `restrict'. ! (dump_type_real): Use it. ! (dump_aggr_type): Likewise. ! (dump_type_prefix): Likewise. ! (dump_type_suffix): Likewise. ! (dump_function_decl): Likewise. ! (cv_as_string): Likewise. ! * gxx.gperf: Add __restrict and __restrict__. ! * gxxint.texi: Document `u' as used for `__restrict', and a few ! other previously undocumented codes. ! * hash.h: Regenerated. ! * init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc. ! (build_member_call): Likewise. ! (build_new_1): Likewise. ! * lex.c (init_parse): Add entry for RID_RESTRICT. ! (cons_up_default_function): More CP_TYPE_QUALS conversion, etc. ! (cp_type_qual_from_rid): Define. ! * lex.h (enum rid): Add RID_RESTRICT. ! * method.c (process_modifiers): Deal with `restrict'. ! * parse.y (primary): More CP_TYPE_QUALS conversion, etc. ! * parse.c: Regenerated. ! * pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc. ! (tsubst_aggr_type): Likewise. ! (tsubst): Likewise. ! (check_cv_quals_for_unify): Likewise. ! (unify): Likewise. ! * rtti.c (init_rtti_processing): Likewise. ! (build_headof): Likewise. ! (get_tinfo_var): Likewise. ! (buidl_dynamic_cast_1): Likewise. Fix `volatile' handling. ! (expand_class_desc): Likewise. ! (expand_attr_desc): Likewise. ! (synthesize_tinfo_fn): Likewise. ! * search.c (covariant_return_p): Likewise. Fix `volatile' handling. ! (get_matching_virtual): Likewise. ! (expand_upcast_fixups): Likewise. ! * sig.c (build_signature_pointer_or_reference_name): Take ! type_quals, not constp and volatilep. ! (build_signature_pointer_or_reference_type): Likewise. ! (match_method_types): More CP_TYPE_QUALS conversion, etc. ! (build_signature_pointer_constructor): Likewise. ! (build_signature_method_call): Likewise. ! * tree.c (build_cplus_array_type): Likewise. ! (cp_build_type_variant): Rename to ... ! (cp_build_qualified_type): New function. Deal with `__restrict'. ! (canonical_type_variant): More CP_TYPE_QUALS conversion, etc. ! (build_exception_variant): Likewise. ! (mapcar): Likewise. ! * typeck.c (qualif_type): Likewise. ! (common_type): Likewise. ! (comptypes): Likewise. ! (comp_cv_target_types): Likewise. ! (at_least_as_qualified_p): Define. ! (more_qualified_p): Likewise. ! (comp_cv_qualification): More CP_TYPE_QUALS conversion, etc. ! (compparms): Likewise. ! (inline_conversion): Likewise. ! (string_conv_p): Likewise. ! (build_component_ref): Likewise. ! (build_indirect_ref): Likewise. ! (build_array_ref): Likewise. ! (build_unary_op): Likewise. ! (build_conditional_expr): Likewise. ! (build_static_cast): Likewise. ! (build_c_cast): Likewise. ! (build_modify_expr): Likewise. ! (convert_For_assignment): Likewise. ! (comp_ptr_ttypes_real): Likewise. ! (cp_type_quals): New function. ! ! 1998-10-23 Jason Merrill ! ! * cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays. ! (CP_TYPE_VOLATILE): Likewise. ! * decl.c (grokdeclarator): Use them. ! * tree.c (canonical_type_variant): Likewise. ! ! 1998-10-22 Martin von Löwis ! ! * parse.y (named_class_head): Push into class while parsing the ! base class list. ! * decl2.c (push_scope, pop_scope): New functions. ! * cp-tree.h: Declare them. ! * init.c (build_new_1): Delay cleanup until end of full expression. ! ! 1998-10-21 Jason Merrill ! ! * typeck.c (build_component_ref): Use of a type here is an error. ! ! 1998-10-19 Jason Merrill ! ! Revamp references to member functions. ! * method.c (hack_identifier): Call build_component_ref for a ! reference to a member function. ! * typeck.c (build_component_ref): Only return a single function ! if it's static. Otherwise, return a COMPONENT_REF. ! (build_x_function_call): Handle a COMPONENT_REF. ! (build_unary_op): Handle all unknown-type things. ! * decl2.c (arg_assoc): Handle COMPONENT_REF. ! * class.c (instantiate_type): Complain if the function we get is a ! nonstatic member function. Remove code for finding "compatible" ! functions. ! * pt.c (tsubst_copy): Handle NOP_EXPR. ! * tree.c (build_dummy_object): New fn. ! (maybe_dummy_object): New fn. ! (is_dummy_object): New fn. ! * cp-tree.h: Declare them. ! * cvt.c (cp_convert_to_pointer): Use maybe_dummy_object. ! * error.c (dump_expr, case OFFSET_REF): Use is_dummy_object. ! * init.c (build_member_call): Use maybe_dummy_object and ! is_dummy_object. ! (build_offset_ref): Use maybe_dummy_object. ! (resolve_offset_ref): Use is_dummy_object. ! * typeck.c (build_x_function_call): Call build_dummy_object. ! (unary_complex_lvalue): Call is_dummy_object. ! ! * typeck.c (build_component_addr): Make sure field is a field. ! ! * call.c (build_new_op): Delete obsolete code. ! ! * pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args. ! ! 1998-10-18 Martin von Löwis ! ! * decl2.c (validate_nonmember_using_decl): Fix using-directives of ! std if std is ignored. ! ! 1998-10-18 Jason Merrill ! ! * decl.c (grokvardecl): Fix thinko. ! ! * decl.c (grokdeclarator): Embedded attrs bind to the right, ! not the left. ! ! * parse.y (fn.def2): Fix 'attrs' format. ! ! 1998-10-18 Alastair J. Houghton ! ! * Makefile.in (CONFLICTS): Update. ! * parse.y (expr_or_declarator_intern): New rule. ! (expr_or_declarator, direct_notype_declarator, primary, ! functional_cast): Use it. ! (notype_declarator_intern): New rule. ! (notype_declarator, complex_notype_declarator): Use it. ! ! 1998-10-17 Jason Merrill ! ! * decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate. ! (grokvardecl): Likewise. ! ! Sat Oct 17 23:27:20 1998 Kaveh R. Ghazi ! ! * class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR). ! (add_method): Likewise for arguments 1 & 2 of `bcopy'. ! ! * decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN. ! ! * pt.c (process_partial_specialization): Cast 1st argument of ! `bzero' to (PTR). ! ! * tree.c (build_base_fields): Cast `base_align' to (int) when ! comparing against one. ! ! 1998-10-16 Mark Mitchell ! ! * decl.c (lookup_name_real): Handle template parameters for member ! templates where said parameters have the same name as the ! surrounding class. ! ! * decl.c (expand_static_init): Build cleanups before entering the ! anonymous function used to do them to avoid access-checking ! confusion. ! ! * decl.c (grokfndecl): Add back call to cplus_decl_attributes ! accidentally removed by previous change, and make DECL_RTL here. ! * class.c (add_method): Don't make DECL_RTL here. ! ! * pt.c (for_each_template_parm): Don't examine uninstantiated ! default arguments. ! ! 1998-10-16 Dave Brolley ! ! * lex.c (real_yylex): Fix unaligned access of wchar_t. ! ! 1998-10-16 Mark Mitchell ! ! * class.c (add_method): Fix documentation to reflect previous ! changes. Check for duplicate method declarations here. ! * decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL ! correctly; such things never match. ! (grokfndecl): Don't look for duplicate methods here. ! * decl2.c (check_classfn): Don't assume names are mangled. ! Don't add bogus member function declarations to a class before the ! class type is complete. ! (grokfield): Reformat error message. ! * method.c (set_mangled_name_for_decl): Don't mangle names while ! processing_template_decl. ! ! 1998-10-16 Jason Merrill ! ! * typeck.c (build_indirect_ref): Complain about a pointer to data ! member, too. ! * typeck2.c (build_m_component_ref): Don't indirect a pointer to ! data member. ! * init.c (resolve_offset_ref): Don't undo the above. ! ! * cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros. ! (struct lang_decl_flags): Add `bitfield'. ! * class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of ! DECL_BIT_FIELD. ! * decl2.c (grokbitfield, grok_alignof): Likewise. ! * init.c (build_offset_ref): Likewise. ! * typeck.c (build_component_addr, expr_sizeof): Likewise. ! * cvt.c (build_up_reference): Don't crash if taking the address ! returns error_mark_node. ! ! * decl.c (grokfndecl): Also check ctype when checking for ::main(). ! ! 1998-10-15 Jason Merrill ! ! * decl.c (grokfndecl): ::main and __builtin_* get C linkage. ! Do mangling here. ! (grokdeclarator): Instead of here. ! * friend.c (do_friend): Lose special handling of ::main and ! __builtin_*. ! * cp-tree.h (DECL_MAIN_P): Check for C linkage. ! ! * spew.c (yylex): Clear looking_for_typename if we got ! 'enum { ... };'. ! ! 1998-10-15 Mark Mitchell ! ! * class.c (maybe_warn_about_overly_private_class): Improve error ! messages for class with only private constructors. ! ! * cp-tree.def (TYPENAME_TYPE): Add to documentation. ! * cp-tree.h (TYPENAME_TYPE_FULLNAME): Document. ! (build_typename_type): New function. ! * decl.c (build_typename_type): Broken out from ... ! (make_typename_type): Use it. ! * search.c (lookup_field): Likewise. ! ! 1998-10-14 Benjamin Kosnik ! ! * pt.c (convert_nontype_argument): Check against type_referred_to. ! * decl.c (grokvardecl): Check for declarator name before building ! DECL_ASSEMBLER_NAME. ! ! 1998-10-14 Mark Mitchell ! ! * pt.c (lookup_template_class): Add comment. ! (instantiate_class_template): Don't mark the _TYPE node for ! member class templates as an instantiation. ! ! 1998-10-14 Jason Merrill ! ! * decl.c (grokfndecl): Fix my thinko. ! ! 1998-10-13 Jason Merrill ! ! * tinfo2.cc (fast_compare): Remove. ! (before): Just use strcmp. ! * tinfo.cc (operator==): Just use strcmp. ! ! 1998-10-13 Klaus-Georg Adams ! ! * decl.c (grokfndecl): Don't check for linkage in `extern "C"' ! declarations. ! ! 1998-10-13 Mark Mitchell ! ! * cp-tree.h (specializations_of_same_template_p): Remove. ! * search.c (get_template_base): Don't use it. ! (get_template_base_recursive): Likewise. ! * pt.c (specializations_of_same_template_p): Remove. ! (unify): Don't use it. ! (lookup_template_class): Find the correct parent when setting ! CLASSTYPE_TI_TEMPLATE. ! ! 1998-10-12 Jason Merrill ! ! * tinfo.cc (operator==): Always compare names. ! ! 1998-10-12 Herman ten Brugge ! ! * decl.c (start_function): Fix cut-and-paste error. ! ! 1998-10-12 Jason Merrill ! ! * inc/typeinfo: Add #pragma interface. ! (operator!=): Just call operator==. ! * tinfo.cc: Add #pragma implementation. ! (operator==): Move from inc/typeinfo and tinfo2.cc. ! Check __COMMON_UNRELIABLE instead of _WIN32. ! ! * typeck2.c (my_friendly_abort): Add URL. ! ! 1998-10-12 Alastair J. Houghton ! ! * decl.c (start_method): Added extra parameter for attributes. ! * cp-tree.h (start_method): Update prototype. ! * parse.y (fn.def2): Update start_method parameter list. ! ! 1998-10-11 Mark Mitchell ! ! * cp-tree.h (specializations_of_same_template_p): Declare. ! * pt.c (specializations_of_same_template_p): New function. ! (unify): Use it. ! * search.c (get_template_base): Use it. ! (get_template_base_recursive): Likewise. ! ! 1998-10-10 Manfred Hollstein ! ! * decl2.c (start_objects): Add new variable `joiner' and ! initialize it properly. ! ! 1998-10-09 Mark Mitchell ! ! * search.c (expand_upcast_fixups): Tweak to match 1998-10-07 ! change to vtable types. ! ! * cvt.c (ocp_convert): Avoid infinite recursion caused by ! 1998-10-03 change. ! ! 1998-10-08 Jason Merrill ! ! * pt.c (resolve_overloaded_unification): New fn. ! (try_one_overload): Likewise. ! (unify): Don't fail on unknown type. ! (type_unification_real): Likewise. Use resolve_overloaded_unification ! to handle an overloaded argument. ! (template_args_equal): Split out... ! (comp_template_args): From here. ! (determine_specialization): Also allow a template with more ! parms than were explicitly specified. ! * cp-tree.h: Add template_args_equal. ! * call.c (resolve_args): Remove TEMPLATE_ID_EXPR code. ! ! Thu Oct 8 15:58:30 1998 Anthony Green ! ! * semantics.c (finish_asm_stmt): Revert my 1998-09-28 ! change. ! ! Thu Oct 8 06:00:19 1998 Jeffrey A Law (law@cygnus.com) ! ! * typeck.c (unsigned_type): Only return TItype nodes when ! HOST_BITS_PER_WIDE_INT is >= 64 bits. ! (signed_type): Likewise. ! * decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare ! when HOST_BITS_PER_WIDE_INT is >= 64 bits. ! (init_decl_processing): Only create TItype nodes when ! HOST_BITS_PER_WIDE_INT is >= 64 bits. ! * cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare ! when HOST_BITS_PER_WIDE_INT is >= 64 bits. ! ! Wed Oct 7 12:32:44 1998 Kaveh R. Ghazi ! ! * Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf. ! (gxx.gperf): Update comments describing invocation flags. ! (hash.h): Regenerate using gperf 2.7.1 (19981006 egcs). ! ! 1998-10-07 Mark Mitchell ! ! * class.c (finish_struct_1): Add commentary on previous change. ! ! * cp-tree.h (vtbl_ptr_type_node): New variable. ! * class.c (build_vtbl_ref): Don't indirect through the vptr; it's ! already of the right type. ! (finish_struct_1): Make the vptr be of type vtbl_ptr_type_node. ! Simplify code to grow vtable. ! * decl.c (vtbl_ptr_type_node): Define. ! (init_decl_processing): Initialize it. ! ! 1998-10-06 Mark Mitchell ! ! * cp-tree.def (PTRMEM_CST): New tree node. ! * cp-tree.h (ptrmem_cst): New type. ! (lang_type): Remove local_typedecls. ! (dummy): Increase to 12 bits from 11. ! (CLASSTYPE_LOCAL_TYPEDECLS): Remove. ! (PTRMEM_CST_CLASS): New macro. ! (PTRMEM_CST_MEMBER): Likewise. ! (current_access_specifier): New variable. ! (current_class_type): Remove duplicate declaration. ! (finish_struct): Change prototype. ! (unreverse_member_declarations): New function. ! (pushdecl_class_level): Change prototype. ! (grok_enum_decls): Remove. ! (fixup_anonymous_union): New function. ! (grok_x_components): Change prototype. ! (tsubst_chain): Remove. ! (finish_member_template_decl): Likewise. ! (check_explicit_specialization): Fix indentation. ! (finish_class_definition): Change prototype. ! (finish_member_class_template): Likewise. ! (finish_member_declaration): New function. ! (check_multiple_declarators): Likewise. ! * class.c (class_stack_node_t): New type. ! (current_class_base): Remove. ! (current_class_stack): Change type. ! (current_access_specifier): New variable. ! (grow_method): Remove. ! (check_member_decl_is_same_in_complete_scope): Break out from ! finish_struct. ! (make_method_vec): New function. ! (free_method_vec): Likewise. ! (add_implicitly_declared_members): Break out from finish_struct_1. ! (free_method_vecs): New variable. ! (add_method): Rework for direct use from parser. ! (handle_using_decl): Watch for NULL_TREE while iterating through ! CLASSTYPE_METHOD_VEC. ! (finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here; ! just do some error-checking. ! (warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC. ! (finish_struct_1): Simplify. Use add_implicitly_declared_members. ! (finish_struct): Change prototype. Simplify; fields and methods ! are already set up at this point. ! (init_class_processing): Set up current_class_stack. ! (pushclass): Save current_access_specifier. ! (popclass): Restore it. ! (currently_open_class): Simplify. ! (build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS. ! * decl.c (saved_scope): Add access_specifier. ! (maybe_push_to_top_level): Save it. ! (pop_from_top_level): Restore it. ! (maybe_process_template_type_declaration): Use ! finish_member_declaration. ! (pushtag): Likewise. ! (pushdecl_class_level): Don't return a value. ! (fixup_anonymous_union): Break out from grok_x_components. ! (shadow_tag): Use it. ! (xref_tag): Complain about using an elaborated type specifier to ! reference a template type parameter or typedef name. ! (xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS. ! (current_local_enum): Remove. ! (build_enumerator): Call finish_member_declaration. ! (grok_enum_decls): Remove. ! * decl2.c (grok_x_components): Simplify. ! (check_classfn): Change iteration through CLASSTYPE_METHOD_VEC. ! (grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS. ! (merge_functions): Add to comment. ! (arg_assoc_type): Prototype. ! (arg_assoc): Pass as many arguments as there are parameters. ! * error.c (dump_expr): Handle PTRMEM_CST. Improve handling of ! OFFSET_REF. ! * expr.c (cpls_expand_expr): Remove dead code. Handle ! PTRMEM_CST. ! * friend.c (do_friend): Lookup friends when in nested classes. ! Change comments. ! * init.c (build_offset_ref): Do lookup even for classes that are ! only partially defined. ! (decl_constant_value): Remove dead code. ! * method.c (build_overload_value): Remove hack where by TYPE was ! not a TYPE. Handle PTRMEM_CST. ! (build_template_parm_names): Don't pass a PARM_DECL where a TYPE ! should go. ! * parse.y (components, notype_components, component_decl, ! component_decl_1, component_declarator, component_declarator0): ! Now all are itype rather than ttype. Rework to add members to ! classes on the fly. ! (typesqpecqual_reserved): Use check_multiple_declarators. ! (structsp): Update class to finish_class_definition. ! (do_xref_defn): Unsplit into named_class_head. ! (access_specifier): Set current_access_specifier. ! * pt.c (set_current_access_from_decl): New function. ! (finish_member_template_decl): Don't take the parameters. ! (comp_template_args): Make more robust. ! (lookup_template_class): Don't use current_local_enum. ! (for_each_template_parm): Handle PTRMEM_CST. ! (instantiate_class_template): Use set_current_access_from_decl, ! finish_member_declaration and unreverse_member_declarations. Set ! lineno/input_filename before generating implicit member functions. ! (type_unification_real): Don't assume back-unification happens ! only for the last argument. ! (regenerate_decl_from_template): Call pushclass a bit earlier. ! (tsubst_chain): Remove. ! (tsubst_enum): Use set_current_access_from_decl. ! (set_mangled_name_for_template_decl): Fix indentation. ! * search.c (lookup_fnfields_1): Change iteration through ! CLASSTYPE_METHOD_VEC. ! (dfs_pushdecls): Likewise. ! (dfs_compress_decls): Likewise. ! (add_conversions): Likewise. ! * semantics.c (finish_class_definition): Don't take components. ! Change call to finish_struct. ! (finish_member_declaration): New function. ! (finish_member_class_template): Don't take template parameters. ! Change call to grok_x_components. Call finish_member_template_decl. ! (check_multiple_declarators): New function. ! * sig.c (append_signature_fields): Work from the TYPE_METHODS, not ! a passed in fieldlist. ! * tree.c (search_tree): Handle PTRMEM_CST. ! (mapcar): Likewise. ! * typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not ! INTEGER_CSTs, for pointer-to-data members. ! ! * call.c (resolve_args): Resolve template specializations, if ! possible. ! ! Tue Oct 6 07:57:26 1998 Kaveh R. Ghazi ! ! * Makefile.in (spew.o): Depend on toplev.h. ! ! * call.c (compare_ics): Initialize variables `deref_from_type2', ! `deref_to_type1' and `deref_to_type2'. ! ! * except.c (get_eh_type): Hide prototype and definition. ! (process_start_catch_block_old): Remove unused static prototype. ! ! * pt.c (tsubst_decl): Initialize variable `argvec'. ! ! * spew.c: Include toplev.h. ! ! 1998-10-05 Jason Merrill ! ! * pt.c (instantiate_decl): Do save and restore file position. ! ! 1998-10-05 Martin von Löwis ! ! * method.c (build_decl_overload_real): Clear ! numeric_output_need_bar after __. ! ! 1998-10-05 Nathan Sidwell ! ! * call.c (build_new_method_call): Issue 'incomplete type' error, ! if class is not defined. ! ! 1998-10-05 Kaveh R. Ghazi ! ! * call.c (build_object_call): Move declaration of variable ! `fn' into the scope where it is used. Don't access variable ! `fn' when it is uninitialized, instead use `fns'. ! ! 1998-10-04 Theodore Papadopoulo ! ! * errfn.c (cp_thing): Print buf as a string not as a printf format ! to avoid problems with the operator%. Consequently, `%%' sequences ! in format are copied as `%' in buf. ! ! 1998-10-04 Jason Merrill ! ! * pt.c (pop_tinst_level): Call extract_interface_info. ! (instantiate_decl): Don't save and restore file position. ! * decl.c (cp_finish_decl): Make statics in extern inlines and ! templates common, if possible and the target doesn't support weak ! symbols. ! * decl.c (grokdeclarator): Remove redundant calls to ! build_type_variant and some duplicated code. ! * sig.c (build_signature_reference_type): Only take the type parm. ! (build_signature_pointer_type): Likewise. ! * tree.c (build_cplus_method_type): Adjust. ! * cp-tree.h: Update. ! 1998-10-04 Mark Mitchell ! * call.c (build_over_call): Make pedwarns about dropped qualifiers ! into full-fledged errors. ! * cvt.c (convert_to_reference): Likewise. ! * typeck.c (convert_for_assignment): Likewise. ! * search.c (expand_upcast_vtables): In addition to unsetting ! TREE_READONLY, remove top-level const type qualifier. ! 1998-10-03 Mark Mitchell ! * class.c (current_class_ptr, current_class_ref): Clarify ! documentation. ! * cvt.c (ocp_convert): Don't expect fold to remove all trivial ! NOP type conversions. ! * decl.c (decls_match): Use comptypes directly; ignore ! qualifiers on the DECL. ! (duplicate_decls): Remove qualifier checks on DECL. ! (grokdeclarator): Make the type built up include top-level ! qualifiers. ! * decl2.c (do_dtors): Fix spelling error. ! * error.c (dump_simple_decl): Don't look at qualifiers on the decl ! when printing type information. ! * init.c (build_new_1): Add documentation. Deal with the fact ! that type of allocated memory now contains qualifiers. ! * lex.c (is_global): Improve error-recovery. ! * sig.c (build_member_function_pointer): Don't cast away const ! on fields of sigtable_entry_type. ! * tree.c (lvalue_type): Don't look at top-level qualifiers on ! expressions. ! * typeck.c (decay_conversion): Likewise. ! (build_component_ref): Make sure the type of the COMPONENT_REF ! contains top-level qualifiers, as appropriate. Improve ! error-handling. ! (build_indirect_ref): Simplify. Don't strip top-level qualifiers. ! (build_array_ref): Likewise. ! (build_unary_op): Improve error-recovery. ! (unary_complex_lvalue): Make taking the address a bound member ! function an error, not a sorry. ! (build_conditional_expr): Look at the type qualifiers, not the ! qualifiers on the expression itself. ! 1998-10-03 Jason Merrill ! * decl2.c (merge_functions): Remove duplicates. ! * decl2.c: Add -f{no-,}implicit-inline-templates. ! (import_export_decl): Check it. ! * decl.c (lookup_name_real): Template parms also take precedence ! over implicit typename. Only warn if yylex. ! ! * typeck.c (build_conditional_expr): Only fold if ifexp is an ! INTEGER_CST. ! ! * decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN ! instead of linkage. ! ! 1998-10-01 Jason Merrill ! ! * cp-tree.h (FORMAT_VBASE_NAME): New macro. ! * class.c (build_vbase_pointer): Use it. ! * rtti.c (expand_class_desc): Likewise. ! * tree.c (build_vbase_pointer_fields): Likewise. ! ! Thu Oct 1 10:43:45 1998 Nick Clifton ! ! * decl.c (start_decl): Add invocation of ! SET_DEFAULT_DECL_ATTRIBUTES, if defined. ! (start_function): Add invocation of ! SET_DEFAULT_DECL_ATTRIBUTES, if defined. ! ! * lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with ! HANDLE_GENERIC_PRAGMAS. ! ! 1998-09-28 Anthony Green ! ! * semantics.c (finish_asm_stmt): Always permit volatile asms. ! ! 1998-09-28 Mark Mitchell * decl.c (grokdeclarator): Tighten checks for invalid destructors. Improve error-messages and error-recovery. ! * decl2.c (check_classfn): Don't assume that mangled destructor names contain type information. ! 1998-09-25 Jason Merrill ! * search.c (get_base_distance): Remove assert. ! * decl2.c (build_anon_union_vars): Don't process a field with no ! name. ! (finish_anon_union): Also complain about local anon unions with no ! members. ! 1998-09-25 Martin von Löwis ! * decl.c (lookup_namespace_name): If the name is a namespace, ! return it immediately. ! ! Fri Sep 25 11:45:38 1998 Kaveh R. Ghazi ! ! * cp-tree.h (define_case_label): Remove unused parameter. ! (check_java_method): Likewise. ! (grokclassfn): Likewise. ! (expand_aggr_init): Likewise. ! (build_x_delete): Likewise. ! (maybe_end_member_template_processing): Likewise. ! (unshare_base_binfos): Add prototype. ! (string_conv_p): Likewise. ! (my_friendly_abort): Mark with ATTRIBUTE_NORETURN. ! ! * cvt.c (build_up_reference): Remove unused parameter ! `checkconst', all callers changed. ! (build_type_conversion): Mark parameter `code' with ! ATTRIBUTE_UNUSED. ! (build_expr_type_conversion): Initialize variable `conv'. ! ! * decl.c (push_namespace): Initialize variable `d'. ! (define_case_label): Remove unused parameter `decl', all callers ! changed. ! ! * decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter ! `argc' with ATTRIBUTE_UNUSED. ! (grokclassfn): Remove unused parameter `cname', all callers ! changed. ! (check_java_method): Likewise for parameter `ctype'. ! (copy_assignment_arg_p): Mark parameter `virtualp' with ! ATTRIBUTE_UNUSED. ! (finish_prevtable_vardecl): Likewise for parameter `prev'. ! ! * expr.c (extract_init): Likewise for parameters `decl' and `init'. ! ! * init.c (expand_aggr_init_1): Remove unused parameter ! `alias_this', all callers changed. ! (expand_aggr_init): Likewise. ! (expand_default_init): Likewise. ! (build_new_1): Initialize variable `susp'. ! (build_x_delete): Remove unused parameter `type', all callers ! changed. ! ! * lex.c (set_typedecl_interface_info): Mark parameter `prev' with ! ATTRIBUTE_UNUSED. ! (readescape): Use (unsigned) value in shift. ! (real_yylex): Likewise. Likewise. Also cast `sizeof' to int when ! comparing to a signed quantity. ! ! * pt.c (maybe_end_member_template_processing): Remove unused ! parameter `decl', all callers changed. ! (check_explicit_specialization): Add braces around empty body in ! an else-statement. ! (current_template_args): Initialize variable `args'. ! (lookup_template_class): Likewise for variable `prev_local_enum'. ! (tsubst_decl): Likewise for variable `r'. ! (set_mangled_name_for_template_decl): Initialize variable ! `context'. ! ! * spew.c (scan_tokens): Change type of parameter `n' to unsigned. ! Likewise for variable `i'. ! (yylex): Initialize variable `trrr'. ! ! * typeck.c (compparms): Mark variable `strict' with ! ATTRIBUTE_UNUSED. ! ! * xref.c (simplify_type): Cast argument of ctype function to ! `unsigned char'. ! ! 1998-09-24 Mark Mitchell ! ! * cp-tree.h (language_lvalue_valid): Remove. ! * decl.c (grokdeclarator): Don't disallow references to functions. ! * tree.c (lvalue_p_1): New function, combining duplicated ! code from ... ! (lvalue_p): Use it. ! (real_lvalue_p): Likewise. ! * typeck.c (language_lvalue_valid): Remove. ! (build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though ! they don't have TREE_READONLY set. ! * typeck2.c (readonly_error): Add case for FUNCTION_DECLs. ! ! 1998-09-24 Benjamin Kosnik ! ! * spew.c (yylex): Give diagnostic. ! * hash.h (is_reserved_word): Add export. ! * gxx.gperf: Likewise. ! * lex.h (rid): Add RID_EXPORT. ! * lex.c (init_parse): Likewise. ! ! Tue Sep 22 21:01:19 1998 Gerald Pfeifer ! ! * friend.c (do_friend): Make warning a full sentence. ! ! 1998-09-22 Mark Mitchell ! ! * parse.y (component_decl_list): Improve error-recovery. ! ! 1998-09-22 Benjamin Kosnik ! ! * decl.c (make_typename_type): Move error to point where name ! variable can be used by dump_type. ! ! 1998-09-22 Mark Mitchell ! ! * decl.c (grokfndecl): Improve error-recovery. ! * decl2.c (grokfield): Likewise. ! * pt.c (finish_member_template_decl): Likewise. ! ! 1998-09-20 Martin von Löwis ! ! * method.c (hack_identifier): Finding multiple members is always ! an error. ! ! 1998-09-21 Per Bothner ! ! * Make-lang.in (c++-filt): Link libiberty.a after cxxmain.o. ! ! Mon Sep 21 01:53:05 1998 Felix Lee ! ! * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT (). ! ! 1998-09-20 Mark Mitchell ! ! * class.c (maybe_warn_about_overly_private_class): Reformat. ! ! 1998-09-17 Andrew MacLeod ! ! * exception.cc (__cplus_type_matcher): Realign some code. ! ! 1998-09-16 Mark Mitchell ! ! * Make-lang.in (tinfo.o): Use CXXFLAGS when compiling. ! (tinfo2.o): Likewise. ! (exception.o): Likewise. ! (new.o): Likewise. ! (opnew.o): Likewise. ! (opnewnt.o): Likewise. ! (opvnew.o): Likewise. ! (opvnewnt.o): Likewise. ! (opdel.o): Likewise. ! (opdelnt.o): Likewise. ! (opvdel.o): Likewise. ! (opvdelnt.o): Likewise. ! ! 1998-09-16 Richard Henderson ! ! * decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp. ! ! 1998-09-15 Alexandre Oliva ! ! * call.c (build_field_call): Handle static data members too. ! ! * typeck.c (comptypes): When comparing pointer types, check ! whether referred types match even in strictest modes. ! ! 1998-09-15 Mark Mitchell ! ! * cp-tree.h: Revert previous change. ! (finish_struct_methods): Remove declaration. ! * class.c: Revert previous change. ! (maybe_warn_about_overly_private_class): New function. ! (finish_struct_methods): Declare here, and make static. Remove ! unnecessary parameters. Tidy slightly. Use ! maybe_warn_about_overly_private_class. ! (finish_struct_1): Adjust. Remove check for private constructors, ! now done elsewhere. ! (finish_struct): Adjust. ! ! 1998-09-15 Andrew MacLeod ! ! * except.c (expand_start_catch_block): No need to check for new ! exception model. ! (process_start_catch_block_old): Deleted. ! (process_start_catch_block): Add call to start_decl_1(). ! (expand_end_catch_block): Add call to end_catch_handler(). ! * exception.cc (__cplus_type_matcher): Only check the exception ! language if there is an exception table. ! ! 1998-09-15 Andrew MacLeod ! ! * search.c (expand_indirect_vtbls_init): Mark temporary stack slots ! as used to prevent conflicts with virtual function tables. ! ! 1998-09-14 Mark Mitchell ! ! * cp-tree.h (lang_type): Add has_non_private_static_mem_fn. ! (CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it. ! * class.c (maybe_class_too_private_p): New function. ! (finish_struct_methods): Use it. ! (finish_struct_1): Likewise. ! (finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if ! appropriate. ! ! * pt.c (check_specialization_scope): Fix spelling error. ! (check_explicit_specialization): Remove code to handle explicit ! specializations in class scope; they are now correctly diagnosed ! as errors. ! ! 1998-09-10 Mark Mitchell ! ! * decl.c (pushdecl): Don't copy types if the ! DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the ! type. ! ! 1998-09-09 Kriang Lerdsuwanakij ! ! * class.c (get_enclosing_class): New function. ! (is_base_of_enclosing_class): Likewise. ! * cp-tree.h (get_enclosing_class): Declare. ! (is_base_of_enclosing_class): Likewise. ! * pt.c (coerce_template_parms): Use them. ! ! 1998-09-09 Jason Merrill ! ! * g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is ! null to decide whether to use it. ! ! * error.c (dump_type_real): Handle NAMESPACE_DECL. ! * parse.y (base_class.1): Avoid crash on error. ! ! 1998-09-08 Martin von Löwis ! ! * decl.c (make_typename_type): If context is a namespace, the code ! is in error. ! ! 1998-09-08 Mumit Khan ! ! * parse.y (nomods_initdcl0): Set up the parser stack correctly. ! ! 1998-09-08 Mark Mitchell ! ! * cp-tree.h (anonymous_namespace_name): Declare. ! * decl.c: Define it. ! (push_namespace): Use anonymous_namespace_name, rather than local ! static anon_name. ! * error.c (dump_decl): If a namespace is named ! anonymous_namespace_name, call it {anonymous}. ! ! * decl.c (grokparms): Distinguish between references and pointers ! in error message. ! ! 1998-09-08 Richard Henderson ! Mark Mitchell ! ! * pt.c (process_partial_specialization): Consistently allocate ! and zero tpd.parms based on ntparms. Use tpd2.parms, not ! tpd.parms, where appropriate. ! ! Sun Sep 6 00:00:51 1998 Jeffrey A Law (law@cygnus.com) ! ! * Makefile.in (INCLUDES): Update after recent toplevel gcc ! reorganizations. ! ! 1998-09-05 Mark Mitchell ! ! * cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove. ! * class.c (finish_struct): Remove hackery to deal with explicit ! specializations in class scope. ! * decl.c (grokfndecl): Improve error-recovery. ! * decl2.c (grokfield): Likewise. ! * pt.c (check_specialization_scope): New function. ! (begin_specialization): Call it. ! (process_partial_specialization): New function, split out from ! push_template_decl. Check partial specializations more ! stringently. ! (push_template_decl): Call it. ! (check_explicit_specialization): Don't attempt to handle explicit ! specializations in class scope. ! (template_parm_data): Document. Add current_arg and ! arg_uses_template_parms. ! (mark_template_parm): Set it. ! (tsubst_arg_types): Remove unused variable. ! * semantics.c (begin_class_definition): Tweak. ! ! 1998-09-04 Mark Mitchell ! ! * inc/typeinfo (type_info::type_info(const char*)): Make ! `explicit'. ! ! * cp-tree.h (hash_tree_cons_simple): New macro. ! * pt.c (tsubst_arg_types): New function. Use hash_tree_cons. ! (coerce_template_parms): Use make_temp_vec, instead of ! make_tree_vec. Document this behavior. ! (lookup_template_class): Likewise. ! (tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types. ! Remove dead code (and add assertion to check its deadness). Fix ! bug w.r.t. exception specifications. ! ! 1998-09-03 Jason Merrill ! ! * decl2.c (import_export_vtable): Always make artificials comdat. ! (import_export_decl): Likewise. ! * pt.c (mark_decl_instantiated): Likewise. ! ! 1998-09-03 Mark Mitchell ! ! * cp-tree.h (finish_globally_qualified_member_call_expr): ! Rename to ... ! (finish_qualified_call_expr). ! * semantics.c: Likewise. ! * parse.y (primary): Use it. ! * method.c (hack_identifier): Remove redundant code. ! ! * init.c (resolve_offset_ref): Call convert_from_reference to ! handle members of reference type. Improve error recovery. ! ! 1998-09-03 Benjamin Kosnik ! ! * cp-tree.h: Declare warn_nontemplate_friend. ! * decl2.c (lang_decode_option): Set. ! * lang-options.h: Add -Wnon-template-friend. ! * friend.c (do_friend): Use to toggle non-template function warning. ! ! 1998-09-03 Mark Mitchell ! ! * decl.c (finish_enum): Don't resolve CONST_DECLs to their ! corresponding INTEGER_CSTs when processing_template_decl. ! * pt.c (tsubst_enum): Tweak accordingly. ! ! 1998-09-03 Benjamin Kosnik ! ! * decl.c (pushdecl_class_level): Add warning here. ! (pushdecl): Tweak. ! ! 1998-09-02 Jason Merrill ! ! * cvt.c (convert_pointer_to_real): Tidy. ! * search.c (get_base_distance_recursive): Simplify. ! (get_base_distance): Likewise. ! ! * pt.c (unify): Only special-case INTEGER_TYPE if it uses template ! parms. ! ! Wed Sep 02 09:25:29 1998 Nick Clifton ! ! * lex.c (check_newline): Call HANDLE_PRAGMA before ! HANDLE_SYSV_PRAGMA if both are defined. Generate warning messages ! if unknown pragmas are encountered. ! (handle_sysv_pragma): Interpret return code from ! handle_pragma_token (). Return success/failure indication rather ! than next unprocessed character. ! (pragma_getc): New function: retrieves characters from the ! input stream. Defined when HANDLE_PRAGMA is defined. ! (pragma_ungetc): New function: replaces characters back into the ! input stream. Defined when HANDLE_PRAGMA is defined. ! ! 1998-09-01 Jason Merrill ! ! * decl2.c (output_vtable_inherit): Use %cDIGIT in the operands. ! * class.c (build_vtable_entry_ref): Likewise. ! ! 1998-09-01 Mark Mitchell ! ! * cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro. ! * decl2.c (import_export_decl): Likewise. ! * pt.c (instantiate_decl): Use it. ! ! 1998-09-01 Jason Merrill ! ! * decl.c (lookup_name_real): Also do implicit typename thing for ! artificial TYPE_DECLs. ! * search.c (lookup_field): Likewise. ! (lookup_fnfields, lookup_field): Adjust for implicit typename kludge. ! * semantics.c (begin_constructor_declarator): Use enter_scope_of. ! (enter_scope_of): Extract type from implicit typename. ! (begin_class_definition): Likewise. ! * lex.c (identifier_type): Handle implicit typename when checking ! for SELFNAME. ! ! * cp-tree.h: Declare flag_strict_prototype. ! * lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if ! -fstrict-prototype. ! * decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't ! specified, set it to the value of pedantic. ! ! 1998-09-01 Mark Mitchell ! ! * decl2.c (arg_assoc): Handle template-id expressions as arguments. ! ! 1998-08-31 Mark Mitchell ! ! * decl.c (finish_enum): Handle member enums of classes declared in ! template functions. ! ! * decl2.c (grok_x_components): Strip attributes before calling ! groktypename. ! ! 1998-08-31 Jason Merrill ! ! * cp-tree.h, decl2.c: Remove support for -fall-virtual, ! -fenum-int-equivalence and -fno-nonnull-objects. ! * class.c (check_for_override): Remove support for -fall-virtual. ! (finish_struct_1): Likewise. ! * call.c (build_new_op): Remove support for -fenum-int-equivalence. ! * typeck.c (build_binary_op_nodefault): Likewise. ! * cvt.c (ocp_convert): Likewise. ! * call.c (build_vfield_ref): Remove support for -fno-nonnull-objects. ! * class.c (build_vbase_path): Likewise. ! ! Sun Aug 30 22:16:31 1998 H.J. Lu (hjl@gnu.org) ! ! * Makefile.in (INTERFACE): New, set to 1. ! ! 1998-08-30 Mark Mitchell ! ! * error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when ! comparing with global_namespace. ! (dump_aggr_type): Likewise. ! ! * decl.c (grokfndecl): Issue error on declaration of friend ! templates with explicit template arguments. ! ! * pt.c (convert_template_argument): New function, split out ! from... ! (coerce_template_parms): Here. ! (tsubst): Attempt better error-recovery. ! ! 1998-08-28 Benjamin Kosnik ! ! * pt.c (decl_template_parm_p): Add checks for ! TEMPLATE_TEMPLATE_PARM. ! ! 1998-08-28 Mark Mitchell ! ! * lex.c (do_identifier): Fix thinko in previous change. ! ! 1998-08-28 Jason Merrill ! ! * search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns. ! * decl2.c (output_vtable_inherit): Call binfo_for_vtable. ! ! 1998-08-28 Richard Henderson ! ! Add support for discarding unused virtual functions. ! * lang-options.h: Add -fvtable-gc. ! * cp-tree.h: Add flag_vtable_gc. ! * decl2.c (output_vtable_inherit): New fn. ! (finish_vtable_vardecl): Call it. ! * class.c (build_vtable_entry_ref): New fn. ! (build_vtbl_ref): Call it. ! ! 1998-08-28 Mark Mitchell ! ! * cp-tree.h (build_enumerator): Take the enumeration type as a ! parameter. ! * decl.c (finish_enum): Don't set the TREE_TYPE for the ! enumeration constant values if we're processing_template_decls. ! Don't set the type for the CONST_DECLs either; that's done in ! build_enumerator. ! (build_enumerator): Take the enumeration type as a ! parameter. ! * lex.c (do_identifier): Don't resolve enumeration constants while ! processing template declarations, even if they happen to be ! TEMPLATE_PARM_INDEXs. ! ! * parse.y (current_enum_type): New variable. ! (primary): Don't allow statement-expression in local classes just ! as we don't in global classes. ! (structsp): Use current_enum_type. ! (enum_list): Likewise. ! * pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by ! finish_enum; they no longer occur. ! ! * cp-tree.h (finish_base_specifier): New function. ! * parse.y (base_class): Use it. ! * semantics.c (finish_base_specifier): Define it. ! ! * parse.y (structsp): Warn on use of typename outside of template ! declarations. ! ! 1998-08-27 Jason Merrill ! ! * lex.c (handle_cp_pragma): Remove #pragma vtable. ! * lang-options.h: Remove +e options. ! * decl2.c (lang_decode_option): Likewise. ! (import_export_vtable): Don't check write_virtuals. ! (finish_vtable_vardecl, finish_file): Likewise. ! * search.c (dfs_debug_mark): Likewise. ! * semantics.c (begin_class_definition): Likewise. ! * class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise. ! ! * call.c (build_over_call): Check flag_elide_constructors. ! * decl2.c: flag_elide_constructors defaults to 1. ! * typeck.c (convert_arguments): Remove return_loc parm. ! (build_function_call_real): Adjust. ! ! * search.c: Tear out all mi_matrix and memoize code. ! (lookup_field, lookup_fnfields): Use scratch_tree_cons. ! * lang-options.h: Remove documentation for -fhandle-exceptions, ! -fmemoize-lookups and -fsave-memoized. ! * cp-tree.h: Lose mi_matrix and memoize support. ! * decl2.c: Ignore -fmemoize-lookups and -fsave-memoized. ! * class.c: Lose struct class_level. ! (pushclass, popclass): Lose memoize support. ! * init.c (build_offset_ref): Likewise. ! ! Never change BINFO_INHERITANCE_CHAIN. ! * init.c (emit_base_init): Change modification of ! BINFO_INHERITANCE_CHAIN to an assert. ! * search.c (get_base_distance_recursive): Likewise. ! (get_base_distance): Likewise. ! (lookup_member): Likewise. ! (convert_pointer_to_single_level): Likewise. ! (lookup_field): Likewise. Lose setting TREE_VIA_* on TREE_LISTs. ! (lookup_fnfields): Likewise. ! * tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos. ! (unshare_base_binfos): Don't call propagate_binfo_offsets. ! (layout_basetypes): Call propagate_binfo_offsets instead of ! unshare_base_binfos. ! * decl.c (xref_basetypes): Call unshare_base_binfos. * pt.c (instantiate_class_template): Likewise. + * tree.c (reverse_path): Remove 'copy' parm; always make a + temporary copy. + * class.c (build_vbase_path): Just call it. + * search.c (compute_access): Likewise. Don't re-reverse. + + 1998-08-27 Mark Mitchell + + * class.c (build_vbase_path): Use reverse_path. + (finish_base_struct): Move warnings for inaccessible bases to + layout_basetypes. + (modify_one_vtable): Remove check of TREE_USED (binfo). + (fixup_vtable_deltas1): Likewise. + * cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here. + (xref_tag): Remove binfos parameter. + (make_binfo): Remove chain parameter. + (reverse_path): Add copy parameter. + * decl.c (init_decl_processing): Change calls to xref_tag. + (xref_tag): Remove binfos parameter. + (xref_basetypes): Change calls to make_binfo. + * decl2.c (grok_x_components): Change calls to xref_tag. + (handle_class_head): Likewise. + * friend.c (do_friend): Likewise. + * lex.c (make_lang_type): Change calls to make_binfo. + * parse.y (structsp): Change calls to xref_tag. + (named_complex_class_head_sans_basetype): Likewise. + (named_class_head): Likewise. + * rtti.c (init_rtti_processing): Likewise. + * search.c (compute_access): Change calls to reverse_path. + (dfs_get_vbase_types): Change calls to make_binfo. + (get_vbase_types): Remove dead code. + * tree.c (unshare_base_binfos): Change calls to make_binfo. + (layout_basetypes): Warn here about inaccessible bases. + (make_binfo): Remove chain parameter. + (reverse_path): Add copy parameter. + + 1998-08-27 Jason Merrill + + * class.c: #if 0 complete_type_p. + * init.c (build_java_class_ref, build_new_1): Remove unused locals. + * method.c (process_overload_item): Likewise. + * typeck.c (comp_target_types): Likewise. ! Stop sharing binfos for indirect virtual bases. ! * tree.c (propagate_binfo_offsets): Unshare vbases, too. ! (layout_basetypes): Likewise. ! (unshare_base_binfos): Copy vbases, too. ! * cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED, ! BINFO_VBASE_INIT_MARKED): Remove obsolete macros. ! (BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED, ! CLEAR_BINFO_PUSHDECLS_MARKED): New macros. ! * search.c (lookup_field, lookup_fnfields, lookup_member): Remove ! reference to BINFO_VIA_PUBLIC. ! (marked_pushdecls_p, unmarked_pushdecls_p): New fns. ! (push_class_decls): Use them. ! (dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED. ! (dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED. ! ! 1998-08-27 Mark Mitchell ! ! * decl.c (build_enumerator): Set DECL_CONTEXT for the ! CONST_DECLs. ! ! 1998-08-26 Mark Mitchell ! ! * cp-tree.h (finish_enum): Change prototype. ! * decl.c (finish_enum): Use TYPE_VALUES, rather than taking a ! VALUES parameter. Don't try to compute mins/maxs if ! processing_template_decl. ! * parse.y (structsp): Use new calling sequence for finish_enum. ! * pt.c (tsubst_enum): Likewise. Take the new type as input. ! (lookup_template_class): Remove unused variables. Tweak. ! Register enums on instantiation list before substituting ! enumeration constants. ! (tsubst_decl): Remove unused variables. ! (regenerate_decl_from_template): Likewise. ! ! * decl.c (duplicate_decls): Don't obliterate the ! DECL_TEMPLATE_INFO for a template if we're not replacing it with ! anything. ! ! * lex.c (do_identifier): Fix typo in comment. ! ! Wed Aug 26 10:54:51 1998 Kaveh R. Ghazi ! ! * errfn.c: Remove stdarg.h/varargs.h. ! * tree.c: Likewise. ! ! 1998-08-25 Brendan Kehoe ! ! * pt.c (tsubst_copy): Only do typename overloading on an ! IDENTIFIER_NODE that happens to look like a typename if it actually ! has a type for us to use. ! 1998-08-25 Jason Merrill ! * typeck.c (comp_cv_target_types): Split out... ! (comp_target_types): From here. Don't allow cv-qual changes under ! a pointer if nptrs == 0. Fix OFFSET_TYPE handling. ! (build_ptrmemfunc): Pass 1 to nptrs. ! * cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes. ! ! 1998-08-25 Mark Mitchell ! ! * search.c (dependent_base_p): Don't compare a binfo to ! current_class_type; use the TREE_TYPE of the binfo instead. ! ! * cp-tree.h (CLASS_TYPE_P): Revise definition. ! ! 1998-08-25 Jason Merrill ! ! * decl.c (duplicate_decls): Don't complain about different ! exceptions from an internal decl even if pedantic. ! ! * typeck.c (convert_for_assignment): Converting from pm of vbase ! to derived is an error, not a sorry. ! ! * call.c (build_over_call): Use convert_pointer_to_real for 'this'. ! * class.c (fixed_type_or_null): Rename from ! resolves_to_fixed_type_p. Return the dynamic type of the ! expression, if fixed, or null. ! (resolves_to_fixed_type_p): Use it. Return 0 if the dynamic type ! does not match the static type. ! (build_vbase_path): Rename 'alias_this' to 'nonnull'. Use ! resolves_to_fixed_type_p again. ! ! 1998-08-24 Mark Mitchell ! ! * pt.c (tsubst_decl): Move special case code for dealing with ! tricky friend templates here from ... ! (regenerate_decl_from_template): Here. ! ! 1998-08-24 Jason Merrill ! ! * decl.c (start_decl): Remove redundant linkage check. ! ! 1998-08-24 Gavin Romig-Koch ! ! * typeck.c (c_expand_return): Handle the case that valtype ! is wider than the functions return type. ! ! 1998-08-24 Mark Mitchell ! ! * cp-tree.h (CLASS_TYPE_P): New macro. ! * decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE. ! * pt.c (process_template_parm): Undo previous change. ! ! 1998-08-24 Benjamin Kosnik ! ! * cp-tree.h: Declare. ! * pt.c (decl_template_parm_p): New function. ! * decl.c (pushdecl): Check decls for redeclaring template parms. ! (xref_tag): Make redeclaration an error, print decl. ! * decl2.c (grokfield): Check field_decls for redeclaration as well. ! ! 1998-08-24 Jason Merrill ! ! * parse.y (primary): Fix up the type of string constants. ! ! 1998-08-24 Mark Mitchell ! ! * typeck.c (convert_for_initialization): Move check for odd uses ! of NULL to avoid duplicate warnings. ! ! 1998-08-24 Jason Merrill ! ! * tree.c (lvalue_type): Fix for arrays. ! * typeck.c (string_conv_p): New fn. ! (convert_for_assignment): Use it. ! (build_unary_op): Use lvalue_type. ! * call.c (standard_conversion, convert_like): Use string_conv_p. ! (add_function_candidate): Use lvalue_type. ! * cvt.c (convert_to_reference): Likewise. ! * decl2.c (lang_decode_option): Ignore -traditional. ! * decl.c (init_decl_processing): flag_writable_strings inhibits ! flag_const_strings. ! ! 1998-08-24 Andrew MacLeod ! ! * lang-options.h (lang_options): Add fconst-strings to the list ! of valid options. ! * decl2.c (lang_f_options, lang_decode_option): Likewise. ! ! 1998-08-24 Nathan Sidwell ! ! * lex.c (real_yylex): Don't warn about long long constants if ! we're allowing long long. ! ! 1998-08-24 Martin von Löwis ! ! * decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of ! accessing bindings directly. ! ! * search.c (my_tree_cons): Reimplement. ! ! * lang-specs.h: Remove __HONOR_STD. ! * inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise. ! ! 1998-08-23 Mark Mitchell ! ! * decl.c (grokdeclarator): Complain about in-class initialization ! of aggregates and/or references. ! * pt.c (process_template_parm): Clear IS_AGGR_TYPE for ! TEMPLATE_TYPE_PARMs. ! ! * decl2.c (grok_array_decl): Add comment. ! (mark_used): Don't instantiate an explicit instantiation. ! * friend.c (make_friend_class): Remove bogus comment. Fix check ! for partial specializations. ! * pt.c (check_explicit_specialization): Don't ! SET_DECL_EXPLICIT_INSTANTIATION here. ! (mark_decl_instantiated): Or here. ! (do_decl_instantiation): Do it here, instead. Add checks for ! duplicate explicit instantiations, etc. Tidy. ! (do_type_instantiation): Likewise. ! (instantiate_decl): Improve comments. Complain about explicit ! instantiations where no definition is available. ! ! * cp-tree.h (ansi_null_node): Remove. ! * call.c (build_over_call): Warn about converting NULL to an ! arithmetic type. ! * cvt.c (build_expr_type_conversion): Likewise. Use ! null_ptr_cst_p instead of expanding it inline. ! * decl.c (ansi_null_node): Remove. ! (init_decl_processing): Make null_node always have integral type. ! * except.c (build_throw): Warn about converting NULL to an ! arithmetic type. ! * lex.c (init_parse): Remove handling of ansi_null_node. ! * pt.c (type_unification_real): Don't convert NULL to void* type. ! * typeck.c (build_binary_op_nodefault): Fix NULL warnings. ! (convert_for_assignment): Warn about converting NULL to an ! arithmetic type. ! (convert_for_initialization): Likewise. ! ! 1998-08-20 Jason Merrill ! ! * tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn. ! * pt.c (coerce_template_parms): Use no_linkage_check. ! * decl.c (grokvardecl): Likewise. ! (grokfndecl): Likewise. Members of anonymous types have no linkage. ! ! * method.c (process_overload_item): Remove useless code. ! ! 1998-08-20 Per Bothner ! ! Handle new'ing of Java classes. ! * init.c (build_class_classref): New function. ! (build_new_1): If type is TYPE_FOR_JAVA: Call _Jv_AllocObject; ! constructor does not return this; don't need to exception-protect. ! ! * pt.c (lookup_template_class): Copy TYPE_FOR_JAVA flag. ! * decl2.c (acceptable_java_type): Handle template-derived types. ! ! 1998-08-20 Per Bothner ! ! * decl2.c (import_export_vtable): Suppress vtables for Java classes. ! ! 1998-08-20 Mark Mitchell ! ! * decl.c (duplicate_decls): Always merge the old and new patterns ! for templates, regardless of whether or not the new one has ! DECL_INITIAL. Don't throw away specializations. Merge ! DECL_SAVED_TREE. ! * pt.c (tsubst_decl): Use the right pattern when calculating the ! complete args for a new template instance. ! (do_decl_instantiation): Fix typo in comment. ! (regenerate_decl_from_template): Deal with tricky friend template ! case. ! (instantiate_decl): Likewise. ! ! Thu Aug 20 09:09:45 1998 Jeffrey A Law (law@cygnus.com) ! ! * init.c (build_builtin_delete_call): Add missing assemble_external ! call. ! ! 1998-08-20 Jason Merrill ! ! * parse.y (notype_unqualified_id): Also accept ~A. ! ! 1998-08-19 Mark Mitchell ! ! * typeck.c (build_binary_op_nodefault): Warn on use of NULL in ! arithmetic. ! * except.c (build_throw): Warn when NULL is thrown, even with ! -ansi. Use ansi_null_node, rather than integer_zero_node, in the ! thrown expression. ! ! * cp-tree.h (ansi_null_node): New variable. ! * decl.c (ansi_null_node): New variable. ! (init_decl_processing): Initialize its type. ! * lex.c (init_parse): Initialize its value. Use ansi_null_node ! for null_node in non-ANSI mode. ! * typeck.c (build_binary_op_nodefault): Use ansi_null_node in ! place of null_node to avoid spurious errors. ! ! 1998-08-17 Mark Mitchell ! ! * cp-tree.h (enter_scope_of): New function. ! * parse.y (complex_direct_notype_declarator): Use it. ! * semantics.c (enter_scope_of): New function. ! ! 1998-08-17 Jason Merrill ! ! * decl.c (grokparms): No, here. ! ! * decl.c (grokdeclarator): Catch parm with pointer to array of ! unknown bound here... ! * method.c (process_overload_item): ...not here. ! * gxxint.texi: Remove obsolete documentation of overloading code. ! * decl.c (finish_enum): Also set TYPE_SIZE_UNIT. ! * class.c (finish_struct_bits): Likewise. ! * tree.c (lvalue_type): Fix for arrays. ! * typeck.c (build_unary_op): Use lvalue_type. ! * call.c (add_function_candidate): Likewise. ! * cvt.c (convert_to_reference): Likewise. ! * decl2.c (lang_decode_option): Ignore -traditional. ! * init.c (build_offset_ref): Don't mess with error_mark_node. ! * lex.c (do_scoped_id): Use cp_error. ! * rtti.c (get_tinfo_fn): Don't mess with the context for now. ! 1998-08-17 Benjamin Kosnik ! * decl.c (grokdeclarator): Allow anonymous types to be cv-qualified. ! Mon Aug 17 10:40:18 1998 Jeffrey A Law (law@cygnus.com) ! * cp-tree.h (set_identifier_local_value): Provide prototype. ! * decl2.c (do_namespace_alias): Remove unused variables `binding' ! and `old'. ! Fri Aug 14 16:42:27 1998 Nick Clifton ! * Makefile.in: Rename BBISON to BISON so that it can be properly ! inherited from the parent makefile. ! 1998-08-13 Jason Merrill ! * lang-options.h: Add -finit-priority. ! * decl2.c: Likewise. Check flag_init_priority instead of ! USE_INIT_PRIORITY. ! * decl2.c (setup_initp): New fn. ! (start_objects, finish_objects, do_ctors): Handle init_priority. ! (do_dtors, finish_file): Likewise. ! 1998-08-13 Jason Merrill ! * pt.c (tsubst_copy): Hush warning. ! * rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P. ! 1998-08-12 Mark Mitchell ! * pt.c (print_template_context): Don't abort when instantiating a ! synthesized method. ! * decl.c (grokdeclarator): Issue errors on namespace qualified ! declarators in parameter lists or in class scope. ! 1998-08-09 Mark Mitchell ! * pt.c (check_explicit_specialization): Don't abort on bogus ! explicit instantiations. ! 1998-08-07 Mark Mitchell ! * typeck.c (require_complete_type): Use complete_type_or_else. ! (complete_type_or_else): Always return NULL_TREE on failure, as ! documented. ! ! * pt.c (tsubst_aggr_type): Prototype. ! (tsubst_decl): New function, split out from tsubst. Set ! input_filename and lineno as appropriate. ! (pop_tinst_level): Restore the file and line number saved in ! push_tinst_level. ! (instantiate_class_template): Set input_filename and lineno as ! appropriate. ! (tsubst): Move _DECL processing to tsubst_decl. Make sure the ! context for a TYPENAME_TYPE is complete. ! ! * decl2.c (grokbitfield): Issue errors on bitfields declared with ! function type. ! (do_dtors): As in do_ctors, pretend to be a member of the same ! class as a static data member while generating a call to its ! destructor. ! * cvt.c (cp_convert_to_pointer): Handle NULL pointer ! conversions, even in complex virtual base class hierarchies. ! 1998-08-06 Mark Mitchell ! * cp-tree.h (ENUM_TEMPLATE_INFO): New macro. ! (TYPE_TEMPLATE_INFO): Likewise. ! (SET_TYPE_TEMPLATE_INFO): Likewise. ! (ENUM_TI_TEMPLATE): Likewise. ! (ENUM_TI_ARGS): Likewise. ! (lookup_nested_type_by_name): Remove. ! * decl.c (maybe_process_template_type_declaration): Handle enums. ! (start_enum): Don't check for primary-template enum declarations ! here. ! (finish_enum): Clean up, document. Make sure template enum ! constants get the correct type. ! (build_enumerator): Copy initializers for template enumerations, ! too. ! (grok_enum_decls): Document. ! * lex.c (do_identifier): Document use of LOOKUP_EXPR a bit ! better. Build LOOKUP_EXPRs for local variables, even if they are ! TREE_PERMANENT. ! * pt.c (tsubst_enum): Remove field_chain parameter. ! (template_class_depth): Include the depth of surrounding function ! contexts. ! (push_template_decl): Check for primary-template enum declarations ! here. Deal with enumeration templates. ! (lookup_template_class): Likewise. ! (for_each_template_parm): Likewise. ! (instantiate_class_template): Don't call tsubst_enum directly, ! call tsubst instead, to instantiate enums. Deal with all ! field_chain issues here, not in tsubst_enum. ! (lookup_nested_type_by_name): Remove. ! (tsubst_aggr_type): Revise handling of enumeration types. ! (tsubst): Likewise. ! (tsubst_copy): Likewise. ! (tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs. ! 1998-08-04 Mark Mitchell ! * decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it ! uses template parameters. ! * method.c (build_template_parm_names): Use the full set of ! template arguments for tsubst'ing. ! (build_overload_identifier): Pass the full set of template ! arguments to build_template_parm_names, not just the ! innermost_args. ! * pt.c (TMPL_ARGS_DEPTH): Define using ! TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity. ! (NUM_TMPL_ARGS): New macro. ! (add_outermost_template_args): Deal with the case where the outer ! args will be completely discarded. ! (coerce_template_parms): Use the full set of template arguments ! for tsubst'ing. Simplify. Add some asserts. Improve ! error messages. ! (lookup_template_class): Pass the full set of template arguments ! to coerce_template_parms. ! (tsubst): Add assertion. ! (do_type_instantiation): Don't instantiate member template ! classes. ! * init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose ! name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE. ! 1998-08-03 Jason Merrill ! * method.c (set_mangled_name_for_decl): Change return type to void. ! * decl.c (lookup_name_real): A namespace-level decl takes priority ! over implicit typename. Avoid doing the same lookup twice. ! ! * search.c (dependent_base_p): New fn. ! (dfs_pushdecls, dfs_compress_decls): Use it. ! ! * typeck.c (get_member_function_from_ptrfunc): Don't try to handle ! virtual functions if the type doesn't have any. ! ! 1998-08-03 Mark Mitchell ! ! * decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it ! uses template parameters. ! ! 1998-08-02 Mark Mitchell ! ! * cp-tree.def (LOOKUP_EXPR): Document. Remove second argument. ! * cp-tree.h (DECL_TI_TEMPLATE): Improve documentation. ! * lex.c (do_identifier): Don't use a second argument, or a type, ! when building LOOKUP_EXPRs. ! (do_identifier): Likewise. ! (do_scoped_id): Likewise. ! * method.c (hack_identifier): Improve error message. ! * pt.c (lookup_template_function): Don't needlessly call ! copy_to_permanent or build_min. ! (tsubst_copy): Remove #if 0'd code. tsubst into LOOKUP_EXPRs if ! necessary. ! (do_decl_instantiation): Improve error message. ! * tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy. ! (build_min): Copy the type to the permanent obstack, too. ! ! 1998-08-01 Jason Merrill ! ! * init.c (init_init_processing): Remove BI* handling. ! (build_builtin_call): Remove. ! (build_builtin_delete_call): New fn. ! (build_delete): Use it. ! ! 1998-07-31 Mark Mitchell ! ! * cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro. ! (maybe_check_template_type): New function. ! * decl.c (maybe_process_template_type_declaration): New function, ! split out from pushtag Call maybe_check_template_type. ! (pushtag): Use it. Use PROCESSING_REAL_TEMPLATE_DECL_P. ! (xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P. ! * friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P. ! * pt.c (template_class_depth_real): Generalization of ... ! (template_class_depth): Use it. ! (register_specialization): Use duplicate_decls for duplicate ! declarations of specializations. ! (maybe_check_template_type): New function. ! (push_template_decl_real): Fix comment. ! (convert_nontype_argument): Likewise. ! (lookup_template_class): Likewise. Avoid an infinite loop on ! erroneous code. ! (tsubst_friend_function): Fix comment. ! (tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is ! an IDENTIFIER_NODE. ! * semantics.c (begin_function_definition): Use ! reset_specialization to note that template headers don't apply ! directly to declarations after the opening curly for a function. 1998-07-29 Jason Merrill *************** Fri Oct 2 02:07:26 1998 Mumit Khan * class.c (finish_struct_1): Convert integer_zero_node to ! ssizetype before passing it to set_rtti_entry. * typeck2.c (initializer_constant_valid_p): Allow conversion of 0 of any size to a pointer. 1998-07-27 Jason Merrill * typeck2.c (build_functional_cast): Handle default-initialization. --- 4941,5081 ---- * decl.c (lookup_name_real): Fix typo. + 1998-07-28 Mark Mitchell + + * friend.c (is_friend): Be lenient with member functions to deal + with nested friends. + 1998-07-28 Jason Merrill * class.c (finish_struct_1): Convert integer_zero_node to ! ssizetype before passing it to set_rtti_entry. * typeck2.c (initializer_constant_valid_p): Allow conversion of 0 of any size to a pointer. + 1998-07-27 Mark Mitchell + + * cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove. + (build_template_decl_overload): Remove. + (set_mangled_name_for_decl): New function. + (innermost_args): Remove is_spec parameter. + (most_specialized, most_specialized_class): Remove declarations. + (lookup_template_class): Add entering_scope parameter. + (maybe_process_partial_specialization): New function. + (finish_template_decl): Likewise. + (finish_template_type): Likewise. + * class.c (finish_struct): Clean up processing of member template + specializations. + * decl.c (pushtag): Fix formatting. + (lookup_tag): Improve handling of pseudo-global levels. + (make_typename_type): Adjust call to lookup_template_class. + (shadow_tag): Use maybe_process_partial_specialization. + (xref_tag): Improve handling of member friends. + (start_function): Call push_nested_class before + push_template_decl. Don't call push_template_decl for + specializations. + * decl2.c (grok_x_components): Don't call xref_tag for + template instantiations. Handle UNION_TYPEs like RECORD_TYPEs. + (grokclassfn): Use set_mangled_name_for_decl. + (arg_assoc_class): Adjust call to innermost_args. + (mark_used): Don't call instantiate_decl for a TEMPLATE_DECL. + * error.c (dump_function_name): Improve printing of template + function names. + * friend.c (is_friend): Don't compare types of decls to determine + friendship, unless flag_guiding_decls. + (make_friend_class): Partial specializations cannot be friends. + (do_friend): Use set_mangled_name_for_decl. Call + push_template_decl_real instead of push_template_decl. + * method.c (build_decl_overload_real): Remove prototype. Give it + external linkage. + (build_overload_identififer): Adjust call to innermost_args. + (build_template_decl_overload): Remove. + (set_mangled_name_for_decl): New function. + * parse.y (.finish_template_type): New non-terminal. + (template_def): Use finish_template_decl. Use template_extdef + instead of extdef. + (template_extdef, template_datadef): New non-terminals, containing + only those rules for things which can be templates. + (datadef): Tidy. + (template_type, self_template_type): Use .finish_template_type. + (named_class_head): Use maybe_process_partial_specialization. + * pt.c (mangle_class_name_for_template): Remove context parameter. + (get_class_bindings): Remove outer_args parameter. + (complete_template_args): Remove. + (add_outermost_template_args): New function. + (register_specialization): Return the specialization. + (unregister_specialization): New function. + (tsubst_template_parms): Likewise. + (most_specialized, most_specialized_class): Prototype here as + static. + (original_template): Rename to most_general_template. + (tsubst_template_parms): New function. + (set_mangled_name_for_template_decl): Likewise. + (TMPL_ARGS_DEPTH): New macro. + (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust. + (TMPL_ARGS_LEVEL): New macro. + (SET_TMPL_ARGS_LEVEL): Likewise. + (TMPL_ARG): Likewise. + (SET_TMPL_ARG): Likewise. + (TMPL_ARGS_DEPTH): Likewise. + (finish_member_template_decl): Use finish_template_decl. + (maybe_process_partial_specialization): New function, split out + from tsubst. + (inline_needs_template_parms): Use TMPL_PARMS_DEPTH. + (maybe_begin_member_template_processing): Use new macros. + (is_member_template): Likewise. + (is_member_template_class): Likewise. + (add_to_template_args): Likewise. Deal with multiple levels of + args. + (maybe_process_partial_specialization): New function. + (retrieve_specialization): Add consistency check. + (determine_specialization): Return full argument list. + (check_explicit_specialization): Tweak friend handling. Use full + argument lists. Simplify. + (current_template_args): Use new macros. + (push_template_decl_real): Change ill-named mainargs to specargs. + Check that a partial specialization actually specializes at least + one parameter. Improve friend handling. Modify for full + template arguments. + (classtype_mangled_name): Don't mangle the names of + specializations. + (lookup_template_class): Add entering_scope parameter. Use it to + avoid finding a template type when an instantiation is required. + Simplify. Use full template arguments. + (tsubst_friend_function): Use unregister_specialization. Use new + macros. Use full template arguments. + (tsubst_friend_class): Substitute, using tsubst_template_parms, + into the template parameters before passing them to + redeclare_class_template. + (instantiate_class_template): Simplify. Use full template + arguments. Adjust calls to get_class_bindings. Use + SET_IDENTIFIER_TYPE_VALUE where needed. Improve friend handling. + (innermost_args): Use new macros. + (tsubst_aggr_type): New function, split out from tsubst. + (tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling + conventions for lookup_template_class. Refine handling of partial + instantiations. Remove calls to complete_template_args. + Simplify. Add consistency checks. Use set_mangled_name_for_decl + and set_mangled_name_for_template_decl. + (tsubst_copy): Use tsubst_aggr_type. + (instantiate_template): Use full template arguments. + (more_specialized): Improve formatting. + (more_specialized_class): Adjust calls to get_class_bindings. + (get_bindings_real): Don't call complete_template_args. + (most_specialized): Don't overwrite input; create a new list. + (most_specialized_class): Use most_general_template. + (regenerate_decl_from_template): Use unregister_specialization. + Use full template arguments. + (instantiate_decl): Use full template arguments. + (set_mangled_name_for_template_decl): New function. + * semantics.c (begin_class_definition): Use + maybe_process_partial_specialization. + (finish_member_class_template): New function. + (finish_template_decl): Likewise. + (finish_template_type): Likewise. + (typeck.c): Don't crash after issuing a compiler_error. + * Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict. + 1998-07-27 Jason Merrill * typeck2.c (build_functional_cast): Handle default-initialization. *************** Fri Oct 2 02:07:26 1998 Mumit Khan + + * c-lex.c (yylex): Fix boundary conditions in character literal and + string literal loops. + 1998-07-24 Jason Merrill * decl.c (lookup_name_real): OK, do return the from_obj value *************** Fri Oct 2 02:07:26 1998 Mumit Khan + + * lex.c (mbchar.h): #include it. + (GET_ENVIRONMENT): New macro. + (init_parse): Set character set based on LANG environment variable. + (real_yylex): Handle multibyte characters in character literals. + (real_yylex): Handle multibyte characters in string literals. + 1998-07-19 Jason Merrill * lex.c (do_identifier): Look for class value even if we don't *************** Fri Oct 2 02:07:26 1998 Mumit Khan + * call.c (joust): Don't warn about "confusing" conversions to the same type. *************** Fri Oct 2 02:07:26 1998 Mumit Khan * search.c (my_tree_cons): The bitfield is at index 2. --- 5353,5366 ---- of namespace-qualified ids to -1, enter the namespace. * method.c (build_template_decl_overload): Expect _DECL as first ! parameter. Put context temporarily into current_namespace. * pt.c (check_explicit_specialization): Change caller. (tsubst): Likewise. * init.c (build_offset_ref): Call mark_used and convert_from_reference for namespace members. ! Mon Jul 13 23:25:28 1998 Martin von Löwis * search.c (my_tree_cons): The bitfield is at index 2. *************** Mon Jul 13 17:21:01 1998 Nick Clifton *** 435,441 **** * lang-options.h: Format changed to work with new --help support in gcc/toplev.c ! 1998-07-12 Martin von Löwis * decl2.c (build_expr_from_tree): Change calls of do_identifier. --- 5368,5374 ---- * lang-options.h: Format changed to work with new --help support in gcc/toplev.c ! 1998-07-12 Martin von Löwis * decl2.c (build_expr_from_tree): Change calls of do_identifier. *************** Mon Jul 13 17:21:01 1998 Nick Clifton *** 472,485 **** * decl.c (xref_baseypes): Change caller. * friend.c (make_friend_class): Likewise. ! 1998-07-12 Kriang Lerdsuwanakij ! * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter comparison. ! * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a template template parameter, record its use. ! (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse its template arguments if exists. * pt.c (coerce_template_template_parms): New function equivalent --- 5405,5418 ---- * decl.c (xref_baseypes): Change caller. * friend.c (make_friend_class): Likewise. ! 1998-07-12 Kriang Lerdsuwanakij ! * typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter comparison. ! * pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a template template parameter, record its use. ! (for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse its template arguments if exists. * pt.c (coerce_template_template_parms): New function equivalent *************** Mon Jul 13 17:21:01 1998 Nick Clifton *** 493,509 **** current_class_type. Don't display error message when COMPLAIN is false. ! 1998-07-12 Klaus Kaempf (kkaempf@progis.de) ! * repo.c (get_base_filename): Use file_name_nondirectory. ! (open_repo_file): Ditto. * cp-tree.h (file_name_nondirectory): Add prototype. 1998-07-12 Jason Merrill * friend.c (do_friend): Pull the identifier out of declarator. Use cp_error and friends. ! * decl2.c (qualified_lookup_using_namespace): Fix call to purpose_member. * decl.c (lookup_name_real): Don't call complete_type on a namespace. (grokvardecl): Use DECL_CLASS_SCOPE_P. --- 5426,5442 ---- current_class_type. Don't display error message when COMPLAIN is false. ! 1998-07-12 Klaus Kaempf (kkaempf@progis.de) ! * repo.c (get_base_filename): Use file_name_nondirectory. ! (open_repo_file): Likewise. * cp-tree.h (file_name_nondirectory): Add prototype. 1998-07-12 Jason Merrill * friend.c (do_friend): Pull the identifier out of declarator. Use cp_error and friends. ! * decl2.c (qualified_lookup_using_namespace): Fix call to purpose_member. * decl.c (lookup_name_real): Don't call complete_type on a namespace. (grokvardecl): Use DECL_CLASS_SCOPE_P. *************** Mon Jul 13 17:21:01 1998 Nick Clifton *** 511,517 **** * class.c (warn_hidden): Fix for OVERLOAD. From grahams@rcp.co.uk: * cp-tree.h (DEFARG_NODE_CHECK): New macro. ! (DEFARG_LENGTH, DEFARG_POINTER): Use it. Sun Jul 12 01:20:57 1998 Jeffrey A Law (law@cygnus.com) --- 5444,5450 ---- * class.c (warn_hidden): Fix for OVERLOAD. From grahams@rcp.co.uk: * cp-tree.h (DEFARG_NODE_CHECK): New macro. ! (DEFARG_LENGTH, DEFARG_POINTER): Use it. Sun Jul 12 01:20:57 1998 Jeffrey A Law (law@cygnus.com) *************** Sun Jul 12 01:20:57 1998 Jeffrey A Law *** 577,583 **** * decl2.c: Define them. (lang_decode_option): Handle them. * lang-options.h: Add -foptional-diags. ! * class.c (finish_struct): Don't complain about multiple meanings of name if -fno-optional-diags. * decl.c (pushdecl_class_level): Likewise. * lex.c (real_yylex): Check warn_multichar. --- 5510,5516 ---- * decl2.c: Define them. (lang_decode_option): Handle them. * lang-options.h: Add -foptional-diags. ! * class.c (finish_struct): Don't complain about multiple meanings of name if -fno-optional-diags. * decl.c (pushdecl_class_level): Likewise. * lex.c (real_yylex): Check warn_multichar. *************** Sun Jul 12 01:20:57 1998 Jeffrey A Law *** 590,597 **** 1998-06-30 Benjamin Kosnik ! * decl2.c (lang_decode_option): Remove warn_template_debugging. ! * lang-options.h: Ditto. Mon Jun 29 20:17:40 1998 Kaveh R. Ghazi --- 5523,5530 ---- 1998-06-30 Benjamin Kosnik ! * decl2.c (lang_decode_option): Remove warn_template_debugging. ! * lang-options.h: Likewise. Mon Jun 29 20:17:40 1998 Kaveh R. Ghazi *************** Sat Jun 27 23:34:18 1998 Fred Fish --- 5546,5552 ---- Sat Jun 27 12:22:56 1998 Jeffrey A Law (law@cygnus.com) ! * Make-lang.in (g++): Depend on mkstemp.o. Link in mkstemp.o Sat Jun 27 07:36:09 1998 Kaveh R. Ghazi *************** Sat Jun 27 07:36:09 1998 Kaveh R. Ghazi *** 636,642 **** * cp-tree.h (mark_all_runtime_matches): Add function prototype. * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED ! flag for all function decls which are in the exception table. * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match. * decl2.c (finish_file): Call mark_all_runtime_matches to make sure code is emitted for any referenced rtti function. --- 5569,5575 ---- * cp-tree.h (mark_all_runtime_matches): Add function prototype. * except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED ! flag for all function decls which are in the exception table. * exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match. * decl2.c (finish_file): Call mark_all_runtime_matches to make sure code is emitted for any referenced rtti function. *************** Sat Jun 27 07:36:09 1998 Kaveh R. Ghazi *** 704,710 **** * exception.cc (struct cp_eh_info): Add original_value field. (__cplus_type_matcher): Perform type matching on the original exception value, and if we have a match, set the current value. ! (__cp_push_exception): Set the original expcetion value. 1998-06-23 Jason Merrill --- 5637,5643 ---- * exception.cc (struct cp_eh_info): Add original_value field. (__cplus_type_matcher): Perform type matching on the original exception value, and if we have a match, set the current value. ! (__cp_push_exception): Set the original exception value. 1998-06-23 Jason Merrill *************** Mon Jun 22 08:50:26 1998 Kaveh R. Ghazi *** 739,746 **** Fri Jun 19 23:22:42 1998 Bruno Haible ! * typeck2.c (pop_init_level): Warn about implicit zero initialization ! of struct members. Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi --- 5672,5679 ---- Fri Jun 19 23:22:42 1998 Bruno Haible ! * typeck2.c (pop_init_level): Warn about implicit zero initialization ! of struct members. Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi *************** Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi *** 785,791 **** 1998-06-16 Andrew MacLeod ! * decl.c (grokvardecl): Don't build external assembler names for TYPENAMEs in other namespaces as there is no declarator. * error.c (cp_file_of, cp_line_of): Don't extract file or line number info from DECL_CONTEXT if it is NULL. --- 5718,5724 ---- 1998-06-16 Andrew MacLeod ! * decl.c (grokvardecl): Don't build external assembler names for TYPENAMEs in other namespaces as there is no declarator. * error.c (cp_file_of, cp_line_of): Don't extract file or line number info from DECL_CONTEXT if it is NULL. *************** Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi *** 821,827 **** (pointer_diff): Likewise. * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for ! types. * search.c (get_matching_virtual): Note that member templates cannot override virtual functions. --- 5754,5760 ---- (pointer_diff): Likewise. * pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for ! types. * search.c (get_matching_virtual): Note that member templates cannot override virtual functions. *************** Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi *** 856,862 **** 1998-06-11 Benjamin Kosnik * friend.c (do_friend): Add support for nested classes using ! member functions of the enclosing class as friends. 1998-06-10 Mark Mitchell --- 5789,5795 ---- 1998-06-11 Benjamin Kosnik * friend.c (do_friend): Add support for nested classes using ! member functions of the enclosing class as friends. 1998-06-10 Mark Mitchell *************** Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi *** 870,878 **** (expand_member_init): Remove much of this code; it is dead. * typeck.c (convert_arguments): Use convert_default_arg and convert_arg_for_ellipsis, rather than duplicating here. ! ! * call.c (convert_like): Don't fail silently if ! build_user_type_conversion fails. Always return error_mark_node for failure. 1998-06-10 Jason Merrill --- 5803,5811 ---- (expand_member_init): Remove much of this code; it is dead. * typeck.c (convert_arguments): Use convert_default_arg and convert_arg_for_ellipsis, rather than duplicating here. ! ! * call.c (convert_like): Don't fail silently if ! build_user_type_conversion fails. Always return error_mark_node for failure. 1998-06-10 Jason Merrill *************** Thu Jun 18 09:32:32 1998 Kaveh R. Ghazi *** 931,938 **** 1998-06-10 Branko Cibej ! * typeck.c (c_expand_return): Don't warn about void expressions on ! return statements in functions returning void. 1998-06-09 Mark Mitchell --- 5864,5871 ---- 1998-06-10 Branko Cibej ! * typeck.c (c_expand_return): Don't warn about void expressions on ! return statements in functions returning void. 1998-06-09 Mark Mitchell *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 959,984 **** * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h. * cp-tree.h: Add prototype for `maybe_print_template_context' and ! `maybe_make_one_only'. * decl.c (auto_function): Remove unused variable `decl'. * decl2.c: Include dwarf2out.h and dwarfout.h. * lex.c: Remove redundant declarations of `set_float_handler' and ! `asm_out_file'. 1998-06-08 Andrew MacLeod ! * except.c (init_exception_processing): Remove NEW_EH_MODEL compile time flag. Call __cp_eh_info instead of __cp_exception_info. * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag. ! (__cp_exception_info): Return offset into cp_eh_info structure to match what use to be the start of this structure. (__cp_eh_info): New function to return a pointer to cp_eh_info struct. (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL compile time flag. ! (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call __cp_eh_info instead of __cp_exception_info. 1998-06-08 Jason Merrill --- 5892,5917 ---- * Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h. * cp-tree.h: Add prototype for `maybe_print_template_context' and ! `maybe_make_one_only'. * decl.c (auto_function): Remove unused variable `decl'. * decl2.c: Include dwarf2out.h and dwarfout.h. * lex.c: Remove redundant declarations of `set_float_handler' and ! `asm_out_file'. 1998-06-08 Andrew MacLeod ! * except.c (init_exception_processing): Remove NEW_EH_MODEL compile time flag. Call __cp_eh_info instead of __cp_exception_info. * exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag. ! (__cp_exception_info): Return offset into cp_eh_info structure to match what use to be the start of this structure. (__cp_eh_info): New function to return a pointer to cp_eh_info struct. (__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL compile time flag. ! (__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call __cp_eh_info instead of __cp_exception_info. 1998-06-08 Jason Merrill *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1002,1008 **** * lex.c (lang_init_options): New function. (lang_init): Remove flag_exceptions == 2 hack. ! 1998-06-05 Jason Merrill * search.c (envelope_add_decl): Tweak for implicit typename. --- 5935,5941 ---- * lex.c (lang_init_options): New function. (lang_init): Remove flag_exceptions == 2 hack. ! 1998-06-05 Jason Merrill * search.c (envelope_add_decl): Tweak for implicit typename. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1044,1050 **** (begin_only_namespace_names, end_only_namespace_names): New functions. * decl2.c (set_decl_namespace): Skip namespace aliases. (do_using_directive): Likewise. ! (do_namespace_alias): Produce namespace aliases, fix alias redeclaration. * error.c (dump_decl): Support SCOPE_REF. * parse.y (extdef): Wrap lookup with namespace_only for namespace --- 5977,5983 ---- (begin_only_namespace_names, end_only_namespace_names): New functions. * decl2.c (set_decl_namespace): Skip namespace aliases. (do_using_directive): Likewise. ! (do_namespace_alias): Produce namespace aliases, fix alias redeclaration. * error.c (dump_decl): Support SCOPE_REF. * parse.y (extdef): Wrap lookup with namespace_only for namespace *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1127,1135 **** * method.c (build_destructor_name): New fn. * decl2.c (maybe_retrofit_in_chrg): Split out... (grokclassfn): From here. Reorganize. ! * decl.c (grok_ctor_properties): Make sure ctors for types with vbases have the in_chrg parm. ! * pt.c (instantiate_class_template): Update TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases. Don't call grok_*_properties. (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg. --- 6060,6068 ---- * method.c (build_destructor_name): New fn. * decl2.c (maybe_retrofit_in_chrg): Split out... (grokclassfn): From here. Reorganize. ! * decl.c (grok_ctor_properties): Make sure ctors for types with vbases have the in_chrg parm. ! * pt.c (instantiate_class_template): Update TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases. Don't call grok_*_properties. (tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1141,1147 **** 1998-05-28 Jason Merrill ! * decl.c (start_decl): Always pedwarn about vacuously redeclaring a member. (start_function): Call check_default_args. * decl2.c (grokfield): Don't call check_default_args. --- 6074,6080 ---- 1998-05-28 Jason Merrill ! * decl.c (start_decl): Always pedwarn about vacuously redeclaring a member. (start_function): Call check_default_args. * decl2.c (grokfield): Don't call check_default_args. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1170,1176 **** (maybe_push_to_top_level): Clear shadowed_labels. * pt.c (instantiate_decl): Reset lineno and filename after calling ! regenerate_decl_from_template. * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an error_mark_node. --- 6103,6109 ---- (maybe_push_to_top_level): Clear shadowed_labels. * pt.c (instantiate_decl): Reset lineno and filename after calling ! regenerate_decl_from_template. * decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an error_mark_node. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1199,1205 **** 1998-05-26 Benjamin Kosnik * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before ! DECL_USE_TEMPLATE. 1998-05-26 Per Bothner --- 6132,6138 ---- 1998-05-26 Benjamin Kosnik * decl.c (start_decl): Check for DECL_LANG_SPECIFIC before ! DECL_USE_TEMPLATE. 1998-05-26 Per Bothner *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1244,1250 **** * cp-tree.h (processing_template_parmlist): Declare. * decl.c (pushtag): Don't call push_template_decl when we ! shouldn't. * pt.c (processing_template_parmlist): New variable. (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro. (complete_template_args): Use it. --- 6177,6183 ---- * cp-tree.h (processing_template_parmlist): Declare. * decl.c (pushtag): Don't call push_template_decl when we ! shouldn't. * pt.c (processing_template_parmlist): New variable. (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro. (complete_template_args): Use it. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1289,1295 **** * parse.y (xcond): Move call to condition_conversion ... * semantics.c (finish_for_cond): Here. * parse.c: Regenerated. ! 1998-05-24 Jason Merrill * decl.c (push_namespace): Namespaces have type void. --- 6222,6228 ---- * parse.y (xcond): Move call to condition_conversion ... * semantics.c (finish_for_cond): Here. * parse.c: Regenerated. ! 1998-05-24 Jason Merrill * decl.c (push_namespace): Namespaces have type void. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1308,1321 **** * tree.c (build_srcloc, build_srcloc_here): New fns. * pt.c (add_pending_template): Use build_srcloc_here. (push_tinst_level): Update last_template_error_tick before erroring. ! (instantiate_decl): Restore lineno and input_filename before calling add_pending_template. * decl2.c (finish_file): Set up lineno and input_filename for pending templates. 1998-05-22 Jason Merrill ! * decl.c (lang_print_error_function): New fn. (init_decl_processing): Set print_error_function to use it. * errfn.c (cp_thing): Don't call maybe_print_template_context here. --- 6241,6254 ---- * tree.c (build_srcloc, build_srcloc_here): New fns. * pt.c (add_pending_template): Use build_srcloc_here. (push_tinst_level): Update last_template_error_tick before erroring. ! (instantiate_decl): Restore lineno and input_filename before calling add_pending_template. * decl2.c (finish_file): Set up lineno and input_filename for pending templates. 1998-05-22 Jason Merrill ! * decl.c (lang_print_error_function): New fn. (init_decl_processing): Set print_error_function to use it. * errfn.c (cp_thing): Don't call maybe_print_template_context here. *************** Mon Jun 8 20:45:52 1998 Kaveh R. Ghazi *** 1342,1348 **** * pt.c (determine_specialization): Just return an error_mark_node. Also print the decl we want in error messages. If we complain, return error_mark_node. ! (tsubst_friend_function): Set lineno and input_filename so error messages will be useful. (instantiate_template): Just return an error_mark_node. (check_explicit_specialization): Don't mess with a returned --- 6275,6281 ---- * pt.c (determine_specialization): Just return an error_mark_node. Also print the decl we want in error messages. If we complain, return error_mark_node. ! (tsubst_friend_function): Set lineno and input_filename so error messages will be useful. (instantiate_template): Just return an error_mark_node. (check_explicit_specialization): Don't mess with a returned *************** Thu May 21 11:54:44 1998 Dave Brolley *** 1376,1382 **** * cp-tree.h: (get_directive_line): Different prototype for cpplib. (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line. ! * Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib. 1998-05-21 Jason Merrill --- 6309,6315 ---- * cp-tree.h: (get_directive_line): Different prototype for cpplib. (GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line. ! * Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib. 1998-05-21 Jason Merrill *************** Thu May 21 11:54:44 1998 Dave Brolley *** 1409,1419 **** CLASSTYPE_TAGS list, just as for ordinary member classes. (pushdecl_class_level): Use DECL_DECLARES_TYPE_P. (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with ! IDENTIFIER_NAMESPACE_VALUEs. * parse.y (component_decl): Move code to ... ! * semantics.c (finish_member_class_template): New function. Don't put member class templates on the list of components for a ! class. * parse.c: Regenerated. * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types. In fact, don't use DECL_CONTEXT at all here. --- 6342,6352 ---- CLASSTYPE_TAGS list, just as for ordinary member classes. (pushdecl_class_level): Use DECL_DECLARES_TYPE_P. (lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with ! IDENTIFIER_NAMESPACE_VALUEs. * parse.y (component_decl): Move code to ... ! * semantics.c (finish_member_class_template): New function. Don't put member class templates on the list of components for a ! class. * parse.c: Regenerated. * pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types. In fact, don't use DECL_CONTEXT at all here. *************** Tue May 19 10:05:02 1998 Kaveh R. Ghazi *** 1492,1498 **** definition. * errfn.c (cp_error): Cast function pointer `error' to (errorfn *) ! in call to `cp_thing'. (cp_warning): Likewise for function pointer `warning'. * except.c (do_function_call): Remove prototype and definition. --- 6425,6431 ---- definition. * errfn.c (cp_error): Cast function pointer `error' to (errorfn *) ! in call to `cp_thing'. (cp_warning): Likewise for function pointer `warning'. * except.c (do_function_call): Remove prototype and definition. *************** Tue May 19 10:05:02 1998 Kaveh R. Ghazi *** 1503,1512 **** * parse.y: Include toplev.h. * pt.c (type_unification): Remove unused variable `arg'. ! (instantiate_decl): likewise for `save_ti'. * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'. ! Tue May 19 02:43:25 1998 Jason Merrill * init.c (build_member_call): Handle template_ids. --- 6436,6445 ---- * parse.y: Include toplev.h. * pt.c (type_unification): Remove unused variable `arg'. ! (instantiate_decl): Likewise for `save_ti'. * tree.c (propagate_binfo_offsets): Likewise for `base_binfos'. ! Tue May 19 02:43:25 1998 Jason Merrill * init.c (build_member_call): Handle template_ids. *************** Mon May 18 23:22:52 1998 Jason Merrill *** 1520,1528 **** Mon May 18 12:28:44 1998 Mark Mitchell * parse.y (.finish_new_placement): New non-terminal. ! (unary_expr, new_type_id): Use it. * parse.c: Regenerated. ! Mon May 18 12:20:27 1998 Brendan Kehoe * pt.c (redeclare_class_template): Say where the original definition --- 6453,6461 ---- Mon May 18 12:28:44 1998 Mark Mitchell * parse.y (.finish_new_placement): New non-terminal. ! (unary_expr, new_type_id): Use it. * parse.c: Regenerated. ! Mon May 18 12:20:27 1998 Brendan Kehoe * pt.c (redeclare_class_template): Say where the original definition *************** Mon May 18 03:00:57 1998 Jason Merrill *** 1538,1544 **** Mon May 18 01:43:01 1998 Martin v. Loewis ! * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE for a type unless it is one. * class.c (finish_struct_1): Use OVL_CURRENT in error message. --- 6471,6477 ---- Mon May 18 01:43:01 1998 Martin v. Loewis ! * decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE for a type unless it is one. * class.c (finish_struct_1): Use OVL_CURRENT in error message. *************** Mon May 18 01:24:08 1998 Jeffrey A Law *** 1548,1554 **** * Makefile.in (program_transform_name, objdir): Define. * Makefile.in (BISON): Use bison from the build tree if it exists. ! (FLEX): Similarly. Sun May 17 14:52:08 1998 Martin v. Loewis --- 6481,6487 ---- * Makefile.in (program_transform_name, objdir): Define. * Makefile.in (BISON): Use bison from the build tree if it exists. ! (FLEX): Likewise. Sun May 17 14:52:08 1998 Martin v. Loewis *************** Sun May 17 13:53:48 1998 Mark Mitchell *** 1567,1573 **** * parse.y (.build_new_placement): New non-terminal. (unary_expr, new_placement): Use it. * parse.c: Regenerated. ! Sun May 17 12:32:08 1998 Jason Merrill * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare --- 6500,6506 ---- * parse.y (.build_new_placement): New non-terminal. (unary_expr, new_placement): Use it. * parse.c: Regenerated. ! Sun May 17 12:32:08 1998 Jason Merrill * decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare *************** Fri May 15 20:28:00 1998 Jason Merrill *** 1586,1592 **** Fri May 15 15:34:02 1998 Benjamin Kosnik ! * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits. Fri May 15 00:46:05 1998 Jason Merrill --- 6519,6525 ---- Fri May 15 15:34:02 1998 Benjamin Kosnik ! * decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits. Fri May 15 00:46:05 1998 Jason Merrill *************** Fri May 15 00:46:05 1998 Jason Merrill *** 1594,1613 **** * decl.c (start_decl): Use 'tem'. ! Thu May 14 16:30:47 EDT 1998 Andrew MacLeod * exception.cc: Include eh-common.h. ! (struct cp_eh_info): add eh_info struct with NEW_EH_MODEL. (__cplus_type_matcher): First stab at new C++ runtime type matcher. (__cp_push_exception): Initialize eh_info struct as well. * except.c: Remove local structs and include eh-common.h. (init_exception_processing): Set language and version codes. ! (call_eh_info): add presence of eh_info to runtime description of struct cp_eh_info. ! (expand_end_eh_spec): call start_catch_block() and end_catch_block(). ! * semantics.c (finish_try_block): call start_catch_block() and end_catch_block(). ! * parse.y (function_try_block): call start_catch_block() and end_catch_block(). Thu May 14 12:27:34 1998 Brendan Kehoe --- 6527,6546 ---- * decl.c (start_decl): Use 'tem'. ! Thu May 14 16:30:47 1998 Andrew MacLeod * exception.cc: Include eh-common.h. ! (struct cp_eh_info): Add eh_info struct with NEW_EH_MODEL. (__cplus_type_matcher): First stab at new C++ runtime type matcher. (__cp_push_exception): Initialize eh_info struct as well. * except.c: Remove local structs and include eh-common.h. (init_exception_processing): Set language and version codes. ! (call_eh_info): Add presence of eh_info to runtime description of struct cp_eh_info. ! (expand_end_eh_spec): Call start_catch_block() and end_catch_block(). ! * semantics.c (finish_try_block): Call start_catch_block() and end_catch_block(). ! * parse.y (function_try_block): Call start_catch_block() and end_catch_block(). Thu May 14 12:27:34 1998 Brendan Kehoe *************** Thu May 14 12:27:34 1998 Brendan Kehoe *** 1620,1630 **** Wed May 13 12:54:30 1998 Kaveh R. Ghazi * Makefile.in (lex.o): Depend on output.h. ! * call.c (add_function_candidate): Remove unused variable `cand'. (add_conv_candidate): Likewise. (build_builtin_candidate): Likewise. ! * cp-tree.h: Add prototype for `types_overlap_p'. * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED. --- 6553,6563 ---- Wed May 13 12:54:30 1998 Kaveh R. Ghazi * Makefile.in (lex.o): Depend on output.h. ! * call.c (add_function_candidate): Remove unused variable `cand'. (add_conv_candidate): Likewise. (build_builtin_candidate): Likewise. ! * cp-tree.h: Add prototype for `types_overlap_p'. * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED. *************** Tue May 12 21:37:49 1998 Jason Merrill *** 1659,1665 **** DECL_NAMESPACE_SCOPE_P. (lang_decl_name): Likewise. * pt.c (tsubst_friend_function, tsubst): Likewise. ! * decl.c (pushdecl, redeclaration_error_message, start_decl, cp_finish_decl, start_function): Likewise. * class.c (finish_struct_1): Likewise. * call.c (build_over_call): Likewise. --- 6592,6598 ---- DECL_NAMESPACE_SCOPE_P. (lang_decl_name): Likewise. * pt.c (tsubst_friend_function, tsubst): Likewise. ! * decl.c (pushdecl, redeclaration_error_message, start_decl, cp_finish_decl, start_function): Likewise. * class.c (finish_struct_1): Likewise. * call.c (build_over_call): Likewise. *************** Mon May 11 11:38:07 1998 Mark Mitchell *** 1681,1687 **** * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE. * call.c (add_template_candidate): Adjust for changes to ! fn_type_unification. (add_template_candidate_real): Likewise. (add_template_conv_candidate): Likewise. (build_user_type_conversion_1): Likewise. --- 6614,6620 ---- * pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE. * call.c (add_template_candidate): Adjust for changes to ! fn_type_unification. (add_template_candidate_real): Likewise. (add_template_conv_candidate): Likewise. (build_user_type_conversion_1): Likewise. *************** Mon May 11 11:38:07 1998 Mark Mitchell *** 1726,1736 **** tsubst_template_argument_vector where appropriate. (regenerate_decl_from_template): Break out from ... (instantiate_decl): Here. ! * lex.c (yyprint): Remove TYPENAME_ELLIPSIS. * parse.h: Regenerated. * parse.c: Really regenerated. ! * cp-tree.h (finish_unary_op_expr): New function. (finish_id_expr): Likewise. (begin_new_placement): Likewise. --- 6659,6669 ---- tsubst_template_argument_vector where appropriate. (regenerate_decl_from_template): Break out from ... (instantiate_decl): Here. ! * lex.c (yyprint): Remove TYPENAME_ELLIPSIS. * parse.h: Regenerated. * parse.c: Really regenerated. ! * cp-tree.h (finish_unary_op_expr): New function. (finish_id_expr): Likewise. (begin_new_placement): Likewise. *************** Sat May 9 14:44:37 1998 Jason Merrill *** 1792,1798 **** Fri May 8 23:32:42 1998 Martin von Loewis ! * cp-tree.def (OVERLOAD): New node. * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE, SET_IDENTIFIER_NAMESPACE_VALUE): Define. (NAMESPACE_BINDING): Remove. --- 6725,6731 ---- Fri May 8 23:32:42 1998 Martin von Loewis ! * cp-tree.def (OVERLOAD): New node. * cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE, SET_IDENTIFIER_NAMESPACE_VALUE): Define. (NAMESPACE_BINDING): Remove. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1821,1830 **** * call.c (add_function_candidate): Special-case type of OVERLOAD node. (build_user_conversions_1): Iterate using OVL_NEXT for ctors, convs, fns. ! (build_new_function_call): Iterate using OVL_CHAIN. Print DECL_NAME in when reporting ambiguities. (build_object_call): Iterate using OVL_NEXT for fns, convs. ! (build_new_op): Call lookup_function_nonclass. Iterate using OVL_NEXT. (build_op_delete_call): Change detection of members. Do not wrap TREE_LIST around fields and single global functions. --- 6754,6763 ---- * call.c (add_function_candidate): Special-case type of OVERLOAD node. (build_user_conversions_1): Iterate using OVL_NEXT for ctors, convs, fns. ! (build_new_function_call): Iterate using OVL_CHAIN. Print DECL_NAME in when reporting ambiguities. (build_object_call): Iterate using OVL_NEXT for fns, convs. ! (build_new_op): Call lookup_function_nonclass. Iterate using OVL_NEXT. (build_op_delete_call): Change detection of members. Do not wrap TREE_LIST around fields and single global functions. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1842,1848 **** fdecls that are OVERLOAD nodes. (validate_lhs): New function. (instantiate_type): Do not copy OVERLOAD nodes. Remove dead ! code. Use DECL_NAME in error messages. Split code between global and member function processing. * decl.c (global_type_node): New static variable. (in_std): New global. --- 6775,6781 ---- fdecls that are OVERLOAD nodes. (validate_lhs): New function. (instantiate_type): Do not copy OVERLOAD nodes. Remove dead ! code. Use DECL_NAME in error messages. Split code between global and member function processing. * decl.c (global_type_node): New static variable. (in_std): New global. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1869,1875 **** (pushtag): If no context, use current_namespace. (duplicate_decls): Don't process DECL_CHAIN. (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not ! already set. Never reset it to NULL_TREE. Lookup global variables in their namespace. Push overloaded templates if they are on namespace level. (pushdecl_namespace_level): New function. --- 6802,6808 ---- (pushtag): If no context, use current_namespace. (duplicate_decls): Don't process DECL_CHAIN. (pushdecl): Set DECL_CONTEXT to current_namespace, if it is not ! already set. Never reset it to NULL_TREE. Lookup global variables in their namespace. Push overloaded templates if they are on namespace level. (pushdecl_namespace_level): New function. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1877,1883 **** (pushdecl_using_decl): New function. (overloaded_globals_p): Remove. (push_overloaded_decl): Create OVERLOAD nodes, and iterate through ! them. Use namespace_binding and set_namespace_value. (redeclaration_error_message): Complain if the declarations come from different namespaces. (lookup_tag): On namespace level, look in the BINDING_TYPE. --- 6810,6816 ---- (pushdecl_using_decl): New function. (overloaded_globals_p): Remove. (push_overloaded_decl): Create OVERLOAD nodes, and iterate through ! them. Use namespace_binding and set_namespace_value. (redeclaration_error_message): Complain if the declarations come from different namespaces. (lookup_tag): On namespace level, look in the BINDING_TYPE. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1903,1909 **** (grokvardecl): Add namespace parameter. (grokdeclarator): Process SCOPEs that are namespaces. For mangling, temporarily set the DECL_CONTEXT on anonymous structs. ! (start_function): Check for contexts that are namespaces. Set context for declarations that have not been pushed. (store_parm_decls): Check for ::main only. (finish_function): Likewise. --- 6836,6842 ---- (grokvardecl): Add namespace parameter. (grokdeclarator): Process SCOPEs that are namespaces. For mangling, temporarily set the DECL_CONTEXT on anonymous structs. ! (start_function): Check for contexts that are namespaces. Set context for declarations that have not been pushed. (store_parm_decls): Check for ::main only. (finish_function): Likewise. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1939,1945 **** * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std. * lex.c (identifier_type): Loop using OVL_CHAIN. (see_typename): Set looking_for_typename to 2. ! (real_yylex): Likewise. (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs. (do_scoped_id): Expect OVERLOAD nodes. Change calling convention for qualified_lookup_using_namespace. --- 6872,6878 ---- * lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std. * lex.c (identifier_type): Loop using OVL_CHAIN. (see_typename): Set looking_for_typename to 2. ! (real_yylex): Likewise. (do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs. (do_scoped_id): Expect OVERLOAD nodes. Change calling convention for qualified_lookup_using_namespace. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 1966,1972 **** Set DECL_CONTEXT to current_namespace if not set already. Ignore real contexts that are namespaces. (mangle_class_name_for_template): Skip global_namespace. ! Mangle other namepaces as declarations. (lookup_template_function): Set type of OVERLOAD nodes to unknown. (lookup_template_class): Push into namespace of context. If the context is a namespace, set it to global_namespace. --- 6899,6905 ---- Set DECL_CONTEXT to current_namespace if not set already. Ignore real contexts that are namespaces. (mangle_class_name_for_template): Skip global_namespace. ! Mangle other namespaces as declarations. (lookup_template_function): Set type of OVERLOAD nodes to unknown. (lookup_template_class): Push into namespace of context. If the context is a namespace, set it to global_namespace. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 2008,2014 **** * decl.c (duplicate_decls): Check for namespace bindings instead of global bindings. (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real, ! lookup_name_current_level, start_decl, xref_tag, finish_enum): Likewise. * init.c (build_offset_ref): Likewise. * search.c (lookup_field): Likewise. --- 6941,6947 ---- * decl.c (duplicate_decls): Check for namespace bindings instead of global bindings. (pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real, ! lookup_name_current_level, start_decl, xref_tag, finish_enum): Likewise. * init.c (build_offset_ref): Likewise. * search.c (lookup_field): Likewise. *************** Fri May 8 23:32:42 1998 Martin von Loe *** 2025,2041 **** * parse.y (make_thunk): Likewise. * pt.c (tsubst): Likewise. * tree.c (debug_binfo): Likewise. ! * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, tinfo2.cc, inc/new.h: Add std qualifications. * inc/new: Wrap with namespace std if __HONOR_STD. * inc/typeinfo: Likewise. Fri May 8 00:43:50 1998 Jason Merrill ! * call.c (build_user_type_conversion_1): Handle second_conv properly for templates. ! Thu May 7 17:09:25 EDT 1998 Andrew MacLeod * method.c (build_decl_overload_real): Set TREE_USED flag to zero for build_type_variants nodes as well. --- 6958,6974 ---- * parse.y (make_thunk): Likewise. * pt.c (tsubst): Likewise. * tree.c (debug_binfo): Likewise. ! * exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h, tinfo2.cc, inc/new.h: Add std qualifications. * inc/new: Wrap with namespace std if __HONOR_STD. * inc/typeinfo: Likewise. Fri May 8 00:43:50 1998 Jason Merrill ! * call.c (build_user_type_conversion_1): Handle second_conv properly for templates. ! Thu May 7 17:09:25 1998 Andrew MacLeod * method.c (build_decl_overload_real): Set TREE_USED flag to zero for build_type_variants nodes as well. *************** Wed May 6 16:49:48 1998 Jim Wilson ! * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, ! expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, ! search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, xref.c: Add include of toplev.h. Wed May 6 02:33:39 1998 Jason Merrill --- 6998,7006 ---- Wed May 6 06:36:41 1998 Robert Lipe ! * call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c, ! expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c, ! search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c, xref.c: Add include of toplev.h. Wed May 6 02:33:39 1998 Jason Merrill *************** Tue May 5 23:54:04 1998 Jason Merrill *** 2080,2088 **** * init.c (expand_vec_init): The initialization of each array element is a full-expression. ! Tue May 5 18:24:13 EDT 1998 Andrew MacLeod ! * method.c (build_mangled_name): Add a call to build_type_variant to get the right type. Tue May 5 01:25:03 1998 Jason Merrill --- 7013,7021 ---- * init.c (expand_vec_init): The initialization of each array element is a full-expression. ! Tue May 5 18:24:13 1998 Andrew MacLeod ! * method.c (build_mangled_name): Add a call to build_type_variant to get the right type. Tue May 5 01:25:03 1998 Jason Merrill *************** Tue May 5 01:25:03 1998 Jason Merrill *** 2093,2099 **** Sun May 3 01:32:14 1998 Jason Merrill ! * call.c (build_over_call): Do evaluate arg even if it has empty class type. * decl.c (start_function): Don't push a member function. --- 7026,7032 ---- Sun May 3 01:32:14 1998 Jason Merrill ! * call.c (build_over_call): Do evaluate arg even if it has empty class type. * decl.c (start_function): Don't push a member function. *************** Thu Apr 30 18:59:23 1998 Jim Wilson * gxxint.texi: Add info for squangling codes K and B. --- 7034,7040 ---- * Makefile.in (g++FAQ.info): Put -o option before input file. ! Thu Apr 30 13:05:33 1998 Andrew MacLeod * gxxint.texi: Add info for squangling codes K and B. *************** Sun Apr 26 12:10:18 1998 Mark Mitchell *** 2130,2136 **** (PRIMARY_TEMPLATE_P): Use it. (push_template_decl_real): New function. (redeclare_class_template): Take new template parameters as ! input. (is_specialization_of): New function. (comp_template_args): Declare. * decl.c (pushtag): Handle friend template classes. --- 7063,7069 ---- (PRIMARY_TEMPLATE_P): Use it. (push_template_decl_real): New function. (redeclare_class_template): Take new template parameters as ! input. (is_specialization_of): New function. (comp_template_args): Declare. * decl.c (pushtag): Handle friend template classes. *************** Sun Apr 26 12:10:18 1998 Mark Mitchell *** 2150,2156 **** with friend templates. * typeck.c (comptypes): Use comp_template_args, rather than expanding it inline. ! * parse.y (component_decl): Handle a nested template type like other component type declarations. * pt.c (check_explicit_specialization): Handle overloaded --- 7083,7089 ---- with friend templates. * typeck.c (comptypes): Use comp_template_args, rather than expanding it inline. ! * parse.y (component_decl): Handle a nested template type like other component type declarations. * pt.c (check_explicit_specialization): Handle overloaded *************** Thu Apr 23 21:19:06 1998 Jason Merrill *** 2168,2181 **** Enforce access control here. Emit overload warnings here. (add_warning): New fn. (joust): Add WARN parm. If not set, call add_warning instead of ! printing a warning. Reenable some warnings. (tourney): Pass it. (convert_like): Adjust. (build_new_op): Adjust. (build_new_function_call): Adjust. (build_user_type_conversion_1): Adjust. (USER_CONV_FN): Adjust. ! * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, build_int_wrapper): New fns. Thu Apr 23 18:27:53 1998 Mark P. Mitchell --- 7101,7114 ---- Enforce access control here. Emit overload warnings here. (add_warning): New fn. (joust): Add WARN parm. If not set, call add_warning instead of ! printing a warning. Re-enable some warnings. (tourney): Pass it. (convert_like): Adjust. (build_new_op): Adjust. (build_new_function_call): Adjust. (build_user_type_conversion_1): Adjust. (USER_CONV_FN): Adjust. ! * tree.c (build_expr_wrapper, build_expr_ptr_wrapper, build_int_wrapper): New fns. Thu Apr 23 18:27:53 1998 Mark P. Mitchell *************** Wed Apr 22 13:24:48 1998 Mark Mitchell *** 2194,2208 **** the DECL_RESULTs of a member TEMPLATE_DECL, not just the TEMPLATE_DECL. ! * pt.c (tsubst): Decrease the template-level of ! TEMPLATE_TEMPLATE_PARMS. Likewise for the DECL_INITIAL of a ! TEMPLATE_PARM_INDEX. ! (template_decl_level): New function. ! (unify): Make sure to record unifications for template ! parameters, even when the parameters exactly match the arguments. ! Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and ! TEMPLATE_TYPE_PARMS. Don't try to unify template parameters that ! aren't from the level we're currently working on. Tue Apr 21 22:00:04 1998 Mark Mitchell --- 7127,7141 ---- the DECL_RESULTs of a member TEMPLATE_DECL, not just the TEMPLATE_DECL. ! * pt.c (tsubst): Decrease the template-level of ! TEMPLATE_TEMPLATE_PARMS. Likewise for the DECL_INITIAL of a ! TEMPLATE_PARM_INDEX. ! (template_decl_level): New function. ! (unify): Make sure to record unifications for template ! parameters, even when the parameters exactly match the arguments. ! Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and ! TEMPLATE_TYPE_PARMS. Don't try to unify template parameters that ! aren't from the level we're currently working on. Tue Apr 21 22:00:04 1998 Mark Mitchell *************** Sun Apr 12 22:31:19 1998 Richard Kenner *** 2345,2373 **** Fri Apr 10 12:16:49 1998 Benjamin Kosnik * decl.c (duplicate_decls): Don't warn for redundant decls if ! friend: let add_friend take care of it. Thu Apr 9 02:40:48 1998 Jason Merrill * sig.c (build_signature_pointer_constructor): Don't set TREE_HAS_CONSTRUCTOR for a signature pointer. * cvt.c (ocp_convert): Don't force a temporary for internal structs. ! * init.c (resolve_offset_ref): Warn about implicit & on pmfs here, too. ! * typeck.c (build_unary_op): Only allow taking the address of a real constructor. * typeck2.c (digest_init): Simplify. (store_init_value): Don't pedwarn about using { } for pmfs. Thu Apr 9 22:16:57 1998 Per Bothner ! * cp-tree.h (start_decl): Update prototype. ! * decl.c (start_decl): Like the C version, new parameters ! for the attributes. Call cplus_decl_attributes here, ! (pushdecl): Like C version, do build_type_copy if TYPE_DECL, ! (grokdeclarator): Pass NULL for new start_decl arguments. ! * pt.c (tsubst_expr): Likewise. ! * parse.y: Merge cplus_decl_attribute calls into start_decl calls. * typeck.c (common_type): Check TYPE_MAIN_VARIANT. * lex.c (build_lang_decl): Add lang_name_java. * class.c (push_lang_context): Add lang_name_java. --- 7278,7306 ---- Fri Apr 10 12:16:49 1998 Benjamin Kosnik * decl.c (duplicate_decls): Don't warn for redundant decls if ! friend: let add_friend take care of it. Thu Apr 9 02:40:48 1998 Jason Merrill * sig.c (build_signature_pointer_constructor): Don't set TREE_HAS_CONSTRUCTOR for a signature pointer. * cvt.c (ocp_convert): Don't force a temporary for internal structs. ! * init.c (resolve_offset_ref): Warn about implicit & on pmfs here, too. ! * typeck.c (build_unary_op): Only allow taking the address of a real constructor. * typeck2.c (digest_init): Simplify. (store_init_value): Don't pedwarn about using { } for pmfs. Thu Apr 9 22:16:57 1998 Per Bothner ! * cp-tree.h (start_decl): Update prototype. ! * decl.c (start_decl): Like the C version, new parameters ! for the attributes. Call cplus_decl_attributes here, ! (pushdecl): Like C version, do build_type_copy if TYPE_DECL, ! (grokdeclarator): Pass NULL for new start_decl arguments. ! * pt.c (tsubst_expr): Likewise. ! * parse.y: Merge cplus_decl_attribute calls into start_decl calls. * typeck.c (common_type): Check TYPE_MAIN_VARIANT. * lex.c (build_lang_decl): Add lang_name_java. * class.c (push_lang_context): Add lang_name_java. *************** Thu Apr 9 22:16:57 1998 Benjamin Kosni *** 2378,2391 **** * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT. * call.c (build_scoped_method_call): Check for TREE_CODE for VOID_TYPE instead of type == void_type_node. ! (build_method_call): Ditto. ! * decl.c (lookup_name_real): Ditto. ! (grokdeclarator): Ditto. ! (start_decl): Ditto. ! (grokparms): Ditto. ! (start_function): Ditto. ! (finish_function): Ditto. ! (start_method): Ditto. Thu Apr 9 00:18:44 1998 Dave Brolley (brolley@cygnus.com) --- 7311,7324 ---- * decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT. * call.c (build_scoped_method_call): Check for TREE_CODE for VOID_TYPE instead of type == void_type_node. ! (build_method_call): Likewise. ! * decl.c (lookup_name_real): Likewise. ! (grokdeclarator): Likewise. ! (start_decl): Likewise. ! (grokparms): Likewise. ! (start_function): Likewise. ! (finish_function): Likewise. ! (start_method): Likewise. Thu Apr 9 00:18:44 1998 Dave Brolley (brolley@cygnus.com) *************** Sat Apr 4 12:52:35 1998 Jeffrey A Law *** 2419,2425 **** Fri Apr 3 02:22:59 1998 Jason Merrill Implement empty base optimization. ! * class.c (finish_struct_1): Add vbase fields earlier. Set CLASSTYPE_SIZE of an empty base to 0. Types with bases can be empty. * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns. (types_overlap_p): New fn. --- 7352,7358 ---- Fri Apr 3 02:22:59 1998 Jason Merrill Implement empty base optimization. ! * class.c (finish_struct_1): Add vbase fields earlier. Set CLASSTYPE_SIZE of an empty base to 0. Types with bases can be empty. * search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns. (types_overlap_p): New fn. *************** Wed Apr 1 18:22:25 1998 Jeffrey A Law *** 2456,2462 **** * class.c, Make sure system.h is included just after config.h. Delete lingering stdio and errno references too. * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise. ! Wed Apr 1 15:38:36 1998 Jason Merrill * friend.c (is_friend): Fix access control for local classes. --- 7389,7395 ---- * class.c, Make sure system.h is included just after config.h. Delete lingering stdio and errno references too. * decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise. ! Wed Apr 1 15:38:36 1998 Jason Merrill * friend.c (is_friend): Fix access control for local classes. *************** Tue Mar 31 13:43:57 1998 Jeffrey A Law *** 2483,2489 **** Mon Mar 30 12:15:00 1998 Mark Mitchell ! * pt.c (fn_type_unification): Allow incomplete unification without an immediate error message. Mon Mar 30 08:55:42 1998 Jason Merrill --- 7416,7422 ---- Mon Mar 30 12:15:00 1998 Mark Mitchell ! * pt.c (fn_type_unification): Allow incomplete unification without an immediate error message. Mon Mar 30 08:55:42 1998 Jason Merrill *************** Fri Mar 27 20:23:18 1998 Mark Mitchell *** 2561,2567 **** * error.c (dump_decl): Be a bit more explicit with template type arguments, when verbose. ! Fri Mar 27 18:16:40 1998 Jason Merrill * inc/exception: Reorder closing braces. --- 7494,7500 ---- * error.c (dump_decl): Be a bit more explicit with template type arguments, when verbose. ! Fri Mar 27 18:16:40 1998 Jason Merrill * inc/exception: Reorder closing braces. *************** Fri Mar 27 13:22:18 1998 Mark Mitchell *** 2574,2580 **** Thu Mar 26 11:16:30 1998 Jason Merrill ! * call.c (build_over_call): Check IS_AGGR_TYPE, not TYPE_LANG_SPECIFIC. * typeck.c (convert_arguments): Likewise. --- 7507,7513 ---- Thu Mar 26 11:16:30 1998 Jason Merrill ! * call.c (build_over_call): Check IS_AGGR_TYPE, not TYPE_LANG_SPECIFIC. * typeck.c (convert_arguments): Likewise. *************** Tue Mar 24 12:21:55 1998 Benjamin Kosni *** 2633,2640 **** Tue Mar 24 12:21:48 1998 Jim Wilson ! * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for ! boolean_type_node to 1. Tue Mar 24 10:23:47 1998 Mark Mitchell --- 7566,7573 ---- Tue Mar 24 12:21:48 1998 Jim Wilson ! * decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for ! boolean_type_node to 1. Tue Mar 24 10:23:47 1998 Mark Mitchell *************** Tue Mar 24 10:23:47 1998 Mark Mitchell *** 2673,2679 **** (fn_type_unification): Use new interfaces. (type_unification): Likewise. Remove NOP_EXPR hack. (type_unification_real): Likewise. ! (unify): Likewise. Deal with unification of complex expresions. Mon Mar 23 12:24:37 1998 Jason Merrill --- 7606,7612 ---- (fn_type_unification): Use new interfaces. (type_unification): Likewise. Remove NOP_EXPR hack. (type_unification_real): Likewise. ! (unify): Likewise. Deal with unification of complex expressions. Mon Mar 23 12:24:37 1998 Jason Merrill *************** Mon Mar 23 12:24:37 1998 Jason Merrill *** 2686,2692 **** * search.c (lookup_field): Do implicit typename stuff. Sun Mar 22 00:50:42 1998 Nick Clifton ! Geoff Noer * Makefile.in: Various fixes for building cygwin32 native toolchains. * Make-lang.in: Likewise. --- 7619,7625 ---- * search.c (lookup_field): Do implicit typename stuff. Sun Mar 22 00:50:42 1998 Nick Clifton ! Geoff Noer * Makefile.in: Various fixes for building cygwin32 native toolchains. * Make-lang.in: Likewise. *************** Fri Mar 20 10:42:07 1998 Jason Merrill *** 2706,2712 **** Fri Mar 20 08:12:43 1998 H.J. Lu (hjl@gnu.org) ! * semantics.c (finish_asm_stmt): Fix combine strings. Call c_expand_asm_operands () if output_operands, input_operands or clobbers is not NULL_TREE. --- 7639,7645 ---- Fri Mar 20 08:12:43 1998 H.J. Lu (hjl@gnu.org) ! * semantics.c (finish_asm_stmt): Fix combine strings. Call c_expand_asm_operands () if output_operands, input_operands or clobbers is not NULL_TREE. *************** Fri Mar 20 00:10:19 1998 Kriang Lerdsuw *** 2714,2720 **** * pt.c (complete_template_args): New function. (get_bindings): Deal with specializations of function templates ! with return type containing parameters from outer class templates. (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level, substitute arguments and compose a new type. --- 7647,7653 ---- * pt.c (complete_template_args): New function. (get_bindings): Deal with specializations of function templates ! with return type containing parameters from outer class templates. (tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level, substitute arguments and compose a new type. *************** Thu Mar 19 11:51:58 1998 Jason Merrill *** 2730,2736 **** * call.c (standard_conversion): Handle A* -> const A* properly. ! * pt.c (get_bindings_real): Rename from get_bindings. Add check_rettype parm. (get_bindings): Pass 1. (get_bindings_overload): Pass 0. --- 7663,7669 ---- * call.c (standard_conversion): Handle A* -> const A* properly. ! * pt.c (get_bindings_real): Rename from get_bindings. Add check_rettype parm. (get_bindings): Pass 1. (get_bindings_overload): Pass 0. *************** Thu Mar 19 02:27:48 1998 Jason Merrill *** 2751,2757 **** Wed Mar 18 12:41:43 1998 Jason Merrill ! * decl.c (make_implicit_typename): Only change the type of a TYPENAME_TYPE. Wed Mar 18 10:09:51 1998 Mark Mitchell --- 7684,7690 ---- Wed Mar 18 12:41:43 1998 Jason Merrill ! * decl.c (make_implicit_typename): Only change the type of a TYPENAME_TYPE. Wed Mar 18 10:09:51 1998 Mark Mitchell *************** Wed Mar 18 10:09:51 1998 Mark Mitchell *** 2765,2771 **** * cp-tree.def: Add ASM_STMT tree node. * Makefile.in, Make-lang.in: Add dependencies on and for semantics.c. ! Wed Mar 18 00:24:10 1998 Jason Merrill * pt.c (push_template_decl): Only check primary templates. --- 7698,7704 ---- * cp-tree.def: Add ASM_STMT tree node. * Makefile.in, Make-lang.in: Add dependencies on and for semantics.c. ! Wed Mar 18 00:24:10 1998 Jason Merrill * pt.c (push_template_decl): Only check primary templates. *************** Wed Mar 18 00:24:10 1998 Jason Merrill *** 2773,2779 **** * pt.c (check_explicit_specialization): Complain about default args in explicit specialization. ! * parse.y (nomods_initdcl0): Also call cp_finish_decl for a constructor_declarator. Tue Mar 17 14:44:54 1998 Mark Mitchell --- 7706,7712 ---- * pt.c (check_explicit_specialization): Complain about default args in explicit specialization. ! * parse.y (nomods_initdcl0): Also call cp_finish_decl for a constructor_declarator. Tue Mar 17 14:44:54 1998 Mark Mitchell *************** Mon Mar 16 12:10:39 1998 Jason Merrill *** 2800,2806 **** * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX. * search.c: Likewise. ! * lex.c (do_pending_defargs): Only call maybe_{begin,end}_member_template_processing for FUNCTION_DECLs. * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al. --- 7733,7739 ---- * class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX. * search.c: Likewise. ! * lex.c (do_pending_defargs): Only call maybe_{begin,end}_member_template_processing for FUNCTION_DECLs. * parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al. *************** Mon Mar 16 10:54:21 1998 Mark Mitchell *** 2813,2821 **** * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more closely mimics the behavior in parse.y. ! (tsubst_expr): Return the resuting BLOCK when making a tsubst'ing into a compound statement. ! Sun Mar 15 02:07:26 1998 Jason Merrill * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro. --- 7746,7754 ---- * pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more closely mimics the behavior in parse.y. ! (tsubst_expr): Return the resulting BLOCK when making a tsubst'ing into a compound statement. ! Sun Mar 15 02:07:26 1998 Jason Merrill * cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro. *************** Sun Mar 15 01:14:22 1998 Kriang Lerdsuw *** 2832,2844 **** * lex.c (do_identifier): Handle TEMPLATE_DECL that was added in the class scope to catch redefinition error. ! * pt.c (reduce_template_parm_level): Also copy the DECL_TEMPLATE_PARMS field. Sun Mar 15 10:54:08 1998 Mark Mitchell * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a ! reduced-level template type parameter. Sun Mar 15 12:26:02 1998 Manfred Hollstein --- 7765,7777 ---- * lex.c (do_identifier): Handle TEMPLATE_DECL that was added in the class scope to catch redefinition error. ! * pt.c (reduce_template_parm_level): Also copy the DECL_TEMPLATE_PARMS field. Sun Mar 15 10:54:08 1998 Mark Mitchell * pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a ! reduced-level template type parameter. Sun Mar 15 12:26:02 1998 Manfred Hollstein *************** Sun Mar 15 12:26:02 1998 Manfred Hollst *** 2849,2858 **** * typeck2.c (abstract_virtuals_error): Use two loops to emit abstract virtual functions and virtual functions which need a final overrider separately. ! Thu Mar 12 09:39:40 1998 Manfred Hollstein ! * lang-specs.h: Properly put brackets around array elements in initializer. * typeck.c (build_binary_op_nodefault): Correctly place parens around --- 7782,7791 ---- * typeck2.c (abstract_virtuals_error): Use two loops to emit abstract virtual functions and virtual functions which need a final overrider separately. ! Thu Mar 12 09:39:40 1998 Manfred Hollstein ! * lang-specs.h: Properly put brackets around array elements in initializer. * typeck.c (build_binary_op_nodefault): Correctly place parens around *************** Thu Mar 12 09:26:04 1998 Manfred Hollst *** 2870,2876 **** * except.c (do_unwind): #if 0 definition of unused variables fcall and next_pc. ! * expr.c (extract_scalar_init): #if 0 prototype and function definition. * init.c (expand_aggr_init_1): Remove unused variable init_type. --- 7803,7809 ---- * except.c (do_unwind): #if 0 definition of unused variables fcall and next_pc. ! * expr.c (extract_scalar_init): #if 0 prototype and function definition. * init.c (expand_aggr_init_1): Remove unused variable init_type. *************** Fri Mar 6 23:27:35 1998 Jeffrey A Law *** 2914,2926 **** Fri Mar 6 10:06:59 1998 Kaveh R. Ghazi ! * method.c: Include "system.h" to get stdlib.h, stdio.h, ! ctype.h, string.h, etc. ! (issue_nrepeats): Add default case in enumeration switch. ! (check_btype): Likewise. ! (process_overload_item): Likewise. ! ! * Makefile.in (method.o): Depend on system.h. Wed Mar 4 22:26:53 1998 Andreas Schwab --- 7847,7859 ---- Fri Mar 6 10:06:59 1998 Kaveh R. Ghazi ! * method.c: Include "system.h" to get stdlib.h, stdio.h, ! ctype.h, string.h, etc. ! (issue_nrepeats): Add default case in enumeration switch. ! (check_btype): Likewise. ! (process_overload_item): Likewise. ! ! * Makefile.in (method.o): Depend on system.h. Wed Mar 4 22:26:53 1998 Andreas Schwab *************** Wed Mar 4 12:11:53 1998 Michael Tieman *** 2931,2937 **** * rtti.c (get_tinfo_fn_dynamic): If this function is called an FLAG_RTTI is unset, initialize type info machinery and continue with FLAG_RTTI enabled. ! (get_typeid): Ditto. Wed Mar 4 11:47:55 1998 Jason Merrill --- 7864,7870 ---- * rtti.c (get_tinfo_fn_dynamic): If this function is called an FLAG_RTTI is unset, initialize type info machinery and continue with FLAG_RTTI enabled. ! (get_typeid): Likewise. Wed Mar 4 11:47:55 1998 Jason Merrill *************** Tue Mar 3 01:38:17 1998 Jason Merrill *** 2950,2956 **** some formatting quirks. * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c, ! method.c, pt.c, ptree.c, typeck.c: Remove support for -fno-ansi-overloading and overloading METHOD_CALL_EXPR. * class.h: Remove. * Makefile.in: Adjust. --- 7883,7889 ---- some formatting quirks. * call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c, ! method.c, pt.c, ptree.c, typeck.c: Remove support for -fno-ansi-overloading and overloading METHOD_CALL_EXPR. * class.h: Remove. * Makefile.in: Adjust. *************** Mon Mar 2 12:11:06 1998 Jason Merrill *** 2966,2972 **** (nested_name_specifier): And add it before this use. (typename_sub0): And this use. Also add use without the keyword. (typename_sub1): Likewise. ! * pt.c (instantiate_class_template): Don't actually instantiate anything if our type uses template parms. Mon Mar 2 11:04:59 1998 Jim Wilson --- 7899,7905 ---- (nested_name_specifier): And add it before this use. (typename_sub0): And this use. Also add use without the keyword. (typename_sub1): Likewise. ! * pt.c (instantiate_class_template): Don't actually instantiate anything if our type uses template parms. Mon Mar 2 11:04:59 1998 Jim Wilson *************** Sat Feb 28 12:06:44 1998 Jason Merrill *** 2987,2995 **** * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL. * decl.c (make_typename_type): Handle template-id where the name is a TEMPLATE_DECL. ! * call.c (build_scoped_method_call): Handle member template destructor call. ! * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member destructor is represented by the type. * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro. --- 7920,7928 ---- * lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL. * decl.c (make_typename_type): Handle template-id where the name is a TEMPLATE_DECL. ! * call.c (build_scoped_method_call): Handle member template destructor call. ! * pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member destructor is represented by the type. * cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro. *************** Fri Feb 27 02:25:16 1998 Jason Merrill *** 3036,3042 **** * decl.c (pushtag): Handle member templates. * method.c (do_inline_function_hair): Don't touch IDENTIFIER_GLOBAL_VALUE. ! * init.c (build_offset_ref): If name isn't an identifier, just return it. * spew.c (yylex): Handle PTYPENAME like TYPENAME. --- 7969,7975 ---- * decl.c (pushtag): Handle member templates. * method.c (do_inline_function_hair): Don't touch IDENTIFIER_GLOBAL_VALUE. ! * init.c (build_offset_ref): If name isn't an identifier, just return it. * spew.c (yylex): Handle PTYPENAME like TYPENAME. *************** Wed Feb 25 00:35:33 1998 Jason Merrill *** 3067,3109 **** Tue Feb 24 22:15:04 1998 Martin von Loewis * cp-tree.def: Add CPLUS_BINDING node. ! * cp-tree.h (tree_binding): new struct ! (BINDING_SCOPE, BINDING_VALUE): new macros ! (current_namespace, global_namespace): declare extern ! (struct lang_decl_flags): new field in_namespace ! (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros ! (DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros ! (TREE_INDIRECT_USING): new macro * decl2.c (current_namespace, global_namespace): Declare. The value is a NAMESPACE_DECL now, not a TREE_LIST. ! (is_namespace_ancestor, namespace_ancestor):new static functions. ! (add_using_namespace, ambiguous_decl): likewise. ! (lookup_using_namespace): new support function for lookup_name. ! (qualified_lookup_using_namespace): new support function for ! do_scoped_id and lookup_namespace_name ! (get_namespace_id): mark as obsolete. (current_namespace_id): Likewise. (do_namespace_alias): Implement. (do_using_directive): Implement as call to add_using_namespace. ! * decl.c (binding_for_name): new function. ! (push_namespace, pop_namespace): implement. ! (push_decl): don't install a FUNCTION_DECL in the global branch. ! (lookup_namespace_name): implement using qualified lookup. (lookup_name_real): For global scoping, lookup in ! global_namespace. For namespace scoping, lookup in given ! namespace. For unscoped lookup, iterate over namespace, considering using directives. ! (init_decl_processing): initialize global_namespace. (grokvardecl): Build assembler name as static name for globals. (grokdeclarator): Remove old namespace mangling. (xref_tag): When installing a global binding for the tag, make sure we have an identifier. ! * method.c (build_overload_nested_name): mangle namespaces. (build_qualified_name): Likewise. (build_decl_overload_real): Likewise. ! * lex.c (build_lang_decl): set namespace for new declaration to current_namespace. ! (do_scoped_id): find global names in global or current namespace, or using qualified namespace lookup, depending on context. * init.c (build_member_call): When scope is namespace, use --- 8000,8042 ---- Tue Feb 24 22:15:04 1998 Martin von Loewis * cp-tree.def: Add CPLUS_BINDING node. ! * cp-tree.h (tree_binding): New struct. ! (BINDING_SCOPE, BINDING_VALUE): New macros. ! (current_namespace, global_namespace): Declare extern. ! (struct lang_decl_flags): New field in_namespace. ! (DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): New macros. ! (DECL_NAMESPACE, SET_DECL_NAMESPACE): New macros. ! (TREE_INDIRECT_USING): New macro. * decl2.c (current_namespace, global_namespace): Declare. The value is a NAMESPACE_DECL now, not a TREE_LIST. ! (is_namespace_ancestor, namespace_ancestor): New static functions. ! (add_using_namespace, ambiguous_decl): Likewise. ! (lookup_using_namespace): New support function for lookup_name. ! (qualified_lookup_using_namespace): New support function for ! do_scoped_id and lookup_namespace_name. ! (get_namespace_id): Mark as obsolete. (current_namespace_id): Likewise. (do_namespace_alias): Implement. (do_using_directive): Implement as call to add_using_namespace. ! * decl.c (binding_for_name): New function. ! (push_namespace, pop_namespace): Implement. ! (push_decl): Don't install a FUNCTION_DECL in the global branch. ! (lookup_namespace_name): Implement using qualified lookup. (lookup_name_real): For global scoping, lookup in ! global_namespace. For namespace scoping, lookup in given ! namespace. For unscoped lookup, iterate over namespace, considering using directives. ! (init_decl_processing): Initialize global_namespace. (grokvardecl): Build assembler name as static name for globals. (grokdeclarator): Remove old namespace mangling. (xref_tag): When installing a global binding for the tag, make sure we have an identifier. ! * method.c (build_overload_nested_name): Mangle namespaces. (build_qualified_name): Likewise. (build_decl_overload_real): Likewise. ! * lex.c (build_lang_decl): Set namespace for new declaration to current_namespace. ! (do_scoped_id): Find global names in global or current namespace, or using qualified namespace lookup, depending on context. * init.c (build_member_call): When scope is namespace, use *************** Tue Feb 24 01:40:24 1998 Jason Merrill *** 3133,3139 **** * pt.c (instantiate_class_template): Don't instantiate if pedantic and the args use template parms. ! * pt.c (push_tinst_level): If the instantiaton uses template parms, fail silently. * decl.c (xref_basetypes): Do call complete_type for basetypes that involve template parameters. --- 8066,8072 ---- * pt.c (instantiate_class_template): Don't instantiate if pedantic and the args use template parms. ! * pt.c (push_tinst_level): If the instantiation uses template parms, fail silently. * decl.c (xref_basetypes): Do call complete_type for basetypes that involve template parameters. *************** Mon Feb 23 02:52:29 1998 Mark Mitchell *** 3162,3168 **** * Make-lang.in (cc1plus): Note that cc1plus depends on cp/cp-tree.h and cp/cp-tree.def. ! * cp-tree.def (TEMPLATE_CONST_PARM): Remove. (TEMPLATE_PARM_INDEX): New tree code, used to indicate a position in a template parameter list. --- 8095,8101 ---- * Make-lang.in (cc1plus): Note that cc1plus depends on cp/cp-tree.h and cp/cp-tree.def. ! * cp-tree.def (TEMPLATE_CONST_PARM): Remove. (TEMPLATE_PARM_INDEX): New tree code, used to indicate a position in a template parameter list. *************** Mon Feb 23 02:52:29 1998 Mark Mitchell *** 3197,3203 **** two template functions with the same DECL_ASSEMBLER_NAME the same, since the names are not yet mangled. * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of ! TEMPLATE_CONST_PARM. (dump_expr): Likewise. Use the TEMPLATE_PARM_DECL to get at the decl for a non-type parameter, rather than printing `'. * friend.c (is_friend): Handle TEMPLATE_DECL friends. --- 8130,8136 ---- two template functions with the same DECL_ASSEMBLER_NAME the same, since the names are not yet mangled. * error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of ! TEMPLATE_CONST_PARM. (dump_expr): Likewise. Use the TEMPLATE_PARM_DECL to get at the decl for a non-type parameter, rather than printing `'. * friend.c (is_friend): Handle TEMPLATE_DECL friends. *************** Mon Feb 23 02:52:29 1998 Mark Mitchell *** 3210,3216 **** conditionally calling end_member_template_processing. (do_pending_defargs): Likewise. (do_identifier): Use TEMPLATE_PARM_INDEX instead of ! TEMPLATE_CONST_PARM. * method.c (build_mangled_template_parm_index): New function. (build_overload_value): Use it. (build_overload_name): Likewise. --- 8143,8149 ---- conditionally calling end_member_template_processing. (do_pending_defargs): Likewise. (do_identifier): Use TEMPLATE_PARM_INDEX instead of ! TEMPLATE_CONST_PARM. * method.c (build_mangled_template_parm_index): New function. (build_overload_value): Use it. (build_overload_name): Likewise. *************** Mon Feb 23 02:52:29 1998 Mark Mitchell *** 3240,3253 **** template. (tsubst_copy): Tidy up slightly. Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. Handle TYPE_DECLs by tsubsting into them. ! (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. (get_bindings): Call add_to_template_args if necessary. (instantiate_decl): Handle instantiations of friend templates. * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a TEMPLATE_TYPE_PARM as a list of fields; it's not! ! * spew.c (yylex): Do a little manual constant propogation to clarify the code. ! Sun Feb 22 19:53:29 1998 Jeffrey A Law (law@cygnus.com) * error.c: Include sys/types.h. --- 8173,8186 ---- template. (tsubst_copy): Tidy up slightly. Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. Handle TYPE_DECLs by tsubsting into them. ! (unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM. (get_bindings): Call add_to_template_args if necessary. (instantiate_decl): Handle instantiations of friend templates. * search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a TEMPLATE_TYPE_PARM as a list of fields; it's not! ! * spew.c (yylex): Do a little manual constant propagation to clarify the code. ! Sun Feb 22 19:53:29 1998 Jeffrey A Law (law@cygnus.com) * error.c: Include sys/types.h. *************** Thu Feb 19 10:36:48 1998 Jason Merrill *** 3260,3279 **** * typeck2.c (process_init_constructor): Sorry about non-trivial labeled initializers. ! * parse.y (initlist): Reenable labeled initializers. Thu Feb 19 10:15:55 1998 Kriang Lerdsuwanakij ! * pt.c (coerce_template_parms) Add a new parameter, is_tmpl_parm, ! all callers changed. Rely on the new parameter instead of arg being a TREE_LIST when determine whether we are working inside template template parameter. Clean up is_type test. ! Thu Feb 19 10:04:12 1998 Jason Merrill * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT. * typeck2.c (initializer_constant_valid_p): Allow conversions ! between pointers and refrerences. 1998-02-19 Brendan Kehoe --- 8193,8212 ---- * typeck2.c (process_init_constructor): Sorry about non-trivial labeled initializers. ! * parse.y (initlist): Re-enable labeled initializers. Thu Feb 19 10:15:55 1998 Kriang Lerdsuwanakij ! * pt.c (coerce_template_parms): Add a new parameter, is_tmpl_parm, ! all callers changed. Rely on the new parameter instead of arg being a TREE_LIST when determine whether we are working inside template template parameter. Clean up is_type test. ! Thu Feb 19 10:04:12 1998 Jason Merrill * cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT. * typeck2.c (initializer_constant_valid_p): Allow conversions ! between pointers and references. 1998-02-19 Brendan Kehoe *************** Tue Feb 17 14:07:52 1998 Mark Mitchell *** 3304,3317 **** (datadef): Remove redundant actions. (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards. * parse.c: Regenerated. ! Tue Feb 17 11:54:16 1998 Jason Merrill * parse.y (simple_stmt): Use getdecls() to check for decl. Sat Feb 14 11:50:51 1998 Manfred Hollstein ! * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New macros. (c++.install-common): Install c++filt properly as native or as cross variant. --- 8237,8250 ---- (datadef): Remove redundant actions. (initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards. * parse.c: Regenerated. ! Tue Feb 17 11:54:16 1998 Jason Merrill * parse.y (simple_stmt): Use getdecls() to check for decl. Sat Feb 14 11:50:51 1998 Manfred Hollstein ! * Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New macros. (c++.install-common): Install c++filt properly as native or as cross variant. *************** Fri Feb 13 14:06:22 1998 Mike Stump ! * parse.y (simple_stmt): If the condition isn't a declaration, start the controlled block after the test. Fri Feb 13 02:26:10 1998 Andreas Schwab * call.c (build_over_call): Convert builtin abs, labs and fabs to tree-codes. ! * decl.c (init_decl_processing): Reenable abs, labs and fabs as builtins. Fri Feb 13 01:36:42 1998 Jason Merrill --- 8260,8273 ---- Fri Feb 13 13:24:32 1998 Jason Merrill ! * parse.y (simple_stmt): If the condition isn't a declaration, start the controlled block after the test. Fri Feb 13 02:26:10 1998 Andreas Schwab * call.c (build_over_call): Convert builtin abs, labs and fabs to tree-codes. ! * decl.c (init_decl_processing): Re-enable abs, labs and fabs as builtins. Fri Feb 13 01:36:42 1998 Jason Merrill *************** Wed Feb 11 23:28:05 1998 Mark Mitchell *** 3363,3369 **** Wed Feb 11 16:42:04 1998 Mark Mitchell * tree.c (is_overloaded_fn): Use really_overloaded_fn. ! (really_overloaded_fn): Move check here from is_overloaded_fn. (get_first_fn): Use really_overloaded_fn and is_overloaded_fn. Wed Feb 11 15:54:18 1998 Mark Mitchell --- 8296,8302 ---- Wed Feb 11 16:42:04 1998 Mark Mitchell * tree.c (is_overloaded_fn): Use really_overloaded_fn. ! (really_overloaded_fn): Move check here from is_overloaded_fn. (get_first_fn): Use really_overloaded_fn and is_overloaded_fn. Wed Feb 11 15:54:18 1998 Mark Mitchell *************** Mon Feb 9 22:23:31 1998 Mark Mitchell *** 3402,3408 **** (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL. * typeck.c (build_component_ref): Assign the correct type to the result of build_vfn_ref. ! Tue Feb 10 23:56:46 1998 Jason Merrill * pt.c (convert_nontype_argument): Fix typo. --- 8335,8341 ---- (uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL. * typeck.c (build_component_ref): Assign the correct type to the result of build_vfn_ref. ! Tue Feb 10 23:56:46 1998 Jason Merrill * pt.c (convert_nontype_argument): Fix typo. *************** Tue Feb 10 20:36:52 1998 Jason Merrill *** 3415,3433 **** * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead when deciding to override DECL_ASSEMBLER_NAME. ! Tue Feb 10 15:30:55 EST 1998 Andrew MacLeod * decl2.c (lang_f_options): Add -fsquangle to option processing list. * cp-tree.h (flag_do_squangling): Add declaration. * lang-options.h: Add -fsquangle and -fno-squangle. * method.c: Add macros and static variables for squangling. ! (build_overload_name): Rename to build_mangled_name, add logic for B ! compression, and split into process_modifiers and process_overload_item. ! (process_modifiers): New function, to handle constant, reference, ! and pointer types. (process_overload_item): New function, handles issue of type codes. ! (build_overload_name): New function, start squangling and call build_mangled_name. (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline. (start_squangling): New function to initialize squangling structs. --- 8348,8366 ---- * decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead when deciding to override DECL_ASSEMBLER_NAME. ! Tue Feb 10 15:30:55 1998 Andrew MacLeod * decl2.c (lang_f_options): Add -fsquangle to option processing list. * cp-tree.h (flag_do_squangling): Add declaration. * lang-options.h: Add -fsquangle and -fno-squangle. * method.c: Add macros and static variables for squangling. ! (build_overload_name): Rename to build_mangled_name, add logic for B ! compression, and split into process_modifiers and process_overload_item. ! (process_modifiers): New function, to handle constant, reference, ! and pointer types. (process_overload_item): New function, handles issue of type codes. ! (build_overload_name): New function, start squangling and call build_mangled_name. (ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline. (start_squangling): New function to initialize squangling structs. *************** Tue Feb 10 15:30:55 EST 1998 Andrew MacL *** 3440,3446 **** use DECL_ASSEMBLER_NAME when squangling is on. (check_btype): New function, checks for B type compression. (build_static_name, build_decl_overload_real): Initiate squangling. ! (build_typename_overload, build_overload_with_type): Initiate squangling Sun Feb 8 23:47:38 1998 scott snyder --- 8373,8379 ---- use DECL_ASSEMBLER_NAME when squangling is on. (check_btype): New function, checks for B type compression. (build_static_name, build_decl_overload_real): Initiate squangling. ! (build_typename_overload, build_overload_with_type): Initiate squangling Sun Feb 8 23:47:38 1998 scott snyder *************** Tue Feb 3 23:50:52 1998 Mark Mitchell *** 3476,3482 **** * cvt.c (ocp_convert): Obtain the constant values from constant decls even if the destination type is the same as the type of the ! decl. * decl2.c (finish_file): Make sure that static inlines with definitions are not marked DECL_EXTERNAL before returning. --- 8409,8415 ---- * cvt.c (ocp_convert): Obtain the constant values from constant decls even if the destination type is the same as the type of the ! decl. * decl2.c (finish_file): Make sure that static inlines with definitions are not marked DECL_EXTERNAL before returning. *************** Tue Feb 3 22:43:42 1998 Jason Merrill *** 3485,3491 **** * decl.c: Lose arg_looking_for_template. (lookup_name_real): Likewise. ! * parse.y: Lose processing_template_arg, template_arg1 (primary): Likewise. * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too. --- 8418,8424 ---- * decl.c: Lose arg_looking_for_template. (lookup_name_real): Likewise. ! * parse.y: Lose processing_template_arg, template_arg1. (primary): Likewise. * spew.c (yylex): Set lastiddecl for PTYPENAMEs, too. *************** Tue Feb 3 22:04:01 1998 Kriang Lerdsuw *** 3493,3528 **** * error.c (dump_decl): Fix type of default arguments for template template parameters and nontype template parameters. ! * parse.y (template_parm): Handle invalid default template template arguments here. ! * parse.y (template_parm): Use template_arg instead of PTYPENAME for default template template argument. ! * pt.c (coerce_template_parms): Merge default template argument codes. Can treat RECORD_TYPE as template name if it is implicitly created. Fix argument index in error message. ! * typeck.c (comptypes): Merge template argument comparison codes in TEMPLATE_TEMPLATE_PARM and RECORD_TYPE. ! Tue Jan 6 01:42:44 1998 Mumit Khan * lex.c (file_name_nondirectory): Also check for '/'. Mon Feb 2 11:24:22 1998 Mark Mitchell * parse.y (primary): Deal with statement-expressions in ! templates. * pt.c (tsubst_copy): Handle BIND_EXPR. * tree.c (mapcar): Likewise. * call.c (add_template_candidate_real): Pass extra parameter to ! fn_type_unification. * cp-tree.h (fn_type_unification): Add parameter. * pt.c (fn_type_unification): Add additional parameter to deal with static member functions. (get_bindings): Deal with static member functions. ! * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro. (revert_static_member_fn): Declare. * decl.c (revert_static_member_fn): Remove declaration. Change linkage from internal to external. --- 8426,8461 ---- * error.c (dump_decl): Fix type of default arguments for template template parameters and nontype template parameters. ! * parse.y (template_parm): Handle invalid default template template arguments here. ! * parse.y (template_parm): Use template_arg instead of PTYPENAME for default template template argument. ! * pt.c (coerce_template_parms): Merge default template argument codes. Can treat RECORD_TYPE as template name if it is implicitly created. Fix argument index in error message. ! * typeck.c (comptypes): Merge template argument comparison codes in TEMPLATE_TEMPLATE_PARM and RECORD_TYPE. ! Tue Jan 6 01:42:44 1998 Mumit Khan * lex.c (file_name_nondirectory): Also check for '/'. Mon Feb 2 11:24:22 1998 Mark Mitchell * parse.y (primary): Deal with statement-expressions in ! templates. * pt.c (tsubst_copy): Handle BIND_EXPR. * tree.c (mapcar): Likewise. * call.c (add_template_candidate_real): Pass extra parameter to ! fn_type_unification. * cp-tree.h (fn_type_unification): Add parameter. * pt.c (fn_type_unification): Add additional parameter to deal with static member functions. (get_bindings): Deal with static member functions. ! * cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro. (revert_static_member_fn): Declare. * decl.c (revert_static_member_fn): Remove declaration. Change linkage from internal to external. *************** Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi *** 3571,3577 **** (grokdeclarator): Add parentheses around && within ||. Add explicit braces to avoid ambiguous `else'. (grokparms): Initialize `type' to NULL_TREE. ! (xref_tag): Remove unused label `just_return'. (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE. (finish_function): Initialize `cond' and `thenclause' to NULL_TREE. (hack_incomplete_structures): Add parentheses around assignment --- 8504,8510 ---- (grokdeclarator): Add parentheses around && within ||. Add explicit braces to avoid ambiguous `else'. (grokparms): Initialize `type' to NULL_TREE. ! (xref_tag): Remove unused label `just_return'. (finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE. (finish_function): Initialize `cond' and `thenclause' to NULL_TREE. (hack_incomplete_structures): Add parentheses around assignment *************** Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi *** 3581,3587 **** * error.c: Include . (dump_expr): Change the type of `i' to size_t. Remove unused ! label `error'. * except.c (init_exception_processing): Remove unused variable `d'. (expand_throw): Likewise for `label'. --- 8514,8520 ---- * error.c: Include . (dump_expr): Change the type of `i' to size_t. Remove unused ! label `error'. * except.c (init_exception_processing): Remove unused variable `d'. (expand_throw): Likewise for `label'. *************** Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi *** 3607,3613 **** `look_for_semicolon' and `look_for_lbrac'. (cons_up_default_function): Initialize `args' to NULL_TREE. (readescape): Initialize `firstdig' to 0. ! (real_yylex): Add parentheses around assignment used as truth value. * method.c: Include if we don't have . Protect declaration of `index' with autoconf macro. --- 8540,8546 ---- `look_for_semicolon' and `look_for_lbrac'. (cons_up_default_function): Initialize `args' to NULL_TREE. (readescape): Initialize `firstdig' to 0. ! (real_yylex): Add parentheses around assignment used as truth value. * method.c: Include if we don't have . Protect declaration of `index' with autoconf macro. *************** Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi *** 3628,3635 **** * repo.c (init_repo): Add parentheses around assignment used as truth value. (finish_repo): Remove unused varable `p'. ! ! * search.c (get_binfo): Initiize `type' to NULL_TREE. (get_base_distance): Likewise. (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path' and `new_v' to NULL_TREE. --- 8561,8568 ---- * repo.c (init_repo): Add parentheses around assignment used as truth value. (finish_repo): Remove unused varable `p'. ! ! * search.c (get_binfo): Initialize `type' to NULL_TREE. (get_base_distance): Likewise. (lookup_field): Initialize `rval_binfo_h', `type', `basetype_path' and `new_v' to NULL_TREE. *************** Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi *** 3649,3655 **** (hash_tree_cons): Initialize hashcode to 0. (can_free): Likewise for `size'. (cp_tree_equal): Add explicit braces to avoid ambiguous `else'. ! * typeck.c (convert_sequence): Hide prototype. (common_type): Add explicit braces to avoid ambiguous `else'. (comp_target_types): Likewise. --- 8582,8588 ---- (hash_tree_cons): Initialize hashcode to 0. (can_free): Likewise for `size'. (cp_tree_equal): Add explicit braces to avoid ambiguous `else'. ! * typeck.c (convert_sequence): Hide prototype. (common_type): Add explicit braces to avoid ambiguous `else'. (comp_target_types): Likewise. *************** Mon Feb 2 00:57:38 1998 Kaveh R. Ghazi *** 3665,3671 **** * xref.c (GNU_xref_decl): Initialize `cls' to 0. ! Sun Feb 1 12:45:34 1998 J"orn Rennecke * decl.c (init_decl_processing): Use set_sizetype. * decl2.c (sizetype): Don't declare. --- 8598,8604 ---- * xref.c (GNU_xref_decl): Initialize `cls' to 0. ! Sun Feb 1 12:45:34 1998 J"orn Rennecke * decl.c (init_decl_processing): Use set_sizetype. * decl2.c (sizetype): Don't declare. *************** Thu Jan 29 10:39:30 1998 Mark Mitchell *** 3688,3700 **** Wed Jan 28 23:14:44 1998 Jason Merrill * class.c (instantiate_type): Don't just return a known type if ! it's wrong. Wed Jan 28 11:04:07 1998 Mark Mitchell * class.c (instantiate_type): Remove handling of FUNCTION_DECL since that code could never be reached. ! * error.c (dump_decl): Avoid aborting in the midst of printing an error message about an illegal template declaration. --- 8621,8633 ---- Wed Jan 28 23:14:44 1998 Jason Merrill * class.c (instantiate_type): Don't just return a known type if ! it's wrong. Wed Jan 28 11:04:07 1998 Mark Mitchell * class.c (instantiate_type): Remove handling of FUNCTION_DECL since that code could never be reached. ! * error.c (dump_decl): Avoid aborting in the midst of printing an error message about an illegal template declaration. *************** Wed Jan 28 11:04:07 1998 Mark Mitchell *** 3703,3709 **** * pt.c (convert_nontype_argument): Allow REAL_TYPE and COMPLEX_TYPE template arguments as a g++ extension. ! * cp-tree.def (ALIGNOF_EXPR): New tree code. * decl2.c (grok_alignof): If processing_template_decl, just store the expression. --- 8636,8642 ---- * pt.c (convert_nontype_argument): Allow REAL_TYPE and COMPLEX_TYPE template arguments as a g++ extension. ! * cp-tree.def (ALIGNOF_EXPR): New tree code. * decl2.c (grok_alignof): If processing_template_decl, just store the expression. *************** Wed Jan 28 11:04:07 1998 Mark Mitchell *** 3715,3721 **** * pt.c (uses_template_parms): Correctly determine whether or not a SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant folding can be done. ! * cp-tree.h (grok_enum_decls): Remove type parameter. * decl.c (grok_enum_decls): Likewise. * decl2.c (grok_x_components): Call grok_enum_decls --- 8648,8654 ---- * pt.c (uses_template_parms): Correctly determine whether or not a SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant folding can be done. ! * cp-tree.h (grok_enum_decls): Remove type parameter. * decl.c (grok_enum_decls): Likewise. * decl2.c (grok_x_components): Call grok_enum_decls *************** Wed Jan 28 11:04:07 1998 Mark Mitchell *** 3727,3733 **** * decl.c (start_function): Make member functions of local classes in extern inline functions have comdat linkage here... (grokdeclarator): Rather than here. ! Wed Jan 28 10:55:47 1998 Jason Merrill * pt.c (convert_nontype_argument): Use decl_constant_value. --- 8660,8666 ---- * decl.c (start_function): Make member functions of local classes in extern inline functions have comdat linkage here... (grokdeclarator): Rather than here. ! Wed Jan 28 10:55:47 1998 Jason Merrill * pt.c (convert_nontype_argument): Use decl_constant_value. *************** Tue Jan 27 16:42:21 1998 Mark Mitchell *** 3755,3772 **** (maybe_push_to_top_level): Save them. (pop_from_top_level): Restore them. (grokfndecl): Use new return value from ! check_explicit_specialization. (start_decl): Don't check flag_guiding_decls before pushing ! decls. (cp_finish_decl): Remove previous (bogus) change. (grok_declarator): Use decl_function_context rather than ! is_local_class. * decl2.c (finish_file): Pass extra argument to get_bindings. ! (build_expr_from_tree): Let build_x_component_ref check validity of arguments rather than doing it here. * lex.c (cons_up_default_function): Remove code fooling with processing_specialization, processing_explicit_instantiation ! flags, as that is now done in {maybe_push_top,pop_from}_top_level. * method.c (build_overload_identifier): Mangle local classes in template functions correctly. * parse.y (finish_member_template_decl): Move to pt.c. --- 8688,8705 ---- (maybe_push_to_top_level): Save them. (pop_from_top_level): Restore them. (grokfndecl): Use new return value from ! check_explicit_specialization. (start_decl): Don't check flag_guiding_decls before pushing ! decls. (cp_finish_decl): Remove previous (bogus) change. (grok_declarator): Use decl_function_context rather than ! is_local_class. * decl2.c (finish_file): Pass extra argument to get_bindings. ! (build_expr_from_tree): Let build_x_component_ref check validity of arguments rather than doing it here. * lex.c (cons_up_default_function): Remove code fooling with processing_specialization, processing_explicit_instantiation ! flags, as that is now done in {maybe_push_top,pop_from}_top_level. * method.c (build_overload_identifier): Mangle local classes in template functions correctly. * parse.y (finish_member_template_decl): Move to pt.c. *************** Tue Jan 27 16:42:21 1998 Mark Mitchell *** 3775,3783 **** (determine_specialization): Change interface. Properly look for most specialized versions of template candidates. (check_explicit_specialization): Fully process explicit ! instantiations. (push_template_decl): Avoid looking at CLASSTYPE fields in ! FUNCTION_DECLS. (determine_overloaded_function): Remove. (convert_nontype_argument): Change name from convert_nontype_parameter. Use determine_overloaded_function --- 8708,8716 ---- (determine_specialization): Change interface. Properly look for most specialized versions of template candidates. (check_explicit_specialization): Fully process explicit ! instantiations. (push_template_decl): Avoid looking at CLASSTYPE fields in ! FUNCTION_DECLS. (determine_overloaded_function): Remove. (convert_nontype_argument): Change name from convert_nontype_parameter. Use determine_overloaded_function *************** Tue Jan 27 16:42:21 1998 Mark Mitchell *** 3788,3794 **** (lookup_template_class): Likewise. (tsubst): Likewise. (more_specialized): Take explict template arguments as a ! parameter. (most_specialized): Likewise. (get_bindings): Likewise. Check that return types match before proclaiming a function a match. --- 8721,8727 ---- (lookup_template_class): Likewise. (tsubst): Likewise. (more_specialized): Take explict template arguments as a ! parameter. (most_specialized): Likewise. (get_bindings): Likewise. Check that return types match before proclaiming a function a match. *************** Tue Jan 27 16:42:21 1998 Mark Mitchell *** 3801,3807 **** Tue Jan 27 01:44:02 1998 Jason Merrill ! * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that return_target and call_target are equivalent. * pt.c (type_unification_real): Just accept function parms that --- 8734,8740 ---- Tue Jan 27 01:44:02 1998 Jason Merrill ! * expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that return_target and call_target are equivalent. * pt.c (type_unification_real): Just accept function parms that *************** Sat Jan 24 12:13:54 1998 Jason Merrill *** 3819,3825 **** * error.c (dump_decl): Fix type default template args. (dump_type): Hand TEMPLATE_DECL off to dump_decl. ! Fri Jan 23 18:34:37 1998 Mumit Khan * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined. (file_name_nondirectory): Use. --- 8752,8758 ---- * error.c (dump_decl): Fix type default template args. (dump_type): Hand TEMPLATE_DECL off to dump_decl. ! Fri Jan 23 18:34:37 1998 Mumit Khan * lex.c (DIR_SEPARATOR): Define to be '/' if not already defined. (file_name_nondirectory): Use. *************** Fri Jan 23 18:34:37 1998 Mumit Khan * pt.c (coerce_template_parms): Don't access elements of ARGLIST ! that are not really present. Substitute default arguments in ! template template arguments. Correctly convert TEMPLATE_DECL to TEMPLATE_TEMPLATE_PARM. ! (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM are no longer treated specially here. * parse.y (template_template_parm): Fix copy error. * decl.c (grokdeclarator): Warn about missing `typename' for nested --- 8760,8769 ---- Wed Jan 21 10:29:57 1998 Kriang Lerdsuwanakij * pt.c (coerce_template_parms): Don't access elements of ARGLIST ! that are not really present. Substitute default arguments in ! template template arguments. Correctly convert TEMPLATE_DECL to TEMPLATE_TEMPLATE_PARM. ! (comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM are no longer treated specially here. * parse.y (template_template_parm): Fix copy error. * decl.c (grokdeclarator): Warn about missing `typename' for nested *************** Wed Jan 21 10:29:57 1998 Kriang Lerdsuw *** 3851,3865 **** (grokdeclarator): Handle TEMPLATE_DECL. * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM. * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM. ! (dump_type_prefix, dump_type_suffix) Handle TEMPLATE_TEMPLATE_PARM. (dump_decl): Handle unnamed template type parameters. Handle template template parameters. (dump_function_name): Handle template template parameters. ! * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): Handle TEMPLATE_TEMPLATE_PARM. * method.c (build_template_template_parm_names): New function. (build_template_parm_names): Handle TEMPLATE_DECL. ! (build_overload_nested_name, build_overload_name): Handle TEMPLATE_TEMPLATE_PARM. * parse.y (maybe_identifier): New nonterminal. (template_type_parm): Use it. --- 8784,8798 ---- (grokdeclarator): Handle TEMPLATE_DECL. * decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM. * error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM. ! (dump_type_prefix, dump_type_suffix): Handle TEMPLATE_TEMPLATE_PARM. (dump_decl): Handle unnamed template type parameters. Handle template template parameters. (dump_function_name): Handle template template parameters. ! * init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef): Handle TEMPLATE_TEMPLATE_PARM. * method.c (build_template_template_parm_names): New function. (build_template_parm_names): Handle TEMPLATE_DECL. ! (build_overload_nested_name, build_overload_name): Handle TEMPLATE_TEMPLATE_PARM. * parse.y (maybe_identifier): New nonterminal. (template_type_parm): Use it. *************** Wed Jan 21 10:29:57 1998 Kriang Lerdsuw *** 3873,3883 **** (process_template_parm): Handle template template parameters. (coerce_template_parms, comp_template_args): Likewise. (mangle_class_name_for_template, lookup_template_class): Likewise. ! (uses_template_parms): Handle TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM. (current_template_args): Handle TEMPLATE_DECL. (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM. ! * search.c (dfs_walk, dfs_record_inheritance): Handle TEMPLATE_TEMPLATE_PARM. * tree.c (copy_template_template_parm): New function. (mapcar): Handle TEMPLATE_TEMPLATE_PARM. --- 8806,8816 ---- (process_template_parm): Handle template template parameters. (coerce_template_parms, comp_template_args): Likewise. (mangle_class_name_for_template, lookup_template_class): Likewise. ! (uses_template_parms): Handle TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM. (current_template_args): Handle TEMPLATE_DECL. (tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM. ! * search.c (dfs_walk, dfs_record_inheritance): Handle TEMPLATE_TEMPLATE_PARM. * tree.c (copy_template_template_parm): New function. (mapcar): Handle TEMPLATE_TEMPLATE_PARM. *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 3893,3908 **** * decl2.c (build_expr_from_tree): Issue an error message if the object in a COMPONENT_REF is a TEMPLATE_DECL. ! * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs. ! * class.c (is_local_class): New function. * cp-tree.h (is_local_class): Declare it. (last_tree): Likewise. (begin_tree): Likewise. (end_tree): Likewise. (lookup_template_class): Change prototype. ! * decl.c (cp_finish_decl): Check for NULL where necesary. Consider FUNCTION_DECLS to declare objects with top-level binding, when calling make_decl_rtl. (grokdeclarator): Give members of local classes internal linkage. --- 8826,8841 ---- * decl2.c (build_expr_from_tree): Issue an error message if the object in a COMPONENT_REF is a TEMPLATE_DECL. ! * typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs. ! * class.c (is_local_class): New function. * cp-tree.h (is_local_class): Declare it. (last_tree): Likewise. (begin_tree): Likewise. (end_tree): Likewise. (lookup_template_class): Change prototype. ! * decl.c (cp_finish_decl): Check for NULL where necessary. Consider FUNCTION_DECLS to declare objects with top-level binding, when calling make_decl_rtl. (grokdeclarator): Give members of local classes internal linkage. *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 3922,3940 **** * pt.c (saved_trees): New variable. (mangle_class_name_for_template): Change prototype. Use additional function context to name local classes in templates ! correctly. (classtype_mangled_name): Pass the context. (push_template_decl): Handle local classes and templates, and member functions for such classes. (convert_nontype_parameter): Fix handling of pointer-to-member ! constants. (lookup_template_class): Handle local classes in templates. (tsubst): Likewise. Don't assume that template instantiations ! have external linkage; pay attention to the template declaration. (mark_decl_instantiated): Likewise. (begin_tree): New function. (end_tree): Likewise. ! * decl.c (xref_basetypes): Don't call complete_type for basetypes that involve template parameters; that can lead to infinite recursion unnecessarily. --- 8855,8873 ---- * pt.c (saved_trees): New variable. (mangle_class_name_for_template): Change prototype. Use additional function context to name local classes in templates ! correctly. (classtype_mangled_name): Pass the context. (push_template_decl): Handle local classes and templates, and member functions for such classes. (convert_nontype_parameter): Fix handling of pointer-to-member ! constants. (lookup_template_class): Handle local classes in templates. (tsubst): Likewise. Don't assume that template instantiations ! have external linkage; pay attention to the template declaration. (mark_decl_instantiated): Likewise. (begin_tree): New function. (end_tree): Likewise. ! * decl.c (xref_basetypes): Don't call complete_type for basetypes that involve template parameters; that can lead to infinite recursion unnecessarily. *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 3946,3956 **** (build_template_decl): New function. (push_template_delc): Handle out-of-class specializations of member templates. ! ! * pt.c (check_explicit_specialization): Set up the template ! information before registering the specialization. ! (coerce_template_parms): Fix thinko. ! (tsubst): Handle specializations of member templates correctly. * class.c (finish_struct_methods): Remove calls to check_explicit_specialization from here. --- 8879,8889 ---- (build_template_decl): New function. (push_template_delc): Handle out-of-class specializations of member templates. ! ! * pt.c (check_explicit_specialization): Set up the template ! information before registering the specialization. ! (coerce_template_parms): Fix thinko. ! (tsubst): Handle specializations of member templates correctly. * class.c (finish_struct_methods): Remove calls to check_explicit_specialization from here. *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 3960,3966 **** (begin_explicit_instantiation): Likewise. (end_explicit_instantiation): Likewise. (determine_specialization): Renamed from ! determine_explicit_specialization. (comp_template_parms): New function. (processing_explicit_instantiation): New variable. * cvt.c (perform_qualification_conversions): New function. --- 8893,8899 ---- (begin_explicit_instantiation): Likewise. (end_explicit_instantiation): Likewise. (determine_specialization): Renamed from ! determine_explicit_specialization. (comp_template_parms): New function. (processing_explicit_instantiation): New variable. * cvt.c (perform_qualification_conversions): New function. *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 3970,3976 **** instantiation/specialization mismatches. (start_decl): Don't call pushdecl for template specializations, since they don't affect overloading. ! (start_function): Likewise (grokfndecl): Call check_explicit_specialization a little later. Don't call duplicate_decls for memberm template specializations. (grokdeclarator): Don't update template_count for classes that are --- 8903,8909 ---- instantiation/specialization mismatches. (start_decl): Don't call pushdecl for template specializations, since they don't affect overloading. ! (start_function): Likewise. (grokfndecl): Call check_explicit_specialization a little later. Don't call duplicate_decls for memberm template specializations. (grokdeclarator): Don't update template_count for classes that are *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 3981,3987 **** * parse.y (finish_member_template_decl): New function. (component_decl_1): Use it. (fn.def2): Likewise. ! (template_arg_list_opt): New nonterminal. (template_type): Use it. (self_template_type): Likewise. (template_id): Likewise. --- 8914,8920 ---- * parse.y (finish_member_template_decl): New function. (component_decl_1): Use it. (fn.def2): Likewise. ! (template_arg_list_opt): New nonterminal. (template_type): Use it. (self_template_type): Likewise. (template_id): Likewise. *************** Mon Jan 19 22:40:03 1998 Mark Mitchell *** 4005,4016 **** (comp_template_parms): New function. (coerce_template_parms): Call convert_nontype_parameter. (tsubst): Refine handling of member templates. Use ! register_specialization. (instantiate_template): Use retrieve_specialization. (do_decl_instantiation): Likewise. (instantiate_decl): Likewise. (type_unification): Improve handling of explict template ! arguments. * tree.c (mapcar): Return error_mark_node, rather than aborting, on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS. * typeck.c (build_unary_op): Call determine_specialization, rather --- 8938,8949 ---- (comp_template_parms): New function. (coerce_template_parms): Call convert_nontype_parameter. (tsubst): Refine handling of member templates. Use ! register_specialization. (instantiate_template): Use retrieve_specialization. (do_decl_instantiation): Likewise. (instantiate_decl): Likewise. (type_unification): Improve handling of explict template ! arguments. * tree.c (mapcar): Return error_mark_node, rather than aborting, on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS. * typeck.c (build_unary_op): Call determine_specialization, rather *************** Mon Jan 19 13:18:51 1998 Jason Merrill *** 4022,4028 **** Fri Jan 16 11:40:50 1998 Bruno Haible ! * error.c (dump_decl): For enum tags, output the tag, not its value. 1998-01-13 Brendan Kehoe --- 8955,8961 ---- Fri Jan 16 11:40:50 1998 Bruno Haible ! * error.c (dump_decl): For enum tags, output the tag, not its value. 1998-01-13 Brendan Kehoe *************** Wed Jan 7 23:47:13 1998 Jason Merrill *** 4052,4062 **** (expand_exception_blocks): Likewise. (alloc_eh_object): New fn. (expand_throw): Use it. Protect exception init with terminate. ! * typeck.c (build_modify_expr): Remove code that ignores trivial methods. Mon Dec 22 11:36:27 1997 Kaveh R. Ghazi ! * call.c (add_builtin_candidate): Add default case in enumeration switch. (build_new_op): Likewise. --- 8985,8995 ---- (expand_exception_blocks): Likewise. (alloc_eh_object): New fn. (expand_throw): Use it. Protect exception init with terminate. ! * typeck.c (build_modify_expr): Remove code that ignores trivial methods. Mon Dec 22 11:36:27 1997 Kaveh R. Ghazi ! * call.c (add_builtin_candidate): Add default case in enumeration switch. (build_new_op): Likewise. *************** Thu Dec 18 14:51:50 1997 Mark Mitchell *** 4087,4093 **** Thu Dec 18 14:43:19 1997 Jason Merrill ! * typeck.c (unary_complex_lvalue): Ignore op0 when taking the address of an OFFSET_REF. * cp-tree.def: Add AGGR_INIT_EXPR. --- 9020,9026 ---- Thu Dec 18 14:43:19 1997 Jason Merrill ! * typeck.c (unary_complex_lvalue): Ignore op0 when taking the address of an OFFSET_REF. * cp-tree.def: Add AGGR_INIT_EXPR. *************** Thu Dec 18 14:43:19 1997 Jason Merrill *** 4100,4109 **** Wed Dec 17 17:08:52 1997 Benjamin Kosnik * pt.c (instantiate_class_template): Don't do injection when ! processing_template_decl is true, as pollutes current_binding_level ! for base classes. ! Wed Dec 17 21:17:39 1997 Peter Schmid * pt.c (maybe_fold_nontype_arg): Add prototype. --- 9033,9042 ---- Wed Dec 17 17:08:52 1997 Benjamin Kosnik * pt.c (instantiate_class_template): Don't do injection when ! processing_template_decl is true, as pollutes current_binding_level ! for base classes. ! Wed Dec 17 21:17:39 1997 Peter Schmid * pt.c (maybe_fold_nontype_arg): Add prototype. *************** Sun Dec 14 22:34:20 1997 Jason Merrill *** 4123,4143 **** * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's. ! * pt.c (type_unification_real): Change __null to type void* with a warning. Sun Dec 14 20:38:35 1997 Mark Mitchell * call.c (implicit_conversion): Don't call build_user_type_conversion_1 with a NULL expr, since it will ! crash. * pt.c (unify): Don't try to unify array bounds if either array is unbounded. Fri Dec 12 16:09:14 1997 Jason Merrill ! * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): Replace extern decls with casts. * decl.c (expand_start_early_try_stmts): Don't mess with a sequence. --- 9056,9076 ---- * cvt.c (cp_convert_to_pointer): Fix base conversion of pm's. ! * pt.c (type_unification_real): Change __null to type void* with a warning. Sun Dec 14 20:38:35 1997 Mark Mitchell * call.c (implicit_conversion): Don't call build_user_type_conversion_1 with a NULL expr, since it will ! crash. * pt.c (unify): Don't try to unify array bounds if either array is unbounded. Fri Dec 12 16:09:14 1997 Jason Merrill ! * errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at): Replace extern decls with casts. * decl.c (expand_start_early_try_stmts): Don't mess with a sequence. *************** Thu Dec 11 22:18:37 1997 Jason Merrill *** 4150,4156 **** * decl2.c (comdat_linkage): Also set DECL_COMDAT. (finish_file): Check DECL_COMDAT instead of weak|one_only. (import_export_vtable): Use make_decl_one_only instead of ! comdat_linkage for win32 tweak. (import_export_decl): Likewise. * pt.c (mark_decl_instantiated): Likewise. --- 9083,9089 ---- * decl2.c (comdat_linkage): Also set DECL_COMDAT. (finish_file): Check DECL_COMDAT instead of weak|one_only. (import_export_vtable): Use make_decl_one_only instead of ! comdat_linkage for win32 tweak. (import_export_decl): Likewise. * pt.c (mark_decl_instantiated): Likewise. *************** Thu Dec 11 21:12:09 1997 Jason Merrill *** 4164,4179 **** * decl.c: Likewise. Thu Dec 11 20:43:33 1997 Teemu Torma ! * decl.c (ptr_ptr_type_node): Define. (init_decl_processing): Initialize it. * cp-tree.h: Declare it. * exception.cc (__cp_exception_info): Use __get_eh_info. ! (__cp_push_exception): Ditto. ! (__cp_pop_exception): Ditto. From Scott Snyder : ! * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of saved_pc. (init_exception_processing): Removed saved_pc initialization. --- 9097,9112 ---- * decl.c: Likewise. Thu Dec 11 20:43:33 1997 Teemu Torma ! * decl.c (ptr_ptr_type_node): Define. (init_decl_processing): Initialize it. * cp-tree.h: Declare it. * exception.cc (__cp_exception_info): Use __get_eh_info. ! (__cp_push_exception): Likewise. ! (__cp_pop_exception): Likewise. From Scott Snyder : ! * except.c (expand_builtin_throw): Use get_saved_pc_ref instead of saved_pc. (init_exception_processing): Removed saved_pc initialization. *************** Mon Dec 8 23:17:13 1997 Jason Merrill *** 4186,4193 **** * init.c (expand_vec_init): Don't fold a list of parameters. * decl.c (copy_args_p): Handle copy elision for types with virtual ! bases. ! * call.c (build_over_call): Likewise. Sun Dec 7 22:38:12 1997 Mark Mitchell --- 9119,9126 ---- * init.c (expand_vec_init): Don't fold a list of parameters. * decl.c (copy_args_p): Handle copy elision for types with virtual ! bases. ! * call.c (build_over_call): Likewise. Sun Dec 7 22:38:12 1997 Mark Mitchell *************** Fri Dec 5 01:17:34 1997 Jason Merrill *** 4242,4249 **** Wed Dec 3 20:02:39 1997 Jason Merrill * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for ! alloc_expr. ! * call.c (build_op_delete_call): Adjust. * except.c (expand_end_catch_block): Lose rethrow region. (expand_start_catch_block): Likewise. --- 9175,9182 ---- Wed Dec 3 20:02:39 1997 Jason Merrill * init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for ! alloc_expr. ! * call.c (build_op_delete_call): Adjust. * except.c (expand_end_catch_block): Lose rethrow region. (expand_start_catch_block): Likewise. *************** Wed Dec 3 20:02:39 1997 Jason Merrill *** 4252,4258 **** Wed Dec 3 13:24:04 1997 Benjamin Kosnik * pt.c (tsubst): Remove tree_cons call (places redundant info into ! DECL_TEMPLATE_INSTANTIATION). Wed Dec 3 11:44:52 1997 Jason Merrill --- 9185,9191 ---- Wed Dec 3 13:24:04 1997 Benjamin Kosnik * pt.c (tsubst): Remove tree_cons call (places redundant info into ! DECL_TEMPLATE_INSTANTIATION). Wed Dec 3 11:44:52 1997 Jason Merrill *************** Tue Dec 2 01:37:19 1997 Jason Merrill *** 4294,4300 **** Fri Nov 28 01:58:14 1997 Jason Merrill ! * pt.c (check_explicit_specialization): Complain about using a template-id for a non-specialization. Fri Nov 28 12:35:19 1997 Scott Christley --- 9227,9233 ---- Fri Nov 28 01:58:14 1997 Jason Merrill ! * pt.c (check_explicit_specialization): Complain about using a template-id for a non-specialization. Fri Nov 28 12:35:19 1997 Scott Christley *************** Fri Nov 28 12:35:19 1997 Scott Christle *** 4304,4310 **** Fri Nov 28 01:56:35 1997 Bruno Haible ! * error.c (dump_decl): Handle TEMPLATE_ID_EXPR. Thu Nov 27 00:59:46 1997 Jason Merrill --- 9237,9243 ---- Fri Nov 28 01:56:35 1997 Bruno Haible ! * 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 *** 4312,4320 **** handing off to convert_to_reference. * except.c: Lose Unexpected, SetTerminate, SetUnexpected, ! TerminateFunctionCall. (init_exception_processing): Likewise. Terminate et al are now ! the fns, not ADDR_EXPRs. (various): Lose redundant assemble_external calls. (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/. --- 9245,9253 ---- handing off to convert_to_reference. * except.c: Lose Unexpected, SetTerminate, SetUnexpected, ! TerminateFunctionCall. (init_exception_processing): Likewise. Terminate et al are now ! the fns, not ADDR_EXPRs. (various): Lose redundant assemble_external calls. (do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/. *************** Thu Nov 27 00:59:46 1997 Jason Merrill *** 4325,4331 **** * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs. * class.c: Remove static pending_hard_virtuals. ! (add_virtual_function): Take pointers to pending_virtuals and pending_hard_virtuals. (finish_struct_1): Pass them. Declare pending_hard_virtuals. --- 9258,9264 ---- * decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs. * class.c: Remove static pending_hard_virtuals. ! (add_virtual_function): Take pointers to pending_virtuals and pending_hard_virtuals. (finish_struct_1): Pass them. Declare pending_hard_virtuals. *************** Wed Nov 26 20:28:49 1997 Jason Merrill *** 4334,4340 **** * decl2.c (import_export_vtable): If we support one_only but not weak symbols, mark instantiated template vtables one_only. (import_export_decl): Likewise for tinfo functions. ! (finish_vtable_vardecl): Also write out vtables from explicitly instantiated template classes. * pt.c (mark_class_instantiated): Revert last change. --- 9267,9273 ---- * decl2.c (import_export_vtable): If we support one_only but not weak symbols, mark instantiated template vtables one_only. (import_export_decl): Likewise for tinfo functions. ! (finish_vtable_vardecl): Also write out vtables from explicitly instantiated template classes. * pt.c (mark_class_instantiated): Revert last change. *************** Tue Nov 25 11:28:21 1997 Jason Merrill *** 4369,4375 **** * init.c (build_new): Copy size to the saveable obstack. * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the ! TRY_CATCH_EXPR for now. Mon Nov 24 12:15:55 1997 Jason Merrill --- 9302,9308 ---- * init.c (build_new): Copy size to the saveable obstack. * init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the ! TRY_CATCH_EXPR for now. Mon Nov 24 12:15:55 1997 Jason Merrill *************** Fri Nov 21 12:22:07 1997 Jason Merrill *** 4390,4403 **** (expand_end_eh_spec): Likewise. Call __check_eh_spec instead of doing everything inline. (init_exception_processing): throw_type_match now takes ! const void pointers. * exception.cc (__check_eh_spec): New fn. * inc/exception: Neither terminate nor unexpected return. * decl.c: Make const_ptr_type_node public. * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly. * except.c (expand_start_catch_block): We only need the rethrow ! region for non-sjlj exceptions. (expand_end_catch_block): Likewise. Use outer_context_label_stack. Thu Nov 20 14:40:17 1997 Jason Merrill --- 9323,9336 ---- (expand_end_eh_spec): Likewise. Call __check_eh_spec instead of doing everything inline. (init_exception_processing): throw_type_match now takes ! const void pointers. * exception.cc (__check_eh_spec): New fn. * inc/exception: Neither terminate nor unexpected return. * decl.c: Make const_ptr_type_node public. * tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly. * except.c (expand_start_catch_block): We only need the rethrow ! region for non-sjlj exceptions. (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 *** 4412,4418 **** * decl.c (init_decl_processing): Update exception specs on new and delete. ! * method.c (build_decl_overload_real): Don't mess with global placement delete. * init.c (build_new): Check for null throw spec, not nothrow_t. --- 9345,9351 ---- * decl.c (init_decl_processing): Update exception specs on new and delete. ! * method.c (build_decl_overload_real): Don't mess with global placement delete. * init.c (build_new): Check for null throw spec, not nothrow_t. *************** Thu Nov 20 14:40:17 1997 Jason Merrill *** 4427,4439 **** Wed Nov 19 18:24:14 1997 Jason Merrill ! * decl.c (start_decl): Don't just complain about a mismatched scope, fix it. * decl.c (make_implicit_typename): Handle case where t is not ! actually from context. * tree.c (get_type_decl): Lose identifier case. ! * spew.c (yylex): Lose useless call to identifer_typedecl_value. * parse.y (nonnested_type): Just use lookup_name. (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE. --- 9360,9372 ---- Wed Nov 19 18:24:14 1997 Jason Merrill ! * decl.c (start_decl): Don't just complain about a mismatched scope, fix it. * decl.c (make_implicit_typename): Handle case where t is not ! actually from context. * tree.c (get_type_decl): Lose identifier case. ! * spew.c (yylex): Lose useless call to identifier_typedecl_value. * parse.y (nonnested_type): Just use lookup_name. (complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE. *************** Wed Nov 19 10:39:27 1997 Jason Merrill *** 4448,4454 **** * decl.c (make_implicit_typename): New fn. (lookup_name_real): Use it. Use current_class_type as the context. ! Mon Nov 17 23:42:03 1997 Bruno Haible * pt.c (do_poplevel): Don't prohibit jumps into this contour. --- 9381,9387 ---- * decl.c (make_implicit_typename): New fn. (lookup_name_real): Use it. Use current_class_type as the context. ! Mon Nov 17 23:42:03 1997 Bruno Haible * pt.c (do_poplevel): Don't prohibit jumps into this contour. *************** Thu Nov 13 01:52:36 1997 Jason Merrill *** 4483,4489 **** Wed Nov 12 11:04:33 1997 Jason Merrill * pt.c (do_type_instantiation): Fix typo. ! (mark_class_instantiated): If we support one_only but not weak symbols, don't mark this as known. * init.c (build_new): Handle vec delete in EH cleanup. --- 9416,9422 ---- Wed Nov 12 11:04:33 1997 Jason Merrill * pt.c (do_type_instantiation): Fix typo. ! (mark_class_instantiated): If we support one_only but not weak symbols, don't mark this as known. * init.c (build_new): Handle vec delete in EH cleanup. *************** Wed Nov 12 11:04:33 1997 Jason Merrill *** 4491,4497 **** Wed Nov 12 08:11:55 1997 Benjamin Kosnik * call.c (build_method_call): Call complete_type before checking ! for destructor. Sun Nov 9 01:29:55 1997 Jim Wilson (wilson@cygnus.com) --- 9424,9430 ---- Wed Nov 12 08:11:55 1997 Benjamin Kosnik * call.c (build_method_call): Call complete_type before checking ! for destructor. Sun Nov 9 01:29:55 1997 Jim Wilson (wilson@cygnus.com) *************** Tue Nov 11 02:53:44 1997 Jason Merrill *** 4524,4555 **** Mon Nov 10 20:25:31 1997 Jason Merrill * call.c (build_new_method_call): Handle getting a ! TEMPLATE_ID_EXPR around a TEMPLATE_DECL. Don't look for a field ! if we got template parms. * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR, ! not just the args. * decl2.c (build_expr_from_tree): Tweak last change. * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE. (maybe_fold_nontype_arg): Split out from tsubst_copy. * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR. ! Mon Nov 10 20:08:38 1997 Kriang Lerdsuwanakij ! * pt.c (tsubst_copy): Handle explicit template arguments in function calls. * typeck.c (build_x_function_call): Likewise. ! * decl2.c (build_expr_from_tree): Lookup function name if it hasn't been done. ! * pt.c (tsubst): Instantiate template functions properly when ! template parameter does not appear in function arguments and return type. (comp_template_args): Handle member templates required by tsubst. Mon Nov 10 20:08:38 1997 Jason Merrill * decl.c (grokdeclarator): Tweak conditions for pedwarn in ! previous change. Mon Nov 10 20:08:29 1997 Bruno Haible --- 9457,9488 ---- Mon Nov 10 20:25:31 1997 Jason Merrill * call.c (build_new_method_call): Handle getting a ! TEMPLATE_ID_EXPR around a TEMPLATE_DECL. Don't look for a field ! if we got template parms. * typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR, ! not just the args. * decl2.c (build_expr_from_tree): Tweak last change. * pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE. (maybe_fold_nontype_arg): Split out from tsubst_copy. * tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR. ! Mon Nov 10 20:08:38 1997 Kriang Lerdsuwanakij ! * pt.c (tsubst_copy): Handle explicit template arguments in function calls. * typeck.c (build_x_function_call): Likewise. ! * decl2.c (build_expr_from_tree): Lookup function name if it hasn't been done. ! * pt.c (tsubst): Instantiate template functions properly when ! template parameter does not appear in function arguments and return type. (comp_template_args): Handle member templates required by tsubst. Mon Nov 10 20:08:38 1997 Jason Merrill * decl.c (grokdeclarator): Tweak conditions for pedwarn in ! previous change. Mon Nov 10 20:08:29 1997 Bruno Haible *************** Mon Nov 10 03:04:20 1997 Jason Merrill *** 4570,4579 **** (expand_end_catch_block): Likewise. End the region for the eh_cleanup. * exception.cc (__cp_pop_exception): Now takes two parms. Handle popping off the middle of the stack. ! * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, WITH_CLEANUP_EXPR, and UNSAVE_EXPR. (build_cplus_new): Only wrap CALL_EXPRs. ! * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around the constructor call. Sun Nov 9 18:00:26 1997 Richard Kenner --- 9503,9512 ---- (expand_end_catch_block): Likewise. End the region for the eh_cleanup. * exception.cc (__cp_pop_exception): Now takes two parms. Handle popping off the middle of the stack. ! * tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR, WITH_CLEANUP_EXPR, and UNSAVE_EXPR. (build_cplus_new): Only wrap CALL_EXPRs. ! * init.c (expand_default_init): Handle a TRY_CATCH_EXPR around the constructor call. Sun Nov 9 18:00:26 1997 Richard Kenner *************** Fri Oct 31 01:47:57 1997 Jason Merrill *** 4642,4648 **** (__cp_exception_info, __uncatch_exception): New fns. (__cp_push_exception, __cp_pop_exception): New fns. * except.c: Lose saved_throw_{type,value,cleanup,in_catch}. ! Lose empty_fndecl. (init_exception_processing): Likewise. __eh_pc is now external. (push_eh_info): New fn. (get_eh_{info,value,type,caught}): New fns. --- 9575,9581 ---- (__cp_exception_info, __uncatch_exception): New fns. (__cp_push_exception, __cp_pop_exception): New fns. * except.c: Lose saved_throw_{type,value,cleanup,in_catch}. ! Lose empty_fndecl. (init_exception_processing): Likewise. __eh_pc is now external. (push_eh_info): New fn. (get_eh_{info,value,type,caught}): New fns. *************** Thu Oct 23 02:01:30 1997 Jason Merrill *** 4670,4690 **** Mon Oct 20 12:06:34 1997 Jason Merrill ! * except.c (expand_exception_blocks): Call do_pending_stack_adust. (expand_end_catch_block): Likewise. (expand_end_eh_spec): Likewise. Mon Oct 20 11:44:20 1997 Mark Mitchell * decl.c (duplicate_decls): Handle template specializations ! correctly. * error.c (dump_function_name): Fix printing of specializations of member functions that are not member templates. * cp-tree.h (processing_specialization): Make global. * pt.c (processing_specialization): Likewise. * lex.c (cons_up_default_function): Save and restore processing_specialization to avoid confusion. ! Mon Oct 20 10:52:22 1997 Jason Merrill * decl.c (init_decl_processing): Give null_node unknown* type. --- 9603,9623 ---- Mon Oct 20 12:06:34 1997 Jason Merrill ! * except.c (expand_exception_blocks): Call do_pending_stack_adjust. (expand_end_catch_block): Likewise. (expand_end_eh_spec): Likewise. Mon Oct 20 11:44:20 1997 Mark Mitchell * decl.c (duplicate_decls): Handle template specializations ! correctly. * error.c (dump_function_name): Fix printing of specializations of member functions that are not member templates. * cp-tree.h (processing_specialization): Make global. * pt.c (processing_specialization): Likewise. * lex.c (cons_up_default_function): Save and restore processing_specialization to avoid confusion. ! Mon Oct 20 10:52:22 1997 Jason Merrill * decl.c (init_decl_processing): Give null_node unknown* type. *************** Sun Oct 19 09:13:01 1997 Richard Kenner *** 4701,4707 **** * Make-lang.in (g++): Include prefix.o. ! Thu Oct 16 15:31:09 1997 Judy Goldberg * pt.c (determine_explicit_specialization): Initialize "dummy" to keep Purify quiet. --- 9634,9640 ---- * Make-lang.in (g++): Include prefix.o. ! Thu Oct 16 15:31:09 1997 Judy Goldberg * pt.c (determine_explicit_specialization): Initialize "dummy" to keep Purify quiet. *************** Tue Oct 14 12:01:00 1997 Mark Mitchell *** 4727,4745 **** so as to avoid incorrect manglings. * method.c (build_decl_overload_real): Don't mangle return types for constructors. ! Tue Oct 14 11:46:14 1997 Jason Merrill * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec, scratch_tree_cons): Define as macros for now. ! * 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, typeck2.c: Use them and the expression_obstack variants. Mon Oct 13 17:41:26 1997 Benjamin Kosnik * decl.c (store_return_init): Allow classes with explicit ctors to ! be used with the named return values extension. Fri Oct 10 12:21:11 1997 Jason Merrill --- 9660,9678 ---- so as to avoid incorrect manglings. * method.c (build_decl_overload_real): Don't mangle return types for constructors. ! Tue Oct 14 11:46:14 1997 Jason Merrill * cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec, scratch_tree_cons): Define as macros for now. ! * 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, typeck2.c: Use them and the expression_obstack variants. Mon Oct 13 17:41:26 1997 Benjamin Kosnik * decl.c (store_return_init): Allow classes with explicit ctors to ! be used with the named return values extension. Fri Oct 10 12:21:11 1997 Jason Merrill *************** Thu Oct 9 12:08:21 1997 Jason Merrill *** 4753,4759 **** * call.c (build_new_method_call): Use simple constructor_name for error messages. ! Wed Oct 8 22:44:42 1997 Jeffrey A Law (law@cygnus.com) * method.c (build_underscore_int): Don't use ANSI specific features. --- 9686,9692 ---- * call.c (build_new_method_call): Use simple constructor_name for error messages. ! Wed Oct 8 22:44:42 1997 Jeffrey A Law * method.c (build_underscore_int): Don't use ANSI specific features. *************** Tue Oct 7 22:52:10 1997 Jason Merrill *** 4774,4782 **** Tue Oct 7 22:45:31 1997 Alexandre Oliva ! * typeck.c (build_reinterpret_cast): converting a void pointer to function pointer with a reinterpret_cast produces a warning ! if -pedantic is issued Tue Oct 7 22:43:43 1997 Bruno Haible --- 9707,9715 ---- Tue Oct 7 22:45:31 1997 Alexandre Oliva ! * typeck.c (build_reinterpret_cast): Converting a void pointer to function pointer with a reinterpret_cast produces a warning ! if -pedantic is issued. Tue Oct 7 22:43:43 1997 Bruno Haible *************** Tue Oct 7 00:48:36 1997 Jason Merrill *** 4803,4809 **** non-templates. * call.c (build_new_function_call): Fix handling of null explicit ! template args. (build_new_method_call): Likewise. Mon Oct 6 23:44:34 1997 Mark Mitchell --- 9736,9742 ---- non-templates. * call.c (build_new_function_call): Fix handling of null explicit ! template args. (build_new_method_call): Likewise. Mon Oct 6 23:44:34 1997 Mark Mitchell *************** Tue Sep 30 00:18:26 1997 Jason Merrill *** 4855,4861 **** -traditional and -ansi now do not mess with dollars_in_ident. ! Mon Sep 29 19:57:51 1997 H.J. Lu (hjl@gnu.ai.mit.edu) * Makefile.in (parse.o, decl.o): Also depend on $(srcdir)/../except.h $(srcdir)/../output.h. --- 9788,9794 ---- -traditional and -ansi now do not mess with dollars_in_ident. ! Mon Sep 29 19:57:51 1997 H.J. Lu * Makefile.in (parse.o, decl.o): Also depend on $(srcdir)/../except.h $(srcdir)/../output.h. *************** Mon Sep 29 19:57:51 1997 H.J. Lu (hjl@ *** 4866,4902 **** * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping. ! * expr.c (cplus_expand_expr): Make it static. * decl2.c, init.c, typeck.c: Include "expr.h". (expand_expr): Use proper values when calling the function. Mon Sep 29 11:05:54 1997 Alexandre Oliva ! * lang-options.h: new -Wold-style-cast flag. ! * cp-tree.h (warn_old_style_cast): new variable. ! * decl2.c (warn_old_style_cast): ditto. ! (lang_decode_option): support -Wold-style-cast. ! (reparse_absdcl_as_casts): produce old-style-cast warning. Mon Sep 29 09:20:53 1997 Benjamin Kosnik * decl.c (cp_finish_decl): Allow expand_aggr_init to set ! TREE_USED, reset value based on already_used. * init.c (expand_member_init): Revert change. ! Mon Sep 29 08:57:53 1997 Jason Merrill * cp-tree.h, decl.c, decl2.c, pt.c: ! Lose DECL_C_STATIC and DECL_PUBLIC. Don't pretend statics are public. * decl2.c (lang_decode_option): Add missing ;. Sat Sep 27 16:22:48 1997 Jason Merrill * friend.c (do_friend): Disable injection for all template-derived ! decls. * decl2.c (lang_decode_option): Handle -fguiding-decls. * parse.y (notype_template_declarator): New nonterminal. (direct_notype_declarator): Use it. --- 9799,9835 ---- * call.c, cp-tree.h, decl.c, tree.c: Finish prototyping. ! * expr.c (cplus_expand_expr): Make it static. * decl2.c, init.c, typeck.c: Include "expr.h". (expand_expr): Use proper values when calling the function. Mon Sep 29 11:05:54 1997 Alexandre Oliva ! * lang-options.h: New -Wold-style-cast flag. ! * cp-tree.h (warn_old_style_cast): New variable. ! * decl2.c (warn_old_style_cast): Likewise. ! (lang_decode_option): Support -Wold-style-cast. ! (reparse_absdcl_as_casts): Produce old-style-cast warning. Mon Sep 29 09:20:53 1997 Benjamin Kosnik * decl.c (cp_finish_decl): Allow expand_aggr_init to set ! TREE_USED, reset value based on already_used. * init.c (expand_member_init): Revert change. ! Mon Sep 29 08:57:53 1997 Jason Merrill * cp-tree.h, decl.c, decl2.c, pt.c: ! Lose DECL_C_STATIC and DECL_PUBLIC. Don't pretend statics are public. * decl2.c (lang_decode_option): Add missing ;. Sat Sep 27 16:22:48 1997 Jason Merrill * friend.c (do_friend): Disable injection for all template-derived ! decls. * decl2.c (lang_decode_option): Handle -fguiding-decls. * parse.y (notype_template_declarator): New nonterminal. (direct_notype_declarator): Use it. *************** Sat Sep 27 16:22:48 1997 Jason Merrill *** 4906,5017 **** Sat Sep 27 16:21:58 1997 Mark Mitchell ! * call.c (add_template_candidate): Add explicit_targs parameter. ! (build_scoped_method_call): Use it. ! (build_overload_call_real): Likewise. ! (build_user_type_conversion_1): Likewise. ! (build_new_function_call): Likewise. ! (build_object_call): Likewise. ! (build_new_op): Likewise. ! (build_new_method_call): Likewise. ! (build_new_function_call): Handle TEMPLATE_ID_EXPR. ! (build_new_method_call): Likewise. ! ! * class.c (finish_struct_methods): Add specialization pass to ! determine which methods were specializing which other methods. ! (instantiate_type): Handle TEMPLATE_ID_EXPR. ! * cp-tree.def (TEMPLATE_ID_EXPR): New tree code. ! * cp-tree.h (name_mangling_version): New variable. (flag_guiding_decls): Likewise. ! (build_template_decl_overload): New function. ! (begin_specialization): Likewise. ! (reset_specialization): Likewise. ! (end_specialization): Likewise. ! (determine_explicit_specialization): Likewise. ! (check_explicit_specialization): Likewise. ! (lookup_template_function): Likewise. ! (fn_type_unification): Add explicit_targs parameter. ! (type_unification): Likewise. ! ! * decl.c (duplicate_decls): Add smarts for explicit ! specializations. ! (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function ! specializations. ! (grokfndecl): Call check_explicit_specialization. ! ! * decl2.c (lang_decode_option): Handle -fname-mangling-version. ! (build_expr_from_tree): Handle TEMPLATE_ID_EXPR. ! (check_classfn): Handle specializations. ! * error.c (dump_function_name): Print specialization arguments. ! * friend.c (do_friend): Don't call pushdecl for template ! instantiations. ! * init.c (build_member_call): Handle TEMPLATE_ID_EXPR. ! * lang-options.h: Add -fname-mangling-version, -fguiding-decls, and -fno-guiding-decls. ! * lex.c (identifier_type): Return PFUNCNAME for template function ! names. ! * method.c (build_decl_overload_real): New function. ! (build_template_parm_names): New function. ! (build_overload_identifier): Use it. ! (build_underscore_int): New function. ! (build_overload_int): Use it. Add levels for template ! parameters. ! (build_overload_name): Likewise. Also, handle TYPENAME_TYPEs. ! (build_overload_nested_names): Handle template type parameters. ! (build_template_decl_overload): New function. ! ! * parse.y (YYSTYPE): New ntype member. ! (nested_name_specifier): Use it. ! (nested_name_specifier_1): Likewise. ! (PFUNCNAME): New token. ! (template_id, object_template_id): New non-terminals. ! (template_parm_list): Note specializations. ! (template_def): Likewise. ! (structsp): Likewise. ! (fn.def2): Handle member template specializations. ! (component_decl_1): Likewise. ! (direct_notype_declarator): Handle template-ids. ! (component_decl_1): Likewise. ! (direct_notype_declarator): Handle template-ids. ! (primary): Handle TEMPLATE_ID_EXPR, and template-ids. ! ! * pt.c (processing_specializations): New variable. ! (template_header_count): Likewise. ! (type_unification_real): New function. ! (processing_explicit_specialization): Likewise. ! (note_template_header): Likewise. ! (is_member_template): Handle specializations. ! (end_template_decl): Call reset_specialization. ! (push_template_decl): Handle member template specializations. ! (tsubst): Likewise. ! (tsubst_copy): Handle TEMPLATE_ID_EXPR. ! (instantiate_template): Handle specializations. ! (instantiate_decl): Likewise. ! (fn_type_unification): Handle explicit_targs. ! (type_unification): Likewise. Allow incomplete unification ! without an error message, if allow_incomplete. ! (get_bindings): Use new calling sequence for fn_type_unification. ! ! * spew.c (yylex): Handle PFUNCNAME. ! ! * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR. ! (really_overloaded_fn): Likewise. ! (get_first_fn): Handle function templates. ! ! * typeck.c (build_x_function_call): Use really_overloaded_fn. ! Handle TEMPLATE_ID_EXPR. ! (build_x_unary_op): Likewise. ! (build_unary_op): Likewise. ! (mark_addressable): Templates whose address is taken are marked ! as used. 1997-09-25 Andreas Schwab --- 9839,9950 ---- Sat Sep 27 16:21:58 1997 Mark Mitchell ! * call.c (add_template_candidate): Add explicit_targs parameter. ! (build_scoped_method_call): Use it. ! (build_overload_call_real): Likewise. ! (build_user_type_conversion_1): Likewise. ! (build_new_function_call): Likewise. ! (build_object_call): Likewise. ! (build_new_op): Likewise. ! (build_new_method_call): Likewise. ! (build_new_function_call): Handle TEMPLATE_ID_EXPR. ! (build_new_method_call): Likewise. ! ! * class.c (finish_struct_methods): Add specialization pass to ! determine which methods were specializing which other methods. ! (instantiate_type): Handle TEMPLATE_ID_EXPR. ! * cp-tree.def (TEMPLATE_ID_EXPR): New tree code. ! * cp-tree.h (name_mangling_version): New variable. (flag_guiding_decls): Likewise. ! (build_template_decl_overload): New function. ! (begin_specialization): Likewise. ! (reset_specialization): Likewise. ! (end_specialization): Likewise. ! (determine_explicit_specialization): Likewise. ! (check_explicit_specialization): Likewise. ! (lookup_template_function): Likewise. ! (fn_type_unification): Add explicit_targs parameter. ! (type_unification): Likewise. ! ! * decl.c (duplicate_decls): Add smarts for explicit ! specializations. ! (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function ! specializations. ! (grokfndecl): Call check_explicit_specialization. ! ! * decl2.c (lang_decode_option): Handle -fname-mangling-version. ! (build_expr_from_tree): Handle TEMPLATE_ID_EXPR. ! (check_classfn): Handle specializations. ! * error.c (dump_function_name): Print specialization arguments. ! * friend.c (do_friend): Don't call pushdecl for template ! instantiations. ! * init.c (build_member_call): Handle TEMPLATE_ID_EXPR. ! * lang-options.h: Add -fname-mangling-version, -fguiding-decls, and -fno-guiding-decls. ! * lex.c (identifier_type): Return PFUNCNAME for template function ! names. ! ! * method.c (build_decl_overload_real): New function. ! (build_template_parm_names): New function. ! (build_overload_identifier): Use it. ! (build_underscore_int): New function. ! (build_overload_int): Use it. Add levels for template ! parameters. ! (build_overload_name): Likewise. Also, handle TYPENAME_TYPEs. ! (build_overload_nested_names): Handle template type parameters. ! (build_template_decl_overload): New function. ! ! * parse.y (YYSTYPE): New ntype member. ! (nested_name_specifier): Use it. ! (nested_name_specifier_1): Likewise. ! (PFUNCNAME): New token. ! (template_id, object_template_id): New non-terminals. ! (template_parm_list): Note specializations. ! (template_def): Likewise. ! (structsp): Likewise. ! (fn.def2): Handle member template specializations. ! (component_decl_1): Likewise. ! (direct_notype_declarator): Handle template-ids. ! (component_decl_1): Likewise. ! (direct_notype_declarator): Handle template-ids. ! (primary): Handle TEMPLATE_ID_EXPR, and template-ids. ! ! * pt.c (processing_specializations): New variable. ! (template_header_count): Likewise. ! (type_unification_real): New function. ! (processing_explicit_specialization): Likewise. ! (note_template_header): Likewise. ! (is_member_template): Handle specializations. ! (end_template_decl): Call reset_specialization. ! (push_template_decl): Handle member template specializations. ! (tsubst): Likewise. ! (tsubst_copy): Handle TEMPLATE_ID_EXPR. ! (instantiate_template): Handle specializations. ! (instantiate_decl): Likewise. ! (fn_type_unification): Handle explicit_targs. ! (type_unification): Likewise. Allow incomplete unification ! without an error message, if allow_incomplete. ! (get_bindings): Use new calling sequence for fn_type_unification. ! ! * spew.c (yylex): Handle PFUNCNAME. ! ! * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR. ! (really_overloaded_fn): Likewise. ! (get_first_fn): Handle function templates. ! * typeck.c (build_x_function_call): Use really_overloaded_fn. ! Handle TEMPLATE_ID_EXPR. ! (build_x_unary_op): Likewise. ! (build_unary_op): Likewise. ! (mark_addressable): Templates whose address is taken are marked ! as used. 1997-09-25 Andreas Schwab *************** Thu Sep 25 11:11:13 1997 Jason Merrill *** 5041,5047 **** Rvalue conversions were removed in London. * call.c (is_subseq): Don't consider lvalue transformations. (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK. ! (joust): Reenable ?: kludge. 1997-09-22 Brendan Kehoe --- 9974,9980 ---- Rvalue conversions were removed in London. * call.c (is_subseq): Don't consider lvalue transformations. (build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK. ! (joust): Re-enable ?: kludge. 1997-09-22 Brendan Kehoe *************** Wed Sep 17 10:31:25 1997 Jason Merrill *** 5077,5088 **** Tue Sep 16 14:06:56 1997 Jason Merrill * call.c (build_new_op): Give better error for syntactically ! correct, but semantically invalid, use of undeclared template. * call.c (compare_qual): Handle pmfs. * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn ! after the exception spec. Mon Sep 15 11:52:13 1997 Jason Merrill --- 10010,10021 ---- Tue Sep 16 14:06:56 1997 Jason Merrill * call.c (build_new_op): Give better error for syntactically ! correct, but semantically invalid, use of undeclared template. * call.c (compare_qual): Handle pmfs. * decl.c (store_parm_decls): last_parm_cleanup_insn is the insn ! after the exception spec. Mon Sep 15 11:52:13 1997 Jason Merrill *************** Thu Sep 11 10:08:45 1997 Mark Mitchell *** 5118,5126 **** * pt.c (coerce_template_parms): Avoid looking at the TYPE_LANG_DECL portion of a typename type, since there won't be ! one. (tsubst): Do constant folding as necessary to make sure that ! arguments passed to lookup_template_class really are constants. Wed Sep 10 11:21:55 1997 Jason Merrill --- 10051,10059 ---- * pt.c (coerce_template_parms): Avoid looking at the TYPE_LANG_DECL portion of a typename type, since there won't be ! one. (tsubst): Do constant folding as necessary to make sure that ! arguments passed to lookup_template_class really are constants. Wed Sep 10 11:21:55 1997 Jason Merrill *************** Tue Sep 9 19:49:38 1997 Jason Merrill *** 5137,5145 **** Tue Sep 9 17:57:25 1997 Mark Mitchell * error.c (dump_decl): Avoid crashing when presented with a ! uninitialized constant, as can occur with a template parameter. (dump_expr): Make sure that there are enough levels of ! current_template_parms before we start diving through them. 1997-09-09 Brendan Kehoe --- 10070,10078 ---- Tue Sep 9 17:57:25 1997 Mark Mitchell * error.c (dump_decl): Avoid crashing when presented with a ! uninitialized constant, as can occur with a template parameter. (dump_expr): Make sure that there are enough levels of ! current_template_parms before we start diving through them. 1997-09-09 Brendan Kehoe *************** Tue Sep 9 17:57:25 1997 Mark Mitchell *** 5148,5154 **** Tue Sep 9 09:36:39 1997 Benjamin Kosnik ! * except.c (expand_throw): Call build_delete for all exception types, not just objects with destructors. Mon Sep 8 02:33:20 1997 Jody Goldberg --- 10081,10087 ---- Tue Sep 9 09:36:39 1997 Benjamin Kosnik ! * except.c (expand_throw): Call build_delete for all 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 *** 5156,5162 **** * decl.c (current_local_enum): Remove static. * pt.c (tsubst_enum): Save and restore value of current_local_enum in case template is expanded in enum decl. ! (instantiate_class_template) : Use new tsubst_enum signature. (tsubst_expr): Likewise. Mon Sep 8 01:21:43 1997 Mark Mitchell --- 10089,10095 ---- * decl.c (current_local_enum): Remove static. * pt.c (tsubst_enum): Save and restore value of current_local_enum in case template is expanded in enum decl. ! (instantiate_class_template): Use new tsubst_enum signature. (tsubst_expr): Likewise. Mon Sep 8 01:21:43 1997 Mark Mitchell *************** Mon Sep 8 01:21:43 1997 Mark Mitchell *** 5168,5174 **** member templates using the same parameter names can be declared. (end_member_template_processing): Pop the binding level. (push_template_decl): Mark member templates as static when ! appropriate. * lex.c (do_pending_inlines): Pass the function, not its template arguments, to begin_member_template_processing. --- 10101,10107 ---- member templates using the same parameter names can be declared. (end_member_template_processing): Pop the binding level. (push_template_decl): Mark member templates as static when ! appropriate. * lex.c (do_pending_inlines): Pass the function, not its template arguments, to begin_member_template_processing. *************** Mon Sep 8 01:21:43 1997 Mark Mitchell *** 5176,5192 **** (do_pending_defargs): Likewise. * error.c (dump_expr): Obtain the correct declaration for a ! TEMPLATE_CONST_PARM. * call.c (add_template_conv_candidate): New function. (build_object_call): Handle member templates, as done in the other build_ functions. ! Sat Sep 6 10:20:27 1997 Mark Mitchell * decl.c (replace_defag): Undo previous change. * lex.c (do_pending_defargs): Deal with member templates. ! * pt.c (is_member_template): Avoid crashing when passed a non-function argument. --- 10109,10125 ---- (do_pending_defargs): Likewise. * error.c (dump_expr): Obtain the correct declaration for a ! TEMPLATE_CONST_PARM. * call.c (add_template_conv_candidate): New function. (build_object_call): Handle member templates, as done in the other build_ functions. ! Sat Sep 6 10:20:27 1997 Mark Mitchell * decl.c (replace_defag): Undo previous change. * lex.c (do_pending_defargs): Deal with member templates. ! * pt.c (is_member_template): Avoid crashing when passed a non-function argument. *************** Fri Sep 5 01:37:17 1997 Mark Mitchell *** 5206,5229 **** * pt.c (push_template_decl): Likewise. (classtype_mangled_name): Likewise. (lookup_template_class): Likewise. ! * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to DECL_NTPARMS to conform to usage elsewhere. * call.c (add_template_candidate): Likewise. * class.c (instantiate_type): Likewise. * pt.c (instantiate_template): Likewise. (get_bindings): Likewise. ! * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of is_member_template. * pt.c (unify): Undo changes to allow multiple levels of template ! parameters. (type_unification): Likewise. (fn_type_unification): Likewise. (get_class_bindings): Likewise. * cp-tree.h (Likewise). ! * decl.c (replace_defarg): Check that the type of the default parameter does not invlove a template type before complaining about the initialization. --- 10139,10162 ---- * pt.c (push_template_decl): Likewise. (classtype_mangled_name): Likewise. (lookup_template_class): Likewise. ! * cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to DECL_NTPARMS to conform to usage elsewhere. * call.c (add_template_candidate): Likewise. * class.c (instantiate_type): Likewise. * pt.c (instantiate_template): Likewise. (get_bindings): Likewise. ! * class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of is_member_template. * pt.c (unify): Undo changes to allow multiple levels of template ! parameters. (type_unification): Likewise. (fn_type_unification): Likewise. (get_class_bindings): Likewise. * cp-tree.h (Likewise). ! * decl.c (replace_defarg): Check that the type of the default parameter does not invlove a template type before complaining about the initialization. *************** Fri Sep 5 01:37:17 1997 Mark Mitchell *** 5232,5244 **** member templates correctly. * pt.c (is_member_template): Deal with class specializations ! correctly. (tsubst): Handle "partial instantiation" of member templates ! correctly. Wed Sep 3 12:30:24 1997 Mark Mitchell ! * pt.c (type_unification): Change calling squence to allow for multiple levels of template parameters. (tsubst_expr): Likewise. (tsubst): Likewise. --- 10165,10177 ---- member templates correctly. * pt.c (is_member_template): Deal with class specializations ! correctly. (tsubst): Handle "partial instantiation" of member templates ! correctly. Wed Sep 3 12:30:24 1997 Mark Mitchell ! * pt.c (type_unification): Change calling sequence to allow for multiple levels of template parameters. (tsubst_expr): Likewise. (tsubst): Likewise. *************** Wed Sep 3 12:30:24 1997 Mark Mitchell *** 5252,5258 **** * decl.c (grokdeclarator): Use it. * decl2.c (finish_file): Use it. * method.c (build_overload_identifier): Use it. ! * call.c (add_template_candidate): Add additional parameter for the function return type. Call fn_type_unification istead of type_unification. --- 10185,10191 ---- * decl.c (grokdeclarator): Use it. * decl2.c (finish_file): Use it. * method.c (build_overload_identifier): Use it. ! * call.c (add_template_candidate): Add additional parameter for the function return type. Call fn_type_unification istead of type_unification. *************** Wed Sep 3 12:30:24 1997 Mark Mitchell *** 5260,5271 **** (build_new_function_call): Likewise. (build_new_op): Likewise. (build_new_method_call): Likewise. ! * class.c (grow_method): Don't give an error message indicating ! that two member templates with the same name are ambiguous. (finish_struct): Treat member template functions just like member ! functions. ! * cp-tree.h (check_member_template): Add declaration. (begin_member_template_processing): Likewise. (end_member_template_processing): Likewise. --- 10193,10204 ---- (build_new_function_call): Likewise. (build_new_op): Likewise. (build_new_method_call): Likewise. ! * class.c (grow_method): Don't give an error message indicating ! that two member templates with the same name are ambiguous. (finish_struct): Treat member template functions just like member ! functions. ! * cp-tree.h (check_member_template): Add declaration. (begin_member_template_processing): Likewise. (end_member_template_processing): Likewise. *************** Wed Sep 3 12:30:24 1997 Mark Mitchell *** 5278,5308 **** (get_bindings): Likewise. * decl.c (decls_match): Handle multiple levels of template ! parameters. (pushdecl): Handle template type params just like other type ! declarations. (push_class_level_binding): Return immediately if the class_binding_level is NULL. (grokfndecl): If check_classfn() returns a member_template, use the result of the template, not the template itself. ! * decl2.c (check_member_template): New function. Check to see that the entity declared to be a member template can be one. (check_classfn): Allow redeclaration of member template functions with different types; the new functions can be specializations or explicit instantiations. ! * error.c (dump_decl): Handle multiple levels of template ! parameters. ! (dump_function_decl): Update to handle function templates. * lex.c (do_pending_inlines): Set up template parameter context for member templates. (process_next_inline): Likewise. ! * method. (build_overload_identifier): Adjust for multiple levels of template parameters. ! * parse.y (fn.def2): Add member templates. (component_decl_1): Likewise. --- 10211,10241 ---- (get_bindings): Likewise. * decl.c (decls_match): Handle multiple levels of template ! parameters. (pushdecl): Handle template type params just like other type ! declarations. (push_class_level_binding): Return immediately if the class_binding_level is NULL. (grokfndecl): If check_classfn() returns a member_template, use the result of the template, not the template itself. ! * decl2.c (check_member_template): New function. Check to see that the entity declared to be a member template can be one. (check_classfn): Allow redeclaration of member template functions with different types; the new functions can be specializations or explicit instantiations. ! * error.c (dump_decl): Handle multiple levels of template ! parameters. ! (dump_function_decl): Update to handle function templates. * lex.c (do_pending_inlines): Set up template parameter context for member templates. (process_next_inline): Likewise. ! * method.c (build_overload_identifier): Adjust for multiple levels of template parameters. ! * parse.y (fn.def2): Add member templates. (component_decl_1): Likewise. *************** Wed Sep 3 12:30:24 1997 Mark Mitchell *** 5313,5319 **** (current_template_parms): Return a vector of all the template parms, not just the innermost level of parms. (push_template_decl): Deal with the possibility of member ! templates. (lookup_template_class): Likewise. (uses_template_parms): Likewise. (tsubst): Modify processing to TEMPLATE_TYPE_PARM and --- 10246,10252 ---- (current_template_parms): Return a vector of all the template parms, not just the innermost level of parms. (push_template_decl): Deal with the possibility of member ! templates. (lookup_template_class): Likewise. (uses_template_parms): Likewise. (tsubst): Modify processing to TEMPLATE_TYPE_PARM and *************** Wed Sep 3 12:30:24 1997 Mark Mitchell *** 5323,5329 **** (do_decl_instantiation): Handle member templates. * search.c (lookup_fnfields_1): Handle member template conversion ! operators. * tree.c (cp_tree_equal): Check the levels, as well as the indices, of TEMPLATE_CONST_PARMs. --- 10256,10262 ---- (do_decl_instantiation): Handle member templates. * search.c (lookup_fnfields_1): Handle member template conversion ! operators. * tree.c (cp_tree_equal): Check the levels, as well as the indices, of TEMPLATE_CONST_PARMs. *************** Wed Sep 3 12:30:24 1997 Mark Mitchell *** 5331,5342 **** * typeck.c (comptypes): Check the levels, as well as the indices, fo TEMPLATE_TYPE_PARMs. (build_x_function_call): Treat member templates like member ! functions. ! Wed Sep 3 11:09:25 1997 Jason Merrill * typeck.c (c_expand_return): Always convert_for_initialization ! before checking for returning a pointer to local. * pt.c (type_unification): If strict and the function parm doesn't use template parms, just compare types. --- 10264,10275 ---- * typeck.c (comptypes): Check the levels, as well as the indices, fo TEMPLATE_TYPE_PARMs. (build_x_function_call): Treat member templates like member ! functions. ! Wed Sep 3 11:09:25 1997 Jason Merrill * typeck.c (c_expand_return): Always convert_for_initialization ! before checking for returning a pointer to local. * pt.c (type_unification): If strict and the function parm doesn't use template parms, just compare types. *************** Wed Sep 3 10:35:49 1997 Klaus Espenlau *** 5349,5355 **** Wed Sep 3 00:02:53 1997 Jason Merrill * typeck.c (convert_arguments): Don't arbitrarily choose the first ! of a set of overloaded functions. Tue Sep 2 12:09:13 1997 Jason Merrill --- 10282,10288 ---- Wed Sep 3 00:02:53 1997 Jason Merrill * typeck.c (convert_arguments): Don't arbitrarily choose the first ! of a set of overloaded functions. Tue Sep 2 12:09:13 1997 Jason Merrill *************** Tue Sep 2 12:09:13 1997 Jason Merrill *** 5360,5371 **** (build_overload_identifier): Pass it. * decl.c (duplicate_decls): Don't bash a previous template ! definition with a redeclaration. * pt.c (unify): float doesn't match double. * pt.c (do_type_instantiation): Handle getting a _TYPE or a ! TYPE_DECL. Handle getting non-template types. * parse.y (explicit_instantiation): Use typespec instead of aggr template_type. --- 10293,10304 ---- (build_overload_identifier): Pass it. * decl.c (duplicate_decls): Don't bash a previous template ! definition with a redeclaration. * pt.c (unify): float doesn't match double. * pt.c (do_type_instantiation): Handle getting a _TYPE or a ! TYPE_DECL. Handle getting non-template types. * parse.y (explicit_instantiation): Use typespec instead of aggr template_type. *************** Tue Sep 2 10:27:08 1997 Richard Hender *** 5373,5379 **** * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings. ! Mon Sep 1 13:19:04 1997 Eugene Mamchits * call.c (add_builtin_candidate): Add missing TREE_TYPE. (compare_ics): Likewise. --- 10306,10312 ---- * typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings. ! Mon Sep 1 13:19:04 1997 Eugene Mamchits * call.c (add_builtin_candidate): Add missing TREE_TYPE. (compare_ics): Likewise. *************** Mon Sep 1 13:19:04 1997 Eugene Mamchit *** 5381,5388 **** Mon Sep 1 13:19:04 1997 Jason Merrill * call.c (joust): Warn about choosing one conversion op over ! another because of 'this' argument when the other return type is ! better. (source_type): New fn. * call.c (build_new_op): Strip leading REF_BIND from first operand --- 10314,10321 ---- Mon Sep 1 13:19:04 1997 Jason Merrill * call.c (joust): Warn about choosing one conversion op over ! another because of 'this' argument when the other return type is ! better. (source_type): New fn. * call.c (build_new_op): Strip leading REF_BIND from first operand *************** Thu Aug 28 09:45:23 1997 Jason Merrill *** 5395,5401 **** * call.c (null_ptr_cst_p): Remove support for (void*)0. ! Wed Aug 27 02:03:34 1997 Jeffrey A Law (law@cygnus.com) * typeck.c (expand_target_expr): Make definition match declaration. --- 10328,10334 ---- * call.c (null_ptr_cst_p): Remove support for (void*)0. ! Wed Aug 27 02:03:34 1997 Jeffrey A Law * typeck.c (expand_target_expr): Make definition match declaration. *************** Sat Aug 23 18:02:59 1997 Mark Mitchell *** 5415,5421 **** * error.c (type_as_string): Put const/volatile on template type parameters where appropriate. ! Sat Aug 23 17:47:22 1997 Jeffrey A Law (law@cygnus.com) * call.c (strictly_better): Make arguments unsigned ints. --- 10348,10354 ---- * error.c (type_as_string): Put const/volatile on template type parameters where appropriate. ! Sat Aug 23 17:47:22 1997 Jeffrey A Law * call.c (strictly_better): Make arguments unsigned ints. *************** Thu Aug 21 18:48:44 1997 Jason Merrill *** 5423,5429 **** * lex.c (real_yylex): Refer to __complex instead of complex. ! Thu Aug 21 22:25:46 1997 J"orn Rennecke * lex.c (real_yylex): Don't use getc directly. --- 10356,10362 ---- * lex.c (real_yylex): Refer to __complex instead of complex. ! Thu Aug 21 22:25:46 1997 J"orn Rennecke * lex.c (real_yylex): Don't use getc directly. *************** Wed Aug 20 03:13:36 1997 H.J. Lu (hjl@ *** 5435,5444 **** * parse.y, pt.c: Include "except.h". * 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, ! 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 ! prototyping. Wed Aug 20 01:34:40 1997 Jason Merrill --- 10368,10377 ---- * parse.y, pt.c: Include "except.h". * 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, ! 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 ! prototyping. Wed Aug 20 01:34:40 1997 Jason Merrill *************** Tue Aug 19 02:26:07 1997 Jason Merrill *** 5461,5467 **** * repo.c (finish_repo): Don't crash on no args. * parse.y (named_complex_class_head_sans_basetype): Handle ! explicit global scope. * decl2.c (handle_class_head): New fn. * pt.c (unify): Add CONST_DECL case. --- 10394,10400 ---- * repo.c (finish_repo): Don't crash on no args. * parse.y (named_complex_class_head_sans_basetype): Handle ! explicit global scope. * decl2.c (handle_class_head): New fn. * pt.c (unify): Add CONST_DECL case. *************** Wed Aug 13 10:46:19 1997 H.J. Lu (hjl@ *** 5494,5506 **** Tue Aug 12 20:13:57 1997 Jason Merrill ! * parse.y: Don't clear the inlines from their obstack until they've all been processed. * decl.c (duplicate_decls): Don't complain about exception ! specification mismatch if flag_exceptions is off. ! Mon Aug 11 15:01:56 1997 Marc Lehmann * Make-lang.in (c++.distclean): Remove g++.c on make distclean. --- 10427,10439 ---- Tue Aug 12 20:13:57 1997 Jason Merrill ! * parse.y: Don't clear the inlines from their obstack until they've all been processed. * decl.c (duplicate_decls): Don't complain about exception ! specification mismatch if flag_exceptions is off. ! Mon Aug 11 15:01:56 1997 Marc Lehmann * Make-lang.in (c++.distclean): Remove g++.c on make distclean. *************** Sun Aug 10 12:06:09 1997 Paul Eggert < *** 5508,5517 **** * 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: ! Include before include files that formerly used STDIO_PROTO. * decl.c, g++spec.c, lex.c, method.c, repo.c: ! Include "config.h" first, as per autoconf manual. Fri Aug 8 11:47:48 1997 Jason Merrill --- 10441,10450 ---- * 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: ! Include before include files that formerly used STDIO_PROTO. * decl.c, g++spec.c, lex.c, method.c, repo.c: ! 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 *** 5523,5535 **** * decl2.c (lang_decode_option): Handle -fhandle-exceptions. * lang-options.h: Add -fhandle-exceptions. ! * class.c (build_vtable): vtables are artificial. (prepare_fresh_vtable): Likewise. Wed Aug 6 11:02:36 1997 Jason Merrill * cvt.c (ocp_convert): After converting to the target type, set ! LOOKUP_NO_CONVERSION. * call.c (joust): Warn about potentially confusing promotion rules with -Wsign-promo. --- 10456,10468 ---- * decl2.c (lang_decode_option): Handle -fhandle-exceptions. * lang-options.h: Add -fhandle-exceptions. ! * class.c (build_vtable): Vtables are artificial. (prepare_fresh_vtable): Likewise. Wed Aug 6 11:02:36 1997 Jason Merrill * cvt.c (ocp_convert): After converting to the target type, set ! LOOKUP_NO_CONVERSION. * call.c (joust): Warn about potentially confusing promotion rules with -Wsign-promo. *************** Fri Jul 18 17:56:08 1997 Jason Merrill *** 5607,5624 **** Thu Jul 17 18:06:30 1997 Jason Merrill * method.c (build_overload_nested_name): Use static_labelno ! instead of var_labelno. (build_qualified_name): New fn. (build_overload_name): Split out from here. (build_static_name): Use build_qualified_name. ! * decl.c (cp_finish_decl): Statics in extern inline functions have comdat linkage. (start_function): Initialize static_labelno. Thu Jul 17 11:20:17 1997 Benjamin Kosnik ! * class.c (finish_struct_methods): add check of warn_ctor_dtor_privacy ! before "all member functions in class [] are private" Wed Jul 16 23:47:08 1997 Jason Merrill --- 10540,10557 ---- Thu Jul 17 18:06:30 1997 Jason Merrill * method.c (build_overload_nested_name): Use static_labelno ! instead of var_labelno. (build_qualified_name): New fn. (build_overload_name): Split out from here. (build_static_name): Use build_qualified_name. ! * decl.c (cp_finish_decl): Statics in extern inline functions have comdat linkage. (start_function): Initialize static_labelno. Thu Jul 17 11:20:17 1997 Benjamin Kosnik ! * class.c (finish_struct_methods): Add check of warn_ctor_dtor_privacy ! before "all member functions in class [] are private". Wed Jul 16 23:47:08 1997 Jason Merrill *************** Wed Jul 16 12:34:29 1997 Benjamin Kosni *** 5632,5638 **** Mon Jul 14 03:23:46 1997 Jason Merrill * typeck.c (get_member_function_from_ptrfunc): Promote index ! before saving it. Sun Jul 13 00:11:52 1997 Jason Merrill --- 10565,10571 ---- Mon Jul 14 03:23:46 1997 Jason Merrill * typeck.c (get_member_function_from_ptrfunc): Promote index ! before saving it. Sun Jul 13 00:11:52 1997 Jason Merrill *************** Wed Jul 9 13:44:12 1997 Jason Merrill *** 5686,5692 **** Wed Jul 9 13:04:38 1997 Geoffrey Noer ! * decl.c (init_decl_processing): fix Jun 30 patch -- move ifndef for Cygwin32 to include SIGSEGV. Thu Jul 3 01:44:05 1997 Jason Merrill --- 10619,10625 ---- Wed Jul 9 13:04:38 1997 Geoffrey Noer ! * decl.c (init_decl_processing): Fix Jun 30 patch -- move ifndef for Cygwin32 to include SIGSEGV. Thu Jul 3 01:44:05 1997 Jason Merrill *************** Thu Jul 3 01:44:05 1997 Jason Merrill *** 5697,5713 **** * rtti.c (build_dynamic_cast): Call complete_type on the types. * decl.c (grokfndecl): If the function we chose doesn't actually ! match, die. * decl2.c (grokclassfn): Don't specify 'const int' for the ! artificial destructor parm. ! * pt.c (type_unification): If we are called recursively, nothing decays. Mon Jun 30 17:53:21 1997 Geoffrey Noer ! * decl.c (init_decl_processing): Stop trying to catch signals other than SIGABRT since the Cygwin32 library doesn't support them correctly yet. This fixes a situation in which g++ causes a hang on SIGSEGVs and other such signals in our Win32-hosted --- 10630,10646 ---- * rtti.c (build_dynamic_cast): Call complete_type on the types. * decl.c (grokfndecl): If the function we chose doesn't actually ! match, die. * decl2.c (grokclassfn): Don't specify 'const int' for the ! artificial destructor parm. ! * pt.c (type_unification): If we are called recursively, nothing decays. Mon Jun 30 17:53:21 1997 Geoffrey Noer ! * decl.c (init_decl_processing): Stop trying to catch signals other than SIGABRT since the Cygwin32 library doesn't support them correctly yet. This fixes a situation in which g++ causes a hang on SIGSEGVs and other such signals in our Win32-hosted *************** Mon Jun 30 14:50:01 1997 Jason Merrill *** 5719,5729 **** Fri Jun 27 15:18:49 1997 Jason Merrill ! * typeck2.c (store_init_value): Always return the value if our type needs constructing. * method.c (hack_identifier): Convert class statics from ! reference, too. Thu Jun 26 11:44:46 1997 Jason Merrill --- 10652,10662 ---- Fri Jun 27 15:18:49 1997 Jason Merrill ! * typeck2.c (store_init_value): Always return the value if our type needs constructing. * method.c (hack_identifier): Convert class statics from ! reference, too. Thu Jun 26 11:44:46 1997 Jason Merrill *************** Thu Jun 19 12:28:43 1997 Brendan Kehoe *** 5741,5747 **** Tue Jun 17 18:35:57 1997 Mike Stump * except.c (expand_builtin_throw): Add support ! -fno-sjlj-exceptions -fPIC exception handling on the SPARC. Mon Jun 16 01:24:37 1997 Jason Merrill --- 10674,10680 ---- Tue Jun 17 18:35:57 1997 Mike Stump * except.c (expand_builtin_throw): Add support ! -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 *** 5749,5755 **** * cp-tree.h (TI_SPEC_INFO): New macro. (CLASSTYPE_TI_SPEC_INFO): New macro. ! * pt.c (push_template_decl): Correctly determine # of template parms for partial specs. * call.c (compare_ics): Really fix 'this' conversions. --- 10682,10688 ---- * cp-tree.h (TI_SPEC_INFO): New macro. (CLASSTYPE_TI_SPEC_INFO): New macro. ! * pt.c (push_template_decl): Correctly determine # of template parms for partial specs. * call.c (compare_ics): Really fix 'this' conversions. *************** Mon Jun 16 01:24:37 1997 Jason Merrill *** 5758,5777 **** non-template fn. * pt.c (push_template_decl): Complain about mismatch in # of ! template parms between a class template and a member template. Sun Jun 15 02:38:20 1997 Jason Merrill * method.c (synthesize_method): You can't call ! function_cannot_inline_p after finish_function. * decl.c (finish_function): Turn on flag_inline_functions and turn ! off DECL_INLINE before handing a synthesized method to the ! backend. Thu Jun 12 17:35:28 1997 Jason Merrill * method.c (synthesize_method): Remove July 30 change to never set ! DECL_INLINE if at_eof. Thu Jun 12 15:25:08 1997 Mike Stump --- 10691,10710 ---- non-template fn. * pt.c (push_template_decl): Complain about mismatch in # of ! template parms between a class template and a member template. Sun Jun 15 02:38:20 1997 Jason Merrill * method.c (synthesize_method): You can't call ! function_cannot_inline_p after finish_function. * decl.c (finish_function): Turn on flag_inline_functions and turn ! off DECL_INLINE before handing a synthesized method to the ! backend. Thu Jun 12 17:35:28 1997 Jason Merrill * method.c (synthesize_method): Remove July 30 change to never set ! DECL_INLINE if at_eof. Thu Jun 12 15:25:08 1997 Mike Stump *************** Tue Jun 10 00:22:09 1997 Jason Merrill *** 5811,5832 **** Mon Jun 9 14:25:30 1997 Mike Stump * Makefile.in, Make-lang.in: Protect C-ls with a comment ! character, idea from Paul Eggert . Mon Jun 9 01:52:03 1997 Jason Merrill * typeck.c (c_expand_return): Be more persistent in looking for ! returned temps. * cvt.c (build_up_reference): Use NOP_EXPR for switching from ! pointer to reference. * class.c (build_vbase_path): Don't do anything if PATH has no steps. Sun Jun 8 03:07:05 1997 Jason Merrill * init.c (build_member_call, build_offset_ref): ! Use do_scoped_id instead of do_identifier. * cvt.c (convert): Remove bogosity. --- 10744,10765 ---- Mon Jun 9 14:25:30 1997 Mike Stump * Makefile.in, Make-lang.in: Protect C-ls with a comment ! character, idea from Paul Eggert . Mon Jun 9 01:52:03 1997 Jason Merrill * typeck.c (c_expand_return): Be more persistent in looking for ! returned temps. * cvt.c (build_up_reference): Use NOP_EXPR for switching from ! pointer to reference. * class.c (build_vbase_path): Don't do anything if PATH has no steps. Sun Jun 8 03:07:05 1997 Jason Merrill * init.c (build_member_call, build_offset_ref): ! Use do_scoped_id instead of do_identifier. * cvt.c (convert): Remove bogosity. *************** Fri Jun 6 17:36:39 1997 Jason Merrill *** 5840,5852 **** * cvt.c (build_up_reference): Call get_binfo to get access control. * decl2.c (import_export_decl): If we don't support weaks, leave ! statics undefined. Fri Jun 6 15:55:49 1997 Mike Stump * except.c (expand_builtin_throw): Add support for machines that ! cannot access globals after throw's epilogue when ! -fno-sjlj-exceptions is used. Thu Jun 5 16:28:43 1997 Jason Merrill --- 10773,10785 ---- * cvt.c (build_up_reference): Call get_binfo to get access control. * decl2.c (import_export_decl): If we don't support weaks, leave ! statics undefined. Fri Jun 6 15:55:49 1997 Mike Stump * except.c (expand_builtin_throw): Add support for machines that ! cannot access globals after throw's epilogue when ! -fno-sjlj-exceptions is used. Thu Jun 5 16:28:43 1997 Jason Merrill *************** Thu Jun 5 16:28:43 1997 Jason Merrill *** 5863,5876 **** Tue Jun 3 18:08:23 1997 Jason Merrill * search.c (push_class_decls): A name which ambiguously refers to ! several instantiations of the same template just refers to the ! template. Tue Jun 3 12:30:40 1997 Benjamin Kosnik ! * decl.c (build_enumerator): fix problem with unsigned long enumerated values being smashed to ints, causing overflow ! when computing next enumerated value. (for enum values around MAX_VAL). Mon Jun 2 17:40:56 1997 Jason Merrill --- 10796,10809 ---- Tue Jun 3 18:08:23 1997 Jason Merrill * search.c (push_class_decls): A name which ambiguously refers to ! several instantiations of the same template just refers to the ! template. Tue Jun 3 12:30:40 1997 Benjamin Kosnik ! * decl.c (build_enumerator): Fix problem with unsigned long enumerated values being smashed to ints, causing overflow ! when computing next enumerated value (for enum values around MAX_VAL). Mon Jun 2 17:40:56 1997 Jason Merrill *************** Wed May 14 19:08:28 1997 Mike Stump * pt.c (tsubst_copy): Handle BIT_NOT_EXPR. --- 10936,10942 ---- (struct cp_function): Add last_parm_cleanup_insn. (push_cp_function_context): Likewise. (pop_cp_function_context): Likewise. ! Tue May 13 15:51:20 1997 Jason Merrill * pt.c (tsubst_copy): Handle BIT_NOT_EXPR. *************** Wed Apr 23 18:06:50 1997 Jason Merrill *** 6056,6068 **** * typeck.c (c_expand_return): Don't complain about returning void to void in an artificial function. ! * method.c (make_thunk): Change settings of READONLY/VOLATILE, don't set DECL_RESULT, set DECL_ARTIFICIAL. ! (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. Wed Apr 23 14:43:06 1997 Mike Stump ! * init.c (init_decl_processing): Add supoprt for setjmp/longjmp based exception handling. * except.c (init_exception_processing): Likewise. (expand_end_catch_block): Likewise. --- 10989,11001 ---- * typeck.c (c_expand_return): Don't complain about returning void to void in an artificial function. ! * method.c (make_thunk): Change settings of READONLY/VOLATILE, don't set DECL_RESULT, set DECL_ARTIFICIAL. ! (emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC. Wed Apr 23 14:43:06 1997 Mike Stump ! * init.c (init_decl_processing): Add support for setjmp/longjmp based exception handling. * except.c (init_exception_processing): Likewise. (expand_end_catch_block): Likewise. *************** Wed Apr 23 14:43:06 1997 Mike Stump * tree.c (varargs_function_p): New fn. --- 11021,11027 ---- * decl2.c (lang_f_options): Remove support for short temps. * lang-options.h: Likewise. ! Wed Apr 23 04:12:06 1997 Jason Merrill * tree.c (varargs_function_p): New fn. *************** Wed Apr 2 12:51:36 1997 Mike Stump * parse.y (left_curly): Avoid trying to use any fields of --- 11087,11093 ---- * exception.cc (__default_unexpected): Call terminate by default, so that if the user overrides terminate, the correct function will be called. ! Wed Mar 19 14:14:45 1997 Mike Stump * parse.y (left_curly): Avoid trying to use any fields of *************** Tue Feb 11 13:50:48 1997 Mike Stump * decl2.c (max_tinst_depth): New variable. (lang_decode_option): Parse "-ftemplate-depth-NN" command line --- 11315,11321 ---- avoid lossing on systems that require one (ones that define malloc in xm.h). ! Mon Feb 10 22:51:13 1997 Bruno Haible * decl2.c (max_tinst_depth): New variable. (lang_decode_option): Parse "-ftemplate-depth-NN" command line *************** Thu Jan 23 16:39:06 1997 Jason Merrill *** 6551,6557 **** Tue Jan 21 18:32:04 1997 Mike Stump ! * cvt.c (cp_convert): Pedwarn enum to pointer conversions. Mon Jan 20 17:59:51 1997 Jason Merrill --- 11484,11490 ---- Tue Jan 21 18:32:04 1997 Mike Stump ! * cvt.c (cp_convert): pedwarn enum to pointer conversions. Mon Jan 20 17:59:51 1997 Jason Merrill *************** Fri Dec 27 10:31:40 1996 Paul Eggert < *** 6675,6681 **** * Make-lang.in (g++spec.o): Don't use $< with an explicit target; this isn't portable to some versions of `make' (e.g. Solaris 2.5.1). ! Tue Dec 24 10:24:03 1996 Jeffrey A Law (law@cygnus.com) * decl.c (grokvardecl): Avoid ANSI style initialization. --- 11608,11614 ---- * Make-lang.in (g++spec.o): Don't use $< with an explicit target; this isn't portable to some versions of `make' (e.g. Solaris 2.5.1). ! Tue Dec 24 10:24:03 1996 Jeffrey A Law * decl.c (grokvardecl): Avoid ANSI style initialization. *************** Sat Dec 7 17:20:22 1996 Jason Merrill *** 6720,6726 **** * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL. * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate. ! Fri Dec 6 14:40:09 1996 Jason Merrill * decl.c (grokdeclarator): When giving an anonymous struct a name, --- 11653,11659 ---- * cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL. * *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate. ! Fri Dec 6 14:40:09 1996 Jason Merrill * decl.c (grokdeclarator): When giving an anonymous struct a name, *************** Wed Nov 13 12:32:07 1996 Jason Merrill *** 6866,6872 **** Wed Nov 13 11:51:20 1996 Brendan Kehoe * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation ! of GCC be path-relative. Wed Nov 13 11:27:16 1996 Michael Meissner --- 11799,11805 ---- Wed Nov 13 11:51:20 1996 Brendan Kehoe * g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation ! of GCC be path-relative. Wed Nov 13 11:27:16 1996 Michael Meissner *************** Wed Nov 13 07:53:38 1996 Brendan Kehoe *** 6881,6887 **** Wed Nov 13 02:00:26 1996 Jason Merrill ! * init.c (expand_default_init): Avoid calling constructors to initialize reference temps. * cvt.c (convert_to_reference): Fix. --- 11814,11820 ---- Wed Nov 13 02:00:26 1996 Jason Merrill ! * init.c (expand_default_init): Avoid calling constructors to initialize reference temps. * cvt.c (convert_to_reference): Fix. *************** Fri Nov 8 17:38:44 1996 Jason Merrill *** 6974,6980 **** * decl2.c (finish_file): Don't emit debug info. * decl.c (pushdecl): Lose obsolete code. (grokdeclarator): Still do the long long thing after complaining. ! * search.c (note_debug_info_needed): Don't do anything if we're in a template. * method.c (synthesize_method): For non-local classes, push_to_top_level first. --- 11907,11913 ---- * decl2.c (finish_file): Don't emit debug info. * decl.c (pushdecl): Lose obsolete code. (grokdeclarator): Still do the long long thing after complaining. ! * search.c (note_debug_info_needed): Don't do anything if we're in a template. * method.c (synthesize_method): For non-local classes, push_to_top_level first. *************** Thu Oct 31 17:08:49 1996 Jason Merrill *** 7038,7044 **** similar code in build_up_ref. * cvt.c (build_up_reference): Drastically simplify. ! Mon Oct 28 12:45:05 1996 Jeffrey A Law (law@cygnus.com) * typeck.c (signed_or_unsigned_type): If the given type already as the correct signedness, then just return it. --- 11971,11977 ---- similar code in build_up_ref. * cvt.c (build_up_reference): Drastically simplify. ! Mon Oct 28 12:45:05 1996 Jeffrey A Law * typeck.c (signed_or_unsigned_type): If the given type already as the correct signedness, then just return it. *************** Fri Sep 27 16:40:30 1996 Jason Merrill *** 7163,7169 **** * decl2.c (build_expr_from_tree): Use it. * cp-tree.h: Declare it. ! * decl.c (start_decl): variable-sized arrays cannot be initialized. * error.c (dump_type_suffix): Handle variable arrays. Fri Sep 27 13:14:05 1996 Brendan Kehoe --- 12096,12102 ---- * decl2.c (build_expr_from_tree): Use it. * cp-tree.h: Declare it. ! * decl.c (start_decl): Variable-sized arrays cannot be initialized. * error.c (dump_type_suffix): Handle variable arrays. Fri Sep 27 13:14:05 1996 Brendan Kehoe *************** Thu Sep 26 10:59:00 1996 Jason Merrill *** 7187,7193 **** calling them. (get_tinfo_fn_dynamic): Extracted from build_typeid. * tinfo2.cc (__dynamic_cast): Adjust. ! * rtti.c (build_typeid): Use resolves_to_fixed_type_p. (build_x_typeid): Likewise. --- 12120,12126 ---- calling them. (get_tinfo_fn_dynamic): Extracted from build_typeid. * tinfo2.cc (__dynamic_cast): Adjust. ! * rtti.c (build_typeid): Use resolves_to_fixed_type_p. (build_x_typeid): Likewise. *************** Sun Sep 22 05:31:22 1996 Jason Merrill *** 7266,7272 **** * typeck2.c (store_init_value): Oops. ! * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: New files for C++ lang-support library. * Make-lang.in (CXX_EXTRA_HEADERS): Define. (CXX_LIB2FUNCS): Define. --- 12199,12205 ---- * typeck2.c (store_init_value): Oops. ! * new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}: New files for C++ lang-support library. * Make-lang.in (CXX_EXTRA_HEADERS): Define. (CXX_LIB2FUNCS): Define. *************** Wed Sep 4 17:16:09 1996 Bob Manson --- 12324,12330 ---- * init.c (perform_member_init): Use add_partial_entry () instead of directly manipulating lists. ! (emit_base_init): Likewise. Wed Sep 4 12:14:36 1996 Mike Stump *************** Fri Aug 30 10:01:55 1996 Mike Stump * rtti.c (build_dynamic_cast): Don't try to dereference exprtype ! too early. Make sure we explode if exprtype turns out to be a NULL_TREE when it shouldn't be. Tue Aug 27 10:56:21 1996 Mike Stump --- 12480,12486 ---- Tue Aug 27 13:14:58 1996 Bob Manson * rtti.c (build_dynamic_cast): Don't try to dereference exprtype ! too early. Make sure we explode if exprtype turns out to be a NULL_TREE when it shouldn't be. Tue Aug 27 10:56:21 1996 Mike Stump *************** Tue Aug 27 10:56:21 1996 Mike Stump * decl2.c (groktypefield): Remove unused code. --- 12494,12500 ---- * lex.c (cons_up_default_function): Likewise. * parse.y: Likewise. * pt.c (tsubst): Likewise. ! Mon Aug 26 17:40:03 1996 Mike Stump * decl2.c (groktypefield): Remove unused code. *************** Mon Aug 26 17:00:33 1996 Mike Stump * decl.c (start_function): Only check interface_* for templates --- 12506,12516 ---- Change type_quals into cv_qualifiers. Change nonempty_type_quals into nonempty_cv_qualifiers. * hash.h: Rebuild. ! * lex.c (make_pointer_declarator): Change type_quals into cv_qualifiers. (make_reference_declarator): Likewise. ! Thu Aug 22 01:09:22 1996 Jason Merrill * decl.c (start_function): Only check interface_* for templates *************** Wed Aug 21 00:13:15 1996 Jason Merrill *** 7594,7600 **** * call.c (build_new_method_call): Add missing args to cp_error. ! * tree.c (error_type): Dont print reference-to-array. * typeck.c (convert_for_assignment): Don't say contravariance for removing const. --- 12527,12533 ---- * call.c (build_new_method_call): Add missing args to cp_error. ! * tree.c (error_type): Don't print reference-to-array. * typeck.c (convert_for_assignment): Don't say contravariance for removing const. *************** Sun Aug 4 15:29:11 1996 Jason Merrill *** 7810,7816 **** (build_conditional_expr): If both operands are TARGET_EXPRs, wrap the COND_EXPR in a TARGET_EXPR so they use the same slot. ! * cvt.c (build_up_reference): Propagate INDIRECT_BIND to recursive calls. * typeck.c (complete_type): Propagate TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}. --- 12743,12749 ---- (build_conditional_expr): If both operands are TARGET_EXPRs, wrap the COND_EXPR in a TARGET_EXPR so they use the same slot. ! * cvt.c (build_up_reference): Propagate INDIRECT_BIND to recursive calls. * typeck.c (complete_type): Propagate TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}. *************** Thu Aug 1 15:18:00 1996 Brendan Kehoe *** 7907,7913 **** Thu Aug 1 11:53:51 1996 Bob Manson ! * pt.c (instantiate_class_template): Call complete_type. Also, if we're at the end of the file and we just instantiated a template class with a vtable, call finish_prevtable_vardecl. --- 12840,12846 ---- Thu Aug 1 11:53:51 1996 Bob Manson ! * pt.c (instantiate_class_template): Call complete_type. Also, if we're at the end of the file and we just instantiated a template class with a vtable, call finish_prevtable_vardecl. *************** Tue Jul 23 12:46:30 1996 Jason Merrill *** 8063,8074 **** * cvt.c (implicit_conversion): Do const-ref case first. (add_conv_candidate, build_object_call, op_error): New fns. (ptr_complete_ob, TYPE_PTROB_P): void is not an object type. ! ({add,build}_builtin_candidate{,s}, print_z_candidates): Display builtin candidates. (build_new_op): Handle CALL_EXPR. Don't try to decay void. ! Fall back on preincrement handling. Use op_error. Handle warn_synth. ! (convert_like): Pass INDIRECT_BIND. Don't try to do anything with an error_mark_node. (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions properly. --- 12996,13007 ---- * cvt.c (implicit_conversion): Do const-ref case first. (add_conv_candidate, build_object_call, op_error): New fns. (ptr_complete_ob, TYPE_PTROB_P): void is not an object type. ! ({add,build}_builtin_candidate{,s}, print_z_candidates): Display builtin candidates. (build_new_op): Handle CALL_EXPR. Don't try to decay void. ! Fall back on preincrement handling. Use op_error. Handle warn_synth. ! (convert_like): Pass INDIRECT_BIND. Don't try to do anything with an error_mark_node. (build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions properly. *************** Mon Jul 22 12:18:54 1996 Jason Merrill *** 8087,8093 **** * g++.c (main): Don't link with -lg++. NEW_OVER changes: ! * cvt.c (convert_to_reference): Don't use convert_from_refeence on result of build_type_conversion. (cp_convert): Only call build_method_call for ctors if build_type_conversion failed. --- 13020,13026 ---- * g++.c (main): Don't link with -lg++. NEW_OVER changes: ! * cvt.c (convert_to_reference): Don't use convert_from_reference on result of build_type_conversion. (cp_convert): Only call build_method_call for ctors if build_type_conversion failed. *************** Mon Jul 22 12:18:54 1996 Jason Merrill *** 8095,8101 **** (TYPE_PTR{,OB,MEM}_P): New macros. ({add,build}_builtin_candidate{,s}): New functions. (print_z_candidates): Handle builtins. ! (build_user_type_conversion_1): Don't use conversion fns for converting to a base type. (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs. (build_user_type_conversion): Use convert_from_reference. --- 13028,13034 ---- (TYPE_PTR{,OB,MEM}_P): New macros. ({add,build}_builtin_candidate{,s}): New functions. (print_z_candidates): Handle builtins. ! (build_user_type_conversion_1): Don't use conversion fns for converting to a base type. (build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs. (build_user_type_conversion): Use convert_from_reference. *************** Fri Jun 7 10:37:33 1996 Mike Stump * pt.c (tsubst_expr, case DECL_STMT): Don't pass --- 13350,13356 ---- lifetime of the temporary, don't try it again. * typeck.c (c_expand_return): Don't try and convert the return value twice when we want a reference, once is enough. ! Tue Jun 4 15:41:45 1996 Jason Merrill * pt.c (tsubst_expr, case DECL_STMT): Don't pass *************** Thu May 23 12:13:08 1996 Bob Manson --- 13427,13434 ---- and cant_synth_asn_ref. (finish_base_struct): Remove the code that tries to conditionalize synthesis of copy constructors & assignment operators based on ! access permissions. Instead, let it fail when it tries to ! synthesize the copy constructor. This will give meaningful error messages instead of silently generating code to perform a bitcopy. Wed May 22 11:45:19 1996 Bob Manson *************** Wed May 22 11:45:19 1996 Bob Manson --- 13727,13737 ---- definition of flagged_type_tree is found before it is used. * lex.c: Likewise. * parse.y: Added the ftype member to the type union, and changed a ! number of rules to use it instead of ttype. Added calls to check_for_new_type() as appropriate. * typeck2.c (check_for_new_type): New function for checking if a newly defined type appears in the specified tree. ! * cp-tree.h: Add new type flagged_type_tree. Add a prototype for check_for_new_type(). Wed Apr 24 00:36:21 1996 Jason Merrill *************** Sun Apr 14 11:34:39 1996 Jason Merrill *** 8923,8929 **** Fri Apr 12 09:08:27 1996 Bob Manson * call.c (build_method_call): Remember the original basetype we ! were called with. Give an error message instead of trying (incorrectly) to call a non-static member function through a non-inherited class. --- 13856,13862 ---- Fri Apr 12 09:08:27 1996 Bob Manson * call.c (build_method_call): Remember the original basetype we ! were called with. Give an error message instead of trying (incorrectly) to call a non-static member function through a non-inherited class. *************** Sat Apr 6 13:56:27 1996 Jason Merrill *** 9052,9058 **** Fri Apr 5 17:02:09 1996 Jason Merrill RTTI rewrite to initialize nodes as needed, not require that ! users #include , complete functionality and reduce wasted space. * rtti.c (init_rtti_processing): New fn. (build_typeid): The vtable entry is now a function. --- 13985,13991 ---- Fri Apr 5 17:02:09 1996 Jason Merrill RTTI rewrite to initialize nodes as needed, not require that ! users #include , complete functionality and reduce wasted space. * rtti.c (init_rtti_processing): New fn. (build_typeid): The vtable entry is now a function. *************** Sat Mar 30 12:14:33 1996 Brendan Kehoe *** 9152,9162 **** Fri Mar 29 15:51:36 1996 Bob Manson ! * class.c (base_info, finish_base_struct): Replace needs_virtual_dtor with base_has_virtual. (finish_struct_1): Remove the old code that tried to make default ! destructors virtual. Use base_has_virtual when checking if we need to add a vtable entry for the rtti code. Fri Mar 29 14:02:36 1996 Jason Merrill --- 14085,14095 ---- Fri Mar 29 15:51:36 1996 Bob Manson ! * class.c (base_info, finish_base_struct): Replace needs_virtual_dtor with base_has_virtual. (finish_struct_1): Remove the old code that tried to make default ! destructors virtual. Use base_has_virtual when checking if we need to add a vtable entry for the rtti code. Fri Mar 29 14:02:36 1996 Jason Merrill *************** Fri Mar 22 17:57:55 1996 Mike Stump * decl.c (grokdeclarator): Call bad_specifiers for typedefs. Also ! give an error if initialized. Pedwarn about nested type with the same name as its enclosing class. * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT. --- 14202,14208 ---- Fri Mar 22 13:48:29 1996 Jason Merrill * decl.c (grokdeclarator): Call bad_specifiers for typedefs. Also ! give an error if initialized. pedwarn about nested type with the same name as its enclosing class. * pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT. *************** Wed Mar 13 14:03:34 1996 Jason Merrill *** 9500,9506 **** Tue Mar 12 14:36:02 1996 Jason Merrill ! * init.c (build_new): Pedwarn about init and array new. (expand_vec_init): Handle lists, use convert_for_initialization. * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION --- 14433,14439 ---- Tue Mar 12 14:36:02 1996 Jason Merrill ! * init.c (build_new): pedwarn about init and array new. (expand_vec_init): Handle lists, use convert_for_initialization. * typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION *************** Mon Mar 4 20:03:33 1996 Jason Merrill *** 9622,9628 **** * error.c (dump_expr): Support LOOKUP_EXPR and actually do something for CAST_EXPR. ! Mon Feb 19 14:49:18 1996 Rusty Russell * cvt.c (cp_convert): Warn about implicit conversion of the --- 14555,14561 ---- * error.c (dump_expr): Support LOOKUP_EXPR and actually do something for CAST_EXPR. ! Mon Feb 19 14:49:18 1996 Rusty Russell * cvt.c (cp_convert): Warn about implicit conversion of the *************** Thu Feb 22 15:30:12 1996 Brendan Kehoe *** 9892,9898 **** (repo_compile_flags, repo_template_declared, repo_template_defined, repo_class_defined, repo_inline_used, repo_vtable_used, repo_tinfo_used): #if 0 unused fns. ! (repo_get_id, repo_vtable_used): Declare as static. * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add prototypes. --- 14825,14831 ---- (repo_compile_flags, repo_template_declared, repo_template_defined, repo_class_defined, repo_inline_used, repo_vtable_used, repo_tinfo_used): #if 0 unused fns. ! (repo_get_id, repo_vtable_used): Declare as static. * cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add prototypes. *************** Thu Feb 22 13:24:15 1996 Brendan Kehoe *** 9921,9927 **** (init_lex): Don't set it. (init_parse): Add decl before use. (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH. ! (current_unit_{name, language}): Delete unused vars. (check_newline): Don't bother setting them, just accept the #pragma. * cp-tree.h (init_repo, peek_yylex): Add prototypes. (current_unit_{name, language}): Delete decls. --- 14854,14860 ---- (init_lex): Don't set it. (init_parse): Add decl before use. (reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH. ! (current_unit_{name, language}): Delete unused vars. (check_newline): Don't bother setting them, just accept the #pragma. * cp-tree.h (init_repo, peek_yylex): Add prototypes. (current_unit_{name, language}): Delete decls. *************** Thu Feb 22 00:54:22 1996 Jason Merrill *** 10045,10051 **** Wed Feb 21 16:57:33 1996 Brendan Kehoe ! * init.c (expand_recursive_init{,_1}): Delete decls. (sort_member_init): Delete unused var INIT. (emit_base_init): Delete unused var X. (build_offset_ref): Delete unused var CNAME. --- 14978,14984 ---- Wed Feb 21 16:57:33 1996 Brendan Kehoe ! * init.c (expand_recursive_init{,_1}): Delete decls. (sort_member_init): Delete unused var INIT. (emit_base_init): Delete unused var X. (build_offset_ref): Delete unused var CNAME. *************** Wed Feb 21 16:57:33 1996 Brendan Kehoe *** 10081,10087 **** * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS. ! * class.c (get_vtable_entry): Diable unused function. (doing_hard_virtuals): Delete unused static global var. (finish_struct_1): Don't init DOING_HARD_VIRTUALS. (prepare_fresh_vtable): Delete unused vars PATH and RESULT. --- 15014,15020 ---- * class.c (n_*): Wrap with #ifdef GATHER_STATISTICS. ! * class.c (get_vtable_entry): Disable unused function. (doing_hard_virtuals): Delete unused static global var. (finish_struct_1): Don't init DOING_HARD_VIRTUALS. (prepare_fresh_vtable): Delete unused vars PATH and RESULT. *************** Wed Feb 21 16:57:33 1996 Brendan Kehoe *** 10112,10118 **** (grokparms): Delete unused var SAW_VOID. (start_function): Delete unused var OLDDECL. (cplus_expand_expr_stmt): Delete unused var ! REMOVE_IMPLICIT_IMMEDIATELY. * cp-tree.h (pushdecl_nonclass_level): Fix prototype. --- 15045,15051 ---- (grokparms): Delete unused var SAW_VOID. (start_function): Delete unused var OLDDECL. (cplus_expand_expr_stmt): Delete unused var ! REMOVE_IMPLICIT_IMMEDIATELY. * cp-tree.h (pushdecl_nonclass_level): Fix prototype. *************** Wed Feb 21 00:06:17 1996 Jason Merrill *** 10127,10133 **** (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes. * parse.y: Use do_pushlevel and do_poplevel. * cp-tree.h: Declare do_poplevel. ! * cp-tree.h: Declare at_eof. * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation. * decl2.c (import_export_decl): Renamed from import_export_inline. --- 15060,15066 ---- (tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes. * parse.y: Use do_pushlevel and do_poplevel. * cp-tree.h: Declare do_poplevel. ! * cp-tree.h: Declare at_eof. * decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation. * decl2.c (import_export_decl): Renamed from import_export_inline. *************** Tue Dec 19 22:36:56 1995 Jason Merrill *** 10744,10750 **** Mon Dec 18 15:51:33 1995 Jason Merrill * cp-tree.h, decl2.c (flag_weak): New flag to control the use of ! weak symbols. * lang-options.h: Add -f{no-,}weak. * decl.c (init_decl_processing): If the target does not support weak symbols, don't use them. --- 15677,15683 ---- Mon Dec 18 15:51:33 1995 Jason Merrill * cp-tree.h, decl2.c (flag_weak): New flag to control the use of ! weak symbols. * lang-options.h: Add -f{no-,}weak. * decl.c (init_decl_processing): If the target does not support weak symbols, don't use them. *************** Thu Dec 14 14:16:26 1995 Mike Stump * g++.c (my_strerror): Return "cannot access" if errno is 0. (pfatal_with_name, perror_exec): Don't assume that --- 15704,15710 ---- copy constructors well. The compiler would do bitwise copying, instead of ctor calling in some cases. ! Wed Dec 13 17:05:54 1995 Paul Eggert * g++.c (my_strerror): Return "cannot access" if errno is 0. (pfatal_with_name, perror_exec): Don't assume that *************** Wed Dec 13 17:05:54 PST 1995 Paul Egger *** 10782,10788 **** Wed Dec 13 16:22:38 1995 Jason Merrill Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make ! TYPE_METHODS/TREE_CHAIN mean what they used to. * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC instead of TYPE_METHODS. * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD. --- 15715,15721 ---- Wed Dec 13 16:22:38 1995 Jason Merrill Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make ! TYPE_METHODS/TREE_CHAIN mean what they used to. * decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC instead of TYPE_METHODS. * decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD. *************** Mon Dec 11 18:56:14 1995 Mike Stump * except.c (expand_throw): Ensure that we have cleanups, if we try --- 15756,15762 ---- * decl2.c (build_cleanup): New routine, taken from finish_file. (finish_file): Use build_cleanup instead, and don't put function local statics in global dtor list. ! Wed Dec 6 14:34:29 1995 Mike Stump * except.c (expand_throw): Ensure that we have cleanups, if we try *************** Wed Dec 6 11:48:21 1995 Mike Stump * call.c (build_method_call): Make sure instance has a ! TYPE_LANG_SPECIFIC node before we dive into it. Sat Nov 4 20:01:52 1995 Jason Molenda ! * method.c (make_thunk): use TREE_SET_CODE to set thunk's tree code. Thu Nov 2 17:56:57 1995 Mike Stump --- 15889,15899 ---- Mon Nov 6 18:36:13 1995 Brendan Kehoe * call.c (build_method_call): Make sure instance has a ! TYPE_LANG_SPECIFIC node before we dive into it. Sat Nov 4 20:01:52 1995 Jason Molenda ! * method.c (make_thunk): Use TREE_SET_CODE to set thunk's tree code. Thu Nov 2 17:56:57 1995 Mike Stump *************** Tue Oct 31 11:56:55 1995 Jason Merrill *** 10995,11001 **** (emit_thunk): Don't call assemble_external. (make_thunk): Create thunk as a FUNCTION_DECL so that it gets the right mode and ENCODE_SECTION_INFO works. ! * parse.y: Use mark_used. Pass operator names to do_identifier. * lex.c (do_identifier): Handle operator names. --- 15928,15934 ---- (emit_thunk): Don't call assemble_external. (make_thunk): Create thunk as a FUNCTION_DECL so that it gets the right mode and ENCODE_SECTION_INFO works. ! * parse.y: Use mark_used. Pass operator names to do_identifier. * lex.c (do_identifier): Handle operator names. diff -x de.gmo -x fr.gmo -Nrc3p egcs-1.1.2/gcc/cp/ChangeLog.1 gcc-2.95/gcc/cp/ChangeLog.1 *** egcs-1.1.2/gcc/cp/ChangeLog.1 Wed May 6 14:08:07 1998 --- gcc-2.95/gcc/cp/ChangeLog.1 Tue Apr 13 15:45:34 1999 *************** Wed Oct 11 12:20:56 1995 Mike Stump