Tue Dec 28 21:10:03 1993  Mike Stump  <mrs@cygnus.com>

	* cp-init.c (expand_vec_init): Remove comptypes test, as it is too
	harsh here.

Tue Dec 28 13:42:22 1993  Mike Stump  <mrs@cygnus.com>

	* cp-pt.c (do_pending_expansions): Decide to expand a template
	member function, based upon it's class type, not the class type of
	the first place it was declared.

Tue Dec 28 05:42:31 1993  Mike Stump  <mrs@cygnus.com>

	* cp-class.c (is_normal): New routine, use to determine when the
	given binfo is the normal one.  (The one that should have the simple
	vtable name.)
	* cp-class.c (modify_other_vtable_entries): Use DECL_ASSEMBLER_NAME
	to check if two fndecls are `the same'.  Sometimes this routine can
	modify the main vtable, and normal should be 1, in that case, so use
	is_normal() to determine if this is the main vtable for the class.
	Don't recurse down virtual bases, as they are shared, and we take
	care of them elsewhere.
	* cp-class.c (modify_vtable_entries): If we have already updated the
	vtable with the new virtual, don't do it again.
	* cp-class.c (finish_struct): Set CLASSTYPE_VFIELD_PARENT as
	appropriate.  Do virtual function overriding in virtual bases, after
	normal overriding, so that the base function list in DECL_VINDEX is
	not overridden, before we have a chance to run through the list.
	Use DECL_ASSEMBLER_NAME to check if two fndecls are `the same'.
	Make sure we pass the right address into modify_vtable_entries.
	* cp-tree.h (CLASSTYPE_VFIELD_PARENT): New field to indicate which
	binfo is the one that has the vtable that we based our vtable on.

Fri Dec 24 09:40:52 1993  Michael Tiemann  <tiemann@blues.cygnus.com>

	* cp-typeck.c (c_expand_start_case): Use default_conversion to
	convert expression from reference type if necessary.

Wed Dec 22 17:58:43 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-typeck.c (build_unary_op): Make sure that it's a TREE_LIST before
	trying to read its TREE_VALUE.

	* cp-class.c (finish_struct_methods): Clear DECL_IN_AGGR_P here.
	(finish_struct): Instead of here.

Tue Dec 21 14:34:25 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-tree.c (list_hash_lookup_or_cons): Make sure the type doesn't
	have TYPE_PTRMEMFUNC_P set before we try to build its
	CLASSTYPE_ID_AS_LIST.
	(get_decl_list): Likewise, when trying to read it.

	* cp-tree.h (VTABLE_NAME): No def with NO_{DOLLAR,DOT} defined.
	(VTABLE_NAME_P): Use it instead of VTABLE_NAME_FORMAT.

Mon Dec 20 13:35:03 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-typeck.c (rationalize_conditional_expr): New function.
	(unary_complex_lvalue): Use it.
	(build_modify_expr): Use it, since trying to do an ADDR_EXPR of it
	with build_unary_op won't cut it.  Don't wrap the COND_EXPR with a
	SAVE_EXPR either.

	* cp-decl2.c (explicit_warn_return_type): Deleted variable.
	(lang_decode_option): Set warn_return_type, not explicit_*, for
	-Wreturn-type and -Wall.  This is what rest_of_compilation uses to
	decide if it should go into jump_optimize or not.
	* cp-tree.h (explicit_warn_return_type): Deleted.
	* cp-decl.c (grokdeclarator): Use warn_return_type, not explicit_*.
	(finish_function): Also complain about no return in a non-void fn if
	we're being pedantic (don't rely on use of -Wreturn-type).

Fri Dec 17 15:45:46 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-decl.c (grokdeclarator): Forbid declaration of a function as
	static if it's being done inside another function.

	* cp-search.c (compute_visibility): Check for friendship both ways.

Fri Dec 17 14:28:25 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-cvt.c (build_default_binary_type_conversion): Make error
	messages more helpful.

	* cp-error.c (op_as_string): New function, returns "operator =="
	given EQ_EXPR or suchlike.

Fri Dec 17 13:28:11 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-call.c (print_n_candidates): New function.
	(build_overload_call_real): Use it when we complain about a call
	being ambiguous.

Fri Dec 17 12:41:17 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-call.c (build_method_call): Fix checking for static call
	context.

	* cp-method.c (build_opfncall): Call build_indirect_ref on argument
	to operator new.

	* cp-init.c (build_new): Don't mess with rval when building
	indirect ref.

Thu Dec 16 16:48:05 1993  Kung Hsu  <kung@cirdan.cygnus.com>

	* cp-lex.c (default_assign_ref_body): Add check when TYPE_NESTED_
	NAME(type) may not be exist.  It's not a problem for old compiler.

Thu Dec 16 14:46:06 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-tree.h (CLASSTYPE_ALTERS_VISIBILITIES_P): Delete macro, it's
	never used for anything.
	(struct lang_type, member type_flags): Delete field
	`alters_visibility', and up `dummy' by 1.
	* cp-class.c (finish_base_struct): Delete code that copies the
	setting of CLASSTYPE_ALTERS_VISIBILITIES_P.
	(finish_struct): Delete code that sets it.

Thu Dec 16 14:44:39 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-decl.c, cp-init.c, cp-typeck.c: Fix arguments to
	build_method_call that I messed up before.

	* cp-search.c (get_base_distance): If protect > 1, allow immediate
	private base.

	* cp-class.c (finish_base_struct): Set cant_synth_* correctly.
	(finish_struct): Likewise.  Well, nigh-correctly; it won't deal
	properly with the case where a class contains an object of an
	ambiguous base class which has a protected op=.  Should be fixed
	when the access control code gets overhauled.
	(finish_struct_methods): Set TYPE_HAS_NONPUBLIC_* correctly.

Thu Dec 16 12:17:06 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-lex.c (real_yylex): Turn the code back on that deals with
	__FUNCTION__ and __PRETTY_FUNCTION__.  Don't use lookup_name, to
	avoid the ambiguity problems that led to it being turned off in the
	first place.

	* cp-method.c (hack_identifier): Also check for a TYPE_PTRMEMFUNC_P
	to see if something is a method.

Wed Dec 15 18:35:58 1993  Mike Stump  <mrs@cygnus.com>

	* cp-typeck.c (build_modify_expr): Avoid error messages on small
	enum bit fields.
	* cp-typeck.c (convert_for_assignment): Add missing argument to
	cp_warning and cp_pedwarn calls.

Wed Dec 15 18:25:32 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-parse.y (member_init): ANSI C++ doesn't forbid old-style base
	initializers; it's just anachronistic.

	* cp-decl.c (finish_decl): Don't require external-linkage arrays
	to have a complete type at declaration time when pedantic.

Tue Dec 14 11:37:23 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-decl.c (pushdecl): Don't set DECL_CONTEXT if it's already set.

	* cp-call.c (build_method_call): Don't dereference pointer given
	as instance.

	* cp-decl.c (finish_function): Don't pass pointer to
	build_method_call.
	(finish_function): Likewise.

	* cp-typeck.c (build_x_function_call): Likewise.

	* cp-method.c (build_component_type_expr): Likewise.

	* cp-init.c (build_member_call): Likewise.
	(build_new): Likewise.

Mon Dec 13 18:04:33 1993  Kung Hsu  <kung@cirdan.cygnus.com>

	* cp-decl.c (xref_tag): Fix regression created by changes made
	in Dec. 7 1993.
	* cp-decl.c (xref_defn_tag): Fix parallel nested class problem.

Fri Dec 10 12:40:25 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-call.c (compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print
	out the final evaluation of the function, so we can see if ELLIPSIS,
	USER, and EVIL were set at the end.

	* cp-call.c (convert_harshness_ansi): When the parm isn't an lvalue,
	only go for setting TRIVIAL_CODE if we are dealing with types that
	are compatible.

Thu Dec  9 18:27:22 1993  Mike Stump  <mrs@cygnus.com>

	* cp-decl.c (flag_huge_objects): New flag to allow large objects.
	* toplev.c (lang_options): Likewise.
	* cp-decl2.c (flag_huge_objects, lang_f_options): Likewise.
	* cp-decl.c (delta_type_node): New type for delta entries.
	* cp-tree.h (delta_type_node): Likewise.
	* cp-decl.c (init_decl_processing): Setup delta_type_node.
	* cp-decl.c (init_decl_processing, build_ptrmemfunc_type): Use
	delta_type_node instead of short_integer_type_node.
	* cp-class.c (build_vtable_entry): Likewise.

Thu Dec  9 16:19:05 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-tree.h (OPERATOR_TYPENAME_P): Define outside of
	NO_{DOLLAR,DOT} macro checks, so it always gets defined.
	(VTABLE_NAME_P): Define for NO_DOT && NO_DOLLAR_IN_LABEL.

Wed Dec  8 17:38:06 1993  Mike Stump  <mrs@cygnus.com>

	* cp-decl.c (finish_decl): Make sure things that can go into
	"common", do go into common, if -fcommon is given.

Wed Dec  8 13:01:54 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-call.c (print_harshness) [DEBUG_MATCHING]: New function.
	(compute_conversion_costs_ansi) [DEBUG_MATCHING]: Print out
	argument matching diagnostics to make instantly clear what the
	compiler is doing.

	* cp-call.c (convert_harshness_ansi): If the parm isn't an lvalue,
	then check to see if the penalty was increased due to
	signed/unsigned mismatch, and use a TRIVIAL_CODE if it wasn't.

Tue Dec  7 18:29:14 1993  Kung Hsu  <kung@cirdan.cygnus.com>

	* cp-decl.c (xref_tag, pushtag): Fix nested class search/resolution
	problem.

Tue Dec  7 16:09:34 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-class.c (finish_struct): Before synthesizing methods, if no
	methods have yet been declared then set nonprivate_method.  Don't
	set non_private method after synthesizing a method.

	* cp-lex.c (extract_interface_info): If flag_alt_external_templates
	is set, tie emitted code to the location of template instantiation,
	rather than definition.

	* cp-tree.h: Declare flag_alt_external_templates.

	* cp-decl2.c (lang_decode_option): Support -falt-external-templates.

	* toplev.c (lang_options): Likewise.

Mon Oct  4 12:50:02 1993  Chip Salzenberg  <chip@fin.uucp>

	[changes propagated from 930810 snapshot]
	* cp-decl.c (init_decl_processing): Make long long available for use
	as SIZE_TYPE and PTRDIFF_TYPE.
	(finish_decl): Allow file-scope static incomplete array.
	(grokdeclarator): Don't pass on const and volatile fron function
	value type to function type.
	Warn here for volatile fn returning non-void type.
	* cp-parse.y (attrib): Accept attributes `volatile' with alias
	`noreturn', and `const'.
	* cp-typeck.c (default_conversion): Don't lose const and volatile.
	(build_binary_op_nodefault): Generate pedantic warning for comparison
	of complete pointer type with incomplete pointer type.
	(build_c_cast): Be careful that null pointer constant be INTEGER_CST.

Tue Dec  7 10:46:48 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-init.c (expand_vec_init): When creating a temporary for copying
	arrays, use the type of the source, not the target.

	* cp-cvt.c (convert): Pass an argument for errtype to
	convert_to_reference.

	* cp-error.c (dump_expr, COMPONENT_REF & CALL_EXPR): Deal with
	methods, -> and `this'.

Mon Dec  6 17:12:33 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-error.c (parm_as_string): New function; returns `this' or arg
	number.  Corresponds to %P.
	(dump_expr): Deal with method calls.

	* cp-cvt.c (convert_to_reference): Stop using warn_for_assignment.
	* cp-typeck.c (convert_for_assignment): Likewise.
	(warn_for_assignment): Lose.

Mon Dec  6 11:33:35 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-call.c (ideal_candidate_ansi): Delete code that was never
	doing anything useful.  Instead, sort once, and DO NOT wipe
	out any codes with EVIL_CODE, since that's what we use as a
	marker for the end of the list of candidates.

	* cp-cvt.c (convert_to_aggr): Make sure to always set H_LEN.

Mon Dec  6 12:49:17 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-init.c (get_aggr_from_typedef): New function, like
	is_aggr_typedef but returns the _TYPE.

	* cp-call.c, cp-init.c, cp-method.c: Eradicate err_name.

Sun Dec  5 18:12:48 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-lex.c (readescape): Pedwarn when a hex escape is out of range.

Thu Nov 25 23:50:19 1993  Chip Salzenberg  <chip@fin.uucp>

	Delay language context change until beginning of next decl.

	* cp-lex.h (c_header_level): Removed.
	(pending_lang_change): Declared.
	* cp-lex.c (c_header_level): Renamed from in_c_header, made static.
	(pending_lang_change): Defined.
	(check_newline): Rework code that recognizes line number and
	filename changes.  Instead of pushing and popping lang context,
	increment and decrement pending_lang_change.
	(do_pending_lang_change):  Push and pop lang context according
	to value of pending_lang_change.
	* cp-parse.y (extdefs): Use lang_extdef instead of extdef.
	(extdef): Same as extdef, but call do_pending_lang_change() first.

Mon Nov 15 15:39:15 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-typeck.c (build_binary_op_nodefault): Warn for ordered
	compare of ptr with 0 only if pedantic in both cases.

Thu Nov 25 13:31:37 1993  Chip Salzenberg  <chip@fin.uucp>

	Reinstate the below patch, which got lost in the Cygnus merge:
	Tue Nov 23 13:59:24 1993  Hallvard B Furuseth  (hbf@durin.uio.no)
	* cp-parse.y (maybe_type_qual): Don't fail to set $$.

Wed Nov 17 19:03:30 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-parse.y (attrib): Allow "ident(ident)" like the C front end.

Fri Oct 22 20:43:37 1993  Paul Eggert  <eggert@twinsun.com>

	* cp-lex.c (real_yylex): Diagnose floating point constants
	that are too large.

Wed Nov 17 19:10:37 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-type2.c (build_functional_cast): ARM page 16: When a class
	and an object, function or enumerator are declared in the same
	scope with the same name, the class name is hidden.

Wed Nov 17 19:07:18 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-call.c (convert_harshness_ansi): Distinguish float, double,
	and long double from each other when overloading.
	(compute_conversion_costs_{ansi,old}, build_method_call,
	build_overlay_call_real, convert_to_aggr): Always set and
	always use H_LEN member of candidate structure.

Mon Oct 11 23:10:53 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-decl.c (duplicate_decls): Note redeclarations of library
	functions, and generate distinct warnings for them.

Mon Oct  4 12:26:49 1993  Chip Salzenberg  <chip@fin.uucp>

	Support format warnings in G++.

	* cp-tree.h: Protect against multiple inclusion.
	Declare all public functions in c-common.c (copy from c-tree.h).
	(STDIO_PROTO): Define.
	(warn_format): Declare.
	(record_format_info): Remove declaration.
	* cp-decl.c (init_decl_processing): Call init_function_format_info.
	* cp-decl2.c (lang_decode_option): Make "-Wall" include warn_format.
	* cp-typeck.c (build_function_call_real): Call check_function_format.
	(record_format_info): Remove -- obsolete stub.

Sat Jul 24 12:04:29 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-decl.c (duplicate_decls): Don't warn for non-extern var decl
	following an extern one (for -Wredundant-decls).
	* cp-parse.y (primary): In statement expression case, if compstmt
	returns something other than a BLOCK, return it unchanged.

Thu Dec  2 20:44:58 1993  Chip Salzenberg  <chip@fin.uucp>

	* cp-decl.c (warn_extern_redeclared_static): New function made
	from code extracted from pushdecl.
	(duplicate_decls, pushdecl): Call new function.
	(lookup_name_current_level): Allow for IDENTIFIER_GLOBAL_VALUE
	to be a TREE_LIST when function is declared in 'extern "C" {}'.

Fri Dec  3 16:01:10 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-class.c (duplicate_tag_error): Use cp_error.
	(finish_base_struct): Check for ambiguity with direct base, and don't
	generate op= or copy ctor if it exists.

Fri Dec  3 15:32:34 1993  Kung Hsu  <kung@cirdan.cygnus.com>

	* cp-init.c (expand_member_init): When initializer name is null,
	don't try to build it now because emit_base_init will handle it.

Fri Dec  3 12:28:59 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-lex.c (init_lex): Initialize input_filename to "<internal>" for
	code such as ExceptionHandler::operator=.

Fri Dec  3 10:32:08 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-decl.c (grokdeclarator): Don't try to print out dname when
	complaining about arrays of references if decl_context==TYPENAME,
	since it will be null.

	* cp-decl2.c: Default to flag_ansi_overloading.

Thu Dec  2 18:05:56 1993  Kung Hsu  <kung@cirdan.cygnus.com>

	* cp-call.c (build_method_call): Use binfo from instance if it's
	different from binfo (basetype_path) passed from above.

Wed Nov 17 19:14:29 1993  Chip Salzenberg  <chip@fin.uucp>

	cp-error.c (dump_expr): Use unsigned chars to output a
	TREE_REAL_CST in hex.

Thu Dec  2 11:05:48 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-class.c (finish_struct): Fix typo in setting
	cant_synth_asn_ref.

	* cp-tree.h (TYPE_NESTED_NAME): New macro, does
	DECL_NESTED_TYPENAME (TYPE_NAME (NODE)).

	* cp-lex.c (default_copy_constructor_body): Change
	DECL_NAME (TYPE_NAME (btype)) to TYPE_NESTED_NAME (btype).
	(default_assign_ref_body): Likewise.
	(default_copy_constructor_body): Call operator= explicitly for
	base classes that have no constructor.

Thu Dec  2 10:47:15 1993  Michael Tiemann  <tiemann@blues.cygnus.com>

	* cp-call.c (build_method_call): If the instance variable is
	converted to error_mark_node when we're trying to convert it to the
	base type of a method we're looking up, return error_mark_node.

Thu Dec  2 10:41:16 1993  Torbjorn Granlund  <tege@cygnus.com>

	* cp-typeck.c (build_binary_op_nodefault): In *_DIV_EXPR *_MOD_EXPR
	cases, tests for unsigned operands by peeking inside a NOP_EXPR.

Wed Dec  1 13:33:34 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-call.c (compute_conversion_costs_ansi): Use the size of struct
	harshness_code, not the size of short, for clearing out the
	ansi_harshness.

	* cp-call.c (print_candidates): New function.
	(build_method_call): When we had some candidates, but didn't get a
	usable match, don't report that we got an error with the first
	candidate.  Instead, say there were no matches, and list the
	candidates with print_candidates.  In the second pass, make sure we
	clear out ever_seen, so we can accurately count the number of
	functions that qualified.

Wed Dec  1 09:53:59 1993  Torbjorn Granlund  <tege@cygnus.com>

	* cp-typeck.c (build_binary_op_nodefault): Shorten for *_MOD_EXPR
	only if op1 is known to be != -1.
	(build_binary_op_nodefault): Handle *_DIV_EXPR likewise.

Tue Nov 30 14:07:26 1993  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* cp-method.c (hack_identifier): If the field itself is private, and
	not from a private base class, say so.

Mon Nov 29 03:00:56 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-decl.c (grokdeclarator): Always warn on initialization of
	const member.

Wed Nov 24 00:49:35 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-class.c (finish_struct): Set TYPE_GETS_CONST_* properly.
	(finish_base_struct): Set cant_synth_asn_ref properly.

	* cp-lex.c (cons_up_default_function): Add section for operator=.
	(default_assign_ref_body): New function, mostly cribbed from
	default_copy_constructor_body.

	* cp-class.c (base_info): Add members cant_synth_copy_ctor,
	cant_synth_asn_ref, no_const_asn_ref.
	(finish_base_struct): Update no_const_asn_ref, note that you should
	update cant_synth_*, propagate TYPE_GETS_ASSIGN_REF.
	(finish_struct): Add decls for cant_synth_*, no_const_asn_ref, and
	initialize them properly.  Set no_const_asn_ref properly.  Set
	cant_synth_* in some of the situations where they should be set.
	Propagate TYPE_GETS_ASSIGN_REF.  Use cant_synth_copy_ctor.  Add call
	to cons_up_default_function for operator=.

Tue Nov 23 20:24:58 1993  Mike Stump  <mrs@cygnus.com>

	* cp-cvt.c (convert_force): Add code to perform casting of pointer
	to member function types.
	* cp-typeck.c (build_ptrmemfunc): Add FORCE parameter to indicate
	when the conversion should be done, regardless.
	* cp-tree.h (build_ptrmemfunc): Likewise.
	* cp-type2.c (digest_init): Likewise.
	* cp-typeck.c (convert_for_assignment): Likewise.

Tue Nov 23 18:06:58 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-error.c (dump_expr): Do the right thing for variables of
	reference type.

	* cp-decl.c (grok_op_properties): Set TYPE_HAS_ASSIGN_REF
	and its kin properly.
	(xref_tag): Propagate TYPE_GETS_ASSIGN_REF.

Tue Nov 23 12:26:13 1993  Mike Stump  <mrs@cygnus.com>

	* cp-method.c (build_opfncall): Don't count pointer to member
	functions as aggregates here, as we don't want to look up methods in
	them.  The compiler would core dump if we did, as they don't have
	normal names.
	* cp-typeck.c (build_indirect_ref): Improve wording on error
	message.

Mon Nov 22 14:22:23 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-decl.c (grok_op_properties): Allow operator?: with pedwarn
	(since it's supported in other compiler bits).

	* cp-method.c (report_type_mismatch): Use cp_error; ignore err_name
	argument.

	* cp-error.c (dump_function_decl): Don't print return type for
	constructors and destructors.

	* cp-cvt.c (cp_convert_to_pointer): Import code from
	convert_to_pointer so we can return error_mark_node in the case of an
	error, and to allow more meaningful error messages.
	(build_type_conversion): Don't go through void* when trying
	to convert to a pointer type.

	* cp-decl.c (grokfndecl): Move call to grok_op_properties back
	after grokclassfn so that it's dealing with the right decl.
	(grok_op_properties): Don't assert !methodp for op new and op delete.

	* cp-init.c (build_delete): Don't use TYPE_BUILT_IN (there are now
	no uses of it in the compiler).

	* cp-call.c (build_scoped_method_call): Fix for destructors of simple
	types.
	(build_method_call): Likewise.

Fri Nov 19 12:59:38 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-tree.c (count_functions): Abstraction function.

	* cp-call.c (build_overload_call_real): Deal with new overloading
	properly, remove dead code.

	* gcc.c (default_compilers): Generate and use .ii files in the
	intermediate stage of compiling C++ source.

Fri Nov 19 11:26:09 1993  Jim Wilson  <wilson@sphagnum.cygnus.com>

	* cp-expr.c (cplus_expand_expr): Make call_target a valid memory
	address before using it, so it can be later safely compared.

Fri Nov 12 15:30:27 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-pt.c (tsubst): Deal with new overloading.

	* cp-typeck.c (fntype_p): Is the arg function type?
	(comp_target_parms): pedwarn on conversion from (anything) to (...).
	(build_x_function_call): Deal with new overloading.

	* cp-tree.c (decl_list_length): Deal with new overloading.
	(decl_value_member): Like value_member, but for DECL_CHAINs.

	* cp-decl.c (duplicate_decls): Deal with new overloading.
	(start_decl): Likewise.

	* cp-class.c (instantiate_type): Deal with new overloading.

	* cp-call.c (convert_harshness_ansi): Deal with new overloading.
	(convert_harshness_old): Deal with new overloading.
	(build_overload_call_real): Likewise.

Mon Nov  8 13:50:49 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-tree.c (get_unique_fn): New function; returns FUNCTION_DECL
	if unambiguous, NULL_TREE otherwise.
	(get_first_fn): Returns the first appropriate FUNCTION_DECL.
	(is_overloaded_fn): Returns whether or not the passed tree is
	a function or list of functions.

	* cp-init.c (init_init_processing): Use `get_first_fn' to find
	the FUNCTION_DEFN for new and delete.

	* cp-decl.c (push_overloaded_decl): Use new overloading strategy, cut
	code size in half (I spit on special cases).

Tue Sep  7 20:03:33 1993  Jason Merrill  <jason@deneb.cygnus.com>

	* cp-decl.c: Allow references and template type parameters as well


Copyright (C) 1993 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
