Tue Dec 22 15:09:25 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (cvt.o): Depend on toplev.h.

	* cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.

	* cvt.c: Include toplev.h.

	* except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
	definitions.

	* init.c (expand_vec_init): Initialize variable `itype'.

	* lex.c (yyerror): Cast the argument passed to a ctype function to
	an unsigned char.

	* method.c (build_mangled_C9x_name): Wrap prototype and definition
	in "HOST_BITS_PER_WIDE_INT >= 64".

	* typeck.c (build_binary_op): Mark parameter `convert_p' with
	ATTRIBUTE_UNUSED.

1998-12-22  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
	* tree.c (build_exception_variant): Don't crash on empty throw
	specs.

1998-12-18  DJ Delorie  <dj@cygnus.com>

	* cvt.c (convert_to_reference): Check for both error_mark_node
	and NULL_NODE after call to convert_for_initialization.

1998-12-17  Jason Merrill  <jason@yorick.cygnus.com>

	* error.c (interesting_scope_p): New fn.
	(dump_simple_decl): Use it.
	(dump_expr, case CONSTRUCTOR): Force a & for a PMF.
	(dump_expr, case OFFSET_REF): Print ->* if appropriate.

1998-12-16  Mark Mitchell  <mark@markmitchell.com>

	* class.c (resolve_address_of_overloaded_function): Do conversion
	to correct type here, rather than ...
	(instantiate_type): Here.

	* cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
	(DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
	(decl_template_parm_p): Remove.
	* decl.c (pushdecl): Don't set DECL_CONTEXT for a template
	parameter.
	* lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
	* pt.c (push_inline_template_parms_recursive): Set it.
	(decl_template_parm_p): Remove.
	(check_template_shadow): Use DECL_TEMPLATE_PARM_P.
	(process_template_parm): Set it.

Wed Dec 16 16:33:58 1998  Dave Brolley  <brolley@cygnus.com>

	* lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
	if configured with cpplib.

1998-12-15  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (poplevel): Make sure ns_binding is initialized.

	* decl.c (finish_function): Undo inadvertent change in previous
	patch.

1998-12-14  Mark Mitchell  <mark@markmitchell.com>

	* class.c (pushclass): Tweak handling of class-level bindings.
	(resolve_address_of_overloaded_function): Update pointer-to-member
	handling.
	(instantiate_type): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	* decl.c (pop_binding): Take the DECL to pop, not just the name.
	Deal with `struct stat' hack.
	(binding_level): Add to documentation.
	(push_binding): Clear BINDING_TYPE.
	(add_binding): New function.
	(push_local_binding): Use it.
	(push_class_binding): Likewise.
	(poplevel): Adjust calls to pop_binding.
	(poplevel_class): Likewise.
	(pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
	declarations to current binding level.
	(push_class_level_binding): Likewise.
	(push_overloaded_decl): Adjust handling of OVERLOADs in local
	bindings.
	(lookup_namespace_name): Don't crash when confronted with a
	TEMPLATE_DECL.
	(lookup_name_real): Do `struct stat' hack in local binding
	contexts.
	(build_ptrmemfunc_type): Adjust documentation.
	(grokdeclarator): Don't avoid building real array types when
	processing templates unless really necessary.
	(finish_method): Adjust calls to pop_binding.
	* decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
	not reparse_decl_as_expr.
	(build_expr_from_tree): Deal with a template-id as the function to
	call in a METHOD_CALL_EXPR.
	* pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
	(maybe_adjust_types_For_deduction): Don't do peculiar things with
	METHOD_TYPEs here.
	(resolve_overloaded_unification): Handle COMPONENT_REFs.  Build
	pointer-to-member types where necessary.
	* tree.c (build_cplus_array_type_1): Don't avoid building real
	array types when processing templates unless really necessary.
	(build_exception_variant): Compare the exception lists correctly.

1998-12-13  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.def (CPLUS_BINDING): Update documentation.
	* cp-tree.h (LOCAL_BINDING_P): New macro.
	(lang_identifier): Rename local_value to bindings.
	(tree_binding): Make `scope' of type `void*', not `tree'.
	(BINDING_SCOPE): Update documentation.
	(IDENTIFIER_LOCAL_VALUE): Remove.
	(IDENTIFIER_CLASS_VALUE): Document.
	(IDENTIFIER_BINDING): New macro.
	(IDENTIFIER_VALUE): Likewise.
	(TIME_IDENTIFIER_TIME): Likewise.
	(TIME_IDENTIFIER_FILEINFO): Likewise.
	(IMPLICIT_TYPENAME_P): Likewise.
	(set_identifier_local_value): Remove.
	(push_local_binding): New function.
	(push_class_binding): Likewise.
	* class.c (pushclass): Update comments; use push_class_binding.
	* decl.c (set_identifier_local_value_with_scope): Remove.
	(set_identifier_local_value): Likewise.
	(push_binding): New function.
	(pop_binding): Likewise.
	(binding_level): Update documentation.  Remove shadowed.
	(BINDING_LEVEL): New macro.
	(free_binding_nodes): New variable.
	(poplevel): Adjust for new name-lookup scheme.  Don't mess up
	BLOCK_VARs when doing for-scope extension.  Remove effectively
	dead code.
	(pushlevel_class): Tweak formatting.
	(poplevel_class): Adjust for new name-lookup scheme.
	(print_binding_level): Likewise.
	(store_bindings): Likewise.
	(pushdecl): Likewise.
	(pushdecl_class_level): Likewise.
	(push_class_level_binding): Likewise.
	(push_overloaded_decl): Update comments.  Adjust for new
	name-lookup scheme.
	(lookup_name_real): Likewise.
	(lookup_name_current_level): Likewise.
	(cp_finish_decl): Likewise.
	(require_complete_types_for_parms): Likewise.  Remove misleading
	#if 0'd code.
	(grok_parms): Likewise.  Don't call
	require_complete_types_for_parms here.
	(grok_ctor_properties): Don't treat templates as copy
	constructors.
	(grop_op_properties): Or as assignment operators.
	(start_function): Document.  Adjust for new name-lookup scheme.
	(finish_function): Likewise.
	* decl2.c (do_local_using_decl): Use push_local_binding.
	* lex.c (begin_definition_of_inclass_inline): New function, split
	out from ...
	(do_pending_inlines): Here, and ...
	(process_next_inline): Here.
	(get_time_identifier): Use TIME_IDENTIFIER_* macros.
	(init_filename_times): Likewise.
	(extract_interface_info): Likewise.
	(ste_typedecl_interface_info): Likewise.
	(check_newline): Likewise.
	(dump_time_statistics): Likewise.
	(handle_cp_pragma): Likewise.
	(do_identifier): Adjust for new name-lookup scheme.
	* parse.y (function_try_block): Return ctor_initializer_opt value.
	(fndef): Use it.
	(fn.defpen): Pass appropriate values to start_function.
	(pending_inline): Use functor_try_block value, and pass
	appropriate values to finish_function.
	* pt.c (is_member_template): Update documentation; remove handling
	of FUNCTION_DECLs.  As per name, this function should deal only in
	TEMPLATE_DECLs.
	(decl_template_parm_p): Change name of olddecl parameter to decl.
	(check_template_shadow): Adjust for new name-lookup scheme.
	(lookup_template_class): Likewise.
	(tsubst_decl): Tweak so as not to confuse member templates with
	copy constructors and assignment operators.
	(unify): Handle UNION_TYPEs.
	* ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
	(lang_print_xnode): Adjust for new name-lookup scheme.
	* typeck.c (mark_addressable): Likewise.
	(c_expand_return): Likewise.

1998-12-08  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokdeclarator): Allow field with same name as class
	in extern "C".

	* decl.c (lookup_name_real): Don't limit field lookup to types.
	* class.c (check_member_decl_is_same_in_complete_scope): No error
	if icv and x are the same.
	* lex.c (do_identifier): Tweak error message.

1998-12-10  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (start_enum): Use push_obstacks, not
	end_temporary_allocation.
	(finish_enum): Call pop_obstacks.

1998-12-10  Mark Mitchell  <mark@markmitchell.com>

	* class.c (instantiate_type): Return error_mark_node rather than
	junk.

1998-12-09  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (most_specialized_instantiation): New function.
	(print_candidates): Likewise.
	* class.c (validate_lhs): Remove.
	(resolve_address_of_overloaded_function): New function, split out
	and then substantially reworked, from ...
	(instantiate_type): Use it.  Simplify.
	* cvt.c (convert_to_reference): Complain when caller has indicated
	that's the right thing to do.  Don't crash if instantiate_type
	fails.
	* pt.c: Substitute `parameters' for `paramters' throughout.
	(print_candidates): Don't make it static.
	(most_specialized_instantiation): Split out from ...
	(most_specialized): Here.

Wed Dec  9 15:33:01 1998  Dave Brolley  <brolley@cygnus.com>

	* lex.c (lang_init_options): Initialize cpplib.
	* decl2.c (parse_options,cpp_initialized): Removed.
	(lang_decode_option): Move initialization of cpplib to
	lang_init_options.

1998-12-09  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
	well as the TYPE_DECL, when a typedef name is assigned to a
	previously anonymous type.

1998-12-08  Andrew MacLeod  <amacleod@cygnus.com>

	* cp/except.c (call_eh_info): Use __start_cp_handler instead of
	__cp_eh_info for getting the eh info pointer.  Add table_index to
	field list.
	(push_eh_cleanup): Don't increment 'handlers' data field.
	(process_start_catch_block): Don't set the 'caught' field.

	* cp/exception.cc (CP_EH_INFO): New macro for getting the
	exception info pointer within library routines.
	(__cp_eh_info): Use CP_EH_INFO.
	(__start_cp_handler): Get exception info pointer, set caught field,
	and increment the handlers field.  Avoids this being done by handlers.
	(__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro.
	(uncaught_exception): Use CP_EH_INFO macro.

Tue Dec  8 10:48:21 1998  Jeffrey A Law  (law@cygnus.com)

	* Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h

Mon Dec  7 17:56:06 1998  Mike Stump  <mrs@wrs.com>

	* lex.c (check_newline): Add support for \ as `natural'
	characters in file names in #line to be consistent with #include
	handling.  We support escape processing in the # 1 "..." version of
	the command.  See also support in cp/lex.c.

1998-12-07  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* cp/decl2.c: s/data/opts/ when initializing cpp_reader
	structure.

1998-12-07  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (build_typename_type): Set DECL_ARTIFICIAL.

	* error.c (dump_simple_decl): Also print namespace context.
	(dump_function_decl): Likewise.

	* decl2.c (ambiguous_decl): Don't print old value if it's
	error_mark_node.

	* decl.c (lookup_name_real): Fix handling of local types shadowed
	by a non-type decl.  Remove obsolete code.
	* cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.

	* lang-options.h: Add -fpermissive.
	* decl2.c: Likewise.
	* cp-tree.h: Add flag_permissive.
	* decl.c (init_decl_processing): If neither -fpermissive or -pedantic
	were specified, set flag_pedantic_errors.
	* call.c (build_over_call): Turn dropped qualifier messages
	back into pedwarns.
	* cvt.c (convert_to_reference): Likewise.
	* typeck.c (convert_for_assignment): Likewise.

1998-12-05  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (coerce_new_type): Use same_type_p.
	(coerce_delete_type): Likewise.

	* call.c (check_dtor_name): Return 1, not error_mark_node.

1998-12-04  Jason Merrill  <jason@yorick.cygnus.com>

	* lex.c (handle_cp_pragma): Disable #pragma interface/implementation
	if MULTIPLE_SYMBOL_SPACES.

	* pt.c (check_template_shadow): New fn.
	* decl2.c (grokfield): Use it.
	* decl.c (pushdecl): Likewise.
	(pushdecl_class_level): Likewise.
	(start_method): Likewise.
	(xref_tag): Don't try to use 't' if we're defining.

	* call.c (check_dtor_name): Just return an error_mark_node.
	* pt.c (lookup_template_class): Complain about using non-template here.
	* parse.y (apparent_template_type): Not here.

	* pt.c (check_explicit_specialization): Complain about specialization
	with C linkage.

	* lang-options.h: Add -f{no-,}implicit-inline-templates.

	* pt.c (convert_nontype_argument): Don't assume that any integer
	argument is intended to be a constant-expression.

1998-12-03  Mark Mitchell  <mark@markmitchell.com>

	* class.c (handle_using_decl): Fix comment.  Don't lookup
	constructors in base classes.
	(validate_lhs): Fix typo in comment.
	* search.c (lookup_field_1): Don't return a USING_DECL.

	* cp-tree.h (DECL_ACCESS): Improve documentation.

	* decl.c (expand_static_init): Don't set the initialization-done
	flag until the initialization is done.

1998-12-02  Mark Mitchell  <mark@markmitchell.com>

	* decl2.c (validate_nonmember_using_decl): Complain about using
	declarations for class members.

1998-11-29  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (process_init_constructor): Use same_type_p.

	* decl.c (check_tag_decl): Don't warn about null decl inside a
	class.

	* pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
	UNIFY_ALLOW_NONE.
	(convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
	(resolve_overloaded_unification): Strip baselinks.

Fri Nov 27 13:07:23 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* g++spec.c: Don't prototype xmalloc.

1998-11-25  Jason Merrill  <jason@yorick.cygnus.com>

	* except.c (expand_throw): Use TYPE_PTR_P to check for pointers.

	* decl.c (check_tag_decl): Do complain about null friend decl at
	file scope.

1998-11-25  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* lex.c (make_lang_type): Clear the whole struct lang_type, not
	only the first multiple of sizeof (int).

1998-11-24  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (start_decl): An explicit specialization of a static data
	member is only a definition if it has an initializer.

	* except.c (expand_throw): Use cp_finish_decl for the throw temp.
	* cvt.c (build_up_reference): Pass DIRECT_BIND down into
	cp_finish_decl.
	* init.c (expand_default_init): Check for DIRECT_BIND instead of
	DECL_ARTIFICIAL.

	* call.c (build_over_call): Use build_decl.

	* except.c (expand_throw): Just use convert, not
	build_reinterpret_cast.

	* lex.c (handle_generic_pragma): Use token_buffer.

	* decl.c (check_tag_decl): Don't complain about null friend decl.

1998-11-24  Dave Pitts  <dpitts@cozx.com>

	* Make-lang.in (DEMANGLER_PROG): Move the output arguments to the
	first position.
	* lex.c (check_newline): Use ISALPHA.
	(readescape): Use ISGRAPH.
	(yyerror): Use ISGRAPH.

1998-11-24  Nathan Sidwell  <nathan@acm.org>

	* search.c (get_abstract_virtuals): Do not use initial
	CLASSTYPE_ABSTRACT_VIRTUALS.
	* typeck2.c (abstract_virtuals_error): Show location of abstract
	declaration.
	* call.c (build_new_method_call): Use
	CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
	* class.c (finish_struct_bits): Don't bother working out whether
	get_abstract_virtuals will do anything, just do it.

1998-11-24  Graham  <grahams@rcp.co.uk>

	* typeck.c (build_component_ref): Remove unused statement.

1998-11-24  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (add_method): Catch invalid overloads.

	* class.c (add_method): Build up OVERLOADs properly for conversion ops.
	* search.c (lookup_conversions): Handle getting real OVERLOADs.
	(add_conversions): Likewise.  Revert last change.
	* call.c (add_conv_candidate): Pass totype to add_candidate instead
	of fn.  Don't add a new candidate if the last one was for the same
	type.
	(print_z_candidates): Handle getting a type as a function.
	(joust): If we got two conversion candidates to the same type,
	just pick one.
	(build_object_call): Lose 'templates'.
	(build_user_type_conversion_1): Handle getting real OVERLOADs.

1998-11-23  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (process_init_constructor): If there are elements
	that don't have initializers and they need to have constructors
	run, supply them with initializers.

	* class.c (finish_struct_1): A class with a 0-width bitfield is
	still empty.

1998-11-23  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (instantiate_class_template): Don't try to figure out what
	specialization to use for a partial instantiation.  Correct
	typos in a couple of comments.  Avoid calling uses_template_parms
	multiple times.

1998-11-23  Benjamin Kosnik  <bkoz@cygnus.com>

	* method.c (process_overload_item): Add call to
	build_mangled_C9x_name for intTI_type_nodes.
	(build_mangled_C9x_name): Add prototype, define.
	* decl.c (init_decl_processing): Add names for
	TImode_type_node.

1998-11-23  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.

	* class.c (finish_struct_1): Set things up for 0-width bitfields
	like we do for others.

	* decl.c (check_tag_decl): New fn.
	(shadow_tag): Split out from here.
	* decl2.c (grok_x_components): Call it.

1998-11-22  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c: Lose warn_about_return_type.
	(grokdeclarator): Always complain about implicit int, except for
	`main () { ... }'.

	* decl.c (tag_name): New fn.
	(xref_tag): Complain about using typedef-name after class-key.

	* init.c (expand_vec_init): Also keep going if from_array.

	* tree.c (is_overloaded_fn): Also handle the output of
	build_offset_ref.

	* decl.c (grokdeclarator): Use constructor_name when comparing
	field name against enclosing class.
	* class.c (finish_struct_anon): Likewise.

1998-11-22  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (poplevel): Remove code to handle KEEP == 2.
	(finish_function): Don't confuse BLOCK-order when
	processing a destructor.

1998-11-21  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (require_complete_types_for_parms): Call layout_decl
	after we've completed the type.

1998-11-21  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl2.c (validate_nonmember_using_decl): Allow using templates
	from the global namespace.

1998-11-21  Jason Merrill  <jason@yorick.cygnus.com>

	Handle specifying template args to member function templates.
	* tree.c (build_overload): Always create an OVERLOAD for a template.
	* search.c (add_conversions): Handle finding an OVERLOAD.
	* decl2.c (check_classfn): Likewise.
	* lex.c (identifier_type): See through a baselink.
	* parse.y (do_id): Don't call do_identifier if we got a baselink.
	* class.c (instantiate_type, case TREE_LIST): Recurse.

	* decl.c (grokdeclarator): Allow a boolean constant for array
	bounds, odd as that sounds.

	* pt.c (unify): Be more strict about non-type parms, except for
	array bounds.
	(UNIFY_ALLOW_INTEGER): New macro.

1998-11-19  Manfred Hollstein  <manfred@s-direktnet.de>

	* Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).

1998-11-19  Jason Merrill  <jason@yorick.cygnus.com>

	* semantics.c (begin_class_definition): Call
	maybe_process_partial_specialization before push_template_decl.
	Don't call push_template_decl for a specialization.
	* search.c (lookup_field): Do return a member template class.
	* decl2.c (handle_class_head): Handle member template classes.

	* decl.c (grokdeclarator): A parm type need not be complete.

	* pt.c (convert_nontype_argument): Fix thinko.

1998-11-18  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (PTRMEM_CST_CLASS): Fix typo.
	(global_delete_fndecl): New variable.
	* decl.c (global_delete_fndecl): Define it.
	(init_decl_processing): Set it.
	* init.c (build_builtin_delete_call): Use it.
	* tree.c (mapcar): Recursively call mapcar for the type of EXPR
	nodes.

1998-11-18  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (cplus_expand_expr_stmt): Always complain about unresolved
	type.

	* tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue.
	* call.c (build_object_call): Also support references to functions.
	* typeck.c (convert_for_initialization): Don't decay a function
	if the target is a reference to function.

	* search.c (add_conversions): Get all the overloads from a class.

	* decl.c (grok_ctor_properties): Complain about any constructor
	that will take a single arg of the class type by value.

	* typeck2.c (build_functional_cast): Can't create objects of
	abstract classes this way.
	* cvt.c (ocp_convert): Likewise.

	* decl.c (grokfndecl): Member functions of local classes are not
	public.

1998-11-18  Mark Mitchell  <mark@markmitchell.com>

	* Make-lang.in (cc1plus): Add dependency on hash.o.

1998-11-18  Jason Merrill  <jason@yorick.cygnus.com>

	* search.c (get_abstract_virtuals): Complain about virtuals with
	no final overrider.
	* typeck2.c (abstract_virtuals_error): Remove handling for virtuals
	with no final overrider.
	* class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
	on virtuals with no final overrider.

	* lex.c (reinit_parse_for_block): Add a space after the initial ':'.

	* class.c (finish_struct_1): Don't remove zero-width bit-fields until
	after layout_type.

	* friend.c (do_friend): Don't set_mangled_name_for_decl.

	* class.c (finish_struct_anon): Complain about non-fields.
	* decl2.c (build_anon_union_vars): Likewise.

	* decl.c (grokdeclarator): Normal data members can't have the same
	name as the class, either.
	* class.c (finish_struct_anon): Neither can members of an
	anonymous union.

1998-11-17  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
	(TYPE_BINFO): Likewise.
	(IS_AGGR_TYPE): Tweak.
	(SET_IS_AGGR_TYPE): New macro.
	(CLASS_TYPE_P): Tweak.
	(lang_type): Group mark bitfields together.  Remove linenum.
	(CLASSTYPE_SOURCE_LINE): Remove macro.
	(CLASSTYPE_MARKED_N): New macro.
	(SET_CLASSTYPE_MARKED_N): Likewise.
	(CLEAR_CLASSTYPE_MARKED_N): Likewise.
	(CLASS_TYPE_MARKED_*): Use them.
	(SET_CLASSTYPE_MARKED_*): Likewise.
	(CLEAR_CLASSTYPE_MARKED_*): Likewise.
	(TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
	(TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
	(TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
	* class.c (class_cache_obstack): New variable.
	(class_cache_firstobj): Likewise.
	(finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
	(pushclass): Free the cache, when appropriate.
	(popclass): Tidy.
	(maybe_push_cache_obstack): Use class_cache_obstack.
	* decl.c (include hash.h).
	(typename_hash): New function.
	(typename_compare): Likewise.
	(build_typename_type): Check the hash table to avoid creating
	duplicates.
	(build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
	(grokdeclarator): Use CLASS_TYPE_P.
	(xref_basetypes): Likewise.
	(start_function): Likewise.  Don't put current_class_ref on the
	permanent obstack.
	* error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
	and TYPE_TI_ARGS.
	* lex.c (note_got_semicolon): Use CLASS_TYPE_P.
	(make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
	fields for types other than class types.  Do clear TYPE_ALIAS_SET
	for types other than class types, though.
	* method.c (build_overload_identifier): Use CLASS_TYPE_P and
	TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
	* pt.c (process_template_parm): Don't set
	CLASSTYPE_GOT_SEMICOLON.
	(lookup_template_class): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
	Coerce arguments on the momentary obstack.
	(for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
	(instantiate_class_template): Calculate template arguments on the
	momentary obstack.  Tidy.
	(tsubst_template_arg_vector): Use make_temp_vec.
	(tsubst_aggr_type): Put template arguments on the momentary
	obstack.
	(tsubst_decl): Likewise.
	(tsubst): Copy the array bounds index to the permanent obstack
	before building index types.  Use new macros.
	(unify): Use new macros.
	(do_type_instantiation): Likewise.
	* search.c (lookup_fnfields_1): Use new macros.
	(dfs_pushdecls): Build envelopes on the cache obstack.
	(dfs_compress_decls): Use new macros.
	(push_class_decls): Build on the cache obstack.
	* semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
	* sign.c (build_signature_pointer_or_reference_type): Use
	SET_IS_AGGR_TYPE.
	* tree.c (make_binfo): Check CLASS_TYPE_P.
	(copy_template_template_parm): Adjust.
	(make_temp_vec): Use push_expression_obstack.
	* typeck.c (complete_type): Use new macros.
	(comptypes): Likewise.

1998-11-17  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst): Add diagnostics for invalid array, reference
	and pointer to member types.

1998-11-16  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (my_friendly_abort): Don't fatal twice in a row.

	* typeck.c (c_expand_start_case): Use build_expr_type_conversion.
	Simplify.

	* parse.y (structsp): Fix cut-and-paste error.

	* init.c (build_new): Complain about non-integral size.

	* parse.y (unary_expr): Complain about defining types in sizeof.

	* typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.

	* rtti.c (build_x_typeid): Complain about typeid without
	including <typeinfo>.
	(get_typeid): Likewise.  Complain about typeid of incomplete type.
	(get_tinfo_fn_dynamic): Likewise.
	(get_typeid_1): Not static anymore.
	* except.c (build_eh_type_type): Use get_typeid_1.

	* rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
	ambiguous or private bases.  Fix warning for reference cast.

1998-11-16  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro.
	* decl.c (duplicate_decls): Remove special-case code to deal with
	template friends, and just do the obvious thing.
	* pt.c (register_specialization): Tweak for clarity, and also to
	clear DECL_INITIAL for an instantiation before it is merged with a
	specialization.
	(check_explicit_specialization): Fix indentation.
	(tsubst_friend_function): Handle both definitions in friend
	declaration and outside friend declarations.
	(tsubst_decl): Don't clear DECL_INITIAL for an instantiation.
	(regenerate_decl_from_template): Tweak accordingly.
	(instantiate_decl): Likewise.

1998-11-16  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (cplus_expand_expr_stmt): Promote warning about naked
	member function reference to error.
	* cvt.c (ocp_convert): Complain about converting an overloaded
	function to void.

	* init.c (build_offset_ref): Just return a lone static member
	function.

	* decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
	not internal ones.

	* typeck.c (build_binary_op_nodefault): Improve error handling.

	* decl.c (grokfndecl): Complain about making 'main' a template.

	* typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.

	* call.c (build_method_call): Handle a BIT_NOT_EXPR around a
	TYPE_DECL in a template.

1998-11-15  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (my_friendly_abort): Add URL in the other case, too.

	* decl.c (struct cp_function): Add named_label_uses.
	(push_cp_function_context): Save it.
	(pop_cp_function_context): Restore it.
	(define_label): Also complain about jumping into the scope of
	non-POD objects that don't have constructors.
	* tree.c (pod_type_p): New fn.

	* pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner.
	* rtti.c (synthesize_tinfo_fn): Call import_export_decl here.
	(get_tinfo_fn): Not here.
	* repo.c (repo_get_id): Abort if we get called for an incomplete
	type.

1998-11-13  Mark Mitchell  <mark@markmitchell.com>

	* except.c (expand_throw): Make sure first argument to
	__cp_push_exception is of type `void*' to avoid spurious error
	messages.

1998-11-11  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (try_one_overload): Take orig_targs again.  Only check for
	mismatches against them; we don't care what a previous call found.
	(resolve_overloaded_unification): Adjust.

	* search.c (lookup_field): Don't return anything for a non-type
	field from a dependent type.
	* decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class
	in an array declarator.
	(start_decl): Push into the class before looking for the field.

1998-11-08  Mark Mitchell  <mark@markmitchell.com>

	* method.c (build_overload_value): Handle REFERENCE_TYPE.

1998-11-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (grokdeclarator): Allow namespace-scoped members if they
	are friends.

1998-11-08  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst_decl): Don't mess with the global value of an
	un-mangled DECL_ASSEMBLER_NAME.

1998-11-03  Christopher Faylor  <cgf@cygnus.com>

	* decl.c (init_decl_processing): Remove CYGWIN conditional
	since CYGWIN is now able to deal with trapping signals.

Sat Nov  7 15:48:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-tree.h: Don't include gansidecl.h.
	* exception.cc: Include gansidecl.h (since we don't include config.h)
	* g++spec.c: Don't include gansidecl.h.

1998-11-06  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (lang_decl_flags): Add defined_in_class.  Decrease
	size of dummy.
	(DECL_DEFINED_IN_CLASS_P): New macro.
	(TEMPLATE_PARMS_FOR_INLINE): Document.
	(check_static_variable_definition): New function.
	* decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if
	appropriate.
	(check_static_variable_definition): Split out from ...
	(grokdeclarator): Here.
	* pt.c (check_default_tmpl_args): New function, split out from ...
	(push_template_decl_real): Here.
	(instantiate_template): Fix comment.

1998-11-04  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
	(CP_TYPE_VOLATILE_P): Likewise.
	(CP_TYPE_RESTRICT_P): Likewise.

1998-11-03  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (tsubst): Use build_index_type, not build_index_2_type.

1998-11-02  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (instantiate_type): Be more helpful.

	* decl2.c (import_export_decl): Call import_export_class.

	* cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR.
	* decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR.
	* pt.c (tsubst_copy): Likewise.

1998-11-02  Mark Mitchell  <mark@markmitchell.com>

	* init.c (expand_vec_init): Fix off-by-one error.

1998-11-02  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* parse.y (apparent_template_type): New type.
	(named_complex_class_head_sans_basetype): Use it.
	* Makefile.in (CONFLICTS): One new conflict.
	* parse.c: Regenerated.

1998-11-01  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (COMPARE_STRICT): New macro.
	(COMPARE_BASE): Likewise.
	(COMPARE_RELAXED): Likewise.
	(COMPARE_REDECLARATION): Likewise.
	(same_type_p): Likewise.
	(same_or_base_type_p): Likewise.
	* call.c (standard_conversion): Use them, in place of comptypes
	with numeric arguments.
	(reference_binding): Likewise.
	(convert_like): Likewise.
	(build_over_call): Likewise.
	(is_subseq): Likewise.
	(is_properly_derived_from): Likewise.
	(compare_ics): Likewise.
	(joust): Likewise.
	* class.c (delete_duplicate_fields_1): Likewise.
	(resolves_to_fixed_type_p): Likewise.
	(instantiate_type): Likewise.  Remove #if 0'd code.
	* decl.c (decls_match): Likewise.  Use COMPARE_REDECLARATION here.
	(pushdecl): Likewise.
	(lookup_name_real): Likewise.
	(grokdeclarator): Likewise.  Check for illegal array declarations.
	(grokparms): Likewise.
	(grok_op_properties): Likewise.
	* decl2.c (check_classfn): Likewise.
	* friend.c (is_friend): Likewise.
	(make_friend_class): Likewise.
	* init.c (expand_aggr_init): Likewise.
	(expand_vec_init): Likewise.
	* pt.c (is_member_template_class): Remove declaration.
	(is_specialization_of): Use COMPARE_* and new macros.
	(comp_template_parms): Likewise.
	(convert_nontype_argument): Likewise.
	(coerce_template_template_parms): Likewise.
	(template_args_equal): Likewise.
	(lookup_template_class): Likewise.
	(type_unification_real): Likewise.
	(unify): Likewise.
	(get_bindings_real): Likewise.
	* search.c (covariant_return_p): Likewise.
	(get_matching_virtual): Likewise.
	* sig.c (match_method_types): Likewise.
	* tree.c (vec_binfo_member): Likewise.
	(cp_tree_equal): Likewise.
	* typeck.c (common_type): Likewise.
	(comp_array_types): Likewise.  Get issues involving unknown array
	bounds right.
	(comptypes): Update comments.  Use new flags.
	(comp_target_types): Use new macros.
	(compparms): Likewise.
	(comp_target_parms): Likewise.
	(string_conv_p): Likewise.
	(build_component_ref): Likewise.
	(build_indirect_ref): Likewise.
	(build_conditional_expr): Likewise.
	(build_static_cast): Likewise.
	(build_reinterpret_cast): Likewise.
	(build_const_cast): Likewise.
	(build_modify_expr): Likewise.
	(convert_for_assignment): Likewise.
	(comp_ptr_ttypes_real): Likewise.
	(ptr_reasonably_similar): Likewise.
	(comp_ptr_ttypes_const): Likewise.

1998-10-31  Jason Merrill  <jason@yorick.cygnus.com>

	* rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.

1998-10-30  Mark Mitchell  <mark@markmitchell.com>

	* decl2.c (delete_sanity): Pass integer_zero_node, not
	integer_two_node, to build_vec_delete.
	* init.c (build_array_eh_cleanup): Remove.
	(expand_vec_init_try_block): New function.
	(expand_vec_init_catch_clause): Likewise.
	(build_vec_delete_1): Don't deal with case that auto_delete_vec
	might be integer_two_node anymore.
	(expand_vec_init): Rework for initialization-correctness and
	exception-correctness.
	* typeck2.c (process_init_constructor): Make mutual exclusivity
	of cases more obvious.

1998-10-29  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (lookup_name_real): OK, only warn if not lexing.
	Simplify suggested fix.

	* cp-tree.h (IDENTIFIER_MARKED): New macro.
	* search.c (lookup_conversions): Use breadth_first_search.
	(add_conversions): Avoid adding two conversions to the same type.
	(breadth_first_search): Work with base binfos, rather
	than binfos and base indices.
	(get_virtual_destructor): Adjust.
	(tree_has_any_destructor_p): Adjust.
	(get_matching_virtual): Adjust.

	* pt.c (push_template_decl_real): Generalize check for incorrect
	number of template parms.
	(is_member_template_class): #if 0.

1998-10-29  Richard Henderson  <rth@cygnus.com>

	* Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
	last.

1998-10-28  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* lex.c: Call check_newline from lang_init always.  After
	calling cpp_start_read, set yy_cur and yy_lim to read from the
	cpplib token buffer.

1998-10-28  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (instantiate_type): Don't consider templates for a normal
	match.

	* class.c (finish_struct_1): Don't complain about non-copy
	assignment ops in union members.

	* class.c (build_vtable): Don't pass at_eof to import_export_vtable.
	(prepare_fresh_vtable): Likewise.
	(finish_struct_1): Don't call import_export_class.
	* decl2.c (finish_vtable_vardecl): Do import/export stuff.
	(finish_prevtable_vardecl): Lose.
	(finish_file): Don't call it.
	* pt.c (instantiate_class_template): Likewise.
	* cp-tree.h: Remove it.

	* init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
	* decl.c (finish_function): Not here.
	(start_function): Do set DECL_INITIAL.

	* pt.c (push_template_decl_real): Complain about default template
	args for enclosing classes.

	* call.c (add_function_candidate): Treat conversion functions
	as coming from the argument's class.
	* cp-tree.h (DECL_CONV_FN_P): New fn.
	(DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
	* class.c (add_method): Use DECL_CONV_FN_P.
	* decl2.c (check_classfn): Likewise.
	* error.c (dump_function_name): Likewise.
	(dump_function_decl): Likewise.
	* pt.c (fn_type_unification): Likewise.
	* search.c (add_conversions): Likewise.

1998-10-27  Jason Merrill  <jason@yorick.cygnus.com>

	* lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
	* method.c (hack_identifier): Also check for using RESULT_DECL
	from outer context.

1998-10-27  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokdeclarator): Use type_quals, rather than constp,
	consistently.

1998-10-27  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (standard_conversion): instantiate_type here.
	(reference_binding): And here.
	(implicit_conversion): Not here.
	(build_op_delete_call): No need to cons up an OVERLOAD.
	* cvt.c (cp_convert_to_pointer): instantiate_type here.
	(convert_to_reference): And here.
	* decl.c (grok_reference_init): Not here.
	(grokparms): Or here.
	* typeck2.c (digest_init): Or here.
	* typeck.c (decay_conversion): Take the address of overloaded
	functions, too.
	(require_instantiated_type): Lose.
	(convert_arguments): Don't handle unknown types here.
	(build_c_cast): Likewise.
	(build_binary_op): Gut.
	(build_conditional_expr): Don't require_instantiated_type.
	(build_modify_expr): Likewise.
	(build_static_cast): Don't instantiate_type.
	(build_reinterpret_cast): Likewise.
	(build_const_cast): Likewise.
	(convert_for_initialization): Likewise.
	(build_ptrmemfunc): Use type_unknown_p.
	(convert_for_assignment): Also do default_conversion on overloaded
	functions.  Hand them off to ocp_convert.

1998-10-26  Mark Mitchell  <mark@markmitchell.com>

	* error.c (dump_decl): Deal with TEMPLATE_DECLs that are
	VAR_DECLs.  Handle vtables whose DECL_CONTEXT is not a type.

	* class.c (finish_struct_1): Use build_cplus_array_type to build
	array types.
	* decl.c (init_decl_processing): Likewise.
	* except.c (expand_end_eh_spec): Likewise.
	* search.c (expand_upcast_fixups): Simplify very slightly.

1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokdeclarator): Complain about a variable using
	constructor syntax coming back null from start_decl.

	* friend.c (make_friend_class): Complain about trying to make
	a non-class type a friend.

	* decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
	(start_function): Not here.

1998-10-26  Brendan Kehoe  <brendan@cygnus.com>

	* decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.

1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (process_init_constructor): Only skip anonymous fields
	if they are bitfields.

	* cp-tree.def (TYPEOF_TYPE): New code.
	* error.c (dump_type_real): Handle it.
	* pt.c (tsubst): Likewise.
	* tree.c (search_tree): Likewise.
	* semantics.c (finish_typeof): New fn.
	* parse.y (typespec): Use it.
	* cp-tree.h: Declare it.

1998-10-26  Manfred Hollstein  <manfred@s-direktnet.de>

	* cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.

1998-10-26  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (convert_arguments): Don't handle pmf references
	specially.

	* init.c (build_member_call): Don't try to convert to the base type
	if it's ambiguous or pedantic.

	* typeck2.c (check_for_new_type): Only depend on pedantic for
	C-style casts.

1998-10-25  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
	non-converting constructors.

1998-10-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* gxxint.texi: Correct documentation for n, N, Q, and B.

1998-10-23  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* parse.y (condition): Convert VAR_DECL from reference to indirect
	reference.

1998-10-23  Andrew MacLeod  <amacleod@cygnus.com>

	* exception.cc (__cp_pop_exception): Free the original exception
	value, not the potentially coerced one.

1998-10-23  Mark Mitchell  <mark@markmitchell.com>

	* Makefile.in (hash.h): Run gperf when necessary.

	* cp-tree.h (CP_TYPE_READONLY): Remove.
	(CP_TYPE_VOLATILE): Likewise.
	(CP_TYPE_QUALS): New macro.
	(CP_TYPE_CONST_P): Likewise.
	(CP_TYPE_VOLATILE_P): Likewise.
	(CP_TYPE_RESTRICT_P): Likewise.
	(CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
	(cp_build_type_variant): Rename to ...
	(cp_build_qualified_type): New function.
	(c_apply_type_quals_to_decl): Declare.
	(SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
	(SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
	(cp_type_qual_from_rid): New function.
	(compparms): Remove unused parameter.  All callers changed.
	(cp_type_quals): New function.
	(at_least_as_qualified_p): Likewise.
	(more_qualified_p): Likewise.

	* call.c (standard_conversion): Replace calls to
	cp_build_type_variant with cp_build_qualified_type.  Use
	CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
	compare them.  Use CP_TYPE_* macros to check qualifiers.
	(reference_binding): Likewise.
	(implicit_conversion): Likewise.
	(add_builtin_candidates): Likewise.
	(build_over_call): Likewise.
	* class.c (overrides): Compare all qualifiers, not just `const',
	on method declarations.
	* cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
	(convert_pointer_to_real): Likewise.
	(type_promotes_to): Likewise.
	* decl.c (check_for_uninitialized_const_var): New function.
	(init_decl_processing): More CP_TYPE_QUALS conversion, etc.
	(cp_finish_decl): Use check_for_uninitialized_const_var.
	(grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
	handle `restrict'.
	(grok_ctor_properties): Likewise.
	(grok_op_properties): Likewise.
	(start_function): Likewise.
	(rever_static_member_fn): Likewise.
	* decl2.c (grok_method_quals): Likewise.
	(grokfield): Likewise.
	* error.c (dump_readonly_or_volatile): Rename to ...
	(dump_qualifiers): New function.  Handle `restrict'.
	(dump_type_real): Use it.
	(dump_aggr_type): Likewise.
	(dump_type_prefix): Likewise.
	(dump_type_suffix): Likewise.
	(dump_function_decl): Likewise.
	(cv_as_string): Likewise.
	* gxx.gperf: Add __restrict and __restrict__.
	* gxxint.texi: Document `u' as used for `__restrict', and a few
	other previously undocumented codes.
	* hash.h: Regenerated.
	* init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
	(build_member_call): Likewise.
	(build_new_1): Likewise.
	* lex.c (init_parse): Add entry for RID_RESTRICT.
	(cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
	(cp_type_qual_from_rid): Define.
	* lex.h (enum rid): Add RID_RESTRICT.
	* method.c (process_modifiers): Deal with `restrict'.
	* parse.y (primary): More CP_TYPE_QUALS conversion, etc.
	* parse.c: Regenerated.
	* pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
	(tsubst_aggr_type): Likewise.
	(tsubst): Likewise.
	(check_cv_quals_for_unify): Likewise.
	(unify): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	(build_headof): Likewise.
	(get_tinfo_var): Likewise.
	(buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
	(expand_class_desc): Likewise.
	(expand_attr_desc): Likewise.
	(synthesize_tinfo_fn): Likewise.
	* search.c (covariant_return_p): Likewise.  Fix `volatile' handling.
	(get_matching_virtual): Likewise.
	(expand_upcast_fixups): Likewise.
	* sig.c (build_signature_pointer_or_reference_name): Take
	type_quals, not constp and volatilep.
	(build_signature_pointer_or_reference_type): Likewise.
	(match_method_types): More CP_TYPE_QUALS conversion, etc.
	(build_signature_pointer_constructor): Likewise.
	(build_signature_method_call): Likewise.
	* tree.c (build_cplus_array_type): Likewise.
	(cp_build_type_variant): Rename to ...
	(cp_build_qualified_type): New function.  Deal with `__restrict'.
	(canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
	(build_exception_variant): Likewise.
	(mapcar): Likewise.
	* typeck.c (qualif_type): Likewise.
	(common_type): Likewise.
	(comptypes): Likewise.
	(comp_cv_target_types): Likewise.
	(at_least_as_qualified_p): Define.
	(more_qualified_p): Likewise.
	(comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
	(compparms): Likewise.
	(inline_conversion): Likewise.
	(string_conv_p): Likewise.
	(build_component_ref): Likewise.
	(build_indirect_ref): Likewise.
	(build_array_ref): Likewise.
	(build_unary_op): Likewise.
	(build_conditional_expr): Likewise.
	(build_static_cast): Likewise.
	(build_c_cast): Likewise.
	(build_modify_expr): Likewise.
	(convert_For_assignment): Likewise.
	(comp_ptr_ttypes_real): Likewise.
	(cp_type_quals): New function.

1998-10-23  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
	(CP_TYPE_VOLATILE): Likewise.
	* decl.c (grokdeclarator): Use them.
	* tree.c (canonical_type_variant): Likewise.

1998-10-22  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* parse.y (named_class_head): Push into class while parsing the
	base class list.
	* decl2.c (push_scope, pop_scope): New functions.
	* cp-tree.h: Declare them.
	* init.c (build_new_1): Delay cleanup until end of full expression.

1998-10-21  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (build_component_ref): Use of a type here is an error.

1998-10-19  Jason Merrill  <jason@yorick.cygnus.com>

	Revamp references to member functions.
	* method.c (hack_identifier): Call build_component_ref for a
	reference to a member function.
	* typeck.c (build_component_ref): Only return a single function
	if it's static.  Otherwise, return a COMPONENT_REF.
	(build_x_function_call): Handle a COMPONENT_REF.
	(build_unary_op): Handle all unknown-type things.
	* decl2.c (arg_assoc): Handle COMPONENT_REF.
	* class.c (instantiate_type): Complain if the function we get is a
	nonstatic member function.  Remove code for finding "compatible"
	functions.
	* pt.c (tsubst_copy): Handle NOP_EXPR.
	* tree.c (build_dummy_object): New fn.
	(maybe_dummy_object): New fn.
	(is_dummy_object): New fn.
	* cp-tree.h: Declare them.
	* cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
	* error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
	* init.c (build_member_call): Use maybe_dummy_object and
	is_dummy_object.
	(build_offset_ref): Use maybe_dummy_object.
	(resolve_offset_ref): Use is_dummy_object.
	* typeck.c (build_x_function_call): Call build_dummy_object.
	(unary_complex_lvalue): Call is_dummy_object.

	* typeck.c (build_component_addr): Make sure field is a field.

	* call.c (build_new_op): Delete obsolete code.

	* pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.

1998-10-18  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl2.c (validate_nonmember_using_decl): Fix using-directives of
	std if std is ignored.

1998-10-18  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokvardecl): Fix thinko.

	* decl.c (grokdeclarator): Embedded attrs bind to the right,
	not the left.

	* parse.y (fn.def2): Fix 'attrs' format.

1998-10-18  Alastair J. Houghton  <ajh8@doc.ic.ac.uk>

	* Makefile.in (CONFLICTS): Update.
	* parse.y (expr_or_declarator_intern): New rule.
	(expr_or_declarator, direct_notype_declarator, primary,
	functional_cast): Use it.
	(notype_declarator_intern): New rule.
	(notype_declarator, complex_notype_declarator): Use it.

1998-10-17  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
	(grokvardecl): Likewise.

Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
	(add_method): Likewise for arguments 1 & 2 of `bcopy'.

	* decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.

	* pt.c (process_partial_specialization): Cast 1st argument of
	`bzero' to (PTR).

	* tree.c (build_base_fields): Cast `base_align' to (int) when
	comparing against one.

1998-10-16  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (lookup_name_real): Handle template parameters for member
	templates where said parameters have the same name as the
	surrounding class.

	* decl.c (expand_static_init): Build cleanups before entering the
	anonymous function used to do them to avoid access-checking
	confusion.

	* decl.c (grokfndecl): Add back call to cplus_decl_attributes
	accidentally removed by previous change, and make DECL_RTL here.
	* class.c (add_method): Don't make DECL_RTL here.

	* pt.c (for_each_template_parm): Don't examine uninstantiated
	default arguments.

1998-10-16  Dave Brolley  <brolley@cygnus.com>

	* lex.c (real_yylex): Fix unaligned access of wchar_t.

1998-10-16  Mark Mitchell  <mark@markmitchell.com>

	* class.c (add_method): Fix documentation to reflect previous
	changes.  Check for duplicate method declarations here.
	* decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
	correctly; such things never match.
	(grokfndecl): Don't look for duplicate methods here.
	* decl2.c (check_classfn): Don't assume names are mangled.
	Don't add bogus member function declarations to a class before the
	class type is complete.
	(grokfield): Reformat error message.
	* method.c (set_mangled_name_for_decl): Don't mangle names while
	processing_template_decl.

1998-10-16  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (build_indirect_ref): Complain about a pointer to data
	member, too.
	* typeck2.c (build_m_component_ref): Don't indirect a pointer to
	data member.
	* init.c (resolve_offset_ref): Don't undo the above.

	* cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
	(struct lang_decl_flags): Add `bitfield'.
	* class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
	DECL_BIT_FIELD.
	* decl2.c (grokbitfield, grok_alignof): Likewise.
	* init.c (build_offset_ref): Likewise.
	* typeck.c (build_component_addr, expr_sizeof): Likewise.
	* cvt.c (build_up_reference): Don't crash if taking the address
	returns error_mark_node.

	* decl.c (grokfndecl): Also check ctype when checking for ::main().

1998-10-15  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokfndecl): ::main and __builtin_* get C linkage.
	Do mangling here.
	(grokdeclarator): Instead of here.
	* friend.c (do_friend): Lose special handling of ::main and
	__builtin_*.
	* cp-tree.h (DECL_MAIN_P): Check for C linkage.

	* spew.c (yylex): Clear looking_for_typename if we got
	'enum { ... };'.

1998-10-15  Mark Mitchell  <mark@markmitchell.com>

	* class.c (maybe_warn_about_overly_private_class): Improve error
	messages for class with only private constructors.

	* cp-tree.def (TYPENAME_TYPE): Add to documentation.
	* cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
	(build_typename_type): New function.
	* decl.c (build_typename_type): Broken out from ...
	(make_typename_type): Use it.
	* search.c (lookup_field): Likewise.

1998-10-14  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* pt.c (convert_nontype_argument): Check against type_referred_to.
	* decl.c (grokvardecl): Check for declarator name before building
	DECL_ASSEMBLER_NAME.

1998-10-14  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (lookup_template_class): Add comment.
	(instantiate_class_template): Don't mark the _TYPE node for
	member class templates as an instantiation.

1998-10-14  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokfndecl): Fix my thinko.

1998-10-13  Jason Merrill  <jason@yorick.cygnus.com>

	* tinfo2.cc (fast_compare): Remove.
	(before): Just use strcmp.
	* tinfo.cc (operator==): Just use strcmp.

1998-10-13  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>

	* decl.c (grokfndecl): Don't check for linkage in `extern "C"'
	declarations.

1998-10-13  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (specializations_of_same_template_p): Remove.
	* search.c (get_template_base): Don't use it.
	(get_template_base_recursive): Likewise.
	* pt.c (specializations_of_same_template_p): Remove.
	(unify): Don't use it.
	(lookup_template_class): Find the correct parent when setting
	CLASSTYPE_TI_TEMPLATE.

1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>

	* tinfo.cc (operator==): Always compare names.

1998-10-12  Herman ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>

	* decl.c (start_function): Fix cut-and-paste error.

1998-10-12  Jason Merrill  <jason@yorick.cygnus.com>

	* inc/typeinfo: Add #pragma interface.
	(operator!=): Just call operator==.
	* tinfo.cc: Add #pragma implementation.
	(operator==): Move from inc/typeinfo and tinfo2.cc.
	Check __COMMON_UNRELIABLE instead of _WIN32.

	* typeck2.c (my_friendly_abort): Add URL.

1998-10-12  Alastair J. Houghton  <ajh8@doc.ic.ac.uk>

	* decl.c (start_method): Added extra parameter for attributes.
	* cp-tree.h (start_method): Update prototype.
	* parse.y (fn.def2): Update start_method parameter list.

1998-10-11  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (specializations_of_same_template_p): Declare.
	* pt.c (specializations_of_same_template_p): New function.
	(unify): Use it.
	* search.c (get_template_base): Use it.
	(get_template_base_recursive): Likewise.

1998-10-10  Manfred Hollstein  <manfred@s-direktnet.de>

	* decl2.c (start_objects): Add new variable `joiner' and
	initialize it properly.

1998-10-09  Mark Mitchell  <mark@markmitchell.com>

	* search.c (expand_upcast_fixups): Tweak to match 1998-10-07
	change to vtable types.

	* cvt.c (ocp_convert): Avoid infinite recursion caused by
	1998-10-03 change.

1998-10-08  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (resolve_overloaded_unification): New fn.
	(try_one_overload): Likewise.
	(unify): Don't fail on unknown type.
	(type_unification_real): Likewise.  Use resolve_overloaded_unification
	to handle an overloaded argument.
	(template_args_equal): Split out...
	(comp_template_args): From here.
	(determine_specialization): Also allow a template with more
	parms than were explicitly specified.
	* cp-tree.h: Add template_args_equal.
	* call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.

Thu Oct  8 15:58:30 1998  Anthony Green  <green@cygnus.com>

	* semantics.c (finish_asm_stmt): Revert my 1998-09-28
	change.

Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)

	* typeck.c (unsigned_type): Only return TItype nodes when
	HOST_BITS_PER_WIDE_INT is >= 64 bits.
	(signed_type): Likewise.
	* decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
	when HOST_BITS_PER_WIDE_INT is >= 64 bits.
	(init_decl_processing): Only create TItype nodes when
	HOST_BITS_PER_WIDE_INT is >= 64 bits.
	* cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
	when HOST_BITS_PER_WIDE_INT is >= 64 bits.

Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
	(gxx.gperf): Update comments describing invocation flags.
	(hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).

1998-10-07  Mark Mitchell  <mark@markmitchell.com>

	* class.c (finish_struct_1): Add commentary on previous change.

	* cp-tree.h (vtbl_ptr_type_node): New variable.
	* class.c (build_vtbl_ref): Don't indirect through the vptr; it's
	already of the right type.
	(finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
	Simplify code to grow vtable.
	* decl.c (vtbl_ptr_type_node): Define.
	(init_decl_processing): Initialize it.

1998-10-06  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.def (PTRMEM_CST): New tree node.
	* cp-tree.h (ptrmem_cst): New type.
	(lang_type): Remove local_typedecls.
	(dummy): Increase to 12 bits from 11.
	(CLASSTYPE_LOCAL_TYPEDECLS): Remove.
	(PTRMEM_CST_CLASS): New macro.
	(PTRMEM_CST_MEMBER): Likewise.
	(current_access_specifier): New variable.
	(current_class_type): Remove duplicate declaration.
	(finish_struct): Change prototype.
	(unreverse_member_declarations): New function.
	(pushdecl_class_level): Change prototype.
	(grok_enum_decls): Remove.
	(fixup_anonymous_union): New function.
	(grok_x_components): Change prototype.
	(tsubst_chain): Remove.
	(finish_member_template_decl): Likewise.
	(check_explicit_specialization): Fix indentation.
	(finish_class_definition): Change prototype.
	(finish_member_class_template): Likewise.
	(finish_member_declaration): New function.
	(check_multiple_declarators): Likewise.
	* class.c (class_stack_node_t): New type.
	(current_class_base): Remove.
	(current_class_stack): Change type.
	(current_access_specifier): New variable.
	(grow_method): Remove.
	(check_member_decl_is_same_in_complete_scope): Break out from
	finish_struct.
	(make_method_vec): New function.
	(free_method_vec): Likewise.
	(add_implicitly_declared_members): Break out from finish_struct_1.
	(free_method_vecs): New variable.
	(add_method): Rework for direct use from parser.
	(handle_using_decl): Watch for NULL_TREE while iterating through
	CLASSTYPE_METHOD_VEC.
	(finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
	just do some error-checking.
	(warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
	(finish_struct_1): Simplify.  Use add_implicitly_declared_members.
	(finish_struct): Change prototype.  Simplify; fields and methods
	are already set up at this point.
	(init_class_processing): Set up current_class_stack.
	(pushclass): Save current_access_specifier.
	(popclass): Restore it.
	(currently_open_class): Simplify.
	(build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
	* decl.c (saved_scope): Add access_specifier.
	(maybe_push_to_top_level): Save it.
	(pop_from_top_level): Restore it.
	(maybe_process_template_type_declaration): Use
	finish_member_declaration.
	(pushtag): Likewise.
	(pushdecl_class_level): Don't return a value.
	(fixup_anonymous_union): Break out from grok_x_components.
	(shadow_tag): Use it.
	(xref_tag): Complain about using an elaborated type specifier to
	reference a template type parameter or typedef name.
	(xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
	(current_local_enum): Remove.
	(build_enumerator): Call finish_member_declaration.
	(grok_enum_decls): Remove.
	* decl2.c (grok_x_components): Simplify.
	(check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
	(grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
	(merge_functions): Add to comment.
	(arg_assoc_type): Prototype.
	(arg_assoc): Pass as many arguments as there are parameters.
	* error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
	OFFSET_REF.
	* expr.c (cpls_expand_expr): Remove dead code.  Handle
	PTRMEM_CST.
	* friend.c (do_friend): Lookup friends when in nested classes.
	Change comments.
	* init.c (build_offset_ref): Do lookup even for classes that are
	only partially defined.
	(decl_constant_value): Remove dead code.
	* method.c (build_overload_value): Remove hack where by TYPE was
	not a TYPE.  Handle PTRMEM_CST.
	(build_template_parm_names): Don't pass a PARM_DECL where a TYPE
	should go.
	* parse.y (components, notype_components, component_decl,
	component_decl_1, component_declarator, component_declarator0):
	Now all are itype rather than ttype.  Rework to add members to
	classes on the fly.
	(typesqpecqual_reserved): Use check_multiple_declarators.
	(structsp): Update class to finish_class_definition.
	(do_xref_defn): Unsplit into named_class_head.
	(access_specifier): Set current_access_specifier.
	* pt.c (set_current_access_from_decl): New function.
	(finish_member_template_decl): Don't take the parameters.
	(comp_template_args): Make more robust.
	(lookup_template_class): Don't use current_local_enum.
	(for_each_template_parm): Handle PTRMEM_CST.
	(instantiate_class_template): Use set_current_access_from_decl,
	finish_member_declaration and unreverse_member_declarations.  Set
	lineno/input_filename before generating implicit member functions.
	(type_unification_real): Don't assume back-unification happens
	only for the last argument.
	(regenerate_decl_from_template): Call pushclass a bit earlier.
	(tsubst_chain): Remove.
	(tsubst_enum): Use set_current_access_from_decl.
	(set_mangled_name_for_template_decl): Fix indentation.
	* search.c (lookup_fnfields_1): Change iteration through
	CLASSTYPE_METHOD_VEC.
	(dfs_pushdecls): Likewise.
	(dfs_compress_decls): Likewise.
	(add_conversions): Likewise.
	* semantics.c (finish_class_definition): Don't take components.
	Change call to finish_struct.
	(finish_member_declaration): New function.
	(finish_member_class_template): Don't take template parameters.
	Change call to grok_x_components.  Call finish_member_template_decl.
	(check_multiple_declarators): New function.
	* sig.c (append_signature_fields): Work from the TYPE_METHODS, not
	a passed in fieldlist.
	* tree.c (search_tree): Handle PTRMEM_CST.
	(mapcar): Likewise.
	* typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
	INTEGER_CSTs, for pointer-to-data members.

	* call.c (resolve_args): Resolve template specializations, if
	possible.

Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (spew.o): Depend on toplev.h.

	* call.c (compare_ics): Initialize variables `deref_from_type2',
	`deref_to_type1' and `deref_to_type2'.

	* except.c (get_eh_type): Hide prototype and definition.
	(process_start_catch_block_old): Remove unused static prototype.

	* pt.c (tsubst_decl): Initialize variable `argvec'.

	* spew.c: Include toplev.h.

1998-10-05  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (instantiate_decl): Do save and restore file position.

1998-10-05  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* method.c (build_decl_overload_real): Clear
	numeric_output_need_bar after __.

1998-10-05  Nathan Sidwell  <nathan@acm.org>

	* call.c (build_new_method_call): Issue 'incomplete type' error,
	if class is not defined.

1998-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* call.c (build_object_call): Move declaration of variable
	`fn' into the scope where it is used.  Don't access variable
	`fn' when it is uninitialized, instead use `fns'.

1998-10-04  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>

	* errfn.c (cp_thing): Print buf as a string not as a printf format
	to avoid problems with the operator%.  Consequently, `%%' sequences
	in format are copied as `%' in buf.

1998-10-04  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (pop_tinst_level): Call extract_interface_info.
	(instantiate_decl): Don't save and restore file position.

	* decl.c (cp_finish_decl): Make statics in extern inlines and
	templates common, if possible and the target doesn't support weak
	symbols.

	* decl.c (grokdeclarator): Remove redundant calls to
	build_type_variant and some duplicated code.
	* sig.c (build_signature_reference_type): Only take the type parm.
	(build_signature_pointer_type): Likewise.
	* tree.c (build_cplus_method_type): Adjust.
	* cp-tree.h: Update.

1998-10-04  Mark Mitchell  <mark@markmitchell.com>

	* call.c (build_over_call): Make pedwarns about dropped qualifiers
	into full-fledged errors.
	* cvt.c (convert_to_reference): Likewise.
	* typeck.c (convert_for_assignment): Likewise.

	* search.c (expand_upcast_vtables): In addition to unsetting
	TREE_READONLY, remove top-level const type qualifier.

1998-10-03  Mark Mitchell  <mark@markmitchell.com>

	* class.c (current_class_ptr, current_class_ref): Clarify
	documentation.
	* cvt.c (ocp_convert): Don't expect fold to remove all trivial
	NOP type conversions.
	* decl.c (decls_match): Use comptypes directly; ignore
	qualifiers on the DECL.
	(duplicate_decls): Remove qualifier checks on DECL.
	(grokdeclarator): Make the type built up include top-level
	qualifiers.
	* decl2.c (do_dtors): Fix spelling error.
	* error.c (dump_simple_decl): Don't look at qualifiers on the decl
	when printing type information.
	* init.c (build_new_1): Add documentation.  Deal with the fact
	that type of allocated memory now contains qualifiers.
	* lex.c (is_global): Improve error-recovery.
	* sig.c (build_member_function_pointer): Don't cast away const
	on fields of sigtable_entry_type.
	* tree.c (lvalue_type): Don't look at top-level qualifiers on
	expressions.
	* typeck.c (decay_conversion): Likewise.
	(build_component_ref): Make sure the type of the COMPONENT_REF
	contains top-level qualifiers, as appropriate.  Improve
	error-handling.
	(build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
	(build_array_ref): Likewise.
	(build_unary_op): Improve error-recovery.
	(unary_complex_lvalue): Make taking the address a bound member
	function an error, not a sorry.
	(build_conditional_expr): Look at the type qualifiers, not the
	qualifiers on the expression itself.

1998-10-03  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (merge_functions): Remove duplicates.

	* decl2.c: Add -f{no-,}implicit-inline-templates.
	(import_export_decl): Check it.

	* decl.c (lookup_name_real): Template parms also take precedence
	over implicit typename.  Only warn if yylex.

	* typeck.c (build_conditional_expr): Only fold if ifexp is an
	INTEGER_CST.

	* decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
	instead of linkage.

1998-10-01  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h (FORMAT_VBASE_NAME): New macro.
	* class.c (build_vbase_pointer): Use it.
	* rtti.c (expand_class_desc): Likewise.
	* tree.c (build_vbase_pointer_fields): Likewise.

Thu Oct  1 10:43:45 1998  Nick Clifton  <nickc@cygnus.com>

	* decl.c (start_decl): Add invocation of
	SET_DEFAULT_DECL_ATTRIBUTES, if defined.
	(start_function): Add invocation of
	SET_DEFAULT_DECL_ATTRIBUTES, if defined.

	* lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with
	HANDLE_GENERIC_PRAGMAS.

1998-09-28  Anthony Green  <green@cygnus.com>

	* semantics.c (finish_asm_stmt): Always permit volatile asms.

1998-09-28  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokdeclarator): Tighten checks for invalid
	destructors.  Improve error-messages and error-recovery.
	* decl2.c (check_classfn): Don't assume that mangled destructor
	names contain type information.

1998-09-25  Jason Merrill  <jason@yorick.cygnus.com>

	* search.c (get_base_distance): Remove assert.

	* decl2.c (build_anon_union_vars): Don't process a field with no
	name.
	(finish_anon_union): Also complain about local anon unions with no
	members.

1998-09-25  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (lookup_namespace_name): If the name is a namespace,
	return it immediately.

Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-tree.h (define_case_label): Remove unused parameter.
	(check_java_method): Likewise.
	(grokclassfn): Likewise.
	(expand_aggr_init): Likewise.
	(build_x_delete): Likewise.
	(maybe_end_member_template_processing): Likewise.
	(unshare_base_binfos): Add prototype.
	(string_conv_p): Likewise.
	(my_friendly_abort): Mark with ATTRIBUTE_NORETURN.

	* cvt.c (build_up_reference): Remove unused parameter
	`checkconst', all callers changed.
	(build_type_conversion): Mark parameter `code' with
	ATTRIBUTE_UNUSED.
	(build_expr_type_conversion): Initialize variable `conv'.

	* decl.c (push_namespace): Initialize variable `d'.
	(define_case_label): Remove unused parameter `decl', all callers
	changed.

	* decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
	`argc' with ATTRIBUTE_UNUSED.
	(grokclassfn): Remove unused parameter `cname', all callers
	changed.
	(check_java_method): Likewise for parameter `ctype'.
	(copy_assignment_arg_p): Mark parameter `virtualp' with
	ATTRIBUTE_UNUSED.
	(finish_prevtable_vardecl): Likewise for parameter `prev'.

	* expr.c (extract_init): Likewise for parameters `decl' and `init'.

	* init.c (expand_aggr_init_1): Remove unused parameter
	`alias_this', all callers changed.
	(expand_aggr_init): Likewise.
	(expand_default_init): Likewise.
	(build_new_1): Initialize variable `susp'.
	(build_x_delete): Remove unused parameter `type', all callers
	changed.

	* lex.c (set_typedecl_interface_info): Mark parameter `prev' with
	ATTRIBUTE_UNUSED.
	(readescape): Use (unsigned) value in shift.
	(real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
	comparing to a signed quantity.

	* pt.c (maybe_end_member_template_processing): Remove unused
	parameter `decl', all callers changed.
	(check_explicit_specialization): Add braces around empty body in
	an else-statement.
	(current_template_args): Initialize variable `args'.
	(lookup_template_class): Likewise for variable `prev_local_enum'.
	(tsubst_decl): Likewise for variable `r'.
	(set_mangled_name_for_template_decl): Initialize variable
	`context'.

	* spew.c (scan_tokens): Change type of parameter `n' to unsigned.
	Likewise for variable `i'.
	(yylex): Initialize variable `trrr'.

	* typeck.c (compparms): Mark variable `strict' with
	ATTRIBUTE_UNUSED.

	* xref.c (simplify_type): Cast argument of ctype function to
	`unsigned char'.

1998-09-24  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (language_lvalue_valid): Remove.
	* decl.c (grokdeclarator): Don't disallow references to functions.
	* tree.c (lvalue_p_1): New function, combining duplicated
	code from ...
	(lvalue_p): Use it.
	(real_lvalue_p): Likewise.
	* typeck.c (language_lvalue_valid): Remove.
	(build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
	they don't have TREE_READONLY set.
	* typeck2.c (readonly_error): Add case for FUNCTION_DECLs.

1998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* spew.c (yylex): Give diagnostic.
	* hash.h (is_reserved_word): Add export.
	* gxx.gperf: Likewise.
	* lex.h (rid): Add RID_EXPORT.
	* lex.c (init_parse): Likewise.

Tue Sep 22 21:01:19 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* friend.c (do_friend): Make warning a full sentence.

1998-09-22  Mark Mitchell  <mark@markmitchell.com>

	* parse.y (component_decl_list): Improve error-recovery.

1998-09-22  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* decl.c (make_typename_type): Move error to point where name
	variable can be used by dump_type.

1998-09-22  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokfndecl): Improve error-recovery.
	* decl2.c (grokfield): Likewise.
	* pt.c (finish_member_template_decl): Likewise.

1998-09-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* method.c (hack_identifier): Finding multiple members is always
	an error.

1998-09-21  Per Bothner  <bothner@cygnus.com>

	* Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.

Mon Sep 21 01:53:05 1998  Felix Lee  <flee@cygnus.com>

	* lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().

1998-09-20  Mark Mitchell  <mark@markmitchell.com>

	* class.c (maybe_warn_about_overly_private_class): Reformat.

1998-09-17  Andrew MacLeod  <amacleod@cygnus.com>

	* exception.cc (__cplus_type_matcher): Realign some code.

1998-09-16  Mark Mitchell  <mark@markmitchell.com>

	* Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
	(tinfo2.o): Likewise.
	(exception.o): Likewise.
	(new.o): Likewise.
	(opnew.o): Likewise.
	(opnewnt.o): Likewise.
	(opvnew.o): Likewise.
	(opvnewnt.o): Likewise.
	(opdel.o): Likewise.
	(opdelnt.o): Likewise.
	(opvdel.o): Likewise.
	(opvdelnt.o): Likewise.

1998-09-16  Richard Henderson  <rth@cygnus.com>

	* decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.

1998-09-15  Alexandre Oliva  <oliva@dcc.unicamp.br>

	* call.c (build_field_call): Handle static data members too.

	* typeck.c (comptypes): When comparing pointer types, check
	whether referred types match even in strictest modes.

1998-09-15  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h: Revert previous change.
	(finish_struct_methods): Remove declaration.
	* class.c: Revert previous change.
	(maybe_warn_about_overly_private_class): New function.
	(finish_struct_methods): Declare here, and make static.  Remove
	unnecessary parameters.  Tidy slightly.  Use
	maybe_warn_about_overly_private_class.
	(finish_struct_1): Adjust.  Remove check for private constructors,
	now done elsewhere.
	(finish_struct): Adjust.

1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>

	* except.c (expand_start_catch_block): No need to check for new
	exception model.
	(process_start_catch_block_old): Deleted.
	(process_start_catch_block): Add call to start_decl_1().
	(expand_end_catch_block): Add call to end_catch_handler().
	* exception.cc (__cplus_type_matcher): Only check the exception
	language if there is an exception table.

1998-09-15  Andrew MacLeod  <amacleod@cygnus.com>

	* search.c (expand_indirect_vtbls_init): Mark temporary stack slots
	as used to prevent conflicts with virtual function tables.

1998-09-14  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
	(CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
	* class.c (maybe_class_too_private_p): New function.
	(finish_struct_methods): Use it.
	(finish_struct_1): Likewise.
	(finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
	appropriate.

	* pt.c (check_specialization_scope): Fix spelling error.
	(check_explicit_specialization): Remove code to handle explicit
	specializations in class scope; they are now correctly diagnosed
	as errors.

1998-09-10  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (pushdecl): Don't copy types if the
	DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
	type.

1998-09-09  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>

	* class.c (get_enclosing_class): New function.
	(is_base_of_enclosing_class): Likewise.
	* cp-tree.h (get_enclosing_class): Declare.
	(is_base_of_enclosing_class): Likewise.
	* pt.c (coerce_template_parms): Use them.

1998-09-09  Jason Merrill  <jason@yorick.cygnus.com>

	* g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
	null to decide whether to use it.

	* error.c (dump_type_real): Handle NAMESPACE_DECL.
	* parse.y (base_class.1): Avoid crash on error.

1998-09-08  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (make_typename_type): If context is a namespace, the code
	is in error.

1998-09-08  Mumit Khan  <khan@xraylith.wisc.edu>

	* parse.y (nomods_initdcl0): Set up the parser stack correctly.

1998-09-08  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (anonymous_namespace_name): Declare.
	* decl.c: Define it.
	(push_namespace): Use anonymous_namespace_name, rather than local
	static anon_name.
	* error.c (dump_decl): If a namespace is named
	anonymous_namespace_name, call it {anonymous}.

	* decl.c (grokparms): Distinguish between references and pointers
	in error message.

1998-09-08  Richard Henderson  <rth@cygnus.com>
	    Mark Mitchell  <mark@markmitchell.com>

	* pt.c (process_partial_specialization): Consistently allocate
	and zero tpd.parms based on ntparms.  Use tpd2.parms, not
	tpd.parms, where appropriate.

Sun Sep  6 00:00:51 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (INCLUDES): Update after recent toplevel gcc
	reorganizations.

1998-09-05  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
	* class.c (finish_struct): Remove hackery to deal with explicit
	specializations in class scope.
	* decl.c (grokfndecl): Improve error-recovery.
	* decl2.c (grokfield): Likewise.
	* pt.c (check_specialization_scope): New function.
	(begin_specialization): Call it.
	(process_partial_specialization): New function, split out from
	push_template_decl.  Check partial specializations more
	stringently.
	(push_template_decl): Call it.
	(check_explicit_specialization): Don't attempt to handle explicit
	specializations in class scope.
	(template_parm_data): Document.  Add current_arg and
	arg_uses_template_parms.
	(mark_template_parm): Set it.
	(tsubst_arg_types): Remove unused variable.
	* semantics.c (begin_class_definition): Tweak.

1998-09-04  Mark Mitchell  <mark@markmitchell.com>

	* inc/typeinfo (type_info::type_info(const char*)): Make
	`explicit'.

	* cp-tree.h (hash_tree_cons_simple): New macro.
	* pt.c (tsubst_arg_types): New function.  Use hash_tree_cons.
	(coerce_template_parms): Use make_temp_vec, instead of
	make_tree_vec.  Document this behavior.
	(lookup_template_class): Likewise.
	(tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.
	Remove dead code (and add assertion to check its deadness).  Fix
	bug w.r.t. exception specifications.

1998-09-03  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (import_export_vtable): Always make artificials comdat.
	(import_export_decl): Likewise.
	* pt.c (mark_decl_instantiated): Likewise.

1998-09-03  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (finish_globally_qualified_member_call_expr):
	Rename to ...
	(finish_qualified_call_expr).
	* semantics.c: Likewise.
	* parse.y (primary): Use it.
	* method.c (hack_identifier): Remove redundant code.

	* init.c (resolve_offset_ref): Call convert_from_reference to
	handle members of reference type.  Improve error recovery.

1998-09-03  Benjamin Kosnik  <bkoz@cygnus.com>

	* cp-tree.h: Declare warn_nontemplate_friend.
	* decl2.c (lang_decode_option): Set.
	* lang-options.h: Add -Wnon-template-friend.
	* friend.c (do_friend): Use to toggle non-template function warning.

1998-09-03  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (finish_enum): Don't resolve CONST_DECLs to their
	corresponding INTEGER_CSTs when processing_template_decl.
	* pt.c (tsubst_enum): Tweak accordingly.

1998-09-03  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* decl.c (pushdecl_class_level): Add warning here.
	(pushdecl): Tweak.

1998-09-02  Jason Merrill  <jason@yorick.cygnus.com>

	* cvt.c (convert_pointer_to_real): Tidy.
	* search.c (get_base_distance_recursive): Simplify.
	(get_base_distance): Likewise.

	* pt.c (unify): Only special-case INTEGER_TYPE if it uses template
	parms.

Wed Sep 02 09:25:29 1998  Nick Clifton  <nickc@cygnus.com>

	* lex.c (check_newline):  Call HANDLE_PRAGMA before
	HANDLE_SYSV_PRAGMA if both are defined.  Generate warning messages
	if unknown pragmas are encountered.
	(handle_sysv_pragma): Interpret return code from
	handle_pragma_token ().  Return success/failure indication rather
	than next unprocessed character.
	(pragma_getc): New function: retrieves characters from the
	input stream.  Defined when HANDLE_PRAGMA is defined.
	(pragma_ungetc): New function: replaces characters back into the
	input stream.  Defined when HANDLE_PRAGMA is defined.

1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
	* class.c (build_vtable_entry_ref): Likewise.

1998-09-01  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
	* decl2.c (import_export_decl): Likewise.
	* pt.c (instantiate_decl): Use it.

1998-09-01  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (lookup_name_real): Also do implicit typename thing for
	artificial TYPE_DECLs.
	* search.c (lookup_field): Likewise.
	(lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
	* semantics.c (begin_constructor_declarator): Use enter_scope_of.
	(enter_scope_of): Extract type from implicit typename.
	(begin_class_definition): Likewise.
	* lex.c (identifier_type): Handle implicit typename when checking
	for SELFNAME.

	* cp-tree.h: Declare flag_strict_prototype.
	* lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
	-fstrict-prototype.
	* decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
	specified, set it to the value of pedantic.

1998-09-01  Mark Mitchell  <mark@markmitchell.com>

	* decl2.c (arg_assoc): Handle template-id expressions as arguments.

1998-08-31  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (finish_enum): Handle member enums of classes declared in
	template functions.

	* decl2.c (grok_x_components): Strip attributes before calling
	groktypename.

1998-08-31  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h, decl2.c: Remove support for -fall-virtual,
	-fenum-int-equivalence and -fno-nonnull-objects.
	* class.c (check_for_override): Remove support for -fall-virtual.
	(finish_struct_1): Likewise.
	* call.c (build_new_op): Remove support for -fenum-int-equivalence.
	* typeck.c (build_binary_op_nodefault): Likewise.
	* cvt.c (ocp_convert): Likewise.
	* call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
	* class.c (build_vbase_path): Likewise.

Sun Aug 30 22:16:31 1998  H.J. Lu  (hjl@gnu.org)

	* Makefile.in (INTERFACE): New, set to 1.

1998-08-30  Mark Mitchell  <mark@markmitchell.com>

	* error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
	comparing with global_namespace.
	(dump_aggr_type): Likewise.

	* decl.c (grokfndecl): Issue error on declaration of friend
	templates with explicit template arguments.

	* pt.c (convert_template_argument): New function, split out
	from...
	(coerce_template_parms): Here.
	(tsubst): Attempt better error-recovery.

1998-08-28  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* pt.c (decl_template_parm_p): Add checks for
	TEMPLATE_TEMPLATE_PARM.

1998-08-28  Mark Mitchell  <mark@markmitchell.com>

	* lex.c (do_identifier): Fix thinko in previous change.

1998-08-28  Jason Merrill  <jason@yorick.cygnus.com>

	* search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
	* decl2.c (output_vtable_inherit): Call binfo_for_vtable.

1998-08-28  Richard Henderson  <rth@cygnus.com>

	Add support for discarding unused virtual functions.
	* lang-options.h: Add -fvtable-gc.
	* cp-tree.h: Add flag_vtable_gc.
	* decl2.c (output_vtable_inherit): New fn.
	(finish_vtable_vardecl): Call it.
	* class.c (build_vtable_entry_ref): New fn.
	(build_vtbl_ref): Call it.

1998-08-28  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (build_enumerator): Take the enumeration type as a
	parameter.
	* decl.c (finish_enum): Don't set the TREE_TYPE for the
	enumeration constant values if we're processing_template_decls.
	Don't set the type for the CONST_DECLs either; that's done in
	build_enumerator.
	(build_enumerator): Take the enumeration type as a
	parameter.
	* lex.c (do_identifier): Don't resolve enumeration constants while
	processing template declarations, even if they happen to be
	TEMPLATE_PARM_INDEXs.

	* parse.y (current_enum_type): New variable.
	(primary): Don't allow statement-expression in local classes just
	as we don't in global classes.
	(structsp): Use current_enum_type.
	(enum_list): Likewise.
	* pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
	finish_enum; they no longer occur.

	* cp-tree.h (finish_base_specifier): New function.
	* parse.y (base_class): Use it.
	* semantics.c (finish_base_specifier): Define it.

	* parse.y (structsp): Warn on use of typename outside of template
	declarations.

1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>

	* lex.c (handle_cp_pragma): Remove #pragma vtable.
	* lang-options.h: Remove +e options.
	* decl2.c (lang_decode_option): Likewise.
	(import_export_vtable): Don't check write_virtuals.
	(finish_vtable_vardecl, finish_file): Likewise.
	* search.c (dfs_debug_mark): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	* class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.

	* call.c (build_over_call): Check flag_elide_constructors.
	* decl2.c: flag_elide_constructors defaults to 1.
	* typeck.c (convert_arguments): Remove return_loc parm.
	(build_function_call_real): Adjust.

	* search.c: Tear out all mi_matrix and memoize code.
	(lookup_field, lookup_fnfields): Use scratch_tree_cons.
	* lang-options.h: Remove documentation for -fhandle-exceptions,
	-fmemoize-lookups and -fsave-memoized.
	* cp-tree.h: Lose mi_matrix and memoize support.
	* decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
	* class.c: Lose struct class_level.
	(pushclass, popclass): Lose memoize support.
	* init.c (build_offset_ref): Likewise.

	Never change BINFO_INHERITANCE_CHAIN.
	* init.c (emit_base_init): Change modification of
	BINFO_INHERITANCE_CHAIN to an assert.
	* search.c (get_base_distance_recursive): Likewise.
	(get_base_distance): Likewise.
	(lookup_member): Likewise.
	(convert_pointer_to_single_level): Likewise.
	(lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
	(lookup_fnfields): Likewise.
	* tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
	(unshare_base_binfos): Don't call propagate_binfo_offsets.
	(layout_basetypes): Call propagate_binfo_offsets instead of
	unshare_base_binfos.
	* decl.c (xref_basetypes): Call unshare_base_binfos.
	* pt.c (instantiate_class_template): Likewise.
	* tree.c (reverse_path): Remove 'copy' parm; always make a
	temporary copy.
	* class.c (build_vbase_path): Just call it.
	* search.c (compute_access): Likewise.  Don't re-reverse.

1998-08-27  Mark Mitchell  <mark@markmitchell.com>

	* class.c (build_vbase_path): Use reverse_path.
	(finish_base_struct): Move warnings for inaccessible bases to
	layout_basetypes.
	(modify_one_vtable): Remove check of TREE_USED (binfo).
	(fixup_vtable_deltas1): Likewise.
	* cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
	(xref_tag): Remove binfos parameter.
	(make_binfo): Remove chain parameter.
	(reverse_path): Add copy parameter.
	* decl.c (init_decl_processing): Change calls to xref_tag.
	(xref_tag): Remove binfos parameter.
	(xref_basetypes): Change calls to make_binfo.
	* decl2.c (grok_x_components): Change calls to xref_tag.
	(handle_class_head): Likewise.
	* friend.c (do_friend): Likewise.
	* lex.c (make_lang_type): Change calls to make_binfo.
	* parse.y (structsp): Change calls to xref_tag.
	(named_complex_class_head_sans_basetype): Likewise.
	(named_class_head): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	* search.c (compute_access): Change calls to reverse_path.
	(dfs_get_vbase_types): Change calls to make_binfo.
	(get_vbase_types): Remove dead code.
	* tree.c (unshare_base_binfos): Change calls to make_binfo.
	(layout_basetypes): Warn here about inaccessible bases.
	(make_binfo): Remove chain parameter.
	(reverse_path): Add copy parameter.

1998-08-27  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c: #if 0 complete_type_p.
	* init.c (build_java_class_ref, build_new_1): Remove unused locals.
	* method.c (process_overload_item): Likewise.
	* typeck.c (comp_target_types): Likewise.

	Stop sharing binfos for indirect virtual bases.
	* tree.c (propagate_binfo_offsets): Unshare vbases, too.
	(layout_basetypes): Likewise.
	(unshare_base_binfos): Copy vbases, too.
	* cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
	BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
	(BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
	CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
	* search.c (lookup_field, lookup_fnfields, lookup_member): Remove
	reference to BINFO_VIA_PUBLIC.
	(marked_pushdecls_p, unmarked_pushdecls_p): New fns.
	(push_class_decls): Use them.
	(dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
	(dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.

1998-08-27  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (build_enumerator): Set DECL_CONTEXT for the
	CONST_DECLs.

1998-08-26  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (finish_enum): Change prototype.
	* decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
	VALUES parameter.  Don't try to compute mins/maxs if
	processing_template_decl.
	* parse.y (structsp): Use new calling sequence for finish_enum.
	* pt.c (tsubst_enum): Likewise.  Take the new type as input.
	(lookup_template_class): Remove unused variables.  Tweak.
	Register enums on instantiation list before substituting
	enumeration constants.
	(tsubst_decl): Remove unused variables.
	(regenerate_decl_from_template): Likewise.

	* decl.c (duplicate_decls): Don't obliterate the
	DECL_TEMPLATE_INFO for a template if we're not replacing it with
	anything.

	* lex.c (do_identifier): Fix typo in comment.

Wed Aug 26 10:54:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* errfn.c: Remove stdarg.h/varargs.h.
	* tree.c: Likewise.

1998-08-25  Brendan Kehoe  <brendan@cygnus.com>

	* pt.c (tsubst_copy): Only do typename overloading on an
	IDENTIFIER_NODE that happens to look like a typename if it actually
	has a type for us to use.

1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (comp_cv_target_types): Split out...
	(comp_target_types): From here.  Don't allow cv-qual changes under
	a pointer if nptrs == 0.  Fix OFFSET_TYPE handling.
	(build_ptrmemfunc): Pass 1 to nptrs.
	* cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.

1998-08-25  Mark Mitchell  <mark@markmitchell.com>

	* search.c (dependent_base_p): Don't compare a binfo to
	current_class_type; use the TREE_TYPE of the binfo instead.

	* cp-tree.h (CLASS_TYPE_P): Revise definition.

1998-08-25  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (duplicate_decls): Don't complain about different
	exceptions from an internal decl even if pedantic.

	* typeck.c (convert_for_assignment): Converting from pm of vbase
	to derived is an error, not a sorry.

	* call.c (build_over_call): Use convert_pointer_to_real for 'this'.
	* class.c (fixed_type_or_null): Rename from
	resolves_to_fixed_type_p.  Return the dynamic type of the
	expression, if fixed, or null.
	(resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
	does not match the static type.
	(build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
	resolves_to_fixed_type_p again.

1998-08-24  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (tsubst_decl): Move special case code for dealing with
	tricky friend templates here from ...
	(regenerate_decl_from_template): Here.

1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (start_decl): Remove redundant linkage check.

1998-08-24  Gavin Romig-Koch  <gavin@cygnus.com>

	* typeck.c (c_expand_return): Handle the case that valtype
	is wider than the functions return type.

1998-08-24  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (CLASS_TYPE_P): New macro.
	* decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
	* pt.c (process_template_parm): Undo previous change.

1998-08-24  Benjamin Kosnik  <bkoz@cygnus.com>

	* cp-tree.h: Declare.
	* pt.c (decl_template_parm_p): New function.
	* decl.c (pushdecl): Check decls for redeclaring template parms.
	(xref_tag): Make redeclaration an error, print decl.
	* decl2.c (grokfield): Check field_decls for redeclaration as well.

1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (primary): Fix up the type of string constants.

1998-08-24  Mark Mitchell  <mark@markmitchell.com>

	* typeck.c (convert_for_initialization): Move check for odd uses
	of NULL to avoid duplicate warnings.

1998-08-24  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (lvalue_type): Fix for arrays.
	* typeck.c (string_conv_p): New fn.
	(convert_for_assignment): Use it.
	(build_unary_op): Use lvalue_type.
	* call.c (standard_conversion, convert_like): Use string_conv_p.
	(add_function_candidate): Use lvalue_type.
	* cvt.c (convert_to_reference): Likewise.
	* decl2.c (lang_decode_option): Ignore -traditional.
	* decl.c (init_decl_processing): flag_writable_strings inhibits
	flag_const_strings.

1998-08-24  Andrew MacLeod  <amacleod@cygnus.com>

	* lang-options.h (lang_options): Add fconst-strings to the list
	of valid options.
	* decl2.c (lang_f_options, lang_decode_option): Likewise.

1998-08-24  Nathan Sidwell  <nathan@acm.org>

	* lex.c (real_yylex): Don't warn about long long constants if
	we're allowing long long.

1998-08-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
	accessing bindings directly.

	* search.c (my_tree_cons): Reimplement.

	* lang-specs.h: Remove __HONOR_STD.
	* inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.

1998-08-23  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokdeclarator): Complain about in-class initialization
	of aggregates and/or references.
	* pt.c (process_template_parm): Clear IS_AGGR_TYPE for
	TEMPLATE_TYPE_PARMs.

	* decl2.c (grok_array_decl): Add comment.
	(mark_used): Don't instantiate an explicit instantiation.
	* friend.c (make_friend_class): Remove bogus comment.  Fix check
	for partial specializations.
	* pt.c (check_explicit_specialization): Don't
	SET_DECL_EXPLICIT_INSTANTIATION here.
	(mark_decl_instantiated): Or here.
	(do_decl_instantiation): Do it here, instead.  Add checks for
	duplicate explicit instantiations, etc.  Tidy.
	(do_type_instantiation): Likewise.
	(instantiate_decl): Improve comments.  Complain about explicit
	instantiations where no definition is available.

	* cp-tree.h (ansi_null_node): Remove.
	* call.c (build_over_call): Warn about converting NULL to an
	arithmetic type.
	* cvt.c (build_expr_type_conversion): Likewise.  Use
	null_ptr_cst_p instead of expanding it inline.
	* decl.c (ansi_null_node): Remove.
	(init_decl_processing): Make null_node always have integral type.
	* except.c (build_throw): Warn about converting NULL to an
	arithmetic type.
	* lex.c (init_parse): Remove handling of ansi_null_node.
	* pt.c (type_unification_real): Don't convert NULL to void* type.
	* typeck.c (build_binary_op_nodefault): Fix NULL warnings.
	(convert_for_assignment): Warn about converting NULL to an
	arithmetic type.
	(convert_for_initialization): Likewise.

1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
	* pt.c (coerce_template_parms): Use no_linkage_check.
	* decl.c (grokvardecl): Likewise.
	(grokfndecl): Likewise.  Members of anonymous types have no linkage.

	* method.c (process_overload_item): Remove useless code.

1998-08-20  Per Bothner  <bothner@cygnus.com>

	Handle new'ing of Java classes.
	* init.c (build_class_classref):  New function.
	(build_new_1):  If type is TYPE_FOR_JAVA:  Call _Jv_AllocObject;
	constructor does not return this;  don't need to exception-protect.

	* pt.c (lookup_template_class):  Copy TYPE_FOR_JAVA flag.
	* decl2.c (acceptable_java_type):  Handle template-derived types.

1998-08-20  Per Bothner  <bothner@cygnus.com>

	* decl2.c (import_export_vtable):  Suppress vtables for Java classes.

1998-08-20  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (duplicate_decls): Always merge the old and new patterns
	for templates, regardless of whether or not the new one has
	DECL_INITIAL.  Don't throw away specializations.  Merge
	DECL_SAVED_TREE.
	* pt.c (tsubst_decl): Use the right pattern when calculating the
	complete args for a new template instance.
	(do_decl_instantiation): Fix typo in comment.
	(regenerate_decl_from_template): Deal with tricky friend template
	case.
	(instantiate_decl): Likewise.

Thu Aug 20 09:09:45 1998  Jeffrey A Law  (law@cygnus.com)

	* init.c (build_builtin_delete_call): Add missing assemble_external
	call.

1998-08-20  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (notype_unqualified_id): Also accept ~A<int>.

1998-08-19  Mark Mitchell  <mark@markmitchell.com>

	* typeck.c (build_binary_op_nodefault): Warn on use of NULL in
	arithmetic.
	* except.c (build_throw): Warn when NULL is thrown, even with
	-ansi.  Use ansi_null_node, rather than integer_zero_node, in the
	thrown expression.

	* cp-tree.h (ansi_null_node): New variable.
	* decl.c (ansi_null_node): New variable.
	(init_decl_processing): Initialize its type.
	* lex.c (init_parse): Initialize its value.  Use ansi_null_node
	for null_node in non-ANSI mode.
	* typeck.c (build_binary_op_nodefault): Use ansi_null_node in
	place of null_node to avoid spurious errors.

1998-08-17  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (enter_scope_of): New function.
	* parse.y (complex_direct_notype_declarator): Use it.
	* semantics.c (enter_scope_of): New function.

1998-08-17  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokparms): No, here.

	* decl.c (grokdeclarator): Catch parm with pointer to array of
	unknown bound here...
	* method.c (process_overload_item): ...not here.

	* gxxint.texi: Remove obsolete documentation of overloading code.

	* decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
	* class.c (finish_struct_bits): Likewise.

	* tree.c (lvalue_type): Fix for arrays.
	* typeck.c (build_unary_op): Use lvalue_type.
	* call.c (add_function_candidate): Likewise.
	* cvt.c (convert_to_reference): Likewise.

	* decl2.c (lang_decode_option): Ignore -traditional.

	* init.c (build_offset_ref): Don't mess with error_mark_node.
	* lex.c (do_scoped_id): Use cp_error.

	* rtti.c (get_tinfo_fn): Don't mess with the context for now.

1998-08-17  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.

Mon Aug 17 10:40:18 1998  Jeffrey A Law  (law@cygnus.com)

	* cp-tree.h (set_identifier_local_value): Provide prototype.

	* decl2.c (do_namespace_alias): Remove unused variables `binding'
	and `old'.

Fri Aug 14 16:42:27 1998  Nick Clifton  <nickc@cygnus.com>

	* Makefile.in: Rename BBISON to BISON so that it can be properly
	inherited from the parent makefile.

1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>

	* lang-options.h: Add -finit-priority.
	* decl2.c: Likewise.  Check flag_init_priority instead of
	USE_INIT_PRIORITY.

	* decl2.c (setup_initp): New fn.
	(start_objects, finish_objects, do_ctors): Handle init_priority.
	(do_dtors, finish_file): Likewise.

1998-08-13  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst_copy): Hush warning.

	* rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.

1998-08-12  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (print_template_context): Don't abort when instantiating a
	synthesized method.

	* decl.c (grokdeclarator): Issue errors on namespace qualified
	declarators in parameter lists or in class scope.

1998-08-09  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (check_explicit_specialization): Don't abort on bogus
	explicit instantiations.

1998-08-07  Mark Mitchell  <mark@markmitchell.com>

	* typeck.c (require_complete_type): Use complete_type_or_else.
	(complete_type_or_else): Always return NULL_TREE on failure, as
	documented.

	* pt.c (tsubst_aggr_type): Prototype.
	(tsubst_decl): New function, split out from tsubst.  Set
	input_filename and lineno as appropriate.
	(pop_tinst_level): Restore the file and line number saved in
	push_tinst_level.
	(instantiate_class_template): Set input_filename and lineno as
	appropriate.
	(tsubst): Move _DECL processing to tsubst_decl.  Make sure the
	context for a TYPENAME_TYPE is complete.

	* decl2.c (grokbitfield): Issue errors on bitfields declared with
	function type.
	(do_dtors): As in do_ctors, pretend to be a member of the same
	class as a static data member while generating a call to its
	destructor.

	* cvt.c (cp_convert_to_pointer): Handle NULL pointer
	conversions, even in complex virtual base class hierarchies.

1998-08-06  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
	(TYPE_TEMPLATE_INFO): Likewise.
	(SET_TYPE_TEMPLATE_INFO): Likewise.
	(ENUM_TI_TEMPLATE): Likewise.
	(ENUM_TI_ARGS): Likewise.
	(lookup_nested_type_by_name): Remove.
	* decl.c (maybe_process_template_type_declaration): Handle enums.
	(start_enum): Don't check for primary-template enum declarations
	here.
	(finish_enum): Clean up, document.  Make sure template enum
	constants get the correct type.
	(build_enumerator): Copy initializers for template enumerations,
	too.
	(grok_enum_decls): Document.
	* lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
	better.  Build LOOKUP_EXPRs for local variables, even if they are
	TREE_PERMANENT.
	* pt.c (tsubst_enum): Remove field_chain parameter.
	(template_class_depth): Include the depth of surrounding function
	contexts.
	(push_template_decl): Check for primary-template enum declarations
	here.  Deal with enumeration templates.
	(lookup_template_class): Likewise.
	(for_each_template_parm): Likewise.
	(instantiate_class_template): Don't call tsubst_enum directly,
	call tsubst instead, to instantiate enums.  Deal with all
	field_chain issues here, not in tsubst_enum.
	(lookup_nested_type_by_name): Remove.
	(tsubst_aggr_type): Revise handling of enumeration types.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.

1998-08-04  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
	uses template parameters.
	* method.c (build_template_parm_names): Use the full set of
	template arguments for tsubst'ing.
	(build_overload_identifier): Pass the full set of template
	arguments to build_template_parm_names, not just the
	innermost_args.
	* pt.c (TMPL_ARGS_DEPTH): Define using
	TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
	(NUM_TMPL_ARGS): New macro.
	(add_outermost_template_args): Deal with the case where the outer
	args will be completely discarded.
	(coerce_template_parms): Use the full set of template arguments
	for tsubst'ing.  Simplify.  Add some asserts.  Improve
	error messages.
	(lookup_template_class): Pass the full set of template arguments
	to coerce_template_parms.
	(tsubst): Add assertion.
	(do_type_instantiation): Don't instantiate member template
	classes.

	* init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
	name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.

1998-08-03  Jason Merrill  <jason@yorick.cygnus.com>

	* method.c (set_mangled_name_for_decl): Change return type to void.

	* decl.c (lookup_name_real): A namespace-level decl takes priority
	over implicit typename.  Avoid doing the same lookup twice.

	* search.c (dependent_base_p): New fn.
	(dfs_pushdecls, dfs_compress_decls): Use it.

	* typeck.c (get_member_function_from_ptrfunc): Don't try to handle
	virtual functions if the type doesn't have any.

1998-08-03  Mark Mitchell  <mark@markmitchell.com>

	* decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
	uses template parameters.

1998-08-02  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
	* cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
	* lex.c (do_identifier): Don't use a second argument, or a type,
	when building LOOKUP_EXPRs.
	(do_identifier): Likewise.
	(do_scoped_id): Likewise.
	* method.c (hack_identifier): Improve error message.
	* pt.c (lookup_template_function): Don't needlessly call
	copy_to_permanent or build_min.
	(tsubst_copy): Remove #if 0'd code.  tsubst into LOOKUP_EXPRs if
	necessary.
	(do_decl_instantiation): Improve error message.
	* tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
	(build_min): Copy the type to the permanent obstack, too.

1998-08-01  Jason Merrill  <jason@yorick.cygnus.com>

	* init.c (init_init_processing): Remove BI* handling.
	(build_builtin_call): Remove.
	(build_builtin_delete_call): New fn.
	(build_delete): Use it.

1998-07-31  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
	(maybe_check_template_type): New function.
	* decl.c (maybe_process_template_type_declaration): New function,
	split out from pushtag  Call maybe_check_template_type.
	(pushtag): Use it.  Use PROCESSING_REAL_TEMPLATE_DECL_P.
	(xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
	* friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
	* pt.c (template_class_depth_real): Generalization of ...
	(template_class_depth): Use it.
	(register_specialization): Use duplicate_decls for duplicate
	declarations of specializations.
	(maybe_check_template_type): New function.
	(push_template_decl_real): Fix comment.
	(convert_nontype_argument): Likewise.
	(lookup_template_class): Likewise.  Avoid an infinite loop on
	erroneous code.
	(tsubst_friend_function): Fix comment.
	(tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
	an IDENTIFIER_NODE.
	* semantics.c (begin_function_definition): Use
	reset_specialization to note that template headers don't apply
	directly to declarations after the opening curly for a function.

1998-07-29  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (push_overloaded_decl): Use current_namespace instead of
	DECL_CONTEXT (decl) to determine where we go.

	* decl.c (lookup_name_real): Fix typo.

1998-07-28  Mark Mitchell  <mark@markmitchell.com>

	* friend.c (is_friend): Be lenient with member functions to deal
	with nested friends.

1998-07-28  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (finish_struct_1): Convert integer_zero_node to
	ssizetype before passing it to set_rtti_entry.
	* typeck2.c (initializer_constant_valid_p): Allow conversion of 0
	of any size to a pointer.

1998-07-27  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
	(build_template_decl_overload): Remove.
	(set_mangled_name_for_decl): New function.
	(innermost_args): Remove is_spec parameter.
	(most_specialized, most_specialized_class): Remove declarations.
	(lookup_template_class): Add entering_scope parameter.
	(maybe_process_partial_specialization): New function.
	(finish_template_decl): Likewise.
	(finish_template_type): Likewise.
	* class.c (finish_struct): Clean up processing of member template
	specializations.
	* decl.c (pushtag): Fix formatting.
	(lookup_tag): Improve handling of pseudo-global levels.
	(make_typename_type): Adjust call to lookup_template_class.
	(shadow_tag): Use maybe_process_partial_specialization.
	(xref_tag): Improve handling of member friends.
	(start_function): Call push_nested_class before
	push_template_decl.  Don't call push_template_decl for
	specializations.
	* decl2.c (grok_x_components): Don't call xref_tag for
	template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
	(grokclassfn): Use set_mangled_name_for_decl.
	(arg_assoc_class): Adjust call to innermost_args.
	(mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
	* error.c (dump_function_name): Improve printing of template
	function names.
	* friend.c (is_friend): Don't compare types of decls to determine
	friendship, unless flag_guiding_decls.
	(make_friend_class): Partial specializations cannot be friends.
	(do_friend): Use set_mangled_name_for_decl.  Call
	push_template_decl_real instead of push_template_decl.
	* method.c (build_decl_overload_real): Remove prototype.  Give it
	external linkage.
	(build_overload_identifier): Adjust call to innermost_args.
	(build_template_decl_overload): Remove.
	(set_mangled_name_for_decl): New function.
	* parse.y (.finish_template_type): New non-terminal.
	(template_def): Use finish_template_decl.  Use template_extdef
	instead of extdef.
	(template_extdef, template_datadef): New non-terminals, containing
	only those rules for things which can be templates.
	(datadef): Tidy.
	(template_type, self_template_type): Use .finish_template_type.
	(named_class_head): Use maybe_process_partial_specialization.
	* pt.c (mangle_class_name_for_template): Remove context parameter.
	(get_class_bindings): Remove outer_args parameter.
	(complete_template_args): Remove.
	(add_outermost_template_args): New function.
	(register_specialization): Return the specialization.
	(unregister_specialization): New function.
	(tsubst_template_parms): Likewise.
	(most_specialized, most_specialized_class): Prototype here as
	static.
	(original_template): Rename to most_general_template.
	(tsubst_template_parms): New function.
	(set_mangled_name_for_template_decl): Likewise.
	(TMPL_ARGS_DEPTH): New macro.
	(TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
	(TMPL_ARGS_LEVEL): New macro.
	(SET_TMPL_ARGS_LEVEL): Likewise.
	(TMPL_ARG): Likewise.
	(SET_TMPL_ARG): Likewise.
	(TMPL_ARGS_DEPTH): Likewise.
	(finish_member_template_decl): Use finish_template_decl.
	(maybe_process_partial_specialization): New function, split out
	from tsubst.
	(inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
	(maybe_begin_member_template_processing): Use new macros.
	(is_member_template): Likewise.
	(is_member_template_class): Likewise.
	(add_to_template_args): Likewise.  Deal with multiple levels of
	args.
	(maybe_process_partial_specialization): New function.
	(retrieve_specialization): Add consistency check.
	(determine_specialization): Return full argument list.
	(check_explicit_specialization): Tweak friend handling.  Use full
	argument lists.  Simplify.
	(current_template_args): Use new macros.
	(push_template_decl_real): Change ill-named mainargs to specargs.
	Check that a partial specialization actually specializes at least
	one parameter.   Improve friend handling.  Modify for full
	template arguments.
	(classtype_mangled_name): Don't mangle the names of
	specializations.
	(lookup_template_class): Add entering_scope parameter.  Use it to
	avoid finding a template type when an instantiation is required.
	Simplify.  Use full template arguments.
	(tsubst_friend_function): Use unregister_specialization.  Use new
	macros.  Use full template arguments.
	(tsubst_friend_class): Substitute, using tsubst_template_parms,
	into the template parameters before passing them to
	redeclare_class_template.
	(instantiate_class_template): Simplify.  Use full template
	arguments.  Adjust calls to get_class_bindings.  Use
	SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
	(innermost_args): Use new macros.
	(tsubst_aggr_type): New function, split out from tsubst.
	(tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
	conventions for lookup_template_class.  Refine handling of partial
	instantiations.   Remove calls to complete_template_args.
	Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
	and set_mangled_name_for_template_decl.
	(tsubst_copy): Use tsubst_aggr_type.
	(instantiate_template): Use full template arguments.
	(more_specialized): Improve formatting.
	(more_specialized_class): Adjust calls to get_class_bindings.
	(get_bindings_real): Don't call complete_template_args.
	(most_specialized): Don't overwrite input; create a new list.
	(most_specialized_class): Use most_general_template.
	(regenerate_decl_from_template): Use unregister_specialization.
	Use full template arguments.
	(instantiate_decl): Use full template arguments.
	(set_mangled_name_for_template_decl): New function.
	* semantics.c (begin_class_definition): Use
	maybe_process_partial_specialization.
	(finish_member_class_template): New function.
	(finish_template_decl): Likewise.
	(finish_template_type): Likewise.
	(typeck.c): Don't crash after issuing a compiler_error.
	* Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.

1998-07-27  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (build_functional_cast): Handle default-initialization.

	* call.c (build_over_call): Pass 1 to popclass.

	* parse.y (direct_notype_declarator): Add precedence declaration
	to notype_unqualified_id case.
	* Makefile.in (EXPECT): Adjust.

	* tree.c (ovl_member): Fix for single function in OVL.

1998-07-27  Dave Brolley  <brolley@cygnus.com>

	* c-lex.c (yylex): Fix boundary conditions in character literal and
	string literal loops.

1998-07-24  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (lookup_name_real): OK, do return the from_obj value
	unless got_object depends on template parms.

	* parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.

	* pt.c (coerce_template_parms): Also complain about local enums.

	* cp-tree.h: Add prototype for set_identifier_local_value.
	* decl.c (set_identifier_local_value_with_scope): Make static,
	prototype.
	* search.c (covariant_return_p): Likewise.
	* except.c (build_terminate_handler, alloc_eh_object): Likewise.

	* call.c (build_method_call): Only pull out the type of a destructor
	if it's a template type parm.
	* decl.c (lookup_name_real): Never return the from_obj value.

1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>

	* except.c (process_start_catch_block_old): Call start_decl_1 for
	catch parm.
	* decl.c (start_decl_1): Avoid duplicate error.

	* init.c (expand_default_init): Only perform the initialization if
	it will do something.

1998-07-23  H.J. Lu  (hjl@gnu.org)

	* parse.y (base_class): Check for invalid base class.

1998-07-23  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (import_export_template): Fold in...
	(import_export_class): ...to here.  Handle dllimport/export.

	* class.c (build_vtable): Pass at_eof to import_export_vtable.
	(prepare_fresh_vtable): Likewise.
	* decl2.c (import_export_class): Split out...
	(finish_prevtable_vardecl): From here.
	* class.c (finish_struct_1): Call import_export_class if at_eof.

	* decl.c (start_function): #if 0 mysterious code I wrote and have
	forgotten why.
	* rtti.c (get_tinfo_fn): If this is for a class type, set
	DECL_CONTEXT.

1998-07-22  Jason Merrill  <jason@yorick.cygnus.com>

	* inc/exception: Change terminate and unexpected to ().

	* parse.y (named_class_head_sans_basetype_defn): A
	named_class_head_sans_basetype followed by '{' or ':' is a defn.

1998-07-21  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (canonical_type_variant): New fn to handle arrays.
	* cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
	* pt.c (unify, default case): Also fold arg.  Fix array bounds case.
	* method.c (process_overload_item): Use build_overload_value for
	arrays.

1998-07-20  Dave Brolley  <brolley@cygnus.com>

	* lex.c (mbchar.h): #include it.
	(GET_ENVIRONMENT): New macro.
	(init_parse): Set character set based on LANG environment variable.
	(real_yylex): Handle multibyte characters in character literals.
	(real_yylex): Handle multibyte characters in string literals.

1998-07-19  Jason Merrill  <jason@yorick.cygnus.com>

	* lex.c (do_identifier): Look for class value even if we don't
	have a global value.  Do implicit declaration if parsing is 2.
	* semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
	lookup.

1998-07-19  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (pushtag): Revert previous change.
	* pt.c (lookup_template_class): Don't put out debugging
	information for types that use template parameters.

	* decl.c (pushtag): Don't put out debugging information for
	compiler-generated typedefs.

	* error.c (dump_type_real): Don't crash when presented with
	intQI_type_node or the like.

	* semantics.c (finish_translation_unit): Fix spelling error in
	comment.

1998-07-17  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (lookup_name_real): Pull out single function here.
	(select_decl): Not here.
	(unqualified_namespace_lookup): Use CP_DECL_CONTEXT.

	* decl.c (qualify_lookup): Tweak again.

	* pt.c (lookup_template_class): Don't mess with the context of the
	instantiation.
	* decl2.c (current_decl_namespace): Remove special handling for
	templates.

	* pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
	a member template specialization.

	* tree.c (ovl_member): Use decls_match to compare functions.
	* decl.c (decls_match): Check the context of a function.

	* parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
	in Koenig lookup support rules.
	* semantics.c (finish_call_expr): Handle the new cases.

	* typeck.c (build_x_function_call): Handle overloaded methods.

	* decl.c (grokvardecl): Don't call build_static_name for extern "C".

1998-07-16  Mark Mitchell  <mark@markmitchell.com>

	* semantics.c (finish_object_call_expr): Revert previous change.
	* call.c (build_new_method_call): Likewise.  Instead, convert
	TYPE_DECLs to IDENTIFIERs here, in the presence of templates.

1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (qualify_lookup): Handle templates.

	* decl2.c (do_using_directive): Don't pass ancestor.
	* decl.c (push_using_directive): Calculate ancestor.

	* decl2.c (do_nonmember_using_decl): Allow for type shadowing.
	* decl.c (pushdecl): Move type shadowing handling from here...
	(duplicate_decls): ...to here.
	* decl.c (set_identifier_local_value_with_scope): New fn.
	(pushdecl): Use it.
	(set_identifier_local_value, lookup_type_current_level): New fns.
	* decl2.c (do_local_using_decl): Handle types and binding level
	stuff properly.

	* init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
	* decl.c (select_decl): Extract a lone function from an OVERLOAD.
	(lookup_namespace_name): Likewise.
	* typeck.c (build_unary_op): Not here anymore.

	* decl2.c (do_class_using_decl): Make sure we get an identifier.
	* class.c (handle_using_decl): Ignore TYPE_DECLs.

	* decl.c (qualify_lookup): New fn.
	(lookup_name_real): Use it.

1998-07-16  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* decl2.c (add_using_namespace): When directly using a namespace
	that was indirect before, promote it.

	* cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
	LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
	LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
	* decl.c (select_decl): Replace two flag parameters by one.
	(unqualified_namespace_lookup): Likewise, pass flag.
	(lookup_flags): New function.
	(lookup_name_real): Compute flags, pass them.
	(lookup_namespace_name): Call with zero-flag.
	* decl2.c (ambiguous_decl): Add flag parameter, complain only
	according to flags.
	(lookup_using_namespace, qualified_lookup_using_namespace):
	Add flag parameter, pass them through.
	* lex.c (do_scoped_id): Call with zero-flag.

1998-07-16  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (convert_for_assignment): Use comptypes.

1998-07-16  Mark Mitchell  <mark@markmitchell.com>

	* semantics.c (finish_object_call_expr): Move test for the
	function called being a TYPE_DECL to ...
	* call.c (build_new_method_call): Here.

1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (arg_assoc_class): Also look at template arguments, if any.
	(arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.

	* lex.c (looking_for_typename): Don't initialize.

	* decl2.c (ambiguous_decl): Clarify error message.

	* decl.c (push_using_directive): Iterate over namespaces used
	indirectly.

1998-07-15  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* decl2.c (add_using_namespace): Iterate over namespaces used
	indirectly.

	* decl.c (lookup_name_real): Accept namespace aliases as locals.
	(cat_namespace_levels): Ignore aliases.
	(duplicate_decls): Ignore duplicate aliases.
	* decl2.c (do_namespace_alias): Process block level namespace
	aliases.  Store alias with pushdecl.  Remove odr errors.
	* parse.y (namespace_alias): New non-terminal.
	(extdef): Use it.

1998-07-15  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
	Handle TEMPLATE_TYPE_PARM.
	(arg_assoc): Rewrite.

	* pt.c (complete_template_args): Don't look at the context unless
	we have to.

	* method.c (build_decl_overload_real): Fix namespace handling.

	* typeck.c (build_unary_op): Extract a lone function from an
	OVERLOAD.

	* call.c (build_scoped_method_call): Handle getting a namespace
	for basetype in a destructor call.
	(check_dtor_name): Handle enums.

	* parse.y (using_directive): New nonterminal.
	(extdef, simple_stmt): Use it.

1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl2.c (add_function): Move error message ...
	(arg_assoc_namespace): ... from here.

1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (namespace_qualifier): Fix multiple level handling.
	* decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
	(arg_assoc): Don't skip the first argument of a function.

Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)

	* search.c (my_tree_cons): Clean up.

1998-07-14  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (joust): Don't warn about "confusing" conversions to the
	same type.

1998-07-14  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* class.c (push_nested_class): Complain about namespaces.
	* decl.c (start_decl): Enter the object's namespace.
	(cp_finish_decl): Leave it.
	(grokdeclarator): Likewise.
	* decl2.c (check_decl_namespace): New function.
	(finish_file): Call it.
	* parse.y (complex_direct_notype_declarator): Set complexity
	of namespace-qualified ids to -1, enter the namespace.

	* method.c (build_template_decl_overload): Expect _DECL as first
	parameter.  Put context temporarily into current_namespace.
	* pt.c (check_explicit_specialization): Change caller.
	(tsubst): Likewise.

	* init.c (build_offset_ref): Call mark_used and
	convert_from_reference for namespace members.

Mon Jul 13 23:25:28 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* search.c (my_tree_cons): The bitfield is at index 2.

Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>

	* lang-options.h: Format changed to work with new --help support
	in gcc/toplev.c

1998-07-12  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl2.c (build_expr_from_tree): Change calls of do_identifier.
	Do Koenig lookup in CALL_EXPR.
	(arg_assoc): Handle error_mark.
	* lex.c (is_global): New function.
	(do_identifier): Expect arguments for Koenig lookup.
	* parse.y (primary): Add rules for calls of unqualified function calls.
	(do_id): Change call of do_identifier.
	* pt.c (finish_stmt_expr): Likewise.
	* semantics.c (finish_id_expr): Likewise.
	(finish_call_expr): Add integer parameter to indicate
	argument-dependent lookup.

	* decl.c (struct binding_level): New field using_directives.
	(push_using_decl): Not sorry anymore.
	(push_using_directive): New function.
	(lookup_tag): Use CP_DECL_CONTEXT to iterate.
	(unqualified_namespace_lookup): New function, code from ...
	(lookup_name_real): ... here.
	* decl2.c (lookup_using_namespace): Pass using list instead of
	initial scope.
	(validate_nonmember_using_decl): New function.
	(do_nonmember_using_decl): New function.
	(do_toplevel_using_decl): Use them.
	(do_local_using_decl): New function.
	(do_using_directive): Support block-level directives.
	* parse.y (simple_stmt): Support using declarations and
	directives.
	(namespace_qualifier, namespace_using_decl): New non-terminals.

	* xref.c (classname): New function.
	(GNU_xref_hier): Change class and base parameters to tree.
	* decl.c (xref_baseypes): Change caller.
	* friend.c (make_friend_class): Likewise.

1998-07-12  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>

	* typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
	comparison.

	* pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a
	template template parameter, record its use.
	(for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse
	its template arguments if exists.

	* pt.c (coerce_template_template_parms): New function equivalent
	to coerce_template_parms when IS_TMPL_PARM is true.
	(coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
	all callers changed.

	(coerce_template_parms): Access ARGLIST properly when creating a
	new vector.  Only accept implicit TYPE_DECL as valid argument for
	a template template parameter when it is a base class of
	current_class_type.  Don't display error message when COMPLAIN is
	false.

1998-07-12  Klaus Kaempf  (kkaempf@progis.de)

	* repo.c (get_base_filename): Use file_name_nondirectory.
	(open_repo_file): Likewise.
	* cp-tree.h (file_name_nondirectory): Add prototype.

1998-07-12  Jason Merrill  <jason@yorick.cygnus.com>

	* friend.c (do_friend): Pull the identifier out of declarator.
	Use cp_error and friends.
	* decl2.c (qualified_lookup_using_namespace): Fix call to
	purpose_member.
	* decl.c (lookup_name_real): Don't call complete_type on a namespace.
	(grokvardecl): Use DECL_CLASS_SCOPE_P.
	* cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
	* class.c (warn_hidden): Fix for OVERLOAD.
	From grahams@rcp.co.uk:
	* cp-tree.h (DEFARG_NODE_CHECK): New macro.
	(DEFARG_LENGTH, DEFARG_POINTER): Use it.

Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)

	* g++.1 (-traditional): Remove duplicated documentation.

1998-07-11  Mark Mitchell  <mark@markmitchell.com>

	* method.c (flush_repeats): Add nrepeats parameter.
	(issue_nrepeats): Likewise.
	(is_back_referenceable_type): New function.  Don't back-reference
	TEMPLATE_TYPE_PARMs as well as simple types like integers.
	(build_mangled_name_for_type): Likewise.
	(build_mangled_name_for_type_with_Gcode): Likewise.
	(lasttype): Remove.
	(nrepeats): Likewise.
	(Nrepeats): Likewise.
	(start_squangling): Don't clear the variables removed above.
	(end_squangling): Likewise.
	(flush_repeats): Tidy.  Use nrepeats parameter rather than
	Nrepeats global.
	(issue_nrepeats): Likewise, but with nrepeats global.  Use
	is_backreferenceable_type.
	(build_overload_nested_name): Tidy.  Add comment.  Use
	build_mangled_name_for_type.
	(build_underscore_int): Comment.
	(build_overload_scope_ref): Use build_mangled_name_for_type.
	(build_overload_int): Likewise.
	(build_template_template_parm_names): Tidy.
	(build_template_parm_names): Use build_mangled_name_for_type.
	(build_overload_identifier): Add comments.
	(build_mangled_name_for_type_with_Gcode): Split out from
	build_mangled_name.
	(build_mangled_name_for_type): Use it.
	(build_mangled_name): Rework to use build_mangled_name_for_type
	and to not use global nrepeats/Nrepeats.  Tidy.
	(process_modifiers): Tidy.
	(check_btype): Use is_backreferenceable_type.  Add comment.
	Rename `node' to `type'.
	(process_overload_item): Set numeric_output_need_bar here.
	Use build_mangled_name_for_type.  Tidy.
	(build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
	build_mangled_name_for_type.

	* pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
	for TYPE_DECLs.

1998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* cp-tree.h (warn_long_long): Define.
	* decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
	warning "ANSI C++ does not support `long long'".
	* decl2.c (warn_long_long): Define.
	(lang_decode_option): Parse -Wlong-long, -Wno-long-long options.

1998-07-07  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (xref_tag): Handle attributes between 'class' and name.
	* parse.y (aggr): Likewise.
	* semantics.c (finish_class_definition): Likewise.
	* Makefile.in (EXPECTED): Adjust.

	* cp-tree.h: Declare flag_optional_diags and warn_multichar.
	* decl2.c: Define them.
	(lang_decode_option): Handle them.
	* lang-options.h: Add -foptional-diags.
	* class.c (finish_struct): Don't complain about multiple meanings of
	name if -fno-optional-diags.
	* decl.c (pushdecl_class_level): Likewise.
	* lex.c (real_yylex): Check warn_multichar.

1998-07-06  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (lookup_tag): Use CP_DECL_CONTEXT.

	* tree.c (make_binfo): Fix length.

1998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>

	* decl2.c (lang_decode_option): Remove warn_template_debugging.
	* lang-options.h: Likewise.

Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* except.c (build_eh_type_type_ref): Remove unused variable `susp'.
	(process_start_catch_block): Likewise for variables
	`false_label_rtx', `call_rtx' and `return_value_rtx'.

1998-06-29  Brendan Kehoe  <brendan@cygnus.com>

	* tree.c (build_srcloc): Make sure we allocate this node on the
	permanent obstack.

Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>

	* g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
	(lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
	(lang_specific_driver): Only add -lm automatically if need_math is
	nonzero.

Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)

	* Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o

Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (EXPR_H): New dependency variable.
	(decl2.o): Depend on $(EXPR_H).
	(typeck.o): Likewise.
	(init.o): Likewise.
	(expr.o): Likewise.

1998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>

	* decl.c (start_enum): Put local enums on permanent_obstack.

1998-06-25  Mark Mitchell  <mark@markmitchell.com>

	* cp-tree.h (c_get_alias_set): Declare.
	* decl.c (init_decl_processing): Set lang_get_alias_set.

1998-06-25  Andrew MacLeod  <amacleod@cygnus.com>

	* cp-tree.h (mark_all_runtime_matches): Add function prototype.
	* except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
	flag for all function decls which are in the exception table.
	* exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
	* decl2.c (finish_file): Call mark_all_runtime_matches to make sure
	code is emitted for any referenced rtti function.

1998-06-25  Dave Brolley  <brolley@cygnus.com>

	* lang-specs.h: Use new | syntax to eliminate
	string concatenation.

1998-06-25  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h (CP_DECL_CONTEXT): New macro.
	* decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
	* method.c (build_overload_nested_name): Likewise.
	* sig.c (build_signature_pointer_or_reference_type): Don't set
	DECL_CONTEXT.

1998-06-24  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
	* cp-tree.h (FROB_CONTEXT): New macro.
	(DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
	* decl.c (namespace_binding): Replace NULL_TREE with
	global_namespace.
	(set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
	* decl2.c (is_namespace_ancestor, lookup_using_namespace):
	Likewise.
	* decl.c (pushtag): Use FROB_CONTEXT.
	(pushdecl, make_typename_type, define_function, grokdeclarator):
	Likewise.
	* decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
	* pt.c (push_template_decl_real, lookup_template_class, tsubst):
	Likewise.
	* decl2.c (decl_namespace): Return global_namespace if no context.
	* method.c (build_overload_nested_name): Expect null as context.
	* pt.c (mangle_class_name_for_template): Do nothing for null
	contexts.
	(lookup_template_class): Allow for null id_context.

1998-06-25  Richard Henderson  <rth@cygnus.com>

	* method.c (emit_thunk): Set current_function_is_thunk for the
	ASM_OUTPUT_MI_THUNK case as well.

1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>

	* exception.cc (__cplus_type_matcher): Get a match_info pointer
	instead of an exception table entry as a parameter.

1998-06-23  Andrew MacLeod  <amacleod@cygnus.com>

	* parse.y (function_try_block): Don't call start_catch_handler.
	* except.c (call_eh_info): Remove coerced field from declaration.
	(build_eh_type_type_ref): New function to create an address of a
	rtti function for the new style exception tables.
	(expand_start_catch_block): Split function, this contains the
	common part.
	(process_start_catch_block_old): New function to perform the rest
	of expand_start_catch_block under old style exceptions.
	(process_start_catch_block_old): New function to perform the rest
	of expand_start_catch_block under new style exceptions.
	(expand_end_catch_block): Only pop the false label off the stack under
	the old style of exceptions.
	* semantics.c (finish_try_block): Don't call start_catch_handler.
	* exception.cc (struct cp_eh_info): Add original_value field.
	(__cplus_type_matcher): Perform type matching on the original exception
	value, and if we have a match, set the current value.
	(__cp_push_exception): Set the original exception value.

1998-06-23  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (joust): Fix confusing conversion warning.

	* call.c (build_op_delete_call): Add placement parm.  Check
	LOOKUP_SPECULATIVELY.
	* cp-tree.h, decl2.c, init.c: Adjust.
	* decl.c (finish_function): Use it.

	* pt.c (tsubst): Diagnose creating void fields or variables.

Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* call.c (build_scoped_method_call): Remove unused variable `tmp'.

	* cp-tree.h (check_dtor_name): Add prototype.

	* init.c (expand_member_init): Remove unused variables
	`ptr_type_node', `parm' and `rval'.

	* ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
	in call to fprintf.
	(lang_print_xnode): Likewise.

	* typeck2.c (enum_name_string): Cast argument to sprintf to long
	and use %ld specifier.

	* xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
	specifier in call to fprintf.
	(GNU_xref_member): Cast argument to sprintf to int.

Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* typeck2.c (pop_init_level): Warn about implicit zero initialization
	of struct members.

Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* cp-tree.h: Prototype function `check_java_method'.

1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (finish_struct): Make conflicting use of id a pedwarn.
	* decl.c (pushdecl_class_level): Likewise.

1998-06-17  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (convert_nontype_argument): Issue an error when presented
	with an integer (real) constant that cannot be simplified to an
	INT_CST (REAL_CST).

	* cp-tree.h (c_get_alias_set): Remove declaration added in
	1998-06-13 change that should never have been checked in.

1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (build_binary_op_nodefault): Change % in format strings
	to %%.

	* decl.c (grokvardecl): Don't build_static_name for decls that
	aren't at namespace scope.

	* init.c (perform_member_init): Catch default-initialization of
	references.

1998-06-17  Mark Mitchell  <mark@markmitchell.com>

	* errfn.c (cp_thing): Handle the `%%' formatting sequence.

1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>

	* method.c (hack_identifier): Complain about getting a namespace
	or class template.
	* typeck.c (decay_conversion): Remove check for namespaces.
	* typeck2.c (incomplete_type_error): Likewise.
	* parse.y (template_arg): Add PTYPENAME expansion.

1998-06-16  Andrew MacLeod  <amacleod@cygnus.com>

	* decl.c (grokvardecl): Don't build external assembler names for
	TYPENAMEs in other namespaces as there is no declarator.
	* error.c (cp_file_of, cp_line_of): Don't extract file or line number
	info from DECL_CONTEXT if it is NULL.

1998-06-16  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (check_dtor_name): Split out.
	(build_scoped_method_call): Use it.
	(build_method_call): Use it.
	* init.c (build_offset_ref): Use it.

	* typeck.c (build_static_cast): Fix handling of pointers to members.

	* decl.c (finish_function): Just return nothing from a constructor.
	* typeck.c (c_expand_return): Complain about returning a void
	expression from a destructor.

1998-06-13  Mark Mitchell  <mark@markmitchell.com>

	* class.c (alter_access): Accept a BINFO explaining how to get
	from the entity whose accessed is being altered to the type doing
	the altering.
	(handle_using_decl): New function containing code split out from ...
	(finish_struct_1): Here.

	* cp-tree.h (complete_type_or_else): Declare.
	* init.c (build_new_1, build_delete): Use it.
	* typeck.c (require_complete_type): Use complete_type, rather than
	expanding it inline.
	(complete_type_or_else): New function.
	(build_component_ref): Use it.
	(pointer_int_sum): Make sure the type pointed to is complete.
	(pointer_diff): Likewise.

	* pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
	types.

	* search.c (get_matching_virtual): Note that member templates
	cannot override virtual functions.

1998-06-12  Brendan Kehoe  <brendan@cygnus.com>

	* pt.c (check_explicit_specialization): If DECLARATOR turned into
	an error_mark_node from lookup_template_function, return the same.
	(determine_specialization): Also make sure TEMPLATE_ID isn't an
	error_mark_node, before we try to read its operands.
	* decl.c (grokdeclarator): If we got an error_mark_node from
	check_explicit_specialization, just return it right back.

1998-06-12  Mark Mitchell  <mark@markmitchell.com>

	* class.c (instantiate_type): Don't treat template-ids that don't
	specify any template arguments as equivalent to ordinary
	identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
	pointer-to-members for member templates.  Tidy slightly.
	* cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
	* init.c (build_offset_ref): Handle template-ids like ordinary
	identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
	offset part of the OFFSET_REF.
	* typeck.c (build_unary_op): Change check for unknown types to
	look for OFFSET_REFs, not SCOPE_REFs.

1998-06-11  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (is_member_template_class): New function.
	(push_template_decl_real): Use it.

1998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>

	* friend.c (do_friend): Add support for nested classes using
	member functions of the enclosing class as friends.

1998-06-10  Mark Mitchell  <mark@markmitchell.com>

	* call.c (convert_default_arg): Make global, not static.
	(convert_arg_for_ellipsis): Split out from ...
	(build_over_call): Here.
	* cp-tree.h (convert_default_arg); Declare.
	(convert_arg_to_ellipsis): Likewise.
	(do_member_init): Remove.
	* init.c (do_member_init): Remove; this code is dead.
	(expand_member_init): Remove much of this code; it is dead.
	* typeck.c (convert_arguments): Use convert_default_arg and
	convert_arg_for_ellipsis, rather than duplicating here.

	* call.c (convert_like): Don't fail silently if
	build_user_type_conversion fails.  Always return error_mark_node
	for failure.

1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>

	* search.c (covariant_return_p): Complain about ambiguous base.

	* typeck.c (build_component_ref): Diagnose ref to nested type.

1998-06-10  Brendan Kehoe  <brendan@cygnus.com>

	* decl.c (grokparms): Check that INIT isn't an error_mark_node
	before giving error about invalid type for default arg.

1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_method_call): Fix thinko.

1998-06-10  Dave Brolley  <brolley@cygnus.com>

	* decl2.c (lang_decode_option): New argc/argv interface.
	* cp-tree.h (lang_decode_option): New argc/argv interface.
	* lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
	specified for cpplib-enabled compilers.
	* lex.c (lang_init): Don't check_newline for cpplib.
	(init_parse): Don't initialize cpplib here.

1998-06-10  Brendan Kehoe  <brendan@cygnus.com>

	* typeck.c (build_component_ref): Make sure FIELD has a lang_specific
	piece before checking DECL_MUTABLE_P.

1998-06-10  John Carr  <jfc@mit.edu>

	* tree.c (debug_binfo): Make printf format match arguments.

	* error.c (OB_PUTI): Make printf format match arguments.

1998-06-10  Jason Merrill  <jason@yorick.cygnus.com>

	* init.c (perform_member_init): Handle default-initialization.

	* except.c (build_throw): Handle throwing NULL.

	* typeck.c (build_x_function_call): Use resolve_offset_ref.

	* search.c (compute_access): Only strip an anonymous union
	for a FIELD_DECL.

	* call.c (add_builtin_candidates): Tweak.

	* cvt.c (build_expr_type_conversion): Restore code for conversion
	from class types.
	* decl2.c (delete_sanity): Use it.  Clean up.

	* typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.

1998-06-10  Branko Cibej  <branko.cibej@hermes.si>

	* typeck.c (c_expand_return): Don't warn about void expressions on
	return statements in functions returning void.

1998-06-09  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (fn_type_unification): Revise documentation.  Tidy.
	(type_unification): Likewise.

1998-06-09  Andrew MacLeod  <amacleod@cygnus.com>

	* semantics.c (finish_try_block): Rename expand_start_catch, and delete
	expand_end_catch.
	* parse.y (function_try_block): Rename expand_start_catch, and delete
	expand_end_catch.
	* except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
	expand_end_catch.

1998-06-09  Jason Merrill  <jason@yorick.cygnus.com>

	* search.c (lookup_member): New fn.
	* class.c (finish_struct_1): Use it.
	* decl.c (lookup_name_real): Use it.

Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.

	* cp-tree.h: Add prototype for `maybe_print_template_context' and
	`maybe_make_one_only'.

	* decl.c (auto_function): Remove unused variable `decl'.

	* decl2.c: Include dwarf2out.h and dwarfout.h.

	* lex.c: Remove redundant declarations of `set_float_handler' and
	`asm_out_file'.

1998-06-08  Andrew MacLeod  <amacleod@cygnus.com>

	* except.c (init_exception_processing): Remove NEW_EH_MODEL compile
	time flag.  Call __cp_eh_info instead of __cp_exception_info.
	* exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
	(__cp_exception_info): Return offset into cp_eh_info structure to
	match what use to be the start of this structure.
	(__cp_eh_info): New function to return a pointer to cp_eh_info struct.
	(__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
	compile time flag.
	(__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
	__cp_eh_info instead of __cp_exception_info.

1998-06-08  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (cp_finish_decl): Disable inlining of extern inlines
	with static variables.

1998-06-08  Mark Mitchell  <mark@markmitchell.com>

	* init.c (build_offset_ref): Correct previous change to use build,
	not build_min.

1998-06-07  Mark Mitchell  <mark@markmitchell.com>

	* class.c (instantiate_type): Handle pointer-to-members where the
	member is a template.
	* init.c (build_offset_ref): Likewise.
	* typeck.c (build_unary_op): Likewise.

1998-06-07  Richard Henderson  <rth@cygnus.com>

	* lex.c (lang_init_options): New function.
	(lang_init): Remove flag_exceptions == 2 hack.

1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>

	* search.c (envelope_add_decl): Tweak for implicit typename.

	* call.c (joust): Also warn about confusing conversion op/constructor
	overload resolution.

	* spew.c (yylex): Also return the TYPE_DECL if got_object.
	Don't clear got_object after '~'.
	* call.c (build_scoped_method_call): Tweak destructor handling.
	(build_method_call): Likewise.
	* pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
	TYPE_MAIN_VARIANT for destructors.
	* semantics.c (finish_object_call_expr): Complain about calling a
	TYPE_DECL.

1998-06-05  Per Bothner  <bothner@cygnus.com>

	* g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
	Define - update needed by gcc.c change.

1998-06-05  Jason Merrill  <jason@yorick.cygnus.com>

	* error.c (cp_printers): Use 'o' instead of '_' for the null entry.

1998-06-05  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
	* decl.c (lookup_name_real): Add namespaces_only parameter.
	If set, return only NAMESPACE_DECLs.
	(select_decl): Likewise.
	(identifier_type_value): Give additional parameter.
	(lookup_name_nonclass): Likewise.
	(lookup_name): Likewise.
	(find_binding): Skip namespace aliases.
	(binding_for_name): Likewise.
	(push_namespace): Check for namespace aliases.
	(lookup_name_namespace_only): New function.
	(begin_only_namespace_names, end_only_namespace_names): New functions.
	* decl2.c (set_decl_namespace): Skip namespace aliases.
	(do_using_directive): Likewise.
	(do_namespace_alias): Produce namespace aliases, fix alias
	redeclaration.
	* error.c (dump_decl): Support SCOPE_REF.
	* parse.y (extdef): Wrap lookup with namespace_only for namespace
	aliases and using declarations.

1998-06-04  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (really_overloaded_fn): Only see through one TREE_LIST.

	* error.c (dump_expr): Clean up NEW_EXPR case.

1998-06-04  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	Suggested by Brendan Kehoe
	* decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
	treat it as using ::decl.

	* decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.

	* tree.c (mapcar): Support NEW_EXPR.

	* error.c (dump_expr): Support NEW_EXPR.

1998-06-03  Jason Merrill  <jason@yorick.cygnus.com>

	* method.c (make_thunk): Use overload machinery to make name.
	* search.c (covariant_return_p): New fn.
	(get_matching_virtual): Use it.

	* init.c (build_new_1): Fix check for void.

1998-06-01  Per Bothner  <bothner@cygnus.com>

	* cp-tree.h (TYPE_FOR_JAVA):  New macro.
	* decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
	java_int_type_node, java_long_type_node, java_float_type_node,
	java_double_type_node, java_char_type_node, java_boolean_type_node):
	New "primitive" types, with predefined names __java_byte etc.
	(record_builtin_java_type):  New function.
	(init_decl_processing):  Make Java types with record_builtin_java_type.
	(pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
	(xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
	(grokfndecl):  Call check_java_method for Java classes.
	* method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
	(process_overload_item):  Match types against specific
	java_XX_type_node types, rather than using is_java_type.
	* class.c (finish_struct_1):  Don't add default copy constructor
	or operator= if TYPE_FOR_JAVA.
	(pop_lang_conext):  Restore strict_prototyp proper if Java.
	* decl2.c (acceptable_java_type, check_java_method):  New functions.
	* pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
	(tsubst):  Move common statement after if statement.
	* typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.

1998-06-01  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (for_each_template_parm): Use first_rtl_op.

	* tree.c (build_cplus_array_type_1): Also check index_type for
	template parms.

1998-05-31  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst): Always copy BINFO_BASETYPES.

1998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>

	* tree.c (layout_basetypes): If we change TYPE_SIZE, change
	TYPE_SIZE_UNIT too.

1998-05-29  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (grokdeclarator): Don't complain about in-class
	initialization of static consts if we don't really know the type
	of the variable.

1998-05-29  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h (DECL_DESTRUCTOR_P): New macro.
	* method.c (build_destructor_name): New fn.
	* decl2.c (maybe_retrofit_in_chrg): Split out...
	(grokclassfn): From here.  Reorganize.
	* decl.c (grok_ctor_properties): Make sure ctors for types with
	vbases have the in_chrg parm.
	* pt.c (instantiate_class_template): Update
	TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
	grok_*_properties.
	(tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.

1998-05-28  Mark Mitchell  <mark@markmitchell.com>

	* pt.c (instantiate_decl): Make test for whether or not static
	variables should be instantiated early match its comment.

1998-05-28  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (start_decl): Always pedwarn about vacuously redeclaring
	a member.
	(start_function): Call check_default_args.
	* decl2.c (grokfield): Don't call check_default_args.
	(check_default_args): Use cp_error_at.
	* lex.c (do_pending_defargs): Call check_default_args.

1998-05-27  Brendan Kehoe  <brendan@cygnus.com>

	* call.c (build_method_call): Make sure get_type_value returns
	something before we try to use its TYPE_MAIN_VARIANT.
	(build_scoped_method_call): Likewise.

1998-05-27  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (digest_init): Complain about getting a TREE_LIST to
	initialize an array.

	* search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
	DECL_VIRTUAL_P.

	* friend.c (do_friend): Clarify template warning.

1998-05-27  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (shadow_label): Don't treat decls as identifiers.
	(maybe_push_to_top_level): Clear shadowed_labels.

	* pt.c (instantiate_decl): Reset lineno and filename after calling
	regenerate_decl_from_template.

	* decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
	error_mark_node.

1998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>

	* parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.

1998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
	(convert_nontype_argument): Handle cases when nontype template
	parameters become classes after substitution.

1998-05-26  Mark Mitchell  <mark@markmitchell.com>

	* friend.c (is_friend): Use comptypes, rather than == to compare
	types.  Modify for new representation of template friends.
	(make_friend_class): Likewise.
	* pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
	(instantiate_class_template): Deal with template friends.

	* decl.c (store_parm_decls): Remove redundant call to
	expand_main_function.

1998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
	DECL_USE_TEMPLATE.

1998-05-26  Per Bothner  <bothner@cygnus.com>

	* language_as_string:  Handle lang_java.

1998-05-26  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (pushdecl): Don't copy the type_decl.

1998-05-26  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* class.c (pushclass): Always store TYPE_MAIN_VARIANT in
	current_class_type.
	* decl.c (grokdeclarator): Put typedefs on the type's obstack.

	* parse.y (complex_direct_notype_declarator): Use $1 to access
	scope of notype_qualified_id.

1998-05-26  Dave Brolley  <brolley@cygnus.com>

	* lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
	(init_parse): Initialize cpplib interface.

	* Makefile.in (CXX_OBJS): Make sure dependencies never end with an
	empty continuation.

1998-05-26  Mark Mitchell  <mark@markmitchell.com>

	* decl.c (pushtag): Avoid crashing on erroneous input.

1998-05-25  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (push_namespace): Only produce one unique name for
	anonymous namespaces.
	(get_unique_name): Remove.

1998-05-25  Mark Mitchell  <mark@markmitchell.com>

	* call.c (tourney): Don't do any extra comparisons.

	* decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.

	* cp-tree.h (processing_template_parmlist): Declare.
	* decl.c (pushtag): Don't call push_template_decl when we
	shouldn't.
	* pt.c (processing_template_parmlist): New variable.
	(TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
	(complete_template_args): Use it.
	(add_to_template_args): Likewise.
	(innermost_args): Likewise.
	(tsubst): Likewise.
	(begin_template_parm_list): Use processing_template_parmlist.
	(end_template_parm_list): Likewise.

	* cp-tree.h (ANON_UNION_TYPE_P): New macro.
	* decl.c (grokdeclarator): Use it.
	* decl2.c (grok_x_components): Likewise.
	* init.c (initializing_context): Likewise.
	* method.c (do_build_copy_constructor): Likewise.
	(do_build_assign_ref): Likewise.
	* search.c (compute_access): Likewise.
	* typeck.c (build_component_ref): Likewise.

	* decl.c (grokdeclarator): Don't give a cv-qualified version of an
	unnamed type a typedef name "for linkage purposes".

	* pt.c (lookup_template_class): Don't look at
	IDENTIFIER_CLASS_VALUE when there's no current_class_type.

	* method.c (build_overload_int): Handle error cases gracefully.

	* pt.c (instantiate_decl): Handle static member variables
	correctly.

	* pt.c (tsubst): Use the tsubst'd type when producing new
	TEMPLATE_PARM_INDEX nodes.

1998-05-24  Mark Mitchell  <mark@markmitchell.com>

	* tree.c (cp_tree_equal): Handle pointers to member functions.

	* call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
	sure the type of the REF_BIND is a reference type.
	(maybe_handle_ref_bind, compare_ics): Rename reference_type to
	target_type for clarity.

	* parse.y (xcond): Move call to condition_conversion ...
	* semantics.c (finish_for_cond): Here.
	* parse.c: Regenerated.

1998-05-24  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (push_namespace): Namespaces have type void.
	* typeck2.c (incomplete_type_error): Complain about namespace
	used as expression.
	* typeck.c (decay_conversion): Likewise.

1998-05-24  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* error.c (dump_expr): Support namespaces.

1998-05-23  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.def: Add SRCLOC.
	* cp-tree.h: Add struct tree_srcloc and accessor macros.
	* tree.c (build_srcloc, build_srcloc_here): New fns.
	* pt.c (add_pending_template): Use build_srcloc_here.
	(push_tinst_level): Update last_template_error_tick before erroring.
	(instantiate_decl): Restore lineno and input_filename before
	calling add_pending_template.
	* decl2.c (finish_file): Set up lineno and input_filename for
	pending templates.

1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (lang_print_error_function): New fn.
	(init_decl_processing): Set print_error_function to use it.
	* errfn.c (cp_thing): Don't call maybe_print_template_context here.

	* call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
	ICS_BAD_FLAG.

	* cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
	copy-initialization.

	* class.c (build_vtable_entry): Use int_fits_type_p.
	(build_vtable): Pass a signed offset to build_vtable_entry.
	(prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
	set_rtti_entry): Likewise.

1998-05-22  Per Bothner  <bothner@cygnus.com>

	* cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
	(C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.

1998-05-22  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (print_template_context): Use fprintf instead of cp_error.

	* pt.c (determine_specialization): Just return an error_mark_node.
	Also print the decl we want in error messages.  If we complain,
	return error_mark_node.
	(tsubst_friend_function): Set lineno and input_filename so
	error messages will be useful.
	(instantiate_template): Just return an error_mark_node.
	(check_explicit_specialization): Don't mess with a returned
	error_mark_node.

	* pt.c (print_template_context): Add new argument.
	(maybe_print_template_context): New fn.
	(push_tinst_level): Increment tinst_level_tick.
	(pop_tinst_level): Likewise.
	* errfn.c (cp_thing): Call maybe_print_template_context.  Use
	xrealloc instead of xmalloc.

	* typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.

1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst_friend_class): Don't call redeclare_class_template
	if the template we looked up is the same as the one we already
	have.

Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>

	* lex.c: (handle_sysv_pragma): FILE* parameter not used.
	(cpp_reader,parse_in): Add for cpplib.
	(check_newline): Call handle_sysv_pragma with new interface.
	(check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.

	* input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
	(sub_getch): Call GETC for cpplib.

	* cp-tree.h: (get_directive_line): Different prototype for cpplib.
	(GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.

	* Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib.

1998-05-21  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (maybe_make_one_only): New fn.
	(import_export_vtable): Use it.
	(import_export_decl): Likewise.
	* pt.c (mark_decl_instantiated): Likewise.

1998-05-21  Mark Mitchell  <mmitchell@usa.net>

	* decl2.c (find_representative_member): Rename to ...
	(build_anon_union_vars): New function.
	(finish_anon_union): Fix stupidity of previous change.

1998-05-20  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (grokfndecl): Handle definition of specialization in
	friend declaration.

	* error.c (dump_decl): Fix LOOKUP_EXPR handling.

1998-05-20  Mark Mitchell  <mmitchell@usa.net>

	* class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
	to look for type declarations.
	(finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
	* cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
	(finish_member_class_template): Declare.
	* decl.c (pushtag): Put member class templates on the
	CLASSTYPE_TAGS list, just as for ordinary member classes.
	(pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
	(lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
	IDENTIFIER_NAMESPACE_VALUEs.
	* parse.y (component_decl): Move code to ...
	* semantics.c (finish_member_class_template): New function.
	Don't put member class templates on the list of components for a
	class.
	* parse.c: Regenerated.
	* pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
	In fact, don't use DECL_CONTEXT at all here.

1998-05-20  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (record_unknown_type): New function.
	(init_decl_processing): Call it for the unknown and global type
	nodes.

1998-05-20  Mark Mitchell  <mmitchell@usa.net>

	* decl2.c (find_representative_member): New function.
	(finish_anon_union): Use it.

	* cp-tree.h (MAIN_NAME_P): New macro.
	(DECL_MAIN_P): Likwise.
	* decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
	(grokfndecl): Use the new macros.
	(grokdeclarator): Likewise.
	(start_function): Likewise.
	(store_parm_decls): Likewise.
	(finsh_function): Likewise.
	* friend.c (do_friend): Likewise.
	* typeck.c (build_function_call_real): Likewise.
	(build_unary_op): Likewise.

Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (start_objects, finish_objects, do_dtors,
	do_ctors): Split out from...
	(finish_file): ...here.

Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (is_overloaded_fn): Don't abort on placeholders from
	push_class_decls.

Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>

	* class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.

	* error.c (dump_expr): Handle an ARROW_EXPR.

Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>

	* decl.c (saveable_obstack): Declare.
	(pushdecl): Copy TYPE_DECLs to the same obstack as the type they
	declare, if necessary.

Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>

	* call.c (compare_qual): Remove.
	(is_subseq): Tweak.
	(is_properly_derived_from): New function.
	(maybe_handle_ref_bind): Likewise.
	(maybe_handle_implicit_object): Likewise.
	(compare_ics): Modify substantially to bring into conformance with
	the standard.
	* cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
	(comp_cv_qualification): Declare.
	(comp_cv_qual_signature): Likewise.
	* typeck.c (comp_cv_qualification): Likewise.
	(comp_cv_qual_signature): Likewise.

Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (parse.o): Depend on toplev.h.

	* class.c (typecode_p): Remove prototype and definition.

	* cp-tree.h (currently_open_class, is_empty_class, member_p):
	Add prototype.

	* decl.c (push_overloaded_decl_top_level): Remove prototype and
	definition.

	* errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
	in call to `cp_thing'.
	(cp_warning): Likewise for function pointer `warning'.

	* except.c (do_function_call): Remove prototype and definition.
	(call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.

	* method.c (is_java_type): Add prototype and make it static.

	* parse.y: Include toplev.h.

	* pt.c (type_unification): Remove unused variable `arg'.
	(instantiate_decl): Likewise for `save_ti'.

	* tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.

Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* init.c (build_member_call): Handle template_ids.
	* parse.y (primary): Add global_scope template_id.

Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (get_sentry): Use end_temporary_allocation.
	Don't declare permanent_obstack.

Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>

	* parse.y (.finish_new_placement): New non-terminal.
	(unary_expr, new_type_id): Use it.
	* parse.c: Regenerated.

Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>

	* pt.c (redeclare_class_template): Say where the original definition
	of the template-parameter's default argument appeared.

Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_over_call): Tweak empty class handling.

	* decl.c (make_typename_type): Use currently_open_class.

	* class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.

Mon May 18 01:43:01 1998  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
	for a type unless it is one.

	* class.c (finish_struct_1): Use OVL_CURRENT in error message.

Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)

	* Makefile.in (program_transform_name, objdir): Define.

	* Makefile.in (BISON): Use bison from the build tree if it exists.
	(FLEX): Likewise.

Sun May 17 14:52:08 1998  Martin v. Löwis  <loewis@informatik.hu-berlin.de>

	* typeck.c (type_unknown_p): Return true for TREE_LIST also.

	* call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.

Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_scoped_method_call): Likewise.

Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>

	* init.c (build_new_1): Call suspend_momentary around the creation
	of values that must be saved for exception handling.
	* parse.y (.build_new_placement): New non-terminal.
	(unary_expr, new_placement): Use it.
	* parse.c: Regenerated.

Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
	old and new types.

	* pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
	canonical type.

	* call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.

Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (start_decl): Revert problem change.

	* Makefile.in (CONFLICTS): Fix.

Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.

Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (finish_struct_1): Use BINFO_SIZE.

	* decl.c (start_decl): Use 'tem'.

Thu May 14 16:30:47 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* exception.cc: Include eh-common.h.
	(struct cp_eh_info): Add eh_info struct with NEW_EH_MODEL.
	(__cplus_type_matcher): First stab at new C++ runtime type matcher.
	(__cp_push_exception): Initialize eh_info struct as well.
	* except.c: Remove local structs and include eh-common.h.
	(init_exception_processing): Set language and version codes.
	(call_eh_info): Add presence of eh_info to runtime description of
	struct cp_eh_info.
	(expand_end_eh_spec): Call start_catch_block() and end_catch_block().
	* semantics.c (finish_try_block): Call start_catch_block() and
	end_catch_block().
	* parse.y (function_try_block): Call start_catch_block() and
	end_catch_block().

Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>

	* typeck.c (original_type): New function.
	(common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
	to see if they're actually the same.
	* cp-tree.h (original_type): Declare.

Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* Makefile.in (lex.o): Depend on output.h.

	* call.c (add_function_candidate): Remove unused variable `cand'.
	(add_conv_candidate): Likewise.
	(build_builtin_candidate): Likewise.

	* cp-tree.h: Add prototype for `types_overlap_p'.

	* decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.

	* decl2.c (merge_functions): Remove unused variables `tmp' and
	`tempn'.

	* error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
	(code_as_string): Likewise.
	(language_as_string): Likewise.
	(parm_as_string): Likewise.
	(op_as_string): Likewise.
	(assop_as_string): Likewise.
	(cv_as_string): Likewise.

	* lex.c: Include output.h.

	* pt.c (type_unification): Cast first argument of `bzero' to a char*.

	* search.c (dfs_no_overlap_yet): Mark parameter `t' with
	ATTRIBUTE_UNUSED.

	* tinfo.cc (__class_type_info::dcast): Change the type of variable
	`i' from int to size_t.

	* typeck.c (language_lvalue_valid): Mark parameter `exp' with
	ATTRIBUTE_UNUSED.

Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
	DECL_NAMESPACE_SCOPE_P.
	(lang_decl_name): Likewise.
	* pt.c (tsubst_friend_function, tsubst): Likewise.
	* decl.c (pushdecl, redeclaration_error_message, start_decl,
	cp_finish_decl, start_function): Likewise.
	* class.c (finish_struct_1): Likewise.
	* call.c (build_over_call): Likewise.
	(compare_ics): Use DERIVED_FROM_P.

Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
	* method.c (build_mangled_name): Use it.
	(build_decl_overload_real): Likewise.

	* error.c (dump_simple_decl): New function, broken out from ...
	(dump_decl): Use it.

Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>

	* ptree.c (lang_print_xnode): Add missing `break'.

	* pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.

	* call.c (add_template_candidate): Adjust for changes to
	fn_type_unification.
	(add_template_candidate_real): Likewise.
	(add_template_conv_candidate): Likewise.
	(build_user_type_conversion_1): Likewise.
	(build_new_function_call): Likewise.
	(build_object_call): Likewise.
	(build_new_op): Likewise.
	(build_new_method_call): Likewise.
	* class.c (instantiate_type): Likewise.
	* cp-tree.h (unification_kind_t): New type.
	(fn_type_unification): Adjust prototype.
	(type_unificaiton): Likewise.
	* pt.c (UNIFY_ALLOW_NONE): New macro.
	(UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
	(UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
	(UNIFY_ALLOW_DERIVED): Likewise.
	(unify): Change prototype.
	(maybe_adjust_types_for_deduction): New function.
	(check_cv_quals_for_unify): Likewise.
	(determine_specialization): Adjust.
	(fn_type_unification): Likewise.
	(type_unification): Likewise.
	(type_unification_real): Likewise.  Use
	maybe_adjust_types_for_deduction.  Fix mishandling of
	back-unification of template functions passed as arguments.  Pass
	appropriate combination of UNIFY_ALLOW_* to unify.
	(unify): Remove unused NTPARMS parameter.  Use
	check_cv_quals_for_unify.  Remove bogus code that allowed
	too-generous unification in order to adhere more closely to standard.
	(get_bindings_real): Adjust.
	(get_class_bindings): Likewise.

	* method.c (build_overload_identifier): Only use the innermost
	template arguments when mangling.
	* pt.c (tsubst_template_argument_vector): New function.
	(complete_template_args): Deal with the situation where the
	extra_args contain more than one level of arguments.
	(lookup_template_class): Deal with member template classes, which
	may have more than one level of arguments.
	(tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
	Improve handling of member template classes.  Use
	DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
	tsubst_template_argument_vector where appropriate.
	(regenerate_decl_from_template): Break out from ...
	(instantiate_decl): Here.

	* lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
	* parse.h: Regenerated.
	* parse.c: Really regenerated.

	* cp-tree.h (finish_unary_op_expr): New function.
	(finish_id_expr): Likewise.
	(begin_new_placement): Likewise.
	(finish_new_placement): Likewise.
	(finish_declarator): Likewise.
	(finish_translation_unit): Likewise.
	(finish_parmlist): Likewise.
	(begin_class_definition): Likewise.
	(finish_class_definition): Likewise.
	(finish_default_args): Likewise.
	(finish_inline_definitions): Likewise.
	* parse.y (GCC_ASM_KEYWORD): Remove.
	(TYPENAME_ELLIPSIS): Likewise.
	* parse.c: Regenerated.
	Use new functions in semantics.c in the actions for many rules.
	* gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
	* hash.h: Regenerated.
	* semantics.c (finish_expr_stmt): Allow NULL expr.
	(finish_unary_op_expr): New function, containing
	code previously in parse.y.
	(finish_id_expr): Likewise.
	(begin_new_placement): Likewise.
	(finish_new_placement): Likewise.
	(finish_declarator): Likewise.
	(finish_translation_unit): Likewise.
	(finish_parmlist): Likewise.
	(begin_class_definition): Likewise.
	(finish_class_definition): Likewise.
	(finish_default_args): Likewise.
	(finish_inline_definitions): Likewise.

Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>

	* typeck.c (build_c_cast): Don't decay arrays and functions to
	pointer type when converting to a class type.

Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
	(DECL_CLASS_SCOPE_P): Likewise.

Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)

	* class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
	* decl2.c (constructor_name_full): Likewise.

Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>

	* tree.c (mapcar): Add OVERLOAD support.

	* init.c (resolve_offset_ref): We must use basetype_path before we
	destroy it with a call to convert_pointer_to.

Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (currently_open_class): New fn.
	* decl.c (lookup_name_real): Use it.
	* search.c (lookup_field): Likewise.

Fri May  8 23:32:42 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* cp-tree.def (OVERLOAD): New node.
	* cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
	SET_IDENTIFIER_NAMESPACE_VALUE): Define.
	(NAMESPACE_BINDING): Remove.
	(IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
	namespace_binding.
	(OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
	Define.
	(tree_overload): New struct.
	(IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
	(REAL_IDENTIFIER_TYPE_VALUE): Define.
	(IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
	(lang_decl_flags): Remove in_namespace.
	(lang_decl): Remove chain.
	(DECL_CHAIN, DECL_NAMESPACE): Remove.
	(flag_honor_std): Declare extern.
	(identifier_type_value, pushdecl_namespace_level, push_using_decl,
	namespace_binding, set_namespace_binding,
	lookup_function_nonclass, cat_namespace_levels,
	set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
	scratch_ovl_cons, ovl_member, build_overload): Declare.
	(decl_list_length, get_namespace_id, current_namespace_id,
	overloaded_globals_p): Remove.
	(lookup_using_namespace, qualified_lookup_using_namespace): Change
	return type.
	(push_scratch_obstack): New macro.
	* call.c (add_function_candidate): Special-case type of OVERLOAD node.
	(build_user_conversions_1): Iterate using OVL_NEXT for ctors,
	convs, fns.
	(build_new_function_call): Iterate using OVL_CHAIN.
	Print DECL_NAME in when reporting ambiguities.
	(build_object_call): Iterate using OVL_NEXT for fns, convs.
	(build_new_op): Call lookup_function_nonclass.
	Iterate using OVL_NEXT.
	(build_op_delete_call): Change detection of members.
	Do not wrap TREE_LIST around fields and single global functions.
	(build_over_call): Don't push a class level if the context is a
	namespace.
	(build_new_method_call): Iterate using OVL_NEXT.
	* class.c (add_method): Chain overloaded members using
	build_overload.  Remove copying of method.
	(grow_method): When iterating through the obstack, expect OVERLOAD
	nodes.  Chain overload members.
	(finish_struct_methods): Chain overload members.  Unpack OVERLOAD
	nodes in call to get_baselinks.
	(duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
	(finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
	fdecls that are OVERLOAD nodes.
	(validate_lhs): New function.
	(instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
	code.  Use DECL_NAME in error messages.  Split code between global
	and member function processing.
	* decl.c (global_type_node): New static variable.
	(in_std): New global.
	(struct binding_level): New field usings.
	(resume_binding_level): Assert that we are not in a class.
	(toplevel_bindings_p): Just check for namespace_p or
	pseudo_global.
	(resume_level): Remove.
	(find_binding): New function.
	(binding_for_name): Call it.
	(namespace_binding, set_namespace_binding): New functions.
	(push_namespace): Associate binding level with new namespace,
	resume_binding_level for existing namespace.  Remove old code.
	Fake std by counting.
	(store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
	(maybe_push_to_top_level): Save current namespace.
	(pop_from_top_level): Restore saved namespace.
	(pop_namespace): Call suspend_binding_level.  Remove old code.
	(cat_namespace_levels): New function.
	(set_identifier_type_value_with_scope): For namespace bindings,
	set BINDING_TYPE, and use global_type_node.
	Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
	(identifier_type_value): New function.
	(pushtag): If no context, use current_namespace.
	(duplicate_decls): Don't process DECL_CHAIN.
	(pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
	already set.  Never reset it to NULL_TREE.  Lookup global variables
	in their namespace.  Push overloaded templates if they are on
	namespace level.
	(pushdecl_namespace_level): New function.
	(pushdecl_top_level): Implement using pushdecl_namespace_level.
	(pushdecl_using_decl): New function.
	(overloaded_globals_p): Remove.
	(push_overloaded_decl): Create OVERLOAD nodes, and iterate through
	them.  Use namespace_binding and set_namespace_value.
	(redeclaration_error_message): Complain if the declarations come
	from different namespaces.
	(lookup_tag): On namespace level, look in the BINDING_TYPE.
	(lookup_namespace_name): Pass tree_bindings from stack.  Remove
	old code.
	(select_decl): New function.
	(lookup_name_real): Call it for qualified and unqualified lookup.
	Pass tree_bindings from the stack.
	If prefer_type is 1, also accept namespaces.
	(lookup_function_nonclass): New function.
	(init_decl_processing): Set the binding level of the global
	namespace to global_binding_level.
	Build a proper type list for __builtin_apply.
	Initialize std_node to "fake std" if flag_honor_std is set.
	Initialize global_type_node.
	Allocated bad_alloc in namespace std if flag_honor_std.
	(define_function): Set the DECL_CONTEXT to the current_namespace.
	(start_decl): A namespace is not considered as a context here.  If
	the DECL_CONTEXT is a namespace, push the decl.
	(cp_finish_decl): Check for namespaces used as initializers.
	(grokfndecl): Add namespace parameter.  Remove processing of
	DECL_CHAIN.
	(grokvardecl): Add namespace parameter.
	(grokdeclarator): Process SCOPEs that are namespaces.  For
	mangling, temporarily set the DECL_CONTEXT on anonymous structs.
	(start_function): Check for contexts that are namespaces.
	Set context for declarations that have not been pushed.
	(store_parm_decls): Check for ::main only.
	(finish_function): Likewise.
	(start_method): Check for contexts that are namespaces.
	(start_method): Remove DECL_CHAIN processing.
	* decl2.c (flag_honor_std): Declare.
	(lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
	(decl_namespace_list): New static global.
	(grok_x_components): Ignore namespaces as type contexts.
	(check_classfn): Expect OVERLOAD nodes.
	(grokfield): Remove DECL_CHAIN processing.
	(finish_file): Call cat_namespace_levels.
	(merge_functions): New function.
	(ambiguous_decl): Rewrite.
	(lookup_using_namespace): Produce tree_bindings.
	(qualified_lookup_using_namespace): Likewise.
	(set_decl_namespace, decl_namespace, current_decl_namespace,
	push_decl_namespace, pop_decl_namespace): New functions.
	(arg_lookup): New struct.
	(add_function, arg_assoc_namespace, arg_assoc_class,
	arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
	New functions.
	(get_namespace_id, current_namespace_id): Remove.
	(do_toplevel_using_decl): Rewrite.
	(do_class_using_decl): Complain about namespace qualifiers.
	(do_using_directive): Sorry if not on namespace level.  Complain
	about unknown namespaces.
	* error.c (dump_aggr_type): Check for namespace contexts.
	* except.c (init_exception_processing): Push terminate into std.
	* friend.c (is_friend): A namespace is not a context, here.
	* init.c (expand_member_init): Remove DECL_CHAIN processing.
	(build_offset_ref): Process OVERLOAD nodes.
	* lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
	* lex.c (identifier_type): Loop using OVL_CHAIN.
	(see_typename): Set looking_for_typename to 2.
	(real_yylex): Likewise.
	(do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
	(do_scoped_id): Expect OVERLOAD nodes.
	Change calling convention for qualified_lookup_using_namespace.
	(build_lang_decl): Don't set in_namespace anymore.
	* method.c (typevec_size): New global.
	(build_overload_nested_name): Return if global_namespace.
	Otherwise, always expect a declaration context.
	(build_qualified_name): Likewise.
	Make sure we don't write beyond typevec_size.
	(build_decl_overload_real): Likewise.
	Allocate one extra slot for the namespace.
	(hack_identifier): Mark code dead.
	Process OVERLOAD and NAMESPACE_DECL nodes.
	* parse.y (program): Pop namespaces until in global namespace.
	(extdef): In a using-declaration, don't discard the identifier if
	there is no declaration.
	(left_curly): Ignore type contexts which are namespaces.
	(typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
	used as scope.
	* pt.c (template_class_depth): Expect types to be namespaces.
	(determine_specialization): Simplify by expecting OVERLOAD nodes.
	(push_template_decl): Push into namespace level.
	Reset ctx if it is a namespace.
	Set DECL_CONTEXT to current_namespace if not set already.
	Ignore real contexts that are namespaces.
	(mangle_class_name_for_template): Skip global_namespace.
	Mangle other namespaces as declarations.
	(lookup_template_function): Set type of OVERLOAD nodes to unknown.
	(lookup_template_class): Push into namespace of context.
	If the context is a namespace, set it to global_namespace.
	Use id_context for mangling.
	(for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
	(tsubst_friend_function): Ignore namespace contexts.
	Push into namespace level.
	(tsubst): Handle NAMESPACE_DECL nodes.
	Remove DECL_CHAIN processing.
	(type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
	* ptree.c (print_lang_identifier): Print bindings.
	(lang_print_xnode): Print OVERLOAD nodes.
	* rtti.c (init_rtti_processing): Push type_info into std.
	* search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
	(lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
	dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
	lookup_fnfields_here): Likewise.
	Process all nodes, instead of going through TREE_CHAIN.
	* sig.c (build_signature_pointer_or_reference_type): Set context
	to global_namespace.
	(build_signature_table_constructor): Expect OVERLOAD nodes.
	* spew.c (yylex): Save old setting of looking_for_typename.
	* tree.c (decl_list_length): Remove.
	(binding_init): New function.
	(count_functions): Rewrite.
	(is_overloaded_fn): Expect OVERLOAD nodes.
	(really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
	(ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
	ovl_member): New functions.
	* typeck.c (require_complete_type): Expect OVERLOAD nodes.
	(type_unknown_p): Likewise.
	(require_instantiated_type): Likewise.
	(build_component_ref): Declare code dead.
	(build_x_function_call): Create and expect OVERLOAD nodes.
	(build_function_call_real): Check for ::main only.
	(build_unary_op): Likewise.  Expect OVERLOAD nodes.
	(convert_for_assignment): Check for TREE_LIST before accessing
	TREE_VALUE.
	* decl.c (duplicate_decls): Check for namespace bindings instead
	of global bindings.
	(pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
	lookup_name_current_level, start_decl, xref_tag,
	finish_enum): Likewise.
	* init.c (build_offset_ref): Likewise.
	* search.c (lookup_field): Likewise.
	(lookup_fnfields): Likewise.
	(dfs_debug_mark): Likewise.
	* decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
	(poplevel_class, pop_from_top_level): Likewise.
	* decl2.c (finish_method): Likewise.
	* class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
	* decl.c (record_builtin_type): Likewise.
	(init_decl_processing, grokfndecl): Likewise.
	* lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
	(make_lang_type): Likewise.
	* parse.y (make_thunk): Likewise.
	* pt.c (tsubst): Likewise.
	* tree.c (debug_binfo): Likewise.
	* exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h,
	tinfo2.cc, inc/new.h: Add std qualifications.
	* inc/new: Wrap with namespace std if __HONOR_STD.
	* inc/typeinfo: Likewise.

Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_user_type_conversion_1): Handle second_conv
	properly for templates.

Thu May  7 17:09:25 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* method.c (build_decl_overload_real): Set TREE_USED flag to
	zero for build_type_variants nodes as well.

Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.

Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
	except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
	rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o,
	xref.o): Add toplev.h dependencies.

Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)

	* errfn.c (cp_error, cp_warning): Remove declarations for
	error and warning respectively.

Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* error.c: Convert to using ctype macros defined in system.h.
	* method.c: Likewise.
	* xref.c: Likewise.
	* lex.c: Likewise.  Also remove redundant system header stuff.

Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>

	* call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c,
	expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c,
	search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c,
	xref.c: Add include of toplev.h.

Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (perm_manip): Also regenerate the RTL of an extern.
	(copy_to_permanent): Use end_temporary_allocation.

Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* init.c (expand_vec_init): The initialization of each array
	element is a full-expression.

Tue May  5 18:24:13 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* method.c (build_mangled_name): Add a call to build_type_variant
	to get the right type.

Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* Makefile.in: Add .SUFFIXES.

	* cp-tree.def: Remove NAMESPACE_DECL.

Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_over_call): Do evaluate arg even if it has empty
	class type.
	* decl.c (start_function): Don't push a member function.

Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>

	* Makefile.in (g++FAQ.info): Put -o option before input file.

Thu Apr 30 13:05:33 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* gxxint.texi: Add info for squangling codes K and B.

Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>

	* semantics.c (begin_stmt_expr): Avoid duplicating the effect of
	the expression in templates.
	(finish_stmt_expr): Likewise.

1998-04-28  Brendan Kehoe  <brendan@cygnus.com>

	* decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.

Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>

	* decl.c (maybe_push_to_top_level): Always clear
	current_template_parms and processing_template_decl.
	(pushtag): Remove check of current_class_type and some comments,
	since maybe_push_to_top_level no longer creates confusion.

Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
	(DECL_CLASS_TEMPLATE_P): Likewise.
	(DECL_PRIMARY_TEMPLATE): Likewise.
	(PRIMARY_TEMPLATE_P): Use it.
	(push_template_decl_real): New function.
	(redeclare_class_template): Take new template parameters as
	input.
	(is_specialization_of): New function.
	(comp_template_args): Declare.
	* decl.c (pushtag): Handle friend template classes.
	(xref_tag): Likewise.  Use new calling convention for
	redeclare_class_template.
	* decl2.c (grok_x_components): Handle friend templates.
	* friend.c (is_friend): Use is_specialization_of where
	appropriate.  Deal with friend class templates.
	(make_friend_class): Let a class template be friends with itself.
	* pt.c (comp_template_args): Remove declaration.
	(tsubst_friend_class): New function.
	(push_template_decl_real): New function.
	(push_template_decl): Use it.
	(redeclare_class_template): Adjust for new calling convention.
	(comp_template_args): Give it external linkage.
	(instantiate_class_type): Use tsubst_friend_class to deal
	with friend templates.
	* typeck.c (comptypes): Use comp_template_args, rather than
	expanding it inline.
	* parse.y (component_decl): Handle a nested template type
	like other component type declarations.

	* pt.c (check_explicit_specialization): Handle overloaded
	constructors correctly.

	* pt.c (mabybe_get_template_decl_from_type_decl): New function.
	(lookup_template_class): Use it.

Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
	* cp-tree.h: Add WRAPPER support.
	* call.c (add_candidate): Split out from add_*_candidate fns.
	(build_over_call): Take the candidate instead of function and args.
	Enforce access control here.  Emit overload warnings here.
	(add_warning): New fn.
	(joust): Add WARN parm.  If not set, call add_warning instead of
	printing a warning.  Re-enable some warnings.
	(tourney): Pass it.
	(convert_like): Adjust.
	(build_new_op): Adjust.
	(build_new_function_call): Adjust.
	(build_user_type_conversion_1): Adjust.
	(USER_CONV_FN): Adjust.
	* tree.c (build_expr_wrapper, build_expr_ptr_wrapper,
	build_int_wrapper): New fns.

Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>

	* pt.c (unify): Fix typo in previous change.

Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* error.c (dump_type_real): Declare canonical_name.

	* typeck.c (comp_target_types): Fix PMFs.

Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>

	* class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
	the DECL_RESULTs of a member TEMPLATE_DECL, not just the
	TEMPLATE_DECL.

	* pt.c (tsubst): Decrease the template-level of
	TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
	TEMPLATE_PARM_INDEX.
	(template_decl_level): New function.
	(unify): Make sure to record unifications for template
	parameters, even when the parameters exactly match the arguments.
	Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
	TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
	aren't from the level we're currently working on.

Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>

	* errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.

	* decl2.c (check_member_template): Set DECL_IGNORED for member
	class templates, too.

	* decl2.c (grokfield): Remangle the name of a member TYPE_DECL.

Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.

Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)

	* cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
	* decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
	(init_decl_processing): Handle TI types.
	* typeck.c (unsigned_type, signed_type): Handle TI types.

Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>

	* g++spec.c (lang_specific_driver): New argument in_added_libraries.
	New local added_libraries.  Increment count when add library to
	arglist.

Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (type_as_string_real): New function.
	* pt.c (mangle_class_name_for_template): Use it.
	* error.c (dump_aggr_type): Change prototype.
	(dump_type_prefix): Likewise.
	(dump_type_suffix): Likewise.
	(dump_type_real): Convert from dump_type.  If desired, the
	"canonica" name of a typedef, i.e., the name of the underlying
	type, can be printed.
	(dump_type): Call dump_type_real.

Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.

	* typeck.c (comp_target_types): Tweak pedantic case.
	(comp_target_parms): Tweak pedantic case.  Clean up somewhat.
	Return -1 or 1 instead of 1 or 2.
	(compparms): Remove STRICT handling.
	(convert_for_assignment): Fix handling of pmfs.

Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>

	* typeck.c (comp_target_types): Handle references like pointers.
	(comp_target_parms): Note that return code from comp_target_types
	can be negative to indicate failure.

Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
	which requires a working target compiler to build.

Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)

	* tree.c (avoid_overlap): Add prototype.

	* spew.c (num_tokens): Add prototype.
	(nth_noken, add_token, consume_token, debug_yychar): Likewise.

	* search.c (dfs_check_overlap): Add prototype.
	(dfs_no_overlap_yet): Likewise.

	* pt.c (original_template): Add prototype.
	(inline_needs_template_parms): Likewise.
	(push_inline_template_parms_recursive): Likewise.
	(retrieve_specialization, register_specialization): Likewise.
	(print_candidates, reduce_template_parm_level): Likewise.
	(build_template_decl, mark_template_parm): Likewise.
	(tsubst_friend_function, get_bindings_real): Likewise.

	* method.c (start_squangling): Add prototype.
	(end_squangling, check_ktype, issue_ktype): Likewise.
	(build_overloaded_scope_ref, check_btype): Likewise.
	(build_mangled_template_parm_index): Likewise.

	* lex.c (init_cpp_parse): Add prototype.
	(handle_cp_pragma, handle_sysv_pragma): Likewise.
	(reduce_cmp, token_cmp): Likewise.

	* except.c (call_eh_info): Add prototype.
	(push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
	(get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.

	* decl2.c (is_namespace_ancestor): Add prototype.
	(namespace_ancestor, add_using_namespace): Likewise.
	(ambiguous_decl): Likewise.

	* decl.c (indent): Add prototype.

	* call.c (add_template_candidate_real): Add prototype.

Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (build_expr_from_tree): Just return a PMF.

Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>

	* typeck2.c (process_init_constructor): Don't strip cv-qualifiers
	when doing initializations.

	* pt.c (unify): Use comptypes to compare type args.

Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (duplicate_decls): Fix check for when it's safe to free
	the new decl.

	* pt.c (mangle_class_name_for_template): Don't pass a typedef type
	to type_as_string.

Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)

	* pt.c (build_template_parm_index): Add prototype.

	* search.c (my_tree_cons): Don't clear words outside the
	newly allocated node.

Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>

	* lex.c (init_parse): Now returns char* containing the filename.

Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
			  Jeff Law   <law@cygnus.com>

	* errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
	than a pointer.

Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.

Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* decl.c (duplicate_decls): Don't warn for redundant decls if
	friend: let add_friend take care of it.

Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* sig.c (build_signature_pointer_constructor): Don't set
	TREE_HAS_CONSTRUCTOR for a signature pointer.
	* cvt.c (ocp_convert): Don't force a temporary for internal structs.
	* init.c (resolve_offset_ref): Warn about implicit & on pmfs
	here, too.
	* typeck.c (build_unary_op): Only allow taking the address of a
	real constructor.
	* typeck2.c (digest_init): Simplify.
	(store_init_value): Don't pedwarn about using { } for pmfs.

Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>

	* cp-tree.h (start_decl):  Update prototype.
	* decl.c (start_decl):  Like the C version, new parameters
	for the attributes.  Call cplus_decl_attributes here,
	(pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
	(grokdeclarator):  Pass NULL for new start_decl arguments.
	* pt.c (tsubst_expr):  Likewise.
	* parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
	* typeck.c (common_type): Check TYPE_MAIN_VARIANT.
	* lex.c (build_lang_decl): Add lang_name_java.
	* class.c (push_lang_context): Add lang_name_java.
	* method.c (build_mangled_name): Check for is_java_type.

Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>

	* decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
	* call.c (build_scoped_method_call): Check for TREE_CODE for
	VOID_TYPE instead of type ==  void_type_node.
	(build_method_call): Likewise.
	* decl.c (lookup_name_real): Likewise.
	(grokdeclarator): Likewise.
	(start_decl): Likewise.
	(grokparms): Likewise.
	(start_function): Likewise.
	(finish_function): Likewise.
	(start_method): Likewise.

Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)

	* lex.c (finput): New variable.
	(init_cpp_parse):  Renamed from init_parse.
	(init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
	(finish_parse): New function.
	* cp-tree.h (init_lex, init_parse): Remove declarations.

Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_call): Still evaluate the actual argument.
	* class.c (is_empty_class): Update for -fnew-abi.

	* decl2.c: -fnew-abi implies -fsquangle.

	* method.c (do_build_assign_ref): Don't do anything to copy
	an empty class.
	(do_build_copy_constructor): Likewise.
	* call.c (build_over_call): Likewise.

Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (avoid_overlap): Return a value.

Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)

	* method.c (check_btype): Add missing argument to xrealloc.
	(check_ktype): Likewise.

Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>

	Implement empty base optimization.
	* class.c (finish_struct_1): Add vbase fields earlier.  Set
	CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
	* search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
	(types_overlap_p): New fn.
	* tree.c (avoid_overlap): New fn.
	(build_base_fields): Use it to avoid overlapping empty bases.
	* cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.

	* decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.

	Re-implement allocation of base class subobjects.
	* tree.c (unshare_base_binfos): New fn.
	(layout_basetypes): Use it.  Now handles offsets of both virtual and
	non-virtual bases, after layout_type.
	(layout_vbasetypes): Remove.
	(build_base_fields): Generate FIELD_DECLs for each non-virtual base.
	(build_vbase_pointer_fields): Split out from old layout_basetypes.
	* class.c (finish_base_struct): Lose offset handling code.
	Move nonvdtor warning here.  Don't mess with t_binfo anymore.
	(finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
	* cp-tree.h: Adjust.

Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
	* decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
	* class.c (duplicate_tag_error): Likewise.
	(finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
	* tree.c (layout_vbasetypes): Update from layout_record, remove
	var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
	(layout_basetypes): Likewise.

Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)

	* class.c, Make sure system.h is included just after config.h.
	Delete lingering stdio and errno references too.
	* decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.

Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* friend.c (is_friend): Fix access control for local classes.

	* class.c (is_empty_class): New fn.
	* call.c (build_call): Don't pass empty class objects to a function.

Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>

	* call.c (build_over_call): Do name resolution for default
	arguments of function templates in the scope of the templates.

Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)

	* call.c: Include system.h.  Remove includes, declarations and
	defines provided by system.h.
	* class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
	* except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
	* lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
	* semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
	* typeck2.c, xref.c: Likewise.
	* Makefile.in: Dependencies updated as appropriate.
	* Make-lang.in: Likewise.

Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (fn_type_unification): Allow incomplete unification without
	an immediate error message.

Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* tree.c (member_p): New fn.
	* decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
	initializing class members.

	* cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
	* ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.

	* call.c (build_method_call): Handle non-scoped destructors, too.
	* pt.c (tsubst_copy): Likewise.

	* pt.c (print_template_context): Split out...
	(push_tinst_level): ...from here.

	* friend.c (is_friend): Don't pass a type to decl_function_context.

	* typeck.c (convert_for_initialization): Always hand off
	conversions to class type.

Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* friend.c (is_friend): Local classes have the same access as the
	enclosing function.

Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)

	* typeck.c (expand_target_expr): Delete dead function.

	* search.c: Put various prototypes inside #ifdef MI_MATRIX.

	* repo.c (save_string): Delete dead function.

	* method.c (thunk_printable_name): Delete dead function.

	* lex.c (yynextch): Delete dead function.

	* expr.c (tree_extract_aggr_init): #if 0 out.

	* except.c (do_unwind): Delete dead function.
	(easy_expand_asm): Likewise.

	* cvt.c (build_conversion_type_1): Delete dead function.

	* cp-tree.h (push_expression_obstack): Declare.

	* call.c (source_type): #if 0 out.

	* class.c (alter_access): Remove unused label.  Add braces
	around empty else clause.

	* lex.c (yyprint): Fix argument to printf.

Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.

	* pt.c (instantiate_class_template): Make sure template
	arguments are permanent.
	* init.c (resolve_offset_ref): Don't go looking around in
	template types.

	* semantics.c: Add routines to handle expressions, and some
	declaration processing.
	* parse.y: Use them.
	(current_class_depth): Move declaration to cp-tree.h.
	* parse.c: Regenerated.
	* cp-tree.h: Use them.
	(current_class_depth): Declare.
	* pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.

Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>

	* error.c (dump_decl): Be a bit more explicit with template
	type arguments, when verbose.

Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* inc/exception: Reorder closing braces.

Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (redeclare_class_template): New function.
	* cp_tree.h (redeclare_class_template): Declare it.
	* decl.c (xref_tag): Use it.

Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (build_over_call): Check IS_AGGR_TYPE, not
	TYPE_LANG_SPECIFIC.
	* typeck.c (convert_arguments): Likewise.

	* decl.c (grokdeclarator): Remove const and volatile from type after
	setting constp and volatilep.

	* class.c (finish_struct_1): Don't warn about bool bitfield larger
	than one bit.

Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.

Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>

	* call.c (build_object_call): Complain about ambiguous operator(),
	rather that crashing.
	(build_new_op): Likewise.
	(build_op_delete_call): Likewise.

Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>

	* cvt.c (perform_qualification_conversions): Use comp_target_types
	instead of comp_ptr_ttypes.

Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (enforce_access): Declare.
	* call.c (enforce_access): Make it extern, not static.
	* class.c (alter_access): Use enforce_access; modify code for ISO
	compliance, rather than ARM rules.

Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* cp-tree.h: Fix typo.

Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
	if (aggregate_value_p (type)).

	* decl2.c (constructor_name_full): Handle TYPENAME_TYPE.

Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>

	* tree.c (mapcar): When dealing with a DECL, use it's constant
	value, if any.
	* pt.c (lookup_template_class): Don't mangle the names of template
	classes whose arguments are unknown.

	* pt.c (tsubst_expr): Handle GOTO_STMT correctly.

Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>

	* decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.

Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>

	* decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
	boolean_type_node to 1.

Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>

	* error.c (dump_expr): Remove unused variable `l'.

	* pt.c (for_each_template_parm): New function, created by
	converting uses_template_parms.
	(tree_fn_t): New typedef.
	(uses_template_parms): Use it.
	(mark_template_parm): New function.
	(push_template_decl): Check that the argument list of a partial
	specialization uses all the template parameters.

	* Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
	with it; we might want it for debugging.
	* cp-tree.h (type_unification): Change interface.
	* class.c (finish_struct_1): Skip nested template types, just like
	ordinary nested types.
	(instantiate_type): Use new interface to type_unification.
	* lex.c (init_lex): Add __sz as opname for sizeof.
	* method.c (build_overload_scope_ref): New function.
	(build_overload_int): Handle complex expressions.  Set
	numeric_output_need_bar if necessary.
	(build_overload_value): Handle non-PARM_DECL nodes; this
	routine is now used by build_overload_int.  Remove some
	assignments to numeric_output_need_bar.  Use
	build_overload_scope_ref.
	(build_qualified_name): Note that some template mangled names end
	with digits, and set numeric_output_need_bar appropriately.  Use
	build_underscore_int.
	* pt.c (unify): Change interface.
	(type_unification_real): Likewise.
	(determine_specialization): Use new interfaces.
	(tsubst): Deal gracefully with situations in which the argument
	vector is not fully filled.
	(fn_type_unification): Use new interfaces.
	(type_unification): Likewise.  Remove NOP_EXPR hack.
	(type_unification_real): Likewise.
	(unify): Likewise.  Deal with unification of complex expressions.

Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (complete_template_args): Initialize skip properly.

	* decl.c (make_typename_type): Revert.
	(make_implicit_typename): Remove.
	(lookup_name_real): Don't call it.  Call lookup_field if we see a
	TYPE_DECL from a template base.
	* search.c (lookup_field): Do implicit typename stuff.

Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
			  Geoff Noer    <noer@cygnus.com>

	* Makefile.in: Various fixes for building cygwin32 native toolchains.
	* Make-lang.in: Likewise.

Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.

Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (make_implicit_typename): Rewrite removed code.
	(make_typename_type): Call it if the type we look up comes from
	a base that uses template parms.

	* pt.c (complete_template_args): Rewrite.
	(tsubst, FUNCTION_DECL): Use it.

Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)

	* semantics.c (finish_asm_stmt): Fix combine strings.  Call
	c_expand_asm_operands () if output_operands, input_operands or
	clobbers is not NULL_TREE.

Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* pt.c (complete_template_args): New function.
	(get_bindings): Deal with specializations of function templates
	with return type containing parameters from outer class
	templates.
	(tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
	substitute arguments and compose a new type.

Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
	FUNCTION_DECLs.

Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (make_implicit_typename): Lose useless code.

	* call.c (standard_conversion): Handle A* -> const A* properly.

	* pt.c (get_bindings_real): Rename from get_bindings.  Add
	check_rettype parm.
	(get_bindings): Pass 1.
	(get_bindings_overload): Pass 0.

Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (check_explicit_specialization): When reverting a static
	member function, also remove the `this' parameter from
	last_function_parms.

Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
	a function context.

	* decl.c (store_bindings): Use free_binding_vecs.
	(pop_from_top_level): Likewise.

Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (make_implicit_typename): Only change the type of a
	TYPENAME_TYPE.

Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>

	* semantics.c: New file, containing routines to perform the
	semantic phase of parsing.
	* parse.y: Use it.
	* pt.c (tsubst_expr): Likewise.
	* cp-tree.h: Declare the various functions in semantics.c.
	Provide macros to access _STMT tree nodes.
	* cp-tree.def: Add ASM_STMT tree node.
	* Makefile.in, Make-lang.in: Add dependencies on and for
	semantics.c.

Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (push_template_decl): Only check primary templates.

	* pt.c (check_explicit_specialization): Complain about default args
	in explicit specialization.

	* parse.y (nomods_initdcl0): Also call cp_finish_decl for a
	constructor_declarator.

Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>

	* typeck2.c (build_x_arrow): Don't crash when an aggregate type
	has no overloaded operator ->.

	* call.c (build_field_call): Don't crash when presented with a
	field that is actually a nested type.

	* decl.c (pushtag): Deal with friend class injection in local
	classes.

	* call.c (build_object_call): Don't crash if OBJ is a
	pointer-to-member-function.

Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (push_template_decl): Complain about template with C linkage,
	anonymous template class.

Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
	* search.c: Likewise.

	* lex.c (do_pending_defargs): Only call
	maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.

	* parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.

Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>

	* parse.y: Deal with CONSTRUCTORS in new_initializers.

Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
	closely mimics the behavior in parse.y.
	(tsubst_expr): Return the resulting BLOCK when making a tsubst'ing
	into a compound statement.

Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
	* pt.c (inline_needs_template_parms): New fn.
	(original_template): New fn.
	(push_inline_template_parms_recursive): New fn.
	(maybe_begin_member_template_processing): Use them.
	(maybe_end_member_template_processing): Likewise.
	(is_member_or_friend_template): Rename to is_member_template.
	Member functions of local classes are never member templates.

Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* lex.c (do_identifier): Handle TEMPLATE_DECL that was
	added in the class scope to catch redefinition error.

	* pt.c (reduce_template_parm_level): Also copy
	the DECL_TEMPLATE_PARMS field.

Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
	reduced-level template type parameter.

Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
	(DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
	* class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
	* decl.c (duplicate_decls): Propagate it.
	* typeck2.c (abstract_virtuals_error): Use two loops to emit
	abstract virtual functions and virtual functions which need a
	final overrider separately.

Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* lang-specs.h: Properly put brackets around array elements in
	initializer.

	* typeck.c (build_binary_op_nodefault): Correctly place parens around
	&& and || in expression.

Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* call.c (default_parm_conversions): Remove prototype definition.
	(build_method_call): Remove unused variable result.

	* cvt.c (ocp_convert): Remove unused variable conversion.

	* decl2.c (ambiguous_decl): Add explicit parameter definition for name.

	* except.c (do_unwind): #if 0 definition of unused variables fcall
	and next_pc.

	* expr.c (extract_scalar_init): #if 0 prototype and function
	definition.

	* init.c (expand_aggr_init_1): Remove unused variable init_type.
	(build_new_1): Remove unused variable t.

	* pt.c (instantiate_class_template): Remove unused variable newtag;
	cast called function return value to void.
	(do_decl_instantiation): Remove unused variables name and fn.

	* tree.c (get_type_decl): Add default return to shut up compiler from
	complaining control reaches end of non-void function.

	* typeck.c (build_x_conditional_expr): Remove unused variable rval.

Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* call.c (default_parm_conversions): Remove prototype definition.
	(build_method_call): Remove unused variable result.
	(build_over_call): Add default case in enumeration switch.

Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* decl2.c (lang_decode_option): Change j's type to size_t.

	* tree.c (layout_vbasetypes): record_align and desired_align are of
	type unsigned int; const_size and nonvirtual_const_size likewise.

Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>

	* parse.y (new_initializer): Make sure all initializers are
	lists.

Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>

	* decl2.c (import_export_decl): Mark tinfo functions for
	cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.

Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)

	* method.c: Fix typo.

Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* method.c: Include "system.h" to get stdlib.h, stdio.h,
	ctype.h, string.h, etc.
	(issue_nrepeats): Add default case in enumeration switch.
	(check_btype): Likewise.
	(process_overload_item): Likewise.

	* Makefile.in (method.o): Depend on system.h.

Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* lex.c (do_scoped_id): Fix parenthesizing.

Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>

	* rtti.c (get_tinfo_fn_dynamic): If this function is called an
	FLAG_RTTI is unset, initialize type info machinery and continue
	with FLAG_RTTI enabled.
	(get_typeid): Likewise.

Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
	from B.

Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (finish_member_template_decl): Deal more gracefully with
	invalid declarations.

Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
	cp-tree.h: Clean up more old overloading code, old RTTI code, and
	some formatting quirks.

	* call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
	method.c, pt.c, ptree.c, typeck.c: Remove support for
	-fno-ansi-overloading and overloading METHOD_CALL_EXPR.
	* class.h: Remove.
	* Makefile.in: Adjust.

	* pt.c (unify): Don't allow reduced cv-quals when strict.

	* call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
	*type_unification* and unify.

Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (explicit_template_type): Remove TEMPLATE keyword.
	(nested_name_specifier): And add it before this use.
	(typename_sub0): And this use.  Also add use without the keyword.
	(typename_sub1): Likewise.
	* pt.c (instantiate_class_template): Don't actually instantiate
	anything if our type uses template parms.

Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>

	* decl.c (start_function): Don't call temporary_allocation for a
	nested function.

Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (instantiate_class_template): Don't mess with friends if
	our type uses template parms.

Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (nested_name_specifier): Use explicit_template_type.
	(typename_sub): Allow a template_type, an explicit_template_type,
	or an implicit template type at the end.
	* lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
	* decl.c (make_typename_type): Handle template-id where the name
	is a TEMPLATE_DECL.
	* call.c (build_scoped_method_call): Handle member template
	destructor call.
	* pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
	destructor is represented by the type.

	* cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
	* parse.y (nested_name_specifier): Add 'template' case.
	(explicit_template_type): New rule.
	(typename_sub): Use it.
	* decl.c (make_typename_type): Handle getting a template-id for NAME.
	* pt.c (tsubst): Likewise.

Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (add_to_template_args): Fix thinko.
	(instantiate_class_template): Call it later.

	* pt.c (get_class_bindings): Add outer_args parm.
	(most_specialized_class): Likewise.
	(instantiate_class_template): Pass it.
	(more_specialized_class): Likewise.
	(lookup_template_class): Get context from template if none
	was specified.
	(finish_member_template_decl): Don't do anything with a
	partial specialization.
	* decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
	AGGREGATE_TYPE_P.
	* class.c (finish_struct): Member class templates have already been
	checked for name clashes.
	* decl.c (pushdecl_with_scope): Handle pushing at class level.

Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
	(tsubst, *_PARM): Support multiple levels of template classes.
	(instantiate_class_template): Look up the pattern from the
	original template.
	(lookup_template_class): Handle getting a template for d1.
	(push_template_decl): Correct setting of 'primary'.
	(reduce_template_parm_level): Add 'levels' parm.
	(finish_member_template_decl): Support member class templates.
	(template_class_depth): Handle multiple levels.
	* parse.y (component_decl_1, fn.def2): Remove member template case.
	(component_decl): Add member template cases.
	* decl2.c (check_member_template): We now handle member template
	classes.
	* decl.c (pushtag): Handle member templates.
	* method.c (do_inline_function_hair): Don't touch
	IDENTIFIER_GLOBAL_VALUE.
	* init.c (build_offset_ref): If name isn't an identifier, just
	return it.
	* spew.c (yylex): Handle PTYPENAME like TYPENAME.

	* typeck.c (get_delta_difference): Do adjust for conversions to
	and from virtual base.

Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck.c (get_delta_difference): Give hard error for conversion
	from virtual base.

	* cp-tree.h: Tweak formatting.

Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (push_namespace): Handle redeclaration error.

	* cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
	(IDENTIFIER_NAMESPACE_BINDINGS): New macro.
	(NAMESPACE_BINDING): New macro.
	(IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
	* *.c: Use them.

	* pt.c (push_template_decl): Use innermost_args.

	* decl.c (get_unique_name): Tweak from earlier in the name.

Tue Feb 24 22:15:04 1998  Martin von Löwis  <loewis@informatik.hu-berlin.de>

	* cp-tree.def: Add CPLUS_BINDING node.
	* cp-tree.h (tree_binding): New struct.
	(BINDING_SCOPE, BINDING_VALUE): New macros.
	(current_namespace, global_namespace): Declare extern.
	(struct lang_decl_flags): New field in_namespace.
	(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): New macros.
	(DECL_NAMESPACE, SET_DECL_NAMESPACE): New macros.
	(TREE_INDIRECT_USING): New macro.
	* decl2.c (current_namespace, global_namespace): Declare.  The
	value is a NAMESPACE_DECL now, not a TREE_LIST.
	(is_namespace_ancestor, namespace_ancestor): New static functions.
	(add_using_namespace, ambiguous_decl): Likewise.
	(lookup_using_namespace): New support function for lookup_name.
	(qualified_lookup_using_namespace): New support function for
	do_scoped_id and lookup_namespace_name.
	(get_namespace_id): Mark as obsolete.
	(current_namespace_id): Likewise.
	(do_namespace_alias): Implement.
	(do_using_directive): Implement as call to add_using_namespace.
	* decl.c (binding_for_name): New function.
	(push_namespace, pop_namespace): Implement.
	(push_decl): Don't install a FUNCTION_DECL in the global branch.
	(lookup_namespace_name): Implement using qualified lookup.
	(lookup_name_real): For global scoping, lookup in
	global_namespace.  For namespace scoping, lookup in given
	namespace.  For unscoped lookup, iterate over namespace,
	considering using directives.
	(init_decl_processing): Initialize global_namespace.
	(grokvardecl): Build assembler name as static name for globals.
	(grokdeclarator): Remove old namespace mangling.
	(xref_tag): When installing a global binding for the
	tag, make sure we have an identifier.
	* method.c (build_overload_nested_name): Mangle namespaces.
	(build_qualified_name): Likewise.
	(build_decl_overload_real): Likewise.
	* lex.c (build_lang_decl): Set namespace for new declaration to
	current_namespace.
	(do_scoped_id): Find global names in global or current
	namespace, or using qualified namespace lookup, depending on
	context.
	* init.c (build_member_call): When scope is namespace, use
	build_x_function_call instead.
	(build_offset_ref): When scope is namespace, collapse processing
	to lookup_namespace_name instead.
	* error.c (dump_decl): Support NAMESPACE_DECL.
	* decl.c (pushdecl): Bind globals to current namespace.
	(push_overloaded_decl): Likewise.
	(lookup_tag): Likewise.
	(lookup_name_current_level): Likewise.
	(xref_tag): Likewise.
	(start_function): Likewise.
	* lex.c (do_identifier): Likewise.
	(identifier_typedecl_value): Likewise.
	(real_yylex): Likewise.
	* method.c (do_inline_function_hair): Likewise.
	* parse.y (unscoped): Likewise.
	* pt.c (check_explicit_specialization): Likewise.
	(lookup_template_class): Likewise.
	* rtti.c (call_void_fn): Likewise.
	* sig.c (build_sigtable): Likewise.
	* ptree.c (lang_print_xnode): New function.

Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (instantiate_class_template): Don't instantiate if pedantic
	and the args use template parms.

	* pt.c (push_tinst_level): If the instantiation uses template parms,
	fail silently.
	* decl.c (xref_basetypes): Do call complete_type for basetypes
	that involve template parameters.

Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (process_init_constructor): Fix labeled init check.

Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
	argument to tsubst and friends.

	* pt.c (tsubst, FUNCTION_DECL): Tidy.

	* typeck.c (build_x_function_call): Handle static member function
	templates like non-templates.  Handle friend templates like normal
	function templates.
	* pt.c (tsubst, *_PARM): Don't use orig_level.
	(get_bindings): Don't call add_to_template_args.
	(instantiate_template): Likewise.
	(tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
	* ptree.c (print_lang_type): Print index/level for template parms.

Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>

	* Make-lang.in (cc1plus): Note that cc1plus depends on
	cp/cp-tree.h and cp/cp-tree.def.

	* cp-tree.def (TEMPLATE_CONST_PARM): Remove.
	(TEMPLATE_PARM_INDEX): New tree code, used to indicate a
	position in a template parameter list.
	* cp-tree.h (template_parm_index): New structure, used as the tree
	structure for a TEMPLATE_PARM_INDEX.
	(TEMPLATE_PARM_IDX): New macro.
	(TEMPLATE_PARM_LEVEL): Likewise.
	(TEMPLATE_PARM_DESCENDANTS): Likewise.
	(TEMPLATE_PARM_ORIG_LEVEL): Likewise.
	(TEMPLATE_PARM_DECL): Likewise.
	(TEMPLATE_TYPE_PARM_INDEX): Likewise.
	(TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
	(TEMPLATE_TYPE_DECL): Likewise.
	(TEMPLATE_CONST_IDX): Remove.
	(TEMPLATE_CONST_LEVEL): Likewise.
	(TEMPLATE_CONST_SET_INFO): Likewise.
	(TEMPLATE_TYPE_SET_INFO): Likewise.
	(TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
	node.
	(TEMPLATE_TYPE_LEVEL): Likewise.
	* decl.c (decls_match): Call comp_template_parms, rather than
	expanding it inline.
	(duplicate_decls): If two template declarations are being merged,
	then their TEMPLATE_INFOs should be merged as well.
	(grokfndecl): Save template-id information when declaring a friend
	with explicit template arguments.  Pass arguments to
	check_explicit_specialization via correct convention; at some
	point check_explicit_specialization changed, but these call-sites
	did not.
	(grokdeclarator): Tidy up slightly.
	* decl2.c (check_classfn): Tidy up slightly.  Don't assume that
	two template functions with the same DECL_ASSEMBLER_NAME the same,
	since the names are not yet mangled.
	* error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
	TEMPLATE_CONST_PARM.
	(dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
	decl for a non-type parameter, rather than printing `<tparm ...>'.
	* friend.c (is_friend): Handle TEMPLATE_DECL friends.
	(do_friend): Deal with template friends.
	* lex.c (do_pending_inlines): Call
	maybe_begin_member_template_processing, rather than
	conditionally calling begin_member_template_processing.
	(process_next_inline): Likewise.  Call
	maybe_end_member_template_processing, rather than
	conditionally calling end_member_template_processing.
	(do_pending_defargs): Likewise.
	(do_identifier): Use TEMPLATE_PARM_INDEX instead of
	TEMPLATE_CONST_PARM.
	* method.c (build_mangled_template_parm_index): New function.
	(build_overload_value): Use it.
	(build_overload_name): Likewise.
	* pt.c (finish_member_template_decl): Allow friend declarations.
	(template_class_depth): New function.
	(is_member_template): Rename, and modify, to become...
	(is_member_or_friend_template): New function.
	(end_member_template_processing): Rename, and modify, to become...
	(maybe_end_member_template_processing).
	(build_template_parm_index): New function.
	(reduce_template_parm_level): New function.
	(process_template_parm): Modify to use build_template_parm_index.
	(push_template_decl): Deal with friend templates.
	(uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
	TEMPLATE_CONST_PARM.
	(tsubst_friend_function): New function.
	(instantiate_class_template): Generate the DECL_FRIENDLIST
	for a new instantiation by using tsubst_friend_function rather
	than just tsubst.
	(tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
	Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
	appropriate new macros.  Use reduce_template_parm_level to
	generate lower-level template parameters.  Handle tsubst'ing into
	TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
	to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
	templates.  Similarly for the template parameters for a new
	template.
	(tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
	of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
	(unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
	(get_bindings): Call add_to_template_args if necessary.
	(instantiate_decl): Handle instantiations of friend templates.
	* search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
	TEMPLATE_TYPE_PARM as a list of fields; it's not!
	* spew.c (yylex): Do a little manual constant propagation to
	clarify the code.

Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)

	* error.c: Include sys/types.h.

Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)

	* method.c (build_mangled_name): Start CPP directives in column zero.

Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* typeck2.c (process_init_constructor): Sorry about non-trivial
	labeled initializers.
	* parse.y (initlist): Re-enable labeled initializers.

Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* pt.c (coerce_template_parms): Add a new parameter, is_tmpl_parm,
	all callers changed.  Rely on the new parameter instead of arg
	being a TREE_LIST when determine whether we are working inside
	template template parameter.  Clean up is_type test.

Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
	* typeck2.c (initializer_constant_valid_p): Allow conversions
	between pointers and references.

1998-02-19  Brendan Kehoe  <brendan@cygnus.com>

	* typeck.c (build_unary_op): Only warn about incr/decr a pointer
	if pedantic || warn_pointer_arith.

Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* pt.c (unify): Handle TEMPLATE_DECL.

1998-02-18  Brendan Kehoe  <brendan@cygnus.com>

	* cp-tree.h (strip_attrs): Remove decl.

1998-02-18  Doug Evans  <devans@cygnus.com>

	* decl.c (duplicate_decls): Call merge_machine_decl_attributes.
	Update olddecl's attributes too.
	(strip_attrs): Remove function.
	* typeck.c (common_type): Call merge_machine_type_attributes.

Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>

	* parse.y (initdcl0_innards): New grammar symbol.
	(nomods_initdecls, nomods_initdcl0): Change type from itype to
	none, since the resulting value is never used.
	(parse_decl): New function.
	(datadef): Remove redundant actions.
	(initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
	* parse.c: Regenerated.

Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (simple_stmt): Use getdecls() to check for decl.

Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>

	* Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
	macros.
	(c++.install-common): Install c++filt properly as native or as cross
	variant.
	(c++.uninstall): Add c++filt.

Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (standard_conversion): Fix multi-level ptr conversions.

Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>

	* init.c (build_new): Propagate error_mark_node up.

Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* parse.y (simple_stmt): If the condition isn't a declaration,
	start the controlled block after the test.

Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* call.c (build_over_call): Convert builtin abs, labs and fabs to
	tree-codes.
	* decl.c (init_decl_processing): Re-enable abs, labs and fabs as
	builtins.

Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.

Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cp-tree.h: Add access_protected_virtual_node.
	* class.c (init_class_processing): Initialize it.
	* decl.c (xref_basetypes): Use it.
	* parse.y (base_class_access_list): Likewise.

	* Make-lang.in (DEMANGLER_PROG): Add $(exeext).
	(c++.install-common): Install c++filt.

Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>

	* decl.c (shadow_tag): Give error for typedef-ing built-in types.

Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>

	* call.c (reference_binding): Use comptypes when comparing
	TYPE_MAIN_VARIANTS to handle non-canonical array/index types.

Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>

	* tree.c (is_overloaded_fn): Use really_overloaded_fn.
	(really_overloaded_fn): Move check here from is_overloaded_fn.
	(get_first_fn): Use really_overloaded_fn and is_overloaded_fn.

Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>

	* typeck.c (build_ptrmemfunc): Type-check pointer-to-member
	conversions.

Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (push_template_decl): Return the decl passed in, or an
	equivalent duplicate.
	* decl.c (pushtag): Use the return value from push_template_decl.
	(duplicate_decls): When duplicating a template declaration, merge
	the DECL_TEMPLATE_RESULTs as well.
	(make_implicit_typename): Don't try to dive into typename types to
	find a context for making a new implicit typename.
	(start_decl): Use the return value from push_template_decl.
	(grokdeclarator): Complain about declarations list `const operator
	int'.  Since we don't correctly handle in-class initializations of
	non-static data members, complain about this (now illegal)
	practice.  Issue an error for initializations of non-const statics
	since that is illegal as well, and since we don't handle that case
	correctly either.
	(start_function): Use the return value from push_template_decl.
	(start_method): Likewise.
	* decl2.c (grokfield): Likewise.  Since the change to
	grokdeclarator ensures that all initialized fields are in fact
	static, remove a redundant test for TREE_PUBLIC.
	* parse.y (initlist): Disable labeled initializers since they do
	not work as per the documentation, and since they do not use the
	same syntax as the C front end.
	* pt.c (push_template_decl): Return the decl passed in, or an
	equivalent duplicate.
	(lookup_template_class): When searching in a nested context,
	use the right arguments.
	(uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
	* typeck.c (build_component_ref): Assign the correct type to the
	result of build_vfn_ref.

Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (convert_nontype_argument): Fix typo.
	(check_explicit_specialization): Allow old-style specialization
	of class template members.

Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
			  Manfred Hollstein  <manfred@s-direktnet.de>

	* decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
	when deciding to override DECL_ASSEMBLER_NAME.

Tue Feb 10 15:30:55 1998  Andrew MacLeod  <amacleod@torpedo.to.cygnus.com>

	* decl2.c (lang_f_options): Add -fsquangle to option processing list.
	* cp-tree.h (flag_do_squangling): Add declaration.
	* lang-options.h: Add -fsquangle and -fno-squangle.
	* method.c: Add macros and static variables for squangling.
	(build_overload_name): Rename to build_mangled_name, add logic for B
	compression, and split into process_modifiers and
	process_overload_item.
	(process_modifiers): New function, to handle constant, reference,
	and pointer types.
	(process_overload_item): New function, handles issue of type codes.
	(build_overload_name): New function, start squangling and call
	build_mangled_name.
	(ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
	(start_squangling): New function to initialize squangling structs.
	(end_squangling): New function to destroy squangling structs.
	(nrepeats): Rename variable to Nrepeats.
	(issue_nrepeats): New function for issuing 'n' type repeats.
	(check_ktype): New function to check for type K name compression.
	(build_overload_nested_name): Add a check for K name compression.
	(build_qualified_name): Add a check for K name compression and don't
	use DECL_ASSEMBLER_NAME when squangling is on.
	(check_btype): New function, checks for B type compression.
	(build_static_name, build_decl_overload_real): Initiate squangling.
	(build_typename_overload, build_overload_with_type): Initiate
	squangling

Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>

	* method.c (make_thunk): Avoid name buffer overflow.

Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
	don't define them yet.

	* parse.y (nomods_initdcl0): Add constructor_declarator case.

Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>

	* config-lang.in (diff_excludes): Use basename only.

Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* tinfo2.cc: Add tinfo for signed char.

Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>

	* search.c (compute_access): Handle protected constructors in derived
	classes as accessible.

Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
	Call convert_from_reference sooner.

Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>

	* cvt.c (ocp_convert): Obtain the constant values from constant
	decls even if the destination type is the same as the type of the
	decl.

	* decl2.c (finish_file): Make sure that static inlines with
	definitions are not marked DECL_EXTERNAL before returning.

Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c: Lose arg_looking_for_template.
	(lookup_name_real): Likewise.
	* parse.y: Lose processing_template_arg, template_arg1.
	(primary): Likewise.
	* spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.

Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* error.c (dump_decl): Fix type of default arguments for template
	template parameters and nontype template parameters.
	* parse.y (template_parm): Handle invalid default template
	template arguments here.

	* parse.y (template_parm): Use template_arg instead of PTYPENAME
	for default template template argument.
	* pt.c (coerce_template_parms): Merge default template argument
	codes.  Can treat RECORD_TYPE as template name if it is implicitly
	created.  Fix argument index in error message.
	* typeck.c (comptypes): Merge template argument comparison codes in
	TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.

Tue Jan  6 01:42:44 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* lex.c (file_name_nondirectory): Also check for '/'.

Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>

	* parse.y (primary): Deal with statement-expressions in
	templates.
	* pt.c (tsubst_copy): Handle BIND_EXPR.
	* tree.c (mapcar): Likewise.

	* call.c (add_template_candidate_real): Pass extra parameter to
	fn_type_unification.
	* cp-tree.h (fn_type_unification): Add parameter.
	* pt.c (fn_type_unification): Add additional parameter to deal with
	static member functions.
	(get_bindings): Deal with static member functions.

	* cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.
	(revert_static_member_fn): Declare.
	* decl.c (revert_static_member_fn): Remove declaration.  Change
	linkage from internal to external.
	(cp_finish_decl): Deal with virtual functions in classes local to
	template functions.
	* decl2.c (finish_file): Don't forget to emit increment/decrement
	expressions in initializers for file-scope variables.
	* parse.y (typename_sub2): If the typename doesn't names a
	template, rather than a type, issue an error message.
	* pt.c (check_explicit_specialization): Handle specializations of
	static member functions.
	(coerce_template_parms): Handle offset references to lists of
	member functions.
	* search.c (note_debug_info_needed): Don't crash when handed a
	type which is being defined.
	* typeck.c (complete_type): Don't crash when handed NULL_TREE;
	that can happen with some illegal code.

Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* call.c (user_harshness): Initialize `code' to 0.
	(build_method_call): Initialize `candidates', `cp' and `len' to 0.
	(null_ptr_cst_p): Add parentheses around && within ||.
	(standard_conversion): Likewise.
	(z_candidate): Likewise.
	(build_user_type_conversion_1): Initialize `args' to NULL_TREE.
	(build_object_call): Likewise for `mem_args'.
	(build_new_op): Likewise for `mem_arglist'.  Add `return' from
	default case in enumeration switch.

	* class.c (build_vtable_entry): Add explicit braces to avoid
	ambiguous `else'.
	(build_class_init_list): Likewise.
	(finish_struct_1): Initialize `width' to 0.
	(instantiate_type): Initialize `name' to NULL_TREE.  Add
	explicit braces to avoid ambiguous `else'.

	* cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
	`else'.

	* decl.c (grok_reference_init): Eliminate unused parameter, all
	callers changed.
	(record_builtin_type): Initialize `tdecl' to NULL_TREE.
	(init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
	(cp_finish_decl): Initialize `ttype' to NULL_TREE.
	(grokdeclarator): Add parentheses around && within ||.  Add
	explicit braces to avoid ambiguous `else'.
	(grokparms): Initialize `type' to NULL_TREE.
	(xref_tag): Remove unused label `just_return'.
	(finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
	(finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
	(hack_incomplete_structures): Add parentheses around assignment
	used as truth value.

	* decl2.c (coerce_delete_type): Hide definition of `e3'.

	* error.c: Include <stdlib.h>.
	(dump_expr): Change the type of `i' to size_t.  Remove unused
	label `error'.

	* except.c (init_exception_processing): Remove unused variable `d'.
	(expand_throw): Likewise for `label'.

	* friend.c (add_friends): Add explicit braces to avoid ambiguous
	`else'.

	* init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
	(sort_base_init): Likewise for `binfo'.
	(expand_member_init): Likewise for `rval'.
	(build_member_call): Add parentheses around assignment used as
	truth value.
	(build_offset_ref): Add explicit braces to avoid ambiguous `else'.
	(build_new): Initialize `nelts' to NULL_TREE.  Initialize
	`old_immediate_size_expand' to 0.
	(build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
	(build_vec_delete_1): Remove unused variable `block'.
	(expand_vec_init): Initialize `itype' to NULL_TREE.

	* lex.c: Include <strings.h> if we don't have <string.h>.  Protect
	declaration of `index' and `rindex' with autoconf macros.
	(reinit_parse_for_expr): Remove unused variables
	`look_for_semicolon' and `look_for_lbrac'.
	(cons_up_default_function): Initialize `args' to NULL_TREE.
	(readescape): Initialize `firstdig' to 0.
	(real_yylex): Add parentheses around assignment used as truth value.

	* method.c: Include <strings.h> if we don't have <string.h>.
	Protect declaration of `index' with autoconf macro.

	* parse.y (primary): Add explicit braces to avoid ambiguous `else'.
	Initialize `type' to NULL_TREE.
	(structsp): Remove unused variable `id'.

	* pt.c (coerce_template_parms): Add explicit braces to avoid
	ambiguous `else'.
	(lookup_template_class): Initialize `template' to NULL_TREE.
	(instantiate_class_template): Remove unused variable `name' and `e'.
	(tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
	(do_poplevel): Initialize `saved_warn_unused' to 0.
	(type_unification): Remove unused varable `parm'.
	(unify): Likewise for `j'.

	* repo.c (init_repo): Add parentheses around assignment used as
	truth value.
	(finish_repo): Remove unused varable `p'.

	* search.c (get_binfo): Initialize `type' to NULL_TREE.
	(get_base_distance): Likewise.
	(lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
	and `new_v' to NULL_TREE.
	(lookup_fnfields): Likewise for `rval_binfo_h'.
	(breadth_first_search): Add parentheses around assignment used as
	truth value.
	(get_template_base): Initialize `type' to NULL_TREE.

	* sig.c (append_signature_fields): Initialize `last_mfptr' to
	NULL_TREE.
	(build_signature_table_constructor): Likewise for
	`last_rhs_field', `pfn' and `vt_off'.
	(build_sigtable): Likewise for `init'.

	* tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
	(propagate_binfo_offsets): Likewise for `delta'.
	(hash_tree_cons): Initialize hashcode to 0.
	(can_free): Likewise for `size'.
	(cp_tree_equal): Add explicit braces to avoid ambiguous `else'.

	* typeck.c (convert_sequence): Hide prototype.
	(common_type): Add explicit braces to avoid ambiguous `else'.
	(comp_target_types): Likewise.
	(build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
	(build_function_call_real): Add explicit braces to avoid ambiguous
	`else'.
	(convert_arguments): Initialize `called_thing' to 0.
	(convert_for_initialization): Initialize `savew' and `savee' to 0.

	* typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
	(digest_init): Initialize `old_tail_contents' to NULL_TREE.
	(build_x_arrow): Likewise for `last_rval'.

	* xref.c (GNU_xref_decl): Initialize `cls' to 0.

Sun Feb  1 12:45:34 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* decl.c (init_decl_processing): Use set_sizetype.
	* decl2.c (sizetype): Don't declare.
	* typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
	(c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
	(build_component_addr, unary_complex_lvalue): Likewise.
	* rtti.c (expand_class_desc): Likewise.
	* class.c (get_vfield_offset): Likewise.

Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (convert_nontype_argument): Move check for is_overloaded_fn
	early to avoid bogus error.  Handle overloaded function
	names provided as template arguments correctly.
	(coerce_template_parms): Don't mishandle overloaded functions when
	dealing with template template parameters.
	(lookup_template_class): Issue an error message, rather than
	crashing, when the TYPE_DECL provided is not a template type.

Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* class.c (instantiate_type): Don't just return a known type if
	it's wrong.

Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>

	* class.c (instantiate_type): Remove handling of FUNCTION_DECL
	since that code could never be reached.

	* error.c (dump_decl): Avoid aborting in the midst of printing an
	error message about an illegal template declaration.

	* parse.y (structsp): Print an error message, rather than crashing,
	when a class-head does not name a class.

	* pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
	template arguments as a g++ extension.

	* cp-tree.def (ALIGNOF_EXPR): New tree code.
	* decl2.c (grok_alignof): If processing_template_decl, just store
	the expression.
	* typeck.c (c_alignof): Likewise.
	* decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
	* error.c (dump_expr): Likewise.
	* pt.c (tsubst_copy): Likewise.
	* tree.c (cp_tree_equal): Likewise.
	* pt.c (uses_template_parms): Correctly determine whether or not a
	SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
	folding can be done.

	* cp-tree.h (grok_enum_decls): Remove type parameter.
	* decl.c (grok_enum_decls): Likewise.
	* decl2.c (grok_x_components): Call grok_enum_decls
	unconditionally, since it will do nothing if there is no
	current_local_enum.  Use the new calling sequence.
	* pt.c (tsubst_enum): Use the new calling sequence for
	grok_enum_decls.

	* decl.c (start_function): Make member functions of local classes
	in extern inline functions have comdat linkage here...
	(grokdeclarator): Rather than here.

Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* pt.c (convert_nontype_argument): Use decl_constant_value.

Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>

	* call.c (add_template_candidate_real): New function.
	(add_template_candidate): Use it.
	(add_template_conv_candidate): Likewise.
	(joust): Pass extra argument to more_specialized.
	* class.c (instantiate_type): Handle a single FUNCTION_DECL.
	(is_local_class): Remove.
	(finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
	* cp-tree.h (is_local_class): Remove.
	(perform_array_to_pointer_conversion): Likewise.
	(finish_member_template_decl): Add.
	(check_explicit_specialization): Return a tree, not an int.
	(more_specialized): Take additional argument.
	(get_bindings): Likewise.
	(TI_PENDING_SPECIALIZATION_FLAG): New macro.
	* cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
	(perform_array_to_pointer_conversion): Remove.
	* decl.c (saved_scope): Add processing_specialization,
	processing_explicit_instantiation fields.
	(maybe_push_to_top_level): Save them.
	(pop_from_top_level): Restore them.
	(grokfndecl): Use new return value from
	check_explicit_specialization.
	(start_decl): Don't check flag_guiding_decls before pushing
	decls.
	(cp_finish_decl): Remove previous (bogus) change.
	(grok_declarator): Use decl_function_context rather than
	is_local_class.
	* decl2.c (finish_file): Pass extra argument to get_bindings.
	(build_expr_from_tree): Let build_x_component_ref check
	validity of arguments rather than doing it here.
	* lex.c (cons_up_default_function): Remove code fooling with
	processing_specialization, processing_explicit_instantiation
	flags, as that is now done in {maybe_push_top,pop_from}_top_level.
	* method.c (build_overload_identifier): Mangle local classes in
	template functions correctly.
	* parse.y (finish_member_template_decl): Move to pt.c.
	* pt.c (finish_member_template_decl): Moved here from parse.y.
	(print_candidates): New function.
	(determine_specialization): Change interface.  Properly look for
	most specialized versions of template candidates.
	(check_explicit_specialization): Fully process explicit
	instantiations.
	(push_template_decl): Avoid looking at CLASSTYPE fields in
	FUNCTION_DECLS.
	(determine_overloaded_function): Remove.
	(convert_nontype_argument): Change name from
	convert_nontype_parameter.  Use determine_overloaded_function
	instead of instantiate_type.
	(mangle_class_name_for_template): Handle type contexts as well as
	function contexts.
	(classtype_mangled_name): Likewise.
	(lookup_template_class): Likewise.
	(tsubst): Likewise.
	(more_specialized): Take explicit template arguments as a
	parameter.
	(most_specialized): Likewise.
	(get_bindings): Likewise.  Check that return types match before
	proclaiming a function a match.
	(do_decl_instantiation): Remove code searching for function to
	instantiate; that is now done in check_explicit_specialization.
	(add_maybe_template): Pass extra argument to get_bindings.
	* tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
	implementation.
	* typeck.c (build_component_ref): Check for invalid arguments.

Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
	return_target and call_target are equivalent.

	* pt.c (type_unification_real): Just accept function parms that
	don't use any template parms.

Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* decl.c (cp_finish_decl): When bailing on a comdat variable, also
	unset DECL_NOT_REALLY_EXTERN.

	* parse.y (typename_sub*): Fix std::.

Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* error.c (dump_decl): Fix type default template args.
	(dump_type): Hand TEMPLATE_DECL off to dump_decl.

Fri Jan 23 18:34:37 1998  Mumit Khan  <khan@xraylith.wisc.edu>

	* lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
	(file_name_nondirectory): Use.

Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>

	* pt.c (coerce_template_parms): Don't access elements of ARGLIST
	that are not really present.  Substitute default arguments in
	template template arguments.  Correctly convert TEMPLATE_DECL to
	TEMPLATE_TEMPLATE_PARM.
	(comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
	are no longer treated specially here.
	* parse.y (template_template_parm): Fix copy error.
	* decl.c (grokdeclarator): Warn about missing `typename' for nested
	type created from template template parameters.
	* parse.y (bad_parm): Likewise

	* class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
	(push_nested_class): Likewise.
	* cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
	* cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
	(copy_template_template_parm): Declare.
	* decl.c (arg_looking_for_template): New variable.
	(lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
	Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
	node if arg_looking_for_template is nonzero.
	(pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
	(grok_op_properties, xref_tag, xref_basetypes): Likewise.
	(grokdeclarator): Handle TEMPLATE_DECL.
	* decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
	* error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
	(dump_type_prefix, dump_type_suffix): Handle TEMPLATE_TEMPLATE_PARM.
	(dump_decl): Handle unnamed template type parameters.
	Handle template template parameters.
	(dump_function_name): Handle template template parameters.
	* init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
	Handle TEMPLATE_TEMPLATE_PARM.
	* method.c (build_template_template_parm_names): New function.
	(build_template_parm_names): Handle TEMPLATE_DECL.
	(build_overload_nested_name, build_overload_name):
	Handle TEMPLATE_TEMPLATE_PARM.
	* parse.y (maybe_identifier): New nonterminal.
	(template_type_parm): Use it.
	(template_template_parm, template_arg1): New nonterminal.
	(template_parm): Add template_template_parm rules.
	(template_arg): Set processing_template_arg.
	(template_arg1): Rules moved from template_arg.
	(primary, nonnested_type): Set arg_looking_for_template if we are
	processing template arguments.
	* pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
	(process_template_parm): Handle template template parameters.
	(coerce_template_parms, comp_template_args): Likewise.
	(mangle_class_name_for_template, lookup_template_class): Likewise.
	(uses_template_parms): Handle TEMPLATE_DECL and
	TEMPLATE_TEMPLATE_PARM.
	(current_template_args): Handle TEMPLATE_DECL.
	(tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
	* search.c (dfs_walk, dfs_record_inheritance):
	Handle TEMPLATE_TEMPLATE_PARM.
	* tree.c (copy_template_template_parm): New function.
	(mapcar): Handle TEMPLATE_TEMPLATE_PARM.
	* typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.

Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>

	* decl.c (start_decl): Don't allow duplicate definitions of static
	data members.

	* call.c (build_user_type_conversion_1): Handle user-defined
	template conversion operators correctly.

	* decl2.c (build_expr_from_tree): Issue an error message if the
	object in a COMPONENT_REF is a TEMPLATE_DECL.

	* typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.

	* class.c (is_local_class): New function.
	* cp-tree.h (is_local_class): Declare it.
	(last_tree): Likewise.
	(begin_tree): Likewise.
	(end_tree): Likewise.
	(lookup_template_class): Change prototype.
	* decl.c (cp_finish_decl): Check for NULL where necessary.
	Consider FUNCTION_DECLS to declare objects with top-level binding,
	when calling make_decl_rtl.
	(grokdeclarator): Give members of local classes internal linkage.
	(start_function): Remove declaration of last_tree.
	(finish_function): Set flag_keep_inline_functions around call to
	rest_of_compilation if we are processing a member function in a
	local class.
	(start_method): Call push_template_decl for member functions of
	local classes in template functions.
	* decl2.c (import_export_decl): Don't give external linkage to
	instantiations of templates with internal linkage.
	* parse.y (last_tree): Remove declaration.
	(template_type): Pass extra parameter to lookup_template_class.
	(self_template_type): Likewise.
	(structsp): Move call to reset_specialization into left_curly.
	(left_curly): Call reset_specialization, and begin_tree.
	* pt.c (saved_trees): New variable.
	(mangle_class_name_for_template): Change prototype.  Use
	additional function context to name local classes in templates
	correctly.
	(classtype_mangled_name): Pass the context.
	(push_template_decl): Handle local classes and templates, and
	member functions for such classes.
	(convert_nontype_parameter): Fix handling of pointer-to-member
	constants.
	(lookup_template_class): Handle local classes in templates.
	(tsubst): Likewise.  Don't assume that template instantiations
	have external linkage; pay attention to the template declaration.
	(mark_decl_instantiated): Likewise.
	(begin_tree): New function.
	(end_tree): Likewise.

	* decl.c (xref_basetypes): Don't call complete_type for basetypes
	that involve template parameters; that can lead to infinite
	recursion unnecessarily.

	* pt.c (register_specialization): Do not register specializations
	that aren't ready to be registered yet.
	(check_explicit_specialization): Handle explicit specialization of
	constructors and destructors.
	(build_template_decl): New function.
	(push_template_delc): Handle out-of-class specializations of
	member templates.

	* pt.c (check_explicit_specialization): Set up the template
	information before registering the specialization.
	(coerce_template_parms): Fix thinko.
	(tsubst): Handle specializations of member templates correctly.

	* class.c (finish_struct_methods): Remove calls to
	check_explicit_specialization from here.
	(finish_struct): And insert them here.
	* cp-tree.h (perform_qualification_conversions): New function.
	(perform_array_to_pointer_conversion): Likewise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(determine_specialization): Renamed from
	determine_explicit_specialization.
	(comp_template_parms): New function.
	(processing_explicit_instantiation): New variable.
	* cvt.c (perform_qualification_conversions): New function.
	(perform_array_to_pointer_conversion): Likewise.
	* decl.c (duplicate_decls): Don't consider template functions
	alike unless they have the same parameters.  Refine handling of
	instantiation/specialization mismatches.
	(start_decl): Don't call pushdecl for template specializations,
	since they don't affect overloading.
	(start_function): Likewise.
	(grokfndecl): Call check_explicit_specialization a little later.
	Don't call duplicate_decls for memberm template specializations.
	(grokdeclarator): Don't update template_count for classes that are
	themselves specializations.  Remove use of `2' as parameter to
	grokfndecl since that value isn't used.
	* lex.c (cons_up_default_function): Save and restore
	processing_explicit_instantiation around calls to grokfield.
	* parse.y (finish_member_template_decl): New function.
	(component_decl_1): Use it.
	(fn.def2): Likewise.
	(template_arg_list_opt): New nonterminal.
	(template_type): Use it.
	(self_template_type): Likewise.
	(template_id): Likewise.
	(object_template_id): Likewise.
	(notype_template_declarator): Likwise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(explicit_instantiation): Use them.
	* pt.c (coerce_template_parms): Add parameters.
	(processing_explicit_instantiation): New variable.
	(convert_nontype_parameter): New function.
	(determine_overloaded_function): Likewise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(retrieve_specialization): Likewise.
	(register_specialization): Likewise.
	(processing_explicit_specialization): Removed.
	(determine_specialization): Handle specializations of member
	functions of template class instantiations.
	(check_explicit_specialization): Refine to conform to standard.
	(comp_template_parms): New function.
	(coerce_template_parms): Call convert_nontype_parameter.
	(tsubst): Refine handling of member templates.  Use
	register_specialization.
	(instantiate_template): Use retrieve_specialization.
	(do_decl_instantiation): Likewise.
	(instantiate_decl): Likewise.
	(type_unification): Improve handling of explicit template
	arguments.
	* tree.c (mapcar): Return error_mark_node, rather than aborting,
	on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
	* typeck.c (build_unary_op): Call determine_specialization, rather
	than determine_explicit_specialization.

Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* cvt.c (build_up_reference): A TARGET_EXPR has side effects.

Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

	* error.c (dump_decl): For enum tags, output the tag, not its value.

1998-01-13  Brendan Kehoe  <brendan@cygnus.com>

	* decl.c (init_decl_processing): Only call init_rtti_processing
	FLAG_RTTI is set.

Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* init.c (build_new_1): Split out from build_new.
	(build_new): Just return a NEW_EXPR.
	* expr.c (cplus_expand_expr): Handle NEW_EXPR.

	* decl2.c (get_temp_regvar): Tweak.

	* cp-tree.h (TREE_CALLS_NEW): Comment out.
	* class.c (resolves_to_fixed_type_p): Remove use.
	* method.c (build_opfncall): Likewise.
	* call.c (build_new_op): Likewise.

Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>

	* exception.cc (__eh_alloc, __eh_free): New fns.
	(__cp_push_exception, __cp_pop_exception): Use them.
	(__uncatch_exception): Call terminate here if no exception.
	* except.c (build_terminate_handler): New fn.
	(expand_start_catch_block): Use it.
	(expand_exception_blocks): Likewise.
	(alloc_eh_object): New fn.
	(expand_throw): Use it.  Protect exception init with terminate.
	* typeck.c (build_modify_expr): Remove code that ignores trivial
	methods.



Copyright (C) 1998 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.
