ChangeLog revision 18334
118334SpeterMon Nov 20 14:06:28 1995 Mike Stump <mrs@cygnus.com> 218334Speter 318334Speter * Version 2.7.2 released. 418334Speter 518334SpeterMon Nov 20 14:05:00 1995 Mike Stump <mrs@cygnus.com> 618334Speter 718334Speter * g++.c (pfatal_with_name): Add missing third argument to concat. 818334Speter 918334SpeterThu Oct 26 13:59:54 1995 Mike Stump <mrs@cygnus.com> 1018334Speter 1118334Speter * init.c (expand_aggr_init): Handle cv qualifiers on the object's 1218334Speter type. 1318334Speter 1418334SpeterSun Nov 12 18:09:35 1995 Mike Stump <mrs@cygnus.com> 1518334Speter 1618334Speter * Version 2.7.1 released. 1718334Speter 1818334SpeterThu Nov 2 17:02:47 1995 Jason Merrill <jason@yorick.cygnus.com> 1918334Speter 2018334Speter * call.c (convert_harshness): Handle references to arrays. 2118334Speter 2218334SpeterFri Oct 27 14:20:21 1995 Jason Merrill <jason@yorick.cygnus.com> 2318334Speter 2418334Speter * typeck.c (comp_target_types): Check multi-level pointer 2518334Speter conversions in both directions. 2618334Speter 2718334SpeterTue Oct 17 21:39:05 1995 Jason Merrill <jason@yorick.cygnus.com> 2818334Speter 2918334Speter * parse.y (explicit_instantiation): Fix 'extern template' with no 3018334Speter return type. 3118334Speter 3218334SpeterMon Oct 16 14:35:20 1995 Jason Merrill <jason@yorick.cygnus.com> 3318334Speter 3418334Speter * parse.y (explicit_instantiation): Support automatic instantiation 3518334Speter of constructors. 3618334Speter (named_class_head_*): Support out-of-class definition of nested 3718334Speter types. 3818334Speter 3918334SpeterWed Oct 11 12:20:56 1995 Mike Stump <mrs@cygnus.com> 4018334Speter 4118334Speter * search.c (envelope_add_decl): New routine. Fix so that 4218334Speter methods are hidden in the same way that other members are. 4318334Speter (dfs_pushdecls): Cleanup and move functionality out of line, 4418334Speter into envelope_add_decl. 4518334Speter 4618334SpeterTue Oct 10 15:46:01 1995 Mike Stump <mrs@cygnus.com> 4718334Speter 4818334Speter * typeck.c (mark_addressable): Only call assemble_external if we 4918334Speter have started the output file. 5018334Speter 5118334SpeterTue Oct 10 11:27:18 1995 Jason Merrill <jason@yorick.cygnus.com> 5218334Speter 5318334Speter * decl.c (start_function): Fix earlier cv-quals change. 5418334Speter 5518334SpeterMon Oct 9 23:53:05 1995 Mike Stump <mrs@cygnus.com> 5618334Speter 5718334Speter * parse.y (complex_direct_notype_declarator): Only push the class if 5818334Speter we are not already in the class. 5918334Speter 6018334SpeterMon Oct 9 11:22:03 1995 Doug Evans <dje@canuck.cygnus.com> 6118334Speter 6218334Speter * decl.c (duplicate_decls): Call merge_machine_decl_attributes. 6318334Speter Update olddecl's attributes too. 6418334Speter (grokdeclarator): #if 0 out call to build_decl_attribute_variant. 6518334Speter * typeck.c (common_type): Call merge_machine_type_attributes. 6618334Speter 6718334SpeterFri Oct 6 14:44:27 1995 Mike Stump <mrs@cygnus.com> 6818334Speter 6918334Speter * typeck.c (mark_addressable): Add missing call to 7018334Speter assemble_external. 7118334Speter 7218334SpeterWed Oct 4 22:05:23 1995 Jeff Law (law@hurl.cygnus.com 7318334Speter 7418334Speter * cp/decl.c (deplicate_decls): Merge in deferred output 7518334Speter status for variables. 7618334Speter * cp/tree.c (tree_copy_lang_decl_for_deferred_output): New 7718334Speter function to copy the g++ specific parts of a DECL node. 7818334Speter (tree_copy_lang_type_for_deferred_output): Similarly for 7918334Speter TYPE nodes. 8018334Speter 8118334SpeterWed Oct 4 15:06:39 1995 Mike Stump <mrs@cygnus.com> 8218334Speter 8318334Speter * decl.c (store_parm_decls): Make sure the unwinder start comes 8418334Speter before the exception specification start. 8518334Speter * except.c (expand_exception_blocks): Make sure the unwinder end 8618334Speter comes after the terminate protected catch clause region and after 8718334Speter the end of the exception specification region. 8818334Speter 8918334SpeterWed Oct 4 12:47:02 1995 Jason Merrill <jason@yorick.cygnus.com> 9018334Speter 9118334Speter * lex.c (real_yylex): Fix identifier case for linemode. 9218334Speter (handle_sysv_pragma): Don't abort when we see a pragma we don't 9318334Speter recognize. 9418334Speter 9518334SpeterTue Oct 3 14:09:46 1995 Mike Stump <mrs@cygnus.com> 9618334Speter 9718334Speter * decl.c (store_parm_decls): Add a call to start_eh_unwinder. 9818334Speter * except.c (init_exception_processing): __throw doesn't take any 9918334Speter arguments. 10018334Speter (expand_builtin_throw): Ditto. Always use Pmode, instead of SImode 10118334Speter for all pointers. Use expand_builtin_return_addr to unwind the 10218334Speter first level off the stack. 10318334Speter (do_unwind): Always use Pmode, instead of SImode for all pointers. 10418334Speter (expand_exception_blocks): Add a call to end_eh_unwinder. 10518334Speter (start_eh_unwinder, end_eh_unwinder): New routines to build machine 10618334Speter independent stack unwinders for function/method calls. 10718334Speter 10818334SpeterMon Oct 2 17:20:42 1995 Mike Stump <mrs@cygnus.com> 10918334Speter 11018334Speter * tree.c (unsave_expr_now): Make sure we process the argument list 11118334Speter of any called functions. Fixes incorrect code generation for 11218334Speter cleanups. 11318334Speter 11418334SpeterMon Oct 2 13:04:16 1995 Mike Stump <mrs@cygnus.com> 11518334Speter 11618334Speter * typeck.c (get_member_function_from_ptrfunc): Save function if it 11718334Speter needs it. Cures core dump on things like (this->*(f()))(). 11818334Speter 11918334SpeterSat Sep 23 22:51:25 1995 Jason Merrill <jason@phydeaux.cygnus.com> 12018334Speter 12118334Speter * decl.c (start_function): Conform to gcc cv-quals convention (no 12218334Speter expression has a cv-qualified type) in RESULT_DECLs. 12318334Speter * method.c (make_thunk): Ditto. 12418334Speter 12518334SpeterFri Sep 22 10:21:13 1995 Mike Stump <mrs@cygnus.com> 12618334Speter 12718334Speter * decl.c (pushtag): Add in the namespace name for the tag. 12818334Speter 12918334SpeterThu Sep 21 13:11:13 1995 Mike Stump <mrs@cygnus.com> 13018334Speter 13118334Speter * parse.y (maybe_base_class_list, base_class_list, base_class, 13218334Speter base_class_access_list): Make sure we see the typenames for base 13318334Speter classes. 13418334Speter * lex.c (see_typename): Instead of failing to see a typename when 13518334Speter there is no next token, perfer a typename, and get the next token. 13618334Speter 13718334SpeterWed Sep 20 12:35:27 1995 Michael Meissner <meissner@cygnus.com> 13818334Speter 13918334Speter * decl.c (init_decl_processing): Add __builtin_expect. 14018334Speter 14118334SpeterTue Sep 19 16:48:11 1995 Mike Stump <mrs@cygnus.com> 14218334Speter 14318334Speter * cvt.c (cp_convert_to_pointer): Don't allow leftover conversions to 14418334Speter or from pointer to member functions, they must all be handled before 14518334Speter this point. 14618334Speter 14718334SpeterFri Sep 15 17:14:47 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 14818334Speter 14918334Speter * init.c (resolve_offset_ref): Fix wording of non-static member 15018334Speter being referenced as a static. 15118334Speter 15218334SpeterFri Sep 15 12:39:11 1995 Jason Merrill <jason@phydeaux.cygnus.com> 15318334Speter 15418334Speter * typeck.c (build_indirect_ref): Only bash pointer if we actually 15518334Speter call build_expr_type_conversion. 15618334Speter 15718334SpeterThu Sep 14 18:24:56 1995 Jason Merrill <jason@deneb.cygnus.com> 15818334Speter 15918334Speter * cvt.c (build_expr_type_conversion): Handle conversion from 16018334Speter reference. 16118334Speter * typeck.c (build_indirect_ref): Avoid infinite recursion. 16218334Speter 16318334SpeterThu Sep 14 17:23:28 1995 Mike Stump <mrs@cygnus.com> 16418334Speter 16518334Speter * decl.c (expand_start_early_try_stmts): New routine to start a try 16618334Speter block at the start of the function, for function-try-blocks. 16718334Speter * cp-tree.h (expand_start_early_try_stmts): Declare it. 16818334Speter * parse.y (function_try_block): Use it, instead of doing it here, as 16918334Speter we don't want to include rtl.h here, as that conflicts with RETURN 17018334Speter in the parser. 17118334Speter 17218334SpeterWed Sep 13 18:32:24 1995 Mike Stump <mrs@cygnus.com> 17318334Speter 17418334Speter * lex.c (reinit_parse_for_block): Support saving inline 17518334Speter function-try-blocks, uses peekyylex. 17618334Speter * parse.y (eat_saved_input): New rule, permit the parser to see that 17718334Speter END_OF_SAVED_INPUT is ok, as it can see this when parsing the 17818334Speter handlers of a function-try-block. 17918334Speter (fndef): Use it. 18018334Speter (component_decl): Make sure TRY and RETURN can come after fn.def2. 18118334Speter * spew.c (peekyylex): New routine to peek at what will come next. 18218334Speter 18318334SpeterWed Sep 13 16:52:06 1995 Jason Merrill <jason@phydeaux.cygnus.com> 18418334Speter 18518334Speter * typeck.c (comptypes): Tighten up comparisons of template type 18618334Speter parms. 18718334Speter 18818334Speter * decl.c (duplicate_decls): Turn off whining about virtual functions 18918334Speter redeclared inline for now. 19018334Speter 19118334SpeterWed Sep 13 11:13:40 1995 Mike Stump <mrs@cygnus.com> 19218334Speter 19318334Speter * decl.c (store_in_parms): New routine to put things before we 19418334Speter put base inits. 19518334Speter * cp-tree.h (store_in_parms): Declare it. 19618334Speter * decl.c (store_parm_decls): Use it to makr sure the starting of the 19718334Speter eh spec comes before base inits. 19818334Speter (finish_function): Use sequences instead of the obsolete 19918334Speter reorder_insns. 20018334Speter * parse.y (fndef): Enhance readability and maintainability. Update 20118334Speter to include function_try_block syntax. 20218334Speter (function_try_block): Add. 20318334Speter 20418334SpeterTue Sep 12 17:43:07 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 20518334Speter 20618334Speter * call.c (convert_harshness): Use comptypes, not ==, to check if 20718334Speter TYPE and PARMTYPE are equivalent on a function type. 20818334Speter 20918334SpeterTue Sep 12 17:31:33 1995 Douglas Rupp (drupp@cs.washington.edu) 21018334Speter 21118334Speter * Make-lang.in (cc1plus) : Removed unnecessary $(exeext). 21218334Speter 21318334SpeterMon Sep 11 23:24:07 1995 Mike Stump <mrs@cygnus.com> 21418334Speter 21518334Speter * except.c (expand_throw): Never allocate storage for thrown pointer 21618334Speter to objects. 21718334Speter 21818334SpeterMon Sep 11 19:36:45 1995 Mike Stump <mrs@cygnus.com> 21918334Speter 22018334Speter * except.c (expand_start_catch_block): Pointers to objects come 22118334Speter back from catch matching already dereferenced, don't dereference 22218334Speter again. 22318334Speter 22418334SpeterMon Sep 11 15:46:28 1995 Mike Stump <mrs@cygnus.com> 22518334Speter 22618334Speter * except.c (expand_throw): Only decay the throw expression, don't do 22718334Speter any default conversions. This is so that one can throw and catch 22818334Speter characters, and not have them match integers. 22918334Speter 23018334SpeterMon Sep 11 13:46:45 1995 Mike Stump <mrs@cygnus.com> 23118334Speter 23218334Speter * error.c (dump_aggr_type): Deal with anonymous unions that don't 23318334Speter have a TYPE_NAME. 23418334Speter 23518334SpeterFri Sep 8 20:40:27 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 23618334Speter 23718334Speter * lex.c (handle_sysv_pragma): Deal with getting a comma from yylex. 23818334Speter 23918334SpeterFri Sep 8 15:51:41 1995 Mike Stump <mrs@cygnus.com> 24018334Speter 24118334Speter * except.c (expand_end_eh_spec): Handle empty EH specifications. 24218334Speter 24318334SpeterFri Sep 8 15:27:22 1995 Mike Stump <mrs@cygnus.com> 24418334Speter 24518334Speter * cp-tree.h (expand_start_eh_spec): Declare new routine. 24618334Speter (expand_end_eh_spec): Ditto. 24718334Speter * decl.c (store_parm_decls): Call expand_start_eh_spec to process 24818334Speter exception specifications. 24918334Speter * except.c (expand_leftover_cleanups): Remove unused parameter. 25018334Speter (expand_end_catch_block): Ditto. 25118334Speter (expand_exception_blocks): Ditto. 25218334Speter (expand_start_eh_spec): New routine to mark the start of an 25318334Speter exception specification region. 25418334Speter (expand_end_eh_spec): New routine to mark the end of an exception 25518334Speter specification region. 25618334Speter (expand_exception_blocks): Call expand_end_eh_spec to process 25718334Speter exception specifications. 25818334Speter 25918334SpeterFri Sep 8 14:40:48 1995 Per Bothner <bothner@kalessin.cygnus.com> 26018334Speter 26118334Speter * lex.c (do_identifier): Use global binding in preference of 26218334Speter dead for local variable. 26318334Speter 26418334SpeterWed Sep 6 19:32:59 1995 Mike Stump <mrs@cygnus.com> 26518334Speter 26618334Speter * cp-tree.h (build_exception_variant): Remove used first argument. 26718334Speter * decl.c (duplicate_decls): Ditto. 26818334Speter (grokfndecl): Ditto. 26918334Speter (revert_static_member_fn): Ditto. 27018334Speter * decl2.c (grok_method_quals): Ditto. 27118334Speter * tree.c (build_exception_variant): Ditto. 27218334Speter * typeck.c (common_type): Ditto. 27318334Speter * decl2.c (grokclassfn): After changing the type, call 27418334Speter build_exception_variant, if necessary. 27518334Speter 27618334SpeterTue Sep 5 15:56:27 1995 Mike Stump <mrs@cygnus.com> 27718334Speter 27818334Speter * except.c (expand_throw): Run cleanups for the throw expression. 27918334Speter 28018334SpeterWed Aug 30 15:24:38 1995 Stephen L. Favor (sfavor@tigger.intecom.com) 28118334Speter 28218334Speter * except.c (expand_builtin_throw): Moved gen_label_rtx calls beyond 28318334Speter the store_parm_decls call which does initialization in the emit_* 28418334Speter code concerning label numbering. 28518334Speter 28618334SpeterThu Aug 31 09:01:07 1995 Mike Stump <mrs@cygnus.com> 28718334Speter 28818334Speter * except.c (expand_internal_throw): Let the frontend be responsible 28918334Speter for managing all frontend EH parameters, the backend routine only 29018334Speter needs to deal with backend values. type and value are no longer 29118334Speter passed to __throw. 29218334Speter (init_exception_processing): Ditto. 29318334Speter (expand_start_all_catch): Ditto. 29418334Speter (expand_end_all_catch): Ditto. 29518334Speter (expand_leftover_cleanups): Ditto. 29618334Speter (expand_end_catch_block): Ditto. 29718334Speter (expand_builtin_throw): Ditto. 29818334Speter (expand_throw): Ditto. 29918334Speter 30018334SpeterTue Aug 29 15:04:36 1995 Jason Merrill <jason@phydeaux.cygnus.com> 30118334Speter 30218334Speter * cp-tree.h (DECL_REAL_CONTEXT): Give the real declaration context 30318334Speter for a decl. 30418334Speter * decl.c (cp_finish_decl): Use it. 30518334Speter 30618334SpeterTue Aug 29 10:30:27 1995 Mike Stump <mrs@cygnus.com> 30718334Speter 30818334Speter * except.c (expand_internal_throw): Oops, almost forgot type and 30918334Speter value are now trees. 31018334Speter 31118334SpeterMon Aug 28 17:57:45 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 31218334Speter 31318334Speter Fix the attribute handling to make sure they get noted before we 31418334Speter create the function's RTL, in case they can affect that. 31518334Speter * decl.c (grokfndecl): New arg ATTRLIST. Run 31618334Speter cplus_decl_attributes before creating the decl's rtl. 31718334Speter (grokdeclarator): New arg ATTRLIST, passed down into grokfndecl. 31818334Speter (shadow_tag, groktypename, start_decl, start_method): Pass a 31918334Speter NULL_TREE to grokdeclarator's new last arg. 32018334Speter * decl2.c (grokfield): New arg ATTRLIST, passed into grokdeclarator. 32118334Speter (grokbitfield, grokoptypename): Pass a NULL_TREE to 32218334Speter grokdeclarator's new last arg. 32318334Speter * except.c (expand_start_catch_block): Likewise. 32418334Speter * pt.c (process_template_parm, end_template_decl, 32518334Speter do_function_instantiation): Likewise. 32618334Speter * cp-tree.h (grokfield): Add arg. 32718334Speter (grokdeclarator): Move the prototype from here... 32818334Speter * decl.h: ...to here. 32918334Speter * lex.c (cons_up_default_function): Pass NULL_TREE to grokfield 33018334Speter ATTRLIST argument. 33118334Speter * parse.y: Create a list for the grokfield arg where appropriate, 33218334Speter and pass it down instead of calling cplus_decl_attributes. 33318334Speter 33418334SpeterMon Aug 28 15:07:24 1995 Mike Stump <mrs@cygnus.com> 33518334Speter 33618334Speter * except.c: Always allow turning on exception handling. Allow cross 33718334Speter compilations to use EH. 33818334Speter 33918334SpeterThu Aug 24 17:39:24 1995 Mike Stump <mrs@cygnus.com> 34018334Speter 34118334Speter * except.c (saved_pc, saved_throw_type, saved_throw_value): Use 34218334Speter trees, instead of rtxs, and don't depend on using special machine 34318334Speter dependent registers. 34418334Speter (expand_internal_throw): Ditto. 34518334Speter (init_exception_processing): Ditto. 34618334Speter (expand_start_all_catch): Ditto. 34718334Speter (expand_end_all_catch): Ditto. 34818334Speter (expand_start_catch_block): Ditto. 34918334Speter (expand_leftover_cleanups): Ditto. 35018334Speter (expand_end_catch_block): Ditto. 35118334Speter (expand_builtin_throw): Ditto. 35218334Speter (expand_throw): Ditto. 35318334Speter 35418334SpeterWed Aug 23 17:25:51 1995 Jason Merrill <jason@phydeaux.cygnus.com> 35518334Speter 35618334Speter * cvt.c (build_expr_type_conversion): Handle conversions to 35718334Speter reference types. 35818334Speter 35918334SpeterWed Aug 23 15:33:59 1995 Mike Stump <mrs@cygnus.com> 36018334Speter 36118334Speter * except.c (do_unwind): Work around backend bug with -fpic. 36218334Speter 36318334SpeterTue Aug 22 17:20:07 1995 Per Bothner <bothner@kalessin.cygnus.com> 36418334Speter 36518334Speter * decl2.c (flag_new_for_scope): Add a new mode that follows ANSI 36618334Speter for-scoping, but supports (and warns about) old programs. 36718334Speter Make the new mode (with value 1) the default. 36818334Speter (lang_f_options): The on-value for flag_new_for_scope is now 2. 36918334Speter * cp-tree.h (DECL_DEAD_FOR_LOCAL, DECL_ERROR_REPORTED): New macros 37018334Speter (DECL_SHADOWED_FOR_VAR): Likewise. 37118334Speter * decl.c (struct binding_level): New fields dead_vars_from_for 37218334Speter and is_for_scope. 37318334Speter (note_level_for_for): New function. 37418334Speter (poplevel): Special processing if is_for_scope. 37518334Speter (pushdecl): Warn if for-scope variable shadows local. 37618334Speter * lex.c (do_identifier): Handle old (non-ANSI) for scoping, 37718334Speter and warn if conflicts. 37818334Speter * parse.y (FOR): Call note_level_for_for. 37918334Speter 38018334SpeterMon Aug 21 10:28:31 1995 Jason Merrill <jason@deneb.cygnus.com> 38118334Speter 38218334Speter * decl2.c (import_export_inline): Class interface hackery does not 38318334Speter apply to synthesized methods. 38418334Speter 38518334SpeterSun Aug 20 16:29:00 1995 Mike Stump <mrs@cygnus.com> 38618334Speter 38718334Speter * search.c (virtual_context): Find the right context more often. 38818334Speter Solves a `recoverable compiler error, fixups for virtual function' 38918334Speter problem. 39018334Speter 39118334SpeterSun Aug 20 13:53:24 1995 Mike Stump <mrs@cygnus.com> 39218334Speter 39318334Speter * except.c (expand_start_all_catch): Ensure that we always transfer 39418334Speter control to the right EH handler, by rethrowing the end label on the 39518334Speter region, instead of hoping we are nested and falling through. 39618334Speter (expand_leftover_cleanups): Ditto. 39718334Speter (end_protect): Since we now rethrow the end label, put a 39818334Speter nop after it, so that outer regions are recognized. 39918334Speter * init.c (build_vec_delete_1): New routine to handle most of vector 40018334Speter deleting, all code moved here from build_vec_delete. 40118334Speter (build_array_eh_cleanup): Use build_vec_delete_1 to do all the real 40218334Speter work. 40318334Speter (expand_vec_init): If the array needs partial destructing, setup an 40418334Speter EH region to handle it. 40518334Speter (build_vec_delete): Move lots of code to build_vec_delete_1, use 40618334Speter build_vec_delete_1 to do the grunt work. 40718334Speter 40818334SpeterSat Aug 19 14:25:33 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 40918334Speter 41018334Speter Handle decl attributes properly for function definitions without 41118334Speter previous attribute-loaded declarations. 41218334Speter * decl.c (start_function): New arg ATTRS. Add a call to 41318334Speter cplus_decl_attributes with it before we create the RTL. 41418334Speter * cp-tree.h (start_function): Update prototype. 41518334Speter * parse.y (fn.def1): Pass ATTRS into start_function instead of 41618334Speter trying to call cplus_decl_attributes too late. Pass a NULL_TREE 41718334Speter for other use. 41818334Speter * decl2.c (finish_file): Pass NULL_TREE as fourth arg to 41918334Speter start_function. 42018334Speter * method.c (synthesize_method): Likewise. 42118334Speter * except.c (expand_builtin_throw): Likewise for start on __throw. 42218334Speter 42318334SpeterSat Aug 19 13:36:08 1995 Mike Stump <mrs@cygnus.com> 42418334Speter 42518334Speter * class.c (set_rtti_entry): Turn on -fvtable-thunk -frtti support. 42618334Speter This changes -fvtable-thunks vtable layout, so a recompile will be 42718334Speter necessary, if you use -fvtable-thunks. 42818334Speter (get_vtable_entry): Use n, instead of i to be consistent with the 42918334Speter rest of the compiler. 43018334Speter (get_vtable_entry_n): Ditto. 43118334Speter (add_virtual_function): Add a slot for the tdesc, if -fvtable-thunks 43218334Speter are being used. 43318334Speter (finish_struct_1): Ditto. 43418334Speter (skip_rtti_stuff): New routine to collapse similar code from many 43518334Speter different parts of the compiler. I think I got them all. 43618334Speter (modify_one_vtable): Use it. 43718334Speter (fixup_vtable_deltas1): Ditto. 43818334Speter (override_one_vtable): Ditto. 43918334Speter * decl2.c (mark_vtable_entries): Ditto. 44018334Speter * tree.c (debug_binfo): Ditto. 44118334Speter * search.c (expand_upcast_fixups): Ditto. 44218334Speter (get_abstract_virtuals_1): Ditto. Use virtuals, instead of tmp to 44318334Speter consistent with the rest of the compiler. 44418334Speter (get_abstract_virtuals): Ditto. 44518334Speter * cp-tree.h (skip_rtti_stuff): New routine, declare it. 44618334Speter * gc.c (build_headof): Support -fvtable-thunk and -frtti together. 44718334Speter (build_typeid): Ditto. 44818334Speter (build_classof): Remove old style way of doing rtti. Remove support 44918334Speter for `classof' and `headof'. 45018334Speter * gxx.gperf: Ditto. 45118334Speter * hash.h: Ditto. 45218334Speter * parse.y: Ditto. 45318334Speter 45418334SpeterFri Aug 18 17:31:58 1995 Jason Merrill <jason@deneb.cygnus.com> 45518334Speter 45618334Speter * decl.c (start_function): Clear ctor_label and dtor_label. 45718334Speter 45818334Speter * class.c (finish_struct_1): Fix handling of access decls. 45918334Speter 46018334SpeterTue Aug 15 19:21:54 1995 Jason Merrill <jason@phydeaux.cygnus.com> 46118334Speter 46218334Speter * class.c (finish_struct): Only do minimal processing here, so it 46318334Speter can be used for class template definitions, as well. 46418334Speter (finish_struct_1): New function with the rest of the code. 46518334Speter 46618334SpeterTue Aug 15 09:46:16 1995 Mike Stump <mrs@cygnus.com> 46718334Speter 46818334Speter * class.c (prepare_fresh_vtable): On second though, always build the 46918334Speter offset (see Aug 10 change), unless -fvtable-thunks is given. It 47018334Speter does this by calling the new routine set_rtti_entry. 47118334Speter (finish_struct): Ditto. 47218334Speter (set_rtti_entry): New routine to update the rtti information at the 47318334Speter start of the vtable. 47418334Speter 47518334SpeterMon Aug 14 12:21:22 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 47618334Speter 47718334Speter * error.c (dump_decl, case IDENTIFIER_NODE): Only work on a dtor 47818334Speter if it's declared in the C++ language spec. 47918334Speter (dump_function_decl): Likewise. 48018334Speter (dump_function_name): Likewise. 48118334Speter (ident_fndecl): Make sure we got something back from lookup_name. 48218334Speter * decl.c (start_function): Likewise. 48318334Speter 48418334SpeterFri Aug 11 16:52:15 1995 Jason Merrill <jason@phydeaux.cygnus.com> 48518334Speter 48618334Speter * call.c (build_method_call): Don't call build_new when calling a 48718334Speter constructor without an instance. 48818334Speter 48918334SpeterThu Aug 10 20:00:17 1995 Mike Stump <mrs@cygnus.com> 49018334Speter 49118334Speter * class.c (prepare_fresh_vtable): Always build the offset to the 49218334Speter complete object, as it doesn't cost much. This allows dynamic_cast 49318334Speter to void * to work when -frtti isn't given. 49418334Speter (finish_struct): Ditto. 49518334Speter 49618334SpeterThu Aug 10 16:31:28 1995 Mike Stump <mrs@cygnus.com> 49718334Speter 49818334Speter * except.c (build_eh_type): Split out some functionality to new 49918334Speter routine named build_eh_type_type. 50018334Speter (build_eh_type_type): New routine. 50118334Speter (expand_start_catch_block): Use build_eh_type_type, as we never want 50218334Speter the dynamic type of the catch parameter, just the static type. 50318334Speter Fixes core dumps when -frtti is used and one catchs pointers to 50418334Speter classes. 50518334Speter 50618334SpeterThu Aug 10 14:55:29 1995 Mike Stump <mrs@cygnus.com> 50718334Speter 50818334Speter * except.c (expand_builtin_throw): Since we now use normal calling 50918334Speter conventions for __throw, we have to remove the first layer off the 51018334Speter stack, so that the next context we search for handlers is the outer 51118334Speter context instead of the context that had the call to __throw, if we 51218334Speter don't immediately find the desired context. 51318334Speter 51418334SpeterTue Aug 8 17:44:23 1995 Jason Merrill <jason@phydeaux.cygnus.com> 51518334Speter 51618334Speter * tree.c (cp_expand_decl_cleanup): Returns int, not tree. 51718334Speter * cp-tree.h: Update. 51818334Speter 51918334Speter * parse.y (template_type_parm): Add support for `typename'. 52018334Speter 52118334SpeterTue Aug 8 12:06:31 1995 Mike Stump <mrs@cygnus.com> 52218334Speter 52318334Speter * except.c (expand_internal_throw): New internal routine to throw a 52418334Speter value. 52518334Speter (expand_end_all_catch, expand_leftover_cleanups): All throwers 52618334Speter changed to use `expand_internal_throw' instead of jumping to throw 52718334Speter label. 52818334Speter (expand_end_catch_block, expand_throw): Ditto. 52918334Speter (throw_label): Removed. 53018334Speter (expand_builtin_throw): Changed so that EH parameters are passed by 53118334Speter normal function call conventions. Completes Aug 4th work. 53218334Speter 53318334SpeterFri Aug 4 17:17:08 1995 Mike Stump <mrs@cygnus.com> 53418334Speter 53518334Speter * cp-tree.h (expand_builtin_throw): Declare it. 53618334Speter * decl2.c (finish_file): Call expand_builtin_throw. 53718334Speter * except.c (make_first_label): Remove. 53818334Speter (init_exception_processing): Don't use a LABEL_REF for throw_label, 53918334Speter instead use a SYMBOL_REF, this is so that we don't use LABEL_REFs in 54018334Speter other functions that don't really appear in those functions. This 54118334Speter solves a problem where cc1plus consumed exponential amounts of 54218334Speter memory when -Wall was used. 54318334Speter (expand_end_all_catch, expand_leftover_cleanups, 54418334Speter expand_end_catch_block, expand_throw): Change all uses of 54518334Speter throw_label to match new style. 54618334Speter (do_unwind): Rename parameter to inner_throw_label, as it is now 54718334Speter different from throw_label. Also, assume that our caller will wrap 54818334Speter the passed label with a LABEL_REF, if needed. 54918334Speter (expand_builtin_throw): Make external, change so that the generated 55018334Speter throw is now a real function. 55118334Speter (expand_exception_blocks): Never generate throw code inside another 55218334Speter function. 55318334Speter 55418334SpeterFri Aug 4 12:20:02 1995 Mike Stump <mrs@cygnus.com> 55518334Speter 55618334Speter * decl.c (grokdeclarator): Move checking of mutable const objects 55718334Speter and mutable static objects down, as we might decide during parsing 55818334Speter to unset staticp or constp (for example, when const is part of the 55918334Speter object being pointed to). 56018334Speter 56118334SpeterThu Aug 3 17:13:43 1995 Mike Stump <mrs@cygnus.com> 56218334Speter 56318334Speter * except.c (output_exception_table_entry): Enhance portability to 56418334Speter weird machines. 56518334Speter (emit_exception_table): Ditto. 56618334Speter 56718334SpeterThu Aug 3 16:41:38 1995 Mike Stump <mrs@cygnus.com> 56818334Speter 56918334Speter * typeck.c (build_ptrmemfunc): Handle casting of pointer to 57018334Speter non-virtual member functions. 57118334Speter 57218334SpeterWed Aug 2 11:58:25 1995 Mike Stump <mrs@cygnus.com> 57318334Speter 57418334Speter * gc.c (build_typeid): Strip cv qualifiers so that const T&, T&, T 57518334Speter and const T all match. 57618334Speter 57718334SpeterWed Aug 2 11:25:33 1995 Mike Stump <mrs@cygnus.com> 57818334Speter 57918334Speter * except.c (build_eh_type): Strip cv qualifiers so that const T&, 58018334Speter T&, T and const T all match. 58118334Speter 58218334SpeterTue Aug 1 14:20:16 1995 Mike Stump <mrs@cygnus.com> 58318334Speter 58418334Speter * except.c: Fix up comments, cleanup code and eliminate exceptNode, 58518334Speter exceptStack, exceptstack, push_except_stmts, pop_except_stmts, 58618334Speter new_except_stack, push_last_insn, pop_last_insn, insn_save_node and 58718334Speter InsnSave. Also, numerous speed improvements, and correctness 58818334Speter improvements. Double faulting in all situations should now be 58918334Speter handled correctly. 59018334Speter (expand_start_all_catch): Instead of having many terminate protected 59118334Speter regions, just have one. 59218334Speter (expand_start_catch_block): No longer have to protect 59318334Speter false_label_rtx, as it isn't used for EH region marking. 59418334Speter (expand_end_catch_block): Expand out EH cleanups here by using 59518334Speter expand_leftover_cleanups. 59618334Speter (expand_end_all_catch): Use sequences instead of playing with insn 59718334Speter links directly. 59818334Speter (expand_exception_blocks): Ditto. Also protect all catch clauses 59918334Speter with one terminate region. 60018334Speter 60118334SpeterMon Jul 31 13:24:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> 60218334Speter 60318334Speter * method.c (report_type_mismatch): Don't talk about an object 60418334Speter parameter for non-methods. 60518334Speter 60618334SpeterSun Jul 30 13:13:02 1995 Jason Merrill <jason@phydeaux.cygnus.com> 60718334Speter 60818334Speter * class.c (finish_struct): Catch private and protected members of 60918334Speter anonymous unions here. 61018334Speter * decl2.c (finish_anon_union): And here. 61118334Speter * parse.y: Instead of here. 61218334Speter 61318334Speter * errfn.c (ARGSLIST): Support passing four args. 61418334Speter * error.c (cv_as_string): New function. 61518334Speter (cp_printers): Add it. 61618334Speter * call.c (build_method_call): Report 'const' at end of pseudo-decl. 61718334Speter 61818334Speter * method.c (report_type_mismatch): Deal with a bad_arg of 0. 61918334Speter 62018334Speter * init.c (expand_aggr_init): Handle volatile objects, too. 62118334Speter 62218334SpeterSat Jul 29 13:42:03 1995 Jason Merrill <jason@phydeaux.cygnus.com> 62318334Speter 62418334Speter * decl.c (struct binding_level): Keep list of incomplete decls. 62518334Speter (print_binding_level): Use list_length to count them. 62618334Speter (pushdecl): Build up the list. 62718334Speter (hack_incomplete_structures): Walk it and prune completed decls. 62818334Speter 62918334SpeterFri Jul 28 15:26:44 1995 Jason Merrill <jason@phydeaux.cygnus.com> 63018334Speter 63118334Speter * typeck.c (comp_target_types): Don't check const and volatile for 63218334Speter function types. 63318334Speter (comp_ptr_ttypes_real): Ditto. 63418334Speter 63518334SpeterThu Jul 27 15:40:48 1995 Jason Merrill <jason@phydeaux.cygnus.com> 63618334Speter 63718334Speter * typeck.c (comp_target_types): Fix. 63818334Speter 63918334SpeterThu Jul 27 15:10:48 1995 Mike Stump <mrs@cygnus.com> 64018334Speter 64118334Speter * cp-tree.h (unsave_expr_now, build_unsave_expr, 64218334Speter cp_expand_decl_cleanup): Declare new routines. 64318334Speter * decl.c (cp_finish_decl, store_parm_decls, 64418334Speter hack_incomplete_structures): Change all cals from 64518334Speter expand_decl_cleanup to cp_expand_decl_cleanup. 64618334Speter * gc.c (protect_value_from_gc): Ditto. 64718334Speter * expr.c (cplus_expand_expr): Handle UNSAVE_EXPRs. 64818334Speter * tree.c (unsave_expr): New routine to build an UNSAVE_EXPR. 64918334Speter (unsave_expr_now): Backend routine used by tree expander. 65018334Speter (cp_expand_decl_cleanup): Wrap second argument in an UNSAVE_EXPR to 65118334Speter work around a limitation in the backend. The backend uses the 65218334Speter cleanups multiple times, on disjoint control flows, so we cannot 65318334Speter pass unsaved SAVE_EXPRs to the backend. 65418334Speter * tree.def (UNSAVE_EXPR): New tree code. 65518334Speter * typeck.c (c_expand_return): Move goto/return code up inside 65618334Speter conditional, as we don't always want to do this, we only want to do 65718334Speter this when we don't otherwise finish with this control flow. 65818334Speter 65918334SpeterThu Jul 27 10:38:43 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 66018334Speter 66118334Speter * parse.y (typespec): Only complain about typeof if we're not 66218334Speter getting it from a system header. 66318334Speter 66418334SpeterThu Jul 27 10:26:23 1995 Doug Evans <dje@canuck.cygnus.com> 66518334Speter 66618334Speter Clean up prefix attribute handling. 66718334Speter * parse.y (reserved_declspecs): Link prefix attributes with declspecs. 66818334Speter (declmods): Likewise. 66918334Speter (all rules that reference typed_declspecs and declmods): Call 67018334Speter split_specs_attrs or strip_attrs to separate declspecs and attrs. 67118334Speter (lang_extdef): Delete resetting of prefix_attributes. 67218334Speter (template_def, notype_declarator rule): Use NULL_TREE for 67318334Speter prefix_attributes. 67418334Speter (condition): Use NULL_TREE for prefix_attributes. 67518334Speter (setattrs): Deleted. 67618334Speter (nomods_initdcl0): Set prefix_attributes to NULL_TREE. 67718334Speter (component_decl): Delete resetting of prefix_attributes. 67818334Speter (component_decl_1, notype_components rule): Use NULL_TREE for 67918334Speter prefix_attributes. 68018334Speter (simple_stmt): Delete resetting of prefix_attributes. 68118334Speter 68218334SpeterMon Jul 24 13:37:53 1995 Jason Merrill <jason@phydeaux.cygnus.com> 68318334Speter 68418334Speter * call.c (convert_harshness): Deal with reference conversions before 68518334Speter others. Actually do array->pointer decay. Call comp_target_types 68618334Speter with pointer types rather than their targets. 68718334Speter 68818334Speter * typeck.c (comp_target_types): Avoid assigning D const * to B *. 68918334Speter 69018334SpeterMon Jul 24 08:54:46 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 69118334Speter 69218334Speter * pt.c (to_be_restored): Move decl to global scope. 69318334Speter 69418334SpeterSat Jul 22 12:22:11 1995 Jason Merrill <jason@phydeaux.cygnus.com> 69518334Speter 69618334Speter * decl.c (start_decl): Put back clearing of DECL_IN_AGGR_P. 69718334Speter 69818334SpeterFri Jul 21 17:09:02 1995 Jason Merrill <jason@phydeaux.cygnus.com> 69918334Speter 70018334Speter * decl.c (grokdeclarator): Downgrade error about 'extern int A::i' 70118334Speter to pedwarn. 70218334Speter 70318334Speter * pt.c (instantiate_template): Also avoid instantiation if the 70418334Speter function has already been declared to be a specialization. 70518334Speter 70618334Speter * decl2.c (check_classfn): Ignore cname argument, and return the 70718334Speter matching function. 70818334Speter 70918334Speter * decl.c (start_decl): Handle declarations of member functions 71018334Speter outside of the class (i.e. specialization declarations). 71118334Speter 71218334SpeterThu Jul 20 10:34:48 1995 Jason Merrill <jason@phydeaux.cygnus.com> 71318334Speter 71418334Speter * class.c (finish_struct): Don't mess with the type of bitfields. 71518334Speter 71618334Speter * various.c: s/TYPE_POINTER_TO/build_pointer_type/. 71718334Speter 71818334SpeterThu Jul 20 01:43:10 1995 Mike Stump <mrs@cygnus.com> 71918334Speter 72018334Speter * init.c (expand_aggr_init): Assume LOOKUP_ONLYCONVERTING if init 72118334Speter is not a parameter list (TREE_LIST). 72218334Speter (expand_default_init): If LOOKUP_ONLYCONVERTING is set, then set 72318334Speter LOOKUP_NO_CONVERSION so that we don't allow two-level conversions, 72418334Speter but don't set it otherwise. 72518334Speter 72618334SpeterWed Jul 19 20:32:01 1995 Mike Stump <mrs@cygnus.com> 72718334Speter 72818334Speter * init.c (expand_default_init): Don't allow two-level conversions 72918334Speter during construction. 73018334Speter 73118334SpeterWed Jul 19 18:06:37 1995 Mike Stump <mrs@cygnus.com> 73218334Speter 73318334Speter * gc.c (build_headof): The type of dyncasting to a pointer to cv 73418334Speter void, should be pointer to cv void. 73518334Speter 73618334SpeterWed Jul 19 17:25:43 1995 Mike Stump <mrs@cygnus.com> 73718334Speter 73818334Speter * gc.c (build_dynamic_cast): Allow casting in const. 73918334Speter 74018334SpeterWed Jul 19 16:34:27 1995 Mike Stump <mrs@cygnus.com> 74118334Speter 74218334Speter * typeck.c (build_const_cast): If we are passed error_mark_node, 74318334Speter return it. 74418334Speter 74518334SpeterWed Jul 19 15:24:48 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 74618334Speter 74718334Speter * class.c (push_nested_class): Make sure TYPE is non-nil. 74818334Speter 74918334Speter * cvt.c (type_promotes_to): Watch for error_mark_node on the 75018334Speter incoming TYPE. 75118334Speter 75218334SpeterWed Jul 19 13:23:12 1995 Gerald Baumgartner <gb@alexander.cs.purdue.edu> 75318334Speter 75418334Speter * cp-tree.h (SIGTABLE_VT_OFF_NAME): Renamed from SIGTABLE_OFFSET_NAME. 75518334Speter (SIGTABLE_VB_OFF_NAME): New macro. 75618334Speter (vt_off_identifier): Renamed from offset_identifier. 75718334Speter (vb_off_identifier): Added extern declaration. 75818334Speter 75918334Speter * decl.c (vt_off_identifier): Renamed from offset identifier. 76018334Speter (vb_off_identifier): New variable to hold the identifier for the 76118334Speter sigtable field vb_off. 76218334Speter (init_decl_processing): Initialize vb_off_identifier. 76318334Speter Renamed vt_off_identifier from offset_identifier. 76418334Speter * sig.c (build_signature_method_call): Renamed offset_identifier and 76518334Speter local variable offset to vt_off_identifer and vt_off, respecitively. 76618334Speter * sig.c (build_signature_table_constructor): Renamed offset to vt_off. 76718334Speter 76818334Speter * decl.c (init_decl_processing): Add vb_off field to 76918334Speter sigtable_entry_type. Reorder fields so that pfn gets properly 77018334Speter aligned at a 64 bit boundary on the Alpha. 77118334Speter * sig.c (build_signature_table_constructor): Build the constructor 77218334Speter according to the new layout. Set the vb_off field to -1 for now. 77318334Speter 77418334Speter * decl.c (init_decl_processing): Align sigtable_entry_type on word 77518334Speter boundaries instead of double word boundaries to save space. 77618334Speter 77718334SpeterTue Jul 18 16:58:37 1995 Mike Stump <mrs@cygnus.com> 77818334Speter 77918334Speter * cvt.c (cp_convert): Always call build_cplus_new for a ctor. 78018334Speter 78118334SpeterTue Jul 18 14:24:53 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 78218334Speter 78318334Speter * parse.y (opt.component_decl_list): Only forbid private/protected 78418334Speter in anonymous unions. We need to make this know when the type is 78518334Speter defined for an object, to not give the error. 78618334Speter 78718334SpeterMon Jul 17 14:22:44 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 78818334Speter 78918334Speter * parse.y (opt.component_decl_list): Don't allow access control 79018334Speter as private or protected for union members. 79118334Speter 79218334SpeterSun Jul 16 14:01:00 1995 Jim Wilson <wilson@chestnut.cygnus.com> 79318334Speter 79418334Speter * lex.c (check_newline): For 'p' case, move goto skipline line to 79518334Speter before end brace for 'pragma'. 79618334Speter 79718334SpeterFri Jul 7 13:55:58 1995 Mike Stump <mrs@cygnus.com> 79818334Speter 79918334Speter * g++.1: Tiny updates. 80018334Speter 80118334SpeterFri Jul 7 13:05:20 1995 Mike Stump <mrs@cygnus.com> 80218334Speter 80318334Speter * decl.c (cp_finish_decl): Only destruct local static variables if 80418334Speter they are constructed, and only construct the first time control 80518334Speter passes completely through its declaration (if not initialized with a 80618334Speter constant-expression). 80718334Speter (expand_static_init): Ditto. 80818334Speter 80918334SpeterWed Jul 5 14:05:04 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 81018334Speter 81118334Speter * typeck.c (comptypes, case OFFSET_REF): If either offset basetype 81218334Speter is a TEMPLATE_TYPE_PARM, give a match. 81318334Speter 81418334SpeterMon Jul 3 15:17:20 1995 Steve Chamberlain <sac@slash.cygnus.com> 81518334Speter 81618334Speter * g++.c (sys/file.h): Remove change of Jun 28. 81718334Speter 81818334SpeterFri Jun 30 15:42:57 1995 Mike Stump <mrs@cygnus.com> 81918334Speter 82018334Speter * method.c (build_overload_value): Handle encoding of null pointer 82118334Speter constants (or any pointer with a constant numeric value) for 82218334Speter templates. 82318334Speter 82418334SpeterFri Jun 30 13:45:51 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 82518334Speter 82618334Speter * call.c (convert_harshness): Add QUAL_CODE when we're faced with 82718334Speter const vs non-const for void conversions. 82818334Speter 82918334SpeterFri Jun 30 10:19:52 1995 Mike Stump <mrs@cygnus.com> 83018334Speter 83118334Speter * except.c (expand_start_all_catch): Fix problem with finding an 83218334Speter outer nested try block when there is no code to separate it from an 83318334Speter inner try block. 83418334Speter 83518334SpeterFri Jun 30 02:22:26 1995 Mike Stump <mrs@cygnus.com> 83618334Speter 83718334Speter * search.c (dfs_pushdecls): Consume 2 or 3 orders of magnitude less 83818334Speter memory please when virtual bases are used. 83918334Speter 84018334SpeterThu Jun 29 19:03:47 1995 Mike Stump <mrs@cygnus.com> 84118334Speter 84218334Speter * class.c (build_vbase_path): Avoid testing things that cannot be 84318334Speter null to see if they are null. 84418334Speter * cvt.c (convert_pointer_to_vbase): Remove code that doesn't work. 84518334Speter * decl.c (finish_function): Pass a type into the new 84618334Speter convert_pointer_to_vbase instead of a binfo. 84718334Speter * search.c (convert_pointer_to_vbase): Rewritten to use get_vbase 84818334Speter and convert_pointer_to_real. 84918334Speter (expand_indirect_vtbls_init): Use convert_pointer_to_vbase instead 85018334Speter of the more cryptic call to get_vbase. 85118334Speter 85218334SpeterThu Jun 29 09:35:05 1995 Mike Stump <mrs@cygnus.com> 85318334Speter 85418334Speter * decl.c (BOOL_TYPE_SIZE): Fix broken SLOW_BYTE_ACCESS check. 85518334Speter 85618334SpeterThu Jun 29 03:43:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> 85718334Speter 85818334Speter * pt.c (instantiate_template): Don't strip 'this' twice. 85918334Speter 86018334Speter * pt.c (coerce_template_parms): Allow null pointer constants. 86118334Speter 86218334Speter * decl.c (revert_static_member_fn): But only if DECL_ARGUMENTS is 86318334Speter set. 86418334Speter 86518334SpeterWed Jun 28 23:34:58 1995 Steve Chamberlain <sac@slash.cygnus.com> 86618334Speter 86718334Speter * g++.c (pfatal_with_name): Use my_strerror to get error 86818334Speter string. 86918334Speter (sys/file.h): Include if HAVE_FILE_H defined. 87018334Speter 87118334SpeterWed Jun 28 18:39:03 1995 Jason Merrill <jason@phydeaux.cygnus.com> 87218334Speter 87318334Speter * decl.c (revert_static_member_fn): Also remove 'this' from 87418334Speter DECL_ARGUMENTS. 87518334Speter * decl2.c (check_classfn): Don't revert this function until we get a 87618334Speter match. 87718334Speter 87818334SpeterWed Jun 28 14:07:27 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 87918334Speter 88018334Speter * parse.y (component_decl): Clear PREFIX_ATTRIBUTES here. 88118334Speter 88218334SpeterWed Jun 28 11:05:13 1995 Mike Stump <mrs@cygnus.com> 88318334Speter 88418334Speter * decl2.c (finish_file): Handle global vector news. 88518334Speter * init.c (build_new): Encode vector news so that later we will know 88618334Speter how many elements there are. 88718334Speter 88818334SpeterMon Jun 26 13:38:06 1995 Jason Merrill <jason@phydeaux.cygnus.com> 88918334Speter 89018334Speter * expr.c (cplus_expand_expr): Don't mess with temp slots. 89118334Speter 89218334Speter * decl2.c (warn_if_unknown_interface): Don't crash if tinst_for_decl 89318334Speter returns null. 89418334Speter 89518334Speter * decl2.c (check_classfn): Use revert_static_member_fn. 89618334Speter * decl.c (revert_static_member_fn): Diagnose static member functions 89718334Speter declared const or volatile. 89818334Speter 89918334Speter * decl2.c (grokfield): Check for missing default args here, too. 90018334Speter (check_default_args): Function to do the checking. 90118334Speter * decl.c (pushdecl): Use it. 90218334Speter 90318334Speter * decl.c (pushdecl): Don't warn about shadowing a member of `this' 90418334Speter if there is no `this'. 90518334Speter 90618334SpeterSun Jun 25 11:34:25 1995 Jason Merrill <jason@phydeaux.cygnus.com> 90718334Speter 90818334Speter * call.c (build_method_call): Downgrade 'called before definition' 90918334Speter to a warning, as it ought to go away after Monterey. 91018334Speter 91118334SpeterSat Jun 24 14:18:42 1995 Jason Merrill <jason@phydeaux.cygnus.com> 91218334Speter 91318334Speter * pt.c (coerce_template_parms): Don't do extra checking on pointer 91418334Speter to member arguments. 91518334Speter 91618334Speter * class.c (finish_struct): const and reference members don't prevent 91718334Speter a class from being an aggregate. 91818334Speter 91918334Speter * class.c (finish_struct): Signatures are always aggregates. 92018334Speter 92118334SpeterFri Jun 23 17:20:29 1995 Jason Merrill <jason@phydeaux.cygnus.com> 92218334Speter 92318334Speter * decl2.c (check_classfn): Improve error message. 92418334Speter 92518334Speter * pt.c (tsubst): Handle PROMOTE_PROTOTYPES. 92618334Speter 92718334SpeterThu Jun 22 01:50:42 1995 Jason Merrill <jason@phydeaux.cygnus.com> 92818334Speter 92918334Speter * typeck.c (comptypes): Don't ignore method quals. 93018334Speter 93118334Speter * class.c (finish_struct): Non-abstract virtuals are always USED. 93218334Speter 93318334Speter * decl.c (build_ptrmemfunc_type): The underlying union type isn't 93418334Speter IS_AGGR_TYPE, either. 93518334Speter * class.c (finish_struct): Use CLASSTYPE_NON_AGGREGATE instead. 93618334Speter * cp-tree.h: Ditto. 93718334Speter 93818334Speter * cp-tree.h (lang_type): Add aggregate. 93918334Speter (CLASSTYPE_AGGREGATE): New macro. 94018334Speter (TYPE_NON_AGGREGATE_CLASS): Ditto. 94118334Speter * class.c (finish_struct): Determine whether a class is an 94218334Speter aggregate. 94318334Speter * decl.c (cp_finish_decl): Check TYPE_NON_AGGREGATE_CLASS instead of 94418334Speter TYPE_NEEDS_CONSTRUCTING. 94518334Speter * typeck2.c (digest_init): Check TYPE_NON_AGGREGATE_CLASS for 94618334Speter subobjects, too. 94718334Speter 94818334Speter * pt.c (tsubst, PARM_TYPE): Propagate DECL_ARTIFICIAL. 94918334Speter 95018334Speter * decl.c (start_function): For pre-parsed functions, layout all of 95118334Speter the parm decls again. 95218334Speter (grokvardecl): TREE_PUBLIC depends on DECL_THIS_EXTERN, not 95318334Speter DECL_EXTERNAL. 95418334Speter 95518334Speter * pt.c (coerce_template_parms): Improve checking for invalid 95618334Speter template parms. 95718334Speter 95818334SpeterWed Jun 21 12:01:16 1995 Brendan Kehoe <brendan@lisa.cygnus.com> 95918334Speter 96018334Speter * decl.c (grokdeclarator): Forbid declaration of a static member 96118334Speter with the same name as its enclosing class. 96218334Speter 96318334SpeterMon Jun 19 10:28:14 1995 Jason Merrill <jason@phydeaux.cygnus.com> 96418334Speter 96518334Speter * decl.c (finish_function): Clear current_class_decl. 96618334Speter 96718334Speter * typeck.c (build_conditional_expr): Use convert (boolean_type_node 96818334Speter instead of truthvalue_conversion. 96918334Speter 97018334Speter * class.c (finish_struct): A data member with the same name as the 97118334Speter class doesn't suppress constructors. 97218334Speter 97318334SpeterFri Jun 16 18:11:39 1995 Gerald Baumgartner (gb@alexander.cs.purdue.edu) 97418334Speter 97518334Speter * decl.c (start_function): If current_class_decl is a signature 97618334Speter pointer, don't dereference it but set C_C_D to current_class_decl. 97718334Speter 97818334SpeterFri Jun 16 17:06:28 1995 Jason Merrill <jason@phydeaux.cygnus.com> 97918334Speter 98018334Speter * decl.c (duplicate_decls): Complain about virtual functions 98118334Speter redeclared to be inline. 98218334Speter 98318334SpeterFri Jun 16 13:20:38 1995 Mike Stump <mrs@cygnus.com> 98418334Speter 98518334Speter * decl.c (get_unique_name): New routine to name unnamed namespaces. 98618334Speter (push_namespace): Use get_unique_name for naming unnamed namespaces. 98718334Speter 98818334SpeterFri Jun 16 15:07:29 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 98918334Speter 99018334Speter * Make-lang.in (DEMANGLER_PROG): Add LIBS. 99118334Speter 99218334SpeterThu Jun 15 15:00:41 1995 Jason Merrill <jason@phydeaux.cygnus.com> 99318334Speter 99418334Speter * decl.c (define_function): Don't set DECL_INTERFACE_KNOWN. 99518334Speter 99618334Speter * parse.y: Call cplus_decl_attributes with prefix_attributes where 99718334Speter appropriate. 99818334Speter 99918334SpeterWed Jun 14 19:24:49 1995 Mike Stump <mrs@cygnus.com> 100018334Speter 100118334Speter * search.c (get_vbase): New routine to switch hierarchies from the 100218334Speter CLASSTYPE_VBASECLASSES to the normal one. 100318334Speter (expand_indirect_vtbls_init): Use get_vbase to figure out how we 100418334Speter want to convert to a vbase pointer. 100518334Speter 100618334SpeterMon Jun 12 17:50:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> 100718334Speter 100818334Speter * pt.c (instantiate_class_template): Add the new instantiation to 100918334Speter template_classes. 101018334Speter (do_pending_expansions): Call instantiate_member_templates on all of 101118334Speter the classes in template_classes. 101218334Speter 101318334SpeterMon Jun 12 12:36:59 1995 Mike Stump <mrs@cygnus.com> 101418334Speter 101518334Speter * decl.c (complete_array_type): Fill in the TYPE_DOMAIN of our 101618334Speter TYPE_MAIN_VARIANT if it is not filled in. 101718334Speter * init.c (build_delete): If the TYPE_DOMAIN is not set, give an 101818334Speter error instead of core dumping. 101918334Speter 102018334SpeterMon Jun 12 10:41:40 1995 Jason Merrill <jason@phydeaux.cygnus.com> 102118334Speter 102218334Speter * call.c (can_convert): Also check for distance > 0. 102318334Speter (can_convert_arg): Ditto. 102418334Speter (user_harshness): Ditto. 102518334Speter 102618334SpeterFri Jun 9 19:17:21 1995 Jason Merrill <jason@phydeaux.cygnus.com> 102718334Speter 102818334Speter * g++.c (MATH_LIBRARY): Provide default. 102918334Speter (main): Always link with the math library if we link with libstdc++. 103018334Speter 103118334Speter * decl.c (start_function): Complain about redefinition of a function 103218334Speter even when the pending_inline version is compiled after the other 103318334Speter version. 103418334Speter 103518334SpeterThu Jun 8 15:44:38 1995 Jason Merrill <jason@phydeaux.cygnus.com> 103618334Speter 103718334Speter * gc.c (build_dynamic_cast): Build up a reference to a parameter of 103818334Speter aggregate type. 103918334Speter 104018334SpeterWed Jun 7 20:00:31 1995 Mike Stump <mrs@cygnus.com> 104118334Speter 104218334Speter * *.[chy]: Change all callers of finish_decl to cp_finish_decl. 104318334Speter * decl.c (finish_decl): New routine to handle call backs from the 104418334Speter mid end (declare_hidden_char_array). 104518334Speter 104618334SpeterWed Jun 7 19:02:50 1995 Jason Merrill <jason@phydeaux.cygnus.com> 104718334Speter 104818334Speter * decl.c (start_function): Handle setting C_C_D here. 104918334Speter (set_C_C_D): Removed. 105018334Speter (struct saved_scope): Remove class_decl. 105118334Speter (push_to_top_level): Don't save current_class_decl. 105218334Speter (pop_from_top_level): Don't restore current_class_decl or C_C_D. 105318334Speter (struct cp_function): Add C_C_D. 105418334Speter (push_cp_function_context): Save C_C_D. 105518334Speter (pop_cp_function_context): Restore C_C_D. 105618334Speter 105718334SpeterWed Jun 7 15:31:57 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 105818334Speter 105918334Speter * init.c (build_vec_delete): Resolve an offset ref before we try to 106018334Speter use it. 106118334Speter 106218334SpeterWed Jun 7 14:19:32 1995 Jason Merrill <jason@phydeaux.cygnus.com> 106318334Speter 106418334Speter * typeck.c (build_modify_expr): If the class lacks a constructor or 106518334Speter assignment operator, return error_mark_node. 106618334Speter (common_type): Use build_cplus_array_type. 106718334Speter 106818334SpeterTue Jun 6 09:41:27 1995 Mike Stump <mrs@cygnus.com> 106918334Speter 107018334Speter * class.c (dont_allow_type_definitions): New variable set when types 107118334Speter cannot be defined. 107218334Speter (finish_struct): Use it. 107318334Speter * cp-tree.h (dont_allow_type_definitions): Define it. 107418334Speter * parse.y (primary, handler_seq): Set it. 107518334Speter 107618334SpeterMon Jun 5 18:49:38 1995 Mike Stump <mrs@cygnus.com> 107718334Speter 107818334Speter * method.c (build_opfncall): Use DECL_CHAIN, not TREE_CHAIN for 107918334Speter results from lookup_fnfields. Always give warning/error on bad 108018334Speter code. 108118334Speter 108218334SpeterMon Jun 5 11:39:37 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 108318334Speter 108418334Speter * init.c (member_init_ok_or_else): Don't allow initialization of 108518334Speter an ancestor's member from within a constructor. 108618334Speter 108718334SpeterMon Jun 5 11:20:34 1995 Gerald Baumgartner (gb@alexander.cs.purdue.edu) 108818334Speter 108918334Speter * sig.c (build_signature_table_constructor): Use DECL_CONTEXT 109018334Speter instead of DECL_CLASS_CONTEXT for calculating the vfield offset so 109118334Speter abstract virtual functions are handled correctly. 109218334Speter 109318334Speter * sig.c (build_signature_table_constructor): Store the correct 109418334Speter delta in signature table entries. It does not yet work for 109518334Speter classes with virtual base classes as implementations of signatures. 109618334Speter (build_signature_method_call): Add the delta to the object_ptr 109718334Speter before generating the function call. 109818334Speter 109918334Speter * call.c (build_method_call): Make instance_ptr the signature 110018334Speter pointer itself instead of dereferencing the optr. 110118334Speter * sig.c (build_signature_method_call): Dereference the optr for the 110218334Speter direct and virtual calls. 110318334Speter 110418334Speter * sig.c (build_signature_table_constructor): Make the tag for 110518334Speter default implementations -1 instead of 2. 110618334Speter (build_signature_method_call): Change the generated conditional 110718334Speter expression correspondingly. 110818334Speter 110918334Speter * sig.c (build_signature_pointer_constructor): Deleted the sorry 111018334Speter message that said we can't handle multiple inheritance for 111118334Speter implementations of signatures 111218334Speter (build_signature_method_call): Use the offset from the sigtable 111318334Speter entry instead of the vptr field from the signature pointer for 111418334Speter building a virtual function call. 111518334Speter 111618334Speter * class.c (build_vfn_ref): Deleted signature specific code, we don't 111718334Speter call this function anymore from build_signature_method_call. 111818334Speter 111918334Speter * cp-tree.h (SIGNATURE_VPTR_NAME): Deleted. We use the right vptr 112018334Speter field in the object now instead of in the signature pointer/ref. 112118334Speter (build_vptr_ref): Deleted extern declaration. 112218334Speter * sig.c (build_vptr_ref): Deleted. 112318334Speter (build_signature_pointer_or_reference_type): Deleted construction of 112418334Speter the vptr field. 112518334Speter (build_signature_pointer_constructor): Deleted initialization of/ 112618334Speter assignment to the vptr field. 112718334Speter 112818334Speter * sig.c (build_signature_table_constructor): Convert the signature 112918334Speter table entry fields to their correct types. 113018334Speter 113118334Speter * sig.c (build_signature_table_constructor): Don't call digest_init 113218334Speter for the fields of a sigtable entry, it's wasted time. 113318334Speter 113418334Speter * sig.c (build_signature_table_constructor): Correctly set the 113518334Speter offset and index fields of a sigtable entry. Build the constructor 113618334Speter the way digest_init does, digest_init can't handle initializing an 113718334Speter anonymous union inside a struct. 113818334Speter (build_signature_method_call): Use the index field instead of the 113918334Speter delta field to get the vtable index. 114018334Speter 114118334Speter * decl.c (init_decl_processing): Fix number of fields for building 114218334Speter sigtable_entry_type. 114318334Speter 114418334Speter * cp-tree.h (tag_identifier, offset_identifier): Added extern decls. 114518334Speter (SIGTABLE_CODE_NAME): Renamed to SIGTABLE_TAG_NAME. 114618334Speter (SIGTABLE_PFN_NAME): Deleted, we'll use VTABLE_PFN_NAME instead. 114718334Speter * decl.c (tag_identifier, offset_identifier): New variables to 114818334Speter hold the identifiers for the sigtable fields tag and offset. 114918334Speter (init_decl_processing): Initialize these variables. 115018334Speter (init_decl_processing): Use these variables to build the 115118334Speter sigtable_entry_type structure. Rename the code and offset fields 115218334Speter to tag and delta, respectively; add offset and index fields. Changed 115318334Speter types of fields from short_integer_type_node to delta_type_node. 115418334Speter * sig.c (build_signature_table_constructor): Rename code and offset 115518334Speter to tag and delta, respectively. 115618334Speter (build_signature_method_call): Ditto. Use above variables. 115718334Speter 115818334SpeterFri Jun 2 11:05:58 1995 Jason Merrill <jason@phydeaux.cygnus.com> 115918334Speter 116018334Speter * decl.c (set_C_C_D): New function. suspend_momentary before 116118334Speter building C_C_D. 116218334Speter (pop_from_top_level): Call it. 116318334Speter (start_function): Ditto. 116418334Speter (pop_cp_function_context): Ditto. 116518334Speter 116618334Speter * class.c, cp-tree.h, decl.c, decl2.c, parse.y: Lose all references 116718334Speter to current_vtable_decl, CLASSTYPE_INST_VAR and CLASSTYPE_VTBL_PTR. 116818334Speter 116918334Speter * decl.c (push_cp_function_context): Save current_class_decl. 117018334Speter (pop_cp_function_context): Restore current_class_decl and set C_C_D. 117118334Speter (pop_from_top_level): Don't use CLASSTYPE_INST_VAR to set C_C_D. 117218334Speter (start_function): Ditto. 117318334Speter 117418334Speter * class.c (popclass): Don't mess with current_class_decl, 117518334Speter current_vtable_decl, or C_C_D. 117618334Speter 117718334SpeterMon May 29 12:45:10 1995 Paul Eggert <eggert@twinsun.com> 117818334Speter 117918334Speter * Make-lang.in (c++.mostlyclean): Remove $(DEMANGLER_PROG). 118018334Speter 118118334SpeterThu Jun 1 17:03:51 1995 Jason Merrill <jason@phydeaux.cygnus.com> 118218334Speter 118318334Speter * decl.c (lookup_name_real): Don't try to look anything up in an 118418334Speter erroneous object. 118518334Speter 118618334SpeterFri Jun 2 10:30:14 1995 Mike Stump <mrs@cygnus.com> 118718334Speter 118818334Speter * method.c (build_overload_int): New routine. Break out 118918334Speter functionality from build_overload_value so we can reuse it. 119018334Speter (build_overload_value): Handle pointer to member functions as value 119118334Speter parameters for templates. 119218334Speter (build_overload_identifier): Since template parameters are shared 119318334Speter among all instantiations, we have to substitute in the real types 119418334Speter in TREE_TYPE (parm). 119518334Speter pt.c (coerce_template_parms): Ditto. 119618334Speter (push_template_decls): Ditto. 119718334Speter (grok_template_type): Deleted as template parameters are shared 119818334Speter among all instantiations. 119918334Speter 120018334SpeterWed May 31 19:10:32 1995 Mike Stump <mrs@cygnus.com> 120118334Speter 120218334Speter * decl.c (grokdeclarator): Always give errors on constant overflow 120318334Speter for array indices. 120418334Speter 120518334SpeterWed May 31 11:39:43 1995 Jason Merrill <jason@phydeaux.cygnus.com> 120618334Speter 120718334Speter * typeck.c (commonparms): Don't abort if simple_cst_equal returns < 0. 120818334Speter (build_c_cast): Don't tack on a NON_LVALUE_EXPR when casting to 120918334Speter reference type. 121018334Speter (build_indirect_ref): Fix check for *&. 121118334Speter 121218334SpeterWed May 24 15:55:18 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 121318334Speter 121418334Speter * decl.c (duplicate_decls): Check simple_cst_equal result against 0. 121518334Speter * decl2.c (finish_anon_union): Likewise. 121618334Speter * method.c (largest_union_member): Likewise. 121718334Speter 121818334SpeterWed May 24 14:41:11 1995 H.J. Lu (hjl@nynexst.com) 121918334Speter 122018334Speter * Make-lang.in (cxxmain.o): Replace single quotes with backslashes. 122118334Speter 122218334SpeterMon May 22 17:38:48 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 122318334Speter 122418334Speter * Make-lang.in (g++, g++-cross, cc1plus, DEMANGLER_PROG): 122518334Speter Use $@ instead of output name so works even if have .exe. 122618334Speter (cxxmain.o): Use cp if ln -s fails. 122718334Speter (c++.install-man): Use $(exeext) in executable names. 122818334Speter (c++.mostlyclean, stage[1-4]): Use $(objext) in object file names. 122918334Speter * Makefile.in (../cc1plus): Use $(exeext) in name of executable. 123018334Speter 123118334SpeterWed May 24 01:39:03 1995 Jason Merrill <jason@deneb.cygnus.com> 123218334Speter 123318334Speter * call.c (build_method_call): parms can be null, duh. 123418334Speter 123518334SpeterTue May 23 01:32:09 1995 Jason Merrill <jason@deneb.cygnus.com> 123618334Speter 123718334Speter * call.c (build_method_call): If convert_arguments failed, just bail. 123818334Speter 123918334SpeterFri May 19 10:31:11 1995 Jason Merrill <jason@phydeaux.cygnus.com> 124018334Speter 124118334Speter * cvt.c (convert_force): Pass LOOKUP_NORMAL to cp_convert. 124218334Speter 124318334Speter * tree.c (copy_to_permanent): Oops. 124418334Speter 124518334SpeterFri May 19 10:01:07 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 124618334Speter 124718334Speter * cp-tree.h (break_out_target_exprs): Add decl. 124818334Speter 124918334SpeterThu May 18 13:02:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> 125018334Speter 125118334Speter * decl.c (start_function): Move *all* interface handling stuff after 125218334Speter the pushdecl. 125318334Speter 125418334Speter * tree.c (mapcar): Renamed from make_deep_copy and generalized. 125518334Speter (perm_manip): Return t if permanent, otherwise 0. 125618334Speter (copy_to_permanent): Use them. 125718334Speter (bot_manip): Helper for break_out_target_exprs. 125818334Speter (break_out_target_exprs): New function. Uses mapcar. 125918334Speter 126018334Speter * typeck.c (convert_arguments): Use it. 126118334Speter 126218334Speter * method.c (hack_identifier): Use convert_from_reference to 126318334Speter dereference a reference. 126418334Speter 126518334SpeterWed May 17 17:54:54 1995 Mike Stump <mrs@cygnus.com> 126618334Speter 126718334Speter * call.c (convert_harshness): Move reference bashing before pointer 126818334Speter to member bashing. 126918334Speter 127018334SpeterWed May 17 16:57:53 1995 Mike Stump <mrs@cygnus.com> 127118334Speter 127218334Speter * cvt.c (convert_to_reference): Only complain, if complaints are 127318334Speter wanted. 127418334Speter * typeck.c (build_function_call_real): Ditto. If LOOKUP_SPECULATIVELY 127518334Speter is set and something won't work, return NULL_TREE. 127618334Speter * cvt.c (cp_convert): Ditto. Pass flags down to build_method_call. 127718334Speter (convert): Pass LOOKUP_NORMAL to cp_convert. 127818334Speter * typeck.c (convert_for_assignment): Ditto. 127918334Speter (convert_force): Pass LOOKUP_COMPLAIN to cp_convert. 128018334Speter (convert_arguments): Get out early if we get an error_mark_node. 128118334Speter (convert_for_initialization): Use cp_convert instead of convert so 128218334Speter that we can pass flags down. 128318334Speter * cp-tree.h (LOOKUP_SPECULATIVELY): Added documentation. 128418334Speter 128518334SpeterWed May 17 01:43:58 1995 Jason Merrill <jason@phydeaux.cygnus.com> 128618334Speter 128718334Speter * typeck2.c (store_init_value): Don't take the MAIN_VARIANT of the 128818334Speter decl type. 128918334Speter 129018334Speter * class.c (finish_struct): Don't complain about a class with no 129118334Speter user-defined constructors but with a member that has no default 129218334Speter constructor, as this is OK for aggregates. 129318334Speter 129418334Speter * expr.c (cplus_expand_expr, NEW_EXPR): If this is an explicit 129518334Speter constructor call, mark slot addressable. 129618334Speter 129718334SpeterTue May 16 18:37:51 1995 Douglas Rupp (drupp@cs.washington.edu) 129818334Speter 129918334Speter * g++.c: Changed WINNT to _WIN32. 130018334Speter 130118334SpeterTue May 16 12:40:16 1995 Jason Merrill <jason@lisa.cygnus.com> 130218334Speter 130318334Speter * lex.c (handle_sysv_pragma): Don't use token_buffer. 130418334Speter 130518334SpeterTue May 16 12:05:26 1995 Mike Stump <mrs@cygnus.com> 130618334Speter 130718334Speter * call.c (resolve_scope_to_name): Add initial semantic support for 130818334Speter namespaces. 130918334Speter * class.c (finish_struct): Ditto. 131018334Speter * cp-tree.h (NAMESPACE_LEVEL): Ditto. 131118334Speter * cvt.c (build_up_reference, convert_to_reference): Ditto. 131218334Speter * decl.c (binding_level::namespace_p, suspend_binding_level): Ditto. 131318334Speter (resume_binding_level, toplevel_bindings_p): Ditto 131418334Speter (namespace_bindings_p, declare_namespace_level): Ditto. 131518334Speter (resume_level, push_namespace, pop_namespace): Ditto. 131618334Speter (pop_everything, pushtag, duplicate_decls, pushdecl): Ditto. 131718334Speter (implicitly_declare, lookup_namespace_name, lookup_name_real): Ditto. 131818334Speter (start_decl, make_temporary_for_reference), Ditto. 131918334Speter (obscure_complex_init, finish_decl, expand_static_init): Ditto. 132018334Speter (grokvardecl, grokdeclarator, parmlist_is_exprlist): Ditto. 132118334Speter (store_parm_decls, hack_incomplete_structures): Ditto. 132218334Speter * decl2.c (get_temp_name, finish_anon_union, current_namespace): Ditto. 132318334Speter (push_namespace, pop_namespace, do_namespace_alias): Ditto. 132418334Speter (do_toplevel_using_decl, do_class_using_decl): Ditto. 132518334Speter * error.c (dump_decl): Ditto. 132618334Speter * init.c (build_member_call, build_offset_ref): Ditto. 132718334Speter * lex.c (identifier_type): Ditto. 132818334Speter * parse.y (lang_extdef, using_decl, extdef, component_decl_1): Ditto. 132918334Speter (nested_name_specifier_1): Ditto. 133018334Speter * spew.c (yylex): Ditto. 133118334Speter * tree.def (NAMESPACE_DECL): Ditto. 133218334Speter 133318334SpeterTue May 16 11:55:35 1995 Jason Merrill <jason@phydeaux.cygnus.com> 133418334Speter 133518334Speter * decl.c (push_overloaded_decl): Return the new decl even if it 133618334Speter can't be pushed. 133718334Speter 133818334SpeterTue May 16 11:00:37 1995 Jason Merrill <jason@lisa.cygnus.com> 133918334Speter 134018334Speter * typeck.c (decay_conversion): Split out from default_conversion. 134118334Speter (default_conversion): Call it. 134218334Speter (build_binary_op): Ditto. 134318334Speter (build_binary_op_nodefault): Use decay_conversion for truth ops. 134418334Speter 134518334SpeterMon May 15 12:47:56 1995 Jason Merrill <jason@phydeaux.cygnus.com> 134618334Speter 134718334Speter * decl.c (warn_extern_redeclared_static): This is a pedwarn. 134818334Speter (duplicate_decls): Always use the old decl's linkage info. Don't 134918334Speter play with linkage of consts. 135018334Speter (pushdecl): Don't play with linkage of consts. 135118334Speter (redeclaration_error_message): Don't complain about an old public 135218334Speter decl and a new non-public decl here. 135318334Speter (grokvardecl): Handle linkage of consts here. 135418334Speter (grokdeclarator): An 'extern inline' is public. Pass constp to 135518334Speter grokvardecl. 135618334Speter (start_function): Wait until after the pushdecl to do some linkage 135718334Speter stuff. 135818334Speter 135918334Speter * decl2.c (import_export_vtable): Make duplicates weak rather than 136018334Speter static if supported. 136118334Speter (import_export_inline): Ditto. 136218334Speter * pt.c (do_pending_expansions): Ditto. 136318334Speter 136418334Speter * class.c (build_vbase_path): flag_assume_nonnull_objects only 136518334Speter affects reference conversion. 136618334Speter 136718334Speter * init.c (emit_base_init): Build up an RTL_EXPR and add it to 136818334Speter rtl_expr_chain. 136918334Speter * decl.c, decl2.c: s/base_init_insns/base_init_expr/. 137018334Speter 137118334SpeterTue May 16 07:06:28 1995 Paul Eggert <eggert@twinsun.com> 137218334Speter 137318334Speter * method.c (numeric_output_need_bar): Renamed from misspelling. 137418334Speter 137518334Speter * typeck.c (build_ptrmemfunc): Fix misspellings in messages. 137618334Speter 137718334SpeterSun May 14 10:26:22 1995 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 137818334Speter 137918334Speter * lang-options.h, lang-specs.h: New files. 138018334Speter 138118334SpeterThu May 11 00:31:48 1995 Jason Merrill <jason@phydeaux.cygnus.com> 138218334Speter 138318334Speter * typeck.c (default_conversion): Don't check for BLKmode before 138418334Speter pulling out the decl_constant_value. 138518334Speter 138618334Speter * decl.c (start_function): Clear named_labels and shadowed_labels. 138718334Speter 138818334Speter * typeck.c (build_function_call_real): Also synthesize methods here. 138918334Speter 139018334SpeterWed May 10 00:55:59 1995 Jason Merrill <jason@phydeaux.cygnus.com> 139118334Speter 139218334Speter * decl2.c (finish_file): Synthesize exported methods before the 139318334Speter reconsider loop. 139418334Speter 139518334Speter * parse.y: Move declaration of flag_new_for_scope to file scope. 139618334Speter 139718334SpeterTue May 9 19:10:33 1995 Mike Stump <mrs@cygnus.com> 139818334Speter 139918334Speter * decl2.c: Add flag_new_for_scope for new -ffor-scope flag. 140018334Speter * parse.y (FOR): Conditionalize the pushing and poping of scope for 140118334Speter the for-init-statement upon the new flag_new_for_scope. 140218334Speter * parse.y (try_block): Simplify and use compstmt. 140318334Speter 140418334SpeterMon May 8 12:41:52 1995 Jason Merrill <jason@phydeaux.cygnus.com> 140518334Speter 140618334Speter * decl.c (define_function): Mark function decl artificial. 140718334Speter 140818334SpeterSun May 7 00:51:28 1995 Jason Merrill <jason@phydeaux.cygnus.com> 140918334Speter 141018334Speter * parse.y (simple_stmt, FOR): Put back push/pop for condition scope. 141118334Speter 141218334Speter * decl2.c (grokclassfn): DECLs don't have cv-qualified types. 141318334Speter * tree.c (build_cplus_method_type): Ditto. 141418334Speter 141518334Speter * cp-tree.h (SET_DECL_ARTIFICIAL): Just set DECL_ARTIFICIAL to 1. 141618334Speter 141718334Speter * typeck.c (build_function_call_real): If convert_arguments failed, 141818334Speter just bail. 141918334Speter (convert_arguments): If one of the arguments is error_mark_node, 142018334Speter just bail. 142118334Speter 142218334SpeterSat May 6 02:39:41 1995 Jason Merrill <jason@phydeaux.cygnus.com> 142318334Speter 142418334Speter * decl.c (duplicate_decls): Don't check DECL_NOT_REALLY_EXTERN for 142518334Speter decls that don't include it. 142618334Speter 142718334SpeterFri May 5 14:23:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> 142818334Speter 142918334Speter * decl.c (duplicate_decls): Decls that have DECL_INTERFACE_KNOWN or 143018334Speter DECL_NOT_REALLY_EXTERN set aren't extern decls. 143118334Speter 143218334Speter * typeck.c (build_indirect_ref): Don't call default_conversion for a 143318334Speter parameter of reference_type. 143418334Speter * cvt.c (convert_from_reference): Just use build_indirect_ref. 143518334Speter 143618334Speter * pt.c (do_type_instantiation): Only instantiate member functions 143718334Speter that actually come from templates. 143818334Speter 143918334SpeterFri May 5 09:46:05 1995 Mike Stump <mrs@cygnus.com> 144018334Speter 144118334Speter * parse.y: Generalized cleanup of poplevels, and compound statements 144218334Speter and compound statements in try blocks. Rewritten `for' rule so that 144318334Speter the scope of variables declared in the for clause is shortened to 144418334Speter span just to the end of the statement, instead of the whole 144518334Speter containing block. 144618334Speter 144718334SpeterFri May 5 00:37:14 1995 Jason Merrill <jason@phydeaux.cygnus.com> 144818334Speter 144918334Speter * call.c (convert_harshness): Handle pointers to members better. 145018334Speter 145118334SpeterThu May 4 16:00:26 1995 Jason Merrill <jason@phydeaux.cygnus.com> 145218334Speter 145318334Speter * decl2.c (delete_sanity): Do access control here. 145418334Speter * init.c (build_delete): Instead of here. 145518334Speter 145618334Speter * Make-lang.in: Build c++filt. 145718334Speter 145818334SpeterWed May 3 02:59:53 1995 Jason Merrill <jason@phydeaux.cygnus.com> 145918334Speter 146018334Speter * decl2.c (cplus_decl_attributes): If we just modified a TYPE_DECL, 146118334Speter update our IDENTIFIER_TYPE_VALUE. 146218334Speter 146318334SpeterFri Apr 28 07:58:41 1995 Jason Merrill <jason@phydeaux.cygnus.com> 146418334Speter 146518334Speter * lex.c (cons_up_default_function): Fix linkage of #pragma 146618334Speter implemented functions. 146718334Speter 146818334SpeterThu Apr 27 16:56:24 1995 Jason Merrill <jason@phydeaux.cygnus.com> 146918334Speter 147018334Speter * method.c (build_overload_name): Simplify and fix repeated type 147118334Speter folding. 147218334Speter 147318334Speter * decl.c (grokdeclarator): Prohibit pointers to void or reference 147418334Speter members. 147518334Speter 147618334SpeterThu Apr 27 09:49:07 1995 Mike Stump <mrs@cygnus.com> 147718334Speter 147818334Speter * typeck2.c (process_init_constructor): Make sure initializers are 147918334Speter fully digested. 148018334Speter 148118334SpeterThu Apr 27 01:11:55 1995 Jason Merrill <jason@python.cygnus.com> 148218334Speter 148318334Speter * lex.c (cons_up_default_function): Always defer synthesis. 148418334Speter 148518334SpeterThu Apr 27 00:20:37 1995 Jason Merrill <jason@phydeaux.cygnus.com> 148618334Speter 148718334Speter * decl2.c (mark_inline_for_output): Don't play with pending_inline 148818334Speter stuff. 148918334Speter 149018334SpeterWed Apr 26 17:48:24 1995 Jason Merrill <jason@phydeaux.cygnus.com> 149118334Speter 149218334Speter * call.c (user_harshness): New function; like build_type_conversion, 149318334Speter but doesn't actually build anything. 149418334Speter (compute_conversion_costs): Use it instead of build_type_conversion. 149518334Speter 149618334SpeterWed Apr 26 17:11:25 1995 Jason Merrill <jason@deneb.cygnus.com> 149718334Speter 149818334Speter * typeck.c (build_function_call_real): Improve error message for 149918334Speter calling a non-function. 150018334Speter 150118334Speter * method.c (hack_identifier): Lose check for calling a data member. 150218334Speter 150318334SpeterWed Apr 26 16:59:13 1995 Mike Stump <mrs@cygnus.com> 150418334Speter 150518334Speter * typeck2.c (build_functional_cast): Remove very old cruft. 150618334Speter Seems like good code is generated without it. 150718334Speter 150818334SpeterWed Apr 26 00:47:16 1995 Jason Merrill <jason@phydeaux.cygnus.com> 150918334Speter 151018334Speter * method.c (do_build_assign_ref): Fix handling of anonymous unions. 151118334Speter (do_build_copy_constructor): Ditto. 151218334Speter 151318334Speter * parse.y (simple_stmt, SWITCH): Call {push,pop}_switch. 151418334Speter 151518334Speter * decl.c (push_switch): New function. 151618334Speter (pop_switch): Ditto. 151718334Speter (define_case_label): Check for jumping over initialization. 151818334Speter 151918334Speter * call.c (build_method_call): Check for an inline function being 152018334Speter called before its definition has been seen. 152118334Speter * typeck.c (build_function_call_real): Ditto. 152218334Speter 152318334Speter * decl.c (duplicate_decls): Check for a function being redeclared 152418334Speter inline after its address has been taken. 152518334Speter 152618334Speter * typeck.c (build_conditional_expr): Handle related class lvalues. 152718334Speter 152818334SpeterTue Apr 25 13:20:45 1995 Jason Merrill <jason@phydeaux.cygnus.com> 152918334Speter 153018334Speter * pt.c (do_pending_expansions): Don't expand unused templates. 153118334Speter 153218334Speter * parse.y (component_decl): Accept a lone semicolon. 153318334Speter 153418334SpeterTue Apr 25 00:25:56 1995 Jason Merrill <jason@rtl.cygnus.com> 153518334Speter 153618334Speter * call.c (build_method_call): Don't allow an RTL_EXPR to serve as the 153718334Speter object parameter anymore. 153818334Speter 153918334Speter * expr.c (cplus_expand_expr): Don't create RTL_EXPRs with no insns. 154018334Speter 154118334SpeterMon Apr 24 12:35:48 1995 Jason Merrill <jason@phydeaux.cygnus.com> 154218334Speter 154318334Speter * parse.y (simple_stmt, decl case): Clear prefix_attributes. 154418334Speter (lang_extdef): Ditto. 154518334Speter 154618334Speter * parse.y (maybe_parmlist): New rule for use in declarators where 154718334Speter this could either be a list of expressions or parameters. Calls 154818334Speter suspend_momentary before deciding which. 154918334Speter (direct_after_type_declarator): Use it. 155018334Speter (complex_direct_notype_declarator): Use it. 155118334Speter 155218334Speter * pt.c (tsubst): Propagate attributes const and noreturn. 155318334Speter 155418334Speter * typeck.c (build_modify_expr): If warn_synth, call build_opfncall 155518334Speter before doing the default thing. 155618334Speter 155718334SpeterThu Apr 27 21:49:36 1995 Doug Evans <dje@cygnus.com> 155818334Speter 155918334Speter * typeck.c (common_type): Call lookup_attribute instead of 156018334Speter value_member. 156118334Speter 156218334SpeterTue Apr 25 18:07:43 1995 Richard Kenner (kenner@vlsi1.ultra.nyu.edu) 156318334Speter 156418334Speter * Make-lang.in: Change "realclean" to "maintainer-clean". 156518334Speter 156618334SpeterSun Apr 23 12:32:38 1995 Mike Stump <mrs@cygnus.com> 156718334Speter 156818334Speter * decl2.c (finish_file): Fix broken linked list handling. 156918334Speter 157018334SpeterFri Apr 21 18:08:43 1995 Jason Merrill <jason@phydeaux.cygnus.com> 157118334Speter 157218334Speter * class.c (finish_base_struct): Don't set TYPE_HAS_COMPLEX_*_REF 157318334Speter as often. 157418334Speter (finish_struct): Ditto. 157518334Speter 157618334Speter * various: Use TYPE_HAS_TRIVIAL_* instead of TYPE_HAS_COMPLEX_*. 157718334Speter 157818334Speter * cp-tree.h (TYPE_HAS_TRIVIAL_INIT_REF): New macro. 157918334Speter (TYPE_HAS_TRIVIAL_ASSIGN_REF): New macro. 158018334Speter 158118334SpeterFri Apr 21 15:52:22 1995 Jason Merrill <jason@python.cygnus.com> 158218334Speter 158318334Speter * typeck.c (c_expand_return): Only expand a returned TARGET_EXPR if 158418334Speter it is of the same type as the return value. 158518334Speter 158618334SpeterFri Apr 21 03:01:46 1995 Jason Merrill <jason@phydeaux.cygnus.com> 158718334Speter 158818334Speter * decl2.c (finish_file): Reconsider if synthesizing a method wrote 158918334Speter out its assembly. 159018334Speter 159118334Speter * typeck.c (convert_for_initialization): Don't call a trivial copy 159218334Speter constructor. 159318334Speter 159418334Speter * typeck2.c (store_init_value): Only abort if the type has a 159518334Speter non-trivial copy constructor. 159618334Speter 159718334Speter * typeck.c (c_expand_return): If we're returning in a register and 159818334Speter the return value is a TARGET_EXPR, expand it. Only do 159918334Speter expand_aggr_init if we're returning in memory. 160018334Speter (expand_target_expr): Function to expand a TARGET_EXPR. 160118334Speter (build_modify_expr): Use it. 160218334Speter 160318334Speter * tree.c (build_cplus_new): Layout the slot. 160418334Speter 160518334Speter * expr.c (cplus_expand_expr): Use expand_call to expand the call 160618334Speter under a NEW_EXPR, so the target is not discarded. 160718334Speter 160818334SpeterThu Apr 20 14:59:31 1995 Mike Stump <mrs@cygnus.com> 160918334Speter 161018334Speter * gc.c (build_dynamic_cast): Tighten error checking. 161118334Speter 161218334SpeterThu Apr 20 11:23:54 1995 Jason Merrill <jason@phydeaux.cygnus.com> 161318334Speter 161418334Speter * expr.c (cplus_expand_expr): Only abort if the returned target is 161518334Speter different from what we expected if the type has a non-trivial copy 161618334Speter constructor. 161718334Speter 161818334Speter * decl2.c (cplus_decl_attributes): Attributes applied to a template 161918334Speter really apply to the template's result. 162018334Speter 162118334Speter * tree.c (lvalue_p): Check IS_AGGR_TYPE instead of TREE_ADDRESSABLE 162218334Speter to decide whether to consider a CALL_EXPR an lvalue. 162318334Speter 162418334Speter * class.c (finish_struct_bits): Only set TREE_ADDRESSABLE if the 162518334Speter type has a non-trivial copy constructor. 162618334Speter 162718334Speter * decl.c (start_function): If interface_known, unset 162818334Speter DECL_NOT_REALLY_EXTERN on the function. 162918334Speter 163018334SpeterWed Apr 19 16:53:13 1995 Jason Merrill <jason@phydeaux.cygnus.com> 163118334Speter 163218334Speter * pt.c (do_function_instantiation): Handle explicit instantiation of 163318334Speter member functions. 163418334Speter (do_type_instantiation): Handle 'inline template class foo<int>', 163518334Speter meaning just spit out the vtable. 163618334Speter 163718334Speter * lex.c (cons_up_default_function): Set DECL_NOT_REALLY_EXTERN on 163818334Speter the consed functions. 163918334Speter 164018334Speter * decl2.c (import_export_inline): Set DECL_INTERFACE_KNOWN. 164118334Speter 164218334SpeterWed Apr 19 16:28:17 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 164318334Speter 164418334Speter * call.c, class.c, decl2.c, gc.c, init.c, parse.y, pt.c, search.c, 164518334Speter typeck.c: Include output.h. 164618334Speter 164718334SpeterWed Apr 19 14:57:21 1995 Gerald Baumgartner (gb@alexander.cs.purdue.edu) 164818334Speter 164918334Speter * call.c (build_method_call): Allow a signature member functions to 165018334Speter be called from a default implementation. 165118334Speter 165218334SpeterWed Apr 19 10:21:17 1995 Jason Merrill <jason@phydeaux.cygnus.com> 165318334Speter 165418334Speter * repo.c (finish_repo): Remember what directory we are in. 165518334Speter 165618334Speter * search.c (expand_upcast_fixups): Don't mess with abort_fndecl. 165718334Speter 165818334Speter * repo.c: Use obstacks instead of fixed-size buffers. Don't spit 165918334Speter out the second copy of the symbol name. Don't remember COLLECT_GCC. 166018334Speter 166118334SpeterWed Apr 19 02:32:40 1995 Mike Stump <mrs@cygnus.com> 166218334Speter 166318334Speter * search.c (virtual_context): New function to get the virtual 166418334Speter context of a function. 166518334Speter (expand_upcast_fixups): New function to generate runtime vtables. 166618334Speter (fixup_virtual_upcast_offsets): Ditto. 166718334Speter (expand_indirect_vtbls_init): Use fixup_virtual_upcast_offsets to 166818334Speter ensure that the this offsets for upcasts from virtual bases into 166918334Speter other virtual bases or non-virtual bases are correct at construction 167018334Speter time and destruction time. 167118334Speter * class.c (fixup_vtable_deltas): Modify to fixup all offsets in all 167218334Speter vtables in all virtual bases, instead of just one vtable in each 167318334Speter virtual base. 167418334Speter (fixup_vtable_deltas1): Ditto. 167518334Speter 167618334SpeterTue Apr 18 03:57:35 1995 Michael Meissner (meissner@cygnus.com) 167718334Speter 167818334Speter * Makefile.in (lex.o): Add dependency on c-pragma.h. 167918334Speter 168018334Speter * lex.c (handle_sysv_pragma): Use NULL_PTR and NULL_TREE as 168118334Speter appropriate, instead of 0. 168218334Speter 168318334SpeterMon Apr 17 12:28:42 1995 Jason Merrill <jason@phydeaux.cygnus.com> 168418334Speter 168518334Speter * decl.c (pushdecl): Use decls_match, not duplicate_decls, for 168618334Speter comparing local and global decls. 168718334Speter 168818334SpeterFri Apr 14 01:46:52 1995 Jason Merrill <jason@phydeaux.cygnus.com> 168918334Speter 169018334Speter * typeck.c (convert_arguments): Only prohibit passing to ... of 169118334Speter types with non-trivial copy constructors. 169218334Speter 169318334Speter * repo.c (repo_template_used): Don't try to mess with no id. 169418334Speter 169518334SpeterFri Apr 14 23:32:50 1995 Per Bothner <bothner@rtl.cygnus.com> 169618334Speter 169718334Speter * decl.c (duplicate_decls): Use cp_warning_at for redundant-decls. 169818334Speter 169918334SpeterThu Apr 13 15:37:42 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 170018334Speter 170118334Speter * cp-tree.h (current_tinst_level): Delete declaration, since it's 170218334Speter static inside pt.c. 170318334Speter 170418334Speter * typeck.c (build_modify_expr): Catch incompatible array assignment. 170518334Speter 170618334Speter * parse.y (attribute_list, attrib): Rewrite actions to feed the 170718334Speter right stuff to decl_attributes. 170818334Speter 170918334SpeterThu Apr 13 11:24:10 1995 Jason Merrill <jason@phydeaux.cygnus.com> 171018334Speter 171118334Speter * search.c (dfs_debug_mark): Check for magic virtual like 171218334Speter import_export_vtable. 171318334Speter 171418334Speter * typeck.c (build_binary_op_nodefault): Don't call cp_pedwarn with 171518334Speter four args. 171618334Speter 171718334SpeterWed Apr 12 12:02:57 1995 Jason Merrill <jason@deneb.cygnus.com> 171818334Speter 171918334Speter * decl2.c (finish_file): Move prevtable pass before needs_messing_up 172018334Speter decision. 172118334Speter 172218334SpeterTue Apr 11 11:20:27 1995 Jason Merrill <jason@phydeaux.cygnus.com> 172318334Speter 172418334Speter * decl.c (finish_decl): If we're writing out a static data member of 172518334Speter a class, we want the debug info for that class. 172618334Speter 172718334Speter * gc.c (build_t_desc): Check linkage of a class properly. 172818334Speter 172918334Speter * class.c (finish_struct): Set the 'headof' offset for the main 173018334Speter vtable properly. 173118334Speter (prepare_fresh_vtable): Fix typeinfo pointer here. 173218334Speter (modify_one_vtable): Instead of here. 173318334Speter 173418334SpeterMon Apr 10 12:15:59 1995 Jason Merrill <jason@phydeaux.cygnus.com> 173518334Speter 173618334Speter * repo.c (repo_get_id): New function to return the interesting 173718334Speter identifier for a repo entity. 173818334Speter (repo_template_used): Use it. 173918334Speter (repo_template_instantiated): Mark the id as chosen. 174018334Speter (init_repo): Record whether or not the id was chosen. 174118334Speter (finish_repo): Note if an id was newly chosen. 174218334Speter 174318334Speter * pt.c (do_function_instantiation): Call repo_template_instantiated. 174418334Speter (do_type_instantiation): Ditto. Don't diagnose multiple 174518334Speter instantiation. 174618334Speter 174718334Speter * decl2.c (finish_file): Use DECL_NOT_REALLY_EXTERN when deciding 174818334Speter whether or not to synthesize a method. 174918334Speter 175018334Speter Undo these changes: 175118334Speter * class.c (finish_vtbls): build more vtables if flag_rtti is on. 175218334Speter * class.c (modify_all_direct_vtables): ditto. 175318334Speter * init.c (expand_direct_vtbls_init): expand more vtables if 175418334Speter flag_rtti is on. 175518334Speter 175618334SpeterSat Apr 8 17:45:41 1995 Mike Stump <mrs@cygnus.com> 175718334Speter 175818334Speter * gc.c (build_headof): Use ptrdiff_type_node instead of 175918334Speter integer_type_node on pointer arithmetic. 176018334Speter 176118334SpeterSat Apr 8 11:57:04 1995 Jason Merrill <jason@phydeaux.cygnus.com> 176218334Speter 176318334Speter * typeck.c (build_modify_expr): Undo previous change. 176418334Speter 176518334SpeterThu Apr 6 01:23:50 1995 Jason Merrill <jason@phydeaux.cygnus.com> 176618334Speter 176718334Speter * Makefile.in (compiler): Remove ../cc1plus before rebuilding it. 176818334Speter 176918334Speter * repo.c (get_base_filename): Put the .rpo file in the directory 177018334Speter with the object file, not the source. 177118334Speter 177218334Speter * typeck.c (build_conditional_expr): Handle pmf's better. 177318334Speter 177418334Speter * repo.c (finish_repo): Also use ASM_OUTPUT_LABELREF to print out 177518334Speter the name of the symbol. 177618334Speter 177718334SpeterWed Apr 5 15:24:12 1995 Jason Merrill <jason@phydeaux.cygnus.com> 177818334Speter 177918334Speter * repo.c (open_repo_file): Make repo filename DOS-compliant. 178018334Speter (*): Also write a new repo file if some previously-used 178118334Speter templates are no longer used. Only remember the identifier. 178218334Speter 178318334Speter * lex.c (cons_up_default_function): If this function belongs to a 178418334Speter template class, call repo_template_used for it. 178518334Speter 178618334Speter * repo.c (repo_template_used): Using a class means using its vtable, 178718334Speter if any. 178818334Speter (finish_repo): Ditto. 178918334Speter 179018334Speter * typeck.c (build_modify_expr): Only wrap TARGET_EXPRs in RTL_EXPRs 179118334Speter if the type has a complex copy constructor. 179218334Speter 179318334Speter * decl2.c (lang_decode_option): -frepo implies 179418334Speter -fno-implicit-templates. 179518334Speter 179618334Speter * decl.c (start_function): Clear current_{base,member}_init_list. 179718334Speter 179818334Speter * lex.c (init_lex): Also unset *_eq if ! flag_operator_names. 179918334Speter 180018334SpeterTue Apr 4 16:11:08 1995 Jason Merrill <jason@phydeaux.cygnus.com> 180118334Speter 180218334Speter * decl.c (struct cp_function): Add {base,member}_init_list. 180318334Speter (push_cp_function_context): Save current_{base,member}_init_list. 180418334Speter (pop_cp_function_context): Restore them. 180518334Speter 180618334SpeterMon Apr 3 16:55:08 1995 Jason Merrill <jason@phydeaux.cygnus.com> 180718334Speter 180818334Speter * repo.c (get_base_filename): Take filename parm, fix logic bug. 180918334Speter 181018334Speter * typeck.c (build_compound_expr): Do not warn about a compound expr 181118334Speter in which the first expression has no side effects. 181218334Speter (build_x_compound_expr): Warn here instead. 181318334Speter (build_conditional_expr): Don't warn about a conditional expression 181418334Speter between an enum and the type it promotes to. 181518334Speter 181618334Speter * init.c (build_new): Handle initialization of arrays of builtins 181718334Speter properly. 181818334Speter 181918334SpeterMon Apr 3 15:08:04 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 182018334Speter 182118334Speter * repo.c: Include config.h to get definitions of bcopy and rindex 182218334Speter on systems that don't have them (e.g., SVR4). 182318334Speter 182418334SpeterMon Apr 3 14:41:55 1995 Mike Stump <mrs@cygnus.com> 182518334Speter 182618334Speter * decl2.c (finish_table): Pass NULL_TREE instead of init to 182718334Speter finish_decl so that it won't try and do error checking on the 182818334Speter initializer. 182918334Speter 183018334SpeterMon Apr 3 10:45:50 1995 Jason Merrill <jason@phydeaux.cygnus.com> 183118334Speter 183218334Speter * repo.c (get_base_filename): Analyze COLLECT_GCC_OPTIONS to 183318334Speter determine whether this compile used -c -o. 183418334Speter (open_repo_file): Use get_base_filename. Remove the extension. 183518334Speter (finish_repo): Spit out the values of main_input_filename, 183618334Speter COLLECT_GCC and COLLECT_GCC_OPTIONS. 183718334Speter 183818334Speter * parse.y (structsp): Add TYPENAME_KEYWORD complex_type_name. 183918334Speter 184018334SpeterSun Apr 2 23:43:51 1995 Jason Merrill <jason@phydeaux.cygnus.com> 184118334Speter 184218334Speter * search.c (compute_access): Don't try to do access control on 184318334Speter nested types. 184418334Speter 184518334SpeterFri Mar 31 10:14:23 1995 Jason Merrill <jason@phydeaux.cygnus.com> 184618334Speter 184718334Speter * repo.c: New file to handle things repo. 184818334Speter 184918334Speter * pt.c (instantiate_template): Call repo_template_used if the 185018334Speter definition is accessible. 185118334Speter (mark_function_instantiated): Split out from 185218334Speter do_function_instantiation. 185318334Speter (mark_class_instantiated): Split out from do_type_instantiation. 185418334Speter 185518334Speter * parse.y (template_instantiate_once): Call repo_template_used. 185618334Speter 185718334Speter * lex.c (lang_init): Call init_repo. 185818334Speter 185918334Speter * decl2.c: Handle flag_use_repository. 186018334Speter (finish_file): Call finish_repo. 186118334Speter 186218334Speter * decl.c (start_method): Call repo_template_used if this is a 186318334Speter template method. 186418334Speter 186518334Speter * Makefile.in (CXX_OBJS): Add repo.o. 186618334Speter (repo.o): Add dependencies. 186718334Speter 186818334Speter * Make-lang.in (CXX_SRCS): Add repo.c. 186918334Speter 187018334Speter * decl.c (start_function): If DECL_INTERFACE_KNOWN and 187118334Speter DECL_NOT_REALLY_EXTERN are both set, unset DECL_EXTERNAL. 187218334Speter 187318334Speter * typeck.c (build_binary_op_nodefault): Identify the invalid operand 187418334Speter types used. 187518334Speter 187618334Speter * decl.c (duplicate_decls): Propagate DECL_NOT_REALLY_EXTERN. 187718334Speter 187818334SpeterThu Mar 30 17:54:42 1995 Jason Merrill <jason@phydeaux.cygnus.com> 187918334Speter 188018334Speter * typeck.c (build_binary_op_nodefault): Tidy up use of build_type 188118334Speter and result_type. When checking for comparison between signed 188218334Speter and unsigned, use result_type rather than the (possibly shortened) 188318334Speter type of op0. Also, don't warn about equality comparison of a 188418334Speter signed operand to an unsigned constant that fits in the signed 188518334Speter type. 188618334Speter 188718334Speter * method.c (do_build_copy_constructor): Reverse 188818334Speter current_base_init_list after we've built it up. 188918334Speter 189018334SpeterThu Mar 30 14:35:18 1995 Mike Stump <mrs@cygnus.com> 189118334Speter 189218334Speter * except.c (build_throw): Never warn about the value of throw not 189318334Speter being used. 189418334Speter 189518334SpeterThu Mar 30 13:16:54 1995 Mike Stump <mrs@cygnus.com> 189618334Speter 189718334Speter * except.c (expand_start_catch_block): Check for bad catch parameter 189818334Speter declarations. 189918334Speter 190018334SpeterThu Mar 30 13:06:11 1995 Jason Merrill <jason@phydeaux.cygnus.com> 190118334Speter 190218334Speter * decl.c (finish_function): Only set DECL_NOT_REALLY_EXTERN if 190318334Speter DECL_EXTERNAL is not already set. 190418334Speter 190518334SpeterThu Mar 30 11:26:24 1995 Mike Stump <mrs@cygnus.com> 190618334Speter 190718334Speter * method.c (emit_thunk): Let poplevel know that the last level is 190818334Speter for a function so it can create a BLOCK_NODE and set DECL_INITIAL. 190918334Speter 191018334SpeterThu Mar 30 11:15:06 1995 Jason Merrill <jason@phydeaux.cygnus.com> 191118334Speter 191218334Speter * decl2.c (import_export_inline): Don't set DECL_NOT_REALLY_EXTERN 191318334Speter here. 191418334Speter 191518334Speter * decl.c (grokdeclarator): OK, don't abort if we see a decl with 191618334Speter METHOD_TYPE. 191718334Speter (finish_function): Set DECL_EXTERNAL and DECL_NOT_REALLY_EXTERN on 191818334Speter all deferred inlines. 191918334Speter 192018334SpeterWed Mar 29 19:35:02 1995 Jason Merrill <jason@phydeaux.cygnus.com> 192118334Speter 192218334Speter * cp-tree.h (DECL_THIS_INLINE): New macro. 192318334Speter (DECL_NOT_REALLY_EXTERN): New macro. 192418334Speter (DECL_THIS_STATIC): New macro. 192518334Speter 192618334Speter * decl.c: Lose all references to current_extern_inline. Break 192718334Speter inline semantics into DECL_INLINE for actual inlining and 192818334Speter DECL_THIS_INLINE for the linkage wierdness. Use DECL_THIS_STATIC. 192918334Speter * decl2.c: Use DECL_NOT_REALLY_EXTERN to indicate that we want to 193018334Speter emit an inline here. Associated changes. 193118334Speter * lex.c: Ditto. 193218334Speter * pt.c: Ditto. 193318334Speter * typeck.c: Ditto. 193418334Speter 193518334Speter * call.c (build_method_call): Don't bother trying to handle inlines 193618334Speter specially. 193718334Speter * cvt.c (convert_to_aggr): Ditto. 193818334Speter 193918334Speter * pt.c (do_function_instantiation): Handle instantiation of 194018334Speter public inlines, too. 194118334Speter 194218334SpeterWed Mar 29 16:04:25 1995 Mike Stump <mrs@cygnus.com> 194318334Speter 194418334Speter * except.c (init_exception_processing): Change the interface for 194518334Speter __throw_type_match and add decl for new rtti matching routine 194618334Speter __throw_type_match_rtti. 194718334Speter (build_eh_type): New routine to build a run time descriptor for the 194818334Speter expression given. 194918334Speter (expand_start_catch_block): Update to use new calling convention for 195018334Speter the matcher. 195118334Speter (expand_throw): Update to use build_eh_type. 195218334Speter 195318334SpeterMon Mar 27 07:14:33 1995 Warner Losh <imp@village.org> 195418334Speter 195518334Speter * g++.c: Removed __NetBSD__ from conditional. 195618334Speter Declare strerror if HAVE_STRERROR is defined; otherwise 195718334Speter declare sys_errlist and sys_nerr. 195818334Speter (my_strerror): New function. 195918334Speter 196018334SpeterTue Mar 28 14:16:35 1995 Jason Merrill <jason@phydeaux.cygnus.com> 196118334Speter 196218334Speter * search.c (get_binfo): Don't try to be so clever. 196318334Speter 196418334Speter * tree.c (copy_to_permanent): Also suspend_momentary(). 196518334Speter 196618334Speter * cvt.c (cp_convert_to_pointer): Hand off to convert_fn_pointer even 196718334Speter if the types are the same. 196818334Speter 196918334Speter * decl.c (start_function): Handle extern inlines more like C++ says 197018334Speter we should. 197118334Speter 197218334Speter * init.c (build_member_call): Hand constructor calls off to 197318334Speter build_functional_cast. 197418334Speter 197518334Speter * typeck2.c (build_functional_cast): Use DECL_NESTED_TYPENAME to get 197618334Speter the name of the type. 197718334Speter 197818334SpeterTue Mar 28 13:13:56 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 197918334Speter 198018334Speter * decl.c (grokdeclarator): Check for the decl returned by 198118334Speter grokfndecl to be null before using build_decl_attribute_variant. 198218334Speter 198318334SpeterMon Mar 27 18:04:41 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 198418334Speter 198518334Speter * init.c (build_new): Use build_pointer_type instead of 198618334Speter TYPE_POINTER_TO. 198718334Speter 198818334SpeterFri Mar 24 12:11:24 1995 Jason Merrill <jason@phydeaux.cygnus.com> 198918334Speter 199018334Speter * typeck.c (build_conditional_expr): Handle pmfs. 199118334Speter (convert_for_assignment): Fix pmf support. 199218334Speter 199318334Speter * cvt.c (convert_fn_ptr): Support !flag_vtable_thunks. 199418334Speter (cp_convert_to_pointer): Handle pmfs. 199518334Speter (cp_convert): Pass pmfs to cp_convert_to_pointer. 199618334Speter 199718334Speter * typeck.c (common_type): Handle inheritance for pmfs. 199818334Speter 199918334Speter * typeck2.c (build_m_component_ref): Do access control. 200018334Speter 200118334Speter * typeck.c (comp_target_types): Check for conversion to void * 200218334Speter before checking trickier conversions. 200318334Speter 200418334Speter * decl.c (duplicate_decls): Propagate DECL_ABSTRACT_VIRTUAL_P. 200518334Speter 200618334Speter * pt.c (push_tinst_level): Complain if template instantiation depth 200718334Speter is greater than max_tinst_depth. 200818334Speter 200918334Speter * typeck.c (common_type): Assume that we can call common_type to 201018334Speter unify the target type of a pointer. 201118334Speter 201218334SpeterThu Mar 23 00:48:44 1995 Jason Merrill <jason@phydeaux.cygnus.com> 201318334Speter 201418334Speter * decl2.c (finish_file): Don't synthesize methods at 201518334Speter finish_vtable_prevardecl time. Do synthesize methods that are not 201618334Speter used, but are public and not external. 201718334Speter 201818334Speter * cvt.c (build_type_conversion): Only give an error if for_sure. 201918334Speter 202018334Speter * typeck.c (comp_target_types): Only support pointer conversions if 202118334Speter nptrs > 0. 202218334Speter 202318334SpeterWed Mar 22 19:30:15 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 202418334Speter 202518334Speter * init.c (build_new): Catch use of an initializer list where it 202618334Speter shouldn't be. 202718334Speter 202818334SpeterWed Mar 22 16:21:07 1995 Jason Merrill <jason@phydeaux.cygnus.com> 202918334Speter 203018334Speter * init.c (build_new): Wrap alloc_expr in an RTL_EXPR if nelts is 203118334Speter non-constant. 203218334Speter 203318334Speter * decl2.c: temp_name_counter is now public. 203418334Speter 203518334Speter * decl.c (struct cp_function): Add temp_name_counter field. 203618334Speter (push_cp_function_context): Save it. 203718334Speter (pop_cp_function_context): Restore it. 203818334Speter 203918334Speter * typeck.c (common_type): Handle unifying function types, and unify 204018334Speter unmatched things to void* with a compiler_error, rather than 204118334Speter silently like before. 204218334Speter 204318334SpeterWed Mar 22 15:10:34 1995 Mike Stump <mrs@cygnus.com> 204418334Speter 204518334Speter * decl2.c (finish_prevtable_vardecl, finish_vtable_vardecl): Revert 204618334Speter Brendan's last change and fix latent problem that causes TD entries 204718334Speter to not come out when the things that need them has yet to be 204818334Speter expanded. 204918334Speter 205018334SpeterWed Mar 22 15:12:00 1995 Jason Merrill <jason@phydeaux.cygnus.com> 205118334Speter 205218334Speter * typeck.c (build_binary_op_nodefault, comparison ops): Update type0 205318334Speter and type1, since we might have changed op0 or op1. 205418334Speter 205518334SpeterWed Mar 22 13:33:45 1995 Jason Merrill <jason@python.cygnus.com> 205618334Speter 205718334Speter * typeck.c (common_type): Don't mess up templates. 205818334Speter 205918334SpeterWed Mar 22 04:56:00 1995 Jason Merrill <jason@phydeaux.cygnus.com> 206018334Speter 206118334Speter * typeck.c (common_type): Handle ptms properly. Also handle 206218334Speter T* -> void*. 206318334Speter (build_binary_op_nodefault): New variable build_type controls what 206418334Speter type is given to the expression when it is created. Set this to 206518334Speter boolean_type_node for comparison ops instead of using result_type. 206618334Speter (comp_target_types): Allow T * -> void *. 206718334Speter 206818334Speter * cvt.c (cp_convert_to_pointer): Do access control when converting 206918334Speter ptms, too. 207018334Speter 207118334SpeterTue Mar 21 17:25:06 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 207218334Speter 207318334Speter * parse.y (extern_lang_string): Catch use of linkage specs that 207418334Speter aren't all naming the same language. 207518334Speter 207618334Speter * class.c (finish_struct): Delete accidental duplicate code. 207718334Speter 207818334SpeterTue Mar 21 14:00:57 1995 Jason Merrill <jason@phydeaux.cygnus.com> 207918334Speter 208018334Speter * typeck.c (build_binary_op_nodefault): Disable pedwarns about 208118334Speter comparing functions and incomplete types. 208218334Speter 208318334Speter * decl.c (finish_function): Only unset current_function_decl if 208418334Speter !nested. 208518334Speter (duplicate_decls): Last change went too far; we only want to stop 208618334Speter checking for value/reference ambiguity. 208718334Speter 208818334SpeterTue Mar 21 01:26:39 1995 Mike Stump <mrs@cygnus.com> 208918334Speter 209018334Speter * gc.c (build_generic_desc): Zap the DECL_SIZE so that we can lay it 209118334Speter out fresh, as the new type may be larger. 209218334Speter 209318334SpeterMon Mar 20 19:01:10 1995 Jason Merrill <jason@phydeaux.cygnus.com> 209418334Speter 209518334Speter * expr.c (extract_init): Try to expand the RTL for the 209618334Speter initialization and figure out what it will look like so we can avoid 209718334Speter run-time initialization. Disabled for now. 209818334Speter (extract_scalar_init): Helper for scalar initialization. 209918334Speter (extract_aggr_init): Helper for aggregate initialization. 210018334Speter 210118334Speter * decl.c (duplicate_decls): Don't complain about ambiguous 210218334Speter declarations. 210318334Speter (obscure_complex_init): Now returns a tree. Call extract_init if 210418334Speter we're optimizing and this is a toplevel decl. 210518334Speter (finish_decl): Update accordingly. 210618334Speter 210718334Speter * lex.c (check_newline): If we're just changing files (not pushing 210818334Speter or popping), update input_file_stack->name. 210918334Speter 211018334SpeterMon Mar 20 17:55:04 1995 Mike Stump <mrs@cygnus.com> 211118334Speter 211218334Speter * pt.c (type_unification): Only TEMPLATE_DECLs are handled right now 211318334Speter in the transitive unification code. 211418334Speter 211518334SpeterMon Mar 20 16:07:50 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 211618334Speter 211718334Speter * decl.c (shadow_tag): Don't allow inline, virtual, or explicit on 211818334Speter non-functions. 211918334Speter (grokdeclarator): Don't allow friends to be defined in local classes. 212018334Speter 212118334SpeterSat Mar 18 04:03:33 1995 Jason Merrill <jason@phydeaux.cygnus.com> 212218334Speter 212318334Speter * decl2.c (finish_prevtable_vardecl): Use DECL_DECLARED_STATIC 212418334Speter rather than DECL_SAVED_INSNS to decide whether or not this method 212518334Speter was declared inline. 212618334Speter 212718334Speter * method.c (synthesize_method): Turn off DECL_INLINE if 212818334Speter function_cannot_inline_p thinks we're too large. 212918334Speter 213018334Speter * typeck.c (build_indirect_ref): Use build_expr_type_conversion. 213118334Speter 213218334SpeterFri Mar 17 17:47:36 1995 Jason Merrill <jason@phydeaux.cygnus.com> 213318334Speter 213418334Speter * class.c (instantiate_type): Handle pmfs. 213518334Speter 213618334Speter * typeck.c (convert_for_assignment): Check types when assigning one 213718334Speter pmf to another. 213818334Speter 213918334Speter * decl.c (define_label): Fix logic for printing out the name of the 214018334Speter label in an error message. 214118334Speter 214218334Speter * error.c (dump_expr): Support ARRAY_REF. 214318334Speter 214418334SpeterFri Mar 17 17:43:02 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 214518334Speter 214618334Speter * decl2.c (finish_vtable_vardecl): Call build_t_desc here. 214718334Speter (finish_prevtable_vardecl): Instead of here. 214818334Speter 214918334SpeterFri Mar 17 14:40:45 1995 Jason Merrill <jason@phydeaux.cygnus.com> 215018334Speter 215118334Speter * decl.c (expand_static_init): Also use expand_aggr_init if the 215218334Speter initializer is a TREE_LIST. 215318334Speter (grokdeclarator): Only pedwarn about extra qualification if -pedantic. 215418334Speter 215518334Speter * pt.c (unify): Fix unification of return type. 215618334Speter 215718334Speter * expr.c (fixup_result_decl): Use store_expr, rather than 215818334Speter emit_move_insn, to move the return value into the place where 215918334Speter callers will expect it. 216018334Speter 216118334SpeterThu Mar 16 22:05:25 1995 Jason Merrill <jason@phydeaux.cygnus.com> 216218334Speter 216318334Speter * init.c (build_offset_ref): Call assmble_external on functions. 216418334Speter * typeck.c (build_component_ref): Ditto. 216518334Speter 216618334SpeterThu Mar 16 20:28:16 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 216718334Speter 216818334Speter * decl.c (struct saved_scope): Add members base_init_list and 216918334Speter member_init_list. 217018334Speter (push_to_top_level): Save current_base_init_list and 217118334Speter current_member_init_list to them. 217218334Speter (pop_from_top_level): Put it back. 217318334Speter 217418334SpeterThu Mar 16 19:21:14 1995 Jason Merrill <jason@phydeaux.cygnus.com> 217518334Speter 217618334Speter * pt.c (instantiate_template): Call assemble_external. 217718334Speter 217818334SpeterThu Mar 16 18:07:54 1995 Brendan Kehoe (brendan@phydeaux.cygnus.com) 217918334Speter 218018334Speter * class.c: Include rtl.h, to get NULL_RTX. 218118334Speter (finish_struct): Also zero out DECL_SAVED_INSNS, to avoid problems 218218334Speter on hosts with different sizes for each part of the union. 218318334Speter * tree.c: Also include rtl.h. 218418334Speter (layout_basetypes): Same change for DECL_SAVED_INSNS. 218518334Speter 218618334SpeterThu Mar 16 13:57:36 1995 Jason Merrill <jason@phydeaux.cygnus.com> 218718334Speter 218818334Speter * pt.c (unify): Fix array domain unification for 64-bit targets. 218918334Speter 219018334Speter * decl2.c (finish_file): Push bizarre type decl before walking the 219118334Speter vtables the first time. 219218334Speter (walk_vtables): OK, don't set prev to vars if the vardecl_fn messed 219318334Speter with TREE_CHAIN (prev). 219418334Speter 219518334Speter * init.c (emit_base_init): Use convert_pointer_to_real instead of 219618334Speter convert_pointer_to when converting to a direct base. 219718334Speter 219818334SpeterWed Mar 15 20:26:29 1995 Mike Stump <mrs@cygnus.com> 219918334Speter 220018334Speter * pt.c (type_unification): Handle transitive unification better. 220118334Speter 220218334SpeterWed Mar 15 13:56:16 1995 Jason Merrill <jason@phydeaux.cygnus.com> 220318334Speter 220418334Speter * decl2.c (walk_vtables): Always set prev to vars. 220518334Speter (mark_vtable_entries): Call assemble_external on the vtable entries. 220618334Speter 220718334Speter * class.c (finish_struct): Set the vtable's size to NULL_TREE before 220818334Speter calling layout_decl, so that it gets updated properly. 220918334Speter 221018334Speter Finally re-enable dynamic synthesis. This time it works. 221118334Speter * method.c (synthesize_method): Pass decl_function_context (fndecl) 221218334Speter to {push,pop}_cp_function_context. 221318334Speter * decl.c (push_cp_function_context): Now takes a tree argument. 221418334Speter (pop_cp_function_context): Ditto. 221518334Speter * call.c (build_method_call): Enable synthesis. 221618334Speter * lex.c (cons_up_default_function): Ditto. 221718334Speter 221818334SpeterTue Mar 14 19:14:19 1995 Doug Evans <dje@chestnut.cygnus.com> 221918334Speter 222018334Speter * parse.y (setattrs): Chain onto prefix_attributes rather than 222118334Speter setting it. 222218334Speter 222318334SpeterWed Mar 15 13:00:00 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 222418334Speter 222518334Speter * decl.c (pushdecl): Check if the type of the VAR_DECL is an 222618334Speter error_mark_node before trying to read TYPE_LANG_SPECIFIC. 222718334Speter 222818334SpeterMon Mar 13 21:00:28 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 222918334Speter 223018334Speter * decl.c (grokdeclarator, case ARRAY_REF): Wrap the exp with fold, 223118334Speter and convert the size and integer_one_node to the index type. 223218334Speter 223318334SpeterMon Mar 13 08:01:02 1995 Jason Merrill <jason@phydeaux.cygnus.com> 223418334Speter 223518334Speter * typeck.c (get_member_function_from_ptrfunc): Save the instance 223618334Speter argument, and tack it onto the front of the COND_EXPR to make the 223718334Speter semantics come out right. Grab the instance argument from 223818334Speter '*instance_ptrptr', rather than having it passed in separately. 223918334Speter 224018334Speter * various: Change various consed-up comparison operations to have 224118334Speter boolean type. Remove the instance argument in calls to 224218334Speter get_member_function_from_ptrfunc. 224318334Speter 224418334Speter * error.c (dump_expr): Dump true and false as "true" and "false". 224518334Speter 224618334Speter * decl2.c (finish_file): Also set DECL_STATIC_FUNCTION_P on the 224718334Speter global init function. 224818334Speter 224918334Speter * decl.c (finish_function): Only set DECL_EXTERNAL here if the 225018334Speter inline function is public. 225118334Speter 225218334SpeterSat Mar 11 00:58:03 1995 Jason Merrill <jason@phydeaux.cygnus.com> 225318334Speter 225418334Speter * init.c (is_friend): Be more careful about checking 225518334Speter DECL_CLASS_CONTEXT on non-member functions. 225618334Speter 225718334Speter * decl2.c (finish_vtable_vardecl): Don't bother calling 225818334Speter assemble_external here. 225918334Speter (prune_vtable_vardecl): New function that just splices out the 226018334Speter vtable decl from the top-level decls. 226118334Speter (import_export_inline): Unset DECL_EXTERNAL at first. 226218334Speter (finish_file): Don't bother calling assemble_external here. Do 226318334Speter splice out all of the vtables. 226418334Speter 226518334SpeterFri Mar 10 14:42:29 1995 Jason Merrill <jason@phydeaux.cygnus.com> 226618334Speter 226718334Speter * decl.c (finish_function): If we're not emitting the function yet, 226818334Speter call assemble_external for it. 226918334Speter 227018334Speter * decl2.c (finish_prevtable_vardecl): Don't call mark_vtable_entries 227118334Speter here. 227218334Speter (finish_vtable_vardecl): Don't do the linkage deduction thing here. 227318334Speter Also don't splice out the current vtable if it is unused. 227418334Speter (finish_file): Move the second walk_vtables and the synthesis check 227518334Speter inside the 'reconsider' loop. Move thunk emission after the 227618334Speter 'reconsider' loop. 227718334Speter 227818334SpeterThu Mar 9 16:28:16 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 227918334Speter 228018334Speter * pt.c (tsubst): Don't bother calling cp_build_type_variant, since it 228118334Speter was passing bogus values for readonly and volatile from the original 228218334Speter template decl, not the resultant type of the tsubst call. 228318334Speter 228418334Speter * class.c (duplicate_tag_error): Use cp_error_at to point out the 228518334Speter previous definition of the tag. 228618334Speter 228718334SpeterThu Mar 9 10:46:17 1995 Jason Merrill <jason@phydeaux.cygnus.com> 228818334Speter 228918334Speter * decl.c (start_function): Clear base_init_insns and protect_list. 229018334Speter (struct cp_function): Add base_init_insns field. 229118334Speter (push_cp_function_context): Also save base_init_insns. 229218334Speter (pop_cp_function_context): Also restore base_init_insns. 229318334Speter 229418334SpeterWed Mar 8 13:31:44 1995 Jason Merrill <jason@phydeaux.cygnus.com> 229518334Speter 229618334Speter * init.c (member_init_ok_or_else): Check for initializing a static 229718334Speter member here. 229818334Speter (emit_base_init): Instead of here. 229918334Speter 230018334SpeterTue Mar 7 16:03:26 1995 Jason Merrill <jason@phydeaux.cygnus.com> 230118334Speter 230218334Speter * call.c (build_method_call): Disable synthesis as needed. 230318334Speter * lex.c (cons_up_default_function): Ditto. 230418334Speter 230518334SpeterTue Mar 7 10:14:29 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 230618334Speter 230718334Speter * parse.y: New rules to allow attributes in a prefix position. 230818334Speter (prefix_attributes): New variable. Pass it into cplus_decl_attributes. 230918334Speter (setattr): New rule. 231018334Speter (reserved_declspecs, declmods): Catch attributes here. 231118334Speter * decl2.c (cplus_decl_attributes): Add PREFIX_ATTRIBUTES argument. 231218334Speter * decl.c (duplicate_decls): Pass DECL_MACHINE_ATTRIBUTES to 231318334Speter descendent typedef. 231418334Speter (grokdeclarator): Added code to support machine attributes. 231518334Speter * Makefile.in (stamp-parse): Expect 5 shift/reduce failures. 231618334Speter 231718334SpeterMon Mar 6 15:07:02 1995 Jason Merrill <jason@phydeaux.cygnus.com> 231818334Speter 231918334Speter * call.c (build_method_call): Don't synthesize methods outside of a 232018334Speter function. 232118334Speter 232218334Speter Make base initialization more re-entrant so that synthesis on the 232318334Speter fly will work (and, eventually, template instantation on the fly). 232418334Speter * init.c (sort_member_init): Don't bother with members that can't be 232518334Speter initialized. Reorganize a bit. Don't initialize base members here. 232618334Speter (sort_base_init): New function, like sort_member_init, but for base 232718334Speter classes. Steals some code from emit_base_init. 232818334Speter (emit_base_init): Simplify. Call sort_{member,base}_init before 232918334Speter doing any initialization, so we don't have to save 233018334Speter current_{member,base}_init_list in push_cp_function_context. 233118334Speter (expand_aggr_vbase_init_1): Adjust for sort_base_init. 233218334Speter (expand_aggr_vbase_init): Simplify. 233318334Speter * decl.c (struct cp_function): Add protect_list field. 233418334Speter (push_cp_function_context): Also save protect_list. 233518334Speter (pop_cp_function_context): Also restore protect_list. 233618334Speter * call.c (build_method_call): Enable synthesis at point of call. 233718334Speter * lex.c (cons_up_default_function): Ditto. 233818334Speter 233918334Speter * parse.y: Turn -ansi checks back into -pedantic checks. 234018334Speter 234118334Speter * init.c (build_new): Fix -fcheck-new for array new. 234218334Speter 234318334SpeterSat Mar 4 15:55:42 1995 Fergus Henderson <fjh@cs.mu.oz.au> 234418334Speter 234518334Speter * typeck.c (build_compound_expr): warn if left-hand operand of 234618334Speter comma expression has no side-effects. 234718334Speter 234818334SpeterFri Mar 3 15:16:45 1995 Jason Merrill <jason@phydeaux.cygnus.com> 234918334Speter 235018334Speter * parse.y (primary): Change 'object qualified_id *' rules to 'object 235118334Speter overqualified_id *'. 235218334Speter 235318334SpeterFri Mar 3 12:48:17 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 235418334Speter 235518334Speter * parse.y (unary_expr): Catch doing sizeof an overloaded function. 235618334Speter Make the error look the same as the one we issue in c_sizeof. 235718334Speter 235818334Speter * typeck.c (build_binary_op_nodefault): Give an error for trying 235918334Speter to compare a pointer-to-member to `void *'. 236018334Speter 236118334SpeterFri Mar 3 11:28:50 1995 Jason Merrill <jason@phydeaux.cygnus.com> 236218334Speter 236318334Speter * typeck.c (build_unary_op): Handle bool increment with smoke and 236418334Speter mirrors here, rather than in expand_increment where it belongs, 236518334Speter because Kenner doesn't agree with me. 236618334Speter 236718334SpeterFri Mar 3 00:08:10 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 236818334Speter 236918334Speter * decl.c (grokparms): Catch a PARM_DECL being used for a default 237018334Speter argument as well. 237118334Speter 237218334SpeterThu Mar 2 20:05:54 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 237318334Speter 237418334Speter * init.c (build_new): Don't allow new on a function type. 237518334Speter 237618334Speter * parse.y (primary): Avoid a crash when seeing if the arg is of 237718334Speter the same type as that given for the typespec in an explicit dtor call. 237818334Speter 237918334SpeterThu Mar 2 00:49:38 1995 Jason Merrill <jason@phydeaux.cygnus.com> 238018334Speter 238118334Speter * decl.c (finish_function): Change test for calling 238218334Speter mark_inline_for_output. 238318334Speter 238418334SpeterWed Mar 1 11:23:46 1995 Jason Merrill <jason@phydeaux.cygnus.com> 238518334Speter 238618334Speter * typeck.c (build_modify_expr): Complain if 238718334Speter build_default_binary_type_conversion fails. 238818334Speter 238918334Speter * init.c (expand_default_init): Handle arguments of unknown type 239018334Speter properly. 239118334Speter 239218334Speter * cvt.c (build_expr_type_conversion): Only complain about ambiguity 239318334Speter if 'complain'. 239418334Speter * various: Pass 'complain'. 239518334Speter 239618334Speter * typeck.c (comptypes): Be more picky about comparing UPTs. 239718334Speter 239818334SpeterWed Mar 1 11:03:41 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 239918334Speter 240018334Speter * decl.c (grokdeclarator): If declarator is null, say that the 240118334Speter type used has an incomplete type. 240218334Speter 240318334SpeterWed Mar 1 10:06:20 1995 Jason Merrill <jason@phydeaux.cygnus.com> 240418334Speter 240518334Speter * pt.c (instantiate_template): Copy the template arguments to the 240618334Speter permanent_obstack. Also use simple_cst_equal to compare them when 240718334Speter looking for a previous instantiation. 240818334Speter 240918334Speter * tree.c (make_deep_copy): Support copying INTEGER_TYPEs (assuming 241018334Speter they are array domain types). 241118334Speter 241218334SpeterTue Feb 28 23:24:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> 241318334Speter 241418334Speter * cp-tree.h: Define WANT_* constants for passing to 241518334Speter build_expr_type_conversion. 241618334Speter * cvt.c (build_expr_type_conversion): New function to build 241718334Speter conversion to one of a group of suitable types. 241818334Speter (build_default_binary_type_conversion): Use it. 241918334Speter * decl2.c (grok_array_decl): Ditto. 242018334Speter * typeck.c (build_unary_op): Ditto. 242118334Speter (build_array_ref): Tidy up a bit. 242218334Speter (build_binary_op): Ditto. 242318334Speter 242418334SpeterTue Feb 28 19:57:31 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 242518334Speter 242618334Speter * decl.c (grokdeclarator): Don't allow decl of an argument as `void'. 242718334Speter 242818334SpeterTue Feb 28 17:23:36 1995 Jason Merrill <jason@phydeaux.cygnus.com> 242918334Speter 243018334Speter * parse.y (typed_declspecs1): Add 'typespec reserved_typespecquals 243118334Speter reserved_declspecs' rule. 243218334Speter 243318334Speter * parse.y (expr_or_declarator): Remove notype_qualified_id rule. 243418334Speter (direct_notype_declarator): Ditto. 243518334Speter (complex_direct_notype_declarator): Add notype_qualified_id rule. 243618334Speter 243718334Speter * lex.c (real_yylex): Handle :> digraph properly. 243818334Speter 243918334SpeterTue Feb 28 12:26:29 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 244018334Speter 244118334Speter * decl.c (grokdeclarator): Check if it's a friend, not if it's 244218334Speter non-virtual, that's being initialized. Move the check up to 244318334Speter before FRIENDP would get cleared. Catch an unnamed var/field 244418334Speter being declared void. Say just `field' instead of `structure field' 244518334Speter in the error message. Only go for the operator name if DECLARATOR 244618334Speter is non-null. 244718334Speter 244818334SpeterTue Feb 28 00:08:01 1995 Jason Merrill <jason@phydeaux.cygnus.com> 244918334Speter 245018334Speter * decl.c (start_function): Complain about abstract return type. 245118334Speter (grokdeclarator): Complain about declaring constructors and 245218334Speter destructors to be const or volatile. Complain about declaring 245318334Speter destructors to be static. 245418334Speter 245518334Speter * pt.c (uses_template_parms): Handle pmfs. 245618334Speter 245718334Speter * decl.c (grokdeclarator): Don't call variable_size for array bounds 245818334Speter that only depend on template constant parameters. 245918334Speter 246018334SpeterMon Feb 27 15:38:16 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 246118334Speter 246218334Speter * error.c (dump_decl): Only look to see if it's a vtable if we 246318334Speter actually have a name to check out. 246418334Speter 246518334SpeterMon Feb 27 13:37:53 1995 Jason Merrill <jason@phydeaux.cygnus.com> 246618334Speter 246718334Speter * cvt.c (convert_to_aggr): Lose misleading shortcut. 246818334Speter 246918334SpeterSun Feb 26 17:27:32 1995 Doug Evans <dje@canuck.cygnus.com> 247018334Speter 247118334Speter * decl.c (set_nested_typename): Always set DECL_IGNORED_P, 247218334Speter not just for dwarf. 247318334Speter 247418334SpeterSun Feb 26 00:10:18 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 247518334Speter 247618334Speter * decl.c (grokdeclarator): Don't allow a static member to be 247718334Speter declared `register'. 247818334Speter 247918334Speter * init.c (make_friend_class): Move up to a pedwarn for the warning 248018334Speter about a class declaring friends with itself. 248118334Speter 248218334Speter * decl.c (grokdeclarator): You can't do `volatile friend class foo' 248318334Speter or `inline friend class foo'. Only try to make a friend out of 248418334Speter TYPE if we didn't already reset it to integer_type_node. 248518334Speter 248618334SpeterSat Feb 25 22:32:03 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 248718334Speter 248818334Speter * decl.c (grokdeclarator): Don't allow initialization of a 248918334Speter non-virtual function. 249018334Speter 249118334Speter * decl.c (start_function): Do a pedwarn if we're changing `main' 249218334Speter to have an int return type. 249318334Speter 249418334SpeterSat Feb 25 00:02:05 1995 Jason Merrill <jason@phydeaux.cygnus.com> 249518334Speter 249618334Speter * typeck.c (build_modify_expr): Handle simple assignment from 249718334Speter TARGET_EXPRs by building up an RTL_EXPR to force expansion. Whew. 249818334Speter 249918334SpeterFri Feb 24 18:27:14 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 250018334Speter 250118334Speter * decl.c (grokdeclarator): Also don't allow virtual outside of a 250218334Speter class decl for a scope method definition performed at global binding. 250318334Speter 250418334Speter * init.c (build_offset_ref): Don't allow creation of an OFFSET_REF 250518334Speter of a bitfield. 250618334Speter 250718334Speter * decl.c (grokdeclarator): Don't allow a const to be declared mutable. 250818334Speter 250918334Speter * typeck.c (build_binary_op): Return an error_mark_node if either 251018334Speter one of the args turned into an error_mark_node when we tried to 251118334Speter use default_conversion. 251218334Speter 251318334Speter * typeck.c (build_unary_op): Forbid using postfix -- on a bool. 251418334Speter 251518334Speter * decl.c (grokdeclarator): Allow `signed' and `unsigned' to be 251618334Speter used on `__wchar_t'. 251718334Speter 251818334SpeterFri Feb 24 13:59:53 1995 Mike Stump <mrs@cygnus.com> 251918334Speter 252018334Speter * except.c (end_protect_partials): Do it the right way. 252118334Speter 252218334SpeterWed Feb 22 15:42:56 1995 Jason Merrill <jason@phydeaux.cygnus.com> 252318334Speter 252418334Speter * typeck.c (build_binary_op_nodefault): Upgrade warning about 252518334Speter comparing distinct pointer types to pedwarn. 252618334Speter 252718334Speter * typeck2.c (digest_init): Cope with extra braces. 252818334Speter 252918334Speter * typeck.c (build_binary_op_nodefault): Use tree_int_cst_sgn instead 253018334Speter of INT_CST_LT (..., interger_zero_node). 253118334Speter 253218334SpeterWed Feb 22 14:45:52 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 253318334Speter 253418334Speter * except.c [!TRY_NEW_EH] (end_protect_partials): Define dummy 253518334Speter function for systems that don't have EH. 253618334Speter 253718334SpeterTue Feb 21 19:18:31 1995 Jason Merrill <jason@phydeaux.cygnus.com> 253818334Speter 253918334Speter * call.c (can_convert_arg): Like can_convert, but takes an arg as 254018334Speter well. 254118334Speter 254218334Speter * pt.c (type_unification): Allow implicit conversions for parameters 254318334Speter that do not depend on template parameters. 254418334Speter 254518334SpeterTue Feb 21 18:43:48 1995 Douglas Rupp (drupp@cs.washington.edu) 254618334Speter 254718334Speter * Make-lang.in, config-lang.in: ($exeext): New macro. 254818334Speter * Make-lang.in: Try a "cp" if "ln" fails. 254918334Speter * cp-tree.h (decl_attributes): Added argument. 255018334Speter * decl2.c (cplus_decl_attribute): Add arg to decl_attributes. 255118334Speter * cp/g++.c: Added #ifdefs for sys/file.h and process.h for NT. 255218334Speter Modified spawnvp to have to correct number of arguments for OS/2, NT. 255318334Speter 255418334SpeterTue Feb 21 18:36:55 1995 Mike Stump <mrs@cygnus.com> 255518334Speter 255618334Speter * decl.c (finish_function): Add calls to end_protect_partials to end 255718334Speter the exception region that protects constructors so that partially 255818334Speter constructed objects can be partially destructed when the constructor 255918334Speter throws an exception. 256018334Speter * init.c (perform_member_init, sort_member_init, emit_base_init): 256118334Speter Added support for partially constructed objects. 256218334Speter * init.c (build_partial_cleanup_for): New routine to do partial 256318334Speter cleanups of a base class. 256418334Speter * decl2.c (finish_file): Move the emitting of the exception table 256518334Speter down, after we emit all code that might have exception regions in 256618334Speter them. 256718334Speter * except.c (end_protect_partials, might_have_exceptions_p): New 256818334Speter routines. 256918334Speter (emit_exception_table): Always output table if called. 257018334Speter * cp-tree.h (protect_list, end_protect_partials, 257118334Speter might_have_exceptions_p, emit_exception_table): Added. 257218334Speter 257318334SpeterTue Feb 21 16:05:59 1995 Brendan Kehoe (brendan@lisa.cygnus.com) 257418334Speter 257518334Speter * gc.c (build_typeid): Pass a NULL_TREE, not the bogus, unused 257618334Speter address of a local variable. 257718334Speter * class.c (build_vfn_ref): Only try to build the PLUS_EXPR if we 257818334Speter were given a non-null PTR_TO_INSTPTR. 257918334Speter 258018334SpeterTue Feb 21 01:53:18 1995 Jason Merrill <jason@phydeaux.cygnus.com> 258118334Speter 258218334Speter * decl.c (duplicate_decls): Always lay out the merged decl. 258318334Speter 258418334Speter * decl2.c (finish_vtable_vardecl): Don't do vtable hack on templates. 258518334Speter (finish_prevtable_vardecl): Ditto. 258618334Speter 258718334Speter * method.c (synthesize_method): Set interface_{unknown,only} 258818334Speter according to the settings for our class, not the file where it comes 258918334Speter from. 259018334Speter 259118334SpeterSat Feb 18 12:26:48 1995 Mike Stump <mrs@cygnus.com> 259218334Speter 259318334Speter * except.c: Handle systems that define __i386__ but not __i386. 259418334Speter 259518334SpeterFri Feb 17 15:31:31 1995 Jason Merrill <jason@phydeaux.cygnus.com> 259618334Speter 259718334Speter * decl2.c (reparse_decl_as_expr): Support being called without a 259818334Speter type argument. 259918334Speter 260018334Speter * parse.y (primary): Add '(' expr_or_declarator ')'. Adds 4 r/r 260118334Speter conflicts. Sigh. 260218334Speter 260318334SpeterFri Feb 17 12:02:06 1995 Mike Stump <mrs@cygnus.com> 260418334Speter 260518334Speter * parse.y (template_def, fndef, fn.def1, return_init, condition, 260618334Speter initdcl0, initdcl, notype_initdcl0, nomods_initdcl0, 260718334Speter component_decl_1, after_type_component_declarator0, 260818334Speter notype_component_declarator0, after_type_component_declarator, 260918334Speter notype_component_declarator, after_type_component_declarator, 261018334Speter full_parm, maybe_raises, exception_specification_opt): Fix up, 261118334Speter include exception_specification_opt maybeasm maybe_attribute and 261218334Speter maybe_init if missing. Rename maybe_raises to 261318334Speter exception_specification_opt to match draft wording. Use maybe_init 261418334Speter to simplify rules. 261518334Speter 261618334SpeterFri Feb 17 01:54:46 1995 Jason Merrill <jason@phydeaux.cygnus.com> 261718334Speter 261818334Speter * init.c (build_new): Set TREE_NO_UNUSED_WARNING on COMPOUND_EXPRs 261918334Speter built for news of scalar types. 262018334Speter 262118334SpeterThu Feb 16 17:48:28 1995 Jason Merrill <jason@phydeaux.cygnus.com> 262218334Speter 262318334Speter * typeck.c (build_binary_op_nodefault): Update code for warning 262418334Speter about signed/unsigned comparisons from C frontend. Realize that the 262518334Speter code in the C frontend is, if anything, even more bogus. Fix it. 262618334Speter (build_binary_op): Undo default_conversion if it wasn't useful. 262718334Speter 262818334Speter * typeck.c (build_unary_op, ADDR_EXPR): Lose bogus special case for 262918334Speter PRE*CREMENT_EXPR. 263018334Speter 263118334Speter * decl2.c (import_export_vtable): Don't try the vtable hack 263218334Speter if the class doesn't have any real non-inline virtual functions. 263318334Speter (finish_vtable_vardecl): Don't bother trying to find a non-inline 263418334Speter virtual function in a non-polymorphic class. 263518334Speter (finish_prevtable_vardecl): Ditto. 263618334Speter 263718334Speter * decl2.c (import_export_vtable): Use and set DECL_INTERFACE_KNOWN. 263818334Speter 263918334Speter * cp-tree.h (DECL_INTERFACE_KNOWN): Use DECL_LANG_FLAG_5. 264018334Speter 264118334Speter * init.c (expand_virtual_init): Always call assemble_external. 264218334Speter 264318334Speter * class.c (build_vfn_ref): Always call assemble_external. 264418334Speter (build_vtable): Always call import_export_vtable. 264518334Speter (prepare_fresh_vtable): Ditto. 264618334Speter (add_virtual_function): Don't bother setting TREE_ADDRESSABLE. 264718334Speter 264818334SpeterThu Feb 16 03:28:49 1995 Jason Merrill <jason@phydeaux.cygnus.com> 264918334Speter 265018334Speter * class.c (finish_struct): Use TYPE_{MIN,MAX}_VALUE to determine 265118334Speter whether an enumerated type fits in a bitfield. 265218334Speter 265318334SpeterWed Feb 15 15:38:12 1995 Jason Merrill <jason@phydeaux.cygnus.com> 265418334Speter 265518334Speter * class.c (grow_method): Update method_vec after growing the class 265618334Speter obstack. 265718334Speter 265818334SpeterWed Feb 15 13:42:59 1995 Mike Stump <mrs@cygnus.com> 265918334Speter 266018334Speter * parse.y (handler_seq): Push a level for the catch parameters. 266118334Speter 266218334SpeterWed Feb 15 12:42:57 1995 Jason Merrill <jason@phydeaux.cygnus.com> 266318334Speter 266418334Speter * init.c (emit_base_init): Update BINFO_INHERITANCE_CHAIN on my 266518334Speter bases, in case they've been clobbered. 266618334Speter 266718334SpeterWed Feb 15 12:07:29 1995 Mike Stump <mrs@cygnus.com> 266818334Speter 266918334Speter * class.c (finish_base_struct): Set up BINFO_INHERITANCE_CHAIN here, 267018334Speter so that one day it will always be valid. 267118334Speter * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto. 267218334Speter 267318334Speter * cp-tree.h (copy_binfo): Removed, unused. 267418334Speter * tree.c (copy_binfo): Ditto. 267518334Speter 267618334SpeterWed Feb 15 00:05:30 1995 Jason Merrill <jason@phydeaux.cygnus.com> 267718334Speter 267818334Speter * init.c (build_new): Save the allocation before calling 267918334Speter expand_vec_init on it. 268018334Speter 268118334Speter * decl.c (finish_enum): The TYPE_PRECISION of the enum type mush 268218334Speter match the TYPE_PRECISION of the underlying type for constant folding 268318334Speter to work. 268418334Speter 268518334SpeterTue Feb 14 15:31:25 1995 Mike Stump <mrs@cygnus.com> 268618334Speter 268718334Speter * except.c (push_eh_entry, expand_start_all_catch, 268818334Speter expand_leftover_cleanups, expand_end_catch_block): Keep track of 268918334Speter the context in which the exception region occurs. 269018334Speter (build_exception_table): If the region was not output, don't output 269118334Speter the entry in the eh table for it. 269218334Speter 269318334SpeterTue Feb 14 02:15:43 1995 Jason Merrill <jason@phydeaux.cygnus.com> 269418334Speter 269518334Speter * init.c (expand_default_init): Only use a previous constructor call 269618334Speter if it's a call to our constructor. Does the word "Duh" mean 269718334Speter anything to you? 269818334Speter 269918334Speter * decl.c (grokparms): Fine, just don't call 270018334Speter convert_for_initialization at all. OK? Happy now? 270118334Speter 270218334SpeterMon Feb 13 02:23:44 1995 Jason Merrill <jason@phydeaux.cygnus.com> 270318334Speter 270418334Speter * cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Make sure that the class 270518334Speter method vector has a second element before returning it. 270618334Speter 270718334Speter * decl.c (grokparms): Don't strip REFERENCE_TYPE before calling 270818334Speter convert_for_initialization. 270918334Speter 271018334SpeterSun Feb 12 03:57:06 1995 Jason Merrill <jason@phydeaux.cygnus.com> 271118334Speter 271218334Speter * typeck.c (build_modify_expr): Compare function name to 271318334Speter constructor_name (current_class_type) instead of current_class_name. 271418334Speter 271518334Speter * decl.c (grokparms): Don't do anything with the return value of 271618334Speter convert_for_initialization. 271718334Speter 271818334Speter * error.c (dump_decl): Also dump_readonly_or_volatile on the decl. 271918334Speter 272018334Speter * decl.c (duplicate_decls): Tweak error message. 272118334Speter 272218334Speter * typeck.c (build_const_cast): Implement checking. 272318334Speter (build_reinterpret_cast): Implement some checking. 272418334Speter 272518334Speter * cp-tree.h (CONV_FORCE_TEMP): Require a new temporary when 272618334Speter converting to the same aggregate type. 272718334Speter (CONV_STATIC_CAST): Include it. 272818334Speter (CONV_C_CAST): Ditto. 272918334Speter * cvt.c (convert_force): Use CONV_C_CAST instead of CONV_OLD_CONVERT. 273018334Speter (cp_convert): Only force a new temporary if CONV_FORCE_TEMP. 273118334Speter 273218334SpeterFri Feb 10 16:18:52 1995 Jason Merrill <jason@phydeaux.cygnus.com> 273318334Speter 273418334Speter * typeck.c (build_c_cast): Use non_lvalue to tack something on 273518334Speter where necessary. 273618334Speter 273718334Speter * decl.c (auto_function): Now a function. 273818334Speter * except.c (init_exception_processing): terminate, unexpected, 273918334Speter set_terminate, and set_unexpected have C++ linkage. 274018334Speter 274118334Speter * typeck.c (build_unary_op, TRUTH_NOT_EXPR): Use convert instead of 274218334Speter truthvalue_conversion for converting to bool, as it handles 274318334Speter user-defined conversions properly. 274418334Speter (condition_conversion): Ditto. 274518334Speter 274618334Speter * except.c (expand_throw): Don't call convert_to_reference. 274718334Speter Pass the correct parameters to build_new. 274818334Speter 274918334Speter * method.c (do_build_assign_ref): Don't use access control when 275018334Speter converting to a base reference here. 275118334Speter (do_build_copy_constructor): Or here. 275218334Speter 275318334Speter * init.c (build_new): Unset TREE_READONLY on the dereferenced 275418334Speter pointer before assigning to it. 275518334Speter 275618334Speter * decl.c (maybe_build_cleanup): Don't bother stripping const here. 275718334Speter 275818334Speter * decl2.c (delete_sanity): You can now delete pointer to const. 275918334Speter 276018334SpeterFri Feb 10 13:28:38 1995 Jason Merrill <jason@python.cygnus.com> 276118334Speter 276218334Speter * decl.c (finish_function): Don't rely on actual parameters being 276318334Speter evaluated left-to-right. 276418334Speter * except.c (expand_end_catch_block): Ditto. 276518334Speter 276618334SpeterFri Feb 10 00:52:04 1995 Jason Merrill <jason@phydeaux.cygnus.com> 276718334Speter 276818334Speter * tree.c (real_lvalue_p): Like lvalue_p, but class temps aren't 276918334Speter considered lvalues. 277018334Speter * cvt.c (convert_to_reference): Use real_lvalue_p instead of 277118334Speter lvalue_p. 277218334Speter 277318334Speter * cvt.c (build_type_conversion_1): Don't call convert on aggregate 277418334Speter types. 277518334Speter (convert_to_reference): Fix erroneous text substitution. 277618334Speter 277718334Speter * typeck2.c (initializer_constant_valid_p): Update from C frontend. 277818334Speter Add new argument to all callers. 277918334Speter 278018334Speter * typeck.c (convert_arguments): Check for error_mark_node before 278118334Speter trying to do anything with the actual parameter. 278218334Speter 278318334Speter * typeck.c (condition_conversion): Build up a CLEANUP_POINT_EXPR and 278418334Speter fold it. 278518334Speter (bool_truthvalue_conversion): Remove. Fix all callers to call 278618334Speter truthvalue_conversion instead. 278718334Speter (various): Fold CLEANUP_POINT_EXPRs. 278818334Speter 278918334Speter * parse.y (conditions): Call condition_conversion rather than 279018334Speter building up a CLEANUP_POINT_EXPR. 279118334Speter 279218334Speter * pt.c (end_template_decl): Don't warn_if_unknown_interface here 279318334Speter under -falt-external-templates. 279418334Speter 279518334SpeterThu Feb 9 05:24:10 1995 Jason Merrill <jason@phydeaux.cygnus.com> 279618334Speter 279718334Speter * init.c (build_new): Complain about new of const type without 279818334Speter initializer. Other cleanup. 279918334Speter 280018334Speter * call.c (compute_conversion_costs): Don't call 280118334Speter build_type_conversion with a reference type; convert to the target 280218334Speter type and check its lvaluetude. 280318334Speter * cvt.c (convert_to_reference): Ditto. 280418334Speter 280518334Speter * cvt.c (build_type_conversion_1): There will never be any need to 280618334Speter dereference references here now. 280718334Speter 280818334SpeterThu Feb 9 00:37:47 1995 Mike Stump <mrs@cygnus.com> 280918334Speter 281018334Speter * except.c (expand_builtin_throw): Make sure we only `use' the 281118334Speter value of return_val_rtx. 281218334Speter 281318334SpeterWed Feb 8 15:45:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> 281418334Speter 281518334Speter * parse.y (structsp): Don't complain about declaring a type being 281618334Speter defined to be a friend. 281718334Speter 281818334Speter * decl2.c (warn_if_unknown_interface): Note the template in question 281918334Speter and the point of instantiation, for -falt-external-templates. 282018334Speter * lex.c (reinit_parse_for_method): Pass the decl to 282118334Speter warn_if_unknown_interface. 282218334Speter * pt.c (instantiate_template): Ditto. 282318334Speter (end_template_decl): Ditto. 282418334Speter 282518334Speter * decl.c (set_nested_typename): Set IDENTIFIER_TYPE_VALUE on the 282618334Speter nested name again, to make local classes work a bit better. 282718334Speter 282818334Speter * typeck.c (build_function_call_real): Dereference reference after 282918334Speter checking for incomplete type. 283018334Speter 283118334Speter * init.c (build_new): Accept new of const and volatile types. 283218334Speter 283318334SpeterWed Feb 8 14:04:16 1995 Jason Merrill <jason@deneb.cygnus.com> 283418334Speter 283518334Speter * decl.c (grokdeclarator): Fix error message. 283618334Speter 283718334SpeterWed Feb 8 03:16:15 1995 Jason Merrill <jason@phydeaux.cygnus.com> 283818334Speter 283918334Speter * typeck.c (convert_for_initialization): Do bash arrays when 284018334Speter converting to a reference to non-array. 284118334Speter 284218334SpeterTue Feb 7 15:50:33 1995 Jason Merrill <jason@phydeaux.cygnus.com> 284318334Speter 284418334Speter * cvt.c (cp_convert): Don't call convert_to_reference, or 284518334Speter automatically dereference references. Do pass reference conversions 284618334Speter to cp_convert_to_pointer. 284718334Speter (cp_convert_to_pointer): Support references. 284818334Speter 284918334Speter * call.c (build_method_call): Don't build up a reference to the 285018334Speter parameter here; let build_overload_call handle that. 285118334Speter 285218334Speter * typeck.c (build_c_cast): Call convert_to_reference directly if 285318334Speter converting to a reference type. 285418334Speter * method.c (do_build_copy_constructor): Ditto. 285518334Speter * method.c (do_build_copy_constructor): Ditto. 285618334Speter (do_build_assign_ref): Ditto. 285718334Speter 285818334Speter * call.c (build_method_call): Dereference a returned reference. 285918334Speter * typeck.c (build_function_call_real): Ditto. 286018334Speter 286118334Speter * decl.c (xref_basetypes): Check for unions with basetypes here. 286218334Speter (xref_tag): Instead of here. 286318334Speter 286418334Speter * pt.c (process_template_parm): Template type parm decls are 286518334Speter artificial. 286618334Speter 286718334SpeterMon Feb 6 04:32:09 1995 Jason Merrill <jason@phydeaux.cygnus.com> 286818334Speter 286918334Speter * parse.y (typed_declspecs): Add missing semicolon. 287018334Speter (do_xref_defn): Resurrect. 287118334Speter (named_class_head_sans_basetype): Move template specialization 287218334Speter definition cases to named_class_head_sans_basetype_defn. 287318334Speter 287418334Speter * decl2.c (grokfield): Call pushdecl_class_level after setting the 287518334Speter TYPE_NAME, not before. 287618334Speter 287718334SpeterSun Feb 5 02:50:45 1995 Jason Merrill <jason@phydeaux.cygnus.com> 287818334Speter 287918334Speter * call.c (convert_harshness): Don't call sorry here. Don't allow 288018334Speter conversions between function pointer types if pedantic. 288118334Speter 288218334Speter * pt.c (overload_template_name): Pass globalize=1 to xref_tag. 288318334Speter 288418334Speter * lex.c (cons_up_default_function): Use the full name for the return 288518334Speter type of op=. 288618334Speter 288718334Speter * decl.c (set_nested_typename): Don't worry about anonymous types, 288818334Speter as they already have a unique name. 288918334Speter (pushdecl): Remove redundant set_nested_typename 289018334Speter (xref_tag): Split out base handling into xref_basetypes. 289118334Speter 289218334Speter * cp-tree.h (TYPE_INCOMPLETE): New macro; TEMPLATE_TYPE_PARMs are 289318334Speter not considered incomplete even though their definition is unknown. 289418334Speter 289518334Speter * decl.c (xref_defn_tag): Lose. 289618334Speter (xref_tag): xref_next_defn = ! globalize. 289718334Speter (pushdecl): Don't set DECL_NESTED_TYPENAME on artificial decls. The 289818334Speter ones that should have it set will have it set by pushtag. 289918334Speter (pushdecl_class_level): Ditto. 290018334Speter (pushtag): Tidy up a bit. 290118334Speter (set_nested_typename): Push a decl for the nested typename from 290218334Speter here, rather than from xref_defn_tag. 290318334Speter 290418334Speter * parse.y (do_xref): Lose. 290518334Speter (named_class_head): If we see 'class foo:' we know it's a 290618334Speter definition, so don't worry about base lists for non-definitions. 290718334Speter 290818334Speter * pt.c (push_template_decls): Template parm decls are artificial. 290918334Speter 291018334Speter * decl.c (duplicate_decls): Restore check for qualifier 291118334Speter disagreement for non-functions. 291218334Speter (decls_match): Remove check for qualifier disagreement. 291318334Speter 291418334SpeterFri Feb 3 14:58:58 1995 Jason Merrill <jason@phydeaux.cygnus.com> 291518334Speter 291618334Speter * decl.c (grok_reference_init): Convert initializer from 291718334Speter reference. 291818334Speter * typeck.c (convert_for_initialization): Ditto. 291918334Speter 292018334Speter * decl.c (duplicate_decls): Propagate DECL_NESTED_TYPENAME. 292118334Speter 292218334Speter * cvt.c (cp_convert): Don't convert to the same class type by just 292318334Speter tacking on a NOP_EXPR. 292418334Speter (convert_to_reference): Use comp_target_types instead of comptypes 292518334Speter so that we don't allow conversions two levels down. 292618334Speter 292718334SpeterThu Feb 2 15:07:58 1995 Jason Merrill <jason@phydeaux.cygnus.com> 292818334Speter 292918334Speter * class.c (build_vbase_path): Bash types to make the backend happy. 293018334Speter * cvt.c (build_up_reference): Bash the types bashed by 293118334Speter build_vbase_path to be reference types instead of pointer types. 293218334Speter (convert_to_reference): Ditto. 293318334Speter 293418334Speter * typeck.c (build_c_cast): Don't strip NOPs if we're converting to a 293518334Speter reference type. 293618334Speter 293718334Speter * parse.y (structsp): Put back error for 'struct B: public A;'. 293818334Speter 293918334SpeterWed Feb 1 23:02:06 1995 Mike Stump <mrs@cygnus.com> 294018334Speter 294118334Speter * except.c: Add support for mips systems that don't define __mips 294218334Speter but do define mips, like Ultrix. 294318334Speter 294418334SpeterWed Feb 1 22:39:07 1995 Mike Stump <mrs@cygnus.com> 294518334Speter 294618334Speter * except.c: Add support for exception handling on the Alpha. 294718334Speter 294818334SpeterWed Feb 1 10:12:14 1995 Mike Stump <mrs@cygnus.com> 294918334Speter 295018334Speter * decl2.c (finish_file): Fix bug in Jan 31st change. 295118334Speter 295218334SpeterTue Jan 31 16:59:15 1995 Gerald Baumgartner (gb@lorenzo.cs.purdue.edu) 295318334Speter 295418334Speter * sig.c (build_signature_pointer_or_reference_type): Don't set 295518334Speter IS_AGGR_TYPE for signature pointers/reference so expand_default_init 295618334Speter doesn't expect to find a copy constructor. 295718334Speter * call.c (build_method_call): Treat signature pointers/reference 295818334Speter as if IS_AGGR_TYPE were set. 295918334Speter 296018334SpeterTue Jan 31 13:28:56 1995 Mike Stump <mrs@cygnus.com> 296118334Speter 296218334Speter * gc.c (get_typeid): Pawn off error messages to build_t_desc. 296318334Speter (build_t_desc): Inform the user here if they try and build 296418334Speter with -frtti and don't include <typeinfo.h>. 296518334Speter 296618334Speter * decl2.c (finish_prevtable_vardecl): Support rescanning. 296718334Speter (finish_file): Move finish_prevtable_vardecl up to before the global 296818334Speter initializers are done as tdecls are initialized in the global 296918334Speter initializer. Also Pick up any new tdecls or vtables needed by 297018334Speter synthesized methods. 297118334Speter 297218334Speter * class.c (finish_struct): Simplify. We have to do rtti scanning at 297318334Speter end, so we might as well do all of it there. 297418334Speter 297518334SpeterTue Jan 31 05:35:02 1995 Jason Merrill <jason@phydeaux.cygnus.com> 297618334Speter 297718334Speter * call.c (build_method_call): Fix -fthis-is-variable for 32-bit 297818334Speter targets, too. 297918334Speter 298018334SpeterTue Jan 31 00:11:04 1995 Mike Stump <mrs@cygnus.com> 298118334Speter 298218334Speter * decl2.c (finish_prevtable_vardecl): New routine, mostly split from 298318334Speter finish_vtable_vardecl. It has the first half functionality from 298418334Speter that routine. 298518334Speter * decl2.c (finish_vtable_vardecl): Update to not include stuff not 298618334Speter in finish_prevtable_vardecl. 298718334Speter * decl2.c (finish_file): Call finish_prevtable_vardecl. 298818334Speter * gc.c (build_generic_desc): Allow it to be called when not at the 298918334Speter global binding layer, but behave as if we were. 299018334Speter (build_t_desc): Rearrange a bit so that it really works and is 299118334Speter easier to follow. 299218334Speter * class.c (finish_struct): Don't decide on tdecls here, as we have 299318334Speter to wait until the end of the file in general to decide whether or 299418334Speter not they come out. 299518334Speter 299618334SpeterMon Jan 30 01:00:40 1995 Jason Merrill <jason@phydeaux.cygnus.com> 299718334Speter 299818334Speter * init.c (build_delete): Check access to operator delete before 299918334Speter calling the destructor. 300018334Speter * method.c (build_opfncall, DELETE_EXPR): build_method is allowed to 300118334Speter return error_mark_node. 300218334Speter * call.c (build_method_call): Use the one-argument op delete even if 300318334Speter it's an error. 300418334Speter 300518334Speter * init.c (build_new): Fix -fthis-is-variable support. 300618334Speter * call.c (build_method_call): Ditto. 300718334Speter 300818334Speter * call.c (convert_harshness): Make conversion from a pointer to bool 300918334Speter worse than conversion to another pointer. 301018334Speter 301118334SpeterSat Jan 28 16:46:10 1995 Jason Merrill <jason@phydeaux.cygnus.com> 301218334Speter 301318334Speter * init.c (build_new): Check new return value if -fcheck-new. 301418334Speter 301518334Speter * lex.c (check_newline): Clear end_of_file when we're done, too. 301618334Speter 301718334SpeterSat Jan 28 10:38:39 1995 Mike Stump <mrs@cygnus.com> 301818334Speter 301918334Speter * decl2.c (finish_vtable_vardecl): Make rtti TD tables follow 302018334Speter vtables whereever they go. 302118334Speter 302218334Speter * gc.c (build_t_desc): Remove old way of setting it up, as it wasn't 302318334Speter right. 302418334Speter 302518334SpeterSat Jan 28 09:10:44 1995 Mike Stump <mrs@cygnus.com> 302618334Speter 302718334Speter * decl2.c (finish_vtable_vardecl): Now set the 302818334Speter interface/implementation of vtables on the first virtual function, 302918334Speter if one exists, otherwise we use the old method. This is a major win 303018334Speter in terms of cutting down the size of objects and executables in 303118334Speter terms of text space and data space. Now most of the savings that 303218334Speter #pragma interface/implementation gives is automatic in a fair number 303318334Speter of cases. 303418334Speter 303518334SpeterSat Jan 28 04:57:33 1995 Jason Merrill <jason@phydeaux.cygnus.com> 303618334Speter 303718334Speter * decl.c (grokdeclarator): Discard the template parameters in a 303818334Speter template constructor declaration so that the function is always 303918334Speter named constructor_name (ctype). 304018334Speter 304118334Speter * lex.c (check_newline): Use ungetc to put back the character before 304218334Speter calling HANDLE_PRAGMA. 304318334Speter 304418334SpeterFri Jan 27 17:23:47 1995 Mike Stump <mrs@cygnus.com> 304518334Speter 304618334Speter * decl2.c (check_classfn): If the cname is T<int> and fn_name is T, 304718334Speter make sure we still match them. 304818334Speter 304918334SpeterFri Jan 27 16:32:10 1995 Jason Merrill <jason@phydeaux.cygnus.com> 305018334Speter 305118334Speter * parse.y: Add END_OF_LINE token. 305218334Speter 305318334Speter * lex.c (check_newline): Set linemode when we see a # directive, and 305418334Speter unset it when we're done. Turn all 'return's into 'goto skipline'. 305518334Speter Fix all uses of '\n', since we won't see it anymore. Put back the 305618334Speter character we read before checking for a sysv or target pragma. 305718334Speter (real_yylex): If we see an EOF in linemode, return END_OF_LINE. 305818334Speter (handle_sysv_pragma): Don't look at the input stream; quit when we 305918334Speter see an END_OF_LINE token. 306018334Speter 306118334Speter * input.c (getch): Return EOF if we're in line mode and at the end 306218334Speter of a line. 306318334Speter (put_back): Don't put back an EOF. 306418334Speter 306518334SpeterThu Jan 26 19:26:34 1995 Mike Stump <mrs@cygnus.com> 306618334Speter 306718334Speter * except.c (expand_throw): Do the newing of the exception object 306818334Speter before we load the type descriptor or the address so that we don't 306918334Speter wipe any of the values out. 307018334Speter 307118334SpeterThu Jan 26 19:20:00 1995 Mike Stump <mrs@cygnus.com> 307218334Speter 307318334Speter * except.c (init_exception_processing): Don't use r12 on the rs6000. 307418334Speter 307518334SpeterTue Jan 24 16:36:31 1995 Jason Merrill <jason@phydeaux.cygnus.com> 307618334Speter 307718334Speter * decl.c (grokparms): Don't try to build up a reference at this point. 307818334Speter 307918334Speter * typeck2.c (build_functional_cast): Don't assume that a NOP_EXPR 308018334Speter will suffice to convert from integer_zero_node. 308118334Speter 308218334SpeterWed Jan 25 15:02:09 1995 David S. Miller (davem@nadzieja.rutgers.edu) 308318334Speter 308418334Speter * class.c (instantiate_type): Change error message text. 308518334Speter * typeck2.c (store_init_value): Likewise. 308618334Speter 308718334SpeterMon Jan 23 21:57:14 1995 Mike Stump <mrs@cygnus.com> 308818334Speter 308918334Speter * pt.c (tsubst): When we copy a node, don't forget to copy 309018334Speter TREE_CHAIN, we use it later. 309118334Speter 309218334SpeterMon Jan 23 03:33:47 1995 Jason Merrill <jason@phydeaux.cygnus.com> 309318334Speter 309418334Speter * typeck.c (convert_for_assignment): Initialize variable before use. 309518334Speter 309618334SpeterFri Jan 20 01:17:59 1995 Jason Merrill <jason@phydeaux.cygnus.com> 309718334Speter 309818334Speter * g++.c (main): Link with both libstdc++ and libg++ if called as 309918334Speter something ending with "g++", otherwise only libstdc++. Move -lm to 310018334Speter the end of the line. 310118334Speter 310218334SpeterThu Jan 19 15:43:11 1995 Jason Merrill <jason@phydeaux.cygnus.com> 310318334Speter 310418334Speter * call.c (build_method_call): Don't mess with 'this' before calling 310518334Speter compute_conversion_costs. 310618334Speter 310718334SpeterWed Jan 18 15:40:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> 310818334Speter 310918334Speter * search.c (get_matching_virtual): Give line number for previous 311018334Speter declaration. 311118334Speter 311218334Speter * call.c (convert_harshness): Handle conversions to references 311318334Speter better. 311418334Speter 311518334Speter * cvt.c (build_up_reference): OK, handle {MIN,MAX}_EXPR *properly*. 311618334Speter 311718334SpeterWed Jan 18 15:21:38 1995 Mike Stump <mrs@cygnus.com> 311818334Speter 311918334Speter * class.c (instantiate_type): Use DECL_CHAIN to walk lists instead, 312018334Speter as the TREE_CHAIN for methods will take us to the next differently 312118334Speter named function, DECL_CHAIN won't. 312218334Speter 312318334SpeterWed Jan 18 14:26:59 1995 Jason Merrill <jason@phydeaux.cygnus.com> 312418334Speter 312518334Speter * tree.c (lvalue_p): Handle {MIN,MAX}_EXPR. 312618334Speter 312718334Speter * decl2.c (lang_decode_option): -Wall implies -Wparentheses. 312818334Speter warn_parentheses defaults to 0. 312918334Speter 313018334Speter * decl.c (grokparms): Put back call to require_instantiated_type. 313118334Speter 313218334SpeterTue Jan 17 19:56:15 1995 Mike Stump <mrs@cygnus.com> 313318334Speter 313418334Speter * except.c (exception_section): Use the data section on the rs6000. 313518334Speter Change calling convention for named_section. 313618334Speter 313718334SpeterWed Jan 17 18:20:57 1994 Fergus Henderson <fjh@munta.cs.mu.oz.au> 313818334Speter 313918334Speter * cp-tree.h : Make if (x=0) warn with wall 314018334Speter * parse.y : Make if (x=0) warn with wall 314118334Speter 314218334SpeterTue Jan 17 14:12:00 1995 Jason Merrill <jason@phydeaux.cygnus.com> 314318334Speter 314418334Speter * decl.c (BOOL_TYPE_SIZE): BITS_PER_WORD if SLOW_BYTE_ACCESS, 314518334Speter BITS_PER_UNIT otherwise. 314618334Speter 314718334Speter * search.c (get_matching_virtual): Don't check the binfo if the 314818334Speter types are the same. 314918334Speter 315018334Speter * cvt.c (cp_convert): Just call truthvalue_conversion to convert to 315118334Speter bool. 315218334Speter 315318334SpeterMon Jan 16 13:28:48 1995 Jason Merrill <jason@phydeaux.cygnus.com> 315418334Speter 315518334Speter * various: Use boolean_type_node, boolean_true_node, 315618334Speter boolean_false_node. 315718334Speter 315818334Speter * search.c (get_matching_virtual): Allow covariant returns that 315918334Speter don't require pointer adjustment. 316018334Speter 316118334Speter * typeck.c (build_conditional_expr): Don't call default_conversion 316218334Speter on ifexp. 316318334Speter 316418334Speter * cvt.c (build_up_reference): Handle MIN_EXPR and MAX_EXPR. 316518334Speter 316618334Speter * decl.c (grokdeclarator): Upgrade warning about &const to pedwarn. 316718334Speter 316818334SpeterSun Jan 15 22:17:32 1995 dcb@lovat.fmrco.COM (David Binderman) 316918334Speter 317018334Speter * pt.c (do_function_instantiation): Free targs once we're done. 317118334Speter 317218334SpeterSun Jan 15 22:17:32 1995 Jason Merrill <jason@phydeaux.cygnus.com> 317318334Speter 317418334Speter * decl.c (BOOL_TYPE_SIZE): Defaults to BITS_PER_WORD. 317518334Speter (init_decl_processing): Use BOOL_TYPE_SIZE instead of CHAR_TYPE_SIZE 317618334Speter for bool. 317718334Speter 317818334SpeterSat Jan 14 05:33:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> 317918334Speter 318018334Speter * decl2.c (finish_file): We need to mess up if there are any 318118334Speter variables in the list, not just if there is one with a constructor. 318218334Speter 318318334SpeterFri Jan 13 14:42:55 1995 Jason Merrill <jason@phydeaux.cygnus.com> 318418334Speter 318518334Speter * decl.c (duplicate_decls): Propagate DECL_STATIC_{CON,DE}STRUCTOR. 318618334Speter (finish_function): Handle DECL_STATIC_{CON,DE}STRUCTOR. 318718334Speter (finish_function): Trust rest_of_compilation. 318818334Speter 318918334Speter * decl2.c (finish_file): Also call functions designated as static 319018334Speter constructors/destructors. 319118334Speter 319218334Speter * decl.c (grokdeclarator): Allow access decls of operator functions. 319318334Speter (grokparms): Only do convert_for_initialization if the initializer 319418334Speter has a type. 319518334Speter (duplicate_decls): Put back push_obstacks_nochange call. 319618334Speter 319718334Speter * lex.c (real_yylex): Downgrade complaint about the escape sequence 319818334Speter being too large from pedwarn to warning. 319918334Speter 320018334Speter * decl.c (grokdeclarator): Don't complain about long long in system 320118334Speter headers. 320218334Speter 320318334Speter * lex.c (real_yylex): Handle digraphs. 320418334Speter 320518334SpeterThu Jan 12 12:17:24 1995 Jason Merrill <jason@phydeaux.cygnus.com> 320618334Speter 320718334Speter * decl.c (init_decl_processing): -f{no-,}strict-prototype only 320818334Speter affects C linkage declarations now. 320918334Speter 321018334Speter * typeck.c (comp_target_types): Grok simple contravariant conversions. 321118334Speter (common_type): t1 and t2 are interchangeable. 321218334Speter 321318334Speter * various: Test return value of comp_target_types differently in 321418334Speter different places; it now returns -1 for a contravariant conversion 321518334Speter (which is fine in symmetric cases). 321618334Speter 321718334Speter (common_type): Prefer long double to double even when 321818334Speter they have the same precision. 321918334Speter 322018334Speter * decl.c (grokparms): Call convert_for_initialization to check 322118334Speter default arguments. 322218334Speter 322318334Speter * init.c (build_new): void_type_node has a size (of 0). 322418334Speter 322518334Speter * decl.c (decls_match): Also check for agreement of TREE_READONLY 322618334Speter and TREE_THIS_VOLATILE. 322718334Speter (push_class_level_binding): Properly handle shadowing of 322818334Speter nested tags by fields. 322918334Speter 323018334Speter * search.c (dfs_pushdecls): Ditto. 323118334Speter 323218334Speter * decl2.c (finish_file): Don't second-guess self-initialization. 323318334Speter 323418334Speter * cvt.c (convert_to_reference): Work with expr directly, rather than 323518334Speter a copy. 323618334Speter 323718334Speter * decl.c (push_overloaded_decl): Only shadow artificial TYPE_DECLs. 323818334Speter 323918334Speter * init.c (add_friend): Downgrade duplicate friend message from 324018334Speter pedwarn to warning. 324118334Speter 324218334Speter * decl.c (duplicate_decls): Push obstacks before calling common_type. 324318334Speter 324418334SpeterThu Jan 12 17:15:21 1995 Michael Ben-Gershon <mybg@cs.huji.ac.il> 324518334Speter 324618334Speter * except.c (push_eh_entry): set LABEL_PRESERVE_P flag for 324718334Speter exception table labels. 324818334Speter (expand_start_all_catch): Ditto. 324918334Speter (expand_leftover_cleanups): Ditto. 325018334Speter (expand_end_catch_block): Ditto. 325118334Speter * except.c (make_first_label): new function. 325218334Speter (expand_start_all_catch): add a call to make_first_label() before 325318334Speter using a label as a jump destination. 325418334Speter (expand_end_all_catch): Ditto. 325518334Speter (expand_leftover_cleanups): Ditto. 325618334Speter (expand_end_catch_block): Ditto. 325718334Speter (expand_builtin_throw): Ditto. 325818334Speter (expand_throw): Ditto. 325918334Speter * except.c: Add ARM processor support for exception handling. 326018334Speter 326118334SpeterThu Jan 12 12:17:24 1995 Jason Merrill <jason@phydeaux.cygnus.com> 326218334Speter 326318334Speter (complete_array_type): Copy code from C frontend. 326418334Speter 326518334Speter * lex.c (real_yylex): Don't multiply the length of a wide string 326618334Speter literal by WCHAR_BYTES. 326718334Speter 326818334Speter * decl.c (pushdecl): Check for redeclaration of wchar_t here. 326918334Speter (duplicate_decls): Instead of here. 327018334Speter (define_label): Complain about a label named wchar_t. 327118334Speter (grokdeclarator): Complain about declarations of 327218334Speter operator-function-ids as non-functions. 327318334Speter 327418334Speter * typeck.c (unary_complex_lvalue): Also wrap prefix -- and ++ in 327518334Speter COMPOUND_EXPRs. 327618334Speter (build_unary_op): Wrap unary plus in a NON_LVALUE_EXPR. 327718334Speter 327818334Speter * lex.c (real_yylex): Don't skip whitespace when reading the next 327918334Speter character after ->. 328018334Speter 328118334SpeterWed Jan 11 16:32:49 1995 Mike Stump <mrs@cygnus.com> 328218334Speter 328318334Speter * except.c: Allow cc1plus to be built with native compiler on rs6000. 328418334Speter (expand_start_all_catch): Add assemble_external calls for various 328518334Speter routines we call. 328618334Speter (expand_leftover_cleanups): Ditto. 328718334Speter (expand_start_catch_block): Ditto. 328818334Speter (do_unwind): Ditto. 328918334Speter (expand_builtin_throw): Ditto. 329018334Speter 329118334SpeterWed Jan 11 01:05:42 1995 Jason Merrill <jason@phydeaux.cygnus.com> 329218334Speter 329318334Speter * decl.c (pushtag): Only look for a previous decl in the current 329418334Speter binding level. Use explicit global scope in DECL_NESTED_TYPENAME. 329518334Speter 329618334Speter * gxx.gperf: Add __signature__ and __sigof__ keywords. 329718334Speter 329818334Speter * decl2.c (lang_decode_option): -ansi does not set flag_no_asm. It 329918334Speter does set flag_no_gnu_keywords and flag_operator_names. 330018334Speter 330118334Speter * lex.c (init_lex): 'overload' is not a keyword unless -traditional. 330218334Speter Unset extension keywords if -fno-gnu-keywords. 330318334Speter Allow operator names ('bitand') if -foperator-names. 330418334Speter Never unset 'asm'; -fno-asm only affects 'typeof'. 330518334Speter 330618334Speter * decl.c (lookup_name_real): The got_object special lookup only 330718334Speter applies to types. 330818334Speter 330918334SpeterTue Jan 10 18:07:51 1995 Jason Merrill <jason@phydeaux.cygnus.com> 331018334Speter 331118334Speter * spew.c (yylex): Also use DECL_NESTED_TYPENAME if got_object is set. 331218334Speter 331318334Speter * parse.y (primary): Unset got_object after all rules that use the 331418334Speter 'object' nonterminal. 331518334Speter (object): Set got_object. 331618334Speter 331718334Speter * lex.h: Declare got_object. 331818334Speter 331918334Speter * decl.c (lookup_name_real): Also lookup names in the context of an 332018334Speter object specified. 332118334Speter 332218334SpeterTue Jan 10 14:30:30 1995 Mike Stump <mrs@cygnus.com> 332318334Speter 332418334Speter * typeck.c (get_member_function_from_ptrfunc): Use ptrdiff_type_node 332518334Speter for things that have to be added to pointers, not size_type. Cures 332618334Speter problems with pointer to members on Alphas. 332718334Speter (build_binary_op_nodefault): Ditto. 332818334Speter (get_delta_difference_: Ditto. 332918334Speter (build_ptrmemfunc): Ditto. 333018334Speter 333118334SpeterTue Jan 10 01:49:25 1995 Jason Merrill <jason@phydeaux.cygnus.com> 333218334Speter 333318334Speter * decl.c (pushtag): Stick the new decl in TYPE_NAME before pushing 333418334Speter it. 333518334Speter 333618334Speter * typeck.c (build_component_ref): Don't build up a COMPONENT_REF 333718334Speter when dealing with overloaded member functions; just act like 333818334Speter build_offset_ref. 333918334Speter (commonparms): Remove misleading comment. 334018334Speter 334118334Speter * decl.c (duplicate_decls): Complain about repeated default 334218334Speter arguments here. 334318334Speter (redeclaration_error_message): Instead of here. 334418334Speter (pushdecl): Complain about missing default arguments here. 334518334Speter (grokparms): Instead of here. 334618334Speter (lookup_name_current_level): Also match on DECL_ASSEMBLER_NAME. 334718334Speter (grok_reference_init): Do not complain about missing initializer if 334818334Speter declared 'extern'. 334918334Speter 335018334Speter * search.c (lookup_field): Don't return a TYPE_DECL if there is a 335118334Speter function alternative and want_type is not set. 335218334Speter 335318334SpeterMon Jan 9 18:16:23 1995 Jason Merrill <jason@phydeaux.cygnus.com> 335418334Speter 335518334Speter * decl.c (pushtag): Don't set TYPE_NAME to an identifier. Do push 335618334Speter the decl when the type has no TYPE_NAME. 335718334Speter (lookup_nested_type): Don't assume that type has TYPE_NAME set. 335818334Speter (lookup_name_real): Call lookup_field with want_type = 335918334Speter prefer_type. 336018334Speter 336118334Speter * search.c (lookup_field): Handle want_type properly in the presence 336218334Speter of fields with the same name. 336318334Speter 336418334Speter * decl.c (set_nested_typename): Set nested name for file-scope types 336518334Speter to include leading ::. 336618334Speter (pushdecl): Set the nested typename if the decl doesn't have one, 336718334Speter rather than if the type's canonical decl doesn't have one. 336818334Speter 336918334SpeterMon Jan 9 16:48:16 1995 Steve Chamberlain (sac@jonny.cygnus.com) 337018334Speter 337118334Speter * typeck.c (pointer_int_sum): Use offset size when calculating 337218334Speter index expression. 337318334Speter 337418334SpeterMon Jan 9 03:44:33 1995 Jason Merrill <jason@phydeaux.cygnus.com> 337518334Speter 337618334Speter * typeck.c (convert_for_assignment): Complain about contravariance 337718334Speter violation here. 337818334Speter (comp_target_types): Instead of here. 337918334Speter (build_unary_op): resolve_offset_ref before checking for a valid 338018334Speter type. 338118334Speter 338218334Speter * spew.c (yylex): Decrement looking_for_typename after we see a 338318334Speter _DEFN. 338418334Speter 338518334Speter * decl.c (pushdecl): Don't install an artificial TYPE_DECL in 338618334Speter IDENTIFIER_LOCAL_VALUE if we already have a decl with that name. 338718334Speter 338818334Speter * typeck.c (convert_for_assignment): Converting pointers to bool 338918334Speter does not need a cast. 339018334Speter 339118334SpeterSun Jan 8 18:16:45 1995 Jason Merrill <jason@phydeaux.cygnus.com> 339218334Speter 339318334Speter * class.c (instantiate_type): Initialize nsubsts parm. 339418334Speter 339518334Speter * pt.c (do_function_instantiation): Ditto. 339618334Speter 339718334SpeterSat Jan 7 14:37:05 1995 Jason Merrill <jason@phydeaux.cygnus.com> 339818334Speter 339918334Speter * pt.c (tsubst): Use TREE_STATIC instead of DECL_INLINE && 340018334Speter DECL_SAVED_INSNS to determine whether or not we've seen a definition 340118334Speter of this function. 340218334Speter (instantiate_template): Ditto. 340318334Speter 340418334Speter * call.c (convert_harshness): Allow const reference binding when 340518334Speter called from the overloading code, but not when called from 340618334Speter can_convert (since it isn't a conversion). 340718334Speter (convert_harshness): Put back some disabled code. 340818334Speter 340918334SpeterFri Jan 6 14:10:57 1995 Jason Merrill <jason@phydeaux.cygnus.com> 341018334Speter 341118334Speter * call.c (convert_harshness): There is no implicit conversion from 341218334Speter void* to other pointer types (unless the parameter is (void*)0). 341318334Speter (convert_harshness): Non-lvalues do not convert to reference types. 341418334Speter 341518334Speter * class.c (finish_struct_methods): Still set 341618334Speter TYPE_HAS_{INT,REAL}_CONVERSION. 341718334Speter 341818334Speter * call.c (can_convert): Don't use aggregate initialization. 341918334Speter 342018334Speter * cp-tree.h: Declare lookup_conversions. 342118334Speter 342218334SpeterThu Jan 5 21:08:00 1995 Mike Stump <mrs@cygnus.com> 342318334Speter 342418334Speter * parse.y (simple_stmt): Fix duplicate case value error messages to 342518334Speter be more readable. 342618334Speter 342718334SpeterWed Jan 4 16:44:19 1995 Jason Merrill <jason@phydeaux.cygnus.com> 342818334Speter 342918334Speter * cvt.c (build_type_conversion): Total rewrite to use 343018334Speter convert_harshness instead of reproducing conversion logic here. Now 343118334Speter much shorter. 343218334Speter 343318334Speter * call.c (convert_harshness): Support conversions to bool. 343418334Speter (can_convert): Checks whether a conversion is less harsh 343518334Speter than USER_CODE, for build_type_conversion. 343618334Speter 343718334Speter * search.c (add_conversions): Function for passing to dfs_walk which 343818334Speter adds all the type conversion operators in the current type to a list. 343918334Speter (lookup_conversions): Calls dfs_walk with add_conversions and return 344018334Speter the list. 344118334Speter (dfs_walk): Don't require a qfn. 344218334Speter 344318334Speter * cp-tree.h: Lose CLASSTYPE_CONVERSIONS hackery. 344418334Speter (CLASSTYPE_FIRST_CONVERSION): Points to elt 1 of CLASSTYPE_METHOD_VEC. 344518334Speter 344618334Speter * class.c (finish_struct_bits): Lose CLASSTYPE_CONVERSIONS hackery. 344718334Speter (grow_method): A separate function for building onto the growing 344818334Speter method vector. 344918334Speter (finish_struct_methods): Use it. Put all type conversion operators 345018334Speter right after the constructors. Perhaps we should sort the methods 345118334Speter alphabetically? 345218334Speter 345318334SpeterMon Jan 2 14:42:58 1995 Jason Merrill <jason@phydeaux.cygnus.com> 345418334Speter 345518334Speter * call.c (build_method_call): Lose another misleading shortcut. 345618334Speter 345718334SpeterFri Dec 30 17:57:30 1994 Mike Stump <mrs@cygnus.com> 345818334Speter 345918334Speter * gc.c (build_bltn_desc): Handle bool as a built-in type. 346018334Speter 346118334SpeterFri Dec 30 14:20:21 1994 Mike Stump <mrs@cygnus.com> 346218334Speter 346318334Speter * tree.c (layout_vbasetypes): Ensure that we don't loose alignment 346418334Speter on the complete type because of small virtual bases. 346518334Speter 346618334SpeterFri Dec 30 12:22:29 1994 Mike Stump <mrs@cygnus.com> 346718334Speter 346818334Speter * decl.c (n_incomplete): Bump n_incomplete up to int to match C 346918334Speter front end. 347018334Speter (pushdecl): Also count decls pushed that are of a type being defined 347118334Speter as incomplete things. 347218334Speter * class.c (finish_struct): Move hack_incomplete_structures up to 347318334Speter just after we set it as not being defined, so that the decls we 347418334Speter build for RTTI don't count as incomplete. 347518334Speter 347618334SpeterThu Dec 29 18:20:57 1994 Mike Stump <mrs@cygnus.com> 347718334Speter 347818334Speter * pt.c (tsubst): Fix problem with defining constructors in templated 347918334Speter classes with virtual bases. 348018334Speter 348118334SpeterWed Dec 28 08:31:00 1994 Mike Stump <mrs@cygnus.com> 348218334Speter 348318334Speter * parse.y (TYPEID): Strip top-level cv-qualifiers on typeid 348418334Speter expressions. 348518334Speter * gc.c (build_typeid): Ditto. 348618334Speter 348718334SpeterThu Dec 22 17:26:33 1994 Mike Stump <mrs@cygnus.com> 348818334Speter 348918334Speter * cvt.c (build_up_reference): Fix breakage introduced on Nov 29, 349018334Speter don't assert on complex AGGR inits. 349118334Speter 349218334SpeterThu Dec 22 14:32:31 1994 Mike Stump <mrs@cygnus.com> 349318334Speter 349418334Speter * method.c (build_overload_value): Handle pointer to members as 349518334Speter template arguments. 349618334Speter 349718334SpeterThu Dec 22 13:09:07 1994 Mike Stump <mrs@cygnus.com> 349818334Speter 349918334Speter * typeck.c (unary_complex_lvalue): Don't call sorry if we know how 350018334Speter to do take the address of a data member for a pointer to data 350118334Speter member. 350218334Speter 350318334SpeterThu Dec 22 10:04:19 1994 Mike Stump <mrs@cygnus.com> 350418334Speter 350518334Speter * decl.c (grokdeclarator): Use the typedef name for linkage if the 350618334Speter type doesn't otherwise have a name. 350718334Speter 350818334Speter * decl2.c (grokfield): Ditto. 350918334Speter 351018334Speter * class.c (finish_struct): Since we reuse the TYPE_DECL for the 351118334Speter DECL_NAME of enums, structs and classes, we have to avoid trying to 351218334Speter put it in the TYPE_FIELDS again. 351318334Speter 351418334SpeterWed Dec 21 11:07:05 1994 Mike Stump <mrs@cygnus.com> 351518334Speter 351618334Speter * decl2.c (check_classfn): Ignore this parameter on static functions 351718334Speter when checking to see if we match. 351818334Speter 351918334SpeterTue Dec 20 17:47:02 1994 Mike Stump <mrs@cygnus.com> 352018334Speter 352118334Speter * typeck.c (unary_complex_lvalue): Handle address of non-left most 352218334Speter pointers to members by calling get_delta_difference. 352318334Speter 352418334SpeterMon Dec 19 22:40:53 1994 Mike Stump <mrs@cygnus.com> 352518334Speter 352618334Speter * decl2.c (check_classfn): Don't use decls_match yet, as it modifies 352718334Speter static functions to early. 352818334Speter 352918334SpeterThu Dec 19 22:37:48 1994 Mike Stump <mrs@cygnus.com> 353018334Speter 353118334Speter * method.c (make_thunk): Handle encoding of positive thunk offsets. 353218334Speter 353318334SpeterSat Dec 17 13:29:50 1994 Doug Evans <dje@canuck.cygnus.com> 353418334Speter 353518334Speter * Make-lang.in (.PHONY): Tell GNU make C++ and c++ are phony targets. 353618334Speter 353718334SpeterThu Dec 15 16:32:12 1994 Mike Stump <mrs@cygnus.com> 353818334Speter 353918334Speter * decl2.c (check_classfn): Use decls_match to check if this has 354018334Speter already been declared, as the DECL_ASSEMBLER_NAME may have been 354118334Speter changed via asm("new_name"). 354218334Speter * decl.c (decls_match): Make public. 354318334Speter 354418334SpeterThu Dec 15 15:17:55 1994 Mike Stump <mrs@cygnus.com> 354518334Speter 354618334Speter * *.[chy] (expand_aggr_init) Add fourth argument to handle 354718334Speter distinction between = init and (init) style of initializations. 354818334Speter * *.[chy] (finish_decl): Add fifth argument to to handle 354918334Speter distinction between = init and (init) style of initializations. 355018334Speter 355118334SpeterTue Dec 13 19:16:05 1994 Mike Stump <mrs@cygnus.com> 355218334Speter 355318334Speter Fix some random `explicit' bugs. 355418334Speter 355518334Speter * cvt.c (convert_to_reference): Add third parameter to 355618334Speter convert_force. 355718334Speter (convert_force): Ditto. 355818334Speter * call.c (build_method_call): Ditto. 355918334Speter * decl2.c (setup_vtbl_ptr): Ditto. 356018334Speter * init.c (expand_virtual_init): Ditto. 356118334Speter (build_member_call): Ditto. 356218334Speter (build_delete): Ditto. 356318334Speter (build_vbase_delete): Ditto. 356418334Speter * typeck.c (build_component_addr): Ditto. 356518334Speter (build_c_cast): Ditto. 356618334Speter (build_modify_expr): Ditto. 356718334Speter * cp-tree.h (CONV_NONCONVERTING): Ditto. Add so that we can 356818334Speter distinguish the context in which the conversion appears. Add thrid 356918334Speter argument to build_c_cast. 357018334Speter * cvt.c (cp_convert): Pass whether or not we want to consider 357118334Speter non-converting constructors down to build_method_call. 357218334Speter * decl2.c (reparse_absdcl_as_casts): Add third argument to 357318334Speter build_c_cast. 357418334Speter * gc.c (build_m_desc): Ditto. 357518334Speter * init.c (build_new): Ditto. 357618334Speter * parse.y (expr_no_commas): Ditto. 357718334Speter (primary): Ditto. 357818334Speter * typeck.c (build_x_function_call): Ditto. 357918334Speter (build_static_cast): Ditto. 358018334Speter (build_reinterpret_cast): Ditto. 358118334Speter (build_const_cast): Ditto. 358218334Speter (build_c_cast): Ditto. 358318334Speter (build_ptrmemfunc): Ditto. 358418334Speter * typeck2.c (build_functional_cast): Ditto. 358518334Speter * init.c (expand_aggr_init): Added LOOKUP_ONLYCONVERTING to 358618334Speter expand_aggr_init_1 as inits are converted to the destination type. 358718334Speter 358818334SpeterTue Dec 13 16:18:57 1994 Jason Merrill <jason@phydeaux.cygnus.com> 358918334Speter 359018334Speter * Make-lang.in (cc1plus): Depends on c-pragma.o. 359118334Speter 359218334Speter * Makefile.in (OBJ{DEP,}S): Add ../c-pragma.o. 359318334Speter 359418334Speter * lex.c (check_newline): If the #pragma is not recognized by g++, 359518334Speter try machine-specific ones too. 359618334Speter (handle_sysv_pragma): Copied from c-lex.c. 359718334Speter 359818334SpeterMon Dec 12 23:53:06 1994 Mike Stump <mrs@cygnus.com> 359918334Speter 360018334Speter * except.c (expand_throw): Fix Dec 6th change, build_new likes a 360118334Speter reference better. 360218334Speter 360318334SpeterMon Dec 12 18:01:00 1994 Jason Merrill <jason@phydeaux.cygnus.com> 360418334Speter 360518334Speter * typeck.c (build_binary_op): Lose checks on TYPE_PTRMEMFUNC_P with 360618334Speter IS_AGGR_TYPE, since now they will not both be set on the same type. 360718334Speter 360818334Speter * pt.c (do_pending_expansions): Don't clear TREE_PUBLIC on 360918334Speter instantiations controlled by -fexternal-templates. 361018334Speter 361118334Speter * decl.c (duplicate_decls): Don't complain about different values of 361218334Speter __attribute__ ((const)) and ((noreturn)). 361318334Speter 361418334SpeterFri Dec 9 18:17:37 1994 Doug Evans <dje@cygnus.com> 361518334Speter 361618334Speter * Makefile.in (BISONFLAGS): Delete --yacc. 361718334Speter (PARSE_H): Depend on $(PARSE_C), for parallel makes. 361818334Speter (PARSE_C): Undo last patch. 361918334Speter 362018334SpeterFri Dec 2 10:44:36 1994 Mike Stump (mrs@wombat.gnu.ai.mit.edu) 362118334Speter 362218334Speter * Makefile.in (BISONFLAGS): Add --yacc so that output winds up in 362318334Speter y.tab.c. 362418334Speter 362518334SpeterThu Dec 8 17:39:46 1994 Jason Merrill <jason@phydeaux.cygnus.com> 362618334Speter 362718334Speter * decl.c (finish_decl): Don't call obscure_complex_init for decls 362818334Speter of indeterminate size. 362918334Speter 363018334SpeterWed Dec 7 16:49:22 1994 Jason Merrill <jason@phydeaux.cygnus.com> 363118334Speter 363218334Speter * decl.c (obscure_complex_init): Function to tweak the decl to 363318334Speter prevent expand_decl from tring to initialize it. 363418334Speter (finish_decl): Use it rather than writing the same code in three 363518334Speter different places. 363618334Speter 363718334Speter * parse.y (bad_parm): Stop trying to support parms without types. 363818334Speter 363918334SpeterWed Dec 7 12:06:56 1994 Mike Stump <mrs@cygnus.com> 364018334Speter 364118334Speter * decl2.c (grokfield): Make asm specs on static member functions 364218334Speter work. 364318334Speter 364418334SpeterTue Dec 6 15:43:20 1994 Mike Stump <mrs@cygnus.com> 364518334Speter 364618334Speter * except.c (expand_throw): Make a copy of the thrown object. 364718334Speter 364818334SpeterTue Dec 6 14:16:34 1994 Jason Merrill <jason@phydeaux.cygnus.com> 364918334Speter 365018334Speter * parse.y: : has lower precedence than =. 365118334Speter 365218334SpeterTue Dec 6 12:46:17 1994 Mike Stump <mrs@cygnus.com> 365318334Speter 365418334Speter * decl.c (pushdecl): Use DECL_NAME of VAR_DECLs to avoid namespace 365518334Speter manglings. 365618334Speter (grokvardecl): Add namespace into variable name. 365718334Speter 365818334SpeterTue Dec 6 11:26:55 1994 Mike Stump <mrs@cygnus.com> 365918334Speter 366018334Speter * decl2.c (current_namespace_id): New routine to transform a simple 366118334Speter name into a name in a namespace. 366218334Speter * decl.c (grokdeclarator): Use it. 366318334Speter * decl2.c (get_namespace_id): Find the name of the current 366418334Speter namespace. 366518334Speter (push_namespace, pop_namespace): Complete out missing 366618334Speter functionality. 366718334Speter 366818334SpeterMon Dec 5 17:11:51 1994 Jason Merrill <jason@phydeaux.cygnus.com> 366918334Speter 367018334Speter * class.c (finish_struct): Don't use LONG_LONG_TYPE_SIZE, as it may 367118334Speter not be defined. Fix warning message for enums and restore warning 367218334Speter for non-enums. 367318334Speter 367418334Speter * decl2.c (push_namespace): Dummy function. 367518334Speter (pop_namespace): Ditto. 367618334Speter (do_namespace_alias): Ditto. 367718334Speter (do_using_decl): Ditto. 367818334Speter (do_using_directive): Ditto. 367918334Speter 368018334Speter * parse.y: New token NSNAME for namespace names. 368118334Speter (extdef): Add namespace, using definitions. 368218334Speter (using_decl): New rule for using declarations. 368318334Speter (any_id): New rule for identifiers with any degree of scoping. 368418334Speter (identifier): Add NSNAME. 368518334Speter (notype_identifier): Ditto. 368618334Speter (component_decl): Add using_decl. 368718334Speter (nested_name_specifier): Add NSNAME SCOPE. 368818334Speter 368918334Speter * typeck.c (convert_for_assignment): Handle conversions between 369018334Speter enums and bool. 369118334Speter 369218334Speter * decl.c (duplicate_decls): Only propagate DECL_MAIN_VARIANT on 369318334Speter FUNCTION_DECLs. 369418334Speter 369518334SpeterMon Dec 5 13:03:16 1994 Mike Stump <mrs@cygnus.com> 369618334Speter 369718334Speter * class.c (finish_struct): Give an error if one tries to declare a 369818334Speter bit-field's size greater than a long long, as the backend will dump. 369918334Speter It is not an error to declare an enum bit-field greater than its 370018334Speter precision. Warn if an enum bit-field is too small to hold all 370118334Speter its values. 370218334Speter 370318334SpeterMon Dec 5 11:41:50 1994 Mike Stump <mrs@cygnus.com> 370418334Speter 370518334Speter * typeck.c (convert_for_assignment): Use cp_convert instead of 370618334Speter convert so that we don't get static casts. 370718334Speter 370818334SpeterSun Dec 4 11:59:01 1994 Mike Stump <mrs@cygnus.com> 370918334Speter 371018334Speter * cvt.c (cp_convert): Don't complain about int->enum conversion if 371118334Speter we are doing static casts. 371218334Speter 371318334SpeterFri Dec 2 18:32:41 1994 Mike Stump <mrs@cygnus.com> 371418334Speter 371518334Speter * error.c (dump_expr): Do something more intelligent with SAVE_EXPRs 371618334Speter when dumping expressions in error messages. 371718334Speter 371818334SpeterFri Dec 2 17:04:27 1994 Mike Stump <mrs@cygnus.com> 371918334Speter 372018334Speter * gc.c (build_dynamic_cast): Change interface to libg++, ensure that 372118334Speter the return type is the right type, and make references work. 372218334Speter 372318334SpeterFri Dec 2 16:36:43 1994 Jason Merrill <jason@phydeaux.cygnus.com> 372418334Speter 372518334Speter * decl.c (poplevel): Don't be confused by function-scope 372618334Speter declarations of non-nested functions. 372718334Speter (duplicate_decls): Propagate DECL_MAIN_VARIANT. 372818334Speter (pushdecl): Use duplicate_decls to copy info from old decl into new 372918334Speter function-scope one rather than doing it here. 373018334Speter 373118334Speter * decl2.c (mark_inline_for_output): Deal with the DECL_MAIN_VARIANT 373218334Speter of this decl, in case this is a function-scope declaration. 373318334Speter 373418334Speter * decl.c (finish_enum): Make sure that the type has the right 373518334Speter precision when we call fixup_*_type. 373618334Speter 373718334SpeterTue Nov 29 19:12:07 1994 Jason Merrill <jason@phydeaux.cygnus.com> 373818334Speter 373918334Speter * cvt.c (build_up_reference): Strip superfluous NOP_EXPRs; we do 374018334Speter want to build up references to rvalues if possible. 374118334Speter (cp_convert): Stick on a NOP_EXPR when converting to the same type. 374218334Speter 374318334SpeterTue Nov 29 11:28:59 1994 Mike Stump <mrs@cygnus.com> 374418334Speter 374518334Speter * parse.y (maybe_raises): Handle throw (). 374618334Speter * parse.y (ansi_raise_identifier): grok type-ids in exception 374718334Speter specifications. 374818334Speter * tree.c (build_exception_variant): Use list compare to check if 374918334Speter two exception specifications match. 375018334Speter * decl.c (duplicate_decls, bad_specifiers): Enhance wording on error 375118334Speter messages. 375218334Speter * call.c (build_method_call): Remove TREE_RAISES. 375318334Speter * cvt.c (convert_to_aggr): Ditto. 375418334Speter * typeck.c (build_function_call_real, convert_arguments): Ditto. 375518334Speter * init.c (expand_aggr_init_1): Ditto. 375618334Speter 375718334SpeterTue Nov 29 09:50:39 1994 Mike Stump <mrs@cygnus.com> 375818334Speter 375918334Speter * except.c: Add support for m68k and mips exception handling 376018334Speter support. 376118334Speter 376218334SpeterTue Nov 29 08:48:33 1994 Mike Stump <mrs@cygnus.com> 376318334Speter 376418334Speter * except.c (expand_end_all_catch): Throw into outer context, if we 376518334Speter fall off end of catch handlers. 376618334Speter 376718334SpeterMon Nov 28 16:44:41 1994 Mike Stump <mrs@cygnus.com> 376818334Speter 376918334Speter * Makefile.in: Make is easier to decide where parse.[ch] will be 377018334Speter built. 377118334Speter 377218334SpeterThu Nov 17 20:11:24 1994 Doug Evans <dje@cygnus.com> 377318334Speter 377418334Speter * cp/Make-lang.in (CXX_INSTALL_NAME) Use program_transform_name. 377518334Speter (GXX_INSTALL_NAME) Likewise. 377618334Speter (CXX_CROSS_NAME) Use program_transform_cross_name. 377718334Speter (GXX_CROSS_NAME) Likewise. 377818334Speter (c++.install-man): Use program_transform_name on g++.1. 377918334Speter (c++.uninstall): Likewise. 378018334Speter 378118334SpeterThu Nov 3 18:48:19 1994 Paul Eggert <eggert@twinsun.com> 378218334Speter 378318334Speter * Makefile.in (spew.o, lex.o, pt.o): 378418334Speter Depend on $(srcdir)/parse.h, not parse.h. 378518334Speter 378618334SpeterMon Nov 28 13:53:03 1994 Mike Stump <mrs@cygnus.com> 378718334Speter 378818334Speter * parse.y (THROW): Fix precedence of throw expressions. 378918334Speter 379018334SpeterMon Nov 28 13:15:16 1994 Mike Stump <mrs@cygnus.com> 379118334Speter 379218334Speter * typeck.c (build_unary_op): Allow promotions from bool to int on 379318334Speter unary ~. 379418334Speter 379518334SpeterSun Nov 27 00:16:21 1994 Jason Merrill <jason@phydeaux.cygnus.com> 379618334Speter 379718334Speter * method.c (build_overload_name): Use DECL_ASSEMBLER_NAME for 379818334Speter classes when appropriate. 379918334Speter (build_overload_nested_name): When dealing with a function context, 380018334Speter use ASM_FORMAT_PRIVATE_NAME to tweak the name of the function to 380118334Speter avoid conflicts between local classes of the same name. 380218334Speter 380318334SpeterWed Nov 23 17:59:42 1994 Mike Stump <mrs@cygnus.com> 380418334Speter 380518334Speter * gxx.gperf, parse.y, lex.h, hash.h, lex.c (init_lex), delc.c 380618334Speter (duplicate_decls, grokdeclarator), cp-tree.h: Add support for 380718334Speter `explicit'. 380818334Speter * cvt.c (convert_to_reference, cp_convert, build_type_conversion_1, 380918334Speter build_type_conversion): Use LOOKUP_ONLYCONVERTING in 381018334Speter build_method_calls so that non-converting constructors are not used. 381118334Speter * call.c (build_method_call): If we shouldn't use a non-converting 381218334Speter constructor, then don't. 381318334Speter 381418334SpeterWed Nov 23 14:46:56 1994 Jason Merrill <jason@phydeaux.cygnus.com> 381518334Speter 381618334Speter * call.c (build_method_call): Don't try to synthesize methods yet. 381718334Speter 381818334SpeterTue Nov 22 12:45:21 1994 Jason Merrill <jason@phydeaux.cygnus.com> 381918334Speter 382018334Speter * pt.c (push_template_decls): Create CONST_DECLs for template 382118334Speter constant parameters, not VAR_DECLs. 382218334Speter 382318334SpeterSat Nov 19 15:28:31 1994 Jim Wilson (wilson@chestnut.cygnus.com) 382418334Speter 382518334Speter * typeck.c (build_binary_op_nodefault): Can shorten shift only if 382618334Speter shift count is less than size in bits of arg0. 382718334Speter 382818334SpeterThu Nov 17 15:30:50 1994 Mike Stump <mrs@cygnus.com> 382918334Speter 383018334Speter * gxx.gperf, hash.h, lex.c (init_lex, real_yylex), parse.y: Add new 383118334Speter ANSI keywords and, and_eq, bitand, bitor, explicit, namespace, not, 383218334Speter not_eq, or, or_eq, typename, using, xor, xor_eq to g++. Still need 383318334Speter to add support for explicit, namespace, typename, and using, support 383418334Speter for the rest is already in. 383518334Speter 383618334SpeterThu Nov 17 10:56:50 1994 Jason Merrill <jason@phydeaux.cygnus.com> 383718334Speter 383818334Speter * typeck2.c (build_m_component_ref): Check the basetype of the 383918334Speter member pointer against the main variant of the object type. 384018334Speter 384118334SpeterMon Nov 14 14:21:52 1994 Jason Merrill <jason@phydeaux.cygnus.com> 384218334Speter 384318334Speter * cvt.c (convert_to_reference): Make sure that the original expr 384418334Speter gets its type back when converting a reference. 384518334Speter 384618334Speter * method.c (build_overload_name): Clear numeric_outputed_need_bar here. 384718334Speter (build_decl_overload): Instead of here. 384818334Speter 384918334SpeterTue Nov 8 17:11:24 1994 Jason Merrill <jason@phydeaux.cygnus.com> 385018334Speter 385118334Speter * cvt.c (cp_convert): Don't build a TARGET_EXPR if we're not in a 385218334Speter function. 385318334Speter 385418334Speter * typeck.c (convert_for_initialization): Handle initialization from 385518334Speter a TARGET_EXPR. 385618334Speter 385718334SpeterSun Nov 6 01:34:24 1994 Jason Merrill (jason@phydeaux.cygnus.com) 385818334Speter 385918334Speter * pt.c (lookup_nested_type_by_name): Fix list-walking logic. 386018334Speter (tsubst): When replacing a TEMPLATE_TYPE_PARM, propagate 386118334Speter TYPE_READONLY and TYPE_VOLATILE from the argument. 386218334Speter (unify): When unifying with a TEMPLATE_TYPE_PARM, remove cv-quals 386318334Speter present in parm from arg. 386418334Speter (type_unification): Strip REFERENCE_TYPE from the argument type. 386518334Speter (unify): Don't strip REFERENCE_TYPE from the argument type. 386618334Speter 386718334SpeterSat Nov 5 22:42:15 1994 Greg McGary (gkm@magilla.cichlid.com) 386818334Speter 386918334Speter * pt.c (do_type_instantiation): Check to see if there's a 387018334Speter IDENTIFIER_TEMPLATE on a class before calling 387118334Speter instantiate_member_templates(). 387218334Speter 387318334SpeterFri Nov 4 19:04:18 1994 Mike Stump <mrs@cygnus.com> 387418334Speter 387518334Speter * gc.c (get_bad_cast_node): New routine to support compile time 387618334Speter throws of bad_cast. 387718334Speter * gc.c (build_dynamic_cast): Support throwing of bad_cast at compile 387818334Speter time. 387918334Speter 388018334SpeterFri Nov 4 11:12:00 1994 Mike Stump <mrs@cygnus.com> 388118334Speter 388218334Speter * except.c: Add hppa support. 388318334Speter 388418334SpeterFri Nov 4 10:50:50 1994 Mike Stump <mrs@cygnus.com> 388518334Speter 388618334Speter * except.c: Add rs6000 support. 388718334Speter 388818334SpeterThu Nov 3 14:24:23 1994 Mike Stump <mrs@cygnus.com> 388918334Speter 389018334Speter * except.c (do_unwind): Add i[34]86 support. 389118334Speter 389218334SpeterThu Nov 3 00:10:46 1994 Jason Merrill (jason@phydeaux.cygnus.com) 389318334Speter 389418334Speter * pt.c (do_pending_expansions): Unset TREE_PUBLIC on implicit 389518334Speter instantiations. 389618334Speter 389718334SpeterWed Nov 2 15:08:24 1994 Kung Hsu (kung@mexican.cygnus.com) 389818334Speter 389918334Speter * decl.c (finish_function): emit types used in method parameters 390018334Speter into symbol table. 390118334Speter 390218334SpeterWed Nov 2 15:05:47 1994 Jason Merrill (jason@phydeaux.cygnus.com) 390318334Speter 390418334Speter * pt.c (process_template_parm): Allow pointer to member function 390518334Speter template parameter types. 390618334Speter (uses_template_parms): Handle pointer to member function 390718334Speter CONSTRUCTORs. 390818334Speter 390918334Speter * g++.c (main): Cast first argument of bzero to (char *). 391018334Speter Pass -lstdc++ instead of -lg++ unless we are invoked as 'g++'. 391118334Speter 391218334SpeterMon Oct 31 14:50:48 1994 Kung Hsu (kung@mexican.cygnus.com) 391318334Speter 391418334Speter * gc.c (build_dynamic_cast): rewrite to make it work. 391518334Speter * class.c (finish_vtbls): build more vtables if flag_rtti is on. 391618334Speter * class.c (modify_all_direct_vtables): ditto. 391718334Speter * init.c (expand_direct_vtbls_init): expand more vtables if 391818334Speter flag_rtti is on. 391918334Speter * decl.c (init_type_desc): add default return. 392018334Speter 392118334SpeterTue Oct 25 17:13:09 1994 Kung Hsu (kung@mexican.cygnus.com) 392218334Speter 392318334Speter * tree.c (debug_binfo): get rid of the initial size entry of 392418334Speter vtable. 392518334Speter * cp-tree.h: change flag_dossier to flag rtti, define type 392618334Speter descriptor type nodes. 392718334Speter * decl.c (init_type_desc): new function to initialize type 392818334Speter descriptor type nodes. 392918334Speter * decl.c (record_builtin_type): change flag_dossier to flag_rtti. 393018334Speter * lex.c (init_lex): ditto. 393118334Speter * decl.c : change variable flag_dossier to flag_rtti. 393218334Speter * decl.c (duplicate_decls): get rid initial size entry of vtable. 393318334Speter * decl.c (hack_incomplete_structures): take out assert 164. 393418334Speter * search.c (get_abstract_virtuals_1): ditto. 393518334Speter * search.c (dfs_init_vbase_pointers): change CLASSTYPE_DOSSIER to 393618334Speter CLASSTYPE_RTTI. 393718334Speter * parse.y: ditto. 393818334Speter * class.c (prepare_fresh_vtable): for virtual bases, get right 393918334Speter offset. 394018334Speter * class.c (add_virtual_function): change flag_dossier to 394118334Speter flag_rtti. 394218334Speter * class.c (modify_one_vtable): modify the right rtti entry. 394318334Speter * class.c (override_one_vtable): get rid of size entry. 394418334Speter * class.c (finish_struct): change flag_dossier to flag_rtti, and 394518334Speter build extra vtables, build type descriptors for polymorphic 394618334Speter classes. 394718334Speter * gc.c (build_headof): make headof() works correctly with new 394818334Speter rtti. 394918334Speter * gc.c (build_typeid): make this function work with new rtti. 395018334Speter * gc.c (get_typeid): make this function work with new rtti. 395118334Speter * gc.c (build_bltn_desc): new function for new rtti. 395218334Speter * gc.c (build_user_desc): ditto. 395318334Speter * gc.c (build_class_desc): ditto. 395418334Speter * gc.c (build_ptr_desc): ditto. 395518334Speter * gc.c (build_attr_desc): ditto. 395618334Speter * gc.c (build_func_desc): ditto. 395718334Speter * gc.c (build_ptmf_desc): ditto. 395818334Speter * gc.c (build_ptmd_desc): ditto. 395918334Speter * gc.c (build_t_desc): ditto. 396018334Speter * gc.c : comment out old build_t_desc, build_i_desc, build_m_desc. 396118334Speter 396218334SpeterTue Oct 25 13:37:41 1994 Jason Merrill (jason@phydeaux.cygnus.com) 396318334Speter 396418334Speter * call.c (convert_harshness): Check for TREE_UNSIGNED differences 396518334Speter after checking for integral conversions. 396618334Speter 396718334SpeterSun Oct 23 13:19:55 1994 Jason Merrill (jason@phydeaux.cygnus.com) 396818334Speter 396918334Speter * decl2.c: Declare flag_access_control. 397018334Speter (struct lang_f_options): Add access-control. 397118334Speter * expr.c (cplus_expand_expr, NEW_EXPR): Unset flag_access_control 397218334Speter for the call to expand_aggr_init to copy the object out of the 397318334Speter pcc_struct_return slot. 397418334Speter * search.c (compute_access): if (!flag_access_control) return 397518334Speter access_public. 397618334Speter 397718334SpeterFri Oct 21 00:32:54 1994 Jason Merrill (jason@phydeaux.cygnus.com) 397818334Speter 397918334Speter * lex.c (cons_up_default_function): Don't try to defer method 398018334Speter synthesis now. 398118334Speter 398218334Speter * decl.c (init_decl_processing): Use __pure_virtual for abort_fndecl 398318334Speter instead of abort, since the OSF/1 dynamic linker doesn't like to see 398418334Speter relocation entries for abort. 398518334Speter 398618334Speter * tree.c (array_type_nelts_total): Use sizetype, not 398718334Speter integer_type_node. 398818334Speter (array_type_nelts_top): Ditto. 398918334Speter 399018334SpeterThu Oct 20 15:48:27 1994 Mike Stump <mrs@cygnus.com> 399118334Speter 399218334Speter * decl.c (grokdeclarator): Added handling for catch parameters 399318334Speter (CATCHPARM). 399418334Speter * except.c (expand_start_catch_block): Use the new CATCHPARM context 399518334Speter instead of NORMAL. 399618334Speter * except.c (expand_throw): Don't let convert_to_reference complain 399718334Speter about what we are doing. 399818334Speter 399918334SpeterThu Oct 20 12:55:24 1994 Jim Wilson (wilson@cygnus.com) 400018334Speter 400118334Speter * method.c (emit_thunk): Call instantiate_virtual_regs. 400218334Speter 400318334SpeterWed Oct 19 14:15:33 1994 Mike Stump <mrs@cygnus.com> 400418334Speter 400518334Speter * except.c (expand_exception_blocks): Make sure throw code doesn't 400618334Speter get put in function that won't be output. 400718334Speter 400818334SpeterMon Oct 17 18:03:15 1994 Jason Merrill (jason@phydeaux.cygnus.com) 400918334Speter 401018334Speter * decl.c (init_decl_processing): Make alloca a builtin. 401118334Speter 401218334SpeterThu Oct 27 21:10:25 1994 Craig Burley (craig@burley) 401318334Speter 401418334Speter * g++.c (main): Only decrement "added" and set "library" to 401518334Speter NULL when "library" != NULL (just like 940829 fix). 401618334Speter 401718334SpeterMon Oct 17 15:56:11 1994 Mike Stump <mrs@cygnus.com> 401818334Speter 401918334Speter * except.c (expand_start_catch_block): Make sure the false label 402018334Speter gets onto the permanent obstack, as it is used for the exception 402118334Speter table. 402218334Speter 402318334SpeterFri Oct 14 18:54:48 1994 Mike Stump <mrs@cygnus.com> 402418334Speter 402518334Speter * class.c (modify_one_vtable): Since the DECL_CONTEXT of fndecl can 402618334Speter be set just below, use current_fndecl instead. 402718334Speter 402818334SpeterFri Oct 14 15:12:22 1994 Jason Merrill (jason@phydeaux.cygnus.com) 402918334Speter 403018334Speter * init.c (expand_aggr_vbase_init_1): Don't call expand_aggr_init_1 403118334Speter with LOOKUP_SPECULATIVELY. 403218334Speter (expand_default_init): Abort if build_method_call returns NULL_TREE. 403318334Speter 403418334Speter * typeck.c (build_modify_expr): Don't just build a MODIFY_EXPR if 403518334Speter the rhs is a TARGET_EXPR. 403618334Speter 403718334Speter * parse.y (left_curly): Anonymous types are not affected by #pragma 403818334Speter interface/implementation. 403918334Speter 404018334Speter * method.c (synthesize_method): Don't call setup_vtbl_ptr for the 404118334Speter default constructor if it isn't needed. 404218334Speter 404318334Speter * lex.c (cons_up_default_function): Do synthesize methods for 404418334Speter anonymous types if necessary. 404518334Speter 404618334SpeterThu Oct 13 17:44:55 1994 Jason Merrill (jason@phydeaux.cygnus.com) 404718334Speter 404818334Speter * method.c (build_decl_overload): Set numeric_outputed_need_bar to 0. 404918334Speter 405018334SpeterWed Oct 12 13:27:57 1994 Jason Merrill (jason@phydeaux.cygnus.com) 405118334Speter 405218334Speter * typeck.c (build_modify_expr): Understand how to copy an aggregate. 405318334Speter 405418334Speter * init.c (expand_default_init): Ditto. Also remove some of the 405518334Speter crufty code that assumes methods will not be synthesized properly. 405618334Speter 405718334Speter * lex.c (cons_up_default_function): If the containing type has no 405818334Speter name, these functions should never need to be called, so just 405918334Speter declare them. 406018334Speter 406118334Speter * lex.c (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the 406218334Speter bitmask for lexing character constants. 406318334Speter 406418334Speter * call.c (build_method_call): Disable code that tries to do tricky 406518334Speter stuff with a default parameter that is a constructor call, but 406618334Speter actually does other tricky stuff that breaks things. 406718334Speter 406818334SpeterWed Oct 12 16:14:01 1994 Benoit Belley <belley@cae.ca> 406918334Speter 407018334Speter * decl.c (finish_enum): Disable code which forces enums to be signed, 407118334Speter since this conflicts with their use as bitfields. type_promotes_to 407218334Speter handles promotion of enums of underlying unsigned types to signed 407318334Speter integer types. 407418334Speter 407518334SpeterWed Oct 12 13:24:03 1994 Jason Merrill (jason@phydeaux.cygnus.com) 407618334Speter 407718334Speter * cvt.c (type_promotes_to): Also promote enums to long if 407818334Speter appropriate. 407918334Speter 408018334Speter * typeck.c (default_conversion): Don't expect type_promotes_to to 408118334Speter return a main variant. 408218334Speter 408318334SpeterWed Oct 12 12:19:45 1994 Jason Merrill (jason@phydeaux.cygnus.com) 408418334Speter 408518334Speter * call.c (build_scoped_method_call): Don't lose side effects in the 408618334Speter object expression when calling a non-existent destructor. 408718334Speter 408818334SpeterFri Sep 2 19:05:21 1994 Rohan Lenard (rjl@iassf.easams.com.au) 408918334Speter 409018334Speter * call.c (build_scoped_method_call): Remove erroneous error message 409118334Speter when destructor call is written as a scoped call. 409218334Speter 409318334SpeterTue Oct 11 23:48:31 1994 Jason Merrill (jason@phydeaux.cygnus.com) 409418334Speter 409518334Speter * various: Cast pointer arguments to bzero and bcopy to char *. 409618334Speter 409718334SpeterTue Oct 11 19:34:32 1994 Mike Stump <mrs@cygnus.com> 409818334Speter 409918334Speter * class.c (get_derived_offset): Added a type parameter to limit how 410018334Speter far up the CLASSTYPE_VFIELD_PARENT chain we search. 410118334Speter * class.c (modify_one_vtable, fixup_vtable_deltas): When forming the 410218334Speter offset to put into the vtable for the this parameter, make sure we 410318334Speter don't offset from a parent of the DECL_CONTEXT of the function. 410418334Speter 410518334SpeterTue Oct 11 16:10:52 1994 Jason Merrill (jason@phydeaux.cygnus.com) 410618334Speter 410718334Speter * pt.c (do_function_instantiation): Set DECL_EXTERNAL and 410818334Speter TREE_STATIC when setting DECL_INTERFACE_KNOWN. 410918334Speter (do_type_instantiation): Ditto. 411018334Speter 411118334Speter * lex.c (cons_up_default_function): Set DECL_INTERFACE_KNOWN, 411218334Speter DECL_EXTERNAL and TREE_STATIC as appropriate. 411318334Speter 411418334Speter * decl2.c (finish_file): Also synthesize methods that don't have 411518334Speter DECL_EXTERNAL set. Set interface_unknown before doing so. 411618334Speter 411718334Speter * decl.c (start_function): If DECL_INTERFACE_KNOWN is set on the 411818334Speter function decl, don't muck with TREE_PUBLIC and DECL_EXTERNAL. 411918334Speter 412018334SpeterMon Oct 10 00:56:53 1994 Jason Merrill (jason@phydeaux.cygnus.com) 412118334Speter 412218334Speter * lex.c (cons_up_default_function): Mark methods in a template class 412318334Speter as template instances. Store the values of interface_unknown and 412418334Speter interface_only for do_pending_inlines. 412518334Speter (do_pending_inlines): Use them. 412618334Speter 412718334Speter * decl2.c (finish_file): If we haven't seen a definition of a 412818334Speter function declared static, make the decl non-PUBLIC so compile_file 412918334Speter can give an error. 413018334Speter 413118334SpeterSun Oct 9 02:42:29 1994 Jason Merrill (jason@phydeaux.cygnus.com) 413218334Speter 413318334Speter * method.c (do_build_copy_constructor): Handle anonymous unions. 413418334Speter (do_build_assign_ref): Ditto. 413518334Speter (largest_union_member): Move from lex.c. 413618334Speter 413718334SpeterSat Oct 8 14:59:43 1994 Jason Merrill (jason@phydeaux.cygnus.com) 413818334Speter 413918334Speter Re-implement g++'s vague linkage independent of TREE_PUBLIC. 414018334Speter * pt.c (instantiate_member_templates): Lose redundant 414118334Speter -fexternal-templates handling. 414218334Speter (tsubst): Set TREE_PUBLIC and DECL_EXTERNAL on new decls. Don't set 414318334Speter TREE_STATIC or DECL_INTERFACE_KNOWN. 414418334Speter (do_pending_expansions): Predicate on DECL_INTERFACE_KNOWN instead 414518334Speter of DECL_EXTERNAL for explicit instantiations. 414618334Speter (do_function_instantiation): Do the new thing. 414718334Speter (do_type_instantiation): Ditto. 414818334Speter (instantiate_template): Deal with member templates defined in a .cc 414918334Speter file with -fexternal-templates. 415018334Speter * except.c (expand_exception_blocks): Use DECL_LINKAGE_KNOWN to 415118334Speter decide whether to stick builtin_throw here. 415218334Speter * decl2.c (import_export_inline): Predicate on DECL_INTERFACE_KNOWN 415318334Speter rather than TREE_PUBLIC. Generally fix rules. 415418334Speter (finish_file): Use DECL_INITIAL to determine whether or not a method 415518334Speter has been synthesized, rather than TREE_ASM_WRITTEN. 415618334Speter * decl.c (warn_extern_redeclared_static): Use DECL_PUBLIC instead of 415718334Speter TREE_PUBLIC. 415818334Speter (pushdecl): Ditto. 415918334Speter (duplicate_decls): Ditto. Deal with DECL_DECLARED_STATIC and 416018334Speter DECL_INTERFACE_KNOWN. 416118334Speter (redeclaration_error_message): Fix checking for conflicting linkage. 416218334Speter (define_function): Set DECL_INTERFACE_KNOWN. 416318334Speter (grokfndecl): Function decls are PUBLIC until we are sure about 416418334Speter their linkage. Set DECL_DECLARED_STATIC as needed. 416518334Speter (start_function): Deal with linkage. Move pushdecl after linkage 416618334Speter magic. 416718334Speter (finish_function): Don't set TREE_ASM_WRITTEN on discarded inlines. 416818334Speter * cp-tree.h (lang_decl_flags): Add interface_known and 416918334Speter declared_static. 417018334Speter (DECL_INTERFACE_KNOWN): New macro. 417118334Speter (DECL_DECLARED_STATIC): New macro. 417218334Speter (DECL_PUBLIC): New macro. 417318334Speter 417418334Speter Clean up bogus use of TREE_PUBLIC. 417518334Speter * class.c (alter_access): Fix mistaken use of TREE_PUBLIC (it 417618334Speter doesn't correspond to TREE_PROTECTED and TREE_PRIVATE). 417718334Speter * init.c (do_friend): Don't arbitrarily set TREE_PUBLIC. 417818334Speter 417918334SpeterWed Oct 5 13:44:41 1994 Jason Merrill (jason@phydeaux.cygnus.com) 418018334Speter 418118334Speter * call.c (build_overload_call_real): Don't immediately do 418218334Speter array->pointer conversion. 418318334Speter 418418334Speter * pt.c (type_unification): If not passing to a reference, strip 418518334Speter cv-quals. Also handle array->pointer conversion. 418618334Speter 418718334SpeterTue Oct 4 17:45:37 1994 Jason Merrill (jason@phydeaux.cygnus.com) 418818334Speter 418918334Speter * decl.c (grokdeclarator): Don't warn about applying const to a 419018334Speter const typedef or template type parameter. 419118334Speter 419218334Speter * decl2.c (finish_file): Also synthesize methods after walking the 419318334Speter vtables. Ugly ugly ugly. 419418334Speter 419518334SpeterMon Oct 3 15:02:41 1994 Jason Merrill (jason@phydeaux.cygnus.com) 419618334Speter 419718334Speter * various: Remove lingering remnants of old exception handling code. 419818334Speter 419918334Speter * decl2.c (finish_file): Synthesize methods before walking the 420018334Speter vtables, so that the vtables get emitted as needed. 420118334Speter 420218334Speter * decl.c (shadow_tag): Remove obsolete code for pushing tags and 420318334Speter dealing with exceptions. 420418334Speter 420518334SpeterMon Oct 3 13:05:27 1994 Ian Lance Taylor <ian@sanguine.cygnus.com> 420618334Speter 420718334Speter * Make-lang.in (g++-cross): Depend upon version.o and $(LIBDEPS). 420818334Speter 420918334SpeterMon Oct 3 02:59:28 1994 Jason Merrill (jason@phydeaux.cygnus.com) 421018334Speter 421118334Speter * decl2.c (finish_file): Fix inline handling. 421218334Speter 421318334SpeterSun Oct 2 00:21:56 1994 Jason Merrill (jason@phydeaux.cygnus.com) 421418334Speter 421518334Speter * decl.c (grokdeclarator): Handle redundant scope even better. 421618334Speter ({push,pop}_cp_function_context): Take toplev parameter. 421718334Speter 421818334Speter * method.c (synthesize_method): Pass toplev parameter to 421918334Speter {push,pop}_cp_function_context depending on decl_function_context 422018334Speter (fndecl). 422118334Speter 422218334Speter * typeck.c (build_x_unary_op): Unary & on OFFSET_REFs is always the 422318334Speter built-in version. 422418334Speter 422518334Speter * method.c (synthesize_method): Don't be confused by __in_chrg 422618334Speter parameter. 422718334Speter 422818334Speter * class.c (popclass): Set C_C_D like start_function does. 422918334Speter 423018334Speter * decl.c (grokdeclarator): Handle redundant scope better. 423118334Speter 423218334Speter * parse.y (expr_or_declarator): Add '(' expr_or_declarator ')' rule. 423318334Speter (direct_notype_declarator): Ditto. 423418334Speter (complex_direct_notype_declarator): Remove it here. 423518334Speter 423618334SpeterSat Oct 1 21:42:18 1994 Jason Merrill (jason@deneb.cygnus.com) 423718334Speter 423818334Speter * init.c (resolve_offset_ref): Fix types used in resolving .* 423918334Speter expressions. 424018334Speter 424118334SpeterSat Oct 1 15:18:49 1994 Jason Merrill (jason@phydeaux.cygnus.com) 424218334Speter 424318334Speter Beginnings of work to synthesize methods only when needed. 424418334Speter * call.c (build_method_call): Synthesize methods as necessary 424518334Speter (currently never necessary). 424618334Speter * class.c (popclass): Don't try to set C_C_D here, as it'll end up 424718334Speter on the wrong obstack. 424818334Speter * decl.c (push_cp_function_context): Mostly copied from 424918334Speter push_c_function_context. 425018334Speter (pop_cp_function_context): Similarly. 425118334Speter (finish_function): Reverse order of poplevel and pop_nested_class so 425218334Speter that current_class_decl is restored properly. 425318334Speter (start_function): Ditto. 425418334Speter (finish_function): Add parameter 'nested'. Don't call 425518334Speter permanent_allocation if (nested). 425618334Speter * various: Pass extra parameter to finish_function. 425718334Speter * decl2.c (finish_file): Reorganize end-of-file inline handling, 425818334Speter synthesizing methods as necessary. 425918334Speter * lex.c (cons_up_default_function): Call mark_inline_for_output. 426018334Speter Only synthesize methods immediately if #pragma implementation 426118334Speter (currently disabled). 426218334Speter (do_pending_inlines): Call synthesize_method. 426318334Speter * method.c (synthesize_method): New function; all method synthesis 426418334Speter goes through here. Calls do_build_assign_ref and 426518334Speter do_build_copy_constructor. 426618334Speter (build_default_constructor): Remove. 426718334Speter (build_dtor): Ditto. 426818334Speter (build_assign_ref): Rename to do_build_assign_ref and remove stuff 426918334Speter done by synthesize_method. 427018334Speter (build_copy_constructor): Similarly. 427118334Speter 427218334SpeterThu Sep 29 16:58:52 1994 Mike Stump <mrs@cygnus.com> 427318334Speter 427418334Speter * typeck.c (c_expand_return): Use magic so the backend can fixup the 427518334Speter assignment into the return register, so cleanups won't clobber it. 427618334Speter 427718334SpeterThu Sep 29 13:08:50 1994 Jason Merrill (jason@deneb.cygnus.com) 427818334Speter 427918334Speter * method.c (hack_identifier): Don't call assemble_external for 428018334Speter template decls. 428118334Speter 428218334Speter * decl.c (finish_decl): Also end temporary allocation if the decl in 428318334Speter question has a type of error_mark_node. 428418334Speter 428518334SpeterWed Sep 28 21:45:00 1994 Mike Stump <mrs@cygnus.com> 428618334Speter 428718334Speter * typeck.c (build_modify_expr): When optimizing ?: on lhs, make sure 428818334Speter that if the ?: was a reference type, that the subparts will be also. 428918334Speter 429018334SpeterWed Sep 28 16:14:04 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 429118334Speter 429218334Speter * except.c (register_exception_table): Use Pmode, not PTRmode. 429318334Speter 429418334SpeterFri Sep 23 13:54:27 1994 Jason Merrill (jason@deneb.cygnus.com) 429518334Speter 429618334Speter * lex.c (do_pending_inlines): Do method synthesis after the 429718334Speter pending_inlines have been reversed. 429818334Speter 429918334SpeterThu Sep 22 12:53:03 1994 Per Bothner (bothner@kalessin.cygnus.com) 430018334Speter 430118334Speter * decl2.c (finish_file): Fix Brendan's fix: Only call 430218334Speter register_exception_table if there is a non-empty exception table. 430318334Speter 430418334SpeterThu Sep 22 12:03:46 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 430518334Speter 430618334Speter * decl2.c (finish_file): Only do register_exception_table if 430718334Speter -fhandle-exceptions is being used. 430818334Speter 430918334SpeterWed Sep 21 19:01:51 1994 Per Bothner (bothner@kalessin.cygnus.com) 431018334Speter 431118334Speter * except.c (output_exception_table_entry): Simplify 431218334Speter by using assemble_integer. 431318334Speter (build_exception_table): Change to return a count. 431418334Speter Cleanup to use standard macros, instead of hard-wired 431518334Speter sparc asm format. Don't make __EXCEPTION_TABLE__ global. 431618334Speter (register_exception_table): New function. Generate call to builtin. 431718334Speter * decl2.c (finish_file): Call register_exception_table. 431818334Speter * cp-tree.h (build_exception_table): Fix prototype. 431918334Speter 432018334SpeterWed Sep 21 13:20:42 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 432118334Speter 432218334Speter * tree.c (break_out_calls): Don't try to duplicate the DECL_INITIAL. 432318334Speter 432418334Speter * decl2.c (delete_sanity): Give an error at trying to delete a 432518334Speter function. 432618334Speter 432718334SpeterWed Sep 21 11:47:10 1994 Jason Merrill (jason@deneb.cygnus.com) 432818334Speter 432918334Speter * lex.c (cons_up_default_function): Mark synthesized destructors 433018334Speter inline. 433118334Speter 433218334Speter * decl.c (duplicate_decls): Ignore redeclarations of wchar_t as 433318334Speter something other than __wchar_t, complaining if -pedantic and not in 433418334Speter a system header. 433518334Speter 433618334SpeterTue Sep 20 09:43:28 1994 Jason Merrill (jason@deneb.cygnus.com) 433718334Speter 433818334Speter * decl.c (xref_tag): Set up BINFO_INHERITANCE_CHAIN on base binfos 433918334Speter here. 434018334Speter 434118334Speter * typeck.c (build_modify_expr): Require complete type after checking 434218334Speter for error_mark_node. 434318334Speter 434418334Speter * call.c (build_method_call): Print parmtypes when complaining of 434518334Speter ambiguous call. 434618334Speter 434718334Speter * typeck.c (build_modify_expr): Handle assignment to array from 434818334Speter non-array. 434918334Speter 435018334Speter * decl.c (lookup_name_real): Deal with got_scope == error_mark_node. 435118334Speter 435218334Speter * call.c (build_method_call): Don't bother with the exact match. 435318334Speter 435418334SpeterMon Sep 19 00:51:39 1994 Jason Merrill (jason@deneb.cygnus.com) 435518334Speter 435618334Speter * init.c (expand_aggr_init): If we munge the type of the variable, 435718334Speter also munge the type of the initializer. 435818334Speter 435918334Speter * decl.c (grokdeclarator): Use <= when comparing to RID_LAST_MODIFIER. 436018334Speter (init_decl_processing): Push artificial declaration of wchar_t so 436118334Speter people don't have to declare it before they can use it. 436218334Speter 436318334Speter * error.c (cp_line_of): return lineno in lieu of 0. 436418334Speter 436518334Speter * typeck.c (convert_for_assignment): Handle conversion of pmfs to 436618334Speter int and bool. 436718334Speter (build_component_ref): Fold the COMPONENT_REF in case it can be 436818334Speter reduced. 436918334Speter 437018334Speter * typeck2.c (store_init_value): Don't pedwarn about non-constant 437118334Speter bracketed initializers for automatic variables. 437218334Speter 437318334SpeterSun Sep 18 10:12:12 1994 Jason Merrill (jason@deneb.cygnus.com) 437418334Speter 437518334Speter * error.c (dump_decl): Don't say `typedef enum foo foo'. 437618334Speter 437718334Speter * decl.c (start_decl): Don't set TREE_PUBLIC on template decls just 437818334Speter because they're affected by #pragma i/i. We'll deal with that when 437918334Speter they get instantiated. 438018334Speter 438118334Speter * typeck.c (build_unary_op): Clean up cruft in ADDR_EXPR case. 438218334Speter 438318334Speter * class.c (instantiate_type): Set TREE_CONSTANT on instantiated 438418334Speter ADDR_EXPRs if appropriate. 438518334Speter 438618334Speter * decl.c (build_ptrmemfunc_type): Unset IS_AGGR_TYPE on pmf types. 438718334Speter 438818334Speter * typeck.c (build_ptrmemfunc): Handle &overloaded_method as an 438918334Speter initializer properly. 439018334Speter * typeck2.c (digest_init): Ditto. 439118334Speter 439218334Speter * tree.c (cp_build_type_variant): Like c_build_type_variant, except 439318334Speter it uses build_cplus_array_type. 439418334Speter * *.c: Use cp_build_type_variant instead of c_build_type_variant. 439518334Speter 439618334Speter * pt.c (do_type_instantiation): Don't try to instantiate nested 439718334Speter enums. 439818334Speter 439918334SpeterTue Sep 13 10:56:58 1994 Jason Merrill (jason@deneb.cygnus.com) 440018334Speter 440118334Speter * cvt.c (build_up_reference): Handle preincrement and predecrement 440218334Speter properly. 440318334Speter 440418334SpeterTue Sep 13 09:51:59 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 440518334Speter 440618334Speter * decl.c (finish_decl): Only lay out the rtl for DECL if it is, in 440718334Speter fact, static. 440818334Speter 440918334SpeterMon Sep 12 14:40:30 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 441018334Speter 441118334Speter * decl.c (finish_decl): Lay out the rtl for DECL before doing 441218334Speter grok_reference_init, in case it's static. 441318334Speter 441418334SpeterMon Sep 12 12:45:38 1994 Jason Merrill (jason@deneb.cygnus.com) 441518334Speter 441618334Speter * class.c (finish_struct): Don't synthesize constructors if the 441718334Speter class has a field with the same name as the class. Don't die on 441818334Speter classes with no constructors or destructors. Don't die if the head 441918334Speter and tail of the class are in different files. 442018334Speter 442118334Speter * decl.c (grokdeclarator): Don't treat a function pointer field 442218334Speter with the same name as the class as a constructor. 442318334Speter 442418334SpeterFri Sep 9 13:17:00 1994 Jason Merrill (jason@deneb.cygnus.com) 442518334Speter 442618334Speter * typeck.c (build_c_cast): Pull constant values out of their 442718334Speter variables here. 442818334Speter 442918334Speter * decl.c (duplicate_decls): Only propagate DECL_CHAIN in 443018334Speter FUNCTION_DECLs and TEMPLATE_DECLs. 443118334Speter 443218334SpeterThu Sep 8 10:07:48 1994 Jason Merrill (jason@deneb.cygnus.com) 443318334Speter 443418334Speter * decl.c (duplicate_decls): Propagate DECL_CHAIN in all DECLs that 443518334Speter have it. 443618334Speter 443718334Speter * pt.c (unify): REALs and INTEGERs only unify with their own genus. 443818334Speter (instantiate_member_templates): Don't muck with DECL_EXTERNAL and 443918334Speter TREE_PUBLIC unless -fexternal-templates. 444018334Speter 444118334SpeterWed Sep 7 13:17:10 1994 Jason Merrill (jason@deneb.cygnus.com) 444218334Speter 444318334Speter * pt.c (do_type_instantiation): Call instantiate_member_templates. 444418334Speter Deal with specializations. 444518334Speter (tsubst): Don't stick the mangled name in DECL_NAME for function 444618334Speter instantiations. Don't push them, either. 444718334Speter 444818334Speter * decl2.c (grokfield): Move code for generating the 444918334Speter DECL_ASSEMBLER_NAME for static members from here. 445018334Speter * method.c (build_static_name): To here. 445118334Speter * decl.c (grokvardecl): Call build_static_name. 445218334Speter (duplicate_decls): Keep old DECL_ASSEMBLER_NAME. 445318334Speter 445418334SpeterMon Sep 5 12:49:18 1994 Jason Merrill (jason@deneb.cygnus.com) 445518334Speter 445618334Speter * call.c (build_method_call): if -Wsynth, warn when selecting 445718334Speter synthesized op= over user-supplied one cfront would select. 445818334Speter * decl2.c (lang_decode_option): Handle -Wsynth. 445918334Speter 446018334SpeterFri Sep 2 15:11:59 1994 Jason Merrill (jason@deneb.cygnus.com) 446118334Speter 446218334Speter * decl.c (finish_enum): Overhaul to fix several bugs. 446318334Speter (start_enum): Disable useless code. 446418334Speter 446518334SpeterThu Sep 1 16:04:54 1994 Jason Merrill (jason@deneb.cygnus.com) 446618334Speter 446718334Speter * typeck.c (c_expand_return): Warn about returning a reference to a 446818334Speter temporary. 446918334Speter (convert_arguments): Increment argument counter when using default 447018334Speter arguments, too. 447118334Speter 447218334SpeterWed Aug 31 14:29:22 1994 Jason Merrill (jason@deneb.cygnus.com) 447318334Speter 447418334Speter * decl.c (finish_decl): If the type of decl is error_mark_node, 447518334Speter don't bother trying to do anything. 447618334Speter 447718334Speter * typeck.c (convert_for_initialization): If the rhs contains a 447818334Speter constructor call, pretend the lhs type needs to be constructed. 447918334Speter 448018334Speter * init.c (expand_default_init): If we stick the object inside the 448118334Speter initializer, mark the initializer used. 448218334Speter 448318334SpeterTue Aug 30 13:50:18 1994 Jason Merrill (jason@deneb.cygnus.com) 448418334Speter 448518334Speter * method.c (build_assign_ref): return *this; 448618334Speter (build_assign_ref): Fix base assignment order. 448718334Speter (build_copy_constructor): Fix member init order. 448818334Speter 448918334SpeterMon Aug 29 13:54:39 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 449018334Speter 449118334Speter * g++.c (main): Remember to clear out SAW_SPECLANG after we see 449218334Speter its argument. 449318334Speter 449418334SpeterSat Aug 27 09:36:03 1994 Jason Merrill (jason@deneb.cygnus.com) 449518334Speter 449618334Speter * method.c (build_copy_constructor): Also copy virtual bases. 449718334Speter 449818334SpeterFri Aug 26 17:05:15 1994 Jason Merrill (jason@deneb.cygnus.com) 449918334Speter 450018334Speter * lex.c (do_pending_inlines): Clear out pending_inlines before doing 450118334Speter any synthesis. Also first set deja_vu on all pending_inlines. 450218334Speter 450318334Speter * method.c (build_assign_ref): Use build_member_call to invoke base 450418334Speter operator=, rather than build_modify_expr. And use 450518334Speter build_reference_type instead of TYPE_REFERENCE_TO. 450618334Speter (build_copy_constructor): Use TYPE_NESTED_NAME to identify the 450718334Speter basetype. 450818334Speter 450918334Speter * decl2.c (grokfield): Don't complain about undefined local class 451018334Speter methods. 451118334Speter 451218334Speter * class.c (finish_struct): Don't try to synthesize methods here. 451318334Speter * lex.c (do_pending_inlines): Instead, synthesize them here. 451418334Speter (init_lex): Initialize synth_obstack. 451518334Speter (cons_up_default_function): Stick synthesis request on 451618334Speter pending_inlines. 451718334Speter 451818334SpeterFri Aug 26 12:24:14 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 451918334Speter 452018334Speter * call.c (build_method_call) [PCC_STATIC_STRUCT_RETURN]: Also 452118334Speter accept an RTL_EXPR in what we're about to use for the instance, 452218334Speter since anything which would end up with pcc_struct_return set 452318334Speter inside cplus_expand_expr. 452418334Speter 452518334Speter * cp-tree.h (cons_up_default_function): Note change of prototype. 452618334Speter 452718334SpeterThu Aug 25 23:05:30 1994 Gerald Baumgartner (gb@cs.purdue.edu) 452818334Speter 452918334Speter * class.c (finish_struct): Undid change from Aug 21 testing 453018334Speter CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING. 453118334Speter * parse.y (left_curly): Ditto, undid change from Aug 21. 453218334Speter * decl.c (xref_tag): Undid change from Aug 21, set 453318334Speter CLASSTYPE_INTERFACE correctly, and added comments. 453418334Speter 453518334SpeterThu Aug 25 00:36:31 1994 Jason Merrill (jason@deneb.cygnus.com) 453618334Speter 453718334Speter Rework approach to synthesized methods; don't go through the parser 453818334Speter anymore. 453918334Speter * class.c (finish_struct): Use new synthesis approach. 454018334Speter * lex.c (cons_up_default_function): Now just creates declaration, 454118334Speter not code. 454218334Speter (largest_union_member): #if 0 out. 454318334Speter (default_assign_ref_body): Ditto. 454418334Speter (default_copy_constructor_body): Ditto. 454518334Speter * method.c (build_default_constructor): New function to synthesize X(). 454618334Speter (build_copy_constructor): Synthesize X(X&). 454718334Speter (build_assign_ref): Synthesize X::operator=(X&). 454818334Speter (build_dtor): Synthesize ~X(). 454918334Speter 455018334Speter * error.c (cp_line_of): If we're dealing with an artificial 455118334Speter TYPE_DECL, look at the type instead. 455218334Speter 455318334SpeterWed Aug 24 11:11:50 1994 Jason Merrill (jason@deneb.cygnus.com) 455418334Speter 455518334Speter * init.c (sort_member_init): Check warn_reorder. 455618334Speter * decl2.c (lang_decode_option): Handle -W{no-,}reorder. 455718334Speter 455818334Speter * cp-tree.h (CLASSTYPE_SOURCE_LINE): New macro. 455918334Speter * error.c (cp_line_of): Use CLASSTYPE_SOURCE_LINE for aggregates. 456018334Speter * class.c (finish_struct): Set CLASSTYPE_SOURCE_LINE. 456118334Speter 456218334SpeterTue Aug 23 09:28:35 1994 Mike Stump <mrs@cygnus.com> 456318334Speter 456418334Speter * error.c (dump_decl): Improve wording, so that error messages 456518334Speter dont't read template<, class foo>... 456618334Speter 456718334SpeterMon Aug 22 15:30:51 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 456818334Speter 456918334Speter * parse.y (label_colon): Also match a TYPENAME as a label name, 457018334Speter since they may have declared a class by that name but have also 457118334Speter tried to have a local label under the same name. 457218334Speter 457318334Speter * pt.c (coerce_template_parms): Call cp_error, not cp_error_at, 457418334Speter for the message so they know at what point it was instantiated. 457518334Speter 457618334SpeterSun Aug 21 23:07:35 1994 Gerald Baumgartner (gb@cs.purdue.edu) 457718334Speter 457818334Speter * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and 457918334Speter CLASSTYPE_VTABLE_NEEDS_WRITING for signatures up to left_curly time. 458018334Speter * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and 458118334Speter CLASSTYPE_VTABLE_NEEDS_WRITING for signatures down to left_curly time. 458218334Speter * parse.y (left_curly): New final resting place for setting 458318334Speter CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING for signatures. 458418334Speter 458518334Speter * class.c (finish_struct): Don't test for function/field name 458618334Speter conflicts in signatures, since all the fields are compiler-constructed. 458718334Speter 458818334SpeterFri Aug 19 14:04:47 1994 Kung Hsu (kung@mexican.cygnus.com) 458918334Speter 459018334Speter * method.c (build_overload_nested_name): in qualified name 459118334Speter mangling, the template with value instantiation will have numeric 459218334Speter at end and may mixed with the name length of next nested level. 459318334Speter Add a '_' in between. 459418334Speter * method.c (build_overload_name): ditto. 459518334Speter * method.c (build_overload_identifier): ditto. 459618334Speter 459718334SpeterThu Aug 18 16:24:43 1994 Mike Stump <mrs@cygnus.com> 459818334Speter 459918334Speter * error.c (dump_decl): Handle NULL args. 460018334Speter 460118334SpeterThu Sep 29 16:15:36 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu> 460218334Speter 460318334Speter * g++.c: Rework last change so it's done like collect.c (and 460418334Speter gcc.c). 460518334Speter 460618334SpeterWed Sep 14 10:17:27 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu> 460718334Speter 460818334Speter * g++.c: Include <sys/errno.h> in case `errno' is a macro 460918334Speter as permitted by ANSI C. 461018334Speter 461118334SpeterThu Aug 18 12:48:09 1994 Mike Stump <mrs@cygnus.com> 461218334Speter 461318334Speter * class.c (finish_struct): Move setting of CLASSTYPE_INTERFACE and 461418334Speter CLASSTYPE_VTABLE_NEEDS_WRITING up to left_curly time. 461518334Speter * decl.c (xref_tag): Move setting of CLASSTYPE_INTERFACE and 461618334Speter CLASSTYPE_VTABLE_NEEDS_WRITING down to left_curly time. 461718334Speter * parse.y (left_curly): New final resting place for setting 461818334Speter CLASSTYPE_INTERFACE and CLASSTYPE_VTABLE_NEEDS_WRITING. 461918334Speter 462018334SpeterThu Aug 11 11:32:42 1994 H.J. Lu (hjl@nynexst.com) 462118334Speter 462218334Speter * g++.c (main): Only decrement "added" and set "library" to 462318334Speter NULL when "library" != NULL. 462418334Speter 462518334SpeterSat Aug 13 00:14:52 1994 Jason Merrill (jason@deneb.cygnus.com) 462618334Speter 462718334Speter * decl.c (grokdeclarator): Don't set TREE_PUBLIC on a function decl 462818334Speter just because its class has a known interface. 462918334Speter (decls_match): Deal with new format of template parms. 463018334Speter 463118334Speter * lex.c (cons_up_default_function): Don't play with TREE_PUBLIC and 463218334Speter DECL_EXTERNAL here. 463318334Speter 463418334SpeterFri Aug 12 01:55:15 1994 Jason Merrill (jason@deneb.cygnus.com) 463518334Speter 463618334Speter * decl.c (pushtag): SET_DECL_ARTIFICIAL on gratuitous typedefs. 463718334Speter (xref_defn_tag): Ditto. 463818334Speter (pushdecl): Only allow artificial typedefs to be shadowed. 463918334Speter 464018334Speter * init.c (emit_base_init): Pass the right binfos to 464118334Speter expand_aggr_init_1. 464218334Speter 464318334Speter * class.c (delete_duplicate_fields_1): Make it work right. 464418334Speter (finish_struct): Catch function/field name conflict. 464518334Speter 464618334Speter * decl2.c (check_classfn): Pass the function to cp_error, not just 464718334Speter the name. 464818334Speter 464918334Speter * init.c (sort_member_init): Warn when order of member initializers 465018334Speter does not match order of member declarations. 465118334Speter (emit_base_init): Call expand_aggr_init_1 with LOOKUP_PROTECT. 465218334Speter 465318334Speter * error.c (dump_expr): Handle lists of functions. 465418334Speter 465518334Speter * decl.c (start_function): #pragma interface only affects functions 465618334Speter that would otherwise be static. 465718334Speter (finish_decl): Don't warn about an unused variable if it has both 465818334Speter constructor and destructor, since the 'resource allocation is 465918334Speter initialization' idiom is relatively common. 466018334Speter 466118334Speter * typeck.c (comp_target_types): Don't handle TEMPLATE_TYPE_PARMs. 466218334Speter (comp_target_parms): Ditto. 466318334Speter (compparms): Never consider default parms. 466418334Speter (common_base_type): Don't choose a virtual baseclass if there is a 466518334Speter more derived class in common. 466618334Speter (build_conditional_expr): If pedantic, pedwarn about conversion to 466718334Speter common base in conditional expr. 466818334Speter 466918334Speter * class.c (instantiate_type): Handle template instantiation better. 467018334Speter 467118334Speter * typeck.c (convert_arguments): Don't try to get tricky and convert 467218334Speter to int directly when PROMOTE_PROTOTYPES is set, as it breaks 467318334Speter user-defined conversions. 467418334Speter 467518334Speter * lex.c (check_for_missing_semicolon): Also give error at end of 467618334Speter file. 467718334Speter 467818334Speter * call.c (build_method_call): Don't promote arrays to pointers here. 467918334Speter 468018334Speter * typeck.c (convert_arguments): Don't require the actual parameter 468118334Speter to be of a complete type if the formal parameter is a reference. 468218334Speter 468318334SpeterThu Aug 11 15:21:40 1994 Jason Merrill (jason@deneb.cygnus.com) 468418334Speter 468518334Speter * decl.c (grokdeclarator): Soften 'static' on member function error 468618334Speter to pedwarn. 468718334Speter 468818334Speter * init.c (build_new): Don't automatically save rval. 468918334Speter (build_offset_ref): Do field lookup with proper basetype_path. 469018334Speter 469118334SpeterThu Aug 11 12:46:54 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 469218334Speter 469318334Speter * errfn.c (cp_silent): Declare to mark when we should avoid 469418334Speter emitting warnings and errors. 469518334Speter (cp_error): Check it. 469618334Speter (cp_warning): Likewise. 469718334Speter (cp_pedwarn): Likewise. 469818334Speter (cp_compiler_error): Likewise. 469918334Speter (cp_error_at): Likewise. 470018334Speter (cp_warning_at): Likewise. 470118334Speter (cp_pedwarn_at): Likewise. 470218334Speter * call.c (compute_conversion_costs): Set CP_SILENT when we start 470318334Speter out, and make sure we turn it off before we leave. 470418334Speter 470518334SpeterThu Aug 11 00:02:54 1994 Jason Merrill (jason@deneb.cygnus.com) 470618334Speter 470718334Speter * decl2.c (grok_array_decl): Try computing *(A+B) if neither 470818334Speter argument is obviously an array. 470918334Speter 471018334SpeterWed Aug 10 15:32:04 1994 Jason Merrill (jason@deneb.cygnus.com) 471118334Speter 471218334Speter * typeck.c (c_expand_start_case): Do cleanups here. 471318334Speter 471418334Speter * parse.y (xcond): Do bool conversion here, too. 471518334Speter (simple_stmt, SWITCH case): Don't do cleanups here. 471618334Speter 471718334Speter * decl.c (duplicate_decls): Don't treat builtins that have been 471818334Speter explicitly declared specially. 471918334Speter 472018334SpeterTue Aug 9 01:16:09 1994 Jason Merrill (jason@deneb.cygnus.com) 472118334Speter 472218334Speter * tree.c (make_deep_copy): Support copying pointer, reference, 472318334Speter function, array, offset and method types. 472418334Speter 472518334Speter * decl.c (init_decl_processing): Mark exit and abort as 472618334Speter BUILT_IN_NONANSI so that duplicate_decls is kinder about 472718334Speter redeclaration. 472818334Speter (duplicate_decls): Don't give two errors for redeclaring a C 472918334Speter function with the same parms but a different return type. 473018334Speter 473118334Speter * parse.y (paren_cond_or_null): Do cleanup and bool conversion here. 473218334Speter (condition): Instead of here. 473318334Speter (simple_stmt, SWITCH case): Also do cleanup here. 473418334Speter 473518334Speter * decl2.c (finish_anon_union): Only break out FIELD_DECLs. 473618334Speter 473718334Speter * call.c (build_method_call): Don't throw away the side effects of 473818334Speter the object in a call to a non-existent constructor. 473918334Speter * parse.y (primary): Ditto. 474018334Speter 474118334Speter * method.c (build_decl_overload): Oop. 474218334Speter 474318334Speter * decl2.c (lang_decode_option): Deal with flag_no_nonansi_builtin, 474418334Speter warn about uselessness of specifying -fansi-overloading. 474518334Speter 474618334Speter * method.c (build_decl_overload): Treat any non-member new with one 474718334Speter parameter as __builtin_new. 474818334Speter 474918334Speter * decl.c (init_decl_processing): Setup built-in meanings of exit, 475018334Speter _exit and abort. 475118334Speter 475218334SpeterMon Aug 8 15:03:30 1994 Jason Merrill (jason@deneb.cygnus.com) 475318334Speter 475418334Speter * error.c (dump_readonly_or_volatile): Put a space between const and 475518334Speter volatile if both apply. 475618334Speter 475718334Speter * init.c (perform_member_init): Clean up after this initialization. 475818334Speter (emit_base_init): Clean up after each base init, not after all have 475918334Speter been done. 476018334Speter (expand_aggr_vbase_init_1): Clean up after this init. 476118334Speter 476218334SpeterSun Aug 7 14:55:05 1994 Jason Merrill (jason@deneb.cygnus.com) 476318334Speter 476418334Speter * call.c (build_method_call): Deal with destroying references. 476518334Speter 476618334Speter * parse.y (condition): Do bool_truthvalue_conversion here. 476718334Speter (paren_expr_or_null): And here. 476818334Speter (simple_if): Not here. 476918334Speter (simple_stmt): Or here. 477018334Speter 477118334SpeterSat Aug 6 22:29:45 1994 Jason Merrill (jason@deneb.cygnus.com) 477218334Speter 477318334Speter * parse.y (paren_expr_or_null): Wrap the expression in a 477418334Speter CLEANUP_POINT_EXPR. 477518334Speter (condition): Ditto. 477618334Speter 477718334SpeterSat Aug 6 19:46:37 1994 Rohan Lenard (rjl@easams.com.au) 477818334Speter 477918334Speter * call.c (build_scoped_method_call): Fix error message when 478018334Speter destructor call refers to a nonexistent type. 478118334Speter 478218334SpeterSat Apr 16 22:43:30 1993 Gerald Baumgartner (gb@cs.purdue.edu) 478318334Speter 478418334Speter * lex.h (rid): Deleted RID_RAISES, it's never used. 478518334Speter Moved RID_PUBLIC, RID_PRIVATE, RID_PROTECTED, RID_EXCEPTION, 478618334Speter RID_TEMPLATE and RID_SIGNATURE to the end of the enumeration, 478718334Speter they don't need to be touched in `grokdeclarator.' 478818334Speter (RID_LAST_MODIFIER): Defined macro to be RID_MUTABLE. 478918334Speter 479018334Speter * decl.c (grokdeclarator): Use RID_LAST_MODIFIER instead of 479118334Speter RID_MAX as loop limit for finding declaration specifiers. 479218334Speter 479318334SpeterSat Apr 3 21:59:07 1993 Gerald Baumgartner (gb@cs.purdue.edu) 479418334Speter 479518334Speter * lex.c (debug_yytranslate): Moved to parse.y since it needs to 479618334Speter access `yytname,' which is static in parse.c. 479718334Speter 479818334SpeterFri Apr 2 23:36:57 1993 Gerald Baumgarnter (gb@cs.purdue.edu) 479918334Speter 480018334Speter * cp-tree.h (GNU_xref_ref): Fixed typo in extern declaration, it 480118334Speter was `GNU_xref_def' instead of `GNU_xref_ref.' 480218334Speter 480318334SpeterFri Aug 5 14:20:16 1994 Jason Merrill (jason@deneb.cygnus.com) 480418334Speter 480518334Speter * pt.c (do_function_instantiation): Don't set TREE_PUBLIC and 480618334Speter DECL_EXTERNAL on 'extern' instantiations; wait until EOF to do that. 480718334Speter (do_type_instantiation): Ditto. 480818334Speter 480918334Speter * decl2.c (import_export_inline): Decides at EOF what an inline's 481018334Speter linkage should be. 481118334Speter (finish_file): Call it. 481218334Speter 481318334Speter * decl.c (start_function): Don't rely on the settings of TREE_PUBLIC 481418334Speter and DECL_EXTERNAL from do_*_instantiation. Only set 481518334Speter DECL_DEFER_OUTPUT on inlines whose linkage might actually change. 481618334Speter (finish_function): Use DECL_DEFER_OUTPUT to decide which inlines to 481718334Speter mark for later consideration, rather than DECL_FUNCTION_MEMBER_P. 481818334Speter 481918334SpeterFri Aug 5 01:12:20 1994 Mike Stump <mrs@cygnus.com> 482018334Speter 482118334Speter * class.c (get_class_offset_1, get_class_offset): New routine to 482218334Speter find the offset of the class where a virtual function is defined, 482318334Speter from the complete type. 482418334Speter * class.c (modify_one_vtable, fixup_vtable_deltas): Use 482518334Speter get_class_offset instead of virtual_offset as get_class_offset will 482618334Speter always provide the right answer. 482718334Speter * tree.c (virtual_offset): Remove. It only ever worked some of the 482818334Speter time. 482918334Speter 483018334SpeterTue Aug 2 12:44:21 1994 Jason Merrill (jason@deneb.cygnus.com) 483118334Speter 483218334Speter * call.c (build_method_call): Put back unary_complex_lvalue call 483318334Speter that I thought was redundant. 483418334Speter 483518334Speter * typeck.c (c_expand_return): Fix a case I missed before. 483618334Speter 483718334SpeterSun Jul 31 17:54:02 1994 Jason Merrill (jason@deneb.cygnus.com) 483818334Speter 483918334Speter * pt.c (unify): Strip cv-quals from template type arguments (when 484018334Speter 'const T*' is matched to 'const char*', that does not mean that T is 484118334Speter 'const char'). 484218334Speter 484318334SpeterFri Jul 29 01:03:06 1994 Jason Merrill (jason@deneb.cygnus.com) 484418334Speter 484518334Speter * pt.c (do_type_instantiation): Instantiate nested TAGS, not 484618334Speter typedefs. Third time's the charm? 484718334Speter 484818334Speter * parse.y (template_parm): Support default template parms. 484918334Speter * pt.c (process_template_parm): Ditto. 485018334Speter (end_template_parm_list): Ditto. 485118334Speter (coerce_template_parms): Ditto. 485218334Speter (mangle_class_name_for_template): Ditto. 485318334Speter (push_template_decls): Ditto. 485418334Speter (unify): Ditto. 485518334Speter * method.c (build_overload_identifier): Ditto. 485618334Speter * error.c (dump_decl): Ditto. 485718334Speter 485818334SpeterWed Jul 27 17:47:00 1994 Jason Merrill (jason@deneb.cygnus.com) 485918334Speter 486018334Speter * pt.c (do_type_instantiation): Only instantiate nested *classes*. 486118334Speter 486218334SpeterTue Jul 26 13:22:40 1994 Jason Merrill (jason@deneb.cygnus.com) 486318334Speter 486418334Speter * search.c (note_debug_info_needed): Also emit debugging information 486518334Speter for the types of fields. 486618334Speter 486718334SpeterMon Jul 25 00:34:44 1994 Jason Merrill (jason@deneb.cygnus.com) 486818334Speter 486918334Speter * pt.c (lookup_template_class): Pass 'template' to 487018334Speter coerce_template_parms instead of 'in_decl', since it's a more 487118334Speter meaningful context. 487218334Speter 487318334Speter * typeck.c (c_expand_return): Make sure any cleanups for the return 487418334Speter expression get run. 487518334Speter (build_c_cast): Use CONVERT_EXPR for conversion to void. 487618334Speter 487718334Speter * pt.c (do_type_instantiation): Also instantiate nested types. 487818334Speter 487918334Speter * typeck.c (convert_for_assignment): Don't die when comparing 488018334Speter pointers with different levels of indirection. 488118334Speter 488218334Speter * decl.c (grokdeclarator): The sub-call to grokdeclarator for 488318334Speter class-local typedefs sets DECL_ARGUMENTS, so we need to clear it 488418334Speter out. 488518334Speter 488618334Speter * decl2.c (finish_anon_union): Don't die if the union has no 488718334Speter members. 488818334Speter 488918334Speter * decl.c (grokdeclarator): Undo changes to declspecs when we're done 489018334Speter so that 'typedef int foo, bar;' will work. 489118334Speter 489218334Speter * decl2.c (finish_file): Don't call expand_aggr_init for 489318334Speter non-aggregates. 489418334Speter 489518334SpeterMon Jul 25 00:03:10 1994 Teemu Torma (tot@trema.fi) 489618334Speter 489718334Speter * decl.c (finish_function): We can't inline constructors and 489818334Speter destructors under some conditions with -fpic, but don't unset 489918334Speter DECL_INLINE. 490018334Speter 490118334SpeterMon Jul 25 00:03:10 1994 Jason Merrill (jason@deneb.cygnus.com) 490218334Speter 490318334Speter * typeck.c (build_object_ref): Make sure 'datum' is a valid object. 490418334Speter 490518334SpeterSun Jul 24 14:19:31 1994 Jason Merrill (jason@deneb.cygnus.com) 490618334Speter 490718334Speter * class.c (finish_struct): Don't set DECL_FIELD_BITPOS on 490818334Speter non-fields. 490918334Speter (finish_struct_methods): Use copy_assignment_arg_p. 491018334Speter 491118334Speter * cvt.c (cp_convert): If expr is an OFFSET_REF, resolve it instead 491218334Speter of giving an error. 491318334Speter 491418334Speter * typeck.c (build_binary_op_nodefault): Don't set result_type if we 491518334Speter don't know how to compare the operands. 491618334Speter 491718334Speter * decl.c (grokdeclarator): Avoid seg fault when someone uses '__op' 491818334Speter as a declarator-id in their program. Like the Linux headers do. 491918334Speter Arrgh. 492018334Speter 492118334Speter * tree.c (lvalue_p): Treat calls to functions returning objects by 492218334Speter value as lvalues again. 492318334Speter 492418334Speter * typeck.c (build_component_addr): Use convert_force to convert the 492518334Speter pointer in case the component type is also a private base class. 492618334Speter 492718334Speter * search.c (get_matching_virtual): Fix bogus warning of overloaded 492818334Speter virtual. 492918334Speter 493018334Speter * pt.c (overload_template_name): Set DECL_ARTIFICIAL on the created 493118334Speter TYPE_DECL to fix bogus shadowing warnings. 493218334Speter 493318334SpeterFri Jul 22 01:15:32 1994 Jason Merrill (jason@deneb.cygnus.com) 493418334Speter 493518334Speter * init.c (expand_aggr_init_1): const and volatile mismatches do not 493618334Speter prevent a TARGET_EXPR from initializing an object directly. 493718334Speter 493818334SpeterTue Jul 19 17:55:37 1994 Jason Merrill (jason@deneb.cygnus.com) 493918334Speter 494018334Speter * cvt.c (build_up_reference): Allow building up references to 494118334Speter `this', don't warn about making references to artificial variables 494218334Speter (like `this'). 494318334Speter 494418334Speter * tree.c (lvalue_p): `this' is not an lvalue. 494518334Speter 494618334Speter * call.c (build_method_call): Accept using a typedef name (or 494718334Speter template type parameter) for explicit destructor calls. 494818334Speter 494918334SpeterWed Jul 13 03:57:54 1994 Jason Merrill (jason@deneb.cygnus.com) 495018334Speter 495118334Speter * method.c (hack_identifier): Put back old code so lists of 495218334Speter non-functions will be handled properly. 495318334Speter 495418334Speter * cp-tree.h (TYPE_NEEDS_CONSTRUCTING): #if 0 out; this macro is now 495518334Speter defined in the language-independent tree.h. 495618334Speter 495718334Speter * tree.c (count_functions): Avoid bogus warning when compiling this 495818334Speter function. 495918334Speter 496018334SpeterMon Jul 11 18:37:20 1994 Jason Merrill (jason@deneb.cygnus.com) 496118334Speter 496218334Speter * decl.c (grok_reference_init): Always save the initializer of a 496318334Speter reference. 496418334Speter 496518334SpeterFri Jul 8 17:41:46 1994 Mike Stump <mrs@cygnus.com> 496618334Speter 496718334Speter * decl.c (cplus_expand_expr_stmt): Wrap statement expressions inside 496818334Speter CLEANUP_POINT_EXPRs so that the stack slots can be reused. 496918334Speter (disabled for now) 497018334Speter 497118334SpeterFri Jul 8 12:59:38 1994 Jason Merrill (jason@deneb.cygnus.com) 497218334Speter 497318334Speter * method.c (hack_identifier): Fix for new overloading. 497418334Speter 497518334Speter * typeck.c (build_binary_op_nodefault): Don't mess with division by 497618334Speter zero. 497718334Speter 497818334SpeterFri Jul 8 13:20:28 1994 Gerald Baumgartner (gb@cs.purdue.edu) 497918334Speter 498018334Speter * decl2.c (finish_file): Only call walk_sigtables, if 498118334Speter flag_handle_signatures is turned on, don't waste time otherwise. 498218334Speter 498318334SpeterFri Jul 8 02:27:41 1994 Jason Merrill (jason@deneb.cygnus.com) 498418334Speter 498518334Speter * decl.c (push_overloaded_decl): Don't create overloads of one when 498618334Speter shadowing a class type. 498718334Speter * typeck.c (build_x_function_call): Complain about overloads of one. 498818334Speter 498918334Speter * decl.c (grokdeclarator): Don't try to treat a char* as a tree. 499018334Speter (grokdeclarator): Fix setting of TREE_STATIC. 499118334Speter (start_decl): Clear DECL_IN_AGGR_P after calling duplicate_decls. 499218334Speter 499318334SpeterThu Jul 7 22:20:46 1994 Gerald Baumgartner (gb@andros.cygnus.com) 499418334Speter 499518334Speter * cp-tree.h (walk_sigtables): Created extern declaration. 499618334Speter * decl2.c (walk_sigtables): Created function, patterned after 499718334Speter walk_vtables, even though we only need it to write out sigtables. 499818334Speter (finish_sigtable_vardecl): Created function. 499918334Speter (finish_vtable_vardecl): Changed 0 to NULL_PTR. 500018334Speter (finish_file): Call walk_sigtables. 500118334Speter 500218334Speter * sig.c (build_signature_table_constructor): Mark class member 500318334Speter function pointed to from signature table entry as addressable. 500418334Speter 500518334SpeterThu Jul 7 13:39:37 1994 Jason Merrill (jason@deneb.cygnus.com) 500618334Speter 500718334Speter * decl.c (start_decl): Check new decl of static member variable 500818334Speter against the declaration in the class here. 500918334Speter (grokvardecl): Instead of here. 501018334Speter 501118334Speter * class.c (prepare_fresh_vtable): Call import_export_vtable if not 501218334Speter -fvtable-thunks. 501318334Speter (build_vtable): Ditto. 501418334Speter 501518334Speter * decl2.c (import_export_vtable): Move logic for deciding the 501618334Speter interface of a template class from here. 501718334Speter (import_export_template): To here. 501818334Speter (finish_vtable_vardecl): Call import_export_template before 501918334Speter import_export_vtable. 502018334Speter 502118334SpeterWed Jul 6 20:25:48 1994 Mike Stump <mrs@cygnus.com> 502218334Speter 502318334Speter * except.c (init_exception_processing): Setup interim_eh_hook to 502418334Speter call lang_interim_eh. 502518334Speter * except.c (do_unwind): Propagate throw object value across 502618334Speter stack unwinding. 502718334Speter * except.c (saved_throw_value): Used to hold the value of the object 502818334Speter being thrown. It is always a reference to the real value. 502918334Speter * except.c (expand_start_catch_block): Add handling for the 503018334Speter value of the exception object. 503118334Speter * except.c (expand_start_catch_block): Add handler for the handler, 503218334Speter so that throws inside the handler go to the outer block. 503318334Speter * except.c (expand_end_catch_block): Ditto. 503418334Speter * parse.y (handler_args): Use parm instead, as the other doesn't yet 503518334Speter handle references correctly. 503618334Speter 503718334SpeterWed Jul 6 17:55:32 1994 Per Bothner (bothner@kalessin.cygnus.com) 503818334Speter 503918334Speter * decl2.c (mark_vtable_entries): If -ftable-thunks, set the 504018334Speter vtable entry properly to abort. 504118334Speter 504218334SpeterTue Jul 5 14:07:54 1994 Jason Merrill (jason@deneb.cygnus.com) 504318334Speter 504418334Speter * typeck.c (build_binary_op_nodefault): Downgrade division by zero 504518334Speter errors to warnings. 504618334Speter 504718334Speter * call.c (build_overload_call_real): Handle fnname being a list of 504818334Speter functions. 504918334Speter * typeck.c (build_x_function_call): Pass list of functions to 505018334Speter build_overload_call, not just the name. 505118334Speter * tree.c (count_functions): Complain when called for invalid 505218334Speter argument. 505318334Speter 505418334Speter * decl.c (grokdeclarator): Fix settings of TREE_STATIC, TREE_PUBLIC 505518334Speter and DECL_EXTERNAL on static members and initialized const members. 505618334Speter * decl2.c (grokfield): Reflect this change. 505718334Speter 505818334SpeterFri Jul 1 09:35:51 1994 Jason Merrill (jason@deneb.cygnus.com) 505918334Speter 506018334Speter * parse.y (init): ANSI C++ does not forbid { }. 506118334Speter 506218334SpeterThu Jun 30 00:35:22 1994 Jason Merrill (jason@deneb.cygnus.com) 506318334Speter 506418334Speter * decl2.c (lang_decode_option): Set warn_nonvdtor along with -Wall. 506518334Speter warn_nonvdtor defaults to off. 506618334Speter 506718334Speter * class.c (instantiate_type): Use comptypes rather than relying on 506818334Speter types to satisfy ==. 506918334Speter 507018334Speter * decl.c (start_function): Set DECL_DEFER_OUTPUT on all inlines that 507118334Speter might be static. 507218334Speter 507318334Speter * tree.c (build_cplus_new): Never build WITH_CLEANUP_EXPRs. 507418334Speter 507518334Speter * decl.c (grok_reference_init): Deal with ADDR_EXPRs of TARGET_EXPRs. 507618334Speter 507718334Speter * cvt.c (cp_convert): Pass 0 to with_cleanup_p arg of 507818334Speter build_cplus_new. 507918334Speter 508018334SpeterWed Jun 29 22:31:09 1994 Jason Merrill (jason@deneb.cygnus.com) 508118334Speter 508218334Speter * decl2.c (finish_file): Maybe consider static inlines multiple 508318334Speter times, in case they reference each other. 508418334Speter 508518334SpeterTue Jun 28 11:58:38 1994 Gerald Baumgartner (gb@cs.purdue.edu) 508618334Speter 508718334Speter * class.c (finish_struct): Don't `cons_up_default_function's 508818334Speter for signatures. 508918334Speter (finish_struct): Handle an empty method_vec correctly. 509018334Speter 509118334Speter * decl.c (grokdeclarator): Don't warn about a signature being 509218334Speter empty in a signature pointer declaration if we only saw a 509318334Speter forward declaration of the signature. Changed `warning's into 509418334Speter `cp_warning's. 509518334Speter 509618334Speter * sig.c (build_sigtable): Don't die if a null signature table 509718334Speter constructor is returned. 509818334Speter (build_signature_pointer_constructor): If the signature table 509918334Speter constructor is null, the _sptr field is set to a null pointer 510018334Speter and cast to the appropriate type. Make copies of all null 510118334Speter pointers so that the type null_pointer_node doesn't get changed. 510218334Speter (build_signature_table_constructor): Added comments. 510318334Speter 510418334Speter * sig.c (build_signature_pointer_constructor): Complain if we 510518334Speter try to assign to/initialize a signature pointer/reference of 510618334Speter an undefined signature. 510718334Speter 510818334SpeterMon Jun 27 14:05:16 1994 Gerald Baumgartner (gb@cs.purdue.edu) 510918334Speter 511018334Speter * typeck2.c (store_init_value): Don't be pedantic about 511118334Speter non-constant initializers of signature tables/pointers/references. 511218334Speter 511318334SpeterFri Jun 24 16:49:41 1994 Gerald Baumgartner (gb@cs.purdue.edu) 511418334Speter 511518334Speter * decl.c (grokdeclarator): If we are grokking an opaque typedef 511618334Speter in a signature, don't complain about it begin static. 511718334Speter 511818334SpeterWed Jun 29 16:44:45 1994 Mike Stump <mrs@cygnus.com> 511918334Speter 512018334Speter Fixes a problem of the this pointer being wrong in virtual calls to 512118334Speter methods that are not overridden in more derived classes. 512218334Speter 512318334Speter * class.c (fixup_vtable_delta): New routine. It will fixup the 512418334Speter delta entries in vtables, wheever they need updating. 512518334Speter * class.c (finish_struct): Call the new routine for all virtual 512618334Speter bases, as they can have different offsets, than those used in base 512718334Speter classes that we derive our vtable from. 512818334Speter 512918334SpeterTue Jun 28 23:49:28 1994 Jason Merrill (jason@deneb.cygnus.com) 513018334Speter 513118334Speter * typeck.c (build_binary_op): Use the types before default 513218334Speter conversions in the error message. 513318334Speter 513418334Speter * *.c: Use c_build_type_variant instead of build_type_variant where 513518334Speter the type might be an array. 513618334Speter 513718334Speter * call.c (build_method_call): Call build_type_variant and 513818334Speter build_reference_type in the right order. 513918334Speter * decl.c (record_builtin_type): Ditto. 514018334Speter 514118334SpeterWed Jun 29 16:58:53 1994 Jason Merrill (jason@deneb.cygnus.com) 514218334Speter 514318334Speter * call.c (build_method_call): Call build_type_variant and 514418334Speter build_reference_type in the right order. 514518334Speter * decl.c (record_builtin_type): Ditto. 514618334Speter 514718334SpeterTue Jun 28 23:49:28 1994 Jason Merrill (jason@deneb.cygnus.com) 514818334Speter 514918334Speter * typeck.c (build_binary_op): Use the types before default 515018334Speter conversions in the error message. 515118334Speter 515218334Speter * *.c: Use c_build_type_variant instead of build_type_variant where 515318334Speter the type might be an array. 515418334Speter 515518334SpeterSat Jun 25 11:50:54 1994 Jason Merrill (jason@deneb.cygnus.com) 515618334Speter 515718334Speter * cvt.c (convert_to_reference): Try UDC's before doing the 515818334Speter reinterpret_cast thang, though. 515918334Speter 516018334SpeterFri Jun 24 01:24:01 1994 Jason Merrill (jason@deneb.cygnus.com) 516118334Speter 516218334Speter * typeck.c (c_expand_return): Don't USE the return value location 516318334Speter after we've expanded the jump. 516418334Speter 516518334Speter * decl2.c (finish_file): Make sure DECL_SAVED_INSNS is not 0 before 516618334Speter trying to write out an inline. 516718334Speter 516818334Speter * cvt.c (build_up_reference): Also do address adjustment when the 516918334Speter target type uses MI. 517018334Speter (convert_to_reference): Try UDCs only after built-in conversions. 517118334Speter (build_type_conversion_1): Don't play games with the argument to the 517218334Speter method. 517318334Speter (build_type_conversion): #if 0 out code for binding to reference. 517418334Speter 517518334SpeterThu Jun 23 00:22:28 1994 Jason Merrill (jason@deneb.cygnus.com) 517618334Speter 517718334Speter * decl2.c (finish_file): Use TREE_SYMBOL_REFERENCED to decide 517818334Speter whether to emit inlines. 517918334Speter 518018334Speter * decl.c (grokdeclarator): Set explicit_int for decls that just 518118334Speter specify, say, 'long'. 518218334Speter 518318334Speter * init.c (do_friend): Do overload C functions (or call pushdecl, 518418334Speter anyaway). 518518334Speter 518618334SpeterWed Jun 22 13:40:49 1994 Jason Merrill (jason@deneb.cygnus.com) 518718334Speter 518818334Speter * cvt.c (build_up_reference): Don't call readonly_error. 518918334Speter (convert_to_reference): Propagate const and volatile from expr to 519018334Speter its type. 519118334Speter 519218334Speter * tree.c (lvalue_p): Random CALL_EXPRs are not lvalues. 519318334Speter 519418334Speter * cvt.c (build_up_reference): Break out WITH_CLEANUP_EXPR when 519518334Speter creating a temporary. 519618334Speter (convert_to_reference): Lose excessive and incorrect trickiness. 519718334Speter (cp_convert): Call build_cplus_new with with_cleanup_p set. 519818334Speter 519918334Speter * typeck2.c (build_functional_cast): Ditto. 520018334Speter 520118334SpeterTue Jun 21 17:38:38 1994 Jason Merrill (jason@deneb.cygnus.com) 520218334Speter 520318334Speter * decl.c (grokdeclarator): signed, unsigned, long and short all 520418334Speter imply 'int'. 520518334Speter 520618334Speter * decl.c (grokdeclarator): Allow "this is a type" syntax. 520718334Speter (grok_reference_init): Simplify and fix. 520818334Speter 520918334SpeterSun Jun 19 17:08:48 1994 Jason Merrill (jason@deneb.cygnus.com) 521018334Speter 521118334Speter * decl.c (grokdeclarator): pedwarn about a typedef that specifies no 521218334Speter type. 521318334Speter 521418334SpeterSat Jun 18 04:16:50 1994 Jason Merrill (jason@deneb.cygnus.com) 521518334Speter 521618334Speter * decl.c (start_function): Move TREE_PUBLIC and DECL_EXTERNAL 521718334Speter tinkering to after call to pushdecl. 521818334Speter 521918334SpeterFri Jun 17 14:48:28 1994 Jason Merrill (jason@deneb.cygnus.com) 522018334Speter 522118334Speter * call.c (build_method_call): Handle destructors for non-aggregate 522218334Speter types properly. 522318334Speter 522418334SpeterThu Jun 16 16:48:05 1994 Jason Merrill (jason@deneb.cygnus.com) 522518334Speter 522618334Speter * call.c (build_method_call): Make sure that the name given for the 522718334Speter destructor matches the constructor_name of the instance. 522818334Speter 522918334Speter * pt.c (do_function_instantiation): A non-extern instantiation 523018334Speter overrides a later extern one. 523118334Speter (do_type_instantiation): Ditto. 523218334Speter 523318334SpeterWed Jun 15 19:34:54 1994 Jason Merrill (jason@deneb.cygnus.com) 523418334Speter 523518334Speter * init.c (expand_aggr_init): Use TYPE_MAIN_VARIANT to get the 523618334Speter unqualified array type. 523718334Speter 523818334Speter * cp-tree.h (EMPTY_CONSTRUCTOR_P): Tests whether NODE is a 523918334Speter CONSTRUCTOR with no elements. 524018334Speter 524118334Speter * decl.c (various): Lose empty_init_node. 524218334Speter (finish_decl): Use EMPTY_CONSTRUCTOR_P, do the empty CONSTRUCTOR 524318334Speter thing depending on the value of DECL_COMMON instead of 524418334Speter flag_conserve_space, do the empty CONSTRUCTOR thing for types that 524518334Speter don't have constructors, don't treat a real empty CONSTRUCTOR 524618334Speter specially. 524718334Speter 524818334Speter * typeck2.c (process_init_constructor): Don't treat empty_init_node 524918334Speter specially. 525018334Speter 525118334SpeterWed Jun 15 19:05:25 1994 Mike Stump <mrs@cygnus.com> 525218334Speter 525318334Speter * class.c (override_one_vtable): Don't forget to merge in an old 525418334Speter overrider when we wanted to reuse a vtable, but couldn't. 525518334Speter 525618334SpeterWed Jun 15 15:03:16 1994 Jason Merrill (jason@deneb.cygnus.com) 525718334Speter 525818334Speter * decl.c (start_decl): Put statics in common again. 525918334Speter 526018334Speter * decl.c (grokdeclarator): Return NULL_TREE for an error rather than 526118334Speter setting the type to error_mark_node. 526218334Speter 526318334Speter * typeck.c (build_modify_expr): Build up a COMPOUND_EXPR for enum 526418334Speter bitfield assignments. 526518334Speter 526618334SpeterTue Jun 14 12:23:38 1994 Jason Merrill (jason@deneb.cygnus.com) 526718334Speter 526818334Speter * decl.c (grok_op_properties): Const objects can be passed by value. 526918334Speter 527018334SpeterMon Jun 13 03:10:59 1994 Jason Merrill (jason@deneb.cygnus.com) 527118334Speter 527218334Speter * decl2.c (import_export_vtable): Force implicit instantiations to 527318334Speter be interface_only when -fno-implicit-templates. 527418334Speter 527518334Speter * decl.c (duplicate_decls): Redeclaring a class template name is an 527618334Speter error. 527718334Speter 527818334Speter * pt.c (end_template_decl): Call GNU_xref_decl for class templates. 527918334Speter * xref.c (GNU_xref_decl): Support templates. 528018334Speter 528118334SpeterSat Jun 11 17:09:05 1994 Jason Merrill (jason@deneb.cygnus.com) 528218334Speter 528318334Speter * decl.c (grok_op_properties): Split out checking for whether this 528418334Speter function should suppress the default assignment operator. 528518334Speter * decl2.c (grok_function_init): Ditto. 528618334Speter (copy_assignment_arg_p): New function do do just that. 528718334Speter Now considers virtual assignment operators that take a base as an 528818334Speter argument to count as copy assignment operators. 528918334Speter 529018334Speter * search.c (dfs_debug_mark): Lose checks for DWARF_DEBUG and 529118334Speter TREE_ASM_WRITTEN, as they are redundant. 529218334Speter 529318334Speter * pt.c (end_template_decl): Don't try to set DECL_CLASS_CONTEXT on a 529418334Speter decl that has no LANG_SPECIFIC part. 529518334Speter (do_type_instantiation): Force the debugging information for this 529618334Speter type to be emitted. 529718334Speter 529818334Speter * decl.c (start_decl): Clear up uses of various types of templates 529918334Speter (say sorry for static data members, rather than "invalid template"). 530018334Speter (expand_static_init): Fix initialization of static data members of 530118334Speter template classes. 530218334Speter 530318334SpeterFri Jun 10 00:41:19 1994 Jason Merrill (jason@deneb.cygnus.com) 530418334Speter 530518334Speter * decl.c (grokdeclarator): Set DECL_CONTEXT on static data members. 530618334Speter 530718334Speter * g++.c (main): Use -xc++-cpp-output for .i files. 530818334Speter 530918334Speter * pt.c (tsubst): Give meaningful error about declaring template for 531018334Speter a copy constructor which was not declared in the class template. 531118334Speter (do_type_instantiation): Explicit instantiation before the class 531218334Speter template is an error. 531318334Speter (instantiate_template): Don't die if tsubst returns error_mark_node. 531418334Speter 531518334SpeterThu Jun 9 19:04:59 1994 Jason Merrill (jason@deneb.cygnus.com) 531618334Speter 531718334Speter Don't synthesize the copy assignment operator if the one in a base 531818334Speter class is pure virtual. 531918334Speter * cp-tree.h (TYPE_HAS_ABSTRACT_ASSIGN_REF): New macro to indicate 532018334Speter whether the type has a pure virtual copy assignment operator. 532118334Speter * class.c (finish_base_struct): Don't generate the copy assignment 532218334Speter operator if a base class has a pure virtual one. 532318334Speter * decl.c (grok_op_properties): Add disabled code to set 532418334Speter TYPE_HAS_ABSTRACT_ASSIGN_REF with comment pointing to where it is 532518334Speter actually set. 532618334Speter * decl2.c (grok_function_init): Set TYPE_HAS_ABSTRACT_ASSIGN_REF. 532718334Speter 532818334Speter * decl2.c (import_export_vtable): Always treat template 532918334Speter instantiations as if write_virtuals >= 2, and treat implicit 533018334Speter instantiations as external if -fno-implicit-templates. 533118334Speter (finish_file): Output all pending inlines if 533218334Speter flag_keep_inline_functions. 533318334Speter 533418334SpeterWed Jun 8 20:48:02 1994 Mike Stump <mrs@cygnus.com> 533518334Speter 533618334Speter * tree.c (layout_vbasetypes): Align virtual base classes inside 533718334Speter complete objects, so that we don't core dump on machines such as 533818334Speter SPARCs when we access members that require larger than normal 533918334Speter alignments, such as a double. Also, we bump up the total alignment 534018334Speter on the complete type, as necessary. 534118334Speter 534218334SpeterWed Jun 8 16:18:14 1994 Jason Merrill (jason@deneb.cygnus.com) 534318334Speter 534418334Speter * gxxint.texi (Free Store): New section with code for examining 534518334Speter cookie. 534618334Speter (Limitations of g++): Remove operator delete entry, since it is no 534718334Speter longer accurate. Fix access control entry. 534818334Speter 534918334Speter * typeck.c (build_unary_op): Pedwarn about taking the address of or 535018334Speter incrementing a cast to non-reference type. 535118334Speter (build_modify_expr): Use convert instead of convert_force again. 535218334Speter 535318334Speter * search.c (get_base_distance): Use IS_AGGR_TYPE_CODE to check for 535418334Speter class type, not == RECORD_TYPE. 535518334Speter 535618334Speter * decl.c (grokdeclarator): Cope with grokfndecl returning NULL_TREE. 535718334Speter 535818334Speter * typeck2.c (report_case_error): #if 0 out. 535918334Speter * lex.c (real_yylex): Lose RANGE. 536018334Speter * parse.y: Ditto. 536118334Speter 536218334SpeterTue Jun 7 18:17:35 1994 Jason Merrill (jason@deneb.cygnus.com) 536318334Speter 536418334Speter * parse.y (simple_stmt, case ranges): Use ELLIPSIS instead of RANGE. 536518334Speter 536618334SpeterMon Jun 6 19:39:57 1994 Jason Merrill (jason@deneb.cygnus.com) 536718334Speter 536818334Speter * typeck.c (build_c_cast): Don't shortcut conversions to the same 536918334Speter type. Don't replace consts with their values here, since that's now 537018334Speter done in cp_convert. 537118334Speter 537218334Speter * cvt.c (cp_convert): When converting to bool, take 537318334Speter integer_zero_node to false_node and all other INTEGER_CSTs to 537418334Speter true_node. 537518334Speter (build_type_conversion): Don't complain about multiple conversions 537618334Speter to float if we're not really converting. 537718334Speter 537818334SpeterFri Jun 3 02:10:56 1994 Jason Merrill (jason@deneb.cygnus.com) 537918334Speter 538018334Speter Implement 'extern template class A<int>;' syntax for suppressing 538118334Speter specific implicit instantiations. 538218334Speter * cp-tree.h: Update prototypes for do_*_instantiation. 538318334Speter * pt.c (do_pending_expansions): Don't compile 'extern' explicit 538418334Speter instantiations. 538518334Speter (do_function_instantiation): Set DECL_EXTERNAL on 'extern' explicit 538618334Speter instantiations. 538718334Speter (do_type_instantiation): Ditto. 538818334Speter * parse.y (explicit_instantiation): Support 'extern template class 538918334Speter A<int>;' syntax. 539018334Speter * decl.c (start_function): Don't modify the settings of TREE_PUBLIC 539118334Speter and DECL_EXTERNAL on explicit instantiations. 539218334Speter 539318334Speter * cvt.c (cp_convert): Replace constants with their values before 539418334Speter converting. 539518334Speter (cp_convert): Consistently use 'e' instead of 'expr'. 539618334Speter 539718334SpeterThu Jun 2 03:53:30 1994 Jason Merrill (jason@deneb.cygnus.com) 539818334Speter 539918334Speter * typeck2.c (build_x_arrow): Resolve OFFSET_REFs first. 540018334Speter 540118334SpeterWed Jun 1 18:57:35 1994 Jason Merrill (jason@deneb.cygnus.com) 540218334Speter 540318334Speter * typeck2.c (digest_init): Handle initializing a pmf with an 540418334Speter overloaded method. 540518334Speter * typeck.c (build_ptrmemfunc): Handle overloaded methods. 540618334Speter 540718334Speter * decl.c (pushtag): Use build_decl to make TYPE_DECLs. 540818334Speter (xref_defn_tag): Ditto. 540918334Speter * pt.c (process_template_parm): Ditto. 541018334Speter (lookup_template_class): Ditto. 541118334Speter (push_template_decls): Ditto. 541218334Speter (instantiate_class_template): Ditto. 541318334Speter (create_nested_upt): Ditto. 541418334Speter * class.c (finish_struct): Don't try to set DECL_CLASS_CONTEXT on 541518334Speter TYPE_DECLs. 541618334Speter 541718334Speter * typeck.c (convert_arguments): Make sure type is not NULL before 541818334Speter checking its TREE_CODE. 541918334Speter 542018334SpeterWed Jun 1 17:40:39 1994 Mike Stump <mrs@cygnus.com> 542118334Speter 542218334Speter * class.c (get_derived_offset): New routine. 542318334Speter * class.c (finish_base_struct): Make sure we set BINFO_VTABLE and 542418334Speter BINFO_VIRTUALS when we choose a new base class to inherit from. 542518334Speter * class.c (modify_one_vtable): Use get_derived_offset to get the 542618334Speter offset to the most base class subobject that we derived this binfo 542718334Speter from. 542818334Speter * class.c (finish_struct): Move code to calculate the 542918334Speter DECL_FIELD_BITPOS of the vfield up, as we need might need it for 543018334Speter new calls to get_derived_offset in modify_one_vtable. 543118334Speter 543218334SpeterWed Jun 1 16:50:59 1994 Jason Merrill (jason@deneb.cygnus.com) 543318334Speter 543418334Speter * init.c (build_member_call): Use build_pointer_type instead of 543518334Speter TYPE_POINTER_TO. 543618334Speter 543718334SpeterWed Jun 1 11:11:15 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 543818334Speter 543918334Speter * decl.c (grokdeclarator): Make sure we have a DNAME set before we 544018334Speter try to use it in an error. 544118334Speter 544218334SpeterWed Jun 1 09:48:49 1994 Mike Stump <mrs@cygnus.com> 544318334Speter 544418334Speter * typeck.c (convert_arguments, convert_for_initialization): Don't 544518334Speter strip NOP_EXPRs, when we are converting to a reference. 544618334Speter 544718334SpeterWed Jun 1 01:11:38 1994 Jason Merrill (jason@deneb.cygnus.com) 544818334Speter 544918334Speter * typeck.c (build_modify_expr): Don't dereference references when 545018334Speter initializing them. 545118334Speter 545218334Speter * decl2.c (grokfield): Don't check for grokdeclarator returning 545318334Speter error_mark_node any more. 545418334Speter 545518334Speter * decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node. 545618334Speter (start_method): Return void_type_node instead of error_mark_node. 545718334Speter 545818334Speter * typeck.c (build_modify_expr): Resolve offset refs earlier. 545918334Speter 546018334SpeterTue May 31 16:06:58 1994 Jason Merrill (jason@deneb.cygnus.com) 546118334Speter 546218334Speter * call.c (build_method_call): Resolve OFFSET_REFs in the object. 546318334Speter 546418334Speter * typeck.c (build_modify_expr): Dereference references before trying 546518334Speter to assign to them. 546618334Speter 546718334Speter * call.c (build_method_call): Don't confuse type conversion 546818334Speter operators with constructors. 546918334Speter * typeck2.c (build_functional_cast): Just call build_c_cast if there 547018334Speter was only one parameter. 547118334Speter * method.c (build_typename_overload): Don't set 547218334Speter IDENTIFIER_GLOBAL_VALUE on these identifiers. 547318334Speter * decl.c (grok_op_properties): Warn about defining a type conversion 547418334Speter operator that converts to a base class (or reference to it). 547518334Speter * cvt.c (cp_convert): Don't try to use a type conversion operator 547618334Speter when converting to a base class. 547718334Speter (build_type_conversion_1): Don't call constructor_name_full on an 547818334Speter identifier. 547918334Speter * cp-tree.h (DERIVED_FROM_P): Should be self-explanatory. 548018334Speter 548118334Speter * decl.c (start_decl): Don't complain that error_mark_node is an 548218334Speter incomplete type. 548318334Speter (finish_decl): Check for type == error_mark_node. 548418334Speter 548518334SpeterMon May 30 23:38:55 1994 Jason Merrill (jason@deneb.cygnus.com) 548618334Speter 548718334Speter * decl.c (start_function): Set DECL_DEFER_OUTPUT on implicit 548818334Speter instantiations and inline members. 548918334Speter 549018334Speter * spew.c (yylex): Set looking_for_template if the next token is a '<'. 549118334Speter 549218334Speter * lex.h: Declare looking_for_template. 549318334Speter 549418334Speter * decl.c (lookup_name_real): Use looking_for_template to arbitrate 549518334Speter between type and template interpretations of an identifier. 549618334Speter 549718334SpeterSat May 28 04:07:40 1994 Jason Merrill (jason@deneb.cygnus.com) 549818334Speter 549918334Speter * pt.c (instantiate_template): Zero out p if we found a 550018334Speter specialization. 550118334Speter 550218334Speter * decl.c (grokdeclarator): Elucidate warning. 550318334Speter (grokdeclarator): If pedantic AND -ansi, complain about long long. 550418334Speter 550518334Speter Make explicit instantiation work reasonably. It is now appropriate 550618334Speter to deprecate the use of -fexternal-templates. 550718334Speter * pt.c (instantiate_template): Set DECL_TEMPLATE_SPECIALIZATION or 550818334Speter DECL_IMPLICIT_INSTANTIATION on fndecl as appropriate. 550918334Speter (end_template_instantiation): Reflect changes in USE_TEMPLATE 551018334Speter semantics. 551118334Speter (do_pending_expansions): if (!flag_implicit_templates) DECIDE(0); 551218334Speter (do_function_instantiation): Don't set EXPLICIT_INST if 551318334Speter flag_external_templates is set. Do set TREE_PUBLIC and DECL_EXTERN 551418334Speter appropriately otherwise. 551518334Speter (do_type_instantiation): Set interface info for class. Set 551618334Speter TREE_PUBLIC and DECL_EXTERN for methods. Do none of this if 551718334Speter flag_external_templates is set. 551818334Speter * parse.y: Reflect changes in USE_TEMPLATE semantics. 551918334Speter * decl2.c: New flag flag_implicit_templates determines whether or 552018334Speter not implicit instantiations get emitted. This flag currently 552118334Speter defaults to true, and must be true for -fexternal-templates to work. 552218334Speter (finish_file): Consider flag_implement_inlines when 552318334Speter setting DECL_EXTERNAL. Consider flag_implicit_templates when 552418334Speter deciding whether or not to emit a static copy. 552518334Speter * decl.c (start_function): Set TREE_PUBLIC and DECL_EXTERNAL 552618334Speter properly for template instantiations. 552718334Speter (start_method): Set DECL_IMPLICIT_INSTANTIATION on methods of a 552818334Speter template class. 552918334Speter * cp-tree.h (CLASSTYPE_USE_TEMPLATE): Change semantics. 553018334Speter (DECL_USE_TEMPLATE): Parallel macro for FUNCTION and VAR_DECLs. 553118334Speter (various others): Accessor macros for the above. 553218334Speter 553318334SpeterFri May 27 13:57:40 1994 Jason Merrill (jason@deneb.cygnus.com) 553418334Speter 553518334Speter * typeck.c (build_binary_op_nodefault): Division by constant zero is 553618334Speter an error. 553718334Speter 553818334SpeterFri May 27 13:50:15 1994 Mike Stump <mrs@cygnus.com> 553918334Speter 554018334Speter * class.c (override_one_vtable): Don't modify things we don't own. 554118334Speter 554218334SpeterFri May 27 01:42:58 1994 Jason Merrill (jason@deneb.cygnus.com) 554318334Speter 554418334Speter * decl.c (finish_decl): Don't postpone processing the initializer of 554518334Speter a decl with DECL_EXTERNAL set, and do call rest_of_compilation for a 554618334Speter PUBLIC const at toplevel. 554718334Speter (grokdeclarator): pedwarn about initializing non-const or 554818334Speter non-integral statics in the class body. 554918334Speter 555018334Speter * decl.c (pushtag): Don't try to set DECL_CLASS_CONTEXT on a 555118334Speter TYPE_DECL. 555218334Speter 555318334Speter * call.c (convert_harshness): Dereference reference on rhs before 555418334Speter proceeding, properly grok passing const things to non-const 555518334Speter references. 555618334Speter 555718334Speter * typeck.c (build_unary_op): Soften error about taking the address 555818334Speter of main() to a pedwarn. 555918334Speter 556018334Speter * lex.c (default_copy_constructor_body): Unambiguously specify base 556118334Speter classes (i.e. A((const class ::A&)_ctor_arg) ). 556218334Speter (default_assign_ref_body): Ditto. 556318334Speter 556418334SpeterThu May 26 13:13:55 1994 Gerald Baumgartner (gb@mexican.cygnus.com) 556518334Speter 556618334Speter * decl2.c (grokfield): Don't complain about local signature 556718334Speter method declaration without definition. 556818334Speter 556918334Speter * call.c (convert_harshness): If `type' is a signature pointer 557018334Speter and `parmtype' is a pointer to a signature, just return 0. We 557118334Speter don't really convert in this case; it's a result of making the 557218334Speter `this' parameter of a signature method a signature pointer. 557318334Speter 557418334Speter * call.c (build_method_call): Distinguish calling the default copy 557518334Speter constructor of a signature pointer/reference from a signature 557618334Speter member function call. 557718334Speter 557818334SpeterThu May 26 12:56:25 1994 Jason Merrill (jason@deneb.cygnus.com) 557918334Speter 558018334Speter * decl2.c (grokfield): Don't set TREE_PUBLIC on member function 558118334Speter declarations. 558218334Speter 558318334Speter * decl.c (duplicate_decls): A previous function declaration as 558418334Speter static overrides a subsequent non-static definition. 558518334Speter (grokdeclarator): Don't set TREE_PUBLIC on inline method 558618334Speter declarations. 558718334Speter 558818334SpeterWed May 25 14:36:38 1994 Jason Merrill (jason@deneb.cygnus.com) 558918334Speter 559018334Speter * decl.c (grokdeclarator): Handle initialization of static const 559118334Speter members. 559218334Speter (finish_decl): Ditto. 559318334Speter 559418334Speter * decl2.c (grokfield): Allow initialization of static const members 559518334Speter even when pedantic. 559618334Speter 559718334Speter * decl2.c (grokfield): Deal with grokdeclarator returning 559818334Speter error_mark_node. 559918334Speter 560018334Speter * decl.c (grok_ctor_properties): Return 0 for A(A) constructor. 560118334Speter (grokfndecl): Check the return value of grok_ctor_properties. 560218334Speter (start_method): Ditto. 560318334Speter 560418334Speter * parse.y (absdcl): Expand type_quals inline. 560518334Speter 560618334SpeterTue May 24 19:10:32 1994 Jason Merrill (jason@deneb.cygnus.com) 560718334Speter 560818334Speter * decl.c (pushtag): Use IS_AGGR_TYPE rather than checking for a 560918334Speter RECORD_TYPE. 561018334Speter 561118334SpeterTue May 24 18:09:16 1994 Per Bothner (bothner@kalessin.cygnus.com) 561218334Speter 561318334Speter * cp-tree.h (VTABLE_NAME_FORMAT): If flag_vtable_thunks, 561418334Speter always use "__vt_%s". 561518334Speter * decl2.c (finish_vtable_vardecl): Don't consider abstract virtuals 561618334Speter when looking for a "sentinal" method (to decide on emitting vtables). 561718334Speter * decl2.c (finish_file): Scan all decls for thunks that need 561818334Speter to be emitted. 561918334Speter * decl2.c (finish_vtable_vardecl): Don't bother calling emit_thunk. 562018334Speter * method.c (make_thunk): Use a more meaningful label. If there 562118334Speter exists a matching top-level THUNK_DECL re-use it; otherwise 562218334Speter create a new THUNK_DECL (and declare it). 562318334Speter * method.c (emit_thunk): Make thunk external/public depending 562418334Speter on the underlying method. 562518334Speter 562618334SpeterTue May 24 00:22:04 1994 Jason Merrill (jason@deneb.cygnus.com) 562718334Speter 562818334Speter * pt.c (tsubst): Use lookup_name_nonclass to find guiding decls, not 562918334Speter lookup_name. 563018334Speter 563118334Speter * call.c (build_overload_call_real): Don't immediately pick a 563218334Speter function which matches perfectly. 563318334Speter 563418334Speter * decl.c (grokdeclarator): Use c_build_type_variant for arrays. 563518334Speter (grokdeclarator): Warn about, and throw away, cv-quals attached to a 563618334Speter reference (like 'int &const j'). 563718334Speter 563818334Speter * typeck.c (convert_arguments): Don't mess with i for methods. 563918334Speter * call.c (build_method_call): Pass the function decl to 564018334Speter convert_arguments. 564118334Speter 564218334Speter * typeck.c (comp_ptr_ttypes_real): New function. Implements the 564318334Speter checking for which multi-level pointer conversions are allowed. 564418334Speter (comp_target_types): Call it. 564518334Speter (convert_for_assignment): Check const parity on the ultimate target 564618334Speter type, too. And make those warnings pedwarns. 564718334Speter 564818334SpeterMon May 23 14:11:24 1994 Jason Merrill (jason@deneb.cygnus.com) 564918334Speter 565018334Speter * error.c (dump_char): Use TARGET_* for character constants. 565118334Speter 565218334SpeterMon May 23 13:03:03 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 565318334Speter 565418334Speter * tree.c (debug_no_list_hash): Make static. 565518334Speter 565618334Speter * decl.c (decls_match): Say the types don't match if newdecl ends up 565718334Speter with a null type, after we've checked if olddecl does. 565818334Speter (pushdecl): Check if the decls themselves match before looking for 565918334Speter an extern redeclared as static, to avoid inappropriate and incorrect 566018334Speter warnings. 566118334Speter 566218334SpeterFri May 20 14:04:34 1994 Jason Merrill (jason@deneb.cygnus.com) 566318334Speter 566418334Speter * decl.c (grokdeclarator): Make warning about duplicate short, etc. 566518334Speter a pedwarn. 566618334Speter 566718334Speter * typeck.c (build_c_cast): Casting to function or method type is an 566818334Speter error. 566918334Speter 567018334Speter * class.c (finish_struct): Make warning for anonymous class with no 567118334Speter instances a pedwarn. 567218334Speter 567318334Speter * Makefile.in (stamp-parse): Expect a s/r conflict. 567418334Speter 567518334Speter * typeck.c (build_modify_expr): pedwarn about using a non-lvalue 567618334Speter cast as an lvalue. 567718334Speter 567818334SpeterThu May 19 12:08:48 1994 Jason Merrill (jason@deneb.cygnus.com) 567918334Speter 568018334Speter * cvt.c (type_promotes_to): Make sure bool promotes to int rather 568118334Speter than unsigned on platforms where sizeof(char)==sizeof(int). 568218334Speter 568318334SpeterWed May 18 14:27:06 1994 Jason Merrill (jason@deneb.cygnus.com) 568418334Speter 568518334Speter * typeck.c (build_c_cast): Tack on a NOP_EXPR when casting to 568618334Speter another variant. 568718334Speter (build_modify_expr): Don't strip NOP_EXPRs, and don't get tricky 568818334Speter and treat them as lvalues. 568918334Speter 569018334Speter * decl.c (shadow_tag): Do complain about forward declarations of 569118334Speter enums and empty declarations. 569218334Speter * parse.y: Don't complain about forward declarations of enums and 569318334Speter empty declarations. 569418334Speter 569518334Speter * typeck.c (convert_for_assignment): Complain about changing 569618334Speter the signedness of a pointer's target type. 569718334Speter 569818334Speter * parse.y (stmt): Move duplicated code for checking case values from 569918334Speter here. 570018334Speter * decl2.c (check_cp_case_value): To here. And add a call to 570118334Speter constant_expression_warning. 570218334Speter 570318334Speter * typeck.c (convert_for_assignment): Don't complain about assigning 570418334Speter a negative value to bool. 570518334Speter 570618334Speter * decl.c (init_decl_processing): Make bool unsigned. 570718334Speter 570818334Speter * class.c (finish_struct): Allow bool bitfields. 570918334Speter 571018334SpeterWed May 18 12:35:27 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) 571118334Speter 571218334Speter * Make-lang.in (c++.install-man): Get g++.1 from $(srcdir)/cp. 571318334Speter 571418334SpeterWed May 18 03:28:35 1994 Jason Merrill (jason@deneb.cygnus.com) 571518334Speter 571618334Speter * cvt.c (build_type_conversion): Lose special handling of 571718334Speter truthvalues. 571818334Speter 571918334Speter * search.c (dfs_pushdecls): Improve shadowing warning. 572018334Speter 572118334SpeterTue May 17 13:34:46 1994 Jason Merrill (jason@deneb.cygnus.com) 572218334Speter 572318334Speter * init.c (build_delete): Throw away const and volatile on `this'. 572418334Speter 572518334Speter * decl.c (finish_enum): Put the constants in TYPE_VALUES again, 572618334Speter rather than the enumerators. 572718334Speter (pushtag): s/cdecl/c_decl/g 572818334Speter 572918334SpeterMon May 16 23:04:01 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de) 573018334Speter 573118334Speter * cp/typeck.c (common_type): Attribute merging. 573218334Speter (comp_types): Utilise COMP_TYPE_ATTRIBUTES macro. 573318334Speter 573418334Speter * cp/parse.y: Revamp attribute parsing. 573518334Speter 573618334SpeterMon May 16 01:40:34 1994 Jason Merrill (jason@deneb.cygnus.com) 573718334Speter 573818334Speter * decl.c (shadow_tag): Also check for inappropriate use of auto and 573918334Speter register. 574018334Speter 574118334Speter * method.c (build_overload_name): Clarify that the illegal case is a 574218334Speter pointer or reference to array of unknown bound. 574318334Speter 574418334Speter * error.c (dump_type_prefix): Print references to arrays properly. 574518334Speter 574618334Speter * typeck.c (various): Be more helpful in pointer 574718334Speter comparison diagnostics. 574818334Speter 574918334Speter * tree.c (lvalue_p): MODIFY_EXPRs are lvalues again. Isn't this 575018334Speter fun? 575118334Speter 575218334Speter * parse.y: Also catch an error after valid stmts. 575318334Speter 575418334Speter * search.c (dfs_init_vbase_pointers): Don't abort because `this' is 575518334Speter const. 575618334Speter 575718334Speter * typeck.c (convert_for_initialization): If call to 575818334Speter convert_to_reference generated a diagnostic, print out the parm 575918334Speter number and function decl if any. 576018334Speter 576118334Speter * errfn.c (cp_thing): Check atarg1 to determine whether or not we're 576218334Speter specifying a line, not atarg. 576318334Speter 576418334Speter * tree.c (build_cplus_method_type): Always make `this' const. 576518334Speter 576618334Speter * decl2.c (grokclassfn): If -fthis-is-variable and this function is 576718334Speter a constructor or destructor, make `this' non-const. 576818334Speter 576918334Speter * typeck.c (build_modify_expr): Don't warn specially about 577018334Speter assignment to `this' here anymore, since it will be caught by the 577118334Speter usual machinery. 577218334Speter 577318334Speter * various: Disallow specific GNU extensions (variable-size arrays, 577418334Speter etc.) when flag_ansi is set, not necessarily when pedantic is set, 577518334Speter so that people can compile with -pedantic-errors for tighter const 577618334Speter checking and such without losing desirable extensions. 577718334Speter 577818334Speter * typeck2.c (build_functional_cast): Call build_method_call with 577918334Speter LOOKUP_PROTECT. 578018334Speter (process_init_constructor): Only process FIELD_DECLs. 578118334Speter 578218334Speter * decl.c (finish_decl): Also force static consts with no explicit 578318334Speter initializer that need constructing into the data segment. 578418334Speter 578518334Speter * init.c (build_delete): Undo last patch, as it interferes with 578618334Speter automatic cleanups. 578718334Speter 578818334SpeterSat May 14 01:59:31 1994 Jason Merrill (jason@deneb.cygnus.com) 578918334Speter 579018334Speter * call.c, class.h, cp-tree.h, cvt.c, decl2.c: Lose old overloading 579118334Speter code. 579218334Speter 579318334Speter * init.c (build_delete): pedwarn about using plain delete to delete 579418334Speter an array. 579518334Speter 579618334SpeterFri May 13 16:45:07 1994 Jason Merrill (jason@deneb.cygnus.com) 579718334Speter 579818334Speter * typeck.c (comp_target_types): Be more helpful in contravariance 579918334Speter warnings, and make them pedwarns. 580018334Speter 580118334Speter * decl.c (grokdeclarator): Use decl_context to decide whether or not 580218334Speter this is an access declaration. 580318334Speter 580418334Speter * class.c (finish_struct_bits): Set TYPE_HAS_INT_CONVERSION if it 580518334Speter has a conversion to enum or bool, too. 580618334Speter 580718334SpeterFri May 13 16:31:27 1994 Mike Stump <mrs@cygnus.com> 580818334Speter 580918334Speter * method.c (emit_thunk): Make declaration for 581018334Speter current_call_is_indirect local (needed for hppa). 581118334Speter 581218334SpeterFri May 13 16:16:37 1994 Jason Merrill (jason@deneb.cygnus.com) 581318334Speter 581418334Speter * pt.c (uses_template_parms): Grok BOOLEAN_TYPE. 581518334Speter (tsubst): Ditto. 581618334Speter 581718334SpeterFri May 13 16:23:32 1994 Mike Stump <mrs@cygnus.com> 581818334Speter 581918334Speter * pt.c (tsubst): If there is already a function for this expansion, 582018334Speter use it. 582118334Speter * pt.c (instantiate_template): Ditto. 582218334Speter 582318334SpeterFri May 13 10:30:42 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 582418334Speter 582518334Speter * parse.y (implicitly_scoped_stmt, simple_stmt case): Use 582618334Speter kept_level_p for MARK_ENDS argument to expand_end_bindings, to avoid 582718334Speter generating debug info for unemitted symbols on some systems. 582818334Speter 582918334Speter * cp-tree.h (build_static_cast, build_reinterpret_cast, 583018334Speter build_const_cast): Add declarations. 583118334Speter 583218334SpeterFri May 13 09:50:31 1994 Mike Stump <mrs@cygnus.com> 583318334Speter 583418334Speter * search.c (expand_indirect_vtbls_init): Fix breakage from Apr 27 583518334Speter fix. We now try get_binfo, and if that doesn't find what we want, 583618334Speter we go back to the old method, which still sometimes fails. 583718334Speter 583818334SpeterFri May 13 01:43:18 1994 Jason Merrill (jason@deneb.cygnus.com) 583918334Speter 584018334Speter * parse.y (initdcl): Call cplus_decl_attributes on the right 584118334Speter variable. 584218334Speter * decl2.c (cplus_decl_attributes): Don't call decl_attributes for 584318334Speter void_type_node. 584418334Speter 584518334Speter * typeck.c (build_binary_op_nodefault): Change result_type for 584618334Speter comparison ops to bool. 584718334Speter (build_binary_op): Convert args of && and || to bool. 584818334Speter * cvt.c (build_default_binary_type_conversion): Convert args of && 584918334Speter and || to bool. 585018334Speter (build_default_unary_type_conversion): Convert arg of ! to bool. 585118334Speter (type_promotes_to): bool promotes to int. 585218334Speter 585318334SpeterFri May 13 01:43:18 1994 Mike Stump <mrs@cygnus.com> 585418334Speter 585518334Speter Implement the new builtin `bool' type. 585618334Speter * typeck.c (build_binary_op_nodefault): Convert args of && and || to 585718334Speter bool. 585818334Speter (build_unary_op): Convert arg of ! to bool. 585918334Speter * parse.y: Know true and false. Use bool_truthvalue_conversion. 586018334Speter * method.c (build_overload_value): Know bool. 586118334Speter (build_overload_name): Ditto. 586218334Speter * lex.c (init_lex): Set up RID_BOOL. 586318334Speter * gxx.gperf: Add bool, true, false. 586418334Speter * error.c (*): Know bool. 586518334Speter * decl.c (init_decl_processing): Set up bool, true, false. 586618334Speter * cvt.c (cp_convert): Handle conversion to bool. 586718334Speter (build_type_conversion): Ditto. 586818334Speter * *.c: Accept bool where integers and enums are accepted (use 586918334Speter INTEGRAL_CODE_P macro). 587018334Speter 587118334SpeterThu May 12 19:13:54 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk) 587218334Speter 587318334Speter * g++.c: Use #ifdef for __MSDOS__, not #if. 587418334Speter 587518334SpeterThu May 12 18:05:18 1994 Mike Stump <mrs@cygnus.com> 587618334Speter 587718334Speter * decl2.c (lang_f_options): Handle -fshort-temps. -fshort-temps 587818334Speter gives old behavior , and destroys temporaries earlier. Default 587918334Speter behavior now conforms to the ANSI working paper. 588018334Speter 588118334SpeterThu May 12 14:45:35 1994 Jason Merrill (jason@deneb.cygnus.com) 588218334Speter 588318334Speter * typeck.c (build_modify_expr): Understand MODIFY_EXPR as an lvalue. 588418334Speter Use convert_force to convert the result of a recursive call when we 588518334Speter are dealing with a NOP_EXPR. Don't automatically wrap MODIFY_EXPRs 588618334Speter in COMPOUND_EXPRs any more. 588718334Speter (various): Lose pedantic_lvalue_warning. 588818334Speter (unary_complex_lvalue): Understand MODIFY_EXPR. 588918334Speter 589018334Speter * cvt.c (convert_to_reference): Allow DECL to be error_mark_node if 589118334Speter we don't know what we're initializing. 589218334Speter 589318334SpeterWed May 11 01:59:36 1994 Jason Merrill (jason@deneb.cygnus.com) 589418334Speter 589518334Speter * cvt.c (convert_to_reference): Modify to use convtype parameter. 589618334Speter Only create temporaries when initializing a reference, not when 589718334Speter casting. 589818334Speter (cp_convert): New main function. 589918334Speter (convert): Call cp_convert. 590018334Speter * cvt.c, decl.c, typeck.c: Fix calls to convert_to_reference. 590118334Speter * cp-tree.h (CONV_*): New constants used by conversion code for 590218334Speter selecting conversions to perform. 590318334Speter 590418334Speter * tree.c (lvalue_p): MODIFY_EXPRs are no longer lvalues. 590518334Speter 590618334Speter * typeck.c (build_{static,reinterpret,const_cast): Stubs that just 590718334Speter call build_c_cast. 590818334Speter * parse.y: Add {static,reinterpret,const}_cast. 590918334Speter * gxx.gperf: Ditto. 591018334Speter 591118334Speter * typeck.c (common_type): Allow methods with basetypes of different 591218334Speter UPTs. 591318334Speter (comptypes): Deal with UPTs. 591418334Speter (build_modify_expr): Wrap all MODIFY_EXPRs in a COMPOUND_EXPR. 591518334Speter 591618334Speter * pt.c (end_template_decl): Check for multiple definitions of member 591718334Speter templates. 591818334Speter 591918334Speter * call.c (build_method_call): Complain about calling an abstract 592018334Speter virtual from a constructor. 592118334Speter 592218334Speter * typeck.c (pointer_int_sum): Check for the integer operand being 0 592318334Speter after checking the validity of the pointer operand. 592418334Speter 592518334Speter * typeck2.c (digest_init): Pedwarn about string initializer being 592618334Speter too long. 592718334Speter 592818334SpeterTue May 10 12:10:28 1994 Jason Merrill (jason@deneb.cygnus.com) 592918334Speter 593018334Speter * decl.c (push_overloaded_decl): Only throw away a builtin if the 593118334Speter decl in question is the artificial one. 593218334Speter 593318334Speter * parse.y (simple_stmt, switch): Use implicitly_scoped_stmt because 593418334Speter expand_{start,end}_case cannot happen in the middle of a block. 593518334Speter 593618334Speter * cvt.c (build_type_conversion_1): Use convert again. 593718334Speter 593818334SpeterTue May 10 11:52:04 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 593918334Speter 594018334Speter * typeck2.c (digest_init): Make sure we check for signed and 594118334Speter unsigned chars as well when warning about string initializers. 594218334Speter 594318334Speter * init.c (emit_base_init): Check if there's a DECL_NAME on the 594418334Speter member before trying to do an initialization for it. 594518334Speter 594618334SpeterTue May 10 11:34:37 1994 Mike Stump <mrs@cygnus.com> 594718334Speter 594818334Speter * except.c: Don't do anything useful when cross compiling. 594918334Speter 595018334SpeterTue May 10 03:04:13 1994 Jason Merrill (jason@deneb.cygnus.com) 595118334Speter 595218334Speter * decl.c (duplicate_decls): Fix up handling of builtins yet again. 595318334Speter (push_overloaded_decl): Ditto. 595418334Speter 595518334Speter * cvt.c (convert): Don't look for void type conversion. 595618334Speter 595718334SpeterMon May 9 18:05:41 1994 Jason Merrill (jason@deneb.cygnus.com) 595818334Speter 595918334Speter * init.c (do_friend): Only do a pushdecl for friends, not 596018334Speter pushdecl_top_level. 596118334Speter 596218334SpeterMon May 9 13:36:34 1994 Jim Wilson (wilson@sphagnum.cygnus.com) 596318334Speter 596418334Speter * decl.c (lookup_name_current_level): Put empty statement after 596518334Speter the label OUT to make the code valid C. 596618334Speter 596718334SpeterMon May 9 12:20:57 1994 Jason Merrill (jason@deneb.cygnus.com) 596818334Speter 596918334Speter * typeck.c (build_binary_op_nodefault): Only complain about 597018334Speter comparing void * and a function pointer if void * is smaller. 597118334Speter 597218334SpeterSun May 8 01:29:13 1994 Jason Merrill (jason@deneb.cygnus.com) 597318334Speter 597418334Speter * decl.c (lookup_name_current_level): Move through temporary binding 597518334Speter levels. 597618334Speter 597718334Speter * parse.y (already_scoped_stmt): Revive. 597818334Speter (simple_stmt): Use it again. 597918334Speter 598018334Speter * decl.c (poplevel): Always call poplevel recursively if we're 598118334Speter dealing with a temporary binding level. 598218334Speter 598318334SpeterSat May 7 10:52:28 1994 Mike Stump <mrs@cygnus.com> 598418334Speter 598518334Speter * decl.c (finish_decl): Make sure we run cleanups for initial values 598618334Speter of decls. Cures memory leak. 598718334Speter * decl.c (expand_static_init): Ditto for static variables. 598818334Speter * decl2.c (finish_file): Ditto for globals. 598918334Speter 599018334SpeterSat May 7 03:57:44 1994 Jason Merrill (jason@deneb.cygnus.com) 599118334Speter 599218334Speter * typeck.c (commonparms): Don't complain about redefining default 599318334Speter args. 599418334Speter 599518334Speter * decl.c (duplicate_decls): Don't complain twice about conflicting 599618334Speter function decls. 599718334Speter (decls_match): Don't look at default args. 599818334Speter (redeclaration_error_message): Complain about redefining default 599918334Speter args. 600018334Speter 600118334Speter * call.c (build_overload_call_real): Also deal with guiding 600218334Speter declarations coming BEFORE the template decl. 600318334Speter 600418334Speter * pt.c (unify): Allow different parms to have different 600518334Speter cv-qualifiers. 600618334Speter (unify): Allow trivial conversions on non-template parms. 600718334Speter 600818334SpeterFri May 6 03:53:23 1994 Jason Merrill (jason@deneb.cygnus.com) 600918334Speter 601018334Speter * pt.c (tsubst): Support OFFSET_TYPEs. 601118334Speter (unify): Ditto. 601218334Speter 601318334Speter * decl2.c (finish_decl_parsing): Call push_nested_class with a type. 601418334Speter 601518334Speter * init.c (build_offset_ref): Fix error message. 601618334Speter * search.c (lookup_field): Ditto. 601718334Speter 601818334Speter * call.c (build_scoped_method_call): Pass binfo to 601918334Speter build_method_call. 602018334Speter * typeck.c (build_object_ref): Ditto. 602118334Speter 602218334Speter * typeck2.c (binfo_or_else): Don't return a _TYPE. 602318334Speter 602418334Speter * class.c (finish_struct): Don't complain about re-use of inherited 602518334Speter names or shadowing of type decls. 602618334Speter * decl.c (pushdecl_class_level): Ditto. 602718334Speter 602818334Speter * decl.c (finish_enum): Set the type of all the enums. 602918334Speter 603018334Speter * class.c (finish_struct): Don't get confused by access decls. 603118334Speter 603218334Speter * cp-tree.h (TYPE_MAIN_DECL): New macro to get the _DECL for a 603318334Speter _TYPE. You can stop using TYPE_NAME for that now. 603418334Speter 603518334Speter * parse.y: Lose doing_explicit (check $0 instead). 603618334Speter * gxx.gperf: 'template' now has a RID. 603718334Speter * lex.h (rid): Ditto. 603818334Speter * lex.c (init_lex): Set up the RID for 'template'. 603918334Speter 604018334Speter * parse.y (type_specifier_seq): typed_typespecs or 604118334Speter nonempty_type_quals. Use it. 604218334Speter (handler_args): Fix bogus syntax. 604318334Speter (raise_identifier{,s}, optional_identifier): Lose. 604418334Speter * except.c (expand_start_catch_block): Use grokdeclarator to parse 604518334Speter the catch variable. 604618334Speter (init_exception_processing): The second argument to 604718334Speter __throw_type_match is ptr_type_node. 604818334Speter 604918334Speter Fri May 6 07:18:54 1994 Chip Salzenberg (chip@fin) 605018334Speter 605118334Speter [ change propagated from c-decl.c of snapshot 940429 ] 605218334Speter * cp/decl.c (finish_decl): Setting asmspec_tree should not 605318334Speter zero out the old RTL. 605418334Speter 605518334SpeterFri May 6 01:25:38 1994 Mike Stump <mrs@cygnus.com> 605618334Speter 605718334Speter Add alpha exception handling support to the compiler. 605818334Speter Quick and dirty backend in except.c. 605918334Speter 606018334Speter * cp/*: Remove most remnants of old exception handling support. 606118334Speter * decl.c (finish_function): Call expand_exception_blocks to put 606218334Speter the exception hanlding blocks at the end of the function. 606318334Speter * dec.c (hack_incomplete_structures): Make sure expand_decl_cleanup 606418334Speter comes after expand_decl_init. 606518334Speter * except.c: Reimplementation. 606618334Speter * expr.c (cplus_expand_expr): Handle THROW_EXPRs. 606718334Speter * lex.c (init_lex): Always have catch, try and throw be reserved 606818334Speter words, so that we may always parse exception handling. 606918334Speter * parse.y: Cleanup to support new interface into exception handling. 607018334Speter * tree.def (THROW_EXPR): Add. 607118334Speter 607218334SpeterThu May 5 17:35:37 1994 Jason Merrill (jason@deneb.cygnus.com) 607318334Speter 607418334Speter * parse.y (simple_stmt, for loops): Use implicitly_scoped_stmt. 607518334Speter (various): Lose .kindof_pushlevel and partially_scoped_stmt. 607618334Speter 607718334SpeterThu May 5 16:17:27 1994 Kung Hsu (kung@mexican.cygnus.com) 607818334Speter 607918334Speter * parse.y (already_scoped_stmt): move expand_end_binding() to 608018334Speter fix the unmatched LBB/LBE in stabs. 608118334Speter 608218334SpeterThu May 5 14:36:17 1994 Jason Merrill (jason@deneb.cygnus.com) 608318334Speter 608418334Speter * decl.c (set_nested_typename): Set TREE_MANGLED on the new 608518334Speter identifiers. 608618334Speter (pushdecl): Check TREE_MANGLED. 608718334Speter (xref_tag): Ditto. 608818334Speter * cp-tree.h (TREE_MANGLED): This identifier is a 608918334Speter DECL_NESTED_TYPENAME (named to allow for future use to denote 609018334Speter mangled function names as well). 609118334Speter 609218334Speter Implement inconsistency checking specified in [class.scope0]. 609318334Speter * decl.c (lookup_name_real): Don't set ICV here after all. 609418334Speter (finish_enum): Also set the type of the enumerators themselves. 609518334Speter (build_enumerator): Put the CONST_DECL in the list instead of its 609618334Speter initial value. 609718334Speter (pushdecl_class_level): Check inconsistent use of a name in the 609818334Speter class body. 609918334Speter * class.c (finish_struct): Check inconsistent use of a name in the 610018334Speter class body. Don't set DECL_CONTEXT on types here anymore. 610118334Speter * parse.y (qualified_type_name): Note that the identifier has now 610218334Speter been used (as a type) in the class body. 610318334Speter * lex.c (do_identifier): Note that the identifier has now been used 610418334Speter (as a constant) in the class body. 610518334Speter * error.c (dump_decl): Print type and enum decls better. 610618334Speter 610718334SpeterThu May 5 09:35:35 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 610818334Speter 610918334Speter * typeck.c (build_modify_expr): Warn about assignment to `this'. 611018334Speter 611118334SpeterWed May 4 15:55:49 1994 Jason Merrill (jason@deneb.cygnus.com) 611218334Speter 611318334Speter * init.c (build_delete): Use the global operator delete when 611418334Speter requested. 611518334Speter 611618334Speter * decl.c (lookup_name_real): If we find the type we're looking in a 611718334Speter base class while defining a class, set IDENTIFIER_CLASS_VALUE for 611818334Speter the type. 611918334Speter 612018334Speter * class.c (finish_struct): Remove a couple of dependencies on 612118334Speter language linkage. 612218334Speter 612318334Speter * decl.c (pushtag): Classes do nest in extern "C" blocks. 612418334Speter (pushdecl): Only set DECL_NESTED_TYPENAME on the canonical one for 612518334Speter the type. 612618334Speter (pushtag): Remove another dependency on the language linkage. 612718334Speter 612818334Speter * lex.c (cons_up_default_function): Don't set DECL_CLASS_CONTEXT to 612918334Speter a const-qualified type. 613018334Speter 613118334Speter * decl.c (push_overloaded_decl): Throw away built-in decls here. 613218334Speter (duplicate_decls): Instead of here. 613318334Speter 613418334SpeterWed May 4 15:27:40 1994 Per Bothner (bothner@kalessin.cygnus.com) 613518334Speter 613618334Speter * typeck.c (get_member_function_from_ptrfunc): Do The Right 613718334Speter Thing (I hope) if we're using thunks. 613818334Speter 613918334SpeterWed May 4 13:52:38 1994 Jason Merrill (jason@deneb.cygnus.com) 614018334Speter 614118334Speter * parse.y (specialization): aggr template_type_name ';'. 614218334Speter (named_class_head_sans_basetype): Use it. 614318334Speter (explicit_instantiation): Ditto. 614418334Speter (tmpl.2): Revert. 614518334Speter 614618334Speter * cvt.c (build_type_conversion_1): Use convert_for_initialization, 614718334Speter rather than convert, to do conversions after the UDC. 614818334Speter 614918334Speter * cp-tree.h (SHARED_MEMBER_P): This member is shared between all 615018334Speter instances of the class. 615118334Speter 615218334Speter * search.c (lookup_field): If the entity found by two routes is the 615318334Speter same, it's not ambiguous. 615418334Speter 615518334SpeterWed May 4 12:10:00 1994 Per Bothner (bothner@kalessin.cygnus.com) 615618334Speter 615718334Speter * decl.c (lookup_name_real): Check for a NULL TREE_VALUE, 615818334Speter to prevent the compiler from crashing ... 615918334Speter 616018334SpeterWed May 4 11:19:45 1994 Jason Merrill (jason@deneb.cygnus.com) 616118334Speter 616218334Speter * call.c (build_method_call): If we don't have an object, check 616318334Speter basetype_path to figure out where to look up the function. 616418334Speter 616518334Speter * typeck.c (convert_for_initialization): Pass TYPE_BINFO (type) to 616618334Speter build_method_call in case exp is NULL_TREE. 616718334Speter 616818334SpeterTue May 3 16:02:53 1994 Per Bothner (bothner@kalessin.cygnus.com) 616918334Speter 617018334Speter Give a vtable entries a unique named type, for the sake of gdb. 617118334Speter * class.c (build_vtable_entry): The addres of a thunk now has 617218334Speter type vtable_entry_type, not ptr_type_node. 617318334Speter * method.c (make_thunk): Fix type of THUNK_DECL. 617418334Speter * class.c (add_virtual_function, override_one_vtable): Use 617518334Speter vfunc_ptr_type_node, instead of ptr_type_node. 617618334Speter * cp-tree.h (vfunc_ptr_type_node): New macro. 617718334Speter * decl.c (init_decl_processing): Make vtable_entry_type 617818334Speter be a unique type of pointer to a unique function type. 617918334Speter 618018334SpeterTue May 3 09:20:44 1994 Jason Merrill (jason@deneb.cygnus.com) 618118334Speter 618218334Speter * parse.y (do_explicit): Sets doing_explicit to 1. 618318334Speter (explicit_instantiation): Use do_explicit rather than TEMPLATE 618418334Speter directly, add "do_explicit error" rule. 618518334Speter (datadef): Set doing_explicit to 0 after an explicit instantiation. 618618334Speter (tmpl.2): Don't instantiate if we see a ';' unless we're doing an 618718334Speter explicit instantiation. 618818334Speter (named_class_head_sans_basetype): Remove aggr template_type_name 618918334Speter ';' again. 619018334Speter 619118334SpeterMon May 2 23:17:21 1994 Jason Merrill (jason@deneb.cygnus.com) 619218334Speter 619318334Speter * search.c (lookup_nested_tag): Lose. 619418334Speter 619518334Speter * decl2.c (grokfield): Set DECL_CONTEXT on TYPE_DECLs. 619618334Speter (lookup_name_nonclass): Lose. 619718334Speter 619818334Speter * decl.c (poplevel_class): Add force parameter. 619918334Speter (lookup_name_real): Fix handling of explicit scoping which specifies 620018334Speter a class currently being defined. Add 'nonclass' argument. 620118334Speter (lookup_name, lookup_name_nonclass): Shells for lookup_name_real. 620218334Speter 620318334Speter * class.c (finish_struct): Don't unset IDENTIFIER_CLASS_VALUEs here. 620418334Speter (popclass): Force clearing of IDENTIFIER_CLASS_VALUEs if we're being 620518334Speter called from finish_struct. 620618334Speter 620718334SpeterMon May 2 19:06:21 1994 Per Bothner (bothner@kalessin.cygnus.com) 620818334Speter 620918334Speter * decl.c (init_decl_processing), cp-tree.h: Removed memptr_type. 621018334Speter (It seeems redundant, given build_ptrmemfunc_type.) 621118334Speter * typeck.c (get_member_function_from_ptrfunc), gc.c (build_headof, 621218334Speter build_classof): Use vtable_entry_type instead of memptr_type. 621318334Speter * method.c (emit_thunk): Call poplevel with functionbody==0 621418334Speter to prevent DECL_INITIAL being set to a BLOCK. 621518334Speter 621618334SpeterMon May 2 15:02:11 1994 Jason Merrill (jason@deneb.cygnus.com) 621718334Speter 621818334Speter * parse.y (named_class_head_sans_basetype): Add "aggr 621918334Speter template_type_name ';'" rule for forward declaration of 622018334Speter specializations. 622118334Speter 622218334SpeterMon May 2 15:02:11 1994 Jason Merrill (jason@deneb.cygnus.com) 622318334Speter 622418334Speter * class.c (instantiate_type): Deal with pmf's. 622518334Speter 622618334Speter * Make-lang.in (cc1plus): Don't depend on OBJS or BC_OBJS, since 622718334Speter stamp-objlist does. 622818334Speter 622918334Speter * Makefile.in (../cc1plus): Depend on OBJDEPS. 623018334Speter (OBJDEPS): Dependency version of OBJS. 623118334Speter 623218334SpeterMon May 2 12:51:31 1994 Kung Hsu (kung@mexican.cygnus.com) 623318334Speter 623418334Speter * search.c (dfs_debug_mark): unmark TYPE_DECL_SUPPRESS_DEBUG, not 623518334Speter DECL_IGNORED_P. 623618334Speter 623718334SpeterFri Apr 29 12:29:56 1994 Jason Merrill (jason@deneb.cygnus.com) 623818334Speter 623918334Speter * class.c (finish_struct): Clear out memory of local tags. And 624018334Speter typedefs. 624118334Speter 624218334Speter * decl2.c (grokclassfn): Don't set DECL_CONTEXT to a cv-qualified 624318334Speter type. 624418334Speter * search.c (get_matching_virtual): Be more helpful in error message. 624518334Speter 624618334Speter * *: Use DECL_ARTIFICIAL (renamed from DECL_SYNTHESIZED). 624718334Speter 624818334Speter * lex.c (default_assign_ref_body): Expect TYPE_NESTED_NAME to work. 624918334Speter (default_copy_constructor_body): Ditto. 625018334Speter 625118334Speter * class.c (finish_struct): Don't gratuitously create multiple decls 625218334Speter for nested classes. 625318334Speter 625418334SpeterThu Apr 28 23:39:38 1994 Jason Merrill (jason@deneb.cygnus.com) 625518334Speter 625618334Speter Avoid clobbering the arg types of other functions when reverting 625718334Speter static member functions. 625818334Speter * decl.c (revert_static_member_fn): Rearrange arguments, don't 625918334Speter require values for 'fn' and 'argtypes', add warning to comment 626018334Speter above. 626118334Speter (decls_match): Rearrange arguments in call to rsmf. 626218334Speter (grok_op_properties): Don't pass values for fn and argtypes. 626318334Speter * pt.c (instantiate_template): Don't pass values for fn and argtypes. 626418334Speter 626518334SpeterThu Apr 28 16:29:11 1994 Doug Evans (dje@canuck.cygnus.com) 626618334Speter 626718334Speter * Make-lang.in (cc1plus): Depend on stamp-objlist. 626818334Speter * Makefile.in (BC_OBJS): Delete. 626918334Speter (OBJS): Cat ../stamp-objlist to get language independent files. 627018334Speter Include ../c-common.o. 627118334Speter (../cc1plus): Delete reference to BC_OBJS. 627218334Speter 627318334SpeterThu Apr 28 02:12:08 1994 Jason Merrill (jason@deneb.cygnus.com) 627418334Speter 627518334Speter * search.c (compute_access): No really, deal with static members 627618334Speter properly. Would I lie to you? 627718334Speter 627818334Speter Implement lexical hiding of function declarations. 627918334Speter * pt.c (tsubst): Use lookup_name to look for function decls to guide 628018334Speter instantiation. 628118334Speter * method.c (build_opfncall): Use lookup_name_nonclass to look for 628218334Speter non-member functions. 628318334Speter * init.c (do_friend): Use lookup_name_nonclass to look for 628418334Speter functions. 628518334Speter * error.c (ident_fndecl): Use lookup_name to look for functions. 628618334Speter * decl2.c (lookup_name_nonclass): New function, skips over 628718334Speter CLASS_VALUE. 628818334Speter * decl.c (struct binding_level): Lose overloads_shadowed field. 628918334Speter (poplevel): Don't deal with overloads_shadowed. 629018334Speter (push_overloaded_decl): Do lexical hiding for functions. 629118334Speter * class.c (instantiate_type): Don't check non-members if we have 629218334Speter members with the same name. 629318334Speter * call.c (build_method_call): Use lookup_name_nonclass instead of 629418334Speter IDENTIFIER_GLOBAL_VALUE to check for non-member functions. 629518334Speter (build_overload_call_real): Ditto. 629618334Speter 629718334Speter * decl.c (duplicate_decls): Check for ambiguous overloads here. 629818334Speter (push_overloaded_decl): Instead of here. 629918334Speter 630018334Speter * decl.c (pushdecl): Back out Chip's last change. 630118334Speter 630218334Speter * decl.c (grok_op_properties): operators cannot be static members. 630318334Speter 630418334Speter * cp-tree.h (DECL_SYNTHESIZED): DECL_SOURCE_LINE == 0 630518334Speter (SET_DECL_SYNTHESIZED): DECL_SOURCE_LINE = 0 630618334Speter * lex.c (cons_up_default_function): Use SET_DECL_SYNTHESIZED. 630718334Speter 630818334Speter * method.c (do_inline_function_hair): Don't put friends of local 630918334Speter classes into global scope, either. 631018334Speter 631118334Speter * typeck2.c (build_functional_cast): Don't look for a function call 631218334Speter interpretation. 631318334Speter 631418334SpeterThu Apr 28 15:19:46 1994 Mike Stump <mrs@cygnus.com> 631518334Speter 631618334Speter * cp-tree.h: disable use of backend EH. 631718334Speter 631818334SpeterWed Apr 27 21:01:24 1994 Doug Evans (dje@canuck.cygnus.com) 631918334Speter 632018334Speter * Make-lang.in (c++.distdir): mkdir tmp/cp first. 632118334Speter * Makefile.in (INCLUDES): Move definition to same place as 632218334Speter parent makefile. 632318334Speter (ALLOCA): Define. 632418334Speter (OLDAR_FLAGS): Delete. 632518334Speter (OLDCC): Define. 632618334Speter (DIR): Delete. 632718334Speter (CLIB): Define. 632818334Speter (####site): Delete. 632918334Speter (SUBDIR_USE_ALLOCA): Don't use ALLOCA if compiling with gcc. 633018334Speter 633118334SpeterWed Apr 27 19:10:04 1994 Kung Hsu (kung@mexican.cygnus.com) 633218334Speter 633318334Speter * decl.c (xref_tag): not to use strstr(), it's not available on 633418334Speter all platforms. 633518334Speter 633618334SpeterWed Apr 27 18:10:12 1994 Jason Merrill (jason@deneb.cygnus.com) 633718334Speter 633818334Speter * class.c (finish_struct): Resolve yet another class/pmf confusion. 633918334Speter 634018334Speter * call.c (build_overload_call_real): Don't take the single-function 634118334Speter shortcut if we're dealing with an overloaded operator. 634218334Speter 634318334SpeterWed Apr 27 17:35:37 1994 Mike Stump <mrs@cygnus.com> 634418334Speter 634518334Speter * search.c (get_base_distance): Search the virtual base class 634618334Speter binfos, incase someone wants to convert to a real virtual base 634718334Speter class. 634818334Speter * search.c (expand_indirect_vtbls_init): Use convert_pointer_to_real 634918334Speter instead of convert_pointer_to, as it now will work. 635018334Speter 635118334SpeterWed Apr 27 15:36:49 1994 Jason Merrill (jason@deneb.cygnus.com) 635218334Speter 635318334Speter * cvt.c (convert_to_reference): Don't complain about casting away 635418334Speter const and volatile. 635518334Speter 635618334Speter * typeck.c (build_unary_op): References are too lvalues. 635718334Speter 635818334SpeterWed Apr 27 13:58:05 1994 Mike Stump <mrs@cygnus.com> 635918334Speter 636018334Speter * class.c (override_one_vtable): We have to prepare_fresh_vtable 636118334Speter before we modify it, not after, also, we cannot reuse an old vtable, 636218334Speter once we commit to a new vtable. Implement ambiguous overrides in 636318334Speter virtual bases as abstract. Hack until we make the class 636418334Speter ill-formed. 636518334Speter 636618334SpeterWed Apr 27 01:17:08 1994 Jason Merrill (jason@deneb.cygnus.com) 636718334Speter 636818334Speter * parse.y (unary_expr): Expand new_placement[opt] and 636918334Speter new_initializer[opt] inline. 637018334Speter 637118334Speter * search.c (lookup_fnfields): Don't throw away the inheritance 637218334Speter information here, either. 637318334Speter (compute_access): Handle static members properly. 637418334Speter 637518334Speter * init.c (build_member_call): Always set basetype_path, and pass it 637618334Speter to lookup_fnfields. 637718334Speter 637818334Speter * search.c (lookup_field): Deal properly with the case where 637918334Speter xbasetype is a chain of binfos; don't throw away the inheritance 638018334Speter information. 638118334Speter (compute_access): protected_ok always starts out at 0. 638218334Speter 638318334Speter * init.c (resolve_offset_ref): Don't cast `this' to the base type 638418334Speter until we've got our basetype_path. 638518334Speter 638618334Speter * cp-tree.h (IS_OVERLOAD_TYPE): aggregate or enum. 638718334Speter 638818334Speter * cvt.c (build_up_reference): Use build_pointer_type rather than 638918334Speter TYPE_POINTER_TO. 639018334Speter 639118334Speter * call.c (convert_harshness_ansi): Call type_promotes_to for reals 639218334Speter as well. 639318334Speter 639418334Speter * cvt.c (type_promotes_to): Retain const and volatile, add 639518334Speter float->double promotion. 639618334Speter 639718334Speter * decl.c (grokdeclarator): Don't bash references to arrays into 639818334Speter references to pointers in function parms. Use type_promotes_to. 639918334Speter 640018334SpeterTue Apr 26 23:44:36 1994 Mike Stump <mrs@cygnus.com> 640118334Speter 640218334Speter Finish off Apr 19th work. 640318334Speter 640418334Speter * class.c (finish_struct_bits): Rename has_abstract_virtuals to 640518334Speter might_have_abstract_virtuals. 640618334Speter * class.c (strictly_overrides, override_one_vtable, 640718334Speter merge_overrides): New routines to handle virtual base overrides. 640818334Speter * class.c (finish_struct): Call merge_overrides to handle overrides 640918334Speter in virtual bases. 641018334Speter 641118334SpeterTue Apr 26 12:45:53 1994 Jason Merrill (jason@deneb.cygnus.com) 641218334Speter 641318334Speter * typeck.c (build_function_call): Call build_function_call_real with 641418334Speter LOOKUP_NORMAL. 641518334Speter 641618334Speter * *: Don't deal with TYPE_EXPRs. 641718334Speter 641818334Speter * tree.c (lvalue_p): If the type of the expression is a reference, 641918334Speter it's an lvalue. 642018334Speter 642118334Speter * cvt.c (convert_to_reference): Complain about passing const 642218334Speter lvalues to non-const references. 642318334Speter (convert_from_reference): Don't arbitrarily throw away const and 642418334Speter volatile on the target type. 642518334Speter 642618334Speter * parse.y: Simplify and fix rules for `new'. 642718334Speter 642818334Speter * decl.c (grok_op_properties): operator void is illegal. 642918334Speter 643018334SpeterMon Apr 25 02:36:28 1994 Jason Merrill (jason@deneb.cygnus.com) 643118334Speter 643218334Speter * parse.y (components): Anonymous bitfields can still have declspecs. 643318334Speter 643418334Speter * decl.c (pushdecl): Postpone handling of function templates like we 643518334Speter do C functions. 643618334Speter 643718334Speter * search.c (expand_indirect_vtbls_init): Fix infinite loop when 643818334Speter convert_pointer_to fails. 643918334Speter 644018334Speter * call.c (compute_conversion_costs_ansi): A user-defined conversion 644118334Speter by itself is better than that UDC followed by standard conversions. 644218334Speter Don't treat integers and reals specially. 644318334Speter 644418334Speter * cp-tree.h: Declare flag_ansi. 644518334Speter 644618334Speter * typeck.c (c_expand_return): pedwarn on return in void function 644718334Speter even if the expression is of type void. 644818334Speter (build_c_cast): Don't do as much checking for casts to void. 644918334Speter (build_modify_expr): pedwarn about array assignment if this code 645018334Speter wasn't generated by the compiler. 645118334Speter 645218334Speter * tree.c (lvalue_p): A comma expression is an lvalue if its second 645318334Speter operand is. 645418334Speter 645518334Speter * typeck.c (default_conversion): Move code for promoting enums and 645618334Speter ints from here. 645718334Speter * cvt.c (type_promotes_to): To here. 645818334Speter * call.c (convert_harshness_ansi): Use type_promotes_to. Also fix 645918334Speter promotion semantics for reals. 646018334Speter 646118334SpeterSun Apr 24 16:52:51 1994 Doug Evans (dje@canuck.cygnus.com) 646218334Speter 646318334Speter * Make-lang.in (c++.install-common): Check for g++-cross. 646418334Speter * Makefile.in: Remove Cygnus cruft. 646518334Speter (config.status): Delete. 646618334Speter (RTL_H): Define. 646718334Speter (TREE_H): Use complete pathname, some native makes have minimal 646818334Speter VPATH support. 646918334Speter (*.o): Use complete pathname to headers in parent dir. 647018334Speter (doc, info, dvi): Delete. 647118334Speter 647218334SpeterSun Apr 24 16:52:51 1994 Doug Evans (dje@canuck.cygnus.com) 647318334Speter 647418334Speter * Make-lang.in (c++.install-common): Check for g++-cross. 647518334Speter * Makefile.in: Remove Cygnus cruft. 647618334Speter (config.status): Delete. 647718334Speter (RTL_H): Define. 647818334Speter (TREE_H): Use complete pathname, some native makes have minimal 647918334Speter VPATH support. 648018334Speter (*.o): Use complete pathname to headers in parent dir. 648118334Speter (doc, info, dvi): Delete. 648218334Speter 648318334SpeterSun Apr 24 00:47:49 1994 Jason Merrill (jason@deneb.cygnus.com) 648418334Speter 648518334Speter * decl.c (pushdecl): Avoid redundant warning on redeclaring function 648618334Speter with different return type. 648718334Speter (decls_match): Compare return types strictly. 648818334Speter 648918334SpeterFri Apr 22 12:55:42 1994 Jason Merrill (jason@deneb.cygnus.com) 649018334Speter 649118334Speter * cvt.c (build_type_conversion): Do try to convert through other 649218334Speter pointers. This will fail if the class defines multiple pointer 649318334Speter conversions. 649418334Speter 649518334Speter * error.c (dump_type_prefix): Print out pointers to arrays properly. 649618334Speter (dump_type_suffix): Ditto. (was 'int *[]', now 'int (*)[]') 649718334Speter 649818334Speter * typeck.c (build_unary_op): Disallow ++/-- on pointers to 649918334Speter incomplete type. 650018334Speter 650118334Speter * decl.c (duplicate_decls): Check mismatched TREE_CODES after 650218334Speter checking for shadowing a builtin. If we're redeclaring a builtin 650318334Speter function, bash the old decl to avoid an ambiguous overload. 650418334Speter 650518334Speter * cvt.c (convert_to_reference): Don't force arrays to decay here. 650618334Speter 650718334Speter * tree.c (lvalue_p): A MODIFY_EXPR is an lvalue. 650818334Speter 650918334Speter * decl.c (duplicate_decls): Don't assume that the decls will have 651018334Speter types. 651118334Speter 651218334Speter Mon Apr 18 11:35:32 1994 Chip Salzenberg (chip@fin.uucp) 651318334Speter 651418334Speter [ cp/* changes propagated from c-* changes in 940318 snapshot ] 651518334Speter * c-decl.c (pushdecl): Warn if type mismatch with another external decl 651618334Speter in a global scope. 651718334Speter 651818334Speter Fri Apr 22 06:38:56 1994 Chip Salzenberg (chip@fin.uucp) 651918334Speter 652018334Speter * cp/typeck2.c (signature_error): Use cp_error for "%T". 652118334Speter 652218334Speter Mon Apr 18 11:59:59 1994 Chip Salzenberg (chip@fin.uucp) 652318334Speter 652418334Speter [ cp/* changes propagated from c-* changes in 940415 snapshot ] 652518334Speter * cp/decl.c (duplicate_decls, pushdecl, builtin_function): 652618334Speter Use DECL_FUNCTION_CODE instead of DECL_SET_FUNCTION_CODE. 652718334Speter 652818334Speter Mon Apr 18 11:55:18 1994 Chip Salzenberg (chip@fin.uucp) 652918334Speter 653018334Speter [ cp/* changes propagated from c-* changes in 940409 snapshot ] 653118334Speter * cp/decl.c (duplicate_decls): Put new type in same obstack as 653218334Speter old ones, or permanent if old ones in different obstacks. 653318334Speter 653418334Speter Mon Apr 18 11:48:49 1994 Chip Salzenberg (chip@fin.uucp) 653518334Speter 653618334Speter [ cp/* changes propagated from c-* changes in 940401 snapshot ] 653718334Speter * cp/parse.y (attrib): Handle string args as expressions, 653818334Speter merging the two rules. `mode' attribute now takes a string arg. 653918334Speter Delete the rule for an identifier as arg. 654018334Speter 654118334Speter Mon Apr 18 11:24:00 1994 Chip Salzenberg (chip@fin.uucp) 654218334Speter 654318334Speter [ cp/* changes propagated from c-* changes in 940312 snapshot ] 654418334Speter * cp/typeck.c (pointer_int_sum): Multiplication should be done signed. 654518334Speter (pointer_diff): Likewise the division. 654618334Speter 654718334Speter Sun Mar 6 19:43:39 1994 Chip Salzenberg (chip@fin.uucp) 654818334Speter 654918334Speter [ cp/* changes propagated from c-* changes in 940304 snapshot ] 655018334Speter * cp/decl.c (finish_decl): Issue warning for large objects, 655118334Speter if requested. 655218334Speter 655318334Speter Sat Feb 19 22:20:32 1994 Chip Salzenberg (chip@fin.uucp) 655418334Speter 655518334Speter [ cp/* changes propagated from c-* changes in 940218 snapshot ] 655618334Speter * cp/parse.y (attrib): Handle attribute ((section ("string"))). 655718334Speter * cp/decl.c (duplicate_decls): Merge section name into new decl. 655818334Speter 655918334Speter Tue Feb 8 09:49:17 1994 Chip Salzenberg (chip@fin.uucp) 656018334Speter 656118334Speter [ cp/* changes propagated from c-* changes in 940206 snapshot ] 656218334Speter * cp/typeck.c (signed_or_unsigned_type): Check for any 656318334Speter INTEGRAL_TYPE_P not just INTEGER_TYPE. 656418334Speter 656518334Speter Mon Dec 6 13:35:31 1993 Norbert Kiesel (norbert@i3.INformatik.rwth-aachen.DE) 656618334Speter 656718334Speter * cp/decl.c (finish_enum): Start from 0 when determining precision 656818334Speter for short enums. 656918334Speter 657018334Speter Fri Dec 3 17:07:58 1993 Ralph Campbell (ralphc@pyramid.COM) 657118334Speter 657218334Speter * cp/parse.y (unary_expr): Look at $1 for tree_code rather than 657318334Speter casting $$. 657418334Speter 657518334Speter Wed Nov 17 19:22:09 1993 Chip Salzenberg (chip@fin.uucp) 657618334Speter 657718334Speter * cp/typeck.c (build_binary_op_nodefault): Propagate code 657818334Speter from C front-end to optimize unsigned short division. 657918334Speter (build_conditional_expr): Fix bug in "1 ? 42 : (void *) 8". 658018334Speter 658118334Speter Wed Nov 17 19:17:18 1993 Chip Salzenberg (chip@fin.uucp) 658218334Speter 658318334Speter * cp/call.c (convert_harshness_ansi): Given an (e.g.) char 658418334Speter constant, prefer 'const char &' to 'int'. 658518334Speter 658618334Speter Wed Feb 3 13:11:48 1993 Chip Salzenberg (chip@fin.uucp) 658718334Speter 658818334Speter * cp/class.c (finish_struct_methods): Handle multiple 658918334Speter constructors in fn_fields list. 659018334Speter 659118334SpeterFri Apr 22 12:48:10 1994 Kung Hsu (kung@mexican.cygnus.com) 659218334Speter 659318334Speter * class.c (finish_struct): use TYPE_DECL_SUPPRESS_DEBUG to flag 659418334Speter types not to be dumped in stabs, like types in #pragma interface. 659518334Speter * decl.c (init_decl_processing): use TYPE_DECL_SUPPRESS_DEBUG to 659618334Speter mark unknown type. 659718334Speter 659818334SpeterFri Apr 22 03:27:26 1994 Doug Evans (dje@cygnus.com) 659918334Speter 660018334Speter * Language directory reorganization. 660118334Speter See parent makefile. 660218334Speter 660318334SpeterThu Apr 21 18:27:57 1994 Per Bothner (bothner@kalessin.cygnus.com) 660418334Speter 660518334Speter * cp-tree.h (THUNK_DELTA): It is normally negative, so 660618334Speter use signed .i variant of frame_size rather than unsigned .u. 660718334Speter * cp-tree.h (VTABLE_NAME_FORMAT): If flag_vtable_thunks, 660818334Speter use "VT" rather than "vt" due to binary incompatibility. 660918334Speter * class.c (get_vtable_name): Use strlen of VTABLE_NAME_FORMAT, 661018334Speter rather than sizeof, since it is now an expression. 661118334Speter * class.c (modify_one_vtable): Modify to skip initial element 661218334Speter containing a count of the vtable. 661318334Speter 661418334SpeterThu Apr 21 00:09:02 1994 Jason Merrill (jason@deneb.cygnus.com) 661518334Speter 661618334Speter * lex.c (check_newline): Force interface_unknown on main input file. 661718334Speter 661818334Speter * pt.c (do_pending_expansions): Always emit functions that have been 661918334Speter explicitly instantiated. 662018334Speter (do_function_instantiation): Set DECL_EXPLICITLY_INSTANTIATED. 662118334Speter (do_type_instantiation): Set CLASSTYPE_VTABLE_NEEDS_WRITING and 662218334Speter DECL_EXPLICITLY_INSTANTIATED on all my methods. 662318334Speter * parse.y (explicit_instantiation): Call do_type_instantiation for 662418334Speter types. 662518334Speter * decl2.c (finish_vtable_vardecl): Call import_export_vtable. 662618334Speter * decl.c (start_function): Don't set DECL_EXTERNAL on a function 662718334Speter that has been explicitly instantiated. 662818334Speter * cp-tree.h (DECL_EXPLICITLY_INSTANTIATED): Alias for 662918334Speter DECL_LANG_FLAG_4. 663018334Speter * class.c: Move import_export_vtable to decl2.c, and comment out all 663118334Speter uses. 663218334Speter 663318334SpeterWed Apr 20 16:51:06 1994 Jason Merrill (jason@deneb.cygnus.com) 663418334Speter 663518334Speter * lex.c (process_next_inline): Don't muck with DECL_INLINE. 663618334Speter (do_pending_inlines): Ditto. 663718334Speter 663818334SpeterTue Apr 19 22:25:41 1994 Mike Stump <mrs@cygnus.com> 663918334Speter 664018334Speter Reimplement vtable building, and most vtable pointer setting. 664118334Speter Allows for earier maintenance, easier understandability, and most 664218334Speter importantly, correct semantics. 664318334Speter 664418334Speter * class.c (build_vtable): Removed unneeded 664518334Speter SET_BINFO_VTABLE_PATH_MARKED. 664618334Speter * class.c (prepare_fresh_vtable): Ditto. Added argument. 664718334Speter * class.c (modify_vtable_entry): General cleanup. 664818334Speter * class.c (related_vslot, is_normal, modify_other_vtable_entries, 664918334Speter modify_vtable_entries): Removed. 665018334Speter * class.c (add_virtual_function): General cleanup. 665118334Speter * class.c (finish_base_struct): Setup BINFO_VTABLE and 665218334Speter BINFO_VIRTUALS as early as we can, so that modify_all_vtables can 665318334Speter work. 665418334Speter * class.c (finish_vtbls): New routine, mostly from 665518334Speter unmark_finished_struct. 665618334Speter * class.c (overrides): New routine. 665718334Speter * class.c (modify_one_vtable): New routine, mostly from 665818334Speter modify_other_vtable_entries and modify_vtable_entries. 665918334Speter * class.c (modify_all_direct_vtables, modify_all_indirect_vtables, 666018334Speter modify_all_vtables): New routines. 666118334Speter * class.c (finish_struct): Added arguemnt to prepare_fresh_vtable 666218334Speter call. General cleanup on how pending_hard_virtuals are handled. 666318334Speter General cleanup on modifying vtables. Use finish_vtbls, instead of 666418334Speter unmark_finished_struct. 666518334Speter * cp-tree.h (init_vtbl_ptrs, expand_direct_vtbls_init, 666618334Speter get_first_matching_virtual, get_matching_virtual, 666718334Speter expand_vbase_vtables_init, expand_indirect_vtbls_init): Update. 666818334Speter * cvt.c (convert_pointer_to_real): cleanup error message. 666918334Speter * decl.c (grokfndecl): General cleanup. 667018334Speter * decl.c (finish_function): Change init_vtbl_ptrs call to 667118334Speter expand_direct_vtbls_init. Change expand_vbase_vtables_init call to 667218334Speter expand_indirect_vtbls_init. 667318334Speter * init.c (expand_virtual_init): Remove unneeded argument. 667418334Speter * init.c (init_vtbl_ptrs): Rename to expand_direct_vtbls_init, added 667518334Speter two arguments to make more general. Made more general. Now can be 667618334Speter used for vtable pointer initialization from virtual bases. 667718334Speter * init.c (emit_base_init): Change expand_vbase_vtables_init call to 667818334Speter expand_indirect_vtbls_init. Change init_vtbl_ptrs call to 667918334Speter expand_direct_vtbls_init. 668018334Speter * init.c (expand_virtual_init): General cleanup. 668118334Speter * init.c (expand_default_init): Change expand_vbase_vtables_init 668218334Speter call to expand_indirect_vtbls_init. 668318334Speter * init.c (expand_recursive_init_1): Change expand_vbase_vtables_init 668418334Speter call to expand_indirect_vtbls_init. 668518334Speter * init.c (expand_recursive_init): Change expand_vbase_vtables_init 668618334Speter call to expand_indirect_vtbls_init. 668718334Speter * search.c (get_first_matching_virtual): Rename to 668818334Speter get_matching_virtual. General cleanup and remove setting of 668918334Speter DECL_CONTEXT. That is now done in a cleaner way in 669018334Speter modify_vtable_entry and add_virtual_function. 669118334Speter * search.c (expand_vbase_vtables_init): Rename to 669218334Speter expand_indirect_vtbls_init. General cleanup. Use 669318334Speter expand_direct_vtbls_init to do hard work. Ensures that _all_ vtable 669418334Speter pointers from virtual bases are set up. 669518334Speter * search.c (bfs_unmark_finished_struct, unmark_finished_struct): 669618334Speter Removed. 669718334Speter 669818334Speter * *.[chy]: Remove support for VTABLE_USES_MASK. 669918334Speter 670018334SpeterTue Apr 19 12:51:59 1994 Jason Merrill (jason@deneb.cygnus.com) 670118334Speter 670218334Speter * cvt.c (convert_to_reference): Use NOP_EXPRs to switch between 670318334Speter reference and pointer types instead of bashing the types directly. 670418334Speter 670518334Speter * call.c (build_overload_call_real): Use the TREE_CODE to determine 670618334Speter whether the function is overloaded or not, rather than 670718334Speter TREE_OVERLOADED. 670818334Speter * *: Remove all uses of TREE_OVERLOADED. 670918334Speter 671018334Speter * decl.c (grokdeclarator): Only complain about initializing const 671118334Speter fields when -ansi or -pedantic. 671218334Speter 671318334SpeterTue Apr 19 12:42:42 1994 Doug Evans (dje@canuck.cygnus.com) 671418334Speter 671518334Speter * cp-tree.h (THUNK_DELTA): frame_size is now a union. 671618334Speter 671718334SpeterMon Apr 18 00:17:13 1994 Jason Merrill (jason@deneb.cygnus.com) 671818334Speter 671918334Speter Do overloading on a block-by-block basis, not function-by-function. 672018334Speter * decl.c: Lose overloads_to_forget. 672118334Speter (struct binding_level): Add overloads_shadowed field. 672218334Speter (poplevel): Restore overloads_shadowed. 672318334Speter (push_overloaded_decl): Use overloads_shadowed instead of 672418334Speter overloads_to_forget. 672518334Speter (finish_function): Don't look at overloads_to_forget. 672618334Speter 672718334Speter Copy enum_overflow logic from c-decl.c. 672818334Speter * decl.c (start_enum): Initialize enum_overflow. 672918334Speter (build_enumerator): Use enum_overflow. Also use current_scope(). 673018334Speter 673118334Speter * search.c (current_scope): Move Brendan's comment from 673218334Speter build_enumerator here. 673318334Speter 673418334Speter * typeck.c (convert_for_assignment): Change warnings to pedwarns for 673518334Speter discarding const/volatile. 673618334Speter 673718334SpeterSat Apr 16 01:18:21 1994 Jason Merrill (jason@deneb.cygnus.com) 673818334Speter 673918334Speter * typeck.c (comp_target_parms): Accept TEMPLATE_TYPE_PARMs on the rhs. 674018334Speter (comp_target_types): Ditto. 674118334Speter 674218334Speter * decl.c (lookup_name): Don't unset got_scope here. 674318334Speter 674418334Speter * spew.c (yylex): Only replace yylval with the TYPE_NESTED_NAME if 674518334Speter got_scope != NULL_TREE. 674618334Speter 674718334SpeterFri Apr 15 16:36:33 1994 Jason Merrill (jason@deneb.cygnus.com) 674818334Speter 674918334Speter Horrible kludge to prevent templates from being instantiated by 675018334Speter their base classes. 675118334Speter * parse.y (template_instantiate_once): Unset TYPE_BEING_DEFINED 675218334Speter before we get to left_curly. 675318334Speter * pt.c (instantiate_class_template): Set TYPE_BEING_DEFINED. 675418334Speter 675518334Speter * error.c (dump_decl): If it's a typedef, print out the name of the 675618334Speter decl, not just the underlying type. 675718334Speter 675818334Speter * decl.c (pushdecl): If the old duplicate decl was a TYPE_DECL, 675918334Speter update the IDENTIFIER_TYPE_VALUE of its name. 676018334Speter 676118334Speter * decl2.c (finish_file): When processing the initializer for a 676218334Speter static member, pretend that the dummy function is a member of the 676318334Speter same class. 676418334Speter 676518334SpeterFri Apr 15 15:56:35 1994 Kung Hsu (kung@mexican.cygnus.com) 676618334Speter 676718334Speter * class.c (build_vtable_entry): revert Apr 4 change. 676818334Speter * decl2.c (mark_vtable_entries): replace pure virtual function 676918334Speter decl with abort's. 677018334Speter 677118334SpeterFri Apr 15 13:49:33 1994 Jason Merrill (jason@deneb.cygnus.com) 677218334Speter 677318334Speter * typeck.c (build_conditional_expr): Pedwarn on pointer/integer 677418334Speter mismatch, and don't pedwarn on 0/function pointer mismatch. 677518334Speter 677618334Speter * typeck2.c (digest_init): Lose code for special handling of unions. 677718334Speter (process_init_constructor): Since they're handled just fine here. 677818334Speter Pedwarn on excess elements. 677918334Speter 678018334Speter * decl2.c (grokfield): Complain about local class method declaration 678118334Speter without definition. 678218334Speter 678318334SpeterFri Apr 15 13:19:40 1994 Per Bothner (bothner@kalessin.cygnus.com) 678418334Speter 678518334Speter * method.c (emit_thunk): Add extern declaration for 678618334Speter current_call_is_indirect (needed for hppa). 678718334Speter 678818334SpeterThu Apr 14 16:12:31 1994 Jason Merrill (jason@deneb.cygnus.com) 678918334Speter 679018334Speter Improve local class support; allow classes in different blocks to 679118334Speter have the same name. 679218334Speter * decl.c (pushtag): Support local classes better. 679318334Speter (pushdecl_nonclass_level): New function for pushing mangled decls of 679418334Speter nested types into the appropriate scope. 679518334Speter (xref_defn_tag): Use pushdecl_nonclass_level instead of 679618334Speter pushdecl_top_level. 679718334Speter (grokfndecl): Don't mess with IDENTIFIER_GLOBAL_VALUE for local 679818334Speter class methods. 679918334Speter * method.c (do_inline_function_hair): Ditto. 680018334Speter 680118334Speter * class.c (finish_struct): It is legal for a class with no 680218334Speter constructors to have nonstatic const and reference members. 680318334Speter 680418334SpeterThu Apr 14 07:15:11 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 680518334Speter 680618334Speter * decl.c (push_overloaded_decl): Avoid giving errors about 680718334Speter built-ins, since duplicate_decls will have given warnings/errors 680818334Speter for them. 680918334Speter 681018334SpeterThu Apr 14 03:45:12 1994 Jason Merrill (jason@deneb.cygnus.com) 681118334Speter 681218334Speter * cvt.c (convert_to_reference): Warn about casting pointer type to 681318334Speter reference type when this is probably not what they wanted. 681418334Speter 681518334SpeterWed Apr 13 13:12:35 1994 Per Bothner (bothner@kalessin.cygnus.com) 681618334Speter 681718334Speter * decl.c (finish_decl): Don't mindlessly set TREE_USED for 681818334Speter static consts any more (toplev.c has now been modified to 681918334Speter not emit warnings if they are unused). 682018334Speter 682118334SpeterWed Apr 13 00:22:35 1994 Jason Merrill (jason@deneb.cygnus.com) 682218334Speter 682318334Speter * decl.c (grok_op_properties): If op new/delete get here with 682418334Speter METHOD_TYPEs, do a revert_static_member_fn. 682518334Speter 682618334Speter * cp-tree.h (IDENTIFIER_CLASS_TYPE_VALUE): Lose. 682718334Speter * init.c (is_aggr_typedef): Don't look at 682818334Speter IDENTIFIER_CLASS_TYPE_VALUE. 682918334Speter (get_aggr_from_typedef): Ditto. 683018334Speter (get_type_value): Ditto. 683118334Speter * call.c (build_scoped_method_call): Don't rely on overloaded 683218334Speter template names having IDENTIFIER_CLASS_VALUE set. 683318334Speter 683418334Speter * parse.y (component_decl_1, fn.def2): Revert rules for 683518334Speter constructors. 683618334Speter (component_decl_1, fn.def2): Use $1 instead of $$, since $$ is being 683718334Speter clobbered. 683818334Speter 683918334Speter * decl.c (start_function): Only warn about `void main()' if pedantic 684018334Speter || warn_return_type. 684118334Speter 684218334SpeterTue Apr 12 02:14:17 1994 Jason Merrill (jason@deneb.cygnus.com) 684318334Speter 684418334Speter Clean up overloading of the template name. 684518334Speter * class.c (pushclass): overload the template name whenever pushing 684618334Speter into the scope of a template class, not just if it is 684718334Speter uninstantiated. 684818334Speter (popclass): Correspondingly. 684918334Speter * search.c (push_class_decls): Don't overload_template_name. 685018334Speter * pt.c (overload_template_name): Don't set IDENTIFIER_LOCAL_VALUE or 685118334Speter DECL_CONTEXT on things. 685218334Speter * parse.y (left_curly): Don't overload_template_name. 685318334Speter * class.c (finish_struct): Don't undo_template_name_overload. 685418334Speter 685518334Speter * method.c (build_opfncall): Only pass one argument to global op 685618334Speter delete. 685718334Speter 685818334Speter * call.c (build_method_call): Use TYPE_VEC_DELETE_TAKES_SIZE to 685918334Speter decide how many arguments to use for vec delete. 686018334Speter 686118334Speter * decl.c (grok_op_properties): Be consistent in modifying 686218334Speter current_class_type. 686318334Speter (grokdeclarator): Only complain about function decls with no return 686418334Speter type if we're being pedantic. 686518334Speter 686618334SpeterMon Apr 11 00:10:53 1994 Jason Merrill (jason@deneb.cygnus.com) 686718334Speter 686818334Speter Add support for operator new [] and operator delete []. 686918334Speter 687018334Speter * tree.def: Add VEC_NEW_EXPR and VEC_DELETE_EXPR. 687118334Speter * ptree.c (print_lang_type): Indicate vec new/delete. 687218334Speter * parse.y: Support vec new/delete. 687318334Speter * method.c (build_decl_overload): Deal with vec new/delete. 687418334Speter (build_opfncall): Ditto. 687518334Speter * lex.c (init_lex): Set up values of ansi_opname and opname_tab for 687618334Speter vec new/delete. vec new uses "__vn", and vec delete uses "__vd". 687718334Speter * init.c (init_init_processing): Set up BIVN and BIVD. 687818334Speter (do_friend): Don't clean up after mistaken setting of TREE_GETS_NEW, 687918334Speter since it doesn't happen any more. 688018334Speter (build_new): Support vec new. Always call something. 688118334Speter (build_x_delete): Support vec delete. 688218334Speter (build_vec_delete): Lose dtor_dummy argument, add use_global_delete, 688318334Speter and pass it to build_x_delete. 688418334Speter * decl2.c (delete_sanity): Don't change behavior by whether or not 688518334Speter the type has a destructor. Pass use_global_delete to 688618334Speter build_vec_delete. 688718334Speter (coerce_delete_type): Make sure that the type returned has a first 688818334Speter argument of ptr_type_node. 688918334Speter * decl.c (init_decl_processing): Also declare the global vec 689018334Speter new/delete. 689118334Speter (grokdeclarator): Also force vec new/delete to be static. 689218334Speter (grok_op_properties): Note presence of vec new/delete, and play with 689318334Speter their args. If vec delete takes the optional size_t argument, set 689418334Speter TYPE_VEC_DELETE_TAKES_SIZE. 689518334Speter * cp-tree.h (TYPE_GETS_{REG,VEC}_DELETE): New macros to simplify 689618334Speter checking for one delete or the other. 689718334Speter (lang_type): gets_new and gets_delete are now two bits long. The 689818334Speter low bit is for the non-array version. Lose gets_placed_new. 689918334Speter (TYPE_VEC_DELETE_TAKES_SIZE): New macro indicating that the vec 690018334Speter delete defined by this class wants to know how much space it is 690118334Speter deleting. 690218334Speter (TYPE_VEC_NEW_USES_COOKIE): New macro to indicate when vec new must 690318334Speter add a header containing the number of elements in the vector; i.e. 690418334Speter when the elements need to be destroyed or vec delete wants to know 690518334Speter the size. 690618334Speter * class.c (finish_struct_methods): Also check for overloading vec 690718334Speter delete. 690818334Speter * call.c (build_method_call): Also delete second argument for vec 690918334Speter delete. 691018334Speter 691118334Speter * decl.c (grokdeclarator): Correct complaints again. 691218334Speter (grokdeclarator): Fix segfault on null declarator. 691318334Speter (decls_match): Also accept redeclaration with no arguments if both 691418334Speter declarations were in C context. Bash TREE_TYPE (newdecl) here. 691518334Speter (duplicate_decls): Instead of here. 691618334Speter 691718334Speter * parse.y (nested_name_specifier_1): Lose rules for dealing with 691818334Speter syntax errors nicely, since they break parsing of 'const i;'. 691918334Speter 692018334Speter * decl.c (lookup_name): if (got_scope == current_class_type) 692118334Speter val = IDENTIFIER_CLASS_VALUE (name). 692218334Speter 692318334Speter * search.c (lookup_nested_tag): Look in enclosing classes, too. 692418334Speter 692518334Speter * spew.c (yylex): Only look one character ahead when checking for a 692618334Speter SCOPE. 692718334Speter 692818334Speter * lex.c (check_newline): Read first nonwhite char before 692918334Speter incrementing lineno. 693018334Speter 693118334Speter * decl.c (grokdeclarator): Don't claim that typedefs are variables 693218334Speter in warning. 693318334Speter 693418334Speter * parse.y: Divide up uses of unqualified_id into 693518334Speter notype_unqualified_id and unqualified_id, so that TYPENAME can be 693618334Speter used as an identifier after an object. 693718334Speter 693818334Speter * class.c (push_nested_class): Don't push into non-class scope. 693918334Speter 694018334Speter * decl.c (grokdeclarator): If an identifier could be a type 694118334Speter conversion operator, but has no associated type, it's not a type 694218334Speter conversion operator. 694318334Speter 694418334Speter * pt.c (unify): Check for equality of constants better. 694518334Speter 694618334Speter * decl.c (grokdeclarator): Don't complain about access decls. 694718334Speter 694818334SpeterSun Apr 10 02:39:55 1994 Jason Merrill (jason@deneb.cygnus.com) 694918334Speter 695018334Speter * decl.c (grokdeclarator): pedwarn about data definitions without 695118334Speter types here. 695218334Speter 695318334Speter * parse.y (datadef): Don't pedwarn about decls without types here, 695418334Speter since that is valid for functions. 695518334Speter (fn.def2, component_decl): Support constructors with declmods again. 695618334Speter (nomods_initdecls): For decls without any mods, so that we don't try 695718334Speter to get declspecs from some arbitrary $0. 695818334Speter 695918334Speter * search.c (lookup_field): Use cp_error. 696018334Speter 696118334Speter * parse.y (nested_name_specifier_1): Don't check aggr/non-aggr type 696218334Speter here; it breaks destructors for non-aggr types. 696318334Speter 696418334Speter * decl.c (lookup_name): Only look for TYPE_DECLs in base classes of 696518334Speter a type being defined, like the comment says. 696618334Speter If got_scope is not an aggregate, just return NULL_TREE. 696718334Speter 696818334Speter * pt.c (create_nested_upt): Kung's code for creating types nested 696918334Speter within uninstantiated templates now lives here (it used to live in 697018334Speter hack_more_ids). It needs to be expanded. 697118334Speter 697218334Speter * parse.y: Stop calling see_typename so much. 697318334Speter 697418334Speter * decl.c (lookup_name): Deal with TTPs and UPTs. 697518334Speter 697618334Speter * lex.c (real_yylex): Don't set looking_for_typename just because we 697718334Speter saw a 'new'. 697818334Speter (dont_see_typename): #if 0 out. 697918334Speter 698018334Speter * spew.c (yylex): Increment looking_for_typename if the next 698118334Speter character is SCOPE, rather than setting it to 1; this way, the value 698218334Speter from seeing an aggr specifier will not be lost. This kinda relies 698318334Speter on looking_for_typename never being < 0, which is now true. 698418334Speter 698518334Speter * parse.y (nested_name_specifier_1): Accept TEMPLATE_TYPE_PARMs, 698618334Speter too. 698718334Speter (named_class_head_sans_basetype): Accept template types, too. Oops. 698818334Speter 698918334SpeterFri Apr 8 16:39:35 1994 Jason Merrill (jason@deneb.cygnus.com) 699018334Speter 699118334Speter * decl2.c (reparse_decl_as_expr1): Handle SCOPE_REFs. 699218334Speter 699318334Speter * parse.y: Lose START_DECLARATOR. 699418334Speter 699518334Speter * search.c (lookup_nested_tag): New function to scan CLASSTYPE_TAGS 699618334Speter for a class. 699718334Speter 699818334Speter * parse.y: Simplify fn.def2 and component_decl. Support 'enum 699918334Speter A::foo' syntax. Catch invalid scopes better. 700018334Speter 700118334Speter * parse.y, lex.c: lose TYPENAME_COLON. 700218334Speter 700318334Speter * decl2.c (groktypefield): #if 0 out. 700418334Speter 700518334Speter * decl.c (lookup_name): If the type denoted by got_scope is 700618334Speter currently being defined, look in CLASSTYPE_TAGS rather than FIELDS. 700718334Speter 700818334Speter * class.c (push_nested_class): Don't try to push into 700918334Speter error_mark_node. 701018334Speter 701118334SpeterFri Apr 8 07:26:36 1994 Brendan Kehoe (brendan@lisa.cygnus.com) 701218334Speter 701318334Speter * Makefile.in (stamp-parse): Update count of conflicts to 33. 701418334Speter 701518334SpeterThu Apr 7 17:47:53 1994 Jason Merrill (jason@deneb.cygnus.com) 701618334Speter 701718334Speter A saner implementation of nested types that treats template types 701818334Speter no differently from non-template types. There are still some 701918334Speter shortcomings of our system; most notably, it is difficult to look 702018334Speter for a nested type that is hidden by another name, because of the way 702118334Speter we keep track of hidden types. But this shouldn't be a problem for 702218334Speter just about anyone. Perhaps lookup_field should be fixed up a bit. 702318334Speter 702418334Speter * spew.c: Moved handling of nested types/scoping from the lexer 702518334Speter into the parser. Removed variable template_type_seen_before_scope. 702618334Speter Removed functions frob_identifier, hack_more_ids, and various cruft 702718334Speter that was #if 0'd out in the past, reducing the size of the file from 702818334Speter 1146 lines to 450 lines. We can't quite do away with spew.c yet, 702918334Speter though; we still need it for do_aggr () and checking for SCOPE after 703018334Speter the current identifier. And setting lastiddecl. 703118334Speter 703218334Speter * parse.y: Moved handling of nested types/scoping from the lexer 703318334Speter into the parser, using a new global variable `got_scope'. Reduced 703418334Speter the number of states by 53. Implemented all uses of explicit global 703518334Speter scope. Removed terminals SCOPED_TYPENAME and SCOPED_NAME. Removed 703618334Speter nonterminals tmpl.1, scoped_base_class, id_scope, typename_scope, 703718334Speter scoped_typename. Added nonterminals nested_type, 703818334Speter qualified_type_name, complete_type_name, qualified_id, ptr_to_mem, 703918334Speter nested_name_specifier, global_scope, overqualified_id, type_name. 704018334Speter Changed many others. Added 9 new reduce/reduce conflicts, which are 704118334Speter nested type parallels of 9 that were already in the grammar for 704218334Speter non-nested types. Eight of the now 33 conflicts should be removed 704318334Speter in the process of resolving the late binding between variable and 704418334Speter function decls. 704518334Speter 704618334Speter * gxxint.texi (Parser): Update. 704718334Speter 704818334Speter * cp-tree.h (IS_AGGR_TYPE_CODE): Add UNINSTANTIATED_P_TYPE. 704918334Speter 705018334Speter * lex.h: Add decl for got_scope. 705118334Speter 705218334Speter * lex.c (see_typename): Claim to be the lexer when calling 705318334Speter lookup_name. 705418334Speter 705518334Speter * decl.c (lookup_name): When called from the lexer, look at 705618334Speter got_scope and looking_at_typename; otherwise don't. 705718334Speter 705818334SpeterThu Apr 7 22:05:47 1994 Mike Stump <mrs@cygnus.com> 705918334Speter 706018334Speter 31th Cygnus<->FSF merge. 706118334Speter 706218334SpeterThu Apr 7 17:47:53 1994 Jason Merrill (jason@deneb.cygnus.com) 706318334Speter 706418334Speter * decl2.c (mark_vtable_entries): Call this to mark all the 706518334Speter entries in the vtable addressable. 706618334Speter (finish_decl_parsing): Handle SCOPE_REFs. 706718334Speter 706818334Speter * decl.c (decls_match): Always call compparms with strict == 1. 706918334Speter Handle the special case of C function redecl here. 707018334Speter (duplicate_decls): Only keep the old type if the new decl takes no 707118334Speter arguments. 707218334Speter 707318334Speter * typeck.c (compparms): Also allow t1 to be ... if strict == 0. 707418334Speter 707518334SpeterThu Apr 7 16:17:50 1994 Mike Stump <mrs@cygnus.com> 707618334Speter 707718334Speter * class.c (build_vtable_entry): Fix breakage introduced Apr 5 707818334Speter 17:48:41. 707918334Speter 708018334SpeterWed Apr 6 16:05:10 1994 Per Bothner (bothner@kalessin.cygnus.com) 708118334Speter 708218334Speter * init.c (build_virtual_init), search.c (build_vbase_vtables_init), 708318334Speter ch-tree.h: Every place these functions were called, the result was 708418334Speter immediately passed to expand_expr_stmt. Reduce redundancy by 708518334Speter calling expand_expr_init *inside* these functions. These 708618334Speter makes for a simpler interface, and we don't have to build 708718334Speter compound expressions. Hence, rename these function to: 708818334Speter expand_virtual_init and expand_vbase_vtables_init respectively. 708918334Speter * init.c, decl.c: Change callers of these functions. 709018334Speter * init.c, cp-tree.h (expand_virtual_init): Make static. 709118334Speter 709218334Speter * decl2.c (finish_file): Check TREE_PUBLIC||TREE_ADDRESSABLE 709318334Speter rather than DECL_SAVED_INSNS before emitting inlines. 709418334Speter 709518334SpeterWed Apr 6 13:06:39 1994 Jason Merrill (jason@deneb.cygnus.com) 709618334Speter 709718334Speter * spew.c (init_spew): #if 0 out stuff used by arbitrate_lookup. 709818334Speter 709918334Speter * decl.c (duplicate_decls): If this is a new declaration of an 710018334Speter extern "C" function, keep the type (for the argtypes). 710118334Speter (redeclaration_error_message): Don't check DECL_LANGUAGE here. 710218334Speter (decls_match): Call compparms with a value of strict dependent on 710318334Speter the value of strict_prototypes for DECL_LANGUAGE (oldecl). 710418334Speter 710518334Speter * typeck.c (compparms): ... is only equivalent to non-promoting 710618334Speter parms if we're not being strict. 710718334Speter 710818334Speter * parse.y (empty_parms): Don't check flag_ansi || pedantic here. 710918334Speter 711018334Speter * decl.c (init_decl_processing): if (flag_ansi || pedantic) 711118334Speter strict_prototypes_lang_c = strict_prototypes_lang_cplusplus; 711218334Speter 711318334Speter * decl2.c (grok_function_init): Don't set DECL_INITIAL on pure 711418334Speter virtuals. 711518334Speter 711618334SpeterTue Apr 5 17:48:41 1994 Per Bothner (bothner@kalessin.cygnus.com) 711718334Speter 711818334Speter Support for implementing vtables with thunks. 711918334Speter * tree.def (THUNK_DECL): New TREE_CODE. 712018334Speter * cp-tree.h (FNADDR_FROM_VTABLE_ENTRY), tree.c 712118334Speter (fnaddr_from_vtable_entry): Handle flag_vtable_thunks case. 712218334Speter * cp-tree.h (memptr_type): New variable. 712318334Speter * class.c (build_vtable_entry): Build thunk if necessary. 712418334Speter * class.c (build_vfn_ref): If using thunks, don't need 712518334Speter to add delta field from vtable (there is none!). 712618334Speter * decl.c: Add memptr_type as well as vtable_entry_type. 712718334Speter If using thunks, the latter is just ptr_type_node. 712818334Speter * gc.c, typeck.c: Use memptr_typeChange, not vtable_entry_type. 712918334Speter * decl2.c (finish_vtable_vardecl): Handle thunks. 713018334Speter * expr.c (cplus_expand_expr): Support THUNK_DECL. 713118334Speter 713218334Speter * decl.c (grokdeclarator): Set DECL_THIS_EXTERN if "extern". 713318334Speter * decl.c (start_function): Set current_extern_inline based on 713418334Speter DECL_THIS_EXTERN, not TREE_PUBLIC. 713518334Speter * decl.c (finish_function): Call mark_inline_for_output if needed, 713618334Speter 713718334Speter Improve intelligence about when to emit inlines. 713818334Speter * cp-tree.h (lang_decl_flags): New field saved_inline. 713918334Speter * cp-tree.h (DECL_SAVED_INLINE): New macro. 714018334Speter * class.c (add_virtual_function): Don't set TREE_ADDRESSABLE. 714118334Speter * decl.h, decl.c (pending_addressable_inlines): Removed. 714218334Speter * decl2.c (pending_addressable_inlines): Renamed to saved_inlines. 714318334Speter * decl2.c (mark_inline_for_output): Do nothing if 714418334Speter DECL_SAVED_INLINE; otherwise set it (and add to saved_inlines list). 714518334Speter * decl2.c (finish_vtable_vardecl): SET_CLASSTYPE_INTERFACE_KNOWN 714618334Speter and set CLASSTYPE_INTERFACE_ONLY if there is a non-inline virtual. 714718334Speter * decl2.c (finish_file): Writing out inlines later, so we can 714818334Speter also handle the ones needed for vtbales. 714918334Speter * decl2.c (write_vtable_entries, finish_vtable_typedecl): Removed. 715018334Speter 715118334Speter * cp-tree.h, class.c, decl2.c, search.c: Remove -fvtable-hack 715218334Speter and flag_vtable_hack. Use -fvtable-thunks and flag_vtable_thunks 715318334Speter instead. (The rationale is that these optimizations both break binary 715418334Speter compatibility, but should become the default in a future release.) 715518334Speter 715618334SpeterWed Apr 6 10:53:56 1994 Mike Stump <mrs@cygnus.com> 715718334Speter 715818334Speter * class.c (modify_vtable_entries): Never reset the DECL_CONTEXT 715918334Speter of a fndecl, as we might not be from that vfield. 716018334Speter 716118334SpeterTue Apr 5 17:43:35 1994 Kung Hsu (kung@mexican.cygnus.com) 716218334Speter 716318334Speter * class.c (add_virtual_function): fix bug for pure virtual, so 716418334Speter that DECL_VINDEX of the dummy decl copied won't be error. 716518334Speter (see also Apr 4 change) 716618334Speter 716718334SpeterTue Apr 5 17:23:45 1994 Per Bothner (bothner@kalessin.cygnus.com) 716818334Speter 716918334Speter * typeck.c (c_expand_return): Before checking that we're not 717018334Speter returning the address of a local, make sure it's a VAR_DECL. 717118334Speter (And don't worry about it being a TREE_LIST.) 717218334Speter 717318334SpeterTue Apr 5 13:26:42 1994 Jason Merrill (jason@deneb.cygnus.com) 717418334Speter 717518334Speter * parse.y (YYDEBUG): Always define. 717618334Speter * lex.c (YYDEBUG): Ditto. 717718334Speter 717818334SpeterMon Apr 4 11:28:17 1994 Kung Hsu (kung@mexican.cygnus.com) 717918334Speter 718018334Speter * class.c (finish_struct): backup out the change below, put the 718118334Speter new change for the same purpose. The change below breaks code. 718218334Speter 718318334Speter * class.c (finish_struct): if pure virtual, copy node and make 718418334Speter RTL point to abort, then put in virtual table. 718518334Speter * decl2.c (grok_function_iit): reinstate Mar 31 change. 718618334Speter 718718334SpeterSat Apr 2 03:12:58 1994 Jason Merrill (jason@deneb.cygnus.com) 718818334Speter 718918334Speter * init.c (build_new): pedwarn about newing const and volatile 719018334Speter types. 719118334Speter 719218334Speter * tree.c (get_identifier_list): Only do the special handling 719318334Speter thing if we're dealing with the main variant of the record type. 719418334Speter 719518334Speter * cvt.c (convert_to_reference): When converting between 719618334Speter compatible reference types, use the pointer conversion machinery. 719718334Speter Don't just blindly overwrite the old type. 719818334Speter 719918334SpeterFri Apr 1 17:14:42 1994 Jason Merrill (jason@deneb.cygnus.com) 720018334Speter 720118334Speter * call.c (build_method_call): When looking at global functions, 720218334Speter be sure to use instance_ptr for the first argument, not some version 720318334Speter of it that has been cast to a base class. Also do this before 720418334Speter comparing candidates. 720518334Speter 720618334SpeterThu Mar 31 19:50:35 1994 Jason Merrill (jason@deneb.cygnus.com) 720718334Speter 720818334Speter * call.c (build_method_call): Constructors can be called for 720918334Speter const objects. 721018334Speter 721118334SpeterThu Mar 31 16:20:16 1994 Kung Hsu (kung@mexican.cygnus.com) 721218334Speter 721318334Speter * decl2.c (grok_func_init): do not abort as rtl for pur virtual 721418334Speter fucntions. They can be defined somewhere else. 721518334Speter 721618334SpeterSat Jan 23 23:23:26 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de) 721718334Speter 721818334Speter * decl.c (init_decl_processing): Declare __builtin_return_address 721918334Speter and __builtin_frame_address for C++ as well. 722018334Speter 722118334SpeterThu Mar 31 12:35:49 1994 Mike Stump <mrs@cygnus.com> 722218334Speter 722318334Speter * typeck2.c (store_init_value): Integral constant variables are 722418334Speter always constant, even when doing -fpic. 722518334Speter 722618334SpeterSat Jan 23 23:23:26 1994 Stephen R. van den Berg (berg@pool.informatik.rwth-aachen.de) 722718334Speter 722818334Speter * decl.c (redeclaration_error_message): Pass the types to 722918334Speter comptypes. 723018334Speter 723118334SpeterWed Mar 30 21:29:25 1994 Mike Stump <mrs@cygnus.com> 723218334Speter 723318334Speter Cures incorrect errors about pure virtuals in a class, when they 723418334Speter have been overridden in a derived class. 723518334Speter 723618334Speter * search.c (get_abstract_virtuals): Reimplement. 723718334Speter * search.c (get_abstract_virtuals_1): New routine. 723818334Speter 723918334SpeterWed Mar 30 14:10:04 1994 Jason Merrill (jason@deneb.cygnus.com) 724018334Speter 724118334Speter * pt.c (push_template_decls): Make the pushed level pseudo 724218334Speter global. 724318334Speter 724418334Speter * parse.y (extdefs): Don't pop everything if the current binding 724518334Speter level is pseudo_global. 724618334Speter 724718334Speter * decl.c (pop_everything): Stop on reaching a pseudo-global 724818334Speter binding level. 724918334Speter 725018334Speter * cp-tree.h (DECL_FUNCTION_MEMBER_P): Change to more reliable test. 725118334Speter 725218334Speter * decl.c (duplicate_decls): Only copy DECL_SOURCE_{FILE_LINE} if 725318334Speter the old decl actually had an initializer. 725418334Speter 725518334Speter * {various}: Clean up gcc -W complaints. 725618334Speter 725718334Speter * cp-tree.h (DECL_FUNCTION_MEMBER_P): Currently defined to be 725818334Speter (DECL_CONTEXT (NODE) != NULL_TREE). 725918334Speter 726018334Speter * parse.y (lang_extdef): Call pop_everything if necessary. 726118334Speter 726218334Speter * decl.c (pop_everything): New function for popping binding 726318334Speter levels left over after a syntax error. 726418334Speter (pushdecl): Use DECL_FUNCTION_MEMBER_P to decide whether or not 726518334Speter a function is a member. 726618334Speter 726718334SpeterWed Mar 30 14:20:50 1994 Mike Stump <mrs@cygnus.com> 726818334Speter 726918334Speter Cures calling a more base base class function, when a more derived 727018334Speter base class member should be called in some MI situations. 727118334Speter 727218334Speter * search.c (make_binfo): Use more the more specialized base 727318334Speter binfos from the binfo given as the second argument to make_binfo, 727418334Speter instead of the unspecialized ones from the TYPE_BINFO. 727518334Speter * class.c (finish_base_struct): Ditto, update callers. 727618334Speter * search.c (dfs_get_vbase_types): Ditto. 727718334Speter * tree.c (propagate_binfo_offsets, layout_vbasetypes): Ditto. 727818334Speter * decl.c (xref_tag): Use NULL_TREE instead of 0. 727918334Speter * lex.c (make_lang_type): Ditto. 728018334Speter 728118334SpeterWed Mar 30 14:10:04 1994 Jason Merrill (jason@deneb.cygnus.com) 728218334Speter 728318334Speter * decl.c (pushdecl): If pushing a C-linkage function, only do a 728418334Speter push_overloaded_decl. 728518334Speter (duplicate_decls): Standard overloading does not shadow built-ins. 728618334Speter 728718334SpeterTue Mar 29 00:54:18 1994 Jason Merrill (jason@deneb.cygnus.com) 728818334Speter 728918334Speter * pt.c (end_template_decl): Don't call push_overloaded_decl. 729018334Speter 729118334Speter * init.c (do_friend): Don't call push_overloaded_decl. 729218334Speter 729318334Speter * decl.c (pushdecl): Call push_overloaded_decl for functions and 729418334Speter function templates. 729518334Speter (duplicate_decls): functions and function templates are not 729618334Speter duplicates, but don't complain about calling this function to 729718334Speter compare them. 729818334Speter (push_overloaded_decl): Don't deal with linkage. Call 729918334Speter duplicate_decls. 730018334Speter (redeclaration_error_message): Deal with linkage. 730118334Speter 730218334Speter * decl.c (start_function): If push_overloaded_decl returns an 730318334Speter older version of the function, deal with it. 730418334Speter 730518334Speter * decl.c (start_function): Be sure only to push_overloaded_decl 730618334Speter for non-members. 730718334Speter 730818334Speter * decl.c (grokfndecl): Put back clearing of DECL_CHAIN for 730918334Speter methods. 731018334Speter (start_function): Lose broken and redundant code for checking old 731118334Speter decl. 731218334Speter 731318334Speter * init.c (add_friend): Give line numbers of both friend decls 731418334Speter when warning about re-friending. 731518334Speter 731618334Speter * pt.c (tsubst): Use comptypes rather than == to compare the 731718334Speter types of the method as declared and as defined, since default 731818334Speter parameters may be different. 731918334Speter 732018334Speter * call.c (build_method_call): Use brendan's candidate printing 732118334Speter routine. 732218334Speter 732318334Speter * decl.c (start_method): Methods defined in the class body are 732418334Speter inline whether or not it's a template class. 732518334Speter 732618334SpeterMon Mar 28 16:39:26 1994 Jason Merrill (jason@deneb.cygnus.com) 732718334Speter 732818334Speter * parse.y (initdcl0): Add "extern" to current_declspecs if 732918334Speter have_extern_spec && ! used_extern_spcec. 733018334Speter 733118334Speter * tree.c (really_overloaded_fn): A fn with more than one 733218334Speter overload. 733318334Speter 733418334Speter * pt.c (end_template_decl): Use really_overloaded_fn. 733518334Speter 733618334Speter * decl.c (duplicate_decls): When smashing a decl into a previous 733718334Speter definition, keep the old file and line. 733818334Speter Don't deal with overloaded functions. 733918334Speter Lose old code for checking arg types of functions. 734018334Speter Check for overloaded C functions. 734118334Speter (pushdecl): Deal with overloaded functions. 734218334Speter (start_decl): Expect pushdecl to return an appropriate function decl. 734318334Speter (start_function): Ditto. 734418334Speter (push_overloaded_decl): Don't check for overloaded C functions. 734518334Speter 734618334Speter * *.c: Stop using DECL_OVERLOADED, it being archaic. 734718334Speter TREE_OVERLOADED should probably go, too. 734818334Speter 734918334SpeterMon Mar 28 14:00:45 1994 Ron Guilmette (rfg@netcom.com) 735018334Speter 735118334Speter * typeck.c (comp_target_types): Call comp_target_parms with 735218334Speter strict == 1. 735318334Speter 735418334SpeterSun Mar 27 00:07:45 1994 Jason Merrill (jason@deneb.cygnus.com) 735518334Speter 735618334Speter * parse.y (empty_parms): Don't parse () as (...) in extern "C" 735718334Speter sections if we're compiling with -ansi or -pedantic. 735818334Speter 735918334Speter * decl.c (decls_match): Don't treat (int) and (int&) as matching. 736018334Speter 736118334Speter * decl2.c (grokfield): Don't pedwarn twice about initializing 736218334Speter field. 736318334Speter 736418334Speter * decl.c (push_overloaded_decl): Warn about shadowing 736518334Speter constructor. 736618334Speter (redeclaration_error_message): Don't allow 'int a; int a;' 736718334Speter 736818334Speter * cvt.c (build_up_reference): Only check for valid upcast if 736918334Speter LOOKUP_PROTECT is set, not just any flag. 737018334Speter 737118334SpeterFri Mar 25 01:22:31 1994 Jason Merrill (jason@deneb.cygnus.com) 737218334Speter 737318334Speter * lex.c (check_newline): When we see a #pragma implementation, 737418334Speter also set it for the main input file. 737518334Speter 737618334Speter * init.c (build_new): Convert array size argument to size_t. 737718334Speter 737818334Speter * parse.y (primary): If we're doing a parenthesized type-id, call 737918334Speter groktypename before passing it to build_new. 738018334Speter 738118334Speter * call.c (build_method_call): Deal properly with const and 738218334Speter volatile for instances of reference type. 738318334Speter 738418334Speter * decl.c (store_return_init): Change 'if (pedantic) error' to 'if 738518334Speter (pedantic) pedwarn'. 738618334Speter 738718334Speter * decl.c (grokdeclarator): Don't complain about putting `static' 738818334Speter and `inline' on template function decls. 738918334Speter 739018334SpeterThu Mar 24 23:18:19 1994 Jason Merrill (jason@deneb.cygnus.com) 739118334Speter 739218334Speter * call.c (build_method_call): Preserve const & volatile on 739318334Speter `this'. 739418334Speter 739518334SpeterThu Mar 24 16:21:52 1994 Mike Stump <mrs@cygnus.com> 739618334Speter 739718334Speter * init.c (build_new, build_vec_delete): Use global new and delete 739818334Speter for arrays. 739918334Speter * decl2.c (delete_sanity): Ditto. 740018334Speter 740118334SpeterThu Mar 24 02:10:46 1994 Jason Merrill (jason@deneb.cygnus.com) 740218334Speter 740318334Speter * cvt.c (convert_to_reference): If i is an lvalue, 740418334Speter (int &)i -> *(int*)&i, as per 5.2.8p9 of the latest WP. 740518334Speter (convert_force): Call convert_to_reference with LOOKUP_COMPLAIN. 740618334Speter 740718334SpeterWed Mar 23 17:45:37 1994 Jason Merrill (jason@deneb.cygnus.com) 740818334Speter 740918334Speter * decl.c (duplicate_decls): Also propagate DECL_TEMPLATE_MEMBERS 741018334Speter and DECL_TEMPLATE_INSTANTIATIONS. 741118334Speter 741218334Speter * init.c (build_new): Handle array typedefs properly. 741318334Speter 741418334SpeterWed Mar 23 18:23:33 1994 Mike Stump <mrs@cygnus.com> 741518334Speter 741618334Speter 30th Cygnus<->FSF merge. 741718334Speter 741818334SpeterWed Mar 23 00:46:24 1994 Mike Stump <mrs@cygnus.com> 741918334Speter 742018334Speter * class.c (modify_vtable_entries): Avoid running off the end of the 742118334Speter virtuals list when processing a virtual destructor. 742218334Speter * class.c (get_vtable_entry): Ditto. 742318334Speter 742418334SpeterWed Mar 23 00:23:59 1994 Jason Merrill (jason@deneb.cygnus.com) 742518334Speter 742618334Speter * decl.c (duplicate_decls): If two template decls don't match, 742718334Speter just return 0. 742818334Speter 742918334SpeterTue Mar 22 23:49:41 1994 Jason Merrill (jason@deneb.cygnus.com) 743018334Speter 743118334Speter * typeck.c (convert_for_assignment): Don't pedwarn about 743218334Speter converting function pointer to void *. 743318334Speter 743418334SpeterTue Mar 22 22:23:19 1994 Mike Stump <mrs@cygnus.com> 743518334Speter 743618334Speter Major revamp of pointer to member functions. Cures major 743718334Speter nonfunctionality when used in casts, and MI situations. 743818334Speter 743918334Speter * cvt.c (convert_force): Update call site of build_ptrmemfunc. 744018334Speter * typeck.c (convert_for_assignment): Ditto. 744118334Speter * typeck2.c (digest_init): Ditto. 744218334Speter * typeck2.c (process_init_constructor): Simplify by moving code into 744318334Speter digest_init. 744418334Speter * typeck2.c (digest_init): Do default_conversions on init value, if 744518334Speter we are processing pointer to member functions. 744618334Speter * class.c (get_vfield_offset): Now non-static. Convert bit offset 744718334Speter into byte offset. 744818334Speter * cp-tree.h (get_vfield_offset): Ditto. 744918334Speter * typeck.c (get_member_function_from_ptrfunc): Convert down to right 745018334Speter instance, before fetching vtable pointer. 745118334Speter * typeck.c (get_delta_difference): New routine. 745218334Speter * typeck.c (build_ptrmemfunc): Revamp to handle casting better, also 745318334Speter get vtable pointer out of right subobject. 745418334Speter 745518334SpeterTue Mar 22 17:56:48 1994 Mike Stump <mrs@cygnus.com> 745618334Speter 745718334Speter * search.c (get_binfo): Return NULL instead of aborting, when 745818334Speter passed a UNION_TYPE. 745918334Speter 746018334SpeterTue Mar 22 12:44:54 1994 Jason Merrill (jason@deneb.cygnus.com) 746118334Speter 746218334Speter These patches implement handling of redefinition/redeclaration of 746318334Speter templates. 746418334Speter 746518334Speter * typeck.c (comptypes): Simplify. All TEMPLATE_TYPE_PARMs are 746618334Speter considered compatible. 746718334Speter 746818334Speter * parse.y (template_def): Pass defn argument to end_template_decl. 746918334Speter 747018334Speter * pt.c (end_template_decl): Add defn argument. Check for 747118334Speter redefinition. Simplify. 747218334Speter 747318334Speter * error.c (OB_UNPUT): New macro, to remove mistakes. 747418334Speter (aggr_variety): Subroutine of dump_aggr_type. 747518334Speter 747618334Speter * decl.c (decls_match): Support templates. 747718334Speter (duplicate_decls): No longer static. Don't try to lay out template 747818334Speter decls. 747918334Speter (pushdecl): Simplify. 748018334Speter 748118334Speter * cp-tree.h (DECL_TEMPLATE_MEMBERS): Use DECL_SIZE instead of 748218334Speter DECL_INITIAL. 748318334Speter 748418334SpeterMon Mar 21 11:46:55 1994 Jason Merrill (jason@deneb.cygnus.com) 748518334Speter 748618334Speter * error.c (dump_decl): Support class template decls. 748718334Speter (dump_type): Don't adorn template type parms. 748818334Speter 748918334Speter * decl.c (duplicate_decls): Save DECL_TEMPLATE_INFO from old decl 749018334Speter if it was a definition. 749118334Speter (redeclaration_error_message): Do the cp_error thang, and reject 749218334Speter redefinition of templates. 749318334Speter 749418334SpeterMon Mar 21 19:36:06 1994 Per Bothner (bothner@kalessin.cygnus.com) 749518334Speter 749618334Speter * decl.c (grokdeclarator): Set TREE_PUBLIC for METHOD_TYPE 749718334Speter in FIELD context, when appropriate. Also, 749818334Speter CLASSTYPE_INTERFACE_ONLY is irrelevant to setting TREE_PUBLIC. 749918334Speter Also, simplify check for bogus return specifiers. 750018334Speter 750118334SpeterMon Mar 21 11:46:55 1994 Jason Merrill (jason@deneb.cygnus.com) 750218334Speter 750318334Speter * parse.y (after_type_declarator1): Expand type_quals. 750418334Speter (notype_declarator1): Ditto. 750518334Speter (absdcl1): Ditto. 750618334Speter 750718334SpeterSat Mar 19 01:05:17 1994 Jason Merrill (jason@deneb.cygnus.com) 750818334Speter 750918334Speter * decl.c (grokdeclarator): Treat class-local typedefs like static 751018334Speter members; i.e. 'typedef int f();' means that f is a function type, 751118334Speter not a method type. 751218334Speter 751318334Speter * parse.y (decl): Change direct_* back to *. 751418334Speter (type_id): Change direct_abstract_declarator to absdcl. 751518334Speter (direct_declarator, direct_initdecls, direct_initdcl0): Remove again. 751618334Speter 751718334SpeterFri Mar 18 12:47:59 1994 Jason Merrill (jason@deneb.cygnus.com) 751818334Speter 751918334Speter These two patches fix crashes on instantiating a template inside a 752018334Speter function with C linkage or containing labels. 752118334Speter 752218334Speter * class.c (current_lang_stacksize): No longer static. 752318334Speter 752418334Speter * decl.c (struct saved_scope): Add lang_base, lang_stack, 752518334Speter lang_name, lang_stacksize, and named_labels. 752618334Speter (push_to_top_level): Save them. 752718334Speter (pop_from_top_level): Restore them. 752818334Speter 752918334Speter * gxxint.texi (Parser): Update. 753018334Speter 753118334Speter These two patches finish moving the task of expr/declarator 753218334Speter ambiguity resolution from the lexer to the parser, and add one more 753318334Speter r/r conflict. START_DECLARATOR can now be nuked. 753418334Speter 753518334Speter * parse.y (decl): Add "direct_" in typespec X rules. 753618334Speter (direct_declarator): New nonterminal for 753718334Speter direct_after_type_declarator and direct_notype_declarator. 753818334Speter (direct_initdecls): Like initdecls, but uses direct_initdcl0. 753918334Speter (direct_initdcl0): Like initdcl0, but uses direct_declarator. 754018334Speter (named_parm): Add typespec direct_declarator rule. 754118334Speter 754218334Speter * spew.c (yylex): #if 0 out START_DECLARATOR insertion. 754318334Speter 754418334Speter These two patches disable some excessive cleverness on the part of 754518334Speter g++; a non-class declaration always hides a class declaration in the 754618334Speter same scope, and g++ was trying to unhide it depending on the 754718334Speter enclosing expression. 754818334Speter 754918334Speter * spew.c (arbitrate_lookup): #if 0 out. 755018334Speter 755118334Speter * decl.c (lookup_name): Never call arbitrate_lookup. 755218334Speter 755318334Speter * parse.y (complex_notype_declarator1): Add '*' 755418334Speter complex_notype_declarator1 and '&' complex_notype_declarator1 rules. 755518334Speter 755618334Speter * parse.y (complex_direct_notype_declarator): Restore id_scope 755718334Speter see_typename TYPENAME rule, remove all other rules beginning with 755818334Speter those tokens. 755918334Speter (notype_unqualified_id): Add '~' see_typename IDENTIFIER rule. 756018334Speter 756118334SpeterThu Mar 17 17:30:01 1994 Jason Merrill (jason@deneb.cygnus.com) 756218334Speter 756318334Speter These changes fix the compiler's handling of the functional cast/ 756418334Speter object declaration ambiguities in section 6.8 of the ARM. They also 756518334Speter add 11 reduce/reduce conflicts. Sigh. 756618334Speter 756718334Speter * parse.y: Add precedence decls for OPERATOR and '~'. 756818334Speter (notype_unqualified_id): New nonterminal, encompasses all of the 756918334Speter ANSI unqualified-id nonterminal except TYPENAMEs. 757018334Speter (expr_or_declarator): New nonterminal to delay parsing of code like 757118334Speter `int (*a)'. 757218334Speter (primary): Use notype_unqualified_id. 757318334Speter (decl): Add typespec initdecls ';' and typespec declarator ';' 757418334Speter rules. 757518334Speter (initdcl0): Deal with the above. 757618334Speter (complex_notype_declarator1): A notype_declarator that is not also 757718334Speter an expr_or_declarator. 757818334Speter (complex_direct_notype_declarator): A direct_notype_declarator that 757918334Speter doesn't conflict with expr_or_declarator. Use 758018334Speter notype_unqualified_id. Remove id_scope see_typename TYPENAME rule. 758118334Speter (functional_cast): New nonterminal, for the three functional cast 758218334Speter rules. So that they can be moved after 758318334Speter complex_direct_notype_declarator. 758418334Speter (see_typename): Don't accept type_quals any more. 758518334Speter 758618334Speter * decl2.c (reparse_decl_as_expr): New function to deal with parse 758718334Speter nodes for code like `int (*a)++;'. 758818334Speter (reparse_decl_as_expr1): Recursive subroutine of the above. 758918334Speter (finish_decl_parsing): New function to deal with parse nodes for 759018334Speter code like `int (*a);'. See the difference? 759118334Speter 759218334SpeterThu Mar 17 12:16:10 1994 Mike Stump <mrs@cygnus.com> 759318334Speter 759418334Speter These changes break binary compatibility in code with classes 759518334Speter that use virtual bases. 759618334Speter 759718334Speter * search.c (dfs_get_vbase_types): Simplify and correct to make 759818334Speter sure virtual bases are initialized in dfs ordering. 759918334Speter * search.c (get_vbase_types): Simplify and make readable. 760018334Speter 760118334SpeterThu Mar 17 12:01:10 1994 Jason Merrill (jason@deneb.cygnus.com) 760218334Speter 760318334Speter * parse.y: s/ typename / type_id /g 760418334Speter 760518334SpeterWed Mar 16 17:42:52 1994 Kung Hsu (kung@mexican.cygnus.com) 760618334Speter 760718334Speter * parse.y (typespec): add SCOPE TYPENAME for global scoped 760818334Speter type. e.g. ::B x. 760918334Speter 761018334Speter * decl.c (complete_array_type): fix a bug that in -pendantic 761118334Speter mode even there's no initializer, it will continue to build 761218334Speter default index. 761318334Speter 761418334SpeterWed Mar 16 17:43:07 1994 Jason Merrill (jason@deneb.cygnus.com) 761518334Speter 761618334Speter * parse.y (direct_notype_declarator): Add PTYPENAME rule, remove 761718334Speter all of the scoped PTYPENAME rules. 761818334Speter 761918334SpeterWed Mar 16 16:39:02 1994 Mike Stump <mrs@cygnus.com> 762018334Speter 762118334Speter * init.c (build_offset_ref): The value of A::typedef_name is 762218334Speter always the TYPE_DECL, and never an error. 762318334Speter 762418334SpeterTue Mar 15 20:02:35 1994 Jason Merrill (jason@deneb.cygnus.com) 762518334Speter 762618334Speter * search.c (get_base_distance_recursive): Two binfos can only 762718334Speter represent the same object if they are both via_virtual. 762818334Speter 762918334Speter * class.c (finish_base_struct): Check vbases for ambiguity, too. 763018334Speter 763118334Speter * search.c (get_vbase_types): Accept binfo argument, too. 763218334Speter 763318334SpeterTue Mar 15 19:22:05 1994 Kung Hsu (kung@mexican.cygnus.com) 763418334Speter 763518334Speter * decl.c (complete_array_type): complete TYPE_DOMAIN of the 763618334Speter initializer also, because back-end requires it. 763718334Speter 763818334SpeterTue Mar 15 15:33:31 1994 Jason Merrill (jason@deneb.cygnus.com) 763918334Speter 764018334Speter * error.c (dump_expr): Support member functions (which show up as 764118334Speter OFFSET_REFs). 764218334Speter 764318334SpeterMon Mar 14 16:24:36 1994 Mike Stump <mrs@cygnus.com> 764418334Speter 764518334Speter * init.c (build_new): Set the return type of multidimensional 764618334Speter news correctly. 764718334Speter 764818334SpeterFri Mar 11 15:35:39 1994 Kung Hsu (kung@mexican.cygnus.com) 764918334Speter 765018334Speter * call.c (build_method_call): if basetype not equal to type 765118334Speter of the instance, use the type of the instance in building 765218334Speter destructor. 765318334Speter 765418334SpeterThu Mar 10 17:07:10 1994 Kung Hsu (kung@mexican.cygnus.com) 765518334Speter 765618334Speter * parse.y (direct_notype_declarator): add push_nested_type for 765718334Speter 'template_type SCOPED_NAME' rule. 765818334Speter 765918334SpeterTue Mar 8 00:19:58 1994 Jason Merrill (jason@deneb.cygnus.com) 766018334Speter 766118334Speter * parse.y (parm): Add typed_declspec1 {absdcl, epsilon} rules. 766218334Speter 766318334SpeterSat Mar 5 04:47:48 1994 Jason Merrill (jason@deneb.cygnus.com) 766418334Speter 766518334Speter * parse.y (regcast_or_absdcl): New nonterminal to implement late 766618334Speter reduction of constructs like `int ((int)(int)(int))'. 766718334Speter (cast_expr): Use it. 766818334Speter (sub_cast_expr): Everything that can come after a cast. 766918334Speter (typed_declspecs1): typed_declspecs that are not typed_typespecs. 767018334Speter (direct_after_type_declarator): Lose PAREN_STAR_PAREN rule. 767118334Speter (direct_abstract_declarator): Replace '(' parmlist ')' rule with 767218334Speter '(' complex_parmlist ')' and regcast_or_absdcl. 767318334Speter (parmlist): Split 767418334Speter (complex_parmlist): Parmlists that are not also typenames. 767518334Speter (parms_comma): Enabler. 767618334Speter (named_parm): A parm that is not also a typename. Use declarator 767718334Speter rather than dont_see_typename abs_or_notype_decl. Expand 767818334Speter typed_declspecs inline. 767918334Speter (abs_or_notype_decl): Lose. 768018334Speter (dont_see_typename): Comment out. 768118334Speter (bad_parm): Break out abs_or_notype_decl into two rules. 768218334Speter 768318334SpeterFri Mar 4 18:22:39 1994 Jason Merrill (jason@deneb.cygnus.com) 768418334Speter 768518334Speter * decl2.c (reparse_decl_as_casts): New function to change parse 768618334Speter nodes for `(int)(int)(int)' from "function taking int and returning 768718334Speter function taking int and returning function taking int" to "... cast 768818334Speter to int, cast to int, cast to int". 768918334Speter 769018334Speter * decl2.c (reparse_decl_as_expr): Recursive function to change 769118334Speter parse nodes for `A()()' from "function returning function returning 769218334Speter A" to "A().operator()". 769318334Speter 769418334Speter * parse.y (primary): Replace `typespec LEFT_RIGHT' rule with 769518334Speter `typespec fcast_or_absdcl' rule. 769618334Speter (fcast_or_absdcl): New nonterminal to implement late reduction of 769718334Speter constructs like `A()()()()'. 769818334Speter (typename): Replace `typespec absdcl1' rule with 769918334Speter `typespec direct_abstract_declarator' rule. 770018334Speter (direct_abstract_declarator): Replace `LEFT_RIGHT type_quals' rule 770118334Speter with `fcast_or_absdcl type_quals' rule. 770218334Speter 770318334SpeterFri Mar 4 16:18:03 1994 Mike Stump <mrs@cygnus.com> 770418334Speter 770518334Speter * tree.c (lvalue_p): Improve OFFSET_REF handling, so that it 770618334Speter matches Section 5.5. 770718334Speter 770818334SpeterFri Mar 4 14:01:59 1994 Jason Merrill (jason@deneb.cygnus.com) 770918334Speter 771018334Speter * error.c (dump_type_prefix): Don't print basetype twice for 771118334Speter pmfs. 771218334Speter 771318334SpeterFri Mar 4 13:24:33 1994 Mike Stump <mrs@cygnus.com> 771418334Speter 771518334Speter * typeck.c (convert_arguments): Handle setHandler(A::handlerFn) 771618334Speter so that it is like setHandler(&A::handlerFn). Cures an `invalid 771718334Speter lvalue in unary `&''. 771818334Speter 771918334SpeterFri Mar 4 11:15:59 1994 Jason Merrill (jason@deneb.cygnus.com) 772018334Speter 772118334Speter * gxxint.texi (Copying Objects): New section discussing default 772218334Speter op= problems with virtual inheritance. 772318334Speter 772418334Speter * decl2.c (grokoptypename): Just does grokdeclarator and 772518334Speter build_typename_overload, since the parser can't call grokdeclarator 772618334Speter directly. 772718334Speter 772818334Speter * method.c (build_typename_overload): Set IDENTIFIER_GLOBAL_VALUE 772918334Speter and TREE_TYPE on generated identifiers. 773018334Speter 773118334Speter * decl.c (grokdeclarator): Don't deal with TYPE_EXPRs anymore. 773218334Speter 773318334Speter * parse.y (parm): Convert `const char *' to `__opPCc' here. 773418334Speter 773518334Speter * error.c (dump_decl): Say sorry rather than my_friendly_aborting 773618334Speter if we can't figure out what to do. 773718334Speter (dump_type*): Ditto. 773818334Speter 773918334Speter * typeck2.c (build_m_component_ref): 'component' is an expr, not 774018334Speter a decl. Also move the IS_AGGR_TYPE check after the stripping of 774118334Speter REFERENCE_TYPE. 774218334Speter 774318334SpeterFri Mar 4 04:46:05 1994 Mike Stump <mrs@cygnus.com> 774418334Speter 774518334Speter * call.c (build_method_call): Handle b->setHandler(A::handlerFn) 774618334Speter so that it is like b->setHandler(&A::handlerFn). Cures an `invalid 774718334Speter lvalue in unary `&''. 774818334Speter 774918334SpeterThu Mar 3 12:38:15 1994 Jason Merrill (jason@deneb.cygnus.com) 775018334Speter 775118334Speter * parse.y: Add precedence specification for START_DECLARATOR. 775218334Speter (type_quals): Move before primary. 775318334Speter (typename): Move before typed_declspecs, add 'typespec absdcl1' rule. 775418334Speter 775518334Speter * decl2.c (grokoptypename): Lose. 775618334Speter 775718334Speter * decl.c (grokdeclarator): Parse TYPE_EXPRs in the initial scan, 775818334Speter rather than waiting until later. 775918334Speter 776018334SpeterWed Mar 2 14:12:23 1994 Jason Merrill (jason@deneb.cygnus.com) 776118334Speter 776218334Speter * parse.y (unary_expr): Use 'typename' in 'new' rules, rather 776318334Speter than expanding it inline. 776418334Speter (typename): Expand empty option of (former) absdcl inline. 776518334Speter (abs_or_notype_decl): Ditto. 776618334Speter (absdcl): Lose empty rule. 776718334Speter (conversion_declarator): New nonterminal for 'typename' of 'operator 776818334Speter typename'. 776918334Speter (operator_name): Use it instead of absdcl. 777018334Speter 777118334Speter * parse.y: Add precedence declarations for SCOPED_TYPENAME, 777218334Speter TYPEOF, and SIGOF. 777318334Speter (typed_declspecs): Accept typed_typespecs, rather than typespec 777418334Speter directly. Add rules with reserved_typespecquals. 777518334Speter (reserved_declspecs): Don't accept typespecqual_reserved at the 777618334Speter beginning of the list. The typed_declspecs rule will deal with this 777718334Speter omission. 777818334Speter (declmods): Accept nonempty_type_quals, rather than TYPE_QUAL 777918334Speter directly. 778018334Speter 778118334Speter * parse.y (direct_notype_declarator, 778218334Speter direct_after_type_declarator, direct_abstract_declarator): Split up 778318334Speter the declarator1 nonterminals to match the draft standard and avoid 778418334Speter ambiguities. 778518334Speter (new_type_id, new_declarator, direct_new_declarator, 778618334Speter new_member_declarator): New nonterminals to implement the subset of 778718334Speter 'typename' allowed in new expressions. 778818334Speter (unary_expr): Use new_type_id instead of typename. 778918334Speter (after_type_declarator1, absdcl1): Fix semantics of member pointers. 779018334Speter (abs_member_declarator, after_type_member_declarator): Lose. 779118334Speter 779218334Speter * parse.y (absdcl1): Don't require parens around 779318334Speter abs_member_declarator. 779418334Speter (abs_member_declarator): Lose see_typename from rules. 779518334Speter (after_type_member_declarator): Ditto. 779618334Speter 779718334Speter * tree.c (get_identifier_list): New function, containing code 779818334Speter previously duplicated in get_decl_list and list_hash_lookup_or_cons. 779918334Speter (get_decl_list): Use it. 780018334Speter (list_hash_lookup_or_cons): Ditto. 780118334Speter 780218334Speter * parse.y (typed_declspecs, declmods): It's not necessary to hash 780318334Speter the declspecs on class_obstack, so don't. This way typed_typespecs 780418334Speter can reduce to typed_declspecs. 780518334Speter 780618334SpeterWed Mar 2 14:29:18 1994 Jason Merrill (jason@cygnus.com) 780718334Speter 780818334Speter * cvt.c (build_up_reference): If we aren't checking visibility, 780918334Speter also allow base->derived conversions. 781018334Speter 781118334SpeterMon Feb 28 15:14:29 1994 Per Bothner (bothner@kalessin.cygnus.com) 781218334Speter 781318334Speter * typeck.c (build_c_cast): Remove bogus hack when converting 781418334Speter to a reference type. 781518334Speter 781618334Speter * cp-tree.h (lang_decl::vbase_init_list, DECL_VBASE_INIT_LIST): 781718334Speter Removed, not used. 781818334Speter (lang_stype::methods, lang_decl::next_method): New fields. 781918334Speter (CLASSTYPE_METHODS, DECL_NEXT_METHOD): New macros. 782018334Speter * decl.c (duplicate_decls): Preserve DECL_NEXT_METHOD. 782118334Speter 782218334Speter * cp-tree.h, decl2.c (flag_vtable_hack): New flag. 782318334Speter * decl2.c (finish_vtable_vardecl): If flag_vtable_hack, 782418334Speter and !CLASSTYPE_INTERFACE_KNOWN, try to use the presence of 782518334Speter a non-inline virtual function to control emitting of vtables. 782618334Speter * class.c (finish_struct): Build CLASSTYPE_METHODS list. 782718334Speter * search.c (build_vbase_vtables_init): Don't assemble_external 782818334Speter (yet) if flag_vtable_hack. 782918334Speter * class.c (build_vfn_ref): Ditto. 783018334Speter 783118334SpeterMon Feb 28 14:54:13 1994 Jason Merrill (jason@deneb.cygnus.com) 783218334Speter 783318334Speter * parse.y (component_decl): Don't include "typed_declspecs 783418334Speter declarator ';'" speedup, since it breaks enums. 783518334Speter 783618334SpeterFri Feb 25 15:43:44 1994 Per Bothner (bothner@kalessin.cygnus.com) 783718334Speter 783818334Speter * class.c (finish_struct): Minor optimization for building 783918334Speter fn_fields list. 784018334Speter 784118334SpeterFri Feb 25 15:23:42 1994 Jason Merrill (jason@deneb.cygnus.com) 784218334Speter 784318334Speter * decl.c (start_function): Fix detection of function overloading. 784418334Speter 784518334SpeterThu Feb 24 22:26:19 1994 Mike Stump <mrs@cygnus.com> 784618334Speter 784718334Speter * lex.c (check_newline): #pragma interface can take a string 784818334Speter argument, just like #pragma implementation. #pragma implementation 784918334Speter checks for garbage on the line, line #pragma interface does. Main 785018334Speter input files do not auto implement like named files, #pragma 785118334Speter implementation must be used explicitly. 785218334Speter 785318334SpeterThu Feb 24 17:09:01 1994 Jason Merrill (jason@deneb.cygnus.com) 785418334Speter 785518334Speter * parse.y (components): Handle list of one again. 785618334Speter (notype_components): Ditto. 785718334Speter (after_type_declarator1): Take maybe_raises out again. 785818334Speter 785918334Speter * gxxint.texi (Parser): Document additional r/r conflict. 786018334Speter 786118334SpeterWed Feb 23 14:42:55 1994 Jason Merrill (jason@deneb.cygnus.com) 786218334Speter 786318334Speter * gxxint.texi (Parser): Add node. 786418334Speter 786518334Speter * Makefile.in (stamp-parse): Update expected conflict count. 786618334Speter 786718334Speter * parse.y (various): Replace "declmods declarator" with "declmods 786818334Speter notype_declarator". The comment saying that "declmods declarator ';'" 786918334Speter corresponds to "int i;" was wrong; it corresponds to "const i;". 787018334Speter (component_decl): Add "typed_declspecs declarator ';'" rule; this 787118334Speter *does* correspond to "int i;". Change "declmods components" to 787218334Speter "declmods notype_components". 787318334Speter (components): Don't deal with a list of one anymore. 787418334Speter (notype_components): New nonterminal, corresponds to notype_declarator. 787518334Speter ({after_,no}type_component_decl{,0}): More new nonterminals. 787618334Speter ({after_,no}type_declarator): Fold in START_DECLARATOR token. 787718334Speter Eliminates four reduce/reduce conflicts. 787818334Speter 787918334Speter (expr): Depend on nontrivial_exprlist instead of nonnull_exprlist. 788018334Speter (nontrivial_exprlist): New nonterminal: A list of at least two 788118334Speter expr_no_commas's. 788218334Speter (nonnull_exprlist): Depend on nontrival_exprlist. 788318334Speter Eliminates four reduce/reduce conflicts. 788418334Speter 788518334Speter (named_class_head): Move intermediate code block into separate 788618334Speter nonterminal so that we can stick %prec EMPTY on it. 788718334Speter 788818334Speter Add more %prec EMPTY's to eliminate remaining shift/reduce 788918334Speter conflicts. 789018334Speter 789118334Speter (after_type_declarator): Add maybe_raises to fndecl rules. 789218334Speter (after_type_declarator_no_typename): Remove. 789318334Speter For correctness. 789418334Speter 789518334Speter Document remaining reduce/reduce conflicts. 789618334Speter 789718334SpeterTue Feb 22 12:10:32 1994 Jason Merrill (jason@deneb.cygnus.com) 789818334Speter 789918334Speter * search.c (get_base_distance): Only bash BINFO_INHERITANCE_CHAIN 790018334Speter (TYPE_BINFO (type)) if we care about the path. 790118334Speter 790218334Speter * tree.c (lvalue_p): A COND_EXPR is an lvalue if both of the 790318334Speter options are. 790418334Speter 790518334SpeterMon Feb 21 19:59:40 1994 Mike Stump <mrs@cygnus.com> 790618334Speter 790718334Speter * Makefile.in (mostlyclean): lex.c is a source file, don't 790818334Speter remove. 790918334Speter 791018334SpeterSat Feb 19 01:27:14 1994 Jason Merrill (jason@deneb.cygnus.com) 791118334Speter 791218334Speter * parse.y: Eliminate 20 shift/reduce conflicts. 791318334Speter 791418334SpeterFri Feb 18 11:49:42 1994 Jason Merrill (jason@deneb.cygnus.com) 791518334Speter 791618334Speter * pt.c (type_unification): Add subr argument; if set, it means 791718334Speter that we are calling ourselves recursively, so a partial match is OK. 791818334Speter (unify): Support pointers to methods and functions. 791918334Speter (tsubst): Support method pointers. 792018334Speter * decl.c (build_ptrmemfunc_type): No longer static, so that 792118334Speter tsubst can get at it. 792218334Speter 792318334Speter * init.c (is_aggr_typedef): Pretend template type parms are 792418334Speter aggregates. 792518334Speter * decl2.c (build_push_scope): If cname refers to a template type 792618334Speter parm, just grin and nod. 792718334Speter 792818334Speter * call.c (build_overload_call_real): Pass subr argument to 792918334Speter type_unification. 793018334Speter * pt.c (do_function_instantiation): Ditto. 793118334Speter * class.c (instantiate_type): Ditto. 793218334Speter 793318334Speter * search.c (get_base_distance): If BINFO is a binfo, use it and 793418334Speter don't mess with its BINFO_INHERITANCE_CHAIN. 793518334Speter 793618334Speter * cvt.c (convert_to_reference): Fix temporary generation. 793718334Speter If ambiguous, return error_mark_node. 793818334Speter 793918334Speter * init.c (build_new): Put back some necessary code. 794018334Speter 794118334SpeterThu Feb 17 15:39:47 1994 Jason Merrill (jason@deneb.cygnus.com) 794218334Speter 794318334Speter * init.c (build_new): Deal with array types properly. 794418334Speter 794518334Speter * search.c (get_binfo): Become a shell for get_base_distance. 794618334Speter (get_binfo_recursive): Lose. 794718334Speter (get_base_distance_recursive): Find the path to the via_virtual base 794818334Speter that provides the most access. 794918334Speter (get_base_distance): Ditto. 795018334Speter 795118334Speter * parse.y (explicit_instantiation): Syntax is 'template class 795218334Speter A<int>', not 'template A<int>'. 795318334Speter 795418334Speter * typeck.c (convert_for_initialization): Remove bogus warning. 795518334Speter 795618334Speter * parse.y (datadef): Revert patch of Oct 27. 795718334Speter 795818334SpeterThu Feb 17 15:12:29 1994 Per Bothner (bothner@kalessin.cygnus.com) 795918334Speter 796018334Speter * class.c (build_vfn_ref): Cast delta field to ptrdiff_type_node, 796118334Speter rather than integer_type_node. Does wonders for the Alpha. 796218334Speter 796318334SpeterThu Feb 17 13:36:21 1994 Jason Merrill (jason@deneb.cygnus.com) 796418334Speter 796518334Speter * decl.c (build_ptrmemfunc_type): Make sure that the pmf type 796618334Speter goes onto the same obstack as its target type. 796718334Speter 796818334SpeterWed Feb 16 00:34:46 1994 Jason Merrill (jason@deneb.cygnus.com) 796918334Speter 797018334Speter * cvt.c (convert_to_reference): If converting via constructor 797118334Speter on local level, go back to build_cplus_new approach. 797218334Speter 797318334Speter * tree.c (build_cplus_new): If with_cleanup_p, set cleanup slot 797418334Speter to error_mark_node to prevent expand_expr from building a cleanup 797518334Speter for this variable. 797618334Speter 797718334Speter * lex.c (default_assign_ref_body): Return *this from the memcpy 797818334Speter version, too. 797918334Speter 798018334Speter * decl.c (grok_reference_init): Just return if called with 798118334Speter error_mark_node, don't worry about initializing non-const reference 798218334Speter with temporary. 798318334Speter 798418334Speter * cvt.c (convert_to_reference): Do the right thing for 798518334Speter non-aggregate reference conversions, pedwarn when generating a 798618334Speter non-const reference to a temporary. 798718334Speter 798818334Speter * class.c (finish_struct): TYPE_HAS_COMPLEX_{INIT,ASSIGN}_REF and 798918334Speter TYPE_NEEDS_CONSTRUCTING all depend on TYPE_USES_VIRTUAL_BASECLASSES 799018334Speter again. 799118334Speter 799218334SpeterTue Feb 15 19:47:19 1994 Jason Merrill (jason@deneb.cygnus.com) 799318334Speter 799418334Speter * decl.c (grok_reference_init): Pawn off a lot of the work on 799518334Speter convert_to_reference. Generally do the right thing. 799618334Speter 799718334Speter * cvt.c (convert_to_reference): Conform to the initial comment; 799818334Speter i.e. don't create temps if decl != error_mark_node. Handle 799918334Speter cleanups better for temps that do get created. Don't pretend 800018334Speter that we can use an 'A' to initialize a 'const double &' just by 800118334Speter tacking on a NOP_EXPR. Support LOOKUP_SPECULATIVELY. 800218334Speter 800318334Speter * call.c (build_method_call): Set TREE_HAS_CONSTRUCTOR on 800418334Speter constructor calls. 800518334Speter 800618334SpeterMon Feb 14 14:50:17 1994 Jason Merrill (jason@deneb.cygnus.com) 800718334Speter 800818334Speter * decl.c (grok_reference_init): Make a temporary for initializing 800918334Speter const reference from constant expression. 801018334Speter 801118334SpeterMon Feb 14 11:31:31 1994 Per Bothner (bothner@kalessin.cygnus.com) 801218334Speter 801318334Speter * cp-tree.h, decl.c (set_identifier_local_value): Deleted function. 801418334Speter * decl.c (pushdecl): Define decl in correct binding_level 801518334Speter (which isn't always the inner_binding_level). 801618334Speter 801718334Speter * cvt.c (build_up_reference): Don't ever call expand_aggr_init. 801818334Speter It's ugly, and I don't think it's the right thing to do. 801918334Speter 802018334Speter * cp-tree.h, class.c, decl.c, decl2.c, sp/search.c: 802118334Speter Remove NEW_CLASS_SCOPING, assuming it is always 1. 802218334Speter * decl.c (pop_decl_level): Removed; manually inlined. 802318334Speter 802418334SpeterSun Feb 13 19:04:56 1994 Jason Merrill (jason@deneb.cygnus.com) 802518334Speter 802618334Speter * class.h (candidate): Add basetypes field. 802718334Speter 802818334Speter * call.c (build_method_call): Do access checking after choosing a 802918334Speter function, not before. 803018334Speter 803118334Speter * Makefile.in (cvt.o, call.o, method.o): Depend on class.h. 803218334Speter (mostlyclean): Remove ../cc1plus. 803318334Speter 803418334SpeterFri Feb 11 11:52:26 1994 Jason Merrill (jason@deneb.cygnus.com) 803518334Speter 803618334Speter * class.c (finish_struct): Don't allow adjusting access to a field 803718334Speter of a base class if a local field has the same name. 803818334Speter 803918334Speter * error.c (dump_type_prefix): Output basetype for METHOD_TYPEs. 804018334Speter 804118334Speterhu Jan 13 17:55:51 EST 1994 Gnanasekaran Swaminathan (gs4t@virginia.edu) 804218334Speter 804318334Speter * cp-tree.h (DESTRUCTOR_NAME_P): do not confuse AUTO_TEMP names 804418334Speter with destructor names when either NO_DOLLAR_IN_LABEL or 804518334Speter NO_DOT_IN_LABEL are not defined. 804618334Speter 804718334Speter Now `template <class T, T f(T&), const T*> class A {...}' works. 804818334Speter 804918334Speter * pt.c (grok_template_type): substitute template parm types 805018334Speter with actual types in complex type as well. 805118334Speter (coerce_template_parms): update the grok_template_type () 805218334Speter function call. 805318334Speter 805418334Speter * pt.c (tsubst): Traverse method list using DECL_CHAIN. 805518334Speter 805618334Speter * decl.c (grok_op_properties): Allow operator++/-- to have 805718334Speter default arguments. 805818334Speter 805918334Speter * typeck2.c (store_init_value): Don't abort when called to 806018334Speter initialize a type that needs constructing with a CONSTRUCTOR. 806118334Speter 806218334Speter * init.c (expand_aggr_init_1, CONSTRUCTOR case): If 806318334Speter store_init_value fails, build and expand an INIT_EXPR. If 806418334Speter store_init_value succeeds, call expand_decl_init. 806518334Speter 806618334SpeterFri Feb 11 02:49:23 1994 Mike Stump <mrs@cygnus.com> 806718334Speter 806818334Speter * class.c (build_vbase_path): Use complete_type_p instead of 806918334Speter resolves_to_fixed_type_p to determine if the virtual bases are in 807018334Speter their right place for the type of expr. Cures problem of thinking a 807118334Speter virtual base class is one place, when it is in fact someplace else. 807218334Speter 807318334SpeterFri Feb 11 00:26:46 1994 Mike Stump <mrs@cygnus.com> 807418334Speter 807518334Speter * init.c (resolve_offset_ref): Make sure we first convert to 807618334Speter intermediate type, if given, when dealing with members off `this'. 807718334Speter Solves an incorrrect `type `foo' is not a base type for type 807818334Speter `multiple'' when it is infact, a base type. 807918334Speter 808018334SpeterThu Feb 10 21:49:35 1994 Mike Stump <mrs@cygnus.com> 808118334Speter 808218334Speter * class.c (modify_other_vtable_entries): Use get_binfo, instead 808318334Speter of binfo_value. Solves problem with compiler giving a `base class 808418334Speter `B' ambiguous in binfo_value (compiler error)' on complex MI 808518334Speter herarchies, when a virtual function is first defied in a virtual 808618334Speter base class. 808718334Speter 808818334SpeterThu Feb 10 17:19:32 1994 Mike Stump <mrs@cygnus.com> 808918334Speter 809018334Speter * class.c (build_vbase_path): Don't complain about ambiguous 809118334Speter intermediate conversion when converting down to a virtual base 809218334Speter class, even if they might seem to be ambiguous. 809318334Speter 809418334SpeterThu Feb 10 12:18:26 1994 Jason Merrill (jason@deneb.cygnus.com) 809518334Speter 809618334Speter * typeck2.c (build_functional_cast): #if 0 out constructor 809718334Speter inheritance code, improve error messages. 809818334Speter 809918334Speter * class.c (finish_base_struct): Complain about base with only 810018334Speter non-default constructors in derived class with no constructors. 810118334Speter 810218334Speter * decl.c (grokdeclarator): Fix detection of virtual new/delete. 810318334Speter 810418334SpeterWed Feb 9 22:02:32 1994 Mike Stump <mrs@cygnus.com> 810518334Speter 810618334Speter * search.c (build_mi_virtuals, add_mi_virtuals, 810718334Speter report_ambiguous_mi_virtuals): Removed unneeded code. 810818334Speter * class.c (finish_struct_bits): Ditto. 810918334Speter 811018334SpeterWed Feb 9 11:27:17 1994 Jason Merrill (jason@deneb.cygnus.com) 811118334Speter 811218334Speter * pt.c (end_template_instantiation): Push decl before 811318334Speter pop_from_top_level. 811418334Speter 811518334Speter * typeck2.c (build_m_component_ref): Make sure datum is of 811618334Speter aggregate type. 811718334Speter 811818334Speter * init.c (get_type_value): New function, returns 811918334Speter IDENTIFIER_TYPE_VALUE or IDENTIFIER_CLASS_TYPE_VALUE or NULL_TREE. 812018334Speter 812118334Speter * call.c (build_method_call): Don't die on call to destructor for 812218334Speter non-type. 812318334Speter 812418334Speter * decl.c (grokdeclarator): Complain about virtual op new and op 812518334Speter delete, make static virtuals unvirtual instead of unstatic. 812618334Speter 812718334Speter * typeck.c (build_c_cast): Also call default_conversion on 812818334Speter methods. 812918334Speter 813018334Speter * decl.c (grokdeclarator): Don't complain about anonymous 813118334Speter bitfields. 813218334Speter 813318334Speter * parse.y (simple_stmt, for loops): Move the continue point after 813418334Speter the cleanups. 813518334Speter 813618334Speter * class.c (finish_struct): Fix setting of 813718334Speter TYPE_HAS_COMPLEX_INIT_REF. 813818334Speter 813918334SpeterTue Feb 8 13:21:40 1994 Jason Merrill (jason@deneb.cygnus.com) 814018334Speter 814118334Speter * init.c (build_new): Deal with `new double (1)'. 814218334Speter 814318334Speter * class.c (finish_struct): TYPE_HAS_COMPLEX_*_REF are supersets of 814418334Speter TYPE_HAS_REAL_*_REF, but TYPE_HAS_COMPLEX_INIT_REF is independent of 814518334Speter TYPE_NEEDS_CONSTRUCTING. 814618334Speter 814718334Speter * decl.c (duplicate_decls): Propagate access decls. 814818334Speter 814918334Speter * typeck2.c (process_init_constructor): Accept empty_init_node 815018334Speter for initializing unions. 815118334Speter 815218334Speter * class.c, lex.c, cp-tree.h: Use 815318334Speter TYPE_HAS_COMPLEX_ASSIGN_REF where TYPE_HAS_REAL_ASSIGN_REF was used 815418334Speter before, use TYPE_HAS_COMPLEX_INIT_REF for TYPE_NEEDS_CONSTRUCTING in 815518334Speter some places. 815618334Speter 815718334Speter * decl.c (finish_decl): Don't complain about uninitialized const 815818334Speter if it was initialized before. 815918334Speter 816018334SpeterMon Feb 7 18:12:34 1994 Jason Merrill (jason@deneb.cygnus.com) 816118334Speter 816218334Speter * lex.c (default_assign_ref_body): Don't deal with vbases for 816318334Speter now. 816418334Speter 816518334Speter * decl.c (finish_decl): Fix reversed logic for objects and other 816618334Speter things that need to be constructed but have no initializer. 816718334Speter 816818334Speter * class.c (finish_struct): Don't set TYPE_HAS_* flags that are 816918334Speter set by grok_op_properties or finish_decl. 817018334Speter 817118334Speter * decl.c: Don't warn about extern redeclared inline unless 817218334Speter -Wextern-inline is given. 817318334Speter * decl2.c (lang_decode_option): Ditto. 817418334Speter * cp-tree.h: Ditto. 817518334Speter 817618334SpeterMon Feb 7 17:29:24 1994 Per Bothner (bothner@kalessin.cygnus.com) 817718334Speter 817818334Speter * decl.c (pushdecl_with_scope): Fix thinko. Add forward 817918334Speter declaration. 818018334Speter 818118334Speter * decl.c (pushdecl_with_scope): New function. 818218334Speter * decl.c (pushdecl_top_level): Use new function. 818318334Speter * decl.c (pushtag): Initialize newdecl. 818418334Speter * decl.c (pushtag): Push new type decl into correct scope. 818518334Speter 818618334SpeterMon Feb 7 14:42:03 1994 Jason Merrill (jason@deneb.cygnus.com) 818718334Speter 818818334Speter * call.c, cvt.c, init.c, search.c, cp-tree.h: 818918334Speter Eradicate LOOKUP_PROTECTED_OK. 819018334Speter 819118334SpeterMon Feb 7 13:57:19 1994 Per Bothner (bothner@kalessin.cygnus.com) 819218334Speter 819318334Speter * decl.c (pushtag, xref_tag), cp-tree.h: Add extra parameter 819418334Speter 'globalize' to signify implicit declarations. 819518334Speter * decl.c (globalize_nested_type, maybe_globalize_type): Removed. 819618334Speter * decl.c (set_identifier_type_value_with_scope): New function. 819718334Speter * decl.c (set_identifier_local_value): Simplify. 819818334Speter * spew.c (yylex, do_addr): Modify to return a _DEFN if a 819918334Speter forward declaration (followed by ';' and not preceded by 'friend'). 820018334Speter * class.c, decl.c, except.c, init.c, parse.y, 820118334Speter pt.c, search.c: Add new argument to calls to xref_tag and 820218334Speter pushtag. 820318334Speter 820418334SpeterMon Feb 7 00:22:59 1994 Jason Merrill (jason@deneb.cygnus.com) 820518334Speter 820618334Speter * cp-tree.h (ACCESSIBLY_UNIQUELY_DERIVED_P): New macro, means what 820718334Speter ACCESSIBLY_DERIVED_FROM_P meant before. 820818334Speter (ACCESSIBLY_DERIVED_FROM_P): Now disregards ambiguity. 820918334Speter 821018334Speter * cvt.c (build_up_reference): Call get_binfo with PROTECT == 1. 821118334Speter 821218334Speter * search.c (get_base_distance_recursive): Members and friends of 821318334Speter a class X can implicitly convert an X* to a pointer to a private or 821418334Speter protected immediate base class of X. 821518334Speter (get_binfo_recursive): Ditto. 821618334Speter (get_base_distance): Ignore ambiguity if PROTECT < 0. 821718334Speter (get_binfo): Lose multiple values of PROTECT. 821818334Speter (compute_access): Protected is OK if the start of the 821918334Speter search is an accessible base class of current_class_type. 822018334Speter 822118334Speter * method.c (build_opfncall): Do check access on operator new here. 822218334Speter 822318334Speter * decl.c (finish_function): Don't check access on operator new 822418334Speter here. 822518334Speter 822618334SpeterSun Feb 6 14:06:58 1994 Jason Merrill (jason@deneb.cygnus.com) 822718334Speter 822818334Speter * decl.c (xref_tag): The base of a derived struct is NOT always 822918334Speter public. Duh. 823018334Speter 823118334Speter * pt.c (do_explicit_instantiation): New function, called from 823218334Speter parser to do explicit function instantiation. 823318334Speter (type_unification): Allow the args list to be terminated with 823418334Speter void_list_node. 823518334Speter (do_pending_expansions): Look at i->interface for non-member 823618334Speter templates. 823718334Speter 823818334Speter * parse.y (datadef): Move explicit_instantiation here. 823918334Speter (structsp): From here. 824018334Speter (datadef): Complain about `int;'. 824118334Speter 824218334SpeterSun Feb 6 12:33:18 1994 Per Bothner (bothner@kalessin.cygnus.com) 824318334Speter 824418334Speter * pt.c (end_template_instantiation), cp-tree.h: Remove unused 824518334Speter second parameter, and simplify first from a TREE_LIST where 824618334Speter we only care about its TREE_VALUE to just the value (an IDENTIFIER). 824718334Speter * pt.c (instantiate_member_templates): Simplify argument list 824818334Speter from a TREE_LIST to just an IDENTIFIER. 824918334Speter * lex.c (yyprint): PRE_PARSED_CLASS_DECL is now just an IDENTIFIER. 825018334Speter * parse.y (template_instantiate_once): Simplify accordingly. 825118334Speter * decl.c (inner_binding_level): New. Use various places to 825218334Speter simplify. 825318334Speter 825418334SpeterSun Feb 6 02:49:37 1994 Jason Merrill (jason@deneb.cygnus.com) 825518334Speter 825618334Speter * typeck2.c (build_functional_cast): int() -> int(0). 825718334Speter 825818334SpeterSat Feb 5 00:53:21 1994 Jason Merrill (jason@deneb.cygnus.com) 825918334Speter 826018334Speter * class.c (finish_struct): Don't do a bitwise copy for op= if the 826118334Speter class has a virtual function table. 826218334Speter 826318334Speter * typeck.c (convert_for_initialization): Restore warnings about 826418334Speter not using defined op=. Should really be my_friendly_aborts, I 826518334Speter s'pose. 826618334Speter 826718334SpeterFri Feb 4 14:21:00 1994 Jason Merrill (jason@deneb.cygnus.com) 826818334Speter 826918334Speter * class.c (finish_struct): Tidy up conditions for doing bitwise 827018334Speter copies of objects. 827118334Speter 827218334Speter * decl.c (build_default_constructor): #if 0 out. 827318334Speter 827418334Speter * *: Eradicate TYPE_GETS_{ASSIGNMENT,ASSIGN_REF,CONST_ASSIGN_REF, 827518334Speter CONST_INIT_REF}, TYPE_HAS_REAL_CONSTRUCTOR. 827618334Speter 827718334Speter * decl.c (grokdeclarator): Don't return void_type_node for 827818334Speter friends being defined here. 827918334Speter 828018334Speter * init.c (perform_member_init): Only do the init if it's useful. 828118334Speter 828218334Speter * lex.c (default_copy_constructor_body): If we don't need to do 828318334Speter memberwise init, just call __builtin_memcpy. 828418334Speter (default_assign_ref_body): Ditto. 828518334Speter 828618334Speter * decl.c (grokdeclarator): If friendp && virtualp, friendp = 0. 828718334Speter 828818334SpeterFri Feb 4 13:02:56 1994 Mike Stump <mrs@cygnus.com> 828918334Speter 829018334Speter * lex.c (reinit_parse_for_method, cons_up_default_function): 829118334Speter Don't give warn_if_unknown_interface warning when it came from a 829218334Speter system header file. 829318334Speter * pt.c (end_template_decl, instantiate_template): Ditto. 829418334Speter * decl.c (start_decl): Ditto. 829518334Speter 829618334SpeterFri Feb 4 00:41:21 1994 Jason Merrill (jason@deneb.cygnus.com) 829718334Speter 829818334Speter * decl.c (grokdeclarator): Don't try to set TYPE_WAS_ANONYMOUS on 829918334Speter enums. 830018334Speter 830118334Speter * decl2.c (constructor_name_full): Use IS_AGGR_TYPE_CODE instead of 830218334Speter IS_AGGR_TYPE, since we don't know it's a type. 830318334Speter 830418334SpeterThu Feb 3 11:36:46 1994 Jason Merrill (jason@deneb.cygnus.com) 830518334Speter 830618334Speter * decl.c (grokdeclarator): Don't complain about anonymous unions. 830718334Speter 830818334Speter * cp-tree.h (TYPE_WAS_ANONYMOUS): This struct was originally 830918334Speter anonymous, but had a name given to it by a typedef. 831018334Speter 831118334Speter * decl.c (grokdeclarator): When renaming an anonymous struct, set 831218334Speter TYPE_WAS_ANONYMOUS. 831318334Speter 831418334Speter * decl2.c (constructor_name_full): Use TYPE_WAS_ANONYMOUS. 831518334Speter 831618334Speter * cp-tree.h (DECL_UNDEFINED_FRIENDS): #if 0 out. 831718334Speter 831818334Speter * init.c (xref_friend): Don't set up DECL_UNDEFINED_FRIENDS. 831918334Speter (embrace_waiting_friends): Don't use DECL_UNDEFINED_FRIENDS. 832018334Speter 832118334Speter * decl.c (grokdeclarator): Set TYPE_NESTED_NAME properly on nested 832218334Speter anonymous structs that get typedef'd. 832318334Speter 832418334Speter * decl.c (grokdeclarator): Always return void_type_node for 832518334Speter friends. 832618334Speter 832718334Speter * error.c (dump_function_decl): Don't use DECL_CLASS_CONTEXT for 832818334Speter friends. 832918334Speter (dump_function_decl): Don't print out default args for 833018334Speter a function used in an expression. 833118334Speter 833218334Speter * decl.c (grokdeclarator): Give error on abstract declarator used 833318334Speter in an invalid context (i.e. `void (*)();'). 833418334Speter 833518334Speter * error.c (cp_line_of): Support _TYPE nodes. 833618334Speter (cp_file_of): Ditto. 833718334Speter 833818334Speter * cvt.c (build_up_reference): Don't abort if passed a SAVE_EXPR; 833918334Speter it can happen for the RHS of an assignment stmt where the LHS is 834018334Speter a COND_EXPR. 834118334Speter 834218334Speter * init.c (expand_aggr_init_1): Deal with bracketed initializer 834318334Speter lists properly. 834418334Speter 834518334Speter * class.c (finish_struct): Deal with enumerators and typedefs 834618334Speter again. 834718334Speter 834818334SpeterWed Feb 2 11:30:22 1994 Jason Merrill (jason@deneb.cygnus.com) 834918334Speter 835018334Speter * class.c (finish_struct): Tidy up loop over fields. 835118334Speter 835218334Speter * errfn.c (cp_thing): Don't advance twice after a format. 835318334Speter 835418334Speter * class.c (finish_struct): Complain about needing a constructor 835518334Speter if a member has only non-default constructors, and don't try to 835618334Speter generate a default constructor. 835718334Speter 835818334Speter * decl.c (finish_decl): Also do the constructor thing if 835918334Speter TYPE_NEEDS_CONSTRUCTING is set (for arrays). 836018334Speter 836118334Speter * search.c (unuse_fields): New function: mark all fields in this 836218334Speter type unused. 836318334Speter (dfs_unuse_fields): Helper function. 836418334Speter 836518334Speter * class.c (pushclass): If the new class is the same as the old 836618334Speter class, still unuse the fields. 836718334Speter (unuse_fields): Move to search.c. 836818334Speter 836918334Speter * decl.c (grok_op_properties): Add friendp argument. 837018334Speter (grokfndecl): Pass it. 837118334Speter (start_method): Ditto. 837218334Speter 837318334Speter * decl2.c (delete_sanity): Add use_global_delete parameter to catch 837418334Speter ::delete calls. 837518334Speter 837618334Speter * parse.y (unary_expr): Pass new parameter to delete_sanity. 837718334Speter 837818334Speter * lex.c (default_copy_constructor_body): Don't choke if the union 837918334Speter has no fields. 838018334Speter (default_assign_ref_body): Ditto. 838118334Speter 838218334Speter * call.c (compute_conversion_costs_ansi): Do the right thing for 838318334Speter ellipsis matches. 838418334Speter 838518334Speter * decl.c (push_to_top_level): Optimize. 838618334Speter 838718334Speter * decl.c (start_function): Look for the lexical scope of a friend 838818334Speter in DECL_CLASS_CONTEXT. 838918334Speter 839018334Speter * init.c (do_friend): Set DECL_CLASS_CONTEXT on global friends. 839118334Speter 839218334SpeterTue Feb 1 15:59:24 1994 Jason Merrill (jason@deneb.cygnus.com) 839318334Speter 839418334Speter * cp-tree.h (TREE_GETS_PLACED_NEW): New macro. 839518334Speter 839618334Speter * init.c (init_init_processing): Don't assign BIN/BID to the 839718334Speter IDENTIFIER_GLOBAL_VALUEs of their respective operators. 839818334Speter (build_new): Check TREE_GETS_PLACED_NEW. 839918334Speter 840018334Speter * decl.c (grok_op_properties): Don't set TREE_GETS_NEW for a decl of 840118334Speter op new with placement, set TREE_GETS_PLACED_NEW. 840218334Speter 840318334Speter * cp-tree.h (ANON_UNION_P): New macro. Applies to decls. 840418334Speter 840518334Speter * class.c (finish_struct): Don't treat anonymous unions like 840618334Speter other aggregate members. Do synthesize methods for unions without 840718334Speter a name, since they may or may not be "anonymous unions". 840818334Speter 840918334Speter * decl2.c (grok_x_components): Wipe out memory of synthesized methods 841018334Speter in anonymous unions. 841118334Speter 841218334Speter * lex.c (default_copy_constructor_body): Support unions. 841318334Speter (default_assign_ref_body): Ditto. 841418334Speter 841518334SpeterMon Jan 31 12:07:30 1994 Jason Merrill (jason@deneb.cygnus.com) 841618334Speter 841718334Speter * cp-tree.h: Fix documentation of LOOKUP_GLOBAL, add prototypes. 841818334Speter 841918334Speter * error.c (args_as_string): New function (%A), like type_as_string 842018334Speter except NULL_TREE -> "..." 842118334Speter 842218334Speter * call.c (build_overload_call_real): Fix for new overloading. 842318334Speter 842418334Speter * decl.c (grok_op_properties): Set all of the TYPE_OVERLOADS_* flags 842518334Speter here. 842618334Speter 842718334Speter * parse.y (operator_name): Instead of here. 842818334Speter 842918334Speter * typeck2.c (build_functional_cast): Treat a TREE_LIST as a list 843018334Speter of functions. 843118334Speter 843218334Speter * call.c (build_overload_call_real): Support LOOKUP_SPECULATIVELY. 843318334Speter 843418334Speter * method.c (build_opfncall): Don't need to massage return value 843518334Speter any more, call build_overload_call with all flags. 843618334Speter 843718334Speter * typeck.c (build_x_binary_op): Put back speculative call to 843818334Speter build_opfncall. 843918334Speter (build_x_unary_op): Ditto. 844018334Speter (build_x_conditional_expr): Ditto. 844118334Speter 844218334SpeterMon Jan 31 10:00:30 1994 Mike Stump <mrs@cygnus.com> 844318334Speter 844418334Speter * cvt.c (build_type_conversion_1): Change call to pedwarn into 844518334Speter warning, and conditionalize upon warn_cast_qual. 844618334Speter 844718334SpeterFri Jan 28 11:48:15 1994 Jason Merrill (jason@deneb.cygnus.com) 844818334Speter 844918334Speter * search.c (lookup_field): If xbasetype is a binfo, copy it to 845018334Speter avoid clobbering its inheritance info. 845118334Speter 845218334Speter * call.c (build_method_call): Don't overwrite basetype_path with 845318334Speter TYPE_BINFO (inst_ptr_basetype) if they have the same type. 845418334Speter 845518334Speter * search.c (compute_access): Fix handling of protected inheritance 845618334Speter and friendship with the enclosing class. 845718334Speter 845818334Speter * typeck2.c (store_init_value): Allow passing of TREE_CHAIN for 845918334Speter initialization of arbitrary variable. 846018334Speter 846118334Speter * typeck2.c (build_functional_cast): Only try calling a method if 846218334Speter one exists. 846318334Speter 846418334Speter * decl.c (grokdeclarator): Move handling of constructor syntax 846518334Speter initialization into first loop for generality. 846618334Speter (parmlist_is_random): Lose. 846718334Speter 846818334Speter * lex.c (cons_up_default_function): Set TREE_PARMLIST on arguments 846918334Speter to default function. 847018334Speter 847118334SpeterThu Jan 27 19:26:51 1994 Jason Merrill (jason@deneb.cygnus.com) 847218334Speter 847318334Speter * decl.c (grokparms): Abort if we get called with something we don't 847418334Speter expect. 847518334Speter 847618334SpeterThu Jan 27 17:37:25 1994 Mike Stump <mrs@cygnus.com> 847718334Speter 847818334Speter * call.c (build_overload_call_real): Change argument complain to 847918334Speter flags to match style of rest of code. Pass it down to 848018334Speter build_function_call_real as necessary. 848118334Speter * call.c (build_overload_call, build_overload_call_maybe): Change 848218334Speter argument complain to flags to match style of rest of code. 848318334Speter * cp-tree.h (build_function_call_real): Added fourth flags 848418334Speter argument. 848518334Speter * cvt.c (convert_to_reference): Only give warning messages, if 848618334Speter LOOKUP_COMPLAIN is set. 848718334Speter * typeck.c (build_x_function_call): Change simple complain 848818334Speter argument to build_overload_call_maybe and build_overload_call, to 848918334Speter LOOKUP_COMPLAIN to match style of rest of code. 849018334Speter * typeck2.c (build_functional_cast): Ditto. 849118334Speter * typeck.c (build_function_call_real): Add flags, so that we can 849218334Speter not complain, if we don't want to complain. Complain about 849318334Speter arguments, if we are complaining, otherwise don't. 849418334Speter * typeck.c (build_function_call, build_function_call_maybe): 849518334Speter Stick in flags argument. 849618334Speter * typeck.c (build_x_binary_op, build_x_unary_op, 849718334Speter build_x_conditional_expr, build_x_compound_expr): Follow style of 849818334Speter build_x_indirect_ref, as it is more correct and more common. 849918334Speter 850018334SpeterThu Jan 27 14:36:20 1994 Jason Merrill (jason@deneb.cygnus.com) 850118334Speter 850218334Speter * call.c (build_method_call): Don't check for being called with 850318334Speter a pointer. 850418334Speter 850518334Speter * decl2.c (finish_file): Don't play with DECL_CLASS_CONTEXT for the 850618334Speter static initializer function. 850718334Speter 850818334Speter * init.c (build_member_call): Use convert_force here, too. 850918334Speter 851018334Speter * search.c (compute_access): Only treat static members specially 851118334Speter if they are referenced directly. 851218334Speter 851318334SpeterWed Jan 26 18:28:14 1994 Jason Merrill (jason@deneb.cygnus.com) 851418334Speter 851518334Speter * gxxint.texi (Access Control): New node. 851618334Speter 851718334Speter * search.c (current_scope): New function; returns whichever of 851818334Speter current_class_type and current_function_decl is the most nested. 851918334Speter (compute_access): Total overhaul to make it clearer and more 852018334Speter correct. Don't use the cache for now; in the only situation where 852118334Speter it was used before, it gained nothing. This frees up three of the 852218334Speter DECL_LANG_FLAGs for possible other use! 852318334Speter 852418334Speter * cp-tree.h: #if 0 out DECL_PUBLIC & friends. 852518334Speter 852618334Speter * typeck.c (build_component_ref_1): Don't check DECL_PUBLIC. 852718334Speter 852818334Speter * call.c (build_method_call): Use convert_force to cast `this' -- 852918334Speter rely on the access checking for the method itself. 853018334Speter 853118334Speter * init.c (is_friend): Do the nesting thing, handle types. I am 853218334Speter my own friend. 853318334Speter (is_friend_type): Become a shell for is_friend. 853418334Speter (add_friend): Never stick in ctype. 853518334Speter Why are the friendship functions in init.c, anyway? 853618334Speter 853718334SpeterWed Jan 26 17:50:00 1994 Mike Stump <mrs@cygnus.com> 853818334Speter 853918334Speter * cvt.c (build_type_conversion_1): Don't conditionalize call to 854018334Speter pedwarn upon pedantic. 854118334Speter 854218334SpeterWed Jan 26 17:20:46 1994 Mike Stump <mrs@cygnus.com> 854318334Speter 854418334Speter * cvt.c (convert_to_reference): Add 8.4.3 checking so that one 854518334Speter gets a warning if one tries to initialize a non-const & from a 854618334Speter non-lvalue. 854718334Speter * cvt.c (convert_to_reference): Use %P format for argument 854818334Speter numbers in warnings. 854918334Speter 855018334SpeterWed Jan 26 14:35:06 1994 Mike Stump <mrs@cygnus.com> 855118334Speter 855218334Speter * init.c (build_delete): Follow style in call.c to construct the 855318334Speter virtual call to the desctructor, as that code is right. Fixes a 855418334Speter problem of the compiler saying a pointer conversion is ambiguous. 855518334Speter 855618334SpeterWed Jan 26 11:28:14 1994 Jason Merrill (jason@deneb.cygnus.com) 855718334Speter 855818334Speter * cp-tree.h (VTABLE_NAME_P): Change other occurrence of 855918334Speter VTABLE_NAME_FORMAT to VTABLE_NAME. 856018334Speter 856118334Speter * *: s/visibility/access/g 856218334Speter 856318334SpeterTue Jan 25 18:39:12 1994 Jason Merrill (jason@deneb.cygnus.com) 856418334Speter 856518334Speter * typeck.c (build_modify_expr): Don't smash references if INIT_EXPR. 856618334Speter 856718334SpeterTue Jan 25 13:54:29 1994 Mike Stump <mrs@cygnus.com> 856818334Speter 856918334Speter * init.c (build_delete): Back out Jan 17th & 18th pacthes, as 857018334Speter they break libg++. 857118334Speter 857218334SpeterTue Jan 25 13:11:45 1994 Jason Merrill (jason@deneb.cygnus.com) 857318334Speter 857418334Speter * decl.c (duplicate_decls): Fix pointer arithmetic. 857518334Speter 857618334SpeterMon Jan 24 15:50:06 1994 Chip Salzenberg (chip@fin.uucp) 857718334Speter 857818334Speter [ cp-* changes propagated from c-* changes in 940114 snapshot ] 857918334Speter * cp-parse.y (maybe_attribute): Allow multiple __attribute__ 858018334Speter clauses on a declaration. 858118334Speter 858218334SpeterMon Jan 24 17:06:23 1994 Jason Merrill (jason@deneb.cygnus.com) 858318334Speter 858418334Speter * class.c (finish_struct): Do synthesize methods for anon 858518334Speter structs, just not unions. 858618334Speter 858718334SpeterMon Jan 24 13:50:13 1994 Kung Hsu (kung@mexican.cygnus.com) 858818334Speter 858918334Speter * decl.c (xref_tag): handle anonymous nested type. 859018334Speter * decl.c (globalize_nested_type): add no globalize bit check. 859118334Speter * spew.c (hack_more_ids) : templated nested decl not push top 859218334Speter level. 859318334Speter 859418334Speter * parse.y : get rid of 'goto do_components'. It is much better 859518334Speter for debugging. 859618334Speter 859718334Speter * decl.c (is_anon_name): get rid of the function and use the 859818334Speter macro ANON_AGGRNAME_P. 859918334Speter * pt.c : ditto. 860018334Speter 860118334SpeterFri Jan 21 14:06:02 1994 Jason Merrill (jason@deneb.cygnus.com) 860218334Speter 860318334Speter * class.c (finish_struct): Don't synthesize any methods for 860418334Speter anonymous structs/unions. 860518334Speter 860618334Speter * typeck.c (build_modify_expr): Don't treat pmf's as class objects. 860718334Speter 860818334SpeterThu Jan 20 18:56:46 1994 Jason Merrill (jason@deneb.cygnus.com) 860918334Speter 861018334Speter * method.c (build_opfncall): Call build_indirect_ref on 861118334Speter synthesized instance for operator delete. 861218334Speter 861318334Speter * pt.c (type_unification): Don't abort if called with a list of 861418334Speter types in ARGS. 861518334Speter 861618334Speter * class.c (instantiate_type): Deal with function templates. 861718334Speter 861818334SpeterThu Jan 20 16:55:35 1994 Jim Wilson (wilson@sphagnum.cygnus.com) 861918334Speter 862018334Speter * Makefile.in (CC): Default to cc not gcc. 862118334Speter 862218334SpeterThu Jan 20 13:47:54 1994 Jason Merrill (jason@deneb.cygnus.com) 862318334Speter 862418334Speter * typeck.c (build_modify_expr): Call constructor if appropriate. 862518334Speter 862618334Speter * decl.c (push_to_top_level): Clear out class-level bindings cache. 862718334Speter 862818334SpeterWed Jan 19 13:51:22 1994 Jason Merrill (jason@deneb.cygnus.com) 862918334Speter 863018334Speter * call.c (resolve_scope_to_name): Work recursively (previously only 863118334Speter looked down one level). 863218334Speter 863318334Speter * lex.c (do_pending_inlines): If we're still dealing with the last 863418334Speter batch of inlines, don't start working on a new one. 863518334Speter 863618334Speter * Makefile.in (stamp-parse): Update conflict count. 863718334Speter (TAGS): Fix. 863818334Speter 863918334Speter * parse.y (explicit_instantiation): New rule; implements 864018334Speter 'template A<int>' syntax (though not 'template foo(int)' yet). 864118334Speter (structsp): Add explicit_instantiation. 864218334Speter 864318334SpeterTue Jan 18 13:53:05 1994 Jason Merrill (jason@deneb.cygnus.com) 864418334Speter 864518334Speter * class.c (finish_struct, etc.): Simplify decision to synthesize 864618334Speter a destructor. 864718334Speter 864818334Speter * call.c, class.c, cp-tree.h, decl.c, init.c, 864918334Speter ptree.c, search.c, typeck.c, typeck2.c: Nuke 865018334Speter TYPE_NEEDS_CONSTRUCTOR (change all calls to TYPE_NEEDS_CONSTRUCTING). 865118334Speter * init.c (expand_aggr_init_1): Don't try non-constructor methods 865218334Speter of initializing objects. 865318334Speter (build_new): Don't try other methods if the constructor lookup fails. 865418334Speter 865518334Speter * class.c (finish_base_struct): Set cant_have_default_ctor and 865618334Speter cant_synth_copy_ctor properly. 865718334Speter (finish_struct): Ditto. 865818334Speter 865918334SpeterMon Jan 17 13:58:18 1994 Jason Merrill (jason@deneb.cygnus.com) 866018334Speter 866118334Speter * typeck.c (build_modify_expr_1): #if 0 out again. 866218334Speter (build_modify_expr): #if 0 out memberwise init code again. 866318334Speter 866418334Speter * lex.c (default_copy_constructor_body): Be const-correct. 866518334Speter (default_assign_ref_body): Ditto. 866618334Speter 866718334Speter * init.c (perform_member_init): Use TYPE_HAS_CONSTRUCTOR to decide 866818334Speter whether or not to use it, rather than TYPE_NEEDS_CONSTRUCTING. 866918334Speter (expand_aggr_init): Disable silent conversion from initializer list 867018334Speter to list of args for a constructor. 867118334Speter 867218334Speter * class.c (base_info): Lose needs_default_ctor. 867318334Speter (finish_base_struct): Ditto. 867418334Speter (finish_struct): Ditto. 867518334Speter 867618334Speter * decl.c (init_decl_processing): Don't turn off flag_default_inline 867718334Speter just because flag_no_inline is on. 867818334Speter (finish_decl): Use TYPE_HAS_CONSTRUCTOR to decide to use 867918334Speter constructor. 868018334Speter 868118334Speter * class.c (finish_struct): Synthesize default ctor whenever 868218334Speter allowed. 868318334Speter 868418334Speter * Makefile.in (TAGS): Don't try to run etags on cp-parse.y. 868518334Speter 868618334SpeterSat Jan 15 18:34:33 1994 Mike Stump <mrs@cygnus.com> 868718334Speter 868818334Speter * Makefile.in, configure: Handle the C++ front-end in a 868918334Speter subdirectory. 869018334Speter * cp-*: Move C++ front-end to cp/*. 869118334Speter 869218334SpeterFri Jan 14 14:09:37 1994 Jason Merrill (jason@deneb.cygnus.com) 869318334Speter 869418334Speter * cp-typeck.c (build_function_call_real): Modify to match other 869518334Speter instances of taking the address of the function. 869618334Speter 869718334Speter * cp-class.c (finish_struct): Set TYPE_HAS_REAL_CONSTRUCTOR to 1 if 869818334Speter there are non-synthesized constructors. 869918334Speter Only set TYPE_NEEDS_CONSTRUCTOR if TYPE_HAS_REAL_CONSTRUCTOR. 870018334Speter Always generate copy constructor if possible. 870118334Speter 870218334Speter * cp-tree.h (lang_type): Add has_real_constructor bitfield. 870318334Speter (TYPE_HAS_REAL_CONSTRUCTOR): Define. 870418334Speter 870518334Speter * cp-lex.c (default_copy_constructor_body): Use init syntax 870618334Speter for all bases. 870718334Speter 870818334Speter * cp-type2.c (store_init_value): Only give error for initializer list 870918334Speter if TYPE_HAS_REAL_CONSTRUCTOR. 871018334Speter 871118334SpeterThu Jan 13 15:38:29 1994 Jason Merrill (jason@deneb.cygnus.com) 871218334Speter 871318334Speter * cp-tree.h (DECL_SYNTHESIZED): Add defn. 871418334Speter (lang_decl): Add synthesized bitfield to decl_flags. 871518334Speter 871618334Speter * cp-lex.c (cons_up_default_function): Use DECL_SYNTHESIZED to mark 871718334Speter artificial methods, rather than a line # of 0. 871818334Speter 871918334SpeterFri Jan 14 18:25:29 1994 Kung Hsu (kung@mexican.cygnus.com) 872018334Speter 872118334Speter * cp-decl (xref_tag): fix a bug in conflict type. 872218334Speter * cp-parse.y : add SCOPED_NAME for uninstantiated template nested 872318334Speter type reference. 872418334Speter * cp-spew.c (yylex) : generated SCOPED_NAME token. 872518334Speter * cp-lex.c (yyprint): handle SCOPED_NAME. 872618334Speter 872718334SpeterFri Jan 14 17:00:29 1994 Mike Stump <mrs@cygnus.com> 872818334Speter 872918334Speter * cp-decl.c (pushdecl): Revert patch from Jan 11 19:33:03, as it is 873018334Speter not right. 873118334Speter 873218334SpeterThu Jan 13 14:00:35 1994 Kung Hsu (kung@mexican.cygnus.com) 873318334Speter 873418334Speter * cp-decl2.c (grok_x_components): fix a bug that enum type does not 873518334Speter have type_flags. 873618334Speter 873718334SpeterThu Jan 13 11:39:34 1994 Mike Stump <mrs@cygnus.com> 873818334Speter 873918334Speter Ensure that all vtable pointers are initialized with all the right 874018334Speter values. 874118334Speter 874218334Speter * cp-class.c (is_normal): Changed to reflect new meaning of 874318334Speter CLASSTYPE_VFIELD_PARENT. 874418334Speter * cp-class.c (maybe_fixup_vptrs): Use of 874518334Speter CLASSTYPE_NEEDS_VIRTUAL_REINIT here is misguided. Use 874618334Speter BINFO_MODIFIED instead. 874718334Speter * cp-class.c (finish_struct): Changed to reflect new meaning of 874818334Speter CLASSTYPE_VFIELD_PARENT. 874918334Speter * cp-decl.c (get_binfo_from_vfield): Removed, unneeded now. 875018334Speter * cp-decl.c (finish_function): Use init_vtbl_ptrs, instead of open 875118334Speter coding it here. 875218334Speter * cp-init.c (init_vfields): Changed name to init_vtbl_ptrs, and 875318334Speter re-implement. 875418334Speter * cp-init.c (emit_base_init): Use new name init_vtbl_ptrs. 875518334Speter * cp-tree.h (vfield_parent): Changed to integer. 875618334Speter * cp-tree.h (CLASSTYPE_VFIELD_PARENT): Changed docs to reflect new 875718334Speter meaning. 875818334Speter * cp-tree.h (init_vtbl_ptrs): Added init_vtbl_ptrs. 875918334Speter 876018334SpeterWed Jan 12 18:24:16 1994 Kung Hsu (kung@mexican.cygnus.com) 876118334Speter 876218334Speter * cp-decl.c (xref_tag): re-implement globalize nested type. 876318334Speter * cp-decl2.c (grok_x_components): ditto. 876418334Speter * cp-parse.y: ditto. 876518334Speter * cp-tree.h (lang_type): add no_globalize bit in type_flags. 876618334Speter 876718334SpeterWed Jan 12 14:08:09 1994 Jason Merrill (jason@deneb.cygnus.com) 876818334Speter 876918334Speter * cp-decl.c (grokdeclarator): Don't set TREE_PUBLIC on friend 877018334Speter decls with a definition attached. 877118334Speter 877218334Speter * cp-typeck.c (build_modify_expr): Undo previous change in the case 877318334Speter of INIT_EXPRs. 877418334Speter 877518334SpeterTue Jan 11 19:33:03 1994 Jason Merrill (jason@deneb.cygnus.com) 877618334Speter 877718334Speter * cp-typeck.c (build_modify_expr): Replace code for generating 877818334Speter assignment semantics for classes with an error. 877918334Speter (build_modify_expr_1): #if 0 out. 878018334Speter 878118334Speter * cp-decl.c (pushdecl): Patch bogus design of pushdecl 878218334Speter behavior for overloaded functions (it doesn't push anything). 878318334Speter 878418334Speter * cp-class.c (finish_struct): When generating default op=, 878518334Speter set TYPE_HAS_ASSIGNMENT. 878618334Speter 878718334SpeterMon Jan 10 18:48:06 1994 Mike Stump <mrs@cygnus.com> 878818334Speter 878918334Speter * cp-cvt.c (convert): Make {double, clashing enum} -> enum 879018334Speter invalid. 879118334Speter * cp-typeck.c (convert_for_assignment): Simplify. 879218334Speter * cp-decl2.c (warn_enum_clash): Removed. 879318334Speter * invoke.texi (-Wenum-clash): Removed. 879418334Speter * toplev.c (-Wenum-clash): Removed. 879518334Speter 879618334SpeterMon Jan 10 17:48:37 1994 Kung Hsu (kung@mexican.cygnus.com) 879718334Speter 879818334Speter * cp-decl.c (finish_decl): fix incorrect popclass call. 879918334Speter 880018334Speter * cp-decl.c (is_anon_name): new function, check whether the name 880118334Speter is anonymous name generated by compiler. 880218334Speter * cp-decl.c (grokdeclarator): allow nested SCOPE_REF 880318334Speter * cp-spew.c (hack_more_ids): handle nested type in template. 880418334Speter * cp-parse.y : handle nested type reference in uninstantiated 880518334Speter template. 880618334Speter * cp-call.c (build_method_call): handle uninstantiated template 880718334Speter case. 880818334Speter * cp-pt.c (search_nested_type_in_tmpl): new function, search nested 880918334Speter type in template. 881018334Speter * cp-pt.c (lookup_nested_type_by_name): new function, lookup nested 881118334Speter type by name. 881218334Speter * cp-pt.c (tsubst): handle nested type search by name. 881318334Speter 881418334SpeterMon Jan 10 14:32:18 1994 Jason Merrill (jason@deneb.cygnus.com) 881518334Speter 881618334Speter * cp-init.c (build_member_call): Propagate qualifiers to new type. 881718334Speter 881818334Speter * cp-call.c (build_method_call): Count functions the new way. 881918334Speter 882018334SpeterFri Jan 7 19:03:26 1994 Jason Merrill (jason@deneb.cygnus.com) 882118334Speter 882218334Speter * cp-decl.c (pushtag): Set DECL_ASSEMBLER_NAME for nested classes, 882318334Speter too. 882418334Speter 882518334SpeterTue Jan 4 16:45:51 1994 Kung Hsu (kung@cirdan.cygnus.com) 882618334Speter 882718334Speter * cp-parse.y: change to handle whether to globalize nested class. 882818334Speter * cp-decl.c(xref_tag, maybe_globalize_type): Ditto. 882918334Speter 883018334SpeterMon Jan 3 22:22:32 1994 Gerald Baumgartner (gb@cygnus.com) 883118334Speter 883218334Speter * Makefile.in cp-call.c cp-class.c cp-cvt.c cp-decl.c cp-decl2.c 883318334Speter cp-error.c cp-init.c cp-lex.c cp-lex.h cp-method.c cp-parse.y 883418334Speter cp-spew.c cp-tree.c cp-tree.h cp-type2.c cp-typeck.c cp-xref.c 883518334Speter gplus.gperf toplev.c: Incorporated C++ signature extension. 883618334Speter * cp-sig.c: New file, contains most of signature processing. 883718334Speter * cp-hash.h: Regenerated from gplus.gperf. 883818334Speter 883918334Speter * gcc.1 g++.1: Added explanation for the `-fhandle-signatures' 884018334Speter and `-fno-handle-signatures' command line flags. 884118334Speter 884218334Speter * gcc.texi: Changed the last-modification date. 884318334Speter * invoke.texi: Added `-fhandle-signatures' in the list of 884418334Speter C++ language options. Added explanation for this option. 884518334Speter 884618334SpeterTue Dec 28 21:10:03 1993 Mike Stump <mrs@cygnus.com> 884718334Speter 884818334Speter * cp-init.c (expand_vec_init): Remove comptypes test, as it is too 884918334Speter harsh here. 885018334Speter 885118334SpeterTue Dec 28 13:42:22 1993 Mike Stump <mrs@cygnus.com> 885218334Speter 885318334Speter * cp-pt.c (do_pending_expansions): Decide to expand a template 885418334Speter member function, based upon it's class type, not the class type of 885518334Speter the first place it was declared. 885618334Speter 885718334SpeterTue Dec 28 05:42:31 1993 Mike Stump <mrs@cygnus.com> 885818334Speter 885918334Speter * cp-class.c (is_normal): New routine, use to determine when the 886018334Speter given binfo is the normal one. (The one that should have the simple 886118334Speter vtable name.) 886218334Speter * cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME 886318334Speter to check if two fndecls are `the same'. Sometimes this routine can 886418334Speter modify the main vtable, and normal should be 1, in that case, so use 886518334Speter is_normal() to determine if this is the main vtable for the class. 886618334Speter Don't recurse down virtual bases, as they are shared, and we take 886718334Speter care of them elsewhere. 886818334Speter * cp-class.c (modify_vtable_entries): If we have already updated the 886918334Speter vtable with the new virtual, don't do it again. 887018334Speter * cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as 887118334Speter appropriate. Do virtual function overriding in virtual bases, after 887218334Speter normal overriding, so that the base function list in DECL_VINDEX is 887318334Speter not overridden, before we have a chance to run through the list. 887418334Speter Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'. 887518334Speter Make sure we pass the right address into modify_vtable_entries. 887618334Speter * cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which 887718334Speter binfo is the one that has the vtable that we based our vtable on. 887818334Speter 887918334SpeterFri Dec 24 09:40:52 1993 Michael Tiemann (tiemann@blues.cygnus.com) 888018334Speter 888118334Speter * cp-typeck.c (c_expand_start_case): Use default_conversion to 888218334Speter convert expression from reference type if necessary. 888318334Speter 888418334SpeterWed Dec 22 17:58:43 1993 Jason Merrill (jason@deneb.cygnus.com) 888518334Speter 888618334Speter * cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before 888718334Speter trying to read its TREE_VALUE. 888818334Speter 888918334Speter * cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here. 889018334Speter (finish_struct): Instead of here. 889118334Speter 889218334SpeterTue Dec 21 14:34:25 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 889318334Speter 889418334Speter * cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't 889518334Speter have TYPE_PTRMEMFUNC_P set before we try to build its 889618334Speter CLASSTYPE_ID_AS_LIST. 889718334Speter (get_decl_list): Likewise, when trying to read it. 889818334Speter 889918334Speter * cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined. 890018334Speter (VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT. 890118334Speter 890218334SpeterMon Dec 20 13:35:03 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 890318334Speter 890418334Speter * cp-typeck.c (rationalize_conditional_expr): New function. 890518334Speter (unary_complex_lvalue): Use it. 890618334Speter (build_modify_expr): Use it, since trying to do an ADDR_EXPR of it 890718334Speter with build_unary_op won't cut it. Don't wrap the COND_EXPR with a 890818334Speter SAVE_EXPR either. 890918334Speter 891018334Speter * cp-decl2.c (explicit_warn_return_type): Deleted variable. 891118334Speter (lang_decode_option): Set warn_return_type, not explicit_*, for 891218334Speter -Wreturn-type and -Wall. This is what rest_of_compilation uses to 891318334Speter decide if it should go into jump_optimize or not. 891418334Speter * cp-tree.h (explicit_warn_return_type): Deleted. 891518334Speter * cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*. 891618334Speter (finish_function): Also complain about no return in a non-void fn if 891718334Speter we're being pedantic (don't rely on use of -Wreturn-type). 891818334Speter 891918334SpeterFri Dec 17 15:45:46 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 892018334Speter 892118334Speter * cp-decl.c (grokdeclarator): Forbid declaration of a function as 892218334Speter static if it's being done inside another function. 892318334Speter 892418334Speter * cp-search.c (compute_visibility): Check for friendship both ways. 892518334Speter 892618334SpeterFri Dec 17 14:28:25 1993 Jason Merrill (jason@deneb.cygnus.com) 892718334Speter 892818334Speter * cp-cvt.c (build_default_binary_type_conversion): Make error 892918334Speter messages more helpful. 893018334Speter 893118334Speter * cp-error.c (op_as_string): New function, returns "operator ==" 893218334Speter given EQ_EXPR or suchlike. 893318334Speter 893418334SpeterFri Dec 17 13:28:11 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 893518334Speter 893618334Speter * cp-call.c (print_n_candidates): New function. 893718334Speter (build_overload_call_real): Use it when we complain about a call 893818334Speter being ambiguous. 893918334Speter 894018334SpeterFri Dec 17 12:41:17 1993 Jason Merrill (jason@deneb.cygnus.com) 894118334Speter 894218334Speter * cp-call.c (build_method_call): Fix checking for static call 894318334Speter context. 894418334Speter 894518334Speter * cp-method.c (build_opfncall): Call build_indirect_ref on argument 894618334Speter to operator new. 894718334Speter 894818334Speter * cp-init.c (build_new): Don't mess with rval when building 894918334Speter indirect ref. 895018334Speter 895118334SpeterThu Dec 16 16:48:05 1993 Kung Hsu (kung@cirdan.cygnus.com) 895218334Speter 895318334Speter * cp-lex.c (default_assign_ref_body): add check when TYPE_NESTED_ 895418334Speter NAME(type) may not be exist. It's not a problem for old compiler. 895518334Speter 895618334SpeterThu Dec 16 14:46:06 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 895718334Speter 895818334Speter * cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's 895918334Speter never used for anything. 896018334Speter (struct lang_type, member type_flags): Delete field 896118334Speter `alters_visibility', and up `dummy' by 1. 896218334Speter * cp-class.c (finish_base_struct): Delete code that copies the 896318334Speter setting of CLASSTYPE_ALTERS_VISIBILITIES_P. 896418334Speter (finish_struct): Delete code that sets it. 896518334Speter 896618334SpeterThu Dec 16 14:44:39 1993 Jason Merrill (jason@deneb.cygnus.com) 896718334Speter 896818334Speter * cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to 896918334Speter build_method_call that I messed up before. 897018334Speter 897118334Speter * cp-search.c (get_base_distance): If protect > 1, allow immediate 897218334Speter private base. 897318334Speter 897418334Speter * cp-class.c (finish_base_struct): Set cant_synth_* correctly. 897518334Speter (finish_struct): Ditto. Well, nigh-correctly; it won't deal 897618334Speter properly with the case where a class contains an object of an 897718334Speter ambiguous base class which has a protected op=. Should be fixed 897818334Speter when the access control code gets overhauled. 897918334Speter (finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly. 898018334Speter 898118334SpeterThu Dec 16 12:17:06 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 898218334Speter 898318334Speter * cp-lex.c (real_yylex): Turn the code back on that deals with 898418334Speter __FUNCTION__ and __PRETTY_FUNCTION__. Don't use lookup_name, to 898518334Speter avoid the ambiguity problems that led to it being turned off in the 898618334Speter first place. 898718334Speter 898818334Speter * cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P 898918334Speter to see if something is a method. 899018334Speter 899118334SpeterWed Dec 15 18:35:58 1993 Mike Stump <mrs@cygnus.com> 899218334Speter 899318334Speter * cp-typeck.c (build_modify_expr): Avoid error messages on small 899418334Speter enum bit fields. 899518334Speter * cp-typeck.c (convert_for_assignment): Add missing argument to 899618334Speter cp_warning and cp_pedwarn calls. 899718334Speter 899818334SpeterWed Dec 15 18:25:32 1993 Jason Merrill (jason@deneb.cygnus.com) 899918334Speter 900018334Speter * cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base 900118334Speter initializers; it's just anachronistic. 900218334Speter 900318334Speter * cp-decl.c (finish_decl): Don't require external-linkage arrays 900418334Speter to have a complete type at declaration time when pedantic. 900518334Speter 900618334SpeterTue Dec 14 11:37:23 1993 Jason Merrill (jason@deneb.cygnus.com) 900718334Speter 900818334Speter * cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set. 900918334Speter 901018334Speter * cp-call.c (build_method_call): Don't dereference pointer given 901118334Speter as instance. 901218334Speter 901318334Speter * cp-decl.c (finish_function): Don't pass pointer to 901418334Speter build_method_call. 901518334Speter (finish_function): Ditto. 901618334Speter 901718334Speter * cp-typeck.c (build_x_function_call): Ditto. 901818334Speter 901918334Speter * cp-method.c (build_component_type_expr): Ditto. 902018334Speter 902118334Speter * cp-init.c (build_member_call): Ditto. 902218334Speter (build_new): Ditto. 902318334Speter 902418334SpeterMon Dec 13 18:04:33 1993 Kung Hsu (kung@cirdan.cygnus.com) 902518334Speter 902618334Speter * cp-decl.c (xref_tag): fix regression created by changes made 902718334Speter in Dec. 7 1993. 902818334Speter * cp-decl.c (xref_defn_tag): fix parallel nested class problem. 902918334Speter 903018334SpeterFri Dec 10 12:40:25 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 903118334Speter 903218334Speter * cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print 903318334Speter out the final evaluation of the function, so we can see if ELLIPSIS, 903418334Speter USER, and EVIL were set at the end. 903518334Speter 903618334Speter * cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue, 903718334Speter only go for setting TRIVIAL_CODE if we are dealing with types that 903818334Speter are compatible. 903918334Speter 904018334SpeterThu Dec 9 18:27:22 1993 Mike Stump <mrs@cygnus.com> 904118334Speter 904218334Speter * cp-decl.c (flag_huge_objects): New flag to allow large objects. 904318334Speter * toplev.c (lang_options): Ditto. 904418334Speter * cp-decl2.c (flag_huge_objects, lang_f_options): Ditto. 904518334Speter * cp-decl.c (delta_type_node): New type for delta entries. 904618334Speter * cp-tree.h (delta_type_node): Ditto. 904718334Speter * cp-decl.c (init_decl_processing): Setup delta_type_node. 904818334Speter * cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use 904918334Speter delta_type_node instead of short_integer_type_node. 905018334Speter * cp-class.c (build_vtable_entry): Ditto. 905118334Speter 905218334SpeterThu Dec 9 16:19:05 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 905318334Speter 905418334Speter * cp-tree.h (OPERATOR_TYPENAME_P): Define outside of 905518334Speter NO_{DOLLAR,DOT} macro checks, so it always gets defined. 905618334Speter (VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL. 905718334Speter 905818334SpeterWed Dec 8 17:38:06 1993 Mike Stump <mrs@cygnus.com> 905918334Speter 906018334Speter * cp-decl.c (finish_decl): Make sure things that can go into 906118334Speter "common", do go into common, if -fcommon is given. 906218334Speter 906318334SpeterWed Dec 8 13:01:54 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 906418334Speter 906518334Speter * cp-call.c (print_harshness) [DEBUG_MATCHING]: New function. 906618334Speter (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out 906718334Speter argument matching diagnostics to make instantly clear what the 906818334Speter compiler is doing. 906918334Speter 907018334Speter * cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue, 907118334Speter then check to see if the penalty was increased due to 907218334Speter signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't. 907318334Speter 907418334SpeterTue Dec 7 18:29:14 1993 Kung Hsu (kung@cirdan.cygnus.com) 907518334Speter 907618334Speter * cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution 907718334Speter problem. 907818334Speter 907918334SpeterTue Dec 7 16:09:34 1993 Jason Merrill (jason@deneb.cygnus.com) 908018334Speter 908118334Speter * cp-class.c (finish_struct): Before synthesizing methods, if no 908218334Speter methods have yet been declared then set nonprivate_method. Don't 908318334Speter set non_private method after synthesizing a method. 908418334Speter 908518334Speter * cp-lex.c (extract_interface_info): If flag_alt_external_templates 908618334Speter is set, tie emitted code to the location of template instantiation, 908718334Speter rather than definition. 908818334Speter 908918334Speter * cp-tree.h: Declare flag_alt_external_templates. 909018334Speter 909118334Speter * cp-decl2.c (lang_decode_option): Support -falt-external-templates. 909218334Speter 909318334Speter * toplev.c (lang_options): Ditto. 909418334Speter 909518334Speter Mon Oct 4 12:50:02 1993 Chip Salzenberg (chip@fin.uucp) 909618334Speter 909718334Speter [changes propagated from 930810 snapshot] 909818334Speter * cp-decl.c (init_decl_processing): Make long long available for use 909918334Speter as SIZE_TYPE and PTRDIFF_TYPE. 910018334Speter (finish_decl): Allow file-scope static incomplete array. 910118334Speter (grokdeclarator): Don't pass on const and volatile fron function 910218334Speter value type to function type. 910318334Speter Warn here for volatile fn returning non-void type. 910418334Speter * cp-parse.y (attrib): Accept attributes `volatile' with alias 910518334Speter `noreturn', and `const'. 910618334Speter * cp-typeck.c (default_conversion): Don't lose const and volatile. 910718334Speter (build_binary_op_nodefault): Generate pedantic warning for comparison 910818334Speter of complete pointer type with incomplete pointer type. 910918334Speter (build_c_cast): Be careful that null pointer constant be INTEGER_CST. 911018334Speter 911118334SpeterTue Dec 7 10:46:48 1993 Jason Merrill (jason@deneb.cygnus.com) 911218334Speter 911318334Speter * cp-init.c (expand_vec_init): When creating a temporary for copying 911418334Speter arrays, use the type of the source, not the target. 911518334Speter 911618334Speter * cp-cvt.c (convert): Pass an argument for errtype to 911718334Speter convert_to_reference. 911818334Speter 911918334Speter * cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with 912018334Speter methods, -> and `this'. 912118334Speter 912218334SpeterMon Dec 6 17:12:33 1993 Jason Merrill (jason@deneb.cygnus.com) 912318334Speter 912418334Speter * cp-error.c (parm_as_string): New function; returns `this' or arg 912518334Speter number. Corresponds to %P. 912618334Speter (dump_expr): Deal with method calls. 912718334Speter 912818334Speter * cp-cvt.c (convert_to_reference): Stop using warn_for_assignment. 912918334Speter * cp-typeck.c (convert_for_assignment): Ditto. 913018334Speter (warn_for_assignment): Lose. 913118334Speter 913218334SpeterMon Dec 6 11:33:35 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 913318334Speter 913418334Speter * cp-call.c (ideal_candidate_ansi): Delete code that was never 913518334Speter doing anything useful. Instead, sort once, and DO NOT wipe 913618334Speter out any codes with EVIL_CODE, since that's what we use as a 913718334Speter marker for the end of the list of candidates. 913818334Speter 913918334Speter * cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN. 914018334Speter 914118334SpeterMon Dec 6 12:49:17 1993 Jason Merrill (jason@deneb.cygnus.com) 914218334Speter 914318334Speter * cp-init.c (get_aggr_from_typedef): New function, like 914418334Speter is_aggr_typedef but returns the _TYPE. 914518334Speter 914618334Speter * cp-call.c, cp-init.c, cp-method.c: Eradicate err_name. 914718334Speter 914818334SpeterSun Dec 5 18:12:48 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 914918334Speter 915018334Speter * cp-lex.c (readescape): Pedwarn when a hex escape is out of range. 915118334Speter 915218334SpeterThu Nov 25 23:50:19 1993 Chip Salzenberg (chip@fin.uucp) 915318334Speter 915418334Speter Delay language context change until beginning of next decl. 915518334Speter 915618334Speter * cp-lex.h (c_header_level): Removed. 915718334Speter (pending_lang_change): Declared. 915818334Speter * cp-lex.c (c_header_level): Renamed from in_c_header, made static. 915918334Speter (pending_lang_change): Defined. 916018334Speter (check_newline): Rework code that recognizes line number and 916118334Speter filename changes. Instead of pushing and popping lang context, 916218334Speter increment and decrement pending_lang_change. 916318334Speter (do_pending_lang_change): Push and pop lang context according 916418334Speter to value of pending_lang_change. 916518334Speter * cp-parse.y (extdefs): Use lang_extdef instead of extdef. 916618334Speter (extdef): Same as extdef, but call do_pending_lang_change() first. 916718334Speter 916818334SpeterMon Nov 15 15:39:15 1993 Chip Salzenberg (chip@fin.uucp) 916918334Speter 917018334Speter * cp-typeck.c (build_binary_op_nodefault): Warn for ordered 917118334Speter compare of ptr with 0 only if pedantic in both cases. 917218334Speter 917318334SpeterThu Nov 25 13:31:37 1993 Chip Salzenberg (chip@fin.uucp) 917418334Speter 917518334Speter Reinstate the below patch, which got lost in the Cygnus merge: 917618334Speter Tue Nov 23 13:59:24 1993 Hallvard B Furuseth (hbf@durin.uio.no) 917718334Speter * cp-parse.y (maybe_type_qual): Don't fail to set $$. 917818334Speter 917918334SpeterWed Nov 17 19:03:30 1993 Chip Salzenberg (chip@fin.uucp) 918018334Speter 918118334Speter * cp-parse.y (attrib): Allow "ident(ident)" like the C front end. 918218334Speter 918318334SpeterFri Oct 22 20:43:37 1993 Paul Eggert (eggert@twinsun.com) 918418334Speter 918518334Speter * cp-lex.c (real_yylex): Diagnose floating point constants 918618334Speter that are too large. 918718334Speter 918818334SpeterWed Nov 17 19:10:37 1993 Chip Salzenberg (chip@fin.uucp) 918918334Speter 919018334Speter * cp-type2.c (build_functional_cast): ARM page 16: When a class 919118334Speter and an object, function or enumerator are declared in the same 919218334Speter scope with the same name, the class name is hidden. 919318334Speter 919418334SpeterWed Nov 17 19:07:18 1993 Chip Salzenberg (chip@fin.uucp) 919518334Speter 919618334Speter * cp-call.c (convert_harshness_ansi): Distinguish float, double, 919718334Speter and long double from each other when overloading. 919818334Speter (compute_conversion_costs_{ansi,old}, build_method_call, 919918334Speter build_overlay_call_real, convert_to_aggr): Always set and 920018334Speter always use H_LEN member of candidate structure. 920118334Speter 920218334SpeterMon Oct 11 23:10:53 1993 Chip Salzenberg (chip@fin.uucp) 920318334Speter 920418334Speter * cp-decl.c (duplicate_decls): Note redeclarations of library 920518334Speter functions, and generate distinct warnings for them. 920618334Speter 920718334SpeterMon Oct 4 12:26:49 1993 Chip Salzenberg (chip@fin.uucp) 920818334Speter 920918334Speter Support format warnings in G++. 921018334Speter 921118334Speter * cp-tree.h: Protect against multiple inclusion. 921218334Speter Declare all public functions in c-common.c (copy from c-tree.h). 921318334Speter (STDIO_PROTO): Define. 921418334Speter (warn_format): Declare. 921518334Speter (record_format_info): Remove declaration. 921618334Speter * cp-decl.c (init_decl_processing): Call init_function_format_info. 921718334Speter * cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format. 921818334Speter * cp-typeck.c (build_function_call_real): Call check_function_format. 921918334Speter (record_format_info): Remove -- obsolete stub. 922018334Speter 922118334SpeterSat Jul 24 12:04:29 1993 Chip Salzenberg (chip@fin.uucp) 922218334Speter 922318334Speter * cp-decl.c (duplicate_decls): Don't warn for non-extern var decl 922418334Speter following an extern one (for -Wredundant-decls). 922518334Speter * cp-parse.y (primary): In statement expression case, if compstmt 922618334Speter returns something other than a BLOCK, return it unchanged. 922718334Speter 922818334SpeterThu Dec 2 20:44:58 1993 Chip Salzenberg (chip@fin.uucp) 922918334Speter 923018334Speter * cp-decl.c (warn_extern_redeclared_static): New function made 923118334Speter from code extracted from pushdecl. 923218334Speter (duplicate_decls, pushdecl): Call new function. 923318334Speter (lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE 923418334Speter to be a TREE_LIST when function is declared in 'extern "C" {}'. 923518334Speter 923618334SpeterFri Dec 3 16:01:10 1993 Jason Merrill (jason@deneb.cygnus.com) 923718334Speter 923818334Speter * cp-class.c (duplicate_tag_error): Use cp_error. 923918334Speter (finish_base_struct): Check for ambiguity with direct base, and don't 924018334Speter generate op= or copy ctor if it exists. 924118334Speter 924218334SpeterFri Dec 3 15:32:34 1993 Kung Hsu (kung@cirdan.cygnus.com) 924318334Speter 924418334Speter * cp-init.c (expand_member_init): when initializer name is null, 924518334Speter don't try to build it now because emit_base_init will handle it. 924618334Speter 924718334SpeterFri Dec 3 12:28:59 1993 Jason Merrill (jason@deneb.cygnus.com) 924818334Speter 924918334Speter * cp-lex.c (init_lex): Initialize input_filename to "<internal>" for 925018334Speter code such as ExceptionHandler::operator=. 925118334Speter 925218334SpeterFri Dec 3 10:32:08 1993 Jason Merrill (jason@deneb.cygnus.com) 925318334Speter 925418334Speter * cp-decl.c (grokdeclarator): Don't try to print out dname when 925518334Speter complaining about arrays of references if decl_context==TYPENAME, 925618334Speter since it will be null. 925718334Speter 925818334Speter * cp-decl2.c: Default to flag_ansi_overloading. 925918334Speter 926018334SpeterThu Dec 2 18:05:56 1993 Kung Hsu (kung@cirdan.cygnus.com) 926118334Speter 926218334Speter * cp-call.c (build_method_call): use binfo from instance if it's 926318334Speter different from binfo (basetype_path) passed from above. 926418334Speter 926518334SpeterThu Dec 2 12:48:36 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 926618334Speter 926718334SpeterWed Nov 17 19:14:29 1993 Chip Salzenberg (chip@fin.uucp) 926818334Speter 926918334Speter cp-error.c (dump_expr): Use unsigned chars to output a 927018334Speter TREE_REAL_CST in hex. 927118334Speter 927218334SpeterThu Dec 2 11:05:48 1993 Jason Merrill (jason@deneb.cygnus.com) 927318334Speter 927418334Speter * cp-class.c (finish_struct): Fix typo in setting 927518334Speter cant_synth_asn_ref. 927618334Speter 927718334Speter * cp-tree.h (TYPE_NESTED_NAME): New macro, does 927818334Speter DECL_NESTED_TYPENAME (TYPE_NAME (NODE)). 927918334Speter 928018334Speter * cp-lex.c (default_copy_constructor_body): Change 928118334Speter DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype). 928218334Speter (default_assign_ref_body): Ditto. 928318334Speter (default_copy_constructor_body): Call operator= explicitly for 928418334Speter base classes that have no constructor. 928518334Speter 928618334SpeterThu Dec 2 10:47:15 1993 Michael Tiemann (tiemann@blues.cygnus.com) 928718334Speter 928818334Speter * cp-call.c (build_method_call): If the instance variable is 928918334Speter converted to error_mark_node when we're trying to convert it to the 929018334Speter base type of a method we're looking up, return error_mark_node. 929118334Speter 929218334SpeterThu Dec 2 10:41:16 1993 Torbjorn Granlund (tege@cygnus.com) 929318334Speter 929418334Speter * cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR 929518334Speter cases, tests for unsigned operands by peeking inside a NOP_EXPR. 929618334Speter 929718334SpeterWed Dec 1 13:33:34 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 929818334Speter 929918334Speter * cp-call.c (compute_conversion_costs_ansi): Use the size of struct 930018334Speter harshness_code, not the size of short, for clearing out the 930118334Speter ansi_harshness. 930218334Speter 930318334Speter * cp-call.c (print_candidates): New function. 930418334Speter (build_method_call): When we had some candidates, but didn't get a 930518334Speter usable match, don't report that we got an error with the first 930618334Speter candidate. Instead, say there were no matches, and list the 930718334Speter candidates with print_candidates. In the second pass, make sure we 930818334Speter clear out ever_seen, so we can accurately count the number of 930918334Speter functions that qualified. 931018334Speter 931118334SpeterWed Dec 1 09:53:59 1993 Torbjorn Granlund (tege@cygnus.com) 931218334Speter 931318334Speter * cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR 931418334Speter only if op1 is known to be != -1. 931518334Speter (build_binary_op_nodefault): Handle *_DIV_EXPR likewise. 931618334Speter 931718334SpeterTue Nov 30 14:07:26 1993 Brendan Kehoe (brendan@lisa.cygnus.com) 931818334Speter 931918334Speter * cp-method.c (hack_identifier): If the field itself is private, and 932018334Speter not from a private base class, say so. 932118334Speter 932218334SpeterMon Nov 29 03:00:56 1993 Jason Merrill (jason@deneb.cygnus.com) 932318334Speter 932418334Speter * cp-decl.c (grokdeclarator): Always warn on initialization of 932518334Speter const member. 932618334Speter 932718334SpeterWed Nov 24 00:49:35 1993 Jason Merrill (jason@deneb.cygnus.com) 932818334Speter 932918334Speter * cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly. 933018334Speter (finish_base_struct): Set cant_synth_asn_ref properly. 933118334Speter 933218334Speter * cp-lex.c (cons_up_default_function): Add section for operator=. 933318334Speter (default_assign_ref_body): New function, mostly cribbed from 933418334Speter default_copy_constructor_body. 933518334Speter 933618334Speter * cp-class.c (base_info): Add members cant_synth_copy_ctor, 933718334Speter cant_synth_asn_ref, no_const_asn_ref. 933818334Speter (finish_base_struct): Update no_const_asn_ref, note that you should 933918334Speter update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF. 934018334Speter (finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and 934118334Speter initialize them properly. Set no_const_asn_ref properly. Set 934218334Speter cant_synth_* in some of the situations where they should be set. 934318334Speter Propagate TYPE_GETS_ASSIGN_REF. Use cant_synth_copy_ctor. Add call 934418334Speter to cons_up_default_function for operator=. 934518334Speter 934618334SpeterTue Nov 23 20:24:58 1993 Mike Stump <mrs@cygnus.com> 934718334Speter 934818334Speter * cp-cvt.c (convert_force): Add code to perform casting of pointer 934918334Speter to member function types. 935018334Speter * cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate 935118334Speter when the conversion should be done, regardless. 935218334Speter * cp-tree.h (build_ptrmemfunc): Ditto. 935318334Speter * cp-type2.c (digest_init): Ditto. 935418334Speter * cp-typeck.c (convert_for_assignment): Ditto. 935518334Speter 935618334SpeterTue Nov 23 18:06:58 1993 Jason Merrill (jason@deneb.cygnus.com) 935718334Speter 935818334Speter * cp-error.c (dump_expr): Do the right thing for variables of 935918334Speter reference type. 936018334Speter 936118334Speter * cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF 936218334Speter and its kin properly. 936318334Speter (xref_tag): Propagate TYPE_GETS_ASSIGN_REF. 936418334Speter 936518334SpeterTue Nov 23 12:26:13 1993 Mike Stump <mrs@cygnus.com> 936618334Speter 936718334Speter * cp-method.c (build_opfncall): Don't count pointer to member 936818334Speter functions as aggregates here, as we don't want to look up methods in 936918334Speter them. The compiler would core dump if we did, as they don't have 937018334Speter normal names. 937118334Speter * cp-typeck.c (build_indirect_ref): Improve wording on error 937218334Speter message. 937318334Speter 937418334SpeterMon Nov 22 14:22:23 1993 Jason Merrill (jason@deneb.cygnus.com) 937518334Speter 937618334Speter * cp-decl.c (grok_op_properties): Allow operator?: with pedwarn 937718334Speter (since it's supported in other compiler bits). 937818334Speter 937918334Speter * cp-method.c (report_type_mismatch): Use cp_error; ignore err_name 938018334Speter argument. 938118334Speter 938218334Speter * cp-error.c (dump_function_decl): Don't print return type for 938318334Speter constructors and destructors. 938418334Speter 938518334Speter * cp-cvt.c (cp_convert_to_pointer): Import code from 938618334Speter convert_to_pointer so we can return error_mark_node in the case of an 938718334Speter error, and to allow more meaningful error messages. 938818334Speter (build_type_conversion): Don't go through void* when trying 938918334Speter to convert to a pointer type. 939018334Speter 939118334Speter * cp-decl.c (grokfndecl): Move call to grok_op_properties back 939218334Speter after grokclassfn so that it's dealing with the right decl. 939318334Speter (grok_op_properties): Don't assert !methodp for op new and op delete. 939418334Speter 939518334Speter * cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now 939618334Speter no uses of it in the compiler). 939718334Speter 939818334Speter * cp-call.c (build_scoped_method_call): Fix for destructors of simple 939918334Speter types. 940018334Speter (build_method_call): Ditto. 940118334Speter 940218334SpeterFri Nov 19 12:59:38 1993 Jason Merrill (jason@deneb.cygnus.com) 940318334Speter 940418334Speter * cp-tree.c (count_functions): Abstraction function. 940518334Speter 940618334Speter * cp-call.c (build_overload_call_real): Deal with new overloading 940718334Speter properly, remove dead code. 940818334Speter 940918334Speter * gcc.c (default_compilers): Generate and use .ii files in the 941018334Speter intermediate stage of compiling C++ source. 941118334Speter 941218334SpeterFri Nov 19 11:26:09 1993 Jim Wilson (wilson@sphagnum.cygnus.com) 941318334Speter 941418334Speter * cp-expr.c (cplus_expand_expr): Make call_target a valid memory 941518334Speter address before using it, so it can be later safely compared. 941618334Speter 941718334SpeterFri Nov 12 15:30:27 1993 Jason Merrill (jason@deneb.cygnus.com) 941818334Speter 941918334Speter * cp-pt.c (tsubst): Deal with new overloading. 942018334Speter 942118334Speter * cp-typeck.c (fntype_p): is the arg function type? 942218334Speter (comp_target_parms): pedwarn on conversion from (anything) to (...). 942318334Speter (build_x_function_call): Deal with new overloading. 942418334Speter 942518334Speter * cp-tree.c (decl_list_length): Deal with new overloading. 942618334Speter (decl_value_member): Like value_member, but for DECL_CHAINs. 942718334Speter 942818334Speter * cp-decl.c (duplicate_decls): Deal with new overloading. 942918334Speter (start_decl): Ditto. 943018334Speter 943118334Speter * cp-class.c (instantiate_type): Deal with new overloading. 943218334Speter 943318334Speter * cp-call.c (convert_harshness_ansi): Deal with new overloading. 943418334Speter (convert_harshness_old): Deal with new overloading. 943518334Speter (build_overload_call_real): Ditto. 943618334Speter 943718334SpeterMon Nov 8 13:50:49 1993 Jason Merrill (jason@deneb.cygnus.com) 943818334Speter 943918334Speter * cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL 944018334Speter if unambiguous, NULL_TREE otherwise. 944118334Speter (get_first_fn): Returns the first appropriate FUNCTION_DECL. 944218334Speter (is_overloaded_fn): Returns whether or not the passed tree is 944318334Speter a function or list of functions. 944418334Speter 944518334Speter * cp-init.c (init_init_processing): use `get_first_fn' to find 944618334Speter the FUNCTION_DEFN for new and delete. 944718334Speter 944818334Speter * cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut 944918334Speter code size in half (I spit on special cases). 945018334Speter 945118334SpeterTue Sep 7 20:03:33 1993 Jason Merrill (jason@deneb.cygnus.com) 945218334Speter 945318334Speter * cp-decl.c: Allow references and template type parameters as well 945418334Speter 945518334SpeterLocal Variables: 945618334Spetereval: (auto-fill-mode) 945718334Speterleft-margin: 8 945818334Speterfill-column: 76 945918334SpeterEnd: 9460