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