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