ChangeLog revision 60967
12000-03-08  Nathan Sidwell  <nathan@codesourcery.com>
2
3	* exception.cc (__cp_pop_exception): Cleanup the original object.
4
51999-11-13  Jason Merrill  <jason@yorick.cygnus.com>
6
7	* rtti.c (get_tinfo_fn_unused): Split out from get_tinfo_fn.
8	* class.c (set_rtti_entry): Use it.
9
10Wed Apr 12 00:45:49 2000  Jeffrey A Law  (law@cygnus.com)
11
12	2000-02-03    <loewis@informatik.hu-berlin.de>
13	* call.c (add_function_candidate): Do not add vlist ctor into
14	candidates in compatibility mode.
15	(build_user_type_conversion_1): Add LOOKUP_HAS_VLIST when adding
16	vlist.
17	(convert_like): Likewise.
18	(build_over_call): Skip vlist only if it is mentioned in flags.
19	(build_new_method_call): Do not add vlist in compatibility mode,
20	except for dtors.
21	* cp-tree.h (flag_vtable_thunks): Has now four possible values.
22	(DECL_VLIST_CTOR_WRAPPER_P, DECL_VLIST_CTOR_WRAPPED): New macros.
23	(in_charge_identifier): Declare external.
24	* decl.c (xref_basetypes): Check for vtable_thunks >=2.
25	(finish_dtor): Use bit 2 of in_chrg.
26	(finish_function): Do not finish vlist ctor wrappers.
27	* decl2.c (flag_vtable_thunks_compat): New variable.
28	(lang_decode_option): Set it accordingly.
29	(maybe_retrofit_in_chrg): Call make_vlist_ctor_wrapper.
30	* init.c (build_base_dtor_call): Pass 4 in in_chrg.
31	(no_vlist_base_init): New function.
32	(expand_default_init): Do not pass vlist in compatibility mode.
33	Try to call old base ctor if new one was not generated.
34	(build_new_1): Do not pass vlist in compatibility mode.
35	* method.c (get_id_2): Do not put _Vlist into dtor name in
36	compatibility mode.
37	(make_vlist_ctor_wrapper, emit_vlist_ctor_wrapper): New functions.
38	(synthesize_method): Call emit_vlist_ctor_wrapper.
39	* pt.c (instantiate_class_template): Check for vtable_thunks >=2.
40
41	Sat Nov 13 15:48:59 1999  H.J. Lu  <hjl@gnu.org>
42	* init.c (finish_dtor): Call mark_all_temps_used () before
43	declaring vlist.
44
45	Tue Nov  9 15:01:57 1999  H.J. Lu  <hjl@gnu.org>
46	* init.c (construct_virtual_bases): Update.
47	(expand_cleanup_for_base): Update.
48
49	Tue Nov  9 08:25:04 1999  H.J. Lu  <hjl@gnu.org>
50	* init.c (construct_virtual_bases): Update.
51	(expand_cleanup_for_base): Take vlist parameter.
52	(emit_base_init): Pass vlist to expand_cleanup_for_base.
53	(construct_virtual_bases): Likewise.
54
55	1999-05-02  Martin von L�wis  <loewis@informatik.hu-berlin.de>
56        * class.c (prepare_ctor_vtable, finish_one_ctor_vtable,
57        prepend_ctor_vfields_for_vbase, finish_ctor_vtables_for_vbases,
58        finish_ctor_vtables_1, prepend_vbase_vfields,
59        finish_ctor_vtables): New functions.
60        (finish_struct_1): Call finish_ctor_vtables.
61        * cp-tree.h (TYPE_USES_PVBASES): New macro.
62        (constructor_for_vbase_attr): Widen to two bits.
63        (CONSTRUCTOR_FOR_VBASE, CONSTRUCTOR_FOR_PVBASE,
64        DESTRUCTOR_FOR_PVBASE): New macros.
65        (DECL_CONSTRUCTOR_FOR_VBASE_P): Adopt to new enumeration.
66        (DECL_CONSTRUCTOR_FOR_VBASE): New macro.
67        (DECL_CONSTRUCTOR_FOR_PVBASE_P, DECL_DESTRUCTOR_FOR_PVBASE_P): New
68        macros.
69        (vlist_identifier, vlist_type_node, vlist_zero_node): Declare.
70        (VCTABLE_NAME, VLIST_NAME_FORMAT, VLIST_NAME, VLIST1_NAME,
71        VLIST_TYPE_NAME): New macros.
72        (LOOKUP_HAS_VLIST): New macro.
73        (build_base_dtor_call, init_vlist): Declare.
74        (build_destructor_name): Add int argument.
75        * decl.c (vlist_identifier, vlist_type_node, vlist_zero_node):
76        Define.
77        (init_decl_processing): Initialize them.
78        (grokdeclarator): Handle vlist argument.
79        (copy_args_p): Likewise.
80        (grok_ctor_properties): Don't try to skip initial int for
81        templates.  Skip vlist if available.
82        (xref_basetypes): Set TYPE_USES_PVBASES.
83        (finish_dtor, finish_ctor): New functions, moved out of ...
84        (finish_function): ... here.
85        * decl2.c (lang_decode_option): Set flag_vtable_thunks explicitly.
86        (maybe_retrofit_in_chrg): Retrofit __vlist parameter.
87        (grokclassfn): Pass pvbase flag into mangled name.
88        * init.c (build_base_dtor_call): New function.
89        (build_partial_cleanup_for): Call it.
90        (pvbasecount, init_vlist, ): New functions.
91        (emit_base_init): Process vlist argument.
92        (expand_aggr_vbase_init_1): Likewise.
93        (expand_aggr_vbase_init): Likewise.
94        (expand_default_init): Likewise.
95        (build_new_1): Pass null vlist argument.
96        (build_delete): Likewise. Call build_base_dtor_call.
97        * method.c (process_overload_item): Mangle _Vlist specially.
98        (build_base_path, get_vlist_vtable_id): New functions.
99        (build_destructor_name): Potentially mangle _Vlist into it.
100        (do_build_copy_constructor): Skip vlist argument.
101        (synthesize_method): Likewise.
102        * pt.c (has_pvbases_p): New function.
103        (instantiate_class_template): Call it.
104        (tsubst_decl): Retrofit before mangling. Pass pvbase_p to
105        destructor mangling.
106        * search.c (expand_direct_vtbls_init_thunks): New function.
107        (expand_indirect_vtbls_init_thunks): New function.
108        (expand_indirect_vtbls_init): Call it.
109        * call.c (add_function_candidate): Process vlist argument.
110        (build_user_type_conversion_1): Add vlist argument.
111        (convert_like): Likewise.
112        (build_over_call): Likewise.
113        (build_new_method_call): Likewise.
114
1152000-02-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
116
117	* typeck2.c (my_friendly_abort): Use GCCBUGURL.
118
1191999-11-01  Jason Merrill  <jason@yorick.cygnus.com>
120
121	* decl2.c (maybe_make_one_only): Always make things comdat on
122	ELF targets, too.
123
124Sun Oct 24 23:54:10 PDT 1999 Jeff Law  (law@cygnus.com)
125
126	* gcc-2.95.2 Released.
127
1281999-09-06  Mark Mitchell  <mark@codesourcery.com>
129
130	* pt.c (tsubst): Back out 1999-08-06 patch.  Use fold and
131	decl_constant_value to simplify array bounds.
132
1331999-08-19  Jason Merrill  <jason@yorick.cygnus.com>
134
135	* cp-tree.h: Declare flag_use_repository.
136	* pt.c (do_decl_instantiation): Don't complain about duplicate
137	instantiation with -frepo.
138	(do_type_instantiation): Likewise.
139
1401999-08-14  Jason Merrill  <jason@yorick.cygnus.com>
141
142	* decl2.c (lookup_arg_dependent): Note that we've already checked
143	the current namespace.
144
145Mon Aug 16 01:29:24 PDT 1999 Jeff Law  (law@cygnus.com)
146
147	* gcc-2.95.1 Released.
148
1491999-08-12  Mark Mitchell  <mark@codesourcery.com>
150
151	* decl2.c (lang_decode_option): Deprecate signatures.
152
1531999-08-11  Martin v. Loewis  <martin@mira.isdn.cs.tu-berlin.de>
154
155	* lex.c (do_identifier): If we find a hidden type after a global
156	was selected already, continue using the global.
157
1581999-08-10  Martin v. Loewis  <martin@mira.isdn.cs.tu-berlin.de>
159
160	* decl2.c (set_decl_namespace): Do not complain about non-matching
161	decls if processing a template.
162
1631999-08-09  Jason Merrill  <jason@yorick.cygnus.com>
164
165	* parse.y (function_try_block): Call end_protect_partials
166	before expand_start_all_catch.
167
1681999-08-06  Jason Merrill  <jason@yorick.cygnus.com>
169
170	* pt.c (maybe_get_template_decl_from_type_decl): Make sure that
171	we're looking at a class.
172
173	* decl.c (lookup_name_real): Set the complain flag if we're
174	looking for a namespace member.
175
176	* decl.c (pushdecl): Only give an error for shadowing a parm 
177	from *this* function.
178
179	* decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Only
180	build_expr_from_tree on the args of a TEMPLATE_ID_EXPR.
181
182	* class.c (mark_overriders): Fix order of args to overrides.
183	(warn_hidden): Likewise.  Fix for having virtual and non-virtual
184	functions with the same name.
185
186	* cp-tree.h (DECL_VIRTUAL_CONTEXT): New macro.
187	* typeck.c (expand_ptrmemfunc_cst): Calculate delta correctly for
188	virtual functions and MI.  Simplify.
189
190	* typeck.c (c_expand_return): Downgrade pedwarn about returning NULL
191	from op new to warning.
192
193	* decl2.c (reparse_absdcl_as_casts): Don't warn about old-style
194	casts in system headers or extern "C" blocks.
195
196	* pt.c (do_decl_instantiation): Downgrade duplicate instantiation
197	errors to pedwarn.
198
199	* error.c (dump_type_real): Handle TREE_LIST again.
200
201	* typeck.c (comp_target_parms): Don't complain about 
202	converting from () to (...) if !flag_strict_prototype.
203
204	* class.c (instantiate_type): Downgrade errors for object-dependent
205	memfn refs to pedwarn.
206
2071999-08-06  Alexandre Oliva  <oliva@dcc.unicamp.br>
208
209	* pt.c (tsubst): Use build_index_type to build in-template array
210	index type.  Fixes g++.oliva/dwarf1.C.
211	* decl.c (grokdeclarator): Likewise, just for consistency, as it
212	doesn't seem to trigger the bug without it.
213
214Thu Aug  5 02:40:42 1999  Jeffrey A Law  (law@cygnus.com)
215
216        * typeck2.c: Update URLs and mail addresses.
217
2181999-08-03  Mumit Khan  <khan@xraylith.wisc.edu>
219
220	* decl.c (start_decl): Set attributes before duplicate_decls call.
221
222Wed Jul 28 21:39:31 PDT 1999 Jeff Law  (law@cygnus.com)
223
224	* gcc-2.95 Released.
225
226Sun Jul 25 15:24:21 1999  Jeffrey A Law  (law@cygnus.com)
227
228	* g++FAQ.texi: Deleted per Joe Buck's request.
229	* Makefile.in: Corresponding changes.
230
231Sat Jul 17 23:50:47 1999  Jeffrey A Law  (law@cygnus.com)
232
233	* Makefile.in (INTERFACE): Bump to 2.
234
2351999-07-17  Alexandre Oliva  <oliva@dcc.unicamp.br>
236        
237	* typeck2.c (my_friendly_abort): Updated URL with bug reporting
238	instructions to gcc.gnu.org.  Removed e-mail address.
239
2401999-07-15  Mark Mitchell  <mark@codesourcery.com>
241
242        * pt.c (check_default_tmpl_args): Handle friends defined in the
243        class just like member functions defined in the class.
244
245Thu Jul 15 01:26:49 1999  H.J. Lu  <hjl@gnu.org>
246
247	* decl.c (duplicate_decls): Relax restriction for exception
248	checks on duplicate symbols.
249
2501999-07-07  Jason Merrill  <jason@yorick.cygnus.com>
251
252	* decl.c (grokdeclarator): Update the names of all variants when
253	de-anonymizing.
254
255Wed Jul  7 01:26:47 1999  Alexandre Oliva  <oliva@dcc.unicamp.br>
256
257	* decl2.c (mark_vtable_entries): Fix check for rtti offset.
258
2591999-06-26  Richard Henderson  <rth@cygnus.com>
260
261	* decl.c (cp_finish_decl): Fix typo in cp_warning_at call.
262
2631999-06-21  Mark Mitchell  <mark@codesourcery.com>
264
265	* init.c (expand_aggr_vbase_init): Rename to
266	construct_virtual_bases.  Conditionalize construction here, 
267	rather than ...
268	(emit_base_init): Here.
269
2701999-06-19  Mark Mitchell  <mark@codesourcery.com>
271
272        * semantics.c (finish_asm_statement): Apply decay conversions to
273        input operands.
274
275	* decl.c (expand_static_init): When building an anonymous function
276	for use with atexit, compute its body before and after entering
277	the function.
278
2791999-06-18  Mark Mitchell  <mark@codesourcery.com>
280
281	* init.c (expand_aggr_vbase_init): Add flag parameter.
282	(build_partial_cleanup_for): Remove, inlining into ..
283	(expand_cleanup_for_base): ... here.  Take flag parameter.
284	(emit_base_init): Pass the in_chrg parameter to
285	emit_aggr_vbase_init. 
286	(emit_aggr_vbase_init): Pass it to expand_cleanup_for_base.
287	
2881999-06-16  Mark Mitchell  <mark@codesourcery.com>
289
290	* decl2.c (import_export_decl): Use same_type_p, rather than
291	relying on pointer-equality for types.
292
293	* method.c (do_build_copy_constructor): Simplify.
294
295	* call.c (build_method_call): Remove bogus code for two-argument
296	delete.
297	* init.c (build_new_1): Expand on comment, and remove dead code.
298
299	* init.c (expand_cleanup_for_base): New function, split out
300	from ...
301	(emit_base_init): Here.
302	(expand_aggr_vbase_init): Use it.
303
3041999-06-15  Mark Mitchell  <mark@codesourcery.com>
305
306	* cp-tree.h (class_cache_firstobj): Declare.
307	(maybe_push_cache_obstack): Rename to push_cache_obstack.
308	* class.c (permanent_obstack): Remove declaration.
309	(class_cache_firstobj): Make it global.
310	(add_method): Don't use permanent_obstack directly.
311	(pushclass): Only free the class_cache_obstack if we know how far
312	back to free it.
313	(maybe_push_cache_obstack): Rename to push_cache_obstack.
314	* decl.c: Remove dead comment.
315	(saved_scope): Add class_cache_firstobj.
316	(push_to_top_level): Save it.
317	(pop_from_top_level): Restore it.
318	(push_class_level_binding): Use push_cache_obstack, not
319	maybe_push_cache_obstack.
320	* search.c (push_class_decls): Likewise.
321
3221999-06-14  Nathan Sidwell  <nathan@acm.org>
323
324	* call.c (build_new_op): Remove REF_BIND from all operands.
325
3261999-06-07  Mark Mitchell  <mark@codesourcery.com>
327
328	* search.c (convert_pointer_to_single_level): Reimplement without
329	using get_binfo.
330
3311999-06-06  Mark Mitchell  <mark@codesourcery.com>
332
333	* method.c (is_back_referenceable_type): Back-reference bools when
334	not squangling.
335
3361999-06-04  Jason Merrill  <jason@yorick.cygnus.com>
337
338	* semantics.c (finish_if_stmt_cond): Copy cond to permanent_obstack.
339	(finish_while_stmt_cond, finish_do_stmt, finish_for_cond): Likewise.
340
3411999-05-30  Mark Mitchell  <mark@codesourcery.com>
342
343	* lex.c (make_lang_type): Create TYPE_BINFO for
344	TEMPLATE_TYPE_PARMs just like for non-template types.
345
3461999-05-28  Nathan Sidwell  <nathan@acm.org>
347
348	* decl.c (complete_array_type): Allocate off same obstack. Fix
349	DO_DEFAULT comment to match reality.
350
3511999-05-22  Mark Mitchell  <mark@codesourcery.com>
352
353	* tree.c (mapcar): Handle NON_LVALUE_EXPR.
354
3551999-05-21  Mark Mitchell  <mark@codesourcery.com>
356
357	* typeck.c (build_ptrmemfunc): Handle PTRMEM_CSTs carefully to
358	reveal optimization opportunities.
359
3601999-05-20  Mark Mitchell  <mark@codesourcery.com>
361
362	* decl.c (grokdeclarator): Don't treat [] as indicating a
363	zero-sized array in a typedef.
364
365	* call.c (build_object_call): Don't look at DECL_NAME for a type.
366	(pt.c): Or CP_TYPE_QUALS for an ERROR_MARK.
367	(typeck.c): Or TYPE_MAIN_VARIANT for a type.
368
3691999-05-20  Jason Merrill  <jason@yorick.cygnus.com>
370
371	* tree.c (lvalue_p_1): A NOP_EXPR can be an lvalue.
372	(build_cplus_new): Make sure that what we return is of the right type.
373
3741999-05-20  Mark Mitchell  <mark@codesourcery.com>
375
376	* cp-tree.h (make_ptrmem_cst): New function.
377	* expr.c (cplus_expand_constant): Split out from ...
378	(cplus_expand_expr): Here.  Use cplus_expand_constant.
379	(init_cplus_expand): Set lang_expand_constant.
380	* pt.c (convert_nontype_argument): Use make_ptrmem_cst.
381	* tree.c (make_ptrmem_cst): Define.
382	* typeck.c (unary_complex_lvalue): Use make_ptrmem_cst.
383	* typeck2.c (initializer_constant_valid_p): Use make_ptrmem_cst.
384
3851999-05-19  Mark Mitchell  <mark@codesourcery.com>
386
387	* decl2.c (start_static_storage_duration_function): Fix comment.
388	(finish_file): Create static storage duration functions lazily.
389
390Wed May 19 02:50:53 1999  Arvind Sankar <arvinds@mit.edu>
391
392	* gxxint.texi: Fix typo.
393
3941999-05-18  Jason Merrill  <jason@yorick.cygnus.com>
395
396	* call.c (joust): Compare the types of the conv ops, not the
397	target types of the conversions.
398
399Tue May 18 00:21:34 1999  Zack Weinberg  <zack@rabi.phys.columbia.edu>
400
401	* lang-specs.h: Define __GNUC__ and __GNUC_MINOR__ only if -no-gcc
402	was not given.
403
4041999-05-17  Mark Mitchell  <mark@codesourcery.com>
405
406	* cp-tree.def (TEMPLATE_ID_EXPR): Update documentation.
407	* decl.c (grokfndecl): Don't allow inline declarations of friend
408	template specializations, or friend template specializations with
409	default arguments.
410	* pt.c (tsubst): Handle substitution into array types that does
411	not yield a fixed upper bound, even when not processing a
412	template.
413	(tsubst_copy): Deal with the fact that the second operand to a
414	TEMPLATE_ID_EXPR may be NULL_TREE, a TREE_LIST, or a TREE_VEC.
415	* search.c (marked_pushdecls_p): Don't descend into
416	TEMPLATE_TYPE_PARMs and the like.
417	(unmarked_pushdecls_p): Likewise.
418	
419	* call.c (build_over_call): Don't throw away
420	initializations/copies of empty classes; use MODIFY_EXPR and
421	INIT_EXPR as for non-empty classes.
422	* class.c (finish_struct_1): Put the padding byte for an empty
423	class on the TYPE_NONCOPIED_PARTS list for the class.
424
4251999-05-16  Mark Mitchell  <mark@codesourcery.com>
426
427	* decl2.c (build_expr_from_tree): Handle COMPONENT_REFs that
428	indicate a reference to a field that is a qualified name.
429
4301999-05-16  Jason Merrill  <jason@yorick.cygnus.com>
431
432	* decl2.c (finish_objects): Don't use .?tors.* if we don't have
433	ASM_OUTPUT_CONSTRUCTOR.
434
435	* friend.c (do_friend): Add attrlist arg.  Remove support for
436	getting a non-decl as 'decl'.
437	* decl.c (grokfndecl): Remove attrlist arg.  Don't set attrs or
438	rtl.
439	(grokdeclarator): Adjust.
440	* cp-tree.h: Adjust.
441
4421999-05-16  Mark Mitchell  <mark@codesourcery.com>
443
444	* cp-tree.h (permanent_p): New function.
445	* init.c (build_new_1): Use mapcar, not copy_node, to copy a
446	possibly complex tree node.
447	* tree.c (mapcar): Adjust comments, and follow coding standards in
448	conditional.
449	(permanent_p): New function.
450
4511999-05-13  Per Bothner  <bothner@cygnus.com>
452
453	* class.c (push_lang_context):  Turn off DECL_IGNORED_P for
454	primitive Java types, if we actually see `extern "Java"'.
455
4561999-05-10 18:21 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
457
458	* lang-specs.h: Pass -$ to the preprocessor.
459
4601999-05-10  Jason Merrill  <jason@yorick.cygnus.com>
461
462	* init.c (build_offset_ref): Wrap baselinks in OFFSET_REF, too.
463	Don't bother wrapping an OFFSET_TYPE around unknown_type_node.
464	(resolve_offset_ref): Don't handle a raw baselink.
465	* cvt.c (build_expr_type_conversion): Likewise.
466	* typeck.c (decay_conversion, build_c_cast, convert_for_assignment,
467	convert_for_initialization): Likewise.
468	* class.c (instantiate_type): Handle seeing a baselink under an
469	OFFSET_REF.
470	* error.c (dump_expr): Likewise.	
471	* pt.c (for_each_template_parm): Likewise.
472	(resolve_overloaded_unification): Likewise.
473	* tree.c (is_overloaded_fn, really_overloaded_fn): Likewise.
474	* typeck.c (expr_sizeof): Also complain about other permutations
475	of overloaded functions.
476
4771999-05-07  Jason Merrill  <jason@yorick.cygnus.com>
478
479	* init.c (resolve_offset_ref): Don't return a raw method.
480	Use BASELINK_P.
481	* typeck.c (decay_conversion): Don't handle a raw method.
482	Resolve all OFFSET_REFs.
483	(get_member_function_from_ptrfunc): 0 is a valid vtable index.
484	(build_binary_op_nodefault): Handle resolving overloaded fns.  Use
485	same_type_p for pmf bits.  Don't use build_binary_op to compare
486	raw pointers to methods.
487	(convert_for_assignment): Check for OFFSET_REF, not OFFSET_TYPE,
488	to decide when to call resolve_offset_ref.
489	(build_c_cast, convert_for_initialization): Likewise.
490	* cvt.c (build_expr_type_conversion): Likewise.
491
4921999-05-06  Nathan Sidwell  <nathan@acm.org>
493
494	* call.c (build_new_method_call): Use TYPE_MAIN_VARIANT of class.
495
4961999-05-05  Mark Mitchell  <mark@codesourcery.com>
497
498	* decl2.c (start_objects): Don't let static constructors and
499	destructors get inlined.
500
501	* parse.y (nested_name_specifier): Make sure ordinary types are
502	complete, just like template types.
503	* parse.c: Regenerated.
504
505	* pt.c (check_explicit_specialization): Improve error messages.
506
5071999-05-04  Martin von L�wis  <loewis@informatik.hu-berlin.de>
508
509	* typeck.c (string_conv_p): Use same_type_p to check whether we
510	try to convert between char and wchar_t.
511
5121999-05-03  Mark Mitchell  <mark@codesourcery.com>
513
514	* search.c (lookup_field_r): Set the TREE_TYPE of an ambiguous
515	lookup to error_mark_node here.
516	(lookup_member): Revise documentation.  Add comments.  Don't set
517	the TREE_TYPE to error_mark_node here, and don't build up an extra
518	TREE_LIST for ambiguous lookups.
519	(setup_class_bindings): Adjust accordingly.
520	(push_class_decls): Revise out-of-date comments.
521	
522	* typeck.c (build_const_cast): Tighten checks for legality.
523
5241999-05-02  Martin von L�wis  <loewis@informatik.hu-berlin.de>
525
526	* init.c (build_member_call): Lookup names coming from
527	namespace-scoped LOOKUP_EXPR.
528
5291999-05-03  Jim Blandy  <jimb@zwingli.cygnus.com>
530
531	* gxxint.texi: Add documentation for 'I'.
532
5331999-05-02  Martin von L�wis  <loewis@informatik.hu-berlin.de>
534
535	* tinfo.cc (operator==): Qualify type_info with std::.
536
5371999-05-02  Mark Mitchell  <mark@codesourcery.com>
538
539	* cp-tree.h (lang_decl_flags): Remove comdat.  Updated dummy.
540	(DECL_COMDAT): Remove definition.
541
5421999-05-01  Mark Mitchell  <mark@codesourcery.com>
543
544	* decl.c (wrapup_globals_for_namespace): Fix thinko in previous
545	change.
546
5471999-04-30  Mark Mitchell  <mark@codesourcery.com>
548
549	* class.c (build_vtable): Use build_lang_decl when building
550	vtables, not just build_decl.
551	(prepare_fresh_vtable): Likewise.
552	* decl.c (wrapup_globals_for_namespace): Mark vtables as
553	DECL_EXTERNAL when calling wrapup_global_declarations.
554	* decl2.c (priority_info_s): Add initializations_p and
555	destructions_p members.
556	(finish_vtable_vardecl): Use TREE_SYMBOL_REFERENCED, not TREE_USED,
557	when deciding what vtables to write out.
558	(ssdf_decls): New variable.
559	(ssdf_decls_used): Likewise.
560	(start_static_storage_duration_function): Deal with being called
561	multiple times.  Avoid inlining this function.
562	(generate_inits_for_priority): Deal with reuse of priority map.
563	(get_priority_info): Clear initializations_p and destructions_p.
564	(do_static_initialization): Tweak comment.
565	(do_static_destruction): Likewise.  Fix condition on sentries for
566	destruction. 
567	(generate_ctor_or_dtor_function): Call all of the static storage
568	duration functions.
569	(generate_ctor_or_dtor_function_for_priority): Check
570	initializations_p and destructions_p to see what priorities need
571	initialization functions.
572	(finish_file): Rework to generate multiple static storage duration
573	functions, rather than just one.
574	
575	* typeck.c (build_const_cast): Tweak last change to handle
576	templates correctly.
577
578	* typeck.c (build_const_cast): Disallow use of const_cast to
579	anything but a pointer or reference type.
580
5811999-04-30  Nathan Sidwell  <nathan@acm.org>
582
583	* decl.c (cp_finish_decl): Don't permit arrays of abstract or
584	signature type.
585
5861999-04-29  Mark Mitchell  <mark@codesourcery.com>
587
588	* decl2.c (do_static_destruction): Remove obsolete FIXME comment.
589	(finish_file): Indent comments properly.
590
5911999-04-29  Richard Henderson  <rth@cygnus.com>
592
593	* decl2.c (do_static_initialization): Call do_pending_stack_adjust.
594	(do_static_destruction): Likewise.
595
5961999-04-29  Nathan Sidwell  <nathan@acm.org>
597
598	* cp-tree.h (TYPE_NOTHROW_P): New macro.
599	* decl2.c (delete_sanity): Warn on deleting void *.
600	* init.c (build_new_1): Use TYPE_NOTHROW_P.
601	* typeck.c (c_expand_return): cp_pedwarn on returning NULL from
602	throwing operator new.
603
6041999-04-28  Nathan Sidwell  <nathan@acm.org>
605
606	* cp-tree.h (build_component_addr): Remove prototype.
607	* typeck.c (build_component_addr): Make static. Remove MSG
608	argument.
609	(build_component_addr): Remove MSG parameter, clean up
610	comment.
611	(build_x_function_call): Use cp_error.
612	(build_unary_op): Adjust call of build_component_addr.
613	
6141999-04-28  Mark Mitchell  <mark@codesourcery.com>
615
616	* pt.c (tsubst_friend_class): Check for NULL.
617
618Wed Apr 28 11:42:22 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
619
620	* search.c (binfo_for_vtable): Initialize bfvi.var.
621
6221999-04-27  Nathan Sidwell  <nathan@acm.org>
623
624	* rtti.c (build_x_typeid): Check rtti is enabled.
625
6261999-04-26  Mark Mitchell  <mark@codesourcery.com>
627
628	* search.c (is_subobject_of_p): Make sure we're looking at the
629	right baseclasses.
630
6311999-04-26  Marc Espie  <espie@cvs.openbsd.org>
632
633	* Make-lang.in (cplib2.ready): Don't depend on phony targets.
634
6351999-04-23  Mark Mitchell  <mark@codesourcery.com>
636
637	* decl2.c (finish_file): Tweak handling of extern inlines so that
638	they are not unnecessarily put out.
639
640	* search.c (is_subobject_of_p): Handle TEMPLATE_TYPE_PARMs and
641	such as base classes.
642
6431999-04-22  Brendan Kehoe  <brendan@cygnus.com>
644
645	* tree.c (build_exception_variant): Fix typo: use the chain of U,
646	not trying V, while cycling through U.
647
6481999-04-22  Mark Mitchell  <mark@codesourcery.com>
649
650	* cp-tree.h (lang_decl_flags): Remove returns_first_arg and
651	preserves_first_arg.  Enlarge dummy accordingly.
652	(DECL_TINFO_FN_P): New macro.
653	(SET_DECL_TINFO_FN_P): Likeiwse.
654	(DECL_RETURNS_FIRST_ARG): Remove.
655	(DECL_PRESERVES_THIS): Likewise.
656	(DECL_INIT_PRIORITY): New macro.
657	(finish_struct_1): Change prototype.
658	(cat_namespace_levels): Remove prototype.
659	(vtable_decl_p): New prototype.
660	(vtype_decl_p): Likewise.
661	(sigtable_decl_p): Likewise.
662	(walk_globals_pred): New typedef.
663	(walk_globals_fn): Likewise.
664	(walk_globals): New prototype.
665	(walk_namespaces_fn): New typedef.
666	(walk_namespaces): New prototype.
667	(wrapup_globals_for_namespace): Likewise.
668	(walk_vtables): Remove prototype.
669	(walk_sigtables): Likewise.
670	(instantiate_pending_templates): New prototype.
671	* class.c (finish_struct_1): Don't return a value.
672	* decl.h (pending_statics): Remove declaration.
673	* decl.c (walk_namespaces_r): New function.
674	(walk_globals_r): Likewise.
675	(vtable_decl_p): Likewise.
676	(vtype_decl_p): Likewise.
677	(sigtable_decl_p): Likewise.
678	(walk_namespaces): Likewise.
679	(walk_globals_data): New type.
680	(walk_globals): New function.
681	(wrapup_globals_for_namespace): Likewise.
682	(expand_static_init): Remove assertion.  Remove redundancy in
683	conditional.  Don't put static data members in static_aggregates
684	Tidy.
685	(finish_function): Remove redundancy in conditional.  Don't set
686	DECL_RETURNS_FIRST_ARG.
687	(cat_namespace_levels): Remove.
688	* decl2.c: Include splay-tree.h and varray.h.
689	(priority_info_s): New structure.
690	(finish_vtable_vardecl): Change prototype.  Adjust for new calling
691	conventions.
692	(prune_vtable_vardecl): Likewise.
693	(finish_sigtable_vardecl): Likewise.
694	(setup_initp): Remove.
695	(do_dtors): Remove.
696	(do_ctors): Remove.
697	(start_static_storage_duration_function): New function.
698	(generate_inits_for_priority): Likewise.
699	(finish_static_storage_duration_function): Likewise.
700	(get_priority_info): Likewise.
701	(do_static_initialization): Likewise.
702	(do_static_destruction): Likewise.
703	(do_static_initialization_and_destruction): Likewise.
704	(generate_ctor_or_dtor_function): Likewise.
705	(generate_ctor_and_dtor_functions_for_priority): Likewise.
706	(pending_statics): Make it a varray.
707	(pending_statics_used): New variable.
708	(saved_inlines): Make it a varray.
709	(saved_inlines_used): New variable.
710	(finish_static_data_member): Change method of updating
711	pending_statics. 
712	(mark_inline_for_output): Remove #if 0'd code.  Change method of
713	updating saved_inlines.
714	(walk_vtables): Remove.
715	(walk_sigtables): Likewise.
716	(import_export_decl): Use DECL_TINFO_FN_P.
717	(pending_templates): Remove declaration.
718	(maybe_templates): Likewise.
719	(static_aggregates_initp): Likewise.
720	(setup_initp): Likewise.
721	(finish_objects): Simplify.
722	(INITIALIZE_P_IDENTIFIER): New macro.
723	(PRIORITY_IDENTIFIER): New macro.
724	(SSDF_IDENTIFIER): New macro.
725	(initialize_p_decl): New variable.
726	(priority_decl): Likewise.
727	(ssdf_decl): Likewise.
728	(priority_info_map): Likewise.
729	(finish_file): Recode output of static intializers and other
730	file-scope finalization tasks.
731	* error.c (OB_END_TEMPLATE_ID): New macro.
732	(dump_type_real): Use it.
733	(dump_decl): Likewise.
734	(dump_function_name): Likewise.
735	* lex.c (set_typedecl_interface_info): Adjust for new walk_globals
736	interface.
737	(check_newline): Use walk_globals, not walk_vtables.
738	* pt.c (pending_tempalte_expansions): Remove.
739	(set_vardecl_interface_info): Likewise.
740	(pending_templates): Make static.
741	(maybe_templates): Likewise.
742	(instantiate_class_template): Adjust call to finish_struct_1.
743	(instantiate_pending_templates): New function.
744	* rtti.c (get_tinfo_fn): Use SET_DECL_TINFO_FN_P.
745	* tree.c (static_aggregates_initp): Remove.
746	(cp_valid_lang_attribute): Don't use it; use DECL_INIT_PRIORITY
747	instead.
748	* Makefile.in (decl2.o): Depend on varray.h and splay-tree.h.
749
750	* gxx.gperf (RETURN): Rename to RETURN_KEYWORD to avoid clashes
751	with the RTL code RETURN.
752	* hash.h: Regenerated.
753	* lex.c (reinit_parse_for_block): Use RETURN_KEYWORD.
754	* parse.y: Replace RETURN with RETURN_KEYWORD throughout.
755	* parse.c: Regenerated.
756	* pt.c: Include varray.h.  Include rtl.h since varray.h requires
757	it.
758	(inline_parm_levels): New variable.
759	(inline_parm_levels_used): Likewise.
760	(maybe_begin_member_template_processing): Update them.
761	(maybe_end_member_template_processing): Use them, rather than
762	guessing how many levels to pop.
763	
764	* decl.c (make_typename_type): Tighten error-checking.
765
7661999-04-20  Mark Mitchell  <mark@codesourcery.com>
767
768	* cp-tree.h (build_binary_op): Remove unneeded parameter.
769	* class.c (build_vrable_entry_ref): Adjust call to
770	build_binary_op.
771	* decl.c (expand_static_init): Likewise.
772	(grokdeclarator): Likewise.
773	(finish_function): Likewise.
774	* decl2.c (delete_sanity): Likewise.
775	(do_dtors): Likewise.
776	(do_ctors): Likewise.
777	* error.c (dump_type_suffix): Likewise.
778	* expr.c (cplus_expand_expr): Likewise.
779	* init.c (resolve_offset_ref): Likewise.
780	(build_new): Likewise.
781	(build_new_1): Likewise.
782	(build_vec_delete_1): Likewise.
783	(expand_vec_init_catch_clause): Likewise.
784	(build_delete): Likewise.
785	* pt.c (tsubst): Likewise.
786	* rtti.c (synthesize_tinfo_fn): Likewise.
787	* search.c (expand_upcast_fixups): Likewise.
788	(expand_direct_vtbls_init): Likewise.
789	* typeck.c (get_member_function_from_ptrfunc): Likewise.
790	(build_binary_op_nodefault): Likewise.
791	(point_int_sum): Likewise.
792	(pointer_diff): Likewise.
793	(build_unary_op): Likewise.
794	(build_modify_expr): Likewise.
795	(get_delta_difference): Likewise.
796	(build_ptrmemfunc): Likewise.
797	(expand_ptrmemfunc_cst): Likewise.
798	
7991999-04-20  Jason Merrill  <jason@yorick.cygnus.com>
800
801	* decl.c (grokfndecl): Always call cplus_decl_attributes.
802	* decl2.c (grokfield): Pass attrlist to grokdeclarator.
803
8041999-04-19  Mark Mitchell  <mark@codesourcery.com>
805
806	* cp-tree.h (finish_static_data_member_decl): New function.
807	* decl2.c (finish_static_data_member_decl): Split out from ...
808	(grokfield): Here.
809	* pt.c (instantiate_class_template): Use it here instead of 
810	trying to fake it.
811	(tsubst_decl): Don't set DECL_ASSEMBLER_NAME;
812	finish_static_data_member_decl will do that.  Explicit set
813	DECL_EXTERNAL to match non-template processing.
814	
8151999-04-18  Mark Mitchell  <mark@codesourcery.com>
816
817	* cp-tree.h (finish_class_definition): Add parameter.
818	* parse.y (structsp): Use it.  Don't call pop_scope here.
819	* parse.c: Regenerated.
820	* semantics.c (finish_class_definition): Pop it here.
821
8221999-04-17  Mark Mitchell  <mark@codesourcery.com>
823
824	* decl.c (xref_tag): Revise handling of nested template
825	declarations.
826	* pt.c (check_explicit_specialization): Tweak handling of friend
827	templates in template classes.
828	(tsubst_friend_class): Handle friend declarations for nested
829	member template classes.
830	
8311999-04-16  Mark Mitchell  <mark@codesourcery.com>
832
833	* class.c (finish_struct): Remove unused variable.
834	(pushclass): Likewise.
835	(invalidate_class_lookup_cache): Likewise.
836	* cp-tree.def (TYPENAME_TYPE): Improve documentation.
837	* decl.c (build_typename_type): Make sure TYPENAME_TYPE_FULLNAME
838	doesn't get obliterated.
839	(make_typename_type): Handle template classes correctly.
840
841	* cp-tree.h (TREE_NONLOCAL_FLAG): Remove.
842	(storetags): Declare.
843	* class.c (finish_struct): Don't use TREE_NONLOCAL_FLAG.
844	(pushclass): Likewise.  Use storetags to install tag declarations,
845	not pushtag.
846	(invalidate_class_lookup_cache): Don't use TREE_NONLOCAL_FLAG.
847	* decl.c (storetags): Make it global.
848	(push_class_binding): Set INHERITED_VALUE_BINDING_P for an
849	implicit typename declaration.
850	(pushtag): Tidy.  Don't use TREE_NONLOCAL_FLAG.
851	* method.c (hack_identifier): Likewise.
852	* search.c (lookup_member): Likewise.
853	
854	* decl.c (warn_about_implicit_typename_lookup): New function.
855	(lookup_name_real): Use it.  Rework handling of implicit typename
856	extension.
857
8581999-04-15  Mark Mitchell  <mark@codesourcery.com>
859
860	* cp-tree.h (lookup_nested_field): Remove.
861	* class.c (push_nested_class): Handle UNION_TYPEs.
862	(pop_nested_class): Likewise.
863	* decl.c (lookup_name_real): Don't call lookup_nested_field.
864	(start_decl): Use push_nested_class, not just pushclass.
865	(cp_finish_decl): Use pop_nested_class, not just popclass.
866	* search.c (lookup_nested_field): Remove.
867	
868	* cp-tree.h (lang_type): Add documentation.
869	* decl2.c (handle_class_head): Create template declarations here,
870	as appropriate.
871	* parse.y (class_head): Return whether or not we entered a new
872	scope, as well as the type named.
873	(named_class_head): Likewise.
874	(named_complex_class_head_sans_basetype): Likewise.
875	(structsp): Adjust accordingly.  Pop scope when required.
876	* parse.c: Regenerated.
877	* pt.c (check_default_tmpl_args): Robustify.
878	(redeclare_class_template): Likewise.
879	(instantiate_class_template): An instantiation of an
880	anonymous union is itself an anonymous union.
881	* semantics.c (begin_class_definition): Don't create template
882	declarations here.
883	
8841999-04-15  Jason Merrill  <jason@yorick.cygnus.com>
885
886	* parse.y (after_type_declarator_intern): New nonterminal.
887	(after_type_declarator): Use it.
888	(direct_after_type_declarator): Likewise.  Move above 
889	nonnested_type to fix reduce/reduce conflict resolution.
890	(declmods): Reducing from just 'attributes' has EMPTY precedence.
891	* Makefile.in (CONFLICTS): Update.
892
893	* decl.c (define_label): Downgrade error for jumping over a
894	non-POD decl to pedwarn.
895
8961999-04-14  Mark Mitchell  <mark@codesourcery.com>
897
898	* cp-tree.h (popclass): Change declaration.
899	(pop_nested_class): Likewise.
900	(poplevel_class): Remove declaration.
901	* call.c (convert_default_argument): Pass no arguments to
902	popclass.
903	* class.c (finish_struct_1): Likewise.
904	(finish_struct): Likewise.
905	(popclass): Remove argument.  Simplify code accordingly.
906	(pop_nested_class): Likewise.
907	* decl.c (poplevel_class): Declare it here, and make it static.
908	(poplevel): Handle class scopes.
909	(poplevel_class): Don't take an rgument.  Simplify.
910	(pop_everything): Pass no arguments to pop_nested_class.
911	(cp_finish_decl): Pass no arguments to popclass.
912	(grokdeclarator): Pass no arguments to pop_nested_class.
913	(finish_function): Likewise.
914	* decl2.c (grokfield): Likewise.
915	(pop_scope): Pass no arguments to popclass.
916	* lex.c (do_pending_defargs): Pass no arguments to pop_nested_class.
917	* pt.c (instantiate_class_template): Move call to pushclass, and
918	document.  Pass no arguments to popclass.
919	(regenerate_decl_from_template): Likewise.
920	
9211999-04-14  Jason Merrill  <jason@yorick.cygnus.com>
922
923	* typeck.c (build_unary_op): Handle taking the address of a unique
924	bound non-static member function.
925
9261999-04-13  Martin von Loewis  <loewis@informatik.hu-berlin.de>
927
928	* lang-options.h (-Wdeprecated): New flag.
929	* decl2.c (warn_deprecated): New flag.
930	(lang_decode_option): Deprecated this-is-variable,
931	external-templates, alt-external-templates.
932	Support -Wdeprecated.
933	* errfn.c (cp_deprecated): New function.
934
9351999-04-13  Jason Merrill  <jason@yorick.cygnus.com>
936
937	* decl2.c (setup_initp): Compare DECL_ASSEMBLER_NAME instead
938	of the decls themselves.
939
940	* pt.c (tsubst_function_type): Copy attributes over.
941
942	* tree.c (cp_valid_lang_attribute): New fn.  Handle init_priority
943	and com_interface.
944	* cp-tree.h: Add prototype.
945	* decl.c (init_decl_processing): Set valid_lang_attribute.
946
9471999-04-13  Mark Mitchell  <mark@codesourcery.com>
948
949	* class.c (finish_struct_1): Look at the const-ness of the field's
950	type, not the TREE_READONLY-ness of the declaration.
951	* method.c (synthesize_method): Likewise.
952	* pt.c (tsubst_decl): Call c_apply_type_quals_to_decl when
953	creating new declarations.
954
9551999-04-13  Mike Stump  <mrs@wrs.com>
956
957	* decl2.c (import_export_decl): Because vtables always reference
958	virtual functions, even if they are inlined, don't allow
959	-fno-implement-inlines to not emit them, instead, emit them with
960	the vtable.
961	* decl.c (start_function): Likewise.
962
9631999-04-12  Jason Merrill  <jason@yorick.cygnus.com>
964
965	* cp-tree.h (struct lang_type): Add com_interface.
966	(CLASSTYPE_COM_INTERFACE): New macro.
967	* class.c (set_rtti_entry): COM interface classes have no RTTI
968	entries in their vtables; adjust.
969	(add_virtual_function, finish_base_struct, skip_rtti_stuff,
970	modify_one_vtable, fixup_vtable_deltas1, override_one_vtable,
971	finish_struct_1): Likewise.
972	* decl2.c (mark_vtable_entries): Likewise.
973	* rtti.c (build_headof, get_tinfo_fn_dynamic): Likewise.
974	* search.c (get_abstract_virtuals_1, get_abstract_virtuals,
975	expand_upcast_fixups): Likewise.
976	* tree.c (debug_binfo): Likewise.
977
978	* cp-tree.h (COMPARE_NO_ATTRIBUTES): New macro.
979	* typeck.c (comptypes): If we get it, ignore attributes.
980	* class.c (instantiate_type): Use BASELINK_P.  Change complain
981	parameter to flags; 2 means ignore attributes.
982	* call.c (build_op_delete_call): Pass it.
983
984	* decl.c (xref_tag): Only complain once about using a typedef-name
985	with 'struct'.  Downgrade to pedwarn.
986
987	* decl.c (grokdeclarator): Allow [] syntax for zero-length array.
988
989	* parse.y (absdcl_intern): New nonterminal.
990	(absdcl, direct_abstract_declarator): Use it.
991
992	* pt.c (lookup_template_class): Look through implict typename.
993
9941999-04-11  Mark Mitchell  <mark@codesourcery.com>
995
996	* friend.c (add_friend): Deal gracefully with error_mark_node.
997	* method.c (build_overload_value): Handle pointers-to-members as
998	template parameters.
999
1000	* decl.c (push_binding): Fix typo in comment.
1001
10021999-04-10  Mark Mitchell  <mark@codesourcery.com>
1003
1004	* error.c (dump_type_real): If a typename is a template-id, put
1005	out the template arguments.
1006	(dump_expr): Handle TEMPLATE_ID_EXPR.
1007	* pt.c (lookup_template_class): Now that full arguments are
1008	available everywhere, remove code that tried to guess them.
1009
10101999-04-09  Mark Mitchell  <mark@codesourcery.com>
1011
1012	* decl.c (make_typename_type): Complain if we don't find a type
1013	when trying to make a typename type for a non-template type.
1014
10151999-04-09  Jason Merrill  <jason@yorick.cygnus.com>
1016
1017	* decl.c (start_decl): Pass attributes to grokdeclarator.
1018	(grokdeclarator): Handle attributes on constructor-syntax
1019	initializers.
1020
10211999-04-08  Mark Mitchell  <mark@codesourcery.com>
1022
1023	* error.c (dump_expr): Don't crash on INDIRECT_REFs whose operands
1024	don't have types.
1025
1026	* search.c (template_self_reference_p): Tweak.
1027
10281999-04-07  Mark Mitchell  <mark@codesourcery.com>
1029
1030	* init.c (build_offset_ref): Don't build yet another weird data
1031	structure to describe overloaded functions.
1032
10331999-04-06  Mark Mitchell  <mark@codesourcery.com>
1034
1035	* cp-tree.h (BASELINK_P): New macro.
1036	(SET_BASELINK_P): Likewise.
1037	* init.c (build_member_call): Remove needless assignment in if
1038	statement.
1039	* search.c (lookup_field_r): Fix handling when we are looking
1040	specifically for a type; these are not hidden by functions and
1041	variables.
1042	(lookup_member): Use SET_BASELINK_P.
1043	* tree.c (is_overloaded_fn): Use BASELINK_P.
1044	(really_overloaed_fn): Likewise.
1045	(get_first_fn): Likewise.
1046
10471999-04-05  Mark Mitchell  <mark@codesourcery.com>
1048
1049	* decl.c (lookup_name_current_level): Tweak, and improve
1050	documentation.
1051
1052	* class.c (maybe_fixup_vptrs): Remove declaration.
1053	(build_class_init_list): Likewise.
1054	* decl.c (pushdecl_class_level): Call check_template_shadow here
1055	...
1056	(push_class_level_binding): ... not here.
1057	* search.c (dfs_push_type_decls): Only avoid
1058	template-self-reference TYPE_DECLs if they are from base classes.
1059
10601999-04-04  Mark Mitchell  <mark@codesourcery.com>
1061
1062	* pt.c (check_template_shadow): Don't treat OVERLOADs as _DECL
1063	nodes.  Tidy.
1064
10651999-04-03  Jason Merrill  <jason@yorick.cygnus.com>
1066
1067	* class.c (maybe_fixup_vptrs, build_class_init_list): Lose.
1068	(finish_struct_1): Don't call build_class_init_list.
1069
10701999-04-02  Mark Mitchell  <mark@codesourcery.com>
1071
1072	* tinfo.h (__class_type_info): Fix illegal declaration.
1073
1074	* cp-tree.def (TEMPLATE_ID_EXPR): Update comment.
1075	* cp-tree.h (INHERITED_VALUE_BINDING_P): New macro.
1076	(IDENTIFIER_CLASS_VALUE): Improve documentation.
1077	(is_properly_derived_from): Declare.
1078	(invalidate_class_lookup_cache): Likewise.
1079	(maybe_maybe_note_name_used_in_class): Likewise.
1080	(note_name_declared_in_class): Likewise.
1081	(push_using_decl): Remove duplicate declaration.
1082	(id_in_current_class): Remove declaration.
1083	(push_class_binding): Change prototype.
1084	(clear_identitifer_class_values): Declare.
1085	* call.c (is_properly_derived_from): Make it global.
1086	(build_new_function_call): Be careful about updating candidates.
1087	(build_new_method_call): Handle COMPONENT_REFs.  Don't crash when
1088	asked to make illegal calls.
1089	* class.c: Include splay-tree.h.
1090	(class_stack_node): Add names_used slot.
1091	(check_member_decl_is_same_in_complete_scope): Remove.
1092	(add_method): Fix comment.  Push the declaration into class
1093	scope.
1094	(finish_struct_1): When popping the class, pop the bindings too.
1095	Remove check for data member/function member conflict.
1096	(finish_struct): Remove calls to
1097	check_member_decl_is_same_in_complete_scope.  Change calls to
1098	popclass.
1099	(pushclass): Clear names_used in the class stack entry.
1100	Use invalidate_class_lookup_cache to remove cached entries, rather
1101	than magic values with popclass.  Clear IDENTIFIER_CLASS_VALUE
1102	before entering a new class.  Remove dead code.  Don't mess with
1103	current_function_decl when pushing declarations.
1104	(invalidate_class_lookup_cache): New function, split out from ...
1105	(popclass): Here.  Clean up names_used on our way out.
1106	(instantiate_type): Adjust.
1107	(build_self_reference): Don't push the declaration here.
1108	(maybe_note_name_used_in_class): New function.
1109	(note_name_declared_in_class): Likewise.
1110	* decl.c (add_binding): Change prototype.
1111	(find_class_binding_level): New function.
1112	(innermost_nonclass_level): Likewise.
1113	(current_binding_level): Update documentation.
1114	(inner_binding_level): Remove.  Replace with current_binding_level
1115	throughout.
1116	(push_binding_level): Remove special handling of
1117	class_binding_level.
1118	(pop_binding_level): Likewise.  Use find_class_binding_level.
1119	(suspend_binding_level): Likewise.
1120	(global_bindings_p): Use innermost_nonclass_level.
1121	(toplevel_bindings_p): Likewise.
1122	(namespace_bindings_p): Likewise.
1123	(pseudo_global_level_p): Likewise.
1124	(push_binding): Clear INHERITED_VALUE_BINDING_P.
1125	(add_binding): Check for illegal multiple declarations.  Return a
1126	value indicating whether or not the new binding was legal.
1127	(push_local_binding): Skip over class binding levels.  Check
1128	return value from add_binding.
1129	(push_class_binding): Set INHERITED_VALUE_BINDING_P.  Call
1130	note_name_declared_in_class.
1131	(pushlevel_class): Remove "fake out the rest of the compiler"
1132	code.
1133	(poplevel_class): Reset IDENTIFIER_CLASS_VALUEs.
1134	(clear_identifier_class_values): New function.
1135	(pop_from_top_level): Use it.
1136	(pop_everything): Tweak.
1137	(maybe_process_template_type_declaration): Don't push the
1138	declaration for the template here.
1139	(pushtag): Don't push tag declarations into class scope here.
1140	(pushdecl): Apply DeMorgan's law for readability.
1141	(pushdecl_class_level): Remove special-case code for
1142	TYPE_BEING_DEFINED.  Handle OVERLOADs and anonymous unions.
1143	(push_class_level_bindng): Deal with inherited bindings.
1144	(lookup_name_real): Remove special-case code for
1145	TYPE_BEING_DEFINED, and some implicit typename magic.
1146	(grokdeclarator): Handle COMPONENT_REF for a template function.
1147	(build_enumerator): Don't call pushdecl_class_level here.
1148	(id_in_current_class): Remove.
1149	* decl2.c (grokfield): Don't call pushdecl_class_level or
1150	check_template_shadow.
1151	* errfn.c (cp_file_of): Don't declare.
1152	(cp_line_of): Likewise.
1153	* error.c (dump_decl): Handle an OVERLOAD.
1154	(cp_file_of): Likewise.
1155	(cp_line_of): Likewise.
1156	* init.c (build_member_call): Handle a COMPONENT_REF.
1157	* lex.c (do_identifier): Call maybe_note_name_used_in_class, not
1158	pushdecl_class_level.
1159	* method.c (hack_identifier): Build COMPONENT_REFs for references
1160	to member templates as well as member functions.  Remove dead
1161	code.
1162	* parse.y (left_curly): Remove.
1163	(nonnested_type): Call maybe_note_name_used_in_class, not
1164	pushdecl_class_level.
1165	* parse.c: Regenerated.
1166	(nested_name_specifier_1): Likewise.
1167	* pt.c (check_explicit_specialization): Adjust, for robustness.
1168	(check_template_shadow): Handle OVERLOADs.
1169	(build_template_decl): Set DECL_CONSTRUCTOR_P on the
1170	TEMPLATE_DECL, if appropriate.
1171	* search.c (envelope_add_decl): Remove.
1172	(dfs_pushdecls): Likewise.
1173	(dfs_compress_decls): Likewise.
1174	(dfs_push_decls): New function.
1175	(dfs_push_type_decls): Likewise.
1176	(setup_class_bindings): Likewise.
1177	(template_self_reference_p): Likewise.
1178	(lookup_field_r): Use it.
1179	(looup_member): Remove old comment.  Deal with ambiguity.
1180	(push_class_decls): Use dfs_push_decls and dfs_push_type_decls,
1181	and remove envelope processing.
1182	* semantics.c (begin_class_definition): Let pushclass push
1183	declarations for base classes.
1184	(finish_member_declaration): Push declarations into class scope.
1185	* typeck.c (build_component_ref): Just put an OVERLOAD into the
1186	COMPONENT_REF, not a TREE_LIST of an OVERLOAD.
1187	(build_x_function_call): Deal with OVERLOAD.  Handle template-ids.
1188	* Makefile.in (class.o): Depend on splay-tree.h.
1189
1190Wed Mar 31 11:30:43 1999  Nathan Sidwell  <nathan@acm.org>
1191
1192	* cvt.c (convert_pointer_to_real): Use same_type_p.
1193	* typeck.c (comp_target_types): Use same_type_p.
1194
11951999-03-31  Jason Merrill  <jason@yorick.cygnus.com>
1196
1197	* semantics.c (begin_inline_definitions,
1198	finish_inline_definitions): Rename from finish_default_args and
1199	begin_inline_definitions, respectively, to something that isn't a
1200	total lie.  :)
1201	* parse.y (structsp): Adjust.
1202
1203	* tree.c (hash_tree_cons): Remove obsolete via_* parms.
1204	(list_hash_lookup): Likewise.
1205	(hash_tree_chain): Adjust.
1206	* pt.c (tsubst): Adjust.
1207	(tsubst_arg_types): Use plain hash_tree_cons.
1208	* cp-tree.h (hash_tree_cons_simple): Lose.
1209	* parse.y (declmods, nonempty_cv_qualifiers): Use hash_tree_cons.
1210
1211Wed Mar 31 10:48:29 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1212
1213	* Makefile.in (hash.h): Generate using gperf language 'C', not
1214	'KR-C', so gperf uses the `const' keyword on strings.
1215
1216	* gxx.gperf (resword): Const-ify a char*.
1217
12181999-03-30  Jason Merrill  <jason@yorick.cygnus.com>
1219
1220	* cp-tree.h (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST,
1221	CLASSTYPE_BASELINK_VEC, CLASSTYPE_N_SUPERCLASSES,
1222	CLASSTYPE_N_BASECLASSES, CLASSTYPE_MAX_DEPTH,
1223	CLASSTYPE_BASE_INIT_LIST, CLASSTYPE_AS_LIST, CLASSTYPE_ID_AS_LIST,
1224	CLASSTYPE_BINFO_AS_LIST): Remove cruft.
1225	* class.c, lex.c, parse.y, ptree.c, search.c, semantics.c,
1226	tree.c: Adjust.
1227
12281999-03-29  Jason Merrill  <jason@yorick.cygnus.com>
1229
1230	* decl2.c (lang_decode_option): Remove -Wsign-promo from -Wall.
1231
12321999-03-28  Jason Merrill  <jason@yorick.cygnus.com>
1233
1234	* pt.c (fn_type_unification): Ignore 'this' parm from conversion ops.
1235
12361999-03-27  Mark Mitchell  <mark@codesourcery.com>
1237
1238	* cp-tree.h (add_friend): Declare.
1239	(add_friends): Likewise.
1240	* friend.c (add_friend): Make it global.  Don't add to
1241	DECL_BEFRIENDING_CLASSES if the befriending class is a template.
1242	(add_friends): Make it global.
1243	(make_friend_class): Don't add to DECL_BEFRIENDING_CLASSES if the
1244	befriending class is a template.
1245	* parse.y (component_decl_1): Fix typo in comment.
1246	* parse.c: Regenerated.
1247	* pt.c (instantiate_class_template): Use add_friend and
1248	add_friends rather that duplicating some of their functionality
1249	here.
1250
12511999-03-27  Jason Merrill  <jason@yorick.cygnus.com>
1252
1253	* call.c (build_field_call): Unify 'this' and non-'this' cases.
1254
1255	* typeck.c (build_indirect_ref): Check for 'this' sooner.
1256
1257Fri Mar 26 10:20:34 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1258
1259	* call.c (op_error): Const-ify a char*.
1260	(add_candidate, source_type, add_warning): Add static prototype.
1261	(print_z_candidates): Const-ify a char*.
1262
1263	* class.c (resolve_address_of_overloaded_function,
1264	fixed_type_or_null, build_vtable_entry_ref): Add static prototype.
1265	(get_vtable_name, finish_struct_1): Const-ify a char*.
1266
1267	* cvt.c (convert_to_reference): Likewise.
1268
1269	* decl.c (redeclaration_error_message, record_builtin_type,
1270	record_unknown_type, member_function_or_else, bad_specifiers):
1271	Likewise.
1272	(find_binding, select_decl, unqualified_namespace_lookup,
1273	lookup_flags, qualify_lookup, record_builtin_java_type, tag_name):
1274	Add static prototype.
1275	(warn_extern_redeclared_static, duplicate_decls, pushdecl,
1276	implicitly_declare, record_builtin_java_type, define_function,
1277	grok_op_properties, tag_name): Const-ify a char*.
1278
1279	* cp-tree.h (FORMAT_VBASE_NAME): Allow parameter `BUF' to be const.
1280	(define_function, finish_builtin_type): Const-ify a char*.
1281	(cp_error, cp_error_at, cp_warning, cp_warning_at, cp_pedwarn,
1282	cp_pedwarn_at, cp_compiler_error, cp_sprintf): Add prototype args.
1283	(file_name_nondirectory): Const-ify a char*.
1284	(init_filename_times): Don't prototype.
1285	(compiler_error): Prototype.
1286	(yyerror, init_repo): Const-ify a char*.
1287	(build_srcloc): Don't prototype.
1288	(build_x_indirect_ref, build_indirect_ref, build_component_addr):
1289	Const-ify a char*.
1290	(warn_for_assignment): Don't prototype.
1291	(convert_for_initialization, readonly_error, check_for_new_type,
1292	GNU_xref_begin, GNU_xref_file, GNU_xref_ref, GNU_xref_call):
1293	Const-ify a char*.
1294
1295	* decl2.c (acceptable_java_type, output_vtable_inherit,
1296	setup_initp, start_objects, finish_objects, do_dtors, do_ctors,
1297	merge_functions, decl_namespace, validate_nonmember_using_decl,
1298	do_nonmember_using_decl): Add static prototype.
1299	(lang_f_options): Const-ify a char*.
1300	(finish_builtin_type): Likewise.
1301	(add_function, arg_assoc_namespace, arg_assoc_class): Add static
1302	prototype.
1303
1304	* errfn.c: Include cp-tree.h.
1305	(cp_thing): Add static prototype.
1306	(compiler_error): Don't protoptype.
1307	(cp_compiler_error): Cast `compiler_error' to `errorfn' before
1308	passing it to `cp_thing'.
1309
1310	* error.c (interesting_scope_p): Add static prototype.
1311
1312	* except.c (build_eh_type_type, build_eh_type_type_ref): Const-ify
1313	a char*.
1314
1315	* init.c (compiler_error): Don't prototype.
1316	(member_init_ok_or_else): Const-ify a char*.
1317	(build_java_class_ref): Add static prototype.
1318
1319	* lex.c (compiler_error): Don't prototype.
1320	(get_time_identifier, interface_strcmp, extend_token_buffer,
1321	handle_cp_pragma): Const-ify a char*.
1322	(is_global, init_filename_times): Add static prototype.
1323	(file_name_nondirectory, cplus_tree_code_name): Const-ify a char*.
1324	(compiler_error): Change from fixed args to variable args.
1325	(yyerror): Const-ify a char*.
1326
1327	* parse.y (cond_stmt_keyword): Const-ify a char*.
1328	(parse_decl): Add static prototype.
1329
1330	* pt.c (template_args_equal, print_template_context): Likewise.
1331	(print_candidates, check_default_tmpl_args): Const-ify a char*.
1332	(instantiate_class_template): Likewise.
1333
1334	* repo.c (get_base_filename, open_repo_file, init_repo): Likewise.
1335
1336	* rtti.c (call_void_fn, expand_generic_desc, expand_si_desc,
1337	expand_class_desc, expand_ptr_desc, expand_attr_desc): Likewise.
1338
1339	* search.c (lookup_field_info, lookup_member): Likewise.
1340	(lookup_member): Cast the first argument of `bzero' to a PTR.
1341
1342	* sig.c (compiler_error): Don't prototype.
1343	(build_signature_pointer_or_reference_nam): Const-ify a char*.
1344	(get_sigtable_name, build_member_function_pointer): Likewise.
1345
1346	* tree.c (compiler_error): Don't prototype.
1347	(no_linkage_helper, build_srcloc): Add static prototype.
1348	(build_vbase_pointer_fields): Const-ify a char*.
1349	(__eprintf): Don't unnecessarily handle `const' when !__STDC__.
1350
1351	* typeck.c (compiler_error): Don't prototype.
1352	(convert_for_assignment): Const-ify a char*.
1353	(comp_cv_target_types): Add static prototype.
1354	(build_x_indirect_ref, build_indirect_ref, convert_arguments,
1355	build_component_addr, build_unary_op, convert_for_initialization):
1356	Const-ify a char*.
1357
1358	* typeck2.c (ack): Add static prototype and change from fixed args
1359	to variable args.
1360	(readonly_error, check_for_new_type): Const-ify a char*.
1361
1362	* xref.c (_XREF_FILE, find_file, filename, fctname, declname,
1363	fixname, open_xref_file, classname, GNU_xref_begin): Likewise.
1364	(GNU_xref_file): Likewise.  Also use `xmalloc' instead of `malloc'.
1365	(GNU_xref_end_scope, GNU_xref_ref, GNU_xref_decl, GNU_xref_call,
1366	gen_assign, GNU_xref_member): Const-ify a char*.
1367
13681999-03-25  Martin von L�wis  <loewis@informatik.hu-berlin.de>
1369
1370	* gxxint.texi: Remove old discussion on copying virtual bases.
1371
13721999-03-25  Zack Weinberg  <zack@rabi.columbia.edu>
1373
1374	* Make-lang.in: Remove all references to g++.o/g++.c.
1375	Link g++ from gcc.o.
1376
13771999-03-25  Jason Merrill  <jason@yorick.cygnus.com>
1378
1379	* decl2.c (comdat_linkage): Treat vtables like functions.
1380
13811999-03-25  Mark Mitchell  <mark@codesourcery.com>
1382
1383	* pt.c (tsubst_decl): tsubst into DECL_BEFRIENDING_CLASSES.
1384
13851999-03-25  Nathan Sidwell  <nathan@acm.org>
1386
1387	* decl.c (init_decl_processing): Add `signed' type as a synonym
1388	for `int'.
1389
13901999-03-25  Jason Merrill  <jason@yorick.cygnus.com>
1391
1392	* typeck.c (common_type): Handle cv-qual unification for pointers
1393	to members.
1394
1395	* decl.c (unqualified_namespace_lookup): Return error_mark_node
1396	on error.
1397	(lookup_name_real): Set LOOKUP_COMPLAIN when *not* parsing.
1398	* lex.c (do_identifier): If we got error_mark_node, call
1399	lookup_name again.
1400
14011999-03-24  Martin von L�wis  <loewis@informatik.hu-berlin.de>
1402
1403	* class.c (finish_struct_1): Always reset TYPE_FIELDS for empty
1404	classes.
1405
14061999-03-24  Jason Merrill  <jason@yorick.cygnus.com>
1407
1408	* decl.c (lookup_name_real): Do nested field lookup regardless of
1409	TYPE_BEING_DEFINED.
1410
14111999-03-24  Mark Mitchell  <mark@codesourcery.com>
1412
1413	* cp-tree.h (lang_type): Remove has_assignment and
1414	has_real_assignment.  Add befriending_classes.
1415	(TYPE_HAS_ASSIGNMENT): Remove.
1416	(TYPE_HAS_REAL_ASSIGNMENT): Likewise.
1417	(CLASSTYPE_BEFRIENDING_CLASSES): New macro.
1418	(lang_decl): Document.
1419	(DECL_BEFRIENDING_CLASSES): New macro.
1420	(FRIEND_NAME): Move declaration to more obvious location.
1421	(FRIEND_DECLS): Likewise.
1422	* class.c (finish_struct_1): Don't use TYPE_HAS_REAL_ASSIGNMENT.
1423	* decl.c (duplicate_decls): Copy DECL_BEFRIENDING_CLASSES.
1424	(fixup_anonymous_union): Don't use TYPE_HAS_ASSIGNMENT.
1425	(grok_op_properties): Likewise.
1426	* friend.c (is_friend): Use FRIEND_NAME and FRIEND_DECLS.
1427	(add_friend): Likewise.  Don't do weird things with assignment
1428	operators.  Update DECL_BEFRIENDING_CLASSES.
1429	(add_friends): Don't do weird things with assignment operators.
1430	(make_friend_class): Likewise.  Update
1431	CLASSTYPE_BEFRIENDING_CLASSES.
1432	* pt.c (instantiate_class_template): Don't set
1433	TYPE_HAS_ASSIGNMENT.
1434	(tsubst_copy): Substitute the TREE_TYPE for more unary
1435	expressions.
1436	* ptree.c (print_lang_type): Don't look at TYPE_HAS_ASSIGNMENT.
1437	* search.c (protected_accessible_p): New function.
1438	(friend_accessible_p): Likewise.
1439	(accessible_p): Use them.
1440
14411999-03-23  Mark Mitchell  <mark@codesourcery.com>
1442
1443	* pt.c (convert_nontype_argument): Don't create things that aren't
1444	PTRMEM_CSTs when applying a qualification conversion to a
1445	PTRMEM_CST.
1446
14471999-03-23  Mark Mitchell  <mark@codesourcery.com>
1448
1449	* Makefile.in (OBJS): Don't mention hash.o.
1450	(OBJDEPS): Likewise.
1451
14521999-03-23  Jason Merrill  <jason@yorick.cygnus.com>
1453
1454	* decl2.c (finish_file): Set at_eof to 2 after expanding ctors.
1455	* decl.c (expand_static_init): Make sure we don't add any after
1456	then.
1457
1458	* decl.c (cp_finish_decl): Move intelligence about handling
1459	DECL_COMDAT for variables from here...
1460	* decl2.c (comdat_linkage): ...to here.
1461	(maybe_make_one_only): Tweak.
1462	(import_export_decl): Call comdat_linkage for variables, too.
1463	(finish_file): Handle template statics properly.
1464
14651999-03-22  Mark Mitchell  <mark@codesourcery.com>
1466
1467	* cp-tree.h (TYPE_PTRMEMFUNC_P): Use TYPE_PTRMEMFUNC_FLAG.
1468	Document internals of pointer-to-member-functions.
1469	(DELTA2_FROM_PTRMEMFUNC): Make it call delta2_from_ptrmemfunc.
1470	(PFN_FROM_PTRMEMFUNC): Likewise.
1471	(build_type_conversion): Remove unused parameter.
1472	(build_ptrmemfunc1): Declare.
1473	(expand_ptrmemfunc_cst): New function.
1474	(delta2_from_ptrmemfunc): Likewise.
1475	(pfn_from_ptrmemfunc): Likewise.
1476	* cvt.c (cp_convert_to_pointer): Remove unused parameter to
1477	build_type_conversion.  Use TYPE_PTRMEM_P for readability.
1478	(convert_to_reference): Remove unused parameter to
1479	build_type_conversion.
1480	(ocp_convert): Likewise.
1481	(build_user_type_conversion): Likewise.
1482	* error.c (dump_expr): Handle NULL pointer-to-member functions.
1483	* expr.c (cplus_expand_expr): Handle PTRMEM_CSTs for functions.
1484	* method.c (build_overload_value): Don't go splitting CONSTRUCTORs
1485	open when handling pointer-to-member functions.
1486	* pt.c (convert_nontype_argument): Clean up error messages.  Be
1487	more stringent with pointers-to-members.
1488	* typeck.c (build_ptrmemfunc1): Don't declare.  Make it global.
1489	(build_unary_op): Tidy ever-so-slightly.
1490	(build_conditional_expr): Remove extra parameter to
1491	build_type_conversion.
1492	(build_ptrmemfunc): Build PTRMEM_CSTs if we know what function
1493	we're using.
1494	(expand_ptrmemfunc_cst): Define.
1495	(delta2_from_ptrmemfunc): Likewise.
1496	(pfn_from_ptrmemfunc): Likewise.
1497
14981999-03-19  Mark Mitchell  <mark@codesourcery.com>
1499
1500	* init.c (build_member_call): Handle template-id expressions
1501	correctly.
1502	* typeck.c (build_x_function_call): Likewise.
1503
15041999-03-19  Chip Salzenberg  <chip@perlsupport.com>
1505
1506	* friend.c (make_friend_class): Avoid core dump when
1507	not-yet-defined friend type lacks TYPE_LANG_SPECIFIC().
1508
15091999-03-18  Jason Merrill  <jason@yorick.cygnus.com>
1510
1511	* decl.c (start_function): Suppress normal linkage heuristics
1512	for #pragma interface under MULTIPLE_SYMBOL_SPACES.
1513
15141999-03-19  Alexandre Oliva  <oliva@dcc.unicamp.br>
1515
1516	* Make-lang.in: ($(INTL_TARGETS)): Depend on cp/parse.c.
1517	($(srcdir)/cp/parse.c): Moved from ../Makefile.in.
1518
15191999-03-17  Martin von L�wis  <loewis@informatik.hu-berlin.de>
1520
1521	* parse.y (named_complex_class_head_sans_basetype):
1522	Do not push a scope for error_mark_node.
1523	(maybe_base_class_list): Likewise.
1524
1525	* decl.c (start_decl): Check for error_mark_node as a type.
1526	Detected by g++.brendan/array-refs.C.
1527	(start_decl_1): Likewise.  Detected by g++.bugs/900322_01.C.
1528	(maybe_build_cleanup_1): Likewise.  Detected by
1529	g++.jason/incomplete1.C.
1530
1531	* tree.c (build_dummy_object): Use void_zero_node instead of the
1532	error_mark_node.
1533	(is_dummy_object): Check for such a node.
1534	Detected by g++.bob/inherit1.C
1535
15361999-03-16  Jason Merrill  <jason@yorick.cygnus.com>
1537
1538	* method.c (old_backref_index): Split out...
1539	(flush_repeats): From here.  Rename back from try_old_backref.
1540	(build_mangled_name): Put back some old-style repeat handling.
1541
1542Mon Mar 15 21:57:16 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1543
1544	* lex.c: Don't include setjmp.h.
1545	(parse_float): New static function.
1546	(pf_args): New struct.
1547	(real_yylex): Use them in call to `do_float_handler'.
1548
15491999-03-15  Mark Mitchell  <mark@markmitchell.com>
1550
1551	* decl.c (xref_basetypes): Set CLASSTYPE_VBASECLASSES here.
1552	* tree.c (layout_basetypes): Not here.
1553	* search.c (dfs_search): Remove; no longer used.
1554
15551999-03-12  Mark Mitchell  <mark@markmitchell.com>
1556
1557	* decl2.c (validate_nonmember_using_decl): Issue sensible
1558	error-messages on bogus qualifiers.
1559
15601999-03-14  Jason Merrill  <jason@yorick.cygnus.com>
1561
1562	* call.c (add_function_candidate): Fix uninitialized variable.
1563
1564	* Makefile.in (search.o): Add dependency on varray.h.
1565
15661999-03-13  Jason Merrill  <jason@yorick.cygnus.com>
1567
1568	* decl.c (duplicate_decls): Use same_type_p.
1569	* method.c (try_old_backref): Renamed from flush_repeats.  Use
1570	same_type_p.  Don't try to handle repeats.  Return success.
1571	(is_back_referenceable_type): Return 0 if TYPE_FOR_JAVA.  Support
1572	calls from old-style code, too.
1573	(check_ktype): Use same_type_p.
1574	(check_btype): Use same_type_p.  Don't pull out TYPE_MAIN_VARIANT.
1575	(build_qualified_name): Simplify logic.
1576	(process_overload_item): Strip typedefs and quals at the top.
1577	(build_mangled_name_for_type_with_Gcode): Remove call to
1578	type_canonical_variant.
1579	(build_mangled_name): Likewise.  Remove support for old-style
1580	repeats, which have been disabled since 2.7.2.  Don't mess with
1581	TREE_USED.
1582	(build_decl_overload_real): Don't mess with TREE_USED.
1583
15841999-03-13  Nathan Sidwell  <nathan@acm.org>
1585
1586	* error.c (cp_printers): Add 'F' escape character.
1587	(dump_type_real): Remove TREE_LIST (fnargs) printing.
1588	Functionality moved to dump_parameters.
1589	(dump_type_suffix): Use dump_parameters and dump_exception_spec.
1590	(dump_function_decl): Extend meaning of V parameter.  Use
1591	dump_parameters and dump_exception_spec.
1592	(dump_parameters): New static function.
1593	(dump_exception_spec): New static function.
1594	(fndecl_as_string): Change argument semantics.  Use
1595	dump_function_decl directly.
1596
1597	* sig.c (build_signature_table_constructor): Use cp_error.
1598
15991999-03-13  Martin von L�wis  <loewis@informatik.hu-berlin.de>
1600
1601	* semantics.c (finish_switch_cond): Handle error cases gracefully.
1602	Detected by g++.law/enum5.C.
1603
1604	* typeck.c (build_modify_expr): Check for errors after resolving
1605	offsets.  Detected by g++.brendan/static1.C.
1606
1607	* decl.c (complete_array_type): Ignore initial_value if it is an
1608	error.  Detected by g++.benjamin/17930.C.
1609
1610	* typeck2.c (process_init_constructor): Return error if one argument
1611	is in error.  Detected by g++.benjamin/13478.C.
1612
16131999-03-12  Martin von L�wis  <loewis@informatik.hu-berlin.de>
1614
1615	* decl.c (select_decl): Allow class templates when we need types.
1616	* decl2.c (ambiguous_decl): Likewise.
1617
16181999-03-12  Mark Mitchell  <mark@markmitchell.com>
1619
1620	* lex.c (do_identifier): Correct call to enforce_access.
1621	* search.c (accessible_p): Tweak comment.
1622
16231999-03-10  Mark Mitchell  <mark@markmitchell.com>
1624
1625	* semantics.c (begin_class_definition): Call build_self_reference.
1626	(finish_member_declaration): Set DECL_CONTEXT for TYPE_DECLs.
1627
1628	* search.c (assert_canonical_unmarked): Fix typo in prototype.
1629
1630	* search.c (dfs_canonical_queue): New function.
1631	(dfs_assert_unmarked_p): Likewise.
1632	(assert_canonical_unmarked): Likewise.
1633	(access_in_type): Use it.
1634	(accessible_p): Likewise.  Walk the whole tree when umarking.
1635
1636	* sig.c (build_signature_table_constructor): Use accessible_p
1637	instead of compute_access.
1638
16391999-03-09  Jason Merrill  <jason@yorick.cygnus.com>
1640
1641	* call.c (add_builtin_candidates): Handle overloaded conversion ops.
1642
16431999-03-09  Mark Mitchell  <mark@markmitchell.com>
1644
1645	* cp-tree.h (flag_access_control): Declare.
1646	(TREE_VIA_PPUBLIC): Document.
1647	(DECL_NONSTATIC_MEMBER_P): New macro.
1648	(enforce_access): Return an indication of whether or not access
1649	was permitted.
1650	(build_self_reference): Change prototype.
1651	(compute_access): Replace with ...
1652	(accessible_p): New function.
1653	(dfs_walk): Change prototype.
1654	(dfs_unmark): Likewise.
1655	(markedp): Likewise.
1656	* call.c (enforce_access): Use accessible_p.
1657	* class.c (build_self_reference): Insert the declaration into the
1658	list of members for this type, and make it public.
1659	* decl.c (xref_basetypes): Avoid ill-timed recursion.
1660	* init.c (build_offset_ref): Use lookup_member, not three separate
1661	name-lookups.  Call enforce_access rather than checking for
1662	illegal accesses here.
1663	(resolve_offset_ref): Likewise.
1664	* lex.c (do_identifier): Likewise.
1665	* method.c (hack_identifier): Likewise.
1666	* parse.y (self_reference): Remove.
1667	(opt_component_decl_list): Don't use it.
1668	* parse.c: Regenerated.
1669	* pt.c (print_candidates): Generalize to handle lists of
1670	overloaded functions.
1671	(instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's
1672	not set.
1673	(get_template_base): Use new calling convention for dfs_walk.
1674	* search.c: Include varray.h.  Add prototypes.
1675	(dfs_walk): Accept a data pointer to pass to the work functions.
1676	All callers changed.  All work functions changed.
1677	(breadth_first_search): Rename to bfs_walk, and make consistent
1678	with dfs_walk.
1679	(dfs_walk_real): New function.
1680	(canonical_binfo): New function.
1681	(context_for_name_lookup): Likewise.
1682	(shared_marked_p): Likewise.
1683	(shared_unmarked_p): Likewise.
1684	(lokup_field_queue_p): Likewise.
1685	(lookup_field_r): Generalize to handle both functions and fields.
1686	(lookup_field): Just call lookup_member.
1687	(lookup_fnfields): Likewise.
1688	(lookup_member): Move body of lookup_field here and generalize.
1689	(dfs_accessible_queue_p): Likewise.
1690	(dfs_accessible_p): Likewise.
1691	(dfs_access_in_type): Likewise.
1692	(access_in_type): Likewise.
1693	(compute_access): Remove, and replace with ...
1694	(accessible_p): New function.
1695	(vbase_types): Remove.
1696	(vbase_decl_ptr_intermediate): Likewise.
1697	(vbase_decl_ptr): Likewise.
1698	(vbase_init_result): Likewise.
1699	(closed_envelopes): Likewise.
1700	(bvtable): Likewise.
1701
17021999-03-09  Jason Merrill  <jason@yorick.cygnus.com>
1703
1704	* call.c (add_function_candidate): Check for proper number of args
1705	before checking the validity of those args.
1706
17071999-03-06  Jason Merrill  <jason@yorick.cygnus.com>
1708
1709	* cp-tree.h (struct lang_type): Add anon_union field.
1710	(ANON_UNION_TYPE_P): Use it instead of examining type.
1711	(SET_ANON_UNION_TYPE_P): New macro.
1712	* decl.c (check_tag_decl): Use it.
1713
1714	* search.c (compute_access): Handle non-type contexts earlier, and
1715	handle NULL_TREE.
1716
1717	* tree.c (build_exception_variant): Use copy_to_permanent.
1718
1719	* decl2.c (setup_initp): Give statics with no priority the default
1720	priority here.
1721	(do_dtors, do_ctors, finish_file): Remove special handling of
1722	non-prioritized statics.
1723
17241999-03-05  Mark Mitchell  <mark@markmitchell.com>
1725
1726	* cp-tree.h (ANON_UNION_TYPE_P): Robustify.
1727	* decl.c (make_typename_type): Don't issue an error if an
1728	immediate lookup fails; it migt be resolved later.
1729	* friend.c (is_friend): Add comment.
1730	* search.c (breadth_first_search): Add POSTFN and DATA
1731	parameters.  Tidy.  All callers changed.
1732	(lookup_field_queue_p): New function.
1733	(lookup_field_r): Likewise.
1734	(lookup_field_post): Likewise.
1735	(lookup_field): Use them, via breadth_first_search, instead of
1736	duplicating logic.
1737	(compute_access): Robustify.
1738	(lookup_fnfield_info): New structure.
1739
17401999-03-05  Jason Merrill  <jason@yorick.cygnus.com>
1741
1742	* pt.c (tsubst, case ARRAY_REF): Use tsubst_expr again.
1743
17441999-03-03  Jason Merrill  <jason@yorick.cygnus.com>
1745
1746	* class.c, decl2.c, method.c, pt.c: Add 'static' to make SunOS 4
1747	cc happy.
1748
1749	* decl2.c (import_export_class): Also return if
1750	CLASSTYPE_INTERFACE_ONLY is set.
1751
17521999-03-03  Martin von L�wis  <loewis@informatik.hu-berlin.de>
1753
1754	* decl.c (push_overloaded_decl): Only overwrite the old binding if
1755	there was one.
1756	* decl2.c (do_local_using_decl): Fix loop termination.
1757
17581999-03-02  Mark Mitchell  <mark@markmitchell.com>
1759
1760	* cp-tree.h (determine_specialization): Don't declare.
1761	* pt.c (determine_specialization): Make it static.  Eliminate
1762	complain parameter.  Note that decl is always non-NULL now, and
1763	simplify accordingly.
1764
1765	* decl.c (maybe_push_to_top_level): Always call
1766	push_cp_function_context.
1767	(pop_from_top_level): Always call pop_cp_function_context.
1768
17691999-02-26  Nathan Sidwell  <nathan@acm.org>
1770
1771	* typeck.c (complete_type_or_else): Add VALUE arg, for helpful
1772	diagnostics.
1773	* cp-tree.h (complete_type_or_else): Added VALUE parameter.
1774	* init.c (build_new_1): Extra arg to complete_type_or_else.
1775	(build_delete): Likewise.
1776	* typeck.c (require_complete_type): Likewise.
1777	(pointer_int_sum): Likewise.
1778	(pointer_diff): Likewise.
1779	(build_component_ref): Likewise.
1780
1781	* typeck2.c (incomplete_type_error): Always use cp_error.
1782	Show declaration of undefined type, if appropriate.
1783	Deal with UNKNOWN_TYPE nodes.
1784
1785	* typeck.c (require_complete_type): Use TYPE_SIZE as
1786	size_zero_node to mean incomplete type.
1787	(require_complete_type_in_void): New function.
1788	(build_compound_expr): Call complete_type_in_void for LHS.
1789	(build_c_cast): Call complete_type_in_void for void cast.
1790	* cvt.c (ocp_convert): Call complete_type_in_void for void cast.
1791	* decl.c (cplus_expand_expr_stmt): Void expression checks moved to
1792	require_complete_type_in_void.  Call it.
1793	* cp-tree.h (require_complete_type_in_void): Prototype new function.
1794
1795	* typeck.c (convert_arguments): Use alternative format for
1796	function decls.  Don't require_complete_type here.  Simplify
1797	diagnostic printing.
1798	(convert_for_initialization): Don't require_complete_type on RHS yet.
1799	* call.c (convert_arg_to_ellipsis): Call require_complete_type.
1800
1801	* call.c (build_over_call): Cope with qualified void return type.
1802	* semantics.c (finish_call_expr): Likewise.
1803	* typeck.c (build_function_call_real): Likewise.
1804	(c_expand_return): Likewise.
1805	* decl2.c (reparse_absdcl_as_expr): Cope with qualified void type.
1806
1807	* call.c (print_z_candidates): Use alternate print format, to be
1808	consistent with (pt.c) print_candidates.
1809	* method.c (hack_identifier): List candidate members.
1810	* search.c (lookup_field): Build ambiguous list, and show it, if
1811	ambiguous.
1812
18131999-02-26  Mark Mitchell  <mark@markmitchell.com>
1814
1815	* typeck.c (decay_conversion): Don't confuse constant array
1816	variables with their initializers.
1817
1818	* decl.c (duplicate_decls): Copy DECL_TEMPLATE_INSTANTIATED when
1819	merging decls.
1820	* pt.c (regenerate_decl_from_template): Tweak for clarity.
1821	(instantiate_decl): Mark a decl instantiated before regenerating
1822	it to avoid recursion.
1823	* tree.c (mapcar): Don't call decl_constant_value unless we know
1824	something is TREE_READONLY_DECL_P.
1825
1826	* class.c (check_for_override): Don't stop checking when we find
1827	the first overridden function.  Delete #if 0'd code.
1828	* search.c (get_matching_virtual): Likewise.
1829
18301999-02-25  Richard Henderson  <rth@cygnus.com>
1831
1832	* lang-specs.h: Define __FAST_MATH__ when appropriate.
1833
18341999-02-24  Mike Stump  <mrs@wrs.com>
1835
1836	* typeck.c (convert_for_assignment): Allow boolean integral constant
1837	expressions to convert to null pointer.
1838
18391999-02-24  Martin von Loewis  <loewis@informatik.hu-berlin.de>
1840
1841	* decl.c (lookup_namespace_name): Resolve namespace aliases.
1842
1843	* class.c (push_nested_class): Allow namespaces.
1844
1845	* decl2.c (set_decl_namespace): Add friendp parameter.
1846	* decl.c (grokfndecl): Pass it.
1847	(grokvardecl): Likewise.
1848	* cp-tree.h: Change declaration.
1849
18501999-02-24  Jason Merrill  <jason@yorick.cygnus.com>
1851
1852	* pt.c (tsubst): Allow an array of explicit size zero.
1853
18541999-02-23  Jason Merrill  <jason@yorick.cygnus.com>
1855
1856	* errfn.c: Change varargs code to look like toplev.c.
1857
1858	* method.c (process_modifiers): Don't prepend 'U' for char or
1859	wchar_t.
1860
18611999-02-20  Craig Burley  <craig@jcb-sc.com>
1862
1863	* Make-lang.in (cplib2.ready): Don't consider updating
1864	cplib2 stuff if the current directory isn't writable, as
1865	it won't work (such as during a `make install').
1866
1867Sun Feb 21 20:38:00 1999  H.J. Lu  (hjl@gnu.org)
1868
1869	* decl2.c (start_objects): Make file scope constructors and
1870	destructors local to the file if ASM_OUTPUT_CONSTRUCTOR and
1871	ASM_OUTPUT_DESTRUCTOR are defined.
1872
18731999-02-19  Mark Mitchell  <mark@markmitchell.com>
1874
1875	* cp-tree.h (CLASSTYPE_METHOD_VEC): Adjust comment.
1876	(fn_type_unification): Adjust prototype.
1877	(lookup_fnfields_1): Declare.
1878	* call.c (add_template_candidate_real): Adjust call to
1879	fn_type_unification.
1880	* class.c (add_method): Don't allow duplicate declarations of
1881	constructors or destructors.
1882	(resolve_address_of_overloaded_function): Remove unused variable.
1883	Adjust call to fn_type_unification.
1884	* decl.c (grokfndecl): Be more robust in the face of illegal
1885	specializations.
1886	* decl2.c (check_classfn): Remove hokey handling of member
1887	templates.
1888	* pt.c (determine_specialization): Improve comments.  Adjust to
1889	handle template argument deduction as per the standard.
1890	(check_explicit_specialization): Fix comment spacing.  Handle
1891	type-conversion operators correctly.  Improve error-recovery.
1892	(fn_type_unification): Remove EXTRA_FN_ARG parameter.
1893	(get_bindings_real): Simplify handling of static members.
1894	* search.c (lookup_fnfields_1): Make it have external linkage.
1895	* typeck.c (compparms): Fix comment.
1896	(build_unary_op): Don't try to figure out which template
1897	specialization is being referred to when when the address-of
1898	operator is used with a template function.
1899
1900Thu Feb 18 23:40:01 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
1901
1902	* cp-tree.h (lvalue_or_else): Qualify a char* with the `const'
1903	keyword to match an analogous change at the top level.
1904
1905	* tree.c (lvalue_or_else): Likewise.
1906
19071999-02-17  Mark Mitchell  <mark@markmitchell.com>
1908
1909	* decl.c (xref_basetypes): Comment.
1910	* pt.c (instantiate_class_template): Use xref_basetypes.
1911
19121999-02-16  Mark Mitchell  <mark@markmitchell.com>
1913
1914	* cp-tree.h (tsubst): Change prototype.
1915	(tsubst_expr): Likewise.
1916	(tsubst_copy): Likewise.
1917	(type_unification): Remove prototype.
1918	* call.c (convert_default_arg): Adjust call to tsubst_expr.
1919	* class.c (resolve_address_of_overloaded_function): Just use
1920	fn_type_unification.
1921	* decl.c (grokdeclarator): Adjust call to tsubst.
1922	* method.c (build_template_parm_names): Likewise.
1923	* pt.c (GTB_VIA_VIRTUAL): New macro.
1924	(GTB_IGNORE_TYPE): Likewise.
1925	(resolve_overloaded_unification): Add `complain' parameter.
1926	(try_one_overload): Likewise.
1927	(tsubst_template_arg_vector): Likewise.
1928	(tsubst_template_parms): Likewise.
1929	(tsubst_aggr_type): Likewise.
1930	(tsubst_arg_types): Likewise.
1931	(tsubst_call_declarator_parms): Likewise.
1932	(unify): Remove explicit_mask.
1933	(type_unification_real): Likewise.
1934	(get_template_base_recursive): Likewise.
1935	(coerce_template_template_parms): Provide prototype.
1936	(tsubst_function_type): Likewise.
1937	(try_class_unification): New function.
1938	All callers changed to use new complain parameter.
1939	(get_template_base): Use try_class_unification.
1940	(unify): Adjust handling of classes derived from template types.
1941	(fn_type_unification): Substitute explicit arguments before
1942	unification.
1943
19441999-02-16  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
1945
1946	* decl.c (pushdecl): Remove dead code.
1947
19481999-02-16  Jason Merrill  <jason@yorick.cygnus.com>
1949
1950	* decl2.c (finish_objects): Fix code I missed in previous change.
1951
19521999-02-13  Jason Merrill  <jason@yorick.cygnus.com>
1953
1954	* decl.c (grokfndecl): Return NULL_TREE instead of error_mark_node.
1955	(grokdeclarator): Don't expect error_mark_node from grokfndecl.
1956
1957	* pt.c (maybe_process_partial_specialization): Complain about
1958	'template <>' on non-specialization.
1959
19601999-02-10  Jason Merrill  <jason@yorick.cygnus.com>
1961
1962	* decl.c (grokdeclarator): Catch wierd declarators.
1963	* decl2.c (finish_file): Don't abort because of namespace parsing
1964	failure.
1965	(check_decl_namespace): Remove.
1966
19671999-02-09  Mark Mitchell  <mark@markmitchell.com>
1968
1969	* cp-tree.h (get_template_base): Don't declare.
1970	(dfs_walk): Declare.
1971	(dfs_unmark): Likewise.
1972	(markedp): Likewise.
1973	* pt.c (unify): Remove duplicate declaration.  Pass tparms and
1974	targs to get_template_base.
1975	(get_template_base_recursive): Move here from search.c.  Check to
1976	see that the base found can be instantiated to form the desired
1977	type.
1978	(get_template_base): Likewise.
1979	(get_class_bindings): Simplify.
1980	* search.c (get_template_base_recursive): Move to pt.c.
1981	(get_template_base): Likewise.
1982	(markedp): Make it global.
1983	(dfs_walk): Likewise.
1984	(dfs_unmark): Likewise.
1985
19861999-02-07  Jason Merrill  <jason@yorick.cygnus.com>
1987
1988	* pt.c (maybe_process_partial_specialization): Complain about
1989	specialization in wrong namespace.
1990	* tree.c (decl_namespace_context): New fn.
1991
19921999-02-06  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
1993
1994	* decl2.c (arg_assoc_type): Handle TEMPLATE_TEMPLATE_PARM.
1995	* pt.c (coerce_template_template_parms): Handle nested
1996	template template parameters.
1997
1998Sat Feb  6 18:08:40 1999  Jeffrey A Law  (law@cygnus.com)
1999
2000	* typeck2.c: Update email addresses.
2001
20021999-02-04  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
2003
2004	* pt.c (unify): Call coerce_template_parms with the COMPLAIN flag
2005	turned off.
2006
20071999-02-04  Jason Merrill  <jason@yorick.cygnus.com>
2008
2009	* lex.c (retrofit_lang_decl): Split out...
2010	(build_lang_decl): From here.
2011	* decl.c (pushdecl): Call it for functions generated by the middle
2012	end that don't have DECL_LANG_SPECIFIC.
2013	* cp-tree.h: Declare it.
2014
2015	* decl2.c: Remove flag_init_priority.  Always enable initp stuff.
2016	(start_objects, finish_objects): Only use special
2017	init_priority code if the user specified a priority.
2018	(do_ctors, do_dtors): Use DEFAULT_INIT_PRIORITY for the non-initp
2019	objects.
2020
2021Wed Feb  3 22:50:17 1999  Marc Espie  <Marc.Espie@liafa.jussieu.fr>
2022
2023	* Make-lang.in (GXX_OBJS): Remove choose-temp.o, pexecute.o and
2024	mkstemp.o.  Get them from libiberty now.
2025	(DEMANGLER_PROG): Simlarly, remove getopt.o getopt1.o.
2026
2027Tue Feb  2 22:38:48 1999  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
2028
2029	* decl2.c (lang_decode_option): Use read_integral_parameter.
2030
20311999-02-01  Mark Mitchell  <mark@markmitchell.com>
2032
2033	* pt.c (tsubst, case TYPENAME_TYPE): Check TYPE_BEING_DEFINED
2034	before calling complete_type_or_else.
2035
2036Mon Feb  1 09:49:52 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2037
2038	* input.c (inline): Don't define, its handled by system.h.
2039
2040Sun Jan 31 20:34:29 1999  Zack Weinberg  <zack@rabi.columbia.edu>
2041
2042	* decl2.c: Don't define flag_no_ident here.  Don't process
2043	-f(no-)ident here.
2044	* cp-tree.h: Don't declare flag_no_ident here.
2045	* lang-specs.h: Map -Qn to -fno-ident.
2046
20471999-01-28  Jason Merrill  <jason@yorick.cygnus.com>
2048
2049	* cp-tree.h (struct tree_binding): Replace scope field with a union.
2050	(BINDING_SCOPE): Adjust.
2051	* decl.c (BINDING_LEVEL): Adjust.
2052
20531999-01-26  Jason Merrill  <jason@yorick.cygnus.com>
2054
2055	* pt.c (instantiate_class_template): Set up the DECL_INITIAL of
2056	member constants.
2057
2058	* init.c (expand_member_init): Pull out TYPE_MAIN_VARIANT in
2059	a ctor initializer.
2060
2061	* tree.c (equal_functions): Fix name in prototype.
2062
2063	* decl.c (push_local_binding): Add FLAGS argument.
2064	(pushdecl, push_overloaded_decl): Pass it.
2065	* decl2.c (do_local_using_decl): Likewise.
2066	* cp-tree.h: Adjust prototype.
2067	* decl.c (poplevel): Fix logic.
2068
2069	* decl.c (push_local_binding): Also wrap used decls in a TREE_LIST.
2070	(poplevel): Handle that.  Fix logic for removing TREE_LISTs.
2071	(cat_namespace_levels): Don't loop forever.
2072
20731999-01-25  Richard Henderson  <rth@cygnus.com>
2074
2075	* typeck.c (build_reinterpret_cast): Fix typo in duplicated test.
2076
20771999-01-25  Jason Merrill  <jason@yorick.cygnus.com>
2078
2079	* class.c (resolve_address_of_overloaded_function): Mark the
2080	chosen function used.
2081
2082	* call.c (build_call): Make sure that a function coming in has
2083	been marked used already.
2084	* decl.c (expand_static_init): Call mark_used instead of
2085	assemble_external.
2086	* except.c (call_eh_info, do_pop_exception, expand_end_eh_spec,
2087	alloc_eh_object, expand_throw): Likewise.
2088	* init.c (build_builtin_delete_call): Likewise.
2089	* rtti.c (call_void_fn, get_tinfo_fn, build_dynamic_cast_1,
2090	expand_si_desc, expand_class_desc, expand_ptr_desc, expand_attr_desc,
2091	expand_generic_desc): Likewise.
2092
20931999-01-25  Martin von L�wis  <loewis@informatik.hu-berlin.de>
2094
2095	* tree.c (equal_functions): New function.
2096	(ovl_member): Call it.
2097
20981999-01-24  Jason Merrill  <jason@yorick.cygnus.com>
2099
2100	* cvt.c (cp_convert_to_pointer): Fix conversion of 0 to pmf.
2101
21021999-01-25  Martin von Loewis  <loewis@informatik.hu-berlin.de>
2103
2104	* decl.c (decls_match): Return 1 if old and new are identical.
2105	(push_overloaded_decl): Set OVL_USED when PUSH_USING.
2106
21071999-01-24  Jason Merrill  <jason@yorick.cygnus.com>
2108
2109	* decl.c (start_function): Make member functions one_only on windows.
2110	* decl2.c (import_export_decl): Likewise.
2111
2112	* decl.c (grokdeclarator): Don't complain about implicit int in
2113	a system header.  Change same-name field check to not complain in
2114	a system header instead of within extern "C".
2115
21161999-01-21  Mark Mitchell  <mark@markmitchell.com>
2117
2118	* cp-tree.h (PUSH_GLOBAL): New macro.
2119	(PUSH_LOCAL): Likewise.
2120	(PUSH_USING): Likewise.
2121	(namespace_bindings_p): Declare.
2122	(push_overloaded_decl): Likewise.
2123	* decl.c (push_overloaded_decl): Don't make it static.  Check for
2124	illegal declarations after using declarations here.
2125	(namespace_bindings_p): Likewise.
2126	(duplicate_decls): Don't consider declarations from different
2127	namespaces to be the same.
2128	(pushdecl): Use symbolic PUSH_ constants in calls to
2129	push_overloaded_decl.
2130	(push_overloaded_decl_1): Likewise.
2131	* decl2.c (validate_nonmember_using_decl): Tweak `std' handling.
2132	(do_nonmember_using_decl): Check for illegal using declarations
2133	after ordinary declarations here.
2134	(do_local_using_decl): Call pushdecl to insert declarations.
2135
21361999-01-21  Jason Merrill  <jason@yorick.cygnus.com>
2137
2138	* decl.c (grokdeclarator): Fix lang_c -> lang_name_c typo.
2139
21401999-01-21  Mark Mitchell  <mark@markmitchell.com>
2141
2142	* tree.c (build_cplus_array_type_1): Don't call build_array_type
2143	for types involving template parameters.
2144
2145	* cp-tree.h (PARM_DECL_EXPR): Delete.
2146	(convert_default_arg): Change prototype.
2147	(check_default_argument): Declare.
2148	(search_tree): Likewise.
2149	* call.c (convert_default_arg): Take the function to which the
2150	default argument belongs as a parameter, and do any necessary
2151	instantiation here, instead of ...
2152	(build_over_call): Here.
2153	* decl.c (local_variable_p): New function.
2154	(check_default_argument): Likewise, split out and tidied from ...
2155	(grokparms): Here.
2156	* error.c (dump_expr): Don't set PARM_DECL_EXPR.
2157	* pt.c (tsubst_call_declarator_parms): New function.
2158	(for_each_template_parm): Handle ARRAY_REFs.  Do the obvious thing
2159	with CALL_EXPRs, rather than trying to be clever.
2160	(tsubst): Use tsubst_call_declarator_parms.
2161	* tree.c (search_tree): Don't make it static.
2162	* typeck.c (convert_arguments): Use new interface to
2163	convert_default_arg.
2164
21651999-01-20  Mark Mitchell  <mark@markmitchell.com>
2166
2167	* error.c (dump_function_decl): Don't print the argument types for
2168	a function when the verbosity level is negative.
2169
2170	* call.c (build_over_call): Check format attributes at call-time.
2171
2172	* pt.c (tsubst_copy): Fix comment.
2173	(unify): Don't allow unification with variable-sized arrays.
2174
2175	* semantics.c (finish_stmt_expr): When processing a template make
2176	the BIND_EXPR long-lived.
2177
21781999-01-19  Jason Merrill  <jason@yorick.cygnus.com>
2179
2180	* decl2.c (finish_vtable_vardecl): Make vtables comdat here.
2181	(import_export_vtable): Not here.
2182
21831999-01-18  Jason Merrill  <jason@yorick.cygnus.com>
2184
2185	* typeck.c (build_component_ref): Wrap an OVERLOAD around a unique
2186	non-static member function.
2187
21881999-01-18  Nathan Sidwell  <nathan@acm.org>
2189
2190	* class.c (instantiate_type): Only diagnose illegal address of member
2191	function if complaining.
2192
2193	* decl.c (lookup_name_real): Remove duplicate code.
2194
21951999-01-18  Jason Merrill  <jason@yorick.cygnus.com>
2196
2197	* tree.c (copy_template_template_parm): Use permanent_obstack.
2198
21991999-01-18  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
2200
2201	* pt.c (unify): Remove restrictions on deduction of argument
2202	of template template parameters.
2203
22041999-01-18  Nathan Sidwell  <nathan@acm.org>
2205
2206	* rtti.c (build_dynamic_cast_1): Resolve OFFSET_REF exprs.
2207
2208	* class.c (resolve_address_of_overloaded_function): Show list of
2209	all candidates, when none of them match.
2210
22111999-01-18  Chip Salzenberg  <chip@perlsupport.com>
2212
2213	* typeck.c (comp_ptr_ttypes_reinterpret): Per ANSI, tighten up
2214	definition of 'casting away const' in reinterpret_cast<>.
2215
22161999-01-18  Graham  <grahams@rcp.co.uk>
2217
2218	* cvt.c: Add include for decl.h, remove extern for
2219	static_aggregates which is now provided by decl.h.
2220
2221	* Makefile.in (cvt.o): Add dependency for decl.h and missing
2222	dependencies for convert.h and flags.h.
2223
22241999-01-18  Nathan Sidwell  <nathan@acm.org>
2225
2226	* decl2.c (do_dtors): Set current location to that of the
2227	decl, for sensible diagnostics and debugging.
2228	(check_classfn): Issue `incomplete type' error, if
2229	class is not defined.
2230
22311999-01-16  Jason Merrill  <jason@yorick.cygnus.com>
2232
2233	* cp-tree.h: Add prototype for bound_pmf_p.
2234
22351999-01-16  Jason Merrill  <jason@yorick.cygnus.com>
2236	    Manfred Hollstein <manfred@s-direktnet.de>
2237
2238	* decl.c (grokdeclarator): Don't make 'main(){}' an error with only
2239	-Wreturn-type.
2240
22411999-01-16  Nathan Sidwell  <nathan@acm.org>
2242
2243	* cp-tree.h (struct lang_type): Added has_mutable flag.
2244	(CLASSTYPE_HAS_MUTABLE): New macro to access it.
2245	(TYPE_HAS_MUTABLE_P): New macro to read it.
2246	(cp_has_mutable_p): Prototype for new function.
2247	* class.c (finish_struct_1): Set has_mutable from members.
2248	* decl.c (cp_finish_decl): Clear decl's TREE_READONLY flag, if
2249	it contains a mutable.
2250	* typeck.c (cp_has_mutable_p): New function.
2251
22521999-01-15  Mark Mitchell  <mark@markmitchell.com>
2253
2254	* pt.c (process_template_parm): Ignore top-level qualifiers on
2255	non-type parameters.
2256
2257	* decl.c (start_function): Use current_function_parms in the call
2258	to require_complete_type_for_parms, not the probably empty
2259	DECL_ARGUMENTS.
2260
22611999-01-14  Jason Merrill  <jason@yorick.cygnus.com>
2262
2263	* semantics.c (finish_asm_stmt): Don't warn about redundant volatile.
2264
2265	* decl2.c (import_export_class): MULTIPLE_SYMBOL_SPACES only means
2266	that we don't suppress the other copies.
2267	* lex.c (handle_cp_pragma): Likewise.
2268
22691999-01-13  Mark Mitchell  <mark@markmitchell.com>
2270
2271	* decl.c (grokdeclarator): Undo 1998-12-14 change.
2272	* tree.c (build_cplus_array_type_1): Likewise.
2273	* pt.c (instantiate_class_template): Remove misleading comment.
2274	(tsubst_aggr_type): Substitute if there are template parameters,
2275	regardless of whether or not they use template arguments.
2276	(unify): Likewise, but for unification.
2277
22781999-01-12  Richard Henderson  <rth@cygnus.com>
2279
2280	* cp-tree.h (flag_permissive): Declare extern.
2281
22821999-01-06  Mark Mitchell  <mark@markmitchell.com>
2283
2284	* cp-tree.h (IDENTIFIER_TYPENAME_P): Use OPERATOR_TYPENAME_FORMAT
2285	here.
2286	(lang_type): Add is_partial_instantiation.  Decrease width of
2287	dummy.
2288	(PARTIAL_INSTANTIATION_P): New macro.
2289	(OPERATOR_TYPENAME_P): Remove.
2290	* decl.c (unary_op_p): Use IDENTIFIER_TYPENAME_P, not
2291	OPERATOR_TYPENAME_P.
2292	(grok_op_properties): Likewise.
2293	* friend.c (do_friend): Handle friends that are member functions
2294	correctly.
2295	* lex.c (init_parse): Use OPERATOR_TYPENAME_FORMAT.
2296	* pt.c (instantiate_class_template): Rework for clarity.  Avoid
2297	leaving TYPE_BEING_DEFINED set in obscure cases.  Don't do
2298	any more partial instantiation than is absolutely necessary for
2299	implicit typename.  Set PARTIAL_INSTANTIATION_P.
2300	(tsubst_decl): Use IDENTIFIER_TYPENAME_P.
2301	* semantics.c (begin_class_definition): Handle partial
2302	specializations of a type that was previously partially
2303	instantiated.
2304
2305Wed Jan  6 03:18:53 1999  Mark Elbrecht  <snowball3@usa.net.
2306
2307	* g++spec.c (LIBSTDCXX): Provide default definition.
2308	(lang_specific_driver): Use LIBSTDCXX instead of "-lstdc++".
2309
2310Tue Jan  5 22:11:25 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2311
2312	* Make-lang.in (g++.o): Depend on prefix.h.
2313
23141999-01-04  Jason Merrill  <jason@yorick.cygnus.com>
2315
2316	* tree.c (bound_pmf_p): New fn.
2317	* typeck.c (build_c_cast): Use it.
2318
2319	* decl.c (grok_op_properties): Use same_type_p.
2320
2321Tue Dec 22 15:09:25 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2322
2323	* Makefile.in (cvt.o): Depend on toplev.h.
2324
2325	* cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
2326
2327	* cvt.c: Include toplev.h.
2328
2329	* except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
2330	definitions.
2331
2332	* init.c (expand_vec_init): Initialize variable `itype'.
2333
2334	* lex.c (yyerror): Cast the argument passed to a ctype function to
2335	an unsigned char.
2336
2337	* method.c (build_mangled_C9x_name): Wrap prototype and definition
2338	in "HOST_BITS_PER_WIDE_INT >= 64".
2339
2340	* typeck.c (build_binary_op): Mark parameter `convert_p' with
2341	ATTRIBUTE_UNUSED.
2342
23431998-12-22  Mark Mitchell  <mark@markmitchell.com>
2344
2345	* cp-tree.h (TYPE_RAISES_EXCEPTIONS): Improve documentation.
2346	* tree.c (build_exception_variant): Don't crash on empty throw
2347	specs.
2348
23491998-12-18  DJ Delorie  <dj@cygnus.com>
2350
2351	* cvt.c (convert_to_reference): Check for both error_mark_node
2352	and NULL_NODE after call to convert_for_initialization.
2353
23541998-12-17  Jason Merrill  <jason@yorick.cygnus.com>
2355
2356	* error.c (interesting_scope_p): New fn.
2357	(dump_simple_decl): Use it.
2358	(dump_expr, case CONSTRUCTOR): Force a & for a PMF.
2359	(dump_expr, case OFFSET_REF): Print ->* if appropriate.
2360
23611998-12-16  Mark Mitchell  <mark@markmitchell.com>
2362
2363	* class.c (resolve_address_of_overloaded_function): Do conversion
2364	to correct type here, rather than ...
2365	(instantiate_type): Here.
2366
2367	* cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
2368	(DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
2369	(decl_template_parm_p): Remove.
2370	* decl.c (pushdecl): Don't set DECL_CONTEXT for a template
2371	parameter.
2372	* lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
2373	* pt.c (push_inline_template_parms_recursive): Set it.
2374	(decl_template_parm_p): Remove.
2375	(check_template_shadow): Use DECL_TEMPLATE_PARM_P.
2376	(process_template_parm): Set it.
2377
2378Wed Dec 16 16:33:58 1998  Dave Brolley  <brolley@cygnus.com>
2379
2380	* lang-specs.h (default_compilers): Pass -MD, -MMD and -MG to cc1plus
2381	if configured with cpplib.
2382
23831998-12-15  Mark Mitchell  <mark@markmitchell.com>
2384
2385	* decl.c (poplevel): Make sure ns_binding is initialized.
2386
2387	* decl.c (finish_function): Undo inadvertent change in previous
2388	patch.
2389
23901998-12-14  Mark Mitchell  <mark@markmitchell.com>
2391
2392	* class.c (pushclass): Tweak handling of class-level bindings.
2393	(resolve_address_of_overloaded_function): Update pointer-to-member
2394	handling.
2395	(instantiate_type): Likewise.
2396	* cvt.c (cp_convert_to_pointer): Likewise.
2397	* decl.c (pop_binding): Take the DECL to pop, not just the name.
2398	Deal with `struct stat' hack.
2399	(binding_level): Add to documentation.
2400	(push_binding): Clear BINDING_TYPE.
2401	(add_binding): New function.
2402	(push_local_binding): Use it.
2403	(push_class_binding): Likewise.
2404	(poplevel): Adjust calls to pop_binding.
2405	(poplevel_class): Likewise.
2406	(pushdecl): Adjust handling of TYPE_DECLs; add bindings for hidden
2407	declarations to current binding level.
2408	(push_class_level_binding): Likewise.
2409	(push_overloaded_decl): Adjust handling of OVERLOADs in local
2410	bindings.
2411	(lookup_namespace_name): Don't crash when confronted with a
2412	TEMPLATE_DECL.
2413	(lookup_name_real): Do `struct stat' hack in local binding
2414	contexts.
2415	(build_ptrmemfunc_type): Adjust documentation.
2416	(grokdeclarator): Don't avoid building real array types when
2417	processing templates unless really necessary.
2418	(finish_method): Adjust calls to pop_binding.
2419	* decl2.c (reparse_absdcl_as_expr): Recursively call ourselves,
2420	not reparse_decl_as_expr.
2421	(build_expr_from_tree): Deal with a template-id as the function to
2422	call in a METHOD_CALL_EXPR.
2423	* pt.c (convert_nontype_argument): Tweak pointer-to-member handling.
2424	(maybe_adjust_types_For_deduction): Don't do peculiar things with
2425	METHOD_TYPEs here.
2426	(resolve_overloaded_unification): Handle COMPONENT_REFs.  Build
2427	pointer-to-member types where necessary.
2428	* tree.c (build_cplus_array_type_1): Don't avoid building real
2429	array types when processing templates unless really necessary.
2430	(build_exception_variant): Compare the exception lists correctly.
2431
24321998-12-13  Mark Mitchell  <mark@markmitchell.com>
2433
2434	* cp-tree.def (CPLUS_BINDING): Update documentation.
2435	* cp-tree.h (LOCAL_BINDING_P): New macro.
2436	(lang_identifier): Rename local_value to bindings.
2437	(tree_binding): Make `scope' of type `void*', not `tree'.
2438	(BINDING_SCOPE): Update documentation.
2439	(IDENTIFIER_LOCAL_VALUE): Remove.
2440	(IDENTIFIER_CLASS_VALUE): Document.
2441	(IDENTIFIER_BINDING): New macro.
2442	(IDENTIFIER_VALUE): Likewise.
2443	(TIME_IDENTIFIER_TIME): Likewise.
2444	(TIME_IDENTIFIER_FILEINFO): Likewise.
2445	(IMPLICIT_TYPENAME_P): Likewise.
2446	(set_identifier_local_value): Remove.
2447	(push_local_binding): New function.
2448	(push_class_binding): Likewise.
2449	* class.c (pushclass): Update comments; use push_class_binding.
2450	* decl.c (set_identifier_local_value_with_scope): Remove.
2451	(set_identifier_local_value): Likewise.
2452	(push_binding): New function.
2453	(pop_binding): Likewise.
2454	(binding_level): Update documentation.  Remove shadowed.
2455	(BINDING_LEVEL): New macro.
2456	(free_binding_nodes): New variable.
2457	(poplevel): Adjust for new name-lookup scheme.  Don't mess up
2458	BLOCK_VARs when doing for-scope extension.  Remove effectively
2459	dead code.
2460	(pushlevel_class): Tweak formatting.
2461	(poplevel_class): Adjust for new name-lookup scheme.
2462	(print_binding_level): Likewise.
2463	(store_bindings): Likewise.
2464	(pushdecl): Likewise.
2465	(pushdecl_class_level): Likewise.
2466	(push_class_level_binding): Likewise.
2467	(push_overloaded_decl): Update comments.  Adjust for new
2468	name-lookup scheme.
2469	(lookup_name_real): Likewise.
2470	(lookup_name_current_level): Likewise.
2471	(cp_finish_decl): Likewise.
2472	(require_complete_types_for_parms): Likewise.  Remove misleading
2473	#if 0'd code.
2474	(grok_parms): Likewise.  Don't call
2475	require_complete_types_for_parms here.
2476	(grok_ctor_properties): Don't treat templates as copy
2477	constructors.
2478	(grop_op_properties): Or as assignment operators.
2479	(start_function): Document.  Adjust for new name-lookup scheme.
2480	(finish_function): Likewise.
2481	* decl2.c (do_local_using_decl): Use push_local_binding.
2482	* lex.c (begin_definition_of_inclass_inline): New function, split
2483	out from ...
2484	(do_pending_inlines): Here, and ...
2485	(process_next_inline): Here.
2486	(get_time_identifier): Use TIME_IDENTIFIER_* macros.
2487	(init_filename_times): Likewise.
2488	(extract_interface_info): Likewise.
2489	(ste_typedecl_interface_info): Likewise.
2490	(check_newline): Likewise.
2491	(dump_time_statistics): Likewise.
2492	(handle_cp_pragma): Likewise.
2493	(do_identifier): Adjust for new name-lookup scheme.
2494	* parse.y (function_try_block): Return ctor_initializer_opt value.
2495	(fndef): Use it.
2496	(fn.defpen): Pass appropriate values to start_function.
2497	(pending_inline): Use functor_try_block value, and pass
2498	appropriate values to finish_function.
2499	* pt.c (is_member_template): Update documentation; remove handling
2500	of FUNCTION_DECLs.  As per name, this function should deal only in
2501	TEMPLATE_DECLs.
2502	(decl_template_parm_p): Change name of olddecl parameter to decl.
2503	(check_template_shadow): Adjust for new name-lookup scheme.
2504	(lookup_template_class): Likewise.
2505	(tsubst_decl): Tweak so as not to confuse member templates with
2506	copy constructors and assignment operators.
2507	(unify): Handle UNION_TYPEs.
2508	* ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
2509	(lang_print_xnode): Adjust for new name-lookup scheme.
2510	* typeck.c (mark_addressable): Likewise.
2511	(c_expand_return): Likewise.
2512
25131998-12-08  Jason Merrill  <jason@yorick.cygnus.com>
2514
2515	* decl.c (grokdeclarator): Allow field with same name as class
2516	in extern "C".
2517
2518	* decl.c (lookup_name_real): Don't limit field lookup to types.
2519	* class.c (check_member_decl_is_same_in_complete_scope): No error
2520	if icv and x are the same.
2521	* lex.c (do_identifier): Tweak error message.
2522
25231998-12-10  Mark Mitchell  <mark@markmitchell.com>
2524
2525	* decl.c (start_enum): Use push_obstacks, not
2526	end_temporary_allocation.
2527	(finish_enum): Call pop_obstacks.
2528
25291998-12-10  Mark Mitchell  <mark@markmitchell.com>
2530
2531	* class.c (instantiate_type): Return error_mark_node rather than
2532	junk.
2533
25341998-12-09  Mark Mitchell  <mark@markmitchell.com>
2535
2536	* cp-tree.h (most_specialized_instantiation): New function.
2537	(print_candidates): Likewise.
2538	* class.c (validate_lhs): Remove.
2539	(resolve_address_of_overloaded_function): New function, split out
2540	and then substantially reworked, from ...
2541	(instantiate_type): Use it.  Simplify.
2542	* cvt.c (convert_to_reference): Complain when caller has indicated
2543	that's the right thing to do.  Don't crash if instantiate_type
2544	fails.
2545	* pt.c: Substitute `parameters' for `paramters' throughout.
2546	(print_candidates): Don't make it static.
2547	(most_specialized_instantiation): Split out from ...
2548	(most_specialized): Here.
2549
2550Wed Dec  9 15:33:01 1998  Dave Brolley  <brolley@cygnus.com>
2551
2552	* lex.c (lang_init_options): Initialize cpplib.
2553	* decl2.c (parse_options,cpp_initialized): Removed.
2554	(lang_decode_option): Move initialization of cpplib to
2555	lang_init_options.
2556
25571998-12-09  Mark Mitchell  <mark@markmitchell.com>
2558
2559	* decl.c (grokdeclarator): Update the name of the TEMPLATE_DECL, as
2560	well as the TYPE_DECL, when a typedef name is assigned to a
2561	previously anonymous type.
2562
25631998-12-08  Andrew MacLeod  <amacleod@cygnus.com>
2564
2565	* cp/except.c (call_eh_info): Use __start_cp_handler instead of
2566	__cp_eh_info for getting the eh info pointer.  Add table_index to
2567	field list.
2568	(push_eh_cleanup): Don't increment 'handlers' data field.
2569	(process_start_catch_block): Don't set the 'caught' field.
2570
2571	* cp/exception.cc (CP_EH_INFO): New macro for getting the
2572	exception info pointer within library routines.
2573	(__cp_eh_info): Use CP_EH_INFO.
2574	(__start_cp_handler): Get exception info pointer, set caught field,
2575	and increment the handlers field.  Avoids this being done by handlers.
2576	(__uncatch_exception, __check_eh_spec): Use CP_EH_INFO macro.
2577	(uncaught_exception): Use CP_EH_INFO macro.
2578
2579Tue Dec  8 10:48:21 1998  Jeffrey A Law  (law@cygnus.com)
2580
2581	* Make-lang.in (cxxmain.o): Depend on $(DEMANGLE_H), not demangle.h
2582
2583Mon Dec  7 17:56:06 1998  Mike Stump  <mrs@wrs.com>
2584
2585	* lex.c (check_newline): Add support for \ as `natural'
2586	characters in file names in #line to be consistent with #include
2587	handling.  We support escape processing in the # 1 "..." version of
2588	the command.  See also support in cp/lex.c.
2589
25901998-12-07  Zack Weinberg  <zack@rabi.phys.columbia.edu>
2591
2592	* cp/decl2.c: s/data/opts/ when initializing cpp_reader
2593	structure.
2594
25951998-12-07  Jason Merrill  <jason@yorick.cygnus.com>
2596
2597	* decl.c (build_typename_type): Set DECL_ARTIFICIAL.
2598
2599	* error.c (dump_simple_decl): Also print namespace context.
2600	(dump_function_decl): Likewise.
2601
2602	* decl2.c (ambiguous_decl): Don't print old value if it's
2603	error_mark_node.
2604
2605	* decl.c (lookup_name_real): Fix handling of local types shadowed
2606	by a non-type decl.  Remove obsolete code.
2607	* cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.
2608
2609	* lang-options.h: Add -fpermissive.
2610	* decl2.c: Likewise.
2611	* cp-tree.h: Add flag_permissive.
2612	* decl.c (init_decl_processing): If neither -fpermissive or -pedantic
2613	were specified, set flag_pedantic_errors.
2614	* call.c (build_over_call): Turn dropped qualifier messages
2615	back into pedwarns.
2616	* cvt.c (convert_to_reference): Likewise.
2617	* typeck.c (convert_for_assignment): Likewise.
2618
26191998-12-05  Jason Merrill  <jason@yorick.cygnus.com>
2620
2621	* decl2.c (coerce_new_type): Use same_type_p.
2622	(coerce_delete_type): Likewise.
2623
2624	* call.c (check_dtor_name): Return 1, not error_mark_node.
2625
26261998-12-04  Jason Merrill  <jason@yorick.cygnus.com>
2627
2628	* lex.c (handle_cp_pragma): Disable #pragma interface/implementation
2629	if MULTIPLE_SYMBOL_SPACES.
2630
2631	* pt.c (check_template_shadow): New fn.
2632	* decl2.c (grokfield): Use it.
2633	* decl.c (pushdecl): Likewise.
2634	(pushdecl_class_level): Likewise.
2635	(start_method): Likewise.
2636	(xref_tag): Don't try to use 't' if we're defining.
2637
2638	* call.c (check_dtor_name): Just return an error_mark_node.
2639	* pt.c (lookup_template_class): Complain about using non-template here.
2640	* parse.y (apparent_template_type): Not here.
2641
2642	* pt.c (check_explicit_specialization): Complain about specialization
2643	with C linkage.
2644
2645	* lang-options.h: Add -f{no-,}implicit-inline-templates.
2646
2647	* pt.c (convert_nontype_argument): Don't assume that any integer
2648	argument is intended to be a constant-expression.
2649
26501998-12-03  Mark Mitchell  <mark@markmitchell.com>
2651
2652	* class.c (handle_using_decl): Fix comment.  Don't lookup
2653	constructors in base classes.
2654	(validate_lhs): Fix typo in comment.
2655	* search.c (lookup_field_1): Don't return a USING_DECL.
2656
2657	* cp-tree.h (DECL_ACCESS): Improve documentation.
2658
2659	* decl.c (expand_static_init): Don't set the initialization-done
2660	flag until the initialization is done.
2661
26621998-12-02  Mark Mitchell  <mark@markmitchell.com>
2663
2664	* decl2.c (validate_nonmember_using_decl): Complain about using
2665	declarations for class members.
2666
26671998-11-29  Jason Merrill  <jason@yorick.cygnus.com>
2668
2669	* typeck2.c (process_init_constructor): Use same_type_p.
2670
2671	* decl.c (check_tag_decl): Don't warn about null decl inside a
2672	class.
2673
2674	* pt.c (unify, case OFFSET_TYPE): Pass down 'strict' rather than
2675	UNIFY_ALLOW_NONE.
2676	(convert_nontype_argument): Use TYPE_PTRMEMFUNC_FN_TYPE.
2677	(resolve_overloaded_unification): Strip baselinks.
2678
2679Fri Nov 27 13:07:23 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2680
2681	* g++spec.c: Don't prototype xmalloc.
2682
26831998-11-25  Jason Merrill  <jason@yorick.cygnus.com>
2684
2685	* except.c (expand_throw): Use TYPE_PTR_P to check for pointers.
2686
2687	* decl.c (check_tag_decl): Do complain about null friend decl at
2688	file scope.
2689
26901998-11-25  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
2691
2692	* lex.c (make_lang_type): Clear the whole struct lang_type, not
2693	only the first multiple of sizeof (int).
2694
26951998-11-24  Jason Merrill  <jason@yorick.cygnus.com>
2696
2697	* decl.c (start_decl): An explicit specialization of a static data
2698	member is only a definition if it has an initializer.
2699
2700	* except.c (expand_throw): Use cp_finish_decl for the throw temp.
2701	* cvt.c (build_up_reference): Pass DIRECT_BIND down into
2702	cp_finish_decl.
2703	* init.c (expand_default_init): Check for DIRECT_BIND instead of
2704	DECL_ARTIFICIAL.
2705
2706	* call.c (build_over_call): Use build_decl.
2707
2708	* except.c (expand_throw): Just use convert, not
2709	build_reinterpret_cast.
2710
2711	* lex.c (handle_generic_pragma): Use token_buffer.
2712
2713	* decl.c (check_tag_decl): Don't complain about null friend decl.
2714
27151998-11-24  Dave Pitts  <dpitts@cozx.com>
2716
2717	* Make-lang.in (DEMANGLER_PROG): Move the output arguments to the
2718	first position.
2719	* lex.c (check_newline): Use ISALPHA.
2720	(readescape): Use ISGRAPH.
2721	(yyerror): Use ISGRAPH.
2722
27231998-11-24  Nathan Sidwell  <nathan@acm.org>
2724
2725	* search.c (get_abstract_virtuals): Do not use initial
2726	CLASSTYPE_ABSTRACT_VIRTUALS.
2727	* typeck2.c (abstract_virtuals_error): Show location of abstract
2728	declaration.
2729	* call.c (build_new_method_call): Use
2730	CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
2731	* class.c (finish_struct_bits): Don't bother working out whether
2732	get_abstract_virtuals will do anything, just do it.
2733
27341998-11-24  Graham  <grahams@rcp.co.uk>
2735
2736	* typeck.c (build_component_ref): Remove unused statement.
2737
27381998-11-24  Jason Merrill  <jason@yorick.cygnus.com>
2739
2740	* class.c (add_method): Catch invalid overloads.
2741
2742	* class.c (add_method): Build up OVERLOADs properly for conversion ops.
2743	* search.c (lookup_conversions): Handle getting real OVERLOADs.
2744	(add_conversions): Likewise.  Revert last change.
2745	* call.c (add_conv_candidate): Pass totype to add_candidate instead
2746	of fn.  Don't add a new candidate if the last one was for the same
2747	type.
2748	(print_z_candidates): Handle getting a type as a function.
2749	(joust): If we got two conversion candidates to the same type,
2750	just pick one.
2751	(build_object_call): Lose 'templates'.
2752	(build_user_type_conversion_1): Handle getting real OVERLOADs.
2753
27541998-11-23  Jason Merrill  <jason@yorick.cygnus.com>
2755
2756	* typeck2.c (process_init_constructor): If there are elements
2757	that don't have initializers and they need to have constructors
2758	run, supply them with initializers.
2759
2760	* class.c (finish_struct_1): A class with a 0-width bitfield is
2761	still empty.
2762
27631998-11-23  Mark Mitchell  <mark@markmitchell.com>
2764
2765	* pt.c (instantiate_class_template): Don't try to figure out what
2766	specialization to use for a partial instantiation.  Correct
2767	typos in a couple of comments.  Avoid calling uses_template_parms
2768	multiple times.
2769
27701998-11-23  Benjamin Kosnik  <bkoz@cygnus.com>
2771
2772	* method.c (process_overload_item): Add call to
2773	build_mangled_C9x_name for intTI_type_nodes.
2774	(build_mangled_C9x_name): Add prototype, define.
2775	* decl.c (init_decl_processing): Add names for
2776	TImode_type_node.
2777
27781998-11-23  Jason Merrill  <jason@yorick.cygnus.com>
2779
2780	* parse.y (named_class_head): Update CLASSTYPE_DECLARED_CLASS.
2781
2782	* class.c (finish_struct_1): Set things up for 0-width bitfields
2783	like we do for others.
2784
2785	* decl.c (check_tag_decl): New fn.
2786	(shadow_tag): Split out from here.
2787	* decl2.c (grok_x_components): Call it.
2788
27891998-11-22  Jason Merrill  <jason@yorick.cygnus.com>
2790
2791	* decl.c: Lose warn_about_return_type.
2792	(grokdeclarator): Always complain about implicit int, except for
2793	`main () { ... }'.
2794
2795	* decl.c (tag_name): New fn.
2796	(xref_tag): Complain about using typedef-name after class-key.
2797
2798	* init.c (expand_vec_init): Also keep going if from_array.
2799
2800	* tree.c (is_overloaded_fn): Also handle the output of
2801	build_offset_ref.
2802
2803	* decl.c (grokdeclarator): Use constructor_name when comparing
2804	field name against enclosing class.
2805	* class.c (finish_struct_anon): Likewise.
2806
28071998-11-22  Mark Mitchell  <mark@markmitchell.com>
2808
2809	* decl.c (poplevel): Remove code to handle KEEP == 2.
2810	(finish_function): Don't confuse BLOCK-order when
2811	processing a destructor.
2812
28131998-11-21  Jason Merrill  <jason@yorick.cygnus.com>
2814
2815	* decl.c (require_complete_types_for_parms): Call layout_decl
2816	after we've completed the type.
2817
28181998-11-21  Martin von L�wis  <loewis@informatik.hu-berlin.de>
2819
2820	* decl2.c (validate_nonmember_using_decl): Allow using templates
2821	from the global namespace.
2822
28231998-11-21  Jason Merrill  <jason@yorick.cygnus.com>
2824
2825	Handle specifying template args to member function templates.
2826	* tree.c (build_overload): Always create an OVERLOAD for a template.
2827	* search.c (add_conversions): Handle finding an OVERLOAD.
2828	* decl2.c (check_classfn): Likewise.
2829	* lex.c (identifier_type): See through a baselink.
2830	* parse.y (do_id): Don't call do_identifier if we got a baselink.
2831	* class.c (instantiate_type, case TREE_LIST): Recurse.
2832
2833	* decl.c (grokdeclarator): Allow a boolean constant for array
2834	bounds, odd as that sounds.
2835
2836	* pt.c (unify): Be more strict about non-type parms, except for
2837	array bounds.
2838	(UNIFY_ALLOW_INTEGER): New macro.
2839
28401998-11-19  Manfred Hollstein  <manfred@s-direktnet.de>
2841
2842	* Make-lang.in (mandir): Replace all uses of $(mandir) by $(man1dir).
2843
28441998-11-19  Jason Merrill  <jason@yorick.cygnus.com>
2845
2846	* semantics.c (begin_class_definition): Call
2847	maybe_process_partial_specialization before push_template_decl.
2848	Don't call push_template_decl for a specialization.
2849	* search.c (lookup_field): Do return a member template class.
2850	* decl2.c (handle_class_head): Handle member template classes.
2851
2852	* decl.c (grokdeclarator): A parm type need not be complete.
2853
2854	* pt.c (convert_nontype_argument): Fix thinko.
2855
28561998-11-18  Mark Mitchell  <mark@markmitchell.com>
2857
2858	* cp-tree.h (PTRMEM_CST_CLASS): Fix typo.
2859	(global_delete_fndecl): New variable.
2860	* decl.c (global_delete_fndecl): Define it.
2861	(init_decl_processing): Set it.
2862	* init.c (build_builtin_delete_call): Use it.
2863	* tree.c (mapcar): Recursively call mapcar for the type of EXPR
2864	nodes.
2865
28661998-11-18  Jason Merrill  <jason@yorick.cygnus.com>
2867
2868	* decl.c (cplus_expand_expr_stmt): Always complain about unresolved
2869	type.
2870
2871	* tree.c (lvalue_p_1): An INDIRECT_REF to a function is an lvalue.
2872	* call.c (build_object_call): Also support references to functions.
2873	* typeck.c (convert_for_initialization): Don't decay a function
2874	if the target is a reference to function.
2875
2876	* search.c (add_conversions): Get all the overloads from a class.
2877
2878	* decl.c (grok_ctor_properties): Complain about any constructor
2879	that will take a single arg of the class type by value.
2880
2881	* typeck2.c (build_functional_cast): Can't create objects of
2882	abstract classes this way.
2883	* cvt.c (ocp_convert): Likewise.
2884
2885	* decl.c (grokfndecl): Member functions of local classes are not
2886	public.
2887
28881998-11-18  Mark Mitchell  <mark@markmitchell.com>
2889
2890	* Make-lang.in (cc1plus): Add dependency on hash.o.
2891
28921998-11-18  Jason Merrill  <jason@yorick.cygnus.com>
2893
2894	* search.c (get_abstract_virtuals): Complain about virtuals with
2895	no final overrider.
2896	* typeck2.c (abstract_virtuals_error): Remove handling for virtuals
2897	with no final overrider.
2898	* class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
2899	on virtuals with no final overrider.
2900
2901	* lex.c (reinit_parse_for_block): Add a space after the initial ':'.
2902
2903	* class.c (finish_struct_1): Don't remove zero-width bit-fields until
2904	after layout_type.
2905
2906	* friend.c (do_friend): Don't set_mangled_name_for_decl.
2907
2908	* class.c (finish_struct_anon): Complain about non-fields.
2909	* decl2.c (build_anon_union_vars): Likewise.
2910
2911	* decl.c (grokdeclarator): Normal data members can't have the same
2912	name as the class, either.
2913	* class.c (finish_struct_anon): Neither can members of an
2914	anonymous union.
2915
29161998-11-17  Mark Mitchell  <mark@markmitchell.com>
2917
2918	* cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
2919	(TYPE_BINFO): Likewise.
2920	(IS_AGGR_TYPE): Tweak.
2921	(SET_IS_AGGR_TYPE): New macro.
2922	(CLASS_TYPE_P): Tweak.
2923	(lang_type): Group mark bitfields together.  Remove linenum.
2924	(CLASSTYPE_SOURCE_LINE): Remove macro.
2925	(CLASSTYPE_MARKED_N): New macro.
2926	(SET_CLASSTYPE_MARKED_N): Likewise.
2927	(CLEAR_CLASSTYPE_MARKED_N): Likewise.
2928	(CLASS_TYPE_MARKED_*): Use them.
2929	(SET_CLASSTYPE_MARKED_*): Likewise.
2930	(CLEAR_CLASSTYPE_MARKED_*): Likewise.
2931	(TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
2932	(TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
2933	(TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
2934	* class.c (class_cache_obstack): New variable.
2935	(class_cache_firstobj): Likewise.
2936	(finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
2937	(pushclass): Free the cache, when appropriate.
2938	(popclass): Tidy.
2939	(maybe_push_cache_obstack): Use class_cache_obstack.
2940	* decl.c (include hash.h).
2941	(typename_hash): New function.
2942	(typename_compare): Likewise.
2943	(build_typename_type): Check the hash table to avoid creating
2944	duplicates.
2945	(build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
2946	(grokdeclarator): Use CLASS_TYPE_P.
2947	(xref_basetypes): Likewise.
2948	(start_function): Likewise.  Don't put current_class_ref on the
2949	permanent obstack.
2950	* error.c (dump_type_real): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
2951	and TYPE_TI_ARGS.
2952	* lex.c (note_got_semicolon): Use CLASS_TYPE_P.
2953	(make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
2954	fields for types other than class types.  Do clear TYPE_ALIAS_SET
2955	for types other than class types, though.
2956	* method.c (build_overload_identifier): Use CLASS_TYPE_P and
2957	TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
2958	* pt.c (process_template_parm): Don't set
2959	CLASSTYPE_GOT_SEMICOLON.
2960	(lookup_template_class): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
2961	Coerce arguments on the momentary obstack.
2962	(for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
2963	(instantiate_class_template): Calculate template arguments on the
2964	momentary obstack.  Tidy.
2965	(tsubst_template_arg_vector): Use make_temp_vec.
2966	(tsubst_aggr_type): Put template arguments on the momentary
2967	obstack.
2968	(tsubst_decl): Likewise.
2969	(tsubst): Copy the array bounds index to the permanent obstack
2970	before building index types.  Use new macros.
2971	(unify): Use new macros.
2972	(do_type_instantiation): Likewise.
2973	* search.c (lookup_fnfields_1): Use new macros.
2974	(dfs_pushdecls): Build envelopes on the cache obstack.
2975	(dfs_compress_decls): Use new macros.
2976	(push_class_decls): Build on the cache obstack.
2977	* semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
2978	* sign.c (build_signature_pointer_or_reference_type): Use
2979	SET_IS_AGGR_TYPE.
2980	* tree.c (make_binfo): Check CLASS_TYPE_P.
2981	(copy_template_template_parm): Adjust.
2982	(make_temp_vec): Use push_expression_obstack.
2983	* typeck.c (complete_type): Use new macros.
2984	(comptypes): Likewise.
2985
29861998-11-17  Jason Merrill  <jason@yorick.cygnus.com>
2987
2988	* pt.c (tsubst): Add diagnostics for invalid array, reference
2989	and pointer to member types.
2990
29911998-11-16  Jason Merrill  <jason@yorick.cygnus.com>
2992
2993	* typeck2.c (my_friendly_abort): Don't fatal twice in a row.
2994
2995	* typeck.c (c_expand_start_case): Use build_expr_type_conversion.
2996	Simplify.
2997
2998	* parse.y (structsp): Fix cut-and-paste error.
2999
3000	* init.c (build_new): Complain about non-integral size.
3001
3002	* parse.y (unary_expr): Complain about defining types in sizeof.
3003
3004	* typeck.c (expr_sizeof): Complain about sizeof an overloaded fn.
3005
3006	* rtti.c (build_x_typeid): Complain about typeid without
3007	including <typeinfo>.
3008	(get_typeid): Likewise.  Complain about typeid of incomplete type.
3009	(get_tinfo_fn_dynamic): Likewise.
3010	(get_typeid_1): Not static anymore.
3011	* except.c (build_eh_type_type): Use get_typeid_1.
3012
3013	* rtti.c (build_dynamic_cast_1): Give errors for dynamic_cast to
3014	ambiguous or private bases.  Fix warning for reference cast.
3015
30161998-11-16  Mark Mitchell  <mark@markmitchell.com>
3017
3018	* cp-tree.h (DECL_TEMPLATE_INSTANTIATED): New macro.
3019	* decl.c (duplicate_decls): Remove special-case code to deal with
3020	template friends, and just do the obvious thing.
3021	* pt.c (register_specialization): Tweak for clarity, and also to
3022	clear DECL_INITIAL for an instantiation before it is merged with a
3023	specialization.
3024	(check_explicit_specialization): Fix indentation.
3025	(tsubst_friend_function): Handle both definitions in friend
3026	declaration and outside friend declarations.
3027	(tsubst_decl): Don't clear DECL_INITIAL for an instantiation.
3028	(regenerate_decl_from_template): Tweak accordingly.
3029	(instantiate_decl): Likewise.
3030
30311998-11-16  Jason Merrill  <jason@yorick.cygnus.com>
3032
3033	* decl.c (cplus_expand_expr_stmt): Promote warning about naked
3034	member function reference to error.
3035	* cvt.c (ocp_convert): Complain about converting an overloaded
3036	function to void.
3037
3038	* init.c (build_offset_ref): Just return a lone static member
3039	function.
3040
3041	* decl.c (cp_finish_decl): Only complain about real CONSTRUCTORs,
3042	not internal ones.
3043
3044	* typeck.c (build_binary_op_nodefault): Improve error handling.
3045
3046	* decl.c (grokfndecl): Complain about making 'main' a template.
3047
3048	* typeck.c (string_conv_p): Don't convert from wchar_t[] to char*.
3049
3050	* call.c (build_method_call): Handle a BIT_NOT_EXPR around a
3051	TYPE_DECL in a template.
3052
30531998-11-15  Jason Merrill  <jason@yorick.cygnus.com>
3054
3055	* typeck2.c (my_friendly_abort): Add URL in the other case, too.
3056
3057	* decl.c (struct cp_function): Add named_label_uses.
3058	(push_cp_function_context): Save it.
3059	(pop_cp_function_context): Restore it.
3060	(define_label): Also complain about jumping into the scope of
3061	non-POD objects that don't have constructors.
3062	* tree.c (pod_type_p): New fn.
3063
3064	* pt.c (instantiate_class_template): Clear TYPE_BEING_DEFINED sooner.
3065	* rtti.c (synthesize_tinfo_fn): Call import_export_decl here.
3066	(get_tinfo_fn): Not here.
3067	* repo.c (repo_get_id): Abort if we get called for an incomplete
3068	type.
3069
30701998-11-13  Mark Mitchell  <mark@markmitchell.com>
3071
3072	* except.c (expand_throw): Make sure first argument to
3073	__cp_push_exception is of type `void*' to avoid spurious error
3074	messages.
3075
30761998-11-11  Jason Merrill  <jason@yorick.cygnus.com>
3077
3078	* pt.c (try_one_overload): Take orig_targs again.  Only check for
3079	mismatches against them; we don't care what a previous call found.
3080	(resolve_overloaded_unification): Adjust.
3081
3082	* search.c (lookup_field): Don't return anything for a non-type
3083	field from a dependent type.
3084	* decl.c (grokdeclarator): Resolve SCOPE_REFs of the current class
3085	in an array declarator.
3086	(start_decl): Push into the class before looking for the field.
3087
30881998-11-08  Mark Mitchell  <mark@markmitchell.com>
3089
3090	* method.c (build_overload_value): Handle REFERENCE_TYPE.
3091
30921998-11-08  Martin von L�wis  <loewis@informatik.hu-berlin.de>
3093
3094	* decl.c (grokdeclarator): Allow namespace-scoped members if they
3095	are friends.
3096
30971998-11-08  Jason Merrill  <jason@yorick.cygnus.com>
3098
3099	* pt.c (tsubst_decl): Don't mess with the global value of an
3100	un-mangled DECL_ASSEMBLER_NAME.
3101
31021998-11-03  Christopher Faylor  <cgf@cygnus.com>
3103
3104	* decl.c (init_decl_processing): Remove CYGWIN conditional
3105	since CYGWIN is now able to deal with trapping signals.
3106
3107Sat Nov  7 15:48:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3108
3109	* cp-tree.h: Don't include gansidecl.h.
3110	* exception.cc: Include gansidecl.h (since we don't include config.h)
3111	* g++spec.c: Don't include gansidecl.h.
3112
31131998-11-06  Mark Mitchell  <mark@markmitchell.com>
3114
3115	* cp-tree.h (lang_decl_flags): Add defined_in_class.  Decrease
3116	size of dummy.
3117	(DECL_DEFINED_IN_CLASS_P): New macro.
3118	(TEMPLATE_PARMS_FOR_INLINE): Document.
3119	(check_static_variable_definition): New function.
3120	* decl.c (cp_finish_decl): Set DECL_DEFINED_IN_CLASS_P, if
3121	appropriate.
3122	(check_static_variable_definition): Split out from ...
3123	(grokdeclarator): Here.
3124	* pt.c (check_default_tmpl_args): New function, split out from ...
3125	(push_template_decl_real): Here.
3126	(instantiate_template): Fix comment.
3127
31281998-11-04  Mark Mitchell  <mark@markmitchell.com>
3129
3130	* cp-tree.h (CP_TYPE_CONST_P): Make {0,1}-valued.
3131	(CP_TYPE_VOLATILE_P): Likewise.
3132	(CP_TYPE_RESTRICT_P): Likewise.
3133
31341998-11-03  Mark Mitchell  <mark@markmitchell.com>
3135
3136	* pt.c (tsubst): Use build_index_type, not build_index_2_type.
3137
31381998-11-02  Jason Merrill  <jason@yorick.cygnus.com>
3139
3140	* class.c (instantiate_type): Be more helpful.
3141
3142	* decl2.c (import_export_decl): Call import_export_class.
3143
3144	* cp-tree.h (EMPTY_CONSTRUCTOR_P): Check !TREE_HAS_CONSTRUCTOR.
3145	* decl2.c (build_expr_from_tree): Propagate TREE_HAS_CONSTRUCTOR.
3146	* pt.c (tsubst_copy): Likewise.
3147
31481998-11-02  Mark Mitchell  <mark@markmitchell.com>
3149
3150	* init.c (expand_vec_init): Fix off-by-one error.
3151
31521998-11-02  Alexandre Oliva  <oliva@dcc.unicamp.br>
3153
3154	* parse.y (apparent_template_type): New type.
3155	(named_complex_class_head_sans_basetype): Use it.
3156	* Makefile.in (CONFLICTS): One new conflict.
3157	* parse.c: Regenerated.
3158
31591998-11-01  Mark Mitchell  <mark@markmitchell.com>
3160
3161	* cp-tree.h (COMPARE_STRICT): New macro.
3162	(COMPARE_BASE): Likewise.
3163	(COMPARE_RELAXED): Likewise.
3164	(COMPARE_REDECLARATION): Likewise.
3165	(same_type_p): Likewise.
3166	(same_or_base_type_p): Likewise.
3167	* call.c (standard_conversion): Use them, in place of comptypes
3168	with numeric arguments.
3169	(reference_binding): Likewise.
3170	(convert_like): Likewise.
3171	(build_over_call): Likewise.
3172	(is_subseq): Likewise.
3173	(is_properly_derived_from): Likewise.
3174	(compare_ics): Likewise.
3175	(joust): Likewise.
3176	* class.c (delete_duplicate_fields_1): Likewise.
3177	(resolves_to_fixed_type_p): Likewise.
3178	(instantiate_type): Likewise.  Remove #if 0'd code.
3179	* decl.c (decls_match): Likewise.  Use COMPARE_REDECLARATION here.
3180	(pushdecl): Likewise.
3181	(lookup_name_real): Likewise.
3182	(grokdeclarator): Likewise.  Check for illegal array declarations.
3183	(grokparms): Likewise.
3184	(grok_op_properties): Likewise.
3185	* decl2.c (check_classfn): Likewise.
3186	* friend.c (is_friend): Likewise.
3187	(make_friend_class): Likewise.
3188	* init.c (expand_aggr_init): Likewise.
3189	(expand_vec_init): Likewise.
3190	* pt.c (is_member_template_class): Remove declaration.
3191	(is_specialization_of): Use COMPARE_* and new macros.
3192	(comp_template_parms): Likewise.
3193	(convert_nontype_argument): Likewise.
3194	(coerce_template_template_parms): Likewise.
3195	(template_args_equal): Likewise.
3196	(lookup_template_class): Likewise.
3197	(type_unification_real): Likewise.
3198	(unify): Likewise.
3199	(get_bindings_real): Likewise.
3200	* search.c (covariant_return_p): Likewise.
3201	(get_matching_virtual): Likewise.
3202	* sig.c (match_method_types): Likewise.
3203	* tree.c (vec_binfo_member): Likewise.
3204	(cp_tree_equal): Likewise.
3205	* typeck.c (common_type): Likewise.
3206	(comp_array_types): Likewise.  Get issues involving unknown array
3207	bounds right.
3208	(comptypes): Update comments.  Use new flags.
3209	(comp_target_types): Use new macros.
3210	(compparms): Likewise.
3211	(comp_target_parms): Likewise.
3212	(string_conv_p): Likewise.
3213	(build_component_ref): Likewise.
3214	(build_indirect_ref): Likewise.
3215	(build_conditional_expr): Likewise.
3216	(build_static_cast): Likewise.
3217	(build_reinterpret_cast): Likewise.
3218	(build_const_cast): Likewise.
3219	(build_modify_expr): Likewise.
3220	(convert_for_assignment): Likewise.
3221	(comp_ptr_ttypes_real): Likewise.
3222	(ptr_reasonably_similar): Likewise.
3223	(comp_ptr_ttypes_const): Likewise.
3224
32251998-10-31  Jason Merrill  <jason@yorick.cygnus.com>
3226
3227	* rtti.c (build_dynamic_cast_1): Fix cut-and-paste error.
3228
32291998-10-30  Mark Mitchell  <mark@markmitchell.com>
3230
3231	* decl2.c (delete_sanity): Pass integer_zero_node, not
3232	integer_two_node, to build_vec_delete.
3233	* init.c (build_array_eh_cleanup): Remove.
3234	(expand_vec_init_try_block): New function.
3235	(expand_vec_init_catch_clause): Likewise.
3236	(build_vec_delete_1): Don't deal with case that auto_delete_vec
3237	might be integer_two_node anymore.
3238	(expand_vec_init): Rework for initialization-correctness and
3239	exception-correctness.
3240	* typeck2.c (process_init_constructor): Make mutual exclusivity
3241	of cases more obvious.
3242
32431998-10-29  Jason Merrill  <jason@yorick.cygnus.com>
3244
3245	* decl.c (lookup_name_real): OK, only warn if not lexing.
3246	Simplify suggested fix.
3247
3248	* cp-tree.h (IDENTIFIER_MARKED): New macro.
3249	* search.c (lookup_conversions): Use breadth_first_search.
3250	(add_conversions): Avoid adding two conversions to the same type.
3251	(breadth_first_search): Work with base binfos, rather
3252	than binfos and base indices.
3253	(get_virtual_destructor): Adjust.
3254	(tree_has_any_destructor_p): Adjust.
3255	(get_matching_virtual): Adjust.
3256
3257	* pt.c (push_template_decl_real): Generalize check for incorrect
3258	number of template parms.
3259	(is_member_template_class): #if 0.
3260
32611998-10-29  Richard Henderson  <rth@cygnus.com>
3262
3263	* Makefile.in (cc1plus): Put CXX_OBJS, and thence @extra_cxx_objs@,
3264	last.
3265
32661998-10-28  Zack Weinberg  <zack@rabi.phys.columbia.edu>
3267
3268	* lex.c: Call check_newline from lang_init always.  After
3269	calling cpp_start_read, set yy_cur and yy_lim to read from the
3270	cpplib token buffer.
3271
32721998-10-28  Jason Merrill  <jason@yorick.cygnus.com>
3273
3274	* class.c (instantiate_type): Don't consider templates for a normal
3275	match.
3276
3277	* class.c (finish_struct_1): Don't complain about non-copy
3278	assignment ops in union members.
3279
3280	* class.c (build_vtable): Don't pass at_eof to import_export_vtable.
3281	(prepare_fresh_vtable): Likewise.
3282	(finish_struct_1): Don't call import_export_class.
3283	* decl2.c (finish_vtable_vardecl): Do import/export stuff.
3284	(finish_prevtable_vardecl): Lose.
3285	(finish_file): Don't call it.
3286	* pt.c (instantiate_class_template): Likewise.
3287	* cp-tree.h: Remove it.
3288
3289	* init.c (build_delete): Reset TYPE_HAS_DESTRUCTOR here.
3290	* decl.c (finish_function): Not here.
3291	(start_function): Do set DECL_INITIAL.
3292
3293	* pt.c (push_template_decl_real): Complain about default template
3294	args for enclosing classes.
3295
3296	* call.c (add_function_candidate): Treat conversion functions
3297	as coming from the argument's class.
3298	* cp-tree.h (DECL_CONV_FN_P): New fn.
3299	(DECL_DESTRUCTOR_P): Also check DECL_LANGUAGE.
3300	* class.c (add_method): Use DECL_CONV_FN_P.
3301	* decl2.c (check_classfn): Likewise.
3302	* error.c (dump_function_name): Likewise.
3303	(dump_function_decl): Likewise.
3304	* pt.c (fn_type_unification): Likewise.
3305	* search.c (add_conversions): Likewise.
3306
33071998-10-27  Jason Merrill  <jason@yorick.cygnus.com>
3308
3309	* lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
3310	* method.c (hack_identifier): Also check for using RESULT_DECL
3311	from outer context.
3312
33131998-10-27  Mark Mitchell  <mark@markmitchell.com>
3314
3315	* decl.c (grokdeclarator): Use type_quals, rather than constp,
3316	consistently.
3317
33181998-10-27  Jason Merrill  <jason@yorick.cygnus.com>
3319
3320	* call.c (standard_conversion): instantiate_type here.
3321	(reference_binding): And here.
3322	(implicit_conversion): Not here.
3323	(build_op_delete_call): No need to cons up an OVERLOAD.
3324	* cvt.c (cp_convert_to_pointer): instantiate_type here.
3325	(convert_to_reference): And here.
3326	* decl.c (grok_reference_init): Not here.
3327	(grokparms): Or here.
3328	* typeck2.c (digest_init): Or here.
3329	* typeck.c (decay_conversion): Take the address of overloaded
3330	functions, too.
3331	(require_instantiated_type): Lose.
3332	(convert_arguments): Don't handle unknown types here.
3333	(build_c_cast): Likewise.
3334	(build_binary_op): Gut.
3335	(build_conditional_expr): Don't require_instantiated_type.
3336	(build_modify_expr): Likewise.
3337	(build_static_cast): Don't instantiate_type.
3338	(build_reinterpret_cast): Likewise.
3339	(build_const_cast): Likewise.
3340	(convert_for_initialization): Likewise.
3341	(build_ptrmemfunc): Use type_unknown_p.
3342	(convert_for_assignment): Also do default_conversion on overloaded
3343	functions.  Hand them off to ocp_convert.
3344
33451998-10-26  Mark Mitchell  <mark@markmitchell.com>
3346
3347	* error.c (dump_decl): Deal with TEMPLATE_DECLs that are
3348	VAR_DECLs.  Handle vtables whose DECL_CONTEXT is not a type.
3349
3350	* class.c (finish_struct_1): Use build_cplus_array_type to build
3351	array types.
3352	* decl.c (init_decl_processing): Likewise.
3353	* except.c (expand_end_eh_spec): Likewise.
3354	* search.c (expand_upcast_fixups): Simplify very slightly.
3355
33561998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
3357
3358	* decl.c (grokdeclarator): Complain about a variable using
3359	constructor syntax coming back null from start_decl.
3360
3361	* friend.c (make_friend_class): Complain about trying to make
3362	a non-class type a friend.
3363
3364	* decl.c (grokfndecl): Set DECL_INITIAL for a defn here.
3365	(start_function): Not here.
3366
33671998-10-26  Brendan Kehoe  <brendan@cygnus.com>
3368
3369	* decl.c (grokdeclarator): Disallow `explicit' in a friend declaration.
3370
33711998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
3372
3373	* typeck2.c (process_init_constructor): Only skip anonymous fields
3374	if they are bitfields.
3375
3376	* cp-tree.def (TYPEOF_TYPE): New code.
3377	* error.c (dump_type_real): Handle it.
3378	* pt.c (tsubst): Likewise.
3379	* tree.c (search_tree): Likewise.
3380	* semantics.c (finish_typeof): New fn.
3381	* parse.y (typespec): Use it.
3382	* cp-tree.h: Declare it.
3383
33841998-10-26  Manfred Hollstein  <manfred@s-direktnet.de>
3385
3386	* cp-tree.h (FORMAT_VBASE_NAME): Make definition unconditional.
3387
33881998-10-26  Jason Merrill  <jason@yorick.cygnus.com>
3389
3390	* typeck.c (convert_arguments): Don't handle pmf references
3391	specially.
3392
3393	* init.c (build_member_call): Don't try to convert to the base type
3394	if it's ambiguous or pedantic.
3395
3396	* typeck2.c (check_for_new_type): Only depend on pedantic for
3397	C-style casts.
3398
33991998-10-25  Mark Mitchell  <mark@markmitchell.com>
3400
3401	* decl.c (grokdeclarator): Set DECL_NONCONVERTING_P for all
3402	non-converting constructors.
3403
34041998-10-24  Martin von L�wis  <loewis@informatik.hu-berlin.de>
3405
3406	* gxxint.texi: Correct documentation for n, N, Q, and B.
3407
34081998-10-23  Martin von L�wis  <loewis@informatik.hu-berlin.de>
3409
3410	* parse.y (condition): Convert VAR_DECL from reference to indirect
3411	reference.
3412
34131998-10-23  Andrew MacLeod  <amacleod@cygnus.com>
3414
3415	* exception.cc (__cp_pop_exception): Free the original exception
3416	value, not the potentially coerced one.
3417
34181998-10-23  Mark Mitchell  <mark@markmitchell.com>
3419
3420	* Makefile.in (hash.h): Run gperf when necessary.
3421
3422	* cp-tree.h (CP_TYPE_READONLY): Remove.
3423	(CP_TYPE_VOLATILE): Likewise.
3424	(CP_TYPE_QUALS): New macro.
3425	(CP_TYPE_CONST_P): Likewise.
3426	(CP_TYPE_VOLATILE_P): Likewise.
3427	(CP_TYPE_RESTRICT_P): Likewise.
3428	(CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
3429	(cp_build_type_variant): Rename to ...
3430	(cp_build_qualified_type): New function.
3431	(c_apply_type_quals_to_decl): Declare.
3432	(SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
3433	(SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
3434	(cp_type_qual_from_rid): New function.
3435	(compparms): Remove unused parameter.  All callers changed.
3436	(cp_type_quals): New function.
3437	(at_least_as_qualified_p): Likewise.
3438	(more_qualified_p): Likewise.
3439
3440	* call.c (standard_conversion): Replace calls to
3441	cp_build_type_variant with cp_build_qualified_type.  Use
3442	CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
3443	compare them.  Use CP_TYPE_* macros to check qualifiers.
3444	(reference_binding): Likewise.
3445	(implicit_conversion): Likewise.
3446	(add_builtin_candidates): Likewise.
3447	(build_over_call): Likewise.
3448	* class.c (overrides): Compare all qualifiers, not just `const',
3449	on method declarations.
3450	* cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
3451	(convert_pointer_to_real): Likewise.
3452	(type_promotes_to): Likewise.
3453	* decl.c (check_for_uninitialized_const_var): New function.
3454	(init_decl_processing): More CP_TYPE_QUALS conversion, etc.
3455	(cp_finish_decl): Use check_for_uninitialized_const_var.
3456	(grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
3457	handle `restrict'.
3458	(grok_ctor_properties): Likewise.
3459	(grok_op_properties): Likewise.
3460	(start_function): Likewise.
3461	(rever_static_member_fn): Likewise.
3462	* decl2.c (grok_method_quals): Likewise.
3463	(grokfield): Likewise.
3464	* error.c (dump_readonly_or_volatile): Rename to ...
3465	(dump_qualifiers): New function.  Handle `restrict'.
3466	(dump_type_real): Use it.
3467	(dump_aggr_type): Likewise.
3468	(dump_type_prefix): Likewise.
3469	(dump_type_suffix): Likewise.
3470	(dump_function_decl): Likewise.
3471	(cv_as_string): Likewise.
3472	* gxx.gperf: Add __restrict and __restrict__.
3473	* gxxint.texi: Document `u' as used for `__restrict', and a few
3474	other previously undocumented codes.
3475	* hash.h: Regenerated.
3476	* init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
3477	(build_member_call): Likewise.
3478	(build_new_1): Likewise.
3479	* lex.c (init_parse): Add entry for RID_RESTRICT.
3480	(cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
3481	(cp_type_qual_from_rid): Define.
3482	* lex.h (enum rid): Add RID_RESTRICT.
3483	* method.c (process_modifiers): Deal with `restrict'.
3484	* parse.y (primary): More CP_TYPE_QUALS conversion, etc.
3485	* parse.c: Regenerated.
3486	* pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
3487	(tsubst_aggr_type): Likewise.
3488	(tsubst): Likewise.
3489	(check_cv_quals_for_unify): Likewise.
3490	(unify): Likewise.
3491	* rtti.c (init_rtti_processing): Likewise.
3492	(build_headof): Likewise.
3493	(get_tinfo_var): Likewise.
3494	(buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
3495	(expand_class_desc): Likewise.
3496	(expand_attr_desc): Likewise.
3497	(synthesize_tinfo_fn): Likewise.
3498	* search.c (covariant_return_p): Likewise.  Fix `volatile' handling.
3499	(get_matching_virtual): Likewise.
3500	(expand_upcast_fixups): Likewise.
3501	* sig.c (build_signature_pointer_or_reference_name): Take
3502	type_quals, not constp and volatilep.
3503	(build_signature_pointer_or_reference_type): Likewise.
3504	(match_method_types): More CP_TYPE_QUALS conversion, etc.
3505	(build_signature_pointer_constructor): Likewise.
3506	(build_signature_method_call): Likewise.
3507	* tree.c (build_cplus_array_type): Likewise.
3508	(cp_build_type_variant): Rename to ...
3509	(cp_build_qualified_type): New function.  Deal with `__restrict'.
3510	(canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
3511	(build_exception_variant): Likewise.
3512	(mapcar): Likewise.
3513	* typeck.c (qualif_type): Likewise.
3514	(common_type): Likewise.
3515	(comptypes): Likewise.
3516	(comp_cv_target_types): Likewise.
3517	(at_least_as_qualified_p): Define.
3518	(more_qualified_p): Likewise.
3519	(comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
3520	(compparms): Likewise.
3521	(inline_conversion): Likewise.
3522	(string_conv_p): Likewise.
3523	(build_component_ref): Likewise.
3524	(build_indirect_ref): Likewise.
3525	(build_array_ref): Likewise.
3526	(build_unary_op): Likewise.
3527	(build_conditional_expr): Likewise.
3528	(build_static_cast): Likewise.
3529	(build_c_cast): Likewise.
3530	(build_modify_expr): Likewise.
3531	(convert_For_assignment): Likewise.
3532	(comp_ptr_ttypes_real): Likewise.
3533	(cp_type_quals): New function.
3534
35351998-10-23  Jason Merrill  <jason@yorick.cygnus.com>
3536
3537	* cp-tree.h (CP_TYPE_READONLY): New macro to handle arrays.
3538	(CP_TYPE_VOLATILE): Likewise.
3539	* decl.c (grokdeclarator): Use them.
3540	* tree.c (canonical_type_variant): Likewise.
3541
35421998-10-22  Martin von L�wis  <loewis@informatik.hu-berlin.de>
3543
3544	* parse.y (named_class_head): Push into class while parsing the
3545	base class list.
3546	* decl2.c (push_scope, pop_scope): New functions.
3547	* cp-tree.h: Declare them.
3548	* init.c (build_new_1): Delay cleanup until end of full expression.
3549
35501998-10-21  Jason Merrill  <jason@yorick.cygnus.com>
3551
3552	* typeck.c (build_component_ref): Use of a type here is an error.
3553
35541998-10-19  Jason Merrill  <jason@yorick.cygnus.com>
3555
3556	Revamp references to member functions.
3557	* method.c (hack_identifier): Call build_component_ref for a
3558	reference to a member function.
3559	* typeck.c (build_component_ref): Only return a single function
3560	if it's static.  Otherwise, return a COMPONENT_REF.
3561	(build_x_function_call): Handle a COMPONENT_REF.
3562	(build_unary_op): Handle all unknown-type things.
3563	* decl2.c (arg_assoc): Handle COMPONENT_REF.
3564	* class.c (instantiate_type): Complain if the function we get is a
3565	nonstatic member function.  Remove code for finding "compatible"
3566	functions.
3567	* pt.c (tsubst_copy): Handle NOP_EXPR.
3568	* tree.c (build_dummy_object): New fn.
3569	(maybe_dummy_object): New fn.
3570	(is_dummy_object): New fn.
3571	* cp-tree.h: Declare them.
3572	* cvt.c (cp_convert_to_pointer): Use maybe_dummy_object.
3573	* error.c (dump_expr, case OFFSET_REF): Use is_dummy_object.
3574	* init.c (build_member_call): Use maybe_dummy_object and
3575	is_dummy_object.
3576	(build_offset_ref): Use maybe_dummy_object.
3577	(resolve_offset_ref): Use is_dummy_object.
3578	* typeck.c (build_x_function_call): Call build_dummy_object.
3579	(unary_complex_lvalue): Call is_dummy_object.
3580
3581	* typeck.c (build_component_addr): Make sure field is a field.
3582
3583	* call.c (build_new_op): Delete obsolete code.
3584
3585	* pt.c (tsubst, TEMPLATE*PARM*): Abort if we don't have any args.
3586
35871998-10-18  Martin von L�wis  <loewis@informatik.hu-berlin.de>
3588
3589	* decl2.c (validate_nonmember_using_decl): Fix using-directives of
3590	std if std is ignored.
3591
35921998-10-18  Jason Merrill  <jason@yorick.cygnus.com>
3593
3594	* decl.c (grokvardecl): Fix thinko.
3595
3596	* decl.c (grokdeclarator): Embedded attrs bind to the right,
3597	not the left.
3598
3599	* parse.y (fn.def2): Fix 'attrs' format.
3600
36011998-10-18  Alastair J. Houghton  <ajh8@doc.ic.ac.uk>
3602
3603	* Makefile.in (CONFLICTS): Update.
3604	* parse.y (expr_or_declarator_intern): New rule.
3605	(expr_or_declarator, direct_notype_declarator, primary,
3606	functional_cast): Use it.
3607	(notype_declarator_intern): New rule.
3608	(notype_declarator, complex_notype_declarator): Use it.
3609
36101998-10-17  Jason Merrill  <jason@yorick.cygnus.com>
3611
3612	* decl.c (grokfndecl): Set DECL_CONTEXT to namespace if appropriate.
3613	(grokvardecl): Likewise.
3614
3615Sat Oct 17 23:27:20 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3616
3617	* class.c (make_method_vec): Cast 1st argument of `bzero' to (PTR).
3618	(add_method): Likewise for arguments 1 & 2 of `bcopy'.
3619
3620	* decl.c (signal_catch): Mark with ATTRIBUTE_NORETURN.
3621
3622	* pt.c (process_partial_specialization): Cast 1st argument of
3623	`bzero' to (PTR).
3624
3625	* tree.c (build_base_fields): Cast `base_align' to (int) when
3626	comparing against one.
3627
36281998-10-16  Mark Mitchell  <mark@markmitchell.com>
3629
3630	* decl.c (lookup_name_real): Handle template parameters for member
3631	templates where said parameters have the same name as the
3632	surrounding class.
3633
3634	* decl.c (expand_static_init): Build cleanups before entering the
3635	anonymous function used to do them to avoid access-checking
3636	confusion.
3637
3638	* decl.c (grokfndecl): Add back call to cplus_decl_attributes
3639	accidentally removed by previous change, and make DECL_RTL here.
3640	* class.c (add_method): Don't make DECL_RTL here.
3641
3642	* pt.c (for_each_template_parm): Don't examine uninstantiated
3643	default arguments.
3644
36451998-10-16  Dave Brolley  <brolley@cygnus.com>
3646
3647	* lex.c (real_yylex): Fix unaligned access of wchar_t.
3648
36491998-10-16  Mark Mitchell  <mark@markmitchell.com>
3650
3651	* class.c (add_method): Fix documentation to reflect previous
3652	changes.  Check for duplicate method declarations here.
3653	* decl.c (decls_match): Handle FUNCTION_DECL vs TEMPLATE_DECL
3654	correctly; such things never match.
3655	(grokfndecl): Don't look for duplicate methods here.
3656	* decl2.c (check_classfn): Don't assume names are mangled.
3657	Don't add bogus member function declarations to a class before the
3658	class type is complete.
3659	(grokfield): Reformat error message.
3660	* method.c (set_mangled_name_for_decl): Don't mangle names while
3661	processing_template_decl.
3662
36631998-10-16  Jason Merrill  <jason@yorick.cygnus.com>
3664
3665	* typeck.c (build_indirect_ref): Complain about a pointer to data
3666	member, too.
3667	* typeck2.c (build_m_component_ref): Don't indirect a pointer to
3668	data member.
3669	* init.c (resolve_offset_ref): Don't undo the above.
3670
3671	* cp-tree.h (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): New macros.
3672	(struct lang_decl_flags): Add `bitfield'.
3673	* class.c (finish_struct_1): Use DECL_C_BIT_FIELD instead of
3674	DECL_BIT_FIELD.
3675	* decl2.c (grokbitfield, grok_alignof): Likewise.
3676	* init.c (build_offset_ref): Likewise.
3677	* typeck.c (build_component_addr, expr_sizeof): Likewise.
3678	* cvt.c (build_up_reference): Don't crash if taking the address
3679	returns error_mark_node.
3680
3681	* decl.c (grokfndecl): Also check ctype when checking for ::main().
3682
36831998-10-15  Jason Merrill  <jason@yorick.cygnus.com>
3684
3685	* decl.c (grokfndecl): ::main and __builtin_* get C linkage.
3686	Do mangling here.
3687	(grokdeclarator): Instead of here.
3688	* friend.c (do_friend): Lose special handling of ::main and
3689	__builtin_*.
3690	* cp-tree.h (DECL_MAIN_P): Check for C linkage.
3691
3692	* spew.c (yylex): Clear looking_for_typename if we got
3693	'enum { ... };'.
3694
36951998-10-15  Mark Mitchell  <mark@markmitchell.com>
3696
3697	* class.c (maybe_warn_about_overly_private_class): Improve error
3698	messages for class with only private constructors.
3699
3700	* cp-tree.def (TYPENAME_TYPE): Add to documentation.
3701	* cp-tree.h (TYPENAME_TYPE_FULLNAME): Document.
3702	(build_typename_type): New function.
3703	* decl.c (build_typename_type): Broken out from ...
3704	(make_typename_type): Use it.
3705	* search.c (lookup_field): Likewise.
3706
37071998-10-14  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
3708
3709	* pt.c (convert_nontype_argument): Check against type_referred_to.
3710	* decl.c (grokvardecl): Check for declarator name before building
3711	DECL_ASSEMBLER_NAME.
3712
37131998-10-14  Mark Mitchell  <mark@markmitchell.com>
3714
3715	* pt.c (lookup_template_class): Add comment.
3716	(instantiate_class_template): Don't mark the _TYPE node for
3717	member class templates as an instantiation.
3718
37191998-10-14  Jason Merrill  <jason@yorick.cygnus.com>
3720
3721	* decl.c (grokfndecl): Fix my thinko.
3722
37231998-10-13  Jason Merrill  <jason@yorick.cygnus.com>
3724
3725	* tinfo2.cc (fast_compare): Remove.
3726	(before): Just use strcmp.
3727	* tinfo.cc (operator==): Just use strcmp.
3728
37291998-10-13  Klaus-Georg Adams  <Klaus-Georg.Adams@chemie.uni-karlsruhe.de>
3730
3731	* decl.c (grokfndecl): Don't check for linkage in `extern "C"'
3732	declarations.
3733
37341998-10-13  Mark Mitchell  <mark@markmitchell.com>
3735
3736	* cp-tree.h (specializations_of_same_template_p): Remove.
3737	* search.c (get_template_base): Don't use it.
3738	(get_template_base_recursive): Likewise.
3739	* pt.c (specializations_of_same_template_p): Remove.
3740	(unify): Don't use it.
3741	(lookup_template_class): Find the correct parent when setting
3742	CLASSTYPE_TI_TEMPLATE.
3743
37441998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
3745
3746	* tinfo.cc (operator==): Always compare names.
3747
37481998-10-12  Herman ten Brugge  <Haj.Ten.Brugge@net.HCC.nl>
3749
3750	* decl.c (start_function): Fix cut-and-paste error.
3751
37521998-10-12  Jason Merrill  <jason@yorick.cygnus.com>
3753
3754	* inc/typeinfo: Add #pragma interface.
3755	(operator!=): Just call operator==.
3756	* tinfo.cc: Add #pragma implementation.
3757	(operator==): Move from inc/typeinfo and tinfo2.cc.
3758	Check __COMMON_UNRELIABLE instead of _WIN32.
3759
3760	* typeck2.c (my_friendly_abort): Add URL.
3761
37621998-10-12  Alastair J. Houghton  <ajh8@doc.ic.ac.uk>
3763
3764	* decl.c (start_method): Added extra parameter for attributes.
3765	* cp-tree.h (start_method): Update prototype.
3766	* parse.y (fn.def2): Update start_method parameter list.
3767
37681998-10-11  Mark Mitchell  <mark@markmitchell.com>
3769
3770	* cp-tree.h (specializations_of_same_template_p): Declare.
3771	* pt.c (specializations_of_same_template_p): New function.
3772	(unify): Use it.
3773	* search.c (get_template_base): Use it.
3774	(get_template_base_recursive): Likewise.
3775
37761998-10-10  Manfred Hollstein  <manfred@s-direktnet.de>
3777
3778	* decl2.c (start_objects): Add new variable `joiner' and
3779	initialize it properly.
3780
37811998-10-09  Mark Mitchell  <mark@markmitchell.com>
3782
3783	* search.c (expand_upcast_fixups): Tweak to match 1998-10-07
3784	change to vtable types.
3785
3786	* cvt.c (ocp_convert): Avoid infinite recursion caused by
3787	1998-10-03 change.
3788
37891998-10-08  Jason Merrill  <jason@yorick.cygnus.com>
3790
3791	* pt.c (resolve_overloaded_unification): New fn.
3792	(try_one_overload): Likewise.
3793	(unify): Don't fail on unknown type.
3794	(type_unification_real): Likewise.  Use resolve_overloaded_unification
3795	to handle an overloaded argument.
3796	(template_args_equal): Split out...
3797	(comp_template_args): From here.
3798	(determine_specialization): Also allow a template with more
3799	parms than were explicitly specified.
3800	* cp-tree.h: Add template_args_equal.
3801	* call.c (resolve_args): Remove TEMPLATE_ID_EXPR code.
3802
3803Thu Oct  8 15:58:30 1998  Anthony Green  <green@cygnus.com>
3804
3805	* semantics.c (finish_asm_stmt): Revert my 1998-09-28
3806	change.
3807
3808Thu Oct  8 06:00:19 1998  Jeffrey A Law  (law@cygnus.com)
3809
3810	* typeck.c (unsigned_type): Only return TItype nodes when
3811	HOST_BITS_PER_WIDE_INT is >= 64 bits.
3812	(signed_type): Likewise.
3813	* decl.c (intTI_type_node, unsigned_intTI_type_node): Only declare
3814	when HOST_BITS_PER_WIDE_INT is >= 64 bits.
3815	(init_decl_processing): Only create TItype nodes when
3816	HOST_BITS_PER_WIDE_INT is >= 64 bits.
3817	* cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Only declare
3818	when HOST_BITS_PER_WIDE_INT is >= 64 bits.
3819
3820Wed Oct  7 12:32:44 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3821
3822	* Makefile.in (hash.h): Add -L KR-C -F ', 0, 0' flags to gperf.
3823	(gxx.gperf): Update comments describing invocation flags.
3824	(hash.h): Regenerate using gperf 2.7.1 (19981006 egcs).
3825
38261998-10-07  Mark Mitchell  <mark@markmitchell.com>
3827
3828	* class.c (finish_struct_1): Add commentary on previous change.
3829
3830	* cp-tree.h (vtbl_ptr_type_node): New variable.
3831	* class.c (build_vtbl_ref): Don't indirect through the vptr; it's
3832	already of the right type.
3833	(finish_struct_1): Make the vptr be of type vtbl_ptr_type_node.
3834	Simplify code to grow vtable.
3835	* decl.c (vtbl_ptr_type_node): Define.
3836	(init_decl_processing): Initialize it.
3837
38381998-10-06  Mark Mitchell  <mark@markmitchell.com>
3839
3840	* cp-tree.def (PTRMEM_CST): New tree node.
3841	* cp-tree.h (ptrmem_cst): New type.
3842	(lang_type): Remove local_typedecls.
3843	(dummy): Increase to 12 bits from 11.
3844	(CLASSTYPE_LOCAL_TYPEDECLS): Remove.
3845	(PTRMEM_CST_CLASS): New macro.
3846	(PTRMEM_CST_MEMBER): Likewise.
3847	(current_access_specifier): New variable.
3848	(current_class_type): Remove duplicate declaration.
3849	(finish_struct): Change prototype.
3850	(unreverse_member_declarations): New function.
3851	(pushdecl_class_level): Change prototype.
3852	(grok_enum_decls): Remove.
3853	(fixup_anonymous_union): New function.
3854	(grok_x_components): Change prototype.
3855	(tsubst_chain): Remove.
3856	(finish_member_template_decl): Likewise.
3857	(check_explicit_specialization): Fix indentation.
3858	(finish_class_definition): Change prototype.
3859	(finish_member_class_template): Likewise.
3860	(finish_member_declaration): New function.
3861	(check_multiple_declarators): Likewise.
3862	* class.c (class_stack_node_t): New type.
3863	(current_class_base): Remove.
3864	(current_class_stack): Change type.
3865	(current_access_specifier): New variable.
3866	(grow_method): Remove.
3867	(check_member_decl_is_same_in_complete_scope): Break out from
3868	finish_struct.
3869	(make_method_vec): New function.
3870	(free_method_vec): Likewise.
3871	(add_implicitly_declared_members): Break out from finish_struct_1.
3872	(free_method_vecs): New variable.
3873	(add_method): Rework for direct use from parser.
3874	(handle_using_decl): Watch for NULL_TREE while iterating through
3875	CLASSTYPE_METHOD_VEC.
3876	(finish_struct_methods): Don't build CLASSTYPE_METHOD_VEC here;
3877	just do some error-checking.
3878	(warn_hidden): Change iteration through CLASSTYPE_METHOD_VEC.
3879	(finish_struct_1): Simplify.  Use add_implicitly_declared_members.
3880	(finish_struct): Change prototype.  Simplify; fields and methods
3881	are already set up at this point.
3882	(init_class_processing): Set up current_class_stack.
3883	(pushclass): Save current_access_specifier.
3884	(popclass): Restore it.
3885	(currently_open_class): Simplify.
3886	(build_self_reference): Remove use of CLASSTYPE_LOCAL_TYPEDECLS.
3887	* decl.c (saved_scope): Add access_specifier.
3888	(maybe_push_to_top_level): Save it.
3889	(pop_from_top_level): Restore it.
3890	(maybe_process_template_type_declaration): Use
3891	finish_member_declaration.
3892	(pushtag): Likewise.
3893	(pushdecl_class_level): Don't return a value.
3894	(fixup_anonymous_union): Break out from grok_x_components.
3895	(shadow_tag): Use it.
3896	(xref_tag): Complain about using an elaborated type specifier to
3897	reference a template type parameter or typedef name.
3898	(xref_basetypes): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
3899	(current_local_enum): Remove.
3900	(build_enumerator): Call finish_member_declaration.
3901	(grok_enum_decls): Remove.
3902	* decl2.c (grok_x_components): Simplify.
3903	(check_classfn): Change iteration through CLASSTYPE_METHOD_VEC.
3904	(grokfield): Don't set CLASSTYPE_LOCAL_TYPEDECLS.
3905	(merge_functions): Add to comment.
3906	(arg_assoc_type): Prototype.
3907	(arg_assoc): Pass as many arguments as there are parameters.
3908	* error.c (dump_expr): Handle PTRMEM_CST.  Improve handling of
3909	OFFSET_REF.
3910	* expr.c (cpls_expand_expr): Remove dead code.  Handle
3911	PTRMEM_CST.
3912	* friend.c (do_friend): Lookup friends when in nested classes.
3913	Change comments.
3914	* init.c (build_offset_ref): Do lookup even for classes that are
3915	only partially defined.
3916	(decl_constant_value): Remove dead code.
3917	* method.c (build_overload_value): Remove hack where by TYPE was
3918	not a TYPE.  Handle PTRMEM_CST.
3919	(build_template_parm_names): Don't pass a PARM_DECL where a TYPE
3920	should go.
3921	* parse.y (components, notype_components, component_decl,
3922	component_decl_1, component_declarator, component_declarator0):
3923	Now all are itype rather than ttype.  Rework to add members to
3924	classes on the fly.
3925	(typesqpecqual_reserved): Use check_multiple_declarators.
3926	(structsp): Update class to finish_class_definition.
3927	(do_xref_defn): Unsplit into named_class_head.
3928	(access_specifier): Set current_access_specifier.
3929	* pt.c (set_current_access_from_decl): New function.
3930	(finish_member_template_decl): Don't take the parameters.
3931	(comp_template_args): Make more robust.
3932	(lookup_template_class): Don't use current_local_enum.
3933	(for_each_template_parm): Handle PTRMEM_CST.
3934	(instantiate_class_template): Use set_current_access_from_decl,
3935	finish_member_declaration and unreverse_member_declarations.  Set
3936	lineno/input_filename before generating implicit member functions.
3937	(type_unification_real): Don't assume back-unification happens
3938	only for the last argument.
3939	(regenerate_decl_from_template): Call pushclass a bit earlier.
3940	(tsubst_chain): Remove.
3941	(tsubst_enum): Use set_current_access_from_decl.
3942	(set_mangled_name_for_template_decl): Fix indentation.
3943	* search.c (lookup_fnfields_1): Change iteration through
3944	CLASSTYPE_METHOD_VEC.
3945	(dfs_pushdecls): Likewise.
3946	(dfs_compress_decls): Likewise.
3947	(add_conversions): Likewise.
3948	* semantics.c (finish_class_definition): Don't take components.
3949	Change call to finish_struct.
3950	(finish_member_declaration): New function.
3951	(finish_member_class_template): Don't take template parameters.
3952	Change call to grok_x_components.  Call finish_member_template_decl.
3953	(check_multiple_declarators): New function.
3954	* sig.c (append_signature_fields): Work from the TYPE_METHODS, not
3955	a passed in fieldlist.
3956	* tree.c (search_tree): Handle PTRMEM_CST.
3957	(mapcar): Likewise.
3958	* typeck.c (unary_complex_lvalue): Build PTRMEM_CSTs, not
3959	INTEGER_CSTs, for pointer-to-data members.
3960
3961	* call.c (resolve_args): Resolve template specializations, if
3962	possible.
3963
3964Tue Oct  6 07:57:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3965
3966	* Makefile.in (spew.o): Depend on toplev.h.
3967
3968	* call.c (compare_ics): Initialize variables `deref_from_type2',
3969	`deref_to_type1' and `deref_to_type2'.
3970
3971	* except.c (get_eh_type): Hide prototype and definition.
3972	(process_start_catch_block_old): Remove unused static prototype.
3973
3974	* pt.c (tsubst_decl): Initialize variable `argvec'.
3975
3976	* spew.c: Include toplev.h.
3977
39781998-10-05  Jason Merrill  <jason@yorick.cygnus.com>
3979
3980	* pt.c (instantiate_decl): Do save and restore file position.
3981
39821998-10-05  Martin von L�wis  <loewis@informatik.hu-berlin.de>
3983
3984	* method.c (build_decl_overload_real): Clear
3985	numeric_output_need_bar after __.
3986
39871998-10-05  Nathan Sidwell  <nathan@acm.org>
3988
3989	* call.c (build_new_method_call): Issue 'incomplete type' error,
3990	if class is not defined.
3991
39921998-10-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
3993
3994	* call.c (build_object_call): Move declaration of variable
3995	`fn' into the scope where it is used.  Don't access variable
3996	`fn' when it is uninitialized, instead use `fns'.
3997
39981998-10-04  Theodore Papadopoulo  <Theodore.Papadopoulo@sophia.inria.fr>
3999
4000	* errfn.c (cp_thing): Print buf as a string not as a printf format
4001	to avoid problems with the operator%.  Consequently, `%%' sequences
4002	in format are copied as `%' in buf.
4003
40041998-10-04  Jason Merrill  <jason@yorick.cygnus.com>
4005
4006	* pt.c (pop_tinst_level): Call extract_interface_info.
4007	(instantiate_decl): Don't save and restore file position.
4008
4009	* decl.c (cp_finish_decl): Make statics in extern inlines and
4010	templates common, if possible and the target doesn't support weak
4011	symbols.
4012
4013	* decl.c (grokdeclarator): Remove redundant calls to
4014	build_type_variant and some duplicated code.
4015	* sig.c (build_signature_reference_type): Only take the type parm.
4016	(build_signature_pointer_type): Likewise.
4017	* tree.c (build_cplus_method_type): Adjust.
4018	* cp-tree.h: Update.
4019
40201998-10-04  Mark Mitchell  <mark@markmitchell.com>
4021
4022	* call.c (build_over_call): Make pedwarns about dropped qualifiers
4023	into full-fledged errors.
4024	* cvt.c (convert_to_reference): Likewise.
4025	* typeck.c (convert_for_assignment): Likewise.
4026
4027	* search.c (expand_upcast_vtables): In addition to unsetting
4028	TREE_READONLY, remove top-level const type qualifier.
4029
40301998-10-03  Mark Mitchell  <mark@markmitchell.com>
4031
4032	* class.c (current_class_ptr, current_class_ref): Clarify
4033	documentation.
4034	* cvt.c (ocp_convert): Don't expect fold to remove all trivial
4035	NOP type conversions.
4036	* decl.c (decls_match): Use comptypes directly; ignore
4037	qualifiers on the DECL.
4038	(duplicate_decls): Remove qualifier checks on DECL.
4039	(grokdeclarator): Make the type built up include top-level
4040	qualifiers.
4041	* decl2.c (do_dtors): Fix spelling error.
4042	* error.c (dump_simple_decl): Don't look at qualifiers on the decl
4043	when printing type information.
4044	* init.c (build_new_1): Add documentation.  Deal with the fact
4045	that type of allocated memory now contains qualifiers.
4046	* lex.c (is_global): Improve error-recovery.
4047	* sig.c (build_member_function_pointer): Don't cast away const
4048	on fields of sigtable_entry_type.
4049	* tree.c (lvalue_type): Don't look at top-level qualifiers on
4050	expressions.
4051	* typeck.c (decay_conversion): Likewise.
4052	(build_component_ref): Make sure the type of the COMPONENT_REF
4053	contains top-level qualifiers, as appropriate.  Improve
4054	error-handling.
4055	(build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
4056	(build_array_ref): Likewise.
4057	(build_unary_op): Improve error-recovery.
4058	(unary_complex_lvalue): Make taking the address a bound member
4059	function an error, not a sorry.
4060	(build_conditional_expr): Look at the type qualifiers, not the
4061	qualifiers on the expression itself.
4062
40631998-10-03  Jason Merrill  <jason@yorick.cygnus.com>
4064
4065	* decl2.c (merge_functions): Remove duplicates.
4066
4067	* decl2.c: Add -f{no-,}implicit-inline-templates.
4068	(import_export_decl): Check it.
4069
4070	* decl.c (lookup_name_real): Template parms also take precedence
4071	over implicit typename.  Only warn if yylex.
4072
4073	* typeck.c (build_conditional_expr): Only fold if ifexp is an
4074	INTEGER_CST.
4075
4076	* decl2.c (finish_vtable_vardecl): Check DECL_INTERFACE_KNOWN
4077	instead of linkage.
4078
40791998-10-01  Jason Merrill  <jason@yorick.cygnus.com>
4080
4081	* cp-tree.h (FORMAT_VBASE_NAME): New macro.
4082	* class.c (build_vbase_pointer): Use it.
4083	* rtti.c (expand_class_desc): Likewise.
4084	* tree.c (build_vbase_pointer_fields): Likewise.
4085
4086Thu Oct  1 10:43:45 1998  Nick Clifton  <nickc@cygnus.com>
4087
4088	* decl.c (start_decl): Add invocation of
4089	SET_DEFAULT_DECL_ATTRIBUTES, if defined.
4090	(start_function): Add invocation of
4091	SET_DEFAULT_DECL_ATTRIBUTES, if defined.
4092
4093	* lex.c: Replace occurrences of HANDLE_SYSV_PRAGMA with
4094	HANDLE_GENERIC_PRAGMAS.
4095
40961998-09-28  Anthony Green  <green@cygnus.com>
4097
4098	* semantics.c (finish_asm_stmt): Always permit volatile asms.
4099
41001998-09-28  Mark Mitchell  <mark@markmitchell.com>
4101
4102	* decl.c (grokdeclarator): Tighten checks for invalid
4103	destructors.  Improve error-messages and error-recovery.
4104	* decl2.c (check_classfn): Don't assume that mangled destructor
4105	names contain type information.
4106
41071998-09-25  Jason Merrill  <jason@yorick.cygnus.com>
4108
4109	* search.c (get_base_distance): Remove assert.
4110
4111	* decl2.c (build_anon_union_vars): Don't process a field with no
4112	name.
4113	(finish_anon_union): Also complain about local anon unions with no
4114	members.
4115
41161998-09-25  Martin von L�wis  <loewis@informatik.hu-berlin.de>
4117
4118	* decl.c (lookup_namespace_name): If the name is a namespace,
4119	return it immediately.
4120
4121Fri Sep 25 11:45:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4122
4123	* cp-tree.h (define_case_label): Remove unused parameter.
4124	(check_java_method): Likewise.
4125	(grokclassfn): Likewise.
4126	(expand_aggr_init): Likewise.
4127	(build_x_delete): Likewise.
4128	(maybe_end_member_template_processing): Likewise.
4129	(unshare_base_binfos): Add prototype.
4130	(string_conv_p): Likewise.
4131	(my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
4132
4133	* cvt.c (build_up_reference): Remove unused parameter
4134	`checkconst', all callers changed.
4135	(build_type_conversion): Mark parameter `code' with
4136	ATTRIBUTE_UNUSED.
4137	(build_expr_type_conversion): Initialize variable `conv'.
4138
4139	* decl.c (push_namespace): Initialize variable `d'.
4140	(define_case_label): Remove unused parameter `decl', all callers
4141	changed.
4142
4143	* decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
4144	`argc' with ATTRIBUTE_UNUSED.
4145	(grokclassfn): Remove unused parameter `cname', all callers
4146	changed.
4147	(check_java_method): Likewise for parameter `ctype'.
4148	(copy_assignment_arg_p): Mark parameter `virtualp' with
4149	ATTRIBUTE_UNUSED.
4150	(finish_prevtable_vardecl): Likewise for parameter `prev'.
4151
4152	* expr.c (extract_init): Likewise for parameters `decl' and `init'.
4153
4154	* init.c (expand_aggr_init_1): Remove unused parameter
4155	`alias_this', all callers changed.
4156	(expand_aggr_init): Likewise.
4157	(expand_default_init): Likewise.
4158	(build_new_1): Initialize variable `susp'.
4159	(build_x_delete): Remove unused parameter `type', all callers
4160	changed.
4161
4162	* lex.c (set_typedecl_interface_info): Mark parameter `prev' with
4163	ATTRIBUTE_UNUSED.
4164	(readescape): Use (unsigned) value in shift.
4165	(real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
4166	comparing to a signed quantity.
4167
4168	* pt.c (maybe_end_member_template_processing): Remove unused
4169	parameter `decl', all callers changed.
4170	(check_explicit_specialization): Add braces around empty body in
4171	an else-statement.
4172	(current_template_args): Initialize variable `args'.
4173	(lookup_template_class): Likewise for variable `prev_local_enum'.
4174	(tsubst_decl): Likewise for variable `r'.
4175	(set_mangled_name_for_template_decl): Initialize variable
4176	`context'.
4177
4178	* spew.c (scan_tokens): Change type of parameter `n' to unsigned.
4179	Likewise for variable `i'.
4180	(yylex): Initialize variable `trrr'.
4181
4182	* typeck.c (compparms): Mark variable `strict' with
4183	ATTRIBUTE_UNUSED.
4184
4185	* xref.c (simplify_type): Cast argument of ctype function to
4186	`unsigned char'.
4187
41881998-09-24  Mark Mitchell  <mark@markmitchell.com>
4189
4190	* cp-tree.h (language_lvalue_valid): Remove.
4191	* decl.c (grokdeclarator): Don't disallow references to functions.
4192	* tree.c (lvalue_p_1): New function, combining duplicated
4193	code from ...
4194	(lvalue_p): Use it.
4195	(real_lvalue_p): Likewise.
4196	* typeck.c (language_lvalue_valid): Remove.
4197	(build_modify_expr): Treat FUNCTION_TYPEs as readonly, even though
4198	they don't have TREE_READONLY set.
4199	* typeck2.c (readonly_error): Add case for FUNCTION_DECLs.
4200
42011998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4202
4203	* spew.c (yylex): Give diagnostic.
4204	* hash.h (is_reserved_word): Add export.
4205	* gxx.gperf: Likewise.
4206	* lex.h (rid): Add RID_EXPORT.
4207	* lex.c (init_parse): Likewise.
4208
4209Tue Sep 22 21:01:19 1998  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
4210
4211	* friend.c (do_friend): Make warning a full sentence.
4212
42131998-09-22  Mark Mitchell  <mark@markmitchell.com>
4214
4215	* parse.y (component_decl_list): Improve error-recovery.
4216
42171998-09-22  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4218
4219	* decl.c (make_typename_type): Move error to point where name
4220	variable can be used by dump_type.
4221
42221998-09-22  Mark Mitchell  <mark@markmitchell.com>
4223
4224	* decl.c (grokfndecl): Improve error-recovery.
4225	* decl2.c (grokfield): Likewise.
4226	* pt.c (finish_member_template_decl): Likewise.
4227
42281998-09-20  Martin von L�wis  <loewis@informatik.hu-berlin.de>
4229
4230	* method.c (hack_identifier): Finding multiple members is always
4231	an error.
4232
42331998-09-21  Per Bothner  <bothner@cygnus.com>
4234
4235	* Make-lang.in (c++-filt):  Link libiberty.a after cxxmain.o.
4236
4237Mon Sep 21 01:53:05 1998  Felix Lee  <flee@cygnus.com>
4238
4239	* lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
4240
42411998-09-20  Mark Mitchell  <mark@markmitchell.com>
4242
4243	* class.c (maybe_warn_about_overly_private_class): Reformat.
4244
42451998-09-17  Andrew MacLeod  <amacleod@cygnus.com>
4246
4247	* exception.cc (__cplus_type_matcher): Realign some code.
4248
42491998-09-16  Mark Mitchell  <mark@markmitchell.com>
4250
4251	* Make-lang.in (tinfo.o): Use CXXFLAGS when compiling.
4252	(tinfo2.o): Likewise.
4253	(exception.o): Likewise.
4254	(new.o): Likewise.
4255	(opnew.o): Likewise.
4256	(opnewnt.o): Likewise.
4257	(opvnew.o): Likewise.
4258	(opvnewnt.o): Likewise.
4259	(opdel.o): Likewise.
4260	(opdelnt.o): Likewise.
4261	(opvdel.o): Likewise.
4262	(opvdelnt.o): Likewise.
4263
42641998-09-16  Richard Henderson  <rth@cygnus.com>
4265
4266	* decl.c (init_decl_processing): Kill __builtin_fp and __builtin_sp.
4267
42681998-09-15  Alexandre Oliva  <oliva@dcc.unicamp.br>
4269
4270	* call.c (build_field_call): Handle static data members too.
4271
4272	* typeck.c (comptypes): When comparing pointer types, check
4273	whether referred types match even in strictest modes.
4274
42751998-09-15  Mark Mitchell  <mark@markmitchell.com>
4276
4277	* cp-tree.h: Revert previous change.
4278	(finish_struct_methods): Remove declaration.
4279	* class.c: Revert previous change.
4280	(maybe_warn_about_overly_private_class): New function.
4281	(finish_struct_methods): Declare here, and make static.  Remove
4282	unnecessary parameters.  Tidy slightly.  Use
4283	maybe_warn_about_overly_private_class.
4284	(finish_struct_1): Adjust.  Remove check for private constructors,
4285	now done elsewhere.
4286	(finish_struct): Adjust.
4287
42881998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
4289
4290	* except.c (expand_start_catch_block): No need to check for new
4291	exception model.
4292	(process_start_catch_block_old): Deleted.
4293	(process_start_catch_block): Add call to start_decl_1().
4294	(expand_end_catch_block): Add call to end_catch_handler().
4295	* exception.cc (__cplus_type_matcher): Only check the exception
4296	language if there is an exception table.
4297
42981998-09-15  Andrew MacLeod  <amacleod@cygnus.com>
4299
4300	* search.c (expand_indirect_vtbls_init): Mark temporary stack slots
4301	as used to prevent conflicts with virtual function tables.
4302
43031998-09-14  Mark Mitchell  <mark@markmitchell.com>
4304
4305	* cp-tree.h (lang_type): Add has_non_private_static_mem_fn.
4306	(CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN): New macro, to access it.
4307	* class.c (maybe_class_too_private_p): New function.
4308	(finish_struct_methods): Use it.
4309	(finish_struct_1): Likewise.
4310	(finish_struct): Set CLASSTYPE_HAS_NON_PRIVATE_STATIC_MEM_FN if
4311	appropriate.
4312
4313	* pt.c (check_specialization_scope): Fix spelling error.
4314	(check_explicit_specialization): Remove code to handle explicit
4315	specializations in class scope; they are now correctly diagnosed
4316	as errors.
4317
43181998-09-10  Mark Mitchell  <mark@markmitchell.com>
4319
4320	* decl.c (pushdecl): Don't copy types if the
4321	DECL_ABSTRACT_ORIGIN of the new decl matches the TYPE_NAME of the
4322	type.
4323
43241998-09-09  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
4325
4326	* class.c (get_enclosing_class): New function.
4327	(is_base_of_enclosing_class): Likewise.
4328	* cp-tree.h (get_enclosing_class): Declare.
4329	(is_base_of_enclosing_class): Likewise.
4330	* pt.c (coerce_template_parms): Use them.
4331
43321998-09-09  Jason Merrill  <jason@yorick.cygnus.com>
4333
4334	* g++spec.c (lang_specific_driver): Check whether MATH_LIBRARY is
4335	null to decide whether to use it.
4336
4337	* error.c (dump_type_real): Handle NAMESPACE_DECL.
4338	* parse.y (base_class.1): Avoid crash on error.
4339
43401998-09-08  Martin von L�wis  <loewis@informatik.hu-berlin.de>
4341
4342	* decl.c (make_typename_type): If context is a namespace, the code
4343	is in error.
4344
43451998-09-08  Mumit Khan  <khan@xraylith.wisc.edu>
4346
4347	* parse.y (nomods_initdcl0): Set up the parser stack correctly.
4348
43491998-09-08  Mark Mitchell  <mark@markmitchell.com>
4350
4351	* cp-tree.h (anonymous_namespace_name): Declare.
4352	* decl.c: Define it.
4353	(push_namespace): Use anonymous_namespace_name, rather than local
4354	static anon_name.
4355	* error.c (dump_decl): If a namespace is named
4356	anonymous_namespace_name, call it {anonymous}.
4357
4358	* decl.c (grokparms): Distinguish between references and pointers
4359	in error message.
4360
43611998-09-08  Richard Henderson  <rth@cygnus.com>
4362	    Mark Mitchell  <mark@markmitchell.com>
4363
4364	* pt.c (process_partial_specialization): Consistently allocate
4365	and zero tpd.parms based on ntparms.  Use tpd2.parms, not
4366	tpd.parms, where appropriate.
4367
4368Sun Sep  6 00:00:51 1998  Jeffrey A Law  (law@cygnus.com)
4369
4370	* Makefile.in (INCLUDES): Update after recent toplevel gcc
4371	reorganizations.
4372
43731998-09-05  Mark Mitchell  <mark@markmitchell.com>
4374
4375	* cp-tree.h (TI_PENDING_SPECIALIZATION_FLAG): Remove.
4376	* class.c (finish_struct): Remove hackery to deal with explicit
4377	specializations in class scope.
4378	* decl.c (grokfndecl): Improve error-recovery.
4379	* decl2.c (grokfield): Likewise.
4380	* pt.c (check_specialization_scope): New function.
4381	(begin_specialization): Call it.
4382	(process_partial_specialization): New function, split out from
4383	push_template_decl.  Check partial specializations more
4384	stringently.
4385	(push_template_decl): Call it.
4386	(check_explicit_specialization): Don't attempt to handle explicit
4387	specializations in class scope.
4388	(template_parm_data): Document.  Add current_arg and
4389	arg_uses_template_parms.
4390	(mark_template_parm): Set it.
4391	(tsubst_arg_types): Remove unused variable.
4392	* semantics.c (begin_class_definition): Tweak.
4393
43941998-09-04  Mark Mitchell  <mark@markmitchell.com>
4395
4396	* inc/typeinfo (type_info::type_info(const char*)): Make
4397	`explicit'.
4398
4399	* cp-tree.h (hash_tree_cons_simple): New macro.
4400	* pt.c (tsubst_arg_types): New function.  Use hash_tree_cons.
4401	(coerce_template_parms): Use make_temp_vec, instead of
4402	make_tree_vec.  Document this behavior.
4403	(lookup_template_class): Likewise.
4404	(tsubst, cases METHOD_TYPE, FUNCTION_TYPE): Use tsubst_arg_types.
4405	Remove dead code (and add assertion to check its deadness).  Fix
4406	bug w.r.t. exception specifications.
4407
44081998-09-03  Jason Merrill  <jason@yorick.cygnus.com>
4409
4410	* decl2.c (import_export_vtable): Always make artificials comdat.
4411	(import_export_decl): Likewise.
4412	* pt.c (mark_decl_instantiated): Likewise.
4413
44141998-09-03  Mark Mitchell  <mark@markmitchell.com>
4415
4416	* cp-tree.h (finish_globally_qualified_member_call_expr):
4417	Rename to ...
4418	(finish_qualified_call_expr).
4419	* semantics.c: Likewise.
4420	* parse.y (primary): Use it.
4421	* method.c (hack_identifier): Remove redundant code.
4422
4423	* init.c (resolve_offset_ref): Call convert_from_reference to
4424	handle members of reference type.  Improve error recovery.
4425
44261998-09-03  Benjamin Kosnik  <bkoz@cygnus.com>
4427
4428	* cp-tree.h: Declare warn_nontemplate_friend.
4429	* decl2.c (lang_decode_option): Set.
4430	* lang-options.h: Add -Wnon-template-friend.
4431	* friend.c (do_friend): Use to toggle non-template function warning.
4432
44331998-09-03  Mark Mitchell  <mark@markmitchell.com>
4434
4435	* decl.c (finish_enum): Don't resolve CONST_DECLs to their
4436	corresponding INTEGER_CSTs when processing_template_decl.
4437	* pt.c (tsubst_enum): Tweak accordingly.
4438
44391998-09-03  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
4440
4441	* decl.c (pushdecl_class_level): Add warning here.
4442	(pushdecl): Tweak.
4443
44441998-09-02  Jason Merrill  <jason@yorick.cygnus.com>
4445
4446	* cvt.c (convert_pointer_to_real): Tidy.
4447	* search.c (get_base_distance_recursive): Simplify.
4448	(get_base_distance): Likewise.
4449
4450	* pt.c (unify): Only special-case INTEGER_TYPE if it uses template
4451	parms.
4452
4453Wed Sep 02 09:25:29 1998  Nick Clifton  <nickc@cygnus.com>
4454
4455	* lex.c (check_newline):  Call HANDLE_PRAGMA before
4456	HANDLE_SYSV_PRAGMA if both are defined.  Generate warning messages
4457	if unknown pragmas are encountered.
4458	(handle_sysv_pragma): Interpret return code from
4459	handle_pragma_token ().  Return success/failure indication rather
4460	than next unprocessed character.
4461	(pragma_getc): New function: retrieves characters from the
4462	input stream.  Defined when HANDLE_PRAGMA is defined.
4463	(pragma_ungetc): New function: replaces characters back into the
4464	input stream.  Defined when HANDLE_PRAGMA is defined.
4465
44661998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
4467
4468	* decl2.c (output_vtable_inherit): Use %cDIGIT in the operands.
4469	* class.c (build_vtable_entry_ref): Likewise.
4470
44711998-09-01  Mark Mitchell  <mark@markmitchell.com>
4472
4473	* cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): New macro.
4474	* decl2.c (import_export_decl): Likewise.
4475	* pt.c (instantiate_decl): Use it.
4476
44771998-09-01  Jason Merrill  <jason@yorick.cygnus.com>
4478
4479	* decl.c (lookup_name_real): Also do implicit typename thing for
4480	artificial TYPE_DECLs.
4481	* search.c (lookup_field): Likewise.
4482	(lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
4483	* semantics.c (begin_constructor_declarator): Use enter_scope_of.
4484	(enter_scope_of): Extract type from implicit typename.
4485	(begin_class_definition): Likewise.
4486	* lex.c (identifier_type): Handle implicit typename when checking
4487	for SELFNAME.
4488
4489	* cp-tree.h: Declare flag_strict_prototype.
4490	* lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
4491	-fstrict-prototype.
4492	* decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
4493	specified, set it to the value of pedantic.
4494
44951998-09-01  Mark Mitchell  <mark@markmitchell.com>
4496
4497	* decl2.c (arg_assoc): Handle template-id expressions as arguments.
4498
44991998-08-31  Mark Mitchell  <mark@markmitchell.com>
4500
4501	* decl.c (finish_enum): Handle member enums of classes declared in
4502	template functions.
4503
4504	* decl2.c (grok_x_components): Strip attributes before calling
4505	groktypename.
4506
45071998-08-31  Jason Merrill  <jason@yorick.cygnus.com>
4508
4509	* cp-tree.h, decl2.c: Remove support for -fall-virtual,
4510	-fenum-int-equivalence and -fno-nonnull-objects.
4511	* class.c (check_for_override): Remove support for -fall-virtual.
4512	(finish_struct_1): Likewise.
4513	* call.c (build_new_op): Remove support for -fenum-int-equivalence.
4514	* typeck.c (build_binary_op_nodefault): Likewise.
4515	* cvt.c (ocp_convert): Likewise.
4516	* call.c (build_vfield_ref): Remove support for -fno-nonnull-objects.
4517	* class.c (build_vbase_path): Likewise.
4518
4519Sun Aug 30 22:16:31 1998  H.J. Lu  (hjl@gnu.org)
4520
4521	* Makefile.in (INTERFACE): New, set to 1.
4522
45231998-08-30  Mark Mitchell  <mark@markmitchell.com>
4524
4525	* error.c (dump_decl): Use CP_DECL_CONTEXT, not DECL_CONTEXT, when
4526	comparing with global_namespace.
4527	(dump_aggr_type): Likewise.
4528
4529	* decl.c (grokfndecl): Issue error on declaration of friend
4530	templates with explicit template arguments.
4531
4532	* pt.c (convert_template_argument): New function, split out
4533	from...
4534	(coerce_template_parms): Here.
4535	(tsubst): Attempt better error-recovery.
4536
45371998-08-28  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4538
4539	* pt.c (decl_template_parm_p): Add checks for
4540	TEMPLATE_TEMPLATE_PARM.
4541
45421998-08-28  Mark Mitchell  <mark@markmitchell.com>
4543
4544	* lex.c (do_identifier): Fix thinko in previous change.
4545
45461998-08-28  Jason Merrill  <jason@yorick.cygnus.com>
4547
4548	* search.c (dfs_search, binfo_for_vtable, dfs_bfv_helper): New fns.
4549	* decl2.c (output_vtable_inherit): Call binfo_for_vtable.
4550
45511998-08-28  Richard Henderson  <rth@cygnus.com>
4552
4553	Add support for discarding unused virtual functions.
4554	* lang-options.h: Add -fvtable-gc.
4555	* cp-tree.h: Add flag_vtable_gc.
4556	* decl2.c (output_vtable_inherit): New fn.
4557	(finish_vtable_vardecl): Call it.
4558	* class.c (build_vtable_entry_ref): New fn.
4559	(build_vtbl_ref): Call it.
4560
45611998-08-28  Mark Mitchell  <mark@markmitchell.com>
4562
4563	* cp-tree.h (build_enumerator): Take the enumeration type as a
4564	parameter.
4565	* decl.c (finish_enum): Don't set the TREE_TYPE for the
4566	enumeration constant values if we're processing_template_decls.
4567	Don't set the type for the CONST_DECLs either; that's done in
4568	build_enumerator.
4569	(build_enumerator): Take the enumeration type as a
4570	parameter.
4571	* lex.c (do_identifier): Don't resolve enumeration constants while
4572	processing template declarations, even if they happen to be
4573	TEMPLATE_PARM_INDEXs.
4574
4575	* parse.y (current_enum_type): New variable.
4576	(primary): Don't allow statement-expression in local classes just
4577	as we don't in global classes.
4578	(structsp): Use current_enum_type.
4579	(enum_list): Likewise.
4580	* pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
4581	finish_enum; they no longer occur.
4582
4583	* cp-tree.h (finish_base_specifier): New function.
4584	* parse.y (base_class): Use it.
4585	* semantics.c (finish_base_specifier): Define it.
4586
4587	* parse.y (structsp): Warn on use of typename outside of template
4588	declarations.
4589
45901998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
4591
4592	* lex.c (handle_cp_pragma): Remove #pragma vtable.
4593	* lang-options.h: Remove +e options.
4594	* decl2.c (lang_decode_option): Likewise.
4595	(import_export_vtable): Don't check write_virtuals.
4596	(finish_vtable_vardecl, finish_file): Likewise.
4597	* search.c (dfs_debug_mark): Likewise.
4598	* semantics.c (begin_class_definition): Likewise.
4599	* class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
4600
4601	* call.c (build_over_call): Check flag_elide_constructors.
4602	* decl2.c: flag_elide_constructors defaults to 1.
4603	* typeck.c (convert_arguments): Remove return_loc parm.
4604	(build_function_call_real): Adjust.
4605
4606	* search.c: Tear out all mi_matrix and memoize code.
4607	(lookup_field, lookup_fnfields): Use scratch_tree_cons.
4608	* lang-options.h: Remove documentation for -fhandle-exceptions,
4609	-fmemoize-lookups and -fsave-memoized.
4610	* cp-tree.h: Lose mi_matrix and memoize support.
4611	* decl2.c: Ignore -fmemoize-lookups and -fsave-memoized.
4612	* class.c: Lose struct class_level.
4613	(pushclass, popclass): Lose memoize support.
4614	* init.c (build_offset_ref): Likewise.
4615
4616	Never change BINFO_INHERITANCE_CHAIN.
4617	* init.c (emit_base_init): Change modification of
4618	BINFO_INHERITANCE_CHAIN to an assert.
4619	* search.c (get_base_distance_recursive): Likewise.
4620	(get_base_distance): Likewise.
4621	(lookup_member): Likewise.
4622	(convert_pointer_to_single_level): Likewise.
4623	(lookup_field): Likewise.  Lose setting TREE_VIA_* on TREE_LISTs.
4624	(lookup_fnfields): Likewise.
4625	* tree.c (propagate_binfo_offsets): Don't call unshare_base_binfos.
4626	(unshare_base_binfos): Don't call propagate_binfo_offsets.
4627	(layout_basetypes): Call propagate_binfo_offsets instead of
4628	unshare_base_binfos.
4629	* decl.c (xref_basetypes): Call unshare_base_binfos.
4630	* pt.c (instantiate_class_template): Likewise.
4631	* tree.c (reverse_path): Remove 'copy' parm; always make a
4632	temporary copy.
4633	* class.c (build_vbase_path): Just call it.
4634	* search.c (compute_access): Likewise.  Don't re-reverse.
4635
46361998-08-27  Mark Mitchell  <mark@markmitchell.com>
4637
4638	* class.c (build_vbase_path): Use reverse_path.
4639	(finish_base_struct): Move warnings for inaccessible bases to
4640	layout_basetypes.
4641	(modify_one_vtable): Remove check of TREE_USED (binfo).
4642	(fixup_vtable_deltas1): Likewise.
4643	* cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
4644	(xref_tag): Remove binfos parameter.
4645	(make_binfo): Remove chain parameter.
4646	(reverse_path): Add copy parameter.
4647	* decl.c (init_decl_processing): Change calls to xref_tag.
4648	(xref_tag): Remove binfos parameter.
4649	(xref_basetypes): Change calls to make_binfo.
4650	* decl2.c (grok_x_components): Change calls to xref_tag.
4651	(handle_class_head): Likewise.
4652	* friend.c (do_friend): Likewise.
4653	* lex.c (make_lang_type): Change calls to make_binfo.
4654	* parse.y (structsp): Change calls to xref_tag.
4655	(named_complex_class_head_sans_basetype): Likewise.
4656	(named_class_head): Likewise.
4657	* rtti.c (init_rtti_processing): Likewise.
4658	* search.c (compute_access): Change calls to reverse_path.
4659	(dfs_get_vbase_types): Change calls to make_binfo.
4660	(get_vbase_types): Remove dead code.
4661	* tree.c (unshare_base_binfos): Change calls to make_binfo.
4662	(layout_basetypes): Warn here about inaccessible bases.
4663	(make_binfo): Remove chain parameter.
4664	(reverse_path): Add copy parameter.
4665
46661998-08-27  Jason Merrill  <jason@yorick.cygnus.com>
4667
4668	* class.c: #if 0 complete_type_p.
4669	* init.c (build_java_class_ref, build_new_1): Remove unused locals.
4670	* method.c (process_overload_item): Likewise.
4671	* typeck.c (comp_target_types): Likewise.
4672
4673	Stop sharing binfos for indirect virtual bases.
4674	* tree.c (propagate_binfo_offsets): Unshare vbases, too.
4675	(layout_basetypes): Likewise.
4676	(unshare_base_binfos): Copy vbases, too.
4677	* cp-tree.h (BINFO_VIA_PUBLIC, BINFO_BASEINIT_MARKED,
4678	BINFO_VBASE_INIT_MARKED): Remove obsolete macros.
4679	(BINFO_PUSHDECLS_MARKED, SET_BINFO_PUSHDECLS_MARKED,
4680	CLEAR_BINFO_PUSHDECLS_MARKED): New macros.
4681	* search.c (lookup_field, lookup_fnfields, lookup_member): Remove
4682	reference to BINFO_VIA_PUBLIC.
4683	(marked_pushdecls_p, unmarked_pushdecls_p): New fns.
4684	(push_class_decls): Use them.
4685	(dfs_pushdecls): Use SET_BINFO_PUSHDECLS_MARKED.
4686	(dfs_compress_decls): Use CLEAR_BINFO_PUSHDECLS_MARKED.
4687
46881998-08-27  Mark Mitchell  <mark@markmitchell.com>
4689
4690	* decl.c (build_enumerator): Set DECL_CONTEXT for the
4691	CONST_DECLs.
4692
46931998-08-26  Mark Mitchell  <mark@markmitchell.com>
4694
4695	* cp-tree.h (finish_enum): Change prototype.
4696	* decl.c (finish_enum): Use TYPE_VALUES, rather than taking a
4697	VALUES parameter.  Don't try to compute mins/maxs if
4698	processing_template_decl.
4699	* parse.y (structsp): Use new calling sequence for finish_enum.
4700	* pt.c (tsubst_enum): Likewise.  Take the new type as input.
4701	(lookup_template_class): Remove unused variables.  Tweak.
4702	Register enums on instantiation list before substituting
4703	enumeration constants.
4704	(tsubst_decl): Remove unused variables.
4705	(regenerate_decl_from_template): Likewise.
4706
4707	* decl.c (duplicate_decls): Don't obliterate the
4708	DECL_TEMPLATE_INFO for a template if we're not replacing it with
4709	anything.
4710
4711	* lex.c (do_identifier): Fix typo in comment.
4712
4713Wed Aug 26 10:54:51 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
4714
4715	* errfn.c: Remove stdarg.h/varargs.h.
4716	* tree.c: Likewise.
4717
47181998-08-25  Brendan Kehoe  <brendan@cygnus.com>
4719
4720	* pt.c (tsubst_copy): Only do typename overloading on an
4721	IDENTIFIER_NODE that happens to look like a typename if it actually
4722	has a type for us to use.
4723
47241998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
4725
4726	* typeck.c (comp_cv_target_types): Split out...
4727	(comp_target_types): From here.  Don't allow cv-qual changes under
4728	a pointer if nptrs == 0.  Fix OFFSET_TYPE handling.
4729	(build_ptrmemfunc): Pass 1 to nptrs.
4730	* cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
4731
47321998-08-25  Mark Mitchell  <mark@markmitchell.com>
4733
4734	* search.c (dependent_base_p): Don't compare a binfo to
4735	current_class_type; use the TREE_TYPE of the binfo instead.
4736
4737	* cp-tree.h (CLASS_TYPE_P): Revise definition.
4738
47391998-08-25  Jason Merrill  <jason@yorick.cygnus.com>
4740
4741	* decl.c (duplicate_decls): Don't complain about different
4742	exceptions from an internal decl even if pedantic.
4743
4744	* typeck.c (convert_for_assignment): Converting from pm of vbase
4745	to derived is an error, not a sorry.
4746
4747	* call.c (build_over_call): Use convert_pointer_to_real for 'this'.
4748	* class.c (fixed_type_or_null): Rename from
4749	resolves_to_fixed_type_p.  Return the dynamic type of the
4750	expression, if fixed, or null.
4751	(resolves_to_fixed_type_p): Use it.  Return 0 if the dynamic type
4752	does not match the static type.
4753	(build_vbase_path): Rename 'alias_this' to 'nonnull'.  Use
4754	resolves_to_fixed_type_p again.
4755
47561998-08-24  Mark Mitchell  <mark@markmitchell.com>
4757
4758	* pt.c (tsubst_decl): Move special case code for dealing with
4759	tricky friend templates here from ...
4760	(regenerate_decl_from_template): Here.
4761
47621998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
4763
4764	* decl.c (start_decl): Remove redundant linkage check.
4765
47661998-08-24  Gavin Romig-Koch  <gavin@cygnus.com>
4767
4768	* typeck.c (c_expand_return): Handle the case that valtype
4769	is wider than the functions return type.
4770
47711998-08-24  Mark Mitchell  <mark@markmitchell.com>
4772
4773	* cp-tree.h (CLASS_TYPE_P): New macro.
4774	* decl.c (grokdeclarator): Use it instead of IS_AGGR_TYPE.
4775	* pt.c (process_template_parm): Undo previous change.
4776
47771998-08-24  Benjamin Kosnik  <bkoz@cygnus.com>
4778
4779	* cp-tree.h: Declare.
4780	* pt.c (decl_template_parm_p): New function.
4781	* decl.c (pushdecl): Check decls for redeclaring template parms.
4782	(xref_tag): Make redeclaration an error, print decl.
4783	* decl2.c (grokfield): Check field_decls for redeclaration as well.
4784
47851998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
4786
4787	* parse.y (primary): Fix up the type of string constants.
4788
47891998-08-24  Mark Mitchell  <mark@markmitchell.com>
4790
4791	* typeck.c (convert_for_initialization): Move check for odd uses
4792	of NULL to avoid duplicate warnings.
4793
47941998-08-24  Jason Merrill  <jason@yorick.cygnus.com>
4795
4796	* tree.c (lvalue_type): Fix for arrays.
4797	* typeck.c (string_conv_p): New fn.
4798	(convert_for_assignment): Use it.
4799	(build_unary_op): Use lvalue_type.
4800	* call.c (standard_conversion, convert_like): Use string_conv_p.
4801	(add_function_candidate): Use lvalue_type.
4802	* cvt.c (convert_to_reference): Likewise.
4803	* decl2.c (lang_decode_option): Ignore -traditional.
4804	* decl.c (init_decl_processing): flag_writable_strings inhibits
4805	flag_const_strings.
4806
48071998-08-24  Andrew MacLeod  <amacleod@cygnus.com>
4808
4809	* lang-options.h (lang_options): Add fconst-strings to the list
4810	of valid options.
4811	* decl2.c (lang_f_options, lang_decode_option): Likewise.
4812
48131998-08-24  Nathan Sidwell  <nathan@acm.org>
4814
4815	* lex.c (real_yylex): Don't warn about long long constants if
4816	we're allowing long long.
4817
48181998-08-24  Martin von L�wis  <loewis@informatik.hu-berlin.de>
4819
4820	* decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
4821	accessing bindings directly.
4822
4823	* search.c (my_tree_cons): Reimplement.
4824
4825	* lang-specs.h: Remove __HONOR_STD.
4826	* inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.
4827
48281998-08-23  Mark Mitchell  <mark@markmitchell.com>
4829
4830	* decl.c (grokdeclarator): Complain about in-class initialization
4831	of aggregates and/or references.
4832	* pt.c (process_template_parm): Clear IS_AGGR_TYPE for
4833	TEMPLATE_TYPE_PARMs.
4834
4835	* decl2.c (grok_array_decl): Add comment.
4836	(mark_used): Don't instantiate an explicit instantiation.
4837	* friend.c (make_friend_class): Remove bogus comment.  Fix check
4838	for partial specializations.
4839	* pt.c (check_explicit_specialization): Don't
4840	SET_DECL_EXPLICIT_INSTANTIATION here.
4841	(mark_decl_instantiated): Or here.
4842	(do_decl_instantiation): Do it here, instead.  Add checks for
4843	duplicate explicit instantiations, etc.  Tidy.
4844	(do_type_instantiation): Likewise.
4845	(instantiate_decl): Improve comments.  Complain about explicit
4846	instantiations where no definition is available.
4847
4848	* cp-tree.h (ansi_null_node): Remove.
4849	* call.c (build_over_call): Warn about converting NULL to an
4850	arithmetic type.
4851	* cvt.c (build_expr_type_conversion): Likewise.  Use
4852	null_ptr_cst_p instead of expanding it inline.
4853	* decl.c (ansi_null_node): Remove.
4854	(init_decl_processing): Make null_node always have integral type.
4855	* except.c (build_throw): Warn about converting NULL to an
4856	arithmetic type.
4857	* lex.c (init_parse): Remove handling of ansi_null_node.
4858	* pt.c (type_unification_real): Don't convert NULL to void* type.
4859	* typeck.c (build_binary_op_nodefault): Fix NULL warnings.
4860	(convert_for_assignment): Warn about converting NULL to an
4861	arithmetic type.
4862	(convert_for_initialization): Likewise.
4863
48641998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
4865
4866	* tree.c (search_tree, no_linkage_helper, no_linkage_check): New fn.
4867	* pt.c (coerce_template_parms): Use no_linkage_check.
4868	* decl.c (grokvardecl): Likewise.
4869	(grokfndecl): Likewise.  Members of anonymous types have no linkage.
4870
4871	* method.c (process_overload_item): Remove useless code.
4872
48731998-08-20  Per Bothner  <bothner@cygnus.com>
4874
4875	Handle new'ing of Java classes.
4876	* init.c (build_class_classref):  New function.
4877	(build_new_1):  If type is TYPE_FOR_JAVA:  Call _Jv_AllocObject;
4878	constructor does not return this;  don't need to exception-protect.
4879
4880	* pt.c (lookup_template_class):  Copy TYPE_FOR_JAVA flag.
4881	* decl2.c (acceptable_java_type):  Handle template-derived types.
4882
48831998-08-20  Per Bothner  <bothner@cygnus.com>
4884
4885	* decl2.c (import_export_vtable):  Suppress vtables for Java classes.
4886
48871998-08-20  Mark Mitchell  <mark@markmitchell.com>
4888
4889	* decl.c (duplicate_decls): Always merge the old and new patterns
4890	for templates, regardless of whether or not the new one has
4891	DECL_INITIAL.  Don't throw away specializations.  Merge
4892	DECL_SAVED_TREE.
4893	* pt.c (tsubst_decl): Use the right pattern when calculating the
4894	complete args for a new template instance.
4895	(do_decl_instantiation): Fix typo in comment.
4896	(regenerate_decl_from_template): Deal with tricky friend template
4897	case.
4898	(instantiate_decl): Likewise.
4899
4900Thu Aug 20 09:09:45 1998  Jeffrey A Law  (law@cygnus.com)
4901
4902	* init.c (build_builtin_delete_call): Add missing assemble_external
4903	call.
4904
49051998-08-20  Jason Merrill  <jason@yorick.cygnus.com>
4906
4907	* parse.y (notype_unqualified_id): Also accept ~A<int>.
4908
49091998-08-19  Mark Mitchell  <mark@markmitchell.com>
4910
4911	* typeck.c (build_binary_op_nodefault): Warn on use of NULL in
4912	arithmetic.
4913	* except.c (build_throw): Warn when NULL is thrown, even with
4914	-ansi.  Use ansi_null_node, rather than integer_zero_node, in the
4915	thrown expression.
4916
4917	* cp-tree.h (ansi_null_node): New variable.
4918	* decl.c (ansi_null_node): New variable.
4919	(init_decl_processing): Initialize its type.
4920	* lex.c (init_parse): Initialize its value.  Use ansi_null_node
4921	for null_node in non-ANSI mode.
4922	* typeck.c (build_binary_op_nodefault): Use ansi_null_node in
4923	place of null_node to avoid spurious errors.
4924
49251998-08-17  Mark Mitchell  <mark@markmitchell.com>
4926
4927	* cp-tree.h (enter_scope_of): New function.
4928	* parse.y (complex_direct_notype_declarator): Use it.
4929	* semantics.c (enter_scope_of): New function.
4930
49311998-08-17  Jason Merrill  <jason@yorick.cygnus.com>
4932
4933	* decl.c (grokparms): No, here.
4934
4935	* decl.c (grokdeclarator): Catch parm with pointer to array of
4936	unknown bound here...
4937	* method.c (process_overload_item): ...not here.
4938
4939	* gxxint.texi: Remove obsolete documentation of overloading code.
4940
4941	* decl.c (finish_enum): Also set TYPE_SIZE_UNIT.
4942	* class.c (finish_struct_bits): Likewise.
4943
4944	* tree.c (lvalue_type): Fix for arrays.
4945	* typeck.c (build_unary_op): Use lvalue_type.
4946	* call.c (add_function_candidate): Likewise.
4947	* cvt.c (convert_to_reference): Likewise.
4948
4949	* decl2.c (lang_decode_option): Ignore -traditional.
4950
4951	* init.c (build_offset_ref): Don't mess with error_mark_node.
4952	* lex.c (do_scoped_id): Use cp_error.
4953
4954	* rtti.c (get_tinfo_fn): Don't mess with the context for now.
4955
49561998-08-17  Benjamin Kosnik  <bkoz@loony.cygnus.com>
4957
4958	* decl.c (grokdeclarator): Allow anonymous types to be cv-qualified.
4959
4960Mon Aug 17 10:40:18 1998  Jeffrey A Law  (law@cygnus.com)
4961
4962	* cp-tree.h (set_identifier_local_value): Provide prototype.
4963
4964	* decl2.c (do_namespace_alias): Remove unused variables `binding'
4965	and `old'.
4966
4967Fri Aug 14 16:42:27 1998  Nick Clifton  <nickc@cygnus.com>
4968
4969	* Makefile.in: Rename BBISON to BISON so that it can be properly
4970	inherited from the parent makefile.
4971
49721998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
4973
4974	* lang-options.h: Add -finit-priority.
4975	* decl2.c: Likewise.  Check flag_init_priority instead of
4976	USE_INIT_PRIORITY.
4977
4978	* decl2.c (setup_initp): New fn.
4979	(start_objects, finish_objects, do_ctors): Handle init_priority.
4980	(do_dtors, finish_file): Likewise.
4981
49821998-08-13  Jason Merrill  <jason@yorick.cygnus.com>
4983
4984	* pt.c (tsubst_copy): Hush warning.
4985
4986	* rtti.c (get_tinfo_fn): Also set DECL_IGNORED_P.
4987
49881998-08-12  Mark Mitchell  <mark@markmitchell.com>
4989
4990	* pt.c (print_template_context): Don't abort when instantiating a
4991	synthesized method.
4992
4993	* decl.c (grokdeclarator): Issue errors on namespace qualified
4994	declarators in parameter lists or in class scope.
4995
49961998-08-09  Mark Mitchell  <mark@markmitchell.com>
4997
4998	* pt.c (check_explicit_specialization): Don't abort on bogus
4999	explicit instantiations.
5000
50011998-08-07  Mark Mitchell  <mark@markmitchell.com>
5002
5003	* typeck.c (require_complete_type): Use complete_type_or_else.
5004	(complete_type_or_else): Always return NULL_TREE on failure, as
5005	documented.
5006
5007	* pt.c (tsubst_aggr_type): Prototype.
5008	(tsubst_decl): New function, split out from tsubst.  Set
5009	input_filename and lineno as appropriate.
5010	(pop_tinst_level): Restore the file and line number saved in
5011	push_tinst_level.
5012	(instantiate_class_template): Set input_filename and lineno as
5013	appropriate.
5014	(tsubst): Move _DECL processing to tsubst_decl.  Make sure the
5015	context for a TYPENAME_TYPE is complete.
5016
5017	* decl2.c (grokbitfield): Issue errors on bitfields declared with
5018	function type.
5019	(do_dtors): As in do_ctors, pretend to be a member of the same
5020	class as a static data member while generating a call to its
5021	destructor.
5022
5023	* cvt.c (cp_convert_to_pointer): Handle NULL pointer
5024	conversions, even in complex virtual base class hierarchies.
5025
50261998-08-06  Mark Mitchell  <mark@markmitchell.com>
5027
5028	* cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
5029	(TYPE_TEMPLATE_INFO): Likewise.
5030	(SET_TYPE_TEMPLATE_INFO): Likewise.
5031	(ENUM_TI_TEMPLATE): Likewise.
5032	(ENUM_TI_ARGS): Likewise.
5033	(lookup_nested_type_by_name): Remove.
5034	* decl.c (maybe_process_template_type_declaration): Handle enums.
5035	(start_enum): Don't check for primary-template enum declarations
5036	here.
5037	(finish_enum): Clean up, document.  Make sure template enum
5038	constants get the correct type.
5039	(build_enumerator): Copy initializers for template enumerations,
5040	too.
5041	(grok_enum_decls): Document.
5042	* lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
5043	better.  Build LOOKUP_EXPRs for local variables, even if they are
5044	TREE_PERMANENT.
5045	* pt.c (tsubst_enum): Remove field_chain parameter.
5046	(template_class_depth): Include the depth of surrounding function
5047	contexts.
5048	(push_template_decl): Check for primary-template enum declarations
5049	here.  Deal with enumeration templates.
5050	(lookup_template_class): Likewise.
5051	(for_each_template_parm): Likewise.
5052	(instantiate_class_template): Don't call tsubst_enum directly,
5053	call tsubst instead, to instantiate enums.  Deal with all
5054	field_chain issues here, not in tsubst_enum.
5055	(lookup_nested_type_by_name): Remove.
5056	(tsubst_aggr_type): Revise handling of enumeration types.
5057	(tsubst): Likewise.
5058	(tsubst_copy): Likewise.
5059	(tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.
5060
50611998-08-04  Mark Mitchell  <mark@markmitchell.com>
5062
5063	* decl.c (pushtag): Don't mangle the name of a TYPE_DECL if it
5064	uses template parameters.
5065	* method.c (build_template_parm_names): Use the full set of
5066	template arguments for tsubst'ing.
5067	(build_overload_identifier): Pass the full set of template
5068	arguments to build_template_parm_names, not just the
5069	innermost_args.
5070	* pt.c (TMPL_ARGS_DEPTH): Define using
5071	TMPL_ARGS_HAVE_MULTIPLE_LEVELS, for clarity.
5072	(NUM_TMPL_ARGS): New macro.
5073	(add_outermost_template_args): Deal with the case where the outer
5074	args will be completely discarded.
5075	(coerce_template_parms): Use the full set of template arguments
5076	for tsubst'ing.  Simplify.  Add some asserts.  Improve
5077	error messages.
5078	(lookup_template_class): Pass the full set of template arguments
5079	to coerce_template_parms.
5080	(tsubst): Add assertion.
5081	(do_type_instantiation): Don't instantiate member template
5082	classes.
5083
5084	* init.c (build_offset_ref): Deal with a TEMPLATE_ID_EXPR whose
5085	name is a LOOKUP_EXPR, rather than an IDENTIFIER_NODE.
5086
50871998-08-03  Jason Merrill  <jason@yorick.cygnus.com>
5088
5089	* method.c (set_mangled_name_for_decl): Change return type to void.
5090
5091	* decl.c (lookup_name_real): A namespace-level decl takes priority
5092	over implicit typename.  Avoid doing the same lookup twice.
5093
5094	* search.c (dependent_base_p): New fn.
5095	(dfs_pushdecls, dfs_compress_decls): Use it.
5096
5097	* typeck.c (get_member_function_from_ptrfunc): Don't try to handle
5098	virtual functions if the type doesn't have any.
5099
51001998-08-03  Mark Mitchell  <mark@markmitchell.com>
5101
5102	* decl2.c (grokfield): Don't mangle the name of a TYPE_DECL if it
5103	uses template parameters.
5104
51051998-08-02  Mark Mitchell  <mark@markmitchell.com>
5106
5107	* cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
5108	* cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
5109	* lex.c (do_identifier): Don't use a second argument, or a type,
5110	when building LOOKUP_EXPRs.
5111	(do_identifier): Likewise.
5112	(do_scoped_id): Likewise.
5113	* method.c (hack_identifier): Improve error message.
5114	* pt.c (lookup_template_function): Don't needlessly call
5115	copy_to_permanent or build_min.
5116	(tsubst_copy): Remove #if 0'd code.  tsubst into LOOKUP_EXPRs if
5117	necessary.
5118	(do_decl_instantiation): Improve error message.
5119	* tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
5120	(build_min): Copy the type to the permanent obstack, too.
5121
51221998-08-01  Jason Merrill  <jason@yorick.cygnus.com>
5123
5124	* init.c (init_init_processing): Remove BI* handling.
5125	(build_builtin_call): Remove.
5126	(build_builtin_delete_call): New fn.
5127	(build_delete): Use it.
5128
51291998-07-31  Mark Mitchell  <mark@markmitchell.com>
5130
5131	* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.
5132	(maybe_check_template_type): New function.
5133	* decl.c (maybe_process_template_type_declaration): New function,
5134	split out from pushtag  Call maybe_check_template_type.
5135	(pushtag): Use it.  Use PROCESSING_REAL_TEMPLATE_DECL_P.
5136	(xref_tag): Use PROCESSING_REAL_TEMPLATE_DECL_P.
5137	* friend.c (do_friend): Use PROCESSING_REAL_TEMPLATE_DECL_P.
5138	* pt.c (template_class_depth_real): Generalization of ...
5139	(template_class_depth): Use it.
5140	(register_specialization): Use duplicate_decls for duplicate
5141	declarations of specializations.
5142	(maybe_check_template_type): New function.
5143	(push_template_decl_real): Fix comment.
5144	(convert_nontype_argument): Likewise.
5145	(lookup_template_class): Likewise.  Avoid an infinite loop on
5146	erroneous code.
5147	(tsubst_friend_function): Fix comment.
5148	(tsubst, case FUNCTION_DECL): Deal with a DECL_TI_TEMPLATE that is
5149	an IDENTIFIER_NODE.
5150	* semantics.c (begin_function_definition): Use
5151	reset_specialization to note that template headers don't apply
5152	directly to declarations after the opening curly for a function.
5153
51541998-07-29  Jason Merrill  <jason@yorick.cygnus.com>
5155
5156	* decl.c (push_overloaded_decl): Use current_namespace instead of
5157	DECL_CONTEXT (decl) to determine where we go.
5158
5159	* decl.c (lookup_name_real): Fix typo.
5160
51611998-07-28  Mark Mitchell  <mark@markmitchell.com>
5162
5163	* friend.c (is_friend): Be lenient with member functions to deal
5164	with nested friends.
5165
51661998-07-28  Jason Merrill  <jason@yorick.cygnus.com>
5167
5168	* class.c (finish_struct_1): Convert integer_zero_node to
5169	ssizetype before passing it to set_rtti_entry.
5170	* typeck2.c (initializer_constant_valid_p): Allow conversion of 0
5171	of any size to a pointer.
5172
51731998-07-27  Mark Mitchell  <mark@markmitchell.com>
5174
5175	* cp-tree.h (TI_USES_TEMPLATE_PARMS): Remove.
5176	(build_template_decl_overload): Remove.
5177	(set_mangled_name_for_decl): New function.
5178	(innermost_args): Remove is_spec parameter.
5179	(most_specialized, most_specialized_class): Remove declarations.
5180	(lookup_template_class): Add entering_scope parameter.
5181	(maybe_process_partial_specialization): New function.
5182	(finish_template_decl): Likewise.
5183	(finish_template_type): Likewise.
5184	* class.c (finish_struct): Clean up processing of member template
5185	specializations.
5186	* decl.c (pushtag): Fix formatting.
5187	(lookup_tag): Improve handling of pseudo-global levels.
5188	(make_typename_type): Adjust call to lookup_template_class.
5189	(shadow_tag): Use maybe_process_partial_specialization.
5190	(xref_tag): Improve handling of member friends.
5191	(start_function): Call push_nested_class before
5192	push_template_decl.  Don't call push_template_decl for
5193	specializations.
5194	* decl2.c (grok_x_components): Don't call xref_tag for
5195	template instantiations.  Handle UNION_TYPEs like RECORD_TYPEs.
5196	(grokclassfn): Use set_mangled_name_for_decl.
5197	(arg_assoc_class): Adjust call to innermost_args.
5198	(mark_used): Don't call instantiate_decl for a TEMPLATE_DECL.
5199	* error.c (dump_function_name): Improve printing of template
5200	function names.
5201	* friend.c (is_friend): Don't compare types of decls to determine
5202	friendship, unless flag_guiding_decls.
5203	(make_friend_class): Partial specializations cannot be friends.
5204	(do_friend): Use set_mangled_name_for_decl.  Call
5205	push_template_decl_real instead of push_template_decl.
5206	* method.c (build_decl_overload_real): Remove prototype.  Give it
5207	external linkage.
5208	(build_overload_identififer): Adjust call to innermost_args.
5209	(build_template_decl_overload): Remove.
5210	(set_mangled_name_for_decl): New function.
5211	* parse.y (.finish_template_type): New non-terminal.
5212	(template_def): Use finish_template_decl.  Use template_extdef
5213	instead of extdef.
5214	(template_extdef, template_datadef): New non-terminals, containing
5215	only those rules for things which can be templates.
5216	(datadef): Tidy.
5217	(template_type, self_template_type): Use .finish_template_type.
5218	(named_class_head): Use maybe_process_partial_specialization.
5219	* pt.c (mangle_class_name_for_template): Remove context parameter.
5220	(get_class_bindings): Remove outer_args parameter.
5221	(complete_template_args): Remove.
5222	(add_outermost_template_args): New function.
5223	(register_specialization): Return the specialization.
5224	(unregister_specialization): New function.
5225	(tsubst_template_parms): Likewise.
5226	(most_specialized, most_specialized_class): Prototype here as
5227	static.
5228	(original_template): Rename to most_general_template.
5229	(tsubst_template_parms): New function.
5230	(set_mangled_name_for_template_decl): Likewise.
5231	(TMPL_ARGS_DEPTH): New macro.
5232	(TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Adjust.
5233	(TMPL_ARGS_LEVEL): New macro.
5234	(SET_TMPL_ARGS_LEVEL): Likewise.
5235	(TMPL_ARG): Likewise.
5236	(SET_TMPL_ARG): Likewise.
5237	(TMPL_ARGS_DEPTH): Likewise.
5238	(finish_member_template_decl): Use finish_template_decl.
5239	(maybe_process_partial_specialization): New function, split out
5240	from tsubst.
5241	(inline_needs_template_parms): Use TMPL_PARMS_DEPTH.
5242	(maybe_begin_member_template_processing): Use new macros.
5243	(is_member_template): Likewise.
5244	(is_member_template_class): Likewise.
5245	(add_to_template_args): Likewise.  Deal with multiple levels of
5246	args.
5247	(maybe_process_partial_specialization): New function.
5248	(retrieve_specialization): Add consistency check.
5249	(determine_specialization): Return full argument list.
5250	(check_explicit_specialization): Tweak friend handling.  Use full
5251	argument lists.  Simplify.
5252	(current_template_args): Use new macros.
5253	(push_template_decl_real): Change ill-named mainargs to specargs.
5254	Check that a partial specialization actually specializes at least
5255	one parameter.   Improve friend handling.  Modify for full
5256	template arguments.
5257	(classtype_mangled_name): Don't mangle the names of
5258	specializations.
5259	(lookup_template_class): Add entering_scope parameter.  Use it to
5260	avoid finding a template type when an instantiation is required.
5261	Simplify.  Use full template arguments.
5262	(tsubst_friend_function): Use unregister_specialization.  Use new
5263	macros.  Use full template arguments.
5264	(tsubst_friend_class): Substitute, using tsubst_template_parms,
5265	into the template parameters before passing them to
5266	redeclare_class_template.
5267	(instantiate_class_template): Simplify.  Use full template
5268	arguments.  Adjust calls to get_class_bindings.  Use
5269	SET_IDENTIFIER_TYPE_VALUE where needed.  Improve friend handling.
5270	(innermost_args): Use new macros.
5271	(tsubst_aggr_type): New function, split out from tsubst.
5272	(tsubst): Use tsubst_aggr_type, tsubst_template_parms, new calling
5273	conventions for lookup_template_class.  Refine handling of partial
5274	instantiations.   Remove calls to complete_template_args.
5275	Simplify.  Add consistency checks.  Use set_mangled_name_for_decl
5276	and set_mangled_name_for_template_decl.
5277	(tsubst_copy): Use tsubst_aggr_type.
5278	(instantiate_template): Use full template arguments.
5279	(more_specialized): Improve formatting.
5280	(more_specialized_class): Adjust calls to get_class_bindings.
5281	(get_bindings_real): Don't call complete_template_args.
5282	(most_specialized): Don't overwrite input; create a new list.
5283	(most_specialized_class): Use most_general_template.
5284	(regenerate_decl_from_template): Use unregister_specialization.
5285	Use full template arguments.
5286	(instantiate_decl): Use full template arguments.
5287	(set_mangled_name_for_template_decl): New function.
5288	* semantics.c (begin_class_definition): Use
5289	maybe_process_partial_specialization.
5290	(finish_member_class_template): New function.
5291	(finish_template_decl): Likewise.
5292	(finish_template_type): Likewise.
5293	(typeck.c): Don't crash after issuing a compiler_error.
5294	* Makefile.in (CONFLICTS): Adjust; we removed a s/r conflict.
5295
52961998-07-27  Jason Merrill  <jason@yorick.cygnus.com>
5297
5298	* typeck2.c (build_functional_cast): Handle default-initialization.
5299
5300	* call.c (build_over_call): Pass 1 to popclass.
5301
5302	* parse.y (direct_notype_declarator): Add precedence declaration
5303	to notype_unqualified_id case.
5304	* Makefile.in (EXPECT): Adjust.
5305
5306	* tree.c (ovl_member): Fix for single function in OVL.
5307
53081998-07-27  Dave Brolley  <brolley@cygnus.com>
5309
5310	* c-lex.c (yylex): Fix boundary conditions in character literal and
5311	string literal loops.
5312
53131998-07-24  Jason Merrill  <jason@yorick.cygnus.com>
5314
5315	* decl.c (lookup_name_real): OK, do return the from_obj value
5316	unless got_object depends on template parms.
5317
5318	* parse.y (nested_name_specifier_1): Pull out the TYPE_MAIN_VARIANT.
5319
5320	* pt.c (coerce_template_parms): Also complain about local enums.
5321
5322	* cp-tree.h: Add prototype for set_identifier_local_value.
5323	* decl.c (set_identifier_local_value_with_scope): Make static,
5324	prototype.
5325	* search.c (covariant_return_p): Likewise.
5326	* except.c (build_terminate_handler, alloc_eh_object): Likewise.
5327
5328	* call.c (build_method_call): Only pull out the type of a destructor
5329	if it's a template type parm.
5330	* decl.c (lookup_name_real): Never return the from_obj value.
5331
53321998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
5333
5334	* except.c (process_start_catch_block_old): Call start_decl_1 for
5335	catch parm.
5336	* decl.c (start_decl_1): Avoid duplicate error.
5337
5338	* init.c (expand_default_init): Only perform the initialization if
5339	it will do something.
5340
53411998-07-23  H.J. Lu  (hjl@gnu.org)
5342
5343	* parse.y (base_class): Check for invalid base class.
5344
53451998-07-23  Jason Merrill  <jason@yorick.cygnus.com>
5346
5347	* decl2.c (import_export_template): Fold in...
5348	(import_export_class): ...to here.  Handle dllimport/export.
5349
5350	* class.c (build_vtable): Pass at_eof to import_export_vtable.
5351	(prepare_fresh_vtable): Likewise.
5352	* decl2.c (import_export_class): Split out...
5353	(finish_prevtable_vardecl): From here.
5354	* class.c (finish_struct_1): Call import_export_class if at_eof.
5355
5356	* decl.c (start_function): #if 0 mysterious code I wrote and have
5357	forgotten why.
5358	* rtti.c (get_tinfo_fn): If this is for a class type, set
5359	DECL_CONTEXT.
5360
53611998-07-22  Jason Merrill  <jason@yorick.cygnus.com>
5362
5363	* inc/exception: Change terminate and unexpected to ().
5364
5365	* parse.y (named_class_head_sans_basetype_defn): A
5366	named_class_head_sans_basetype followed by '{' or ':' is a defn.
5367
53681998-07-21  Jason Merrill  <jason@yorick.cygnus.com>
5369
5370	* tree.c (canonical_type_variant): New fn to handle arrays.
5371	* cp-tree.h (CANONICAL_TYPE_VARIANT): Remove.
5372	* pt.c (unify, default case): Also fold arg.  Fix array bounds case.
5373	* method.c (process_overload_item): Use build_overload_value for
5374	arrays.
5375
53761998-07-20  Dave Brolley  <brolley@cygnus.com>
5377
5378	* lex.c (mbchar.h): #include it.
5379	(GET_ENVIRONMENT): New macro.
5380	(init_parse): Set character set based on LANG environment variable.
5381	(real_yylex): Handle multibyte characters in character literals.
5382	(real_yylex): Handle multibyte characters in string literals.
5383
53841998-07-19  Jason Merrill  <jason@yorick.cygnus.com>
5385
5386	* lex.c (do_identifier): Look for class value even if we don't
5387	have a global value.  Do implicit declaration if parsing is 2.
5388	* semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
5389	lookup.
5390
53911998-07-19  Mark Mitchell  <mark@markmitchell.com>
5392
5393	* decl.c (pushtag): Revert previous change.
5394	* pt.c (lookup_template_class): Don't put out debugging
5395	information for types that use template parameters.
5396
5397	* decl.c (pushtag): Don't put out debugging information for
5398	compiler-generated typedefs.
5399
5400	* error.c (dump_type_real): Don't crash when presented with
5401	intQI_type_node or the like.
5402
5403	* semantics.c (finish_translation_unit): Fix spelling error in
5404	comment.
5405
54061998-07-17  Jason Merrill  <jason@yorick.cygnus.com>
5407
5408	* decl.c (lookup_name_real): Pull out single function here.
5409	(select_decl): Not here.
5410	(unqualified_namespace_lookup): Use CP_DECL_CONTEXT.
5411
5412	* decl.c (qualify_lookup): Tweak again.
5413
5414	* pt.c (lookup_template_class): Don't mess with the context of the
5415	instantiation.
5416	* decl2.c (current_decl_namespace): Remove special handling for
5417	templates.
5418
5419	* pt.c (tsubst, case FUNCTION_DECL): Fix getting complete args for
5420	a member template specialization.
5421
5422	* tree.c (ovl_member): Use decls_match to compare functions.
5423	* decl.c (decls_match): Check the context of a function.
5424
5425	* parse.y (primary): Use notype_unqualified_id instead of IDENTIFIER
5426	in Koenig lookup support rules.
5427	* semantics.c (finish_call_expr): Handle the new cases.
5428
5429	* typeck.c (build_x_function_call): Handle overloaded methods.
5430
5431	* decl.c (grokvardecl): Don't call build_static_name for extern "C".
5432
54331998-07-16  Mark Mitchell  <mark@markmitchell.com>
5434
5435	* semantics.c (finish_object_call_expr): Revert previous change.
5436	* call.c (build_new_method_call): Likewise.  Instead, convert
5437	TYPE_DECLs to IDENTIFIERs here, in the presence of templates.
5438
54391998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
5440
5441	* decl.c (qualify_lookup): Handle templates.
5442
5443	* decl2.c (do_using_directive): Don't pass ancestor.
5444	* decl.c (push_using_directive): Calculate ancestor.
5445
5446	* decl2.c (do_nonmember_using_decl): Allow for type shadowing.
5447	* decl.c (pushdecl): Move type shadowing handling from here...
5448	(duplicate_decls): ...to here.
5449	* decl.c (set_identifier_local_value_with_scope): New fn.
5450	(pushdecl): Use it.
5451	(set_identifier_local_value, lookup_type_current_level): New fns.
5452	* decl2.c (do_local_using_decl): Handle types and binding level
5453	stuff properly.
5454
5455	* init.c (build_offset_ref): Don't call mark_used on an OVERLOAD.
5456	* decl.c (select_decl): Extract a lone function from an OVERLOAD.
5457	(lookup_namespace_name): Likewise.
5458	* typeck.c (build_unary_op): Not here anymore.
5459
5460	* decl2.c (do_class_using_decl): Make sure we get an identifier.
5461	* class.c (handle_using_decl): Ignore TYPE_DECLs.
5462
5463	* decl.c (qualify_lookup): New fn.
5464	(lookup_name_real): Use it.
5465
54661998-07-16  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
5467
5468	* decl2.c (add_using_namespace): When directly using a namespace
5469	that was indirect before, promote it.
5470
5471	* cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
5472	LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
5473	LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
5474	* decl.c (select_decl): Replace two flag parameters by one.
5475	(unqualified_namespace_lookup): Likewise, pass flag.
5476	(lookup_flags): New function.
5477	(lookup_name_real): Compute flags, pass them.
5478	(lookup_namespace_name): Call with zero-flag.
5479	* decl2.c (ambiguous_decl): Add flag parameter, complain only
5480	according to flags.
5481	(lookup_using_namespace, qualified_lookup_using_namespace):
5482	Add flag parameter, pass them through.
5483	* lex.c (do_scoped_id): Call with zero-flag.
5484
54851998-07-16  Jason Merrill  <jason@yorick.cygnus.com>
5486
5487	* typeck.c (convert_for_assignment): Use comptypes.
5488
54891998-07-16  Mark Mitchell  <mark@markmitchell.com>
5490
5491	* semantics.c (finish_object_call_expr): Move test for the
5492	function called being a TYPE_DECL to ...
5493	* call.c (build_new_method_call): Here.
5494
54951998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
5496
5497	* decl2.c (arg_assoc_class): Also look at template arguments, if any.
5498	(arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
5499
5500	* lex.c (looking_for_typename): Don't initialize.
5501
5502	* decl2.c (ambiguous_decl): Clarify error message.
5503
5504	* decl.c (push_using_directive): Iterate over namespaces used
5505	indirectly.
5506
55071998-07-15  Martin v. L�wis  <loewis@informatik.hu-berlin.de>
5508
5509	* decl2.c (add_using_namespace): Iterate over namespaces used
5510	indirectly.
5511
5512	* decl.c (lookup_name_real): Accept namespace aliases as locals.
5513	(cat_namespace_levels): Ignore aliases.
5514	(duplicate_decls): Ignore duplicate aliases.
5515	* decl2.c (do_namespace_alias): Process block level namespace
5516	aliases.  Store alias with pushdecl.  Remove odr errors.
5517	* parse.y (namespace_alias): New non-terminal.
5518	(extdef): Use it.
5519
55201998-07-15  Jason Merrill  <jason@yorick.cygnus.com>
5521
5522	* decl2.c (arg_assoc_type): Handle METHOD_TYPE like FUNCTION_TYPE.
5523	Handle TEMPLATE_TYPE_PARM.
5524	(arg_assoc): Rewrite.
5525
5526	* pt.c (complete_template_args): Don't look at the context unless
5527	we have to.
5528
5529	* method.c (build_decl_overload_real): Fix namespace handling.
5530
5531	* typeck.c (build_unary_op): Extract a lone function from an
5532	OVERLOAD.
5533
5534	* call.c (build_scoped_method_call): Handle getting a namespace
5535	for basetype in a destructor call.
5536	(check_dtor_name): Handle enums.
5537
5538	* parse.y (using_directive): New nonterminal.
5539	(extdef, simple_stmt): Use it.
5540
55411998-07-14  Martin von L�wis  <loewis@informatik.hu-berlin.de>
5542
5543	* decl2.c (add_function): Move error message ...
5544	(arg_assoc_namespace): ... from here.
5545
55461998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
5547
5548	* parse.y (namespace_qualifier): Fix multiple level handling.
5549	* decl2.c (namespace_ancestor): Use CP_DECL_CONTEXT.
5550	(arg_assoc): Don't skip the first argument of a function.
5551
5552Tue Jul 14 20:09:22 1998  Jeffrey A Law  (law@cygnus.com)
5553
5554	* search.c (my_tree_cons): Clean up.
5555
55561998-07-14  Jason Merrill  <jason@yorick.cygnus.com>
5557
5558	* call.c (joust): Don't warn about "confusing" conversions to the
5559	same type.
5560
55611998-07-14  Martin von L�wis  <loewis@informatik.hu-berlin.de>
5562
5563	* class.c (push_nested_class): Complain about namespaces.
5564	* decl.c (start_decl): Enter the object's namespace.
5565	(cp_finish_decl): Leave it.
5566	(grokdeclarator): Likewise.
5567	* decl2.c (check_decl_namespace): New function.
5568	(finish_file): Call it.
5569	* parse.y (complex_direct_notype_declarator): Set complexity
5570	of namespace-qualified ids to -1, enter the namespace.
5571
5572	* method.c (build_template_decl_overload): Expect _DECL as first
5573	parameter.  Put context temporarily into current_namespace.
5574	* pt.c (check_explicit_specialization): Change caller.
5575	(tsubst): Likewise.
5576
5577	* init.c (build_offset_ref): Call mark_used and
5578	convert_from_reference for namespace members.
5579
5580Mon Jul 13 23:25:28 1998  Martin von L�wis  <loewis@informatik.hu-berlin.de>
5581
5582	* search.c (my_tree_cons): The bitfield is at index 2.
5583
5584Mon Jul 13 17:21:01 1998  Nick Clifton  <nickc@cygnus.com>
5585
5586	* lang-options.h: Format changed to work with new --help support
5587	in gcc/toplev.c
5588
55891998-07-12  Martin von L�wis  <loewis@informatik.hu-berlin.de>
5590
5591	* decl2.c (build_expr_from_tree): Change calls of do_identifier.
5592	Do Koenig lookup in CALL_EXPR.
5593	(arg_assoc): Handle error_mark.
5594	* lex.c (is_global): New function.
5595	(do_identifier): Expect arguments for Koenig lookup.
5596	* parse.y (primary): Add rules for calls of unqualified function calls.
5597	(do_id): Change call of do_identifier.
5598	* pt.c (finish_stmt_expr): Likewise.
5599	* semantics.c (finish_id_expr): Likewise.
5600	(finish_call_expr): Add integer parameter to indicate
5601	argument-dependent lookup.
5602
5603	* decl.c (struct binding_level): New field using_directives.
5604	(push_using_decl): Not sorry anymore.
5605	(push_using_directive): New function.
5606	(lookup_tag): Use CP_DECL_CONTEXT to iterate.
5607	(unqualified_namespace_lookup): New function, code from ...
5608	(lookup_name_real): ... here.
5609	* decl2.c (lookup_using_namespace): Pass using list instead of
5610	initial scope.
5611	(validate_nonmember_using_decl): New function.
5612	(do_nonmember_using_decl): New function.
5613	(do_toplevel_using_decl): Use them.
5614	(do_local_using_decl): New function.
5615	(do_using_directive): Support block-level directives.
5616	* parse.y (simple_stmt): Support using declarations and
5617	directives.
5618	(namespace_qualifier, namespace_using_decl): New non-terminals.
5619
5620	* xref.c (classname): New function.
5621	(GNU_xref_hier): Change class and base parameters to tree.
5622	* decl.c (xref_baseypes): Change caller.
5623	* friend.c (make_friend_class): Likewise.
5624
56251998-07-12  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
5626
5627	* typeck.c (comptypes, case TEMPLATE_TEMPLATE_PARM): Add parameter
5628	comparison.
5629
5630	* pt.c (for_each_template_parm, case TEMPLATE_DECL): If it is a
5631	template template parameter, record its use.
5632	(for_each_template_parm, case TEMPLATE_TEMPLATE_PARM): Traverse
5633	its template arguments if exists.
5634
5635	* pt.c (coerce_template_template_parms): New function equivalent
5636	to coerce_template_parms when IS_TMPL_PARM is true.
5637	(coerce_template_parms): Use it.  Remove the IS_TMPL_PARM parameter,
5638	all callers changed.
5639
5640	(coerce_template_parms): Access ARGLIST properly when creating a
5641	new vector.  Only accept implicit TYPE_DECL as valid argument for
5642	a template template parameter when it is a base class of
5643	current_class_type.  Don't display error message when COMPLAIN is
5644	false.
5645
56461998-07-12  Klaus Kaempf  (kkaempf@progis.de)
5647
5648	* repo.c (get_base_filename): Use file_name_nondirectory.
5649	(open_repo_file): Likewise.
5650	* cp-tree.h (file_name_nondirectory): Add prototype.
5651
56521998-07-12  Jason Merrill  <jason@yorick.cygnus.com>
5653
5654	* friend.c (do_friend): Pull the identifier out of declarator.
5655	Use cp_error and friends.
5656	* decl2.c (qualified_lookup_using_namespace): Fix call to
5657	purpose_member.
5658	* decl.c (lookup_name_real): Don't call complete_type on a namespace.
5659	(grokvardecl): Use DECL_CLASS_SCOPE_P.
5660	* cvt.c (convert_pointer_to_real): Check for error_mark_node sooner.
5661	* class.c (warn_hidden): Fix for OVERLOAD.
5662	From grahams@rcp.co.uk:
5663	* cp-tree.h (DEFARG_NODE_CHECK): New macro.
5664	(DEFARG_LENGTH, DEFARG_POINTER): Use it.
5665
5666Sun Jul 12 01:20:57 1998  Jeffrey A Law  (law@cygnus.com)
5667
5668	* g++.1 (-traditional): Remove duplicated documentation.
5669
56701998-07-11  Mark Mitchell  <mark@markmitchell.com>
5671
5672	* method.c (flush_repeats): Add nrepeats parameter.
5673	(issue_nrepeats): Likewise.
5674	(is_back_referenceable_type): New function.  Don't back-reference
5675	TEMPLATE_TYPE_PARMs as well as simple types like integers.
5676	(build_mangled_name_for_type): Likewise.
5677	(build_mangled_name_for_type_with_Gcode): Likewise.
5678	(lasttype): Remove.
5679	(nrepeats): Likewise.
5680	(Nrepeats): Likewise.
5681	(start_squangling): Don't clear the variables removed above.
5682	(end_squangling): Likewise.
5683	(flush_repeats): Tidy.  Use nrepeats parameter rather than
5684	Nrepeats global.
5685	(issue_nrepeats): Likewise, but with nrepeats global.  Use
5686	is_backreferenceable_type.
5687	(build_overload_nested_name): Tidy.  Add comment.  Use
5688	build_mangled_name_for_type.
5689	(build_underscore_int): Comment.
5690	(build_overload_scope_ref): Use build_mangled_name_for_type.
5691	(build_overload_int): Likewise.
5692	(build_template_template_parm_names): Tidy.
5693	(build_template_parm_names): Use build_mangled_name_for_type.
5694	(build_overload_identifier): Add comments.
5695	(build_mangled_name_for_type_with_Gcode): Split out from
5696	build_mangled_name.
5697	(build_mangled_name_for_type): Use it.
5698	(build_mangled_name): Rework to use build_mangled_name_for_type
5699	and to not use global nrepeats/Nrepeats.  Tidy.
5700	(process_modifiers): Tidy.
5701	(check_btype): Use is_backreferenceable_type.  Add comment.
5702	Rename `node' to `type'.
5703	(process_overload_item): Set numeric_output_need_bar here.
5704	Use build_mangled_name_for_type.  Tidy.
5705	(build_decl_overload_real): Tidy.  Don't use Nrepeats.  Use
5706	build_mangled_name_for_type.
5707
5708	* pt.c (push_template_decl_real): Don't look at DECL_TEMPLATE_INFO
5709	for TYPE_DECLs.
5710
57111998-07-08  Vladimir N. Makarov  <vmakarov@cygnus.com>
5712
5713	* cp-tree.h (warn_long_long): Define.
5714	* decl.c (grokdeclarator): Add flag `warn_long_long' as guard for
5715	warning "ANSI C++ does not support `long long'".
5716	* decl2.c (warn_long_long): Define.
5717	(lang_decode_option): Parse -Wlong-long, -Wno-long-long options.
5718
57191998-07-07  Jason Merrill  <jason@yorick.cygnus.com>
5720
5721	* decl.c (xref_tag): Handle attributes between 'class' and name.
5722	* parse.y (aggr): Likewise.
5723	* semantics.c (finish_class_definition): Likewise.
5724	* Makefile.in (EXPECTED): Adjust.
5725
5726	* cp-tree.h: Declare flag_optional_diags and warn_multichar.
5727	* decl2.c: Define them.
5728	(lang_decode_option): Handle them.
5729	* lang-options.h: Add -foptional-diags.
5730	* class.c (finish_struct): Don't complain about multiple meanings of
5731	name if -fno-optional-diags.
5732	* decl.c (pushdecl_class_level): Likewise.
5733	* lex.c (real_yylex): Check warn_multichar.
5734
57351998-07-06  Jason Merrill  <jason@yorick.cygnus.com>
5736
5737	* decl.c (lookup_tag): Use CP_DECL_CONTEXT.
5738
5739	* tree.c (make_binfo): Fix length.
5740
57411998-06-30  Benjamin Kosnik  <bkoz@bliss.nabi.net>
5742
5743	* decl2.c (lang_decode_option): Remove warn_template_debugging.
5744	* lang-options.h: Likewise.
5745
5746Mon Jun 29 20:17:40 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5747
5748	* except.c (build_eh_type_type_ref): Remove unused variable `susp'.
5749	(process_start_catch_block): Likewise for variables
5750	`false_label_rtx', `call_rtx' and `return_value_rtx'.
5751
57521998-06-29  Brendan Kehoe  <brendan@cygnus.com>
5753
5754	* tree.c (build_srcloc): Make sure we allocate this node on the
5755	permanent obstack.
5756
5757Sat Jun 27 23:34:18 1998  Fred Fish  <fnf@ninemoons.com>
5758
5759	* g++spec.c (NEED_MATH_LIBRARY): Define to 1 if not already defined.
5760	(lang_specific_driver): Initialize need_math with NEED_MATH_LIBRARY.
5761	(lang_specific_driver): Only add -lm automatically if need_math is
5762	nonzero.
5763
5764Sat Jun 27 12:22:56 1998  Jeffrey A Law  (law@cygnus.com)
5765
5766	* Make-lang.in (g++): Depend on mkstemp.o.  Link in mkstemp.o
5767
5768Sat Jun 27 07:36:09 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5769
5770	* Makefile.in (EXPR_H): New dependency variable.
5771	(decl2.o): Depend on $(EXPR_H).
5772	(typeck.o): Likewise.
5773	(init.o): Likewise.
5774	(expr.o): Likewise.
5775
57761998-06-25  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
5777
5778	* decl.c (start_enum): Put local enums on permanent_obstack.
5779
57801998-06-25  Mark Mitchell  <mark@markmitchell.com>
5781
5782	* cp-tree.h (c_get_alias_set): Declare.
5783	* decl.c (init_decl_processing): Set lang_get_alias_set.
5784
57851998-06-25  Andrew MacLeod  <amacleod@cygnus.com>
5786
5787	* cp-tree.h (mark_all_runtime_matches): Add function prototype.
5788	* except.c (mark_all_runtime_matches): Set TREE_SYMBOL_REFERENCED
5789	flag for all function decls which are in the exception table.
5790	* exception.cc (__cplus_type_matcher): Check for CATCH_ALL_TYPE match.
5791	* decl2.c (finish_file): Call mark_all_runtime_matches to make sure
5792	code is emitted for any referenced rtti function.
5793
57941998-06-25  Dave Brolley  <brolley@cygnus.com>
5795
5796	* lang-specs.h: Use new | syntax to eliminate
5797	string concatenation.
5798
57991998-06-25  Jason Merrill  <jason@yorick.cygnus.com>
5800
5801	* cp-tree.h (CP_DECL_CONTEXT): New macro.
5802	* decl2.c (is_namespace_ancestor, lookup_using_namespace): Use it.
5803	* method.c (build_overload_nested_name): Likewise.
5804	* sig.c (build_signature_pointer_or_reference_type): Don't set
5805	DECL_CONTEXT.
5806
58071998-06-24  Martin v. L�wis  <loewis@informatik.hu-berlin.de>
5808
5809	Set DECL_CONTEXT for globals to NULL_TREE instead of global_namespace.
5810	* cp-tree.h (FROB_CONTEXT): New macro.
5811	(DECL_MAIN_P): ::main should have a DECL_CONTEXT of NULL_TREE.
5812	* decl.c (namespace_binding): Replace NULL_TREE with
5813	global_namespace.
5814	(set_namespace_binding, pop_namespace, lookup_name_real): Likewise.
5815	* decl2.c (is_namespace_ancestor, lookup_using_namespace):
5816	Likewise.
5817	* decl.c (pushtag): Use FROB_CONTEXT.
5818	(pushdecl, make_typename_type, define_function, grokdeclarator):
5819	Likewise.
5820	* decl2.c (set_decl_namespace, do_namespace_alias): Likewise.
5821	* pt.c (push_template_decl_real, lookup_template_class, tsubst):
5822	Likewise.
5823	* decl2.c (decl_namespace): Return global_namespace if no context.
5824	* method.c (build_overload_nested_name): Expect null as context.
5825	* pt.c (mangle_class_name_for_template): Do nothing for null
5826	contexts.
5827	(lookup_template_class): Allow for null id_context.
5828
58291998-06-25  Richard Henderson  <rth@cygnus.com>
5830
5831	* method.c (emit_thunk): Set current_function_is_thunk for the
5832	ASM_OUTPUT_MI_THUNK case as well.
5833
58341998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
5835
5836	* exception.cc (__cplus_type_matcher): Get a match_info pointer
5837	instead of an exception table entry as a parameter.
5838
58391998-06-23  Andrew MacLeod  <amacleod@cygnus.com>
5840
5841	* parse.y (function_try_block): Don't call start_catch_handler.
5842	* except.c (call_eh_info): Remove coerced field from declaration.
5843	(build_eh_type_type_ref): New function to create an address of a
5844	rtti function for the new style exception tables.
5845	(expand_start_catch_block): Split function, this contains the
5846	common part.
5847	(process_start_catch_block_old): New function to perform the rest
5848	of expand_start_catch_block under old style exceptions.
5849	(process_start_catch_block_old): New function to perform the rest
5850	of expand_start_catch_block under new style exceptions.
5851	(expand_end_catch_block): Only pop the false label off the stack under
5852	the old style of exceptions.
5853	* semantics.c (finish_try_block): Don't call start_catch_handler.
5854	* exception.cc (struct cp_eh_info): Add original_value field.
5855	(__cplus_type_matcher): Perform type matching on the original exception
5856	value, and if we have a match, set the current value.
5857	(__cp_push_exception): Set the original exception value.
5858
58591998-06-23  Jason Merrill  <jason@yorick.cygnus.com>
5860
5861	* call.c (joust): Fix confusing conversion warning.
5862
5863	* call.c (build_op_delete_call): Add placement parm.  Check
5864	LOOKUP_SPECULATIVELY.
5865	* cp-tree.h, decl2.c, init.c: Adjust.
5866	* decl.c (finish_function): Use it.
5867
5868	* pt.c (tsubst): Diagnose creating void fields or variables.
5869
5870Mon Jun 22 08:50:26 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5871
5872	* call.c (build_scoped_method_call): Remove unused variable `tmp'.
5873
5874	* cp-tree.h (check_dtor_name): Add prototype.
5875
5876	* init.c (expand_member_init): Remove unused variables
5877	`ptr_type_node', `parm' and `rval'.
5878
5879	* ptree.c (print_lang_type): Use HOST_WIDE_INT_PRINT_DEC specifier
5880	in call to fprintf.
5881	(lang_print_xnode): Likewise.
5882
5883	* typeck2.c (enum_name_string): Cast argument to sprintf to long
5884	and use %ld specifier.
5885
5886	* xref.c (GNU_xref_end_scope): Use HOST_WIDE_INT_PRINT_DEC
5887	specifier in call to fprintf.
5888	(GNU_xref_member): Cast argument to sprintf to int.
5889
5890Fri Jun 19 23:22:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
5891
5892	* typeck2.c (pop_init_level): Warn about implicit zero initialization
5893	of struct members.
5894
5895Thu Jun 18 09:32:32 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
5896
5897	* cp-tree.h: Prototype function `check_java_method'.
5898
58991998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
5900
5901	* class.c (finish_struct): Make conflicting use of id a pedwarn.
5902	* decl.c (pushdecl_class_level): Likewise.
5903
59041998-06-17  Mark Mitchell  <mark@markmitchell.com>
5905
5906	* pt.c (convert_nontype_argument): Issue an error when presented
5907	with an integer (real) constant that cannot be simplified to an
5908	INT_CST (REAL_CST).
5909
5910	* cp-tree.h (c_get_alias_set): Remove declaration added in
5911	1998-06-13 change that should never have been checked in.
5912
59131998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
5914
5915	* typeck.c (build_binary_op_nodefault): Change % in format strings
5916	to %%.
5917
5918	* decl.c (grokvardecl): Don't build_static_name for decls that
5919	aren't at namespace scope.
5920
5921	* init.c (perform_member_init): Catch default-initialization of
5922	references.
5923
59241998-06-17  Mark Mitchell  <mark@markmitchell.com>
5925
5926	* errfn.c (cp_thing): Handle the `%%' formatting sequence.
5927
59281998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
5929
5930	* method.c (hack_identifier): Complain about getting a namespace
5931	or class template.
5932	* typeck.c (decay_conversion): Remove check for namespaces.
5933	* typeck2.c (incomplete_type_error): Likewise.
5934	* parse.y (template_arg): Add PTYPENAME expansion.
5935
59361998-06-16  Andrew MacLeod  <amacleod@cygnus.com>
5937
5938	* decl.c (grokvardecl): Don't build external assembler names for
5939	TYPENAMEs in other namespaces as there is no declarator.
5940	* error.c (cp_file_of, cp_line_of): Don't extract file or line number
5941	info from DECL_CONTEXT if it is NULL.
5942
59431998-06-16  Jason Merrill  <jason@yorick.cygnus.com>
5944
5945	* call.c (check_dtor_name): Split out.
5946	(build_scoped_method_call): Use it.
5947	(build_method_call): Use it.
5948	* init.c (build_offset_ref): Use it.
5949
5950	* typeck.c (build_static_cast): Fix handling of pointers to members.
5951
5952	* decl.c (finish_function): Just return nothing from a constructor.
5953	* typeck.c (c_expand_return): Complain about returning a void
5954	expression from a destructor.
5955
59561998-06-13  Mark Mitchell  <mark@markmitchell.com>
5957
5958	* class.c (alter_access): Accept a BINFO explaining how to get
5959	from the entity whose accessed is being altered to the type doing
5960	the altering.
5961	(handle_using_decl): New function containing code split out from ...
5962	(finish_struct_1): Here.
5963
5964	* cp-tree.h (complete_type_or_else): Declare.
5965	* init.c (build_new_1, build_delete): Use it.
5966	* typeck.c (require_complete_type): Use complete_type, rather than
5967	expanding it inline.
5968	(complete_type_or_else): New function.
5969	(build_component_ref): Use it.
5970	(pointer_int_sum): Make sure the type pointed to is complete.
5971	(pointer_diff): Likewise.
5972
5973	* pt.c (for_each_template_parm): Traverse the TYPE_CONTEXT for
5974	types.
5975
5976	* search.c (get_matching_virtual): Note that member templates
5977	cannot override virtual functions.
5978
59791998-06-12  Brendan Kehoe  <brendan@cygnus.com>
5980
5981	* pt.c (check_explicit_specialization): If DECLARATOR turned into
5982	an error_mark_node from lookup_template_function, return the same.
5983	(determine_specialization): Also make sure TEMPLATE_ID isn't an
5984	error_mark_node, before we try to read its operands.
5985	* decl.c (grokdeclarator): If we got an error_mark_node from
5986	check_explicit_specialization, just return it right back.
5987
59881998-06-12  Mark Mitchell  <mark@markmitchell.com>
5989
5990	* class.c (instantiate_type): Don't treat template-ids that don't
5991	specify any template arguments as equivalent to ordinary
5992	identifiers.  Use OFFSET_REF instead of SCOPE_REF to refer to
5993	pointer-to-members for member templates.  Tidy slightly.
5994	* cp-tree.def (TEMPLATE_ID_EXPR): Revise documentation.
5995	* init.c (build_offset_ref): Handle template-ids like ordinary
5996	identifiers, for the most part, but store a TEMPLATE_ID_EXPR in the
5997	offset part of the OFFSET_REF.
5998	* typeck.c (build_unary_op): Change check for unknown types to
5999	look for OFFSET_REFs, not SCOPE_REFs.
6000
60011998-06-11  Mark Mitchell  <mark@markmitchell.com>
6002
6003	* pt.c (is_member_template_class): New function.
6004	(push_template_decl_real): Use it.
6005
60061998-06-11  Benjamin Kosnik  <bkoz@elmo.cygnus.com>
6007
6008	* friend.c (do_friend): Add support for nested classes using
6009	member functions of the enclosing class as friends.
6010
60111998-06-10  Mark Mitchell  <mark@markmitchell.com>
6012
6013	* call.c (convert_default_arg): Make global, not static.
6014	(convert_arg_for_ellipsis): Split out from ...
6015	(build_over_call): Here.
6016	* cp-tree.h (convert_default_arg); Declare.
6017	(convert_arg_to_ellipsis): Likewise.
6018	(do_member_init): Remove.
6019	* init.c (do_member_init): Remove; this code is dead.
6020	(expand_member_init): Remove much of this code; it is dead.
6021	* typeck.c (convert_arguments): Use convert_default_arg and
6022	convert_arg_for_ellipsis, rather than duplicating here.
6023
6024	* call.c (convert_like): Don't fail silently if
6025	build_user_type_conversion fails.  Always return error_mark_node
6026	for failure.
6027
60281998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
6029
6030	* search.c (covariant_return_p): Complain about ambiguous base.
6031
6032	* typeck.c (build_component_ref): Diagnose ref to nested type.
6033
60341998-06-10  Brendan Kehoe  <brendan@cygnus.com>
6035
6036	* decl.c (grokparms): Check that INIT isn't an error_mark_node
6037	before giving error about invalid type for default arg.
6038
60391998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
6040
6041	* call.c (build_method_call): Fix thinko.
6042
60431998-06-10  Dave Brolley  <brolley@cygnus.com>
6044
6045	* decl2.c (lang_decode_option): New argc/argv interface.
6046	* cp-tree.h (lang_decode_option): New argc/argv interface.
6047	* lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
6048	specified for cpplib-enabled compilers.
6049	* lex.c (lang_init): Don't check_newline for cpplib.
6050	(init_parse): Don't initialize cpplib here.
6051
60521998-06-10  Brendan Kehoe  <brendan@cygnus.com>
6053
6054	* typeck.c (build_component_ref): Make sure FIELD has a lang_specific
6055	piece before checking DECL_MUTABLE_P.
6056
60571998-06-10  John Carr  <jfc@mit.edu>
6058
6059	* tree.c (debug_binfo): Make printf format match arguments.
6060
6061	* error.c (OB_PUTI): Make printf format match arguments.
6062
60631998-06-10  Jason Merrill  <jason@yorick.cygnus.com>
6064
6065	* init.c (perform_member_init): Handle default-initialization.
6066
6067	* except.c (build_throw): Handle throwing NULL.
6068
6069	* typeck.c (build_x_function_call): Use resolve_offset_ref.
6070
6071	* search.c (compute_access): Only strip an anonymous union
6072	for a FIELD_DECL.
6073
6074	* call.c (add_builtin_candidates): Tweak.
6075
6076	* cvt.c (build_expr_type_conversion): Restore code for conversion
6077	from class types.
6078	* decl2.c (delete_sanity): Use it.  Clean up.
6079
6080	* typeck.c (comp_ptr_ttypes_real): Fix cv-qual comparisons.
6081
60821998-06-10  Branko Cibej  <branko.cibej@hermes.si>
6083
6084	* typeck.c (c_expand_return): Don't warn about void expressions on
6085	return statements in functions returning void.
6086
60871998-06-09  Mark Mitchell  <mark@markmitchell.com>
6088
6089	* pt.c (fn_type_unification): Revise documentation.  Tidy.
6090	(type_unification): Likewise.
6091
60921998-06-09  Andrew MacLeod  <amacleod@cygnus.com>
6093
6094	* semantics.c (finish_try_block): Rename expand_start_catch, and delete
6095	expand_end_catch.
6096	* parse.y (function_try_block): Rename expand_start_catch, and delete
6097	expand_end_catch.
6098	* except.c (expand_end_eh_spec): Rename expand_start_catch, and delete
6099	expand_end_catch.
6100
61011998-06-09  Jason Merrill  <jason@yorick.cygnus.com>
6102
6103	* search.c (lookup_member): New fn.
6104	* class.c (finish_struct_1): Use it.
6105	* decl.c (lookup_name_real): Use it.
6106
6107Mon Jun  8 20:45:52 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6108
6109	* Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
6110
6111	* cp-tree.h: Add prototype for `maybe_print_template_context' and
6112	`maybe_make_one_only'.
6113
6114	* decl.c (auto_function): Remove unused variable `decl'.
6115
6116	* decl2.c: Include dwarf2out.h and dwarfout.h.
6117
6118	* lex.c: Remove redundant declarations of `set_float_handler' and
6119	`asm_out_file'.
6120
61211998-06-08  Andrew MacLeod  <amacleod@cygnus.com>
6122
6123	* except.c (init_exception_processing): Remove NEW_EH_MODEL compile
6124	time flag.  Call __cp_eh_info instead of __cp_exception_info.
6125	* exception.cc (struct cp_eh_info): Remove NEW_EH_MODEL flag.
6126	(__cp_exception_info): Return offset into cp_eh_info structure to
6127	match what use to be the start of this structure.
6128	(__cp_eh_info): New function to return a pointer to cp_eh_info struct.
6129	(__cplus_type_matcher, __cp_push_exception): Remove NEW_EH_MODEL
6130	compile time flag.
6131	(__uncatch_exception, __check_eh_spec, std::uncaught_exception): Call
6132	__cp_eh_info instead of __cp_exception_info.
6133
61341998-06-08  Jason Merrill  <jason@yorick.cygnus.com>
6135
6136	* decl.c (cp_finish_decl): Disable inlining of extern inlines
6137	with static variables.
6138
61391998-06-08  Mark Mitchell  <mark@markmitchell.com>
6140
6141	* init.c (build_offset_ref): Correct previous change to use build,
6142	not build_min.
6143
61441998-06-07  Mark Mitchell  <mark@markmitchell.com>
6145
6146	* class.c (instantiate_type): Handle pointer-to-members where the
6147	member is a template.
6148	* init.c (build_offset_ref): Likewise.
6149	* typeck.c (build_unary_op): Likewise.
6150
61511998-06-07  Richard Henderson  <rth@cygnus.com>
6152
6153	* lex.c (lang_init_options): New function.
6154	(lang_init): Remove flag_exceptions == 2 hack.
6155
61561998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
6157
6158	* search.c (envelope_add_decl): Tweak for implicit typename.
6159
6160	* call.c (joust): Also warn about confusing conversion op/constructor
6161	overload resolution.
6162
6163	* spew.c (yylex): Also return the TYPE_DECL if got_object.
6164	Don't clear got_object after '~'.
6165	* call.c (build_scoped_method_call): Tweak destructor handling.
6166	(build_method_call): Likewise.
6167	* pt.c (tsubst_copy, case METHOD_CALL_EXPR): Don't mess with
6168	TYPE_MAIN_VARIANT for destructors.
6169	* semantics.c (finish_object_call_expr): Complain about calling a
6170	TYPE_DECL.
6171
61721998-06-05  Per Bothner  <bothner@cygnus.com>
6173
6174	* g++spec.c (lang_specific_pre_link, lang_specific_extra_ofiles):
6175	Define - update needed by gcc.c change.
6176
61771998-06-05  Jason Merrill  <jason@yorick.cygnus.com>
6178
6179	* error.c (cp_printers): Use 'o' instead of '_' for the null entry.
6180
61811998-06-05  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
6182
6183	* cp-tree.h (DECL_NAMESPACE_ALIAS, ORIGINAL_NAMESPACE): Declare.
6184	* decl.c (lookup_name_real): Add namespaces_only parameter.
6185	If set, return only NAMESPACE_DECLs.
6186	(select_decl): Likewise.
6187	(identifier_type_value): Give additional parameter.
6188	(lookup_name_nonclass): Likewise.
6189	(lookup_name): Likewise.
6190	(find_binding): Skip namespace aliases.
6191	(binding_for_name): Likewise.
6192	(push_namespace): Check for namespace aliases.
6193	(lookup_name_namespace_only): New function.
6194	(begin_only_namespace_names, end_only_namespace_names): New functions.
6195	* decl2.c (set_decl_namespace): Skip namespace aliases.
6196	(do_using_directive): Likewise.
6197	(do_namespace_alias): Produce namespace aliases, fix alias
6198	redeclaration.
6199	* error.c (dump_decl): Support SCOPE_REF.
6200	* parse.y (extdef): Wrap lookup with namespace_only for namespace
6201	aliases and using declarations.
6202
62031998-06-04  Jason Merrill  <jason@yorick.cygnus.com>
6204
6205	* tree.c (really_overloaded_fn): Only see through one TREE_LIST.
6206
6207	* error.c (dump_expr): Clean up NEW_EXPR case.
6208
62091998-06-04  Martin von L�wis  <loewis@informatik.hu-berlin.de>
6210
6211	Suggested by Brendan Kehoe
6212	* decl2.c (do_toplevel_using_decl): When decl is a TYPE_DECL,
6213	treat it as using ::decl.
6214
6215	* decl2.c (arg_assoc_type): Process unknown_type_node and OFFSET_TYPE.
6216
6217	* tree.c (mapcar): Support NEW_EXPR.
6218
6219	* error.c (dump_expr): Support NEW_EXPR.
6220
62211998-06-03  Jason Merrill  <jason@yorick.cygnus.com>
6222
6223	* method.c (make_thunk): Use overload machinery to make name.
6224	* search.c (covariant_return_p): New fn.
6225	(get_matching_virtual): Use it.
6226
6227	* init.c (build_new_1): Fix check for void.
6228
62291998-06-01  Per Bothner  <bothner@cygnus.com>
6230
6231	* cp-tree.h (TYPE_FOR_JAVA):  New macro.
6232	* decl.c, cp-tree.h (java_byte_type_node, java_short_type_node,
6233	java_int_type_node, java_long_type_node, java_float_type_node,
6234	java_double_type_node, java_char_type_node, java_boolean_type_node):
6235	New "primitive" types, with predefined names __java_byte etc.
6236	(record_builtin_java_type):  New function.
6237	(init_decl_processing):  Make Java types with record_builtin_java_type.
6238	(pushtag, grokdeclarator):  Set TYPE_FOR_JAVA if in extern "JAVA".
6239	(xref_baseypes):  If base class was TYPE_FOR_JAVA, so is this class.
6240	(grokfndecl):  Call check_java_method for Java classes.
6241	* method.c (is_java_type):  Removed.  Replaced with TYPE_FOR_JAVA.
6242	(process_overload_item):  Match types against specific
6243	java_XX_type_node types, rather than using is_java_type.
6244	* class.c (finish_struct_1):  Don't add default copy constructor
6245	or operator= if TYPE_FOR_JAVA.
6246	(pop_lang_conext):  Restore strict_prototyp proper if Java.
6247	* decl2.c (acceptable_java_type, check_java_method):  New functions.
6248	* pt.c (instantiate_class_template):  Copy TYPE_FOR_JAVA from pattern.
6249	(tsubst):  Move common statement after if statement.
6250	* typeck.c (comptypes):  If strict, TYPE_FOR_JAVA must match.
6251
62521998-06-01  Jason Merrill  <jason@yorick.cygnus.com>
6253
6254	* pt.c (for_each_template_parm): Use first_rtl_op.
6255
6256	* tree.c (build_cplus_array_type_1): Also check index_type for
6257	template parms.
6258
62591998-05-31  Jason Merrill  <jason@yorick.cygnus.com>
6260
6261	* pt.c (tsubst): Always copy BINFO_BASETYPES.
6262
62631998-05-29  scott snyder  <snyder@d0sgif.fnal.gov>
6264
6265	* tree.c (layout_basetypes): If we change TYPE_SIZE, change
6266	TYPE_SIZE_UNIT too.
6267
62681998-05-29  Mark Mitchell  <mark@markmitchell.com>
6269
6270	* decl.c (grokdeclarator): Don't complain about in-class
6271	initialization of static consts if we don't really know the type
6272	of the variable.
6273
62741998-05-29  Jason Merrill  <jason@yorick.cygnus.com>
6275
6276	* cp-tree.h (DECL_DESTRUCTOR_P): New macro.
6277	* method.c (build_destructor_name): New fn.
6278	* decl2.c (maybe_retrofit_in_chrg): Split out...
6279	(grokclassfn): From here.  Reorganize.
6280	* decl.c (grok_ctor_properties): Make sure ctors for types with
6281	vbases have the in_chrg parm.
6282	* pt.c (instantiate_class_template): Update
6283	TYPE_USES_VIRTUAL_BASECLASSES from tsubsted bases.  Don't call
6284	grok_*_properties.
6285	(tsubst): Call grok_ctor_properties and maybe_retrofit_in_chrg.
6286
62871998-05-28  Mark Mitchell  <mark@markmitchell.com>
6288
6289	* pt.c (instantiate_decl): Make test for whether or not static
6290	variables should be instantiated early match its comment.
6291
62921998-05-28  Jason Merrill  <jason@yorick.cygnus.com>
6293
6294	* decl.c (start_decl): Always pedwarn about vacuously redeclaring
6295	a member.
6296	(start_function): Call check_default_args.
6297	* decl2.c (grokfield): Don't call check_default_args.
6298	(check_default_args): Use cp_error_at.
6299	* lex.c (do_pending_defargs): Call check_default_args.
6300
63011998-05-27  Brendan Kehoe  <brendan@cygnus.com>
6302
6303	* call.c (build_method_call): Make sure get_type_value returns
6304	something before we try to use its TYPE_MAIN_VARIANT.
6305	(build_scoped_method_call): Likewise.
6306
63071998-05-27  Jason Merrill  <jason@yorick.cygnus.com>
6308
6309	* typeck2.c (digest_init): Complain about getting a TREE_LIST to
6310	initialize an array.
6311
6312	* search.c (expand_upcast_fixups): Don't set DECL_CONTEXT and
6313	DECL_VIRTUAL_P.
6314
6315	* friend.c (do_friend): Clarify template warning.
6316
63171998-05-27  Mark Mitchell  <mark@markmitchell.com>
6318
6319	* decl.c (shadow_label): Don't treat decls as identifiers.
6320	(maybe_push_to_top_level): Clear shadowed_labels.
6321
6322	* pt.c (instantiate_decl): Reset lineno and filename after calling
6323	regenerate_decl_from_template.
6324
6325	* decl.c (grokdeclarator): Don't try to use TYPE_OBSTACK on an
6326	error_mark_node.
6327
63281998-05-27  Kevin Buhr  <buhr@stat.wisc.edu>
6329
6330	* parse.y (base_class): Use is_aggr_type, not IS_AGGR_TYPE.
6331
63321998-05-26  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
6333
6334	* pt.c (process_template_parm): Accept TYPENAME_TYPE nodes.
6335	(convert_nontype_argument): Handle cases when nontype template
6336	parameters become classes after substitution.
6337
63381998-05-26  Mark Mitchell  <mark@markmitchell.com>
6339
6340	* friend.c (is_friend): Use comptypes, rather than == to compare
6341	types.  Modify for new representation of template friends.
6342	(make_friend_class): Likewise.
6343	* pt.c (tsubst_friend_class): Undo 1998-05-21 change.  Tweak.
6344	(instantiate_class_template): Deal with template friends.
6345
6346	* decl.c (store_parm_decls): Remove redundant call to
6347	expand_main_function.
6348
63491998-05-26  Benjamin Kosnik  <bkoz@loony.cygnus.com>
6350
6351	* decl.c (start_decl): Check for DECL_LANG_SPECIFIC before
6352	DECL_USE_TEMPLATE.
6353
63541998-05-26  Per Bothner  <bothner@cygnus.com>
6355
6356	* language_as_string:  Handle lang_java.
6357
63581998-05-26  Jason Merrill  <jason@yorick.cygnus.com>
6359
6360	* decl.c (pushdecl): Don't copy the type_decl.
6361
63621998-05-26  Martin v. L�wis  <loewis@informatik.hu-berlin.de>
6363
6364	* class.c (pushclass): Always store TYPE_MAIN_VARIANT in
6365	current_class_type.
6366	* decl.c (grokdeclarator): Put typedefs on the type's obstack.
6367
6368	* parse.y (complex_direct_notype_declarator): Use $1 to access
6369	scope of notype_qualified_id.
6370
63711998-05-26  Dave Brolley  <brolley@cygnus.com>
6372
6373	* lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
6374	(init_parse): Initialize cpplib interface.
6375
6376	* Makefile.in (CXX_OBJS): Make sure dependencies never end with an
6377	empty continuation.
6378
63791998-05-26  Mark Mitchell  <mark@markmitchell.com>
6380
6381	* decl.c (pushtag): Avoid crashing on erroneous input.
6382
63831998-05-25  Martin v. L�wis  <loewis@informatik.hu-berlin.de>
6384
6385	* decl.c (push_namespace): Only produce one unique name for
6386	anonymous namespaces.
6387	(get_unique_name): Remove.
6388
63891998-05-25  Mark Mitchell  <mark@markmitchell.com>
6390
6391	* call.c (tourney): Don't do any extra comparisons.
6392
6393	* decl2.c (build_anon_union_vars): Don't crash on empty sub-unions.
6394
6395	* cp-tree.h (processing_template_parmlist): Declare.
6396	* decl.c (pushtag): Don't call push_template_decl when we
6397	shouldn't.
6398	* pt.c (processing_template_parmlist): New variable.
6399	(TMPL_ARGS_HAVE_MULTIPLE_LEVELS): New macro.
6400	(complete_template_args): Use it.
6401	(add_to_template_args): Likewise.
6402	(innermost_args): Likewise.
6403	(tsubst): Likewise.
6404	(begin_template_parm_list): Use processing_template_parmlist.
6405	(end_template_parm_list): Likewise.
6406
6407	* cp-tree.h (ANON_UNION_TYPE_P): New macro.
6408	* decl.c (grokdeclarator): Use it.
6409	* decl2.c (grok_x_components): Likewise.
6410	* init.c (initializing_context): Likewise.
6411	* method.c (do_build_copy_constructor): Likewise.
6412	(do_build_assign_ref): Likewise.
6413	* search.c (compute_access): Likewise.
6414	* typeck.c (build_component_ref): Likewise.
6415
6416	* decl.c (grokdeclarator): Don't give a cv-qualified version of an
6417	unnamed type a typedef name "for linkage purposes".
6418
6419	* pt.c (lookup_template_class): Don't look at
6420	IDENTIFIER_CLASS_VALUE when there's no current_class_type.
6421
6422	* method.c (build_overload_int): Handle error cases gracefully.
6423
6424	* pt.c (instantiate_decl): Handle static member variables
6425	correctly.
6426
6427	* pt.c (tsubst): Use the tsubst'd type when producing new
6428	TEMPLATE_PARM_INDEX nodes.
6429
64301998-05-24  Mark Mitchell  <mark@markmitchell.com>
6431
6432	* tree.c (cp_tree_equal): Handle pointers to member functions.
6433
6434	* call.c (maybe_handle_implicit_object): Handle QUAL_CONVs.  Make
6435	sure the type of the REF_BIND is a reference type.
6436	(maybe_handle_ref_bind, compare_ics): Rename reference_type to
6437	target_type for clarity.
6438
6439	* parse.y (xcond): Move call to condition_conversion ...
6440	* semantics.c (finish_for_cond): Here.
6441	* parse.c: Regenerated.
6442
64431998-05-24  Jason Merrill  <jason@yorick.cygnus.com>
6444
6445	* decl.c (push_namespace): Namespaces have type void.
6446	* typeck2.c (incomplete_type_error): Complain about namespace
6447	used as expression.
6448	* typeck.c (decay_conversion): Likewise.
6449
64501998-05-24  Martin von L�wis  <loewis@informatik.hu-berlin.de>
6451
6452	* error.c (dump_expr): Support namespaces.
6453
64541998-05-23  Jason Merrill  <jason@yorick.cygnus.com>
6455
6456	* cp-tree.def: Add SRCLOC.
6457	* cp-tree.h: Add struct tree_srcloc and accessor macros.
6458	* tree.c (build_srcloc, build_srcloc_here): New fns.
6459	* pt.c (add_pending_template): Use build_srcloc_here.
6460	(push_tinst_level): Update last_template_error_tick before erroring.
6461	(instantiate_decl): Restore lineno and input_filename before
6462	calling add_pending_template.
6463	* decl2.c (finish_file): Set up lineno and input_filename for
6464	pending templates.
6465
64661998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
6467
6468	* decl.c (lang_print_error_function): New fn.
6469	(init_decl_processing): Set print_error_function to use it.
6470	* errfn.c (cp_thing): Don't call maybe_print_template_context here.
6471
6472	* call.c (maybe_handle_ref_bind): Propagate ICS_USER_FLAG and
6473	ICS_BAD_FLAG.
6474
6475	* cvt.c (ocp_convert): Don't set LOOKUP_NO_CONVERSION for
6476	copy-initialization.
6477
6478	* class.c (build_vtable_entry): Use int_fits_type_p.
6479	(build_vtable): Pass a signed offset to build_vtable_entry.
6480	(prepare_fresh_vtable, modify_one_vtable, fixup_vtable_deltas1,
6481	set_rtti_entry): Likewise.
6482
64831998-05-22  Per Bothner  <bothner@cygnus.com>
6484
6485	* cp-tree.h:  Add comments documenting which LANG_FLAGS are used.
6486	(C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE):  Removed, not used.
6487
64881998-05-22  Jason Merrill  <jason@yorick.cygnus.com>
6489
6490	* pt.c (print_template_context): Use fprintf instead of cp_error.
6491
6492	* pt.c (determine_specialization): Just return an error_mark_node.
6493	Also print the decl we want in error messages.  If we complain,
6494	return error_mark_node.
6495	(tsubst_friend_function): Set lineno and input_filename so
6496	error messages will be useful.
6497	(instantiate_template): Just return an error_mark_node.
6498	(check_explicit_specialization): Don't mess with a returned
6499	error_mark_node.
6500
6501	* pt.c (print_template_context): Add new argument.
6502	(maybe_print_template_context): New fn.
6503	(push_tinst_level): Increment tinst_level_tick.
6504	(pop_tinst_level): Likewise.
6505	* errfn.c (cp_thing): Call maybe_print_template_context.  Use
6506	xrealloc instead of xmalloc.
6507
6508	* typeck.c (build_unary_op, CONVERT_EXPR): Propagate TREE_CONSTANT.
6509
65101998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
6511
6512	* pt.c (tsubst_friend_class): Don't call redeclare_class_template
6513	if the template we looked up is the same as the one we already
6514	have.
6515
6516Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
6517
6518	* lex.c: (handle_sysv_pragma): FILE* parameter not used.
6519	(cpp_reader,parse_in): Add for cpplib.
6520	(check_newline): Call handle_sysv_pragma with new interface.
6521	(check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
6522
6523	* input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
6524	(sub_getch): Call GETC for cpplib.
6525
6526	* cp-tree.h: (get_directive_line): Different prototype for cpplib.
6527	(GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
6528
6529	* Makefile.in (CXX_OBJS): Add @extra_cxx_objs@ for cpplib.
6530
65311998-05-21  Jason Merrill  <jason@yorick.cygnus.com>
6532
6533	* decl2.c (maybe_make_one_only): New fn.
6534	(import_export_vtable): Use it.
6535	(import_export_decl): Likewise.
6536	* pt.c (mark_decl_instantiated): Likewise.
6537
65381998-05-21  Mark Mitchell  <mmitchell@usa.net>
6539
6540	* decl2.c (find_representative_member): Rename to ...
6541	(build_anon_union_vars): New function.
6542	(finish_anon_union): Fix stupidity of previous change.
6543
65441998-05-20  Jason Merrill  <jason@yorick.cygnus.com>
6545
6546	* decl.c (grokfndecl): Handle definition of specialization in
6547	friend declaration.
6548
6549	* error.c (dump_decl): Fix LOOKUP_EXPR handling.
6550
65511998-05-20  Mark Mitchell  <mmitchell@usa.net>
6552
6553	* class.c (delete_duplicate_fields_1): Use DECL_DECLARES_TYPE_P
6554	to look for type declarations.
6555	(finish_struct): Deal with templates on the CLASSTYPE_TAGS list.
6556	* cp-tree.h (DECL_DECLARES_TYPE_P): New macro.
6557	(finish_member_class_template): Declare.
6558	* decl.c (pushtag): Put member class templates on the
6559	CLASSTYPE_TAGS list, just as for ordinary member classes.
6560	(pushdecl_class_level): Use DECL_DECLARES_TYPE_P.
6561	(lookup_tag): Look for IDENTIFIER_CLASS_VALUEs, just as with
6562	IDENTIFIER_NAMESPACE_VALUEs.
6563	* parse.y (component_decl): Move code to ...
6564	* semantics.c (finish_member_class_template): New function.
6565	Don't put member class templates on the list of components for a
6566	class.
6567	* parse.c: Regenerated.
6568	* pt.c (classtype_mangled_name): Don't try DECL_CONTEXT on types.
6569	In fact, don't use DECL_CONTEXT at all here.
6570
65711998-05-20  Martin von Loewis  <loewis@informatik.hu-berlin.de>
6572
6573	* decl.c (record_unknown_type): New function.
6574	(init_decl_processing): Call it for the unknown and global type
6575	nodes.
6576
65771998-05-20  Mark Mitchell  <mmitchell@usa.net>
6578
6579	* decl2.c (find_representative_member): New function.
6580	(finish_anon_union): Use it.
6581
6582	* cp-tree.h (MAIN_NAME_P): New macro.
6583	(DECL_MAIN_P): Likwise.
6584	* decl.c (pushdecl): Avoid crashing on redefinitions of `main'.
6585	(grokfndecl): Use the new macros.
6586	(grokdeclarator): Likewise.
6587	(start_function): Likewise.
6588	(store_parm_decls): Likewise.
6589	(finsh_function): Likewise.
6590	* friend.c (do_friend): Likewise.
6591	* typeck.c (build_function_call_real): Likewise.
6592	(build_unary_op): Likewise.
6593
6594Wed May 20 02:16:01 1998  Jason Merrill  <jason@yorick.cygnus.com>
6595
6596	* decl2.c (start_objects, finish_objects, do_dtors,
6597	do_ctors): Split out from...
6598	(finish_file): ...here.
6599
6600Tue May 19 20:36:23 1998  Jason Merrill  <jason@yorick.cygnus.com>
6601
6602	* tree.c (is_overloaded_fn): Don't abort on placeholders from
6603	push_class_decls.
6604
6605Tue May 19 15:16:22 1998  Brendan Kehoe  <brendan@cygnus.com>
6606
6607	* class.c (is_empty_class): Return 0 if TYPE is an error_mark_node.
6608
6609	* error.c (dump_expr): Handle an ARROW_EXPR.
6610
6611Tue May 19 15:13:39 1998  Mark Mitchell  <mmitchell@usa.net>
6612
6613	* decl.c (saveable_obstack): Declare.
6614	(pushdecl): Copy TYPE_DECLs to the same obstack as the type they
6615	declare, if necessary.
6616
6617Tue May 19 14:50:27 1998  Mark Mitchell  <mmitchell@usa.net>
6618
6619	* call.c (compare_qual): Remove.
6620	(is_subseq): Tweak.
6621	(is_properly_derived_from): New function.
6622	(maybe_handle_ref_bind): Likewise.
6623	(maybe_handle_implicit_object): Likewise.
6624	(compare_ics): Modify substantially to bring into conformance with
6625	the standard.
6626	* cp-tree.h (TYPE_PTRMEMFUNC_OBJECT_TYPE): New macro.
6627	(comp_cv_qualification): Declare.
6628	(comp_cv_qual_signature): Likewise.
6629	* typeck.c (comp_cv_qualification): Likewise.
6630	(comp_cv_qual_signature): Likewise.
6631
6632Tue May 19 10:05:02 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6633
6634	* Makefile.in (parse.o): Depend on toplev.h.
6635
6636	* class.c (typecode_p): Remove prototype and definition.
6637
6638	* cp-tree.h (currently_open_class, is_empty_class, member_p):
6639	Add prototype.
6640
6641	* decl.c (push_overloaded_decl_top_level): Remove prototype and
6642	definition.
6643
6644	* errfn.c (cp_error): Cast function pointer `error' to (errorfn *)
6645	in call to `cp_thing'.
6646	(cp_warning): Likewise for function pointer `warning'.
6647
6648	* except.c (do_function_call): Remove prototype and definition.
6649	(call_eh_info): Wrap variable `t1' in macro NEW_EH_MODEL.
6650
6651	* method.c (is_java_type): Add prototype and make it static.
6652
6653	* parse.y: Include toplev.h.
6654
6655	* pt.c (type_unification): Remove unused variable `arg'.
6656	(instantiate_decl): Likewise for `save_ti'.
6657
6658	* tree.c (propagate_binfo_offsets): Likewise for `base_binfos'.
6659
6660Tue May 19 02:43:25 1998  Jason Merrill  <jason@yorick.cygnus.com>
6661
6662	* init.c (build_member_call): Handle template_ids.
6663	* parse.y (primary): Add global_scope template_id.
6664
6665Mon May 18 23:22:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
6666
6667	* decl2.c (get_sentry): Use end_temporary_allocation.
6668	Don't declare permanent_obstack.
6669
6670Mon May 18 12:28:44 1998  Mark Mitchell  <mmitchell@usa.net>
6671
6672	* parse.y (.finish_new_placement): New non-terminal.
6673	(unary_expr, new_type_id): Use it.
6674	* parse.c: Regenerated.
6675
6676Mon May 18 12:20:27 1998  Brendan Kehoe  <brendan@cygnus.com>
6677
6678	* pt.c (redeclare_class_template): Say where the original definition
6679	of the template-parameter's default argument appeared.
6680
6681Mon May 18 03:00:57 1998  Jason Merrill  <jason@yorick.cygnus.com>
6682
6683	* call.c (build_over_call): Tweak empty class handling.
6684
6685	* decl.c (make_typename_type): Use currently_open_class.
6686
6687	* class.c (instantiate_type): Don't abort on TREE_NONLOCAL_FLAG.
6688
6689Mon May 18 01:43:01 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
6690
6691	* decl.c (lookup_name_real): Don't look at IDENTIFIER_LOCAL_VALUE
6692	for a type unless it is one.
6693
6694	* class.c (finish_struct_1): Use OVL_CURRENT in error message.
6695
6696Mon May 18 01:24:08 1998  Jeffrey A Law  (law@cygnus.com)
6697
6698	* Makefile.in (program_transform_name, objdir): Define.
6699
6700	* Makefile.in (BISON): Use bison from the build tree if it exists.
6701	(FLEX): Likewise.
6702
6703Sun May 17 14:52:08 1998  Martin v. Loewis  <loewis@informatik.hu-berlin.de>
6704
6705	* typeck.c (type_unknown_p): Return true for TREE_LIST also.
6706
6707	* call.c (build_method_call): Use TYPE_MAIN_VARIANT on typedefs.
6708
6709Sun May 17 14:51:41 1998  Jason Merrill  <jason@yorick.cygnus.com>
6710
6711	* call.c (build_scoped_method_call): Likewise.
6712
6713Sun May 17 13:53:48 1998  Mark Mitchell  <mmitchell@usa.net>
6714
6715	* init.c (build_new_1): Call suspend_momentary around the creation
6716	of values that must be saved for exception handling.
6717	* parse.y (.build_new_placement): New non-terminal.
6718	(unary_expr, new_placement): Use it.
6719	* parse.c: Regenerated.
6720
6721Sun May 17 12:32:08 1998  Jason Merrill  <jason@yorick.cygnus.com>
6722
6723	* decl.c (duplicate_decls): Use CANONICAL_TYPE_VARIANT to compare
6724	old and new types.
6725
6726	* pt.c (tsubst): Make sure that BINFO_TYPE of new binfos is the
6727	canonical type.
6728
6729	* call.c (build_over_call): Don't use IS_SIGNATURE on a namespace.
6730
6731Fri May 15 20:28:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
6732
6733	* decl.c (start_decl): Revert problem change.
6734
6735	* Makefile.in (CONFLICTS): Fix.
6736
6737Fri May 15 15:34:02 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
6738
6739	* decl.c (duplicate_decls): Clean up, add DECL_DATA_AREA bits.
6740
6741Fri May 15 00:46:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
6742
6743	* class.c (finish_struct_1): Use BINFO_SIZE.
6744
6745	* decl.c (start_decl): Use 'tem'.
6746
6747Thu May 14 16:30:47 1998  Andrew MacLeod  <amacleod@cygnus.com>
6748
6749	* exception.cc: Include eh-common.h.
6750	(struct cp_eh_info): Add eh_info struct with NEW_EH_MODEL.
6751	(__cplus_type_matcher): First stab at new C++ runtime type matcher.
6752	(__cp_push_exception): Initialize eh_info struct as well.
6753	* except.c: Remove local structs and include eh-common.h.
6754	(init_exception_processing): Set language and version codes.
6755	(call_eh_info): Add presence of eh_info to runtime description of
6756	struct cp_eh_info.
6757	(expand_end_eh_spec): Call start_catch_block() and end_catch_block().
6758	* semantics.c (finish_try_block): Call start_catch_block() and
6759	end_catch_block().
6760	* parse.y (function_try_block): Call start_catch_block() and
6761	end_catch_block().
6762
6763Thu May 14 12:27:34 1998  Brendan Kehoe  <brendan@cygnus.com>
6764
6765	* typeck.c (original_type): New function.
6766	(common_type): Use it to get the DECL_ORIGINAL_TYPE for T1 and T2,
6767	to see if they're actually the same.
6768	* cp-tree.h (original_type): Declare.
6769
6770Wed May 13 12:54:30 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
6771
6772	* Makefile.in (lex.o): Depend on output.h.
6773
6774	* call.c (add_function_candidate): Remove unused variable `cand'.
6775	(add_conv_candidate): Likewise.
6776	(build_builtin_candidate): Likewise.
6777
6778	* cp-tree.h: Add prototype for `types_overlap_p'.
6779
6780	* decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
6781
6782	* decl2.c (merge_functions): Remove unused variables `tmp' and
6783	`tempn'.
6784
6785	* error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
6786	(code_as_string): Likewise.
6787	(language_as_string): Likewise.
6788	(parm_as_string): Likewise.
6789	(op_as_string): Likewise.
6790	(assop_as_string): Likewise.
6791	(cv_as_string): Likewise.
6792
6793	* lex.c: Include output.h.
6794
6795	* pt.c (type_unification): Cast first argument of `bzero' to a char*.
6796
6797	* search.c (dfs_no_overlap_yet): Mark parameter `t' with
6798	ATTRIBUTE_UNUSED.
6799
6800	* tinfo.cc (__class_type_info::dcast): Change the type of variable
6801	`i' from int to size_t.
6802
6803	* typeck.c (language_lvalue_valid): Mark parameter `exp' with
6804	ATTRIBUTE_UNUSED.
6805
6806Tue May 12 21:37:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
6807
6808	* error.c (dump_simple_decl): Use DECL_CLASS_SCOPE_P and/or
6809	DECL_NAMESPACE_SCOPE_P.
6810	(lang_decl_name): Likewise.
6811	* pt.c (tsubst_friend_function, tsubst): Likewise.
6812	* decl.c (pushdecl, redeclaration_error_message, start_decl,
6813	cp_finish_decl, start_function): Likewise.
6814	* class.c (finish_struct_1): Likewise.
6815	* call.c (build_over_call): Likewise.
6816	(compare_ics): Use DERIVED_FROM_P.
6817
6818Tue May 12 07:24:18 1998  Mark Mitchell  <mmitchell@usa.net>
6819
6820	* cp-tree.h (CANONICAL_TYPE_VARIANT): New macro.
6821	* method.c (build_mangled_name): Use it.
6822	(build_decl_overload_real): Likewise.
6823
6824	* error.c (dump_simple_decl): New function, broken out from ...
6825	(dump_decl): Use it.
6826
6827Mon May 11 11:38:07 1998  Mark Mitchell  <mmitchell@usa.net>
6828
6829	* ptree.c (lang_print_xnode): Add missing `break'.
6830
6831	* pt.c (tsubst): Remove duplicate check for IDENTIFIER_NODE.
6832
6833	* call.c (add_template_candidate): Adjust for changes to
6834	fn_type_unification.
6835	(add_template_candidate_real): Likewise.
6836	(add_template_conv_candidate): Likewise.
6837	(build_user_type_conversion_1): Likewise.
6838	(build_new_function_call): Likewise.
6839	(build_object_call): Likewise.
6840	(build_new_op): Likewise.
6841	(build_new_method_call): Likewise.
6842	* class.c (instantiate_type): Likewise.
6843	* cp-tree.h (unification_kind_t): New type.
6844	(fn_type_unification): Adjust prototype.
6845	(type_unificaiton): Likewise.
6846	* pt.c (UNIFY_ALLOW_NONE): New macro.
6847	(UNIFY_ALLOW_MORE_CV_QUAL): Likewise.
6848	(UNIFY_ALLOW_LESS_CV_QUAL): Likewise.
6849	(UNIFY_ALLOW_DERIVED): Likewise.
6850	(unify): Change prototype.
6851	(maybe_adjust_types_for_deduction): New function.
6852	(check_cv_quals_for_unify): Likewise.
6853	(determine_specialization): Adjust.
6854	(fn_type_unification): Likewise.
6855	(type_unification): Likewise.
6856	(type_unification_real): Likewise.  Use
6857	maybe_adjust_types_for_deduction.  Fix mishandling of
6858	back-unification of template functions passed as arguments.  Pass
6859	appropriate combination of UNIFY_ALLOW_* to unify.
6860	(unify): Remove unused NTPARMS parameter.  Use
6861	check_cv_quals_for_unify.  Remove bogus code that allowed
6862	too-generous unification in order to adhere more closely to standard.
6863	(get_bindings_real): Adjust.
6864	(get_class_bindings): Likewise.
6865
6866	* method.c (build_overload_identifier): Only use the innermost
6867	template arguments when mangling.
6868	* pt.c (tsubst_template_argument_vector): New function.
6869	(complete_template_args): Deal with the situation where the
6870	extra_args contain more than one level of arguments.
6871	(lookup_template_class): Deal with member template classes, which
6872	may have more than one level of arguments.
6873	(tsubst): Don't tsbust into the TREE_TYPE of an IDENTIFIER_NODE.
6874	Improve handling of member template classes.  Use
6875	DECL_PRIMARY_TEMPLATE instead of inline expansion.  Use
6876	tsubst_template_argument_vector where appropriate.
6877	(regenerate_decl_from_template): Break out from ...
6878	(instantiate_decl): Here.
6879
6880	* lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
6881	* parse.h: Regenerated.
6882	* parse.c: Really regenerated.
6883
6884	* cp-tree.h (finish_unary_op_expr): New function.
6885	(finish_id_expr): Likewise.
6886	(begin_new_placement): Likewise.
6887	(finish_new_placement): Likewise.
6888	(finish_declarator): Likewise.
6889	(finish_translation_unit): Likewise.
6890	(finish_parmlist): Likewise.
6891	(begin_class_definition): Likewise.
6892	(finish_class_definition): Likewise.
6893	(finish_default_args): Likewise.
6894	(finish_inline_definitions): Likewise.
6895	* parse.y (GCC_ASM_KEYWORD): Remove.
6896	(TYPENAME_ELLIPSIS): Likewise.
6897	* parse.c: Regenerated.
6898	Use new functions in semantics.c in the actions for many rules.
6899	* gxx.gperf (GCC_ASM_KEYWORD): Just use ASM_KEYWORD.
6900	* hash.h: Regenerated.
6901	* semantics.c (finish_expr_stmt): Allow NULL expr.
6902	(finish_unary_op_expr): New function, containing
6903	code previously in parse.y.
6904	(finish_id_expr): Likewise.
6905	(begin_new_placement): Likewise.
6906	(finish_new_placement): Likewise.
6907	(finish_declarator): Likewise.
6908	(finish_translation_unit): Likewise.
6909	(finish_parmlist): Likewise.
6910	(begin_class_definition): Likewise.
6911	(finish_class_definition): Likewise.
6912	(finish_default_args): Likewise.
6913	(finish_inline_definitions): Likewise.
6914
6915Sun May 10 23:43:13 1998  Mark Mitchell  <mmitchell@usa.net>
6916
6917	* typeck.c (build_c_cast): Don't decay arrays and functions to
6918	pointer type when converting to a class type.
6919
6920Sun May 10 22:53:56 1998  Jason Merrill  <jason@yorick.cygnus.com>
6921
6922	* cp-tree.h (DECL_NAMESPACE_SCOPE_P): New macro.
6923	(DECL_CLASS_SCOPE_P): Likewise.
6924
6925Sun May 10 22:48:22 1998  H.J. Lu  (hjl@gnu.org)
6926
6927	* class.c (finish_struct_1): Use OVL_CURRENT on TREE_VEC_ELT.
6928	* decl2.c (constructor_name_full): Likewise.
6929
6930Sun May 10 22:48:12 1998  Mike Stump  <mrs@wrs.com>
6931
6932	* tree.c (mapcar): Add OVERLOAD support.
6933
6934	* init.c (resolve_offset_ref): We must use basetype_path before we
6935	destroy it with a call to convert_pointer_to.
6936
6937Sat May  9 14:44:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
6938
6939	* class.c (currently_open_class): New fn.
6940	* decl.c (lookup_name_real): Use it.
6941	* search.c (lookup_field): Likewise.
6942
6943Fri May  8 23:32:42 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
6944
6945	* cp-tree.def (OVERLOAD): New node.
6946	* cp-tree.h (BINDING_TYPE, SET_IDENTIFIER_GLOBAL_VALUE,
6947	SET_IDENTIFIER_NAMESPACE_VALUE): Define.
6948	(NAMESPACE_BINDING): Remove.
6949	(IDENTIFIER_GLOBAL_VALUE, IDENTIFIER_NAMESPACE_VALUE): Use
6950	namespace_binding.
6951	(OVL_FUNCTION, OVL_CHAIN, OVL_CURRENT, OVL_NEXT, OVL_USED):
6952	Define.
6953	(tree_overload): New struct.
6954	(IDENTIFIER_TYPE_VALUE): Use identifier_type_value.
6955	(REAL_IDENTIFIER_TYPE_VALUE): Define.
6956	(IDENTIFIER_HAS_TYPE_VALUE): Use IDENTIFIER_TYPE_VALUE.
6957	(lang_decl_flags): Remove in_namespace.
6958	(lang_decl): Remove chain.
6959	(DECL_CHAIN, DECL_NAMESPACE): Remove.
6960	(flag_honor_std): Declare extern.
6961	(identifier_type_value, pushdecl_namespace_level, push_using_decl,
6962	namespace_binding, set_namespace_binding,
6963	lookup_function_nonclass, cat_namespace_levels,
6964	set_decl_namespace, lookup_arg_dependent, binding_init, ovl_cons,
6965	scratch_ovl_cons, ovl_member, build_overload): Declare.
6966	(decl_list_length, get_namespace_id, current_namespace_id,
6967	overloaded_globals_p): Remove.
6968	(lookup_using_namespace, qualified_lookup_using_namespace): Change
6969	return type.
6970	(push_scratch_obstack): New macro.
6971	* call.c (add_function_candidate): Special-case type of OVERLOAD node.
6972	(build_user_conversions_1): Iterate using OVL_NEXT for ctors,
6973	convs, fns.
6974	(build_new_function_call): Iterate using OVL_CHAIN.
6975	Print DECL_NAME in when reporting ambiguities.
6976	(build_object_call): Iterate using OVL_NEXT for fns, convs.
6977	(build_new_op): Call lookup_function_nonclass.
6978	Iterate using OVL_NEXT.
6979	(build_op_delete_call): Change detection of members.
6980	Do not wrap TREE_LIST around fields and single global functions.
6981	(build_over_call): Don't push a class level if the context is a
6982	namespace.
6983	(build_new_method_call): Iterate using OVL_NEXT.
6984	* class.c (add_method): Chain overloaded members using
6985	build_overload.  Remove copying of method.
6986	(grow_method): When iterating through the obstack, expect OVERLOAD
6987	nodes.  Chain overload members.
6988	(finish_struct_methods): Chain overload members.  Unpack OVERLOAD
6989	nodes in call to get_baselinks.
6990	(duplicate_tag_error): Expect OVERLOAD nodes when unchaining.
6991	(finish_struct_1): Iterate over ctor using OVL_NEXT.  Handle
6992	fdecls that are OVERLOAD nodes.
6993	(validate_lhs): New function.
6994	(instantiate_type): Do not copy OVERLOAD nodes.  Remove dead
6995	code.  Use DECL_NAME in error messages.  Split code between global
6996	and member function processing.
6997	* decl.c (global_type_node): New static variable.
6998	(in_std): New global.
6999	(struct binding_level): New field usings.
7000	(resume_binding_level): Assert that we are not in a class.
7001	(toplevel_bindings_p): Just check for namespace_p or
7002	pseudo_global.
7003	(resume_level): Remove.
7004	(find_binding): New function.
7005	(binding_for_name): Call it.
7006	(namespace_binding, set_namespace_binding): New functions.
7007	(push_namespace): Associate binding level with new namespace,
7008	resume_binding_level for existing namespace.  Remove old code.
7009	Fake std by counting.
7010	(store_bindings): Use REAL_IDENTIFIER_TYPE_VALUE.
7011	(maybe_push_to_top_level): Save current namespace.
7012	(pop_from_top_level): Restore saved namespace.
7013	(pop_namespace): Call suspend_binding_level.  Remove old code.
7014	(cat_namespace_levels): New function.
7015	(set_identifier_type_value_with_scope): For namespace bindings,
7016	set BINDING_TYPE, and use global_type_node.
7017	Use REAL_IDENTIFIER_TYPE_VALUE otherwise.
7018	(identifier_type_value): New function.
7019	(pushtag): If no context, use current_namespace.
7020	(duplicate_decls): Don't process DECL_CHAIN.
7021	(pushdecl): Set DECL_CONTEXT to current_namespace, if it is not
7022	already set.  Never reset it to NULL_TREE.  Lookup global variables
7023	in their namespace.  Push overloaded templates if they are on
7024	namespace level.
7025	(pushdecl_namespace_level): New function.
7026	(pushdecl_top_level): Implement using pushdecl_namespace_level.
7027	(pushdecl_using_decl): New function.
7028	(overloaded_globals_p): Remove.
7029	(push_overloaded_decl): Create OVERLOAD nodes, and iterate through
7030	them.  Use namespace_binding and set_namespace_value.
7031	(redeclaration_error_message): Complain if the declarations come
7032	from different namespaces.
7033	(lookup_tag): On namespace level, look in the BINDING_TYPE.
7034	(lookup_namespace_name): Pass tree_bindings from stack.  Remove
7035	old code.
7036	(select_decl): New function.
7037	(lookup_name_real): Call it for qualified and unqualified lookup.
7038	Pass tree_bindings from the stack.
7039	If prefer_type is 1, also accept namespaces.
7040	(lookup_function_nonclass): New function.
7041	(init_decl_processing): Set the binding level of the global
7042	namespace to global_binding_level.
7043	Build a proper type list for __builtin_apply.
7044	Initialize std_node to "fake std" if flag_honor_std is set.
7045	Initialize global_type_node.
7046	Allocated bad_alloc in namespace std if flag_honor_std.
7047	(define_function): Set the DECL_CONTEXT to the current_namespace.
7048	(start_decl): A namespace is not considered as a context here.  If
7049	the DECL_CONTEXT is a namespace, push the decl.
7050	(cp_finish_decl): Check for namespaces used as initializers.
7051	(grokfndecl): Add namespace parameter.  Remove processing of
7052	DECL_CHAIN.
7053	(grokvardecl): Add namespace parameter.
7054	(grokdeclarator): Process SCOPEs that are namespaces.  For
7055	mangling, temporarily set the DECL_CONTEXT on anonymous structs.
7056	(start_function): Check for contexts that are namespaces.
7057	Set context for declarations that have not been pushed.
7058	(store_parm_decls): Check for ::main only.
7059	(finish_function): Likewise.
7060	(start_method): Check for contexts that are namespaces.
7061	(start_method): Remove DECL_CHAIN processing.
7062	* decl2.c (flag_honor_std): Declare.
7063	(lang_decode_option): Set it if -fhonor-std or -fnew-abi is given.
7064	(decl_namespace_list): New static global.
7065	(grok_x_components): Ignore namespaces as type contexts.
7066	(check_classfn): Expect OVERLOAD nodes.
7067	(grokfield): Remove DECL_CHAIN processing.
7068	(finish_file): Call cat_namespace_levels.
7069	(merge_functions): New function.
7070	(ambiguous_decl): Rewrite.
7071	(lookup_using_namespace): Produce tree_bindings.
7072	(qualified_lookup_using_namespace): Likewise.
7073	(set_decl_namespace, decl_namespace, current_decl_namespace,
7074	push_decl_namespace, pop_decl_namespace): New functions.
7075	(arg_lookup): New struct.
7076	(add_function, arg_assoc_namespace, arg_assoc_class,
7077	arg_assoc_type, arg_assoc_args, arg_assoc, lookup_arg_dependent):
7078	New functions.
7079	(get_namespace_id, current_namespace_id): Remove.
7080	(do_toplevel_using_decl): Rewrite.
7081	(do_class_using_decl): Complain about namespace qualifiers.
7082	(do_using_directive): Sorry if not on namespace level.  Complain
7083	about unknown namespaces.
7084	* error.c (dump_aggr_type): Check for namespace contexts.
7085	* except.c (init_exception_processing): Push terminate into std.
7086	* friend.c (is_friend): A namespace is not a context, here.
7087	* init.c (expand_member_init): Remove DECL_CHAIN processing.
7088	(build_offset_ref): Process OVERLOAD nodes.
7089	* lang-specs.h (__HONOR_STD): Define if -fnew-abi or -fhonor-std.
7090	* lex.c (identifier_type): Loop using OVL_CHAIN.
7091	(see_typename): Set looking_for_typename to 2.
7092	(real_yylex): Likewise.
7093	(do_identifier): Expect OVERLOAD nodes instead of TREE_LISTs.
7094	(do_scoped_id): Expect OVERLOAD nodes.
7095	Change calling convention for qualified_lookup_using_namespace.
7096	(build_lang_decl): Don't set in_namespace anymore.
7097	* method.c (typevec_size): New global.
7098	(build_overload_nested_name): Return if global_namespace.
7099	Otherwise, always expect a declaration context.
7100	(build_qualified_name): Likewise.
7101	Make sure we don't write beyond typevec_size.
7102	(build_decl_overload_real): Likewise.
7103	Allocate one extra slot for the namespace.
7104	(hack_identifier): Mark code dead.
7105	Process OVERLOAD and NAMESPACE_DECL nodes.
7106	* parse.y (program): Pop namespaces until in global namespace.
7107	(extdef): In a using-declaration, don't discard the identifier if
7108	there is no declaration.
7109	(left_curly): Ignore type contexts which are namespaces.
7110	(typename_sub2): Use IDENTIFIER_TYPE_VALUE to retrieve the type
7111	used as scope.
7112	* pt.c (template_class_depth): Expect types to be namespaces.
7113	(determine_specialization): Simplify by expecting OVERLOAD nodes.
7114	(push_template_decl): Push into namespace level.
7115	Reset ctx if it is a namespace.
7116	Set DECL_CONTEXT to current_namespace if not set already.
7117	Ignore real contexts that are namespaces.
7118	(mangle_class_name_for_template): Skip global_namespace.
7119	Mangle other namespaces as declarations.
7120	(lookup_template_function): Set type of OVERLOAD nodes to unknown.
7121	(lookup_template_class): Push into namespace of context.
7122	If the context is a namespace, set it to global_namespace.
7123	Use id_context for mangling.
7124	(for_each_template_parm): Handle OVERLOAD and NAMESPACE_DECL nodes.
7125	(tsubst_friend_function): Ignore namespace contexts.
7126	Push into namespace level.
7127	(tsubst): Handle NAMESPACE_DECL nodes.
7128	Remove DECL_CHAIN processing.
7129	(type_unification_real): Recognize OVERLOAD instead of TREE_LIST nodes.
7130	* ptree.c (print_lang_identifier): Print bindings.
7131	(lang_print_xnode): Print OVERLOAD nodes.
7132	* rtti.c (init_rtti_processing): Push type_info into std.
7133	* search.c (lookup_fnfields_here): Expect OVERLOAD nodes.
7134	(lookup_fnfields_1, get_virtuals_named_this, get_matching_virtual,
7135	dfs_debug_mark, dfs_pushdecls, dfs_compress_decls, add_conversions,
7136	lookup_fnfields_here): Likewise.
7137	Process all nodes, instead of going through TREE_CHAIN.
7138	* sig.c (build_signature_pointer_or_reference_type): Set context
7139	to global_namespace.
7140	(build_signature_table_constructor): Expect OVERLOAD nodes.
7141	* spew.c (yylex): Save old setting of looking_for_typename.
7142	* tree.c (decl_list_length): Remove.
7143	(binding_init): New function.
7144	(count_functions): Rewrite.
7145	(is_overloaded_fn): Expect OVERLOAD nodes.
7146	(really_overloaded_fn, get_first_fn, lvalue_type): Likewise.
7147	(ovl_cons, scratch_ovl_cons, build_overload, build_overload_after,
7148	ovl_member): New functions.
7149	* typeck.c (require_complete_type): Expect OVERLOAD nodes.
7150	(type_unknown_p): Likewise.
7151	(require_instantiated_type): Likewise.
7152	(build_component_ref): Declare code dead.
7153	(build_x_function_call): Create and expect OVERLOAD nodes.
7154	(build_function_call_real): Check for ::main only.
7155	(build_unary_op): Likewise.  Expect OVERLOAD nodes.
7156	(convert_for_assignment): Check for TREE_LIST before accessing
7157	TREE_VALUE.
7158	* decl.c (duplicate_decls): Check for namespace bindings instead
7159	of global bindings.
7160	(pushdecl, push_overloaded_decl, lookup_tag, lookup_name_real,
7161	lookup_name_current_level, start_decl, xref_tag,
7162	finish_enum): Likewise.
7163	* init.c (build_offset_ref): Likewise.
7164	* search.c (lookup_field): Likewise.
7165	(lookup_fnfields): Likewise.
7166	(dfs_debug_mark): Likewise.
7167	* decl.c (poplevel): Use SET_IDENTIFIER_TYPE_VALUE.
7168	(poplevel_class, pop_from_top_level): Likewise.
7169	* decl2.c (finish_method): Likewise.
7170	* class.c (build_vtable): Use SET_IDENTIFIER_GLOBAL_VALUE.
7171	* decl.c (record_builtin_type): Likewise.
7172	(init_decl_processing, grokfndecl): Likewise.
7173	* lex.c (get_time_identifier, do_identifier, do_scoped_id): Likewise.
7174	(make_lang_type): Likewise.
7175	* parse.y (make_thunk): Likewise.
7176	* pt.c (tsubst): Likewise.
7177	* tree.c (debug_binfo): Likewise.
7178	* exception.cc, new.cc, new1.cc, new2.cc, tinfo.cc, tinfo.h,
7179	tinfo2.cc, inc/new.h: Add std qualifications.
7180	* inc/new: Wrap with namespace std if __HONOR_STD.
7181	* inc/typeinfo: Likewise.
7182
7183Fri May  8 00:43:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
7184
7185	* call.c (build_user_type_conversion_1): Handle second_conv
7186	properly for templates.
7187
7188Thu May  7 17:09:25 1998  Andrew MacLeod  <amacleod@cygnus.com>
7189
7190	* method.c (build_decl_overload_real): Set TREE_USED flag to
7191	zero for build_type_variants nodes as well.
7192
7193Wed May  6 19:27:09 1998  Jason Merrill  <jason@yorick.cygnus.com>
7194
7195	* pt.c (tsubst): Don't tsubst the type of an IDENTIFIER_NODE.
7196
7197Wed May  6 16:49:48 1998  Jim Wilson  <wilson@cygnus.com>
7198
7199	* Makefile.in (call.o, class.o, decl.o, decl2.o, errfn.o, error.o,
7200	except.o, expr.o, friend.o, init.o, lex.o, method.o, pt.o, repo.o,
7201	rtti.o, search.o, semantics.o, sig.o, tree.o, typeck.o, typeck2.o,
7202	xref.o): Add toplev.h dependencies.
7203
7204Wed May  6 16:44:58 1998  Jeffrey A Law  (law@cygnus.com)
7205
7206	* errfn.c (cp_error, cp_warning): Remove declarations for
7207	error and warning respectively.
7208
7209Wed May  6 14:28:18 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
7210
7211	* error.c: Convert to using ctype macros defined in system.h.
7212	* method.c: Likewise.
7213	* xref.c: Likewise.
7214	* lex.c: Likewise.  Also remove redundant system header stuff.
7215
7216Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
7217
7218	* call.c, class.c, decl.c, decl2.c, errfn.c, error.c, except.c,
7219	expr.c, friend.c, init.c, lex.c, method.c, pt.c, repo.c, rtti.c,
7220	search.c, semantics.c, sig.c, tree.c, typeck.c, typeck2.c,
7221	xref.c: Add include of toplev.h.
7222
7223Wed May  6 02:33:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
7224
7225	* tree.c (perm_manip): Also regenerate the RTL of an extern.
7226	(copy_to_permanent): Use end_temporary_allocation.
7227
7228Tue May  5 23:54:04 1998  Jason Merrill  <jason@yorick.cygnus.com>
7229
7230	* init.c (expand_vec_init): The initialization of each array
7231	element is a full-expression.
7232
7233Tue May  5 18:24:13 1998  Andrew MacLeod  <amacleod@cygnus.com>
7234
7235	* method.c (build_mangled_name): Add a call to build_type_variant
7236	to get the right type.
7237
7238Tue May  5 01:25:03 1998  Jason Merrill  <jason@yorick.cygnus.com>
7239
7240	* Makefile.in: Add .SUFFIXES.
7241
7242	* cp-tree.def: Remove NAMESPACE_DECL.
7243
7244Sun May  3 01:32:14 1998  Jason Merrill  <jason@yorick.cygnus.com>
7245
7246	* call.c (build_over_call): Do evaluate arg even if it has empty
7247	class type.
7248	* decl.c (start_function): Don't push a member function.
7249
7250Thu Apr 30 18:59:23 1998  Jim Wilson  <wilson@cygnus.com>
7251
7252	* Makefile.in (g++FAQ.info): Put -o option before input file.
7253
7254Thu Apr 30 13:05:33 1998  Andrew MacLeod  <amacleod@cygnus.com>
7255
7256	* gxxint.texi: Add info for squangling codes K and B.
7257
7258Tue Apr 28 13:22:01 1998  Mark Mitchell  <mmitchell@usa.net>
7259
7260	* semantics.c (begin_stmt_expr): Avoid duplicating the effect of
7261	the expression in templates.
7262	(finish_stmt_expr): Likewise.
7263
72641998-04-28  Brendan Kehoe  <brendan@cygnus.com>
7265
7266	* decl2.c (ambiguous_decl): Fix NAME parm to be a tree, not int.
7267
7268Mon Apr 27 13:58:10 1998  Mark Mitchell  <mmitchell@usa.net>
7269
7270	* decl.c (maybe_push_to_top_level): Always clear
7271	current_template_parms and processing_template_decl.
7272	(pushtag): Remove check of current_class_type and some comments,
7273	since maybe_push_to_top_level no longer creates confusion.
7274
7275Sun Apr 26 12:10:18 1998  Mark Mitchell  <mmitchell@usa.net>
7276
7277	* cp-tree.h (CLASSTYPE_IS_TEMPLATE): New macro.
7278	(DECL_CLASS_TEMPLATE_P): Likewise.
7279	(DECL_PRIMARY_TEMPLATE): Likewise.
7280	(PRIMARY_TEMPLATE_P): Use it.
7281	(push_template_decl_real): New function.
7282	(redeclare_class_template): Take new template parameters as
7283	input.
7284	(is_specialization_of): New function.
7285	(comp_template_args): Declare.
7286	* decl.c (pushtag): Handle friend template classes.
7287	(xref_tag): Likewise.  Use new calling convention for
7288	redeclare_class_template.
7289	* decl2.c (grok_x_components): Handle friend templates.
7290	* friend.c (is_friend): Use is_specialization_of where
7291	appropriate.  Deal with friend class templates.
7292	(make_friend_class): Let a class template be friends with itself.
7293	* pt.c (comp_template_args): Remove declaration.
7294	(tsubst_friend_class): New function.
7295	(push_template_decl_real): New function.
7296	(push_template_decl): Use it.
7297	(redeclare_class_template): Adjust for new calling convention.
7298	(comp_template_args): Give it external linkage.
7299	(instantiate_class_type): Use tsubst_friend_class to deal
7300	with friend templates.
7301	* typeck.c (comptypes): Use comp_template_args, rather than
7302	expanding it inline.
7303	* parse.y (component_decl): Handle a nested template type
7304	like other component type declarations.
7305
7306	* pt.c (check_explicit_specialization): Handle overloaded
7307	constructors correctly.
7308
7309	* pt.c (mabybe_get_template_decl_from_type_decl): New function.
7310	(lookup_template_class): Use it.
7311
7312Thu Apr 23 21:19:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
7313
7314	* cp-tree.def: Add WRAPPER.  USER_CONV now only has two ops.
7315	* cp-tree.h: Add WRAPPER support.
7316	* call.c (add_candidate): Split out from add_*_candidate fns.
7317	(build_over_call): Take the candidate instead of function and args.
7318	Enforce access control here.  Emit overload warnings here.
7319	(add_warning): New fn.
7320	(joust): Add WARN parm.  If not set, call add_warning instead of
7321	printing a warning.  Re-enable some warnings.
7322	(tourney): Pass it.
7323	(convert_like): Adjust.
7324	(build_new_op): Adjust.
7325	(build_new_function_call): Adjust.
7326	(build_user_type_conversion_1): Adjust.
7327	(USER_CONV_FN): Adjust.
7328	* tree.c (build_expr_wrapper, build_expr_ptr_wrapper,
7329	build_int_wrapper): New fns.
7330
7331Thu Apr 23 18:27:53 1998  Mark P. Mitchell  <mmitchell@usa.net>
7332
7333	* pt.c (unify): Fix typo in previous change.
7334
7335Thu Apr 23 09:32:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
7336
7337	* error.c (dump_type_real): Declare canonical_name.
7338
7339	* typeck.c (comp_target_types): Fix PMFs.
7340
7341Wed Apr 22 13:24:48 1998  Mark Mitchell  <mmitchell@usa.net>
7342
7343	* class.c (finish_struct): Set TREE_PRIVATE and TREE_PROTECTED for
7344	the DECL_RESULTs of a member TEMPLATE_DECL, not just the
7345	TEMPLATE_DECL.
7346
7347	* pt.c (tsubst): Decrease the template-level of
7348	TEMPLATE_TEMPLATE_PARMS.  Likewise for the DECL_INITIAL of a
7349	TEMPLATE_PARM_INDEX.
7350	(template_decl_level): New function.
7351	(unify): Make sure to record unifications for template
7352	parameters, even when the parameters exactly match the arguments.
7353	Combine duplicated code for TEMPLATE_TEMPLATE_PARMs and
7354	TEMPLATE_TYPE_PARMS.  Don't try to unify template parameters that
7355	aren't from the level we're currently working on.
7356
7357Tue Apr 21 22:00:04 1998  Mark Mitchell  <mmitchell@usa.net>
7358
7359	* errfn.c (cp_thing): Use xrealloc, not xmalloc, to copy memory.
7360
7361	* decl2.c (check_member_template): Set DECL_IGNORED for member
7362	class templates, too.
7363
7364	* decl2.c (grokfield): Remangle the name of a member TYPE_DECL.
7365
7366Tue Apr 21 18:59:11 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
7367
7368	* decl.c (duplicate_decls): Only check DECL_FRIEND_P if function.
7369
7370Tue Apr 21 14:22:00 1998  Jeffrey A Law  (law@cygnus.com)
7371
7372	* cp-tree.h (intTI_type_node, unsigned_intTI_type_node): Declare.
7373	* decl.c (intTI_type_node, unsigned_intTI_type_node): Define.
7374	(init_decl_processing): Handle TI types.
7375	* typeck.c (unsigned_type, signed_type): Handle TI types.
7376
7377Sat Apr 18 15:25:21 1998  Jim Wilson  <wilson@cygnus.com>
7378
7379	* g++spec.c (lang_specific_driver): New argument in_added_libraries.
7380	New local added_libraries.  Increment count when add library to
7381	arglist.
7382
7383Fri Apr 17 21:25:00 1998  Mark Mitchell  <mmitchell@usa.net>
7384
7385	* cp-tree.h (type_as_string_real): New function.
7386	* pt.c (mangle_class_name_for_template): Use it.
7387	* error.c (dump_aggr_type): Change prototype.
7388	(dump_type_prefix): Likewise.
7389	(dump_type_suffix): Likewise.
7390	(dump_type_real): Convert from dump_type.  If desired, the
7391	"canonica" name of a typedef, i.e., the name of the underlying
7392	type, can be printed.
7393	(dump_type): Call dump_type_real.
7394
7395Fri Apr 17 14:30:45 1998  Jason Merrill  <jason@yorick.cygnus.com>
7396
7397	* decl2.c (lang_decode_option): -fnew-abi implies -fvtable-thunks.
7398
7399	* typeck.c (comp_target_types): Tweak pedantic case.
7400	(comp_target_parms): Tweak pedantic case.  Clean up somewhat.
7401	Return -1 or 1 instead of 1 or 2.
7402	(compparms): Remove STRICT handling.
7403	(convert_for_assignment): Fix handling of pmfs.
7404
7405Fri Apr 17 14:04:16 1998  Mark Mitchell  <mmitchell@usa.net>
7406
7407	* typeck.c (comp_target_types): Handle references like pointers.
7408	(comp_target_parms): Note that return code from comp_target_types
7409	can be negative to indicate failure.
7410
7411Fri Apr 17 09:10:52 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
7412
7413	* Make-lang.in (c++.all.build): Don't depend on $(DEMANGLER_PROG),
7414	which requires a working target compiler to build.
7415
7416Fri Apr 17 08:57:35 1998  Jeffrey A Law  (law@cygnus.com)
7417
7418	* tree.c (avoid_overlap): Add prototype.
7419
7420	* spew.c (num_tokens): Add prototype.
7421	(nth_noken, add_token, consume_token, debug_yychar): Likewise.
7422
7423	* search.c (dfs_check_overlap): Add prototype.
7424	(dfs_no_overlap_yet): Likewise.
7425
7426	* pt.c (original_template): Add prototype.
7427	(inline_needs_template_parms): Likewise.
7428	(push_inline_template_parms_recursive): Likewise.
7429	(retrieve_specialization, register_specialization): Likewise.
7430	(print_candidates, reduce_template_parm_level): Likewise.
7431	(build_template_decl, mark_template_parm): Likewise.
7432	(tsubst_friend_function, get_bindings_real): Likewise.
7433
7434	* method.c (start_squangling): Add prototype.
7435	(end_squangling, check_ktype, issue_ktype): Likewise.
7436	(build_overloaded_scope_ref, check_btype): Likewise.
7437	(build_mangled_template_parm_index): Likewise.
7438
7439	* lex.c (init_cpp_parse): Add prototype.
7440	(handle_cp_pragma, handle_sysv_pragma): Likewise.
7441	(reduce_cmp, token_cmp): Likewise.
7442
7443	* except.c (call_eh_info): Add prototype.
7444	(push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
7445	(get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
7446
7447	* decl2.c (is_namespace_ancestor): Add prototype.
7448	(namespace_ancestor, add_using_namespace): Likewise.
7449	(ambiguous_decl): Likewise.
7450
7451	* decl.c (indent): Add prototype.
7452
7453	* call.c (add_template_candidate_real): Add prototype.
7454
7455Fri Apr 17 01:57:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
7456
7457	* decl2.c (build_expr_from_tree): Just return a PMF.
7458
7459Fri Apr 17 00:45:12 1998  Mark Mitchell  <mmitchell@usa.net>
7460
7461	* typeck2.c (process_init_constructor): Don't strip cv-qualifiers
7462	when doing initializations.
7463
7464	* pt.c (unify): Use comptypes to compare type args.
7465
7466Fri Apr 17 00:24:22 1998  Jason Merrill  <jason@yorick.cygnus.com>
7467
7468	* decl.c (duplicate_decls): Fix check for when it's safe to free
7469	the new decl.
7470
7471	* pt.c (mangle_class_name_for_template): Don't pass a typedef type
7472	to type_as_string.
7473
7474Thu Apr 16 17:47:30 1998  Jeffrey A Law  (law@cygnus.com)
7475
7476	* pt.c (build_template_parm_index): Add prototype.
7477
7478	* search.c (my_tree_cons): Don't clear words outside the
7479	newly allocated node.
7480
7481Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
7482
7483	* lex.c (init_parse): Now returns char* containing the filename.
7484
7485Wed Apr 15 13:20:06 1998  John Carr  <jfc@mit.edu>
7486			  Jeff Law   <law@cygnus.com>
7487
7488	* errfn.c: Rework to avoid problems when HOST_WIDE_INT is longer
7489	than a pointer.
7490
7491Sun Apr 12 22:31:19 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
7492
7493	* cvt.c (cp_convert_to_pointer): Use TYPE_PRECISION.
7494
7495Fri Apr 10 12:16:49 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
7496
7497	* decl.c (duplicate_decls): Don't warn for redundant decls if
7498	friend: let add_friend take care of it.
7499
7500Thu Apr  9 02:40:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
7501
7502	* sig.c (build_signature_pointer_constructor): Don't set
7503	TREE_HAS_CONSTRUCTOR for a signature pointer.
7504	* cvt.c (ocp_convert): Don't force a temporary for internal structs.
7505	* init.c (resolve_offset_ref): Warn about implicit & on pmfs
7506	here, too.
7507	* typeck.c (build_unary_op): Only allow taking the address of a
7508	real constructor.
7509	* typeck2.c (digest_init): Simplify.
7510	(store_init_value): Don't pedwarn about using { } for pmfs.
7511
7512Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
7513
7514	* cp-tree.h (start_decl):  Update prototype.
7515	* decl.c (start_decl):  Like the C version, new parameters
7516	for the attributes.  Call cplus_decl_attributes here,
7517	(pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
7518	(grokdeclarator):  Pass NULL for new start_decl arguments.
7519	* pt.c (tsubst_expr):  Likewise.
7520	* parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
7521	* typeck.c (common_type): Check TYPE_MAIN_VARIANT.
7522	* lex.c (build_lang_decl): Add lang_name_java.
7523	* class.c (push_lang_context): Add lang_name_java.
7524	* method.c (build_mangled_name): Check for is_java_type.
7525
7526Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
7527
7528	* decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
7529	* call.c (build_scoped_method_call): Check for TREE_CODE for
7530	VOID_TYPE instead of type ==  void_type_node.
7531	(build_method_call): Likewise.
7532	* decl.c (lookup_name_real): Likewise.
7533	(grokdeclarator): Likewise.
7534	(start_decl): Likewise.
7535	(grokparms): Likewise.
7536	(start_function): Likewise.
7537	(finish_function): Likewise.
7538	(start_method): Likewise.
7539
7540Thu Apr  9 00:18:44 1998  Dave Brolley  (brolley@cygnus.com)
7541
7542	* lex.c (finput): New variable.
7543	(init_cpp_parse):  Renamed from init_parse.
7544	(init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
7545	(finish_parse): New function.
7546	* cp-tree.h (init_lex, init_parse): Remove declarations.
7547
7548Mon Apr  6 02:25:05 1998  Jason Merrill  <jason@yorick.cygnus.com>
7549
7550	* call.c (build_call): Still evaluate the actual argument.
7551	* class.c (is_empty_class): Update for -fnew-abi.
7552
7553	* decl2.c: -fnew-abi implies -fsquangle.
7554
7555	* method.c (do_build_assign_ref): Don't do anything to copy
7556	an empty class.
7557	(do_build_copy_constructor): Likewise.
7558	* call.c (build_over_call): Likewise.
7559
7560Sat Apr  4 18:43:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
7561
7562	* tree.c (avoid_overlap): Return a value.
7563
7564Sat Apr  4 12:52:35 1998  Jeffrey A Law  (law@cygnus.com)
7565
7566	* method.c (check_btype): Add missing argument to xrealloc.
7567	(check_ktype): Likewise.
7568
7569Fri Apr  3 02:22:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
7570
7571	Implement empty base optimization.
7572	* class.c (finish_struct_1): Add vbase fields earlier.  Set
7573	CLASSTYPE_SIZE of an empty base to 0.  Types with bases can be empty.
7574	* search.c (dfs_check_overlap, dfs_no_overlap_yet): New fns.
7575	(types_overlap_p): New fn.
7576	* tree.c (avoid_overlap): New fn.
7577	(build_base_fields): Use it to avoid overlapping empty bases.
7578	* cp-tree.h, decl2.c, lang-options.h: Add -fnew-abi.
7579
7580	* decl.c (cplus_expand_expr_stmt): Strip unused INDIRECT_REFs.
7581
7582	Re-implement allocation of base class subobjects.
7583	* tree.c (unshare_base_binfos): New fn.
7584	(layout_basetypes): Use it.  Now handles offsets of both virtual and
7585	non-virtual bases, after layout_type.
7586	(layout_vbasetypes): Remove.
7587	(build_base_fields): Generate FIELD_DECLs for each non-virtual base.
7588	(build_vbase_pointer_fields): Split out from old layout_basetypes.
7589	* class.c (finish_base_struct): Lose offset handling code.
7590	Move nonvdtor warning here.  Don't mess with t_binfo anymore.
7591	(finish_struct_1): Don't mess with t_binfo anymore.  Use fns above.
7592	* cp-tree.h: Adjust.
7593
7594Thu Apr  2 14:25:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
7595
7596	* cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
7597	* decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
7598	* class.c (duplicate_tag_error): Likewise.
7599	(finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
7600	* tree.c (layout_vbasetypes): Update from layout_record, remove
7601	var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
7602	(layout_basetypes): Likewise.
7603
7604Wed Apr  1 18:22:25 1998  Jeffrey A Law  (law@cygnus.com)
7605
7606	* class.c, Make sure system.h is included just after config.h.
7607	Delete lingering stdio and errno references too.
7608	* decl.c, errfn.c, parse.y, ptree.c search.c, xref.c: Likewise.
7609
7610Wed Apr  1 15:38:36 1998  Jason Merrill  <jason@yorick.cygnus.com>
7611
7612	* friend.c (is_friend): Fix access control for local classes.
7613
7614	* class.c (is_empty_class): New fn.
7615	* call.c (build_call): Don't pass empty class objects to a function.
7616
7617Wed Apr  1 14:58:35 1998  Mark Mitchell  <mmitchell@usa.net>
7618
7619	* call.c (build_over_call): Do name resolution for default
7620	arguments of function templates in the scope of the templates.
7621
7622Tue Mar 31 13:43:57 1998  Jeffrey A Law  (law@cygnus.com)
7623
7624	* call.c: Include system.h.  Remove includes, declarations and
7625	defines provided by system.h.
7626	* class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
7627	* except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
7628	* lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
7629	* semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
7630	* typeck2.c, xref.c: Likewise.
7631	* Makefile.in: Dependencies updated as appropriate.
7632	* Make-lang.in: Likewise.
7633
7634Mon Mar 30 12:15:00 1998  Mark Mitchell  <mmitchell@usa.net>
7635
7636	* pt.c (fn_type_unification): Allow incomplete unification without
7637	an immediate error message.
7638
7639Mon Mar 30 08:55:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
7640
7641	* tree.c (member_p): New fn.
7642	* decl2.c (finish_file): Only set DECL_STATIC_FUNCTION_P for
7643	initializing class members.
7644
7645	* cp-tree.def (TEMPLATE_PARM_INDEX): Class 'x'.
7646	* ptree.c (lang_print_xnode): Handle TEMPLATE_PARM_INDEX.
7647
7648	* call.c (build_method_call): Handle non-scoped destructors, too.
7649	* pt.c (tsubst_copy): Likewise.
7650
7651	* pt.c (print_template_context): Split out...
7652	(push_tinst_level): ...from here.
7653
7654	* friend.c (is_friend): Don't pass a type to decl_function_context.
7655
7656	* typeck.c (convert_for_initialization): Always hand off
7657	conversions to class type.
7658
7659Sun Mar 29 20:01:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
7660
7661	* friend.c (is_friend): Local classes have the same access as the
7662	enclosing function.
7663
7664Sun Mar 29 00:47:32 1998  Jeffrey A Law  (law@cygnus.com)
7665
7666	* typeck.c (expand_target_expr): Delete dead function.
7667
7668	* search.c: Put various prototypes inside #ifdef MI_MATRIX.
7669
7670	* repo.c (save_string): Delete dead function.
7671
7672	* method.c (thunk_printable_name): Delete dead function.
7673
7674	* lex.c (yynextch): Delete dead function.
7675
7676	* expr.c (tree_extract_aggr_init): #if 0 out.
7677
7678	* except.c (do_unwind): Delete dead function.
7679	(easy_expand_asm): Likewise.
7680
7681	* cvt.c (build_conversion_type_1): Delete dead function.
7682
7683	* cp-tree.h (push_expression_obstack): Declare.
7684
7685	* call.c (source_type): #if 0 out.
7686
7687	* class.c (alter_access): Remove unused label.  Add braces
7688	around empty else clause.
7689
7690	* lex.c (yyprint): Fix argument to printf.
7691
7692Sat Mar 28 17:43:52 1998  Mark Mitchell  <mmitchell@usa.net>
7693
7694	* pt.c (tsubst): Clear TREE_USED for new FUNCTION_DECLs.
7695
7696	* pt.c (instantiate_class_template): Make sure template
7697	arguments are permanent.
7698	* init.c (resolve_offset_ref): Don't go looking around in
7699	template types.
7700
7701	* semantics.c: Add routines to handle expressions, and some
7702	declaration processing.
7703	* parse.y: Use them.
7704	(current_class_depth): Move declaration to cp-tree.h.
7705	* parse.c: Regenerated.
7706	* cp-tree.h: Use them.
7707	(current_class_depth): Declare.
7708	* pt.c (tsubst_copy): Use begin_stmt_expr and finish_stmt_expr.
7709
7710Fri Mar 27 20:23:18 1998  Mark Mitchell  <mmitchell@usa.net>
7711
7712	* error.c (dump_decl): Be a bit more explicit with template
7713	type arguments, when verbose.
7714
7715Fri Mar 27 18:16:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
7716
7717	* inc/exception: Reorder closing braces.
7718
7719Fri Mar 27 13:22:18 1998  Mark Mitchell  <mmitchell@usa.net>
7720
7721	* pt.c (redeclare_class_template): New function.
7722	* cp_tree.h (redeclare_class_template): Declare it.
7723	* decl.c (xref_tag): Use it.
7724
7725Thu Mar 26 11:16:30 1998  Jason Merrill  <jason@yorick.cygnus.com>
7726
7727	* call.c (build_over_call): Check IS_AGGR_TYPE, not
7728	TYPE_LANG_SPECIFIC.
7729	* typeck.c (convert_arguments): Likewise.
7730
7731	* decl.c (grokdeclarator): Remove const and volatile from type after
7732	setting constp and volatilep.
7733
7734	* class.c (finish_struct_1): Don't warn about bool bitfield larger
7735	than one bit.
7736
7737Thu Mar 26 10:25:52 1998  Mark Mitchell  <mmitchell@usa.net>
7738
7739	* pt.c (convert_nontype_argument): STRIP_NOPS where appropriate.
7740
7741Thu Mar 26 10:24:05 1998  Mark Mitchell  <mmitchell@usa.net>
7742
7743	* call.c (build_object_call): Complain about ambiguous operator(),
7744	rather that crashing.
7745	(build_new_op): Likewise.
7746	(build_op_delete_call): Likewise.
7747
7748Thu Mar 26 10:23:24 1998  Mark Mitchell  <mmitchell@usa.net>
7749
7750	* cvt.c (perform_qualification_conversions): Use comp_target_types
7751	instead of comp_ptr_ttypes.
7752
7753Wed Mar 25 16:10:50 1998  Mark Mitchell  <mmitchell@usa.net>
7754
7755	* cp-tree.h (enforce_access): Declare.
7756	* call.c (enforce_access): Make it extern, not static.
7757	* class.c (alter_access): Use enforce_access; modify code for ISO
7758	compliance, rather than ARM rules.
7759
7760Wed Mar 25 12:10:45 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
7761
7762	* cp-tree.h: Fix typo.
7763
7764Wed Mar 25 02:01:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
7765
7766	* expr.c (cplus_expand_expr): Only do PCC_STATIC_STRUCT_RETURN thing
7767	if (aggregate_value_p (type)).
7768
7769	* decl2.c (constructor_name_full): Handle TYPENAME_TYPE.
7770
7771Tue Mar 24 16:12:01 1998  Mark Mitchell  <mmitchell@usa.net>
7772
7773	* tree.c (mapcar): When dealing with a DECL, use it's constant
7774	value, if any.
7775	* pt.c (lookup_template_class): Don't mangle the names of template
7776	classes whose arguments are unknown.
7777
7778	* pt.c (tsubst_expr): Handle GOTO_STMT correctly.
7779
7780Tue Mar 24 12:21:55 1998  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
7781
7782	* decl.c (init_decl_processing): Set TYPE_PRECISON for bools to 1.
7783
7784Tue Mar 24 12:21:48 1998  Jim Wilson  <wilson@cygnus.com>
7785
7786	* decl.c (init_decl_processing): Initialize TYPE_MAX_VALUE for
7787	boolean_type_node to 1.
7788
7789Tue Mar 24 10:23:47 1998  Mark Mitchell  <mmitchell@usa.net>
7790
7791	* error.c (dump_expr): Remove unused variable `l'.
7792
7793	* pt.c (for_each_template_parm): New function, created by
7794	converting uses_template_parms.
7795	(tree_fn_t): New typedef.
7796	(uses_template_parms): Use it.
7797	(mark_template_parm): New function.
7798	(push_template_decl): Check that the argument list of a partial
7799	specialization uses all the template parameters.
7800
7801	* Make-lang.in (c++filt): Don't delete cxxmain.c after we're done
7802	with it; we might want it for debugging.
7803	* cp-tree.h (type_unification): Change interface.
7804	* class.c (finish_struct_1): Skip nested template types, just like
7805	ordinary nested types.
7806	(instantiate_type): Use new interface to type_unification.
7807	* lex.c (init_lex): Add __sz as opname for sizeof.
7808	* method.c (build_overload_scope_ref): New function.
7809	(build_overload_int): Handle complex expressions.  Set
7810	numeric_output_need_bar if necessary.
7811	(build_overload_value): Handle non-PARM_DECL nodes; this
7812	routine is now used by build_overload_int.  Remove some
7813	assignments to numeric_output_need_bar.  Use
7814	build_overload_scope_ref.
7815	(build_qualified_name): Note that some template mangled names end
7816	with digits, and set numeric_output_need_bar appropriately.  Use
7817	build_underscore_int.
7818	* pt.c (unify): Change interface.
7819	(type_unification_real): Likewise.
7820	(determine_specialization): Use new interfaces.
7821	(tsubst): Deal gracefully with situations in which the argument
7822	vector is not fully filled.
7823	(fn_type_unification): Use new interfaces.
7824	(type_unification): Likewise.  Remove NOP_EXPR hack.
7825	(type_unification_real): Likewise.
7826	(unify): Likewise.  Deal with unification of complex expressions.
7827
7828Mon Mar 23 12:24:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
7829
7830	* pt.c (complete_template_args): Initialize skip properly.
7831
7832	* decl.c (make_typename_type): Revert.
7833	(make_implicit_typename): Remove.
7834	(lookup_name_real): Don't call it.  Call lookup_field if we see a
7835	TYPE_DECL from a template base.
7836	* search.c (lookup_field): Do implicit typename stuff.
7837
7838Sun Mar 22 00:50:42 1998  Nick Clifton  <nickc@cygnus.com>
7839			  Geoff Noer    <noer@cygnus.com>
7840
7841	* Makefile.in: Various fixes for building cygwin32 native toolchains.
7842	* Make-lang.in: Likewise.
7843
7844Fri Mar 20 18:07:39 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
7845
7846	* pt.c (tsubst, TEMPLATE_TEMPLATE_PARM): Simplify.
7847
7848Fri Mar 20 10:42:07 1998  Jason Merrill  <jason@yorick.cygnus.com>
7849
7850	* decl.c (make_implicit_typename): Rewrite removed code.
7851	(make_typename_type): Call it if the type we look up comes from
7852	a base that uses template parms.
7853
7854	* pt.c (complete_template_args): Rewrite.
7855	(tsubst, FUNCTION_DECL): Use it.
7856
7857Fri Mar 20 08:12:43 1998  H.J. Lu  (hjl@gnu.org)
7858
7859	* semantics.c (finish_asm_stmt): Fix combine strings.  Call
7860	c_expand_asm_operands () if output_operands, input_operands or
7861	clobbers is not NULL_TREE.
7862
7863Fri Mar 20 00:10:19 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
7864
7865	* pt.c (complete_template_args): New function.
7866	(get_bindings): Deal with specializations of function templates
7867	with return type containing parameters from outer class
7868	templates.
7869	(tsubst, TEMPLATE_TEMPLATE_PARM): When reducing parameter level,
7870	substitute arguments and compose a new type.
7871
7872Thu Mar 19 19:01:48 1998  Mark Mitchell  <mmitchell@usa.net>
7873
7874	* pt.c (tsubst): Clear DECL_PENDING_INLINE_INFO for new
7875	FUNCTION_DECLs.
7876
7877Thu Mar 19 11:51:58 1998  Jason Merrill  <jason@yorick.cygnus.com>
7878
7879	* decl.c (make_implicit_typename): Lose useless code.
7880
7881	* call.c (standard_conversion): Handle A* -> const A* properly.
7882
7883	* pt.c (get_bindings_real): Rename from get_bindings.  Add
7884	check_rettype parm.
7885	(get_bindings): Pass 1.
7886	(get_bindings_overload): Pass 0.
7887
7888Wed Mar 19 09:08:12 1998  Mark Mitchell  <mmitchell@usa.net>
7889
7890	* pt.c (check_explicit_specialization): When reverting a static
7891	member function, also remove the `this' parameter from
7892	last_function_parms.
7893
7894Thu Mar 19 02:27:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
7895
7896	* pt.c (tsubst_copy, CONST_DECL): Don't bother tsubsting
7897	a function context.
7898
7899	* decl.c (store_bindings): Use free_binding_vecs.
7900	(pop_from_top_level): Likewise.
7901
7902Wed Mar 18 12:41:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
7903
7904	* decl.c (make_implicit_typename): Only change the type of a
7905	TYPENAME_TYPE.
7906
7907Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
7908
7909	* semantics.c: New file, containing routines to perform the
7910	semantic phase of parsing.
7911	* parse.y: Use it.
7912	* pt.c (tsubst_expr): Likewise.
7913	* cp-tree.h: Declare the various functions in semantics.c.
7914	Provide macros to access _STMT tree nodes.
7915	* cp-tree.def: Add ASM_STMT tree node.
7916	* Makefile.in, Make-lang.in: Add dependencies on and for
7917	semantics.c.
7918
7919Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
7920
7921	* pt.c (push_template_decl): Only check primary templates.
7922
7923	* pt.c (check_explicit_specialization): Complain about default args
7924	in explicit specialization.
7925
7926	* parse.y (nomods_initdcl0): Also call cp_finish_decl for a
7927	constructor_declarator.
7928
7929Tue Mar 17 14:44:54 1998  Mark Mitchell  <mmitchell@usa.net>
7930
7931	* typeck2.c (build_x_arrow): Don't crash when an aggregate type
7932	has no overloaded operator ->.
7933
7934	* call.c (build_field_call): Don't crash when presented with a
7935	field that is actually a nested type.
7936
7937	* decl.c (pushtag): Deal with friend class injection in local
7938	classes.
7939
7940	* call.c (build_object_call): Don't crash if OBJ is a
7941	pointer-to-member-function.
7942
7943Tue Mar 17 11:40:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
7944
7945	* pt.c (push_template_decl): Complain about template with C linkage,
7946	anonymous template class.
7947
7948Mon Mar 16 12:10:39 1998  Jason Merrill  <jason@yorick.cygnus.com>
7949
7950	* class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
7951	* search.c: Likewise.
7952
7953	* lex.c (do_pending_defargs): Only call
7954	maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
7955
7956	* parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.
7957
7958Mon Mar 16 10:47:22 1998  Mark Mitchell  <mmitchell@usa.net>
7959
7960	* parse.y: Deal with CONSTRUCTORS in new_initializers.
7961
7962Mon Mar 16 10:54:21 1998  Mark Mitchell  <mmitchell@usa.net>
7963
7964	* pt.c (tsubst_copy): Deal with BIND_EXPR in a way that more
7965	closely mimics the behavior in parse.y.
7966	(tsubst_expr): Return the resulting BLOCK when making a tsubst'ing
7967	into a compound statement.
7968
7969Sun Mar 15 02:07:26 1998  Jason Merrill  <jason@yorick.cygnus.com>
7970
7971	* cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
7972	* pt.c (inline_needs_template_parms): New fn.
7973	(original_template): New fn.
7974	(push_inline_template_parms_recursive): New fn.
7975	(maybe_begin_member_template_processing): Use them.
7976	(maybe_end_member_template_processing): Likewise.
7977	(is_member_or_friend_template): Rename to is_member_template.
7978	Member functions of local classes are never member templates.
7979
7980Sun Mar 15 01:14:22 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
7981
7982	* lex.c (do_identifier): Handle TEMPLATE_DECL that was
7983	added in the class scope to catch redefinition error.
7984
7985	* pt.c (reduce_template_parm_level): Also copy
7986	the DECL_TEMPLATE_PARMS field.
7987
7988Sun Mar 15 10:54:08 1998  Mark Mitchell  <mmitchell@usa.net>
7989
7990	* pt.c (tsubst): Clear TYPE_REFERENCE_TO when creating a
7991	reduced-level template type parameter.
7992
7993Sun Mar 15 12:26:02 1998  Manfred Hollstein  <manfred@s-direktnet.de>
7994
7995	* cp-tree.h (struct lang_decl_flags): Add needs_final_overrider.
7996	(DECL_NEEDS_FINAL_OVERRIDER_P): New macro.
7997	* class.c (override_one_vtable): Set DECL_NEEDS_FINAL_OVERRIDER_P.
7998	* decl.c (duplicate_decls): Propagate it.
7999	* typeck2.c (abstract_virtuals_error): Use two loops to emit
8000	abstract virtual functions and virtual functions which need a
8001	final overrider separately.
8002
8003Thu Mar 12 09:39:40 1998  Manfred Hollstein  <manfred@s-direktnet.de>
8004
8005	* lang-specs.h: Properly put brackets around array elements in
8006	initializer.
8007
8008	* typeck.c (build_binary_op_nodefault): Correctly place parens around
8009	&& and || in expression.
8010
8011Thu Mar 12 09:26:04 1998  Manfred Hollstein  <manfred@s-direktnet.de>
8012
8013	* call.c (default_parm_conversions): Remove prototype definition.
8014	(build_method_call): Remove unused variable result.
8015
8016	* cvt.c (ocp_convert): Remove unused variable conversion.
8017
8018	* decl2.c (ambiguous_decl): Add explicit parameter definition for name.
8019
8020	* except.c (do_unwind): #if 0 definition of unused variables fcall
8021	and next_pc.
8022
8023	* expr.c (extract_scalar_init): #if 0 prototype and function
8024	definition.
8025
8026	* init.c (expand_aggr_init_1): Remove unused variable init_type.
8027	(build_new_1): Remove unused variable t.
8028
8029	* pt.c (instantiate_class_template): Remove unused variable newtag;
8030	cast called function return value to void.
8031	(do_decl_instantiation): Remove unused variables name and fn.
8032
8033	* tree.c (get_type_decl): Add default return to shut up compiler from
8034	complaining control reaches end of non-void function.
8035
8036	* typeck.c (build_x_conditional_expr): Remove unused variable rval.
8037
8038Thu Mar 12 09:12:15 1998  Manfred Hollstein  <manfred@s-direktnet.de>
8039
8040	* call.c (default_parm_conversions): Remove prototype definition.
8041	(build_method_call): Remove unused variable result.
8042	(build_over_call): Add default case in enumeration switch.
8043
8044Thu Mar 12 08:39:13 1998  Manfred Hollstein  <manfred@s-direktnet.de>
8045
8046	* decl2.c (lang_decode_option): Change j's type to size_t.
8047
8048	* tree.c (layout_vbasetypes): record_align and desired_align are of
8049	type unsigned int; const_size and nonvirtual_const_size likewise.
8050
8051Wed Mar 11 07:25:20 1998  Mark Mitchell  <mmitchell@usa.net>
8052
8053	* parse.y (new_initializer): Make sure all initializers are
8054	lists.
8055
8056Tue Mar 10 07:32:36 1998  Mark Mitchell  <mmitchell@usa.net>
8057
8058	* decl2.c (import_export_decl): Mark tinfo functions for
8059	cv-qualified versions of class types as DECL_NOT_REALLY_EXTERN.
8060
8061Fri Mar  6 23:27:35 1998  Jeffrey A Law  (law@cygnus.com)
8062
8063	* method.c: Fix typo.
8064
8065Fri Mar  6 10:06:59 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8066
8067	* method.c: Include "system.h" to get stdlib.h, stdio.h,
8068	ctype.h, string.h, etc.
8069	(issue_nrepeats): Add default case in enumeration switch.
8070	(check_btype): Likewise.
8071	(process_overload_item): Likewise.
8072
8073	* Makefile.in (method.o): Depend on system.h.
8074
8075Wed Mar  4 22:26:53 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
8076
8077	* lex.c (do_scoped_id): Fix parenthesizing.
8078
8079Wed Mar  4 12:11:53 1998  Michael Tiemann  <tiemann@axon.cygnus.com>
8080
8081	* rtti.c (get_tinfo_fn_dynamic): If this function is called an
8082	FLAG_RTTI is unset, initialize type info machinery and continue
8083	with FLAG_RTTI enabled.
8084	(get_typeid): Likewise.
8085
8086Wed Mar  4 11:47:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
8087
8088	* typeck.c (unary_complex_lvalue): &D::i has type B::* if i comes
8089	from B.
8090
8091Wed Mar  4 11:28:08 1998  Mark Mitchell  <mmitchell@usa.net>
8092
8093	* pt.c (finish_member_template_decl): Deal more gracefully with
8094	invalid declarations.
8095
8096Tue Mar  3 01:38:17 1998  Jason Merrill  <jason@yorick.cygnus.com>
8097
8098	* cvt.c, decl.c, decl2.c, init.c, rtti.c, typeck.c, typeck2.c,
8099	cp-tree.h: Clean up more old overloading code, old RTTI code, and
8100	some formatting quirks.
8101
8102	* call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
8103	method.c, pt.c, ptree.c, typeck.c: Remove support for
8104	-fno-ansi-overloading and overloading METHOD_CALL_EXPR.
8105	* class.h: Remove.
8106	* Makefile.in: Adjust.
8107
8108	* pt.c (unify): Don't allow reduced cv-quals when strict.
8109
8110	* call.c, class.c, pt.c, cp-tree.h: Remove nsubsts parm from
8111	*type_unification* and unify.
8112
8113Mon Mar  2 12:11:06 1998  Jason Merrill  <jason@yorick.cygnus.com>
8114
8115	* parse.y (explicit_template_type): Remove TEMPLATE keyword.
8116	(nested_name_specifier): And add it before this use.
8117	(typename_sub0): And this use.  Also add use without the keyword.
8118	(typename_sub1): Likewise.
8119	* pt.c (instantiate_class_template): Don't actually instantiate
8120	anything if our type uses template parms.
8121
8122Mon Mar  2 11:04:59 1998  Jim Wilson  <wilson@cygnus.com>
8123
8124	* decl.c (start_function): Don't call temporary_allocation for a
8125	nested function.
8126
8127Sun Mar  1 21:06:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
8128
8129	* pt.c (instantiate_class_template): Don't mess with friends if
8130	our type uses template parms.
8131
8132Sat Feb 28 12:06:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
8133
8134	* parse.y (nested_name_specifier): Use explicit_template_type.
8135	(typename_sub): Allow a template_type, an explicit_template_type,
8136	or an implicit template type at the end.
8137	* lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
8138	* decl.c (make_typename_type): Handle template-id where the name
8139	is a TEMPLATE_DECL.
8140	* call.c (build_scoped_method_call): Handle member template
8141	destructor call.
8142	* pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
8143	destructor is represented by the type.
8144
8145	* cp-tree.h (TYPENAME_TYPE_FULLNAME): New macro.
8146	* parse.y (nested_name_specifier): Add 'template' case.
8147	(explicit_template_type): New rule.
8148	(typename_sub): Use it.
8149	* decl.c (make_typename_type): Handle getting a template-id for NAME.
8150	* pt.c (tsubst): Likewise.
8151
8152Fri Feb 27 11:17:50 1998  Jason Merrill  <jason@yorick.cygnus.com>
8153
8154	* pt.c (add_to_template_args): Fix thinko.
8155	(instantiate_class_template): Call it later.
8156
8157	* pt.c (get_class_bindings): Add outer_args parm.
8158	(most_specialized_class): Likewise.
8159	(instantiate_class_template): Pass it.
8160	(more_specialized_class): Likewise.
8161	(lookup_template_class): Get context from template if none
8162	was specified.
8163	(finish_member_template_decl): Don't do anything with a
8164	partial specialization.
8165	* decl2.c (check_member_template): Use IS_AGGR_TYPE instead of
8166	AGGREGATE_TYPE_P.
8167	* class.c (finish_struct): Member class templates have already been
8168	checked for name clashes.
8169	* decl.c (pushdecl_with_scope): Handle pushing at class level.
8170
8171Fri Feb 27 02:25:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
8172
8173	* pt.c (tsubst, TEMPLATE_DECL): Support member class templates.
8174	(tsubst, *_PARM): Support multiple levels of template classes.
8175	(instantiate_class_template): Look up the pattern from the
8176	original template.
8177	(lookup_template_class): Handle getting a template for d1.
8178	(push_template_decl): Correct setting of 'primary'.
8179	(reduce_template_parm_level): Add 'levels' parm.
8180	(finish_member_template_decl): Support member class templates.
8181	(template_class_depth): Handle multiple levels.
8182	* parse.y (component_decl_1, fn.def2): Remove member template case.
8183	(component_decl): Add member template cases.
8184	* decl2.c (check_member_template): We now handle member template
8185	classes.
8186	* decl.c (pushtag): Handle member templates.
8187	* method.c (do_inline_function_hair): Don't touch
8188	IDENTIFIER_GLOBAL_VALUE.
8189	* init.c (build_offset_ref): If name isn't an identifier, just
8190	return it.
8191	* spew.c (yylex): Handle PTYPENAME like TYPENAME.
8192
8193	* typeck.c (get_delta_difference): Do adjust for conversions to
8194	and from virtual base.
8195
8196Wed Feb 25 09:51:29 1998  Jason Merrill  <jason@yorick.cygnus.com>
8197
8198	* typeck.c (get_delta_difference): Give hard error for conversion
8199	from virtual base.
8200
8201	* cp-tree.h: Tweak formatting.
8202
8203Wed Feb 25 00:35:33 1998  Jason Merrill  <jason@yorick.cygnus.com>
8204
8205	* decl.c (push_namespace): Handle redeclaration error.
8206
8207	* cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
8208	(IDENTIFIER_NAMESPACE_BINDINGS): New macro.
8209	(NAMESPACE_BINDING): New macro.
8210	(IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
8211	* *.c: Use them.
8212
8213	* pt.c (push_template_decl): Use innermost_args.
8214
8215	* decl.c (get_unique_name): Tweak from earlier in the name.
8216
8217Tue Feb 24 22:15:04 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>
8218
8219	* cp-tree.def: Add CPLUS_BINDING node.
8220	* cp-tree.h (tree_binding): New struct.
8221	(BINDING_SCOPE, BINDING_VALUE): New macros.
8222	(current_namespace, global_namespace): Declare extern.
8223	(struct lang_decl_flags): New field in_namespace.
8224	(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): New macros.
8225	(DECL_NAMESPACE, SET_DECL_NAMESPACE): New macros.
8226	(TREE_INDIRECT_USING): New macro.
8227	* decl2.c (current_namespace, global_namespace): Declare.  The
8228	value is a NAMESPACE_DECL now, not a TREE_LIST.
8229	(is_namespace_ancestor, namespace_ancestor): New static functions.
8230	(add_using_namespace, ambiguous_decl): Likewise.
8231	(lookup_using_namespace): New support function for lookup_name.
8232	(qualified_lookup_using_namespace): New support function for
8233	do_scoped_id and lookup_namespace_name.
8234	(get_namespace_id): Mark as obsolete.
8235	(current_namespace_id): Likewise.
8236	(do_namespace_alias): Implement.
8237	(do_using_directive): Implement as call to add_using_namespace.
8238	* decl.c (binding_for_name): New function.
8239	(push_namespace, pop_namespace): Implement.
8240	(push_decl): Don't install a FUNCTION_DECL in the global branch.
8241	(lookup_namespace_name): Implement using qualified lookup.
8242	(lookup_name_real): For global scoping, lookup in
8243	global_namespace.  For namespace scoping, lookup in given
8244	namespace.  For unscoped lookup, iterate over namespace,
8245	considering using directives.
8246	(init_decl_processing): Initialize global_namespace.
8247	(grokvardecl): Build assembler name as static name for globals.
8248	(grokdeclarator): Remove old namespace mangling.
8249	(xref_tag): When installing a global binding for the
8250	tag, make sure we have an identifier.
8251	* method.c (build_overload_nested_name): Mangle namespaces.
8252	(build_qualified_name): Likewise.
8253	(build_decl_overload_real): Likewise.
8254	* lex.c (build_lang_decl): Set namespace for new declaration to
8255	current_namespace.
8256	(do_scoped_id): Find global names in global or current
8257	namespace, or using qualified namespace lookup, depending on
8258	context.
8259	* init.c (build_member_call): When scope is namespace, use
8260	build_x_function_call instead.
8261	(build_offset_ref): When scope is namespace, collapse processing
8262	to lookup_namespace_name instead.
8263	* error.c (dump_decl): Support NAMESPACE_DECL.
8264	* decl.c (pushdecl): Bind globals to current namespace.
8265	(push_overloaded_decl): Likewise.
8266	(lookup_tag): Likewise.
8267	(lookup_name_current_level): Likewise.
8268	(xref_tag): Likewise.
8269	(start_function): Likewise.
8270	* lex.c (do_identifier): Likewise.
8271	(identifier_typedecl_value): Likewise.
8272	(real_yylex): Likewise.
8273	* method.c (do_inline_function_hair): Likewise.
8274	* parse.y (unscoped): Likewise.
8275	* pt.c (check_explicit_specialization): Likewise.
8276	(lookup_template_class): Likewise.
8277	* rtti.c (call_void_fn): Likewise.
8278	* sig.c (build_sigtable): Likewise.
8279	* ptree.c (lang_print_xnode): New function.
8280
8281Tue Feb 24 01:40:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
8282
8283	* pt.c (instantiate_class_template): Don't instantiate if pedantic
8284	and the args use template parms.
8285
8286	* pt.c (push_tinst_level): If the instantiation uses template parms,
8287	fail silently.
8288	* decl.c (xref_basetypes): Do call complete_type for basetypes
8289	that involve template parameters.
8290
8291Tue Feb 24 00:36:43 1998  Jason Merrill  <jason@yorick.cygnus.com>
8292
8293	* typeck2.c (process_init_constructor): Fix labeled init check.
8294
8295Mon Feb 23 05:08:55 1998  Jason Merrill  <jason@yorick.cygnus.com>
8296
8297	* pt.c, call.c, decl.c, method.c, cp-tree.h: Remove unused NARGS
8298	argument to tsubst and friends.
8299
8300	* pt.c (tsubst, FUNCTION_DECL): Tidy.
8301
8302	* typeck.c (build_x_function_call): Handle static member function
8303	templates like non-templates.  Handle friend templates like normal
8304	function templates.
8305	* pt.c (tsubst, *_PARM): Don't use orig_level.
8306	(get_bindings): Don't call add_to_template_args.
8307	(instantiate_template): Likewise.
8308	(tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
8309	* ptree.c (print_lang_type): Print index/level for template parms.
8310
8311Mon Feb 23 02:52:29 1998  Mark Mitchell  <mmitchell@usa.net>
8312
8313	* Make-lang.in (cc1plus): Note that cc1plus depends on
8314	cp/cp-tree.h and cp/cp-tree.def.
8315
8316	* cp-tree.def (TEMPLATE_CONST_PARM): Remove.
8317	(TEMPLATE_PARM_INDEX): New tree code, used to indicate a
8318	position in a template parameter list.
8319	* cp-tree.h (template_parm_index): New structure, used as the tree
8320	structure for a TEMPLATE_PARM_INDEX.
8321	(TEMPLATE_PARM_IDX): New macro.
8322	(TEMPLATE_PARM_LEVEL): Likewise.
8323	(TEMPLATE_PARM_DESCENDANTS): Likewise.
8324	(TEMPLATE_PARM_ORIG_LEVEL): Likewise.
8325	(TEMPLATE_PARM_DECL): Likewise.
8326	(TEMPLATE_TYPE_PARM_INDEX): Likewise.
8327	(TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
8328	(TEMPLATE_TYPE_DECL): Likewise.
8329	(TEMPLATE_CONST_IDX): Remove.
8330	(TEMPLATE_CONST_LEVEL): Likewise.
8331	(TEMPLATE_CONST_SET_INFO): Likewise.
8332	(TEMPLATE_TYPE_SET_INFO): Likewise.
8333	(TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
8334	node.
8335	(TEMPLATE_TYPE_LEVEL): Likewise.
8336	* decl.c (decls_match): Call comp_template_parms, rather than
8337	expanding it inline.
8338	(duplicate_decls): If two template declarations are being merged,
8339	then their TEMPLATE_INFOs should be merged as well.
8340	(grokfndecl): Save template-id information when declaring a friend
8341	with explicit template arguments.  Pass arguments to
8342	check_explicit_specialization via correct convention; at some
8343	point check_explicit_specialization changed, but these call-sites
8344	did not.
8345	(grokdeclarator): Tidy up slightly.
8346	* decl2.c (check_classfn): Tidy up slightly.  Don't assume that
8347	two template functions with the same DECL_ASSEMBLER_NAME the same,
8348	since the names are not yet mangled.
8349	* error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
8350	TEMPLATE_CONST_PARM.
8351	(dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
8352	decl for a non-type parameter, rather than printing `<tparm ...>'.
8353	* friend.c (is_friend): Handle TEMPLATE_DECL friends.
8354	(do_friend): Deal with template friends.
8355	* lex.c (do_pending_inlines): Call
8356	maybe_begin_member_template_processing, rather than
8357	conditionally calling begin_member_template_processing.
8358	(process_next_inline): Likewise.  Call
8359	maybe_end_member_template_processing, rather than
8360	conditionally calling end_member_template_processing.
8361	(do_pending_defargs): Likewise.
8362	(do_identifier): Use TEMPLATE_PARM_INDEX instead of
8363	TEMPLATE_CONST_PARM.
8364	* method.c (build_mangled_template_parm_index): New function.
8365	(build_overload_value): Use it.
8366	(build_overload_name): Likewise.
8367	* pt.c (finish_member_template_decl): Allow friend declarations.
8368	(template_class_depth): New function.
8369	(is_member_template): Rename, and modify, to become...
8370	(is_member_or_friend_template): New function.
8371	(end_member_template_processing): Rename, and modify, to become...
8372	(maybe_end_member_template_processing).
8373	(build_template_parm_index): New function.
8374	(reduce_template_parm_level): New function.
8375	(process_template_parm): Modify to use build_template_parm_index.
8376	(push_template_decl): Deal with friend templates.
8377	(uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
8378	TEMPLATE_CONST_PARM.
8379	(tsubst_friend_function): New function.
8380	(instantiate_class_template): Generate the DECL_FRIENDLIST
8381	for a new instantiation by using tsubst_friend_function rather
8382	than just tsubst.
8383	(tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
8384	Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
8385	appropriate new macros.  Use reduce_template_parm_level to
8386	generate lower-level template parameters.  Handle tsubst'ing into
8387	TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
8388	to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
8389	templates.  Similarly for the template parameters for a new
8390	template.
8391	(tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
8392	of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
8393	(unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
8394	(get_bindings): Call add_to_template_args if necessary.
8395	(instantiate_decl): Handle instantiations of friend templates.
8396	* search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
8397	TEMPLATE_TYPE_PARM as a list of fields; it's not!
8398	* spew.c (yylex): Do a little manual constant propagation to
8399	clarify the code.
8400
8401Sun Feb 22 19:53:29 1998  Jeffrey A Law  (law@cygnus.com)
8402
8403	* error.c: Include sys/types.h.
8404
8405Thu Feb 19 14:49:09 1998  Jeffrey A Law  (law@cygnus.com)
8406
8407	* method.c (build_mangled_name): Start CPP directives in column zero.
8408
8409Thu Feb 19 10:36:48 1998  Jason Merrill  <jason@yorick.cygnus.com>
8410
8411	* typeck2.c (process_init_constructor): Sorry about non-trivial
8412	labeled initializers.
8413	* parse.y (initlist): Re-enable labeled initializers.
8414
8415Thu Feb 19 10:15:55 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
8416
8417	* pt.c (coerce_template_parms): Add a new parameter, is_tmpl_parm,
8418	all callers changed.  Rely on the new parameter instead of arg
8419	being a TREE_LIST when determine whether we are working inside
8420	template template parameter.  Clean up is_type test.
8421
8422Thu Feb 19 10:04:12 1998  Jason Merrill  <jason@yorick.cygnus.com>
8423
8424	* cvt.c (cp_convert_to_pointer): Preserve TREE_CONSTANT.
8425	* typeck2.c (initializer_constant_valid_p): Allow conversions
8426	between pointers and references.
8427
84281998-02-19  Brendan Kehoe  <brendan@cygnus.com>
8429
8430	* typeck.c (build_unary_op): Only warn about incr/decr a pointer
8431	if pedantic || warn_pointer_arith.
8432
8433Thu Feb 19 09:37:21 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
8434
8435	* pt.c (unify): Handle TEMPLATE_DECL.
8436
84371998-02-18  Brendan Kehoe  <brendan@cygnus.com>
8438
8439	* cp-tree.h (strip_attrs): Remove decl.
8440
84411998-02-18  Doug Evans  <devans@cygnus.com>
8442
8443	* decl.c (duplicate_decls): Call merge_machine_decl_attributes.
8444	Update olddecl's attributes too.
8445	(strip_attrs): Remove function.
8446	* typeck.c (common_type): Call merge_machine_type_attributes.
8447
8448Tue Feb 17 14:07:52 1998  Mark Mitchell  <mmitchell@usa.net>
8449
8450	* parse.y (initdcl0_innards): New grammar symbol.
8451	(nomods_initdecls, nomods_initdcl0): Change type from itype to
8452	none, since the resulting value is never used.
8453	(parse_decl): New function.
8454	(datadef): Remove redundant actions.
8455	(initdcl0, notype_initdcl0, nomods_initdcl0): Use initdcl0_innards.
8456	* parse.c: Regenerated.
8457
8458Tue Feb 17 11:54:16 1998  Jason Merrill  <jason@yorick.cygnus.com>
8459
8460	* parse.y (simple_stmt): Use getdecls() to check for decl.
8461
8462Sat Feb 14 11:50:51 1998  Manfred Hollstein  <manfred@s-direktnet.de>
8463
8464	* Make-lang.in (DEMANGLER_INSTALL_NAME, DEMANGLER_CROSS_NAME): New
8465	macros.
8466	(c++.install-common): Install c++filt properly as native or as cross
8467	variant.
8468	(c++.uninstall): Add c++filt.
8469
8470Fri Feb 13 14:55:37 1998  Jason Merrill  <jason@yorick.cygnus.com>
8471
8472	* call.c (standard_conversion): Fix multi-level ptr conversions.
8473
8474Fri Feb 13 14:06:22 1998  Mike Stump  <mrs@wrs.com>
8475
8476	* init.c (build_new): Propagate error_mark_node up.
8477
8478Fri Feb 13 13:24:32 1998  Jason Merrill  <jason@yorick.cygnus.com>
8479
8480	* parse.y (simple_stmt): If the condition isn't a declaration,
8481	start the controlled block after the test.
8482
8483Fri Feb 13 02:26:10 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
8484
8485	* call.c (build_over_call): Convert builtin abs, labs and fabs to
8486	tree-codes.
8487	* decl.c (init_decl_processing): Re-enable abs, labs and fabs as
8488	builtins.
8489
8490Fri Feb 13 01:36:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
8491
8492	* call.c (standard_conversion): A BASE_CONV replaces an RVALUE_CONV.
8493
8494Fri Feb 13 00:21:59 1998  Jason Merrill  <jason@yorick.cygnus.com>
8495
8496	* cp-tree.h: Add access_protected_virtual_node.
8497	* class.c (init_class_processing): Initialize it.
8498	* decl.c (xref_basetypes): Use it.
8499	* parse.y (base_class_access_list): Likewise.
8500
8501	* Make-lang.in (DEMANGLER_PROG): Add $(exeext).
8502	(c++.install-common): Install c++filt.
8503
8504Thu Feb 12 12:46:51 1998  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
8505
8506	* decl.c (shadow_tag): Give error for typedef-ing built-in types.
8507
8508Wed Feb 11 23:28:05 1998  Mark Mitchell  <mmitchell@usa.net>
8509
8510	* call.c (reference_binding): Use comptypes when comparing
8511	TYPE_MAIN_VARIANTS to handle non-canonical array/index types.
8512
8513Wed Feb 11 16:42:04 1998  Mark Mitchell  <mmitchell@usa.net>
8514
8515	* tree.c (is_overloaded_fn): Use really_overloaded_fn.
8516	(really_overloaded_fn): Move check here from is_overloaded_fn.
8517	(get_first_fn): Use really_overloaded_fn and is_overloaded_fn.
8518
8519Wed Feb 11 15:54:18 1998  Mark Mitchell  <mmitchell@usa.net>
8520
8521	* typeck.c (build_ptrmemfunc): Type-check pointer-to-member
8522	conversions.
8523
8524Mon Feb  9 22:23:31 1998  Mark Mitchell  <mmitchell@usa.net>
8525
8526	* cp-tree.h (push_template_decl): Return the decl passed in, or an
8527	equivalent duplicate.
8528	* decl.c (pushtag): Use the return value from push_template_decl.
8529	(duplicate_decls): When duplicating a template declaration, merge
8530	the DECL_TEMPLATE_RESULTs as well.
8531	(make_implicit_typename): Don't try to dive into typename types to
8532	find a context for making a new implicit typename.
8533	(start_decl): Use the return value from push_template_decl.
8534	(grokdeclarator): Complain about declarations list `const operator
8535	int'.  Since we don't correctly handle in-class initializations of
8536	non-static data members, complain about this (now illegal)
8537	practice.  Issue an error for initializations of non-const statics
8538	since that is illegal as well, and since we don't handle that case
8539	correctly either.
8540	(start_function): Use the return value from push_template_decl.
8541	(start_method): Likewise.
8542	* decl2.c (grokfield): Likewise.  Since the change to
8543	grokdeclarator ensures that all initialized fields are in fact
8544	static, remove a redundant test for TREE_PUBLIC.
8545	* parse.y (initlist): Disable labeled initializers since they do
8546	not work as per the documentation, and since they do not use the
8547	same syntax as the C front end.
8548	* pt.c (push_template_decl): Return the decl passed in, or an
8549	equivalent duplicate.
8550	(lookup_template_class): When searching in a nested context,
8551	use the right arguments.
8552	(uses_template_parms): Handle the DECL_INITIAL for a CONST_DECL.
8553	* typeck.c (build_component_ref): Assign the correct type to the
8554	result of build_vfn_ref.
8555
8556Tue Feb 10 23:56:46 1998  Jason Merrill  <jason@yorick.cygnus.com>
8557
8558	* pt.c (convert_nontype_argument): Fix typo.
8559	(check_explicit_specialization): Allow old-style specialization
8560	of class template members.
8561
8562Tue Feb 10 20:36:52 1998  Jason Merrill  <jason@yorick.cygnus.com>
8563			  Manfred Hollstein  <manfred@s-direktnet.de>
8564
8565	* decl.c (grokdeclarator): Use DECL_USE_TEMPLATE instead
8566	when deciding to override DECL_ASSEMBLER_NAME.
8567
8568Tue Feb 10 15:30:55 1998  Andrew MacLeod  <amacleod@torpedo.to.cygnus.com>
8569
8570	* decl2.c (lang_f_options): Add -fsquangle to option processing list.
8571	* cp-tree.h (flag_do_squangling): Add declaration.
8572	* lang-options.h: Add -fsquangle and -fno-squangle.
8573	* method.c: Add macros and static variables for squangling.
8574	(build_overload_name): Rename to build_mangled_name, add logic for B
8575	compression, and split into process_modifiers and
8576	process_overload_item.
8577	(process_modifiers): New function, to handle constant, reference,
8578	and pointer types.
8579	(process_overload_item): New function, handles issue of type codes.
8580	(build_overload_name): New function, start squangling and call
8581	build_mangled_name.
8582	(ALLOCATE_TYPEVEC, DEALLOCATE_TYPEVEC): Remove macro and expand inline.
8583	(start_squangling): New function to initialize squangling structs.
8584	(end_squangling): New function to destroy squangling structs.
8585	(nrepeats): Rename variable to Nrepeats.
8586	(issue_nrepeats): New function for issuing 'n' type repeats.
8587	(check_ktype): New function to check for type K name compression.
8588	(build_overload_nested_name): Add a check for K name compression.
8589	(build_qualified_name): Add a check for K name compression and don't
8590	use DECL_ASSEMBLER_NAME when squangling is on.
8591	(check_btype): New function, checks for B type compression.
8592	(build_static_name, build_decl_overload_real): Initiate squangling.
8593	(build_typename_overload, build_overload_with_type): Initiate
8594	squangling
8595
8596Sun Feb  8 23:47:38 1998  scott snyder  <sss@d0linux01.fnal.gov>
8597
8598	* method.c (make_thunk): Avoid name buffer overflow.
8599
8600Sat Feb  7 16:48:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
8601
8602	* pt.c (instantiate_decl): Call cp_finish_decl for vars even if we
8603	don't define them yet.
8604
8605	* parse.y (nomods_initdcl0): Add constructor_declarator case.
8606
8607Fri Feb  6 21:32:25 1998  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
8608
8609	* config-lang.in (diff_excludes): Use basename only.
8610
8611Thu Feb  5 19:10:40 1998  Jason Merrill  <jason@yorick.cygnus.com>
8612
8613	* tinfo2.cc: Add tinfo for signed char.
8614
8615Thu Feb  5 14:38:23 1998  Mike Stump  <mrs@wrs.com>
8616
8617	* search.c (compute_access): Handle protected constructors in derived
8618	classes as accessible.
8619
8620Wed Feb  4 01:26:49 1998  Jason Merrill  <jason@yorick.cygnus.com>
8621
8622	* expr.c (cplus_expand_expr, PCC_STATIC_STRUCT_RETURN code):
8623	Call convert_from_reference sooner.
8624
8625Tue Feb  3 23:50:52 1998  Mark Mitchell  <mmitchell@usa.net>
8626
8627	* cvt.c (ocp_convert): Obtain the constant values from constant
8628	decls even if the destination type is the same as the type of the
8629	decl.
8630
8631	* decl2.c (finish_file): Make sure that static inlines with
8632	definitions are not marked DECL_EXTERNAL before returning.
8633
8634Tue Feb  3 22:43:42 1998  Jason Merrill  <jason@yorick.cygnus.com>
8635
8636	* decl.c: Lose arg_looking_for_template.
8637	(lookup_name_real): Likewise.
8638	* parse.y: Lose processing_template_arg, template_arg1.
8639	(primary): Likewise.
8640	* spew.c (yylex): Set lastiddecl for PTYPENAMEs, too.
8641
8642Tue Feb  3 22:04:01 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
8643
8644	* error.c (dump_decl): Fix type of default arguments for template
8645	template parameters and nontype template parameters.
8646	* parse.y (template_parm): Handle invalid default template
8647	template arguments here.
8648
8649	* parse.y (template_parm): Use template_arg instead of PTYPENAME
8650	for default template template argument.
8651	* pt.c (coerce_template_parms): Merge default template argument
8652	codes.  Can treat RECORD_TYPE as template name if it is implicitly
8653	created.  Fix argument index in error message.
8654	* typeck.c (comptypes): Merge template argument comparison codes in
8655	TEMPLATE_TEMPLATE_PARM and RECORD_TYPE.
8656
8657Tue Jan  6 01:42:44 1998  Mumit Khan  <khan@xraylith.wisc.edu>
8658
8659	* lex.c (file_name_nondirectory): Also check for '/'.
8660
8661Mon Feb  2 11:24:22 1998  Mark Mitchell  <mmitchell@usa.net>
8662
8663	* parse.y (primary): Deal with statement-expressions in
8664	templates.
8665	* pt.c (tsubst_copy): Handle BIND_EXPR.
8666	* tree.c (mapcar): Likewise.
8667
8668	* call.c (add_template_candidate_real): Pass extra parameter to
8669	fn_type_unification.
8670	* cp-tree.h (fn_type_unification): Add parameter.
8671	* pt.c (fn_type_unification): Add additional parameter to deal with
8672	static member functions.
8673	(get_bindings): Deal with static member functions.
8674
8675	* cp-tree.h (DECL_NONSTATIC_MEMBER_FUNCTION_P): New macro.
8676	(revert_static_member_fn): Declare.
8677	* decl.c (revert_static_member_fn): Remove declaration.  Change
8678	linkage from internal to external.
8679	(cp_finish_decl): Deal with virtual functions in classes local to
8680	template functions.
8681	* decl2.c (finish_file): Don't forget to emit increment/decrement
8682	expressions in initializers for file-scope variables.
8683	* parse.y (typename_sub2): If the typename doesn't names a
8684	template, rather than a type, issue an error message.
8685	* pt.c (check_explicit_specialization): Handle specializations of
8686	static member functions.
8687	(coerce_template_parms): Handle offset references to lists of
8688	member functions.
8689	* search.c (note_debug_info_needed): Don't crash when handed a
8690	type which is being defined.
8691	* typeck.c (complete_type): Don't crash when handed NULL_TREE;
8692	that can happen with some illegal code.
8693
8694Mon Feb  2 00:57:38 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8695
8696	* call.c (user_harshness): Initialize `code' to 0.
8697	(build_method_call): Initialize `candidates', `cp' and `len' to 0.
8698	(null_ptr_cst_p): Add parentheses around && within ||.
8699	(standard_conversion): Likewise.
8700	(z_candidate): Likewise.
8701	(build_user_type_conversion_1): Initialize `args' to NULL_TREE.
8702	(build_object_call): Likewise for `mem_args'.
8703	(build_new_op): Likewise for `mem_arglist'.  Add `return' from
8704	default case in enumeration switch.
8705
8706	* class.c (build_vtable_entry): Add explicit braces to avoid
8707	ambiguous `else'.
8708	(build_class_init_list): Likewise.
8709	(finish_struct_1): Initialize `width' to 0.
8710	(instantiate_type): Initialize `name' to NULL_TREE.  Add
8711	explicit braces to avoid ambiguous `else'.
8712
8713	* cvt.c (convert_to_aggr): Add explicit braces to avoid ambiguous
8714	`else'.
8715
8716	* decl.c (grok_reference_init): Eliminate unused parameter, all
8717	callers changed.
8718	(record_builtin_type): Initialize `tdecl' to NULL_TREE.
8719	(init_decl_processing): Initialize `vb_off_identifier' to NULL_TREE.
8720	(cp_finish_decl): Initialize `ttype' to NULL_TREE.
8721	(grokdeclarator): Add parentheses around && within ||.  Add
8722	explicit braces to avoid ambiguous `else'.
8723	(grokparms): Initialize `type' to NULL_TREE.
8724	(xref_tag): Remove unused label `just_return'.
8725	(finish_enum): Initialize `minnode' and `maxnode' to NULL_TREE.
8726	(finish_function): Initialize `cond' and `thenclause' to NULL_TREE.
8727	(hack_incomplete_structures): Add parentheses around assignment
8728	used as truth value.
8729
8730	* decl2.c (coerce_delete_type): Hide definition of `e3'.
8731
8732	* error.c: Include <stdlib.h>.
8733	(dump_expr): Change the type of `i' to size_t.  Remove unused
8734	label `error'.
8735
8736	* except.c (init_exception_processing): Remove unused variable `d'.
8737	(expand_throw): Likewise for `label'.
8738
8739	* friend.c (add_friends): Add explicit braces to avoid ambiguous
8740	`else'.
8741
8742	* init.c (sort_member_init): Initialize `last_field' to NULL_TREE.
8743	(sort_base_init): Likewise for `binfo'.
8744	(expand_member_init): Likewise for `rval'.
8745	(build_member_call): Add parentheses around assignment used as
8746	truth value.
8747	(build_offset_ref): Add explicit braces to avoid ambiguous `else'.
8748	(build_new): Initialize `nelts' to NULL_TREE.  Initialize
8749	`old_immediate_size_expand' to 0.
8750	(build_new_1): Initialize `nelts' and `alloc_node' to NULL_TREE.
8751	(build_vec_delete_1): Remove unused variable `block'.
8752	(expand_vec_init): Initialize `itype' to NULL_TREE.
8753
8754	* lex.c: Include <strings.h> if we don't have <string.h>.  Protect
8755	declaration of `index' and `rindex' with autoconf macros.
8756	(reinit_parse_for_expr): Remove unused variables
8757	`look_for_semicolon' and `look_for_lbrac'.
8758	(cons_up_default_function): Initialize `args' to NULL_TREE.
8759	(readescape): Initialize `firstdig' to 0.
8760	(real_yylex): Add parentheses around assignment used as truth value.
8761
8762	* method.c: Include <strings.h> if we don't have <string.h>.
8763	Protect declaration of `index' with autoconf macro.
8764
8765	* parse.y (primary): Add explicit braces to avoid ambiguous `else'.
8766	Initialize `type' to NULL_TREE.
8767	(structsp): Remove unused variable `id'.
8768
8769	* pt.c (coerce_template_parms): Add explicit braces to avoid
8770	ambiguous `else'.
8771	(lookup_template_class): Initialize `template' to NULL_TREE.
8772	(instantiate_class_template): Remove unused variable `name' and `e'.
8773	(tsubst): Likewise for `i'.  Initialize `last' to NULL_TREE.
8774	(do_poplevel): Initialize `saved_warn_unused' to 0.
8775	(type_unification): Remove unused varable `parm'.
8776	(unify): Likewise for `j'.
8777
8778	* repo.c (init_repo): Add parentheses around assignment used as
8779	truth value.
8780	(finish_repo): Remove unused varable `p'.
8781
8782	* search.c (get_binfo): Initialize `type' to NULL_TREE.
8783	(get_base_distance): Likewise.
8784	(lookup_field): Initialize `rval_binfo_h', `type', `basetype_path'
8785	and `new_v' to NULL_TREE.
8786	(lookup_fnfields): Likewise for `rval_binfo_h'.
8787	(breadth_first_search): Add parentheses around assignment used as
8788	truth value.
8789	(get_template_base): Initialize `type' to NULL_TREE.
8790
8791	* sig.c (append_signature_fields): Initialize `last_mfptr' to
8792	NULL_TREE.
8793	(build_signature_table_constructor): Likewise for
8794	`last_rhs_field', `pfn' and `vt_off'.
8795	(build_sigtable): Likewise for `init'.
8796
8797	* tree.c (break_out_calls): Initialize `t2' to NULL_TREE.
8798	(propagate_binfo_offsets): Likewise for `delta'.
8799	(hash_tree_cons): Initialize hashcode to 0.
8800	(can_free): Likewise for `size'.
8801	(cp_tree_equal): Add explicit braces to avoid ambiguous `else'.
8802
8803	* typeck.c (convert_sequence): Hide prototype.
8804	(common_type): Add explicit braces to avoid ambiguous `else'.
8805	(comp_target_types): Likewise.
8806	(build_x_function_call): Initialize `ctypeptr' to NULL_TREE.
8807	(build_function_call_real): Add explicit braces to avoid ambiguous
8808	`else'.
8809	(convert_arguments): Initialize `called_thing' to 0.
8810	(convert_for_initialization): Initialize `savew' and `savee' to 0.
8811
8812	* typeck2.c (incomplete_type_error): Initialize `errmsg' to 0.
8813	(digest_init): Initialize `old_tail_contents' to NULL_TREE.
8814	(build_x_arrow): Likewise for `last_rval'.
8815
8816	* xref.c (GNU_xref_decl): Initialize `cls' to 0.
8817
8818Sun Feb  1 12:45:34 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>
8819
8820	* decl.c (init_decl_processing): Use set_sizetype.
8821	* decl2.c (sizetype): Don't declare.
8822	* typeck.c (c_sizeof): Convert result of *_DIV_EXPR to sizetype.
8823	(c_sizeof_nowarn, build_binary_op_nodefault): Likewise.
8824	(build_component_addr, unary_complex_lvalue): Likewise.
8825	* rtti.c (expand_class_desc): Likewise.
8826	* class.c (get_vfield_offset): Likewise.
8827
8828Thu Jan 29 10:39:30 1998  Mark Mitchell  <mmitchell@usa.net>
8829
8830	* pt.c (convert_nontype_argument): Move check for is_overloaded_fn
8831	early to avoid bogus error.  Handle overloaded function
8832	names provided as template arguments correctly.
8833	(coerce_template_parms): Don't mishandle overloaded functions when
8834	dealing with template template parameters.
8835	(lookup_template_class): Issue an error message, rather than
8836	crashing, when the TYPE_DECL provided is not a template type.
8837
8838Wed Jan 28 23:14:44 1998  Jason Merrill  <jason@yorick.cygnus.com>
8839
8840	* class.c (instantiate_type): Don't just return a known type if
8841	it's wrong.
8842
8843Wed Jan 28 11:04:07 1998  Mark Mitchell  <mmitchell@usa.net>
8844
8845	* class.c (instantiate_type): Remove handling of FUNCTION_DECL
8846	since that code could never be reached.
8847
8848	* error.c (dump_decl): Avoid aborting in the midst of printing an
8849	error message about an illegal template declaration.
8850
8851	* parse.y (structsp): Print an error message, rather than crashing,
8852	when a class-head does not name a class.
8853
8854	* pt.c (convert_nontype_argument):  Allow REAL_TYPE and COMPLEX_TYPE
8855	template arguments as a g++ extension.
8856
8857	* cp-tree.def (ALIGNOF_EXPR): New tree code.
8858	* decl2.c (grok_alignof): If processing_template_decl, just store
8859	the expression.
8860	* typeck.c (c_alignof): Likewise.
8861	* decl2.c (build_expr_from_tree): Handle ALIGNOF_EXPR.
8862	* error.c (dump_expr): Likewise.
8863	* pt.c (tsubst_copy): Likewise.
8864	* tree.c (cp_tree_equal): Likewise.
8865	* pt.c (uses_template_parms): Correctly determine whether or not a
8866	SIZEOF_EXPR/ALIGNOF_EXPR uses template parameters so that constant
8867	folding can be done.
8868
8869	* cp-tree.h (grok_enum_decls): Remove type parameter.
8870	* decl.c (grok_enum_decls): Likewise.
8871	* decl2.c (grok_x_components): Call grok_enum_decls
8872	unconditionally, since it will do nothing if there is no
8873	current_local_enum.  Use the new calling sequence.
8874	* pt.c (tsubst_enum): Use the new calling sequence for
8875	grok_enum_decls.
8876
8877	* decl.c (start_function): Make member functions of local classes
8878	in extern inline functions have comdat linkage here...
8879	(grokdeclarator): Rather than here.
8880
8881Wed Jan 28 10:55:47 1998  Jason Merrill  <jason@yorick.cygnus.com>
8882
8883	* pt.c (convert_nontype_argument): Use decl_constant_value.
8884
8885Tue Jan 27 16:42:21 1998  Mark Mitchell  <mmitchell@usa.net>
8886
8887	* call.c (add_template_candidate_real): New function.
8888	(add_template_candidate): Use it.
8889	(add_template_conv_candidate): Likewise.
8890	(joust): Pass extra argument to more_specialized.
8891	* class.c (instantiate_type): Handle a single FUNCTION_DECL.
8892	(is_local_class): Remove.
8893	(finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
8894	* cp-tree.h (is_local_class): Remove.
8895	(perform_array_to_pointer_conversion): Likewise.
8896	(finish_member_template_decl): Add.
8897	(check_explicit_specialization): Return a tree, not an int.
8898	(more_specialized): Take additional argument.
8899	(get_bindings): Likewise.
8900	(TI_PENDING_SPECIALIZATION_FLAG): New macro.
8901	* cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
8902	(perform_array_to_pointer_conversion): Remove.
8903	* decl.c (saved_scope): Add processing_specialization,
8904	processing_explicit_instantiation fields.
8905	(maybe_push_to_top_level): Save them.
8906	(pop_from_top_level): Restore them.
8907	(grokfndecl): Use new return value from
8908	check_explicit_specialization.
8909	(start_decl): Don't check flag_guiding_decls before pushing
8910	decls.
8911	(cp_finish_decl): Remove previous (bogus) change.
8912	(grok_declarator): Use decl_function_context rather than
8913	is_local_class.
8914	* decl2.c (finish_file): Pass extra argument to get_bindings.
8915	(build_expr_from_tree): Let build_x_component_ref check
8916	validity of arguments rather than doing it here.
8917	* lex.c (cons_up_default_function): Remove code fooling with
8918	processing_specialization, processing_explicit_instantiation
8919	flags, as that is now done in {maybe_push_top,pop_from}_top_level.
8920	* method.c (build_overload_identifier): Mangle local classes in
8921	template functions correctly.
8922	* parse.y (finish_member_template_decl): Move to pt.c.
8923	* pt.c (finish_member_template_decl): Moved here from parse.y.
8924	(print_candidates): New function.
8925	(determine_specialization): Change interface.  Properly look for
8926	most specialized versions of template candidates.
8927	(check_explicit_specialization): Fully process explicit
8928	instantiations.
8929	(push_template_decl): Avoid looking at CLASSTYPE fields in
8930	FUNCTION_DECLS.
8931	(determine_overloaded_function): Remove.
8932	(convert_nontype_argument): Change name from
8933	convert_nontype_parameter.  Use determine_overloaded_function
8934	instead of instantiate_type.
8935	(mangle_class_name_for_template): Handle type contexts as well as
8936	function contexts.
8937	(classtype_mangled_name): Likewise.
8938	(lookup_template_class): Likewise.
8939	(tsubst): Likewise.
8940	(more_specialized): Take explict template arguments as a
8941	parameter.
8942	(most_specialized): Likewise.
8943	(get_bindings): Likewise.  Check that return types match before
8944	proclaiming a function a match.
8945	(do_decl_instantiation): Remove code searching for function to
8946	instantiate; that is now done in check_explicit_specialization.
8947	(add_maybe_template): Pass extra argument to get_bindings.
8948	* tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
8949	implementation.
8950	* typeck.c (build_component_ref): Check for invalid arguments.
8951
8952Tue Jan 27 01:44:02 1998  Jason Merrill  <jason@yorick.cygnus.com>
8953
8954	* expr.c (cplus_expand_expr, AGGR_INIT_EXPR): Don't check that
8955	return_target and call_target are equivalent.
8956
8957	* pt.c (type_unification_real): Just accept function parms that
8958	don't use any template parms.
8959
8960Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
8961
8962	* decl.c (cp_finish_decl): When bailing on a comdat variable, also
8963	unset DECL_NOT_REALLY_EXTERN.
8964
8965	* parse.y (typename_sub*): Fix std::.
8966
8967Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
8968
8969	* error.c (dump_decl): Fix type default template args.
8970	(dump_type): Hand TEMPLATE_DECL off to dump_decl.
8971
8972Fri Jan 23 18:34:37 1998  Mumit Khan  <khan@xraylith.wisc.edu>
8973
8974	* lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
8975	(file_name_nondirectory): Use.
8976
8977Wed Jan 21 10:29:57 1998  Kriang Lerdsuwanakij  <lerdsuwa@scf.usc.edu>
8978
8979	* pt.c (coerce_template_parms): Don't access elements of ARGLIST
8980	that are not really present.  Substitute default arguments in
8981	template template arguments.  Correctly convert TEMPLATE_DECL to
8982	TEMPLATE_TEMPLATE_PARM.
8983	(comp_template_args): TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM
8984	are no longer treated specially here.
8985	* parse.y (template_template_parm): Fix copy error.
8986	* decl.c (grokdeclarator): Warn about missing `typename' for nested
8987	type created from template template parameters.
8988	* parse.y (bad_parm): Likewise
8989
8990	* class.c (finish_struct): Handle TEMPLATE_TEMPLATE_PARM.
8991	(push_nested_class): Likewise.
8992	* cp-tree.def (TEMPLATE_TEMPLATE_PARM): New tree code.
8993	* cp-tree.h (DECL_TEMPLATE_TEMPLATE_PARM_P): New macro.
8994	(copy_template_template_parm): Declare.
8995	* decl.c (arg_looking_for_template): New variable.
8996	(lookup_name_real): Handle TEMPLATE_TEMPLATE_PARM.
8997	Try to return TEMPLATE_DECL or TEMPLATE_TEMPLATE_PARM
8998	node if arg_looking_for_template is nonzero.
8999	(pushdecl): Handle TEMPLATE_TEMPLATE_PARM.
9000	(grok_op_properties, xref_tag, xref_basetypes): Likewise.
9001	(grokdeclarator): Handle TEMPLATE_DECL.
9002	* decl2.c (constructor_name_full): Handle TEMPLATE_TEMPLATE_PARM.
9003	* error.c (dump_type): Add TEMPLATE_DECL and TEMPLATE_TEMPLATE_PARM.
9004	(dump_type_prefix, dump_type_suffix): Handle TEMPLATE_TEMPLATE_PARM.
9005	(dump_decl): Handle unnamed template type parameters.
9006	Handle template template parameters.
9007	(dump_function_name): Handle template template parameters.
9008	* init.c (is_aggr_typedef, is_aggr_type, get_aggr_from_typedef):
9009	Handle TEMPLATE_TEMPLATE_PARM.
9010	* method.c (build_template_template_parm_names): New function.
9011	(build_template_parm_names): Handle TEMPLATE_DECL.
9012	(build_overload_nested_name, build_overload_name):
9013	Handle TEMPLATE_TEMPLATE_PARM.
9014	* parse.y (maybe_identifier): New nonterminal.
9015	(template_type_parm): Use it.
9016	(template_template_parm, template_arg1): New nonterminal.
9017	(template_parm): Add template_template_parm rules.
9018	(template_arg): Set processing_template_arg.
9019	(template_arg1): Rules moved from template_arg.
9020	(primary, nonnested_type): Set arg_looking_for_template if we are
9021	processing template arguments.
9022	* pt.c (begin_member_template_processing): Handle TEMPLATE_DECL.
9023	(process_template_parm): Handle template template parameters.
9024	(coerce_template_parms, comp_template_args): Likewise.
9025	(mangle_class_name_for_template, lookup_template_class): Likewise.
9026	(uses_template_parms): Handle TEMPLATE_DECL and
9027	TEMPLATE_TEMPLATE_PARM.
9028	(current_template_args): Handle TEMPLATE_DECL.
9029	(tsubst, tsubst_copy, unify): Handle TEMPLATE_TEMPLATE_PARM.
9030	* search.c (dfs_walk, dfs_record_inheritance):
9031	Handle TEMPLATE_TEMPLATE_PARM.
9032	* tree.c (copy_template_template_parm): New function.
9033	(mapcar): Handle TEMPLATE_TEMPLATE_PARM.
9034	* typeck.c (comptypes): Handle TEMPLATE_TEMPLATE_PARM.
9035
9036Mon Jan 19 22:40:03 1998  Mark Mitchell  <mmitchell@usa.net>
9037
9038	* decl.c (start_decl): Don't allow duplicate definitions of static
9039	data members.
9040
9041	* call.c (build_user_type_conversion_1): Handle user-defined
9042	template conversion operators correctly.
9043
9044	* decl2.c (build_expr_from_tree): Issue an error message if the
9045	object in a COMPONENT_REF is a TEMPLATE_DECL.
9046
9047	* typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
9048
9049	* class.c (is_local_class): New function.
9050	* cp-tree.h (is_local_class): Declare it.
9051	(last_tree): Likewise.
9052	(begin_tree): Likewise.
9053	(end_tree): Likewise.
9054	(lookup_template_class): Change prototype.
9055	* decl.c (cp_finish_decl): Check for NULL where necessary.
9056	Consider FUNCTION_DECLS to declare objects with top-level binding,
9057	when calling make_decl_rtl.
9058	(grokdeclarator): Give members of local classes internal linkage.
9059	(start_function): Remove declaration of last_tree.
9060	(finish_function): Set flag_keep_inline_functions around call to
9061	rest_of_compilation if we are processing a member function in a
9062	local class.
9063	(start_method): Call push_template_decl for member functions of
9064	local classes in template functions.
9065	* decl2.c (import_export_decl): Don't give external linkage to
9066	instantiations of templates with internal linkage.
9067	* parse.y (last_tree): Remove declaration.
9068	(template_type): Pass extra parameter to lookup_template_class.
9069	(self_template_type): Likewise.
9070	(structsp): Move call to reset_specialization into left_curly.
9071	(left_curly): Call reset_specialization, and begin_tree.
9072	* pt.c (saved_trees): New variable.
9073	(mangle_class_name_for_template): Change prototype.  Use
9074	additional function context to name local classes in templates
9075	correctly.
9076	(classtype_mangled_name): Pass the context.
9077	(push_template_decl): Handle local classes and templates, and
9078	member functions for such classes.
9079	(convert_nontype_parameter): Fix handling of pointer-to-member
9080	constants.
9081	(lookup_template_class): Handle local classes in templates.
9082	(tsubst): Likewise.  Don't assume that template instantiations
9083	have external linkage; pay attention to the template declaration.
9084	(mark_decl_instantiated): Likewise.
9085	(begin_tree): New function.
9086	(end_tree): Likewise.
9087
9088	* decl.c (xref_basetypes): Don't call complete_type for basetypes
9089	that involve template parameters; that can lead to infinite
9090	recursion unnecessarily.
9091
9092	* pt.c (register_specialization): Do not register specializations
9093	that aren't ready to be registered yet.
9094	(check_explicit_specialization): Handle explicit specialization of
9095	constructors and destructors.
9096	(build_template_decl): New function.
9097	(push_template_delc): Handle out-of-class specializations of
9098	member templates.
9099
9100	* pt.c (check_explicit_specialization): Set up the template
9101	information before registering the specialization.
9102	(coerce_template_parms): Fix thinko.
9103	(tsubst): Handle specializations of member templates correctly.
9104
9105	* class.c (finish_struct_methods): Remove calls to
9106	check_explicit_specialization from here.
9107	(finish_struct): And insert them here.
9108	* cp-tree.h (perform_qualification_conversions): New function.
9109	(perform_array_to_pointer_conversion): Likewise.
9110	(begin_explicit_instantiation): Likewise.
9111	(end_explicit_instantiation): Likewise.
9112	(determine_specialization): Renamed from
9113	determine_explicit_specialization.
9114	(comp_template_parms): New function.
9115	(processing_explicit_instantiation): New variable.
9116	* cvt.c (perform_qualification_conversions): New function.
9117	(perform_array_to_pointer_conversion): Likewise.
9118	* decl.c (duplicate_decls): Don't consider template functions
9119	alike unless they have the same parameters.  Refine handling of
9120	instantiation/specialization mismatches.
9121	(start_decl): Don't call pushdecl for template specializations,
9122	since they don't affect overloading.
9123	(start_function): Likewise.
9124	(grokfndecl): Call check_explicit_specialization a little later.
9125	Don't call duplicate_decls for memberm template specializations.
9126	(grokdeclarator): Don't update template_count for classes that are
9127	themselves specializations.  Remove use of `2' as parameter to
9128	grokfndecl since that value isn't used.
9129	* lex.c (cons_up_default_function): Save and restore
9130	processing_explicit_instantiation around calls to grokfield.
9131	* parse.y (finish_member_template_decl): New function.
9132	(component_decl_1): Use it.
9133	(fn.def2): Likewise.
9134	(template_arg_list_opt): New nonterminal.
9135	(template_type): Use it.
9136	(self_template_type): Likewise.
9137	(template_id): Likewise.
9138	(object_template_id): Likewise.
9139	(notype_template_declarator): Likwise.
9140	(begin_explicit_instantiation): Likewise.
9141	(end_explicit_instantiation): Likewise.
9142	(explicit_instantiation): Use them.
9143	* pt.c (coerce_template_parms): Add parameters.
9144	(processing_explicit_instantiation): New variable.
9145	(convert_nontype_parameter): New function.
9146	(determine_overloaded_function): Likewise.
9147	(begin_explicit_instantiation): Likewise.
9148	(end_explicit_instantiation): Likewise.
9149	(retrieve_specialization): Likewise.
9150	(register_specialization): Likewise.
9151	(processing_explicit_specialization): Removed.
9152	(determine_specialization): Handle specializations of member
9153	functions of template class instantiations.
9154	(check_explicit_specialization): Refine to conform to standard.
9155	(comp_template_parms): New function.
9156	(coerce_template_parms): Call convert_nontype_parameter.
9157	(tsubst): Refine handling of member templates.  Use
9158	register_specialization.
9159	(instantiate_template): Use retrieve_specialization.
9160	(do_decl_instantiation): Likewise.
9161	(instantiate_decl): Likewise.
9162	(type_unification): Improve handling of explict template
9163	arguments.
9164	* tree.c (mapcar): Return error_mark_node, rather than aborting,
9165	on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
9166	* typeck.c (build_unary_op): Call determine_specialization, rather
9167	than determine_explicit_specialization.
9168
9169Mon Jan 19 13:18:51 1998  Jason Merrill  <jason@yorick.cygnus.com>
9170
9171	* cvt.c (build_up_reference): A TARGET_EXPR has side effects.
9172
9173Fri Jan 16 11:40:50 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
9174
9175	* error.c (dump_decl): For enum tags, output the tag, not its value.
9176
91771998-01-13  Brendan Kehoe  <brendan@cygnus.com>
9178
9179	* decl.c (init_decl_processing): Only call init_rtti_processing
9180	FLAG_RTTI is set.
9181
9182Mon Jan 12 01:35:18 1998  Jason Merrill  <jason@yorick.cygnus.com>
9183
9184	* init.c (build_new_1): Split out from build_new.
9185	(build_new): Just return a NEW_EXPR.
9186	* expr.c (cplus_expand_expr): Handle NEW_EXPR.
9187
9188	* decl2.c (get_temp_regvar): Tweak.
9189
9190	* cp-tree.h (TREE_CALLS_NEW): Comment out.
9191	* class.c (resolves_to_fixed_type_p): Remove use.
9192	* method.c (build_opfncall): Likewise.
9193	* call.c (build_new_op): Likewise.
9194
9195Wed Jan  7 23:47:13 1998  Jason Merrill  <jason@yorick.cygnus.com>
9196
9197	* exception.cc (__eh_alloc, __eh_free): New fns.
9198	(__cp_push_exception, __cp_pop_exception): Use them.
9199	(__uncatch_exception): Call terminate here if no exception.
9200	* except.c (build_terminate_handler): New fn.
9201	(expand_start_catch_block): Use it.
9202	(expand_exception_blocks): Likewise.
9203	(alloc_eh_object): New fn.
9204	(expand_throw): Use it.  Protect exception init with terminate.
9205	* typeck.c (build_modify_expr): Remove code that ignores trivial
9206	methods.
9207
9208Mon Dec 22 11:36:27 1997  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9209
9210	* call.c (add_builtin_candidate): Add default case in enumeration
9211	switch.
9212	(build_new_op): Likewise.
9213	(convert_like): Likewise.
9214	* cvt.c (build_expr_type_conversion): Likewise.
9215	* tree.c (real_lvalue_p): Likewise.
9216	(lvalue_p): Likewise.
9217	(cp_tree_equal): Likewise.
9218	* typeck.c (comptypes): Likewise.
9219	(build_component_ref): Likewise.
9220	(build_function_call_real): Likewise.
9221	(build_binary_op_nodefault): Likewise.
9222	(build_unary_op): Likewise.
9223	(build_modify_expr): Likewise.
9224	* typeck2.c (initializer_constant_valid_p): Likewise.
9225
9226Sun Dec 21 15:59:00 1997  Nick Clifton  <nickc@cygnus.com>
9227
9228	* decl2.c (lang_decode_option): Add support for -Wunknown-pragmas.
9229
9230Thu Dec 18 14:51:50 1997  Mark Mitchell  <mmitchell@usa.net>
9231
9232	* pt.c (coerce_template_parms): Make sure to digest_init if
9233	possible.
9234
9235	* decl.c (duplicate_decls): Make the newdecl virtual if the
9236	olddecl was, just as is done with other attributes of olddecl.
9237
9238Thu Dec 18 14:43:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
9239
9240	* typeck.c (unary_complex_lvalue): Ignore op0 when taking the
9241	address of an OFFSET_REF.
9242
9243	* cp-tree.def: Add AGGR_INIT_EXPR.
9244	* error.c, tree.c, typeck.c: Replace uses of NEW_EXPR with
9245	AGGR_INIT_EXPR where appropriate.
9246	* expr.c (cplus_expand_expr): Likewise.  Simplify.
9247
9248	* decl2.c (finish_file): Remove call to register_exception_table.
9249
9250Wed Dec 17 17:08:52 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
9251
9252	* pt.c (instantiate_class_template): Don't do injection when
9253	processing_template_decl is true, as pollutes current_binding_level
9254	for base classes.
9255
9256Wed Dec 17 21:17:39 1997  Peter Schmid  <schmid@ltoi.iap.physik.tu-darmstadt.de>
9257
9258	* pt.c (maybe_fold_nontype_arg): Add prototype.
9259
9260Tue Dec 16 10:31:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
9261
9262	* tree.c (mapcar): Handle TRY_CATCH_EXPR et al.
9263	* error.c (dump_expr): Likewise.
9264
9265Mon Dec 15 12:22:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
9266
9267	* typeck.c (build_function_call_real): Remove "inline called before
9268	definition" pedwarn.
9269
9270	* pt.c (coerce_template_parms): Use maybe_fold_nontype_arg.
9271
9272Sun Dec 14 22:34:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
9273
9274	* cvt.c (cp_convert_to_pointer): Fix base conversion of pm's.
9275
9276	* pt.c (type_unification_real): Change __null to type void* with
9277	a warning.
9278
9279Sun Dec 14 20:38:35 1997  Mark Mitchell  <mmitchell@usa.net>
9280
9281	* call.c (implicit_conversion): Don't call
9282	build_user_type_conversion_1 with a NULL expr, since it will
9283	crash.
9284
9285	* pt.c (unify): Don't try to unify array bounds if either array is
9286	unbounded.
9287
9288Fri Dec 12 16:09:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
9289
9290	* errfn.c (cp_pedwarn, cp_pedwarn_at, cp_error_at, cp_warning_at):
9291	Replace extern decls with casts.
9292
9293	* decl.c (expand_start_early_try_stmts): Don't mess with a sequence.
9294	Update last_parm_cleanup_insn.
9295	(store_after_parms): Remove.
9296	* cp-tree.h: Adjust.
9297
9298Thu Dec 11 22:18:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
9299
9300	* decl2.c (comdat_linkage): Also set DECL_COMDAT.
9301	(finish_file): Check DECL_COMDAT instead of weak|one_only.
9302	(import_export_vtable): Use make_decl_one_only instead of
9303	comdat_linkage for win32 tweak.
9304	(import_export_decl): Likewise.
9305	* pt.c (mark_decl_instantiated): Likewise.
9306
9307	* decl2.c (finish_file): Lose handling of templates in pending_statics.
9308
9309Thu Dec 11 21:12:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
9310
9311	* decl2.c (finish_file): Lose call to expand_builtin_throw.
9312	* except.c (expand_builtin_throw): Remove.
9313	* cp-tree.h: Remove ptr_ptr_type_node.
9314	* decl.c: Likewise.
9315
9316Thu Dec 11 20:43:33 1997  Teemu Torma  <tot@trema.com>
9317
9318	* decl.c (ptr_ptr_type_node): Define.
9319	(init_decl_processing): Initialize it.
9320	* cp-tree.h: Declare it.
9321	* exception.cc (__cp_exception_info): Use __get_eh_info.
9322	(__cp_push_exception): Likewise.
9323	(__cp_pop_exception): Likewise.
9324
9325	From Scott Snyder <snyder@d0sgif.fnal.gov>:
9326	* except.c (expand_builtin_throw): Use get_saved_pc_ref instead of
9327	saved_pc.
9328	(init_exception_processing): Removed saved_pc initialization.
9329
9330Wed Dec 10 11:04:45 1997  Jason Merrill  <jason@yorick.cygnus.com>
9331
9332	* pt.c (instantiate_decl): Defer all templates but inline functions.
9333
9334Mon Dec  8 23:17:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
9335
9336	* init.c (expand_vec_init): Don't fold a list of parameters.
9337
9338	* decl.c (copy_args_p): Handle copy elision for types with virtual
9339	bases.
9340	* call.c (build_over_call): Likewise.
9341
9342Sun Dec  7 22:38:12 1997  Mark Mitchell  <mmitchell@usa.net>
9343
9344	* pt.c (lookup_template_function): Copy the template arguments,
9345	not just the list containing them, to the permanent obstack.
9346
9347Sun Dec  7 15:53:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
9348
9349	* except.c (expand_start_catch_block): suspend_momentary for the
9350	terminate handler.
9351
9352	* error.c (dump_decl): Handle LOOKUP_EXPR.
9353
9354Sun Dec  7 15:45:07 1997  Mark Mitchell  <mmitchell@usa.net>
9355
9356	* rtti.c (build_dynamic_cast): Copy the cast-to type to the
9357	permanent obstack if we are processing a template decl.
9358	* typeck.c (build_static_cast): Likewise.
9359	(build_const_cast): Likewise.
9360	(build_reinterpret_cast): Likewise.
9361
9362	* pt.c (coerce_template_parms): Coerce some expressions, even
9363	when processing_template_decl.
9364
9365Sun Dec  7 01:46:33 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
9366
9367	* typeck.c (build_binary_op_nodefault, pointer_diff): Symmetric
9368	handling of pointer difference expressions.
9369
9370	* typeck.c (comp_target_types): Comparison of function/method types
9371	is independent of nptrs.
9372
9373Sun Dec  7 01:40:27 1997  Mark Mitchell  <mmitchell@usa.net>
9374
9375	* pt.c (tsubst): Avoid creating pointer to reference and
9376	reference to reference types.
9377
9378Sat Dec  6 01:29:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
9379
9380	* parse.y (do_id): New nonterminal.
9381	(template_id): Use it.
9382
9383Fri Dec  5 01:17:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
9384
9385	* parse.y (template_id): do_identifier for PFUNCNAMEs, too.
9386	* spew.c (yylex): Don't do_identifier here.
9387	* decl2.c (build_expr_from_tree): Revert last change.
9388
9389	* decl2.c (build_expr_from_tree): Expand the name for a method call.
9390	* parse.y (object_template_id): Don't try to take the DECL_NAME.
9391
9392Wed Dec  3 20:02:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
9393
9394	* init.c (build_new): Use a TARGET_EXPR instead of SAVE_EXPR for
9395	alloc_expr.
9396	* call.c (build_op_delete_call): Adjust.
9397
9398	* except.c (expand_end_catch_block): Lose rethrow region.
9399	(expand_start_catch_block): Likewise.
9400	(expand_end_catch_block): Don't expand_leftover_cleanups.
9401
9402Wed Dec  3 13:24:04 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
9403
9404	* pt.c (tsubst): Remove tree_cons call (places redundant info into
9405	DECL_TEMPLATE_INSTANTIATION).
9406
9407Wed Dec  3 11:44:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
9408
9409	* tree.c (is_overloaded_fn): Handle getting a fn template.
9410	(really_overloaded_fn): Likewise.
9411	* error.c (dump_decl): Handle TEMPLATE_ID_EXPRs better.
9412	* pt.c (check_explicit_specialization): Tweak.
9413	(determine_explicit_specialization): Tweak.
9414
9415	* tree.c, cp-tree.h (get_target_expr): New fn.
9416
9417Wed Dec  3 08:47:27 1997  Paul Eggert  <eggert@twinsun.com>
9418
9419	* pt.c (check_explicit_specialization): Fix misspelling in
9420	diagnostic: `preceeded'.
9421	* typeck.c (get_delta_difference): Fix misspelling in diagnostic:
9422	`conversiona'.
9423
94241997-12-02  Mark Mitchell  <mmitchell@usa.net>
9425
9426	* pt.c (determine_explicit_specialization): Avoid an internal
9427	error for bad specializations.
9428
9429	* method.c (build_overload_value): Handle SCOPE_REF.
9430
9431Tue Dec  2 19:18:50 1997  Mike Stump  <mrs@wrs.com>
9432
9433	* class.c (prepare_fresh_vtable): Enable even more complex MI
9434	vtable names.
9435
9436Tue Dec  2 01:37:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
9437
9438	* exception.cc (__check_eh_spec): Optimize a bit.
9439
9440	* exception.cc (__cp_pop_exception): Lose handler arg.
9441	* except.c (do_pop_exception): Likewise.
9442	(push_eh_cleanup): Let the cleanup mechanism supply the handler.
9443	(expand_end_catch_block): Likewise.
9444
9445Fri Nov 28 01:58:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
9446
9447	* pt.c (check_explicit_specialization): Complain about using a
9448	template-id for a non-specialization.
9449
9450Fri Nov 28 12:35:19 1997  Scott Christley  <scottc@net-community.com>
9451
9452	* repo.c: Prototype rindex only if needed.
9453	* xref.c: Likewise.
9454
9455Fri Nov 28 01:56:35 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
9456
9457	* error.c (dump_decl): Handle TEMPLATE_ID_EXPR.
9458
9459Thu Nov 27 00:59:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
9460
9461	* typeck.c (build_const_cast): Handle references here instead of
9462	handing off to convert_to_reference.
9463
9464	* except.c: Lose Unexpected, SetTerminate, SetUnexpected,
9465	TerminateFunctionCall.
9466	(init_exception_processing): Likewise.  Terminate et al are now
9467	the fns, not ADDR_EXPRs.
9468	(various): Lose redundant assemble_external calls.
9469	(do_unwind): s/BuiltinReturnAddress/builtin_return_address_fndecl/.
9470
9471	* cp-tree.h (struct lang_decl_flags): Add comdat.
9472	(DECL_COMDAT): New macro.
9473	* decl.c (duplicate_decls): Propagate it.
9474	(cp_finish_decl): Handle it.
9475	* decl2.c (import_export_decl): Just set DECL_COMDAT on VAR_DECLs.
9476
9477	* class.c: Remove static pending_hard_virtuals.
9478	(add_virtual_function): Take pointers to pending_virtuals
9479	and pending_hard_virtuals.
9480	(finish_struct_1): Pass them.  Declare pending_hard_virtuals.
9481
9482Wed Nov 26 20:28:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
9483
9484	* decl2.c (import_export_vtable): If we support one_only but not
9485	weak symbols, mark instantiated template vtables one_only.
9486	(import_export_decl): Likewise for tinfo functions.
9487	(finish_vtable_vardecl): Also write out vtables from explicitly
9488	instantiated template classes.
9489	* pt.c (mark_class_instantiated): Revert last change.
9490
9491	* except.c (expand_throw): Call mark_used on the destructor.
9492
9493Wed Nov 26 15:13:48 1997  Jeffrey A Law  (law@cygnus.com)
9494
9495	* lex.c (lang_init): Enable flag_exceptions by default if no
9496	command line switch was specified.
9497
94981997-11-26  Mark Mitchell  <mmitchell@usa.net>
9499
9500	* pt.c (unify): Handle `void' template parameters in
9501	specializations.
9502
9503Wed Nov 26 01:11:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
9504
9505	* rtti.c (build_dynamic_cast): Handle template case here.
9506	(build_dynamic_cast_1): Not here.
9507
9508	* typeck2.c (digest_init): Make copies where appropriate.
9509
9510	* decl2.c (delete_sanity): resolve_offset_ref.
9511
9512	* except.c: Call terminate without caching so many bits.
9513
9514	* except.c (expand_start_catch_block): Fix catching a reference
9515	to pointer.
9516
9517Tue Nov 25 11:28:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
9518
9519	* init.c (build_new): Copy size to the saveable obstack.
9520
9521	* init.c (build_new): Stick a CLEANUP_POINT_EXPR inside the
9522	TRY_CATCH_EXPR for now.
9523
9524Mon Nov 24 12:15:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
9525
9526	* typeck.c (mark_addressable): Don't assume a FUNCTION_DECL
9527	has DECL_LANG_SPECIFIC.
9528
9529	* exception.cc (struct cp_eh_info): Add handlers field.
9530	(__cp_push_exception): Initialize it.
9531	(__cp_pop_exception): Decrement it.  Don't pop unless it's 0.
9532	(__throw_bad_exception): Remove.
9533	* except.c (call_eh_info): Add handlers field.
9534	(get_eh_handlers): New fn.
9535	(push_eh_cleanup): Increment handlers.
9536
9537Fri Nov 21 12:22:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
9538
9539	* except.c (expand_start_eh_spec): Use the try/catch code.
9540	(expand_end_eh_spec): Likewise.  Call __check_eh_spec instead of
9541	doing everything inline.
9542	(init_exception_processing): throw_type_match now takes
9543	const void pointers.
9544	* exception.cc (__check_eh_spec): New fn.
9545	* inc/exception: Neither terminate nor unexpected return.
9546	* decl.c: Make const_ptr_type_node public.
9547	* tinfo2.cc (__throw_type_match_rtti): Take the typeinfos constly.
9548
9549	* except.c (expand_start_catch_block): We only need the rethrow
9550	region for non-sjlj exceptions.
9551	(expand_end_catch_block): Likewise.  Use outer_context_label_stack.
9552
9553Thu Nov 20 14:40:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
9554
9555	* Make-lang.in (CXX_LIB2FUNCS): Add new op new and op delete objs.
9556	(various.o): Likewise.
9557	* inc/new: Add placement deletes.  Add throw specs for default new.
9558	* new.cc (set_new_handler): Move here from libgcc2.
9559	* new1.cc (new (nothrow)): Catch a bad_alloc thrown from the handler.
9560	(new): Move from libgcc2.  Throw bad_alloc.
9561	* new2.cc: Move the rest of the op news and op deletes from libgcc2.
9562	* decl.c (init_decl_processing): Update exception specs on new and
9563	delete.
9564
9565	* method.c (build_decl_overload_real): Don't mess with global
9566	placement delete.
9567
9568	* init.c (build_new): Check for null throw spec, not nothrow_t.
9569
9570	* decl.c (duplicate_decls): Don't complain about different exceptions
9571	from an internal declaration.
9572
9573	* call.c (build_op_delete_call): Fix check for member fns again.
9574
9575	* decl2.c (import_export_decl): Interface hackery affects
9576	virtual synthesized methods.
9577
9578Wed Nov 19 18:24:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
9579
9580	* decl.c (start_decl): Don't just complain about a mismatched
9581	scope, fix it.
9582
9583	* decl.c (make_implicit_typename): Handle case where t is not
9584	actually from context.
9585	* tree.c (get_type_decl): Lose identifier case.
9586	* spew.c (yylex): Lose useless call to identifier_typedecl_value.
9587	* parse.y (nonnested_type): Just use lookup_name.
9588	(complex_type_name): Just use IDENTIFIER_GLOBAL_VALUE.
9589
9590Wed Nov 19 11:45:07 1997  Michael Tiemann  <tiemann@axon.cygnus.com>
9591
9592	* error.c (dump_function_name): Test DECL_LANG_SPECIFIC in case
9593	T was built in C language context (for example, by
9594	output_func_start_profiler).
9595
9596Wed Nov 19 10:39:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
9597
9598	* decl.c (make_implicit_typename): New fn.
9599	(lookup_name_real): Use it.  Use current_class_type as the context.
9600
9601Mon Nov 17 23:42:03 1997  Bruno Haible  <haible@ilog.fr>
9602
9603	* pt.c (do_poplevel): Don't prohibit jumps into this contour.
9604
9605Mon Nov 17 02:01:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
9606
9607	* friend.c (do_friend): Warn about non-template friends in templates.
9608
9609	* call.c (build_op_delete_call): Fix handling of inherited delete.
9610
9611	* search.c (dfs_record_inheritance): Ignore template type parms.
9612
9613Sat Nov 15 00:30:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
9614
9615	* call.c (build_new_op): Fix copy error.
9616	(build_op_new_call): New fn.
9617	(build_op_delete_call): New fn.
9618	* cp-tree.h: Declare them.
9619	* init.c (build_new): Use them.  Support placement delete.
9620	(build_x_delete): Use build_op_delete_call.
9621	(build_delete): Likewise.
9622	* decl2.c (delete_sanity): Likewise.
9623	(coerce_delete_type): Don't complain about placement delete.
9624
9625Thu Nov 13 01:52:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
9626
9627	* call.c (build_new_function_call): Remove unused 'obj' parm.
9628	* cp-tree.h, typeck.c: Adjust.
9629
9630	* init.c (build_new): Make the cleanup last longer.
9631	(expand_vec_init): Call do_pending_stack_adjust.
9632
9633Wed Nov 12 11:04:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
9634
9635	* pt.c (do_type_instantiation): Fix typo.
9636	(mark_class_instantiated): If we support one_only but not weak
9637	symbols, don't mark this as known.
9638
9639	* init.c (build_new): Handle vec delete in EH cleanup.
9640
9641Wed Nov 12 08:11:55 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
9642
9643	* call.c (build_method_call): Call complete_type before checking
9644	for destructor.
9645
9646Sun Nov  9 01:29:55 1997  Jim Wilson  (wilson@cygnus.com)
9647
9648	* decl.c (add_block_current_level): Delete.
9649	* init.c (build_vec_delete_1): Delete build_block and
9650	add_block_current_level calls.
9651
9652Wed Nov 12 00:48:16 1997  Jason Merrill  <jason@yorick.cygnus.com>
9653
9654	* init.c (build_new): Handle freeing allocated memory when the
9655	constructor throws.
9656
9657	* call.c (build_new_method_call): Fix flags arg.
9658
9659	* pt.c (do_type_instantiation): Don't try to instantiate
9660	member templates.
9661	(mark_decl_instantiated): If we support one_only but not
9662	weak symbols, mark this one_only.
9663	* decl2.c (import_export_vtable): Don't defer handling of vtables
9664	if MULTIPLE_SYMBOL_SPACES.
9665
9666Tue Nov 11 12:02:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
9667
9668	* except.c (expand_end_catch_block): Lose call to __sjpopnthrow.
9669
9670Tue Nov 11 02:53:44 1997  Jason Merrill  <jason@lasher.cygnus.com>
9671
9672	* except.c (do_pop_exception): Return a value.
9673
9674Mon Nov 10 20:25:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
9675
9676	* call.c (build_new_method_call): Handle getting a
9677	TEMPLATE_ID_EXPR around a TEMPLATE_DECL.  Don't look for a field
9678	if we got template parms.
9679	* typeck.c (build_x_function_call): Remember the TEMPLATE_ID_EXPR,
9680	not just the args.
9681	* decl2.c (build_expr_from_tree): Tweak last change.
9682	* pt.c (tsubst_copy): Use get_first_fn instead of TREE_VALUE.
9683	(maybe_fold_nontype_arg): Split out from tsubst_copy.
9684	* tree.c (get_first_fn): Just return a TEMPLATE_ID_EXPR.
9685
9686Mon Nov 10 20:08:38 1997  Kriang Lerdsuwanakij  <lerdsuwa@scf-fs.usc.edu>
9687
9688	* pt.c (tsubst_copy): Handle explicit template arguments in
9689	function calls.
9690	* typeck.c (build_x_function_call): Likewise.
9691	* decl2.c (build_expr_from_tree): Lookup function name if it
9692	hasn't been done.
9693
9694	* pt.c (tsubst): Instantiate template functions properly when
9695	template parameter does not appear in function arguments and return
9696	type.
9697	(comp_template_args): Handle member templates required by tsubst.
9698
9699Mon Nov 10 20:08:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
9700
9701	* decl.c (grokdeclarator): Tweak conditions for pedwarn in
9702	previous change.
9703
9704Mon Nov 10 20:08:29 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
9705
9706	* pt.c (coerce_template_parms): Tweak error message.
9707
9708	* decl.c (grokdeclarator): If -Wreturn-type, warn everytime a
9709	return type defaults to `int', even if there are storage-class
9710	specifiers.
9711
9712Mon Nov 10 03:04:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
9713
9714	Complete nested exception support.
9715	* except.c (do_pop_exception): Split out...
9716	(push_eh_cleanup): From here.  Handle the EH region by hand.
9717	(expand_start_catch_block): Add a new level for the catch parm.
9718	Move the rethrow region outside the two cleanup regions.
9719	Protect the initializer for the catch parm with terminate.
9720	(expand_end_catch_block): Likewise.  End the region for the eh_cleanup.
9721	* exception.cc (__cp_pop_exception): Now takes two parms.  Handle
9722	popping off the middle of the stack.
9723	* tree.c (lvalue_p, real_lvalue_p): Handle TRY_CATCH_EXPR,
9724	WITH_CLEANUP_EXPR, and UNSAVE_EXPR.
9725	(build_cplus_new): Only wrap CALL_EXPRs.
9726	* init.c (expand_default_init): Handle a TRY_CATCH_EXPR around
9727	the constructor call.
9728
9729Sun Nov  9 18:00:26 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9730
9731	* Make-lang.in (c++.distdir): Make inc subdirectory.
9732
9733Fri Nov  7 11:57:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
9734
9735	* decl2.c (finish_file): Put back some code.
9736
9737Thu Nov  6 11:28:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
9738
9739	* decl2.c (finish_file): Remove redundant code.
9740	* method.c (emit_thunk): Don't let the backend defer generic thunks.
9741
9742Wed Nov  5 23:52:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
9743
9744	* except.c (call_eh_info): Split out...
9745	(push_eh_info): From here.
9746	(expand_builtin_throw): Use it.
9747	(expand_start_catch_block): Move region start back.
9748
9749Tue Nov  4 13:45:10 1997  Doug Evans  <devans@canuck.cygnus.com>
9750
9751	* lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
9752	(real_yylex): Record wide strings using target endianness, not host.
9753
97541997-11-03  Brendan Kehoe  <brendan@lisa.cygnus.com>
9755
9756	* repo.c (rindex): Add decl unconditionally.
9757	(get_base_filename, open_repo_file): Don't cast rindex.
9758	* xref.c (rindex): Add decl unconditionally.
9759	(index): Remove unused decl.
9760	(open_xref_file): Don't cast rindex.
9761
9762Sun Nov  2 15:04:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
9763
9764	* class.c (build_vbase_path): Propagate the result type properly.
9765
97661997-11-01  Brendan Kehoe  <brendan@lisa.cygnus.com>
9767
9768	* except.c (expand_builtin_throw) [!DWARF2_UNWIND_INFO]: Replace
9769	remaining use of saved_throw_type with a call to get_eh_type.
9770
97711997-10-31  Brendan Kehoe  <brendan@lisa.cygnus.com>
9772
9773	* lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
9774	(file_name_nondirectory): New function, doing the same as the macro.
9775	(set_typedecl_interface_info): Use it instead of the macro.
9776	(check_newline): Likewise.
9777	(handle_cp_pragma): Likewise.
9778
9779	* repo.c (get_base_filename): Cast result of rindex to char*.
9780	(open_repo_file): Likewise.
9781	* xref.c (open_xref_file): Likewise.
9782	* error.c (dump_char): Make its arg int, not char.
9783
9784	* except.c (push_eh_info): Pass the number of fields - 1 down, not
9785	the exact number of fields.
9786
9787Fri Oct 31 01:47:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
9788
9789	Support for nested exceptions.
9790	* tinfo2.cc (__is_pointer): New fn.
9791	* exception.cc (struct cp_eh_info): Define.
9792	(__cp_exception_info, __uncatch_exception): New fns.
9793	(__cp_push_exception, __cp_pop_exception): New fns.
9794	* except.c: Lose saved_throw_{type,value,cleanup,in_catch}.
9795	Lose empty_fndecl.
9796	(init_exception_processing): Likewise.  __eh_pc is now external.
9797	(push_eh_info): New fn.
9798	(get_eh_{info,value,type,caught}): New fns.
9799	(push_eh_cleanup): Just call __cp_pop_exception.
9800	(expand_start_catch_block): Use push_eh_info.  Start the eh region
9801	sooner.
9802	(expand_end_eh_spec): Use push_eh_info.
9803	(expand_throw): Call __cp_push_exception to set up the exception info.
9804	Just pass the destructor or 0 as the cleanup.  Call __uncatch_exception
9805	when we rethrow.
9806	(expand_builtin_throw): Don't refer to empty_fndecl.
9807
9808Thu Oct 23 02:01:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
9809
9810	* pt.c (instantiate_decl): SET_DECL_IMPLICIT_INSTANTIATION on new decl.
9811
98121997-10-22  Brendan Kehoe  <brendan@cygnus.com>
9813
9814	* method.c (build_template_parm_names, build_decl_overload_real):
9815	Add static to definitions.
9816	* pt.c (add_to_template_args, note_template_header,
9817	processing_explicit_specialization, type_unification_real): Likewise.
9818	({determine,check}_explicit_specialization): Use a single string for
9819	error messages.
9820
9821Mon Oct 20 12:06:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
9822
9823	* except.c (expand_exception_blocks): Call do_pending_stack_adjust.
9824	(expand_end_catch_block): Likewise.
9825	(expand_end_eh_spec): Likewise.
9826
9827Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>
9828
9829	* decl.c (duplicate_decls): Handle template specializations
9830	correctly.
9831	* error.c (dump_function_name): Fix printing of specializations of
9832	member functions that are not member templates.
9833	* cp-tree.h (processing_specialization): Make global.
9834	* pt.c (processing_specialization): Likewise.
9835	* lex.c (cons_up_default_function): Save and restore
9836	processing_specialization to avoid confusion.
9837
9838Mon Oct 20 10:52:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
9839
9840	* decl.c (init_decl_processing): Give null_node unknown* type.
9841	* typeck.c (comp_target_types): Handle UNKNOWN_TYPE.
9842	(common_type): Likewise.
9843	* error.c (args_as_string): Recognize null_node.
9844
9845Sun Oct 19 09:13:01 1997  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
9846
9847	* typeck.c (rationalize_conditional_expr): Handle {MIN,MAX}_EXPR.
9848	(unary_complex_lvalue): Call it for {MIN,MAX}_EXPR.
9849
9850	* decl.c (init_decl_processing): Call using_eh_for_cleanups.
9851
9852	* Make-lang.in (g++): Include prefix.o.
9853
9854Thu Oct 16 15:31:09 1997  Judy Goldberg  <judygold@sanwafp.com>
9855
9856	* pt.c (determine_explicit_specialization): Initialize "dummy"
9857	to keep Purify quiet.
9858
9859Thu Oct 16 00:14:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
9860
9861	* method.c (build_overload_value): Handle TEMPLATE_CONST_PARMs here.
9862	(build_overload_int): Not here.
9863
9864Wed Oct 15 00:35:28 1997  Mike Stump  <mrs@wrs.com>
9865
9866	* class.c (build_type_pathname): Remove.
9867	(prepare_fresh_vtable): Fix problem with complex MI vtable names.
9868
98691997-10-14  Brendan Kehoe  <brendan@lisa.cygnus.com>
9870
9871	* parse.y (unary_expr): Give a pedwarn if someone tries to use the
9872	&&label GNU extension.
9873
9874Tue Oct 14 12:01:00 1997  Mark Mitchell  <mmitchell@usa.net>
9875
9876	* decl.c (pushtag): Unset DECL_ASSEMBLER_NAME before setting it,
9877	so as to avoid incorrect manglings.
9878	* method.c (build_decl_overload_real): Don't mangle return types
9879	for constructors.
9880
9881Tue Oct 14 11:46:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
9882
9883	* cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
9884	scratch_tree_cons): Define as macros for now.
9885	* call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
9886	lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
9887	typeck2.c: Use them and the expression_obstack variants.
9888
9889Mon Oct 13 17:41:26 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
9890
9891	* decl.c (store_return_init): Allow classes with explicit ctors to
9892	be used with the named return values extension.
9893
9894Fri Oct 10 12:21:11 1997  Jason Merrill  <jason@yorick.cygnus.com>
9895
9896	* pt.c (instantiate_decl): Fix previous change.
9897
9898Thu Oct  9 12:08:21 1997  Jason Merrill  <jason@yorick.cygnus.com>
9899
9900	* pt.c (tsubst): Fix thinko.
9901	(instantiate_decl): Really use the original template.
9902
9903	* call.c (build_new_method_call): Use simple constructor_name for
9904	error messages.
9905
9906Wed Oct  8 22:44:42 1997  Jeffrey A Law  <law@cygnus.com>
9907
9908	* method.c (build_underscore_int): Don't use ANSI specific
9909	features.
9910
9911Wed Oct  8 00:18:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
9912
9913	* decl2.c (finish_prevtable_vardecl): Check DECL_REALLY_EXTERN
9914	for our key method; it might have been inlined by -O3.
9915
9916Tue Oct  7 23:00:12 1997  Mark Mitchell  <mmitchell@usa.net>
9917
9918	* decl.c (make_typename_type): Do not try to call lookup_field for
9919	non-aggregate types.
9920
9921Tue Oct  7 22:52:10 1997  Jason Merrill  <jason@yorick.cygnus.com>
9922
9923	* typeck.c (build_reinterpret_cast): Tweak.
9924
9925Tue Oct  7 22:45:31 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
9926
9927	* typeck.c (build_reinterpret_cast): Converting a void pointer
9928	to function pointer with a reinterpret_cast produces a warning
9929	if -pedantic is issued.
9930
9931Tue Oct  7 22:43:43 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
9932
9933	* typeck.c (c_expand_return): Don't warn about returning a
9934	reference-type variable as a reference.
9935
9936Tue Oct  7 21:11:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
9937
9938	* method.c (build_static_name): Fix typo.
9939
99401997-10-07  Brendan Kehoe  <brendan@lisa.cygnus.com>
9941
9942	* decl.c (duplicate_decls): Make sure DECL_LANG_SPECIFIC is set on
9943	OLDDECL before we try to do DECL_USE_TEMPLATE.
9944
9945Tue Oct  7 00:48:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
9946
9947	* decl.c (duplicate_decls): Don't warn about template instances.
9948
9949	* typeck.c (mark_addressable): Lose ancient code that unsets
9950	DECL_EXTERNAL.
9951
9952	* pt.c (do_decl_instantiation): Lose support for instantiating
9953	non-templates.
9954
9955	* call.c (build_new_function_call): Fix handling of null explicit
9956	template args.
9957	(build_new_method_call): Likewise.
9958
9959Mon Oct  6 23:44:34 1997  Mark Mitchell  <mmitchell@usa.net>
9960
9961	* method.c (build_underscore_int): Fix typo.
9962
99631997-10-06  Brendan Kehoe  <brendan@lisa.cygnus.com>
9964
9965	* tree.c (print_lang_statistics): #if 0 call to
9966	print_inline_obstack_statistics until its definition is checked in.
9967
9968Mon Oct  6 09:27:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
9969
9970	* decl2.c (finish_file): Move dump_tree_statistics to end.
9971
9972	* pt.c (instantiate_decl): Look for the original template.
9973	(tsubst): Set DECL_IMPLICIT_INSTANTIATION on partial instantiations
9974	of member templates.
9975
9976Wed Oct  1 08:41:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
9977
9978	* Makefile.in (g++FAQ.*): New rules.
9979	(CONFLICTS): Update.
9980	* g++FAQ.texi: Moved from libg++.
9981
9982	* parse.y (PFUNCNAME): Only specify the type once.
9983
99841997-10-01  Brendan Kehoe  <brendan@lasher.cygnus.com>
9985
9986	* lex.c (real_yylex): Clean up the code to fully behave the way
9987	the c-lex.c parser does for complex and real numbers.
9988
9989Tue Sep 30 08:51:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
9990
9991	* method.c (build_decl_overload_real): Reformat.
9992
9993Tue Sep 30 00:18:26 1997  Jason Merrill  <jason@yorick.cygnus.com>
9994
9995	* method.c (synthesize_method): If at_eof, determine our linkage.
9996
99971997-09-29  Paul Eggert  <eggert@twinsun.com>
9998
9999	* lex.c (real_yylex): Treat `$' just like `_', except issue a
10000	diagnostic if !dollars_in_ident or if pedantic.
10001
10002	* lang-specs.h (@c++): -ansi no longer implies -$.
10003
10004	* decl2.c (lang_decode_option):
10005	-traditional and -ansi now do not mess with
10006	dollars_in_ident.
10007
10008Mon Sep 29 19:57:51 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>
10009
10010	* Makefile.in (parse.o, decl.o): Also depend on
10011	$(srcdir)/../except.h $(srcdir)/../output.h.
10012	(decl2.o): Also depend on $(srcdir)/../expr.h ../insn-codes.h
10013	$(srcdir)/../except.h $(srcdir)/../output.h.
10014	(typeck.o, init.o): Also depend on $(srcdir)/../expr.h
10015	../insn-codes.h.
10016
10017	* call.c, cp-tree.h, decl.c, tree.c: Finish prototyping.
10018
10019	* expr.c (cplus_expand_expr): Make it static.
10020
10021	* decl2.c, init.c, typeck.c: Include "expr.h".
10022	(expand_expr): Use proper values when calling the function.
10023
10024Mon Sep 29 11:05:54 1997  Alexandre Oliva  <oliva@dcc.unicamp.br>
10025
10026	* lang-options.h: New -Wold-style-cast flag.
10027	* cp-tree.h (warn_old_style_cast): New variable.
10028	* decl2.c (warn_old_style_cast): Likewise.
10029	(lang_decode_option): Support -Wold-style-cast.
10030	(reparse_absdcl_as_casts): Produce old-style-cast warning.
10031
10032Mon Sep 29 09:20:53 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
10033
10034	* decl.c (cp_finish_decl): Allow expand_aggr_init to set
10035	TREE_USED, reset value based on already_used.
10036
10037	* init.c (expand_member_init): Revert change.
10038
10039Mon Sep 29 08:57:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
10040
10041	* cp-tree.h, decl.c, decl2.c, pt.c:
10042	Lose DECL_C_STATIC and DECL_PUBLIC.  Don't pretend statics are public.
10043
10044	* decl2.c (lang_decode_option): Add missing ;.
10045
10046Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
10047
10048	* friend.c (do_friend): Disable injection for all template-derived
10049	decls.
10050	* decl2.c (lang_decode_option): Handle -fguiding-decls.
10051	* parse.y (notype_template_declarator): New nonterminal.
10052	(direct_notype_declarator): Use it.
10053	(complex_direct_notype_declarator): Likewise.
10054	(object_template_id): Accept any kind of identifier after TEMPLATE.
10055	(notype_qualified_id): Don't add template declarators here.
10056
10057Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>
10058
10059	* call.c (add_template_candidate): Add explicit_targs parameter.
10060	(build_scoped_method_call): Use it.
10061	(build_overload_call_real): Likewise.
10062	(build_user_type_conversion_1): Likewise.
10063	(build_new_function_call): Likewise.
10064	(build_object_call): Likewise.
10065	(build_new_op): Likewise.
10066	(build_new_method_call): Likewise.
10067	(build_new_function_call): Handle TEMPLATE_ID_EXPR.
10068	(build_new_method_call): Likewise.
10069
10070	* class.c (finish_struct_methods): Add specialization pass to
10071	determine which methods were specializing which other methods.
10072	(instantiate_type): Handle TEMPLATE_ID_EXPR.
10073
10074	* cp-tree.def (TEMPLATE_ID_EXPR): New tree code.
10075
10076	* cp-tree.h (name_mangling_version): New variable.
10077	(flag_guiding_decls): Likewise.
10078	(build_template_decl_overload): New function.
10079	(begin_specialization): Likewise.
10080	(reset_specialization): Likewise.
10081	(end_specialization): Likewise.
10082	(determine_explicit_specialization): Likewise.
10083	(check_explicit_specialization): Likewise.
10084	(lookup_template_function): Likewise.
10085	(fn_type_unification): Add explicit_targs parameter.
10086	(type_unification): Likewise.
10087
10088	* decl.c (duplicate_decls): Add smarts for explicit
10089	specializations.
10090	(grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
10091	specializations.
10092	(grokfndecl): Call check_explicit_specialization.
10093
10094	* decl2.c (lang_decode_option): Handle -fname-mangling-version.
10095	(build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
10096	(check_classfn): Handle specializations.
10097
10098	* error.c (dump_function_name): Print specialization arguments.
10099
10100	* friend.c (do_friend): Don't call pushdecl for template
10101	instantiations.
10102
10103	* init.c (build_member_call): Handle TEMPLATE_ID_EXPR.
10104
10105	* lang-options.h: Add -fname-mangling-version, -fguiding-decls,
10106	and -fno-guiding-decls.
10107
10108	* lex.c (identifier_type): Return PFUNCNAME for template function
10109	names.
10110
10111	* method.c (build_decl_overload_real): New function.
10112	(build_template_parm_names): New function.
10113	(build_overload_identifier): Use it.
10114	(build_underscore_int): New function.
10115	(build_overload_int): Use it.  Add levels for template
10116	parameters.
10117	(build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
10118	(build_overload_nested_names): Handle template type parameters.
10119	(build_template_decl_overload): New function.
10120
10121	* parse.y (YYSTYPE): New ntype member.
10122	(nested_name_specifier): Use it.
10123	(nested_name_specifier_1): Likewise.
10124	(PFUNCNAME): New token.
10125	(template_id, object_template_id): New non-terminals.
10126	(template_parm_list): Note specializations.
10127	(template_def): Likewise.
10128	(structsp): Likewise.
10129	(fn.def2): Handle member template specializations.
10130	(component_decl_1): Likewise.
10131	(direct_notype_declarator): Handle template-ids.
10132	(component_decl_1): Likewise.
10133	(direct_notype_declarator): Handle template-ids.
10134	(primary): Handle TEMPLATE_ID_EXPR, and template-ids.
10135
10136	* pt.c (processing_specializations): New variable.
10137	(template_header_count): Likewise.
10138	(type_unification_real): New function.
10139	(processing_explicit_specialization): Likewise.
10140	(note_template_header): Likewise.
10141	(is_member_template): Handle specializations.
10142	(end_template_decl): Call reset_specialization.
10143	(push_template_decl): Handle member template specializations.
10144	(tsubst): Likewise.
10145	(tsubst_copy): Handle TEMPLATE_ID_EXPR.
10146	(instantiate_template): Handle specializations.
10147	(instantiate_decl): Likewise.
10148	(fn_type_unification): Handle explicit_targs.
10149	(type_unification): Likewise.  Allow incomplete unification
10150	without an error message, if allow_incomplete.
10151	(get_bindings): Use new calling sequence for fn_type_unification.
10152
10153	* spew.c (yylex): Handle PFUNCNAME.
10154
10155	* tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
10156	(really_overloaded_fn): Likewise.
10157	(get_first_fn): Handle function templates.
10158
10159	* typeck.c (build_x_function_call): Use really_overloaded_fn.
10160	Handle TEMPLATE_ID_EXPR.
10161	(build_x_unary_op): Likewise.
10162	(build_unary_op): Likewise.
10163	(mark_addressable): Templates whose address is taken are marked
10164	as used.
10165
101661997-09-25  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
10167
10168	* decl.c (init_decl_processing): Declare __builtin_constant_p as
10169	accepting any kind of type, not only int.
10170
10171Fri Sep 26 00:22:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
10172
10173	* search.c (get_matching_virtual): Notice virtual bases when sorrying
10174	about covariant returns.
10175
10176	* parse.y (member_init): Also imply typename here.  Remove ancient
10177	extension for initializing base members.
10178
10179Thu Sep 25 11:11:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
10180
10181	Handle multi-level typenames and implicit typename in base list.
10182	* parse.y (typename_sub{,[0-2]}): New rules.
10183	(structsp, rule TYPENAME_KEYWORD): Use typename_sub.
10184	(nonnested_type): New rule.
10185	(complete_type_name): Use it.
10186	(base_class.1): Use typename_sub and nonnested_type.
10187	(nested_name_specifier): Don't elide std:: here.
10188	* decl.c (make_typename_type): Handle getting a type for NAME.
10189	(lookup_name_real): Turn std:: into :: here.
10190
10191	Rvalue conversions were removed in London.
10192	* call.c (is_subseq): Don't consider lvalue transformations.
10193	(build_conv): LVALUE_CONV and RVALUE_CONV get IDENTITY_RANK.
10194	(joust): Re-enable ?: kludge.
10195
101961997-09-22  Brendan Kehoe  <brendan@lisa.cygnus.com>
10197
10198	* decl.c (start_function): Up warning of no return type to be a
10199	pedwarn.
10200
10201Mon Sep 22 14:15:34 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
10202
10203	* init.c (expand_member_init): Don't set TREE_USED.
10204	* decl.c (cp_finish_decl): Mark decls used if type has TREE_USED
10205	set,don't clear TREE_USED wholesale.
10206
10207Sat Sep 20 15:31:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
10208
10209	* call.c (build_over_call): Do require_complete_type before
10210	build_cplus_new.
10211
10212Thu Sep 18 16:47:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
10213
10214	* search.c (lookup_field): Call complete_type in all cases.
10215
10216	* decl.c (finish_function): Just warn about flowing off the end.
10217
10218Wed Sep 17 10:31:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
10219
10220	* decl.c (grokparms): Don't bash a permanent list node if we're
10221	in a function.
10222
102231997-09-17  Brendan Kehoe  <brendan@lisa.cygnus.com>
10224
10225	* Makefile.in (CONFLICTS): Fix s/r conflict count to 18.
10226
10227Tue Sep 16 14:06:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
10228
10229	* call.c (build_new_op): Give better error for syntactically
10230	correct, but semantically invalid, use of undeclared template.
10231
10232	* call.c (compare_qual): Handle pmfs.
10233
10234	* decl.c (store_parm_decls): last_parm_cleanup_insn is the insn
10235	after the exception spec.
10236
10237Mon Sep 15 11:52:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
10238
10239	* call.c (null_ptr_cst_p): Integer type, not integral type.
10240
10241	* call.c (joust): Disable warnings until they can be moved to the
10242	right place.
10243
10244Fri Sep 12 16:11:13 1997  Per Bothner  <bothner@cygnus.com>
10245
10246	* Makefile.in, config-lang.in:  Convert to autoconf.
10247
10248Thu Sep 11 17:14:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
10249
10250	* decl.c (lookup_name_real): Add implicit 'typename' to types from
10251	base classes.
10252
10253	* pt.c (most_specialized_class): Fix typo.
10254	(tsubst): Move constant folding to TREE_VEC case.
10255
10256Thu Sep 11 10:08:45 1997  Mark Mitchell  <mmitchell@usa.net>
10257
10258	* pt.c (do_poplevel): Don't warn about unused local variables
10259	while processing_template_decl since we don't always know whether
10260	or not they will need constructing/destructing.
10261
10262	* pt.c (uses_template_parms): Check the values of an enumeration
10263	type to make sure they don't depend on template parms.
10264
10265	* decl.c (make_typename_type): Don't lookup the field if the
10266	context uses template parms, even if we're not
10267	processing_template_decl at the moment.
10268
10269	* pt.c (coerce_template_parms): Avoid looking at the
10270	TYPE_LANG_DECL portion of a typename type, since there won't be
10271	one.
10272	(tsubst): Do constant folding as necessary to make sure that
10273	arguments passed to lookup_template_class really are constants.
10274
10275Wed Sep 10 11:21:55 1997  Jason Merrill  <jason@yorick.cygnus.com>
10276
10277	* except.c (expand_builtin_throw): #ifndef DWARF2_UNWIND_INFO.
10278	* decl2.c (finish_file): Only register exception tables if we
10279	need to.
10280
10281	* decl.c (init_decl_processing): Add __builtin_[fs]p.
10282
10283Tue Sep  9 19:49:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
10284
10285	* pt.c (unify): Just return 0 for a TYPENAME_TYPE.
10286
10287Tue Sep  9 17:57:25 1997  Mark Mitchell  <mmitchell@usa.net>
10288
10289	* error.c (dump_decl): Avoid crashing when presented with a
10290	uninitialized constant, as can occur with a template parameter.
10291	(dump_expr): Make sure that there are enough levels of
10292	current_template_parms before we start diving through them.
10293
102941997-09-09  Brendan Kehoe  <brendan@lisa.cygnus.com>
10295
10296	* typeck.c (build_indirect_ref): Heed FLAG_VOLATILE similar to
10297	c-typeck.c.
10298
10299Tue Sep  9 09:36:39 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
10300
10301	* except.c (expand_throw): Call build_delete for all
10302	exception types, not just objects with destructors.
10303
10304Mon Sep  8 02:33:20 1997  Jody Goldberg  <jodyg@idt.net>
10305
10306	* decl.c (current_local_enum): Remove static.
10307	* pt.c (tsubst_enum): Save and restore value of current_local_enum
10308	in case template is expanded in enum decl.
10309	(instantiate_class_template): Use new tsubst_enum signature.
10310	(tsubst_expr): Likewise.
10311
10312Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>
10313
10314	* pt.c (begin_member_template_processing): Take a function as
10315	argument, not a set of template arguments.  Use the template
10316	parameters, rather than the arguments.  Handle non-type parameters
10317	correctly.  Push a binding level for the parameters so that multiple
10318	member templates using the same parameter names can be declared.
10319	(end_member_template_processing): Pop the binding level.
10320	(push_template_decl): Mark member templates as static when
10321	appropriate.
10322
10323	* lex.c (do_pending_inlines): Pass the function, not its template
10324	arguments, to begin_member_template_processing.
10325	(process_next_inline): Likewise.
10326	(do_pending_defargs): Likewise.
10327
10328	* error.c (dump_expr): Obtain the correct declaration for a
10329	TEMPLATE_CONST_PARM.
10330
10331	* call.c (add_template_conv_candidate): New function.
10332	(build_object_call): Handle member templates, as done in the other
10333	build_ functions.
10334
10335Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>
10336
10337	* decl.c (replace_defag): Undo previous change.
10338	* lex.c (do_pending_defargs): Deal with member templates.
10339
10340	* pt.c (is_member_template): Avoid crashing when passed a
10341	non-function argument.
10342
10343Fri Sep  5 17:27:38 1997  Jason Merrill  <jason@yorick.cygnus.com>
10344
10345	* class.c (grow_method): Remove check for redeclaration.
10346
10347Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>
10348
10349	* cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
10350	(DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
10351	(PRIMARY_TEMPLATE_P): Use it.
10352	* call.c (build_overload_call_real): Use it.
10353	* class.c (instantiate_type): Likewise.
10354	* decl.c (decls_match): Likewise.
10355	* method.c (build_overload_identifier): Likewise.
10356	* pt.c (push_template_decl): Likewise.
10357	(classtype_mangled_name): Likewise.
10358	(lookup_template_class): Likewise.
10359
10360	* cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
10361	DECL_NTPARMS to conform to usage elsewhere.
10362	* call.c (add_template_candidate): Likewise.
10363	* class.c (instantiate_type): Likewise.
10364	* pt.c (instantiate_template): Likewise.
10365	(get_bindings): Likewise.
10366
10367	* class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
10368	is_member_template.
10369
10370	* pt.c (unify): Undo changes to allow multiple levels of template
10371	parameters.
10372	(type_unification): Likewise.
10373	(fn_type_unification): Likewise.
10374	(get_class_bindings): Likewise.
10375	* cp-tree.h (Likewise).
10376
10377	* decl.c (replace_defarg): Check that the type of the default
10378	parameter does not invlove a template type before complaining
10379	about the initialization.
10380
10381	* error.c (dump_expr): Deal with template constant parameters in
10382	member templates correctly.
10383
10384	* pt.c (is_member_template): Deal with class specializations
10385	correctly.
10386	(tsubst): Handle "partial instantiation" of member templates
10387	correctly.
10388
10389Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>
10390
10391	* pt.c (type_unification): Change calling sequence to allow for
10392	multiple levels of template parameters.
10393	(tsubst_expr): Likewise.
10394	(tsubst): Likewise.
10395	(tsubst_copy): Likewise.
10396	(instantiate_template): Likewise.
10397	(unify): Likewise.
10398	* call.c (build_overload_call_real): Use it.
10399	(add_builtin_candidate): Use it.
10400	(build_new_method_call): Use it.
10401	* class.c (instantiate_type): Use it.
10402	* decl.c (grokdeclarator): Use it.
10403	* decl2.c (finish_file): Use it.
10404	* method.c (build_overload_identifier): Use it.
10405
10406	* call.c (add_template_candidate):  Add additional parameter for
10407	the function return type.  Call fn_type_unification istead of
10408	type_unification.
10409	(build_user_type_conversion_1): Handle member templates.
10410	(build_new_function_call): Likewise.
10411	(build_new_op): Likewise.
10412	(build_new_method_call): Likewise.
10413
10414	* class.c (grow_method): Don't give an error message indicating
10415	that two member templates with the same name are ambiguous.
10416	(finish_struct): Treat member template functions just like member
10417	functions.
10418
10419	* cp-tree.h (check_member_template): Add declaration.
10420	(begin_member_template_processing): Likewise.
10421	(end_member_template_processing): Likewise.
10422	(fn_type_unification): Likewise.
10423	(is_member_template): Likewise.
10424	(tsubst): Change prototype.
10425	(tsubst_expr): Likewise.
10426	(tsubst_copy): Likewise.
10427	(instantiate_template): Likewise.
10428	(get_bindings): Likewise.
10429
10430	* decl.c (decls_match): Handle multiple levels of template
10431	parameters.
10432	(pushdecl): Handle template type params just like other type
10433	declarations.
10434	(push_class_level_binding): Return immediately if the
10435	class_binding_level is NULL.
10436	(grokfndecl): If check_classfn() returns a member_template, use
10437	the result of the template, not the template itself.
10438
10439	* decl2.c (check_member_template): New function.  Check to see
10440	that the entity declared to be a member template can be one.
10441	(check_classfn): Allow redeclaration of member template functions
10442	with different types; the new functions can be specializations or
10443	explicit instantiations.
10444
10445	* error.c (dump_decl): Handle multiple levels of template
10446	parameters.
10447	(dump_function_decl): Update to handle function templates.
10448
10449	* lex.c (do_pending_inlines): Set up template parameter context
10450	for member templates.
10451	(process_next_inline): Likewise.
10452
10453	* method.c (build_overload_identifier): Adjust for multiple levels
10454	of template parameters.
10455
10456	* parse.y (fn.def2): Add member templates.
10457	(component_decl_1): Likewise.
10458
10459	* pt.c (begin_member_template_processing): New function.
10460	(end_member_template_processing): Likewise.
10461	(is_member_template): Likewise.
10462	(fn_type_unification): Likewise.
10463	(current_template_parms): Return a vector of all the template
10464	parms, not just the innermost level of parms.
10465	(push_template_decl): Deal with the possibility of member
10466	templates.
10467	(lookup_template_class): Likewise.
10468	(uses_template_parms): Likewise.
10469	(tsubst): Modify processing to TEMPLATE_TYPE_PARM and
10470	TEMPLATE_CONST_PARM to deal with multiple levels of template
10471	arguments.   Add processing of TEMPLATE_DECL to produce new
10472	TEMPLATE_DECLs from old ones.
10473	(do_decl_instantiation): Handle member templates.
10474
10475	* search.c (lookup_fnfields_1): Handle member template conversion
10476	operators.
10477
10478	* tree.c (cp_tree_equal): Check the levels, as well as the
10479	indices, of TEMPLATE_CONST_PARMs.
10480
10481	* typeck.c (comptypes): Check the levels, as well as the indices,
10482	fo TEMPLATE_TYPE_PARMs.
10483	(build_x_function_call): Treat member templates like member
10484	functions.
10485
10486Wed Sep  3 11:09:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
10487
10488	* typeck.c (c_expand_return): Always convert_for_initialization
10489	before checking for returning a pointer to local.
10490
10491	* pt.c (type_unification): If strict and the function parm doesn't
10492	use template parms, just compare types.
10493
10494Wed Sep  3 10:35:49 1997  Klaus Espenlaub  <kespenla@student.informatik.uni-ulm.de>
10495
10496	* method.c (build_overloaded_value): Replace direct call
10497	to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
10498
10499Wed Sep  3 00:02:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
10500
10501	* typeck.c (convert_arguments): Don't arbitrarily choose the first
10502	of a set of overloaded functions.
10503
10504Tue Sep  2 12:09:13 1997  Jason Merrill  <jason@yorick.cygnus.com>
10505
10506	* lex.c (real_yylex): Don't elide __FUNCTION__.
10507
10508	* method.c (build_overload_value): Add in_template parm.
10509	(build_overload_int): Likewise.
10510	(build_overload_identifier): Pass it.
10511
10512	* decl.c (duplicate_decls): Don't bash a previous template
10513	definition with a redeclaration.
10514
10515	* pt.c (unify): float doesn't match double.
10516
10517	* pt.c (do_type_instantiation): Handle getting a _TYPE or a
10518	TYPE_DECL.  Handle getting non-template types.
10519	* parse.y (explicit_instantiation): Use typespec instead of
10520	aggr template_type.
10521
10522Tue Sep  2 10:27:08 1997  Richard Henderson  <rth@cygnus.com>
10523
10524	* typeck.c (build_ptrmemfunc1): Clean up ptr->int cast warnings.
10525
10526Mon Sep  1 13:19:04 1997  Eugene Mamchits  <eugin@ips.ras.ru>
10527
10528	* call.c (add_builtin_candidate): Add missing TREE_TYPE.
10529	(compare_ics): Likewise.
10530
10531Mon Sep  1 13:19:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
10532
10533	* call.c (joust): Warn about choosing one conversion op over
10534	another because of 'this' argument when the other return type is
10535	better.
10536	(source_type): New fn.
10537
10538	* call.c (build_new_op): Strip leading REF_BIND from first operand
10539	to builtin operator.
10540
10541	* decl2.c (mark_vtable_entries): Mark abort_fndecl as used when we
10542	use its RTL.
10543
10544Thu Aug 28 09:45:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
10545
10546	* call.c (null_ptr_cst_p): Remove support for (void*)0.
10547
10548Wed Aug 27 02:03:34 1997  Jeffrey A Law  <law@cygnus.com>
10549
10550	* typeck.c (expand_target_expr): Make definition match declaration.
10551
10552	* class.c (get_basefndecls): Make definition match declaration.
10553
10554Mon Aug 25 14:30:02 1997  Jason Merrill  <jason@yorick.cygnus.com>
10555
10556	* input.c (sub_getch): Eventually give up and release the input file.
10557
10558	* decl.c (cp_finish_decl): If #p i/i, put inline statics in the
10559	right place.
10560
10561	* call.c (joust): Tweak message.
10562
10563Sat Aug 23 18:02:59 1997  Mark Mitchell  <mmitchell@usa.net>
10564
10565	* error.c (type_as_string): Put const/volatile on template type
10566	parameters where appropriate.
10567
10568Sat Aug 23 17:47:22 1997  Jeffrey A Law  <law@cygnus.com>
10569
10570	* call.c (strictly_better): Make arguments unsigned ints.
10571
10572Thu Aug 21 18:48:44 1997  Jason Merrill  <jason@yorick.cygnus.com>
10573
10574	* lex.c (real_yylex): Refer to __complex instead of complex.
10575
10576Thu Aug 21 22:25:46 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>
10577
10578	* lex.c (real_yylex): Don't use getc directly.
10579
10580Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
10581
10582	* call.c (is_subseq): Don't try to be clever.
10583
10584Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
10585
10586	* parse.y, pt.c: Include "except.h".
10587	* call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
10588	error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
10589	lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
10590	sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
10591	prototyping.
10592
10593Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
10594
10595	* decl2.c (mark_vtable_entries): Instead of replacing pure
10596	virtuals with a reference to __pure_virtual, copy the decl and
10597	change the RTL.
10598
10599Tue Aug 19 02:26:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
10600
10601	* pt.c (lookup_nested_type_by_name): Handle typedef wierdness.
10602
10603	* typeck2.c (my_friendly_abort): Report bugs to egcs-bugs@cygnus.com.
10604
10605	* pt.c (instantiate_class_template): Call repo_template_used
10606	before finish_prevtable_vardecl.
10607
10608	* call.c (is_subseq): New fn.
10609	(compare_ics): Use it.
10610
10611	* repo.c (finish_repo): Don't crash on no args.
10612
10613	* parse.y (named_complex_class_head_sans_basetype): Handle
10614	explicit global scope.
10615	* decl2.c (handle_class_head): New fn.
10616
10617	* pt.c (unify): Add CONST_DECL case.
10618
10619Thu Aug 14 10:05:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
10620
10621	* rtti.c (permanent_obstack): Fix decl to not be a pointer.
10622
10623	* cp-tree.h (report_type_mismatch): Add prototype.
10624	* call.c (build_overload_call_real): Remove erroneous fourth
10625	argument to report_type_mismatch.
10626	(build_user_type_conversion_1): Remove erroneous second arg to
10627	tourney.
10628	(build_new_function_call): Likewise.
10629	(build_object_call): Likewise.
10630	(build_new_op): Likewise.
10631	(build_new_method_call): Likewise.
10632
10633Wed Aug 13 19:19:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
10634
10635	* error.c (dump_decl): Don't bother processing a function with no
10636	DECL_LANG_SPECIFIC.
10637
10638	* method.c (emit_thunk): Call init_function_start in the macro case.
10639
10640Wed Aug 13 10:46:19 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)
10641
10642	* decl2.c (DEFAULT_VTABLE_THUNKS): Define to be 0 if not
10643	defined and used to set flag_vtable_thunks.
10644
10645Tue Aug 12 20:13:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
10646
10647	* parse.y: Don't clear the inlines from their obstack until they've
10648	all been processed.
10649
10650	* decl.c (duplicate_decls): Don't complain about exception
10651	specification mismatch if flag_exceptions is off.
10652
10653Mon Aug 11 15:01:56 1997  Marc Lehmann  <pcg@goof.com>
10654
10655	* Make-lang.in (c++.distclean): Remove g++.c on make distclean.
10656
10657Sun Aug 10 12:06:09 1997  Paul Eggert  <eggert@twinsun.com>
10658
10659	* cp-tree.h: Replace STDIO_PROTO with PROTO in include files.
10660	* cvt.c, error.c, except.c, expr.c, friend.c, init.c, rtti.c:
10661	Include <stdio.h> before include files that formerly used STDIO_PROTO.
10662
10663	* decl.c, g++spec.c, lex.c, method.c, repo.c:
10664	Include "config.h" first, as per autoconf manual.
10665
10666Fri Aug  8 11:47:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
10667
10668	* decl.c (duplicate_decls): Tweak wording.
10669	* lex.c (do_pending_defargs): Don't die if we see a default arg
10670	that isn't a DEFAULT_ARG.
10671	* error.c (dump_expr): Handle DEFAULT_ARG.
10672
10673	* decl2.c (lang_decode_option): Handle -fhandle-exceptions.
10674	* lang-options.h: Add -fhandle-exceptions.
10675
10676	* class.c (build_vtable): Vtables are artificial.
10677	(prepare_fresh_vtable): Likewise.
10678
10679Wed Aug  6 11:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
10680
10681	* cvt.c (ocp_convert): After converting to the target type, set
10682	LOOKUP_NO_CONVERSION.
10683
10684	* call.c (joust): Warn about potentially confusing promotion rules
10685	with -Wsign-promo.
10686	* cp-tree.h, lang-options.h, decl2.c: Support -Wsign-promo.
10687
10688Tue Aug  5 15:15:07 1997  Michael Meissner  <meissner@cygnus.com>
10689
10690	* exception.cc: Declare __terminate_func with noreturn attribute.
10691
10692Fri Aug  1 03:18:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
10693
10694	* parse.y: Break out eat_saved_input, handle errors.
10695	(function_try_block): Use compstmt instead of compstmt_or_error.
10696
10697Thu Jul 31 17:14:04 1997  Jason Merrill  <jason@yorick.cygnus.com>
10698
10699	* tree.c (build_cplus_new): Don't set TREE_ADDRESSABLE.
10700
10701Fri Jul  4 01:45:16 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
10702
10703	* Make-lang.in (cplib2.txt, cplib2.ready): Instead of checking for
10704	existence of cc1plus check whether $(LANGUAGES) contains C++.
10705
10706Wed Jul 30 13:04:21 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
10707
10708	* method.c (do_build_copy_constructor): When copying an anonymous
10709	union member loop around to handle nested anonymous unions.  Use
10710	the offset of the member relative to the outer structure, not the
10711	union.
10712
10713Tue Jul 29 21:17:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
10714
10715	* call.c (resolve_args): New fn.
10716	(build_new_function_call): Use it.
10717	(build_object_call): Likewise.
10718	(build_new_method_call): Likewise.
10719
10720Mon Jul 28 16:02:36 1997  Jason Merrill  <jason@yorick.cygnus.com>
10721
10722	* call.c (build_over_call): tsubst all default parms from templates.
10723
10724Wed Jul 23 13:36:25 1997  Jason Merrill  <jason@yorick.cygnus.com>
10725
10726	* decl.c (struct cp_function): Add static_labelno.
10727	(push_cp_function_context): Save it.
10728	(pop_cp_function_context): Restore it.
10729
10730Tue Jul 22 14:43:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
10731
10732	* typeck.c (build_component_ref_1): Convert from reference.
10733
10734Tue Jul 22 11:06:23 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
10735
10736	* parse.y (current_declspecs, prefix_attributes): Initialize to
10737	NULL_TREE.
10738
10739	* parse.y (initdcl0): Make sure CURRENT_DECLSPECS is non-nil
10740	before we try to force it to be a TREE_LIST.
10741	(decl): Make sure $1.t is non-nil.
10742
10743Sun Jul 20 11:53:07 1997  Jason Merrill  <jason@yorick.cygnus.com>
10744
10745	* pt.c (uses_template_parms): Handle template first-parse codes.
10746
10747	* decl.c (cp_finish_decl): Only warn about user-defined statics.
10748
10749Fri Jul 18 17:56:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
10750
10751	* pt.c (unify): Handle BOOLEAN_TYPE.
10752
10753	* cp-tree.h: Lose PARM_DEFAULT_FROM_TEMPLATE.
10754	* pt.c (tsubst): Don't set it.
10755	* call.c (build_over_call): Use uses_template_parms.
10756
10757Thu Jul 17 18:06:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
10758
10759	* method.c (build_overload_nested_name): Use static_labelno
10760	instead of var_labelno.
10761	(build_qualified_name): New fn.
10762	(build_overload_name): Split out from here.
10763	(build_static_name): Use build_qualified_name.
10764	* decl.c (cp_finish_decl): Statics in extern inline functions
10765	have comdat linkage.
10766	(start_function): Initialize static_labelno.
10767
10768Thu Jul 17 11:20:17 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
10769
10770	* class.c (finish_struct_methods): Add check of warn_ctor_dtor_privacy
10771	before "all member functions in class [] are private".
10772
10773Wed Jul 16 23:47:08 1997  Jason Merrill  <jason@yorick.cygnus.com>
10774
10775	* lex.c (do_scoped_id): convert_from_reference.
10776	* init.c (build_offset_ref): Likewise.
10777
10778Wed Jul 16 12:34:29 1997  Benjamin Kosnik  <bkoz@lisa.cygnus.com>
10779
10780	* error.c (dump_expr): Check TREE_OPERAND before dump_expr_list.
10781
10782Mon Jul 14 03:23:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
10783
10784	* typeck.c (get_member_function_from_ptrfunc): Promote index
10785	before saving it.
10786
10787Sun Jul 13 00:11:52 1997  Jason Merrill  <jason@yorick.cygnus.com>
10788
10789	* tree.c (layout_basetypes): Move non-virtual destructor warning.
10790	* decl.c (xref_basetypes): Remove non-virtual destructor warning.
10791
10792Sat Jul 12 12:47:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
10793
10794	* decl.c (grokdeclarator): Call add_defarg_fn for the function
10795	type, too.
10796	* lex.c (add_defarg_fn): Adjust.
10797	(do_pending_defargs): Adjust.  Don't skip the first parm.
10798
10799Fri Jul 11 01:39:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
10800
10801	* decl.c (build_enumerator): Global enumerators are also readonly.
10802
10803	* rtti.c (build_dynamic_cast_1): Renamed from build_dynamic_cast.
10804	(build_dynamic_cast): Call it and convert_from_reference.
10805
10806	* lex.c (add_defarg_fn): New fn.
10807	(snarf_defarg): Don't add to defarg_types.
10808	(do_pending_defargs): Lose defarg_types.  All fns we process now
10809	have defargs.
10810	* decl.c (grokfndecl): Call add_defarg_fn.
10811
10812	* Makefile.in (CONFLICTS): Expect 18 s/r conflicts.
10813	* cp-tree.def: Add DEFAULT_ARG.
10814	* spew.c (yylex): Call snarf_defarg as appropriate.
10815	* parse.y: New tokens DEFARG and DEFARG_MARKER.
10816	(defarg_again, pending_defargs, defarg, defarg1): New rules.
10817	(structsp): Use pending_defargs.
10818	(parms, full_parm): Use defarg.
10819	* lex.c (init_lex): Initialize inline_text_firstobj.
10820	(do_pending_inlines): Never pass the obstack to feed_input.
10821	(process_next_inline): Call end_input instead of restore_pending_input.
10822	(clear_inline_text_obstack, reinit_parse_for_expr, do_pending_defargs,
10823	finish_defarg, feed_defarg, snarf_defarg, maybe_snarf_defarg): New fns.
10824	* input.c (end_input): New fn.
10825	(sub_getch): At the end of some fed input, just keep returning EOF
10826	until someone calls end_input.
10827	Remove 'obstack' field from struct input_source.
10828	* decl.c (grokparms): Handle DEFAULT_ARG.
10829	(replace_defarg): New fn.
10830	* cp-tree.h (DEFARG_LENGTH, DEFARG_POINTER): New macros.
10831
10832Wed Jul  9 13:44:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
10833
10834	* call.c (implicit_conversion): If nothing else works, try binding
10835	an rvalue to a reference.
10836
10837Wed Jul  9 13:04:38 1997  Geoffrey Noer  <noer@cygnus.com>
10838
10839	* decl.c (init_decl_processing): Fix Jun 30 patch -- move
10840	ifndef for Cygwin32 to include SIGSEGV.
10841
10842Thu Jul  3 01:44:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
10843
10844	* class.c (finish_struct_1): Only complain about pointers without
10845	copy stuff if there are any constructors.
10846
10847	* rtti.c (build_dynamic_cast): Call complete_type on the types.
10848
10849	* decl.c (grokfndecl): If the function we chose doesn't actually
10850	match, die.
10851
10852	* decl2.c (grokclassfn): Don't specify 'const int' for the
10853	artificial destructor parm.
10854
10855	* pt.c (type_unification): If we are called recursively, nothing
10856	decays.
10857
10858Mon Jun 30 17:53:21 1997  Geoffrey Noer  <noer@cygnus.com>
10859
10860	* decl.c (init_decl_processing): Stop trying to catch signals
10861	other than SIGABRT since the Cygwin32 library doesn't support
10862	them correctly yet.  This fixes a situation in which g++ causes
10863	a hang on SIGSEGVs and other such signals in our Win32-hosted
10864	tools.
10865
10866Mon Jun 30 14:50:01 1997  Jason Merrill  <jason@yorick.cygnus.com>
10867
10868	* tree.c (mapcar, case CALL_EXPR): Handle all the parse node data.
10869
10870Fri Jun 27 15:18:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
10871
10872	* typeck2.c (store_init_value): Always return the value if our
10873	type needs constructing.
10874
10875	* method.c (hack_identifier): Convert class statics from
10876	reference, too.
10877
10878Thu Jun 26 11:44:46 1997  Jason Merrill  <jason@yorick.cygnus.com>
10879
10880	* Make-lang.in (cplib2.ready): Add $(LANGUAGES) dependency.
10881
10882Thu Jun 19 16:49:28 1997  Mike Stump  <mrs@cygnus.com>
10883
10884	* typeck.c (c_expand_return): Make sure we clean up temporaries at
10885	the end of return x;
10886
10887Thu Jun 19 12:28:43 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
10888
10889	* lex.c (check_for_missing_semicolon): Also check for CV_QUALIFIER.
10890
10891Tue Jun 17 18:35:57 1997  Mike Stump  <mrs@cygnus.com>
10892
10893	* except.c (expand_builtin_throw): Add support
10894	-fno-sjlj-exceptions -fPIC exception handling on the SPARC.
10895
10896Mon Jun 16 01:24:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
10897
10898	* repo.c (extract_string): Null-terminate.
10899
10900	* cp-tree.h (TI_SPEC_INFO): New macro.
10901	(CLASSTYPE_TI_SPEC_INFO): New macro.
10902	* pt.c (push_template_decl): Correctly determine # of template parms
10903	for partial specs.
10904
10905	* call.c (compare_ics): Really fix 'this' conversions.
10906
10907	* pt.c (do_decl_instantiation): Don't crash on explicit inst of
10908	non-template fn.
10909
10910	* pt.c (push_template_decl): Complain about mismatch in # of
10911	template parms between a class template and a member template.
10912
10913Sun Jun 15 02:38:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
10914
10915	* method.c (synthesize_method): You can't call
10916	function_cannot_inline_p after finish_function.
10917	* decl.c (finish_function): Turn on flag_inline_functions and turn
10918	off DECL_INLINE before handing a synthesized method to the
10919	backend.
10920
10921Thu Jun 12 17:35:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
10922
10923	* method.c (synthesize_method): Remove July 30 change to never set
10924	DECL_INLINE if at_eof.
10925
10926Thu Jun 12 15:25:08 1997  Mike Stump  <mrs@cygnus.com>
10927
10928	* xref.c (GNU_xref_member): Ensure that the node has a
10929	decl_lang_specific part before checking DECL_FRIEND_P.
10930
10931Thu Jun 12 12:36:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
10932
10933	* pt.c (instantiate_class_template): Diagnose non-class types used
10934	as bases.
10935
10936Wed Jun 11 17:33:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
10937
10938	* typeck.c (build_conditional_expr): Use convert_for_initialization
10939	instead of convert_and_check.
10940
10941Wed Jun 11 12:31:33 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
10942
10943	* parse.y (typespec): Don't pedwarn for typeof.
10944
10945Tue Jun 10 00:22:09 1997  Jason Merrill  <jason@yorick.cygnus.com>
10946
10947	* repo.c (finish_repo): Only check changes if we would write a
10948	repo file.
10949
10950	* call.c (compare_ics): Fix handling of 'this' conversions.
10951
10952	* pt.c (do_decl_instantiation): Support static data too.  Rename
10953	from do_function_instantiation.
10954	* cp-tree.h: Adjust.
10955	* parse.y: Adjust.
10956
10957	* repo.c (extract_string): New fn.
10958	(get_base_filename): Use it.
10959	(init_repo): Compare old args with current args.
10960
10961Mon Jun  9 14:25:30 1997  Mike Stump  <mrs@cygnus.com>
10962
10963	* Makefile.in, Make-lang.in: Protect C-ls with a comment
10964	character, idea from Paul Eggert <eggert@twinsun.com>.
10965
10966Mon Jun  9 01:52:03 1997  Jason Merrill  <jason@yorick.cygnus.com>
10967
10968	* typeck.c (c_expand_return): Be more persistent in looking for
10969	returned temps.
10970
10971	* cvt.c (build_up_reference): Use NOP_EXPR for switching from
10972	pointer to reference.
10973
10974	* class.c (build_vbase_path): Don't do anything if PATH has no steps.
10975
10976Sun Jun  8 03:07:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
10977
10978	* init.c (build_member_call, build_offset_ref):
10979	Use do_scoped_id instead of do_identifier.
10980
10981	* cvt.c (convert): Remove bogosity.
10982
10983Sat Jun  7 20:50:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
10984
10985	* cvt.c (build_up_reference): Do checks of ARGTYPE and
10986	TARGET_TYPE before trying to use get_binfo.
10987
10988Fri Jun  6 17:36:39 1997  Jason Merrill  <jason@yorick.cygnus.com>
10989
10990	* cvt.c (build_up_reference): Call get_binfo to get access control.
10991
10992	* decl2.c (import_export_decl): If we don't support weaks, leave
10993	statics undefined.
10994
10995Fri Jun  6 15:55:49 1997  Mike Stump  <mrs@cygnus.com>
10996
10997	* except.c (expand_builtin_throw): Add support for machines that
10998	cannot access globals after throw's epilogue when
10999	-fno-sjlj-exceptions is used.
11000
11001Thu Jun  5 16:28:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
11002
11003	* parse.y: 'std::' becomes '::'.
11004	* lex.c (real_yylex): Remove 'namespace' warning.
11005	* init.c (build_member_call): Ignore 'std::'.
11006	(build_offset_ref): Likewise.
11007	* decl2.c (do_using_directive): Ignore 'using namespace std;'.
11008	(do_toplevel_using_decl): Ignore 'using std::whatever'.
11009	* decl.c (push_namespace): Just sorry.
11010	(pop_namespace): Nop.
11011	(init_decl_processing): Declare std namespace.
11012
11013Tue Jun  3 18:08:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
11014
11015	* search.c (push_class_decls): A name which ambiguously refers to
11016	several instantiations of the same template just refers to the
11017	template.
11018
11019Tue Jun  3 12:30:40 1997  Benjamin Kosnik  <bkoz@cirdan.cygnus.com>
11020
11021	* decl.c (build_enumerator): Fix problem with unsigned long
11022	enumerated values being smashed to ints, causing overflow
11023	when computing next enumerated value (for enum values around
11024	MAX_VAL).
11025
11026Mon Jun  2 17:40:56 1997  Jason Merrill  <jason@yorick.cygnus.com>
11027
11028	* typeck.c (build_component_ref): Only call mark_used on a decl.
11029
11030Thu May 29 15:54:17 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11031
11032	* typeck.c (build_c_cast): Make the check for a ptr to function
11033	more specific before possible default_conversion call.
11034
11035Thu May 29 13:02:06 1997  Mike Stump  <mrs@cygnus.com>
11036
11037	* except.c (expand_exception_blocks): Simplify and fix and make
11038	sure we don't end a region in a sequence, as expand_end_bindings
11039	doesn't like it.
11040
11041Wed May 28 17:08:03 1997  Mike Stump  <mrs@cygnus.com>
11042
11043	* except.c (init_exception_processing): Mark terminate as not
11044	returning so that the optimizer can optimize better.
11045
11046Tue May 27 19:49:19 1997  Mike Stump  <mrs@cygnus.com>
11047
11048	* cvt.c (convert): Don't do any extra work, if we can avoid it
11049	easily.
11050
11051Tue May 27 18:21:47 1997  Mike Stump  <mrs@cygnus.com>
11052
11053	* *.[chy]: Change cp_convert to ocp_convert, change convert to
11054	cp_convert.  convert is now reserved for the backend, and doesn't
11055	have the semantics a frontend person should ever want.
11056
11057Fri May 23 10:58:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
11058
11059	* lang-specs.h: Define __EXCEPTIONS if exceptions are enabled.
11060	Lose -traditional support.
11061
11062Thu May 22 15:41:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
11063
11064	* rtti.c (get_tinfo_var): Use TYPE_PRECISION (sizetype).
11065
11066	* parse.y (self_reference): Do it for templates, too.
11067	* class.c (pushclass): Don't overload_template_name; the alias
11068	generated by build_self_reference serves the same purpose.
11069
11070	* tree.c (list_hash): Make static, take more args.
11071	(list_hash_lookup): Likewise.
11072	(list_hash_add): Make static.
11073	(list_hash_canon): Lose.
11074	(hash_tree_cons): Only build a new node if one isn't already in the
11075	hashtable.
11076	(hash_tree_chain): Use hash_tree_cons.
11077	* cp-tree.h: Adjust.
11078	* decl.c (grokfndecl): Just check IDENTIFIER_GLOBAL_VALUE instead
11079	of calling lookup_name.
11080
11081Wed May 21 18:24:19 1997  Jason Merrill  <jason@yorick.cygnus.com>
11082
11083	* pt.c (instantiate_class_template): TYPE_VALUES for an enum
11084	doesn't refer to the CONST_DECLs.
11085
11086Tue May 20 21:09:32 1997  Bob Manson  <manson@charmed.cygnus.com>
11087
11088	* rtti.c (get_tinfo_var): Either INT_TYPE_SIZE or 32, whichever
11089	is bigger.
11090	(expand_class_desc): Convert the last argument to a sizetype.
11091
11092Tue May 20 13:55:57 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11093
11094	* gxx.gperf (__complex, __complex__, __imag, __imag__, __real,
11095	__real__): Add reswords.
11096	* hash.h: Regenerate.
11097	* lex.h (rid): Add RID_COMPLEX.
11098	(RID_LAST_MODIFIER): Set to RID_COMPLEX.
11099	* lex.c (init_lex): Add building of RID_COMPLEX.
11100	(real_yylex): General cleanup in line with what c-lex.c also has,
11101	sans the cruft for traditional; add handling of SPEC_IMAG, complex
11102	types, and imaginary numeric constants.
11103	* parse.y (REALPART, IMAGPART): Add tokens.
11104	(unary_expr): Add REALPART and IMAGPART rules.
11105	* cp-tree.h (complex_{integer,float,double,long}_type_node): Declare.
11106	* decl.c (complex_{integer,float,double,long}_type_node): Define
11107	types.
11108	(init_decl_processing): Set up the types.
11109	(grokdeclarator): Add handling of RID_COMPLEX.  Set and use
11110	DEFAULTED_INT instead of EXPLICIT_INT when we default to int type.
11111	* call.c (build_new_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
11112	* cvt.c (cp_convert): Handle COMPLEX_TYPE.
11113	* error.c (dump_type_prefix, dump_type, dump_type_suffix): Add
11114	COMPLEX_TYPE case.
11115	* method.c (build_overload_name): Add handling of the different
11116	COMPLEX_TYPEs, prefixing them with `J'.
11117	* pt.c (process_template_parm): Don't let them use a COMPLEX_TYPE
11118	as a template parm.
11119	(uses_template_parms, tsubst, unify): Add COMPLEX_TYPE case.
11120	* tree.c (lvalue_p): Add REALPART_EXPR and IMAGPART_EXPR cases.
11121	(mapcar): Handle COMPLEX_CST.
11122	* typeck.c (build_binary_op_nodefault): Handle COMPLEX_TYPE.
11123	(common_type): Add code for complex types.
11124	(build_unary_op): Add REALPART_EXPR and IMAGPART_EXPR cases.
11125	(convert_for_assignment): Likewise.
11126	(mark_addressable): Add REALPART_EXPR and IMAGPART_EXPR cases.
11127
11128Mon May 19 12:26:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
11129
11130	* pt.c (tsubst): Don't pass the MINUS_EXPR for an array domain to
11131	tsubst_expr, as it might try to do overload resolution.
11132
11133Sat May 17 10:48:31 1997  Jason Merrill  <jason@yorick.cygnus.com>
11134
11135	* pt.c (instantiate_class_template): Oops.
11136
11137Fri May 16 14:23:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
11138
11139	* cp-tree.def: Add TAG_DEFN.
11140	* pt.c (tsubst_enum): New fn.
11141	(instantiate_class_template): Use it.
11142	(tsubst_expr): Support TAG_DEFN.
11143	(tsubst): Support local enums.
11144	(tsubst_copy): Likewise.
11145	* decl.c (finish_enum): Likewise.
11146	(start_enum): If this is a local enum, switch to permanent_obstack.
11147
11148Wed May 14 19:08:28 1997  Mike Stump  <mrs@cygnus.com>
11149
11150	* decl.c (store_parm_decls): Set last_parm_cleanup_insn here.
11151	(finish_function): Put the base init code for constructors just
11152	after the parm cleanup insns.
11153	(struct cp_function): Add last_parm_cleanup_insn.
11154	(push_cp_function_context): Likewise.
11155	(pop_cp_function_context): Likewise.
11156
11157Tue May 13 15:51:20 1997  Jason Merrill  <jason@yorick.cygnus.com>
11158
11159	* pt.c (tsubst_copy): Handle BIT_NOT_EXPR.
11160
11161Wed May  7 11:17:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11162
11163	* method.c (emit_thunk) [ASM_OUTPUT_MI_THUNK]: Build up the RTL
11164	for THUNK_FNDECL before we switch to temporary allocation.
11165
11166Mon May  5 14:46:53 1997  Jason Merrill  <jason@yorick.cygnus.com>
11167
11168	* call.c (build_new_op): Handle null arg2 for ?:.
11169
11170Thu May  1 18:26:37 1997  Mike Stump  <mrs@cygnus.com>
11171
11172	* except.c (expand_exception_blocks): Ensure that we flow through
11173	the end of the exception region for the exception specification.
11174	Move exception region for the exception specification in, so that
11175	it doesn't protect the parm cleanup.  Remove some obsolete code.
11176	* decl.c (store_parm_decls): Likewise.
11177	(finish_function): Likewise.
11178
11179Tue Apr 29 15:38:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
11180
11181	* init.c (build_new): Fix nothrow handling.
11182
11183Tue Apr 29 14:29:50 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11184
11185	* init.c (emit_base_init): Don't warn about the initialization
11186	list for an artificial member.
11187
11188Fri Apr 25 17:47:59 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11189
11190	* expr.c (do_case): Handle !START case for the error msg.
11191
11192Fri Apr 25 11:55:23 1997  Jason Merrill  <jason@yorick.cygnus.com>
11193
11194	* decl2.c, lang-options.h: New option -Weffc++.
11195	* class.c, decl.c, init.c, typeck.c: Move Effective C++ warnings
11196	to -Weffc++.
11197
11198	* decl2.c (finish_prevtable_vardecl): Change NO_LINKAGE_HEURISTICS
11199	to MULTIPLE_SYMBOL_SPACES.
11200
11201Wed Apr 23 18:06:50 1997  Jason Merrill  <jason@yorick.cygnus.com>
11202
11203	* method.c (emit_thunk, generic case): Set current_function_is_thunk.
11204
11205	* method.c (emit_thunk, macro case): Set up DECL_RESULT.
11206
11207	* typeck.c (c_expand_return): Don't complain about returning void
11208	to void in an artificial function.
11209	* method.c (make_thunk): Change settings of READONLY/VOLATILE,
11210	don't set DECL_RESULT, set DECL_ARTIFICIAL.
11211	(emit_thunk, generic code): Also set up DECL_LANG_SPECIFIC.
11212
11213Wed Apr 23 14:43:06 1997  Mike Stump  <mrs@cygnus.com>
11214
11215	* init.c (init_decl_processing): Add support for setjmp/longjmp based
11216	exception handling.
11217	* except.c (init_exception_processing): Likewise.
11218	(expand_end_catch_block): Likewise.
11219	(expand_exception_blocks): Likewise.
11220	(expand_throw): Likewise.
11221	* exception.cc (__default_terminate): Likewise.
11222
11223	* init.c (perform_member_init): Use new method of expr level
11224	cleanups, instead of cleanups_this_call and friends.
11225	(emit_base_init): Likewise.
11226	(expand_aggr_vbase_init_1): Likewise.
11227	(expand_vec_init): Likewise.
11228	* decl.c (cp_finish_decl): Likewise.
11229	(expand_static_init): Likewise.
11230	(store_parm_decls): Likewise.
11231	(cplus_expand_expr_stmt): Likewise.
11232	* decl2.c (finish_file): Likewise.
11233
11234	* Make-lang.in (exception.o): Ok to compile with -O now.
11235
11236	* decl.c (maybe_build_cleanup_1): We no longer have to unsave, as
11237	we know it will be done later by the backend.
11238
11239	* decl2.c (lang_f_options): Remove support for short temps.
11240	* lang-options.h: Likewise.
11241
11242Wed Apr 23 04:12:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
11243
11244	* tree.c (varargs_function_p): New fn.
11245	* method.c (emit_thunk): Replace broken generic code with code to
11246	generate a heavyweight thunk function.
11247
11248Tue Apr 22 02:45:18 1997  Jason Merrill  <jason@yorick.cygnus.com>
11249
11250	* pt.c (process_template_parm): pedwarn about floating-point parms.
11251
11252	* decl.c (grokdeclarator): inline no longer implies static.
11253
11254	* spew.c (yylex): Always return the TYPE_DECL if we got a scope.
11255
11256Mon Apr 21 15:42:27 1997  Jason Merrill  <jason@yorick.cygnus.com>
11257
11258	* class.c (check_for_override): The signature of an overriding
11259	function is not changed.
11260
11261	* call.c (build_over_call): Move setting of conv into the loop.
11262	Note: this change, along with the related changes of the 18th thru
11263	the 20th of April, fix an infinite loop problem in conversions.
11264
11265Sun Apr 20 16:24:29 1997  Jason Merrill  <jason@yorick.cygnus.com>
11266
11267	* call.c (build_user_type_conversion_1): Really ignore rvalue
11268	conversions when looking for a REFERENCE_TYPE.
11269
11270	* cvt.c (build_up_reference): Eviscerate, use build_unary_op.
11271	* cp-tree.h (TREE_REFERENCE_EXPR): #if 0.
11272	* typeck.c (decay_conversion): Don't set TREE_REFERENCE_EXPR.
11273	(build_unary_op): Likewise.
11274	* call.c (build_over_call): See through a CONVERT_EXPR around the
11275	ADDR_EXPR for on a temporary.
11276	* typeck.c (c_expand_return): See through a CONVERT_EXPR around
11277	the ADDR_EXPR for a local variable.
11278
11279Fri Apr 18 12:11:33 1997  Jason Merrill  <jason@yorick.cygnus.com>
11280
11281	* call.c (build_user_type_conversion_1): If we're trying to
11282	convert to a REFERENCE_TYPE, only consider lvalue conversions.
11283	(build_new_function_call): Print candidates.
11284	(implicit_conversion): Try a temp binding if the lvalue conv is BAD.
11285	(reference_binding): Binding a temporary of a reference-related type
11286	is BAD.
11287
11288Thu Apr 17 14:37:22 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11289
11290	* inc/typeinfo (type_info::before): Add cv-qualifier-seq.
11291	* tinfo2.cc (type_info::before): Likewise.
11292
11293Mon Apr 14 12:38:17 1997  Jason Merrill  <jason@yorick.cygnus.com>
11294
11295	* call.c (implicit_conversion): Oops.
11296
11297Fri Apr 11 02:18:30 1997  Jason Merrill  <jason@yorick.cygnus.com>
11298
11299	* call.c (implicit_conversion): Try to find a reference conversion
11300	before binding a const reference to a temporary.
11301
11302Wed Apr  2 12:51:36 1997  Mike Stump  <mrs@cygnus.com>
11303
11304	* exception.cc (__default_unexpected): Call terminate by default,
11305	so that if the user overrides terminate, the correct function will
11306	be called.
11307
11308Wed Mar 19 14:14:45 1997  Mike Stump  <mrs@cygnus.com>
11309
11310	* parse.y (left_curly): Avoid trying to use any fields of
11311	error_mark_node, as there aren't any.
11312
11313Thu Mar 13 16:33:22 1997  Jason Merrill  <jason@yorick.cygnus.com>
11314
11315	* lex.c (do_identifier): Avoid breaking on overloaded methods
11316	as default arguments.
11317
11318Wed Mar 12 13:55:10 1997  Hans-Peter Nilsson  <Hans-Peter.Nilsson@axis.se>
11319
11320	* call.c (add_template_candidate): Initialize the variable "dummy".
11321
11322Mon Mar 10 15:13:14 1997  Brendan Kehoe  <brendan@canuck.cygnus.com>
11323
11324	* decl.c (start_decl): Make sure TYPE isn't an error_mark_node
11325	before we try to use TYPE_SIZE and TREE_CONSTANT on it.
11326
11327Fri Mar  7 13:19:36 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11328
11329	* cp-tree.h (comp_ptr_ttypes, more_specialized): Add decl.
11330	(debug_binfo): Delete decl, not needed.
11331
11332	* tree.c (fnaddr_from_vtable_entry, function_arg_chain,
11333	promotes_to_aggr_type): Delete fns.
11334	* cp-tree.h (FNADDR_FROM_VTABLE_ENTRY,
11335	SET_FNADDR_FROM_VTABLE_ENTRY, FUNCTION_ARG_CHAIN,
11336	PROMOTES_TO_AGGR_TYPE): Delete alternates to #if 1.
11337
11338	* decl.c (pending_invalid_xref{,_file,_line}): Delete unused vars.
11339
11340	* friend.c (is_friend_type): Delete fn.
11341	* cp-tree.h (is_friend_type): Delete decl.
11342
11343	* decl.c (original_result_rtx, double_ftype_double,
11344	double_ftype_double_double, int_ftype_int, long_ftype_long,
11345	float_ftype_float, ldouble_ftype_ldouble, last_dtor_insn): Make static.
11346	* typeck.c (original_result_rtx, warn_synth): Delete extern decls.
11347
11348	* decl.c (push_overloaded_decl{,_top_level}): Make static, adding
11349	fwd decls.
11350	* cp-tree.h (push_overloaded_decl{,_top_level}): Delete decls.
11351
11352	* decl.c (pushdecl_nonclass_level): #if 0, unused.
11353	* cp-tree.h (pushdecl_nonclass_level): #if 0 decl.
11354
11355	* lex.c (reinit_lang_specific): #if 0, unused.
11356	* cp-tree.h (reinit_lang_specific): #if 0 decl.
11357
11358	* decl.c (revert_static_member_fn): Make static, adding fwd decl.
11359	* cp-tree.h (revert_static_member_fn): Delete decl.
11360
11361	* class.c (root_lang_context_p): Delete fn.
11362	* cp-tree.h (root_lang_context_p): Delete decl.
11363
11364	* decl.c (set_current_level_tags_transparency): #if 0, unused.
11365	* cp-tree.h (set_current_level_tags_transparency): #if 0 decl.
11366
11367	* lex.c (set_vardecl_interface_info): Make static.
11368	* cp-tree.h (set_vardecl_interface_info): Delete decl.
11369
11370	* call.c (find_scoped_type): Make static.
11371	* cp-tree.h (find_scoped_type): Delete decl.
11372
11373	* search.c (convert_pointer_to_vbase): Make static.
11374	* cp-tree.h (convert_pointer_to_vbase): Delete decl.
11375
11376	* decl.c (const_ptr_type_node): Likewise.
11377	* cp-tree.h (const_ptr_type_node): Delete decl.
11378
11379	* typeck.c (common_base_type): Make static.
11380	* cp-tree.h (common_base_types): Delete erroneous decl.
11381
11382	* pt.c (classtype_mangled_name): Make static.
11383	* cp-tree.h (classtype_mangled_name): Delete decl.
11384
11385	* lex.c (check_newline): Make static.
11386	* cp-tree.h (check_newline): Delete decl.
11387
11388	* typeck.c (build_x_array_ref): Delete fn, same idea as
11389	grok_array_decl.
11390	* cp-tree.h (build_x_array_ref): Delete decl.
11391
11392	* lex.c (copy_decl_lang_specific): Delete fn, same idea as
11393	copy_lang_decl.
11394	* cp-tree.h (copy_decl_lang_specific): #if 0 decl.
11395
11396	* class.c (build_vtable_entry): Make static.
11397	* cp-tree.h (build_vtable_entry): Delete decl.
11398
11399	* class.c (build_vbase_pointer): Make static.
11400	* cp-tree.h (build_vbase_pointer): Delete decl.
11401
11402	* sig.c (build_sptr_ref): Add forward decl and make static.
11403	* cp-tree.h (build_sptr_ref): Delete decl.
11404
11405	* call.c (build_new_method_call): Add forward decl and make static.
11406	* cp-tree.h (build_new_method_call): Delete decl.
11407
11408	* call.c (build_object_call): Make static.
11409	* class.c (check_for_override, complete_type_p, mark_overriders):
11410	Likewise.
11411	* decl.c (cp_function_chain): Likewise.
11412	* lex.c (set_typedecl_interface_info, reinit_parse_for_block):
11413	Likewise.
11414	* pt.c (comp_template_args, get_class_bindings, push_tinst_level):
11415	Likewise.
11416	* tree.c (build_cplus_array_type_1): Likewise.
11417	* typeck.c (comp_ptr_ttypes_{const,real,reinterpret}): Likewise.
11418	(comp_target_parms): Likewise.
11419
11420	* init.c (build_builtin_call): Make static.
11421	* cp-tree.h (build_builtin_call): Delete decl.
11422
11423	* typeck.c (binary_op_error): Delete decl.
11424	* cp-tree.h (binary_op_error): Likewise.
11425
11426Thu Mar  6 16:13:52 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11427
11428	* call.c (build_method_call): Compare against error_mark_node
11429	directly, rather than the ERROR_MARK tree code.
11430	* cvt.c (cp_convert): Likewise.
11431	* decl.c (print_binding_level): Likewise.
11432	(duplicate_decls): Likewise.
11433	(grokdeclarator): Likewise.
11434	(grokdeclarator): Likewise.
11435	* init.c (expand_aggr_init_1): Likewise.
11436	(decl_constant_value): Likewise.
11437	* method.c (build_opfncall): Likewise.
11438	(hack_identifier): Likewise.
11439	* typeck.c (build_modify_expr): Likewise.
11440
11441	* typeck.c (build_c_cast): Don't decl TYPE as register tree.
11442
11443Sun Mar  2 02:54:36 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
11444
11445	* pt.c (unify): Strip NOP_EXPR wrappers before unifying integer values.
11446
11447	* pt.c (coerce_template_parms): Add new error message.
11448
11449	* method.c (build_overload_value): Implement name mangling for
11450	floating-point template arguments.
11451
11452	* method.c (build_overload_int, icat, dicat): Fix mangling of template
11453	arguments whose absolute value doesn't fit in a signed word.
11454
11455Mon Mar  3 12:14:54 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11456
11457	* friend.c: New file; put all of the friend stuff in here.
11458	* init.c: Instead of here.
11459	* Makefile.in (CXX_OBJS): Add friend.o.
11460	(friend.o): Add dependencies.
11461	* Make-lang.in (CXX_SRCS): Add $(srcdir)/cp/friend.c.
11462
11463Sun Mar  2 11:04:43 1997  Jason Merrill  <jason@yorick.cygnus.com>
11464
11465	* call.c (build_scoped_method_call): Complain if the scope isn't a
11466	base.
11467
11468Wed Feb 26 11:31:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
11469
11470	* parse.y (left_curly): Don't crash on erroneous type.
11471
11472	* init.c (build_delete): Fix type of ref.
11473
11474Tue Feb 25 12:41:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
11475
11476	* search.c (get_vbase_1): Renamed from get_vbase.
11477	(get_vbase): Wrapper, now non-static.
11478	(convert_pointer_to_vbase): Now static.
11479
11480	* call.c (build_scoped_method_call): Accept a binfo for BASETYPE.
11481	* init.c (build_delete): Pass one.
11482	(build_partial_cleanup_for): Use build_scoped_method_call.
11483	* decl.c (finish_function): Pass a binfo.
11484
11485Mon Feb 24 15:00:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
11486
11487	* call.c (build_over_call): Only synthesize non-trivial copy ctors.
11488
11489	* typeck.c (build_c_cast): Lose other reference to flag.
11490
11491	* call.c (build_field_call): Don't look for [cd]tor_identifier.
11492	* decl2.c (delete_sanity): Remove meaningless use of
11493	LOOKUP_HAS_IN_CHARGE.
11494	* decl.c (finish_function): Use build_scoped_method_call instead
11495	of build_delete for running vbase dtors.
11496	* init.c (build_delete): Call overload resolution code instead of
11497	duplicating it badly.
11498
11499Thu Feb 20 15:12:15 1997  Jason Merrill  <jason@yorick.cygnus.com>
11500
11501	* call.c (build_over_call): Call mark_used before trying to elide
11502	the call.
11503
11504	* decl.c (implicitly_declare): Don't set DECL_ARTIFICIAL.
11505
11506Wed Feb 19 11:18:53 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11507
11508	* typeck.c (build_modify_expr): Always pedwarn for a cast to
11509	non-reference used as an lvalue.
11510
11511Wed Feb 19 10:35:37 1997  Jason Merrill  <jason@yorick.cygnus.com>
11512
11513	* cvt.c (cp_convert_to_pointer): Convert from 0 to a pmf properly.
11514
11515Tue Feb 18 15:40:57 1997  Jason Merrill  <jason@yorick.cygnus.com>
11516
11517	* parse.y (handler): Fix template typo.
11518
11519Sun Feb 16 02:12:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
11520
11521	* error.c (lang_decl_name): New fn.
11522	* tree.c (lang_printable_name): Use it.
11523
11524Fri Feb 14 16:57:05 1997  Mike Stump  <mrs@cygnus.com>
11525
11526	* g++spec.c: Include config.h so that we can catch bzero #defines
11527	from the config file.
11528
11529Tue Feb 11 13:50:48 1997  Mike Stump  <mrs@cygnus.com>
11530
11531	* new1.cc: Include a declaration for malloc, to avoid warning, and
11532	avoid lossing on systems that require one (ones that define malloc
11533	in xm.h).
11534
11535Mon Feb 10 22:51:13 1997  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>
11536
11537	* decl2.c (max_tinst_depth): New variable.
11538	(lang_decode_option): Parse "-ftemplate-depth-NN" command line
11539	option.
11540	* pt.c (max_tinst_depth): Variable moved.
11541	* lang-options.h: Declare "-ftemplate-depth-NN" command line option
11542	as legal.
11543
11544Fri Feb  7 15:43:34 1997  Jason Merrill  <jason@yorick.cygnus.com>
11545
11546	* decl.c (xref_basetypes): Allow a base class that depends on
11547	template parms to be incomplete.
11548
11549	* decl2.c (build_expr_from_tree): Support typeid(type).
11550	* rtti.c (get_typeid): Support templates.
11551	(expand_si_desc, expand_class_desc): Fix string length.
11552	(expand_ptr_desc, expand_attr_desc, expand_generic_desc): Likewise.
11553
11554Tue Feb  4 11:28:24 1997  Jason Merrill  <jason@yorick.cygnus.com>
11555
11556	* pt.c (unify, case TEMPLATE_CONST_PARM): Use cp_tree_equal.
11557
11558	* pt.c (tsubst): Put it back for -fno-ansi-overloading.
11559
11560Mon Feb  3 18:41:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
11561
11562	* pt.c (tsubst, case FUNCTION_DECL): Lose obsolete code that
11563	smashes together template and non-template decls of the same
11564	signature.
11565
11566Thu Jan 30 19:18:00 1997  Jason Merrill  <jason@yorick.cygnus.com>
11567
11568	* pt.c (tsubst): Don't recurse for the type of a TYPENAME_TYPE.
11569
11570Wed Jan 29 11:40:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11571
11572	* decl.c (duplicate_decls): Next route, pedwarn about different
11573	exceptions if -pedantic *or* olddecl !DECL_IN_SYSTEM_HEADER.
11574
11575Tue Jan 28 20:43:29 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11576
11577	* cp-tree.h (HAS_DEFAULT_IMPLEMENTATION): Delete macro.
11578	(struct lang_type): Delete has_default_implementation member.
11579	Increase dummy to 21.
11580	* decl.c (start_method): Delete usage.
11581
11582	* cp-tree.h (build_call, null_ptr_cst_p, in_function_p,
11583	store_after_parms, start_decl_1, auto_function): Add decls.
11584	(get_arglist_len_in_bytes, declare_implicit_exception,
11585	have_exceptions_p, make_type_decl, typedecl_for_tag,
11586	store_in_parms, pop_implicit_try_blocks, push_exception_cleanup,
11587	build_component_type_expr, cplus_exception_name,
11588	{make,clear}_anon_parm_name, dont_see_typename): Removed decls.
11589	* call.c (build_this): Make static.
11590	(is_complete): Likewise.
11591	(implicit_conversion): Likewise.
11592	(reference_binding): Likewise.
11593	(standard_conversion): Likewise.
11594	(strip_top_quals): Likewise.
11595	(non_reference): Likewise.
11596	(build_conv): Likewise.
11597	(user_harshness): Likewise.
11598	(rank_for_ideal): Likewise.
11599	* decl.c (start_decl_1): Delete forward decl.
11600	(push_decl_level): Make static.
11601	(resume_binding_level): Make static.
11602	(namespace_bindings_p): Make static.
11603	(declare_namespace_level): Make static.
11604	(lookup_name_real): Make static.
11605	(duplicate_decls): Make static.  Take register off NEWDECL and
11606	OLDDECL parm decls.
11607	* decl2.c (get_sentry): Make static.
11608	(temp_name_p): Delete fn.
11609	* except.c (auto_function): Delete decl.
11610	* lex.c (handle_{cp,sysv}_pragma): Make static.
11611	(handle_sysv_pragma) [HANDLE_SYSV_PRAGMA]: Add forward decl.
11612	* method.c (do_build_{copy_constructor,assign_ref}): Make static.
11613	* pt.c (tsubst_expr_values): Make static.
11614	* rtti.c (combine_strings): Delete decl.
11615
11616Tue Jan 28 16:40:40 1997  Jason Merrill  <jason@yorick.cygnus.com>
11617
11618	* pt.c (push_template_decl): Handle getting a typedef.
11619
11620	* call.c (build_new_function_call): Complain about void arg.
11621
11622Tue Jan 28 15:25:09 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11623
11624	* decl.c (duplicate_decls): Give pedwarn of different exceptions
11625	if -pedantic, instead of olddecl !DECL_IN_SYSTEM_HEADER.
11626
11627Mon Jan 27 19:21:29 1997  Mike Stump  <mrs@cygnus.com>
11628
11629	* except.c (expand_throw): Don't expand the cleanup tree here,
11630	since we are not going to write the rtl out.  Fixes problem with
11631	-g -O on SPARC.
11632
11633Mon Jan 27 16:24:35 1997  Sean McNeil  <sean@mcneil.com>
11634
11635	* Make-lang.in: Add $(exeext) as necessary.
11636
11637Mon Jan 27 13:20:39 1997  Mike Stump  <mrs@cygnus.com>
11638
11639	* parse.y (handler_seq): Must have at least one catch clause.
11640
11641Sat Jan 25 12:00:05 1997  Jason Merrill  <jason@yorick.cygnus.com>
11642
11643	* call.c (add_builtin_candidate): Restore ?: hack.
11644
11645	* decl.c (grok_op_properties): More warnings.
11646
11647Sat Jan 25 08:50:03 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11648
11649	* decl.c (duplicate_decls): On second thought, do it as a pedwarn
11650	still but only if !DECL_IN_SYSTEM_HEADER (olddecl).
11651
11652	* decl.c (duplicate_decls): Scale back to a warning, and only do
11653	'em if -pedantic.
11654
11655Fri Jan 24 17:52:54 1997  Mike Stump  <mrs@cygnus.com>
11656
11657	* decl.c (duplicate_decls): pedwarn mismatched exception
11658	specifications.
11659
11660Thu Jan 23 18:18:54 1997  Mike Stump  <mrs@cygnus.com>
11661
11662	* call.c (build_new_method_call): Don't display the invisible
11663	argument for controlling virtual bases.
11664
11665Thu Jan 23 16:48:10 1997  Mike Stump  <mrs@cygnus.com>
11666
11667	* new: Add nothrow new and delete, bad_alloc and throw specifications
11668	for delete.
11669	* decl.c (init_decl_processing): Add throw specification for delete.
11670	* new.cc (nothrow): Define.
11671	* lex.c (real_yylex): Removing warning that throw and friends are
11672	keywords.
11673	* new1.cc (operator new (size_t sz, const nothrow_t&)): Define.
11674	* new2.cc (operator new[] (size_t sz, const nothrow_t&): Define.
11675	* Make-lang.in: Add new{1,2}.{cc,o}.
11676
11677Thu Jan 23 16:39:06 1997  Jason Merrill  <jason@yorick.cygnus.com>
11678
11679	* lex.c (cons_up_default_function): Fix return type of synth op=.
11680
11681	* init.c (emit_base_init): Add warnings for uninitialized members
11682	and bases.
11683
11684	* decl.c (xref_basetypes): Add warning for non-polymorphic type
11685	with destructor used as base type.
11686
11687	* decl.c (grok_op_properties): Add warning for op= returning void.
11688	* typeck.c (c_expand_return): Add warning for op= returning anything
11689	other than *this.
11690
11691	* class.c (finish_struct_1): Add warning for class with pointers
11692	but not copy ctor or copy op=.
11693
11694	* cp-tree.h (TI_PENDING_TEMPLATE_FLAG): New macro.
11695	* pt.c (add_pending_template): Use it instead of LANG_FLAG_0.
11696	(instantiate_template): If -fexternal-templates, add this
11697	instantiation to pending_templates.
11698
11699	* decl2.c (copy_assignment_arg_p): Disable old hack to support
11700	Booch components.
11701
11702Tue Jan 21 18:32:04 1997  Mike Stump  <mrs@cygnus.com>
11703
11704	* cvt.c (cp_convert): pedwarn enum to pointer conversions.
11705
11706Mon Jan 20 17:59:51 1997  Jason Merrill  <jason@yorick.cygnus.com>
11707
11708	* call.c (standard_conversion): Handle getting references.  Tack
11709	on RVALUE_CONV here.  Do it for non-class types, too.
11710	(reference_binding): Pass references to standard_conversion.
11711	(implicit_conversion): Likewise.
11712	(add_builtin_candidate): Disable one ?: kludge.
11713	(convert_like): Handle RVALUE_CONVs for non-class types.
11714	(joust): Disable the other ?: kludge.
11715
11716Mon Jan 20 14:53:13 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11717
11718	* decl.c (init_decl_processing): Add code to build up common
11719	function types beforehand, to avoid creation then removal of
11720	things already in the hash table.
11721
11722Mon Jan 20 14:43:49 1997  Jason Merrill  <jason@yorick.cygnus.com>
11723
11724	* decl.c (finish_function): Also zero out DECL_INCOMING_RTL for
11725	the arguments.
11726
11727	* error.c (dump_expr, TEMPLATE_CONST_PARM): Don't require
11728	current_template_parms.
11729
11730Fri Jan 17 10:25:42 1997  Jason Merrill  <jason@yorick.cygnus.com>
11731
11732	* search.c (lookup_field): Don't return a function, check want_type.
11733
11734Thu Jan 16 18:14:35 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11735
11736	* init.c (build_new): Make sure PLACEMENT has a type.
11737
11738Thu Jan 16 17:40:28 1997  Jason Merrill  <jason@yorick.cygnus.com>
11739
11740	* init.c (build_new): Support new (nothrow).
11741
11742Wed Jan 15 12:38:14 1997  Jason Merrill  <jason@yorick.cygnus.com>
11743
11744	* pt.c (instantiate_decl): Also do push_to_top_level before setting
11745	up DECL_INITIAL.
11746
11747	* cp-tree.h (PARM_DEFAULT_FROM_TEMPLATE): New macro.
11748	* pt.c (tsubst): Defer instantiation of default args.
11749	* call.c (build_over_call): Until here.
11750
11751Wed Jan 15 10:08:10 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11752
11753	* search.c (lookup_field): Make sure we have an
11754	IDENTIFIER_CLASS_VALUE before we try to return it.
11755
11756Thu Jan  9 07:19:01 1997  Brendan Kehoe  <brendan@lisa.cygnus.com>
11757
11758	* call.c (build_method_call): Delete unused var PARM.
11759	(build_overload_call_real): Likewise.
11760	(build_object_call): Delete unused var P.
11761	(build_new_op): Likewise.
11762	* decl.c (builtin_type_tdescs_{arr, len, max}): #if 0 out static
11763	var definitions, which are never used.
11764	(shadow_tag): Delete unused var FN.
11765	* expr.c (cplus_expand_expr): Delete unused var ORIGINAL_TARGET.
11766	* init.c (build_new): Delete unused var ALLOC_TEMP.
11767	* method.c (hack_identifier): Delete unused var CONTEXT.
11768	(do_build_copy_constructor): Delete unused var NAME.
11769	(synthesize_method): Delete unused var BASE.
11770	* pt.c (lookup_template_class): Delete unused var CODE_TYPE_NODE.
11771	* rtti.c (build_headof): Delete unused var VPTR.
11772	(get_typeid): Delete unused var T.
11773	* typeck.c (build_conditional_expr): Delete unused vars ORIG_OP1
11774	and ORIG_OP2.
11775	(build_ptrmemfunc): Delete unused vars U and NINDEX.
11776	* typeck2.c (build_functional_cast): Delete unused var BINFO.
11777
11778Wed Jan  8 13:09:54 1997  Jason Merrill  <jason@yorick.cygnus.com>
11779
11780	* search.c (lookup_field): Use IDENTIFIER_CLASS_VALUE to look up
11781	things in a type being defined.
11782	* decl.c (finish_enum): Reverse the values so that they are in
11783	the correct order.
11784
11785	* pt.c (instantiate_class_template): Don't initialize
11786	BINFO_BASETYPES until the vector is filled out.
11787	(unify): Don't abort on conflicting bindings, just fail.
11788	(instantiate_decl): Do push_tinst_level before any tsubsting.
11789
11790	* method.c (build_overload_value): Handle getting a
11791	TEMPLATE_CONST_PARM for a pointer.
11792
11793Tue Jan  7 14:00:58 1997  Jason Merrill  <jason@yorick.cygnus.com>
11794
11795	* init.c (expand_member_init): Don't give 'not a base' error for
11796	templates.
11797
11798	* pt.c (instantiate_decl): Call import_export_decl later.
11799
11800	* pt.c (instantiate_class_template): Return a value.
11801
11802	* parse.y (extension): New rule for __extension__.
11803	(extdef, unary_expr, decl, component_decl): Use it.
11804
11805Tue Jan  7 09:20:28 1997  Mike Stump  <mrs@cygnus.com>
11806
11807	* class.c (base_binfo): Remove unused base_has_virtual member.
11808	(finish_base_struct): Likewise.
11809	(finish_struct_1): Likewise.
11810
11811Tue Dec 31 20:25:50 1996  Mike Stump  <mrs@cygnus.com>
11812
11813	* search.c (expand_upcast_fixups): Fix bogus code generation
11814	problem where the generated code uses the wrong index into the
11815	runtime built vtable on the stack.  Old code could clobber random
11816	stack values.
11817
11818Tue Dec 31 15:16:56 1996  Mike Stump  <mrs@cygnus.com>
11819
11820	* init.c (perform_member_init): Make sure the partial EH cleanups
11821	live on the function_obstack.
11822
11823Fri Dec 27 10:31:40 1996  Paul Eggert  <eggert@twinsun.com>
11824
11825	* Make-lang.in (g++spec.o): Don't use $< with an explicit target;
11826	this isn't portable to some versions of `make' (e.g. Solaris 2.5.1).
11827
11828Tue Dec 24 10:24:03 1996  Jeffrey A Law  <law@cygnus.com>
11829
11830	* decl.c (grokvardecl): Avoid ANSI style initialization.
11831
11832Sun Dec 22 04:22:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
11833
11834	* pt.c (tsubst): Tweak arg types for a FUNCTION_TYPE.
11835
11836Fri Dec 20 17:09:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
11837
11838	* pt.c (instantiate_class_template): Call grok_{ctor,op}_properties.
11839
11840Fri Dec 20 12:17:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11841
11842	* g++spec.c (lang_specific_driver): Put missing hyphen in front of
11843	arguments we compare against.  Start the count of I at 1, not 0,
11844	since argv[0] is still the command.
11845
11846Thu Dec 19 11:53:57 1996  Stan Shebs  <shebs@andros.cygnus.com>
11847
11848	* lang-specs.h: Accept .cp as an C++ extension.
11849
11850Mon Dec 16 22:43:31 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11851
11852	* cp-tree.h (ptr_reasonably_similar): Add decl.
11853
11854Thu Dec 12 15:00:35 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11855
11856	* decl.c (grokvardecl): Change SPECBITS parm to be the SPECBITS_IN
11857	pointer.  New local SPECBITS with the parm's value.
11858	(grokdeclarator): Pass &specbits down.
11859
11860	* parse.y (expr_no_commas): Make sure $$ is not an error_mark_node
11861	before we try to do C_SET_EXP_ORIGINAL_CODE on it.
11862
11863	* search.c (envelope_add_decl): Check that the CLASSTYPE_CID of
11864	CONTEXT is not 0 before we try to use TYPE_DERIVES_FROM.
11865
11866	* decl.c (cplus_expand_expr_stmt): Only expand the expr if EXP is
11867	not an error_mark_node.
11868
11869Sat Dec  7 17:20:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
11870
11871	* cp-tree.h (TYPE_MAIN_DECL): Use TYPE_STUB_DECL.
11872	* *.c: Use TYPE_MAIN_DECL instead of TYPE_NAME where appropriate.
11873
11874Fri Dec  6 14:40:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
11875
11876	* decl.c (grokdeclarator): When giving an anonymous struct a name,
11877	replace TYPE_NAME instead of TYPE_IDENTIFIER (so TYPE_STUB_DECL is
11878	not affected).
11879
11880	* typeck2.c (build_m_component_ref): If component is a pointer
11881	to data member, resolve the OFFSET_REF now.
11882
11883	* call.c (convert_like): Don't go into infinite recursion.
11884
11885	* pt.c (coerce_template_parms): Use tsubst_expr for non-type args.
11886
11887	* class.c (finish_struct_1): Set DECL_ARTIFICIAL on the vptr.
11888	* tree.c (layout_basetypes): And on the vbase ptr.
11889
11890Thu Dec  5 02:11:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
11891
11892	* decl.c (BOOL_TYPE_SIZE): Define in terms of POINTER_SIZE or
11893	CHAR_TYPE_SIZE so bool is always the same size as another type.
11894
11895	* decl.c (pushtag): Set DECL_IGNORED_P for DWARF, too.
11896
11897Tue Dec  3 23:18:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
11898
11899	* decl2.c (grok_x_components): Remove synthesized methods from
11900	TYPE_METHODS of an anonymous union, complain about member
11901	functions.
11902	* decl.c (shadow_tag): Wipe out memory of synthesized methods in
11903	anonymous unions.
11904	(finish_function): Just clear the DECL_RTL of our arguments.
11905
11906Fri Nov 29 21:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
11907
11908	* decl2.c (finish_file): Emit DWARF debugging info for static data
11909	members.
11910
11911	* pt.c (tsubst): If t is a stub decl, return the stub decl for type.
11912
11913Wed Nov 27 14:47:15 1996  Bob Manson  <manson@charmed.cygnus.com>
11914
11915	* typeck.c (build_component_ref): Don't die if COMPONENT isn't a
11916	IDENTIFIER_NODE.
11917
11918Wed Nov 27 16:05:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
11919
11920	* Make-lang.in (g++-cross$(exeext)): Fix typo.
11921
11922Wed Nov 27 08:14:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11923
11924	Make the g++ driver now be a standalone program, rather than one
11925	that tries to run the gcc driver after munging up the options.
11926	* Make-lang.in (g++.c, g++spec.o): New rules.
11927	(g++.o): New rule, based on gcc.o with -DLANG_SPECIFIC_DRIVER
11928	added.
11929	(g++$(exeext)): New rule, based on xgcc rule.
11930	(g++-cross$(exeext)): Now just copies g++$(exeext) over.
11931	* g++spec.c: New file.
11932	* g++.c: Removed file.
11933
11934Tue Nov 26 19:01:09 1996  Mike Stump  <mrs@cygnus.com>
11935
11936	* cvt.c (build_up_reference): Arrange for any temporary values
11937	that have been keep in registers until now to be put into memory.
11938
11939Mon Nov 25 15:16:41 1996  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
11940
11941	* Make-lang.in (c++.stage[1234]): Depend upon stage[1-4]-start, so
11942	that make -j3 bootstrap works better.
11943
11944Sun Nov 24 02:09:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
11945
11946	* decl.c (pushtag): Do pushdecl for anon tags.
11947
11948Thu Nov 21 16:30:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
11949
11950	* typeck.c (c_expand_return): Fix logic.
11951	(unary_complex_lvalue): Avoid unused warning on address of INIT_EXPR.
11952
11953Wed Nov 20 18:47:31 1996  Bob Manson  <manson@charmed.cygnus.com>
11954
11955	* g++.c (main): Make sure arglist has a final NULL entry.  Add
11956	PEXECUTE_LAST to the flags passed to pexecute, as otherwise
11957	stdin/stdout of the invoked program are redirected to
11958	nowheresville.
11959
11960Tue Nov 19 16:12:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
11961
11962	* decl.c (implicitly_declare): Set DECL_ARTIFICIAL.
11963
11964Tue Nov 19 15:48:19 1996  Mike Stump  <mrs@cygnus.com>
11965
11966	* init.c (resolve_offset_ref): Handle obj.vfn better.
11967	* typeck.c (build_component_ref): Set TREE_TYPE on result from
11968	build_vfn_ref.
11969
11970Tue Nov 19 13:14:33 1996  Mike Stump  <mrs@cygnus.com>
11971
11972	* typeck.c (convert_for_assignment): Also handle anachronistic
11973	implicit conversions from (::*)() to cv void*.
11974	* cvt.c (cp_convert_to_pointer): Likewise.
11975
11976Mon Nov 18 17:05:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
11977
11978	* lex.c (handle_cp_pragma): Fix bogus warning.
11979
11980Mon Nov 18 16:10:43 1996  Mike Stump  <mrs@cygnus.com>
11981
11982	* cvt.c (cp_convert_to_pointer): Avoid thinking a POINTER_TYPE
11983	(METHOD_TYPE) is a TYPE_PTRMEMFUNC_P.
11984
11985Thu Nov 14 23:18:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
11986
11987	* class.c (finish_struct_1): Support DWARF2_DEBUG.
11988	* search.c (dfs_debug_mark): Likewise.
11989	* decl2.c (finish_vtable_vardecl): Likewise.
11990	* decl.c (pushtag, finish_enum): Likewise.
11991	* lex.c (check_newline): Use debug_* instead of calling *out
11992	functions directly.
11993
11994Thu Nov 14 15:21:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
11995
11996	* Make-lang.in (cplib2.ready): Add else clause to avoid problems
11997	on some picky hosts.
11998
11999Wed Nov 13 12:32:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
12000
12001	* class.c (finish_struct_1): A class has a non-trivial copy
12002	constructor if it has virtual functions.
12003
12004	* cvt.c (cp_convert): Always call a constructor.
12005
12006	* call.c (reference_binding): Still tack on a REF_BIND
12007	for bad conversions.
12008	(build_user_type_conversion_1): Propagate ICS_BAD_FLAG.
12009
12010	* typeck.c (convert_arguments): Pass LOOKUP_ONLYCONVERTING.
12011	(c_expand_return): Likewise.
12012	* typeck2.c (digest_init): Likewise for { }.
12013	* init.c (expand_aggr_init_1): Keep the CONSTRUCTOR handling.
12014	* cvt.c (cp_convert): Handle failure better.
12015
12016Wed Nov 13 11:51:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12017
12018	* g++.c (main): Also set PEXECUTE_SEARCH, to make the invocation
12019	of GCC be path-relative.
12020
12021Wed Nov 13 11:27:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
12022
12023	* Make-lang.in (g++-cross): G++-cross doesn't need version.o, but
12024	it does need choose-temp.o and pexecute.o.
12025
12026Wed Nov 13 07:53:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12027
12028	* g++.c (error) [!HAVE_VPRINTF]: Put error back for the only time
12029	that we still use it.
12030	(P_tmpdir, R_OK, W_OK, X_OK) [__MSDOS__]: Delete unnecessary macros.
12031
12032Wed Nov 13 02:00:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
12033
12034	* init.c (expand_default_init): Avoid calling constructors to
12035	initialize reference temps.
12036
12037	* cvt.c (convert_to_reference): Fix.
12038
12039Tue Nov 12 19:10:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
12040
12041	* cvt.c (cp_convert): Simplify for flag_ansi_overloading.
12042	(convert_to_reference): Likewise.
12043	* typeck.c (convert_for_initialization): Likewise.
12044	* init.c (expand_default_init): Likewise.
12045	(expand_aggr_init_1): Likewise.
12046	* cp-tree.h (CONV_NONCONVERTING): Lose.
12047	* typeck.c (build_c_cast): Lose allow_nonconverting parm.
12048	* *.c: Adjust.
12049	* call.c (build_user_type_conversion_1): Assume LOOKUP_ONLYCONVERTING.
12050
12051Tue Nov 12 16:29:04 1996  Brendan Kehoe  <brendan@canuck.cygnus.com>
12052
12053	* pt.c (tsubst_expr): Reverse args to expand_start_catch_block.
12054
12055Tue Nov 12 15:26:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
12056
12057	* init.c (expand_aggr_init_1): Don't crash on non-constructor
12058	TARGET_EXPR.
12059
12060Tue Nov 12 14:00:50 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12061
12062	* g++.c: Include gansidecl.h.
12063	(VPROTO, PVPROTO, VA_START): Delete.
12064	(choose_temp_base_try, choose_temp_base, perror_exec,
12065	run_dos) [__MSDOS__]: Delete fns.
12066	(pfatal_with_name): Delete fn.
12067	(temp_filename): Declare like in gcc.c.
12068	(pexecute, pwait, choose_temp_base): Declare from gcc.c.
12069	(error_count, signal_count): Define.
12070	(error): Delete both definitions.
12071	(PEXECUTE_{FIRST,LAST,SEARCH,VERBOSE}): Define from gcc.c.
12072	(pfatal_pexecute): Add fn from gcc.c.
12073	(main): Rename local VERBOSE var to VERBOSE_FLAG.  Rewrite the
12074	code to use the pexecute stuff also used by gcc.c.
12075	(MIN_FATAL_STATUS): Define.
12076	* Make-lang.in (g++): Add dependency on and linking with
12077	choose-temp.o and pexecute.o.
12078
12079	* cp-tree.h: Include gansidecl.h.
12080	(STDIO_PROTO): Delete #undef/#define.
12081	* cvt.c (NULL): Delete #undef/#define.
12082	* expr.c (NULL): Likewise.
12083	* init.c (NULL): Likewise.
12084	* rtti.c (NULL): Likewise.
12085	* xref.c (NULL): Likewise.
12086
12087	* cp-tree.h (build_user_type_conversion): Add prototype.
12088	* call.c (build_user_type_conversion): Delete prototype.  Correct
12089	decl of FLAGS arg to be an int.
12090	* cvt.c (build_user_type_conversion): Likewise.
12091
12092Tue Nov 12 12:16:20 1996  Jason Merrill  <jason@yorick.cygnus.com>
12093
12094	* cp-tree.def: Add TRY_BLOCK and HANDLER.
12095	* except.c (expand_start_catch_block): Support templates.
12096	* parse.y (try_block, handler_seq): Likewise.
12097	* pt.c (tsubst_expr): Support TRY_BLOCK and HANDLER.
12098
12099Mon Nov 11 13:57:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
12100
12101	* pt.c (current_template_args): New fn.
12102	(push_template_decl): Use it.
12103	* decl.c (grokdeclarator): Use it.
12104
12105	* decl2.c (build_expr_from_tree): Dereference ref vars.
12106
12107	* decl.c (grokdeclarator): Generalize handling of TYPENAME_TYPEs in
12108	the decl-specifier-seq.
12109
12110	* decl.c (grok_op_properties): Don't force the type of a conversion
12111	op to be complete.  Don't warn about converting to the same type
12112	for template instantiations.
12113
12114	* decl2.c (finish_file): Don't call instantiate_decl on synthesized
12115	methods.
12116
12117Mon Nov 11 13:20:34 1996  Bob Manson  <manson@charmed.cygnus.com>
12118
12119	* typeck.c (get_delta_difference): Remove previous bogusness.
12120	Don't give errors if force is set.
12121
12122Fri Nov  8 17:38:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
12123
12124	* decl2.c (finish_file): Don't emit debug info.
12125	* decl.c (pushdecl): Lose obsolete code.
12126	(grokdeclarator): Still do the long long thing after complaining.
12127	* search.c (note_debug_info_needed): Don't do anything if we're in a
12128	template.
12129	* method.c (synthesize_method): For non-local classes,
12130	push_to_top_level first.
12131
12132Fri Nov  8 11:52:28 1996  Bob Manson  <manson@charmed.cygnus.com>
12133
12134	* typeck.c (get_delta_difference): Add no_error parameter.
12135	(build_ptrmemfunc): Call get_delta_difference with no_error set;
12136	we don't want error messages when converting unrelated
12137	pointer-to-member functions.
12138
12139Thu Nov  7 11:16:24 1996  Mike Stump  <mrs@cygnus.com>
12140
12141	* error.c (dump_expr): Improve the wording on error messages that
12142	involve pointer to member functions.
12143
12144Tue Nov  5 17:12:05 1996  Mike Stump  <mrs@cygnus.com>
12145
12146	* cvt.c (cp_convert_to_pointer): Move code for conversions from
12147	(::*)() to void* or (*)() up a bit, so that we can convert from
12148	METHOD_TYPEs as well.
12149
12150Tue Nov  5 14:54:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
12151
12152	* rtti.c (get_tinfo_fn): Make sure 'type' is permanent.
12153	There are no 'member' types.
12154	(get_tinfo_fn_dynamic): Diagnose typeid of overloaded fn.
12155	(build_x_typeid): Handle errors.
12156
12157Mon Nov  4 17:43:12 1996  Mike Stump  <mrs@cygnus.com>
12158
12159	* typeck.c (convert_for_assignment): Handle anachronistic implicit
12160	conversions from (::*)() to void* or (*)().
12161	* cvt.c (cp_convert_to_pointer): Likewise.
12162	(cp_convert_to_pointer_force): Remove cp_convert_to_pointer
12163	conversions from here.
12164	* decl2.c (lang_decode_option): Add -W{no-,}pmf-conversions.
12165	* lang-options.h: Likewise.
12166	* decl2.c (warn_pmf2ptr): Define.
12167	* cp-tree.h: Declare it.
12168	* typeck2.c (digest_init): Allow pmfs down into
12169	convert_for_initialization.
12170
12171Sun Nov  3 09:43:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
12172
12173	* typeck.c (c_expand_return): Fix for returning overloaded fn.
12174
12175Fri Nov  1 08:53:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
12176
12177	* cp-tree.h (DIRECT_BIND): Change from INDIRECT_BIND.
12178	* decl.c (grok_reference_init): Pass DIRECT_BIND.
12179	* cvt.c (build_up_reference): Don't mark 'this' addressable.  Use
12180	DIRECT_BIND.
12181	* call.c (convert_like): Don't pass INDIRECT_BIND.
12182	* typeck.c (convert_arguments): Likewise.
12183	* typeck.c (mark_addressable): Allow &this if flag_this_is_variable.
12184
12185Thu Oct 31 17:08:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
12186
12187	* typeck.c (mark_addressable): Support TARGET_EXPR, unify with
12188	similar code in build_up_ref.
12189	* cvt.c (build_up_reference): Drastically simplify.
12190
12191Mon Oct 28 12:45:05 1996  Jeffrey A Law  <law@cygnus.com>
12192
12193	* typeck.c (signed_or_unsigned_type): If the given type already
12194	as the correct signedness, then just return it.
12195
12196	* typeck.c ({un,}signed_type): If can't do anything, call
12197	signed_or_unsigned_type.
12198
12199Thu Oct 24 14:21:59 1996  Bob Manson  <manson@charmed.cygnus.com>
12200
12201	* decl2.c (copy_assignment_arg_p): Don't buy the farm if
12202	current_class_type is NULL.
12203
12204Wed Oct 23 00:43:10 1996  Jason Merrill  <jason@gerbil.cygnus.com>
12205
12206	* class.c (finish_struct_1): Avoid empty structs by adding a field
12207	so layout_type gets the mode right.
12208
12209	* typeck.c (c_expand_return): Drastically simplify.
12210
12211Mon Oct 21 22:34:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
12212
12213	* typeck.c (decay_conversion): Handle overloaded methods.
12214
12215Fri Oct 18 16:03:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
12216
12217	* call.c (build_over_call): A TARGET_EXPR has side-effects.
12218
12219Thu Oct 17 11:31:59 1996  Mike Stump  <mrs@cygnus.com>
12220
12221	* cvt.c (convert_to_pointer_force): Add code to support pointer to
12222	member function to pointer to function conversions.
12223	* init.c (resolve_offset_ref): Add code to allow faked up objects,
12224	ignoring them if they are not used, and giving an error, if they
12225	are needed.
12226	* typeck.c (get_member_function_from_ptrfunc): Fold e1 to improve
12227	code, and so that we can give an error, if we needed an object,
12228	and one was not provided.
12229	(build_c_cast): Don't call default_conversion when we want to
12230	convert to pointer to function from a METHOD_TYPE.
12231
12232Mon Oct 14 00:28:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
12233
12234	* Make-lang.in (cplib2.ready): Fix logic.
12235
12236	* decl.c (shadow_tag): Only complain about non-artificial function
12237	members.
12238
12239	* class.c (finish_struct_1): Add synthesized methods to TYPE_METHODS.
12240
12241Fri Oct 11 16:12:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
12242
12243	* expr.c (cplus_expand_expr): Pre-tweak call_target like
12244	expand_inline_function would.
12245
12246	* pt.c (mark_decl_instantiated): If extern_p, call
12247	mark_inline_for_output.
12248
12249Thu Oct 10 15:58:08 1996  Mike Stump  <mrs@cygnus.com>
12250
12251	* typeck.c (unary_complex_lvalue): Add code to handle intermediate
12252	pmd conversions.
12253
12254	* typeck.c (get_delta_difference): Fix wording, as we can be used
12255	for pointer to data members.
12256
12257Tue Oct  8 12:43:51 1996  Bob Manson  <manson@charmed.cygnus.com>
12258
12259	* pt.c (tsubst): If the function decl isn't a member of this
12260	template, return a copy of the decl (including copying the
12261	lang-specific part) so we don't hose ourselves later.
12262
12263Thu Oct  3 16:24:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
12264
12265	* class.c (finish_struct): Remove DWARF-specific tag handling.
12266	* decl.c (pushtag): Likewise.
12267	(finish_function): Always clear DECL_ARGUMENTS on function decls with
12268	no saved RTX.
12269	* decl2.c (finish_file): Emit DWARF debugging info for static data
12270	members.
12271
12272Wed Oct  2 21:58:01 1996  Bob Manson  <manson@charmed.cygnus.com>
12273
12274	* decl.c (duplicate_decls): Make sure the old DECL_LANG_SPECIFIC
12275	isn't the same as the new one before we whack it.
12276
12277Mon Sep 30 13:38:24 1996  Jason Merrill  <jason@yorick.cygnus.com>
12278
12279	* class.c, cp-tree.h, cvt.c, decl.c, decl2.c, gxx.gperf, hash.h,
12280	lex.c, method.c, parse.y, typeck.c, typeck2.c: Remove
12281	warn_traditional and warn_strict_prototypes; remove ancient
12282	'overload' code; remove references to flag_traditional.
12283
12284Mon Sep 30 12:58:40 1996  Mike Stump  <mrs@cygnus.com>
12285
12286	* input.c (sub_getch): Handle 8-bit characters in string literals.
12287
12288Sun Sep 29 03:12:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
12289
12290	* tree.c (mapcar): Handle CONSTRUCTORs.
12291	(copy_to_permanent): Handle expression_obstack properly.
12292
12293	* Make-lang.in (cplib2.txt): Also depend on the headers.
12294
12295	* rtti.c (get_tinfo_var): Don't assume that POINTER_SIZE ==
12296	INT_TYPE_SIZE.
12297	(expand_class_desc): Use USItype for offset field.
12298	* tinfo.h (struct __class_type_info): Likewise.
12299
12300	* method.c (build_overload_int): TYPE_PRECISION should be applied
12301	to types.
12302
12303Sat Sep 28 14:44:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
12304
12305	* call.c (build_new_op): A COND_EXPR involving void must be a
12306	builtin.
12307
12308Fri Sep 27 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
12309
12310	* typeck.c (build_x_component_ref): New fn.
12311	(build_object_ref): Use it.
12312	* parse.y (primary): Use it.
12313	* decl2.c (build_expr_from_tree): Use it.
12314	* cp-tree.h: Declare it.
12315
12316	* decl.c (start_decl): Variable-sized arrays cannot be initialized.
12317	* error.c (dump_type_suffix): Handle variable arrays.
12318
12319Fri Sep 27 13:14:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12320
12321	* Make-lang.in (exception.o): Put back compiling it with -fPIC.
12322
12323Fri Sep 27 03:00:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
12324
12325	* decl.c (lookup_name_real): Don't try to look up anything in a
12326	TYPENAME_TYPE.
12327
12328	* tinfo2.cc (__throw_type_match_rtti): Oops.
12329
12330Thu Sep 26 22:11:05 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12331
12332	* Make-lang.in (exception.o): Use -fno-PIC for now.
12333
12334Thu Sep 26 10:59:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
12335
12336	* rtti.c (build_dynamic_cast): Pass tinfo fns rather than
12337	calling them.
12338	(get_tinfo_fn_dynamic): Extracted from build_typeid.
12339	* tinfo2.cc (__dynamic_cast): Adjust.
12340
12341	* rtti.c (build_typeid): Use resolves_to_fixed_type_p.
12342	(build_x_typeid): Likewise.
12343
12344	* parse.y: Call build_x_typeid instead of build_typeid.
12345	* cp-tree.def: Add TYPEID_EXPR.
12346	* pt.c (tsubst_copy): Handle typeid.
12347	* decl2.c (build_expr_from_tree): Likewise.
12348	* rtti.c (build_x_typeid): Throw bad_typeid from here.
12349	(build_typeid): Not here.
12350	* cp-tree.h: Declare build_x_typeid.
12351
12352Wed Sep 25 17:26:16 1996  Jason Merrill  <jason@yorick.cygnus.com>
12353
12354	* call.c (convert_like): Pull out constant values.
12355
12356	* tree.c (mapcar): Use build_cplus_array_type, not build_array_type.
12357
12358Wed Sep 25 17:28:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
12359
12360	* decl.c (init_decl_processing): Create short int types before
12361	creating size_t in case a machine description needs to use
12362	unsigned short for size_t.
12363
12364Tue Sep 24 18:18:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
12365
12366	* Make-lang.in (exception.o): Turn off pic.
12367
12368	* tinfo2.cc (__throw_type_match_rtti): Fix cv-variants of the same
12369	type, multi-level ptr conversions.
12370
12371	* rtti.c (call_void_fn): Renamed and genericized from throw_bad_cast.
12372	(throw_bad_cast): Use it.
12373	(throw_bad_typeid): New fn.
12374	(build_typeid): Throw bad_typeid as needed.
12375	Use build_call.
12376	(synthesize_tinfo_fn): Handle functions and arrays before checking
12377	for cv-quals.
12378
12379	* Remove .h from standard C++ headers, add new.h, move into inc
12380	subdirectory.
12381
12382	* exception*: Remove pointer from object, constructors.  Add
12383	default exception::what that uses type_info::name.  Add
12384	__throw_bad_typeid.
12385
12386	* init.c (build_new): Don't add a cookie to new (void *) T[2].
12387
12388Mon Sep 23 15:21:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
12389
12390	* Make-lang.in: Building C++ code depends on cc1plus.
12391
12392Mon Sep 23 12:38:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12393
12394	* decl.c (struct saved_scope): Declare PROCESSING_TEMPLATE_DECL as
12395	a HOST_WIDE_INT, not a tree.
12396
12397Mon Sep 23 12:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
12398
12399	* exception.cc: Don't include <stdlib.h>.
12400
12401	* Make-lang.in (c++.clean): Remove cplib2.*.
12402
12403Mon Sep 23 09:42:19 1996  Doug Evans  <dje@canuck.cygnus.com>
12404
12405	* parse.y (component_decl_1, component_costructor_declarator case):
12406	Pass attributes/prefix_attributes in tree list.
12407
12408Mon Sep 23 01:18:50 1996  Jason Merrill  <jason@yorick.cygnus.com>
12409
12410	* tinfo{,2}.cc: #include <stddef.h> instead of <stdlib.h>.
12411
12412Sun Sep 22 05:31:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
12413
12414	* lex.c (do_identifier): Don't do deferred lookup in a template
12415	header.
12416
12417	* typeck2.c (store_init_value): Oops.
12418
12419	* new.{h,cc}, exception.{h,cc}, typeinfo.h, tinfo{2.cc,.cc,.h}:
12420	New files for C++ lang-support library.
12421	* Make-lang.in (CXX_EXTRA_HEADERS): Define.
12422	(CXX_LIB2FUNCS): Define.
12423	And rules for building the C++ lang-support code.
12424	* config-lang.in (headers): Define.
12425	(lib2funcs): Define.
12426
12427Sat Sep 21 19:17:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
12428
12429	* decl2.c (build_expr_from_tree): If CONSTRUCTOR has a type, call
12430	digest_init.
12431	* pt.c (tsubst_copy): Compute type for CONSTRUCTOR.
12432	* typeck2.c (store_init_value): Check for initializing pmf with { }
12433	here.
12434	(process_init_constructor): Not here.
12435
12436Thu Sep 19 16:41:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
12437
12438	* pt.c (begin_template_parm_list): Increment
12439	processing_template_decl here.
12440	(end_template_parm_list): Not here.
12441	(process_template_parm): No need to add 1 to it now.
12442	* *.c: Use processing_template_decl instead of current_template_parms
12443	to check for being in a template.
12444
12445	* pt.c (uses_template_parms): Handle SCOPE_REF.  Fix CONSTRUCTOR.
12446	(tsubst_copy): Handle CONSTRUCTOR.
12447	(instantiate_decl): Set up context properly for variables.
12448	* decl2.c (build_expr_from_tree): Handle CONSTRUCTOR.
12449	* class.c (finish_struct): Reverse CLASSTYPE_TAGS.
12450
12451Wed Sep 18 13:30:20 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12452
12453	* lex.c (enum tree_node_kind) [GATHER_STATISTICS]: Put the enum back.
12454
12455Wed Sep 18 04:24:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
12456
12457	* method.c (make_thunk): Call comdat_linkage before setting the
12458	TREE_CODE.
12459
12460	* decl2.c (comdat_linkage): Use make_decl_one_only.
12461	(import_export_decl): Likewise.
12462	* decl.c (init_decl_processing): Check supports_one_only instead of
12463	SUPPORTS_WEAK.
12464
12465Sat Sep 14 08:34:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
12466
12467	* decl2.c (grokfield): Tighten checking for access decls.
12468
12469	* decl.c (make_typename_type): Resolve references to
12470	current_class_type.  Set CLASSTYPE_GOT_SEMICOLON.
12471	(lookup_name_real): Types that depend on a template parameter get
12472	an implicit 'typename' unless they're in the current scope.
12473	(start_decl_1): We don't care about incomplete types that depend
12474	on a template parm.
12475	(grokdeclarator): Resolve 'typename's in the type specifier that
12476	refer to members of the current scope.
12477
12478	* call.c (build_over_call): Remove 'inline called before
12479	definition' diagnostic.
12480	(build_method_call): Likewise.
12481	* decl.c (duplicate_decls): Downgrade 'used before declared
12482	inline' to a warning, only with -Winline.
12483
12484Fri Sep 13 17:31:40 1996  Stan Shebs  <shebs@andros.cygnus.com>
12485
12486	* mpw-make.sed: Fix include paths, add @DASH_C_FLAG@ to compile.
12487
12488Wed Sep 11 22:38:13 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
12489
12490	* call.c (build_method_call): When calling a signature
12491	default implementation, as in other cases, let instance_ptr simply
12492	be instance.
12493
12494Wed Sep 11 22:14:44 1996  Mike Stump  <mrs@cygnus.com>
12495
12496	* parse.y (simple_stmt): Cleanup and use do_poplevel ().
12497
12498Wed Sep 11 22:10:48 1996  Mike Stump  <mrs@cygnus.com>
12499
12500	* except.c (expand_start_catch_block): Add a pushlevel so that -g
12501	works on hppa and SPARC.
12502
12503Wed Sep 11 10:18:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12504
12505	* typeck.c (build_indirect_ref): Catch PTR being an error_mark_node.
12506
12507Mon Sep  9 19:51:14 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
12508
12509	* call.c (build_over_call): Check first whether DECL_CONTEXT exists
12510	before testing whether it's a signature.
12511
12512Sun Sep  8 16:06:57 1996  Gerald Baumgartner  <gb@cs.purdue.edu>
12513
12514	* call.c (build_new_method_call): Don't complain about signature
12515	pointers and references not being an aggr type.
12516	(build_this): If a signature pointer or reference was passed in,
12517	just return it.
12518	(build_new_method_call): If instance is a signature pointer, set
12519	basetype to the signature type of instance.
12520	* sig.c (build_signature_method_call): Deleted basetype and
12521	instance parameters, they can be found as the DECL_CONTEXT of
12522	function and as the first argument passed in.
12523	* cp-tree.h: Changed declaration of build_signature_method_call.
12524	* call.c (build_method_call): Deleted first two arguments in call
12525	of build_signature_method_call.
12526	(build_over_call): Added call to build_signature_method_call.
12527
12528Thu Sep  5 16:51:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
12529
12530	* typeck.c (build_c_cast): Don't tack a non_lvalue_expr onto a
12531	target_expr.
12532
12533Thu Sep  5 10:05:38 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
12534
12535	* cvt.c (convert_to_reference): Use %#T, not %#D, for error.
12536
12537Wed Sep  4 17:16:09 1996  Bob Manson  <manson@charmed.cygnus.com>
12538
12539	* except.c (expand_start_try_stmts): Move to except.c in the backend.
12540	(expand_end_try_stmts): Remove.
12541
12542	* init.c (perform_member_init): Use add_partial_entry () instead
12543	of directly manipulating lists.
12544	(emit_base_init): Likewise.
12545
12546Wed Sep  4 12:14:36 1996  Mike Stump  <mrs@cygnus.com>
12547
12548	* except.c (expand_exception_blocks): Always make sure USE and
12549	CLOBBER insns that came at the end still do, the backend relies
12550	upon this.
12551
12552Wed Sep  4 07:44:48 1996  Jason Merrill  <jason@yorick.cygnus.com>
12553
12554	* call.c (build_over_call): We can only use a TARGET_EXPR of the
12555	right type.
12556
12557Tue Sep  3 19:26:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
12558
12559	* cvt.c (convert_to_reference): Revert last change, don't complain
12560	about temp without target decl.
12561
12562Tue Sep  3 10:22:56 1996  Mike Stump  <mrs@cygnus.com>
12563
12564	* decl.c (grokdeclarator): Don't core dump when void() is given.
12565
12566Tue Sep  3 02:38:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
12567
12568	* decl.c (copy_args_p): Don't crash.
12569
12570Fri Aug 30 14:26:57 1996  Mike Stump  <mrs@cygnus.com>
12571
12572	* pt.c (tsubst): And support template args inside the exception
12573	specification.
12574
12575	* pt.c (tsubst): Add support for exception specifications in
12576	template functions.
12577
12578Fri Aug 30 10:01:55 1996  Mike Stump  <mrs@cygnus.com>
12579
12580	* cp-tree.def (DECL_STMT): Eliminate the throw spec field, only 3
12581	fields now.
12582	* cp-tree.h (start_decl): Eliminate the throw spec parameter.
12583	(start_function): Likewise.
12584	(start_method): Likewise.
12585	(grokfield): Likewise.
12586	(make_call_declarator): Add throw spec parameter.
12587	(set_quals_and_spec): Add routine.
12588	* lex.c (set_quals_and_spec): Likewise.
12589	* decl.h (grokdeclarator): Eliminate the throw spec parameter.
12590	* decl.c (shadow_tag): Eliminate the throw spec parameter to
12591	grokdeclarator.
12592	(groktypename): Likewise.
12593	(start_decl): Eliminate the throw spec parameter.  Eliminate the
12594	throw spec parameter to grokdeclarator.  Eliminate the throw spec
12595	field in DECL_STMT.
12596	(cp_finish_decl): Eliminate the throw spec field in DECL_STMT.
12597	(grokfndecl): Remove useless set of raises.
12598	(grokdeclarator): Eliminate the throw spec parameter.  Eliminate
12599	the throw spec parameter to start_decl.  Pull the throw spec out
12600	of the call declarator.
12601	(grokparms): Eliminate the throw spec parameter to grokdeclarator.
12602	(start_function): Eliminate the throw spec parameter.  Eliminate
12603	the throw spec parameter to grokdeclarator.
12604	(start_method): Likewise.
12605	* decl2.c (grokfield): Likewise.
12606	(grokbitfield): Eliminate the throw spec parameter to grokdeclarator.
12607	(grokoptypename): Likewise.
12608	(finish_file): Eliminate the throw spec parameter to
12609	start_function.  Add throw spec to make_call_declarator.
12610	* except.c (init_exception_processing): Add throw spec to
12611	make_call_declarator.  Eliminate the throw spec parameter to
12612	start_decl.
12613	(expand_start_catch_block): Eliminate the throw spec parameter to
12614	grokdeclarator.
12615	(expand_builtin_throw): Add throw spec to make_call_declarator.
12616	Eliminate the throw spec parameter to start_function.
12617	(start_anon_func): Likewise.
12618	* lex.c (make_call_declarator): Add throw spec parameter.
12619	(set_quals_and_spec): New routine.
12620	(cons_up_default_function): Add throw spec to make_call_declarator.
12621	Eliminate the throw spec parameter to grokfield.
12622	* method.c (synthesize_method): Eliminate the throw spec parameter
12623	to start_function.
12624	* pt.c (process_template_parm): Eliminate the throw spec parameter
12625	to grokdeclarator.
12626	(tsubst): Add throw spec to make_call_declarator.
12627	(tsubst_expr): Eliminate the throw spec parameter to start_decl.
12628	(do_function_instantiation): Eliminate the throw spec parameter to
12629	grokdeclarator.  Eliminate the throw spec parameter to
12630	start_function.
12631	* rtti.c (synthesize_tinfo_fn): Eliminate the throw spec parameter
12632	to start_function.
12633	* parse.y (datadef): Remove non-winning optimization.
12634	(decl): Likewise.
12635	(fndef): Remove ambiguous error productions uncovered by grammar
12636	fixing.
12637	(constructor_declarator): Add exception_specification_opt here.
12638	(component_constructor_declarator): Likewise.
12639	(direct_after_type_declarator): Likewise.
12640	(complex_direct_notype_declarator): Likewise.
12641	(direct_abstract_declarator): Likewise.
12642	(fn.def1): Remove exception_specification_opt.
12643	(fn.def2): Likewise.
12644	(condition): Likewise.
12645	(initdcl0): Likewise.
12646	(initdcl): Likewise.
12647	(notype_initdcl0): Likewise.
12648	(nomods_initdcl0): Likewise.
12649	(component_decl_1): Likewise.
12650	(component_declarator): Likewise.
12651	(after_type_component_declarator0): Likewise.
12652	(after_type_component_declarator): Likewise.
12653	(notype_component_declarator): Likewise.
12654
12655Wed Aug 28 01:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
12656
12657	* call.c (build_over_call): Also use an INIT_EXPR when
12658	initializing anything from an rvalue.
12659
12660	* call.c (build_over_call): Call stabilize_reference when building
12661	an INIT_EXPR instead of calling the copy ctor.
12662
12663	* call.c (joust): Extend the previous change to all comparisons.
12664
12665	* decl2.c, method.c, lex.c: Use MAKE_DECL_ONE_ONLY and
12666	NO_LINKAGE_HEURISTICS.
12667
12668	* decl2.c (finish_file): Emit any statics that weren't already.
12669
12670	* typeck.c (build_static_cast): Implement.
12671	* tree.c (build_cplus_new): Handle getting a TARGET_EXPR.
12672	* decl.c (grokparms): Use can_convert_arg instead of
12673	implicit_conversion directly.
12674	(copy_args_p): New fn.
12675	* cvt.c (convert_to_reference): Don't complain about temp with
12676	static_cast.
12677	(build_up_reference): Handle TARGET_EXPRs.
12678	* call.c (build_over_call): Elide unnecessary temps.
12679	(can_convert*): Use new overloading code.
12680
12681Tue Aug 27 13:12:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
12682
12683	* call.c: Move TYPE_PTR*_MACROS ...
12684	* cp-tree.h: To here.
12685	* typeck.c (build_reinterpret_cast): Implement.
12686
12687	* call.c (add_builtin_candidate): Use TYPE_PTROB_P instead of
12688	ptr_complete_ob.
12689	(joust): If we're comparing a function to a builtin and the worst
12690	conversion for the builtin is worse than the worst conversion for the
12691	function, take the function.
12692
12693	* typeck.c (build_const_cast): Implement.
12694	(comp_ptr_ttypes_const): Like comp_ptr_ttypes, for const_cast.
12695	(comp_ptr_ttypes_reinterpret): Like cpt, for reinterpret_cast.
12696
12697Tue Aug 27 13:14:58 1996  Bob Manson  <manson@charmed.cygnus.com>
12698
12699	* rtti.c (build_dynamic_cast): Don't try to dereference exprtype
12700	too early.  Make sure we explode if exprtype turns out to be a
12701	NULL_TREE when it shouldn't be.
12702
12703Tue Aug 27 10:56:21 1996  Mike Stump  <mrs@cygnus.com>
12704
12705	* cp-tree.h: New routine make_call_declarator.
12706	* lex.c (make_call_declarator): Define it.
12707	* except.c (init_exception_processing): Use it.
12708	(expand_builtin_throw): Likewise.
12709	(start_anon_func): Likewise.
12710	* decl2.c (finish_file): Likewise.
12711	* lex.c (cons_up_default_function): Likewise.
12712	* parse.y: Likewise.
12713	* pt.c (tsubst): Likewise.
12714
12715Mon Aug 26 17:40:03 1996  Mike Stump  <mrs@cygnus.com>
12716
12717	* decl2.c (groktypefield): Remove unused code.
12718
12719Mon Aug 26 17:00:33 1996  Mike Stump  <mrs@cygnus.com>
12720
12721	* gxx.gperf: Change TYPE_QUAL into CV_QUALIFIER.
12722	* parse.y: Likewise.  Change maybe_type_qual into maybe_cv_qualifier.
12723	Change type_quals into cv_qualifiers.  Change nonempty_type_quals into
12724	nonempty_cv_qualifiers.
12725	* hash.h: Rebuild.
12726
12727	* lex.c (make_pointer_declarator): Change type_quals into
12728	cv_qualifiers.
12729	(make_reference_declarator): Likewise.
12730
12731Thu Aug 22 01:09:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
12732
12733	* decl.c (start_function): Only check interface_* for templates
12734	with flag_alt_external_templates.
12735
12736	* call.c (build_new_op): Check for comparison of different enum types.
12737	(build_over_call): Fix arg # output.
12738
12739	* typeck.c (build_component_ref): Handle pre-found TYPE_DECL.
12740
12741Wed Aug 21 00:13:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
12742
12743	* call.c (build_new_op): Check for erroneous args.
12744
12745	* call.c (build_new_method_call): Add missing args to cp_error.
12746
12747	* tree.c (error_type): Don't print reference-to-array.
12748
12749	* typeck.c (convert_for_assignment): Don't say contravariance for
12750	removing const.
12751
12752Tue Aug 20 13:23:00 1996  Jason Merrill  <jason@yorick.cygnus.com>
12753
12754	* call.c (build_over_call): Diagnose bad convs for `this'.
12755
12756	* lex.c (cons_up_default_function): Set DECL_ARTIFICIAL
12757	on _ctor_arg.
12758
12759	* call.c (convert_like): Handle bad convs.
12760	(build_over_call): Handle bad convs better.
12761
12762	* decl2.c: -fansi-overloading is now the default.
12763
12764	* call.c (build_new_method_call): Check for erroneous args.
12765
12766	* pt.c (instantiate_class_template): Propagate
12767	TYPE_USES_MULTIPLE_INHERITANCE.
12768
12769Tue Aug 20 13:09:57 1996  Mike Stump  <mrs@cygnus.com>
12770
12771	* call.c (enforce_access): Add static to routine.
12772
12773Sun Aug 18 14:35:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
12774
12775	* call.c (build_user_type_conversion_1): Fix bad handling.
12776	(compare_ics): Likewise.
12777
12778Sat Aug 17 21:54:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
12779
12780	* call.c (standard_conversion): Oops.
12781
12782Sat Aug 17 16:28:11 1996  Geoffrey Noer  <noer@cygnus.com>
12783
12784	* g++.c: Update test for win32 (&& ! cygwin32).
12785
12786Sat Aug 17 03:45:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
12787
12788	* typeck.c (comp_ptr_ttypes_real): Handle OFFSET_TYPEs properly.
12789	(ptr_reasonably_similar): New fn.
12790	* call.c (BAD_RANK): New rank.
12791	(ICS_BAD_FLAG): New macro.
12792	(standard_conversion): Handle almost-right pointer conversions.
12793	(reference_binding): Handle bad rvalue bindings.
12794	(add_*_candidate): Stuff.
12795	(build_over_call): Pass bad conversions to convert_for_initialization.
12796	(compare_ics): Handle bad convs.
12797	(joust): Likewise.
12798
12799Fri Aug 16 15:02:19 1996  Bob Manson  <manson@charmed.cygnus.com>
12800
12801	* init.c (expand_vec_init): Use ptrdiff_type_node instead of
12802	integer_type_node when computing pointer offsets.
12803
12804Fri Aug 16 01:28:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
12805
12806	* tree.c (lvalue_type): New fn.
12807	(error_type): New fn.
12808	* call.c (op_error): Use error_type.
12809	(add_conv_candidate): Use lvalue_type.
12810	(add_builtin_candidates): Likewise.
12811	* error.c (args_as_string): Use error_type.
12812
12813Thu Aug 15 17:27:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
12814
12815	* pt.c (instantiate_decl): Evaluate DECL_INITIAL of a VAR_DECL here.
12816	(tsubst): Not here.
12817
12818	* decl.c (init_decl_processing): With -ansi, __null's type is the
12819	signed integral type with the same number of bits as a pointer.
12820	Introduce a new variable null_node for it.
12821	* cp-tree.h: Adjust.
12822	* call.c (null_ptr_cst_p): Adjust.
12823
12824Thu Aug 15 17:09:54 1996  Mike Stump  <mrs@cygnus.com>
12825
12826	* except.c (do_unwind): Mark %i7 as used on the SPARC so we can
12827	optimize.
12828
12829Thu Aug 15 01:36:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
12830
12831	* decl2.c (import_export_decl): Ignore #pragma interface for tinfo
12832	fns of classes without virtual functions.
12833
12834	* call.c (add_function_candidate): Handle `this' specially.
12835	(compare_ics): Likewise.
12836
12837Tue Aug 13 12:16:10 1996  Jason Merrill  <jason@yorick.cygnus.com>
12838
12839	* typeck.c (build_conditional_expr): Fix handling of __null.
12840
12841	* decl2.c (comdat_linkage): New fn.
12842	(import_export_vtable): Use it.
12843	(import_export_decl): Use it.
12844	* method.c (make_thunk): Use it.
12845
12846Mon Aug 12 00:09:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
12847
12848	* pt.c (end_template_decl): If we don't actually have parms, return.
12849	* parse.y (template_header): Accept 'template <>'.
12850
12851	* errfn.c: Allow 5 args.
12852
12853Sun Aug 11 15:20:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
12854
12855	* tree.c (make_temp_vec): New fn.
12856	* pt.c (push_template_decl): Handle partial specs.
12857	(instantiate_class_template): Likewise.
12858	(more_specialized): Use get_bindings.
12859	(more_specialized_class): New fn.
12860	(get_class_bindings): New fn.
12861	(most_specialized_class): New fn.
12862	(do_function_instantiation): List candidates for ambiguous case.
12863	* decl.c (duplicate_decls): Lose reference to DECL_TEMPLATE_MEMBERS.
12864	(shadow_tag): Call push_template_decl for partial specializations.
12865	* parse.y: Likewise.
12866	* cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Replaces
12867	DECL_TEMPLATE_MEMBERS.
12868	* call.c (print_z_candidates): Reduce duplication.
12869
12870Fri Aug  9 14:36:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
12871
12872	* decl2.c (lang_decode_option): Allow -fansi-overloading.
12873
12874Thu Aug  8 17:04:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
12875
12876	* pt.c (get_bindings): New fn.
12877	(most_specialized): Likewise.
12878	(do_function_instantiation): Use them.
12879	(add_maybe_template): New fn.
12880	* cp-tree.h (DECL_MAYBE_TEMPLATE): New macro.
12881	* call.c (build_new_op): Handle guiding decls.
12882	(build_new_function_call): Likewise.
12883	* decl2.c (finish_file): Likewise.
12884
12885	* decl2.c (mark_used): Do synthesis here.
12886	* call.c (build_method_call): Not here.
12887	(build_over_call): Or here.
12888	* typeck.c (build_function_call_real): Or here.
12889	* tree.c (bot_manip): Call mark_used on functions used in default
12890	args.
12891
12892Thu Aug  8 17:48:16 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
12893
12894	* decl2.c (import_export_vtable): Delete code that disabled vtable
12895	heuristic on systems with ASM_OUTPUT_EXTERNAL.
12896
12897Wed Aug  7 12:44:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
12898
12899	* typeck.c (build_x_function_call): Handle static call context
12900	better.
12901
12902	* decl.c (finish_function): Set the DECL_CONTEXT of the result to
12903	the function, not its outer block.
12904
12905	* call.c (build_field_call): Pass fields on to build_opfncall
12906	regardless of TYPE_OVERLOADS_CALL_EXPR.
12907	(build_method_call): Pass on to build_new_method_call sooner.
12908
12909	* typeck.c (build_ptrmemfunc): Just return what instantiate_type
12910	gives us.
12911	* class.c (instantiate_type): Don't put a POINTER_TYPE to
12912	METHOD_TYPE on an expression.  Also make a copy of rhs instead of
12913	modifying it.
12914
12915Tue Aug  6 12:58:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
12916
12917	* call.c (compare_ics): Handle qual_conv after lvalue_conv.
12918	(add_builtin_candidate): Don't take enums for ++.
12919	(build_new_method_call): Handle non-aggregates and field calls.
12920	Move new overloading code from...
12921	* cvt.c: Here.
12922
12923	* decl.c (grokparms): Don't check default args in templates.
12924
12925Mon Aug  5 17:17:06 1996  Jason Merrill  <jason@yorick.cygnus.com>
12926
12927	* cvt.c (build_new_op): Fix args to build_unary_op.
12928	(add_builtin_candidates): Don't call type_promotes_to on float.
12929
12930	* decl.c (grokparms): Check the type of the default arg.
12931
12932	* cvt.c (build_new_op): Pass non-overloaded cases on rather than
12933	returning NULL_TREE.
12934
12935	* typeck.c (build_x_binary_op): Avoid doing extra work.
12936	(build_x_unary_op): Likewise.
12937	(build_x_conditional_expr): Likewise.
12938	* cvt.c (build_over_call): Return.
12939	(add_builtin_candidate): Fix MEMBER_REF.
12940	(build_new_op): Likewise.
12941
12942Mon Aug  5 17:07:47 1996  Mike Stump  <mrs@cygnus.com>
12943
12944	* method.c (build_overload_name): Put bug fix into code but leave
12945	disabled for now so we can be bug compatible with older releases
12946	that do repeats incorrectly.  In the future, we can enable it.
12947
12948Mon Aug  5 13:46:28 1996  Jason Merrill  <jason@yorick.cygnus.com>
12949
12950	* cvt.c (convert_like): Don't call build_cplus_new twice.
12951
12952	* call.c, cp-tree.h, cvt.c, decl2.c, init.c, method.c, pt.c, typeck.c:
12953	Control new overloading code with -fansi-overloading.
12954
12955Sun Aug  4 15:29:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
12956
12957	* cvt.c (build_over_call): Call build_cplus_new.
12958	* call.c (build_method_call): Likewise.
12959	* typeck.c (build_function_call_real): Likewise.
12960	(build_conditional_expr): If both operands are TARGET_EXPRs, wrap
12961	the COND_EXPR in a TARGET_EXPR so they use the same slot.
12962
12963	* cvt.c (build_up_reference): Propagate INDIRECT_BIND to
12964	recursive calls.
12965	* typeck.c (complete_type): Propagate
12966	TYPE_NEEDS_{CONSTRUCTING,DESTRUCTOR}.
12967
12968Sat Aug  3 14:05:07 1996  Jason Merrill  <jason@yorick.cygnus.com>
12969
12970	* cvt.c (joust): More ?: kludging.  Sigh.
12971	(build_over_call): Don't try to synthesize global fns.
12972
12973	* search.c (lookup_conversions): Use binfo marking.
12974
12975Sat Aug  3 12:33:42 1996  Bob Manson  <manson@charmed.cygnus.com>
12976
12977	* search.c (build_mi_matrix): Use the correct value of cid
12978	when determining the new mi_size.
12979
12980Sat Aug  3 01:27:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
12981
12982	* cvt.c (add_builtin_candidates): Do consider type conversion ops
12983	for the first parms of += et al.
12984	(strip_top_quals): New fn.
12985	(reference_binding): Use it instead of TYPE_MAIN_VARIANT.
12986	(implicit_conversion): Likewise.
12987	(add_builtin_candidates): Be careful about arrays.
12988	(build_new_method_call): Handle vtable optimization.
12989
12990Fri Aug  2 01:26:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
12991
12992	* cp-tree.h (LOOKUP_NO_TEMP_BIND): New flag.
12993	* cvt.c (reference_binding): Use it.
12994	(implicit_conversion): Use it.
12995	(add_builtin_candidate, COND_EXPR): Use it.
12996
12997	* cvt.c (build_new_function_call): Check for error args.
12998
12999	* typeck.c (comptypes): Just check DERIVED_FROM_P, not UNIQUELY.
13000
13001	* gxx.gperf: Add __null.
13002	* hash.h: Regenerate.
13003	* lex.h: Add RID_NULL.
13004	* lex.c (init_lex): Create null_pointer_node here, stick it in
13005	RID_NULL.
13006	* decl.c (init_decl_processing): Still set its type here.
13007	* cvt.c (cp_convert_to_pointer): Don't produce null_pointer_node.
13008	(convert_to_pointer_force): Likewise.
13009	(null_ptr_cst_p): Check for null_pointer_node; only accept (void*)0
13010	if (! pedantic).
13011	* call.c (convert_harshness): Use null_ptr_cst_p.
13012	* typeck.c (convert_for_assignment): Likewise.  Don't produce
13013	null_pointer_node.
13014
13015	* error.c (args_as_string): Handle lists of actual args, too.
13016	* cvt.c (null_ptr_cst): Support (void*)0 for now.
13017	(build_user_type_conversion_1): Improve diagnostics.
13018	(build_new_function_call): Likewise.
13019	(build_object_call): Likewise.
13020	(build_new_method_call): Likewise.  Move call before def diagnostic...
13021	(build_over_call): Here.
13022
13023	* cvt.c (build_new_method_call): Don't complain about no match if
13024	LOOKUP_SPECULATIVELY.
13025	(build_over_call): Fix 'this' for virtual fn.
13026	(build_new_method_call): Add diagnostic.
13027
13028Thu Aug  1 16:45:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
13029
13030	* cvt.c (add_function_candidate): Expect 'this' and 'in_chrg' for
13031	constructors to be passed in.
13032	(build_over_call): Likewise.
13033	(build_user_type_conversion_1): Pass them in.
13034	(convert_like): Likewise.
13035	(build_object_call): Handle overloaded conversions.
13036	(build_over_call): Pass the right args to build_vfn_ref.
13037	(standard_conversion): Fix pmf convs.
13038	(joust): Handle comparing statics and non-statics.
13039	(build_new_method_call): New fn.
13040	* call.c (build_method_call): Call it if NEW_OVER.
13041
13042Thu Aug  1 16:06:14 1996  Mike Stump  <mrs@cygnus.com>
13043
13044	* lex.c (do_identifier): Don't use %O on IDENTIFIER_OPNAME_Ps, use
13045	%D instead.
13046
13047Thu Aug  1 15:24:02 1996  Mike Stump  <mrs@cygnus.com>
13048
13049	* except.c (expand_throw): Use maybe_build_cleanup_and_delete
13050	instead of just maybe_build_cleanup so that we deallocate the
13051	thrown object.
13052
13053Thu Aug  1 15:18:00 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
13054
13055	* decl2.c (finish_prevtable_vardecl): Make non-static for pt.c's use.
13056	* cp-tree.h (finish_prevtable_vardecl): Add decl.
13057
13058Thu Aug  1 11:53:51 1996  Bob Manson  <manson@charmed.cygnus.com>
13059
13060	* pt.c (instantiate_class_template): Call complete_type.  Also, if
13061	we're at the end of the file and we just instantiated a template
13062	class with a vtable, call finish_prevtable_vardecl.
13063
13064	* error.c (dump_decl): Don't explode (or explode more gracefully
13065	as appropriate) if the object being dumped has a null type.
13066	(dump_expr): Likewise.
13067
13068	* search.c (build_mi_matrix): Ensure that mi_size is large enough,
13069	by counting the number of nodes that we'll need before allocating
13070	the array.
13071	(lookup_fnfields): Fix comment.
13072	(breadth_first_search): Fix comment.
13073
13074Wed Jul 31 09:57:05 1996  Jason Merrill  <jason@yorick.cygnus.com>
13075
13076	* pt.c (instantiate_class_template): Propagate TYPE_PACKED and
13077	TYPE_ALIGN.
13078	* class.c (finish_struct): Call cplus_decl_attributes here.
13079	(finish_struct_1): Not here.
13080	* cp-tree.h: Adjust.
13081
13082	* pt.c (type_unification): New parameter STRICT.
13083	(unify): If STRICT, don't allow cv addition or base deduction.
13084	* call.c, class.c, cvt.c, cp-tree.h: Adjust.
13085
13086Tue Jul 30 13:06:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
13087
13088	* search.c (get_template_base{_recursive}): New fns.
13089	* pt.c (more_specialized): New fn.
13090	(do_function_instantiation): Use it.
13091	(unify): Handle base deduction.
13092	* cvt.c (joust): Use more_specialized.
13093	Don't arbitrarily choose between non-builtin candidates.
13094	(build_over_call): Call require_complete_type.
13095
13096	* decl.c (start_function): Statics are static even in a #pragma
13097	interface file.
13098
13099	* decl2.c (import_export_vtable): Disable vtable heuristic on
13100	systems with ASM_OUTPUT_EXTERNAL.
13101
13102	* cvt.c (compare_ics): Fix comparison of PMEM_CONV and BASE_CONV.
13103	(standard_conversion): No std conv to enum type.
13104
13105	* cvt.c (standard_conversion): Fix order of args to DERIVED_FROM_P
13106	for ptm's.
13107
13108	* cvt.c (reference_binding): Bind directly to a base subobject of
13109	a class rvalue.
13110
13111	* cvt.c (build_new_op): Enforce access control.
13112
13113Tue Jul 30 09:22:53 1996  Bob Manson  <manson@charmed.cygnus.com>
13114
13115	* typeck2.c (process_init_constructor): When scanning the
13116	union for a named field, skip things that aren't FIELD_DECLs.
13117
13118	* method.c (synthesize_method): Don't scan fndecl's rtl if
13119	we're at the end of the file; just assume the function can't
13120	be inlined.
13121
13122Mon Jul 29 15:48:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
13123
13124	* cvt.c (build_builtin_candidate): Stick a dummy conversion in if
13125	it failed.
13126
13127	* cvt.c (build_user_type_conversion_1): Handle overloaded
13128	conversion ops.
13129
13130	* cvt.c (add_builtin_candidates): Don't consider type conversion
13131	operators for the first parameter of operator=.
13132
13133Mon Jul 29 15:33:55 1996  Bob Manson  <manson@charmed.cygnus.com>
13134
13135	* typeck.c (complete_type): Only call layout_type if we're not
13136	expanding a template.
13137
13138Mon Jul 29 14:40:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
13139
13140	* cvt.c (compare_ics): Oops.
13141
13142	* cvt.c (op_error): Oops.
13143
13144	* cp-tree.def: Add RVALUE_CONV, rename EXACT_CONV to IDENTITY_CONV.
13145	* cvt.c: Add IDENTITY_RANK before others.  Use real_lvalue_p.
13146	(build_conv): Use them.
13147	(implicit_conversion): Use them.
13148	(convert_like): Handle them.
13149	(build_new_op): Handle builtin COND_EXPR again.
13150	(add_builtin_candidates): Strip cv-quals.  Fix oops.  Include enums
13151	in lists of types for COND_EXPR.
13152	(add_builtin_candidate): Add enum candidates for COND_EXPR.
13153
13154Mon Jul 29 12:05:40 1996  Bob Manson  <manson@charmed.cygnus.com>
13155
13156	* typeck.c (build_modify_expr): Always attempt to build a call to
13157	the assignment operator, even if we're using a default one.
13158	(convert_for_initialization): Call complete_type.
13159
13160Mon Jul 29 11:25:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
13161
13162	* cvt.c (reference_binding): A REF_BIND gets the reference type.
13163	(implicit_conversion): Likewise.
13164	(convert_like): Likewise.
13165	(compare_ics): Likewise.
13166	(compare_qual): Likewise.
13167	(print_z_candidates): Handle no candidates.
13168	(build_new_op): Don't handle builtin COND_EXPR for now.
13169
13170Sat Jul 27 11:27:47 1996  Stan Shebs  <shebs@andros.cygnus.com>
13171
13172	* cvt.c (build_builtin_candidate): Init local var in an ANSI way.
13173
13174Fri Jul 26 01:07:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
13175
13176	* cvt.c (joust): If the candidates are the same, arbitrarily pick one.
13177
13178	* cvt.c (build_builtin_candidate): Oops.
13179	(build_new_op): Oops.
13180
13181	* method.c (build_opfncall): Pass COND_EXPR on.
13182	* cvt.c (build_builtin_candidate): Reorganize, support COND_EXPR.
13183	(add_builtin_candidate{,s}): Likewise.
13184	(add_builtin_candidates): Likewise.
13185	(print_z_candidates, op_error, build_new_op): Likewise.
13186	(type_decays_to): New fn.
13187	* lex.c (init_lex): Just say ?: for COND_EXPR.
13188
13189Thu Jul 25 09:33:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
13190
13191	* typeck.c (complete_type): Call layout_type rather than building
13192	a new array type.
13193
13194	* cvt.c (add_builtin_candidate): Pointer arithmetic candidates
13195	only use ptrdiff_t.
13196
13197Wed Jul 24 12:45:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
13198
13199	* cvt.c: Always compile the new overloading code (but don't use it).
13200	(implicit_conversion): Add a BASE_CONV when converting to
13201	the same class type.
13202	(convert_like): Handle BASE_CONV.
13203
13204Tue Jul 23 12:46:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
13205
13206	* cvt.c (build_new_op): Support {MAX,MIN}_EXPR.
13207	(add_builtin_candidate): Likewise.
13208
13209	NEW_OVER changes:
13210	* typeck.c (build_x_function_call): Try an operator function
13211	whenever we call an object of class type.
13212	* method.c (build_opfncall): Pass CALL_EXPRs through.
13213	* cvt.c (implicit_conversion): Do const-ref case first.
13214	(add_conv_candidate, build_object_call, op_error): New fns.
13215	(ptr_complete_ob, TYPE_PTROB_P): void is not an object type.
13216	({add,build}_builtin_candidate{,s}, print_z_candidates): Display
13217	builtin candidates.
13218	(build_new_op): Handle CALL_EXPR.  Don't try to decay void.
13219	Fall back on preincrement handling.  Use op_error.
13220	Handle warn_synth.
13221	(convert_like): Pass INDIRECT_BIND.  Don't try to do anything with
13222	an error_mark_node.
13223	(build_over_call): Handle PROMOTE_PROTOTYPES and ellipsis promotions
13224	properly.
13225
13226Mon Jul 22 16:21:55 1996  Bob Manson  <manson@charmed.cygnus.com>
13227
13228	* pt.c (tsubst_expr): Handle CONTINUE_STMT.
13229
13230Mon Jul 22 15:38:58 1996  Mike Stump  <mrs@cygnus.com>
13231
13232	* typeck.c (build_component_ref_1): Use build_component_ref
13233	instead of open coding it here.
13234
13235Mon Jul 22 12:18:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
13236
13237	* g++.c (main): Don't link with -lg++.
13238
13239	NEW_OVER changes:
13240	* cvt.c (convert_to_reference): Don't use convert_from_reference on
13241	result of build_type_conversion.
13242	(cp_convert): Only call build_method_call for ctors if
13243	build_type_conversion failed.
13244	(ptr_complete_ob): New function.
13245	(TYPE_PTR{,OB,MEM}_P): New macros.
13246	({add,build}_builtin_candidate{,s}): New functions.
13247	(print_z_candidates): Handle builtins.
13248	(build_user_type_conversion_1): Don't use conversion fns for
13249	converting to a base type.
13250	(build_user_type_conversion_1): Set ICS_USER_FLAG on AMBIG_CONVs.
13251	(build_user_type_conversion): Use convert_from_reference.
13252	(build_new_op): New function.
13253	(build_over_call): Fix handling of methods.
13254	(compare_ics): Handle AMBIG_CONV properly.
13255	* typeck2.c: Increment abort count.
13256	* method.c (build_opfncall): Forward most requests to build_new_op.
13257	* cp-tree.h (IS_OVERLOAD_TYPE): Tweak.
13258
13259Fri Jul 19 17:59:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
13260
13261	* error.c (dump_expr, case CONSTRUCTOR, case CAST_EXPR): Take out
13262	invalid second argument to dump_expr_list.
13263
13264Fri Jul 19 14:04:05 1996  Mike Stump  <mrs@cygnus.com>
13265
13266	* decl.c (lookup_name_real): Make sure we do obj->X::i correctly.
13267
13268Thu Jul 18 14:48:23 1996  Bob Manson  <manson@charmed.cygnus.com>
13269
13270	* decl2.c (import_export_vtable): ASM_OUTPUT_EXTERNAL, not
13271	ASSEMBLE_EXTERNAL.
13272
13273Mon Jul 15 17:48:43 1996  Mike Stump  <mrs@cygnus.com>
13274
13275	* typeck2.c (process_init_constructor): New pedwarn for using { }
13276	to initialize a pointer to member function.
13277	* typeck.c (build_ptrmemfunc1): Avoid use of digest_init so that
13278	we can avoid the new error.
13279
13280Mon Jul 15 15:42:03 1996  Mike Stump  <mrs@cygnus.com>
13281
13282	* typeck.c (build_ptrmemfunc1): New function to hide details of
13283	pointer to member functions better.
13284
13285Mon Jul 15 14:23:02 1996  Mike Stump  <mrs@cygnus.com>
13286
13287	* init.c (resolve_offset_ref): Resolve OFFSET_REFs that are
13288	methods into the actual method, as we know the implied object is
13289	not used.
13290
13291Mon Jul 15 13:08:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
13292
13293	* parse.y (maybecomma_warn): Only emit the pedwarn if we're not
13294	inside a system header.
13295
13296Fri Jul 12 16:30:05 1996  Bob Manson  <manson@charmed.cygnus.com>
13297
13298	* call.c (build_method_call): Call complete_type on the
13299	instance type.
13300
13301Thu Jul 11 17:16:40 1996  Mike Stump  <mrs@cygnus.com>
13302
13303	* typeck.c (build_component_ref): Always build up an OFFSET_REF
13304	for obj_ptr->func so that we can know which object to use in a
13305	method call.
13306
13307Wed Jul 10 19:36:37 1996  Mike Stump  <mrs@cygnus.com>
13308
13309	* typeck.c (build_ptrmemfunc): Remove sorry, now we can cast
13310	around things.  Also improve maintainability.
13311
13312Wed Jul 10 18:20:11 1996  Bob Manson  <manson@charmed.cygnus.com>
13313
13314	* decl.c (grokdeclarator): Check for overflow when evaluating an
13315	array dimension.
13316
13317Wed Jul 10 17:26:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
13318
13319	* cvt.c (cp_convert): Don't check for ambiguity with constructor
13320	if NEW_OVER.
13321
13322	* typeck.c (build_x_function_call): Pass function overload
13323	questions to new overloading code if NEW_OVER.
13324	* init.c (expand_aggr_init_1): Only check for type conversion ops
13325	if we're doing copy-initialization (i.e. LOOKUP_ONLYCONVERTING).
13326	Don't check for ambiguity with constructor if NEW_OVER.
13327	* cvt.c (convert_to_reference): Dereference the result of a type
13328	conversion operator.
13329	(build_conv): Propagate ICS_USER_FLAG.
13330	(implicit_conversion): Call instantiate_type.
13331	Pass LOOKUP_ONLYCONVERTING instead of LOOKUP_NORMAL.
13332	(add_function_candidate): Fix cv-quals on argtype.
13333	(print_z_candidates): New function.
13334	(build_new_function_call): Call it.
13335	(build_user_type_conversion_1): If LOOKUP_ONLYCONVERTING, don't
13336	consider non-converting constructors.
13337	Call print_z_candidates.
13338	Return an AMBIG_CONV for an ambiguous conversion.
13339	(build_user_type_conversion): Handle AMBIG_CONV.
13340	(convert_like): Fix test for building TARGET_EXPR.
13341	Call instantiate_type.
13342	Handle AMBIG_CONV and LVALUE_CONV.
13343	(build_over_call): Handle 0 args and ellipsis.
13344	* cp-tree.def: Add AMBIG_CONV.
13345
13346Tue Jul  9 17:48:48 1996  Mike Stump  <mrs@cygnus.com>
13347
13348	* decl.c (lookup_name_real): If we find mem in obj when parsing
13349	`obj->mem', make sure we return the right value.
13350
13351Tue Jul  9 16:11:28 1996  Bob Manson  <manson@charmed.cygnus.com>
13352
13353	* search.c (get_base_distance): Call complete_type.
13354
13355Tue Jul  9 12:46:34 1996  Mike Stump  <mrs@cygnus.com>
13356
13357	* decl.c (store_bindings): Make static.
13358
13359Mon Jul  8 16:42:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
13360
13361	* init.c (expand_aggr_init_1): Don't check type conversions if
13362	NEW_OVER.
13363
13364	* cvt.c (z_candidate): Put back template field.
13365	(add_function_candidate): Set it.
13366	(add_template_candidate): Likewise.
13367	(joust): Use it.
13368	(compare_qual): Handle references and pointers to members.
13369	(compare_ics): Handle reference bindings.
13370
13371	* decl.c (duplicate_decls): Propagate DECL_ONE_ONLY.
13372
13373Mon Jul  8 16:18:56 1996  Bob Manson  <manson@charmed.cygnus.com>
13374
13375	* call.c (compute_conversion_costs): Call complete_type.
13376
13377	* tree.c (vec_binfo_member): Use comptypes instead of comparing
13378	pointers, so we can handle template parameters.
13379
13380Fri Jul  5 16:51:53 1996  Bob Manson  <manson@charmed.cygnus.com>
13381
13382	* cvt.c (cp_convert_to_pointer): We have to call complete_type
13383	here; let's make it explicit instead of a side effect of an
13384	error check.
13385
13386Wed Jul  3 16:29:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
13387
13388	* cvt.c (z_candidate): Remove template field.
13389	(reference_binding): Handle binding to temporary.
13390	(implicit_conversion): Likewise.
13391	(add_function_candidate): Handle artificial constructor parms.
13392	Handle functions with too few parms.
13393	(add_template_candidate): New function.
13394	(build_user_type_conversion_1): Handle constructors.
13395	(convert_like): Likewise.
13396	(build_over_call): Likewise.
13397	(build_new_function_call): Support templates.
13398	(compare_ics): Fix reference, inheritance handling.
13399
13400Mon Jul  1 22:58:18 1996  Bob Manson  <manson@charmed.cygnus.com>
13401
13402	* decl.c: Add signed_size_zero_node.
13403	(init_decl_processing): Build it.
13404	* class.c (prepare_fresh_vtable): Use it instead of size_zero_node
13405	when we're trying to make a negative delta.
13406
13407Mon Jul  1 17:56:19 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
13408
13409	Stop doing this damn index==strchr variable name confusion.
13410	* class.c (add_virtual_function): Change local var INDEX to be
13411	named IDX.
13412	(add_method): Likewise.
13413	* lex.c (print_parse_statistics): Likewise.
13414	* search.c (make_memoized_table_entry): Likewise.
13415	(lookup_fnfields_here): Likewise.
13416	(lookup_field): Likewise.
13417	(lookup_fnfields): Likewise.
13418	(get_baselinks): Likewise.
13419	* sig.c (build_signature_table_constructor): Likewise.
13420	(build_signature_method_call): Likewise.
13421	* typeck.c (build_x_array_ref): Change INDEX parm to be named IDX.
13422	(get_member_function_from_ptrfunc): Likewise.
13423	(build_ptrmemfunc): Change local var INDEX to be IDX.
13424	(c_expand_start_case): Likewise.
13425
13426Sat Jun 29 14:05:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
13427
13428	* cvt.c (cp_convert_to_pointer): Move user-defined type conversion
13429	handling to before extraction of TYPE_PTRMEMFUNC_FN_TYPE.
13430	(convert_to_reference): Use build_type_conversion to convert to
13431	the reference type directly.
13432	(standard_conversion): Fix void* case, non-conversions.
13433	(reference_binding): Fix expr == 0 case, non-conversions.
13434	(convert_like): Support REF_BIND.
13435	(compare_qual): Split out from compare_ics.
13436	(compare_ics): Use it, handle icses with only a qual_conv.
13437
13438	* init.c (expand_vec_init): Don't crash if decl is NULL.
13439
13440Fri Jun 28 11:52:51 1996  Stan Shebs  <shebs@andros.cygnus.com>
13441
13442	* mpw-config.in: New file, configury for Mac MPW.
13443	* mpw-make.sed: New file, makefile editing for MPW.
13444
13445Thu Jun 27 15:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
13446
13447	* pt.c (instantiate_class_template): Call repo_template_used.
13448
13449	* search.c (lookup_conversions): Only lookup conversions in
13450	complete types.
13451
13452Thu Jun 27 12:59:53 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
13453
13454	* cp-tree.def: Renamed from tree.def, to avoid confusion with
13455	gcc's tree.def.
13456	* cp-tree.h, lex.c: Include cp-tree.def.
13457	* Makefile.in (CXX_TREE_H): Reference cp-tree.def.
13458
13459Wed Jun 26 18:29:47 1996  Bob Manson  <manson@charmed.cygnus.com>
13460
13461	* init.c (build_vec_delete_1): Call complete_type.
13462
13463Mon Jun 24 17:17:32 1996  Mike Stump  <mrs@cygnus.com>
13464
13465	* except.c (start_anon_func): Make sure anonymous functions are
13466	never external.
13467
13468Fri Jun 21 15:10:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
13469
13470	* decl.c (finish_function): If function_depth > 1, set nested.
13471
13472	* decl2.c (grokbitfield): Revert Bob's change.
13473	* class.c (finish_struct_1): Fix handling of named bitfield widths.
13474
13475Thu Jun 20 23:35:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
13476
13477	* pt.c (add_pending_template): Handle types.
13478	(lookup_template_class): With -fexternal-templates, just add the class
13479	to pending_templates instead of instantiating it now.
13480	* decl2.c (finish_file): Handle types in pending_templates.
13481
13482Thu Jun 20 14:08:40 1996  Bob Manson  <manson@charmed.cygnus.com>
13483
13484	* decl2.c (grokbitfield): Handle constant decls appropriately.
13485	Give an appropriate error message now instead of spewing core
13486	later.
13487
13488Thu Jun 20 13:01:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
13489
13490	* decl2.c: Don't turn on thunks by default for now.
13491
13492Wed Jun 19 11:37:04 1996  Jason Merrill  <jason@yorick.cygnus.com>
13493
13494	* typeck.c (complete_type): Handle error_mark_node.
13495	(common_type, OFFSET_TYPE): Handle template_type_parms.
13496
13497Tue Jun 18 10:02:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
13498
13499	* pt.c (instantiate_decl): If at_eof, call import_export_decl
13500	regardless of DECL_INLINE.
13501
13502	* typeck.c (mark_addressable): Set TREE_ADDRESSABLE on CONSTRUCTORs.
13503
13504	* class.c (finish_struct_bits): Copy TYPE_SIZE.
13505
13506	* rtti.c (build_dynamic_cast): Support templates.
13507	* tree.def: Support DYNAMIC_CAST_EXPR.
13508	* pt.c (tsubst_copy): Likewise.
13509	* decl2.c (build_expr_from_tree): Likewise.
13510
13511Mon Jun 17 15:23:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
13512
13513	* typeck.c (build_static_cast): Support templates.
13514	(build_const_cast): Likewise.
13515	* tree.def: Support CONST/STATIC_CAST_EXPR.
13516	* pt.c (tsubst_copy): Likewise.
13517	* decl2.c (build_expr_from_tree): Likewise.
13518
13519Sun Jun 16 12:33:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
13520
13521	* decl2.c (finish_vtable_vardecl): Don't trust
13522	TREE_SYMBOL_REFERENCED for vtables of local classes.
13523
13524Fri Jun 14 18:13:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
13525
13526	* pt.c (tsubst_copy): Handle operator T.
13527
13528Wed Jun 12 17:52:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
13529
13530	* init.c (build_delete): Move creation of PARMS inside test of
13531	TYPE_HAS_DESTRUCTOR, since it's never used outside of that block.
13532
13533Tue Jun 11 15:09:18 1996  Bob Manson  <manson@charmed.cygnus.com>
13534
13535	* typeck.c (build_conditional_expr): Don't assume that
13536	the arguments to ?: are always pointers or records.
13537
13538Tue Jun 11 13:56:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
13539
13540	* decl2.c (import_export_decl): Still emit static/weak/comdat
13541	copies of inline template functions with -fno-implicit-templates.
13542
13543Tue Jun 11 11:42:13 1996  Bob Manson  <manson@charmed.cygnus.com>
13544
13545	* init.c (build_delete): Determine the complete basetype
13546	path to the destructor we're calling.
13547
13548Fri Jun  7 15:30:10 1996  Bob Manson  <manson@charmed.cygnus.com>
13549
13550	* decl.c (build_enumerator): Always copy the INTEGER_CST used to
13551	initialize the enum, because we really and truly don't know where
13552	it came from.
13553	(start_enum): Don't copy integer_zero_node because
13554	build_enumerator will do it.
13555
13556Fri Jun  7 11:11:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
13557
13558	* decl.c (finish_function): Do access control on base destructors.
13559
13560	* pt.c (tsubst, case FUNCTION_DECL): Set up
13561	IDENTIFIER_GLOBAL_VALUE for member functions so pushdecl doesn't
13562	hose us.
13563
13564Fri Jun  7 10:37:33 1996  Mike Stump  <mrs@cygnus.com>
13565
13566	* cvt.c (build_up_reference): If we have already extended the
13567	lifetime of the temporary, don't try it again.
13568	* typeck.c (c_expand_return): Don't try and convert the return
13569	value twice when we want a reference, once is enough.
13570
13571Tue Jun  4 15:41:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
13572
13573	* pt.c (tsubst_expr, case DECL_STMT): Don't pass
13574	LOOKUP_ONLYCONVERTING at all for now.
13575
13576	* search.c (add_conversions): Put the conversion function in
13577	TREE_VALUE, the basetype in TREE_PURPOSE.
13578	* cvt.c (build_type_conversion): Adjust.
13579	* cvt.c (build_expr_type_conversion): Adjust.
13580	* call.c (user_harshness): Adjust.
13581
13582Mon Jun  3 15:30:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
13583
13584	* method.c (emit_thunk): Pretend this is a FUNCTION_DECL for the
13585	backend's benefit.
13586
13587Mon Jun 10 18:58:19 1996  Mike Stump  <mrs@cygnus.com>
13588
13589	* except.c (expand_start_catch_block): Add a dummy region, if we
13590	get an error, so that we can avoid core dumping later.
13591
13592Fri May 31 14:56:13 1996  Mike Stump  <mrs@cygnus.com>
13593
13594	* cp-tree.h (OFFSET_REF): Remove.
13595	* tree.def (CP_OFFSET_REF): Rename to OFFSET_REF.
13596	* expr.c (cplus_expand_expr): Cleanup callers of expand_expr.
13597	* init.c (expand_aggr_init_1): Likewise.
13598	(build_new): Likewise.
13599	* typeck.c (expand_target_expr): Likewise.
13600
13601Fri May 31 14:22:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
13602
13603	* typeck.c (build_modify_expr): Don't use TREE_VALUE on a
13604	TARGET_EXPR.
13605
13606Wed May 29 17:04:33 1996  Mike Stump  <mrs@cygnus.com>
13607
13608	* cvt.c (build_up_reference): Redo how and when temporaries are
13609	created.
13610	* decl.c (grok_reference_init): Don't try and be smart about
13611	running cleanups.
13612
13613Wed May 29 16:02:08 1996  Mike Stump  <mrs@cygnus.com>
13614
13615	* cvt.c (build_up_reference): Add NULL_TREE to all calls to build
13616	(TARGET_EXPR...), now that it has 4 arguments.
13617	* tree.c (build_cplus_new): Likewise.
13618
13619Thu May 23 16:40:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
13620
13621	* error.c (dump_expr, case CAST_EXPR): Handle T() properly.
13622
13623	* pt.c (instantiate_decl): Don't call push/pop_cp_function_context.
13624	* decl.c (struct saved_scope): Remove named_labels,
13625	{base,member}_init_list.
13626	(maybe_push_to_top_level): Don't set them.  Call
13627	push_cp_function_context if appropriate.
13628	(pop_from_top_level): Likewise.
13629
13630	* method.c (do_build_assign_ref): Remove obsolete check of
13631	TYPE_HAS_ASSIGN_REF (basetype).
13632
13633	* decl.c (grokfndecl): Diagnose user definition of
13634	implicitly-declared methods.
13635
13636Thu May 23 12:13:08 1996  Bob Manson  <manson@charmed.cygnus.com>
13637
13638	* method.c (do_build_copy_constructor): Add code to give
13639	meaningful error messages instead of crashing.
13640	(do_build_assign_ref): Don't synthesize assignment operators for
13641	classes containing reference or const members.
13642
13643	* class.c (struct base_info): Remove cant_synth_copy_ctor
13644	and cant_synth_asn_ref.
13645	(finish_base_struct): Remove the code that tries to conditionalize
13646	synthesis of copy constructors & assignment operators based on
13647	access permissions.  Instead, let it fail when it tries to
13648	synthesize the copy constructor.  This will give meaningful error
13649	messages instead of silently generating code to perform a bitcopy.
13650
13651Wed May 22 11:45:19 1996  Bob Manson  <manson@charmed.cygnus.com>
13652
13653	* lex.c (real_yylex): Remove old-n-crufty #if 0 code for
13654	determining types for constant values.
13655
13656	* decl.c (struct named_label_list): Use instead of stuffing
13657	random items into a TREE_LIST node.
13658	(named_label_uses): Use the new struct.
13659	(poplevel): Likewise.
13660	(lookup_label): Likewise.
13661	(define_label): Add an error message to tell the user the line
13662	where the goto is located in addition to the destination of the
13663	goto.
13664	(init_decl_processing): Use NULL instead of NULL_TREE to initialize
13665	named_label_uses.
13666	(finish_function): Likewise.
13667
13668	(start_decl): Complain about defining a static data member
13669	in a different type from which it was declared.
13670
13671Wed May 22 09:33:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
13672
13673	* cvt.c (build_expr_type_conversion): Adjust.
13674
13675Tue May 21 11:21:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
13676
13677	* call.c (build_method_call): Always convert 'this' to the
13678	appropriate type.
13679
13680	* search.c (add_conversions): Put the conversion function in
13681	TREE_VALUE, the type in TREE_PURPOSE.
13682	* cvt.c (build_type_conversion): Adjust.
13683	* call.c (user_harshness): Adjust.
13684
13685	* method.c (emit_thunk): Call temporary_allocation and
13686	permanent_allocation around the ASM_OUTPUT_MI_THUNK case, too.
13687
13688	* tree.c (build_cplus_array_type): Handle tweaking of
13689	TYPE_MAIN_VARIANT here.
13690	* typeck.c (common_type): Not here.
13691
13692	* typeck.c (complete_type): Only try to complete an array type if
13693	it has a domain.
13694
13695Mon May 20 14:55:59 1996  Jason Merrill  <jason@yorick.cygnus.com>
13696
13697	* decl.c (grokvardecl): Call complete_type.
13698	(grokdeclarator): Call complete_type for PARM_DECLs.
13699
13700Fri May 17 16:41:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
13701
13702	* pt.c (instantiate_class_template): Re-set
13703	CLASSTYPE_GOT_SEMICOLON after calling finish_struct_1.
13704
13705Fri May 17 14:56:55 1996  Mike Stump  <mrs@cygnus.com>
13706
13707	* cp-tree.h (cp_expand_decl_cleanup): Remove, the backend is now
13708	smart enough to do it right.
13709	* tree.c (cp_expand_decl_cleanup): Likewise.
13710	* decl.c (cp_finish_decl): Use expand_decl_cleanup instead of
13711	cp_expand_decl_cleanup.
13712	(store_parm_decls): Likewise.
13713	(hack_incomplete_structures): Likewise.
13714	* except.c (push_eh_cleanup): Likewise.
13715
13716Fri May 17 13:13:51 1996  Mike Stump  <mrs@cygnus.com>
13717
13718	* expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
13719	frontend to the backend where it belongs.
13720	* tree.c (unsave_expr): Likewise.
13721	(unsave_expr_now): Likewise.
13722	* tree.def (UNSAVE_EXPR): Likewise.
13723	* cp-tree.h (unsave_expr): Likewise.
13724	(unsave_expr_now): Likewise.
13725
13726Fri May 17 11:02:41 1996  Mike Stump  <mrs@cygnus.com>
13727
13728	* init.c (emit_base_init): Make sure the partial EH cleanups live
13729	on the function_obstack.
13730
13731Thu May 16 15:29:33 1996  Bob Manson  <manson@charmed.cygnus.com>
13732
13733	* expr.c (do_case): Don't try to dereference null TREE_TYPEs
13734	when checking for pointer types.
13735
13736Thu May 16 13:38:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
13737
13738	* pt.c (instantiate_class_template): Remove obsolete check for
13739	access declarations.
13740
13741Thu May 16 13:34:15 1996  Mike Stump  <mrs@cygnus.com>
13742
13743	* call.c (build_overload_call): Simplify calls to
13744	build_overload_call by removing last parameter.
13745	(build_method_call): Likewise.
13746	* cp-tree.h: Likewise.
13747	* method.c (build_opfncall): Likewise.
13748	* typeck.c (build_x_function_call): Likewise.
13749
13750Thu May 16 13:15:43 1996  Mike Stump  <mrs@cygnus.com>
13751
13752	* call.c (default_parm_conversions): Factor out common code.
13753	(build_method_call): Use it.
13754	(build_overload_call_real): Use it.
13755
13756Wed May 15 14:46:14 1996  Mike Stump  <mrs@cygnus.com>
13757
13758	* call.c (build_method_call): Allow implicit & on METHOD_TYPEs,
13759	but pedwarn as the code is bogus.
13760	* typeck.c (decay_conversion): Likewise.
13761	(build_function_call_real): Use build_addr_func instead of
13762	default_conversion.  Don't allow pointer-to-method functions down
13763	here.
13764	(build_unary_op): Use real pointer-to-member functions instead of
13765	fake ones.
13766	(build_ptrmemfunc): Use build_addr_func instead of build_unary_op.
13767	(convert_for_assignment): Removed some obsolete code.
13768	* decl2.c (reparse_absdcl_as_expr): Pass current_class_ref to
13769	build_x_function_call instead of current_class_ptr.  Only call
13770	digest_init once on an initializer, we do this just checking
13771	TREE_TYPE.
13772	(build_expr_from_tree): Pass current_class_ref to
13773	build_x_function_call instead of current_class_ptr.
13774	* init.c (build_member_call): Likewise.
13775	* pase.y: Likewise.
13776	* error.c (dump_expr): Handle OFFSET_REFs better.
13777	* pt.c (unify): Handle pointer-to-member functions better.
13778	* decl.c (finish_function): Clear out current_class_ref just like
13779	we do for current_class_ptr.
13780
13781	* typeck.c (get_delta_difference): Handle virtual bases better.
13782
13783Tue May 14 16:37:37 1996  Jason Merrill  <jason@yorick.cygnus.com>
13784
13785	* sig.c (build_signature_table_constructor): Use the delta for
13786	the original basetype for this virtual function with thunks.
13787	(build_signature_method_call): We still need to adjust 'this'
13788	with thunks.
13789
13790Tue May 14 16:27:25 1996  Mike Stump  <mrs@cygnus.com>
13791
13792	* call.c (build_addr_func): New routine.  Used to get the `real'
13793	address of a function or a method.  Needed to avoid getting a
13794	pointer-to-member function.
13795	(build_call): New routine to build CALL_EXPRs.
13796	(build_method_call): Use it.
13797	* cvt.c (convert_to_aggr): Likewise.
13798	* typeck.c (build_function_call_real): Likewise.
13799	* sig.c (build_signature_table_constructor): Use build_addr_func.
13800	* cp-tree.h (build_call, build_addr_func): Declare them.
13801
13802Tue May 14 12:47:47 1996  Mike Stump  <mrs@cygnus.com>
13803
13804	* cp-tree.h (LOOKUP_AGGR): Remove, unused.
13805	* parse.y: Remove uses of LOOKUP_AGGR.
13806
13807Tue May 14 12:07:51 1996  Mike Stump  <mrs@cygnus.com>
13808
13809	* *.[chy]: Rename current_class_decl to current_class_ptr, and
13810	C_C_D to current_class_ref.
13811
13812Mon May 13 16:55:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
13813
13814	* call.c (convert_harshness): Tighten up pointer conversions.
13815
13816Sat May 11 04:33:50 1996  Doug Evans  <dje@canuck.cygnus.com>
13817
13818	* decl2.c (finish_vtable_vardecl): Surround DECL_ONE_ONLY with ifdef.
13819	(finish_file): Likewise.
13820
13821Fri May 10 11:09:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
13822
13823	* cvt.c (convert_fn_ptr): We don't use thunks for pmfs.
13824
13825	* method.c (emit_thunk): Set flag_omit_frame_pointer in default
13826	code.
13827
13828Thu May  9 18:18:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
13829
13830	* decl2.c: Turn on thunks by default where supported.
13831
13832Tue May  7 20:39:57 1996  Mike Stump  <mrs@cygnus.com>
13833
13834	* cp-tree.h (build_overload_call_maybe): Removed.
13835	* call.c (build_overload_call_real): Invert meaning of last arg to
13836	be require_complete.
13837	(build_overload_call): Likewise.
13838	* typeck.c (build_x_function_call): Use build_overload_call_real
13839	instead of build_overload_call_maybe.
13840
13841Mon May  6 01:23:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
13842
13843	* decl2.c (finish_file): Don't try to emit functions that haven't
13844	been compiled.
13845
13846Fri May  3 09:30:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
13847
13848	* decl2.c (finish_vtable_vardecl): Oops.
13849
13850	* decl.c (maybe_push_to_top_level): Do save previous_class_*.
13851	Also store the bindings from previous_class_values.
13852	(pop_from_top_level): Restore them.
13853
13854Thu May  2 21:56:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
13855
13856	* decl2.c (finish_vtable_vardecl): Only write out vtable if its
13857	symbol has been referenced.
13858	(finish_file): Re-join synthesis/vtable loop with inline emission
13859	loop, disable inlining when an inline is output.
13860
13861Thu May  2 17:20:02 1996  Mike Stump  <mrs@cygnus.com>
13862
13863	* except.c (init_exception_processing): Setup saved_in_catch.
13864	(push_eh_cleanup): Reset __eh_in_catch.
13865	(expand_start_catch_block): Set __eh_in_catch.
13866
13867Thu May  2 16:21:17 1996  Mike Stump  <mrs@cygnus.com>
13868
13869	* except.c (push_eh_cleanup): Add tracking for whether or not we
13870	have an active exception object.
13871	(expand_builtin_throw): Use it to make sure a rethrow without an
13872	exception object is caught.
13873
13874Thu May  2 11:26:41 1996  Jason Merrill  <jason@yorick.cygnus.com>
13875
13876	* decl.c (maybe_push_to_top_level): Clear out class-level bindings
13877	cache.
13878
13879Wed May  1 11:26:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
13880
13881	* decl2.c (finish_file): Also use sentries for vars with
13882	DECL_ONE_ONLY or DECL_WEAK set (should any such happen to be
13883	created).
13884
13885	* lex.c (handle_cp_pragma): Disable #pragma
13886	interface/implementation if SUPPORTS_ONE_ONLY > 1.
13887
13888Tue Apr 30 11:25:46 1996  Jason Merrill  <jason@yorick.cygnus.com>
13889
13890	* method.c (emit_thunk): Wrap default case in
13891	temporary/permanent_allocation.
13892
13893	* method.c (make_thunk): Use DECL_ONE_ONLY.
13894	(emit_thunk): Call assemble_end_function.
13895
13896Mon Apr 29 15:38:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
13897
13898	* decl2.c (import_export_vtable): Use DECL_ONE_ONLY.
13899	(import_export_decl): Likewise.
13900	(finish_prevtable_vardecl): Disable vtable hack if
13901	SUPPORTS_ONE_ONLY > 1.
13902
13903Mon Apr 29 14:32:47 1996  Mike Stump  <mrs@cygnus.com>
13904
13905	* typeck.c (build_modify_expr): PREINCREMENT_EXPR and
13906	PREDECREMENT_EXPRs take two arguments, not one.
13907
13908Mon Apr 29 00:27:53 1996  Jason Merrill  <jason@yorick.cygnus.com>
13909
13910	* class.c (build_vtable_entry): Don't build thunks for abstract
13911	virtuals.
13912
13913	* lex.c (real_yylex): Fix handling of __PRETTY_FUNCTION__ like C
13914	frontend.
13915
13916Sat Apr 27 16:45:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
13917
13918	* class.c (set_rtti_entry): Use size_zero_node.
13919	(build_vtable): Likewise.
13920
13921Sat Apr 27 14:48:57 1996  Jason Merrill  <jason@phydeaux.cygnus.com>
13922
13923	* class.c (finish_struct_1): Pass size_zero_node to set_rtti_entry.
13924	(prepare_fresh_vtable): Likewise.
13925
13926Fri Apr 26 13:14:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
13927
13928	* method.c (emit_thunk): Call mark_used on the target function.
13929
13930	* call.c (build_method_call): Don't warn about pending templates.
13931
13932Thu Apr 25 14:55:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
13933
13934	* decl2.c (finish_file): Fix list walking logic.
13935
13936	* typeck2.c (check_for_new_type): Only warn if -pedantic.
13937
13938Wed Apr 24 15:41:15 1996  Bob Manson  <manson@charmed.cygnus.com>
13939
13940	* class.c (finish_struct_1): Remove old code for
13941	dont_allow_type_definitions.
13942	* cp-tree.h: Likewise.
13943	* spew.c: Make sure cp-tree.h is included before parse.h, so the
13944	definition of flagged_type_tree is found before it is used.
13945	* lex.c: Likewise.
13946	* parse.y: Added the ftype member to the type union, and changed a
13947	number of rules to use it instead of ttype.  Added calls to
13948	check_for_new_type() as appropriate.
13949	* typeck2.c (check_for_new_type): New function for checking
13950	if a newly defined type appears in the specified tree.
13951	* cp-tree.h: Add new type flagged_type_tree.  Add a prototype
13952	for check_for_new_type().
13953
13954Wed Apr 24 00:36:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
13955
13956	* decl2.c (finish_file): Only use a sentry if the decl is public.
13957
13958	* pt.c (tsubst_expr, DECL_STMT): If we don't have an initializer,
13959	don't pass LOOKUP_ONLYCONVERTING.
13960
13961Tue Apr 23 17:18:47 1996  Bob Manson  <manson@charmed.cygnus.com>
13962
13963	* typeck.c (common_type): Fix the ARRAY_TYPE case so it
13964	properly keeps track of const and volatile type modifiers.
13965
13966Tue Apr 23 10:52:56 1996  Jason Merrill  <jason@yorick.cygnus.com>
13967
13968	* tree.c (cp_tree_equal): C++ version of simple_cst_equal.
13969	* pt.c (comp_template_args): Use it.
13970
13971	* rtti.c (get_tinfo_fn, build_dynamic_cast, expand_*_desc): Call
13972	assemble_external for artificial function decls.
13973
13974	* decl.c (cp_finish_decl): Oops.
13975
13976Mon Apr 22 17:28:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
13977
13978	* decl2.c (import_export_decl): Put static data member templates
13979	into common storage, or make them weak, depending on whether they
13980	are dynamically or statically initialized.
13981	(get_sentry): New function.
13982	(finish_file): Do import_export_decl for static data members before
13983	building the init/fini functions.  Don't init/fini a variable that's
13984	EXTERNAL.  Use a sentry for variables in common.  Fix mismatching
13985	push/pop_temp_slots.
13986	* decl.c (cp_finish_decl): If DECL_NOT_REALLY_EXTERN, do the
13987	expand_static_init thang.
13988	* method.c (get_id_2): New function.
13989
13990Mon Apr 22 15:32:45 1996  Bob Manson  <manson@charmed.cygnus.com>
13991
13992	* parse.y (empty_parms): Make sure we use C++-style prototypes
13993	when we're declaring member functions.
13994
13995Sun Apr 21 10:08:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
13996
13997	* Makefile.in (CONFLICTS): 16 s/r conflicts.
13998	* parse.y (self_template_type): New nonterminal.
13999
14000Thu Apr 18 08:56:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
14001
14002	* decl.c (make_typename_type): Handle getting a TYPE_DECL for a
14003	name.
14004	* parse.y (base_class.1): Allow 'typename foo::bar'.
14005
14006	* lex.c (check_newline): Remove #pragma code that plays with the
14007	input stream, since we now deal with tokens.  Clear nextchar when
14008	we're done.
14009	(handle_cp_pragma): Use real_yylex.
14010	(handle_sysv_pragma): Don't do skipline here.  Only call real_yylex
14011	in one place.
14012
14013	* lex.c (check_for_missing_semicolon): Handle SELFNAME.
14014
14015	* lex.c (handle_cp_pragma): Fix "#pragma implementation".
14016
14017Wed Apr 17 16:51:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
14018
14019	* parse.y: New token SELFNAME for potential constructor.
14020	* spew.c (yylex): Handle it.
14021	* lex.c (identifier_type): Produce it.
14022
14023	* parse.y (complete_type_name): In :: case, don't push class binding.
14024	(complex_type_name): Likewise.
14025
14026Wed Apr 17 15:02:40 1996  Mike Stump  <mrs@cygnus.com>
14027
14028	* typeck.c (build_reinterpret_cast): Handle pointer to member
14029	functions.
14030
14031Wed Apr 17 12:28:26 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14032
14033	* lex.c (handle_cp_pragma): New function, with decl, doing the cc1plus
14034	pragmas.
14035	(check_newline): Put the vtable/unit/implementation/interface pragma
14036	code into handle_cp_pragma, replacing it with a call.
14037	(handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
14038	args.  Get the next token after handling the pragma token.
14039
14040Wed Apr 17 10:28:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
14041
14042	* cvt.c (cp_convert_to_pointer): Avoid doing base analysis on pmfs.
14043	(convert_to_pointer_force): Likewise.
14044
14045	* init.c (build_new): Fix array new without -fcheck-new.
14046
14047Tue Apr 16 13:44:58 1996  Jason Merrill  <jason@yorick.cygnus.com>
14048
14049	* cp-tree.h, call.c, class.c, decl.c, parse.y, pt.c, rtti.c,
14050	tree.c: Lose TYPE_NESTED_NAME.
14051
14052	* parse.y (nested_name_specifier_1): Don't treat non-identifiers
14053	as identifiers.
14054
14055	* tree.def: Add VEC_INIT_EXPR.
14056	* expr.c (cplus_expand_expr): Handle it.
14057	* init.c (build_new): Use it instead of the RTL_EXPR nastiness and
14058	the extra file-scope symbol nastiness.
14059
14060Mon Apr 15 16:21:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
14061
14062	* method.c (make_thunk): Thunks are static.
14063	(emit_thunk): Use ASM_OUTPUT_MI_THUNK if it's defined.
14064
14065	* decl2.c (mark_vtable_entries): Emit thunks as needed.
14066	(finish_file): Don't emit them here.
14067
14068Sun Apr 14 11:34:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
14069
14070	* rtti.c (build_dynamic_cast): Handle null pointers.
14071	(ifnonnull): New function.
14072
14073Fri Apr 12 09:08:27 1996  Bob Manson  <manson@charmed.cygnus.com>
14074
14075	* call.c (build_method_call): Remember the original basetype we
14076	were called with.  Give an error message instead of trying
14077	(incorrectly) to call a non-static member function through a
14078	non-inherited class.
14079
14080	* search.c (expand_upcast_fixups): Mark the new fixup as
14081	DECL_ARTIFICIAL.
14082
14083Thu Apr 11 03:57:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
14084
14085	* init.c (build_new): Use a TARGET_EXPR for alloc_expr.
14086
14087	* class.c (set_rtti_entry): Fix for thunks.
14088
14089	* decl2.c (import_export_decl): Still emit typeinfo fns for
14090	cv-variants of builtin types.
14091
14092	* rtti.c (expand_class_desc): Set up base_info_type_node here.
14093	(init_rtti_processing): Instead of here.
14094
14095Wed Apr 10 14:17:13 1996  Jason Merrill  <jason@yorick.cygnus.com>
14096
14097	* rtti.c (init_rtti_processing): Do init regardless of -frtti.
14098	(build_typeid): Only complain about taking dynamic typeid without
14099	-frtti.
14100
14101	* decl2.c: flag_rtti defaults to 1.
14102
14103	* rtti.c (get_tinfo_var): The general class case is now smaller.
14104	(init_rtti_processing): Pack the latter three fields of base_info
14105	into 32 bits.
14106
14107Wed Apr 10 13:50:14 1996  Mike Stump  <mrs@cygnus.com>
14108
14109	* init.c (expand_member_init): Don't dump if name is NULL_TREE.
14110
14111Wed Apr 10 12:56:02 1996  Mike Stump  <mrs@cygnus.com>
14112
14113	* search.c (make_memoized_table_entry): Undefer the pop, if necessary.
14114	(push_memoized_context): Split out code to undefer pop_type_level to
14115	(clear_memoized_cache): here.
14116	(pop_memoized_context): We can only handle one layer of deferral of
14117	pop_type_level so clear the cache, if there was a previous level.
14118
14119Tue Apr  9 23:06:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
14120
14121	* rtti.c (init_rtti_processing): Build up base_info_type_node.
14122	(expand_class_desc): Use one pointer to an array of base_info
14123	structs, passed using a CONSTRUCTOR.
14124
14125Tue Apr  9 14:20:57 1996  Mike Stump  <mrs@cygnus.com>
14126
14127	* class.c (build_vbase_path): Remove block extern for
14128	flag_assume_nonnull_objects here.
14129	(build_vfn_ref): Split out functionality into build_vtbl_ref.
14130	(build_vtbl_ref): New routine.
14131	(build_vtable): Set up rtti info here.
14132	(add_virtual_function): Note in CLASSTYPE_RTTI the best
14133	place where we can get the rtti pointers from to avoid having to
14134	search around for a place.
14135	(finish_base_struct): Likewise.
14136	(finish_struct_1): Likewise.  Never create totally new vtables
14137	with totally new vtable pointers for rtti.  Disable code to layout
14138	vtable pointers better until we want to break binary
14139	compatibility.
14140	* rtti.c (build_headof_sub): New routine to convert down to a
14141	sub-object that has an rtti pointer in the vtable.
14142	(build_headof): Use it.  Also, use build_vtbl_ref now to be more
14143	maintainable.
14144	(build_dynamic_cast): Make sure we have saved it, if we need to.
14145	* search.c (dfs_init_vbase_pointers): Disable code that deals with
14146	a more efficient vtable layout, enable later.
14147	* call.c (flag_assume_nonnull_objects): Moved declaration to
14148	* cp-tree.h: here.  Declare build_vtbl_ref.
14149	* pt.c (instantiate_class_template): Use NULL_TREE instead of 0 in
14150	function calls that want a tree.
14151
14152Tue Apr  9 12:10:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
14153
14154	* rtti.c (build_dynamic_cast): Handle downcasting to X* given
14155	other X subobjects in the most derived type.  Ack.
14156
14157	* rtti.c (build_dynamic_cast): No need to strip cv-quals here,
14158	get_typeid will do it for us.
14159	(get_typeid_1): Break out call-building for expand_*_desc to use.
14160	(get_typeid): Call it.
14161	(expand_*_desc): Likewise.
14162	* decl.c (init_decl_processing): Don't set TYPE_BUILT_IN on char *
14163	and void *.
14164	(init_decl_processing): Lose builtin_type_tdescs lossage.
14165	* decl2.c (finish_vtable_vardecl): Remove obsolete code.
14166
14167Mon Apr  8 17:23:23 1996  Bob Manson  <manson@charmed.cygnus.com>
14168
14169	* pt.c (tsubst): When calling set_nested_typename, use
14170	TYPE_NESTED_NAME (current_class_type) instead of
14171	current_class_name.
14172
14173	* decl.c (pushdecl): Likewise.
14174	(pushdecl_class_level): Likewise.
14175	(grokdeclarator): Use NULL_TREE instead of 0 in the call to
14176	set_nested_typename.
14177
14178Sun Apr  7 10:44:31 1996  Jason Merrill  <jason@yorick.cygnus.com>
14179
14180	* rtti.c (synthesize_tinfo_fn): Handle arrays.
14181
14182	* cp-tree.h (DECL_REALLY_EXTERN): New macro.
14183
14184Sat Apr  6 13:56:27 1996  Jason Merrill  <jason@yorick.cygnus.com>
14185
14186	* rtti.c (throw_bad_cast): Use entry point __throw_bad_cast.
14187	(init_rtti_processing): Lose bad_cast_type.
14188	(build_dynamic_cast): Use throw_bad_cast.
14189
14190	* rtti.c (synthesize_tinfo_fn): Handle enums and pmfs.
14191
14192	* decl2.c (finish_file): Don't synthesize artificial functions
14193	that are external and not inline.
14194
14195	* rtti.c (get_tinfo_fn): If at_eof, call import_export_decl.
14196
14197	* decl2.c (finish_file): Handle having new inlines added to
14198	saved_inlines by synthesis.
14199
14200	* rtti.c (get_bad_cast_node): Don't require <typeinfo>.
14201
14202Fri Apr  5 17:02:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
14203
14204	RTTI rewrite to initialize nodes as needed, not require that
14205	users #include <typeinfo>, complete functionality and reduce wasted
14206	space.
14207	* rtti.c (init_rtti_processing): New fn.
14208	(build_typeid): The vtable entry is now a function.
14209	(get_tinfo_var): New fn.
14210	(get_tinfo_fn): Likewise.
14211	(get_typeid): Use it.
14212	(build_dynamic_cast): Declare and use entry point __dynamic_cast.
14213	(build_*_desc): Rename to expand_*_desc and rewrite to use entry
14214	points __rtti_*.
14215	(add_uninstantiated_desc, get_def_to_follow, build_t_desc): Lose.
14216	(synthesize_tinfo_fn): New fn.
14217	* method.c (build_t_desc_overload): Lose.
14218	(build_overload_with_type): More generic.
14219	* decl.c (init_decl_processing): Call init_rtti_processing.
14220	* class.c (set_rtti_entry): Use get_tinfo_fn.
14221	* decl2.c (mark_vtable_entries): Mark the rtti function.
14222	(finish_prevtable_vardecl): Don't build_t_desc.
14223	(import_export_decl): Handle tinfo functions.
14224	(finish_file): Likewise.
14225	* typeck.c (inline_conversion): New fn.
14226	(build_function_call_real): Use it.
14227	* cp-tree.h: Add decls.
14228
14229	* method.c (hack_identifier): Also convert component_refs from
14230	references.
14231
14232	* lex.c (cons_up_default_function): Use the type, not the name, in
14233	declspecs.
14234
14235	* decl2.c (import_export_vtable): Fix weak vtables.
14236
14237Fri Apr  5 13:30:17 1996  Bob Manson  <manson@charmed.cygnus.com>
14238
14239	* search.c (get_base_distance_recursive): Fix access checks for
14240	protected bases.
14241
14242Fri Apr  5 11:02:06 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14243
14244	* call.c (unary_complex_lvalue): Delete unneeded decl, it's in
14245	cp-tree.h.
14246	(convert_harshness): Add prototypes wrapped by PROTO.
14247	* decl2.c (grok_function_init): Likewise.
14248	(do_toplevel_using_decl): Change to void return type.
14249	* class.c (build_vtable_entry): Remove decl of make_thunk.
14250	(merge_overrides): Fix order of arg definitions.
14251	(finish_vtbls): Likewise.
14252	(fixup_vtable_deltas): Likewise.
14253	(modify_all_direct_vtables): Likewise.
14254	(modify_all_indirect_vtables): Likewise.
14255	* search.c (get_base_distance_recursive): Likewise.
14256	(get_abstract_virtuals_1): Likewise.
14257	(fixup_virtual_upcast_offsets): Likewise.
14258	(lookup_fnfields_1): Add prototypes wrapped by PROTO.
14259	* init.c (perform_member_init): Fix order of arg definitions.
14260	(expand_aggr_init_1): Add prototypes wrapped by PROTO.
14261	* cp-tree.h (make_thunk): Add decl.
14262	(overload_template_name, push_template_decl): Add decls.
14263	(do_toplevel_using_decl): Change to void return type.
14264	(vec_binfo_member): Add decl.
14265
14266Thu Apr  4 13:33:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14267
14268	* typeck.c (mark_addressable, convert_for_assignment,
14269	convert_for_initialization, pointer_int_sum, pointer_diff,
14270	unary_complex_lvalue): Add prototypes wrapped by PROTO.
14271	(convert_sequence): #if 0 fn decl, since definition also is.
14272
14273Thu Apr  4 11:00:53 1996  Mike Stump  <mrs@cygnus.com>
14274
14275	* rtti.c (build_dynamic_cast): Make sure we strip qualifiers on
14276	cast to pointer types for type searching.
14277
14278Wed Apr  3 17:10:57 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14279
14280	* typeck.c (get_delta_difference): Use cp_error, not error, in the
14281	case where BINFO == 0.
14282
14283Wed Apr  3 12:01:02 1996  Mike Stump  <mrs@cygnus.com>
14284
14285	* call.c (build_method_call): Fix wording of error messages so
14286	constructors come out right.
14287
14288Tue Apr  2 16:06:59 1996  Bob Manson  <manson@charmed.cygnus.com>
14289
14290	* decl.c (push_overloaded_decl): Don't warn about hidden
14291	constructors when both the type and the function are declared
14292	in a system header file.
14293
14294Mon Apr  1 09:03:13 1996  Bob Manson  <manson@charmed.cygnus.com>
14295
14296	* class.c (finish_struct_1): Propagate the TYPE_PACKED
14297	flag for the type to the type's fields.
14298
14299Sat Mar 30 12:14:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14300
14301	* parse.y (complex_parmlist, ELLIPSES): Take out ARM-based warning.
14302
14303Fri Mar 29 15:51:36 1996  Bob Manson  <manson@charmed.cygnus.com>
14304
14305	* class.c (base_info, finish_base_struct): Replace
14306	needs_virtual_dtor with base_has_virtual.
14307
14308	(finish_struct_1): Remove the old code that tried to make default
14309	destructors virtual.  Use base_has_virtual when checking if we need
14310	to add a vtable entry for the rtti code.
14311
14312Fri Mar 29 14:02:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
14313
14314	* pt.c (push_template_decl): Complain about template decl with
14315	inappropriate declaration.
14316
14317Fri Mar 29 12:15:35 1996  Bob Manson  <manson@charmed.cygnus.com>
14318
14319	* typeck.c (build_x_unary_op): Remove bogus check for taking
14320	the address of a member function.
14321
14322Fri Mar 29 11:56:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
14323
14324	* parse.y (constructor_declarator): Only push the class if
14325	we are not already in the class.
14326
14327Fri Mar 29 09:41:02 1996  Jeffrey A. Law  <law@cygnus.com>
14328
14329	* method.c (emit_thunk): Remove current_call_is_indirect nonsense.
14330	Add additional argument to INIT_CUMULATIVE_ARGS.
14331
14332Thu Mar 28 16:41:39 1996  Jason Merrill  <jason@yorick.cygnus.com>
14333
14334	* decl.c (shadow_tag): Fix error about anon union with methods.
14335
14336	* parse.y (self_reference): Only generate a self-reference if this
14337	is a non-template class.
14338	(opt.component_decl_list): Only use it if it was generated.
14339
14340	* parse.y (component_decl_1): Use constructor_declarator.
14341	(fn.def2): Likewise.
14342	(notype_component_declarator0): Likewise.
14343
14344Thu Mar 28 15:11:35 1996  Bob Manson  <manson@charmed.cygnus.com>
14345
14346	* typeck.c (build_x_unary_op): Add checks for taking the address
14347	of a TARGET_EXPR or of a member function, and give appropriate
14348	warnings.
14349
14350Thu Mar 28 14:49:26 1996  Jason Merrill  <jason@yorick.cygnus.com>
14351
14352	* pt.c (process_template_parm): Allow template type parms to be
14353	used as types for template const parms.
14354
14355Wed Mar 27 15:51:19 1996  Mike Stump  <mrs@cygnus.com>
14356
14357	* init.c (expand_vec_init): Ensure the eh cleanups are on the
14358	function_obstack.
14359
14360Wed Mar 27 10:14:30 1996  Jason Merrill  <jason@yorick.cygnus.com>
14361
14362	* decl.c (lookup_name_real): Be even more picky about the
14363	ambiguous lookup warning.
14364	(grokdeclarator): Tweak SCOPE_REF constructor declarators here.
14365	* parse.y (constructor_declarator): Rather than here.
14366
14367	* parse.y (constructor_declarator): New nonterminal.
14368	(fn.def1): Use it.
14369	(explicit_instantiation): Likewise.
14370
14371Tue Mar 26 13:41:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
14372
14373	Add implicit declaration of class name at class scope.
14374	* decl.c (lookup_name_real): Restrict pedwarn about ambiguous lookup.
14375	* parse.y (self_reference): New nonterminal.
14376	(opt.component_decl_list): Use it.
14377	(fn.def1): Add nested_name_specifier type_name cases.
14378	* class.c (build_self_reference): New function.
14379	(finish_struct): Handle access_default later, move self-reference
14380	decl to the end.
14381	* pt.c (lookup_template_class): Handle getting a TYPE_DECL.
14382	* cp-tree.h: Adjust.
14383
14384	* pt.c (do_function_instantiation): Separate handling of member
14385	functions and non-member functions properly.
14386
14387Mon Mar 25 14:23:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
14388
14389	* pt.c (process_template_parm): Improve error for 'volatile class K'.
14390
14391	* class.c (finish_struct_1): Check the right slot for destructors.
14392
14393	* decl.c (start_enum): Complain about enum templates.
14394
14395Mon Mar 25 13:25:31 1996  Mike Stump  <mrs@cygnus.com>
14396
14397	* init.c (resolve_offset_ref): Offset pointers to member data by one.
14398	* typeck.c (unary_complex_lvalue): Likewise.
14399
14400Mon Mar 25 13:30:42 1996  Bob Manson  <manson@charmed.cygnus.com>
14401
14402	* typeck.c (c_expand_return): Check for a returned local
14403	array name, similar to the check for an ADDR_EXPR.
14404
14405Mon Mar 25 13:07:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
14406
14407	* decl.c (cp_finish_decl): Don't build cleanups for static
14408	variables here.
14409
14410Fri Mar 22 17:57:55 1996  Mike Stump  <mrs@cygnus.com>
14411
14412	* typeck.c (build_modify_expr): Fix error messages to be more
14413	accurate.
14414	* cp-tree.h (assop_as_string): Parallel to op_as_string, but for
14415	assignment operators.
14416	* error.c (assop_as_string): Likewise.  Add support for `%Q' for
14417	assignment operators.
14418
14419Fri Mar 22 13:48:29 1996  Jason Merrill  <jason@yorick.cygnus.com>
14420
14421	* decl.c (grokdeclarator): Call bad_specifiers for typedefs.  Also
14422	give an error if initialized.  pedwarn about nested type with the
14423	same name as its enclosing class.
14424
14425	* pt.c (tsubst, case TYPE_DECL): Set DECL_CONTEXT.
14426
14427	* typeck.c (require_complete_type): Be sure to instantiate the
14428	MAIN_VARIANT of the type.
14429
14430	* decl2.c (finish_file): Instantiate pending templates before
14431	processing static constructors and destructors.
14432
14433	* pt.c (instantiate_decl): Don't instantiate functions at toplevel
14434	unless at_eof.
14435
14436Fri Mar 22 09:30:17 1996  Bob Manson  <manson@beauty.cygnus.com>
14437
14438	* decl2.c (delete_sanity): If error_mark_node is passed
14439	in as an expression, quit while we're ahead.
14440
14441	* decl.c (grokdeclarator): Give an error message if `friend'
14442	is combined with any storage class specifiers.
14443
14444Wed Mar 20 14:51:55 1996  Jason Merrill  <jason@yorick.cygnus.com>
14445
14446	* parse.y (named_complex_class_head_sans_basetype): Don't crash on
14447	definition of nonexistent nested type.
14448
14449	* error.c (dump_decl, case TYPE_DECL): Fix decision for whether or
14450	not to say 'typedef'.
14451
14452Wed Mar 20 00:11:47 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14453
14454	* cp-tree.h (struct lang_type): Make search_slot a tree, not a char*.
14455	* search.c (dfs_walk, dfs_init_vbase_pointers,
14456	expand_upcast_fixups): Remove cast of CLASSTYPE_SEARCH_SLOT.
14457	(dfs_find_vbases): Remove cast for CLASSTYPE_SEARCH_SLOT init.
14458
14459Tue Mar 19 17:56:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
14460
14461	* except.c (build_throw): Support minimal parse.
14462	* pt.c (tsubst_copy): Support THROW_EXPR.
14463	* decl2.c (build_expr_from_tree): Likewise.
14464
14465	* pt.c (mangle_class_name_for_template): Always allocate
14466	scratch_firstobj.
14467
14468Tue Mar 19 16:34:31 1996  Bob Manson  <manson@beauty.cygnus.com>
14469
14470	* cvt.c (cp_convert_to_pointer): Give an appropriate error
14471	when trying to cast from an incomplete type.
14472
14473Tue Mar 19 16:00:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
14474
14475	* pt.c (instantiate_class_template): Don't bother setting up
14476	CLASSTYPE_TAGS explicitly, as the nested types will add
14477	themselves.
14478
14479Tue Mar 19 15:48:43 1996  Bob Manson  <manson@beauty.cygnus.com>
14480
14481	* decl.c (shadow_tag): Remove old error check for usage of
14482	an enum without a previous declaration.
14483	(xref_tag): Add error message about usage of enums without a
14484	previous declaration.
14485
14486Tue Mar 19 09:21:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
14487
14488	* lex.c (do_identifier): Only do name consistency check if we're
14489	parsing.
14490
14491	* pt.c (push_template_decl): Don't crash if we get a member defn
14492	that doesn't match.
14493
14494	* decl.c (xref_tag_from_type): New function to do an xref without
14495	always having to figure out code_type_node.
14496	* cp-tree.h: Declare it.
14497	* pt.c (instantiate_class_template): Use it for friend classes.
14498	(lookup_template_class): Use it.
14499
14500	* typeck2.c (build_functional_cast): Pull out a single parm before
14501	passing it to build_c_cast.
14502
14503Tue Mar 19 09:07:15 1996  Bob Manson  <manson@beauty.cygnus.com>
14504
14505	* expr.c (do_case): Give an error message if a pointer is
14506	given as a case value.
14507
14508Mon Mar 18 21:57:54 1996  Jason Merrill  <jason@yorick.cygnus.com>
14509
14510	* typeck.c (build_c_cast): Don't pull single TEMPLATE_DECL out of
14511	an overload list.
14512
14513	* lex.c (cons_up_default_function): Really, now, interface hackery
14514	does not apply to synthesized methods.
14515
14516Mon Mar 18 18:20:57 1996  Mike Stump  <mrs@cygnus.com>
14517
14518	* call.c (build_method_call): Ctors and dtors now have special names
14519	with respect to lookups.
14520	* class.c (add_method): Likewise.
14521	(grow_method): Likewise.
14522	(finish_struct_methods): Likewise.
14523	(warn_hidden): Likewise.
14524	(finish_struct_1): Likewise.
14525	* cvt.c (convert_to_reference): Likewise.
14526	(convert_to_aggr): Likewise.
14527	(cp_convert): Likewise.
14528	* decl2.c (check_classfn): Likewise.
14529	* init.c (expand_member_init): Likewise.
14530	(expand_default_init): Likewise.
14531	(expand_aggr_init_1): Likewise.
14532	(build_offset_ref): Likewise.
14533	(build_new): Likewise.
14534	(build_delete): Likewise.
14535	* lex.c (do_inline_function_hair): Likewise.
14536	* search.c (lookup_field_1): Likewise.
14537	(lookup_fnfields_here): Likewise.
14538	(lookup_field): Likewise.
14539	(lookup_fnfields): Likewise.
14540	(get_virtual_destructor): Likewise.
14541	(dfs_debug_mark): Likewise.
14542	(dfs_pushdecls): Likewise.
14543	(dfs_compress_decls): Likewise.
14544	* tree.c (layout_basetypes): Likewise.
14545	* typeck.c (build_component_ref): Likewise.
14546	(build_x_function_call): Likewise.
14547	(build_modify_expr): Likewise.
14548	(convert_for_initialization): Likewise.
14549	(build_functional_cast): Likewise.
14550	* cp-tree.h (CLASSTYPE_FIRST_CONVERSION): Likewise.
14551	(CTOR_NAME): New.
14552	(DTOR_NAME): New.
14553	* decl.c (ctor_identifier): New.
14554	(dtor_identifier): New.
14555	(init_decl_processing): Set them.
14556
14557Mon Mar 18 18:00:51 1996  Mike Stump  <mrs@cygnus.com>
14558
14559	* typeck.c (build_component_ref): Don't get confused by fields whose
14560	context has no type name, like pointer to member functions.
14561
14562Mon Mar 18 13:19:03 1996  Jason Merrill  <jason@yorick.cygnus.com>
14563
14564	* decl.c (grokdeclarator): Handle typedef without declarator.
14565
14566	* pt.c (tsubst): Handle SCOPE_REF in declarator.
14567
14568	* parse.y (bad_parm): Catch another case of missing `typename'.
14569
14570	* lex.c (yyprint): Handle TYPE_DECLs.
14571
14572	* decl.c (start_function): Don't try to be clever.
14573
14574	* lex.c: Lose compiler_error_with_decl.
14575	* typeck2.c: Lose error_with_aggr_type.
14576	(incomplete_type_error): Use cp_* instead of old functions.
14577	(readonly_error): Likewise.
14578	* typeck.c (convert_arguments): Likewise.
14579	* search.c (lookup_nested_field): Likewise.
14580	* method.c (make_thunk): Likewise.
14581	* decl.c (grokparms): Likewise.
14582	* cp-tree.h: Update.
14583
14584	* tree.c (min_tree_cons): Call copy_to_permanent for the purpose
14585	and value.
14586
14587Mon Mar 18 11:25:52 1996  Bob Manson  <manson@beauty.cygnus.com>
14588
14589	* method.c (build_opfncall): When deleting a pointer to an
14590	array, build a new pointer to the tree past any ARRAY_TYPE
14591	nodes.
14592
14593Mon Mar 18 10:11:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14594
14595	* decl.c (lookup_name_real): Initialize local var TYPE to NULL_TREE.
14596
14597Fri Mar 15 11:03:57 1996  Jason Merrill  <jason@yorick.cygnus.com>
14598
14599	* pt.c (instantiate_decl): Only call import_export_decl if at_eof
14600	and ! DECL_INLINE.
14601
14602	* decl.c (finish_function): Don't set nested based on
14603	hack_decl_function_context.
14604	* parse.y (function_try_block): Check for nested function.
14605	(pending_inlines): Likewise.
14606
14607	* decl2.c (build_expr_from_tree): If a unary op already has a
14608	type, just return it.
14609
14610	* decl2.c (finish_prevtable_vardecl): Use ADJUST_VTABLE_LINKAGE.
14611
14612	* decl2.c (walk_vtables): vardecl_fn returns int; return 1 if it does.
14613	(finish_file): Check the return value of walk_vtables.
14614	(finish_prevtable_vardecl): Return int.
14615	(finish_vtable_vardecl): Likewise.
14616	(prune_vtable_vardecl): Likewise.
14617	* lex.c (set_vardecl_interface_info): Likewise.
14618	* cp-tree.h: Adjust return types.
14619
14620	* class.c (delete_duplicate_fields_1): Don't complain about
14621	duplicate nested types if they're the same type.
14622	(finish_struct): Remove check for duplicate.
14623	* decl2.c (grokfield): Don't check for typedef of anonymous type.
14624
14625Thu Mar 14 10:00:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
14626
14627	* cp-tree.h: Lose SIGNATURE_GROKKING_TYPEDEF.
14628
14629	* decl.c (grokdeclarator): Lose special handling of class-level
14630	typedef.  Lose SIGNATURE_GROKKING_TYPEDEF.  Set
14631	SIGNATURE_HAS_OPAQUE_TYPEDECLS later.
14632
14633	* cvt.c (convert_pointer_to_real): Retain cv-quals in conversion.
14634
14635	* pt.c (tsubst_copy): Strip cv-quals from destructor name types.
14636
14637	* search.c (compute_access): Fix handling of anonymous union
14638	members.
14639	* class.c (finish_struct_anon): Propagate TREE_{PRIVATE,PROTECTED}
14640	from anonymous unions to their members.
14641
14642	* typeck.c (build_x_function_call): For static member functions,
14643	hand off to build_member_call.
14644
14645Wed Mar 13 14:03:34 1996  Jason Merrill  <jason@yorick.cygnus.com>
14646
14647	* typeck.c (build_component_ref): Handle OFFSET_REFs.
14648
14649	* init.c (expand_vec_init): Fix init == 0 case.
14650
14651Tue Mar 12 14:36:02 1996  Jason Merrill  <jason@yorick.cygnus.com>
14652
14653	* init.c (build_new): pedwarn about init and array new.
14654	(expand_vec_init): Handle lists, use convert_for_initialization.
14655
14656	* typeck.c (convert_for_initialization): Pass LOOKUP_NO_CONVERSION
14657	when converting to an aggregate type.
14658	* cvt.c (cp_convert): Pass it through.
14659
14660	* typeck.c (build_conditional_expr): Handle user-defined
14661	conversions to slightly different types.
14662
14663	* decl.c (grokdeclarator): Force an array type in a parm to be
14664	permanent.
14665
14666	* decl2.c (do_using_directive): Sorry.
14667	(do_namespace_alias): Likewise.
14668	* lex.c (real_yylex): Warn about using the `namespace' keyword.
14669
14670Sun Mar 10 22:26:09 1996  Jason Merrill  <jason@yorick.cygnus.com>
14671
14672	* parse.y (datadef): Move call to note_list_got_semicolon up.
14673
14674Fri Mar  8 11:47:26 1996  Mike Stump  <mrs@cygnus.com>
14675
14676	* tree.c (unsave_expr): Don't unsave, UNSAVE_EXPRs.
14677
14678Fri Mar  8 11:29:06 1996  Mike Stump  <mrs@cygnus.com>
14679
14680	* decl.c (cp_finish_decl): The exception regions have to be
14681	nested, not overlapping.  We start the exception region for a
14682	decl, after it has been fully built, and all temporaries for it
14683	have been cleaned up.
14684
14685Thu Mar  7 17:46:06 1996  Mike Stump  <mrs@cygnus.com>
14686
14687	* tree.c (vec_binfo_member): Don't core dump if we have no bases.
14688
14689Thu Mar  7 14:11:49 1996  Jason Merrill  <jason@yorick.cygnus.com>
14690
14691	* tree.def: Add RETURN_INIT.
14692	* pt.c (instantiate_decl): Handle RETURN_INIT.
14693	* decl.c (store_return_init): Handle minimal_parse_mode.
14694
14695	* tree.c (cp_build_type_variant): Just return an error_mark_node.
14696	* decl.c (make_typename_type): Don't try to get the file and line
14697	of an identifier.
14698	* typeck.c (comptypes): Handle TYPENAME_TYPE.
14699
14700Wed Mar  6 18:47:50 1996  Per Bothner  <bothner@kalessin.cygnus.com>
14701
14702	* decl.c (poplevel): Make sure we clear out and restore old local
14703	non-VAR_DECL values by default when they go out of scope.
14704
14705Wed Mar  6 09:57:36 1996  Jason Merrill  <jason@yorick.cygnus.com>
14706
14707	* method.c (build_overload_value): Use DECL_ASSEMBLER_NAME in
14708	referring to addresses of variables and functions.
14709
14710	* error.c (dump_expr): Support SIZEOF_EXPR.
14711
14712	* init.c (do_friend): Use the return value of check_classfn.
14713
14714	* typeck.c (convert_arguments): Call complete_type.
14715
14716	* method.c (hack_identifier): After giving an error, set value to
14717	error_mark_node.
14718
14719Tue Mar  5 16:00:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
14720
14721	* tree.c (hack_decl_function_context): Kludge around DECL_CONTEXT
14722	lossage for local classes.
14723	* cp-tree.h: Declare it.
14724	* decl.c (lookup_name_real): Evil, painful hack for local classes.
14725	(grokfndecl): Set DECL_CLASS_CONTEXT and DECL_NO_STATIC_CHAIN here.
14726	Use hack_decl_function_context.
14727	(grokdeclarator): Don't set DECL_NO_STATIC_CHAIN here.
14728	(start_function): Use hack_decl_function_context.
14729	(finish_function): Likewise.
14730	* method.c (synthesize_method): Likewise.
14731	* lex.c (process_next_inline): Likewise.
14732	(do_pending_inlines): Likewise.
14733	* decl2.c (finish_file): Unset DECL_STATIC_FUNCTION_P when we're
14734	done with it.
14735
14736Mon Mar  4 22:38:39 1996  Gerald Baumgartner  <gb@alexander.cs.purdue.edu>
14737
14738	* sig.c (build_signature_pointer_or_reference_type): Align
14739	signature pointers/references on 8-byte boundaries so they can be
14740	grabbed 2 words at a time on a Sparc.
14741
14742Tue Mar  5 10:21:01 1996  Jason Merrill  <jason@yorick.cygnus.com>
14743
14744	* method.c (hack_identifier): Requiring a static chain is now a
14745	hard error.
14746	* decl.c (grokdeclarator): Set DECL_NO_STATIC_CHAIN on nested
14747	functions.
14748
14749Mon Mar  4 20:03:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
14750
14751	* init.c (build_offset_ref): Call complete_type.
14752
14753	* decl.c (pop_from_top_level): Always pop previous_class_type.
14754
14755	* parse.y: Handle multiple decls in a for-init-statement.
14756	* pt.c (tsubst_expr): Likewise.
14757
14758	* pt.c (tsubst): Use tsubst_expr for the second operand of an
14759	ARRAY_REF.
14760
14761	* decl.c (maybe_push_to_top_level): Don't save previous_class_type.
14762	(poplevel_class): Set it here.
14763	(pop_from_top_level): Pop it here if we're returning to class scope.
14764	* class.c (pushclass): Don't set it here.
14765
14766	* decl.c (maybe_push_to_top_level): Save current_template_parms,
14767	and clear it if !pseudo.
14768	(pop_from_top_level): Restore it.
14769
14770	* decl2.c (finish_file): Push the dummy each time we walk the list
14771	of vtables.
14772
14773	* error.c (dump_expr): Support LOOKUP_EXPR and actually do
14774	something for CAST_EXPR.
14775
14776Mon Feb 19 14:49:18 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
14777
14778	* cvt.c (cp_convert): Warn about implicit conversion of the
14779	address of a function to bool, as it is always true.
14780
14781Fri Feb 23 23:06:01 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
14782
14783	* typeck.c (c_expand_return): Fix warning for local externs returned.
14784
14785Mon Mar  4 15:03:11 1996  Jason Merrill  <jason@yorick.cygnus.com>
14786
14787	* tree.c (mapcar): Propagate const and volatile properly.
14788
14789	* typeck.c (complete_type): Be sure to instantiate the
14790	MAIN_VARIANT of the type.
14791
14792	* method.c (synthesize_method): Class interface hackery does not
14793	apply to synthesized methods.
14794
14795Mon Mar  4 14:05:23 1996  Jason Merrill  <jason@yorick.cygnus.com>
14796
14797	* pt.c (comp_template_args): Use comptypes rather than just
14798	checking for TEMPLATE_TYPE_PARM equivalence.
14799
14800	* typeck.c (build_x_function_call): Call complete_type before
14801	checking TYPE_OVERLOADS_CALL_EXPR.
14802
14803Mon Mar  4 18:48:30 1996  Manfred Hollstein   <manfred@lts.sel.alcatel.de>
14804
14805	* g++.c (main): Check also for new define ALT_LIBM.
14806
14807Fri Mar  1 13:09:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
14808
14809	* pt.c (instantiate_class_template): If we don't have a pattern
14810	yet, that's OK.
14811	(coerce_template_parms): If we see a local class, bail.
14812
14813	* decl.c (grok_reference_init): Make sure there's a type before
14814	checking its code.
14815
14816	* pt.c (do_function_instantiation): Avoid crashing on invalid decls.
14817	(push_template_decl): Likewise.
14818
14819	* parse.y (named_class_head): Set
14820	CLASSTYPE_TEMPLATE_SPECIALIZATION here if we have basetypes.
14821
14822	* decl.c (xref_tag): Diagnose redeclaration of template
14823	type-parameter name.
14824
14825	* error.c (dump_type): Handle anonymous template type parms.
14826
14827	* pt.c (instantiate_template): Use TYPE_MAIN_DECL instead of
14828	TYPE_STUB_DECL.
14829	(coerce_template_parms): Likewise.
14830
14831Thu Feb 29 16:26:01 1996  Mike Stump  <mrs@cygnus.com>
14832
14833	* class.c (instantiate_type, case {ARRAY,INDIRECT}_REF,
14834	case ADDR_EXPR): Don't modify rhs if a subinstantiation fails.
14835
14836Thu Feb 29 08:20:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
14837
14838	* pt.c (instantiate_template): Take the MAIN_VARIANT of the type
14839	before trying to get its STUB_DECL.
14840	(coerce_template_parms): Likewise.
14841
14842	* parse.y (template_type_parm): If they didn't use 'class',
14843	pretend they did after giving an error.
14844
14845	* pt.c (coerce_template_parms): Diagnose use of local class.
14846
14847	* decl.c (grok_reference_init): Use instantiate_type.
14848
14849	* error.c (dump_expr): Handle TEMPLATE_DECLs.
14850
14851	* parse.y (named_class_head): Diagnose mismatching types and tags.
14852
14853	* decl.c (pushdecl): Type decls and class templates clash with
14854	artificial type decls, not hide them.
14855
14856	* decl.c (redeclaration_error_message): Diagnose redefinition of
14857	templates properly.
14858	(duplicate_decls): Diagnose disallowed overloads for template
14859	functions, too.
14860
14861	* decl.c (start_decl): Call complete_type before checking for a
14862	destructor.
14863
14864	* pt.c (tsubst): Use tsubst_expr on the elts of a VEC.
14865
14866	* decl.c (xref_tag): A TEMPLATE_TYPE_PARM is a match.
14867
14868Wed Feb 28 09:28:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
14869
14870	* decl.c (grok_op_properties): Don't check for operator++(int) in
14871	a template.
14872
14873	* tree.c (perm_manip): Return a copy of variable and function
14874	decls with external linkage.
14875
14876	* tree.def: Change some of the min tree codes to type "1".
14877	* pt.c (uses_template_parms): Handle 'e's, return 1 for LOOKUP_EXPRs.
14878	* method.c (build_overload_int): Emit something arbitrary for
14879	anything but an INTEGER_CST if we're in a template.
14880
14881	* decl.c (cp_finish_decl): Call complete_type before deciding
14882	whether or not to lay out the decl.
14883
14884	* lex.c (do_identifier): Check for DECL_INITIAL before using it.
14885
14886Tue Feb 27 16:35:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
14887
14888	* typeck2.c (build_x_arrow): Call complete_type.
14889
14890	* pt.c (add_pending_template): Broken out.
14891	(lookup_template_class): If -fexternal-templates, call it for all
14892	the methods of implemented types.
14893	(instantiate_class_template): Instead of instantiating them here.
14894	(instantiate_decl): Handle -fexternal-templates earlier.
14895
14896Tue Feb 27 15:51:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14897
14898	* search.c, lex.c, decl.c, class.c, cp-tree.h: Don't wrap the
14899	memoized lookup stuff inside GATHER_STATISTICS.
14900
14901Tue Feb 27 10:38:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
14902
14903	* decl.c (start_decl): Complain about array of incomplete type
14904	here.
14905	(grokdeclarator): Not here.
14906
14907	* parse.y (template_parm): Expand full_parm inline so we can set
14908	the rule's precedence.
14909
14910	* pt.c (tsubst_expr): If we're in a template, just do tsubst_copy.
14911	(tsubst): tsubst_expr the DECL_INITIAL of FIELD_DECLs.
14912	* decl2.c (grokbitfield): Don't check for integer constant here.
14913	* class.c (finish_struct_1): Check here.
14914
14915	* decl.c (define_label): Make the min decl go on permanent_obstack.
14916
14917	* pt.c (unify): Don't handle CONST_DECLs.
14918	(uses_template_parms): Don't check DECL_INITIAL on a CONST_DECL.
14919	(tsubst_copy): Likewise.
14920
14921	* lex.c (do_identifier): Do pull the DECL_INITIAL out of a
14922	CONST_DECL for a template parm.
14923
14924Mon Feb 26 12:48:18 1996  Jason Merrill  <jason@yorick.cygnus.com>
14925
14926	* decl.c (grokdeclarator): Complain about array of incomplete type
14927	here.
14928	(start_decl_1): Not here.
14929
14930	* pt.c (tsubst): Handle pointer-to-function declarators.
14931
14932	* method.c (hack_identifier): If pedantic, diagnose local class
14933	methods that require a static chain.
14934
14935	* decl.c (grok_op_properties): No longer static.
14936	* cp-tree.h: Declare it.
14937	* pt.c (tsubst): Call it for operators.
14938	Use tsubst_copy for TREE_VECs.
14939
14940	* parse.y (template_arg): The expr has precedence like '>'.
14941
14942Fri Feb 23 14:51:52 1996  Jason Merrill  <jason@yorick.cygnus.com>
14943
14944	* pt.c (coerce_template_parms): Don't coerce an expression using
14945	template parms.
14946	(uses_template_parms): Also check DECL_INITIAL in CONST_DECLs.
14947	(tsubst): Don't use build_index_2_type if the max_value uses template
14948	parms.
14949	* method.c (build_overload_int): Emit something arbitrary for an
14950	expression using template parms.
14951
14952	* parse.y (template_close_bracket): New non-terminal to catch use
14953	of '>>' instead of '> >' in template class names.
14954	(template_type): Use it.
14955	* Makefile.in (CONFLICTS): Causes one more r/r conflict.
14956
14957	* tree.def: Add CAST_EXPR.
14958	* typeck2.c (build_functional_cast): Use CAST_EXPR instead of
14959	CONVERT_EXPR for minimal_parse_mode.
14960	* typeck.c (build_c_cast): Likewise.
14961	* pt.c (tsubst_copy): Likewise.
14962	* decl2.c (build_expr_from_tree): Likewise.
14963	* error.c (dump_expr): Likewise.
14964
14965Fri Feb 23 10:36:46 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14966
14967	* except.c (SetTerminate, SetUnexpected): Put back global vars.
14968	(init_exception_processing): Put back decl/init of
14969	set_unexpected_fndecl and set_terminate_fndecl, needed to get the
14970	fns from libstdc++.
14971
14972	* decl.c (struct binding_level): Delete ACCEPT_ANY bitfield.
14973	(declare_uninstantiated_type_level, uninstantiated_type_level_p):
14974	Delete unused fns.
14975	* cp-tree.h (declare_uninstantiated_type_level,
14976	uninstantiated_type_level_p): Delete prototypes.
14977
14978Thu Feb 22 19:36:15 1996  Jason Merrill  <jason@yorick.cygnus.com>
14979
14980	* pt.c (tsubst_expr): Add default return.
14981
14982Thu Feb 22 16:47:24 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
14983
14984	* error.c (fndecl_as_string): Delete unused arg CNAME.
14985	* sig.c (build_signature_table_constructor,
14986	build_signature_method_call): Fix calls.
14987
14988	* class.c (the_null_vtable_entry): Delete var definition.
14989	(init_class_processing): Delete tree the_null_vtable_entry init.
14990	* decl.c (no_print_{functions, builtins}): Declare as static.
14991	(__tp_desc_type_node): #if 0 var definition.
14992	(init_type_desc): #if 0 init of __tp_desc_type_node.
14993	(vb_off_identifier): Move var decl into init_decl_processing.
14994	(current_function_assigns_this): Declare as static.
14995	(int_ftype_ptr_ptr_int, void_ftype_ptr_int_int): Delete var decls.
14996	(init_decl_processing): Delete init of void_ftype_ptr_ptr_int.
14997	Move decls of string_ftype_ptr_ptr and int_ftype_string_string here.
14998	* decl2.c (delete_sanity): Delete definition/mod of local var ELT_SIZE.
14999	* init.c (BI_header_type, BI_header_size): Declare as static.
15000	* pt.c (template_classes): Delete unused var.
15001	(add_pending_template): Delete decl for non-existent fn.
15002	(lookup_template_class): Delete vars CODE and TAG_CODE.
15003	(instantiate_template): Delete unused var TARGS.
15004	* cp-tree.h (vb_off_identifier, current_function_assigns_this):
15005	Delete decls.
15006	(__tp_desc_type_node): #if 0 var decl.
15007	(fndecl_as_string): Fix prototype.
15008
15009Thu Feb 22 15:56:19 1996  Jason Merrill  <jason@yorick.cygnus.com>
15010
15011	* tree.def: Add GOTO_STMT.
15012	* pt.c (tsubst_expr): Support goto and labels.
15013	* decl.c (define_label): Support minimal parsing.
15014	* parse.y (simple_stmt): Likewise.
15015
15016Thu Feb 22 15:30:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15017
15018	* xref.c (GNU_xref_member): Only define/set var I if
15019	XREF_SHORT_MEMBER_NAMES is defined, to match when it's actually
15020	used.
15021	(GNU_xref_end_scope): Delete unused fifth arg TRNS.
15022	(GNU_xref_end): Fix call.
15023	* decl.c (poplevel, poplevel_class, finish_method): Fix calls.
15024	* cp-tree.h (GNU_xref_end_scope): Fix prototype.
15025
15026	* tree.c (build_exception_variant): Delete unused vars I, A, T,
15027	T2, and CNAME.
15028	(layout_vbasetypes): Delete unused var NONVIRTUAL_VAR_SIZE.
15029	(mapcar): Delete unused var CODE.
15030	(build_cplus_new): Delete unused arg WITH_CLEANUP_P.
15031	(break_out_cleanups): Fix call.
15032	(bot_manip): Likewise.
15033	* call.c (build_method_call): Likewise.
15034	* cvt.c (build_up_reference, convert_to_reference, cp_convert):
15035	Likewise.
15036	* typeck.c (unary_complex_lvalue, build_modify_expr,
15037	convert_for_initialization): Likewise.
15038	* typeck2.c (build_functional_cast): Likewise.
15039	* cp-tree.h (build_cplus_new): Fix prototype.
15040
15041	* repo.c (open_repo_file): Delete unused var Q.
15042	(repo_compile_flags, repo_template_declared,
15043	repo_template_defined, repo_class_defined, repo_inline_used,
15044	repo_vtable_used, repo_tinfo_used): #if 0 unused fns.
15045	(repo_get_id, repo_vtable_used): Declare as static.
15046	* cp-tree.h (mark_{decl,class}_instantiated, finish_repo): Add
15047	prototypes.
15048
15049Thu Feb 22 14:53:35 1996  Jason Merrill  <jason@yorick.cygnus.com>
15050
15051	* parse.y (pending_inlines): Add function_try_block case.
15052
15053	* pt.c (unify): Fix for template const parms.
15054
15055Thu Feb 22 13:24:15 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15056
15057	* lex.c (extract_interface_info): Delete forward decl.
15058	(default_copy_constructor_body, default_assign_ref_body): Delete
15059	decls for non-existent functions.
15060	(synth_firstobj, inline_text_firstobjs): Delete unused vars.
15061	(init_lex): Delete setting them.
15062	(cons_up_default_function): Delete unused vars FUNC_BUF,
15063	FUNC_LEN, and COMPLEX.  Delete code setting COMPLEX.  Delete old
15064	#if 0'd synth code.
15065	(toplevel, expression_obstack): Delete unused extern decls.
15066	(tree_node_kind): Delete unused enum.
15067	(tree_node_counts, tree_node_sizes): Wrap with #ifdef
15068	GATHER_STATISTICS.
15069	(tree_node_kind_names): Delete unused extern decl.
15070	(synth_obstack): Delete unused var.
15071	(init_lex): Don't set it.
15072	(init_parse): Add decl before use.
15073	(reduce_count): Only define #ifdef GATHER_STATISTICS && REDUCE_LENGTH.
15074	(current_unit_{name, language}): Delete unused vars.
15075	(check_newline): Don't bother setting them, just accept the #pragma.
15076	* cp-tree.h (init_repo, peek_yylex): Add prototypes.
15077	(current_unit_{name, language}): Delete decls.
15078
15079	* search.c: Wrap all of the memoized functions, macros, and
15080	variables inside #ifdef GATHER_STATISTICS.
15081	(lookup_field, lookup_fnfields): Likewise.
15082	(init_search_processing): Likewise.
15083	(reinit_search_statistics): Wrap whole function.
15084	* lex.c (reinit_lang_specific): Wrap call to reinit_search_statistics.
15085
15086	* decl.c (finish_function): Only call pop_memoized_context if
15087	GATHER_STATISTICS is defined.
15088	(start_function): Likewise for push_memoized_context.
15089	* class.c (pushclass, popclass): Likewise.
15090
15091	* cp-tree.h (CLASSTYPE_MTABLE_ENTRY): Move definition from here...
15092	* search.c (CLASSTYPE_MTABLE_ENTRY): ... to here.
15093
15094	* cvt.c (cp_convert): Delete unused local var FORM.
15095	* cp-tree.h (can_convert, can_convert_arg, real_lvalue_p): Add
15096	prototypes.
15097
15098Thu Feb 22 13:19:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
15099
15100	* pt.c (do_poplevel): Oops; really return what we get from
15101	poplevel this time.
15102
15103Thu Feb 22 11:41:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15104
15105	* cp-tree.h (is_aggr_type): Add prototype.
15106
15107	* cp-tree.h ({push,pop}_cp_function_context): Add decls.
15108	* method.c ({push,pop}_cp_function_context): Delete decls.
15109	* except.c (start_eh_unwinder, end_eh_unwinder): Declare as void.
15110	(SetUnexpected, SetTerminate): Delete unused vars.
15111	(init_exception_processing): Don't set SetUnexpected or
15112	SetTerminate.  Don't set SET_UNEXPECTED_FNDECL or SET_TERMINATE_FNDECL.
15113	(output_exception_table_entry): Delete unused array LABEL.
15114	(expand_internal_throw): Delete unused var PARAMS.
15115	(expand_start_catch_block): Delete unused var CLEANUP.
15116	(emit_exception_table): Delete unused var EH_NODE_DECL.
15117	(expand_builtin_throw): Delete unused vars UNWIND_AND_THROW and
15118	GOTO_UNWIND_AND_THROW.  Don't set them.
15119	(end_eh_unwinder): Add top decl.
15120	(pop_rtl_from_perm): Delete unused decl of PERMANENT_OBSTACK.
15121	(exception_section, push_rtl_perm, do_function_call,
15122	lang_interim_eh, push_eh_cleanup, eh_outer_context,
15123	expand_end_eh_spec, end_eh_unwinder): Declare as static.
15124	(saved_pc, saved_throw_type, saved_throw_value, saved_cleanup,
15125	throw_used): Likewise.
15126	* cp-tree.h (expand_end_eh_spec): Delete prototype.
15127
15128	* search.c (dfs_mark, dfs_mark_vtable_path,
15129	dfs_unmark_vtable_path, dfs_mark_new_vtable,
15130	dfs_unmark_new_vtable, dfs_clear_search_slot,
15131	dfs_search_slot_nonempty_p, bfs_markedp, bfs_unmarkedp,
15132	bfs_marked_vtable_pathp, bfs_unmarked_vtable_pathp,
15133	bfs_marked_new_vtablep, bfs_unmarked_new_vtablep): #if 0 unused
15134	functions.
15135	(n_fields_searched, n_calls_lookup_field, n_calls_lookup_field_1,
15136	n_calls_lookup_fnfields, n_calls_lookup_fnfields_1,
15137	n_calls_get_base_type, n_outer_fields_searched, n_contexts_saved):
15138	Only define #ifdef GATHER_STATISTICS.
15139	(reinit_search_statistics): Only init some vars if GATHER_STATISTICS
15140	is defined.
15141	(vbase_decl): Delete var definition.
15142	(init_search): Delete old decl.
15143	(init_vbase_pointers): Delete building of VBASE_DECL, since it's
15144	never actually used.
15145	(expand_indirect_vtbls_init): Delete init of VBASE_DECL.
15146	(get_base_distance_recursive): Delete unused fourth arg
15147	BASETYPE_PATH.  Fix call .
15148	(get_base_distance): Fix call.
15149	(push_class_decls): Delete unused var ID.
15150	(make_memoized_table_entry): Declare as static.
15151	(breadth_first_search): Declare as static.
15152	(tree_has_any_destructor_p): Declare as static.
15153	(pop_class_decls): Delete unused arg pop_class_decls.
15154	* class.c (popclass): Fix call to pop_class_decls.
15155	* cp-tree.h (make_memoized_table_entry, breadth_first_search,
15156	tree_has_any_destructor_p): Delete prototypes.
15157
15158	* rtti.c (build_ptmf_desc): Delete unused arg TYPE.
15159	(build_t_desc): Fix call.  Delete unused vars ELEMS and TT.
15160	(build_dynamic_cast): Delete unused local vars TMP1 and RETVAL.
15161	(build_user_desc): Delete unused var T.
15162	(build_class_desc): Delete unused vars T and OFF.
15163	(build_t_desc): Delete unused var NAME_STRING.
15164	(build_headof): Make static.
15165	(get_bad_cast_node): Likewise.
15166	(get_def_to_follow): Likewise.
15167	* cp-tree.h (init_type_desc): Add prototype.
15168	(build_headof): Remove prototype.
15169
15170Thu Feb 22 00:54:22 1996  Jason Merrill  <jason@yorick.cygnus.com>
15171
15172	* pt.c (tsubst): Only look for matching decls at file scope for
15173	non-member functions.
15174
15175	* call.c (build_scoped_method_call): Handle scoped destructor
15176	calls in templates.
15177
15178	* decl.c (*_top_level): Also save previous_class_values.
15179
15180	* pt.c (tsubst_expr): Support do {} while loops.
15181	* parse.y (simple_stmt): Likewise.
15182	* tree.def: Likewise.
15183
15184	* method.c (build_overload_identifier): For a class nested in a
15185	template class, don't mangle in the template parms from our
15186	context.
15187
15188	* lex.c, cp-tree.h: Remove support for template instantiations in
15189	the pending_inlines code.
15190	* pt.c: Remove dead functions and unused arguments.
15191	(uses_template_parms): TYPENAME_TYPEs always use template parms.
15192	* parse.y: Stop passing anything to end_template_decl.
15193	* tree.c (print_lang_statistics): Only print tinst info #ifdef
15194	GATHER_STATISTICS.
15195
15196Wed Feb 21 16:57:33 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15197
15198	* init.c (expand_recursive_init{,_1}): Delete decls.
15199	(sort_member_init): Delete unused var INIT.
15200	(emit_base_init): Delete unused var X.
15201	(build_offset_ref): Delete unused var CNAME.
15202	(sort_member_init): Delete unused var FIELDS_TO_UNMARK.
15203	(emit_base_init): Delete unused local var BASE.  Delete extern
15204	decl of IN_CHARGE_IDENTIFIER.
15205	(build_delete): Delete unused local var VIRTUAL_SIZE.
15206
15207	* init.c (build_vec_delete): Delete unused third arg ELT_SIZE.
15208	(build_delete): Fix call.
15209	* decl2.c (delete_sanity): Likewise.
15210	* cp-tree.h (build_vec_delete): Update prototype.
15211
15212	* typeck.c (common_base_type): Delete unused var TMP.
15213	(build_binary_op): Delete local var ARGS_SAVE.
15214	(build_array_ref): Delete unused var ITYPE.
15215	(c_expand_return): Delete unused var USE_TEMP.
15216
15217	* typeck.c (compexcepttypes): Delete unused arg STRICT.
15218	(comptypes): Fix calls.
15219	* decl.c (duplicate_decls): Likewise.
15220	* cp-tree.h (compexcepttypes): Delete extra arg.
15221
15222	* decl2.c (check_classfn): Delete unused second arg CNAME.
15223	* decl.c (start_decl, grokfndecl): Fix calls.
15224	* init.c (do_friend): Likewise.
15225	* cp-tree.h (check_classfn): Update prototype.
15226
15227	* cp-tree.h (signature_error, import_export_vtable,
15228	append_signature_fields, id_in_current_class, mark_used,
15229	copy_assignment_arg_p): Add decls.
15230	* decl2.c (mark_used): Delete decl.
15231
15232	* class.c (n_*): Wrap with #ifdef GATHER_STATISTICS.
15233
15234	* class.c (get_vtable_entry): Disable unused function.
15235	(doing_hard_virtuals): Delete unused static global var.
15236	(finish_struct_1): Don't init DOING_HARD_VIRTUALS.
15237	(prepare_fresh_vtable): Delete unused vars PATH and RESULT.
15238	(overrides): Delete unused vars RETTYPE and BASE_RETTYPE.
15239	(modify_one_vtable): Delete unused var OLD_RTTI.
15240	(finish_struct_anon): Delete unused vars OFFSET and X.
15241	(finish_struct_bits): Delete unused var METHOD_VEC.
15242	(get_basefndecls): Delete unused var PURPOSE.  Delete unused
15243	for-scope local variable METHODS.
15244
15245	* call.c (user_harshness): Delete unused/unneeded arg PARM.
15246	(ideal_candidate): Delete unused args BASETYPE and PARMS.
15247	(build_method_call): Delete unused args passed into ideal_candidate.
15248	(build_overload_call_real): Likewise.  Delete unused var OVERLOAD_NAME.
15249	* cp-tree.h (synthesize_method): Add decl.
15250
15251	* decl.c (note_level_for_for): Give void return type.
15252	(pushdecl_nonclass_level): Likewise.
15253	(finish_function): Delete unused vars VFIELDS and ALLOCATED_THIS.
15254	(poplevel): Delete unused var IMPLICIT_TRY_BLOCK.
15255	(suspend_binding_level): Delete unused var LEVEL.
15256	(duplicate_decls): Delete unused var CTYPE.
15257	(duplicate_decls): Delete unused var PREVIOUS_C_DECL.
15258	(init_decl_processing): Delete unused vars FLOAT_ENDLINK and
15259	PTR_ENDLINK.
15260	(grokdeclarator): Delete unused var C.
15261	(grokdeclarator): Delete unused var SIZE_VARIES.
15262	(grokparms): Delete unused var SAW_VOID.
15263	(start_function): Delete unused var OLDDECL.
15264	(cplus_expand_expr_stmt): Delete unused var
15265	REMOVE_IMPLICIT_IMMEDIATELY.
15266
15267	* cp-tree.h (pushdecl_nonclass_level): Fix prototype.
15268
15269	* Makefile.in (CONFLICTS): Update to 12 shift/reduce.
15270
15271Wed Feb 21 00:06:17 1996  Jason Merrill  <jason@yorick.cygnus.com>
15272
15273	* tree.c (build_min): Set TREE_COMPLEXITY to lineno.
15274	(build_min_nt): Likewise.
15275	* pt.c (do_pushlevel): Emit line note.
15276	(do_poplevel): Return what we get from poplevel.
15277	(tsubst_expr): Set lineno from TREE_COMPLEXITY in stmt nodes.
15278	* parse.y: Use do_pushlevel and do_poplevel.
15279	* cp-tree.h: Declare do_poplevel.
15280
15281	* cp-tree.h: Declare at_eof.
15282	* decl.c (cp_finish_decl): Pass it to rest_of_decl_compilation.
15283	* decl2.c (import_export_decl): Renamed from import_export_inline.
15284	(finish_file): Call it to do interface handling for statics.
15285	* pt.c (tsubst_copy): Call mark_used on variables and functions
15286	used here.
15287
15288	* decl2.c (finish_file): Don't emit statics we can't generate.
15289	* pt.c (instantiate_decl): Don't set interface on instantiations
15290	we can't generate.
15291
15292	* cp-tree.h (struct tinst_level): Change 'classname' to 'decl'.
15293	* tree.c (print_lang_statistics): Print max template depth.
15294	* pt.c (push_tinst_level): Dump entire instantiation context.
15295	(instantiate_class_template): Use it and pop_tinst_level.
15296	(instantiate_decl): Likewise.
15297
15298	* call.c class.c cp-tree.h decl.c decl2.c error.c lex.c method.c
15299	pt.c ptree.c tree.def: Remove all traces of UNINSTANTIATED_P_TYPE.
15300
15301Tue Feb 20 18:21:51 1996  Jason Merrill  <jason@yorick.cygnus.com>
15302
15303	* call.c class.c cp-tree.h cvt.c decl.c decl2.c error.c expr.c
15304	init.c lex.c method.c parse.y pt.c repo.c search.c spew.c tree.c
15305	tree.def typeck.c typeck2.c xref.c: Massive, systemic changes for
15306	the new template implementation.
15307
15308Tue Feb 20 17:14:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15309
15310	* decl2.c (check_cp_case_value): Use STRIP_TYPE_NOPS.
15311
15312Thu Feb 15 18:44:42 1996  Mike Stump  <mrs@cygnus.com>
15313
15314	* decl.c (cp_finish_decl): Delay emitting the debug information for
15315	a typedef that has been installed as the canonical typedef, if the
15316	type has not yet been defined.
15317
15318Thu Feb 15 09:39:08 1996  Jason Merrill  <jason@yorick.cygnus.com>
15319
15320	* decl2.c (grokfield): Still call pop_nested_class for access decls.
15321
15322Wed Feb 14 17:30:04 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15323
15324	* decl.c (lookup_label): Call label_rtx.
15325
15326	* decl.c (make_binding_level): New function.
15327	(pushlevel, pushlevel_class): Call it instead of explicit
15328	duplicate calls to xmalloc.
15329
15330	* decl.c (init_decl_processing): Delete useless build_pointer_type
15331	call.
15332
15333	* decl.c (float_ftype_float, ldouble_ftype_ldouble): Add definitions.
15334	(sizet_ftype_string): Delete variable.
15335	(init_decl_processing): Add built-in functions fabsf, fabsl,
15336	sqrtf, sqrtl, sinf, sin, sinl, cosf, cos, cosl.  New local
15337	variable strlen_ftype, used for strlen.
15338
15339Wed Feb 14 16:21:25 1996  Jason Merrill  <jason@yorick.cygnus.com>
15340
15341	* decl.c (push_to_top_level): Start from current_binding_level
15342	again for now; the stl hacks depend on g++ being broken in this
15343	way, and it'll be fixed in the template rewrite.
15344
15345	* tree.def: Add USING_DECL.
15346	* decl2.c (do_class_using_decl): Implement.
15347	(grokfield): Pass access decls off to do_class_using_decl instead of
15348	grokdeclarator.
15349	* error.c (dump_decl): Handle USING_DECLs.
15350	* decl.c (grokdeclarator): Remove code for handling access decls.
15351	* class.c (finish_struct_1): Adjust accordingly, treat using-decls
15352	as access decls for now.
15353	(finish_struct): Don't check USING_DECLs for other uses of the name.
15354
15355	* search.c (get_matching_virtual): Use cp_error_at.
15356
15357Wed Feb 14 10:36:58 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15358
15359	* typeck.c (comptypes): Default COMP_TYPE_ATTRIBUTES to 1, to
15360	match c-typeck.c.
15361	(self_promoting_args_p): Move the check that TYPE is non-nil
15362	before trying to look at its main variant.
15363	(unsigned_type, signed_type): Add checking of DI/SI/HI/QI nodes.
15364
15365	* cp-tree.h (DECL_WAITING_FRIENDS, SET_DECL_WAITING_FRIENDS):
15366	Delete macros.
15367	* init.c (xref_friend, embrace_waiting_friends): Delete functions.
15368	(do_friend): Delete call to xref_friend.
15369	* class.c (finish_struct_1): Delete call to embrace_waiting_friends.
15370
15371	* typeck.c (convert_sequence): #if 0 unused function.
15372
15373	* cp-tree.h (DECL_IN_MEMORY_P): New macro w/ the check that used to
15374	be in decl_in_memory_p.
15375	(decl_in_memory_p): Delete decl.
15376	* expr.c (decl_in_memory_p): Delete fn.
15377	* typeck.c (mark_addressable): Use DECL_IN_MEMORY_P.
15378
15379	* decl.c (cp_finish_decl): Use DECL_IN_MEMORY_P.
15380
15381Tue Feb 13 12:51:21 1996  Jason Merrill  <jason@yorick.cygnus.com>
15382
15383	* class.c (finish_struct_1): Check for a pure-specifier on a
15384	non-virtual function here.
15385
15386	* decl2.c (grok_function_init): Don't check whether the function
15387	is virtual here.
15388	(grokfield): Don't call check_for_override here.
15389
15390	* decl.c (push_to_top_level): Start from inner_binding_level,
15391	check class_shadowed in class levels.
15392
15393Mon Feb 12 17:46:59 1996  Mike Stump  <mrs@cygnus.com>
15394
15395	* decl.c (resume_level): Ignore things that don't have names, instead
15396	of core dumping.
15397
15398Mon Feb 12 15:47:44 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15399
15400	* decl2.c (grokfield): Set DECL_VINDEX properly for FUNCTION_DECLs.
15401
15402Sat Feb 10 17:59:45 1996  Jason Merrill  <jason@yorick.cygnus.com>
15403
15404	* class.c (finish_struct_1): Set DECL_VINDEX properly on a
15405	synthesized dtor.
15406
15407	* parse.y (complete_type_name): Bind global_scope earlier.
15408	(complex_type_name): Likewise.
15409	(qualified_type_name): Remove.
15410
15411Thu Feb  8 15:15:14 1996  Jason Merrill  <jason@yorick.cygnus.com>
15412
15413	* decl.c (grokfndecl): Move code that looks for virtuals in base
15414	classes...
15415	* class.c (check_for_override): ... to a new function.
15416	(finish_struct_1): Call it.
15417
15418	* cp-tree.h: Declare warn_sign_compare.
15419
15420	* typeck.c (build_binary_op_nodefault): Check warn_sign_compare
15421	rather than extra_warnings to decide whether to warn about
15422	comparison of signed and unsigned.
15423
15424	* decl2.c (lang_decode_option): Handle warn_sign_compare.  -Wall
15425	implies -Wsign-compare.  -Wall doesn't imply -W.
15426
15427Wed Feb  7 15:27:57 1996  Mike Stump  <mrs@cygnus.com>
15428
15429	* typeck.c (build_component_ref): Fix to handle anon unions in base
15430	classes as well.
15431
15432Wed Feb  7 14:29:12 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15433
15434	* class.c (resolves_to_fixed_type_p): Delete code dealing with
15435	a WITH_CLEANUP_EXPR, since we don't generate them any more.
15436	* cvt.c (build_up_reference): Likewise.
15437	* decl.c (grok_reference_init): Likewise.
15438	(cp_finish_decl): Likewise.
15439	* error.c (dump_expr): Likewise.
15440	* tree.c (real_lvalue_p): Likewise.
15441	(lvalue_p): Likewise.
15442	(build_cplus_new): Likewise.
15443	(unsave_expr_now): Likewise.
15444	* typeck.c (unary_complex_lvalue, build_modify_expr,
15445	c_expand_return): Likewise.
15446
15447Tue Feb  6 13:39:22 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15448
15449	Make the C++ front-end pay attention to attributes for structures.
15450	* class.c (finish_struct): New argument ATTRIBUTES, passed down into
15451	finish_struct_1.
15452	(finish_struct_1): New argument ATTRIBUTES; call cplus_decl_attributes.
15453	Take out old round_up_size use and setting the DECL_ALIGN possibly
15454	using it.  Take out setting of TYPE_ALIGN to round_up_size, which
15455	can override what the attribute set.
15456	* cp-tree.h (finish_struct): Update prototype.
15457	* parse.y (template_instantiate_once): Pass a NULL_TREE for the
15458	attributes to finish_struct.
15459	(structsp): For a CLASS decl, add maybe_attribute to rule and pass that
15460	value down into finish_struct.
15461	* Makefile.in (CONFLICTS): Switch to 7 shift/reduce conflicts.
15462
15463Tue Feb  6 13:12:15 1996  Per Bothner  <bothner@kalessin.cygnus.com>
15464
15465	* decl.c (poplevel):  Re-word dead for local handling.
15466	(pushdecl):  Remove useless DECL_DEAD_FOR_LOCAL test.
15467	(cp_finish_decl):  If is_for_scope, check for duplicates so
15468	we can disable is_for_scope.  Otherwise, preserve_temp_slots.
15469
15470	* lex.c (do_identifier):  Use global binding in preference of
15471	dead for local variable.
15472
15473Mon Feb  5 17:46:46 1996  Mike Stump  <mrs@cygnus.com>
15474
15475	* init.c (initializing_context): Handle anon union changes, the
15476	context where fields of anon unions can be initialized now has to be
15477	found by walking up the TYPE_CONTEXT chain.
15478
15479Fri Feb  2 14:54:04 1996  Doug Evans  <dje@charmed.cygnus.com>
15480
15481	* decl.c (start_decl): #ifdef out code to set DECL_COMMON
15482	if ASM_OUTPUT{,_ALIGNED}_BSS is defined.
15483	(obscure_complex_init): If bss is supported, always set
15484	DECL_INITIAL to error_mark_node.
15485
15486Thu Feb  1 16:19:56 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15487
15488	* init.c (is_friend): Make sure there's a context before we see if
15489	it's an aggr type.
15490
15491Thu Feb  1 15:44:53 1996  Mike Stump  <mrs@cygnus.com>
15492
15493	* init.c (is_friend): Classes are not friendly with nested classes.
15494
15495Thu Feb  1 15:27:37 1996  Doug Evans  <dje@charmed.cygnus.com>
15496
15497	* lex.c (check_newline): Pass last character read to HANDLE_PRAGMA,
15498	and record its result.
15499
15500Thu Feb  1 09:27:01 1996  Mike Stump  <mrs@cygnus.com>
15501
15502	* class.c (finish_struct_anon): Switch around code to not move anon
15503	union elements around, nor mess up their contexts, nor offsets,
15504	instead we now build up the right number of COMPONENT_REFs for all
15505	the anon unions that may be present at build_component_ref time.
15506	* typeck.c (lookup_anon_field): New routine to handle field lookup
15507	on fields without names.  We find them, based upon their unique type
15508	instead.
15509	* typeck.c (build_component_ref): Allow FIELD_DECL components.
15510	Handle finding components in anonymous unions, and ensure that a
15511	COMPONENT_REF is built for each level as necessary.
15512
15513Tue Jan 30 18:18:23 1996  Mike Stump  <mrs@cygnus.com>
15514
15515	* cvt.c (build_up_reference): Make the INDIRECT_BIND case come after
15516	code that ensures that copy ctors are used if appropriate.
15517
15518Tue Jan 30 17:35:14 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15519
15520	* init.c (build_vec_delete): Only give an error if base isn't an
15521	error_mark_node.
15522
15523Mon Jan 29 17:09:06 1996  Mike Stump  <mrs@cygnus.com>
15524
15525	* spew.c (do_aggr): `new struct S;' isn't a forward declaration.
15526	(yylex): If we see `new', keep slurping.
15527
15528Thu Jan 25 18:31:36 1996  Mike Stump  <mrs@cygnus.com>
15529
15530	* class.c (finish_struct_1): Move code for handling anon unions...
15531	(finish_struct_anon): to here.  Fixup so that we do the offset
15532	calculations right, and so that the fields are physically moved to
15533	the containers's chain.
15534
15535Thu Jan 25 18:27:37 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15536
15537	* decl.c (grokdeclarator): Avoid trying to get an operand off an
15538	identifier node.
15539
15540Wed Jan 24 11:25:30 1996  Jim Wilson  <wilson@chestnut.cygnus.com>
15541
15542	* typeck.c (pointer_int_sum): Use TYPE_PRECISION (sizetype) not
15543	POINTER_SIZE to agree with expr.c.
15544
15545Thu Jan 25 13:01:23 1996  Mike Stump  <mrs@cygnus.com>
15546
15547	* search.c (lookup_field): Don't report ambiguities if protect is 0,
15548	instead return NULL_TREE.
15549
15550Wed Jan 24 13:01:26 1996  Mike Stump  <mrs@cygnus.com>
15551
15552	* class.c (finish_struct_1): Call warn_hidden if we want warnings
15553	about overloaded virtual functions.
15554	(warn_hidden): New routine to warn of virtual functions that are
15555	hidden by other virtual functions, that are not overridden.
15556	(get_basefndecls): New routine, used by warn_hidden.
15557	(mark_overriders): New routine, used by warn_hidden.
15558	* search.c (get_matching_virtual): Remove old warning that just
15559	isn't very useful.
15560
15561Tue Jan 23 12:26:10 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15562
15563	* decl.c (output_builtin_tdesc_entries): #if 0 the function definition.
15564
15565	* typeck.c (null_ptr_cst_p): Delete unused fn.
15566	(build_function_call_maybe): Delete unused fn.
15567
15568	* expr.c (extract_init): #if 0 the code after unconditional return 0
15569	for now.
15570
15571	Delete old cadillac code.
15572	* edsel.c: Remove file.
15573	* Make-lang.in (CXX_SRCS): Take edsel.c off the list.
15574	* Makefile.in (CXX_OBJS): Delete edsel.o.
15575	(edsel.o): Delete rule.
15576	* cp-tree.h (flag_cadillac): Delete var decl.
15577	* lang-options.h: Delete "-fcadillac" and "-fno-cadillac".
15578	* decl2.c (flag_cadillac): Delete var definition.
15579	(lang_decode_option): Delete handling of -fcadillac and -fno-cadillac.
15580	(grokfield): Delete code depending on flag_cadillac.
15581	(finish_anon_union): Likewise.
15582	* class.c (finish_struct_1): Likewise.
15583	(pushclass): Likewise.
15584	(popclass): Likewise.
15585	(push_lang_context): Likewise.
15586	(pop_lang_context): Likewise.
15587	* decl.c (init_decl_processing): Likewise.
15588	(start_decl): Likewise.
15589	(cp_finish_decl): Likewise.
15590	(xref_tag): Likewise.
15591	(finish_enum): Likewise.
15592	(start_function): Likewise.
15593	(finish_function): Likewise.
15594	(finish_stmt): Likewise.
15595	* lex.c (lang_init): Likewise.
15596	(check_newline): Likewise.
15597
15598	* lex.c (do_pending_inlines): Delete synthesized method kludge.
15599
15600	Delete defunct, ancient garbage collection implementation.
15601	* rtti.c: New file with the RTTI stuff from gc.c.
15602	* gc.c: Removed file (moved the remaining stuff into rtti.c).
15603	* Makefile.in (CXX_OBJS): Replace gc.o with rtti.o.
15604	(rtti.o): New rule, replacing gc.o.
15605	* Make-lang.in (CXX_SRCS): Replace gc.c with rtti.c.
15606	* cp-tree.h: Delete gc-related fn decls.
15607	(DECL_GC_OFFSET): Delete macro.
15608	(flag_gc): Delete extern decl.
15609	* decl.c (current_function_obstack_index): Delete var decl.
15610	(current_function_obstack_usage): Delete var decl.
15611	(start_function): Delete clearing of current_function_obstack_index
15612	and current_function_obstack_usage.
15613	(init_decl_processing): Delete code relying on -fgc.
15614	Delete call to init_gc_processing.
15615	(cp_finish_decl): Delete calls to build_static_gc_entry and
15616	type_needs_gc_entry.  Delete gc code setting DECL_GC_OFFSET.
15617	(store_parm_decls): Delete -fgc calls to cp_expand_decl_cleanup
15618	and to expand_expr of a __gc_main call.
15619	(maybe_gc_cleanup): Delete var decl.
15620	(finish_function): Delete call to expand_gc_prologue_and_epilogue.
15621	* decl2.c (flag_gc): Delete var decl.
15622	(lang_f_options): Delete offering of -fgc.
15623	(lang_decode_option): Delete -fgc and -fno-gc handling.
15624	(get_temp_regvar): Delete gc code.
15625	* init.c (build_new): Delete gc code.
15626	* lex.c (init_lex): Delete checking of flag_gc.
15627
15628	* typeck.c (convert_arguments): Delete gc code.
15629	(build_component_addr): Delete -fgc warning.
15630	(build_modify_expr): Delete gc code.
15631
15632	* decl2.c (build_push_scope): Delete fn.
15633	* cp-tree.h (build_push_scope): Delete decl.
15634
15635	* search.c (clear_search_slots): Delete fn.
15636	* cp-tree.h (clear_search_slots): Delete decl.
15637
15638	* search.c (tree_needs_constructor_p): Delete fn.
15639	* cp-tree.h (tree_needs_constructor_p): Delete decl.
15640
15641	* tree.c (id_cmp): Delete fn.
15642
15643	* tree.c (set_fnaddr_from_vtable_entry): Delete fn.
15644	* cp-tree.h (set_fnaddr_from_vtable_entry): Delete decl.
15645
15646	* tree.c (decl_value_member): Delete fn.
15647	* cp-tree.h (decl_value_member): Delete decl.
15648
15649	* tree.c (list_hash_lookup_or_cons): Delete fn.
15650	* cp-tree.h (list_hash_lookup_or_cons): Delete decl.
15651
15652	* method.c (cplus_exception_name): Delete fn.
15653	(EXCEPTION_NAME_{PREFIX, LENGTH}): Delete macros.
15654
15655	* spew.c (shift_tokens): Delete fn.
15656
15657Mon Jan 22 17:49:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
15658
15659	* except.c (init_exception_processing): Pass 1 to needs_pop in calls
15660	to cp_finish_decl.
15661	* parse.y: Likewise.
15662
15663Mon Jan 22 17:34:29 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15664
15665	* tree.c (build_cplus_staticfn_type): Delete function definition;
15666	never used.
15667	* cp-tree.h (build_cplus_staticfn_type): Delete decl.
15668
15669	* tree.c (virtual_member): Delete function definition; never used.
15670	* cp-tree.h (virtual_member): Delete decl.
15671
15672Fri Jan 19 18:03:14 1996  Mike Stump  <mrs@cygnus.com>
15673
15674	* typeck.c (build_component_ref): Handle getting vbase pointers
15675	out of complex multiple inheritance better.
15676
15677Fri Jan 19 16:27:40 1996  Mike Stump  <mrs@cygnus.com>
15678
15679	* typeck.c (build_object_ref): Make sure we use the real type, not
15680	any reference type.
15681
15682Fri Jan 19 16:01:47 1996  Mike Stump  <mrs@cygnus.com>
15683
15684	* tree.c (build_exception_variant): Don't create new types if we
15685	don't have to, also build new types on the right obstack.
15686
15687Fri Jan 19 14:09:44 1996  Jason Merrill  <jason@yorick.cygnus.com>
15688
15689	* decl.c (store_bindings): Split out from push_to_top_level.
15690	(push_to_top_level): Call it for b->type_shadowed on class binding
15691	levels.
15692
15693Fri Jan 19 13:53:14 1996  Mike Stump  <mrs@cygnus.com>
15694
15695	* search.c (expand_upcast_fixups): Fix so that offsets stored in
15696	vbase_offsets are always right.  Fixes a problem where virtual base
15697	upcasting and downcasting could be wrong during conversions on this
15698	during virtual function dispatch at ctor/dtor time when dynamic
15699	vtable fixups for deltas are needed.  This only sounds easier than
15700	it is.  :-)
15701	(fixup_virtual_upcast_offsets): Change to reflect new calling
15702	convention for expand_upcast_fixups.
15703
15704Fri Jan 19 12:23:08 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15705
15706	* decl2.c (grokbitfield): Strip the NOPs from WIDTH before we
15707	check that it's usable as the bitfield width.
15708
15709Wed Jan 17 21:22:40 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15710
15711	* decl2.c (grokfield): Call cplus_decl_attributes with the attrlist.
15712	Pass a null tree to grokdeclarator for its ATTRLIST arg, since it's
15713	only ever used for functions in it.
15714
15715Wed Jan 17 12:10:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
15716
15717	* parse.y (qualified_type_name): Use the TYPE_DECL, not the type.
15718	(nested_type): Likewise.
15719	(nested_name_specifier): Use lastiddecl.
15720
15721	* decl.c (grokdeclarator): Adjust accordingly.
15722	* init.c (expand_member_init): Likewise.
15723	* parse.y (base_class): Likewise.
15724	* typeck2.c (build_functional_cast): Likewise.
15725
15726	* typeck2.c (build_functional_cast): Fill in name after we've
15727	checked for non-aggr type.
15728
15729Wed Jan 17 10:18:01 1996  Mike Stump  <mrs@cygnus.com>
15730
15731	* decl2.c (warn_pointer_arith): Default to on.
15732
15733Tue Jan 16 12:45:38 1996  Jason Merrill  <jason@yorick.cygnus.com>
15734
15735	* lex.c (is_rid): New function.
15736	* decl.c (grokdeclarator): Diagnose reserved words used as
15737	declarator-ids.
15738
15739Tue Jan 16 11:39:40 1996  Jason Merrill  <jason@yorick.cygnus.com>
15740
15741	* tree.c (get_decl_list): Don't lose cv-quals.
15742
15743	* decl.c (grokdeclarator): Fix SCOPE_REF handling and diagnose
15744	typespecs used as declarator-ids.
15745
15746Tue Jan 16 11:09:42 1996  Mike Stump  <mrs@cygnus.com>
15747
15748	* decl.c (poplevel): When poping a level, don't give a warning for
15749	any subblocks that already exist.
15750
15751Tue Jan 16 00:25:33 1996  Jason Merrill  <jason@yorick.cygnus.com>
15752
15753	* typeck.c (build_object_ref): Finish what I started.
15754
15755	* parse.y (qualified_type_name): Don't check TYPE_BUILT_IN.
15756
15757	* decl2.c (constructor_name_full): Handle TEMPLATE_TYPE_PARMs.
15758
15759	* decl.c (grokdeclarator): Also accept TEMPLATE_TYPE_PARM as a
15760	scope.
15761
15762Mon Jan 15 16:19:32 1996  Jason Merrill  <jason@yorick.cygnus.com>
15763
15764	* decl.c (xref_tag): Handle passing a type in directly.
15765
15766	* parse.y (qualified_type_name): Pull out the type.
15767	(nested_type): Likewise.
15768	Take types directly instead of as identifiers.
15769	* call.c (build_scoped_method_call): Take types directly instead of
15770	as identifiers.
15771	* decl.c (xref_basetypes): Likewise.
15772	* init.c (expand_member_init): Likewise.
15773	(build_member_call): Likewise.
15774	(build_offset_ref): Likewise.
15775	* typeck2.c (build_scoped_ref): Likewise, remove bogus code.
15776	* method.c (do_build_assign_ref): Likewise.
15777	* decl.c (grokdeclarator): Handle a type appearing as the
15778	declarator-id for constructors.
15779	* method.c (do_build_copy_constructor): current_base_init_list now
15780	uses the types directly, not their names.
15781	* init.c (sort_base_init): Likewise.
15782	(expand_member_init): Likewise.
15783	* init.c (is_aggr_type): New function, like is_aggr_typedef.
15784
15785Mon Jan 15 08:45:01 1996  Jeffrey A Law  <law@cygnus.com>
15786
15787	* tree.c (layout_basetypes): Call build_lang_field_decl instead
15788	of build_lang_decl if first arg is a FIELD_DECL.
15789
15790Thu Jan 11 14:55:07 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15791
15792	* decl.c (cp_finish_decl): Only clear TREE_USED if DECL_NAME is
15793	non-empty.
15794	* except.c (expand_start_catch_block): Set TREE_USED to avoid
15795	warnings about the catch handler.
15796
15797Mon Jan  8 17:35:12 1996  Jason Merrill  <jason@yorick.cygnus.com>
15798
15799	* typeck.c (build_modify_expr): Use a COMPOUND_EXPR instead of
15800	expand_target_expr.
15801
15802Thu Jan  4 12:30:32 1996  Brendan Kehoe  <brendan@lisa.cygnus.com>
15803
15804	Fix access control to use trees rather than integers.
15805	* class.c (access_{default, public, protected, private,
15806	default_virtual, public_virtual, private_virtual}_node): Add
15807	definitions.
15808	(init_class_processing): Do creation of those nodes.
15809	* cp-tree.h (access_type): Delete enum decl.
15810	(access_{default, public, protected, private, default_virtual,
15811	public_virtual, private_virtual}_node): Add decls.
15812	(compute_access): Change return type.
15813	* search.c (compute_access): Have tree return type, instead of enum.
15814	(lookup_field): Declare THIS_V and NEW_V to be tree nodes.
15815	* lex.c (real_yylex): Use yylval.ttype for giving the value of the
15816	access_* node for each of RID_{PUBLIC, PRIVATE, PROTECTED}.
15817	* parse.y (VISSPEC): Make ttype rather than itype.
15818	(base_class_access_list): Likewise.
15819	* *.[cy]: Change all refs of `access_public' to `access_public_node',
15820	etc.
15821	* call.c (build_method_call): Make ACCESS be a tree.
15822	* class.c (alter_access, finish_struct_1, filter_struct): Likewise.
15823	* cvt.c (convert_to_aggr): Likewise.
15824	* init.c (build_offset_ref, resolve_offset_ref, build_delete):
15825	Likewise.
15826	* method.c (hack_identifier): Likewise.
15827	* typeck.c (build_component_ref_1, build_component_ref): ): Likewise.
15828
15829Thu Jan  4 11:02:20 1996  Mike Stump  <mrs@cygnus.com>
15830
15831	* typeck.c (pointer_int_sum, pointer_diff): Make code agree with C
15832	frontend, and make it more consistent with respect to
15833	warn_pointer_arith.
15834
15835Tue Jan  2 00:13:38 1996  Rusty Russell  <rusty@adelaide.maptek.com.au>
15836
15837	* decl.c (pushdecl): Check for duplicate parameter names.
15838
15839Wed Jan  3 09:25:48 1996  Mike Stump  <mrs@cygnus.com>
15840
15841	* decl.c (expand_static_init): Call assemble_external for atexit.
15842
15843Wed Jan  3 07:55:19 1996  Mike Stump  <mrs@cygnus.com>
15844
15845	* except.c (do_unwind): Remove some generated dead code.
15846	(eh_outer_context): New routine, factor out some common code from
15847	expand_builtin_throw and end_eh_unwinder.  Add code to do return
15848	address masking for the PA.
15849	(expand_builtin_throw): Use eh_outer_context instead of open coding
15850	it here.
15851	(end_eh_unwinder): Likewise.
15852
15853Tue Jan  2 17:00:56 1996  Mike Stump  <mrs@cygnus.com>
15854
15855	* except.c (expand_throw): Call assemble_external for __empty, if we
15856	use it.
15857
15858Thu Dec 28 11:13:15 1995  Mike Stump  <mrs@cygnus.com>
15859
15860	* except.c (expand_builtin_throw): Use RETURN_ADDR_OFFSET instead of
15861	NORMAL_RETURN_ADDR_OFFSET.
15862	(end_eh_unwinder): Likewise.
15863
15864Wed Dec 27 22:18:16 1995  Mike Stump  <mrs@cygnus.com>
15865
15866	* gc.c (build_dynamic_cast): Make sure we don't cast away const
15867	when dealing with references, and make sure we handle dynamic
15868	casting to a cv qualified reference.
15869
15870Thu Dec 21 23:50:35 1995  Mike Stump  <mrs@cygnus.com>
15871
15872	* except.c (struct eh_context): New structure top hold eh context
15873	information.
15874	(push_eh_context): New routine.
15875	(pop_eh_context): Likewise.
15876	* decl.c (push_cp_function_context): Use them.
15877	(pop_cp_function_context): Likewise.
15878
15879Wed Dec 20 12:42:51 1995  Jason Merrill  <jason@yorick.cygnus.com>
15880
15881	* decl2.c (finish_file): Also prune uninteresting functions in the
15882	inline emission loop.
15883
15884Wed Dec 20 02:32:07 1995  Jeffrey A Law  <law@cygnus.com>
15885
15886	* sig.c (build_signature_table_constructor): Mark functions
15887	in the signature as referenced.
15888
15889Tue Dec 19 22:36:56 1995  Jason Merrill  <jason@yorick.cygnus.com>
15890
15891	* decl2.c (finish_file): Do all the vtable/synthesis stuff before
15892	the inline emission stuff.
15893
15894Mon Dec 18 15:51:33 1995  Jason Merrill  <jason@yorick.cygnus.com>
15895
15896	* cp-tree.h, decl2.c (flag_weak): New flag to control the use of
15897	weak symbols.
15898	* lang-options.h: Add -f{no-,}weak.
15899	* decl.c (init_decl_processing): If the target does not support weak
15900	symbols, don't use them.
15901	* decl2.c, pt.c: s/SUPPORTS_WEAK/flag_weak/.
15902
15903Sun Dec 17 21:13:23 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
15904
15905	* init.c (expand_member_init): warning for base init after members.
15906
15907Fri Dec 15 15:32:18 1995  Jason Merrill  <jason@yorick.cygnus.com>
15908
15909	* cvt.c (build_expr_type_conversion): Don't convert to a reference
15910	type.
15911
15912Thu Dec 14 16:05:58 1995  Mike Stump  <mrs@cygnus.com>
15913
15914	* method.c (report_type_mismatch): Improve wording for volatile
15915	mismatches.
15916
15917Thu Dec 14 14:16:26 1995  Mike Stump  <mrs@cygnus.com>
15918
15919	* init.c (expand_aggr_init_1): Use expand_aggr_init_1 instead of
15920	expand_assignment, as the later doesn't handle things that have
15921	copy constructors well.  The compiler would do bitwise copying,
15922	instead of ctor calling in some cases.
15923
15924Wed Dec 13 17:05:54 1995  Paul Eggert  <eggert@twinsun.com>
15925
15926	* g++.c (my_strerror): Return "cannot access" if errno is 0.
15927	(pfatal_with_name, perror_exec): Don't assume that
15928	the returned value from my_strerror contains no '%'s.
15929	(concat): Remove.
15930	(sys_nerror): Declare only if HAVE_STRERROR is not defined.
15931
15932Wed Dec 13 16:22:38 1995  Jason Merrill  <jason@yorick.cygnus.com>
15933
15934	Lose CLASSTYPE_METHODS/DECL_NEXT_METHOD chain; make
15935	TYPE_METHODS/TREE_CHAIN mean what they used to.
15936	* decl2.c (constructor_name_full): Refer to CLASSTYPE_METHOD_VEC
15937	instead of TYPE_METHODS.
15938	* decl.c (duplicate_decls): Lose references to DECL_NEXT_METHOD.
15939	* tree.c (tree_copy_lang_decl_for_deferred_output): Likewise.
15940	* cp-tree.h (CLASSTYPE_METHODS): Lose.
15941	(CLASSTYPE_METHOD_VEC): Point to lang_spec->methods instead of
15942	TYPE_METHODS.
15943	(struct lang_decl): Lose next_method field.
15944	(DECL_NEXT_METHOD): Lose.
15945	* class.c (finish_struct_methods): Don't mess with TYPE_METHODS.
15946	(finish_struct): Just use TYPE_METHODS; we don't need fn_fields
15947	anymore.
15948	(finish_struct_methods): Don't mess with the TREE_CHAINs in
15949	fn_fields.
15950
15951	* search.c (add_conversions): Don't use TREE_CHAIN to traverse method
15952	vector.
15953
15954	* call.c (build_method_call): Synthesize here even when not inlining.
15955	* typeck.c (build_function_call_real): Likewise.
15956
15957Wed Dec 13 15:02:39 1995  Ian Lance Taylor  <ian@cygnus.com>
15958
15959	* cp/lex.c (check_newline): If DBX_DEBUGGING_INFO and write_symbols
15960	== DBX_DEBUG, call dbxout_start_new_source_file and
15961	dbxout_resume_previous_source_file when appropriate.
15962
15963Tue Dec 12 20:38:55 1995  Mike Stump  <mrs@cygnus.com>
15964
15965	* except.c (start_anon_func): Push to the top level.
15966	(end_anon_func): Pop from the top level.
15967
15968Mon Dec 11 18:56:14 1995  Mike Stump  <mrs@cygnus.com>
15969
15970	* cp-tree.h (build_cleanup): New routine to build cleanups.
15971	* decl.c (expand_static_init): Use build_cleanup to build a cleanup
15972	call at ctor time and use atexit to run it later.
15973	* decl2.c (build_cleanup): New routine, taken from finish_file.
15974	(finish_file): Use build_cleanup instead, and don't put function
15975	local statics in global dtor list.
15976
15977Wed Dec  6 14:34:29 1995  Mike Stump  <mrs@cygnus.com>
15978
15979	* except.c (expand_throw): Ensure that we have cleanups, if we try
15980	and expand cleanups.
15981
15982Wed Dec  6 11:48:21 1995  Mike Stump  <mrs@cygnus.com>
15983
15984	* except.c (expand_throw): Add logic to manage dynamic cleanups for
15985	the EH object.
15986	(expand_end_catch_block): Use the magic of expand_goto, instead of
15987	emit_jump so that we get the cleanup for any catch clause parameter
15988	and the cleanup for the exception object.  Update to reflect label
15989	changes.
15990	(push_eh_cleanup): New routine to register a cleanup for an
15991	exception object.
15992	(empty_fndecl): Used to default cleanup actions to
15993	nothing.
15994	(init_exception_processing): Setup empty_fndecl.  Setup
15995	saved_cleanup.
15996	(expand_start_catch_block): Update to reflect label changes.  Call
15997	push_eh_object to register the cleanup for the EH object.
15998	(start_anon_func): New routine to start building lambda expressions
15999	from trees.
16000	(end_anon_func): New routine to end them.
16001	(struct labelNode): Change so that we can use tree labels, or rtx
16002	labels.
16003	(saved_cleanup): Object to check for dynamic cleanups for the
16004	exception handling object.
16005	(push_label_entry): Change so that we can use tree labels, or rtx
16006	labels.
16007	(pop_label_entry): Likewise.
16008	(top_label_entry): Likewise.
16009	(expand_start_all_catch): Use tree label instead of rtx label, so
16010	that we can get the magic of expand_goto.
16011	(expand_end_all_catch): Update to reflect label changes.
16012
16013	* class.c (build_vfn_ref): Remove building_cleanup logic, as we now
16014	use UNSAVE_EXPRs.
16015	* typeck.c (get_member_function_from_ptrfunc): Remove remnants of
16016	building_cleanup logic, as we now use UNSAVE_EXPRs.
16017	* cp-tree.h (unsave_expr): Declare it.
16018	* decl.c (building_cleanup): Remove.
16019	(maybe_build_cleanup): Remove building_cleanup logic, and use
16020	UNSAVE_EXPR instead.
16021
16022Sun Dec  3 01:34:58 1995  Mike Stump  <mrs@cygnus.com>
16023
16024	* gc.c (build_t_desc): Update error message to say <typeinfo>.
16025
16026Thu Nov 30 12:30:05 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16027
16028	* decl.c (pushdecl): Only warn about shadowing a local variable if
16029	warn_shadow is true.
16030
16031Sun Nov 26 16:06:55 1995  Rusty Russell  <rusty@adelaide.maptek.com.au>
16032
16033	* typeck.c (build_binary_op_nodefault): Added warning about
16034	comparisons between different enum types with -Wall, unless
16035	-fenum-int-equiv set.
16036
16037Wed Nov 22 15:44:02 1995  Mike Stump  <mrs@cygnus.com>
16038
16039	* class.c (finish_struct_1): Skip down to the inner type in
16040	multidimensional arrays.  Ensures ctors will be made for types that
16041	need constructing.
16042
16043Wed Nov 22 14:19:22 1995  Mike Stump  <mrs@cygnus.com>
16044
16045	* decl.c (last_dtor_insn): New to track the last compiler generated
16046	insn in a dtor.
16047	(store_parm_decls): Set it.
16048	(finish_function): Use it to see if the dtor is empty.  Avoid doing
16049	vtable setup all the time, if we can.
16050	(struct cp_function): Add last_dtor_insn.
16051	(push_cp_function_context): Save it.
16052	(pop_cp_function_context): Restore it.
16053
16054Wed Nov 22 11:52:19 1995  Paul Russell  <Rusty.Russell@adelaide.maptek.com.au>
16055
16056	* typeck.c (build_unary_op): Set TREE_NO_UNUSED_WARNING to avoid
16057	warnings.
16058
16059Tue Nov 21 17:15:23 1995  Mike Stump  <mrs@cygnus.com>
16060
16061	* typeck.c (expand_target_expr): Make sure targets get put into the
16062	current temp_slot_level, so that the free_temp_slots call will reuse
16063	them.
16064
16065Tue Nov 21 13:32:03 1995  Mike Stump  <mrs@cygnus.com>
16066
16067	* class.c (finish_struct_1): Delay delta fixups for virtual bases
16068	until after we have done the hard virtuals, to avoid a bogus `every
16069	virtual function must have a unique final overrider' for virtual
16070	functions that are only overridden by hard virtuals.
16071
16072Thu Nov  9 13:35:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
16073
16074	* pt.c (do_function_instantiation): Don't try to find a file-scope
16075	template for a member function.
16076
16077Tue Nov 14 06:20:35 1995  Mike Stump  <mrs@cygnus.com>
16078
16079	* g++.c (main): Add handling of -nodefaultlibs.
16080
16081Mon Nov 13 15:45:34 1995  Mike Stump  <mrs@cygnus.com>
16082
16083	* cp-tree.h (INDIRECT_BIND): Add a way for the frontend to
16084	distinguish between direct bindings of reference variables, and
16085	indirect bindings of reference variables.
16086	* cvt.c (build_up_reference): Use it.
16087	* typeck.c (convert_arguments): Use it to indicate this is an
16088	indirect binding.
16089	* decl.c (cp_finish_decl): Ensure that we reuse stack slots as fast
16090	as they are unused.
16091	(expand_static_init): Likewise.
16092	(cplus_expand_expr_stmt): Likewise.
16093	* decl2.c (finish_file): Likewise.
16094	* init.c (perform_member_init): Likewise.
16095	(emit_base_init): Likewise.
16096	(expand_aggr_vbase_init_1): Likewise.
16097
16098Fri Nov 10 09:18:09 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16099
16100	* decl.c (push_namespace): Rewrite to use build_lang_decl, so we
16101	get a DECL_LANG_SPECIFIC node.
16102	* cp-tree.h (lang_decl_flags): Add new member `level'.
16103	(NAMESPACE_LEVEL): Don't use decl.arguments, instead use the
16104	decl_flags level member.
16105
16106Mon Nov  6 18:36:13 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16107
16108	* call.c (build_method_call): Make sure instance has a
16109	TYPE_LANG_SPECIFIC node before we dive into it.
16110
16111Sat Nov  4 20:01:52 1995  Jason Molenda  <crash@phydeaux.cygnus.com>
16112
16113	* method.c (make_thunk): Use TREE_SET_CODE to set thunk's tree code.
16114
16115Thu Nov  2 17:56:57 1995  Mike Stump  <mrs@cygnus.com>
16116
16117	* decl.c (duplicate_decls): When smashing decls, smash staticness in
16118	the usual way.
16119
16120Thu Nov  2 16:44:02 1995  Mike Stump  <mrs@cygnus.com>
16121
16122	* decl.c (poplevel): Handle the merging of subblocks of cleanups
16123	when finishing blocks that have already been created (usually due to
16124	the fixup goto code).  Fixes bad debugging information.
16125
16126Wed Nov  1 12:33:53 1995  Jason Merrill  <jason@yorick.cygnus.com>
16127
16128	* method.c (hack_identifier): Don't abort when we get a TREE_LIST
16129	that's not a list of overloaded functions.
16130
16131Wed Nov  1 11:38:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16132
16133	* decl2.c (mark_vtable_entries): Check DECL_LANG_SPECIFIC on fn
16134	before trying to use DECL_ABSTRACT_VIRTUAL_P.
16135
16136Tue Oct 31 11:56:55 1995  Jason Merrill  <jason@yorick.cygnus.com>
16137
16138	* decl2.c (mark_used): New function for hooking into setting of
16139	TREE_USED on decls.
16140	* call.c (build_method_call): Use it.
16141	* class.c (instantiate_type): Likewise.
16142	* init.c (build_offset_ref): Likewise.  Don't call assemble_external
16143	for all like-named functions.
16144	* method.c (hack_identifier): Likewise.
16145	(emit_thunk): Don't call assemble_external.
16146	(make_thunk): Create thunk as a FUNCTION_DECL so that it
16147	gets the right mode and ENCODE_SECTION_INFO works.
16148
16149	* parse.y: Use mark_used.  Pass operator names to do_identifier.
16150	* lex.c (do_identifier): Handle operator names.
16151
16152	* decl2.c (grokclassfn): Tweak __in_chrg attributes.
16153
16154Thu Oct 26 16:45:58 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16155
16156	* errfn.c: Include stdio.h.
16157	(cp_sprintf): Take out decl of sprintf, and cast sprintf to errorfn*.
16158
16159Wed Oct 25 18:58:41 1995  Mike Stump  <mrs@cygnus.com>
16160
16161	* typeck2.c (digest_init): Always convert initializers to the
16162	right type.
16163
16164Wed Oct 25 13:25:24 1995  Mike Stump  <mrs@cygnus.com>
16165
16166	* init.c (member_init_ok_or_else): Don't allow member initializers
16167	for indirect members, as it is invalid.
16168
16169Wed Oct 25 11:35:28 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16170
16171	* decl.c (grokdeclarator): Don't allow `friend signed ()'.
16172
16173Fri Oct 20 10:30:59 1995  Mike Stump  <mrs@cygnus.com>
16174
16175	* parse.y (for.init.statement): Catch compound statements inside for
16176	initializations, if we're being pedantic.
16177
16178Fri Oct 20 10:03:42 1995  Mike Stump  <mrs@cygnus.com>
16179
16180	* decl.c (lookup_tag): Return NULL_TREE if we don't find what we are
16181	looking for.
16182
16183Thu Oct 19 14:26:10 1995  Mike Stump  <mrs@cygnus.com>
16184
16185	* error.c (dump_expr): Don't core dump when a boolean expression is
16186	used as a default argument.
16187
16188Thu Oct 19 10:36:30 1995  Jason Merrill  <jason@yorick.cygnus.com>
16189
16190	* class.c (finish_struct_bits): Check aggregate_value_p instead of
16191	RETURN_IN_MEMORY.
16192
16193Wed Oct 18 18:12:32 1995  Jason Merrill  <jason@yorick.cygnus.com>
16194
16195	* class.c (finish_struct_bits): Also set TREE_ADDRESSABLE on a
16196	BLKmode type that would otherwise be returned in registers.
16197
16198Mon Oct 16 12:32:19 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16199
16200	* g++.c (WITHLIBC): New macro.
16201	(main): Declare saw_libc.  Use WITHLIBC if `-lc' was used; set
16202	saw_libc and pass it at the end if it was set.
16203
16204Wed Oct 11 16:30:34 1995  Brendan Kehoe  <brendan@lisa.cygnus.com>
16205
16206	* parse.y (fn.def1): Call split_specs_attrs in
16207	declmods notype_declarator case.
16208