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